diff --git a/.gitignore b/.gitignore index 6ba977a82..41862b53b 100644 --- a/.gitignore +++ b/.gitignore @@ -39,9 +39,6 @@ ipch/ renderdoc/driver/vulkan/renderdoc_capture.json renderdocui/3rdparty/ironpython/pythonlibs.zip qrenderdoc/generated/ -qrenderdoc/3rdparty/qt -qrenderdoc/3rdparty/swig -qrenderdoc/3rdparty/python qrenderdoc/3rdparty/pyside .DS_Store plugins-*/ diff --git a/qrenderdoc/3rdparty/python/LICENSE b/qrenderdoc/3rdparty/python/LICENSE new file mode 100644 index 000000000..529349e4b --- /dev/null +++ b/qrenderdoc/3rdparty/python/LICENSE @@ -0,0 +1,254 @@ +A. HISTORY OF THE SOFTWARE +========================== + +Python was created in the early 1990s by Guido van Rossum at Stichting +Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands +as a successor of a language called ABC. Guido remains Python's +principal author, although it includes many contributions from others. + +In 1995, Guido continued his work on Python at the Corporation for +National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) +in Reston, Virginia where he released several versions of the +software. + +In May 2000, Guido and the Python core development team moved to +BeOpen.com to form the BeOpen PythonLabs team. In October of the same +year, the PythonLabs team moved to Digital Creations, which became +Zope Corporation. In 2001, the Python Software Foundation (PSF, see +https://www.python.org/psf/) was formed, a non-profit organization +created specifically to own Python-related Intellectual Property. +Zope Corporation was a sponsoring member of the PSF. + +All Python releases are Open Source (see http://www.opensource.org for +the Open Source Definition). Historically, most, but not all, Python +releases have also been GPL-compatible; the table below summarizes +the various releases. + + Release Derived Year Owner GPL- + from compatible? (1) + + 0.9.0 thru 1.2 1991-1995 CWI yes + 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes + 1.6 1.5.2 2000 CNRI no + 2.0 1.6 2000 BeOpen.com no + 1.6.1 1.6 2001 CNRI yes (2) + 2.1 2.0+1.6.1 2001 PSF no + 2.0.1 2.0+1.6.1 2001 PSF yes + 2.1.1 2.1+2.0.1 2001 PSF yes + 2.1.2 2.1.1 2002 PSF yes + 2.1.3 2.1.2 2002 PSF yes + 2.2 and above 2.1.1 2001-now PSF yes + +Footnotes: + +(1) GPL-compatible doesn't mean that we're distributing Python under + the GPL. All Python licenses, unlike the GPL, let you distribute + a modified version without making your changes open source. The + GPL-compatible licenses make it possible to combine Python with + other software that is released under the GPL; the others don't. + +(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, + because its license has a choice of law clause. According to + CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 + is "not incompatible" with the GPL. + +Thanks to the many outside volunteers who have worked under Guido's +direction to make these releases possible. + + +B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON +=============================================================== + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation; All Rights +Reserved" are retained in Python alone or in any derivative version prepared by +Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the Internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the Internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, +The Netherlands. All rights reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/qrenderdoc/3rdparty/python/README.rst b/qrenderdoc/3rdparty/python/README.rst new file mode 100644 index 000000000..05c31da8f --- /dev/null +++ b/qrenderdoc/3rdparty/python/README.rst @@ -0,0 +1,252 @@ +This is Python version 3.6.4 +============================ + +.. image:: https://travis-ci.org/python/cpython.svg?branch=3.6 + :alt: CPython build status on Travis CI + :target: https://travis-ci.org/python/cpython + +.. image:: https://ci.appveyor.com/api/projects/status/4mew1a93xdkbf5ua/branch/3.6?svg=true + :alt: CPython build status on Appveyor + :target: https://ci.appveyor.com/project/python/cpython/branch/3.6 + +.. image:: https://codecov.io/gh/python/cpython/branch/3.6/graph/badge.svg + :alt: CPython code coverage on Codecov + :target: https://codecov.io/gh/python/cpython + +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, +2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation. All rights +reserved. + +See the end of this file for further copyright and license information. + +General Information +------------------- + +- Website: https://www.python.org +- Source code: https://github.com/python/cpython +- Issue tracker: https://bugs.python.org +- Documentation: https://docs.python.org +- Developer's Guide: https://devguide.python.org/ + +Contributing to CPython +----------------------- + +For more complete instructions on contributing to CPython development, +see the `Developer Guide`_. + +.. _Developer Guide: https://devguide.python.org/ + +Using Python +------------ + +Installable Python kits, and information about using Python, are available at +`python.org`_. + +.. _python.org: https://www.python.org/ + + +Build Instructions +------------------ + +On Unix, Linux, BSD, macOS, and Cygwin:: + + ./configure + make + make test + sudo make install + +This will install Python as python3. + +You can pass many options to the configure script; run ``./configure --help`` +to find out more. On macOS and Cygwin, the executable is called ``python.exe``; +elsewhere it's just ``python``. + +On macOS, if you have configured Python with ``--enable-framework``, you +should use ``make frameworkinstall`` to do the installation. Note that this +installs the Python executable in a place that is not normally on your PATH, +you may want to set up a symlink in ``/usr/local/bin``. + +On Windows, see `PCbuild/readme.txt +`_. + +If you wish, you can create a subdirectory and invoke configure from there. +For example:: + + mkdir debug + cd debug + ../configure --with-pydebug + make + make test + +(This will fail if you *also* built at the top-level directory. You should do +a ``make clean`` at the toplevel first.) + +To get an optimized build of Python, ``configure --enable-optimizations`` +before you run ``make``. This sets the default make targets up to enable +Profile Guided Optimization (PGO) and may be used to auto-enable Link Time +Optimization (LTO) on some platforms. For more details, see the sections +below. + + +Profile Guided Optimization +--------------------------- + +PGO takes advantage of recent versions of the GCC or Clang compilers. If ran, +``make profile-opt`` will do several steps. + +First, the entire Python directory is cleaned of temporary files that may have +resulted in a previous compilation. + +Then, an instrumented version of the interpreter is built, using suitable +compiler flags for each flavour. Note that this is just an intermediary step +and the binary resulted after this step is not good for real life workloads, as +it has profiling instructions embedded inside. + +After this instrumented version of the interpreter is built, the Makefile will +automatically run a training workload. This is necessary in order to profile +the interpreter execution. Note also that any output, both stdout and stderr, +that may appear at this step is suppressed. + +Finally, the last step is to rebuild the interpreter, using the information +collected in the previous one. The end result will be a Python binary that is +optimized and suitable for distribution or production installation. + + +Link Time Optimization +---------------------- + +Enabled via configure's ``--with-lto`` flag. LTO takes advantage of the +ability of recent compiler toolchains to optimize across the otherwise +arbitrary ``.o`` file boundary when building final executables or shared +libraries for additional performance gains. + + +What's New +---------- + +We have a comprehensive overview of the changes in the `What's New in Python +3.6 `_ document. For a more +detailed change log, read `Misc/NEWS +`_, but a full +accounting of changes can only be gleaned from the `commit history +`_. + +If you want to install multiple versions of Python see the section below +entitled "Installing multiple versions". + + +Documentation +------------- + +`Documentation for Python 3.6 `_ is online, +updated daily. + +It can also be downloaded in many formats for faster access. The documentation +is downloadable in HTML, PDF, and reStructuredText formats; the latter version +is primarily for documentation authors, translators, and people with special +formatting requirements. + +For information about building Python's documentation, refer to `Doc/README.rst +`_. + + +Converting From Python 2.x to 3.x +--------------------------------- + +Significant backward incompatible changes were made for the release of Python +3.0, which may cause programs written for Python 2 to fail when run with Python +3. For more information about porting your code from Python 2 to Python 3, see +the `Porting HOWTO `_. + + +Testing +------- + +To test the interpreter, type ``make test`` in the top-level directory. The +test set produces some output. You can generally ignore the messages about +skipped tests due to optional features which can't be imported. If a message +is printed about a failed test or a traceback or core dump is produced, +something is wrong. + +By default, tests are prevented from overusing resources like disk space and +memory. To enable these tests, run ``make testall``. + +If any tests fail, you can re-run the failing test(s) in verbose mode:: + + make test TESTOPTS="-v test_that_failed" + +If the failure persists and appears to be a problem with Python rather than +your environment, you can `file a bug report `_ and +include relevant output from that command to show the issue. + + +Installing multiple versions +---------------------------- + +On Unix and Mac systems if you intend to install multiple versions of Python +using the same installation prefix (``--prefix`` argument to the configure +script) you must take care that your primary python executable is not +overwritten by the installation of a different version. All files and +directories installed using ``make altinstall`` contain the major and minor +version and can thus live side-by-side. ``make install`` also creates +``${prefix}/bin/python3`` which refers to ``${prefix}/bin/pythonX.Y``. If you +intend to install multiple versions using the same prefix you must decide which +version (if any) is your "primary" version. Install that version using ``make +install``. Install all other versions using ``make altinstall``. + +For example, if you want to install Python 2.7, 3.5, and 3.6 with 3.6 being the +primary version, you would execute ``make install`` in your 3.6 build directory +and ``make altinstall`` in the others. + + +Issue Tracker and Mailing List +------------------------------ + +Bug reports are welcome! You can use the `issue tracker +`_ to report bugs, and/or submit pull requests `on +GitHub `_. + +You can also follow development discussion on the `python-dev mailing list +`_. + + +Proposals for enhancement +------------------------- + +If you have a proposal to change Python, you may want to send an email to the +comp.lang.python or `python-ideas`_ mailing lists for initial feedback. A +Python Enhancement Proposal (PEP) may be submitted if your idea gains ground. +All current PEPs, as well as guidelines for submitting a new PEP, are listed at +`python.org/dev/peps/ `_. + +.. _python-ideas: https://mail.python.org/mailman/listinfo/python-ideas/ + + +Release Schedule +---------------- + +See :pep:`494` for Python 3.6 release details. + + +Copyright and License Information +--------------------------------- + +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, +2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation. All rights +reserved. + +Copyright (c) 2000 BeOpen.com. All rights reserved. + +Copyright (c) 1995-2001 Corporation for National Research Initiatives. All +rights reserved. + +Copyright (c) 1991-1995 Stichting Mathematisch Centrum. All rights reserved. + +See the file "LICENSE" for information on the history of this software, terms & +conditions for usage, and a DISCLAIMER OF ALL WARRANTIES. + +This Python distribution contains *no* GNU General Public License (GPL) code, +so it may be used in proprietary projects. There are interfaces to some GNU +code but these are entirely optional. + +All trademarks referenced herein are property of their respective holders. diff --git a/qrenderdoc/3rdparty/python/Win32/_ctypes.pyd b/qrenderdoc/3rdparty/python/Win32/_ctypes.pyd new file mode 100644 index 000000000..89f07c87a Binary files /dev/null and b/qrenderdoc/3rdparty/python/Win32/_ctypes.pyd differ diff --git a/qrenderdoc/3rdparty/python/Win32/python36.def b/qrenderdoc/3rdparty/python/Win32/python36.def new file mode 100644 index 000000000..371a691f9 --- /dev/null +++ b/qrenderdoc/3rdparty/python/Win32/python36.def @@ -0,0 +1,1450 @@ +LIBRARY PYTHON36 +EXPORTS +PyAST_Compile +PyAST_CompileEx +PyAST_CompileObject +PyAST_FromNode +PyAST_FromNodeObject +PyAST_Validate +PyArena_AddPyObject +PyArena_Free +PyArena_Malloc +PyArena_New +PyArg_Parse +PyArg_ParseTuple +PyArg_ParseTupleAndKeywords +PyArg_UnpackTuple +PyArg_VaParse +PyArg_VaParseTupleAndKeywords +PyArg_ValidateKeywordArguments +PyAsyncGen_Fini +PyAsyncGen_New +PyAsyncGen_Type +PyBaseObject_Type +PyBool_FromLong +PyBool_Type +PyBuffer_FillContiguousStrides +PyBuffer_FillInfo +PyBuffer_FromContiguous +PyBuffer_GetPointer +PyBuffer_IsContiguous +PyBuffer_Release +PyBuffer_ToContiguous +PyByteArrayIter_Type +PyByteArray_AsString +PyByteArray_Concat +PyByteArray_Fini +PyByteArray_FromObject +PyByteArray_FromStringAndSize +PyByteArray_Init +PyByteArray_Resize +PyByteArray_Size +PyByteArray_Type +PyBytesIter_Type +PyBytes_AsString +PyBytes_AsStringAndSize +PyBytes_Concat +PyBytes_ConcatAndDel +PyBytes_DecodeEscape +PyBytes_Fini +PyBytes_FromFormat +PyBytes_FromFormatV +PyBytes_FromObject +PyBytes_FromString +PyBytes_FromStringAndSize +PyBytes_Repr +PyBytes_Size +PyBytes_Type +PyCFunction_Call +PyCFunction_ClearFreeList +PyCFunction_Fini +PyCFunction_GetFlags +PyCFunction_GetFunction +PyCFunction_GetSelf +PyCFunction_New +PyCFunction_NewEx +PyCFunction_Type +PyCallIter_New +PyCallIter_Type +PyCallable_Check +PyCapsule_GetContext +PyCapsule_GetDestructor +PyCapsule_GetName +PyCapsule_GetPointer +PyCapsule_Import +PyCapsule_IsValid +PyCapsule_New +PyCapsule_SetContext +PyCapsule_SetDestructor +PyCapsule_SetName +PyCapsule_SetPointer +PyCapsule_Type +PyCell_Get +PyCell_New +PyCell_Set +PyCell_Type +PyClassMethodDescr_Type +PyClassMethod_New +PyClassMethod_Type +PyCode_Addr2Line +PyCode_New +PyCode_NewEmpty +PyCode_Optimize +PyCode_Type +PyCodec_BackslashReplaceErrors +PyCodec_Decode +PyCodec_Decoder +PyCodec_Encode +PyCodec_Encoder +PyCodec_IgnoreErrors +PyCodec_IncrementalDecoder +PyCodec_IncrementalEncoder +PyCodec_KnownEncoding +PyCodec_LookupError +PyCodec_NameReplaceErrors +PyCodec_Register +PyCodec_RegisterError +PyCodec_ReplaceErrors +PyCodec_StreamReader +PyCodec_StreamWriter +PyCodec_StrictErrors +PyCodec_XMLCharRefReplaceErrors +PyCompile_OpcodeStackEffect +PyComplex_AsCComplex +PyComplex_FromCComplex +PyComplex_FromDoubles +PyComplex_ImagAsDouble +PyComplex_RealAsDouble +PyComplex_Type +PyCoro_New +PyCoro_Type +PyDescr_NewClassMethod +PyDescr_NewGetSet +PyDescr_NewMember +PyDescr_NewMethod +PyDescr_NewWrapper +PyDictItems_Type +PyDictIterItem_Type +PyDictIterKey_Type +PyDictIterValue_Type +PyDictKeys_Type +PyDictProxy_New +PyDictProxy_Type +PyDictValues_Type +PyDict_Clear +PyDict_ClearFreeList +PyDict_Contains +PyDict_Copy +PyDict_DelItem +PyDict_DelItemString +PyDict_Fini +PyDict_GetItem +PyDict_GetItemString +PyDict_GetItemWithError +PyDict_Items +PyDict_Keys +PyDict_Merge +PyDict_MergeFromSeq2 +PyDict_New +PyDict_Next +PyDict_SetDefault +PyDict_SetItem +PyDict_SetItemString +PyDict_Size +PyDict_Type +PyDict_Update +PyDict_Values +PyEllipsis_Type +PyEnum_Type +PyErr_BadArgument +PyErr_BadInternalCall +PyErr_CheckSignals +PyErr_Clear +PyErr_Display +PyErr_ExceptionMatches +PyErr_Fetch +PyErr_Format +PyErr_FormatV +PyErr_GetExcInfo +PyErr_GivenExceptionMatches +PyErr_NewException +PyErr_NewExceptionWithDoc +PyErr_NoMemory +PyErr_NormalizeException +PyErr_Occurred +PyErr_Print +PyErr_PrintEx +PyErr_ProgramText +PyErr_ProgramTextObject +PyErr_ResourceWarning +PyErr_Restore +PyErr_SetExcFromWindowsErr +PyErr_SetExcFromWindowsErrWithFilename +PyErr_SetExcFromWindowsErrWithFilenameObject +PyErr_SetExcFromWindowsErrWithFilenameObjects +PyErr_SetExcFromWindowsErrWithUnicodeFilename +PyErr_SetExcInfo +PyErr_SetFromErrno +PyErr_SetFromErrnoWithFilename +PyErr_SetFromErrnoWithFilenameObject +PyErr_SetFromErrnoWithFilenameObjects +PyErr_SetFromErrnoWithUnicodeFilename +PyErr_SetFromWindowsErr +PyErr_SetFromWindowsErrWithFilename +PyErr_SetFromWindowsErrWithUnicodeFilename +PyErr_SetImportError +PyErr_SetImportErrorSubclass +PyErr_SetInterrupt +PyErr_SetNone +PyErr_SetObject +PyErr_SetString +PyErr_SyntaxLocation +PyErr_SyntaxLocationEx +PyErr_SyntaxLocationObject +PyErr_Warn +PyErr_WarnEx +PyErr_WarnExplicit +PyErr_WarnExplicitFormat +PyErr_WarnExplicitObject +PyErr_WarnFormat +PyErr_WriteUnraisable +PyEval_AcquireLock +PyEval_AcquireThread +PyEval_CallFunction +PyEval_CallMethod +PyEval_CallObjectWithKeywords +PyEval_EvalCode +PyEval_EvalCodeEx +PyEval_EvalFrame +PyEval_EvalFrameEx +PyEval_GetBuiltins +PyEval_GetCallStats +PyEval_GetFrame +PyEval_GetFuncDesc +PyEval_GetFuncName +PyEval_GetGlobals +PyEval_GetLocals +PyEval_InitThreads +PyEval_MergeCompilerFlags +PyEval_ReInitThreads +PyEval_ReleaseLock +PyEval_ReleaseThread +PyEval_RestoreThread +PyEval_SaveThread +PyEval_SetProfile +PyEval_SetTrace +PyEval_ThreadsInitialized +PyExc_ArithmeticError +PyExc_AssertionError +PyExc_AttributeError +PyExc_BaseException +PyExc_BlockingIOError +PyExc_BrokenPipeError +PyExc_BufferError +PyExc_BytesWarning +PyExc_ChildProcessError +PyExc_ConnectionAbortedError +PyExc_ConnectionError +PyExc_ConnectionRefusedError +PyExc_ConnectionResetError +PyExc_DeprecationWarning +PyExc_EOFError +PyExc_EnvironmentError +PyExc_Exception +PyExc_FileExistsError +PyExc_FileNotFoundError +PyExc_FloatingPointError +PyExc_FutureWarning +PyExc_GeneratorExit +PyExc_IOError +PyExc_ImportError +PyExc_ImportWarning +PyExc_IndentationError +PyExc_IndexError +PyExc_InterruptedError +PyExc_IsADirectoryError +PyExc_KeyError +PyExc_KeyboardInterrupt +PyExc_LookupError +PyExc_MemoryError +PyExc_ModuleNotFoundError +PyExc_NameError +PyExc_NotADirectoryError +PyExc_NotImplementedError +PyExc_OSError +PyExc_OverflowError +PyExc_PendingDeprecationWarning +PyExc_PermissionError +PyExc_ProcessLookupError +PyExc_RecursionError +PyExc_ReferenceError +PyExc_ResourceWarning +PyExc_RuntimeError +PyExc_RuntimeWarning +PyExc_StopAsyncIteration +PyExc_StopIteration +PyExc_SyntaxError +PyExc_SyntaxWarning +PyExc_SystemError +PyExc_SystemExit +PyExc_TabError +PyExc_TimeoutError +PyExc_TypeError +PyExc_UnboundLocalError +PyExc_UnicodeDecodeError +PyExc_UnicodeEncodeError +PyExc_UnicodeError +PyExc_UnicodeTranslateError +PyExc_UnicodeWarning +PyExc_UserWarning +PyExc_ValueError +PyExc_Warning +PyExc_WindowsError +PyExc_ZeroDivisionError +PyException_GetCause +PyException_GetContext +PyException_GetTraceback +PyException_SetCause +PyException_SetContext +PyException_SetTraceback +PyFile_FromFd +PyFile_GetLine +PyFile_NewStdPrinter +PyFile_WriteObject +PyFile_WriteString +PyFilter_Type +PyFloat_AsDouble +PyFloat_ClearFreeList +PyFloat_Fini +PyFloat_FromDouble +PyFloat_FromString +PyFloat_GetInfo +PyFloat_GetMax +PyFloat_GetMin +PyFloat_Type +PyFrame_BlockPop +PyFrame_BlockSetup +PyFrame_ClearFreeList +PyFrame_FastToLocals +PyFrame_FastToLocalsWithError +PyFrame_Fini +PyFrame_GetLineNumber +PyFrame_LocalsToFast +PyFrame_New +PyFrame_Type +PyFrozenSet_New +PyFrozenSet_Type +PyFunction_GetAnnotations +PyFunction_GetClosure +PyFunction_GetCode +PyFunction_GetDefaults +PyFunction_GetGlobals +PyFunction_GetKwDefaults +PyFunction_GetModule +PyFunction_New +PyFunction_NewWithQualName +PyFunction_SetAnnotations +PyFunction_SetClosure +PyFunction_SetDefaults +PyFunction_SetKwDefaults +PyFunction_Type +PyFuture_FromAST +PyFuture_FromASTObject +PyGC_Collect +PyGILState_Check +PyGILState_Ensure +PyGILState_GetThisThreadState +PyGILState_Release +PyGen_NeedsFinalizing +PyGen_New +PyGen_NewWithQualName +PyGen_Type +PyGetSetDescr_Type +PyHash_GetFuncDef +PyImport_AddModule +PyImport_AddModuleObject +PyImport_AppendInittab +PyImport_Cleanup +PyImport_ExecCodeModule +PyImport_ExecCodeModuleEx +PyImport_ExecCodeModuleObject +PyImport_ExecCodeModuleWithPathnames +PyImport_ExtendInittab +PyImport_FrozenModules +PyImport_GetImporter +PyImport_GetMagicNumber +PyImport_GetMagicTag +PyImport_GetModuleDict +PyImport_Import +PyImport_ImportFrozenModule +PyImport_ImportFrozenModuleObject +PyImport_ImportModule +PyImport_ImportModuleLevel +PyImport_ImportModuleLevelObject +PyImport_ImportModuleNoBlock +PyImport_Inittab +PyImport_ReloadModule +PyInstanceMethod_Function +PyInstanceMethod_New +PyInstanceMethod_Type +PyInterpreterState_Clear +PyInterpreterState_Delete +PyInterpreterState_Head +PyInterpreterState_New +PyInterpreterState_Next +PyInterpreterState_ThreadHead +PyIter_Next +PyListIter_Type +PyListRevIter_Type +PyList_Append +PyList_AsTuple +PyList_ClearFreeList +PyList_Fini +PyList_GetItem +PyList_GetSlice +PyList_Insert +PyList_New +PyList_Reverse +PyList_SetItem +PyList_SetSlice +PyList_Size +PyList_Sort +PyList_Type +PyLongRangeIter_Type +PyLong_AsDouble +PyLong_AsLong +PyLong_AsLongAndOverflow +PyLong_AsLongLong +PyLong_AsLongLongAndOverflow +PyLong_AsSize_t +PyLong_AsSsize_t +PyLong_AsUnsignedLong +PyLong_AsUnsignedLongLong +PyLong_AsUnsignedLongLongMask +PyLong_AsUnsignedLongMask +PyLong_AsVoidPtr +PyLong_FromDouble +PyLong_FromLong +PyLong_FromLongLong +PyLong_FromSize_t +PyLong_FromSsize_t +PyLong_FromString +PyLong_FromUnicode +PyLong_FromUnicodeObject +PyLong_FromUnsignedLong +PyLong_FromUnsignedLongLong +PyLong_FromVoidPtr +PyLong_GetInfo +PyLong_Type +PyMap_Type +PyMapping_Check +PyMapping_GetItemString +PyMapping_HasKey +PyMapping_HasKeyString +PyMapping_Items +PyMapping_Keys +PyMapping_Length +PyMapping_SetItemString +PyMapping_Size +PyMapping_Values +PyMarshal_ReadLastObjectFromFile +PyMarshal_ReadLongFromFile +PyMarshal_ReadObjectFromFile +PyMarshal_ReadObjectFromString +PyMarshal_ReadShortFromFile +PyMarshal_WriteLongToFile +PyMarshal_WriteObjectToFile +PyMarshal_WriteObjectToString +PyMem_Calloc +PyMem_Free +PyMem_GetAllocator +PyMem_Malloc +PyMem_RawCalloc +PyMem_RawFree +PyMem_RawMalloc +PyMem_RawRealloc +PyMem_Realloc +PyMem_SetAllocator +PyMem_SetupDebugHooks +PyMemberDescr_Type +PyMember_GetOne +PyMember_SetOne +PyMemoryView_FromBuffer +PyMemoryView_FromMemory +PyMemoryView_FromObject +PyMemoryView_GetContiguous +PyMemoryView_Type +PyMethodDescr_Type +PyMethod_ClearFreeList +PyMethod_Fini +PyMethod_Function +PyMethod_New +PyMethod_Self +PyMethod_Type +PyModuleDef_Init +PyModuleDef_Type +PyModule_AddFunctions +PyModule_AddIntConstant +PyModule_AddObject +PyModule_AddStringConstant +PyModule_Create2 +PyModule_ExecDef +PyModule_FromDefAndSpec2 +PyModule_GetDef +PyModule_GetDict +PyModule_GetFilename +PyModule_GetFilenameObject +PyModule_GetName +PyModule_GetNameObject +PyModule_GetState +PyModule_New +PyModule_NewObject +PyModule_SetDocString +PyModule_Type +PyNode_AddChild +PyNode_Compile +PyNode_Free +PyNode_ListTree +PyNode_New +PyNumber_Absolute +PyNumber_Add +PyNumber_And +PyNumber_AsSsize_t +PyNumber_Check +PyNumber_Divmod +PyNumber_Float +PyNumber_FloorDivide +PyNumber_InPlaceAdd +PyNumber_InPlaceAnd +PyNumber_InPlaceFloorDivide +PyNumber_InPlaceLshift +PyNumber_InPlaceMatrixMultiply +PyNumber_InPlaceMultiply +PyNumber_InPlaceOr +PyNumber_InPlacePower +PyNumber_InPlaceRemainder +PyNumber_InPlaceRshift +PyNumber_InPlaceSubtract +PyNumber_InPlaceTrueDivide +PyNumber_InPlaceXor +PyNumber_Index +PyNumber_Invert +PyNumber_Long +PyNumber_Lshift +PyNumber_MatrixMultiply +PyNumber_Multiply +PyNumber_Negative +PyNumber_Or +PyNumber_Positive +PyNumber_Power +PyNumber_Remainder +PyNumber_Rshift +PyNumber_Subtract +PyNumber_ToBase +PyNumber_TrueDivide +PyNumber_Xor +PyODictItems_Type +PyODictIter_Type +PyODictKeys_Type +PyODictValues_Type +PyODict_DelItem +PyODict_New +PyODict_SetItem +PyODict_Type +PyOS_AfterFork +PyOS_FSPath +PyOS_FiniInterrupts +PyOS_InitInterrupts +PyOS_InputHook +PyOS_InterruptOccurred +PyOS_Readline +PyOS_ReadlineFunctionPointer +PyOS_double_to_string +PyOS_getsig +PyOS_mystricmp +PyOS_mystrnicmp +PyOS_setsig +PyOS_snprintf +PyOS_string_to_double +PyOS_strtol +PyOS_strtoul +PyOS_vsnprintf +PyObject_ASCII +PyObject_AsCharBuffer +PyObject_AsFileDescriptor +PyObject_AsReadBuffer +PyObject_AsWriteBuffer +PyObject_Bytes +PyObject_Call +PyObject_CallFinalizer +PyObject_CallFinalizerFromDealloc +PyObject_CallFunction +PyObject_CallFunctionObjArgs +PyObject_CallMethod +PyObject_CallMethodObjArgs +PyObject_CallObject +PyObject_Calloc +PyObject_CheckReadBuffer +PyObject_ClearWeakRefs +PyObject_CopyData +PyObject_DelItem +PyObject_DelItemString +PyObject_Dir +PyObject_Format +PyObject_Free +PyObject_GC_Del +PyObject_GC_Track +PyObject_GC_UnTrack +PyObject_GenericGetAttr +PyObject_GenericGetDict +PyObject_GenericSetAttr +PyObject_GenericSetDict +PyObject_GetArenaAllocator +PyObject_GetAttr +PyObject_GetAttrString +PyObject_GetBuffer +PyObject_GetItem +PyObject_GetIter +PyObject_HasAttr +PyObject_HasAttrString +PyObject_Hash +PyObject_HashNotImplemented +PyObject_Init +PyObject_InitVar +PyObject_IsInstance +PyObject_IsSubclass +PyObject_IsTrue +PyObject_Length +PyObject_LengthHint +PyObject_Malloc +PyObject_Not +PyObject_Print +PyObject_Realloc +PyObject_Repr +PyObject_RichCompare +PyObject_RichCompareBool +PyObject_SelfIter +PyObject_SetArenaAllocator +PyObject_SetAttr +PyObject_SetAttrString +PyObject_SetItem +PyObject_Size +PyObject_Str +PyObject_Type +PyParser_ASTFromFile +PyParser_ASTFromFileObject +PyParser_ASTFromString +PyParser_ASTFromStringObject +PyParser_ClearError +PyParser_ParseFile +PyParser_ParseFileFlags +PyParser_ParseFileFlagsEx +PyParser_ParseFileObject +PyParser_ParseString +PyParser_ParseStringFlags +PyParser_ParseStringFlagsFilename +PyParser_ParseStringFlagsFilenameEx +PyParser_ParseStringObject +PyParser_SetError +PyParser_SimpleParseFile +PyParser_SimpleParseFileFlags +PyParser_SimpleParseString +PyParser_SimpleParseStringFlags +PyParser_SimpleParseStringFlagsFilename +PyProperty_Type +PyRangeIter_Type +PyRange_Type +PyReversed_Type +PyRun_AnyFile +PyRun_AnyFileEx +PyRun_AnyFileExFlags +PyRun_AnyFileFlags +PyRun_File +PyRun_FileEx +PyRun_FileExFlags +PyRun_FileFlags +PyRun_InteractiveLoop +PyRun_InteractiveLoopFlags +PyRun_InteractiveOne +PyRun_InteractiveOneFlags +PyRun_InteractiveOneObject +PyRun_SimpleFile +PyRun_SimpleFileEx +PyRun_SimpleFileExFlags +PyRun_SimpleString +PyRun_SimpleStringFlags +PyRun_String +PyRun_StringFlags +PySTEntry_Type +PyST_GetScope +PySeqIter_New +PySeqIter_Type +PySequence_Check +PySequence_Concat +PySequence_Contains +PySequence_Count +PySequence_DelItem +PySequence_DelSlice +PySequence_Fast +PySequence_GetItem +PySequence_GetSlice +PySequence_In +PySequence_InPlaceConcat +PySequence_InPlaceRepeat +PySequence_Index +PySequence_Length +PySequence_List +PySequence_Repeat +PySequence_SetItem +PySequence_SetSlice +PySequence_Size +PySequence_Tuple +PySetIter_Type +PySet_Add +PySet_Clear +PySet_ClearFreeList +PySet_Contains +PySet_Discard +PySet_Fini +PySet_New +PySet_Pop +PySet_Size +PySet_Type +PySlice_AdjustIndices +PySlice_Fini +PySlice_GetIndices +PySlice_GetIndicesEx +PySlice_New +PySlice_Type +PySlice_Unpack +PyState_AddModule +PyState_FindModule +PyState_RemoveModule +PyStaticMethod_New +PyStaticMethod_Type +PyStdPrinter_Type +PyStructSequence_GetItem +PyStructSequence_InitType +PyStructSequence_InitType2 +PyStructSequence_New +PyStructSequence_NewType +PyStructSequence_SetItem +PySuper_Type +PySymtable_Build +PySymtable_BuildObject +PySymtable_Free +PySymtable_Lookup +PySys_AddWarnOption +PySys_AddWarnOptionUnicode +PySys_AddXOption +PySys_FormatStderr +PySys_FormatStdout +PySys_GetObject +PySys_GetXOptions +PySys_HasWarnOptions +PySys_ResetWarnOptions +PySys_SetArgv +PySys_SetArgvEx +PySys_SetObject +PySys_SetPath +PySys_WriteStderr +PySys_WriteStdout +PyThreadState_Clear +PyThreadState_Delete +PyThreadState_DeleteCurrent +PyThreadState_Get +PyThreadState_GetDict +PyThreadState_New +PyThreadState_Next +PyThreadState_SetAsyncExc +PyThreadState_Swap +PyThread_GetInfo +PyThread_ReInitTLS +PyThread_acquire_lock +PyThread_acquire_lock_timed +PyThread_allocate_lock +PyThread_create_key +PyThread_delete_key +PyThread_delete_key_value +PyThread_exit_thread +PyThread_free_lock +PyThread_get_key_value +PyThread_get_stacksize +PyThread_get_thread_ident +PyThread_init_thread +PyThread_release_lock +PyThread_set_key_value +PyThread_set_stacksize +PyThread_start_new_thread +PyToken_OneChar +PyToken_ThreeChars +PyToken_TwoChars +PyTraceBack_Here +PyTraceBack_Print +PyTraceBack_Type +PyTupleIter_Type +PyTuple_ClearFreeList +PyTuple_Fini +PyTuple_GetItem +PyTuple_GetSlice +PyTuple_New +PyTuple_Pack +PyTuple_SetItem +PyTuple_Size +PyTuple_Type +PyType_ClearCache +PyType_FromSpec +PyType_FromSpecWithBases +PyType_GenericAlloc +PyType_GenericNew +PyType_GetFlags +PyType_GetSlot +PyType_IsSubtype +PyType_Modified +PyType_Ready +PyType_Type +PyUnicodeDecodeError_Create +PyUnicodeDecodeError_GetEncoding +PyUnicodeDecodeError_GetEnd +PyUnicodeDecodeError_GetObject +PyUnicodeDecodeError_GetReason +PyUnicodeDecodeError_GetStart +PyUnicodeDecodeError_SetEnd +PyUnicodeDecodeError_SetReason +PyUnicodeDecodeError_SetStart +PyUnicodeEncodeError_Create +PyUnicodeEncodeError_GetEncoding +PyUnicodeEncodeError_GetEnd +PyUnicodeEncodeError_GetObject +PyUnicodeEncodeError_GetReason +PyUnicodeEncodeError_GetStart +PyUnicodeEncodeError_SetEnd +PyUnicodeEncodeError_SetReason +PyUnicodeEncodeError_SetStart +PyUnicodeIter_Type +PyUnicodeTranslateError_Create +PyUnicodeTranslateError_GetEnd +PyUnicodeTranslateError_GetObject +PyUnicodeTranslateError_GetReason +PyUnicodeTranslateError_GetStart +PyUnicodeTranslateError_SetEnd +PyUnicodeTranslateError_SetReason +PyUnicodeTranslateError_SetStart +PyUnicode_Append +PyUnicode_AppendAndDel +PyUnicode_AsASCIIString +PyUnicode_AsCharmapString +PyUnicode_AsDecodedObject +PyUnicode_AsDecodedUnicode +PyUnicode_AsEncodedObject +PyUnicode_AsEncodedString +PyUnicode_AsEncodedUnicode +PyUnicode_AsLatin1String +PyUnicode_AsMBCSString +PyUnicode_AsRawUnicodeEscapeString +PyUnicode_AsUCS4 +PyUnicode_AsUCS4Copy +PyUnicode_AsUTF16String +PyUnicode_AsUTF32String +PyUnicode_AsUTF8 +PyUnicode_AsUTF8AndSize +PyUnicode_AsUTF8String +PyUnicode_AsUnicode +PyUnicode_AsUnicodeAndSize +PyUnicode_AsUnicodeCopy +PyUnicode_AsUnicodeEscapeString +PyUnicode_AsWideChar +PyUnicode_AsWideCharString +PyUnicode_BuildEncodingMap +PyUnicode_ClearFreeList +PyUnicode_Compare +PyUnicode_CompareWithASCIIString +PyUnicode_Concat +PyUnicode_Contains +PyUnicode_CopyCharacters +PyUnicode_Count +PyUnicode_Decode +PyUnicode_DecodeASCII +PyUnicode_DecodeCharmap +PyUnicode_DecodeCodePageStateful +PyUnicode_DecodeFSDefault +PyUnicode_DecodeFSDefaultAndSize +PyUnicode_DecodeLatin1 +PyUnicode_DecodeLocale +PyUnicode_DecodeLocaleAndSize +PyUnicode_DecodeMBCS +PyUnicode_DecodeMBCSStateful +PyUnicode_DecodeRawUnicodeEscape +PyUnicode_DecodeUTF16 +PyUnicode_DecodeUTF16Stateful +PyUnicode_DecodeUTF32 +PyUnicode_DecodeUTF32Stateful +PyUnicode_DecodeUTF7 +PyUnicode_DecodeUTF7Stateful +PyUnicode_DecodeUTF8 +PyUnicode_DecodeUTF8Stateful +PyUnicode_DecodeUnicodeEscape +PyUnicode_Encode +PyUnicode_EncodeASCII +PyUnicode_EncodeCharmap +PyUnicode_EncodeCodePage +PyUnicode_EncodeDecimal +PyUnicode_EncodeFSDefault +PyUnicode_EncodeLatin1 +PyUnicode_EncodeLocale +PyUnicode_EncodeMBCS +PyUnicode_EncodeRawUnicodeEscape +PyUnicode_EncodeUTF16 +PyUnicode_EncodeUTF32 +PyUnicode_EncodeUTF7 +PyUnicode_EncodeUTF8 +PyUnicode_EncodeUnicodeEscape +PyUnicode_FSConverter +PyUnicode_FSDecoder +PyUnicode_Fill +PyUnicode_Find +PyUnicode_FindChar +PyUnicode_Format +PyUnicode_FromEncodedObject +PyUnicode_FromFormat +PyUnicode_FromFormatV +PyUnicode_FromKindAndData +PyUnicode_FromObject +PyUnicode_FromOrdinal +PyUnicode_FromString +PyUnicode_FromStringAndSize +PyUnicode_FromUnicode +PyUnicode_FromWideChar +PyUnicode_GetDefaultEncoding +PyUnicode_GetLength +PyUnicode_GetMax +PyUnicode_GetSize +PyUnicode_InternFromString +PyUnicode_InternImmortal +PyUnicode_InternInPlace +PyUnicode_IsIdentifier +PyUnicode_Join +PyUnicode_New +PyUnicode_Partition +PyUnicode_RPartition +PyUnicode_RSplit +PyUnicode_ReadChar +PyUnicode_Replace +PyUnicode_Resize +PyUnicode_RichCompare +PyUnicode_Split +PyUnicode_Splitlines +PyUnicode_Substring +PyUnicode_Tailmatch +PyUnicode_TransformDecimalToASCII +PyUnicode_Translate +PyUnicode_TranslateCharmap +PyUnicode_Type +PyUnicode_WriteChar +PyWeakref_GetObject +PyWeakref_NewProxy +PyWeakref_NewRef +PyWrapperDescr_Type +PyWrapper_New +PyZip_Type +Py_AddPendingCall +Py_AtExit +Py_BuildValue +Py_BytesWarningFlag +Py_CompileString +Py_CompileStringExFlags +Py_CompileStringFlags +Py_CompileStringObject +Py_DebugFlag +Py_DecRef +Py_DecodeLocale +Py_DontWriteBytecodeFlag +Py_EncodeLocale +Py_EndInterpreter +Py_Exit +Py_FatalError +Py_FdIsInteractive +Py_FileSystemDefaultEncodeErrors +Py_FileSystemDefaultEncoding +Py_Finalize +Py_FinalizeEx +Py_FrozenFlag +Py_GetBuildInfo +Py_GetCompiler +Py_GetCopyright +Py_GetExecPrefix +Py_GetPath +Py_GetPlatform +Py_GetPrefix +Py_GetProgramFullPath +Py_GetProgramName +Py_GetPythonHome +Py_GetRecursionLimit +Py_GetVersion +Py_HasFileSystemDefaultEncoding +Py_HashRandomizationFlag +Py_IgnoreEnvironmentFlag +Py_IncRef +Py_Initialize +Py_InitializeEx +Py_InspectFlag +Py_InteractiveFlag +Py_IsInitialized +Py_IsolatedFlag +Py_LegacyWindowsStdioFlag +Py_Main +Py_MakePendingCalls +Py_NewInterpreter +Py_NoSiteFlag +Py_NoUserSiteDirectory +Py_OptimizeFlag +Py_QuietFlag +Py_ReprEnter +Py_ReprLeave +Py_SetPath +Py_SetProgramName +Py_SetPythonHome +Py_SetRecursionLimit +Py_SetStandardStreamEncoding +Py_SymtableString +Py_SymtableStringObject +Py_UNICODE_strcat +Py_UNICODE_strchr +Py_UNICODE_strcmp +Py_UNICODE_strcpy +Py_UNICODE_strlen +Py_UNICODE_strncmp +Py_UNICODE_strncpy +Py_UNICODE_strrchr +Py_UnbufferedStdioFlag +Py_UniversalNewlineFgets +Py_UseClassExceptionsFlag +Py_VaBuildValue +Py_VerboseFlag +Py_hexdigits +_PyAIterWrapper_Type +_PyAccu_Accumulate +_PyAccu_Destroy +_PyAccu_Finish +_PyAccu_FinishAsList +_PyAccu_Init +_PyArg_NoKeywords +_PyArg_NoPositional +_PyArg_ParseStack +_PyArg_ParseStack_SizeT +_PyArg_ParseTupleAndKeywordsFast +_PyArg_ParseTupleAndKeywordsFast_SizeT +_PyArg_ParseTupleAndKeywords_SizeT +_PyArg_ParseTuple_SizeT +_PyArg_Parse_SizeT +_PyArg_VaParseTupleAndKeywordsFast +_PyArg_VaParseTupleAndKeywordsFast_SizeT +_PyArg_VaParseTupleAndKeywords_SizeT +_PyArg_VaParse_SizeT +_PyAsyncGenASend_Type +_PyAsyncGenAThrow_Type +_PyAsyncGenWrappedValue_Type +_PyBuiltin_Init +_PyByteArray_empty_string +_PyBytesWriter_Alloc +_PyBytesWriter_Dealloc +_PyBytesWriter_Finish +_PyBytesWriter_Init +_PyBytesWriter_Prepare +_PyBytesWriter_Resize +_PyBytesWriter_WriteBytes +_PyBytes_DecodeEscape +_PyBytes_FormatEx +_PyBytes_FromHex +_PyBytes_Join +_PyBytes_Resize +_PyCFunction_DebugMallocStats +_PyCFunction_FastCallDict +_PyCFunction_FastCallKeywords +_PyCode_CheckLineNumber +_PyCode_ConstantKey +_PyCode_GetExtra +_PyCode_SetExtra +_PyCodecInfo_GetIncrementalDecoder +_PyCodecInfo_GetIncrementalEncoder +_PyCodec_DecodeText +_PyCodec_EncodeText +_PyCodec_Forget +_PyCodec_Lookup +_PyCodec_LookupTextEncoding +_PyComplex_FormatAdvancedWriter +_PyCoroWrapper_Type +_PyDebugAllocatorStats +_PyDictView_Intersect +_PyDict_Contains +_PyDict_DebugMallocStats +_PyDict_DelItemId +_PyDict_DelItemIf +_PyDict_DelItem_KnownHash +_PyDict_GetItemId +_PyDict_GetItemIdWithError +_PyDict_GetItem_KnownHash +_PyDict_HasOnlyStringKeys +_PyDict_MaybeUntrack +_PyDict_MergeEx +_PyDict_NewPresized +_PyDict_Next +_PyDict_Pop +_PyDict_SetItemId +_PyDict_SetItem_KnownHash +_PyErr_BadInternalCall +_PyErr_ChainExceptions +_PyErr_FormatFromCause +_PyErr_SetKeyError +_PyErr_TrySetFromCause +_PyEval_CallTracing +_PyEval_EvalFrameDefault +_PyEval_FiniThreads +_PyEval_GetAsyncGenFinalizer +_PyEval_GetAsyncGenFirstiter +_PyEval_GetCoroutineWrapper +_PyEval_GetSwitchInterval +_PyEval_RequestCodeExtraIndex +_PyEval_SetAsyncGenFinalizer +_PyEval_SetAsyncGenFirstiter +_PyEval_SetCoroutineWrapper +_PyEval_SetSwitchInterval +_PyEval_SignalAsyncExc +_PyEval_SignalReceived +_PyEval_SliceIndex +_PyEval_SliceIndexNotNone +_PyExc_Fini +_PyExc_Init +_PyFloat_DebugMallocStats +_PyFloat_FormatAdvancedWriter +_PyFloat_Init +_PyFloat_Pack2 +_PyFloat_Pack4 +_PyFloat_Pack8 +_PyFloat_Unpack2 +_PyFloat_Unpack4 +_PyFloat_Unpack8 +_PyFrame_DebugMallocStats +_PyFrame_Init +_PyFunction_FastCallDict +_PyFunction_FastCallKeywords +_PyGC_CollectIfEnabled +_PyGC_CollectNoFail +_PyGC_DumpShutdownStats +_PyGC_Fini +_PyGILState_GetInterpreterStateUnsafe +_PyGILState_Reinit +_PyGILState_check_enabled +_PyGen_FetchStopIterationValue +_PyGen_Finalize +_PyGen_Send +_PyGen_SetStopIterationValue +_PyImportHooks_Init +_PyImportZip_Init +_PyImport_AcquireLock +_PyImport_FindBuiltin +_PyImport_FindExtensionObject +_PyImport_Fini +_PyImport_FixupBuiltin +_PyImport_FixupExtensionObject +_PyImport_Init +_PyImport_ReInitLock +_PyImport_ReleaseLock +_PyList_DebugMallocStats +_PyList_Extend +_PyLong_AsByteArray +_PyLong_AsInt +_PyLong_AsTime_t +_PyLong_Copy +_PyLong_DigitValue +_PyLong_DivmodNear +_PyLong_Format +_PyLong_FormatAdvancedWriter +_PyLong_FormatBytesWriter +_PyLong_FormatWriter +_PyLong_Frexp +_PyLong_FromByteArray +_PyLong_FromBytes +_PyLong_FromNbInt +_PyLong_FromTime_t +_PyLong_GCD +_PyLong_New +_PyLong_NumBits +_PyLong_Sign +_PyManagedBuffer_Type +_PyMem_PymallocEnabled +_PyMem_RawStrdup +_PyMem_SetupAllocators +_PyMem_Strdup +_PyMethodWrapper_Type +_PyMethod_DebugMallocStats +_PyModule_Clear +_PyModule_ClearDict +_PyNamespace_New +_PyNamespace_Type +_PyNode_SizeOf +_PyNone_Type +_PyNotImplemented_Type +_PyOS_GetOpt +_PyOS_IsMainThread +_PyOS_ReadlineTState +_PyOS_ResetGetOpt +_PyOS_SigintEvent +_PyOS_URandom +_PyOS_URandomNonblock +_PyOS_optarg +_PyOS_opterr +_PyOS_optind +_PyObject_CallFunction_SizeT +_PyObject_CallMethodId +_PyObject_CallMethodIdObjArgs +_PyObject_CallMethodId_SizeT +_PyObject_CallMethod_SizeT +_PyObject_Call_Prepend +_PyObject_DebugMallocStats +_PyObject_DebugTypeStats +_PyObject_Dump +_PyObject_FastCallDict +_PyObject_FastCallKeywords +_PyObject_GC_Calloc +_PyObject_GC_Malloc +_PyObject_GC_New +_PyObject_GC_NewVar +_PyObject_GC_Resize +_PyObject_GenericGetAttrWithDict +_PyObject_GenericSetAttrWithDict +_PyObject_GetAttrId +_PyObject_GetBuiltin +_PyObject_GetDictPtr +_PyObject_HasAttrId +_PyObject_HasLen +_PyObject_IsAbstract +_PyObject_LookupSpecial +_PyObject_New +_PyObject_NewVar +_PyObject_NextNotImplemented +_PyObject_RealIsInstance +_PyObject_RealIsSubclass +_PyObject_SetAttrId +_PyParser_Grammar +_PyParser_TokenNames +_PyRandom_Fini +_PyRandom_Init +_PySequence_BytesToCharpArray +_PySequence_IterSearch +_PySet_Dummy +_PySet_NextEntry +_PySet_Update +_PySlice_FromIndices +_PySlice_GetLongIndices +_PyStack_AsDict +_PyStack_AsTuple +_PyStack_UnpackDict +_PyState_AddModule +_PyState_ClearModules +_PySys_GetObjectId +_PySys_GetSizeOf +_PySys_Init +_PySys_SetObjectId +_PyThreadState_Current +_PyThreadState_DeleteExcept +_PyThreadState_GetFrame +_PyThreadState_Init +_PyThreadState_Prealloc +_PyThreadState_UncheckedGet +_PyThread_CurrentFrames +_PyTime_AsMicroseconds +_PyTime_AsMilliseconds +_PyTime_AsNanosecondsObject +_PyTime_AsSecondsDouble +_PyTime_AsTimeval +_PyTime_AsTimevalTime_t +_PyTime_AsTimeval_noraise +_PyTime_FromMillisecondsObject +_PyTime_FromNanoseconds +_PyTime_FromSeconds +_PyTime_FromSecondsObject +_PyTime_GetMonotonicClock +_PyTime_GetMonotonicClockWithInfo +_PyTime_GetSystemClock +_PyTime_GetSystemClockWithInfo +_PyTime_Init +_PyTime_ObjectToTime_t +_PyTime_ObjectToTimespec +_PyTime_ObjectToTimeval +_PyTime_gmtime +_PyTime_localtime +_PyTraceMalloc_GetTraceback +_PyTraceMalloc_Track +_PyTraceMalloc_Untrack +_PyTraceback_Add +_PyTrash_delete_later +_PyTrash_delete_nesting +_PyTrash_deposit_object +_PyTrash_destroy_chain +_PyTrash_thread_deposit_object +_PyTrash_thread_destroy_chain +_PyTuple_DebugMallocStats +_PyTuple_MaybeUntrack +_PyTuple_Resize +_PyType_CalculateMetaclass +_PyType_Fini +_PyType_GetDocFromInternalDoc +_PyType_GetTextSignatureFromInternalDoc +_PyType_Lookup +_PyType_LookupId +_PyUnicodeTranslateError_Create +_PyUnicodeWriter_Dealloc +_PyUnicodeWriter_Finish +_PyUnicodeWriter_Init +_PyUnicodeWriter_PrepareInternal +_PyUnicodeWriter_PrepareKindInternal +_PyUnicodeWriter_WriteASCIIString +_PyUnicodeWriter_WriteChar +_PyUnicodeWriter_WriteLatin1String +_PyUnicodeWriter_WriteStr +_PyUnicodeWriter_WriteSubstring +_PyUnicode_AsASCIIString +_PyUnicode_AsKind +_PyUnicode_AsLatin1String +_PyUnicode_AsUTF8String +_PyUnicode_AsUnicode +_PyUnicode_AsWideCharString +_PyUnicode_ClearStaticStrings +_PyUnicode_Copy +_PyUnicode_DecodeUnicodeEscape +_PyUnicode_EQ +_PyUnicode_EncodeCharmap +_PyUnicode_EncodeUTF16 +_PyUnicode_EncodeUTF32 +_PyUnicode_EncodeUTF7 +_PyUnicode_EqualToASCIIId +_PyUnicode_EqualToASCIIString +_PyUnicode_FastCopyCharacters +_PyUnicode_FastFill +_PyUnicode_FindMaxChar +_PyUnicode_FormatAdvancedWriter +_PyUnicode_FormatLong +_PyUnicode_FromASCII +_PyUnicode_FromId +_PyUnicode_InsertThousandsGrouping +_PyUnicode_IsAlpha +_PyUnicode_IsCaseIgnorable +_PyUnicode_IsCased +_PyUnicode_IsDecimalDigit +_PyUnicode_IsDigit +_PyUnicode_IsLinebreak +_PyUnicode_IsLowercase +_PyUnicode_IsNumeric +_PyUnicode_IsPrintable +_PyUnicode_IsTitlecase +_PyUnicode_IsUppercase +_PyUnicode_IsWhitespace +_PyUnicode_IsXidContinue +_PyUnicode_IsXidStart +_PyUnicode_JoinArray +_PyUnicode_Ready +_PyUnicode_ToDecimalDigit +_PyUnicode_ToDigit +_PyUnicode_ToFoldedFull +_PyUnicode_ToLowerFull +_PyUnicode_ToLowercase +_PyUnicode_ToNumeric +_PyUnicode_ToTitleFull +_PyUnicode_ToTitlecase +_PyUnicode_ToUpperFull +_PyUnicode_ToUppercase +_PyUnicode_TransformDecimalAndSpaceToASCII +_PyUnicode_XStrip +_PyWarnings_Init +_PyWeakref_CallableProxyType +_PyWeakref_ClearRef +_PyWeakref_GetWeakrefCount +_PyWeakref_ProxyType +_PyWeakref_RefType +_PyWindowsConsoleIO_Type +_Py_BreakPoint +_Py_BuildValue_SizeT +_Py_CheckFunctionResult +_Py_CheckRecursionLimit +_Py_CheckRecursiveCall +_Py_Dealloc +_Py_DisplaySourceLine +_Py_DumpASCII +_Py_DumpDecimal +_Py_DumpHexadecimal +_Py_DumpTraceback +_Py_DumpTracebackThreads +_Py_EllipsisObject +_Py_FalseStruct +_Py_Finalizing +_Py_FreeCharPArray +_Py_GetAllocatedBlocks +_Py_HashBytes +_Py_HashDouble +_Py_HashPointer +_Py_HashSecret +_Py_InitializeEx_Private +_Py_Mangle +_Py_NoneStruct +_Py_NotImplementedStruct +_Py_PackageContext +_Py_PyAtExit +_Py_ReleaseInternedUnicodeStrings +_Py_RestoreSignals +_Py_SwappedOp +_Py_TrueStruct +_Py_VaBuildValue_SizeT +_Py_add_one_to_index_C +_Py_add_one_to_index_F +_Py_ascii_whitespace +_Py_c_abs +_Py_c_diff +_Py_c_neg +_Py_c_pow +_Py_c_prod +_Py_c_quot +_Py_c_sum +_Py_ctype_table +_Py_ctype_tolower +_Py_ctype_toupper +_Py_device_encoding +_Py_dg_dtoa +_Py_dg_freedtoa +_Py_dg_infinity +_Py_dg_stdnan +_Py_dg_strtod +_Py_dup +_Py_fopen +_Py_fopen_obj +_Py_fstat +_Py_fstat_noraise +_Py_get_inheritable +_Py_gitidentifier +_Py_gitversion +_Py_hashtable_clear +_Py_hashtable_compare_direct +_Py_hashtable_copy +_Py_hashtable_destroy +_Py_hashtable_foreach +_Py_hashtable_get +_Py_hashtable_get_entry +_Py_hashtable_hash_ptr +_Py_hashtable_new +_Py_hashtable_new_full +_Py_hashtable_pop +_Py_hashtable_set +_Py_hashtable_size +_Py_open +_Py_open_noraise +_Py_parse_inf_or_nan +_Py_read +_Py_set_inheritable +_Py_stat +_Py_strhex +_Py_strhex_bytes +_Py_string_to_number_with_underscores +_Py_wfopen +_Py_wgetcwd +_Py_write +_Py_write_noraise diff --git a/qrenderdoc/3rdparty/python/Win32/python36.dll b/qrenderdoc/3rdparty/python/Win32/python36.dll new file mode 100644 index 000000000..6f1e9e7f5 Binary files /dev/null and b/qrenderdoc/3rdparty/python/Win32/python36.dll differ diff --git a/qrenderdoc/3rdparty/python/Win32/python36.lib b/qrenderdoc/3rdparty/python/Win32/python36.lib new file mode 100644 index 000000000..d5ecb5911 Binary files /dev/null and b/qrenderdoc/3rdparty/python/Win32/python36.lib differ diff --git a/qrenderdoc/3rdparty/python/include/Python-ast.h b/qrenderdoc/3rdparty/python/include/Python-ast.h new file mode 100644 index 000000000..70494b70f --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/Python-ast.h @@ -0,0 +1,637 @@ +/* File automatically generated by Parser/asdl_c.py. */ + +#include "asdl.h" + +typedef struct _mod *mod_ty; + +typedef struct _stmt *stmt_ty; + +typedef struct _expr *expr_ty; + +typedef enum _expr_context { Load=1, Store=2, Del=3, AugLoad=4, AugStore=5, + Param=6 } expr_context_ty; + +typedef struct _slice *slice_ty; + +typedef enum _boolop { And=1, Or=2 } boolop_ty; + +typedef enum _operator { Add=1, Sub=2, Mult=3, MatMult=4, Div=5, Mod=6, Pow=7, + LShift=8, RShift=9, BitOr=10, BitXor=11, BitAnd=12, + FloorDiv=13 } operator_ty; + +typedef enum _unaryop { Invert=1, Not=2, UAdd=3, USub=4 } unaryop_ty; + +typedef enum _cmpop { Eq=1, NotEq=2, Lt=3, LtE=4, Gt=5, GtE=6, Is=7, IsNot=8, + In=9, NotIn=10 } cmpop_ty; + +typedef struct _comprehension *comprehension_ty; + +typedef struct _excepthandler *excepthandler_ty; + +typedef struct _arguments *arguments_ty; + +typedef struct _arg *arg_ty; + +typedef struct _keyword *keyword_ty; + +typedef struct _alias *alias_ty; + +typedef struct _withitem *withitem_ty; + + +enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3, + Suite_kind=4}; +struct _mod { + enum _mod_kind kind; + union { + struct { + asdl_seq *body; + } Module; + + struct { + asdl_seq *body; + } Interactive; + + struct { + expr_ty body; + } Expression; + + struct { + asdl_seq *body; + } Suite; + + } v; +}; + +enum _stmt_kind {FunctionDef_kind=1, AsyncFunctionDef_kind=2, ClassDef_kind=3, + Return_kind=4, Delete_kind=5, Assign_kind=6, + AugAssign_kind=7, AnnAssign_kind=8, For_kind=9, + AsyncFor_kind=10, While_kind=11, If_kind=12, With_kind=13, + AsyncWith_kind=14, Raise_kind=15, Try_kind=16, + Assert_kind=17, Import_kind=18, ImportFrom_kind=19, + Global_kind=20, Nonlocal_kind=21, Expr_kind=22, Pass_kind=23, + Break_kind=24, Continue_kind=25}; +struct _stmt { + enum _stmt_kind kind; + union { + struct { + identifier name; + arguments_ty args; + asdl_seq *body; + asdl_seq *decorator_list; + expr_ty returns; + } FunctionDef; + + struct { + identifier name; + arguments_ty args; + asdl_seq *body; + asdl_seq *decorator_list; + expr_ty returns; + } AsyncFunctionDef; + + struct { + identifier name; + asdl_seq *bases; + asdl_seq *keywords; + asdl_seq *body; + asdl_seq *decorator_list; + } ClassDef; + + struct { + expr_ty value; + } Return; + + struct { + asdl_seq *targets; + } Delete; + + struct { + asdl_seq *targets; + expr_ty value; + } Assign; + + struct { + expr_ty target; + operator_ty op; + expr_ty value; + } AugAssign; + + struct { + expr_ty target; + expr_ty annotation; + expr_ty value; + int simple; + } AnnAssign; + + struct { + expr_ty target; + expr_ty iter; + asdl_seq *body; + asdl_seq *orelse; + } For; + + struct { + expr_ty target; + expr_ty iter; + asdl_seq *body; + asdl_seq *orelse; + } AsyncFor; + + struct { + expr_ty test; + asdl_seq *body; + asdl_seq *orelse; + } While; + + struct { + expr_ty test; + asdl_seq *body; + asdl_seq *orelse; + } If; + + struct { + asdl_seq *items; + asdl_seq *body; + } With; + + struct { + asdl_seq *items; + asdl_seq *body; + } AsyncWith; + + struct { + expr_ty exc; + expr_ty cause; + } Raise; + + struct { + asdl_seq *body; + asdl_seq *handlers; + asdl_seq *orelse; + asdl_seq *finalbody; + } Try; + + struct { + expr_ty test; + expr_ty msg; + } Assert; + + struct { + asdl_seq *names; + } Import; + + struct { + identifier module; + asdl_seq *names; + int level; + } ImportFrom; + + struct { + asdl_seq *names; + } Global; + + struct { + asdl_seq *names; + } Nonlocal; + + struct { + expr_ty value; + } Expr; + + } v; + int lineno; + int col_offset; +}; + +enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4, + IfExp_kind=5, Dict_kind=6, Set_kind=7, ListComp_kind=8, + SetComp_kind=9, DictComp_kind=10, GeneratorExp_kind=11, + Await_kind=12, Yield_kind=13, YieldFrom_kind=14, + Compare_kind=15, Call_kind=16, Num_kind=17, Str_kind=18, + FormattedValue_kind=19, JoinedStr_kind=20, Bytes_kind=21, + NameConstant_kind=22, Ellipsis_kind=23, Constant_kind=24, + Attribute_kind=25, Subscript_kind=26, Starred_kind=27, + Name_kind=28, List_kind=29, Tuple_kind=30}; +struct _expr { + enum _expr_kind kind; + union { + struct { + boolop_ty op; + asdl_seq *values; + } BoolOp; + + struct { + expr_ty left; + operator_ty op; + expr_ty right; + } BinOp; + + struct { + unaryop_ty op; + expr_ty operand; + } UnaryOp; + + struct { + arguments_ty args; + expr_ty body; + } Lambda; + + struct { + expr_ty test; + expr_ty body; + expr_ty orelse; + } IfExp; + + struct { + asdl_seq *keys; + asdl_seq *values; + } Dict; + + struct { + asdl_seq *elts; + } Set; + + struct { + expr_ty elt; + asdl_seq *generators; + } ListComp; + + struct { + expr_ty elt; + asdl_seq *generators; + } SetComp; + + struct { + expr_ty key; + expr_ty value; + asdl_seq *generators; + } DictComp; + + struct { + expr_ty elt; + asdl_seq *generators; + } GeneratorExp; + + struct { + expr_ty value; + } Await; + + struct { + expr_ty value; + } Yield; + + struct { + expr_ty value; + } YieldFrom; + + struct { + expr_ty left; + asdl_int_seq *ops; + asdl_seq *comparators; + } Compare; + + struct { + expr_ty func; + asdl_seq *args; + asdl_seq *keywords; + } Call; + + struct { + object n; + } Num; + + struct { + string s; + } Str; + + struct { + expr_ty value; + int conversion; + expr_ty format_spec; + } FormattedValue; + + struct { + asdl_seq *values; + } JoinedStr; + + struct { + bytes s; + } Bytes; + + struct { + singleton value; + } NameConstant; + + struct { + constant value; + } Constant; + + struct { + expr_ty value; + identifier attr; + expr_context_ty ctx; + } Attribute; + + struct { + expr_ty value; + slice_ty slice; + expr_context_ty ctx; + } Subscript; + + struct { + expr_ty value; + expr_context_ty ctx; + } Starred; + + struct { + identifier id; + expr_context_ty ctx; + } Name; + + struct { + asdl_seq *elts; + expr_context_ty ctx; + } List; + + struct { + asdl_seq *elts; + expr_context_ty ctx; + } Tuple; + + } v; + int lineno; + int col_offset; +}; + +enum _slice_kind {Slice_kind=1, ExtSlice_kind=2, Index_kind=3}; +struct _slice { + enum _slice_kind kind; + union { + struct { + expr_ty lower; + expr_ty upper; + expr_ty step; + } Slice; + + struct { + asdl_seq *dims; + } ExtSlice; + + struct { + expr_ty value; + } Index; + + } v; +}; + +struct _comprehension { + expr_ty target; + expr_ty iter; + asdl_seq *ifs; + int is_async; +}; + +enum _excepthandler_kind {ExceptHandler_kind=1}; +struct _excepthandler { + enum _excepthandler_kind kind; + union { + struct { + expr_ty type; + identifier name; + asdl_seq *body; + } ExceptHandler; + + } v; + int lineno; + int col_offset; +}; + +struct _arguments { + asdl_seq *args; + arg_ty vararg; + asdl_seq *kwonlyargs; + asdl_seq *kw_defaults; + arg_ty kwarg; + asdl_seq *defaults; +}; + +struct _arg { + identifier arg; + expr_ty annotation; + int lineno; + int col_offset; +}; + +struct _keyword { + identifier arg; + expr_ty value; +}; + +struct _alias { + identifier name; + identifier asname; +}; + +struct _withitem { + expr_ty context_expr; + expr_ty optional_vars; +}; + + +#define Module(a0, a1) _Py_Module(a0, a1) +mod_ty _Py_Module(asdl_seq * body, PyArena *arena); +#define Interactive(a0, a1) _Py_Interactive(a0, a1) +mod_ty _Py_Interactive(asdl_seq * body, PyArena *arena); +#define Expression(a0, a1) _Py_Expression(a0, a1) +mod_ty _Py_Expression(expr_ty body, PyArena *arena); +#define Suite(a0, a1) _Py_Suite(a0, a1) +mod_ty _Py_Suite(asdl_seq * body, PyArena *arena); +#define FunctionDef(a0, a1, a2, a3, a4, a5, a6, a7) _Py_FunctionDef(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body, + asdl_seq * decorator_list, expr_ty returns, int lineno, + int col_offset, PyArena *arena); +#define AsyncFunctionDef(a0, a1, a2, a3, a4, a5, a6, a7) _Py_AsyncFunctionDef(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_AsyncFunctionDef(identifier name, arguments_ty args, asdl_seq * + body, asdl_seq * decorator_list, expr_ty returns, + int lineno, int col_offset, PyArena *arena); +#define ClassDef(a0, a1, a2, a3, a4, a5, a6, a7) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords, + asdl_seq * body, asdl_seq * decorator_list, int lineno, + int col_offset, PyArena *arena); +#define Return(a0, a1, a2, a3) _Py_Return(a0, a1, a2, a3) +stmt_ty _Py_Return(expr_ty value, int lineno, int col_offset, PyArena *arena); +#define Delete(a0, a1, a2, a3) _Py_Delete(a0, a1, a2, a3) +stmt_ty _Py_Delete(asdl_seq * targets, int lineno, int col_offset, PyArena + *arena); +#define Assign(a0, a1, a2, a3, a4) _Py_Assign(a0, a1, a2, a3, a4) +stmt_ty _Py_Assign(asdl_seq * targets, expr_ty value, int lineno, int + col_offset, PyArena *arena); +#define AugAssign(a0, a1, a2, a3, a4, a5) _Py_AugAssign(a0, a1, a2, a3, a4, a5) +stmt_ty _Py_AugAssign(expr_ty target, operator_ty op, expr_ty value, int + lineno, int col_offset, PyArena *arena); +#define AnnAssign(a0, a1, a2, a3, a4, a5, a6) _Py_AnnAssign(a0, a1, a2, a3, a4, a5, a6) +stmt_ty _Py_AnnAssign(expr_ty target, expr_ty annotation, expr_ty value, int + simple, int lineno, int col_offset, PyArena *arena); +#define For(a0, a1, a2, a3, a4, a5, a6) _Py_For(a0, a1, a2, a3, a4, a5, a6) +stmt_ty _Py_For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * + orelse, int lineno, int col_offset, PyArena *arena); +#define AsyncFor(a0, a1, a2, a3, a4, a5, a6) _Py_AsyncFor(a0, a1, a2, a3, a4, a5, a6) +stmt_ty _Py_AsyncFor(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * + orelse, int lineno, int col_offset, PyArena *arena); +#define While(a0, a1, a2, a3, a4, a5) _Py_While(a0, a1, a2, a3, a4, a5) +stmt_ty _Py_While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, + int col_offset, PyArena *arena); +#define If(a0, a1, a2, a3, a4, a5) _Py_If(a0, a1, a2, a3, a4, a5) +stmt_ty _Py_If(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, + int col_offset, PyArena *arena); +#define With(a0, a1, a2, a3, a4) _Py_With(a0, a1, a2, a3, a4) +stmt_ty _Py_With(asdl_seq * items, asdl_seq * body, int lineno, int col_offset, + PyArena *arena); +#define AsyncWith(a0, a1, a2, a3, a4) _Py_AsyncWith(a0, a1, a2, a3, a4) +stmt_ty _Py_AsyncWith(asdl_seq * items, asdl_seq * body, int lineno, int + col_offset, PyArena *arena); +#define Raise(a0, a1, a2, a3, a4) _Py_Raise(a0, a1, a2, a3, a4) +stmt_ty _Py_Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset, + PyArena *arena); +#define Try(a0, a1, a2, a3, a4, a5, a6) _Py_Try(a0, a1, a2, a3, a4, a5, a6) +stmt_ty _Py_Try(asdl_seq * body, asdl_seq * handlers, asdl_seq * orelse, + asdl_seq * finalbody, int lineno, int col_offset, PyArena + *arena); +#define Assert(a0, a1, a2, a3, a4) _Py_Assert(a0, a1, a2, a3, a4) +stmt_ty _Py_Assert(expr_ty test, expr_ty msg, int lineno, int col_offset, + PyArena *arena); +#define Import(a0, a1, a2, a3) _Py_Import(a0, a1, a2, a3) +stmt_ty _Py_Import(asdl_seq * names, int lineno, int col_offset, PyArena + *arena); +#define ImportFrom(a0, a1, a2, a3, a4, a5) _Py_ImportFrom(a0, a1, a2, a3, a4, a5) +stmt_ty _Py_ImportFrom(identifier module, asdl_seq * names, int level, int + lineno, int col_offset, PyArena *arena); +#define Global(a0, a1, a2, a3) _Py_Global(a0, a1, a2, a3) +stmt_ty _Py_Global(asdl_seq * names, int lineno, int col_offset, PyArena + *arena); +#define Nonlocal(a0, a1, a2, a3) _Py_Nonlocal(a0, a1, a2, a3) +stmt_ty _Py_Nonlocal(asdl_seq * names, int lineno, int col_offset, PyArena + *arena); +#define Expr(a0, a1, a2, a3) _Py_Expr(a0, a1, a2, a3) +stmt_ty _Py_Expr(expr_ty value, int lineno, int col_offset, PyArena *arena); +#define Pass(a0, a1, a2) _Py_Pass(a0, a1, a2) +stmt_ty _Py_Pass(int lineno, int col_offset, PyArena *arena); +#define Break(a0, a1, a2) _Py_Break(a0, a1, a2) +stmt_ty _Py_Break(int lineno, int col_offset, PyArena *arena); +#define Continue(a0, a1, a2) _Py_Continue(a0, a1, a2) +stmt_ty _Py_Continue(int lineno, int col_offset, PyArena *arena); +#define BoolOp(a0, a1, a2, a3, a4) _Py_BoolOp(a0, a1, a2, a3, a4) +expr_ty _Py_BoolOp(boolop_ty op, asdl_seq * values, int lineno, int col_offset, + PyArena *arena); +#define BinOp(a0, a1, a2, a3, a4, a5) _Py_BinOp(a0, a1, a2, a3, a4, a5) +expr_ty _Py_BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno, int + col_offset, PyArena *arena); +#define UnaryOp(a0, a1, a2, a3, a4) _Py_UnaryOp(a0, a1, a2, a3, a4) +expr_ty _Py_UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int col_offset, + PyArena *arena); +#define Lambda(a0, a1, a2, a3, a4) _Py_Lambda(a0, a1, a2, a3, a4) +expr_ty _Py_Lambda(arguments_ty args, expr_ty body, int lineno, int col_offset, + PyArena *arena); +#define IfExp(a0, a1, a2, a3, a4, a5) _Py_IfExp(a0, a1, a2, a3, a4, a5) +expr_ty _Py_IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno, int + col_offset, PyArena *arena); +#define Dict(a0, a1, a2, a3, a4) _Py_Dict(a0, a1, a2, a3, a4) +expr_ty _Py_Dict(asdl_seq * keys, asdl_seq * values, int lineno, int + col_offset, PyArena *arena); +#define Set(a0, a1, a2, a3) _Py_Set(a0, a1, a2, a3) +expr_ty _Py_Set(asdl_seq * elts, int lineno, int col_offset, PyArena *arena); +#define ListComp(a0, a1, a2, a3, a4) _Py_ListComp(a0, a1, a2, a3, a4) +expr_ty _Py_ListComp(expr_ty elt, asdl_seq * generators, int lineno, int + col_offset, PyArena *arena); +#define SetComp(a0, a1, a2, a3, a4) _Py_SetComp(a0, a1, a2, a3, a4) +expr_ty _Py_SetComp(expr_ty elt, asdl_seq * generators, int lineno, int + col_offset, PyArena *arena); +#define DictComp(a0, a1, a2, a3, a4, a5) _Py_DictComp(a0, a1, a2, a3, a4, a5) +expr_ty _Py_DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int + lineno, int col_offset, PyArena *arena); +#define GeneratorExp(a0, a1, a2, a3, a4) _Py_GeneratorExp(a0, a1, a2, a3, a4) +expr_ty _Py_GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int + col_offset, PyArena *arena); +#define Await(a0, a1, a2, a3) _Py_Await(a0, a1, a2, a3) +expr_ty _Py_Await(expr_ty value, int lineno, int col_offset, PyArena *arena); +#define Yield(a0, a1, a2, a3) _Py_Yield(a0, a1, a2, a3) +expr_ty _Py_Yield(expr_ty value, int lineno, int col_offset, PyArena *arena); +#define YieldFrom(a0, a1, a2, a3) _Py_YieldFrom(a0, a1, a2, a3) +expr_ty _Py_YieldFrom(expr_ty value, int lineno, int col_offset, PyArena + *arena); +#define Compare(a0, a1, a2, a3, a4, a5) _Py_Compare(a0, a1, a2, a3, a4, a5) +expr_ty _Py_Compare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators, + int lineno, int col_offset, PyArena *arena); +#define Call(a0, a1, a2, a3, a4, a5) _Py_Call(a0, a1, a2, a3, a4, a5) +expr_ty _Py_Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, int + lineno, int col_offset, PyArena *arena); +#define Num(a0, a1, a2, a3) _Py_Num(a0, a1, a2, a3) +expr_ty _Py_Num(object n, int lineno, int col_offset, PyArena *arena); +#define Str(a0, a1, a2, a3) _Py_Str(a0, a1, a2, a3) +expr_ty _Py_Str(string s, int lineno, int col_offset, PyArena *arena); +#define FormattedValue(a0, a1, a2, a3, a4, a5) _Py_FormattedValue(a0, a1, a2, a3, a4, a5) +expr_ty _Py_FormattedValue(expr_ty value, int conversion, expr_ty format_spec, + int lineno, int col_offset, PyArena *arena); +#define JoinedStr(a0, a1, a2, a3) _Py_JoinedStr(a0, a1, a2, a3) +expr_ty _Py_JoinedStr(asdl_seq * values, int lineno, int col_offset, PyArena + *arena); +#define Bytes(a0, a1, a2, a3) _Py_Bytes(a0, a1, a2, a3) +expr_ty _Py_Bytes(bytes s, int lineno, int col_offset, PyArena *arena); +#define NameConstant(a0, a1, a2, a3) _Py_NameConstant(a0, a1, a2, a3) +expr_ty _Py_NameConstant(singleton value, int lineno, int col_offset, PyArena + *arena); +#define Ellipsis(a0, a1, a2) _Py_Ellipsis(a0, a1, a2) +expr_ty _Py_Ellipsis(int lineno, int col_offset, PyArena *arena); +#define Constant(a0, a1, a2, a3) _Py_Constant(a0, a1, a2, a3) +expr_ty _Py_Constant(constant value, int lineno, int col_offset, PyArena + *arena); +#define Attribute(a0, a1, a2, a3, a4, a5) _Py_Attribute(a0, a1, a2, a3, a4, a5) +expr_ty _Py_Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int + lineno, int col_offset, PyArena *arena); +#define Subscript(a0, a1, a2, a3, a4, a5) _Py_Subscript(a0, a1, a2, a3, a4, a5) +expr_ty _Py_Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int + lineno, int col_offset, PyArena *arena); +#define Starred(a0, a1, a2, a3, a4) _Py_Starred(a0, a1, a2, a3, a4) +expr_ty _Py_Starred(expr_ty value, expr_context_ty ctx, int lineno, int + col_offset, PyArena *arena); +#define Name(a0, a1, a2, a3, a4) _Py_Name(a0, a1, a2, a3, a4) +expr_ty _Py_Name(identifier id, expr_context_ty ctx, int lineno, int + col_offset, PyArena *arena); +#define List(a0, a1, a2, a3, a4) _Py_List(a0, a1, a2, a3, a4) +expr_ty _Py_List(asdl_seq * elts, expr_context_ty ctx, int lineno, int + col_offset, PyArena *arena); +#define Tuple(a0, a1, a2, a3, a4) _Py_Tuple(a0, a1, a2, a3, a4) +expr_ty _Py_Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno, int + col_offset, PyArena *arena); +#define Slice(a0, a1, a2, a3) _Py_Slice(a0, a1, a2, a3) +slice_ty _Py_Slice(expr_ty lower, expr_ty upper, expr_ty step, PyArena *arena); +#define ExtSlice(a0, a1) _Py_ExtSlice(a0, a1) +slice_ty _Py_ExtSlice(asdl_seq * dims, PyArena *arena); +#define Index(a0, a1) _Py_Index(a0, a1) +slice_ty _Py_Index(expr_ty value, PyArena *arena); +#define comprehension(a0, a1, a2, a3, a4) _Py_comprehension(a0, a1, a2, a3, a4) +comprehension_ty _Py_comprehension(expr_ty target, expr_ty iter, asdl_seq * + ifs, int is_async, PyArena *arena); +#define ExceptHandler(a0, a1, a2, a3, a4, a5) _Py_ExceptHandler(a0, a1, a2, a3, a4, a5) +excepthandler_ty _Py_ExceptHandler(expr_ty type, identifier name, asdl_seq * + body, int lineno, int col_offset, PyArena + *arena); +#define arguments(a0, a1, a2, a3, a4, a5, a6) _Py_arguments(a0, a1, a2, a3, a4, a5, a6) +arguments_ty _Py_arguments(asdl_seq * args, arg_ty vararg, asdl_seq * + kwonlyargs, asdl_seq * kw_defaults, arg_ty kwarg, + asdl_seq * defaults, PyArena *arena); +#define arg(a0, a1, a2, a3, a4) _Py_arg(a0, a1, a2, a3, a4) +arg_ty _Py_arg(identifier arg, expr_ty annotation, int lineno, int col_offset, + PyArena *arena); +#define keyword(a0, a1, a2) _Py_keyword(a0, a1, a2) +keyword_ty _Py_keyword(identifier arg, expr_ty value, PyArena *arena); +#define alias(a0, a1, a2) _Py_alias(a0, a1, a2) +alias_ty _Py_alias(identifier name, identifier asname, PyArena *arena); +#define withitem(a0, a1, a2) _Py_withitem(a0, a1, a2) +withitem_ty _Py_withitem(expr_ty context_expr, expr_ty optional_vars, PyArena + *arena); + +PyObject* PyAST_mod2obj(mod_ty t); +mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode); +int PyAST_Check(PyObject* obj); diff --git a/qrenderdoc/3rdparty/python/include/Python.h b/qrenderdoc/3rdparty/python/include/Python.h new file mode 100644 index 000000000..4c7c9a48c --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/Python.h @@ -0,0 +1,136 @@ +#ifndef Py_PYTHON_H +#define Py_PYTHON_H +/* Since this is a "meta-include" file, no #ifdef __cplusplus / extern "C" { */ + +/* Include nearly all Python header files */ + +#include "patchlevel.h" +#include "pyconfig.h" +#include "pymacconfig.h" + +#include + +#ifndef UCHAR_MAX +#error "Something's broken. UCHAR_MAX should be defined in limits.h." +#endif + +#if UCHAR_MAX != 255 +#error "Python's source code assumes C's unsigned char is an 8-bit type." +#endif + +#if defined(__sgi) && defined(WITH_THREAD) && !defined(_SGI_MP_SOURCE) +#define _SGI_MP_SOURCE +#endif + +#include +#ifndef NULL +# error "Python.h requires that stdio.h define NULL." +#endif + +#include +#ifdef HAVE_ERRNO_H +#include +#endif +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +/* For size_t? */ +#ifdef HAVE_STDDEF_H +#include +#endif + +/* CAUTION: Build setups should ensure that NDEBUG is defined on the + * compiler command line when building Python in release mode; else + * assert() calls won't be removed. + */ +#include + +#include "pyport.h" +#include "pymacro.h" + +#include "pyatomic.h" + +/* Debug-mode build with pymalloc implies PYMALLOC_DEBUG. + * PYMALLOC_DEBUG is in error if pymalloc is not in use. + */ +#if defined(Py_DEBUG) && defined(WITH_PYMALLOC) && !defined(PYMALLOC_DEBUG) +#define PYMALLOC_DEBUG +#endif +#if defined(PYMALLOC_DEBUG) && !defined(WITH_PYMALLOC) +#error "PYMALLOC_DEBUG requires WITH_PYMALLOC" +#endif +#include "pymath.h" +#include "pytime.h" +#include "pymem.h" + +#include "object.h" +#include "objimpl.h" +#include "typeslots.h" +#include "pyhash.h" + +#include "pydebug.h" + +#include "bytearrayobject.h" +#include "bytesobject.h" +#include "unicodeobject.h" +#include "longobject.h" +#include "longintrepr.h" +#include "boolobject.h" +#include "floatobject.h" +#include "complexobject.h" +#include "rangeobject.h" +#include "memoryobject.h" +#include "tupleobject.h" +#include "listobject.h" +#include "dictobject.h" +#include "odictobject.h" +#include "enumobject.h" +#include "setobject.h" +#include "methodobject.h" +#include "moduleobject.h" +#include "funcobject.h" +#include "classobject.h" +#include "fileobject.h" +#include "pycapsule.h" +#include "traceback.h" +#include "sliceobject.h" +#include "cellobject.h" +#include "iterobject.h" +#include "genobject.h" +#include "descrobject.h" +#include "warnings.h" +#include "weakrefobject.h" +#include "structseq.h" +#include "namespaceobject.h" + +#include "codecs.h" +#include "pyerrors.h" + +#include "pystate.h" + +#include "pyarena.h" +#include "modsupport.h" +#include "pythonrun.h" +#include "pylifecycle.h" +#include "ceval.h" +#include "sysmodule.h" +#include "osmodule.h" +#include "intrcheck.h" +#include "import.h" + +#include "abstract.h" +#include "bltinmodule.h" + +#include "compile.h" +#include "eval.h" + +#include "pyctype.h" +#include "pystrtod.h" +#include "pystrcmp.h" +#include "dtoa.h" +#include "fileutils.h" +#include "pyfpe.h" + +#endif /* !Py_PYTHON_H */ diff --git a/qrenderdoc/3rdparty/python/include/abstract.h b/qrenderdoc/3rdparty/python/include/abstract.h new file mode 100644 index 000000000..6bb76ec95 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/abstract.h @@ -0,0 +1,1377 @@ +#ifndef Py_ABSTRACTOBJECT_H +#define Py_ABSTRACTOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef PY_SSIZE_T_CLEAN +#define PyObject_CallFunction _PyObject_CallFunction_SizeT +#define PyObject_CallMethod _PyObject_CallMethod_SizeT +#ifndef Py_LIMITED_API +#define _PyObject_CallMethodId _PyObject_CallMethodId_SizeT +#endif /* !Py_LIMITED_API */ +#endif + +/* Abstract Object Interface (many thanks to Jim Fulton) */ + +/* + PROPOSAL: A Generic Python Object Interface for Python C Modules + +Problem + + Python modules written in C that must access Python objects must do + so through routines whose interfaces are described by a set of + include files. Unfortunately, these routines vary according to the + object accessed. To use these routines, the C programmer must check + the type of the object being used and must call a routine based on + the object type. For example, to access an element of a sequence, + the programmer must determine whether the sequence is a list or a + tuple: + + if(is_tupleobject(o)) + e=gettupleitem(o,i) + else if(is_listitem(o)) + e=getlistitem(o,i) + + If the programmer wants to get an item from another type of object + that provides sequence behavior, there is no clear way to do it + correctly. + + The persistent programmer may peruse object.h and find that the + _typeobject structure provides a means of invoking up to (currently + about) 41 special operators. So, for example, a routine can get an + item from any object that provides sequence behavior. However, to + use this mechanism, the programmer must make their code dependent on + the current Python implementation. + + Also, certain semantics, especially memory management semantics, may + differ by the type of object being used. Unfortunately, these + semantics are not clearly described in the current include files. + An abstract interface providing more consistent semantics is needed. + +Proposal + + I propose the creation of a standard interface (with an associated + library of routines and/or macros) for generically obtaining the + services of Python objects. This proposal can be viewed as one + components of a Python C interface consisting of several components. + + From the viewpoint of C access to Python services, we have (as + suggested by Guido in off-line discussions): + + - "Very high level layer": two or three functions that let you exec or + eval arbitrary Python code given as a string in a module whose name is + given, passing C values in and getting C values out using + mkvalue/getargs style format strings. This does not require the user + to declare any variables of type "PyObject *". This should be enough + to write a simple application that gets Python code from the user, + execs it, and returns the output or errors. (Error handling must also + be part of this API.) + + - "Abstract objects layer": which is the subject of this proposal. + It has many functions operating on objects, and lest you do many + things from C that you can also write in Python, without going + through the Python parser. + + - "Concrete objects layer": This is the public type-dependent + interface provided by the standard built-in types, such as floats, + strings, and lists. This interface exists and is currently + documented by the collection of include files provided with the + Python distributions. + + From the point of view of Python accessing services provided by C + modules: + + - "Python module interface": this interface consist of the basic + routines used to define modules and their members. Most of the + current extensions-writing guide deals with this interface. + + - "Built-in object interface": this is the interface that a new + built-in type must provide and the mechanisms and rules that a + developer of a new built-in type must use and follow. + + This proposal is a "first-cut" that is intended to spur + discussion. See especially the lists of notes. + + The Python C object interface will provide four protocols: object, + numeric, sequence, and mapping. Each protocol consists of a + collection of related operations. If an operation that is not + provided by a particular type is invoked, then a standard exception, + NotImplementedError is raised with an operation name as an argument. + In addition, for convenience this interface defines a set of + constructors for building objects of built-in types. This is needed + so new objects can be returned from C functions that otherwise treat + objects generically. + +Memory Management + + For all of the functions described in this proposal, if a function + retains a reference to a Python object passed as an argument, then the + function will increase the reference count of the object. It is + unnecessary for the caller to increase the reference count of an + argument in anticipation of the object's retention. + + All Python objects returned from functions should be treated as new + objects. Functions that return objects assume that the caller will + retain a reference and the reference count of the object has already + been incremented to account for this fact. A caller that does not + retain a reference to an object that is returned from a function + must decrement the reference count of the object (using + DECREF(object)) to prevent memory leaks. + + Note that the behavior mentioned here is different from the current + behavior for some objects (e.g. lists and tuples) when certain + type-specific routines are called directly (e.g. setlistitem). The + proposed abstraction layer will provide a consistent memory + management interface, correcting for inconsistent behavior for some + built-in types. + +Protocols + +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ + +/* Object Protocol: */ + + /* Implemented elsewhere: + + int PyObject_Print(PyObject *o, FILE *fp, int flags); + + Print an object, o, on file, fp. Returns -1 on + error. The flags argument is used to enable certain printing + options. The only option currently supported is Py_Print_RAW. + + (What should be said about Py_Print_RAW?) + + */ + + /* Implemented elsewhere: + + int PyObject_HasAttrString(PyObject *o, const char *attr_name); + + Returns 1 if o has the attribute attr_name, and 0 otherwise. + This is equivalent to the Python expression: + hasattr(o,attr_name). + + This function always succeeds. + + */ + + /* Implemented elsewhere: + + PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name); + + Retrieve an attributed named attr_name form object o. + Returns the attribute value on success, or NULL on failure. + This is the equivalent of the Python expression: o.attr_name. + + */ + + /* Implemented elsewhere: + + int PyObject_HasAttr(PyObject *o, PyObject *attr_name); + + Returns 1 if o has the attribute attr_name, and 0 otherwise. + This is equivalent to the Python expression: + hasattr(o,attr_name). + + This function always succeeds. + + */ + + /* Implemented elsewhere: + + PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name); + + Retrieve an attributed named attr_name form object o. + Returns the attribute value on success, or NULL on failure. + This is the equivalent of the Python expression: o.attr_name. + + */ + + + /* Implemented elsewhere: + + int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v); + + Set the value of the attribute named attr_name, for object o, + to the value v. Raise an exception and return -1 on failure; return 0 on + success. This is the equivalent of the Python statement o.attr_name=v. + + */ + + /* Implemented elsewhere: + + int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v); + + Set the value of the attribute named attr_name, for object o, + to the value v. Raise an exception and return -1 on failure; return 0 on + success. This is the equivalent of the Python statement o.attr_name=v. + + */ + + /* implemented as a macro: + + int PyObject_DelAttrString(PyObject *o, const char *attr_name); + + Delete attribute named attr_name, for object o. Returns + -1 on failure. This is the equivalent of the Python + statement: del o.attr_name. + + */ +#define PyObject_DelAttrString(O,A) PyObject_SetAttrString((O),(A),NULL) + + /* implemented as a macro: + + int PyObject_DelAttr(PyObject *o, PyObject *attr_name); + + Delete attribute named attr_name, for object o. Returns -1 + on failure. This is the equivalent of the Python + statement: del o.attr_name. + + */ +#define PyObject_DelAttr(O,A) PyObject_SetAttr((O),(A),NULL) + + /* Implemented elsewhere: + + PyObject *PyObject_Repr(PyObject *o); + + Compute the string representation of object, o. Returns the + string representation on success, NULL on failure. This is + the equivalent of the Python expression: repr(o). + + Called by the repr() built-in function. + + */ + + /* Implemented elsewhere: + + PyObject *PyObject_Str(PyObject *o); + + Compute the string representation of object, o. Returns the + string representation on success, NULL on failure. This is + the equivalent of the Python expression: str(o).) + + Called by the str() and print() built-in functions. + + */ + + /* Declared elsewhere + + PyAPI_FUNC(int) PyCallable_Check(PyObject *o); + + Determine if the object, o, is callable. Return 1 if the + object is callable and 0 otherwise. + + This function always succeeds. + */ + + PyAPI_FUNC(PyObject *) PyObject_Call(PyObject *callable_object, + PyObject *args, PyObject *kwargs); + + /* + Call a callable Python object, callable_object, with + arguments and keywords arguments. The 'args' argument can not be + NULL. + */ + +#ifndef Py_LIMITED_API + PyAPI_FUNC(PyObject*) _PyStack_AsTuple( + PyObject **stack, + Py_ssize_t nargs); + + /* Convert keyword arguments from the (stack, kwnames) format to a Python + dictionary. + + kwnames must only contains str strings, no subclass, and all keys must + be unique. kwnames is not checked, usually these checks are done before or later + calling _PyStack_AsDict(). For example, _PyArg_ParseStack() raises an + error if a key is not a string. */ + PyAPI_FUNC(PyObject *) _PyStack_AsDict( + PyObject **values, + PyObject *kwnames); + + /* Convert (args, nargs, kwargs: dict) into (stack, nargs, kwnames: tuple). + + Return 0 on success, raise an exception and return -1 on error. + + Write the new stack into *p_stack. If *p_stack is differen than args, it + must be released by PyMem_Free(). + + The stack uses borrowed references. + + The type of keyword keys is not checked, these checks should be done + later (ex: _PyArg_ParseStackAndKeywords). */ + PyAPI_FUNC(int) _PyStack_UnpackDict( + PyObject **args, + Py_ssize_t nargs, + PyObject *kwargs, + PyObject ***p_stack, + PyObject **p_kwnames); + + /* Call the callable object func with the "fast call" calling convention: + args is a C array for positional arguments (nargs is the number of + positional arguments), kwargs is a dictionary for keyword arguments. + + If nargs is equal to zero, args can be NULL. kwargs can be NULL. + nargs must be greater or equal to zero. + + Return the result on success. Raise an exception on return NULL on + error. */ + PyAPI_FUNC(PyObject *) _PyObject_FastCallDict(PyObject *func, + PyObject **args, Py_ssize_t nargs, + PyObject *kwargs); + + /* Call the callable object func with the "fast call" calling convention: + args is a C array for positional arguments followed by values of + keyword arguments. Keys of keyword arguments are stored as a tuple + of strings in kwnames. nargs is the number of positional parameters at + the beginning of stack. The size of kwnames gives the number of keyword + values in the stack after positional arguments. + + kwnames must only contains str strings, no subclass, and all keys must + be unique. + + If nargs is equal to zero and there is no keyword argument (kwnames is + NULL or its size is zero), args can be NULL. + + Return the result on success. Raise an exception and return NULL on + error. */ + PyAPI_FUNC(PyObject *) _PyObject_FastCallKeywords + (PyObject *func, + PyObject **args, + Py_ssize_t nargs, + PyObject *kwnames); + +#define _PyObject_FastCall(func, args, nargs) \ + _PyObject_FastCallDict((func), (args), (nargs), NULL) + +#define _PyObject_CallNoArg(func) \ + _PyObject_FastCall((func), NULL, 0) + +#define _PyObject_CallArg1(func, arg) \ + _PyObject_FastCall((func), &(arg), 1) + + PyAPI_FUNC(PyObject *) _PyObject_Call_Prepend(PyObject *func, + PyObject *obj, PyObject *args, + PyObject *kwargs); + + PyAPI_FUNC(PyObject *) _Py_CheckFunctionResult(PyObject *func, + PyObject *result, + const char *where); +#endif /* Py_LIMITED_API */ + + PyAPI_FUNC(PyObject *) PyObject_CallObject(PyObject *callable_object, + PyObject *args); + + /* + Call a callable Python object, callable_object, with + arguments given by the tuple, args. If no arguments are + needed, then args may be NULL. Returns the result of the + call on success, or NULL on failure. This is the equivalent + of the Python expression: o(*args). + */ + + PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable_object, + const char *format, ...); + + /* + Call a callable Python object, callable_object, with a + variable number of C arguments. The C arguments are described + using a mkvalue-style format string. The format may be NULL, + indicating that no arguments are provided. Returns the + result of the call on success, or NULL on failure. This is + the equivalent of the Python expression: o(*args). + */ + + + PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *o, + const char *method, + const char *format, ...); + + /* + Call the method named m of object o with a variable number of + C arguments. The C arguments are described by a mkvalue + format string. The format may be NULL, indicating that no + arguments are provided. Returns the result of the call on + success, or NULL on failure. This is the equivalent of the + Python expression: o.method(args). + */ + +#ifndef Py_LIMITED_API + PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *o, + _Py_Identifier *method, + const char *format, ...); + + /* + Like PyObject_CallMethod, but expect a _Py_Identifier* as the + method name. + */ +#endif /* !Py_LIMITED_API */ + + PyAPI_FUNC(PyObject *) _PyObject_CallFunction_SizeT(PyObject *callable, + const char *format, + ...); + PyAPI_FUNC(PyObject *) _PyObject_CallMethod_SizeT(PyObject *o, + const char *name, + const char *format, + ...); +#ifndef Py_LIMITED_API + PyAPI_FUNC(PyObject *) _PyObject_CallMethodId_SizeT(PyObject *o, + _Py_Identifier *name, + const char *format, + ...); +#endif /* !Py_LIMITED_API */ + + PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable, + ...); + + /* + Call a callable Python object, callable_object, with a + variable number of C arguments. The C arguments are provided + as PyObject * values, terminated by a NULL. Returns the + result of the call on success, or NULL on failure. This is + the equivalent of the Python expression: o(*args). + */ + + + PyAPI_FUNC(PyObject *) PyObject_CallMethodObjArgs(PyObject *o, + PyObject *method, ...); +#ifndef Py_LIMITED_API + PyAPI_FUNC(PyObject *) _PyObject_CallMethodIdObjArgs(PyObject *o, + struct _Py_Identifier *method, + ...); +#endif /* !Py_LIMITED_API */ + + /* + Call the method named m of object o with a variable number of + C arguments. The C arguments are provided as PyObject * + values, terminated by NULL. Returns the result of the call + on success, or NULL on failure. This is the equivalent of + the Python expression: o.method(args). + */ + + + /* Implemented elsewhere: + + long PyObject_Hash(PyObject *o); + + Compute and return the hash, hash_value, of an object, o. On + failure, return -1. This is the equivalent of the Python + expression: hash(o). + */ + + + /* Implemented elsewhere: + + int PyObject_IsTrue(PyObject *o); + + Returns 1 if the object, o, is considered to be true, 0 if o is + considered to be false and -1 on failure. This is equivalent to the + Python expression: not not o + */ + + /* Implemented elsewhere: + + int PyObject_Not(PyObject *o); + + Returns 0 if the object, o, is considered to be true, 1 if o is + considered to be false and -1 on failure. This is equivalent to the + Python expression: not o + */ + + PyAPI_FUNC(PyObject *) PyObject_Type(PyObject *o); + + /* + On success, returns a type object corresponding to the object + type of object o. On failure, returns NULL. This is + equivalent to the Python expression: type(o). + */ + + PyAPI_FUNC(Py_ssize_t) PyObject_Size(PyObject *o); + + /* + Return the size of object o. If the object, o, provides + both sequence and mapping protocols, the sequence size is + returned. On error, -1 is returned. This is the equivalent + to the Python expression: len(o). + */ + + /* For DLL compatibility */ +#undef PyObject_Length + PyAPI_FUNC(Py_ssize_t) PyObject_Length(PyObject *o); +#define PyObject_Length PyObject_Size + +#ifndef Py_LIMITED_API + PyAPI_FUNC(int) _PyObject_HasLen(PyObject *o); + PyAPI_FUNC(Py_ssize_t) PyObject_LengthHint(PyObject *o, Py_ssize_t); +#endif + + /* + Guess the size of object o using len(o) or o.__length_hint__(). + If neither of those return a non-negative value, then return the + default value. If one of the calls fails, this function returns -1. + */ + + PyAPI_FUNC(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key); + + /* + Return element of o corresponding to the object, key, or NULL + on failure. This is the equivalent of the Python expression: + o[key]. + */ + + PyAPI_FUNC(int) PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v); + + /* + Map the object key to the value v. Raise an exception and return -1 + on failure; return 0 on success. This is the equivalent of the Python + statement o[key]=v. + */ + + PyAPI_FUNC(int) PyObject_DelItemString(PyObject *o, const char *key); + + /* + Remove the mapping for object, key, from the object *o. + Returns -1 on failure. This is equivalent to + the Python statement: del o[key]. + */ + + PyAPI_FUNC(int) PyObject_DelItem(PyObject *o, PyObject *key); + + /* + Delete the mapping for key from *o. Returns -1 on failure. + This is the equivalent of the Python statement: del o[key]. + */ + + /* old buffer API + FIXME: usage of these should all be replaced in Python itself + but for backwards compatibility we will implement them. + Their usage without a corresponding "unlock" mechanism + may create issues (but they would already be there). */ + + PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj, + const char **buffer, + Py_ssize_t *buffer_len); + + /* + Takes an arbitrary object which must support the (character, + single segment) buffer interface and returns a pointer to a + read-only memory location useable as character based input + for subsequent processing. + + 0 is returned on success. buffer and buffer_len are only + set in case no error occurs. Otherwise, -1 is returned and + an exception set. + */ + + PyAPI_FUNC(int) PyObject_CheckReadBuffer(PyObject *obj); + + /* + Checks whether an arbitrary object supports the (character, + single segment) buffer interface. Returns 1 on success, 0 + on failure. + */ + + PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj, + const void **buffer, + Py_ssize_t *buffer_len); + + /* + Same as PyObject_AsCharBuffer() except that this API expects + (readable, single segment) buffer interface and returns a + pointer to a read-only memory location which can contain + arbitrary data. + + 0 is returned on success. buffer and buffer_len are only + set in case no error occurs. Otherwise, -1 is returned and + an exception set. + */ + + PyAPI_FUNC(int) PyObject_AsWriteBuffer(PyObject *obj, + void **buffer, + Py_ssize_t *buffer_len); + + /* + Takes an arbitrary object which must support the (writable, + single segment) buffer interface and returns a pointer to a + writable memory location in buffer of size buffer_len. + + 0 is returned on success. buffer and buffer_len are only + set in case no error occurs. Otherwise, -1 is returned and + an exception set. + */ + + /* new buffer API */ + +#ifndef Py_LIMITED_API +#define PyObject_CheckBuffer(obj) \ + (((obj)->ob_type->tp_as_buffer != NULL) && \ + ((obj)->ob_type->tp_as_buffer->bf_getbuffer != NULL)) + + /* Return 1 if the getbuffer function is available, otherwise + return 0 */ + + PyAPI_FUNC(int) PyObject_GetBuffer(PyObject *obj, Py_buffer *view, + int flags); + + /* This is a C-API version of the getbuffer function call. It checks + to make sure object has the required function pointer and issues the + call. Returns -1 and raises an error on failure and returns 0 on + success + */ + + + PyAPI_FUNC(void *) PyBuffer_GetPointer(Py_buffer *view, Py_ssize_t *indices); + + /* Get the memory area pointed to by the indices for the buffer given. + Note that view->ndim is the assumed size of indices + */ + + PyAPI_FUNC(int) PyBuffer_SizeFromFormat(const char *); + + /* Return the implied itemsize of the data-format area from a + struct-style description */ + + + + /* Implementation in memoryobject.c */ + PyAPI_FUNC(int) PyBuffer_ToContiguous(void *buf, Py_buffer *view, + Py_ssize_t len, char order); + + PyAPI_FUNC(int) PyBuffer_FromContiguous(Py_buffer *view, void *buf, + Py_ssize_t len, char order); + + + /* Copy len bytes of data from the contiguous chunk of memory + pointed to by buf into the buffer exported by obj. Return + 0 on success and return -1 and raise a PyBuffer_Error on + error (i.e. the object does not have a buffer interface or + it is not working). + + If fort is 'F', then if the object is multi-dimensional, + then the data will be copied into the array in + Fortran-style (first dimension varies the fastest). If + fort is 'C', then the data will be copied into the array + in C-style (last dimension varies the fastest). If fort + is 'A', then it does not matter and the copy will be made + in whatever way is more efficient. + + */ + + PyAPI_FUNC(int) PyObject_CopyData(PyObject *dest, PyObject *src); + + /* Copy the data from the src buffer to the buffer of destination + */ + + PyAPI_FUNC(int) PyBuffer_IsContiguous(const Py_buffer *view, char fort); + + + PyAPI_FUNC(void) PyBuffer_FillContiguousStrides(int ndims, + Py_ssize_t *shape, + Py_ssize_t *strides, + int itemsize, + char fort); + + /* Fill the strides array with byte-strides of a contiguous + (Fortran-style if fort is 'F' or C-style otherwise) + array of the given shape with the given number of bytes + per element. + */ + + PyAPI_FUNC(int) PyBuffer_FillInfo(Py_buffer *view, PyObject *o, void *buf, + Py_ssize_t len, int readonly, + int flags); + + /* Fills in a buffer-info structure correctly for an exporter + that can only share a contiguous chunk of memory of + "unsigned bytes" of the given length. Returns 0 on success + and -1 (with raising an error) on error. + */ + + PyAPI_FUNC(void) PyBuffer_Release(Py_buffer *view); + + /* Releases a Py_buffer obtained from getbuffer ParseTuple's s*. + */ +#endif /* Py_LIMITED_API */ + + PyAPI_FUNC(PyObject *) PyObject_Format(PyObject* obj, + PyObject *format_spec); + /* + Takes an arbitrary object and returns the result of + calling obj.__format__(format_spec). + */ + +/* Iterators */ + + PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *); + /* Takes an object and returns an iterator for it. + This is typically a new iterator but if the argument + is an iterator, this returns itself. */ + +#define PyIter_Check(obj) \ + ((obj)->ob_type->tp_iternext != NULL && \ + (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented) + + PyAPI_FUNC(PyObject *) PyIter_Next(PyObject *); + /* Takes an iterator object and calls its tp_iternext slot, + returning the next value. If the iterator is exhausted, + this returns NULL without setting an exception. + NULL with an exception means an error occurred. */ + +/* Number Protocol:*/ + + PyAPI_FUNC(int) PyNumber_Check(PyObject *o); + + /* + Returns 1 if the object, o, provides numeric protocols, and + false otherwise. + + This function always succeeds. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Add(PyObject *o1, PyObject *o2); + + /* + Returns the result of adding o1 and o2, or null on failure. + This is the equivalent of the Python expression: o1+o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Subtract(PyObject *o1, PyObject *o2); + + /* + Returns the result of subtracting o2 from o1, or null on + failure. This is the equivalent of the Python expression: + o1-o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2); + + /* + Returns the result of multiplying o1 and o2, or null on + failure. This is the equivalent of the Python expression: + o1*o2. + */ + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 + PyAPI_FUNC(PyObject *) PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2); + + /* + This is the equivalent of the Python expression: o1 @ o2. + */ +#endif + + PyAPI_FUNC(PyObject *) PyNumber_FloorDivide(PyObject *o1, PyObject *o2); + + /* + Returns the result of dividing o1 by o2 giving an integral result, + or null on failure. + This is the equivalent of the Python expression: o1//o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_TrueDivide(PyObject *o1, PyObject *o2); + + /* + Returns the result of dividing o1 by o2 giving a float result, + or null on failure. + This is the equivalent of the Python expression: o1/o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Remainder(PyObject *o1, PyObject *o2); + + /* + Returns the remainder of dividing o1 by o2, or null on + failure. This is the equivalent of the Python expression: + o1%o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Divmod(PyObject *o1, PyObject *o2); + + /* + See the built-in function divmod. Returns NULL on failure. + This is the equivalent of the Python expression: + divmod(o1,o2). + */ + + PyAPI_FUNC(PyObject *) PyNumber_Power(PyObject *o1, PyObject *o2, + PyObject *o3); + + /* + See the built-in function pow. Returns NULL on failure. + This is the equivalent of the Python expression: + pow(o1,o2,o3), where o3 is optional. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Negative(PyObject *o); + + /* + Returns the negation of o on success, or null on failure. + This is the equivalent of the Python expression: -o. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Positive(PyObject *o); + + /* + Returns the (what?) of o on success, or NULL on failure. + This is the equivalent of the Python expression: +o. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Absolute(PyObject *o); + + /* + Returns the absolute value of o, or null on failure. This is + the equivalent of the Python expression: abs(o). + */ + + PyAPI_FUNC(PyObject *) PyNumber_Invert(PyObject *o); + + /* + Returns the bitwise negation of o on success, or NULL on + failure. This is the equivalent of the Python expression: + ~o. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Lshift(PyObject *o1, PyObject *o2); + + /* + Returns the result of left shifting o1 by o2 on success, or + NULL on failure. This is the equivalent of the Python + expression: o1 << o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Rshift(PyObject *o1, PyObject *o2); + + /* + Returns the result of right shifting o1 by o2 on success, or + NULL on failure. This is the equivalent of the Python + expression: o1 >> o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_And(PyObject *o1, PyObject *o2); + + /* + Returns the result of bitwise and of o1 and o2 on success, or + NULL on failure. This is the equivalent of the Python + expression: o1&o2. + + */ + + PyAPI_FUNC(PyObject *) PyNumber_Xor(PyObject *o1, PyObject *o2); + + /* + Returns the bitwise exclusive or of o1 by o2 on success, or + NULL on failure. This is the equivalent of the Python + expression: o1^o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Or(PyObject *o1, PyObject *o2); + + /* + Returns the result of bitwise or on o1 and o2 on success, or + NULL on failure. This is the equivalent of the Python + expression: o1|o2. + */ + +#define PyIndex_Check(obj) \ + ((obj)->ob_type->tp_as_number != NULL && \ + (obj)->ob_type->tp_as_number->nb_index != NULL) + + PyAPI_FUNC(PyObject *) PyNumber_Index(PyObject *o); + + /* + Returns the object converted to a Python int + or NULL with an error raised on failure. + */ + + PyAPI_FUNC(Py_ssize_t) PyNumber_AsSsize_t(PyObject *o, PyObject *exc); + + /* + Returns the object converted to Py_ssize_t by going through + PyNumber_Index first. If an overflow error occurs while + converting the int to Py_ssize_t, then the second argument + is the error-type to return. If it is NULL, then the overflow error + is cleared and the value is clipped. + */ + + PyAPI_FUNC(PyObject *) PyNumber_Long(PyObject *o); + + /* + Returns the o converted to an integer object on success, or + NULL on failure. This is the equivalent of the Python + expression: int(o). + */ + + PyAPI_FUNC(PyObject *) PyNumber_Float(PyObject *o); + + /* + Returns the o converted to a float object on success, or NULL + on failure. This is the equivalent of the Python expression: + float(o). + */ + +/* In-place variants of (some of) the above number protocol functions */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2); + + /* + Returns the result of adding o2 to o1, possibly in-place, or null + on failure. This is the equivalent of the Python expression: + o1 += o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2); + + /* + Returns the result of subtracting o2 from o1, possibly in-place or + null on failure. This is the equivalent of the Python expression: + o1 -= o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2); + + /* + Returns the result of multiplying o1 by o2, possibly in-place, or + null on failure. This is the equivalent of the Python expression: + o1 *= o2. + */ + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 + PyAPI_FUNC(PyObject *) PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2); + + /* + This is the equivalent of the Python expression: o1 @= o2. + */ +#endif + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceFloorDivide(PyObject *o1, + PyObject *o2); + + /* + Returns the result of dividing o1 by o2 giving an integral result, + possibly in-place, or null on failure. + This is the equivalent of the Python expression: + o1 /= o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceTrueDivide(PyObject *o1, + PyObject *o2); + + /* + Returns the result of dividing o1 by o2 giving a float result, + possibly in-place, or null on failure. + This is the equivalent of the Python expression: + o1 /= o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2); + + /* + Returns the remainder of dividing o1 by o2, possibly in-place, or + null on failure. This is the equivalent of the Python expression: + o1 %= o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlacePower(PyObject *o1, PyObject *o2, + PyObject *o3); + + /* + Returns the result of raising o1 to the power of o2, possibly + in-place, or null on failure. This is the equivalent of the Python + expression: o1 **= o2, or pow(o1, o2, o3) if o3 is present. + */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2); + + /* + Returns the result of left shifting o1 by o2, possibly in-place, or + null on failure. This is the equivalent of the Python expression: + o1 <<= o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2); + + /* + Returns the result of right shifting o1 by o2, possibly in-place or + null on failure. This is the equivalent of the Python expression: + o1 >>= o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2); + + /* + Returns the result of bitwise and of o1 and o2, possibly in-place, + or null on failure. This is the equivalent of the Python + expression: o1 &= o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceXor(PyObject *o1, PyObject *o2); + + /* + Returns the bitwise exclusive or of o1 by o2, possibly in-place, or + null on failure. This is the equivalent of the Python expression: + o1 ^= o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_InPlaceOr(PyObject *o1, PyObject *o2); + + /* + Returns the result of bitwise or of o1 and o2, possibly in-place, + or null on failure. This is the equivalent of the Python + expression: o1 |= o2. + */ + + PyAPI_FUNC(PyObject *) PyNumber_ToBase(PyObject *n, int base); + + /* + Returns the integer n converted to a string with a base, with a base + marker of 0b, 0o or 0x prefixed if applicable. + If n is not an int object, it is converted with PyNumber_Index first. + */ + + +/* Sequence protocol:*/ + + PyAPI_FUNC(int) PySequence_Check(PyObject *o); + + /* + Return 1 if the object provides sequence protocol, and zero + otherwise. + + This function always succeeds. + */ + + PyAPI_FUNC(Py_ssize_t) PySequence_Size(PyObject *o); + + /* + Return the size of sequence object o, or -1 on failure. + */ + + /* For DLL compatibility */ +#undef PySequence_Length + PyAPI_FUNC(Py_ssize_t) PySequence_Length(PyObject *o); +#define PySequence_Length PySequence_Size + + + PyAPI_FUNC(PyObject *) PySequence_Concat(PyObject *o1, PyObject *o2); + + /* + Return the concatenation of o1 and o2 on success, and NULL on + failure. This is the equivalent of the Python + expression: o1+o2. + */ + + PyAPI_FUNC(PyObject *) PySequence_Repeat(PyObject *o, Py_ssize_t count); + + /* + Return the result of repeating sequence object o count times, + or NULL on failure. This is the equivalent of the Python + expression: o1*count. + */ + + PyAPI_FUNC(PyObject *) PySequence_GetItem(PyObject *o, Py_ssize_t i); + + /* + Return the ith element of o, or NULL on failure. This is the + equivalent of the Python expression: o[i]. + */ + + PyAPI_FUNC(PyObject *) PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2); + + /* + Return the slice of sequence object o between i1 and i2, or + NULL on failure. This is the equivalent of the Python + expression: o[i1:i2]. + */ + + PyAPI_FUNC(int) PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v); + + /* + Assign object v to the ith element of o. Raise an exception and return + -1 on failure; return 0 on success. This is the equivalent of the + Python statement o[i]=v. + */ + + PyAPI_FUNC(int) PySequence_DelItem(PyObject *o, Py_ssize_t i); + + /* + Delete the ith element of object v. Returns + -1 on failure. This is the equivalent of the Python + statement: del o[i]. + */ + + PyAPI_FUNC(int) PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, + PyObject *v); + + /* + Assign the sequence object, v, to the slice in sequence + object, o, from i1 to i2. Returns -1 on failure. This is the + equivalent of the Python statement: o[i1:i2]=v. + */ + + PyAPI_FUNC(int) PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2); + + /* + Delete the slice in sequence object, o, from i1 to i2. + Returns -1 on failure. This is the equivalent of the Python + statement: del o[i1:i2]. + */ + + PyAPI_FUNC(PyObject *) PySequence_Tuple(PyObject *o); + + /* + Returns the sequence, o, as a tuple on success, and NULL on failure. + This is equivalent to the Python expression: tuple(o) + */ + + + PyAPI_FUNC(PyObject *) PySequence_List(PyObject *o); + /* + Returns the sequence, o, as a list on success, and NULL on failure. + This is equivalent to the Python expression: list(o) + */ + + PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m); + /* + Return the sequence, o, as a list, unless it's already a + tuple or list. Use PySequence_Fast_GET_ITEM to access the + members of this list, and PySequence_Fast_GET_SIZE to get its length. + + Returns NULL on failure. If the object does not support iteration, + raises a TypeError exception with m as the message text. + */ + +#define PySequence_Fast_GET_SIZE(o) \ + (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o)) + /* + Return the size of o, assuming that o was returned by + PySequence_Fast and is not NULL. + */ + +#define PySequence_Fast_GET_ITEM(o, i)\ + (PyList_Check(o) ? PyList_GET_ITEM(o, i) : PyTuple_GET_ITEM(o, i)) + /* + Return the ith element of o, assuming that o was returned by + PySequence_Fast, and that i is within bounds. + */ + +#define PySequence_ITEM(o, i)\ + ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) ) + /* Assume tp_as_sequence and sq_item exist and that i does not + need to be corrected for a negative index + */ + +#define PySequence_Fast_ITEMS(sf) \ + (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \ + : ((PyTupleObject *)(sf))->ob_item) + /* Return a pointer to the underlying item array for + an object retured by PySequence_Fast */ + + PyAPI_FUNC(Py_ssize_t) PySequence_Count(PyObject *o, PyObject *value); + + /* + Return the number of occurrences on value on o, that is, + return the number of keys for which o[key]==value. On + failure, return -1. This is equivalent to the Python + expression: o.count(value). + */ + + PyAPI_FUNC(int) PySequence_Contains(PyObject *seq, PyObject *ob); + /* + Return -1 if error; 1 if ob in seq; 0 if ob not in seq. + Use __contains__ if possible, else _PySequence_IterSearch(). + */ + +#ifndef Py_LIMITED_API +#define PY_ITERSEARCH_COUNT 1 +#define PY_ITERSEARCH_INDEX 2 +#define PY_ITERSEARCH_CONTAINS 3 + PyAPI_FUNC(Py_ssize_t) _PySequence_IterSearch(PyObject *seq, + PyObject *obj, int operation); +#endif + /* + Iterate over seq. Result depends on the operation: + PY_ITERSEARCH_COUNT: return # of times obj appears in seq; -1 if + error. + PY_ITERSEARCH_INDEX: return 0-based index of first occurrence of + obj in seq; set ValueError and return -1 if none found; + also return -1 on error. + PY_ITERSEARCH_CONTAINS: return 1 if obj in seq, else 0; -1 on + error. + */ + +/* For DLL-level backwards compatibility */ +#undef PySequence_In + PyAPI_FUNC(int) PySequence_In(PyObject *o, PyObject *value); + +/* For source-level backwards compatibility */ +#define PySequence_In PySequence_Contains + + /* + Determine if o contains value. If an item in o is equal to + X, return 1, otherwise return 0. On error, return -1. This + is equivalent to the Python expression: value in o. + */ + + PyAPI_FUNC(Py_ssize_t) PySequence_Index(PyObject *o, PyObject *value); + + /* + Return the first index for which o[i]=value. On error, + return -1. This is equivalent to the Python + expression: o.index(value). + */ + +/* In-place versions of some of the above Sequence functions. */ + + PyAPI_FUNC(PyObject *) PySequence_InPlaceConcat(PyObject *o1, PyObject *o2); + + /* + Append o2 to o1, in-place when possible. Return the resulting + object, which could be o1, or NULL on failure. This is the + equivalent of the Python expression: o1 += o2. + + */ + + PyAPI_FUNC(PyObject *) PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count); + + /* + Repeat o1 by count, in-place when possible. Return the resulting + object, which could be o1, or NULL on failure. This is the + equivalent of the Python expression: o1 *= count. + + */ + +/* Mapping protocol:*/ + + PyAPI_FUNC(int) PyMapping_Check(PyObject *o); + + /* + Return 1 if the object provides mapping protocol, and zero + otherwise. + + This function always succeeds. + */ + + PyAPI_FUNC(Py_ssize_t) PyMapping_Size(PyObject *o); + + /* + Returns the number of keys in object o on success, and -1 on + failure. For objects that do not provide sequence protocol, + this is equivalent to the Python expression: len(o). + */ + + /* For DLL compatibility */ +#undef PyMapping_Length + PyAPI_FUNC(Py_ssize_t) PyMapping_Length(PyObject *o); +#define PyMapping_Length PyMapping_Size + + + /* implemented as a macro: + + int PyMapping_DelItemString(PyObject *o, const char *key); + + Remove the mapping for object, key, from the object *o. + Returns -1 on failure. This is equivalent to + the Python statement: del o[key]. + */ +#define PyMapping_DelItemString(O,K) PyObject_DelItemString((O),(K)) + + /* implemented as a macro: + + int PyMapping_DelItem(PyObject *o, PyObject *key); + + Remove the mapping for object, key, from the object *o. + Returns -1 on failure. This is equivalent to + the Python statement: del o[key]. + */ +#define PyMapping_DelItem(O,K) PyObject_DelItem((O),(K)) + + PyAPI_FUNC(int) PyMapping_HasKeyString(PyObject *o, const char *key); + + /* + On success, return 1 if the mapping object has the key, key, + and 0 otherwise. This is equivalent to the Python expression: + key in o. + + This function always succeeds. + */ + + PyAPI_FUNC(int) PyMapping_HasKey(PyObject *o, PyObject *key); + + /* + Return 1 if the mapping object has the key, key, + and 0 otherwise. This is equivalent to the Python expression: + key in o. + + This function always succeeds. + + */ + + PyAPI_FUNC(PyObject *) PyMapping_Keys(PyObject *o); + + /* + On success, return a list or tuple of the keys in object o. + On failure, return NULL. + */ + + PyAPI_FUNC(PyObject *) PyMapping_Values(PyObject *o); + + /* + On success, return a list or tuple of the values in object o. + On failure, return NULL. + */ + + PyAPI_FUNC(PyObject *) PyMapping_Items(PyObject *o); + + /* + On success, return a list or tuple of the items in object o, + where each item is a tuple containing a key-value pair. + On failure, return NULL. + + */ + + PyAPI_FUNC(PyObject *) PyMapping_GetItemString(PyObject *o, + const char *key); + + /* + Return element of o corresponding to the object, key, or NULL + on failure. This is the equivalent of the Python expression: + o[key]. + */ + + PyAPI_FUNC(int) PyMapping_SetItemString(PyObject *o, const char *key, + PyObject *value); + + /* + Map the object, key, to the value, v. Returns + -1 on failure. This is the equivalent of the Python + statement: o[key]=v. + */ + + +PyAPI_FUNC(int) PyObject_IsInstance(PyObject *object, PyObject *typeorclass); + /* isinstance(object, typeorclass) */ + +PyAPI_FUNC(int) PyObject_IsSubclass(PyObject *object, PyObject *typeorclass); + /* issubclass(object, typeorclass) */ + + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyObject_RealIsInstance(PyObject *inst, PyObject *cls); + +PyAPI_FUNC(int) _PyObject_RealIsSubclass(PyObject *derived, PyObject *cls); + +PyAPI_FUNC(char *const *) _PySequence_BytesToCharpArray(PyObject* self); + +PyAPI_FUNC(void) _Py_FreeCharPArray(char *const array[]); + +/* For internal use by buffer API functions */ +PyAPI_FUNC(void) _Py_add_one_to_index_F(int nd, Py_ssize_t *index, + const Py_ssize_t *shape); +PyAPI_FUNC(void) _Py_add_one_to_index_C(int nd, Py_ssize_t *index, + const Py_ssize_t *shape); +#endif /* !Py_LIMITED_API */ + + +#ifdef __cplusplus +} +#endif +#endif /* Py_ABSTRACTOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/accu.h b/qrenderdoc/3rdparty/python/include/accu.h new file mode 100644 index 000000000..3636ea6c9 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/accu.h @@ -0,0 +1,37 @@ +#ifndef Py_LIMITED_API +#ifndef Py_ACCU_H +#define Py_ACCU_H + +/*** This is a private API for use by the interpreter and the stdlib. + *** Its definition may be changed or removed at any moment. + ***/ + +/* + * A two-level accumulator of unicode objects that avoids both the overhead + * of keeping a huge number of small separate objects, and the quadratic + * behaviour of using a naive repeated concatenation scheme. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#undef small /* defined by some Windows headers */ + +typedef struct { + PyObject *large; /* A list of previously accumulated large strings */ + PyObject *small; /* Pending small strings */ +} _PyAccu; + +PyAPI_FUNC(int) _PyAccu_Init(_PyAccu *acc); +PyAPI_FUNC(int) _PyAccu_Accumulate(_PyAccu *acc, PyObject *unicode); +PyAPI_FUNC(PyObject *) _PyAccu_FinishAsList(_PyAccu *acc); +PyAPI_FUNC(PyObject *) _PyAccu_Finish(_PyAccu *acc); +PyAPI_FUNC(void) _PyAccu_Destroy(_PyAccu *acc); + +#ifdef __cplusplus +} +#endif + +#endif /* Py_ACCU_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/asdl.h b/qrenderdoc/3rdparty/python/include/asdl.h new file mode 100644 index 000000000..35e9fa186 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/asdl.h @@ -0,0 +1,46 @@ +#ifndef Py_ASDL_H +#define Py_ASDL_H + +typedef PyObject * identifier; +typedef PyObject * string; +typedef PyObject * bytes; +typedef PyObject * object; +typedef PyObject * singleton; +typedef PyObject * constant; + +/* It would be nice if the code generated by asdl_c.py was completely + independent of Python, but it is a goal the requires too much work + at this stage. So, for example, I'll represent identifiers as + interned Python strings. +*/ + +/* XXX A sequence should be typed so that its use can be typechecked. */ + +typedef struct { + Py_ssize_t size; + void *elements[1]; +} asdl_seq; + +typedef struct { + Py_ssize_t size; + int elements[1]; +} asdl_int_seq; + +asdl_seq *_Py_asdl_seq_new(Py_ssize_t size, PyArena *arena); +asdl_int_seq *_Py_asdl_int_seq_new(Py_ssize_t size, PyArena *arena); + +#define asdl_seq_GET(S, I) (S)->elements[(I)] +#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size) +#ifdef Py_DEBUG +#define asdl_seq_SET(S, I, V) \ + do { \ + Py_ssize_t _asdl_i = (I); \ + assert((S) != NULL); \ + assert(_asdl_i < (S)->size); \ + (S)->elements[_asdl_i] = (V); \ + } while (0) +#else +#define asdl_seq_SET(S, I, V) (S)->elements[I] = (V) +#endif + +#endif /* !Py_ASDL_H */ diff --git a/qrenderdoc/3rdparty/python/include/ast.h b/qrenderdoc/3rdparty/python/include/ast.h new file mode 100644 index 000000000..6a8c8165c --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/ast.h @@ -0,0 +1,22 @@ +#ifndef Py_AST_H +#define Py_AST_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(int) PyAST_Validate(mod_ty); +PyAPI_FUNC(mod_ty) PyAST_FromNode( + const node *n, + PyCompilerFlags *flags, + const char *filename, /* decoded from the filesystem encoding */ + PyArena *arena); +PyAPI_FUNC(mod_ty) PyAST_FromNodeObject( + const node *n, + PyCompilerFlags *flags, + PyObject *filename, + PyArena *arena); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_AST_H */ diff --git a/qrenderdoc/3rdparty/python/include/bitset.h b/qrenderdoc/3rdparty/python/include/bitset.h new file mode 100644 index 000000000..faeb41913 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/bitset.h @@ -0,0 +1,32 @@ + +#ifndef Py_BITSET_H +#define Py_BITSET_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Bitset interface */ + +#define BYTE char + +typedef BYTE *bitset; + +bitset newbitset(int nbits); +void delbitset(bitset bs); +#define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0) +int addbit(bitset bs, int ibit); /* Returns 0 if already set */ +int samebitset(bitset bs1, bitset bs2, int nbits); +void mergebitset(bitset bs1, bitset bs2, int nbits); + +#define BITSPERBYTE (8*sizeof(BYTE)) +#define NBYTES(nbits) (((nbits) + BITSPERBYTE - 1) / BITSPERBYTE) + +#define BIT2BYTE(ibit) ((ibit) / BITSPERBYTE) +#define BIT2SHIFT(ibit) ((ibit) % BITSPERBYTE) +#define BIT2MASK(ibit) (1 << BIT2SHIFT(ibit)) +#define BYTE2BIT(ibyte) ((ibyte) * BITSPERBYTE) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_BITSET_H */ diff --git a/qrenderdoc/3rdparty/python/include/bltinmodule.h b/qrenderdoc/3rdparty/python/include/bltinmodule.h new file mode 100644 index 000000000..868c9e644 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/bltinmodule.h @@ -0,0 +1,14 @@ +#ifndef Py_BLTINMODULE_H +#define Py_BLTINMODULE_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_DATA(PyTypeObject) PyFilter_Type; +PyAPI_DATA(PyTypeObject) PyMap_Type; +PyAPI_DATA(PyTypeObject) PyZip_Type; + +#ifdef __cplusplus +} +#endif +#endif /* !Py_BLTINMODULE_H */ diff --git a/qrenderdoc/3rdparty/python/include/boolobject.h b/qrenderdoc/3rdparty/python/include/boolobject.h new file mode 100644 index 000000000..7cc2f1fe2 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/boolobject.h @@ -0,0 +1,34 @@ +/* Boolean object interface */ + +#ifndef Py_BOOLOBJECT_H +#define Py_BOOLOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + + +PyAPI_DATA(PyTypeObject) PyBool_Type; + +#define PyBool_Check(x) (Py_TYPE(x) == &PyBool_Type) + +/* Py_False and Py_True are the only two bools in existence. +Don't forget to apply Py_INCREF() when returning either!!! */ + +/* Don't use these directly */ +PyAPI_DATA(struct _longobject) _Py_FalseStruct, _Py_TrueStruct; + +/* Use these macros */ +#define Py_False ((PyObject *) &_Py_FalseStruct) +#define Py_True ((PyObject *) &_Py_TrueStruct) + +/* Macros for returning Py_True or Py_False, respectively */ +#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True +#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False + +/* Function to return a bool from a C long */ +PyAPI_FUNC(PyObject *) PyBool_FromLong(long); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_BOOLOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/bytearrayobject.h b/qrenderdoc/3rdparty/python/include/bytearrayobject.h new file mode 100644 index 000000000..a757b8805 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/bytearrayobject.h @@ -0,0 +1,62 @@ +/* ByteArray object interface */ + +#ifndef Py_BYTEARRAYOBJECT_H +#define Py_BYTEARRAYOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Type PyByteArrayObject represents a mutable array of bytes. + * The Python API is that of a sequence; + * the bytes are mapped to ints in [0, 256). + * Bytes are not characters; they may be used to encode characters. + * The only way to go between bytes and str/unicode is via encoding + * and decoding. + * For the convenience of C programmers, the bytes type is considered + * to contain a char pointer, not an unsigned char pointer. + */ + +/* Object layout */ +#ifndef Py_LIMITED_API +typedef struct { + PyObject_VAR_HEAD + Py_ssize_t ob_alloc; /* How many bytes allocated in ob_bytes */ + char *ob_bytes; /* Physical backing buffer */ + char *ob_start; /* Logical start inside ob_bytes */ + /* XXX(nnorwitz): should ob_exports be Py_ssize_t? */ + int ob_exports; /* How many buffer exports */ +} PyByteArrayObject; +#endif + +/* Type object */ +PyAPI_DATA(PyTypeObject) PyByteArray_Type; +PyAPI_DATA(PyTypeObject) PyByteArrayIter_Type; + +/* Type check macros */ +#define PyByteArray_Check(self) PyObject_TypeCheck(self, &PyByteArray_Type) +#define PyByteArray_CheckExact(self) (Py_TYPE(self) == &PyByteArray_Type) + +/* Direct API functions */ +PyAPI_FUNC(PyObject *) PyByteArray_FromObject(PyObject *); +PyAPI_FUNC(PyObject *) PyByteArray_Concat(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyByteArray_FromStringAndSize(const char *, Py_ssize_t); +PyAPI_FUNC(Py_ssize_t) PyByteArray_Size(PyObject *); +PyAPI_FUNC(char *) PyByteArray_AsString(PyObject *); +PyAPI_FUNC(int) PyByteArray_Resize(PyObject *, Py_ssize_t); + +/* Macros, trading safety for speed */ +#ifndef Py_LIMITED_API +#define PyByteArray_AS_STRING(self) \ + (assert(PyByteArray_Check(self)), \ + Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_start : _PyByteArray_empty_string) +#define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)), Py_SIZE(self)) + +PyAPI_DATA(char) _PyByteArray_empty_string[]; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_BYTEARRAYOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/bytes_methods.h b/qrenderdoc/3rdparty/python/include/bytes_methods.h new file mode 100644 index 000000000..7fa7540c3 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/bytes_methods.h @@ -0,0 +1,67 @@ +#ifndef Py_LIMITED_API +#ifndef Py_BYTES_CTYPE_H +#define Py_BYTES_CTYPE_H + +/* + * The internal implementation behind PyBytes (bytes) and PyByteArray (bytearray) + * methods of the given names, they operate on ASCII byte strings. + */ +extern PyObject* _Py_bytes_isspace(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_isalpha(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_isalnum(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_isdigit(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_islower(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_isupper(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_istitle(const char *cptr, Py_ssize_t len); + +/* These store their len sized answer in the given preallocated *result arg. */ +extern void _Py_bytes_lower(char *result, const char *cptr, Py_ssize_t len); +extern void _Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len); +extern void _Py_bytes_title(char *result, const char *s, Py_ssize_t len); +extern void _Py_bytes_capitalize(char *result, const char *s, Py_ssize_t len); +extern void _Py_bytes_swapcase(char *result, const char *s, Py_ssize_t len); + +extern PyObject *_Py_bytes_find(const char *str, Py_ssize_t len, PyObject *args); +extern PyObject *_Py_bytes_index(const char *str, Py_ssize_t len, PyObject *args); +extern PyObject *_Py_bytes_rfind(const char *str, Py_ssize_t len, PyObject *args); +extern PyObject *_Py_bytes_rindex(const char *str, Py_ssize_t len, PyObject *args); +extern PyObject *_Py_bytes_count(const char *str, Py_ssize_t len, PyObject *args); +extern int _Py_bytes_contains(const char *str, Py_ssize_t len, PyObject *arg); +extern PyObject *_Py_bytes_startswith(const char *str, Py_ssize_t len, PyObject *args); +extern PyObject *_Py_bytes_endswith(const char *str, Py_ssize_t len, PyObject *args); + +/* The maketrans() static method. */ +extern PyObject* _Py_bytes_maketrans(Py_buffer *frm, Py_buffer *to); + +/* Shared __doc__ strings. */ +extern const char _Py_isspace__doc__[]; +extern const char _Py_isalpha__doc__[]; +extern const char _Py_isalnum__doc__[]; +extern const char _Py_isdigit__doc__[]; +extern const char _Py_islower__doc__[]; +extern const char _Py_isupper__doc__[]; +extern const char _Py_istitle__doc__[]; +extern const char _Py_lower__doc__[]; +extern const char _Py_upper__doc__[]; +extern const char _Py_title__doc__[]; +extern const char _Py_capitalize__doc__[]; +extern const char _Py_swapcase__doc__[]; +extern const char _Py_count__doc__[]; +extern const char _Py_find__doc__[]; +extern const char _Py_index__doc__[]; +extern const char _Py_rfind__doc__[]; +extern const char _Py_rindex__doc__[]; +extern const char _Py_startswith__doc__[]; +extern const char _Py_endswith__doc__[]; +extern const char _Py_maketrans__doc__[]; +extern const char _Py_expandtabs__doc__[]; +extern const char _Py_ljust__doc__[]; +extern const char _Py_rjust__doc__[]; +extern const char _Py_center__doc__[]; +extern const char _Py_zfill__doc__[]; + +/* this is needed because some docs are shared from the .o, not static */ +#define PyDoc_STRVAR_shared(name,str) const char name[] = PyDoc_STR(str) + +#endif /* !Py_BYTES_CTYPE_H */ +#endif /* !Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/bytesobject.h b/qrenderdoc/3rdparty/python/include/bytesobject.h new file mode 100644 index 000000000..0f0bf9f36 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/bytesobject.h @@ -0,0 +1,224 @@ + +/* Bytes (String) object interface */ + +#ifndef Py_BYTESOBJECT_H +#define Py_BYTESOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* +Type PyBytesObject represents a character string. An extra zero byte is +reserved at the end to ensure it is zero-terminated, but a size is +present so strings with null bytes in them can be represented. This +is an immutable object type. + +There are functions to create new string objects, to test +an object for string-ness, and to get the +string value. The latter function returns a null pointer +if the object is not of the proper type. +There is a variant that takes an explicit size as well as a +variant that assumes a zero-terminated string. Note that none of the +functions should be applied to nil objects. +*/ + +/* Caching the hash (ob_shash) saves recalculation of a string's hash value. + This significantly speeds up dict lookups. */ + +#ifndef Py_LIMITED_API +typedef struct { + PyObject_VAR_HEAD + Py_hash_t ob_shash; + char ob_sval[1]; + + /* Invariants: + * ob_sval contains space for 'ob_size+1' elements. + * ob_sval[ob_size] == 0. + * ob_shash is the hash of the string or -1 if not computed yet. + */ +} PyBytesObject; +#endif + +PyAPI_DATA(PyTypeObject) PyBytes_Type; +PyAPI_DATA(PyTypeObject) PyBytesIter_Type; + +#define PyBytes_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS) +#define PyBytes_CheckExact(op) (Py_TYPE(op) == &PyBytes_Type) + +PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); +PyAPI_FUNC(PyObject *) PyBytes_FromString(const char *); +PyAPI_FUNC(PyObject *) PyBytes_FromObject(PyObject *); +PyAPI_FUNC(PyObject *) PyBytes_FromFormatV(const char*, va_list) + Py_GCC_ATTRIBUTE((format(printf, 1, 0))); +PyAPI_FUNC(PyObject *) PyBytes_FromFormat(const char*, ...) + Py_GCC_ATTRIBUTE((format(printf, 1, 2))); +PyAPI_FUNC(Py_ssize_t) PyBytes_Size(PyObject *); +PyAPI_FUNC(char *) PyBytes_AsString(PyObject *); +PyAPI_FUNC(PyObject *) PyBytes_Repr(PyObject *, int); +PyAPI_FUNC(void) PyBytes_Concat(PyObject **, PyObject *); +PyAPI_FUNC(void) PyBytes_ConcatAndDel(PyObject **, PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyBytes_Resize(PyObject **, Py_ssize_t); +PyAPI_FUNC(PyObject*) _PyBytes_FormatEx( + const char *format, + Py_ssize_t format_len, + PyObject *args, + int use_bytearray); +PyAPI_FUNC(PyObject*) _PyBytes_FromHex( + PyObject *string, + int use_bytearray); +#endif +PyAPI_FUNC(PyObject *) PyBytes_DecodeEscape(const char *, Py_ssize_t, + const char *, Py_ssize_t, + const char *); +#ifndef Py_LIMITED_API +/* Helper for PyBytes_DecodeEscape that detects invalid escape chars. */ +PyAPI_FUNC(PyObject *) _PyBytes_DecodeEscape(const char *, Py_ssize_t, + const char *, Py_ssize_t, + const char *, + const char **); +#endif + +/* Macro, trading safety for speed */ +#ifndef Py_LIMITED_API +#define PyBytes_AS_STRING(op) (assert(PyBytes_Check(op)), \ + (((PyBytesObject *)(op))->ob_sval)) +#define PyBytes_GET_SIZE(op) (assert(PyBytes_Check(op)),Py_SIZE(op)) +#endif + +/* _PyBytes_Join(sep, x) is like sep.join(x). sep must be PyBytesObject*, + x must be an iterable object. */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyBytes_Join(PyObject *sep, PyObject *x); +#endif + +/* Provides access to the internal data buffer and size of a string + object or the default encoded version of a Unicode object. Passing + NULL as *len parameter will force the string buffer to be + 0-terminated (passing a string with embedded NULL characters will + cause an exception). */ +PyAPI_FUNC(int) PyBytes_AsStringAndSize( + PyObject *obj, /* string or Unicode object */ + char **s, /* pointer to buffer variable */ + Py_ssize_t *len /* pointer to length variable or NULL + (only possible for 0-terminated + strings) */ + ); + +/* Using the current locale, insert the thousands grouping + into the string pointed to by buffer. For the argument descriptions, + see Objects/stringlib/localeutil.h */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_ssize_t) _PyBytes_InsertThousandsGroupingLocale(char *buffer, + Py_ssize_t n_buffer, + char *digits, + Py_ssize_t n_digits, + Py_ssize_t min_width); + +/* Using explicit passed-in values, insert the thousands grouping + into the string pointed to by buffer. For the argument descriptions, + see Objects/stringlib/localeutil.h */ +PyAPI_FUNC(Py_ssize_t) _PyBytes_InsertThousandsGrouping(char *buffer, + Py_ssize_t n_buffer, + char *digits, + Py_ssize_t n_digits, + Py_ssize_t min_width, + const char *grouping, + const char *thousands_sep); +#endif + +/* Flags used by string formatting */ +#define F_LJUST (1<<0) +#define F_SIGN (1<<1) +#define F_BLANK (1<<2) +#define F_ALT (1<<3) +#define F_ZERO (1<<4) + +#ifndef Py_LIMITED_API +/* The _PyBytesWriter structure is big: it contains an embedded "stack buffer". + A _PyBytesWriter variable must be declared at the end of variables in a + function to optimize the memory allocation on the stack. */ +typedef struct { + /* bytes, bytearray or NULL (when the small buffer is used) */ + PyObject *buffer; + + /* Number of allocated size. */ + Py_ssize_t allocated; + + /* Minimum number of allocated bytes, + incremented by _PyBytesWriter_Prepare() */ + Py_ssize_t min_size; + + /* If non-zero, use a bytearray instead of a bytes object for buffer. */ + int use_bytearray; + + /* If non-zero, overallocate the buffer (default: 0). + This flag must be zero if use_bytearray is non-zero. */ + int overallocate; + + /* Stack buffer */ + int use_small_buffer; + char small_buffer[512]; +} _PyBytesWriter; + +/* Initialize a bytes writer + + By default, the overallocation is disabled. Set the overallocate attribute + to control the allocation of the buffer. */ +PyAPI_FUNC(void) _PyBytesWriter_Init(_PyBytesWriter *writer); + +/* Get the buffer content and reset the writer. + Return a bytes object, or a bytearray object if use_bytearray is non-zero. + Raise an exception and return NULL on error. */ +PyAPI_FUNC(PyObject *) _PyBytesWriter_Finish(_PyBytesWriter *writer, + void *str); + +/* Deallocate memory of a writer (clear its internal buffer). */ +PyAPI_FUNC(void) _PyBytesWriter_Dealloc(_PyBytesWriter *writer); + +/* Allocate the buffer to write size bytes. + Return the pointer to the beginning of buffer data. + Raise an exception and return NULL on error. */ +PyAPI_FUNC(void*) _PyBytesWriter_Alloc(_PyBytesWriter *writer, + Py_ssize_t size); + +/* Ensure that the buffer is large enough to write *size* bytes. + Add size to the writer minimum size (min_size attribute). + + str is the current pointer inside the buffer. + Return the updated current pointer inside the buffer. + Raise an exception and return NULL on error. */ +PyAPI_FUNC(void*) _PyBytesWriter_Prepare(_PyBytesWriter *writer, + void *str, + Py_ssize_t size); + +/* Resize the buffer to make it larger. + The new buffer may be larger than size bytes because of overallocation. + Return the updated current pointer inside the buffer. + Raise an exception and return NULL on error. + + Note: size must be greater than the number of allocated bytes in the writer. + + This function doesn't use the writer minimum size (min_size attribute). + + See also _PyBytesWriter_Prepare(). + */ +PyAPI_FUNC(void*) _PyBytesWriter_Resize(_PyBytesWriter *writer, + void *str, + Py_ssize_t size); + +/* Write bytes. + Raise an exception and return NULL on error. */ +PyAPI_FUNC(void*) _PyBytesWriter_WriteBytes(_PyBytesWriter *writer, + void *str, + const void *bytes, + Py_ssize_t size); +#endif /* Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_BYTESOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/cellobject.h b/qrenderdoc/3rdparty/python/include/cellobject.h new file mode 100644 index 000000000..a0aa4d947 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/cellobject.h @@ -0,0 +1,29 @@ +/* Cell object interface */ +#ifndef Py_LIMITED_API +#ifndef Py_CELLOBJECT_H +#define Py_CELLOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PyObject_HEAD + PyObject *ob_ref; /* Content of the cell or NULL when empty */ +} PyCellObject; + +PyAPI_DATA(PyTypeObject) PyCell_Type; + +#define PyCell_Check(op) (Py_TYPE(op) == &PyCell_Type) + +PyAPI_FUNC(PyObject *) PyCell_New(PyObject *); +PyAPI_FUNC(PyObject *) PyCell_Get(PyObject *); +PyAPI_FUNC(int) PyCell_Set(PyObject *, PyObject *); + +#define PyCell_GET(op) (((PyCellObject *)(op))->ob_ref) +#define PyCell_SET(op, v) (((PyCellObject *)(op))->ob_ref = v) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_TUPLEOBJECT_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/ceval.h b/qrenderdoc/3rdparty/python/include/ceval.h new file mode 100644 index 000000000..38d470999 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/ceval.h @@ -0,0 +1,236 @@ +#ifndef Py_CEVAL_H +#define Py_CEVAL_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Interface to random parts in ceval.c */ + +PyAPI_FUNC(PyObject *) PyEval_CallObjectWithKeywords( + PyObject *func, PyObject *args, PyObject *kwargs); + +/* Inline this */ +#define PyEval_CallObject(func,arg) \ + PyEval_CallObjectWithKeywords(func, arg, (PyObject *)NULL) + +PyAPI_FUNC(PyObject *) PyEval_CallFunction(PyObject *obj, + const char *format, ...); +PyAPI_FUNC(PyObject *) PyEval_CallMethod(PyObject *obj, + const char *methodname, + const char *format, ...); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) PyEval_SetProfile(Py_tracefunc, PyObject *); +PyAPI_FUNC(void) PyEval_SetTrace(Py_tracefunc, PyObject *); +PyAPI_FUNC(void) _PyEval_SetCoroutineWrapper(PyObject *); +PyAPI_FUNC(PyObject *) _PyEval_GetCoroutineWrapper(void); +PyAPI_FUNC(void) _PyEval_SetAsyncGenFirstiter(PyObject *); +PyAPI_FUNC(PyObject *) _PyEval_GetAsyncGenFirstiter(void); +PyAPI_FUNC(void) _PyEval_SetAsyncGenFinalizer(PyObject *); +PyAPI_FUNC(PyObject *) _PyEval_GetAsyncGenFinalizer(void); +#endif + +struct _frame; /* Avoid including frameobject.h */ + +PyAPI_FUNC(PyObject *) PyEval_GetBuiltins(void); +PyAPI_FUNC(PyObject *) PyEval_GetGlobals(void); +PyAPI_FUNC(PyObject *) PyEval_GetLocals(void); +PyAPI_FUNC(struct _frame *) PyEval_GetFrame(void); + +/* Look at the current frame's (if any) code's co_flags, and turn on + the corresponding compiler flags in cf->cf_flags. Return 1 if any + flag was set, else return 0. */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) PyEval_MergeCompilerFlags(PyCompilerFlags *cf); +#endif + +PyAPI_FUNC(int) Py_AddPendingCall(int (*func)(void *), void *arg); +PyAPI_FUNC(void) _PyEval_SignalReceived(void); +PyAPI_FUNC(int) Py_MakePendingCalls(void); + +/* Protection against deeply nested recursive calls + + In Python 3.0, this protection has two levels: + * normal anti-recursion protection is triggered when the recursion level + exceeds the current recursion limit. It raises a RecursionError, and sets + the "overflowed" flag in the thread state structure. This flag + temporarily *disables* the normal protection; this allows cleanup code + to potentially outgrow the recursion limit while processing the + RecursionError. + * "last chance" anti-recursion protection is triggered when the recursion + level exceeds "current recursion limit + 50". By construction, this + protection can only be triggered when the "overflowed" flag is set. It + means the cleanup code has itself gone into an infinite loop, or the + RecursionError has been mistakingly ignored. When this protection is + triggered, the interpreter aborts with a Fatal Error. + + In addition, the "overflowed" flag is automatically reset when the + recursion level drops below "current recursion limit - 50". This heuristic + is meant to ensure that the normal anti-recursion protection doesn't get + disabled too long. + + Please note: this scheme has its own limitations. See: + http://mail.python.org/pipermail/python-dev/2008-August/082106.html + for some observations. +*/ +PyAPI_FUNC(void) Py_SetRecursionLimit(int); +PyAPI_FUNC(int) Py_GetRecursionLimit(void); + +#define Py_EnterRecursiveCall(where) \ + (_Py_MakeRecCheck(PyThreadState_GET()->recursion_depth) && \ + _Py_CheckRecursiveCall(where)) +#define Py_LeaveRecursiveCall() \ + do{ if(_Py_MakeEndRecCheck(PyThreadState_GET()->recursion_depth)) \ + PyThreadState_GET()->overflowed = 0; \ + } while(0) +PyAPI_FUNC(int) _Py_CheckRecursiveCall(const char *where); +PyAPI_DATA(int) _Py_CheckRecursionLimit; + +#ifdef USE_STACKCHECK +/* With USE_STACKCHECK, we artificially decrement the recursion limit in order + to trigger regular stack checks in _Py_CheckRecursiveCall(), except if + the "overflowed" flag is set, in which case we need the true value + of _Py_CheckRecursionLimit for _Py_MakeEndRecCheck() to function properly. +*/ +# define _Py_MakeRecCheck(x) \ + (++(x) > (_Py_CheckRecursionLimit += PyThreadState_GET()->overflowed - 1)) +#else +# define _Py_MakeRecCheck(x) (++(x) > _Py_CheckRecursionLimit) +#endif + +/* Compute the "lower-water mark" for a recursion limit. When + * Py_LeaveRecursiveCall() is called with a recursion depth below this mark, + * the overflowed flag is reset to 0. */ +#define _Py_RecursionLimitLowerWaterMark(limit) \ + (((limit) > 200) \ + ? ((limit) - 50) \ + : (3 * ((limit) >> 2))) + +#define _Py_MakeEndRecCheck(x) \ + (--(x) < _Py_RecursionLimitLowerWaterMark(_Py_CheckRecursionLimit)) + +#define Py_ALLOW_RECURSION \ + do { unsigned char _old = PyThreadState_GET()->recursion_critical;\ + PyThreadState_GET()->recursion_critical = 1; + +#define Py_END_ALLOW_RECURSION \ + PyThreadState_GET()->recursion_critical = _old; \ + } while(0); + +PyAPI_FUNC(const char *) PyEval_GetFuncName(PyObject *); +PyAPI_FUNC(const char *) PyEval_GetFuncDesc(PyObject *); + +PyAPI_FUNC(PyObject *) PyEval_GetCallStats(PyObject *); +PyAPI_FUNC(PyObject *) PyEval_EvalFrame(struct _frame *); +PyAPI_FUNC(PyObject *) PyEval_EvalFrameEx(struct _frame *f, int exc); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyEval_EvalFrameDefault(struct _frame *f, int exc); +#endif + +/* Interface for threads. + + A module that plans to do a blocking system call (or something else + that lasts a long time and doesn't touch Python data) can allow other + threads to run as follows: + + ...preparations here... + Py_BEGIN_ALLOW_THREADS + ...blocking system call here... + Py_END_ALLOW_THREADS + ...interpret result here... + + The Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS pair expands to a + {}-surrounded block. + To leave the block in the middle (e.g., with return), you must insert + a line containing Py_BLOCK_THREADS before the return, e.g. + + if (...premature_exit...) { + Py_BLOCK_THREADS + PyErr_SetFromErrno(PyExc_IOError); + return NULL; + } + + An alternative is: + + Py_BLOCK_THREADS + if (...premature_exit...) { + PyErr_SetFromErrno(PyExc_IOError); + return NULL; + } + Py_UNBLOCK_THREADS + + For convenience, that the value of 'errno' is restored across + Py_END_ALLOW_THREADS and Py_BLOCK_THREADS. + + WARNING: NEVER NEST CALLS TO Py_BEGIN_ALLOW_THREADS AND + Py_END_ALLOW_THREADS!!! + + The function PyEval_InitThreads() should be called only from + init_thread() in "_threadmodule.c". + + Note that not yet all candidates have been converted to use this + mechanism! +*/ + +PyAPI_FUNC(PyThreadState *) PyEval_SaveThread(void); +PyAPI_FUNC(void) PyEval_RestoreThread(PyThreadState *); + +#ifdef WITH_THREAD + +PyAPI_FUNC(int) PyEval_ThreadsInitialized(void); +PyAPI_FUNC(void) PyEval_InitThreads(void); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyEval_FiniThreads(void); +#endif /* !Py_LIMITED_API */ +PyAPI_FUNC(void) PyEval_AcquireLock(void); +PyAPI_FUNC(void) PyEval_ReleaseLock(void); +PyAPI_FUNC(void) PyEval_AcquireThread(PyThreadState *tstate); +PyAPI_FUNC(void) PyEval_ReleaseThread(PyThreadState *tstate); +PyAPI_FUNC(void) PyEval_ReInitThreads(void); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyEval_SetSwitchInterval(unsigned long microseconds); +PyAPI_FUNC(unsigned long) _PyEval_GetSwitchInterval(void); +#endif + +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_ssize_t) _PyEval_RequestCodeExtraIndex(freefunc); +#endif + +#define Py_BEGIN_ALLOW_THREADS { \ + PyThreadState *_save; \ + _save = PyEval_SaveThread(); +#define Py_BLOCK_THREADS PyEval_RestoreThread(_save); +#define Py_UNBLOCK_THREADS _save = PyEval_SaveThread(); +#define Py_END_ALLOW_THREADS PyEval_RestoreThread(_save); \ + } + +#else /* !WITH_THREAD */ + +#define Py_BEGIN_ALLOW_THREADS { +#define Py_BLOCK_THREADS +#define Py_UNBLOCK_THREADS +#define Py_END_ALLOW_THREADS } + +#endif /* !WITH_THREAD */ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyEval_SliceIndex(PyObject *, Py_ssize_t *); +PyAPI_FUNC(int) _PyEval_SliceIndexNotNone(PyObject *, Py_ssize_t *); +PyAPI_FUNC(void) _PyEval_SignalAsyncExc(void); +#endif + +/* Masks and values used by FORMAT_VALUE opcode. */ +#define FVC_MASK 0x3 +#define FVC_NONE 0x0 +#define FVC_STR 0x1 +#define FVC_REPR 0x2 +#define FVC_ASCII 0x3 +#define FVS_MASK 0x4 +#define FVS_HAVE_SPEC 0x4 + +#ifdef __cplusplus +} +#endif +#endif /* !Py_CEVAL_H */ diff --git a/qrenderdoc/3rdparty/python/include/classobject.h b/qrenderdoc/3rdparty/python/include/classobject.h new file mode 100644 index 000000000..eeeb3e95a --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/classobject.h @@ -0,0 +1,58 @@ +/* Former class object interface -- now only bound methods are here */ + +/* Revealing some structures (not for general use) */ + +#ifndef Py_LIMITED_API +#ifndef Py_CLASSOBJECT_H +#define Py_CLASSOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PyObject_HEAD + PyObject *im_func; /* The callable object implementing the method */ + PyObject *im_self; /* The instance it is bound to */ + PyObject *im_weakreflist; /* List of weak references */ +} PyMethodObject; + +PyAPI_DATA(PyTypeObject) PyMethod_Type; + +#define PyMethod_Check(op) ((op)->ob_type == &PyMethod_Type) + +PyAPI_FUNC(PyObject *) PyMethod_New(PyObject *, PyObject *); + +PyAPI_FUNC(PyObject *) PyMethod_Function(PyObject *); +PyAPI_FUNC(PyObject *) PyMethod_Self(PyObject *); + +/* Macros for direct access to these values. Type checks are *not* + done, so use with care. */ +#define PyMethod_GET_FUNCTION(meth) \ + (((PyMethodObject *)meth) -> im_func) +#define PyMethod_GET_SELF(meth) \ + (((PyMethodObject *)meth) -> im_self) + +PyAPI_FUNC(int) PyMethod_ClearFreeList(void); + +typedef struct { + PyObject_HEAD + PyObject *func; +} PyInstanceMethodObject; + +PyAPI_DATA(PyTypeObject) PyInstanceMethod_Type; + +#define PyInstanceMethod_Check(op) ((op)->ob_type == &PyInstanceMethod_Type) + +PyAPI_FUNC(PyObject *) PyInstanceMethod_New(PyObject *); +PyAPI_FUNC(PyObject *) PyInstanceMethod_Function(PyObject *); + +/* Macros for direct access to these values. Type checks are *not* + done, so use with care. */ +#define PyInstanceMethod_GET_FUNCTION(meth) \ + (((PyInstanceMethodObject *)meth) -> func) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_CLASSOBJECT_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/code.h b/qrenderdoc/3rdparty/python/include/code.h new file mode 100644 index 000000000..c5fce3c96 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/code.h @@ -0,0 +1,157 @@ +/* Definitions for bytecode */ + +#ifndef Py_LIMITED_API +#ifndef Py_CODE_H +#define Py_CODE_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint16_t _Py_CODEUNIT; + +#ifdef WORDS_BIGENDIAN +# define _Py_OPCODE(word) ((word) >> 8) +# define _Py_OPARG(word) ((word) & 255) +#else +# define _Py_OPCODE(word) ((word) & 255) +# define _Py_OPARG(word) ((word) >> 8) +#endif + +/* Bytecode object */ +typedef struct { + PyObject_HEAD + int co_argcount; /* #arguments, except *args */ + int co_kwonlyargcount; /* #keyword only arguments */ + int co_nlocals; /* #local variables */ + int co_stacksize; /* #entries needed for evaluation stack */ + int co_flags; /* CO_..., see below */ + int co_firstlineno; /* first source line number */ + PyObject *co_code; /* instruction opcodes */ + PyObject *co_consts; /* list (constants used) */ + PyObject *co_names; /* list of strings (names used) */ + PyObject *co_varnames; /* tuple of strings (local variable names) */ + PyObject *co_freevars; /* tuple of strings (free variable names) */ + PyObject *co_cellvars; /* tuple of strings (cell variable names) */ + /* The rest aren't used in either hash or comparisons, except for co_name, + used in both. This is done to preserve the name and line number + for tracebacks and debuggers; otherwise, constant de-duplication + would collapse identical functions/lambdas defined on different lines. + */ + unsigned char *co_cell2arg; /* Maps cell vars which are arguments. */ + PyObject *co_filename; /* unicode (where it was loaded from) */ + PyObject *co_name; /* unicode (name, for reference) */ + PyObject *co_lnotab; /* string (encoding addr<->lineno mapping) See + Objects/lnotab_notes.txt for details. */ + void *co_zombieframe; /* for optimization only (see frameobject.c) */ + PyObject *co_weakreflist; /* to support weakrefs to code objects */ + /* Scratch space for extra data relating to the code object. + Type is a void* to keep the format private in codeobject.c to force + people to go through the proper APIs. */ + void *co_extra; +} PyCodeObject; + +/* Masks for co_flags above */ +#define CO_OPTIMIZED 0x0001 +#define CO_NEWLOCALS 0x0002 +#define CO_VARARGS 0x0004 +#define CO_VARKEYWORDS 0x0008 +#define CO_NESTED 0x0010 +#define CO_GENERATOR 0x0020 +/* The CO_NOFREE flag is set if there are no free or cell variables. + This information is redundant, but it allows a single flag test + to determine whether there is any extra work to be done when the + call frame it setup. +*/ +#define CO_NOFREE 0x0040 + +/* The CO_COROUTINE flag is set for coroutine functions (defined with + ``async def`` keywords) */ +#define CO_COROUTINE 0x0080 +#define CO_ITERABLE_COROUTINE 0x0100 +#define CO_ASYNC_GENERATOR 0x0200 + +/* These are no longer used. */ +#if 0 +#define CO_GENERATOR_ALLOWED 0x1000 +#endif +#define CO_FUTURE_DIVISION 0x2000 +#define CO_FUTURE_ABSOLUTE_IMPORT 0x4000 /* do absolute imports by default */ +#define CO_FUTURE_WITH_STATEMENT 0x8000 +#define CO_FUTURE_PRINT_FUNCTION 0x10000 +#define CO_FUTURE_UNICODE_LITERALS 0x20000 + +#define CO_FUTURE_BARRY_AS_BDFL 0x40000 +#define CO_FUTURE_GENERATOR_STOP 0x80000 + +/* This value is found in the co_cell2arg array when the associated cell + variable does not correspond to an argument. The maximum number of + arguments is 255 (indexed up to 254), so 255 work as a special flag.*/ +#define CO_CELL_NOT_AN_ARG 255 + +/* This should be defined if a future statement modifies the syntax. + For example, when a keyword is added. +*/ +#define PY_PARSER_REQUIRES_FUTURE_KEYWORD + +#define CO_MAXBLOCKS 20 /* Max static block nesting within a function */ + +PyAPI_DATA(PyTypeObject) PyCode_Type; + +#define PyCode_Check(op) (Py_TYPE(op) == &PyCode_Type) +#define PyCode_GetNumFree(op) (PyTuple_GET_SIZE((op)->co_freevars)) + +/* Public interface */ +PyAPI_FUNC(PyCodeObject *) PyCode_New( + int, int, int, int, int, PyObject *, PyObject *, + PyObject *, PyObject *, PyObject *, PyObject *, + PyObject *, PyObject *, int, PyObject *); + /* same as struct above */ + +/* Creates a new empty code object with the specified source location. */ +PyAPI_FUNC(PyCodeObject *) +PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno); + +/* Return the line number associated with the specified bytecode index + in this code object. If you just need the line number of a frame, + use PyFrame_GetLineNumber() instead. */ +PyAPI_FUNC(int) PyCode_Addr2Line(PyCodeObject *, int); + +/* for internal use only */ +typedef struct _addr_pair { + int ap_lower; + int ap_upper; +} PyAddrPair; + +#ifndef Py_LIMITED_API +/* Update *bounds to describe the first and one-past-the-last instructions in the + same line as lasti. Return the number of that line. +*/ +PyAPI_FUNC(int) _PyCode_CheckLineNumber(PyCodeObject* co, + int lasti, PyAddrPair *bounds); + +/* Create a comparable key used to compare constants taking in account the + * object type. It is used to make sure types are not coerced (e.g., float and + * complex) _and_ to distinguish 0.0 from -0.0 e.g. on IEEE platforms + * + * Return (type(obj), obj, ...): a tuple with variable size (at least 2 items) + * depending on the type and the value. The type is the first item to not + * compare bytes and str which can raise a BytesWarning exception. */ +PyAPI_FUNC(PyObject*) _PyCode_ConstantKey(PyObject *obj); +#endif + +PyAPI_FUNC(PyObject*) PyCode_Optimize(PyObject *code, PyObject* consts, + PyObject *names, PyObject *lnotab); + + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyCode_GetExtra(PyObject *code, Py_ssize_t index, + void **extra); +PyAPI_FUNC(int) _PyCode_SetExtra(PyObject *code, Py_ssize_t index, + void *extra); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_CODE_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/codecs.h b/qrenderdoc/3rdparty/python/include/codecs.h new file mode 100644 index 000000000..3ad0f2b5a --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/codecs.h @@ -0,0 +1,240 @@ +#ifndef Py_CODECREGISTRY_H +#define Py_CODECREGISTRY_H +#ifdef __cplusplus +extern "C" { +#endif + +/* ------------------------------------------------------------------------ + + Python Codec Registry and support functions + + +Written by Marc-Andre Lemburg (mal@lemburg.com). + +Copyright (c) Corporation for National Research Initiatives. + + ------------------------------------------------------------------------ */ + +/* Register a new codec search function. + + As side effect, this tries to load the encodings package, if not + yet done, to make sure that it is always first in the list of + search functions. + + The search_function's refcount is incremented by this function. */ + +PyAPI_FUNC(int) PyCodec_Register( + PyObject *search_function + ); + +/* Codec registry lookup API. + + Looks up the given encoding and returns a CodecInfo object with + function attributes which implement the different aspects of + processing the encoding. + + The encoding string is looked up converted to all lower-case + characters. This makes encodings looked up through this mechanism + effectively case-insensitive. + + If no codec is found, a KeyError is set and NULL returned. + + As side effect, this tries to load the encodings package, if not + yet done. This is part of the lazy load strategy for the encodings + package. + + */ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyCodec_Lookup( + const char *encoding + ); + +PyAPI_FUNC(int) _PyCodec_Forget( + const char *encoding + ); +#endif + +/* Codec registry encoding check API. + + Returns 1/0 depending on whether there is a registered codec for + the given encoding. + +*/ + +PyAPI_FUNC(int) PyCodec_KnownEncoding( + const char *encoding + ); + +/* Generic codec based encoding API. + + object is passed through the encoder function found for the given + encoding using the error handling method defined by errors. errors + may be NULL to use the default method defined for the codec. + + Raises a LookupError in case no encoder can be found. + + */ + +PyAPI_FUNC(PyObject *) PyCodec_Encode( + PyObject *object, + const char *encoding, + const char *errors + ); + +/* Generic codec based decoding API. + + object is passed through the decoder function found for the given + encoding using the error handling method defined by errors. errors + may be NULL to use the default method defined for the codec. + + Raises a LookupError in case no encoder can be found. + + */ + +PyAPI_FUNC(PyObject *) PyCodec_Decode( + PyObject *object, + const char *encoding, + const char *errors + ); + +#ifndef Py_LIMITED_API +/* Text codec specific encoding and decoding API. + + Checks the encoding against a list of codecs which do not + implement a str<->bytes encoding before attempting the + operation. + + Please note that these APIs are internal and should not + be used in Python C extensions. + + XXX (ncoghlan): should we make these, or something like them, public + in Python 3.5+? + + */ +PyAPI_FUNC(PyObject *) _PyCodec_LookupTextEncoding( + const char *encoding, + const char *alternate_command + ); + +PyAPI_FUNC(PyObject *) _PyCodec_EncodeText( + PyObject *object, + const char *encoding, + const char *errors + ); + +PyAPI_FUNC(PyObject *) _PyCodec_DecodeText( + PyObject *object, + const char *encoding, + const char *errors + ); + +/* These two aren't actually text encoding specific, but _io.TextIOWrapper + * is the only current API consumer. + */ +PyAPI_FUNC(PyObject *) _PyCodecInfo_GetIncrementalDecoder( + PyObject *codec_info, + const char *errors + ); + +PyAPI_FUNC(PyObject *) _PyCodecInfo_GetIncrementalEncoder( + PyObject *codec_info, + const char *errors + ); +#endif + + + +/* --- Codec Lookup APIs -------------------------------------------------- + + All APIs return a codec object with incremented refcount and are + based on _PyCodec_Lookup(). The same comments w/r to the encoding + name also apply to these APIs. + +*/ + +/* Get an encoder function for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_Encoder( + const char *encoding + ); + +/* Get a decoder function for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_Decoder( + const char *encoding + ); + +/* Get an IncrementalEncoder object for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_IncrementalEncoder( + const char *encoding, + const char *errors + ); + +/* Get an IncrementalDecoder object function for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_IncrementalDecoder( + const char *encoding, + const char *errors + ); + +/* Get a StreamReader factory function for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_StreamReader( + const char *encoding, + PyObject *stream, + const char *errors + ); + +/* Get a StreamWriter factory function for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_StreamWriter( + const char *encoding, + PyObject *stream, + const char *errors + ); + +/* Unicode encoding error handling callback registry API */ + +/* Register the error handling callback function error under the given + name. This function will be called by the codec when it encounters + unencodable characters/undecodable bytes and doesn't know the + callback name, when name is specified as the error parameter + in the call to the encode/decode function. + Return 0 on success, -1 on error */ +PyAPI_FUNC(int) PyCodec_RegisterError(const char *name, PyObject *error); + +/* Lookup the error handling callback function registered under the given + name. As a special case NULL can be passed, in which case + the error handling callback for "strict" will be returned. */ +PyAPI_FUNC(PyObject *) PyCodec_LookupError(const char *name); + +/* raise exc as an exception */ +PyAPI_FUNC(PyObject *) PyCodec_StrictErrors(PyObject *exc); + +/* ignore the unicode error, skipping the faulty input */ +PyAPI_FUNC(PyObject *) PyCodec_IgnoreErrors(PyObject *exc); + +/* replace the unicode encode error with ? or U+FFFD */ +PyAPI_FUNC(PyObject *) PyCodec_ReplaceErrors(PyObject *exc); + +/* replace the unicode encode error with XML character references */ +PyAPI_FUNC(PyObject *) PyCodec_XMLCharRefReplaceErrors(PyObject *exc); + +/* replace the unicode encode error with backslash escapes (\x, \u and \U) */ +PyAPI_FUNC(PyObject *) PyCodec_BackslashReplaceErrors(PyObject *exc); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* replace the unicode encode error with backslash escapes (\N, \x, \u and \U) */ +PyAPI_FUNC(PyObject *) PyCodec_NameReplaceErrors(PyObject *exc); +#endif + +#ifndef Py_LIMITED_API +PyAPI_DATA(const char *) Py_hexdigits; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_CODECREGISTRY_H */ diff --git a/qrenderdoc/3rdparty/python/include/compile.h b/qrenderdoc/3rdparty/python/include/compile.h new file mode 100644 index 000000000..ecd8dc1d1 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/compile.h @@ -0,0 +1,73 @@ +#ifndef Py_COMPILE_H +#define Py_COMPILE_H + +#ifndef Py_LIMITED_API +#include "code.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Public interface */ +struct _node; /* Declare the existence of this type */ +PyAPI_FUNC(PyCodeObject *) PyNode_Compile(struct _node *, const char *); + +/* Future feature support */ + +typedef struct { + int ff_features; /* flags set by future statements */ + int ff_lineno; /* line number of last future statement */ +} PyFutureFeatures; + +#define FUTURE_NESTED_SCOPES "nested_scopes" +#define FUTURE_GENERATORS "generators" +#define FUTURE_DIVISION "division" +#define FUTURE_ABSOLUTE_IMPORT "absolute_import" +#define FUTURE_WITH_STATEMENT "with_statement" +#define FUTURE_PRINT_FUNCTION "print_function" +#define FUTURE_UNICODE_LITERALS "unicode_literals" +#define FUTURE_BARRY_AS_BDFL "barry_as_FLUFL" +#define FUTURE_GENERATOR_STOP "generator_stop" + +struct _mod; /* Declare the existence of this type */ +#define PyAST_Compile(mod, s, f, ar) PyAST_CompileEx(mod, s, f, -1, ar) +PyAPI_FUNC(PyCodeObject *) PyAST_CompileEx( + struct _mod *mod, + const char *filename, /* decoded from the filesystem encoding */ + PyCompilerFlags *flags, + int optimize, + PyArena *arena); +PyAPI_FUNC(PyCodeObject *) PyAST_CompileObject( + struct _mod *mod, + PyObject *filename, + PyCompilerFlags *flags, + int optimize, + PyArena *arena); +PyAPI_FUNC(PyFutureFeatures *) PyFuture_FromAST( + struct _mod * mod, + const char *filename /* decoded from the filesystem encoding */ + ); +PyAPI_FUNC(PyFutureFeatures *) PyFuture_FromASTObject( + struct _mod * mod, + PyObject *filename + ); + +/* _Py_Mangle is defined in compile.c */ +PyAPI_FUNC(PyObject*) _Py_Mangle(PyObject *p, PyObject *name); + +#define PY_INVALID_STACK_EFFECT INT_MAX +PyAPI_FUNC(int) PyCompile_OpcodeStackEffect(int opcode, int oparg); + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_LIMITED_API */ + +/* These definitions must match corresponding definitions in graminit.h. + There's code in compile.c that checks that they are the same. */ +#define Py_single_input 256 +#define Py_file_input 257 +#define Py_eval_input 258 + +#endif /* !Py_COMPILE_H */ diff --git a/qrenderdoc/3rdparty/python/include/complexobject.h b/qrenderdoc/3rdparty/python/include/complexobject.h new file mode 100644 index 000000000..cb8c52c58 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/complexobject.h @@ -0,0 +1,69 @@ +/* Complex number structure */ + +#ifndef Py_COMPLEXOBJECT_H +#define Py_COMPLEXOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +typedef struct { + double real; + double imag; +} Py_complex; + +/* Operations on complex numbers from complexmodule.c */ + +PyAPI_FUNC(Py_complex) _Py_c_sum(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_diff(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_neg(Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_prod(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_quot(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_pow(Py_complex, Py_complex); +PyAPI_FUNC(double) _Py_c_abs(Py_complex); +#endif + +/* Complex object interface */ + +/* +PyComplexObject represents a complex number with double-precision +real and imaginary parts. +*/ +#ifndef Py_LIMITED_API +typedef struct { + PyObject_HEAD + Py_complex cval; +} PyComplexObject; +#endif + +PyAPI_DATA(PyTypeObject) PyComplex_Type; + +#define PyComplex_Check(op) PyObject_TypeCheck(op, &PyComplex_Type) +#define PyComplex_CheckExact(op) (Py_TYPE(op) == &PyComplex_Type) + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyComplex_FromCComplex(Py_complex); +#endif +PyAPI_FUNC(PyObject *) PyComplex_FromDoubles(double real, double imag); + +PyAPI_FUNC(double) PyComplex_RealAsDouble(PyObject *op); +PyAPI_FUNC(double) PyComplex_ImagAsDouble(PyObject *op); +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_complex) PyComplex_AsCComplex(PyObject *op); +#endif + +/* Format the object based on the format_spec, as defined in PEP 3101 + (Advanced String Formatting). */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyComplex_FormatAdvancedWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + PyObject *format_spec, + Py_ssize_t start, + Py_ssize_t end); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_COMPLEXOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/datetime.h b/qrenderdoc/3rdparty/python/include/datetime.h new file mode 100644 index 000000000..3bf35cbb7 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/datetime.h @@ -0,0 +1,260 @@ +/* datetime.h + */ +#ifndef Py_LIMITED_API +#ifndef DATETIME_H +#define DATETIME_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Fields are packed into successive bytes, each viewed as unsigned and + * big-endian, unless otherwise noted: + * + * byte offset + * 0 year 2 bytes, 1-9999 + * 2 month 1 byte, 1-12 + * 3 day 1 byte, 1-31 + * 4 hour 1 byte, 0-23 + * 5 minute 1 byte, 0-59 + * 6 second 1 byte, 0-59 + * 7 usecond 3 bytes, 0-999999 + * 10 + */ + +/* # of bytes for year, month, and day. */ +#define _PyDateTime_DATE_DATASIZE 4 + +/* # of bytes for hour, minute, second, and usecond. */ +#define _PyDateTime_TIME_DATASIZE 6 + +/* # of bytes for year, month, day, hour, minute, second, and usecond. */ +#define _PyDateTime_DATETIME_DATASIZE 10 + + +typedef struct +{ + PyObject_HEAD + Py_hash_t hashcode; /* -1 when unknown */ + int days; /* -MAX_DELTA_DAYS <= days <= MAX_DELTA_DAYS */ + int seconds; /* 0 <= seconds < 24*3600 is invariant */ + int microseconds; /* 0 <= microseconds < 1000000 is invariant */ +} PyDateTime_Delta; + +typedef struct +{ + PyObject_HEAD /* a pure abstract base class */ +} PyDateTime_TZInfo; + + +/* The datetime and time types have hashcodes, and an optional tzinfo member, + * present if and only if hastzinfo is true. + */ +#define _PyTZINFO_HEAD \ + PyObject_HEAD \ + Py_hash_t hashcode; \ + char hastzinfo; /* boolean flag */ + +/* No _PyDateTime_BaseTZInfo is allocated; it's just to have something + * convenient to cast to, when getting at the hastzinfo member of objects + * starting with _PyTZINFO_HEAD. + */ +typedef struct +{ + _PyTZINFO_HEAD +} _PyDateTime_BaseTZInfo; + +/* All time objects are of PyDateTime_TimeType, but that can be allocated + * in two ways, with or without a tzinfo member. Without is the same as + * tzinfo == None, but consumes less memory. _PyDateTime_BaseTime is an + * internal struct used to allocate the right amount of space for the + * "without" case. + */ +#define _PyDateTime_TIMEHEAD \ + _PyTZINFO_HEAD \ + unsigned char data[_PyDateTime_TIME_DATASIZE]; + +typedef struct +{ + _PyDateTime_TIMEHEAD +} _PyDateTime_BaseTime; /* hastzinfo false */ + +typedef struct +{ + _PyDateTime_TIMEHEAD + unsigned char fold; + PyObject *tzinfo; +} PyDateTime_Time; /* hastzinfo true */ + + +/* All datetime objects are of PyDateTime_DateTimeType, but that can be + * allocated in two ways too, just like for time objects above. In addition, + * the plain date type is a base class for datetime, so it must also have + * a hastzinfo member (although it's unused there). + */ +typedef struct +{ + _PyTZINFO_HEAD + unsigned char data[_PyDateTime_DATE_DATASIZE]; +} PyDateTime_Date; + +#define _PyDateTime_DATETIMEHEAD \ + _PyTZINFO_HEAD \ + unsigned char data[_PyDateTime_DATETIME_DATASIZE]; + +typedef struct +{ + _PyDateTime_DATETIMEHEAD +} _PyDateTime_BaseDateTime; /* hastzinfo false */ + +typedef struct +{ + _PyDateTime_DATETIMEHEAD + unsigned char fold; + PyObject *tzinfo; +} PyDateTime_DateTime; /* hastzinfo true */ + + +/* Apply for date and datetime instances. */ +#define PyDateTime_GET_YEAR(o) ((((PyDateTime_Date*)o)->data[0] << 8) | \ + ((PyDateTime_Date*)o)->data[1]) +#define PyDateTime_GET_MONTH(o) (((PyDateTime_Date*)o)->data[2]) +#define PyDateTime_GET_DAY(o) (((PyDateTime_Date*)o)->data[3]) + +#define PyDateTime_DATE_GET_HOUR(o) (((PyDateTime_DateTime*)o)->data[4]) +#define PyDateTime_DATE_GET_MINUTE(o) (((PyDateTime_DateTime*)o)->data[5]) +#define PyDateTime_DATE_GET_SECOND(o) (((PyDateTime_DateTime*)o)->data[6]) +#define PyDateTime_DATE_GET_MICROSECOND(o) \ + ((((PyDateTime_DateTime*)o)->data[7] << 16) | \ + (((PyDateTime_DateTime*)o)->data[8] << 8) | \ + ((PyDateTime_DateTime*)o)->data[9]) +#define PyDateTime_DATE_GET_FOLD(o) (((PyDateTime_DateTime*)o)->fold) + +/* Apply for time instances. */ +#define PyDateTime_TIME_GET_HOUR(o) (((PyDateTime_Time*)o)->data[0]) +#define PyDateTime_TIME_GET_MINUTE(o) (((PyDateTime_Time*)o)->data[1]) +#define PyDateTime_TIME_GET_SECOND(o) (((PyDateTime_Time*)o)->data[2]) +#define PyDateTime_TIME_GET_MICROSECOND(o) \ + ((((PyDateTime_Time*)o)->data[3] << 16) | \ + (((PyDateTime_Time*)o)->data[4] << 8) | \ + ((PyDateTime_Time*)o)->data[5]) +#define PyDateTime_TIME_GET_FOLD(o) (((PyDateTime_Time*)o)->fold) + +/* Apply for time delta instances */ +#define PyDateTime_DELTA_GET_DAYS(o) (((PyDateTime_Delta*)o)->days) +#define PyDateTime_DELTA_GET_SECONDS(o) (((PyDateTime_Delta*)o)->seconds) +#define PyDateTime_DELTA_GET_MICROSECONDS(o) \ + (((PyDateTime_Delta*)o)->microseconds) + + +/* Define structure for C API. */ +typedef struct { + /* type objects */ + PyTypeObject *DateType; + PyTypeObject *DateTimeType; + PyTypeObject *TimeType; + PyTypeObject *DeltaType; + PyTypeObject *TZInfoType; + + /* constructors */ + PyObject *(*Date_FromDate)(int, int, int, PyTypeObject*); + PyObject *(*DateTime_FromDateAndTime)(int, int, int, int, int, int, int, + PyObject*, PyTypeObject*); + PyObject *(*Time_FromTime)(int, int, int, int, PyObject*, PyTypeObject*); + PyObject *(*Delta_FromDelta)(int, int, int, int, PyTypeObject*); + + /* constructors for the DB API */ + PyObject *(*DateTime_FromTimestamp)(PyObject*, PyObject*, PyObject*); + PyObject *(*Date_FromTimestamp)(PyObject*, PyObject*); + + /* PEP 495 constructors */ + PyObject *(*DateTime_FromDateAndTimeAndFold)(int, int, int, int, int, int, int, + PyObject*, int, PyTypeObject*); + PyObject *(*Time_FromTimeAndFold)(int, int, int, int, PyObject*, int, PyTypeObject*); + +} PyDateTime_CAPI; + +#define PyDateTime_CAPSULE_NAME "datetime.datetime_CAPI" + + +#ifdef Py_BUILD_CORE + +/* Macros for type checking when building the Python core. */ +#define PyDate_Check(op) PyObject_TypeCheck(op, &PyDateTime_DateType) +#define PyDate_CheckExact(op) (Py_TYPE(op) == &PyDateTime_DateType) + +#define PyDateTime_Check(op) PyObject_TypeCheck(op, &PyDateTime_DateTimeType) +#define PyDateTime_CheckExact(op) (Py_TYPE(op) == &PyDateTime_DateTimeType) + +#define PyTime_Check(op) PyObject_TypeCheck(op, &PyDateTime_TimeType) +#define PyTime_CheckExact(op) (Py_TYPE(op) == &PyDateTime_TimeType) + +#define PyDelta_Check(op) PyObject_TypeCheck(op, &PyDateTime_DeltaType) +#define PyDelta_CheckExact(op) (Py_TYPE(op) == &PyDateTime_DeltaType) + +#define PyTZInfo_Check(op) PyObject_TypeCheck(op, &PyDateTime_TZInfoType) +#define PyTZInfo_CheckExact(op) (Py_TYPE(op) == &PyDateTime_TZInfoType) + +#else + +/* Define global variable for the C API and a macro for setting it. */ +static PyDateTime_CAPI *PyDateTimeAPI = NULL; + +#define PyDateTime_IMPORT \ + PyDateTimeAPI = (PyDateTime_CAPI *)PyCapsule_Import(PyDateTime_CAPSULE_NAME, 0) + +/* Macros for type checking when not building the Python core. */ +#define PyDate_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DateType) +#define PyDate_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DateType) + +#define PyDateTime_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DateTimeType) +#define PyDateTime_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DateTimeType) + +#define PyTime_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->TimeType) +#define PyTime_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->TimeType) + +#define PyDelta_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DeltaType) +#define PyDelta_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DeltaType) + +#define PyTZInfo_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->TZInfoType) +#define PyTZInfo_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->TZInfoType) + +/* Macros for accessing constructors in a simplified fashion. */ +#define PyDate_FromDate(year, month, day) \ + PyDateTimeAPI->Date_FromDate(year, month, day, PyDateTimeAPI->DateType) + +#define PyDateTime_FromDateAndTime(year, month, day, hour, min, sec, usec) \ + PyDateTimeAPI->DateTime_FromDateAndTime(year, month, day, hour, \ + min, sec, usec, Py_None, PyDateTimeAPI->DateTimeType) + +#define PyDateTime_FromDateAndTimeAndFold(year, month, day, hour, min, sec, usec, fold) \ + PyDateTimeAPI->DateTime_FromDateAndTimeAndFold(year, month, day, hour, \ + min, sec, usec, Py_None, fold, PyDateTimeAPI->DateTimeType) + +#define PyTime_FromTime(hour, minute, second, usecond) \ + PyDateTimeAPI->Time_FromTime(hour, minute, second, usecond, \ + Py_None, PyDateTimeAPI->TimeType) + +#define PyTime_FromTimeAndFold(hour, minute, second, usecond, fold) \ + PyDateTimeAPI->Time_FromTimeAndFold(hour, minute, second, usecond, \ + Py_None, fold, PyDateTimeAPI->TimeType) + +#define PyDelta_FromDSU(days, seconds, useconds) \ + PyDateTimeAPI->Delta_FromDelta(days, seconds, useconds, 1, \ + PyDateTimeAPI->DeltaType) + +/* Macros supporting the DB API. */ +#define PyDateTime_FromTimestamp(args) \ + PyDateTimeAPI->DateTime_FromTimestamp( \ + (PyObject*) (PyDateTimeAPI->DateTimeType), args, NULL) + +#define PyDate_FromTimestamp(args) \ + PyDateTimeAPI->Date_FromTimestamp( \ + (PyObject*) (PyDateTimeAPI->DateType), args) + +#endif /* Py_BUILD_CORE */ + +#ifdef __cplusplus +} +#endif +#endif +#endif /* !Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/descrobject.h b/qrenderdoc/3rdparty/python/include/descrobject.h new file mode 100644 index 000000000..8f3e84c36 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/descrobject.h @@ -0,0 +1,107 @@ +/* Descriptors */ +#ifndef Py_DESCROBJECT_H +#define Py_DESCROBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef PyObject *(*getter)(PyObject *, void *); +typedef int (*setter)(PyObject *, PyObject *, void *); + +typedef struct PyGetSetDef { + char *name; + getter get; + setter set; + char *doc; + void *closure; +} PyGetSetDef; + +#ifndef Py_LIMITED_API +typedef PyObject *(*wrapperfunc)(PyObject *self, PyObject *args, + void *wrapped); + +typedef PyObject *(*wrapperfunc_kwds)(PyObject *self, PyObject *args, + void *wrapped, PyObject *kwds); + +struct wrapperbase { + char *name; + int offset; + void *function; + wrapperfunc wrapper; + char *doc; + int flags; + PyObject *name_strobj; +}; + +/* Flags for above struct */ +#define PyWrapperFlag_KEYWORDS 1 /* wrapper function takes keyword args */ + +/* Various kinds of descriptor objects */ + +typedef struct { + PyObject_HEAD + PyTypeObject *d_type; + PyObject *d_name; + PyObject *d_qualname; +} PyDescrObject; + +#define PyDescr_COMMON PyDescrObject d_common + +#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) +#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name) + +typedef struct { + PyDescr_COMMON; + PyMethodDef *d_method; +} PyMethodDescrObject; + +typedef struct { + PyDescr_COMMON; + struct PyMemberDef *d_member; +} PyMemberDescrObject; + +typedef struct { + PyDescr_COMMON; + PyGetSetDef *d_getset; +} PyGetSetDescrObject; + +typedef struct { + PyDescr_COMMON; + struct wrapperbase *d_base; + void *d_wrapped; /* This can be any function pointer */ +} PyWrapperDescrObject; +#endif /* Py_LIMITED_API */ + +PyAPI_DATA(PyTypeObject) PyClassMethodDescr_Type; +PyAPI_DATA(PyTypeObject) PyGetSetDescr_Type; +PyAPI_DATA(PyTypeObject) PyMemberDescr_Type; +PyAPI_DATA(PyTypeObject) PyMethodDescr_Type; +PyAPI_DATA(PyTypeObject) PyWrapperDescr_Type; +PyAPI_DATA(PyTypeObject) PyDictProxy_Type; +#ifndef Py_LIMITED_API +PyAPI_DATA(PyTypeObject) _PyMethodWrapper_Type; +#endif /* Py_LIMITED_API */ + +PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *); +PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *); +struct PyMemberDef; /* forward declaration for following prototype */ +PyAPI_FUNC(PyObject *) PyDescr_NewMember(PyTypeObject *, + struct PyMemberDef *); +PyAPI_FUNC(PyObject *) PyDescr_NewGetSet(PyTypeObject *, + struct PyGetSetDef *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyDescr_NewWrapper(PyTypeObject *, + struct wrapperbase *, void *); +#define PyDescr_IsData(d) (Py_TYPE(d)->tp_descr_set != NULL) +#endif + +PyAPI_FUNC(PyObject *) PyDictProxy_New(PyObject *); +PyAPI_FUNC(PyObject *) PyWrapper_New(PyObject *, PyObject *); + + +PyAPI_DATA(PyTypeObject) PyProperty_Type; +#ifdef __cplusplus +} +#endif +#endif /* !Py_DESCROBJECT_H */ + diff --git a/qrenderdoc/3rdparty/python/include/dictobject.h b/qrenderdoc/3rdparty/python/include/dictobject.h new file mode 100644 index 000000000..c4f2e2f5b --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/dictobject.h @@ -0,0 +1,177 @@ +#ifndef Py_DICTOBJECT_H +#define Py_DICTOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Dictionary object type -- mapping from hashable object to object */ + +/* The distribution includes a separate file, Objects/dictnotes.txt, + describing explorations into dictionary design and optimization. + It covers typical dictionary use patterns, the parameters for + tuning dictionaries, and several ideas for possible optimizations. +*/ + +#ifndef Py_LIMITED_API + +typedef struct _dictkeysobject PyDictKeysObject; + +/* The ma_values pointer is NULL for a combined table + * or points to an array of PyObject* for a split table + */ +typedef struct { + PyObject_HEAD + + /* Number of items in the dictionary */ + Py_ssize_t ma_used; + + /* Dictionary version: globally unique, value change each time + the dictionary is modified */ + uint64_t ma_version_tag; + + PyDictKeysObject *ma_keys; + + /* If ma_values is NULL, the table is "combined": keys and values + are stored in ma_keys. + + If ma_values is not NULL, the table is splitted: + keys are stored in ma_keys and values are stored in ma_values */ + PyObject **ma_values; +} PyDictObject; + +typedef struct { + PyObject_HEAD + PyDictObject *dv_dict; +} _PyDictViewObject; + +#endif /* Py_LIMITED_API */ + +PyAPI_DATA(PyTypeObject) PyDict_Type; +PyAPI_DATA(PyTypeObject) PyDictIterKey_Type; +PyAPI_DATA(PyTypeObject) PyDictIterValue_Type; +PyAPI_DATA(PyTypeObject) PyDictIterItem_Type; +PyAPI_DATA(PyTypeObject) PyDictKeys_Type; +PyAPI_DATA(PyTypeObject) PyDictItems_Type; +PyAPI_DATA(PyTypeObject) PyDictValues_Type; + +#define PyDict_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS) +#define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type) +#define PyDictKeys_Check(op) PyObject_TypeCheck(op, &PyDictKeys_Type) +#define PyDictItems_Check(op) PyObject_TypeCheck(op, &PyDictItems_Type) +#define PyDictValues_Check(op) PyObject_TypeCheck(op, &PyDictValues_Type) +/* This excludes Values, since they are not sets. */ +# define PyDictViewSet_Check(op) \ + (PyDictKeys_Check(op) || PyDictItems_Check(op)) + + +PyAPI_FUNC(PyObject *) PyDict_New(void); +PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyDict_GetItem_KnownHash(PyObject *mp, PyObject *key, + Py_hash_t hash); +#endif +PyAPI_FUNC(PyObject *) PyDict_GetItemWithError(PyObject *mp, PyObject *key); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyDict_GetItemIdWithError(PyObject *dp, + struct _Py_Identifier *key); +PyAPI_FUNC(PyObject *) PyDict_SetDefault( + PyObject *mp, PyObject *key, PyObject *defaultobj); +#endif +PyAPI_FUNC(int) PyDict_SetItem(PyObject *mp, PyObject *key, PyObject *item); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyDict_SetItem_KnownHash(PyObject *mp, PyObject *key, + PyObject *item, Py_hash_t hash); +#endif +PyAPI_FUNC(int) PyDict_DelItem(PyObject *mp, PyObject *key); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyDict_DelItem_KnownHash(PyObject *mp, PyObject *key, + Py_hash_t hash); +PyAPI_FUNC(int) _PyDict_DelItemIf(PyObject *mp, PyObject *key, + int (*predicate)(PyObject *value)); +#endif +PyAPI_FUNC(void) PyDict_Clear(PyObject *mp); +PyAPI_FUNC(int) PyDict_Next( + PyObject *mp, Py_ssize_t *pos, PyObject **key, PyObject **value); +#ifndef Py_LIMITED_API +PyDictKeysObject *_PyDict_NewKeysForClass(void); +PyAPI_FUNC(PyObject *) PyObject_GenericGetDict(PyObject *, void *); +PyAPI_FUNC(int) _PyDict_Next( + PyObject *mp, Py_ssize_t *pos, PyObject **key, PyObject **value, Py_hash_t *hash); +PyObject *_PyDictView_New(PyObject *, PyTypeObject *); +#endif +PyAPI_FUNC(PyObject *) PyDict_Keys(PyObject *mp); +PyAPI_FUNC(PyObject *) PyDict_Values(PyObject *mp); +PyAPI_FUNC(PyObject *) PyDict_Items(PyObject *mp); +PyAPI_FUNC(Py_ssize_t) PyDict_Size(PyObject *mp); +PyAPI_FUNC(PyObject *) PyDict_Copy(PyObject *mp); +PyAPI_FUNC(int) PyDict_Contains(PyObject *mp, PyObject *key); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyDict_Contains(PyObject *mp, PyObject *key, Py_hash_t hash); +PyAPI_FUNC(PyObject *) _PyDict_NewPresized(Py_ssize_t minused); +PyAPI_FUNC(void) _PyDict_MaybeUntrack(PyObject *mp); +PyAPI_FUNC(int) _PyDict_HasOnlyStringKeys(PyObject *mp); +Py_ssize_t _PyDict_KeysSize(PyDictKeysObject *keys); +Py_ssize_t _PyDict_SizeOf(PyDictObject *); +PyAPI_FUNC(PyObject *) _PyDict_Pop(PyObject *, PyObject *, PyObject *); +PyObject *_PyDict_Pop_KnownHash(PyObject *, PyObject *, Py_hash_t, PyObject *); +PyObject *_PyDict_FromKeys(PyObject *, PyObject *, PyObject *); +#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL) + +PyAPI_FUNC(int) PyDict_ClearFreeList(void); +#endif + +/* PyDict_Update(mp, other) is equivalent to PyDict_Merge(mp, other, 1). */ +PyAPI_FUNC(int) PyDict_Update(PyObject *mp, PyObject *other); + +/* PyDict_Merge updates/merges from a mapping object (an object that + supports PyMapping_Keys() and PyObject_GetItem()). If override is true, + the last occurrence of a key wins, else the first. The Python + dict.update(other) is equivalent to PyDict_Merge(dict, other, 1). +*/ +PyAPI_FUNC(int) PyDict_Merge(PyObject *mp, + PyObject *other, + int override); + +#ifndef Py_LIMITED_API +/* Like PyDict_Merge, but override can be 0, 1 or 2. If override is 0, + the first occurrence of a key wins, if override is 1, the last occurrence + of a key wins, if override is 2, a KeyError with conflicting key as + argument is raised. +*/ +PyAPI_FUNC(int) _PyDict_MergeEx(PyObject *mp, PyObject *other, int override); +PyAPI_FUNC(PyObject *) _PyDictView_Intersect(PyObject* self, PyObject *other); +#endif + +/* PyDict_MergeFromSeq2 updates/merges from an iterable object producing + iterable objects of length 2. If override is true, the last occurrence + of a key wins, else the first. The Python dict constructor dict(seq2) + is equivalent to dict={}; PyDict_MergeFromSeq(dict, seq2, 1). +*/ +PyAPI_FUNC(int) PyDict_MergeFromSeq2(PyObject *d, + PyObject *seq2, + int override); + +PyAPI_FUNC(PyObject *) PyDict_GetItemString(PyObject *dp, const char *key); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyDict_GetItemId(PyObject *dp, struct _Py_Identifier *key); +#endif /* !Py_LIMITED_API */ +PyAPI_FUNC(int) PyDict_SetItemString(PyObject *dp, const char *key, PyObject *item); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyDict_SetItemId(PyObject *dp, struct _Py_Identifier *key, PyObject *item); +#endif /* !Py_LIMITED_API */ +PyAPI_FUNC(int) PyDict_DelItemString(PyObject *dp, const char *key); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyDict_DelItemId(PyObject *mp, struct _Py_Identifier *key); +PyAPI_FUNC(void) _PyDict_DebugMallocStats(FILE *out); + +int _PyObjectDict_SetItem(PyTypeObject *tp, PyObject **dictptr, PyObject *name, PyObject *value); +PyObject *_PyDict_LoadGlobal(PyDictObject *, PyDictObject *, PyObject *); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_DICTOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/dtoa.h b/qrenderdoc/3rdparty/python/include/dtoa.h new file mode 100644 index 000000000..9bfb6251d --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/dtoa.h @@ -0,0 +1,19 @@ +#ifndef Py_LIMITED_API +#ifndef PY_NO_SHORT_FLOAT_REPR +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(double) _Py_dg_strtod(const char *str, char **ptr); +PyAPI_FUNC(char *) _Py_dg_dtoa(double d, int mode, int ndigits, + int *decpt, int *sign, char **rve); +PyAPI_FUNC(void) _Py_dg_freedtoa(char *s); +PyAPI_FUNC(double) _Py_dg_stdnan(int sign); +PyAPI_FUNC(double) _Py_dg_infinity(int sign); + + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/qrenderdoc/3rdparty/python/include/dynamic_annotations.h b/qrenderdoc/3rdparty/python/include/dynamic_annotations.h new file mode 100644 index 000000000..0bd1a833c --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/dynamic_annotations.h @@ -0,0 +1,499 @@ +/* Copyright (c) 2008-2009, Google 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. + * * Neither the name of Google 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. + * + * --- + * Author: Kostya Serebryany + * Copied to CPython by Jeffrey Yasskin, with all macros renamed to + * start with _Py_ to avoid colliding with users embedding Python, and + * with deprecated macros removed. + */ + +/* This file defines dynamic annotations for use with dynamic analysis + tool such as valgrind, PIN, etc. + + Dynamic annotation is a source code annotation that affects + the generated code (that is, the annotation is not a comment). + Each such annotation is attached to a particular + instruction and/or to a particular object (address) in the program. + + The annotations that should be used by users are macros in all upper-case + (e.g., _Py_ANNOTATE_NEW_MEMORY). + + Actual implementation of these macros may differ depending on the + dynamic analysis tool being used. + + See http://code.google.com/p/data-race-test/ for more information. + + This file supports the following dynamic analysis tools: + - None (DYNAMIC_ANNOTATIONS_ENABLED is not defined or zero). + Macros are defined empty. + - ThreadSanitizer, Helgrind, DRD (DYNAMIC_ANNOTATIONS_ENABLED is 1). + Macros are defined as calls to non-inlinable empty functions + that are intercepted by Valgrind. */ + +#ifndef __DYNAMIC_ANNOTATIONS_H__ +#define __DYNAMIC_ANNOTATIONS_H__ + +#ifndef DYNAMIC_ANNOTATIONS_ENABLED +# define DYNAMIC_ANNOTATIONS_ENABLED 0 +#endif + +#if DYNAMIC_ANNOTATIONS_ENABLED != 0 + + /* ------------------------------------------------------------- + Annotations useful when implementing condition variables such as CondVar, + using conditional critical sections (Await/LockWhen) and when constructing + user-defined synchronization mechanisms. + + The annotations _Py_ANNOTATE_HAPPENS_BEFORE() and + _Py_ANNOTATE_HAPPENS_AFTER() can be used to define happens-before arcs in + user-defined synchronization mechanisms: the race detector will infer an + arc from the former to the latter when they share the same argument + pointer. + + Example 1 (reference counting): + + void Unref() { + _Py_ANNOTATE_HAPPENS_BEFORE(&refcount_); + if (AtomicDecrementByOne(&refcount_) == 0) { + _Py_ANNOTATE_HAPPENS_AFTER(&refcount_); + delete this; + } + } + + Example 2 (message queue): + + void MyQueue::Put(Type *e) { + MutexLock lock(&mu_); + _Py_ANNOTATE_HAPPENS_BEFORE(e); + PutElementIntoMyQueue(e); + } + + Type *MyQueue::Get() { + MutexLock lock(&mu_); + Type *e = GetElementFromMyQueue(); + _Py_ANNOTATE_HAPPENS_AFTER(e); + return e; + } + + Note: when possible, please use the existing reference counting and message + queue implementations instead of inventing new ones. */ + + /* Report that wait on the condition variable at address "cv" has succeeded + and the lock at address "lock" is held. */ +#define _Py_ANNOTATE_CONDVAR_LOCK_WAIT(cv, lock) \ + AnnotateCondVarWait(__FILE__, __LINE__, cv, lock) + + /* Report that wait on the condition variable at "cv" has succeeded. Variant + w/o lock. */ +#define _Py_ANNOTATE_CONDVAR_WAIT(cv) \ + AnnotateCondVarWait(__FILE__, __LINE__, cv, NULL) + + /* Report that we are about to signal on the condition variable at address + "cv". */ +#define _Py_ANNOTATE_CONDVAR_SIGNAL(cv) \ + AnnotateCondVarSignal(__FILE__, __LINE__, cv) + + /* Report that we are about to signal_all on the condition variable at "cv". */ +#define _Py_ANNOTATE_CONDVAR_SIGNAL_ALL(cv) \ + AnnotateCondVarSignalAll(__FILE__, __LINE__, cv) + + /* Annotations for user-defined synchronization mechanisms. */ +#define _Py_ANNOTATE_HAPPENS_BEFORE(obj) _Py_ANNOTATE_CONDVAR_SIGNAL(obj) +#define _Py_ANNOTATE_HAPPENS_AFTER(obj) _Py_ANNOTATE_CONDVAR_WAIT(obj) + + /* Report that the bytes in the range [pointer, pointer+size) are about + to be published safely. The race checker will create a happens-before + arc from the call _Py_ANNOTATE_PUBLISH_MEMORY_RANGE(pointer, size) to + subsequent accesses to this memory. + Note: this annotation may not work properly if the race detector uses + sampling, i.e. does not observe all memory accesses. + */ +#define _Py_ANNOTATE_PUBLISH_MEMORY_RANGE(pointer, size) \ + AnnotatePublishMemoryRange(__FILE__, __LINE__, pointer, size) + + /* Instruct the tool to create a happens-before arc between mu->Unlock() and + mu->Lock(). This annotation may slow down the race detector and hide real + races. Normally it is used only when it would be difficult to annotate each + of the mutex's critical sections individually using the annotations above. + This annotation makes sense only for hybrid race detectors. For pure + happens-before detectors this is a no-op. For more details see + http://code.google.com/p/data-race-test/wiki/PureHappensBeforeVsHybrid . */ +#define _Py_ANNOTATE_PURE_HAPPENS_BEFORE_MUTEX(mu) \ + AnnotateMutexIsUsedAsCondVar(__FILE__, __LINE__, mu) + + /* ------------------------------------------------------------- + Annotations useful when defining memory allocators, or when memory that + was protected in one way starts to be protected in another. */ + + /* Report that a new memory at "address" of size "size" has been allocated. + This might be used when the memory has been retrieved from a free list and + is about to be reused, or when the locking discipline for a variable + changes. */ +#define _Py_ANNOTATE_NEW_MEMORY(address, size) \ + AnnotateNewMemory(__FILE__, __LINE__, address, size) + + /* ------------------------------------------------------------- + Annotations useful when defining FIFO queues that transfer data between + threads. */ + + /* Report that the producer-consumer queue (such as ProducerConsumerQueue) at + address "pcq" has been created. The _Py_ANNOTATE_PCQ_* annotations should + be used only for FIFO queues. For non-FIFO queues use + _Py_ANNOTATE_HAPPENS_BEFORE (for put) and _Py_ANNOTATE_HAPPENS_AFTER (for + get). */ +#define _Py_ANNOTATE_PCQ_CREATE(pcq) \ + AnnotatePCQCreate(__FILE__, __LINE__, pcq) + + /* Report that the queue at address "pcq" is about to be destroyed. */ +#define _Py_ANNOTATE_PCQ_DESTROY(pcq) \ + AnnotatePCQDestroy(__FILE__, __LINE__, pcq) + + /* Report that we are about to put an element into a FIFO queue at address + "pcq". */ +#define _Py_ANNOTATE_PCQ_PUT(pcq) \ + AnnotatePCQPut(__FILE__, __LINE__, pcq) + + /* Report that we've just got an element from a FIFO queue at address "pcq". */ +#define _Py_ANNOTATE_PCQ_GET(pcq) \ + AnnotatePCQGet(__FILE__, __LINE__, pcq) + + /* ------------------------------------------------------------- + Annotations that suppress errors. It is usually better to express the + program's synchronization using the other annotations, but these can + be used when all else fails. */ + + /* Report that we may have a benign race at "pointer", with size + "sizeof(*(pointer))". "pointer" must be a non-void* pointer. Insert at the + point where "pointer" has been allocated, preferably close to the point + where the race happens. See also _Py_ANNOTATE_BENIGN_RACE_STATIC. */ +#define _Py_ANNOTATE_BENIGN_RACE(pointer, description) \ + AnnotateBenignRaceSized(__FILE__, __LINE__, pointer, \ + sizeof(*(pointer)), description) + + /* Same as _Py_ANNOTATE_BENIGN_RACE(address, description), but applies to + the memory range [address, address+size). */ +#define _Py_ANNOTATE_BENIGN_RACE_SIZED(address, size, description) \ + AnnotateBenignRaceSized(__FILE__, __LINE__, address, size, description) + + /* Request the analysis tool to ignore all reads in the current thread + until _Py_ANNOTATE_IGNORE_READS_END is called. + Useful to ignore intentional racey reads, while still checking + other reads and all writes. + See also _Py_ANNOTATE_UNPROTECTED_READ. */ +#define _Py_ANNOTATE_IGNORE_READS_BEGIN() \ + AnnotateIgnoreReadsBegin(__FILE__, __LINE__) + + /* Stop ignoring reads. */ +#define _Py_ANNOTATE_IGNORE_READS_END() \ + AnnotateIgnoreReadsEnd(__FILE__, __LINE__) + + /* Similar to _Py_ANNOTATE_IGNORE_READS_BEGIN, but ignore writes. */ +#define _Py_ANNOTATE_IGNORE_WRITES_BEGIN() \ + AnnotateIgnoreWritesBegin(__FILE__, __LINE__) + + /* Stop ignoring writes. */ +#define _Py_ANNOTATE_IGNORE_WRITES_END() \ + AnnotateIgnoreWritesEnd(__FILE__, __LINE__) + + /* Start ignoring all memory accesses (reads and writes). */ +#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN() \ + do {\ + _Py_ANNOTATE_IGNORE_READS_BEGIN();\ + _Py_ANNOTATE_IGNORE_WRITES_BEGIN();\ + }while(0)\ + + /* Stop ignoring all memory accesses. */ +#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_END() \ + do {\ + _Py_ANNOTATE_IGNORE_WRITES_END();\ + _Py_ANNOTATE_IGNORE_READS_END();\ + }while(0)\ + + /* Similar to _Py_ANNOTATE_IGNORE_READS_BEGIN, but ignore synchronization events: + RWLOCK* and CONDVAR*. */ +#define _Py_ANNOTATE_IGNORE_SYNC_BEGIN() \ + AnnotateIgnoreSyncBegin(__FILE__, __LINE__) + + /* Stop ignoring sync events. */ +#define _Py_ANNOTATE_IGNORE_SYNC_END() \ + AnnotateIgnoreSyncEnd(__FILE__, __LINE__) + + + /* Enable (enable!=0) or disable (enable==0) race detection for all threads. + This annotation could be useful if you want to skip expensive race analysis + during some period of program execution, e.g. during initialization. */ +#define _Py_ANNOTATE_ENABLE_RACE_DETECTION(enable) \ + AnnotateEnableRaceDetection(__FILE__, __LINE__, enable) + + /* ------------------------------------------------------------- + Annotations useful for debugging. */ + + /* Request to trace every access to "address". */ +#define _Py_ANNOTATE_TRACE_MEMORY(address) \ + AnnotateTraceMemory(__FILE__, __LINE__, address) + + /* Report the current thread name to a race detector. */ +#define _Py_ANNOTATE_THREAD_NAME(name) \ + AnnotateThreadName(__FILE__, __LINE__, name) + + /* ------------------------------------------------------------- + Annotations useful when implementing locks. They are not + normally needed by modules that merely use locks. + The "lock" argument is a pointer to the lock object. */ + + /* Report that a lock has been created at address "lock". */ +#define _Py_ANNOTATE_RWLOCK_CREATE(lock) \ + AnnotateRWLockCreate(__FILE__, __LINE__, lock) + + /* Report that the lock at address "lock" is about to be destroyed. */ +#define _Py_ANNOTATE_RWLOCK_DESTROY(lock) \ + AnnotateRWLockDestroy(__FILE__, __LINE__, lock) + + /* Report that the lock at address "lock" has been acquired. + is_w=1 for writer lock, is_w=0 for reader lock. */ +#define _Py_ANNOTATE_RWLOCK_ACQUIRED(lock, is_w) \ + AnnotateRWLockAcquired(__FILE__, __LINE__, lock, is_w) + + /* Report that the lock at address "lock" is about to be released. */ +#define _Py_ANNOTATE_RWLOCK_RELEASED(lock, is_w) \ + AnnotateRWLockReleased(__FILE__, __LINE__, lock, is_w) + + /* ------------------------------------------------------------- + Annotations useful when implementing barriers. They are not + normally needed by modules that merely use barriers. + The "barrier" argument is a pointer to the barrier object. */ + + /* Report that the "barrier" has been initialized with initial "count". + If 'reinitialization_allowed' is true, initialization is allowed to happen + multiple times w/o calling barrier_destroy() */ +#define _Py_ANNOTATE_BARRIER_INIT(barrier, count, reinitialization_allowed) \ + AnnotateBarrierInit(__FILE__, __LINE__, barrier, count, \ + reinitialization_allowed) + + /* Report that we are about to enter barrier_wait("barrier"). */ +#define _Py_ANNOTATE_BARRIER_WAIT_BEFORE(barrier) \ + AnnotateBarrierWaitBefore(__FILE__, __LINE__, barrier) + + /* Report that we just exited barrier_wait("barrier"). */ +#define _Py_ANNOTATE_BARRIER_WAIT_AFTER(barrier) \ + AnnotateBarrierWaitAfter(__FILE__, __LINE__, barrier) + + /* Report that the "barrier" has been destroyed. */ +#define _Py_ANNOTATE_BARRIER_DESTROY(barrier) \ + AnnotateBarrierDestroy(__FILE__, __LINE__, barrier) + + /* ------------------------------------------------------------- + Annotations useful for testing race detectors. */ + + /* Report that we expect a race on the variable at "address". + Use only in unit tests for a race detector. */ +#define _Py_ANNOTATE_EXPECT_RACE(address, description) \ + AnnotateExpectRace(__FILE__, __LINE__, address, description) + + /* A no-op. Insert where you like to test the interceptors. */ +#define _Py_ANNOTATE_NO_OP(arg) \ + AnnotateNoOp(__FILE__, __LINE__, arg) + + /* Force the race detector to flush its state. The actual effect depends on + * the implementation of the detector. */ +#define _Py_ANNOTATE_FLUSH_STATE() \ + AnnotateFlushState(__FILE__, __LINE__) + + +#else /* DYNAMIC_ANNOTATIONS_ENABLED == 0 */ + +#define _Py_ANNOTATE_RWLOCK_CREATE(lock) /* empty */ +#define _Py_ANNOTATE_RWLOCK_DESTROY(lock) /* empty */ +#define _Py_ANNOTATE_RWLOCK_ACQUIRED(lock, is_w) /* empty */ +#define _Py_ANNOTATE_RWLOCK_RELEASED(lock, is_w) /* empty */ +#define _Py_ANNOTATE_BARRIER_INIT(barrier, count, reinitialization_allowed) /* */ +#define _Py_ANNOTATE_BARRIER_WAIT_BEFORE(barrier) /* empty */ +#define _Py_ANNOTATE_BARRIER_WAIT_AFTER(barrier) /* empty */ +#define _Py_ANNOTATE_BARRIER_DESTROY(barrier) /* empty */ +#define _Py_ANNOTATE_CONDVAR_LOCK_WAIT(cv, lock) /* empty */ +#define _Py_ANNOTATE_CONDVAR_WAIT(cv) /* empty */ +#define _Py_ANNOTATE_CONDVAR_SIGNAL(cv) /* empty */ +#define _Py_ANNOTATE_CONDVAR_SIGNAL_ALL(cv) /* empty */ +#define _Py_ANNOTATE_HAPPENS_BEFORE(obj) /* empty */ +#define _Py_ANNOTATE_HAPPENS_AFTER(obj) /* empty */ +#define _Py_ANNOTATE_PUBLISH_MEMORY_RANGE(address, size) /* empty */ +#define _Py_ANNOTATE_UNPUBLISH_MEMORY_RANGE(address, size) /* empty */ +#define _Py_ANNOTATE_SWAP_MEMORY_RANGE(address, size) /* empty */ +#define _Py_ANNOTATE_PCQ_CREATE(pcq) /* empty */ +#define _Py_ANNOTATE_PCQ_DESTROY(pcq) /* empty */ +#define _Py_ANNOTATE_PCQ_PUT(pcq) /* empty */ +#define _Py_ANNOTATE_PCQ_GET(pcq) /* empty */ +#define _Py_ANNOTATE_NEW_MEMORY(address, size) /* empty */ +#define _Py_ANNOTATE_EXPECT_RACE(address, description) /* empty */ +#define _Py_ANNOTATE_BENIGN_RACE(address, description) /* empty */ +#define _Py_ANNOTATE_BENIGN_RACE_SIZED(address, size, description) /* empty */ +#define _Py_ANNOTATE_PURE_HAPPENS_BEFORE_MUTEX(mu) /* empty */ +#define _Py_ANNOTATE_MUTEX_IS_USED_AS_CONDVAR(mu) /* empty */ +#define _Py_ANNOTATE_TRACE_MEMORY(arg) /* empty */ +#define _Py_ANNOTATE_THREAD_NAME(name) /* empty */ +#define _Py_ANNOTATE_IGNORE_READS_BEGIN() /* empty */ +#define _Py_ANNOTATE_IGNORE_READS_END() /* empty */ +#define _Py_ANNOTATE_IGNORE_WRITES_BEGIN() /* empty */ +#define _Py_ANNOTATE_IGNORE_WRITES_END() /* empty */ +#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN() /* empty */ +#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_END() /* empty */ +#define _Py_ANNOTATE_IGNORE_SYNC_BEGIN() /* empty */ +#define _Py_ANNOTATE_IGNORE_SYNC_END() /* empty */ +#define _Py_ANNOTATE_ENABLE_RACE_DETECTION(enable) /* empty */ +#define _Py_ANNOTATE_NO_OP(arg) /* empty */ +#define _Py_ANNOTATE_FLUSH_STATE() /* empty */ + +#endif /* DYNAMIC_ANNOTATIONS_ENABLED */ + +/* Use the macros above rather than using these functions directly. */ +#ifdef __cplusplus +extern "C" { +#endif +void AnnotateRWLockCreate(const char *file, int line, + const volatile void *lock); +void AnnotateRWLockDestroy(const char *file, int line, + const volatile void *lock); +void AnnotateRWLockAcquired(const char *file, int line, + const volatile void *lock, long is_w); +void AnnotateRWLockReleased(const char *file, int line, + const volatile void *lock, long is_w); +void AnnotateBarrierInit(const char *file, int line, + const volatile void *barrier, long count, + long reinitialization_allowed); +void AnnotateBarrierWaitBefore(const char *file, int line, + const volatile void *barrier); +void AnnotateBarrierWaitAfter(const char *file, int line, + const volatile void *barrier); +void AnnotateBarrierDestroy(const char *file, int line, + const volatile void *barrier); +void AnnotateCondVarWait(const char *file, int line, + const volatile void *cv, + const volatile void *lock); +void AnnotateCondVarSignal(const char *file, int line, + const volatile void *cv); +void AnnotateCondVarSignalAll(const char *file, int line, + const volatile void *cv); +void AnnotatePublishMemoryRange(const char *file, int line, + const volatile void *address, + long size); +void AnnotateUnpublishMemoryRange(const char *file, int line, + const volatile void *address, + long size); +void AnnotatePCQCreate(const char *file, int line, + const volatile void *pcq); +void AnnotatePCQDestroy(const char *file, int line, + const volatile void *pcq); +void AnnotatePCQPut(const char *file, int line, + const volatile void *pcq); +void AnnotatePCQGet(const char *file, int line, + const volatile void *pcq); +void AnnotateNewMemory(const char *file, int line, + const volatile void *address, + long size); +void AnnotateExpectRace(const char *file, int line, + const volatile void *address, + const char *description); +void AnnotateBenignRace(const char *file, int line, + const volatile void *address, + const char *description); +void AnnotateBenignRaceSized(const char *file, int line, + const volatile void *address, + long size, + const char *description); +void AnnotateMutexIsUsedAsCondVar(const char *file, int line, + const volatile void *mu); +void AnnotateTraceMemory(const char *file, int line, + const volatile void *arg); +void AnnotateThreadName(const char *file, int line, + const char *name); +void AnnotateIgnoreReadsBegin(const char *file, int line); +void AnnotateIgnoreReadsEnd(const char *file, int line); +void AnnotateIgnoreWritesBegin(const char *file, int line); +void AnnotateIgnoreWritesEnd(const char *file, int line); +void AnnotateEnableRaceDetection(const char *file, int line, int enable); +void AnnotateNoOp(const char *file, int line, + const volatile void *arg); +void AnnotateFlushState(const char *file, int line); + +/* Return non-zero value if running under valgrind. + + If "valgrind.h" is included into dynamic_annotations.c, + the regular valgrind mechanism will be used. + See http://valgrind.org/docs/manual/manual-core-adv.html about + RUNNING_ON_VALGRIND and other valgrind "client requests". + The file "valgrind.h" may be obtained by doing + svn co svn://svn.valgrind.org/valgrind/trunk/include + + If for some reason you can't use "valgrind.h" or want to fake valgrind, + there are two ways to make this function return non-zero: + - Use environment variable: export RUNNING_ON_VALGRIND=1 + - Make your tool intercept the function RunningOnValgrind() and + change its return value. + */ +int RunningOnValgrind(void); + +#ifdef __cplusplus +} +#endif + +#if DYNAMIC_ANNOTATIONS_ENABLED != 0 && defined(__cplusplus) + + /* _Py_ANNOTATE_UNPROTECTED_READ is the preferred way to annotate racey reads. + + Instead of doing + _Py_ANNOTATE_IGNORE_READS_BEGIN(); + ... = x; + _Py_ANNOTATE_IGNORE_READS_END(); + one can use + ... = _Py_ANNOTATE_UNPROTECTED_READ(x); */ + template + inline T _Py_ANNOTATE_UNPROTECTED_READ(const volatile T &x) { + _Py_ANNOTATE_IGNORE_READS_BEGIN(); + T res = x; + _Py_ANNOTATE_IGNORE_READS_END(); + return res; + } + /* Apply _Py_ANNOTATE_BENIGN_RACE_SIZED to a static variable. */ +#define _Py_ANNOTATE_BENIGN_RACE_STATIC(static_var, description) \ + namespace { \ + class static_var ## _annotator { \ + public: \ + static_var ## _annotator() { \ + _Py_ANNOTATE_BENIGN_RACE_SIZED(&static_var, \ + sizeof(static_var), \ + # static_var ": " description); \ + } \ + }; \ + static static_var ## _annotator the ## static_var ## _annotator;\ + } +#else /* DYNAMIC_ANNOTATIONS_ENABLED == 0 */ + +#define _Py_ANNOTATE_UNPROTECTED_READ(x) (x) +#define _Py_ANNOTATE_BENIGN_RACE_STATIC(static_var, description) /* empty */ + +#endif /* DYNAMIC_ANNOTATIONS_ENABLED */ + +#endif /* __DYNAMIC_ANNOTATIONS_H__ */ diff --git a/qrenderdoc/3rdparty/python/include/enumobject.h b/qrenderdoc/3rdparty/python/include/enumobject.h new file mode 100644 index 000000000..c14dbfc8c --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/enumobject.h @@ -0,0 +1,17 @@ +#ifndef Py_ENUMOBJECT_H +#define Py_ENUMOBJECT_H + +/* Enumerate Object */ + +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_DATA(PyTypeObject) PyEnum_Type; +PyAPI_DATA(PyTypeObject) PyReversed_Type; + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_ENUMOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/errcode.h b/qrenderdoc/3rdparty/python/include/errcode.h new file mode 100644 index 000000000..5946686c6 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/errcode.h @@ -0,0 +1,38 @@ +#ifndef Py_ERRCODE_H +#define Py_ERRCODE_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Error codes passed around between file input, tokenizer, parser and + interpreter. This is necessary so we can turn them into Python + exceptions at a higher level. Note that some errors have a + slightly different meaning when passed from the tokenizer to the + parser than when passed from the parser to the interpreter; e.g. + the parser only returns E_EOF when it hits EOF immediately, and it + never returns E_OK. */ + +#define E_OK 10 /* No error */ +#define E_EOF 11 /* End Of File */ +#define E_INTR 12 /* Interrupted */ +#define E_TOKEN 13 /* Bad token */ +#define E_SYNTAX 14 /* Syntax error */ +#define E_NOMEM 15 /* Ran out of memory */ +#define E_DONE 16 /* Parsing complete */ +#define E_ERROR 17 /* Execution error */ +#define E_TABSPACE 18 /* Inconsistent mixing of tabs and spaces */ +#define E_OVERFLOW 19 /* Node had too many children */ +#define E_TOODEEP 20 /* Too many indentation levels */ +#define E_DEDENT 21 /* No matching outer block for dedent */ +#define E_DECODE 22 /* Error in decoding into Unicode */ +#define E_EOFS 23 /* EOF in triple-quoted string */ +#define E_EOLS 24 /* EOL in single-quoted string */ +#define E_LINECONT 25 /* Unexpected characters after a line continuation */ +#define E_IDENTIFIER 26 /* Invalid characters in identifier */ +#define E_BADSINGLE 27 /* Ill-formed single statement input */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_ERRCODE_H */ diff --git a/qrenderdoc/3rdparty/python/include/eval.h b/qrenderdoc/3rdparty/python/include/eval.h new file mode 100644 index 000000000..a1c6e817d --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/eval.h @@ -0,0 +1,27 @@ + +/* Interface to execute compiled code */ + +#ifndef Py_EVAL_H +#define Py_EVAL_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(PyObject *) PyEval_EvalCode(PyObject *, PyObject *, PyObject *); + +PyAPI_FUNC(PyObject *) PyEval_EvalCodeEx(PyObject *co, + PyObject *globals, + PyObject *locals, + PyObject **args, int argc, + PyObject **kwds, int kwdc, + PyObject **defs, int defc, + PyObject *kwdefs, PyObject *closure); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyEval_CallTracing(PyObject *func, PyObject *args); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_EVAL_H */ diff --git a/qrenderdoc/3rdparty/python/include/fileobject.h b/qrenderdoc/3rdparty/python/include/fileobject.h new file mode 100644 index 000000000..1dde17e1e --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/fileobject.h @@ -0,0 +1,50 @@ +/* File object interface (what's left of it -- see io.py) */ + +#ifndef Py_FILEOBJECT_H +#define Py_FILEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#define PY_STDIOTEXTMODE "b" + +PyAPI_FUNC(PyObject *) PyFile_FromFd(int, const char *, const char *, int, + const char *, const char *, + const char *, int); +PyAPI_FUNC(PyObject *) PyFile_GetLine(PyObject *, int); +PyAPI_FUNC(int) PyFile_WriteObject(PyObject *, PyObject *, int); +PyAPI_FUNC(int) PyFile_WriteString(const char *, PyObject *); +PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(char *) Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *); +#endif + +/* The default encoding used by the platform file system APIs + If non-NULL, this is different than the default encoding for strings +*/ +PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding; +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 +PyAPI_DATA(const char *) Py_FileSystemDefaultEncodeErrors; +#endif +PyAPI_DATA(int) Py_HasFileSystemDefaultEncoding; + +/* Internal API + + The std printer acts as a preliminary sys.stderr until the new io + infrastructure is in place. */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyFile_NewStdPrinter(int); +PyAPI_DATA(PyTypeObject) PyStdPrinter_Type; +#endif /* Py_LIMITED_API */ + +/* A routine to check if a file descriptor can be select()-ed. */ +#ifdef HAVE_SELECT + #define _PyIsSelectable_fd(FD) ((unsigned int)(FD) < (unsigned int)FD_SETSIZE) +#else + #define _PyIsSelectable_fd(FD) (1) +#endif /* HAVE_SELECT */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_FILEOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/fileutils.h b/qrenderdoc/3rdparty/python/include/fileutils.h new file mode 100644 index 000000000..900c70faa --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/fileutils.h @@ -0,0 +1,128 @@ +#ifndef Py_FILEUTILS_H +#define Py_FILEUTILS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +PyAPI_FUNC(wchar_t *) Py_DecodeLocale( + const char *arg, + size_t *size); + +PyAPI_FUNC(char*) Py_EncodeLocale( + const wchar_t *text, + size_t *error_pos); +#endif + +#ifndef Py_LIMITED_API + +PyAPI_FUNC(PyObject *) _Py_device_encoding(int); + +#ifdef MS_WINDOWS +struct _Py_stat_struct { + unsigned long st_dev; + uint64_t st_ino; + unsigned short st_mode; + int st_nlink; + int st_uid; + int st_gid; + unsigned long st_rdev; + __int64 st_size; + time_t st_atime; + int st_atime_nsec; + time_t st_mtime; + int st_mtime_nsec; + time_t st_ctime; + int st_ctime_nsec; + unsigned long st_file_attributes; +}; +#else +# define _Py_stat_struct stat +#endif + +PyAPI_FUNC(int) _Py_fstat( + int fd, + struct _Py_stat_struct *status); + +PyAPI_FUNC(int) _Py_fstat_noraise( + int fd, + struct _Py_stat_struct *status); + +PyAPI_FUNC(int) _Py_stat( + PyObject *path, + struct stat *status); + +PyAPI_FUNC(int) _Py_open( + const char *pathname, + int flags); + +PyAPI_FUNC(int) _Py_open_noraise( + const char *pathname, + int flags); + +PyAPI_FUNC(FILE *) _Py_wfopen( + const wchar_t *path, + const wchar_t *mode); + +PyAPI_FUNC(FILE*) _Py_fopen( + const char *pathname, + const char *mode); + +PyAPI_FUNC(FILE*) _Py_fopen_obj( + PyObject *path, + const char *mode); + +PyAPI_FUNC(Py_ssize_t) _Py_read( + int fd, + void *buf, + size_t count); + +PyAPI_FUNC(Py_ssize_t) _Py_write( + int fd, + const void *buf, + size_t count); + +PyAPI_FUNC(Py_ssize_t) _Py_write_noraise( + int fd, + const void *buf, + size_t count); + +#ifdef HAVE_READLINK +PyAPI_FUNC(int) _Py_wreadlink( + const wchar_t *path, + wchar_t *buf, + size_t bufsiz); +#endif + +#ifdef HAVE_REALPATH +PyAPI_FUNC(wchar_t*) _Py_wrealpath( + const wchar_t *path, + wchar_t *resolved_path, + size_t resolved_path_size); +#endif + +PyAPI_FUNC(wchar_t*) _Py_wgetcwd( + wchar_t *buf, + size_t size); + +PyAPI_FUNC(int) _Py_get_inheritable(int fd); + +PyAPI_FUNC(int) _Py_set_inheritable(int fd, int inheritable, + int *atomic_flag_works); + +PyAPI_FUNC(int) _Py_dup(int fd); + +#ifndef MS_WINDOWS +PyAPI_FUNC(int) _Py_get_blocking(int fd); + +PyAPI_FUNC(int) _Py_set_blocking(int fd, int blocking); +#endif /* !MS_WINDOWS */ + +#endif /* Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_FILEUTILS_H */ diff --git a/qrenderdoc/3rdparty/python/include/floatobject.h b/qrenderdoc/3rdparty/python/include/floatobject.h new file mode 100644 index 000000000..f1044d64c --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/floatobject.h @@ -0,0 +1,130 @@ + +/* Float object interface */ + +/* +PyFloatObject represents a (double precision) floating point number. +*/ + +#ifndef Py_FLOATOBJECT_H +#define Py_FLOATOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +typedef struct { + PyObject_HEAD + double ob_fval; +} PyFloatObject; +#endif + +PyAPI_DATA(PyTypeObject) PyFloat_Type; + +#define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type) +#define PyFloat_CheckExact(op) (Py_TYPE(op) == &PyFloat_Type) + +#ifdef Py_NAN +#define Py_RETURN_NAN return PyFloat_FromDouble(Py_NAN) +#endif + +#define Py_RETURN_INF(sign) do \ + if (copysign(1., sign) == 1.) { \ + return PyFloat_FromDouble(Py_HUGE_VAL); \ + } else { \ + return PyFloat_FromDouble(-Py_HUGE_VAL); \ + } while(0) + +PyAPI_FUNC(double) PyFloat_GetMax(void); +PyAPI_FUNC(double) PyFloat_GetMin(void); +PyAPI_FUNC(PyObject *) PyFloat_GetInfo(void); + +/* Return Python float from string PyObject. */ +PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*); + +/* Return Python float from C double. */ +PyAPI_FUNC(PyObject *) PyFloat_FromDouble(double); + +/* Extract C double from Python float. The macro version trades safety for + speed. */ +PyAPI_FUNC(double) PyFloat_AsDouble(PyObject *); +#ifndef Py_LIMITED_API +#define PyFloat_AS_DOUBLE(op) (((PyFloatObject *)(op))->ob_fval) +#endif + +#ifndef Py_LIMITED_API +/* _PyFloat_{Pack,Unpack}{4,8} + * + * The struct and pickle (at least) modules need an efficient platform- + * independent way to store floating-point values as byte strings. + * The Pack routines produce a string from a C double, and the Unpack + * routines produce a C double from such a string. The suffix (4 or 8) + * specifies the number of bytes in the string. + * + * On platforms that appear to use (see _PyFloat_Init()) IEEE-754 formats + * these functions work by copying bits. On other platforms, the formats the + * 4- byte format is identical to the IEEE-754 single precision format, and + * the 8-byte format to the IEEE-754 double precision format, although the + * packing of INFs and NaNs (if such things exist on the platform) isn't + * handled correctly, and attempting to unpack a string containing an IEEE + * INF or NaN will raise an exception. + * + * On non-IEEE platforms with more precision, or larger dynamic range, than + * 754 supports, not all values can be packed; on non-IEEE platforms with less + * precision, or smaller dynamic range, not all values can be unpacked. What + * happens in such cases is partly accidental (alas). + */ + +/* The pack routines write 2, 4 or 8 bytes, starting at p. le is a bool + * argument, true if you want the string in little-endian format (exponent + * last, at p+1, p+3 or p+7), false if you want big-endian format (exponent + * first, at p). + * Return value: 0 if all is OK, -1 if error (and an exception is + * set, most likely OverflowError). + * There are two problems on non-IEEE platforms: + * 1): What this does is undefined if x is a NaN or infinity. + * 2): -0.0 and +0.0 produce the same string. + */ +PyAPI_FUNC(int) _PyFloat_Pack2(double x, unsigned char *p, int le); +PyAPI_FUNC(int) _PyFloat_Pack4(double x, unsigned char *p, int le); +PyAPI_FUNC(int) _PyFloat_Pack8(double x, unsigned char *p, int le); + +/* Needed for the old way for marshal to store a floating point number. + Returns the string length copied into p, -1 on error. + */ +PyAPI_FUNC(int) _PyFloat_Repr(double x, char *p, size_t len); + +/* Used to get the important decimal digits of a double */ +PyAPI_FUNC(int) _PyFloat_Digits(char *buf, double v, int *signum); +PyAPI_FUNC(void) _PyFloat_DigitsInit(void); + +/* The unpack routines read 2, 4 or 8 bytes, starting at p. le is a bool + * argument, true if the string is in little-endian format (exponent + * last, at p+1, p+3 or p+7), false if big-endian (exponent first, at p). + * Return value: The unpacked double. On error, this is -1.0 and + * PyErr_Occurred() is true (and an exception is set, most likely + * OverflowError). Note that on a non-IEEE platform this will refuse + * to unpack a string that represents a NaN or infinity. + */ +PyAPI_FUNC(double) _PyFloat_Unpack2(const unsigned char *p, int le); +PyAPI_FUNC(double) _PyFloat_Unpack4(const unsigned char *p, int le); +PyAPI_FUNC(double) _PyFloat_Unpack8(const unsigned char *p, int le); + +/* free list api */ +PyAPI_FUNC(int) PyFloat_ClearFreeList(void); + +PyAPI_FUNC(void) _PyFloat_DebugMallocStats(FILE* out); + +/* Format the object based on the format_spec, as defined in PEP 3101 + (Advanced String Formatting). */ +PyAPI_FUNC(int) _PyFloat_FormatAdvancedWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + PyObject *format_spec, + Py_ssize_t start, + Py_ssize_t end); +#endif /* Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_FLOATOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/frameobject.h b/qrenderdoc/3rdparty/python/include/frameobject.h new file mode 100644 index 000000000..00c50933d --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/frameobject.h @@ -0,0 +1,95 @@ + +/* Frame object interface */ + +#ifndef Py_LIMITED_API +#ifndef Py_FRAMEOBJECT_H +#define Py_FRAMEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + int b_type; /* what kind of block this is */ + int b_handler; /* where to jump to find handler */ + int b_level; /* value stack level to pop to */ +} PyTryBlock; + +typedef struct _frame { + PyObject_VAR_HEAD + struct _frame *f_back; /* previous frame, or NULL */ + PyCodeObject *f_code; /* code segment */ + PyObject *f_builtins; /* builtin symbol table (PyDictObject) */ + PyObject *f_globals; /* global symbol table (PyDictObject) */ + PyObject *f_locals; /* local symbol table (any mapping) */ + PyObject **f_valuestack; /* points after the last local */ + /* Next free slot in f_valuestack. Frame creation sets to f_valuestack. + Frame evaluation usually NULLs it, but a frame that yields sets it + to the current stack top. */ + PyObject **f_stacktop; + PyObject *f_trace; /* Trace function */ + + /* In a generator, we need to be able to swap between the exception + state inside the generator and the exception state of the calling + frame (which shouldn't be impacted when the generator "yields" + from an except handler). + These three fields exist exactly for that, and are unused for + non-generator frames. See the save_exc_state and swap_exc_state + functions in ceval.c for details of their use. */ + PyObject *f_exc_type, *f_exc_value, *f_exc_traceback; + /* Borrowed reference to a generator, or NULL */ + PyObject *f_gen; + + int f_lasti; /* Last instruction if called */ + /* Call PyFrame_GetLineNumber() instead of reading this field + directly. As of 2.3 f_lineno is only valid when tracing is + active (i.e. when f_trace is set). At other times we use + PyCode_Addr2Line to calculate the line from the current + bytecode index. */ + int f_lineno; /* Current line number */ + int f_iblock; /* index in f_blockstack */ + char f_executing; /* whether the frame is still executing */ + PyTryBlock f_blockstack[CO_MAXBLOCKS]; /* for try and loop blocks */ + PyObject *f_localsplus[1]; /* locals+stack, dynamically sized */ +} PyFrameObject; + + +/* Standard object interface */ + +PyAPI_DATA(PyTypeObject) PyFrame_Type; + +#define PyFrame_Check(op) (Py_TYPE(op) == &PyFrame_Type) + +PyAPI_FUNC(PyFrameObject *) PyFrame_New(PyThreadState *, PyCodeObject *, + PyObject *, PyObject *); + + +/* The rest of the interface is specific for frame objects */ + +/* Block management functions */ + +PyAPI_FUNC(void) PyFrame_BlockSetup(PyFrameObject *, int, int, int); +PyAPI_FUNC(PyTryBlock *) PyFrame_BlockPop(PyFrameObject *); + +/* Extend the value stack */ + +PyAPI_FUNC(PyObject **) PyFrame_ExtendStack(PyFrameObject *, int, int); + +/* Conversions between "fast locals" and locals in dictionary */ + +PyAPI_FUNC(void) PyFrame_LocalsToFast(PyFrameObject *, int); + +PyAPI_FUNC(int) PyFrame_FastToLocalsWithError(PyFrameObject *f); +PyAPI_FUNC(void) PyFrame_FastToLocals(PyFrameObject *); + +PyAPI_FUNC(int) PyFrame_ClearFreeList(void); + +PyAPI_FUNC(void) _PyFrame_DebugMallocStats(FILE *out); + +/* Return the line of code the frame is currently executing. */ +PyAPI_FUNC(int) PyFrame_GetLineNumber(PyFrameObject *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_FRAMEOBJECT_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/funcobject.h b/qrenderdoc/3rdparty/python/include/funcobject.h new file mode 100644 index 000000000..77bb8c39a --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/funcobject.h @@ -0,0 +1,103 @@ + +/* Function object interface */ +#ifndef Py_LIMITED_API +#ifndef Py_FUNCOBJECT_H +#define Py_FUNCOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Function objects and code objects should not be confused with each other: + * + * Function objects are created by the execution of the 'def' statement. + * They reference a code object in their __code__ attribute, which is a + * purely syntactic object, i.e. nothing more than a compiled version of some + * source code lines. There is one code object per source code "fragment", + * but each code object can be referenced by zero or many function objects + * depending only on how many times the 'def' statement in the source was + * executed so far. + */ + +typedef struct { + PyObject_HEAD + PyObject *func_code; /* A code object, the __code__ attribute */ + PyObject *func_globals; /* A dictionary (other mappings won't do) */ + PyObject *func_defaults; /* NULL or a tuple */ + PyObject *func_kwdefaults; /* NULL or a dict */ + PyObject *func_closure; /* NULL or a tuple of cell objects */ + PyObject *func_doc; /* The __doc__ attribute, can be anything */ + PyObject *func_name; /* The __name__ attribute, a string object */ + PyObject *func_dict; /* The __dict__ attribute, a dict or NULL */ + PyObject *func_weakreflist; /* List of weak references */ + PyObject *func_module; /* The __module__ attribute, can be anything */ + PyObject *func_annotations; /* Annotations, a dict or NULL */ + PyObject *func_qualname; /* The qualified name */ + + /* Invariant: + * func_closure contains the bindings for func_code->co_freevars, so + * PyTuple_Size(func_closure) == PyCode_GetNumFree(func_code) + * (func_closure may be NULL if PyCode_GetNumFree(func_code) == 0). + */ +} PyFunctionObject; + +PyAPI_DATA(PyTypeObject) PyFunction_Type; + +#define PyFunction_Check(op) (Py_TYPE(op) == &PyFunction_Type) + +PyAPI_FUNC(PyObject *) PyFunction_New(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_NewWithQualName(PyObject *, PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetCode(PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetGlobals(PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetModule(PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetDefaults(PyObject *); +PyAPI_FUNC(int) PyFunction_SetDefaults(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetKwDefaults(PyObject *); +PyAPI_FUNC(int) PyFunction_SetKwDefaults(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetClosure(PyObject *); +PyAPI_FUNC(int) PyFunction_SetClosure(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetAnnotations(PyObject *); +PyAPI_FUNC(int) PyFunction_SetAnnotations(PyObject *, PyObject *); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyFunction_FastCallDict( + PyObject *func, + PyObject **args, + Py_ssize_t nargs, + PyObject *kwargs); + +PyAPI_FUNC(PyObject *) _PyFunction_FastCallKeywords( + PyObject *func, + PyObject **stack, + Py_ssize_t nargs, + PyObject *kwnames); +#endif + +/* Macros for direct access to these values. Type checks are *not* + done, so use with care. */ +#define PyFunction_GET_CODE(func) \ + (((PyFunctionObject *)func) -> func_code) +#define PyFunction_GET_GLOBALS(func) \ + (((PyFunctionObject *)func) -> func_globals) +#define PyFunction_GET_MODULE(func) \ + (((PyFunctionObject *)func) -> func_module) +#define PyFunction_GET_DEFAULTS(func) \ + (((PyFunctionObject *)func) -> func_defaults) +#define PyFunction_GET_KW_DEFAULTS(func) \ + (((PyFunctionObject *)func) -> func_kwdefaults) +#define PyFunction_GET_CLOSURE(func) \ + (((PyFunctionObject *)func) -> func_closure) +#define PyFunction_GET_ANNOTATIONS(func) \ + (((PyFunctionObject *)func) -> func_annotations) + +/* The classmethod and staticmethod types lives here, too */ +PyAPI_DATA(PyTypeObject) PyClassMethod_Type; +PyAPI_DATA(PyTypeObject) PyStaticMethod_Type; + +PyAPI_FUNC(PyObject *) PyClassMethod_New(PyObject *); +PyAPI_FUNC(PyObject *) PyStaticMethod_New(PyObject *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_FUNCOBJECT_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/genobject.h b/qrenderdoc/3rdparty/python/include/genobject.h new file mode 100644 index 000000000..8c1825fc0 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/genobject.h @@ -0,0 +1,104 @@ + +/* Generator object interface */ + +#ifndef Py_LIMITED_API +#ifndef Py_GENOBJECT_H +#define Py_GENOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +struct _frame; /* Avoid including frameobject.h */ + +/* _PyGenObject_HEAD defines the initial segment of generator + and coroutine objects. */ +#define _PyGenObject_HEAD(prefix) \ + PyObject_HEAD \ + /* Note: gi_frame can be NULL if the generator is "finished" */ \ + struct _frame *prefix##_frame; \ + /* True if generator is being executed. */ \ + char prefix##_running; \ + /* The code object backing the generator */ \ + PyObject *prefix##_code; \ + /* List of weak reference. */ \ + PyObject *prefix##_weakreflist; \ + /* Name of the generator. */ \ + PyObject *prefix##_name; \ + /* Qualified name of the generator. */ \ + PyObject *prefix##_qualname; + +typedef struct { + /* The gi_ prefix is intended to remind of generator-iterator. */ + _PyGenObject_HEAD(gi) +} PyGenObject; + +PyAPI_DATA(PyTypeObject) PyGen_Type; + +#define PyGen_Check(op) PyObject_TypeCheck(op, &PyGen_Type) +#define PyGen_CheckExact(op) (Py_TYPE(op) == &PyGen_Type) + +PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *); +PyAPI_FUNC(PyObject *) PyGen_NewWithQualName(struct _frame *, + PyObject *name, PyObject *qualname); +PyAPI_FUNC(int) PyGen_NeedsFinalizing(PyGenObject *); +PyAPI_FUNC(int) _PyGen_SetStopIterationValue(PyObject *); +PyAPI_FUNC(int) _PyGen_FetchStopIterationValue(PyObject **); +PyAPI_FUNC(PyObject *) _PyGen_Send(PyGenObject *, PyObject *); +PyObject *_PyGen_yf(PyGenObject *); +PyAPI_FUNC(void) _PyGen_Finalize(PyObject *self); + +#ifndef Py_LIMITED_API +typedef struct { + _PyGenObject_HEAD(cr) +} PyCoroObject; + +PyAPI_DATA(PyTypeObject) PyCoro_Type; +PyAPI_DATA(PyTypeObject) _PyCoroWrapper_Type; + +PyAPI_DATA(PyTypeObject) _PyAIterWrapper_Type; +PyObject *_PyAIterWrapper_New(PyObject *aiter); + +#define PyCoro_CheckExact(op) (Py_TYPE(op) == &PyCoro_Type) +PyObject *_PyCoro_GetAwaitableIter(PyObject *o); +PyAPI_FUNC(PyObject *) PyCoro_New(struct _frame *, + PyObject *name, PyObject *qualname); + +/* Asynchronous Generators */ + +typedef struct { + _PyGenObject_HEAD(ag) + PyObject *ag_finalizer; + + /* Flag is set to 1 when hooks set up by sys.set_asyncgen_hooks + were called on the generator, to avoid calling them more + than once. */ + int ag_hooks_inited; + + /* Flag is set to 1 when aclose() is called for the first time, or + when a StopAsyncIteration exception is raised. */ + int ag_closed; +} PyAsyncGenObject; + +PyAPI_DATA(PyTypeObject) PyAsyncGen_Type; +PyAPI_DATA(PyTypeObject) _PyAsyncGenASend_Type; +PyAPI_DATA(PyTypeObject) _PyAsyncGenWrappedValue_Type; +PyAPI_DATA(PyTypeObject) _PyAsyncGenAThrow_Type; + +PyAPI_FUNC(PyObject *) PyAsyncGen_New(struct _frame *, + PyObject *name, PyObject *qualname); + +#define PyAsyncGen_CheckExact(op) (Py_TYPE(op) == &PyAsyncGen_Type) + +PyObject *_PyAsyncGenValueWrapperNew(PyObject *); + +int PyAsyncGen_ClearFreeLists(void); + +#endif + +#undef _PyGenObject_HEAD + +#ifdef __cplusplus +} +#endif +#endif /* !Py_GENOBJECT_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/graminit.h b/qrenderdoc/3rdparty/python/include/graminit.h new file mode 100644 index 000000000..e9b4a9385 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/graminit.h @@ -0,0 +1,88 @@ +/* Generated by Parser/pgen */ + +#define single_input 256 +#define file_input 257 +#define eval_input 258 +#define decorator 259 +#define decorators 260 +#define decorated 261 +#define async_funcdef 262 +#define funcdef 263 +#define parameters 264 +#define typedargslist 265 +#define tfpdef 266 +#define varargslist 267 +#define vfpdef 268 +#define stmt 269 +#define simple_stmt 270 +#define small_stmt 271 +#define expr_stmt 272 +#define annassign 273 +#define testlist_star_expr 274 +#define augassign 275 +#define del_stmt 276 +#define pass_stmt 277 +#define flow_stmt 278 +#define break_stmt 279 +#define continue_stmt 280 +#define return_stmt 281 +#define yield_stmt 282 +#define raise_stmt 283 +#define import_stmt 284 +#define import_name 285 +#define import_from 286 +#define import_as_name 287 +#define dotted_as_name 288 +#define import_as_names 289 +#define dotted_as_names 290 +#define dotted_name 291 +#define global_stmt 292 +#define nonlocal_stmt 293 +#define assert_stmt 294 +#define compound_stmt 295 +#define async_stmt 296 +#define if_stmt 297 +#define while_stmt 298 +#define for_stmt 299 +#define try_stmt 300 +#define with_stmt 301 +#define with_item 302 +#define except_clause 303 +#define suite 304 +#define test 305 +#define test_nocond 306 +#define lambdef 307 +#define lambdef_nocond 308 +#define or_test 309 +#define and_test 310 +#define not_test 311 +#define comparison 312 +#define comp_op 313 +#define star_expr 314 +#define expr 315 +#define xor_expr 316 +#define and_expr 317 +#define shift_expr 318 +#define arith_expr 319 +#define term 320 +#define factor 321 +#define power 322 +#define atom_expr 323 +#define atom 324 +#define testlist_comp 325 +#define trailer 326 +#define subscriptlist 327 +#define subscript 328 +#define sliceop 329 +#define exprlist 330 +#define testlist 331 +#define dictorsetmaker 332 +#define classdef 333 +#define arglist 334 +#define argument 335 +#define comp_iter 336 +#define comp_for 337 +#define comp_if 338 +#define encoding_decl 339 +#define yield_expr 340 +#define yield_arg 341 diff --git a/qrenderdoc/3rdparty/python/include/grammar.h b/qrenderdoc/3rdparty/python/include/grammar.h new file mode 100644 index 000000000..f775f9638 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/grammar.h @@ -0,0 +1,94 @@ + +/* Grammar interface */ + +#ifndef Py_GRAMMAR_H +#define Py_GRAMMAR_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "bitset.h" /* Sigh... */ + +/* A label of an arc */ + +typedef struct { + int lb_type; + char *lb_str; +} label; + +#define EMPTY 0 /* Label number 0 is by definition the empty label */ + +/* A list of labels */ + +typedef struct { + int ll_nlabels; + label *ll_label; +} labellist; + +/* An arc from one state to another */ + +typedef struct { + short a_lbl; /* Label of this arc */ + short a_arrow; /* State where this arc goes to */ +} arc; + +/* A state in a DFA */ + +typedef struct { + int s_narcs; + arc *s_arc; /* Array of arcs */ + + /* Optional accelerators */ + int s_lower; /* Lowest label index */ + int s_upper; /* Highest label index */ + int *s_accel; /* Accelerator */ + int s_accept; /* Nonzero for accepting state */ +} state; + +/* A DFA */ + +typedef struct { + int d_type; /* Non-terminal this represents */ + char *d_name; /* For printing */ + int d_initial; /* Initial state */ + int d_nstates; + state *d_state; /* Array of states */ + bitset d_first; +} dfa; + +/* A grammar */ + +typedef struct { + int g_ndfas; + dfa *g_dfa; /* Array of DFAs */ + labellist g_ll; + int g_start; /* Start symbol of the grammar */ + int g_accel; /* Set if accelerators present */ +} grammar; + +/* FUNCTIONS */ + +grammar *newgrammar(int start); +void freegrammar(grammar *g); +dfa *adddfa(grammar *g, int type, const char *name); +int addstate(dfa *d); +void addarc(dfa *d, int from, int to, int lbl); +dfa *PyGrammar_FindDFA(grammar *g, int type); + +int addlabel(labellist *ll, int type, const char *str); +int findlabel(labellist *ll, int type, const char *str); +const char *PyGrammar_LabelRepr(label *lb); +void translatelabels(grammar *g); + +void addfirstsets(grammar *g); + +void PyGrammar_AddAccelerators(grammar *g); +void PyGrammar_RemoveAccelerators(grammar *); + +void printgrammar(grammar *g, FILE *fp); +void printnonterminals(grammar *g, FILE *fp); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_GRAMMAR_H */ diff --git a/qrenderdoc/3rdparty/python/include/import.h b/qrenderdoc/3rdparty/python/include/import.h new file mode 100644 index 000000000..bb6beba67 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/import.h @@ -0,0 +1,140 @@ + +/* Module definition and import interface */ + +#ifndef Py_IMPORT_H +#define Py_IMPORT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyImportZip_Init(void); + +PyMODINIT_FUNC PyInit_imp(void); +#endif /* !Py_LIMITED_API */ +PyAPI_FUNC(long) PyImport_GetMagicNumber(void); +PyAPI_FUNC(const char *) PyImport_GetMagicTag(void); +PyAPI_FUNC(PyObject *) PyImport_ExecCodeModule( + const char *name, /* UTF-8 encoded string */ + PyObject *co + ); +PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleEx( + const char *name, /* UTF-8 encoded string */ + PyObject *co, + const char *pathname /* decoded from the filesystem encoding */ + ); +PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleWithPathnames( + const char *name, /* UTF-8 encoded string */ + PyObject *co, + const char *pathname, /* decoded from the filesystem encoding */ + const char *cpathname /* decoded from the filesystem encoding */ + ); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleObject( + PyObject *name, + PyObject *co, + PyObject *pathname, + PyObject *cpathname + ); +#endif +PyAPI_FUNC(PyObject *) PyImport_GetModuleDict(void); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyImport_AddModuleObject( + PyObject *name + ); +#endif +PyAPI_FUNC(PyObject *) PyImport_AddModule( + const char *name /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) PyImport_ImportModule( + const char *name /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) PyImport_ImportModuleNoBlock( + const char *name /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevel( + const char *name, /* UTF-8 encoded string */ + PyObject *globals, + PyObject *locals, + PyObject *fromlist, + int level + ); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevelObject( + PyObject *name, + PyObject *globals, + PyObject *locals, + PyObject *fromlist, + int level + ); +#endif + +#define PyImport_ImportModuleEx(n, g, l, f) \ + PyImport_ImportModuleLevel(n, g, l, f, 0) + +PyAPI_FUNC(PyObject *) PyImport_GetImporter(PyObject *path); +PyAPI_FUNC(PyObject *) PyImport_Import(PyObject *name); +PyAPI_FUNC(PyObject *) PyImport_ReloadModule(PyObject *m); +PyAPI_FUNC(void) PyImport_Cleanup(void); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(int) PyImport_ImportFrozenModuleObject( + PyObject *name + ); +#endif +PyAPI_FUNC(int) PyImport_ImportFrozenModule( + const char *name /* UTF-8 encoded string */ + ); + +#ifndef Py_LIMITED_API +#ifdef WITH_THREAD +PyAPI_FUNC(void) _PyImport_AcquireLock(void); +PyAPI_FUNC(int) _PyImport_ReleaseLock(void); +#else +#define _PyImport_AcquireLock() +#define _PyImport_ReleaseLock() 1 +#endif + +PyAPI_FUNC(void) _PyImport_ReInitLock(void); + +PyAPI_FUNC(PyObject *) _PyImport_FindBuiltin( + const char *name /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) _PyImport_FindExtensionObject(PyObject *, PyObject *); +PyAPI_FUNC(int) _PyImport_FixupBuiltin( + PyObject *mod, + const char *name /* UTF-8 encoded string */ + ); +PyAPI_FUNC(int) _PyImport_FixupExtensionObject(PyObject*, PyObject *, PyObject *); + +struct _inittab { + const char *name; /* ASCII encoded string */ + PyObject* (*initfunc)(void); +}; +PyAPI_DATA(struct _inittab *) PyImport_Inittab; +PyAPI_FUNC(int) PyImport_ExtendInittab(struct _inittab *newtab); +#endif /* Py_LIMITED_API */ + +PyAPI_DATA(PyTypeObject) PyNullImporter_Type; + +PyAPI_FUNC(int) PyImport_AppendInittab( + const char *name, /* ASCII encoded string */ + PyObject* (*initfunc)(void) + ); + +#ifndef Py_LIMITED_API +struct _frozen { + const char *name; /* ASCII encoded string */ + const unsigned char *code; + int size; +}; + +/* Embedding apps may change this pointer to point to their favorite + collection of frozen modules: */ + +PyAPI_DATA(const struct _frozen *) PyImport_FrozenModules; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_IMPORT_H */ diff --git a/qrenderdoc/3rdparty/python/include/intrcheck.h b/qrenderdoc/3rdparty/python/include/intrcheck.h new file mode 100644 index 000000000..8fb96cf9a --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/intrcheck.h @@ -0,0 +1,24 @@ + +#ifndef Py_INTRCHECK_H +#define Py_INTRCHECK_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(int) PyOS_InterruptOccurred(void); +PyAPI_FUNC(void) PyOS_InitInterrupts(void); +PyAPI_FUNC(void) PyOS_AfterFork(void); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyOS_IsMainThread(void); + +#ifdef MS_WINDOWS +/* windows.h is not included by Python.h so use void* instead of HANDLE */ +PyAPI_FUNC(void*) _PyOS_SigintEvent(void); +#endif +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTRCHECK_H */ diff --git a/qrenderdoc/3rdparty/python/include/iterobject.h b/qrenderdoc/3rdparty/python/include/iterobject.h new file mode 100644 index 000000000..f61726f1f --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/iterobject.h @@ -0,0 +1,25 @@ +#ifndef Py_ITEROBJECT_H +#define Py_ITEROBJECT_H +/* Iterators (the basic kind, over a sequence) */ +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_DATA(PyTypeObject) PySeqIter_Type; +PyAPI_DATA(PyTypeObject) PyCallIter_Type; +PyAPI_DATA(PyTypeObject) PyCmpWrapper_Type; + +#define PySeqIter_Check(op) (Py_TYPE(op) == &PySeqIter_Type) + +PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *); + + +#define PyCallIter_Check(op) (Py_TYPE(op) == &PyCallIter_Type) + +PyAPI_FUNC(PyObject *) PyCallIter_New(PyObject *, PyObject *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_ITEROBJECT_H */ + diff --git a/qrenderdoc/3rdparty/python/include/listobject.h b/qrenderdoc/3rdparty/python/include/listobject.h new file mode 100644 index 000000000..31843b5db --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/listobject.h @@ -0,0 +1,81 @@ + +/* List object interface */ + +/* +Another generally useful object type is a list of object pointers. +This is a mutable type: the list items can be changed, and items can be +added or removed. Out-of-range indices or non-list objects are ignored. + +*** WARNING *** PyList_SetItem does not increment the new item's reference +count, but does decrement the reference count of the item it replaces, +if not nil. It does *decrement* the reference count if it is *not* +inserted in the list. Similarly, PyList_GetItem does not increment the +returned item's reference count. +*/ + +#ifndef Py_LISTOBJECT_H +#define Py_LISTOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +typedef struct { + PyObject_VAR_HEAD + /* Vector of pointers to list elements. list[0] is ob_item[0], etc. */ + PyObject **ob_item; + + /* ob_item contains space for 'allocated' elements. The number + * currently in use is ob_size. + * Invariants: + * 0 <= ob_size <= allocated + * len(list) == ob_size + * ob_item == NULL implies ob_size == allocated == 0 + * list.sort() temporarily sets allocated to -1 to detect mutations. + * + * Items must normally not be NULL, except during construction when + * the list is not yet visible outside the function that builds it. + */ + Py_ssize_t allocated; +} PyListObject; +#endif + +PyAPI_DATA(PyTypeObject) PyList_Type; +PyAPI_DATA(PyTypeObject) PyListIter_Type; +PyAPI_DATA(PyTypeObject) PyListRevIter_Type; +PyAPI_DATA(PyTypeObject) PySortWrapper_Type; + +#define PyList_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS) +#define PyList_CheckExact(op) (Py_TYPE(op) == &PyList_Type) + +PyAPI_FUNC(PyObject *) PyList_New(Py_ssize_t size); +PyAPI_FUNC(Py_ssize_t) PyList_Size(PyObject *); +PyAPI_FUNC(PyObject *) PyList_GetItem(PyObject *, Py_ssize_t); +PyAPI_FUNC(int) PyList_SetItem(PyObject *, Py_ssize_t, PyObject *); +PyAPI_FUNC(int) PyList_Insert(PyObject *, Py_ssize_t, PyObject *); +PyAPI_FUNC(int) PyList_Append(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyList_GetSlice(PyObject *, Py_ssize_t, Py_ssize_t); +PyAPI_FUNC(int) PyList_SetSlice(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *); +PyAPI_FUNC(int) PyList_Sort(PyObject *); +PyAPI_FUNC(int) PyList_Reverse(PyObject *); +PyAPI_FUNC(PyObject *) PyList_AsTuple(PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyList_Extend(PyListObject *, PyObject *); + +PyAPI_FUNC(int) PyList_ClearFreeList(void); +PyAPI_FUNC(void) _PyList_DebugMallocStats(FILE *out); +#endif + +/* Macro, trading safety for speed */ +#ifndef Py_LIMITED_API +#define PyList_GET_ITEM(op, i) (((PyListObject *)(op))->ob_item[i]) +#define PyList_SET_ITEM(op, i, v) (((PyListObject *)(op))->ob_item[i] = (v)) +#define PyList_GET_SIZE(op) Py_SIZE(op) +#define _PyList_ITEMS(op) (((PyListObject *)(op))->ob_item) +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_LISTOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/longintrepr.h b/qrenderdoc/3rdparty/python/include/longintrepr.h new file mode 100644 index 000000000..a3b74b4f6 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/longintrepr.h @@ -0,0 +1,99 @@ +#ifndef Py_LIMITED_API +#ifndef Py_LONGINTREPR_H +#define Py_LONGINTREPR_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* This is published for the benefit of "friends" marshal.c and _decimal.c. */ + +/* Parameters of the integer representation. There are two different + sets of parameters: one set for 30-bit digits, stored in an unsigned 32-bit + integer type, and one set for 15-bit digits with each digit stored in an + unsigned short. The value of PYLONG_BITS_IN_DIGIT, defined either at + configure time or in pyport.h, is used to decide which digit size to use. + + Type 'digit' should be able to hold 2*PyLong_BASE-1, and type 'twodigits' + should be an unsigned integer type able to hold all integers up to + PyLong_BASE*PyLong_BASE-1. x_sub assumes that 'digit' is an unsigned type, + and that overflow is handled by taking the result modulo 2**N for some N > + PyLong_SHIFT. The majority of the code doesn't care about the precise + value of PyLong_SHIFT, but there are some notable exceptions: + + - long_pow() requires that PyLong_SHIFT be divisible by 5 + + - PyLong_{As,From}ByteArray require that PyLong_SHIFT be at least 8 + + - long_hash() requires that PyLong_SHIFT is *strictly* less than the number + of bits in an unsigned long, as do the PyLong <-> long (or unsigned long) + conversion functions + + - the Python int <-> size_t/Py_ssize_t conversion functions expect that + PyLong_SHIFT is strictly less than the number of bits in a size_t + + - the marshal code currently expects that PyLong_SHIFT is a multiple of 15 + + - NSMALLNEGINTS and NSMALLPOSINTS should be small enough to fit in a single + digit; with the current values this forces PyLong_SHIFT >= 9 + + The values 15 and 30 should fit all of the above requirements, on any + platform. +*/ + +#if PYLONG_BITS_IN_DIGIT == 30 +typedef uint32_t digit; +typedef int32_t sdigit; /* signed variant of digit */ +typedef uint64_t twodigits; +typedef int64_t stwodigits; /* signed variant of twodigits */ +#define PyLong_SHIFT 30 +#define _PyLong_DECIMAL_SHIFT 9 /* max(e such that 10**e fits in a digit) */ +#define _PyLong_DECIMAL_BASE ((digit)1000000000) /* 10 ** DECIMAL_SHIFT */ +#elif PYLONG_BITS_IN_DIGIT == 15 +typedef unsigned short digit; +typedef short sdigit; /* signed variant of digit */ +typedef unsigned long twodigits; +typedef long stwodigits; /* signed variant of twodigits */ +#define PyLong_SHIFT 15 +#define _PyLong_DECIMAL_SHIFT 4 /* max(e such that 10**e fits in a digit) */ +#define _PyLong_DECIMAL_BASE ((digit)10000) /* 10 ** DECIMAL_SHIFT */ +#else +#error "PYLONG_BITS_IN_DIGIT should be 15 or 30" +#endif +#define PyLong_BASE ((digit)1 << PyLong_SHIFT) +#define PyLong_MASK ((digit)(PyLong_BASE - 1)) + +#if PyLong_SHIFT % 5 != 0 +#error "longobject.c requires that PyLong_SHIFT be divisible by 5" +#endif + +/* Long integer representation. + The absolute value of a number is equal to + SUM(for i=0 through abs(ob_size)-1) ob_digit[i] * 2**(SHIFT*i) + Negative numbers are represented with ob_size < 0; + zero is represented by ob_size == 0. + In a normalized number, ob_digit[abs(ob_size)-1] (the most significant + digit) is never zero. Also, in all cases, for all valid i, + 0 <= ob_digit[i] <= MASK. + The allocation function takes care of allocating extra memory + so that ob_digit[0] ... ob_digit[abs(ob_size)-1] are actually available. + + CAUTION: Generic code manipulating subtypes of PyVarObject has to + aware that ints abuse ob_size's sign bit. +*/ + +struct _longobject { + PyObject_VAR_HEAD + digit ob_digit[1]; +}; + +PyAPI_FUNC(PyLongObject *) _PyLong_New(Py_ssize_t); + +/* Return a copy of src. */ +PyAPI_FUNC(PyObject *) _PyLong_Copy(PyLongObject *src); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_LONGINTREPR_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/longobject.h b/qrenderdoc/3rdparty/python/include/longobject.h new file mode 100644 index 000000000..efd409c75 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/longobject.h @@ -0,0 +1,215 @@ +#ifndef Py_LONGOBJECT_H +#define Py_LONGOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Long (arbitrary precision) integer object interface */ + +typedef struct _longobject PyLongObject; /* Revealed in longintrepr.h */ + +PyAPI_DATA(PyTypeObject) PyLong_Type; + +#define PyLong_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS) +#define PyLong_CheckExact(op) (Py_TYPE(op) == &PyLong_Type) + +PyAPI_FUNC(PyObject *) PyLong_FromLong(long); +PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long); +PyAPI_FUNC(PyObject *) PyLong_FromSize_t(size_t); +PyAPI_FUNC(PyObject *) PyLong_FromSsize_t(Py_ssize_t); +PyAPI_FUNC(PyObject *) PyLong_FromDouble(double); +PyAPI_FUNC(long) PyLong_AsLong(PyObject *); +PyAPI_FUNC(long) PyLong_AsLongAndOverflow(PyObject *, int *); +PyAPI_FUNC(Py_ssize_t) PyLong_AsSsize_t(PyObject *); +PyAPI_FUNC(size_t) PyLong_AsSize_t(PyObject *); +PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLong(PyObject *); +PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLongMask(PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyLong_AsInt(PyObject *); +#endif +PyAPI_FUNC(PyObject *) PyLong_GetInfo(void); + +/* It may be useful in the future. I've added it in the PyInt -> PyLong + cleanup to keep the extra information. [CH] */ +#define PyLong_AS_LONG(op) PyLong_AsLong(op) + +/* Issue #1983: pid_t can be longer than a C long on some systems */ +#if !defined(SIZEOF_PID_T) || SIZEOF_PID_T == SIZEOF_INT +#define _Py_PARSE_PID "i" +#define PyLong_FromPid PyLong_FromLong +#define PyLong_AsPid PyLong_AsLong +#elif SIZEOF_PID_T == SIZEOF_LONG +#define _Py_PARSE_PID "l" +#define PyLong_FromPid PyLong_FromLong +#define PyLong_AsPid PyLong_AsLong +#elif defined(SIZEOF_LONG_LONG) && SIZEOF_PID_T == SIZEOF_LONG_LONG +#define _Py_PARSE_PID "L" +#define PyLong_FromPid PyLong_FromLongLong +#define PyLong_AsPid PyLong_AsLongLong +#else +#error "sizeof(pid_t) is neither sizeof(int), sizeof(long) or sizeof(long long)" +#endif /* SIZEOF_PID_T */ + +#if SIZEOF_VOID_P == SIZEOF_INT +# define _Py_PARSE_INTPTR "i" +# define _Py_PARSE_UINTPTR "I" +#elif SIZEOF_VOID_P == SIZEOF_LONG +# define _Py_PARSE_INTPTR "l" +# define _Py_PARSE_UINTPTR "k" +#elif defined(SIZEOF_LONG_LONG) && SIZEOF_VOID_P == SIZEOF_LONG_LONG +# define _Py_PARSE_INTPTR "L" +# define _Py_PARSE_UINTPTR "K" +#else +# error "void* different in size from int, long and long long" +#endif /* SIZEOF_VOID_P */ + +/* Used by Python/mystrtoul.c, _PyBytes_FromHex(), + _PyBytes_DecodeEscapeRecode(), etc. */ +#ifndef Py_LIMITED_API +PyAPI_DATA(unsigned char) _PyLong_DigitValue[256]; +#endif + +/* _PyLong_Frexp returns a double x and an exponent e such that the + true value is approximately equal to x * 2**e. e is >= 0. x is + 0.0 if and only if the input is 0 (in which case, e and x are both + zeroes); otherwise, 0.5 <= abs(x) < 1.0. On overflow, which is + possible if the number of bits doesn't fit into a Py_ssize_t, sets + OverflowError and returns -1.0 for x, 0 for e. */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(double) _PyLong_Frexp(PyLongObject *a, Py_ssize_t *e); +#endif + +PyAPI_FUNC(double) PyLong_AsDouble(PyObject *); +PyAPI_FUNC(PyObject *) PyLong_FromVoidPtr(void *); +PyAPI_FUNC(void *) PyLong_AsVoidPtr(PyObject *); + +PyAPI_FUNC(PyObject *) PyLong_FromLongLong(long long); +PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLongLong(unsigned long long); +PyAPI_FUNC(long long) PyLong_AsLongLong(PyObject *); +PyAPI_FUNC(unsigned long long) PyLong_AsUnsignedLongLong(PyObject *); +PyAPI_FUNC(unsigned long long) PyLong_AsUnsignedLongLongMask(PyObject *); +PyAPI_FUNC(long long) PyLong_AsLongLongAndOverflow(PyObject *, int *); + +PyAPI_FUNC(PyObject *) PyLong_FromString(const char *, char **, int); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyLong_FromUnicode(Py_UNICODE*, Py_ssize_t, int); +PyAPI_FUNC(PyObject *) PyLong_FromUnicodeObject(PyObject *u, int base); +PyAPI_FUNC(PyObject *) _PyLong_FromBytes(const char *, Py_ssize_t, int); +#endif + +#ifndef Py_LIMITED_API +/* _PyLong_Sign. Return 0 if v is 0, -1 if v < 0, +1 if v > 0. + v must not be NULL, and must be a normalized long. + There are no error cases. +*/ +PyAPI_FUNC(int) _PyLong_Sign(PyObject *v); + + +/* _PyLong_NumBits. Return the number of bits needed to represent the + absolute value of a long. For example, this returns 1 for 1 and -1, 2 + for 2 and -2, and 2 for 3 and -3. It returns 0 for 0. + v must not be NULL, and must be a normalized long. + (size_t)-1 is returned and OverflowError set if the true result doesn't + fit in a size_t. +*/ +PyAPI_FUNC(size_t) _PyLong_NumBits(PyObject *v); + +/* _PyLong_DivmodNear. Given integers a and b, compute the nearest + integer q to the exact quotient a / b, rounding to the nearest even integer + in the case of a tie. Return (q, r), where r = a - q*b. The remainder r + will satisfy abs(r) <= abs(b)/2, with equality possible only if q is + even. +*/ +PyAPI_FUNC(PyObject *) _PyLong_DivmodNear(PyObject *, PyObject *); + +/* _PyLong_FromByteArray: View the n unsigned bytes as a binary integer in + base 256, and return a Python int with the same numeric value. + If n is 0, the integer is 0. Else: + If little_endian is 1/true, bytes[n-1] is the MSB and bytes[0] the LSB; + else (little_endian is 0/false) bytes[0] is the MSB and bytes[n-1] the + LSB. + If is_signed is 0/false, view the bytes as a non-negative integer. + If is_signed is 1/true, view the bytes as a 2's-complement integer, + non-negative if bit 0x80 of the MSB is clear, negative if set. + Error returns: + + Return NULL with the appropriate exception set if there's not + enough memory to create the Python int. +*/ +PyAPI_FUNC(PyObject *) _PyLong_FromByteArray( + const unsigned char* bytes, size_t n, + int little_endian, int is_signed); + +/* _PyLong_AsByteArray: Convert the least-significant 8*n bits of long + v to a base-256 integer, stored in array bytes. Normally return 0, + return -1 on error. + If little_endian is 1/true, store the MSB at bytes[n-1] and the LSB at + bytes[0]; else (little_endian is 0/false) store the MSB at bytes[0] and + the LSB at bytes[n-1]. + If is_signed is 0/false, it's an error if v < 0; else (v >= 0) n bytes + are filled and there's nothing special about bit 0x80 of the MSB. + If is_signed is 1/true, bytes is filled with the 2's-complement + representation of v's value. Bit 0x80 of the MSB is the sign bit. + Error returns (-1): + + is_signed is 0 and v < 0. TypeError is set in this case, and bytes + isn't altered. + + n isn't big enough to hold the full mathematical value of v. For + example, if is_signed is 0 and there are more digits in the v than + fit in n; or if is_signed is 1, v < 0, and n is just 1 bit shy of + being large enough to hold a sign bit. OverflowError is set in this + case, but bytes holds the least-significant n bytes of the true value. +*/ +PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v, + unsigned char* bytes, size_t n, + int little_endian, int is_signed); + +/* _PyLong_FromNbInt: Convert the given object to a PyLongObject + using the nb_int slot, if available. Raise TypeError if either the + nb_int slot is not available or the result of the call to nb_int + returns something not of type int. +*/ +PyAPI_FUNC(PyLongObject *)_PyLong_FromNbInt(PyObject *); + +/* _PyLong_Format: Convert the long to a string object with given base, + appending a base prefix of 0[box] if base is 2, 8 or 16. */ +PyAPI_FUNC(PyObject *) _PyLong_Format(PyObject *obj, int base); + +PyAPI_FUNC(int) _PyLong_FormatWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + int base, + int alternate); + +PyAPI_FUNC(char*) _PyLong_FormatBytesWriter( + _PyBytesWriter *writer, + char *str, + PyObject *obj, + int base, + int alternate); + +/* Format the object based on the format_spec, as defined in PEP 3101 + (Advanced String Formatting). */ +PyAPI_FUNC(int) _PyLong_FormatAdvancedWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + PyObject *format_spec, + Py_ssize_t start, + Py_ssize_t end); +#endif /* Py_LIMITED_API */ + +/* These aren't really part of the int object, but they're handy. The + functions are in Python/mystrtoul.c. + */ +PyAPI_FUNC(unsigned long) PyOS_strtoul(const char *, char **, int); +PyAPI_FUNC(long) PyOS_strtol(const char *, char **, int); + +#ifndef Py_LIMITED_API +/* For use by the gcd function in mathmodule.c */ +PyAPI_FUNC(PyObject *) _PyLong_GCD(PyObject *, PyObject *); +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_LONGOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/marshal.h b/qrenderdoc/3rdparty/python/include/marshal.h new file mode 100644 index 000000000..09d9337e5 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/marshal.h @@ -0,0 +1,28 @@ + +/* Interface for marshal.c */ + +#ifndef Py_MARSHAL_H +#define Py_MARSHAL_H +#ifdef __cplusplus +extern "C" { +#endif + +#define Py_MARSHAL_VERSION 4 + +PyAPI_FUNC(void) PyMarshal_WriteLongToFile(long, FILE *, int); +PyAPI_FUNC(void) PyMarshal_WriteObjectToFile(PyObject *, FILE *, int); +PyAPI_FUNC(PyObject *) PyMarshal_WriteObjectToString(PyObject *, int); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(long) PyMarshal_ReadLongFromFile(FILE *); +PyAPI_FUNC(int) PyMarshal_ReadShortFromFile(FILE *); +PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromFile(FILE *); +PyAPI_FUNC(PyObject *) PyMarshal_ReadLastObjectFromFile(FILE *); +#endif +PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromString(const char *, + Py_ssize_t); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_MARSHAL_H */ diff --git a/qrenderdoc/3rdparty/python/include/memoryobject.h b/qrenderdoc/3rdparty/python/include/memoryobject.h new file mode 100644 index 000000000..990a716f2 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/memoryobject.h @@ -0,0 +1,72 @@ +/* Memory view object. In Python this is available as "memoryview". */ + +#ifndef Py_MEMORYOBJECT_H +#define Py_MEMORYOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +PyAPI_DATA(PyTypeObject) _PyManagedBuffer_Type; +#endif +PyAPI_DATA(PyTypeObject) PyMemoryView_Type; + +#define PyMemoryView_Check(op) (Py_TYPE(op) == &PyMemoryView_Type) + +#ifndef Py_LIMITED_API +/* Get a pointer to the memoryview's private copy of the exporter's buffer. */ +#define PyMemoryView_GET_BUFFER(op) (&((PyMemoryViewObject *)(op))->view) +/* Get a pointer to the exporting object (this may be NULL!). */ +#define PyMemoryView_GET_BASE(op) (((PyMemoryViewObject *)(op))->view.obj) +#endif + +PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyMemoryView_FromMemory(char *mem, Py_ssize_t size, + int flags); +#endif +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyMemoryView_FromBuffer(Py_buffer *info); +#endif +PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base, + int buffertype, + char order); + + +/* The structs are declared here so that macros can work, but they shouldn't + be considered public. Don't access their fields directly, use the macros + and functions instead! */ +#ifndef Py_LIMITED_API +#define _Py_MANAGED_BUFFER_RELEASED 0x001 /* access to exporter blocked */ +#define _Py_MANAGED_BUFFER_FREE_FORMAT 0x002 /* free format */ +typedef struct { + PyObject_HEAD + int flags; /* state flags */ + Py_ssize_t exports; /* number of direct memoryview exports */ + Py_buffer master; /* snapshot buffer obtained from the original exporter */ +} _PyManagedBufferObject; + + +/* memoryview state flags */ +#define _Py_MEMORYVIEW_RELEASED 0x001 /* access to master buffer blocked */ +#define _Py_MEMORYVIEW_C 0x002 /* C-contiguous layout */ +#define _Py_MEMORYVIEW_FORTRAN 0x004 /* Fortran contiguous layout */ +#define _Py_MEMORYVIEW_SCALAR 0x008 /* scalar: ndim = 0 */ +#define _Py_MEMORYVIEW_PIL 0x010 /* PIL-style layout */ + +typedef struct { + PyObject_VAR_HEAD + _PyManagedBufferObject *mbuf; /* managed buffer */ + Py_hash_t hash; /* hash value for read-only views */ + int flags; /* state flags */ + Py_ssize_t exports; /* number of buffer re-exports */ + Py_buffer view; /* private copy of the exporter's view */ + PyObject *weakreflist; + Py_ssize_t ob_array[1]; /* shape, strides, suboffsets */ +} PyMemoryViewObject; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_MEMORYOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/metagrammar.h b/qrenderdoc/3rdparty/python/include/metagrammar.h new file mode 100644 index 000000000..15c8ef8f3 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/metagrammar.h @@ -0,0 +1,18 @@ +#ifndef Py_METAGRAMMAR_H +#define Py_METAGRAMMAR_H +#ifdef __cplusplus +extern "C" { +#endif + + +#define MSTART 256 +#define RULE 257 +#define RHS 258 +#define ALT 259 +#define ITEM 260 +#define ATOM 261 + +#ifdef __cplusplus +} +#endif +#endif /* !Py_METAGRAMMAR_H */ diff --git a/qrenderdoc/3rdparty/python/include/methodobject.h b/qrenderdoc/3rdparty/python/include/methodobject.h new file mode 100644 index 000000000..79fad8235 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/methodobject.h @@ -0,0 +1,110 @@ + +/* Method object interface */ + +#ifndef Py_METHODOBJECT_H +#define Py_METHODOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* This is about the type 'builtin_function_or_method', + not Python methods in user-defined classes. See classobject.h + for the latter. */ + +PyAPI_DATA(PyTypeObject) PyCFunction_Type; + +#define PyCFunction_Check(op) (Py_TYPE(op) == &PyCFunction_Type) + +typedef PyObject *(*PyCFunction)(PyObject *, PyObject *); +typedef PyObject *(*_PyCFunctionFast) (PyObject *self, PyObject **args, + Py_ssize_t nargs, PyObject *kwnames); +typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *, + PyObject *); +typedef PyObject *(*PyNoArgsFunction)(PyObject *); + +PyAPI_FUNC(PyCFunction) PyCFunction_GetFunction(PyObject *); +PyAPI_FUNC(PyObject *) PyCFunction_GetSelf(PyObject *); +PyAPI_FUNC(int) PyCFunction_GetFlags(PyObject *); + +/* Macros for direct access to these values. Type checks are *not* + done, so use with care. */ +#ifndef Py_LIMITED_API +#define PyCFunction_GET_FUNCTION(func) \ + (((PyCFunctionObject *)func) -> m_ml -> ml_meth) +#define PyCFunction_GET_SELF(func) \ + (((PyCFunctionObject *)func) -> m_ml -> ml_flags & METH_STATIC ? \ + NULL : ((PyCFunctionObject *)func) -> m_self) +#define PyCFunction_GET_FLAGS(func) \ + (((PyCFunctionObject *)func) -> m_ml -> ml_flags) +#endif +PyAPI_FUNC(PyObject *) PyCFunction_Call(PyObject *, PyObject *, PyObject *); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyCFunction_FastCallDict(PyObject *func, + PyObject **args, + Py_ssize_t nargs, + PyObject *kwargs); + +PyAPI_FUNC(PyObject *) _PyCFunction_FastCallKeywords(PyObject *func, + PyObject **stack, + Py_ssize_t nargs, + PyObject *kwnames); +#endif + +struct PyMethodDef { + const char *ml_name; /* The name of the built-in function/method */ + PyCFunction ml_meth; /* The C function that implements it */ + int ml_flags; /* Combination of METH_xxx flags, which mostly + describe the args expected by the C func */ + const char *ml_doc; /* The __doc__ attribute, or NULL */ +}; +typedef struct PyMethodDef PyMethodDef; + +#define PyCFunction_New(ML, SELF) PyCFunction_NewEx((ML), (SELF), NULL) +PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *, + PyObject *); + +/* Flag passed to newmethodobject */ +/* #define METH_OLDARGS 0x0000 -- unsupported now */ +#define METH_VARARGS 0x0001 +#define METH_KEYWORDS 0x0002 +/* METH_NOARGS and METH_O must not be combined with the flags above. */ +#define METH_NOARGS 0x0004 +#define METH_O 0x0008 + +/* METH_CLASS and METH_STATIC are a little different; these control + the construction of methods for a class. These cannot be used for + functions in modules. */ +#define METH_CLASS 0x0010 +#define METH_STATIC 0x0020 + +/* METH_COEXIST allows a method to be entered even though a slot has + already filled the entry. When defined, the flag allows a separate + method, "__contains__" for example, to coexist with a defined + slot like sq_contains. */ + +#define METH_COEXIST 0x0040 + +#ifndef Py_LIMITED_API +#define METH_FASTCALL 0x0080 + +typedef struct { + PyObject_HEAD + PyMethodDef *m_ml; /* Description of the C function to call */ + PyObject *m_self; /* Passed as 'self' arg to the C func, can be NULL */ + PyObject *m_module; /* The __module__ attribute, can be anything */ + PyObject *m_weakreflist; /* List of weak references */ +} PyCFunctionObject; +#endif + +PyAPI_FUNC(int) PyCFunction_ClearFreeList(void); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyCFunction_DebugMallocStats(FILE *out); +PyAPI_FUNC(void) _PyMethod_DebugMallocStats(FILE *out); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_METHODOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/modsupport.h b/qrenderdoc/3rdparty/python/include/modsupport.h new file mode 100644 index 000000000..86719c6e9 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/modsupport.h @@ -0,0 +1,183 @@ + +#ifndef Py_MODSUPPORT_H +#define Py_MODSUPPORT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Module support interface */ + +#include + +/* If PY_SSIZE_T_CLEAN is defined, each functions treats #-specifier + to mean Py_ssize_t */ +#ifdef PY_SSIZE_T_CLEAN +#define PyArg_Parse _PyArg_Parse_SizeT +#define PyArg_ParseTuple _PyArg_ParseTuple_SizeT +#define PyArg_ParseTupleAndKeywords _PyArg_ParseTupleAndKeywords_SizeT +#define PyArg_VaParse _PyArg_VaParse_SizeT +#define PyArg_VaParseTupleAndKeywords _PyArg_VaParseTupleAndKeywords_SizeT +#define Py_BuildValue _Py_BuildValue_SizeT +#define Py_VaBuildValue _Py_VaBuildValue_SizeT +#else +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _Py_VaBuildValue_SizeT(const char *, va_list); +#endif /* !Py_LIMITED_API */ +#endif + +/* Due to a glitch in 3.2, the _SizeT versions weren't exported from the DLL. */ +#if !defined(PY_SSIZE_T_CLEAN) || !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(int) PyArg_Parse(PyObject *, const char *, ...); +PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...); +PyAPI_FUNC(int) PyArg_ParseTupleAndKeywords(PyObject *, PyObject *, + const char *, char **, ...); +PyAPI_FUNC(int) PyArg_VaParse(PyObject *, const char *, va_list); +PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *, + const char *, char **, va_list); +#endif +PyAPI_FUNC(int) PyArg_ValidateKeywordArguments(PyObject *); +PyAPI_FUNC(int) PyArg_UnpackTuple(PyObject *, const char *, Py_ssize_t, Py_ssize_t, ...); +PyAPI_FUNC(PyObject *) Py_BuildValue(const char *, ...); +PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyArg_NoKeywords(const char *funcname, PyObject *kw); +PyAPI_FUNC(int) _PyArg_NoPositional(const char *funcname, PyObject *args); +#endif +PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list); + +#ifndef Py_LIMITED_API +typedef struct _PyArg_Parser { + const char *format; + const char * const *keywords; + const char *fname; + const char *custom_msg; + int pos; /* number of positional-only arguments */ + int min; /* minimal number of arguments */ + int max; /* maximal number of positional arguments */ + PyObject *kwtuple; /* tuple of keyword parameter names */ + struct _PyArg_Parser *next; +} _PyArg_Parser; +#ifdef PY_SSIZE_T_CLEAN +#define _PyArg_ParseTupleAndKeywordsFast _PyArg_ParseTupleAndKeywordsFast_SizeT +#define _PyArg_ParseStack _PyArg_ParseStack_SizeT +#define _PyArg_VaParseTupleAndKeywordsFast _PyArg_VaParseTupleAndKeywordsFast_SizeT +#endif +PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywordsFast(PyObject *, PyObject *, + struct _PyArg_Parser *, ...); +PyAPI_FUNC(int) _PyArg_ParseStack(PyObject **args, Py_ssize_t nargs, PyObject *kwnames, + struct _PyArg_Parser *, ...); +PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywordsFast(PyObject *, PyObject *, + struct _PyArg_Parser *, va_list); +void _PyArg_Fini(void); +#endif + +PyAPI_FUNC(int) PyModule_AddObject(PyObject *, const char *, PyObject *); +PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long); +PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *); +#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c) +#define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant(m, #c, c) + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* New in 3.5 */ +PyAPI_FUNC(int) PyModule_SetDocString(PyObject *, const char *); +PyAPI_FUNC(int) PyModule_AddFunctions(PyObject *, PyMethodDef *); +PyAPI_FUNC(int) PyModule_ExecDef(PyObject *module, PyModuleDef *def); +#endif + +#define Py_CLEANUP_SUPPORTED 0x20000 + +#define PYTHON_API_VERSION 1013 +#define PYTHON_API_STRING "1013" +/* The API version is maintained (independently from the Python version) + so we can detect mismatches between the interpreter and dynamically + loaded modules. These are diagnosed by an error message but + the module is still loaded (because the mismatch can only be tested + after loading the module). The error message is intended to + explain the core dump a few seconds later. + + The symbol PYTHON_API_STRING defines the same value as a string + literal. *** PLEASE MAKE SURE THE DEFINITIONS MATCH. *** + + Please add a line or two to the top of this log for each API + version change: + + 22-Feb-2006 MvL 1013 PEP 353 - long indices for sequence lengths + + 19-Aug-2002 GvR 1012 Changes to string object struct for + interning changes, saving 3 bytes. + + 17-Jul-2001 GvR 1011 Descr-branch, just to be on the safe side + + 25-Jan-2001 FLD 1010 Parameters added to PyCode_New() and + PyFrame_New(); Python 2.1a2 + + 14-Mar-2000 GvR 1009 Unicode API added + + 3-Jan-1999 GvR 1007 Decided to change back! (Don't reuse 1008!) + + 3-Dec-1998 GvR 1008 Python 1.5.2b1 + + 18-Jan-1997 GvR 1007 string interning and other speedups + + 11-Oct-1996 GvR renamed Py_Ellipses to Py_Ellipsis :-( + + 30-Jul-1996 GvR Slice and ellipses syntax added + + 23-Jul-1996 GvR For 1.4 -- better safe than sorry this time :-) + + 7-Nov-1995 GvR Keyword arguments (should've been done at 1.3 :-( ) + + 10-Jan-1995 GvR Renamed globals to new naming scheme + + 9-Jan-1995 GvR Initial version (incompatible with older API) +*/ + +/* The PYTHON_ABI_VERSION is introduced in PEP 384. For the lifetime of + Python 3, it will stay at the value of 3; changes to the limited API + must be performed in a strictly backwards-compatible manner. */ +#define PYTHON_ABI_VERSION 3 +#define PYTHON_ABI_STRING "3" + +#ifdef Py_TRACE_REFS + /* When we are tracing reference counts, rename module creation functions so + modules compiled with incompatible settings will generate a + link-time error. */ + #define PyModule_Create2 PyModule_Create2TraceRefs + #define PyModule_FromDefAndSpec2 PyModule_FromDefAndSpec2TraceRefs +#endif + +PyAPI_FUNC(PyObject *) PyModule_Create2(struct PyModuleDef*, + int apiver); + +#ifdef Py_LIMITED_API +#define PyModule_Create(module) \ + PyModule_Create2(module, PYTHON_ABI_VERSION) +#else +#define PyModule_Create(module) \ + PyModule_Create2(module, PYTHON_API_VERSION) +#endif + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* New in 3.5 */ +PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def, + PyObject *spec, + int module_api_version); + +#ifdef Py_LIMITED_API +#define PyModule_FromDefAndSpec(module, spec) \ + PyModule_FromDefAndSpec2(module, spec, PYTHON_ABI_VERSION) +#else +#define PyModule_FromDefAndSpec(module, spec) \ + PyModule_FromDefAndSpec2(module, spec, PYTHON_API_VERSION) +#endif /* Py_LIMITED_API */ +#endif /* New in 3.5 */ + +#ifndef Py_LIMITED_API +PyAPI_DATA(char *) _Py_PackageContext; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_MODSUPPORT_H */ diff --git a/qrenderdoc/3rdparty/python/include/moduleobject.h b/qrenderdoc/3rdparty/python/include/moduleobject.h new file mode 100644 index 000000000..b6e49333d --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/moduleobject.h @@ -0,0 +1,89 @@ + +/* Module object interface */ + +#ifndef Py_MODULEOBJECT_H +#define Py_MODULEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_DATA(PyTypeObject) PyModule_Type; + +#define PyModule_Check(op) PyObject_TypeCheck(op, &PyModule_Type) +#define PyModule_CheckExact(op) (Py_TYPE(op) == &PyModule_Type) + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyModule_NewObject( + PyObject *name + ); +#endif +PyAPI_FUNC(PyObject *) PyModule_New( + const char *name /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyModule_GetNameObject(PyObject *); +#endif +PyAPI_FUNC(const char *) PyModule_GetName(PyObject *); +PyAPI_FUNC(const char *) PyModule_GetFilename(PyObject *); +PyAPI_FUNC(PyObject *) PyModule_GetFilenameObject(PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyModule_Clear(PyObject *); +PyAPI_FUNC(void) _PyModule_ClearDict(PyObject *); +#endif +PyAPI_FUNC(struct PyModuleDef*) PyModule_GetDef(PyObject*); +PyAPI_FUNC(void*) PyModule_GetState(PyObject*); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* New in 3.5 */ +PyAPI_FUNC(PyObject *) PyModuleDef_Init(struct PyModuleDef*); +PyAPI_DATA(PyTypeObject) PyModuleDef_Type; +#endif + +typedef struct PyModuleDef_Base { + PyObject_HEAD + PyObject* (*m_init)(void); + Py_ssize_t m_index; + PyObject* m_copy; +} PyModuleDef_Base; + +#define PyModuleDef_HEAD_INIT { \ + PyObject_HEAD_INIT(NULL) \ + NULL, /* m_init */ \ + 0, /* m_index */ \ + NULL, /* m_copy */ \ + } + +struct PyModuleDef_Slot; +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* New in 3.5 */ +typedef struct PyModuleDef_Slot{ + int slot; + void *value; +} PyModuleDef_Slot; + +#define Py_mod_create 1 +#define Py_mod_exec 2 + +#ifndef Py_LIMITED_API +#define _Py_mod_LAST_SLOT 2 +#endif + +#endif /* New in 3.5 */ + +typedef struct PyModuleDef{ + PyModuleDef_Base m_base; + const char* m_name; + const char* m_doc; + Py_ssize_t m_size; + PyMethodDef *m_methods; + struct PyModuleDef_Slot* m_slots; + traverseproc m_traverse; + inquiry m_clear; + freefunc m_free; +} PyModuleDef; + +#ifdef __cplusplus +} +#endif +#endif /* !Py_MODULEOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/namespaceobject.h b/qrenderdoc/3rdparty/python/include/namespaceobject.h new file mode 100644 index 000000000..0c8d95c0f --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/namespaceobject.h @@ -0,0 +1,19 @@ + +/* simple namespace object interface */ + +#ifndef NAMESPACEOBJECT_H +#define NAMESPACEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +PyAPI_DATA(PyTypeObject) _PyNamespace_Type; + +PyAPI_FUNC(PyObject *) _PyNamespace_New(PyObject *kwds); +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !NAMESPACEOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/node.h b/qrenderdoc/3rdparty/python/include/node.h new file mode 100644 index 000000000..654ad8582 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/node.h @@ -0,0 +1,44 @@ + +/* Parse tree node interface */ + +#ifndef Py_NODE_H +#define Py_NODE_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _node { + short n_type; + char *n_str; + int n_lineno; + int n_col_offset; + int n_nchildren; + struct _node *n_child; +} node; + +PyAPI_FUNC(node *) PyNode_New(int type); +PyAPI_FUNC(int) PyNode_AddChild(node *n, int type, + char *str, int lineno, int col_offset); +PyAPI_FUNC(void) PyNode_Free(node *n); +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_ssize_t) _PyNode_SizeOf(node *n); +#endif + +/* Node access functions */ +#define NCH(n) ((n)->n_nchildren) + +#define CHILD(n, i) (&(n)->n_child[i]) +#define RCHILD(n, i) (CHILD(n, NCH(n) + i)) +#define TYPE(n) ((n)->n_type) +#define STR(n) ((n)->n_str) +#define LINENO(n) ((n)->n_lineno) + +/* Assert that the type of a node is what we expect */ +#define REQ(n, type) assert(TYPE(n) == (type)) + +PyAPI_FUNC(void) PyNode_ListTree(node *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_NODE_H */ diff --git a/qrenderdoc/3rdparty/python/include/object.h b/qrenderdoc/3rdparty/python/include/object.h new file mode 100644 index 000000000..63e37b8d3 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/object.h @@ -0,0 +1,1077 @@ +#ifndef Py_OBJECT_H +#define Py_OBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Object and type object interface */ + +/* +Objects are structures allocated on the heap. Special rules apply to +the use of objects to ensure they are properly garbage-collected. +Objects are never allocated statically or on the stack; they must be +accessed through special macros and functions only. (Type objects are +exceptions to the first rule; the standard types are represented by +statically initialized type objects, although work on type/class unification +for Python 2.2 made it possible to have heap-allocated type objects too). + +An object has a 'reference count' that is increased or decreased when a +pointer to the object is copied or deleted; when the reference count +reaches zero there are no references to the object left and it can be +removed from the heap. + +An object has a 'type' that determines what it represents and what kind +of data it contains. An object's type is fixed when it is created. +Types themselves are represented as objects; an object contains a +pointer to the corresponding type object. The type itself has a type +pointer pointing to the object representing the type 'type', which +contains a pointer to itself!). + +Objects do not float around in memory; once allocated an object keeps +the same size and address. Objects that must hold variable-size data +can contain pointers to variable-size parts of the object. Not all +objects of the same type have the same size; but the size cannot change +after allocation. (These restrictions are made so a reference to an +object can be simply a pointer -- moving an object would require +updating all the pointers, and changing an object's size would require +moving it if there was another object right next to it.) + +Objects are always accessed through pointers of the type 'PyObject *'. +The type 'PyObject' is a structure that only contains the reference count +and the type pointer. The actual memory allocated for an object +contains other data that can only be accessed after casting the pointer +to a pointer to a longer structure type. This longer type must start +with the reference count and type fields; the macro PyObject_HEAD should be +used for this (to accommodate for future changes). The implementation +of a particular object type can cast the object pointer to the proper +type and back. + +A standard interface exists for objects that contain an array of items +whose size is determined when the object is allocated. +*/ + +/* Py_DEBUG implies Py_TRACE_REFS. */ +#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS) +#define Py_TRACE_REFS +#endif + +/* Py_TRACE_REFS implies Py_REF_DEBUG. */ +#if defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG) +#define Py_REF_DEBUG +#endif + +#if defined(Py_LIMITED_API) && defined(Py_REF_DEBUG) +#error Py_LIMITED_API is incompatible with Py_DEBUG, Py_TRACE_REFS, and Py_REF_DEBUG +#endif + + +#ifdef Py_TRACE_REFS +/* Define pointers to support a doubly-linked list of all live heap objects. */ +#define _PyObject_HEAD_EXTRA \ + struct _object *_ob_next; \ + struct _object *_ob_prev; + +#define _PyObject_EXTRA_INIT 0, 0, + +#else +#define _PyObject_HEAD_EXTRA +#define _PyObject_EXTRA_INIT +#endif + +/* PyObject_HEAD defines the initial segment of every PyObject. */ +#define PyObject_HEAD PyObject ob_base; + +#define PyObject_HEAD_INIT(type) \ + { _PyObject_EXTRA_INIT \ + 1, type }, + +#define PyVarObject_HEAD_INIT(type, size) \ + { PyObject_HEAD_INIT(type) size }, + +/* PyObject_VAR_HEAD defines the initial segment of all variable-size + * container objects. These end with a declaration of an array with 1 + * element, but enough space is malloc'ed so that the array actually + * has room for ob_size elements. Note that ob_size is an element count, + * not necessarily a byte count. + */ +#define PyObject_VAR_HEAD PyVarObject ob_base; +#define Py_INVALID_SIZE (Py_ssize_t)-1 + +/* Nothing is actually declared to be a PyObject, but every pointer to + * a Python object can be cast to a PyObject*. This is inheritance built + * by hand. Similarly every pointer to a variable-size Python object can, + * in addition, be cast to PyVarObject*. + */ +typedef struct _object { + _PyObject_HEAD_EXTRA + Py_ssize_t ob_refcnt; + struct _typeobject *ob_type; +} PyObject; + +typedef struct { + PyObject ob_base; + Py_ssize_t ob_size; /* Number of items in variable part */ +} PyVarObject; + +#define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt) +#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) +#define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size) + +#ifndef Py_LIMITED_API +/********************* String Literals ****************************************/ +/* This structure helps managing static strings. The basic usage goes like this: + Instead of doing + + r = PyObject_CallMethod(o, "foo", "args", ...); + + do + + _Py_IDENTIFIER(foo); + ... + r = _PyObject_CallMethodId(o, &PyId_foo, "args", ...); + + PyId_foo is a static variable, either on block level or file level. On first + usage, the string "foo" is interned, and the structures are linked. On interpreter + shutdown, all strings are released (through _PyUnicode_ClearStaticStrings). + + Alternatively, _Py_static_string allows choosing the variable name. + _PyUnicode_FromId returns a borrowed reference to the interned string. + _PyObject_{Get,Set,Has}AttrId are __getattr__ versions using _Py_Identifier*. +*/ +typedef struct _Py_Identifier { + struct _Py_Identifier *next; + const char* string; + PyObject *object; +} _Py_Identifier; + +#define _Py_static_string_init(value) { .next = NULL, .string = value, .object = NULL } +#define _Py_static_string(varname, value) static _Py_Identifier varname = _Py_static_string_init(value) +#define _Py_IDENTIFIER(varname) _Py_static_string(PyId_##varname, #varname) + +#endif /* !Py_LIMITED_API */ + +/* +Type objects contain a string containing the type name (to help somewhat +in debugging), the allocation parameters (see PyObject_New() and +PyObject_NewVar()), +and methods for accessing objects of the type. Methods are optional, a +nil pointer meaning that particular kind of access is not available for +this type. The Py_DECREF() macro uses the tp_dealloc method without +checking for a nil pointer; it should always be implemented except if +the implementation can guarantee that the reference count will never +reach zero (e.g., for statically allocated type objects). + +NB: the methods for certain type groups are now contained in separate +method blocks. +*/ + +typedef PyObject * (*unaryfunc)(PyObject *); +typedef PyObject * (*binaryfunc)(PyObject *, PyObject *); +typedef PyObject * (*ternaryfunc)(PyObject *, PyObject *, PyObject *); +typedef int (*inquiry)(PyObject *); +typedef Py_ssize_t (*lenfunc)(PyObject *); +typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t); +typedef PyObject *(*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t); +typedef int(*ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *); +typedef int(*ssizessizeobjargproc)(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *); +typedef int(*objobjargproc)(PyObject *, PyObject *, PyObject *); + +#ifndef Py_LIMITED_API +/* buffer interface */ +typedef struct bufferinfo { + void *buf; + PyObject *obj; /* owned reference */ + Py_ssize_t len; + Py_ssize_t itemsize; /* This is Py_ssize_t so it can be + pointed to by strides in simple case.*/ + int readonly; + int ndim; + char *format; + Py_ssize_t *shape; + Py_ssize_t *strides; + Py_ssize_t *suboffsets; + void *internal; +} Py_buffer; + +typedef int (*getbufferproc)(PyObject *, Py_buffer *, int); +typedef void (*releasebufferproc)(PyObject *, Py_buffer *); + +/* Maximum number of dimensions */ +#define PyBUF_MAX_NDIM 64 + +/* Flags for getting buffers */ +#define PyBUF_SIMPLE 0 +#define PyBUF_WRITABLE 0x0001 +/* we used to include an E, backwards compatible alias */ +#define PyBUF_WRITEABLE PyBUF_WRITABLE +#define PyBUF_FORMAT 0x0004 +#define PyBUF_ND 0x0008 +#define PyBUF_STRIDES (0x0010 | PyBUF_ND) +#define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES) +#define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES) +#define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES) +#define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES) + +#define PyBUF_CONTIG (PyBUF_ND | PyBUF_WRITABLE) +#define PyBUF_CONTIG_RO (PyBUF_ND) + +#define PyBUF_STRIDED (PyBUF_STRIDES | PyBUF_WRITABLE) +#define PyBUF_STRIDED_RO (PyBUF_STRIDES) + +#define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_WRITABLE | PyBUF_FORMAT) +#define PyBUF_RECORDS_RO (PyBUF_STRIDES | PyBUF_FORMAT) + +#define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_WRITABLE | PyBUF_FORMAT) +#define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT) + + +#define PyBUF_READ 0x100 +#define PyBUF_WRITE 0x200 + +/* End buffer interface */ +#endif /* Py_LIMITED_API */ + +typedef int (*objobjproc)(PyObject *, PyObject *); +typedef int (*visitproc)(PyObject *, void *); +typedef int (*traverseproc)(PyObject *, visitproc, void *); + +#ifndef Py_LIMITED_API +typedef struct { + /* Number implementations must check *both* + arguments for proper type and implement the necessary conversions + in the slot functions themselves. */ + + binaryfunc nb_add; + binaryfunc nb_subtract; + binaryfunc nb_multiply; + binaryfunc nb_remainder; + binaryfunc nb_divmod; + ternaryfunc nb_power; + unaryfunc nb_negative; + unaryfunc nb_positive; + unaryfunc nb_absolute; + inquiry nb_bool; + unaryfunc nb_invert; + binaryfunc nb_lshift; + binaryfunc nb_rshift; + binaryfunc nb_and; + binaryfunc nb_xor; + binaryfunc nb_or; + unaryfunc nb_int; + void *nb_reserved; /* the slot formerly known as nb_long */ + unaryfunc nb_float; + + binaryfunc nb_inplace_add; + binaryfunc nb_inplace_subtract; + binaryfunc nb_inplace_multiply; + binaryfunc nb_inplace_remainder; + ternaryfunc nb_inplace_power; + binaryfunc nb_inplace_lshift; + binaryfunc nb_inplace_rshift; + binaryfunc nb_inplace_and; + binaryfunc nb_inplace_xor; + binaryfunc nb_inplace_or; + + binaryfunc nb_floor_divide; + binaryfunc nb_true_divide; + binaryfunc nb_inplace_floor_divide; + binaryfunc nb_inplace_true_divide; + + unaryfunc nb_index; + + binaryfunc nb_matrix_multiply; + binaryfunc nb_inplace_matrix_multiply; +} PyNumberMethods; + +typedef struct { + lenfunc sq_length; + binaryfunc sq_concat; + ssizeargfunc sq_repeat; + ssizeargfunc sq_item; + void *was_sq_slice; + ssizeobjargproc sq_ass_item; + void *was_sq_ass_slice; + objobjproc sq_contains; + + binaryfunc sq_inplace_concat; + ssizeargfunc sq_inplace_repeat; +} PySequenceMethods; + +typedef struct { + lenfunc mp_length; + binaryfunc mp_subscript; + objobjargproc mp_ass_subscript; +} PyMappingMethods; + +typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; +} PyAsyncMethods; + +typedef struct { + getbufferproc bf_getbuffer; + releasebufferproc bf_releasebuffer; +} PyBufferProcs; +#endif /* Py_LIMITED_API */ + +typedef void (*freefunc)(void *); +typedef void (*destructor)(PyObject *); +#ifndef Py_LIMITED_API +/* We can't provide a full compile-time check that limited-API + users won't implement tp_print. However, not defining printfunc + and making tp_print of a different function pointer type + should at least cause a warning in most cases. */ +typedef int (*printfunc)(PyObject *, FILE *, int); +#endif +typedef PyObject *(*getattrfunc)(PyObject *, char *); +typedef PyObject *(*getattrofunc)(PyObject *, PyObject *); +typedef int (*setattrfunc)(PyObject *, char *, PyObject *); +typedef int (*setattrofunc)(PyObject *, PyObject *, PyObject *); +typedef PyObject *(*reprfunc)(PyObject *); +typedef Py_hash_t (*hashfunc)(PyObject *); +typedef PyObject *(*richcmpfunc) (PyObject *, PyObject *, int); +typedef PyObject *(*getiterfunc) (PyObject *); +typedef PyObject *(*iternextfunc) (PyObject *); +typedef PyObject *(*descrgetfunc) (PyObject *, PyObject *, PyObject *); +typedef int (*descrsetfunc) (PyObject *, PyObject *, PyObject *); +typedef int (*initproc)(PyObject *, PyObject *, PyObject *); +typedef PyObject *(*newfunc)(struct _typeobject *, PyObject *, PyObject *); +typedef PyObject *(*allocfunc)(struct _typeobject *, Py_ssize_t); + +#ifdef Py_LIMITED_API +typedef struct _typeobject PyTypeObject; /* opaque */ +#else +typedef struct _typeobject { + PyObject_VAR_HEAD + const char *tp_name; /* For printing, in format "." */ + Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */ + + /* Methods to implement standard operations */ + + destructor tp_dealloc; + printfunc tp_print; + getattrfunc tp_getattr; + setattrfunc tp_setattr; + PyAsyncMethods *tp_as_async; /* formerly known as tp_compare (Python 2) + or tp_reserved (Python 3) */ + reprfunc tp_repr; + + /* Method suites for standard classes */ + + PyNumberMethods *tp_as_number; + PySequenceMethods *tp_as_sequence; + PyMappingMethods *tp_as_mapping; + + /* More standard operations (here for binary compatibility) */ + + hashfunc tp_hash; + ternaryfunc tp_call; + reprfunc tp_str; + getattrofunc tp_getattro; + setattrofunc tp_setattro; + + /* Functions to access object as input/output buffer */ + PyBufferProcs *tp_as_buffer; + + /* Flags to define presence of optional/expanded features */ + unsigned long tp_flags; + + const char *tp_doc; /* Documentation string */ + + /* Assigned meaning in release 2.0 */ + /* call function for all accessible objects */ + traverseproc tp_traverse; + + /* delete references to contained objects */ + inquiry tp_clear; + + /* Assigned meaning in release 2.1 */ + /* rich comparisons */ + richcmpfunc tp_richcompare; + + /* weak reference enabler */ + Py_ssize_t tp_weaklistoffset; + + /* Iterators */ + getiterfunc tp_iter; + iternextfunc tp_iternext; + + /* Attribute descriptor and subclassing stuff */ + struct PyMethodDef *tp_methods; + struct PyMemberDef *tp_members; + struct PyGetSetDef *tp_getset; + struct _typeobject *tp_base; + PyObject *tp_dict; + descrgetfunc tp_descr_get; + descrsetfunc tp_descr_set; + Py_ssize_t tp_dictoffset; + initproc tp_init; + allocfunc tp_alloc; + newfunc tp_new; + freefunc tp_free; /* Low-level free-memory routine */ + inquiry tp_is_gc; /* For PyObject_IS_GC */ + PyObject *tp_bases; + PyObject *tp_mro; /* method resolution order */ + PyObject *tp_cache; + PyObject *tp_subclasses; + PyObject *tp_weaklist; + destructor tp_del; + + /* Type attribute cache version tag. Added in version 2.6 */ + unsigned int tp_version_tag; + + destructor tp_finalize; + +#ifdef COUNT_ALLOCS + /* these must be last and never explicitly initialized */ + Py_ssize_t tp_allocs; + Py_ssize_t tp_frees; + Py_ssize_t tp_maxalloc; + struct _typeobject *tp_prev; + struct _typeobject *tp_next; +#endif +} PyTypeObject; +#endif + +typedef struct{ + int slot; /* slot id, see below */ + void *pfunc; /* function pointer */ +} PyType_Slot; + +typedef struct{ + const char* name; + int basicsize; + int itemsize; + unsigned int flags; + PyType_Slot *slots; /* terminated by slot==0. */ +} PyType_Spec; + +PyAPI_FUNC(PyObject*) PyType_FromSpec(PyType_Spec*); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject*) PyType_FromSpecWithBases(PyType_Spec*, PyObject*); +#endif +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000 +PyAPI_FUNC(void*) PyType_GetSlot(PyTypeObject*, int); +#endif + +#ifndef Py_LIMITED_API +/* The *real* layout of a type object when allocated on the heap */ +typedef struct _heaptypeobject { + /* Note: there's a dependency on the order of these members + in slotptr() in typeobject.c . */ + PyTypeObject ht_type; + PyAsyncMethods as_async; + PyNumberMethods as_number; + PyMappingMethods as_mapping; + PySequenceMethods as_sequence; /* as_sequence comes after as_mapping, + so that the mapping wins when both + the mapping and the sequence define + a given operator (e.g. __getitem__). + see add_operators() in typeobject.c . */ + PyBufferProcs as_buffer; + PyObject *ht_name, *ht_slots, *ht_qualname; + struct _dictkeysobject *ht_cached_keys; + /* here are optional user slots, followed by the members. */ +} PyHeapTypeObject; + +/* access macro to the members which are floating "behind" the object */ +#define PyHeapType_GET_MEMBERS(etype) \ + ((PyMemberDef *)(((char *)etype) + Py_TYPE(etype)->tp_basicsize)) +#endif + +/* Generic type check */ +PyAPI_FUNC(int) PyType_IsSubtype(PyTypeObject *, PyTypeObject *); +#define PyObject_TypeCheck(ob, tp) \ + (Py_TYPE(ob) == (tp) || PyType_IsSubtype(Py_TYPE(ob), (tp))) + +PyAPI_DATA(PyTypeObject) PyType_Type; /* built-in 'type' */ +PyAPI_DATA(PyTypeObject) PyBaseObject_Type; /* built-in 'object' */ +PyAPI_DATA(PyTypeObject) PySuper_Type; /* built-in 'super' */ + +PyAPI_FUNC(unsigned long) PyType_GetFlags(PyTypeObject*); + +#define PyType_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS) +#define PyType_CheckExact(op) (Py_TYPE(op) == &PyType_Type) + +PyAPI_FUNC(int) PyType_Ready(PyTypeObject *); +PyAPI_FUNC(PyObject *) PyType_GenericAlloc(PyTypeObject *, Py_ssize_t); +PyAPI_FUNC(PyObject *) PyType_GenericNew(PyTypeObject *, + PyObject *, PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyType_Lookup(PyTypeObject *, PyObject *); +PyAPI_FUNC(PyObject *) _PyType_LookupId(PyTypeObject *, _Py_Identifier *); +PyAPI_FUNC(PyObject *) _PyObject_LookupSpecial(PyObject *, _Py_Identifier *); +PyAPI_FUNC(PyTypeObject *) _PyType_CalculateMetaclass(PyTypeObject *, PyObject *); +#endif +PyAPI_FUNC(unsigned int) PyType_ClearCache(void); +PyAPI_FUNC(void) PyType_Modified(PyTypeObject *); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyType_GetDocFromInternalDoc(const char *, const char *); +PyAPI_FUNC(PyObject *) _PyType_GetTextSignatureFromInternalDoc(const char *, const char *); +#endif + +/* Generic operations on objects */ +#ifndef Py_LIMITED_API +struct _Py_Identifier; +PyAPI_FUNC(int) PyObject_Print(PyObject *, FILE *, int); +PyAPI_FUNC(void) _Py_BreakPoint(void); +PyAPI_FUNC(void) _PyObject_Dump(PyObject *); +#endif +PyAPI_FUNC(PyObject *) PyObject_Repr(PyObject *); +PyAPI_FUNC(PyObject *) PyObject_Str(PyObject *); +PyAPI_FUNC(PyObject *) PyObject_ASCII(PyObject *); +PyAPI_FUNC(PyObject *) PyObject_Bytes(PyObject *); +PyAPI_FUNC(PyObject *) PyObject_RichCompare(PyObject *, PyObject *, int); +PyAPI_FUNC(int) PyObject_RichCompareBool(PyObject *, PyObject *, int); +PyAPI_FUNC(PyObject *) PyObject_GetAttrString(PyObject *, const char *); +PyAPI_FUNC(int) PyObject_SetAttrString(PyObject *, const char *, PyObject *); +PyAPI_FUNC(int) PyObject_HasAttrString(PyObject *, const char *); +PyAPI_FUNC(PyObject *) PyObject_GetAttr(PyObject *, PyObject *); +PyAPI_FUNC(int) PyObject_SetAttr(PyObject *, PyObject *, PyObject *); +PyAPI_FUNC(int) PyObject_HasAttr(PyObject *, PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyObject_IsAbstract(PyObject *); +PyAPI_FUNC(PyObject *) _PyObject_GetAttrId(PyObject *, struct _Py_Identifier *); +PyAPI_FUNC(int) _PyObject_SetAttrId(PyObject *, struct _Py_Identifier *, PyObject *); +PyAPI_FUNC(int) _PyObject_HasAttrId(PyObject *, struct _Py_Identifier *); +PyAPI_FUNC(PyObject **) _PyObject_GetDictPtr(PyObject *); +#endif +PyAPI_FUNC(PyObject *) PyObject_SelfIter(PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyObject_NextNotImplemented(PyObject *); +#endif +PyAPI_FUNC(PyObject *) PyObject_GenericGetAttr(PyObject *, PyObject *); +PyAPI_FUNC(int) PyObject_GenericSetAttr(PyObject *, + PyObject *, PyObject *); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(int) PyObject_GenericSetDict(PyObject *, PyObject *, void *); +#endif +PyAPI_FUNC(Py_hash_t) PyObject_Hash(PyObject *); +PyAPI_FUNC(Py_hash_t) PyObject_HashNotImplemented(PyObject *); +PyAPI_FUNC(int) PyObject_IsTrue(PyObject *); +PyAPI_FUNC(int) PyObject_Not(PyObject *); +PyAPI_FUNC(int) PyCallable_Check(PyObject *); + +PyAPI_FUNC(void) PyObject_ClearWeakRefs(PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) PyObject_CallFinalizer(PyObject *); +PyAPI_FUNC(int) PyObject_CallFinalizerFromDealloc(PyObject *); +#endif + +#ifndef Py_LIMITED_API +/* Same as PyObject_Generic{Get,Set}Attr, but passing the attributes + dict as the last parameter. */ +PyAPI_FUNC(PyObject *) +_PyObject_GenericGetAttrWithDict(PyObject *, PyObject *, PyObject *); +PyAPI_FUNC(int) +_PyObject_GenericSetAttrWithDict(PyObject *, PyObject *, + PyObject *, PyObject *); +#endif /* !Py_LIMITED_API */ + +/* Helper to look up a builtin object */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) +_PyObject_GetBuiltin(const char *name); +#endif + +/* PyObject_Dir(obj) acts like Python builtins.dir(obj), returning a + list of strings. PyObject_Dir(NULL) is like builtins.dir(), + returning the names of the current locals. In this case, if there are + no current locals, NULL is returned, and PyErr_Occurred() is false. +*/ +PyAPI_FUNC(PyObject *) PyObject_Dir(PyObject *); + + +/* Helpers for printing recursive container types */ +PyAPI_FUNC(int) Py_ReprEnter(PyObject *); +PyAPI_FUNC(void) Py_ReprLeave(PyObject *); + +/* Flag bits for printing: */ +#define Py_PRINT_RAW 1 /* No string quotes etc. */ + +/* +`Type flags (tp_flags) + +These flags are used to extend the type structure in a backwards-compatible +fashion. Extensions can use the flags to indicate (and test) when a given +type structure contains a new feature. The Python core will use these when +introducing new functionality between major revisions (to avoid mid-version +changes in the PYTHON_API_VERSION). + +Arbitration of the flag bit positions will need to be coordinated among +all extension writers who publically release their extensions (this will +be fewer than you might expect!).. + +Most flags were removed as of Python 3.0 to make room for new flags. (Some +flags are not for backwards compatibility but to indicate the presence of an +optional feature; these flags remain of course.) + +Type definitions should use Py_TPFLAGS_DEFAULT for their tp_flags value. + +Code can use PyType_HasFeature(type_ob, flag_value) to test whether the +given type object has a specified feature. +*/ + +/* Set if the type object is dynamically allocated */ +#define Py_TPFLAGS_HEAPTYPE (1UL << 9) + +/* Set if the type allows subclassing */ +#define Py_TPFLAGS_BASETYPE (1UL << 10) + +/* Set if the type is 'ready' -- fully initialized */ +#define Py_TPFLAGS_READY (1UL << 12) + +/* Set while the type is being 'readied', to prevent recursive ready calls */ +#define Py_TPFLAGS_READYING (1UL << 13) + +/* Objects support garbage collection (see objimp.h) */ +#define Py_TPFLAGS_HAVE_GC (1UL << 14) + +/* These two bits are preserved for Stackless Python, next after this is 17 */ +#ifdef STACKLESS +#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION (3UL << 15) +#else +#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION 0 +#endif + +/* Objects support type attribute cache */ +#define Py_TPFLAGS_HAVE_VERSION_TAG (1UL << 18) +#define Py_TPFLAGS_VALID_VERSION_TAG (1UL << 19) + +/* Type is abstract and cannot be instantiated */ +#define Py_TPFLAGS_IS_ABSTRACT (1UL << 20) + +/* These flags are used to determine if a type is a subclass. */ +#define Py_TPFLAGS_LONG_SUBCLASS (1UL << 24) +#define Py_TPFLAGS_LIST_SUBCLASS (1UL << 25) +#define Py_TPFLAGS_TUPLE_SUBCLASS (1UL << 26) +#define Py_TPFLAGS_BYTES_SUBCLASS (1UL << 27) +#define Py_TPFLAGS_UNICODE_SUBCLASS (1UL << 28) +#define Py_TPFLAGS_DICT_SUBCLASS (1UL << 29) +#define Py_TPFLAGS_BASE_EXC_SUBCLASS (1UL << 30) +#define Py_TPFLAGS_TYPE_SUBCLASS (1UL << 31) + +#define Py_TPFLAGS_DEFAULT ( \ + Py_TPFLAGS_HAVE_STACKLESS_EXTENSION | \ + Py_TPFLAGS_HAVE_VERSION_TAG | \ + 0) + +/* NOTE: The following flags reuse lower bits (removed as part of the + * Python 3.0 transition). */ + +/* Type structure has tp_finalize member (3.4) */ +#define Py_TPFLAGS_HAVE_FINALIZE (1UL << 0) + +#ifdef Py_LIMITED_API +#define PyType_HasFeature(t,f) ((PyType_GetFlags(t) & (f)) != 0) +#else +#define PyType_HasFeature(t,f) (((t)->tp_flags & (f)) != 0) +#endif +#define PyType_FastSubclass(t,f) PyType_HasFeature(t,f) + + +/* +The macros Py_INCREF(op) and Py_DECREF(op) are used to increment or decrement +reference counts. Py_DECREF calls the object's deallocator function when +the refcount falls to 0; for +objects that don't contain references to other objects or heap memory +this can be the standard function free(). Both macros can be used +wherever a void expression is allowed. The argument must not be a +NULL pointer. If it may be NULL, use Py_XINCREF/Py_XDECREF instead. +The macro _Py_NewReference(op) initialize reference counts to 1, and +in special builds (Py_REF_DEBUG, Py_TRACE_REFS) performs additional +bookkeeping appropriate to the special build. + +We assume that the reference count field can never overflow; this can +be proven when the size of the field is the same as the pointer size, so +we ignore the possibility. Provided a C int is at least 32 bits (which +is implicitly assumed in many parts of this code), that's enough for +about 2**31 references to an object. + +XXX The following became out of date in Python 2.2, but I'm not sure +XXX what the full truth is now. Certainly, heap-allocated type objects +XXX can and should be deallocated. +Type objects should never be deallocated; the type pointer in an object +is not considered to be a reference to the type object, to save +complications in the deallocation function. (This is actually a +decision that's up to the implementer of each new type so if you want, +you can count such references to the type object.) +*/ + +/* First define a pile of simple helper macros, one set per special + * build symbol. These either expand to the obvious things, or to + * nothing at all when the special mode isn't in effect. The main + * macros can later be defined just once then, yet expand to different + * things depending on which special build options are and aren't in effect. + * Trust me : while painful, this is 20x easier to understand than, + * e.g, defining _Py_NewReference five different times in a maze of nested + * #ifdefs (we used to do that -- it was impenetrable). + */ +#ifdef Py_REF_DEBUG +PyAPI_DATA(Py_ssize_t) _Py_RefTotal; +PyAPI_FUNC(void) _Py_NegativeRefcount(const char *fname, + int lineno, PyObject *op); +PyAPI_FUNC(Py_ssize_t) _Py_GetRefTotal(void); +#define _Py_INC_REFTOTAL _Py_RefTotal++ +#define _Py_DEC_REFTOTAL _Py_RefTotal-- +#define _Py_REF_DEBUG_COMMA , +#define _Py_CHECK_REFCNT(OP) \ +{ if (((PyObject*)OP)->ob_refcnt < 0) \ + _Py_NegativeRefcount(__FILE__, __LINE__, \ + (PyObject *)(OP)); \ +} +/* Py_REF_DEBUG also controls the display of refcounts and memory block + * allocations at the interactive prompt and at interpreter shutdown + */ +PyAPI_FUNC(void) _PyDebug_PrintTotalRefs(void); +#define _PY_DEBUG_PRINT_TOTAL_REFS() _PyDebug_PrintTotalRefs() +#else +#define _Py_INC_REFTOTAL +#define _Py_DEC_REFTOTAL +#define _Py_REF_DEBUG_COMMA +#define _Py_CHECK_REFCNT(OP) /* a semicolon */; +#define _PY_DEBUG_PRINT_TOTAL_REFS() +#endif /* Py_REF_DEBUG */ + +#ifdef COUNT_ALLOCS +PyAPI_FUNC(void) inc_count(PyTypeObject *); +PyAPI_FUNC(void) dec_count(PyTypeObject *); +#define _Py_INC_TPALLOCS(OP) inc_count(Py_TYPE(OP)) +#define _Py_INC_TPFREES(OP) dec_count(Py_TYPE(OP)) +#define _Py_DEC_TPFREES(OP) Py_TYPE(OP)->tp_frees-- +#define _Py_COUNT_ALLOCS_COMMA , +#else +#define _Py_INC_TPALLOCS(OP) +#define _Py_INC_TPFREES(OP) +#define _Py_DEC_TPFREES(OP) +#define _Py_COUNT_ALLOCS_COMMA +#endif /* COUNT_ALLOCS */ + +#ifdef Py_TRACE_REFS +/* Py_TRACE_REFS is such major surgery that we call external routines. */ +PyAPI_FUNC(void) _Py_NewReference(PyObject *); +PyAPI_FUNC(void) _Py_ForgetReference(PyObject *); +PyAPI_FUNC(void) _Py_Dealloc(PyObject *); +PyAPI_FUNC(void) _Py_PrintReferences(FILE *); +PyAPI_FUNC(void) _Py_PrintReferenceAddresses(FILE *); +PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force); + +#else +/* Without Py_TRACE_REFS, there's little enough to do that we expand code + * inline. + */ +#define _Py_NewReference(op) ( \ + _Py_INC_TPALLOCS(op) _Py_COUNT_ALLOCS_COMMA \ + _Py_INC_REFTOTAL _Py_REF_DEBUG_COMMA \ + Py_REFCNT(op) = 1) + +#define _Py_ForgetReference(op) _Py_INC_TPFREES(op) + +#ifdef Py_LIMITED_API +PyAPI_FUNC(void) _Py_Dealloc(PyObject *); +#else +#define _Py_Dealloc(op) ( \ + _Py_INC_TPFREES(op) _Py_COUNT_ALLOCS_COMMA \ + (*Py_TYPE(op)->tp_dealloc)((PyObject *)(op))) +#endif +#endif /* !Py_TRACE_REFS */ + +#define Py_INCREF(op) ( \ + _Py_INC_REFTOTAL _Py_REF_DEBUG_COMMA \ + ((PyObject *)(op))->ob_refcnt++) + +#define Py_DECREF(op) \ + do { \ + PyObject *_py_decref_tmp = (PyObject *)(op); \ + if (_Py_DEC_REFTOTAL _Py_REF_DEBUG_COMMA \ + --(_py_decref_tmp)->ob_refcnt != 0) \ + _Py_CHECK_REFCNT(_py_decref_tmp) \ + else \ + _Py_Dealloc(_py_decref_tmp); \ + } while (0) + +/* Safely decref `op` and set `op` to NULL, especially useful in tp_clear + * and tp_dealloc implementations. + * + * Note that "the obvious" code can be deadly: + * + * Py_XDECREF(op); + * op = NULL; + * + * Typically, `op` is something like self->containee, and `self` is done + * using its `containee` member. In the code sequence above, suppose + * `containee` is non-NULL with a refcount of 1. Its refcount falls to + * 0 on the first line, which can trigger an arbitrary amount of code, + * possibly including finalizers (like __del__ methods or weakref callbacks) + * coded in Python, which in turn can release the GIL and allow other threads + * to run, etc. Such code may even invoke methods of `self` again, or cause + * cyclic gc to trigger, but-- oops! --self->containee still points to the + * object being torn down, and it may be in an insane state while being torn + * down. This has in fact been a rich historic source of miserable (rare & + * hard-to-diagnose) segfaulting (and other) bugs. + * + * The safe way is: + * + * Py_CLEAR(op); + * + * That arranges to set `op` to NULL _before_ decref'ing, so that any code + * triggered as a side-effect of `op` getting torn down no longer believes + * `op` points to a valid object. + * + * There are cases where it's safe to use the naive code, but they're brittle. + * For example, if `op` points to a Python integer, you know that destroying + * one of those can't cause problems -- but in part that relies on that + * Python integers aren't currently weakly referencable. Best practice is + * to use Py_CLEAR() even if you can't think of a reason for why you need to. + */ +#define Py_CLEAR(op) \ + do { \ + PyObject *_py_tmp = (PyObject *)(op); \ + if (_py_tmp != NULL) { \ + (op) = NULL; \ + Py_DECREF(_py_tmp); \ + } \ + } while (0) + +/* Macros to use in case the object pointer may be NULL: */ +#define Py_XINCREF(op) \ + do { \ + PyObject *_py_xincref_tmp = (PyObject *)(op); \ + if (_py_xincref_tmp != NULL) \ + Py_INCREF(_py_xincref_tmp); \ + } while (0) + +#define Py_XDECREF(op) \ + do { \ + PyObject *_py_xdecref_tmp = (PyObject *)(op); \ + if (_py_xdecref_tmp != NULL) \ + Py_DECREF(_py_xdecref_tmp); \ + } while (0) + +#ifndef Py_LIMITED_API +/* Safely decref `op` and set `op` to `op2`. + * + * As in case of Py_CLEAR "the obvious" code can be deadly: + * + * Py_DECREF(op); + * op = op2; + * + * The safe way is: + * + * Py_SETREF(op, op2); + * + * That arranges to set `op` to `op2` _before_ decref'ing, so that any code + * triggered as a side-effect of `op` getting torn down no longer believes + * `op` points to a valid object. + * + * Py_XSETREF is a variant of Py_SETREF that uses Py_XDECREF instead of + * Py_DECREF. + */ + +#define Py_SETREF(op, op2) \ + do { \ + PyObject *_py_tmp = (PyObject *)(op); \ + (op) = (op2); \ + Py_DECREF(_py_tmp); \ + } while (0) + +#define Py_XSETREF(op, op2) \ + do { \ + PyObject *_py_tmp = (PyObject *)(op); \ + (op) = (op2); \ + Py_XDECREF(_py_tmp); \ + } while (0) + +#endif /* ifndef Py_LIMITED_API */ + +/* +These are provided as conveniences to Python runtime embedders, so that +they can have object code that is not dependent on Python compilation flags. +*/ +PyAPI_FUNC(void) Py_IncRef(PyObject *); +PyAPI_FUNC(void) Py_DecRef(PyObject *); + +#ifndef Py_LIMITED_API +PyAPI_DATA(PyTypeObject) _PyNone_Type; +PyAPI_DATA(PyTypeObject) _PyNotImplemented_Type; +#endif /* !Py_LIMITED_API */ + +/* +_Py_NoneStruct is an object of undefined type which can be used in contexts +where NULL (nil) is not suitable (since NULL often means 'error'). + +Don't forget to apply Py_INCREF() when returning this value!!! +*/ +PyAPI_DATA(PyObject) _Py_NoneStruct; /* Don't use this directly */ +#define Py_None (&_Py_NoneStruct) + +/* Macro for returning Py_None from a function */ +#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None + +/* +Py_NotImplemented is a singleton used to signal that an operation is +not implemented for a given type combination. +*/ +PyAPI_DATA(PyObject) _Py_NotImplementedStruct; /* Don't use this directly */ +#define Py_NotImplemented (&_Py_NotImplementedStruct) + +/* Macro for returning Py_NotImplemented from a function */ +#define Py_RETURN_NOTIMPLEMENTED \ + return Py_INCREF(Py_NotImplemented), Py_NotImplemented + +/* Rich comparison opcodes */ +#define Py_LT 0 +#define Py_LE 1 +#define Py_EQ 2 +#define Py_NE 3 +#define Py_GT 4 +#define Py_GE 5 + +#ifndef Py_LIMITED_API +/* Maps Py_LT to Py_GT, ..., Py_GE to Py_LE. + * Defined in object.c. + */ +PyAPI_DATA(int) _Py_SwappedOp[]; +#endif /* !Py_LIMITED_API */ + + +/* +More conventions +================ + +Argument Checking +----------------- + +Functions that take objects as arguments normally don't check for nil +arguments, but they do check the type of the argument, and return an +error if the function doesn't apply to the type. + +Failure Modes +------------- + +Functions may fail for a variety of reasons, including running out of +memory. This is communicated to the caller in two ways: an error string +is set (see errors.h), and the function result differs: functions that +normally return a pointer return NULL for failure, functions returning +an integer return -1 (which could be a legal return value too!), and +other functions return 0 for success and -1 for failure. +Callers should always check for errors before using the result. If +an error was set, the caller must either explicitly clear it, or pass +the error on to its caller. + +Reference Counts +---------------- + +It takes a while to get used to the proper usage of reference counts. + +Functions that create an object set the reference count to 1; such new +objects must be stored somewhere or destroyed again with Py_DECREF(). +Some functions that 'store' objects, such as PyTuple_SetItem() and +PyList_SetItem(), +don't increment the reference count of the object, since the most +frequent use is to store a fresh object. Functions that 'retrieve' +objects, such as PyTuple_GetItem() and PyDict_GetItemString(), also +don't increment +the reference count, since most frequently the object is only looked at +quickly. Thus, to retrieve an object and store it again, the caller +must call Py_INCREF() explicitly. + +NOTE: functions that 'consume' a reference count, like +PyList_SetItem(), consume the reference even if the object wasn't +successfully stored, to simplify error handling. + +It seems attractive to make other functions that take an object as +argument consume a reference count; however, this may quickly get +confusing (even the current practice is already confusing). Consider +it carefully, it may save lots of calls to Py_INCREF() and Py_DECREF() at +times. +*/ + + +/* Trashcan mechanism, thanks to Christian Tismer. + +When deallocating a container object, it's possible to trigger an unbounded +chain of deallocations, as each Py_DECREF in turn drops the refcount on "the +next" object in the chain to 0. This can easily lead to stack faults, and +especially in threads (which typically have less stack space to work with). + +A container object that participates in cyclic gc can avoid this by +bracketing the body of its tp_dealloc function with a pair of macros: + +static void +mytype_dealloc(mytype *p) +{ + ... declarations go here ... + + PyObject_GC_UnTrack(p); // must untrack first + Py_TRASHCAN_SAFE_BEGIN(p) + ... The body of the deallocator goes here, including all calls ... + ... to Py_DECREF on contained objects. ... + Py_TRASHCAN_SAFE_END(p) +} + +CAUTION: Never return from the middle of the body! If the body needs to +"get out early", put a label immediately before the Py_TRASHCAN_SAFE_END +call, and goto it. Else the call-depth counter (see below) will stay +above 0 forever, and the trashcan will never get emptied. + +How it works: The BEGIN macro increments a call-depth counter. So long +as this counter is small, the body of the deallocator is run directly without +further ado. But if the counter gets large, it instead adds p to a list of +objects to be deallocated later, skips the body of the deallocator, and +resumes execution after the END macro. The tp_dealloc routine then returns +without deallocating anything (and so unbounded call-stack depth is avoided). + +When the call stack finishes unwinding again, code generated by the END macro +notices this, and calls another routine to deallocate all the objects that +may have been added to the list of deferred deallocations. In effect, a +chain of N deallocations is broken into N / PyTrash_UNWIND_LEVEL pieces, +with the call stack never exceeding a depth of PyTrash_UNWIND_LEVEL. +*/ + +#ifndef Py_LIMITED_API +/* This is the old private API, invoked by the macros before 3.2.4. + Kept for binary compatibility of extensions using the stable ABI. */ +PyAPI_FUNC(void) _PyTrash_deposit_object(PyObject*); +PyAPI_FUNC(void) _PyTrash_destroy_chain(void); +PyAPI_DATA(int) _PyTrash_delete_nesting; +PyAPI_DATA(PyObject *) _PyTrash_delete_later; +#endif /* !Py_LIMITED_API */ + +/* The new thread-safe private API, invoked by the macros below. */ +PyAPI_FUNC(void) _PyTrash_thread_deposit_object(PyObject*); +PyAPI_FUNC(void) _PyTrash_thread_destroy_chain(void); + +#define PyTrash_UNWIND_LEVEL 50 + +#define Py_TRASHCAN_SAFE_BEGIN(op) \ + do { \ + PyThreadState *_tstate = PyThreadState_GET(); \ + if (_tstate->trash_delete_nesting < PyTrash_UNWIND_LEVEL) { \ + ++_tstate->trash_delete_nesting; + /* The body of the deallocator is here. */ +#define Py_TRASHCAN_SAFE_END(op) \ + --_tstate->trash_delete_nesting; \ + if (_tstate->trash_delete_later && _tstate->trash_delete_nesting <= 0) \ + _PyTrash_thread_destroy_chain(); \ + } \ + else \ + _PyTrash_thread_deposit_object((PyObject*)op); \ + } while (0); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) +_PyDebugAllocatorStats(FILE *out, const char *block_name, int num_blocks, + size_t sizeof_block); +PyAPI_FUNC(void) +_PyObject_DebugTypeStats(FILE *out); +#endif /* ifndef Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_OBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/objimpl.h b/qrenderdoc/3rdparty/python/include/objimpl.h new file mode 100644 index 000000000..746f9c921 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/objimpl.h @@ -0,0 +1,370 @@ +/* The PyObject_ memory family: high-level object memory interfaces. + See pymem.h for the low-level PyMem_ family. +*/ + +#ifndef Py_OBJIMPL_H +#define Py_OBJIMPL_H + +#include "pymem.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BEWARE: + + Each interface exports both functions and macros. Extension modules should + use the functions, to ensure binary compatibility across Python versions. + Because the Python implementation is free to change internal details, and + the macros may (or may not) expose details for speed, if you do use the + macros you must recompile your extensions with each Python release. + + Never mix calls to PyObject_ memory functions with calls to the platform + malloc/realloc/ calloc/free, or with calls to PyMem_. +*/ + +/* +Functions and macros for modules that implement new object types. + + - PyObject_New(type, typeobj) allocates memory for a new object of the given + type, and initializes part of it. 'type' must be the C structure type used + to represent the object, and 'typeobj' the address of the corresponding + type object. Reference count and type pointer are filled in; the rest of + the bytes of the object are *undefined*! The resulting expression type is + 'type *'. The size of the object is determined by the tp_basicsize field + of the type object. + + - PyObject_NewVar(type, typeobj, n) is similar but allocates a variable-size + object with room for n items. In addition to the refcount and type pointer + fields, this also fills in the ob_size field. + + - PyObject_Del(op) releases the memory allocated for an object. It does not + run a destructor -- it only frees the memory. PyObject_Free is identical. + + - PyObject_Init(op, typeobj) and PyObject_InitVar(op, typeobj, n) don't + allocate memory. Instead of a 'type' parameter, they take a pointer to a + new object (allocated by an arbitrary allocator), and initialize its object + header fields. + +Note that objects created with PyObject_{New, NewVar} are allocated using the +specialized Python allocator (implemented in obmalloc.c), if WITH_PYMALLOC is +enabled. In addition, a special debugging allocator is used if PYMALLOC_DEBUG +is also #defined. + +In case a specific form of memory management is needed (for example, if you +must use the platform malloc heap(s), or shared memory, or C++ local storage or +operator new), you must first allocate the object with your custom allocator, +then pass its pointer to PyObject_{Init, InitVar} for filling in its Python- +specific fields: reference count, type pointer, possibly others. You should +be aware that Python no control over these objects because they don't +cooperate with the Python memory manager. Such objects may not be eligible +for automatic garbage collection and you have to make sure that they are +released accordingly whenever their destructor gets called (cf. the specific +form of memory management you're using). + +Unless you have specific memory management requirements, use +PyObject_{New, NewVar, Del}. +*/ + +/* + * Raw object memory interface + * =========================== + */ + +/* Functions to call the same malloc/realloc/free as used by Python's + object allocator. If WITH_PYMALLOC is enabled, these may differ from + the platform malloc/realloc/free. The Python object allocator is + designed for fast, cache-conscious allocation of many "small" objects, + and with low hidden memory overhead. + + PyObject_Malloc(0) returns a unique non-NULL pointer if possible. + + PyObject_Realloc(NULL, n) acts like PyObject_Malloc(n). + PyObject_Realloc(p != NULL, 0) does not return NULL, or free the memory + at p. + + Returned pointers must be checked for NULL explicitly; no action is + performed on failure other than to return NULL (no warning it printed, no + exception is set, etc). + + For allocating objects, use PyObject_{New, NewVar} instead whenever + possible. The PyObject_{Malloc, Realloc, Free} family is exposed + so that you can exploit Python's small-block allocator for non-object + uses. If you must use these routines to allocate object memory, make sure + the object gets initialized via PyObject_{Init, InitVar} after obtaining + the raw memory. +*/ +PyAPI_FUNC(void *) PyObject_Malloc(size_t size); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +PyAPI_FUNC(void *) PyObject_Calloc(size_t nelem, size_t elsize); +#endif +PyAPI_FUNC(void *) PyObject_Realloc(void *ptr, size_t new_size); +PyAPI_FUNC(void) PyObject_Free(void *ptr); + +#ifndef Py_LIMITED_API +/* This function returns the number of allocated memory blocks, regardless of size */ +PyAPI_FUNC(Py_ssize_t) _Py_GetAllocatedBlocks(void); +#endif /* !Py_LIMITED_API */ + +/* Macros */ +#ifdef WITH_PYMALLOC +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyObject_DebugMallocStats(FILE *out); +#endif /* #ifndef Py_LIMITED_API */ +#endif + +/* Macros */ +#define PyObject_MALLOC PyObject_Malloc +#define PyObject_REALLOC PyObject_Realloc +#define PyObject_FREE PyObject_Free +#define PyObject_Del PyObject_Free +#define PyObject_DEL PyObject_Free + + +/* + * Generic object allocator interface + * ================================== + */ + +/* Functions */ +PyAPI_FUNC(PyObject *) PyObject_Init(PyObject *, PyTypeObject *); +PyAPI_FUNC(PyVarObject *) PyObject_InitVar(PyVarObject *, + PyTypeObject *, Py_ssize_t); +PyAPI_FUNC(PyObject *) _PyObject_New(PyTypeObject *); +PyAPI_FUNC(PyVarObject *) _PyObject_NewVar(PyTypeObject *, Py_ssize_t); + +#define PyObject_New(type, typeobj) \ + ( (type *) _PyObject_New(typeobj) ) +#define PyObject_NewVar(type, typeobj, n) \ + ( (type *) _PyObject_NewVar((typeobj), (n)) ) + +/* Macros trading binary compatibility for speed. See also pymem.h. + Note that these macros expect non-NULL object pointers.*/ +#define PyObject_INIT(op, typeobj) \ + ( Py_TYPE(op) = (typeobj), _Py_NewReference((PyObject *)(op)), (op) ) +#define PyObject_INIT_VAR(op, typeobj, size) \ + ( Py_SIZE(op) = (size), PyObject_INIT((op), (typeobj)) ) + +#define _PyObject_SIZE(typeobj) ( (typeobj)->tp_basicsize ) + +/* _PyObject_VAR_SIZE returns the number of bytes (as size_t) allocated for a + vrbl-size object with nitems items, exclusive of gc overhead (if any). The + value is rounded up to the closest multiple of sizeof(void *), in order to + ensure that pointer fields at the end of the object are correctly aligned + for the platform (this is of special importance for subclasses of, e.g., + str or int, so that pointers can be stored after the embedded data). + + Note that there's no memory wastage in doing this, as malloc has to + return (at worst) pointer-aligned memory anyway. +*/ +#if ((SIZEOF_VOID_P - 1) & SIZEOF_VOID_P) != 0 +# error "_PyObject_VAR_SIZE requires SIZEOF_VOID_P be a power of 2" +#endif + +#define _PyObject_VAR_SIZE(typeobj, nitems) \ + _Py_SIZE_ROUND_UP((typeobj)->tp_basicsize + \ + (nitems)*(typeobj)->tp_itemsize, \ + SIZEOF_VOID_P) + +#define PyObject_NEW(type, typeobj) \ +( (type *) PyObject_Init( \ + (PyObject *) PyObject_MALLOC( _PyObject_SIZE(typeobj) ), (typeobj)) ) + +#define PyObject_NEW_VAR(type, typeobj, n) \ +( (type *) PyObject_InitVar( \ + (PyVarObject *) PyObject_MALLOC(_PyObject_VAR_SIZE((typeobj),(n)) ),\ + (typeobj), (n)) ) + +/* This example code implements an object constructor with a custom + allocator, where PyObject_New is inlined, and shows the important + distinction between two steps (at least): + 1) the actual allocation of the object storage; + 2) the initialization of the Python specific fields + in this storage with PyObject_{Init, InitVar}. + + PyObject * + YourObject_New(...) + { + PyObject *op; + + op = (PyObject *) Your_Allocator(_PyObject_SIZE(YourTypeStruct)); + if (op == NULL) + return PyErr_NoMemory(); + + PyObject_Init(op, &YourTypeStruct); + + op->ob_field = value; + ... + return op; + } + + Note that in C++, the use of the new operator usually implies that + the 1st step is performed automatically for you, so in a C++ class + constructor you would start directly with PyObject_Init/InitVar +*/ + +#ifndef Py_LIMITED_API +typedef struct { + /* user context passed as the first argument to the 2 functions */ + void *ctx; + + /* allocate an arena of size bytes */ + void* (*alloc) (void *ctx, size_t size); + + /* free an arena */ + void (*free) (void *ctx, void *ptr, size_t size); +} PyObjectArenaAllocator; + +/* Get the arena allocator. */ +PyAPI_FUNC(void) PyObject_GetArenaAllocator(PyObjectArenaAllocator *allocator); + +/* Set the arena allocator. */ +PyAPI_FUNC(void) PyObject_SetArenaAllocator(PyObjectArenaAllocator *allocator); +#endif + + +/* + * Garbage Collection Support + * ========================== + */ + +/* C equivalent of gc.collect() which ignores the state of gc.enabled. */ +PyAPI_FUNC(Py_ssize_t) PyGC_Collect(void); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_ssize_t) _PyGC_CollectNoFail(void); +PyAPI_FUNC(Py_ssize_t) _PyGC_CollectIfEnabled(void); +#endif + +/* Test if a type has a GC head */ +#define PyType_IS_GC(t) PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC) + +/* Test if an object has a GC head */ +#define PyObject_IS_GC(o) (PyType_IS_GC(Py_TYPE(o)) && \ + (Py_TYPE(o)->tp_is_gc == NULL || Py_TYPE(o)->tp_is_gc(o))) + +PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t); +#define PyObject_GC_Resize(type, op, n) \ + ( (type *) _PyObject_GC_Resize((PyVarObject *)(op), (n)) ) + +/* GC information is stored BEFORE the object structure. */ +#ifndef Py_LIMITED_API +typedef union _gc_head { + struct { + union _gc_head *gc_next; + union _gc_head *gc_prev; + Py_ssize_t gc_refs; + } gc; + double dummy; /* force worst-case alignment */ +} PyGC_Head; + +extern PyGC_Head *_PyGC_generation0; + +#define _Py_AS_GC(o) ((PyGC_Head *)(o)-1) + +/* Bit 0 is set when tp_finalize is called */ +#define _PyGC_REFS_MASK_FINALIZED (1 << 0) +/* The (N-1) most significant bits contain the gc state / refcount */ +#define _PyGC_REFS_SHIFT (1) +#define _PyGC_REFS_MASK (((size_t) -1) << _PyGC_REFS_SHIFT) + +#define _PyGCHead_REFS(g) ((g)->gc.gc_refs >> _PyGC_REFS_SHIFT) +#define _PyGCHead_SET_REFS(g, v) do { \ + (g)->gc.gc_refs = ((g)->gc.gc_refs & ~_PyGC_REFS_MASK) \ + | (((size_t)(v)) << _PyGC_REFS_SHIFT); \ + } while (0) +#define _PyGCHead_DECREF(g) ((g)->gc.gc_refs -= 1 << _PyGC_REFS_SHIFT) + +#define _PyGCHead_FINALIZED(g) (((g)->gc.gc_refs & _PyGC_REFS_MASK_FINALIZED) != 0) +#define _PyGCHead_SET_FINALIZED(g, v) do { \ + (g)->gc.gc_refs = ((g)->gc.gc_refs & ~_PyGC_REFS_MASK_FINALIZED) \ + | (v != 0); \ + } while (0) + +#define _PyGC_FINALIZED(o) _PyGCHead_FINALIZED(_Py_AS_GC(o)) +#define _PyGC_SET_FINALIZED(o, v) _PyGCHead_SET_FINALIZED(_Py_AS_GC(o), v) + +#define _PyGC_REFS(o) _PyGCHead_REFS(_Py_AS_GC(o)) + +#define _PyGC_REFS_UNTRACKED (-2) +#define _PyGC_REFS_REACHABLE (-3) +#define _PyGC_REFS_TENTATIVELY_UNREACHABLE (-4) + +/* Tell the GC to track this object. NB: While the object is tracked the + * collector it must be safe to call the ob_traverse method. */ +#define _PyObject_GC_TRACK(o) do { \ + PyGC_Head *g = _Py_AS_GC(o); \ + if (_PyGCHead_REFS(g) != _PyGC_REFS_UNTRACKED) \ + Py_FatalError("GC object already tracked"); \ + _PyGCHead_SET_REFS(g, _PyGC_REFS_REACHABLE); \ + g->gc.gc_next = _PyGC_generation0; \ + g->gc.gc_prev = _PyGC_generation0->gc.gc_prev; \ + g->gc.gc_prev->gc.gc_next = g; \ + _PyGC_generation0->gc.gc_prev = g; \ + } while (0); + +/* Tell the GC to stop tracking this object. + * gc_next doesn't need to be set to NULL, but doing so is a good + * way to provoke memory errors if calling code is confused. + */ +#define _PyObject_GC_UNTRACK(o) do { \ + PyGC_Head *g = _Py_AS_GC(o); \ + assert(_PyGCHead_REFS(g) != _PyGC_REFS_UNTRACKED); \ + _PyGCHead_SET_REFS(g, _PyGC_REFS_UNTRACKED); \ + g->gc.gc_prev->gc.gc_next = g->gc.gc_next; \ + g->gc.gc_next->gc.gc_prev = g->gc.gc_prev; \ + g->gc.gc_next = NULL; \ + } while (0); + +/* True if the object is currently tracked by the GC. */ +#define _PyObject_GC_IS_TRACKED(o) \ + (_PyGC_REFS(o) != _PyGC_REFS_UNTRACKED) + +/* True if the object may be tracked by the GC in the future, or already is. + This can be useful to implement some optimizations. */ +#define _PyObject_GC_MAY_BE_TRACKED(obj) \ + (PyObject_IS_GC(obj) && \ + (!PyTuple_CheckExact(obj) || _PyObject_GC_IS_TRACKED(obj))) +#endif /* Py_LIMITED_API */ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyObject_GC_Malloc(size_t size); +PyAPI_FUNC(PyObject *) _PyObject_GC_Calloc(size_t size); +#endif /* !Py_LIMITED_API */ +PyAPI_FUNC(PyObject *) _PyObject_GC_New(PyTypeObject *); +PyAPI_FUNC(PyVarObject *) _PyObject_GC_NewVar(PyTypeObject *, Py_ssize_t); +PyAPI_FUNC(void) PyObject_GC_Track(void *); +PyAPI_FUNC(void) PyObject_GC_UnTrack(void *); +PyAPI_FUNC(void) PyObject_GC_Del(void *); + +#define PyObject_GC_New(type, typeobj) \ + ( (type *) _PyObject_GC_New(typeobj) ) +#define PyObject_GC_NewVar(type, typeobj, n) \ + ( (type *) _PyObject_GC_NewVar((typeobj), (n)) ) + + +/* Utility macro to help write tp_traverse functions. + * To use this macro, the tp_traverse function must name its arguments + * "visit" and "arg". This is intended to keep tp_traverse functions + * looking as much alike as possible. + */ +#define Py_VISIT(op) \ + do { \ + if (op) { \ + int vret = visit((PyObject *)(op), arg); \ + if (vret) \ + return vret; \ + } \ + } while (0) + + +/* Test if a type supports weak references */ +#define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0) + +#define PyObject_GET_WEAKREFS_LISTPTR(o) \ + ((PyObject **) (((char *) (o)) + Py_TYPE(o)->tp_weaklistoffset)) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_OBJIMPL_H */ diff --git a/qrenderdoc/3rdparty/python/include/odictobject.h b/qrenderdoc/3rdparty/python/include/odictobject.h new file mode 100644 index 000000000..381de58ba --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/odictobject.h @@ -0,0 +1,46 @@ +#ifndef Py_ODICTOBJECT_H +#define Py_ODICTOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* OrderedDict */ + +#ifndef Py_LIMITED_API + +typedef struct _odictobject PyODictObject; + +PyAPI_DATA(PyTypeObject) PyODict_Type; +PyAPI_DATA(PyTypeObject) PyODictIter_Type; +PyAPI_DATA(PyTypeObject) PyODictKeys_Type; +PyAPI_DATA(PyTypeObject) PyODictItems_Type; +PyAPI_DATA(PyTypeObject) PyODictValues_Type; + +#define PyODict_Check(op) PyObject_TypeCheck(op, &PyODict_Type) +#define PyODict_CheckExact(op) (Py_TYPE(op) == &PyODict_Type) +#define PyODict_SIZE(op) ((PyDictObject *)op)->ma_used + +#endif /* Py_LIMITED_API */ + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 + +PyAPI_FUNC(PyObject *) PyODict_New(void); +PyAPI_FUNC(int) PyODict_SetItem(PyObject *od, PyObject *key, PyObject *item); +PyAPI_FUNC(int) PyODict_DelItem(PyObject *od, PyObject *key); + +/* wrappers around PyDict* functions */ +#define PyODict_GetItem(od, key) PyDict_GetItem((PyObject *)od, key) +#define PyODict_GetItemWithError(od, key) \ + PyDict_GetItemWithError((PyObject *)od, key) +#define PyODict_Contains(od, key) PyDict_Contains((PyObject *)od, key) +#define PyODict_Size(od) PyDict_Size((PyObject *)od) +#define PyODict_GetItemString(od, key) \ + PyDict_GetItemString((PyObject *)od, key) + +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_ODICTOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/opcode.h b/qrenderdoc/3rdparty/python/include/opcode.h new file mode 100644 index 000000000..be360e101 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/opcode.h @@ -0,0 +1,146 @@ +/* Auto-generated by Tools/scripts/generate_opcode_h.py */ +#ifndef Py_OPCODE_H +#define Py_OPCODE_H +#ifdef __cplusplus +extern "C" { +#endif + + + /* Instruction opcodes for compiled code */ +#define POP_TOP 1 +#define ROT_TWO 2 +#define ROT_THREE 3 +#define DUP_TOP 4 +#define DUP_TOP_TWO 5 +#define NOP 9 +#define UNARY_POSITIVE 10 +#define UNARY_NEGATIVE 11 +#define UNARY_NOT 12 +#define UNARY_INVERT 15 +#define BINARY_MATRIX_MULTIPLY 16 +#define INPLACE_MATRIX_MULTIPLY 17 +#define BINARY_POWER 19 +#define BINARY_MULTIPLY 20 +#define BINARY_MODULO 22 +#define BINARY_ADD 23 +#define BINARY_SUBTRACT 24 +#define BINARY_SUBSCR 25 +#define BINARY_FLOOR_DIVIDE 26 +#define BINARY_TRUE_DIVIDE 27 +#define INPLACE_FLOOR_DIVIDE 28 +#define INPLACE_TRUE_DIVIDE 29 +#define GET_AITER 50 +#define GET_ANEXT 51 +#define BEFORE_ASYNC_WITH 52 +#define INPLACE_ADD 55 +#define INPLACE_SUBTRACT 56 +#define INPLACE_MULTIPLY 57 +#define INPLACE_MODULO 59 +#define STORE_SUBSCR 60 +#define DELETE_SUBSCR 61 +#define BINARY_LSHIFT 62 +#define BINARY_RSHIFT 63 +#define BINARY_AND 64 +#define BINARY_XOR 65 +#define BINARY_OR 66 +#define INPLACE_POWER 67 +#define GET_ITER 68 +#define GET_YIELD_FROM_ITER 69 +#define PRINT_EXPR 70 +#define LOAD_BUILD_CLASS 71 +#define YIELD_FROM 72 +#define GET_AWAITABLE 73 +#define INPLACE_LSHIFT 75 +#define INPLACE_RSHIFT 76 +#define INPLACE_AND 77 +#define INPLACE_XOR 78 +#define INPLACE_OR 79 +#define BREAK_LOOP 80 +#define WITH_CLEANUP_START 81 +#define WITH_CLEANUP_FINISH 82 +#define RETURN_VALUE 83 +#define IMPORT_STAR 84 +#define SETUP_ANNOTATIONS 85 +#define YIELD_VALUE 86 +#define POP_BLOCK 87 +#define END_FINALLY 88 +#define POP_EXCEPT 89 +#define HAVE_ARGUMENT 90 +#define STORE_NAME 90 +#define DELETE_NAME 91 +#define UNPACK_SEQUENCE 92 +#define FOR_ITER 93 +#define UNPACK_EX 94 +#define STORE_ATTR 95 +#define DELETE_ATTR 96 +#define STORE_GLOBAL 97 +#define DELETE_GLOBAL 98 +#define LOAD_CONST 100 +#define LOAD_NAME 101 +#define BUILD_TUPLE 102 +#define BUILD_LIST 103 +#define BUILD_SET 104 +#define BUILD_MAP 105 +#define LOAD_ATTR 106 +#define COMPARE_OP 107 +#define IMPORT_NAME 108 +#define IMPORT_FROM 109 +#define JUMP_FORWARD 110 +#define JUMP_IF_FALSE_OR_POP 111 +#define JUMP_IF_TRUE_OR_POP 112 +#define JUMP_ABSOLUTE 113 +#define POP_JUMP_IF_FALSE 114 +#define POP_JUMP_IF_TRUE 115 +#define LOAD_GLOBAL 116 +#define CONTINUE_LOOP 119 +#define SETUP_LOOP 120 +#define SETUP_EXCEPT 121 +#define SETUP_FINALLY 122 +#define LOAD_FAST 124 +#define STORE_FAST 125 +#define DELETE_FAST 126 +#define STORE_ANNOTATION 127 +#define RAISE_VARARGS 130 +#define CALL_FUNCTION 131 +#define MAKE_FUNCTION 132 +#define BUILD_SLICE 133 +#define LOAD_CLOSURE 135 +#define LOAD_DEREF 136 +#define STORE_DEREF 137 +#define DELETE_DEREF 138 +#define CALL_FUNCTION_KW 141 +#define CALL_FUNCTION_EX 142 +#define SETUP_WITH 143 +#define EXTENDED_ARG 144 +#define LIST_APPEND 145 +#define SET_ADD 146 +#define MAP_ADD 147 +#define LOAD_CLASSDEREF 148 +#define BUILD_LIST_UNPACK 149 +#define BUILD_MAP_UNPACK 150 +#define BUILD_MAP_UNPACK_WITH_CALL 151 +#define BUILD_TUPLE_UNPACK 152 +#define BUILD_SET_UNPACK 153 +#define SETUP_ASYNC_WITH 154 +#define FORMAT_VALUE 155 +#define BUILD_CONST_KEY_MAP 156 +#define BUILD_STRING 157 +#define BUILD_TUPLE_UNPACK_WITH_CALL 158 + +/* EXCEPT_HANDLER is a special, implicit block type which is created when + entering an except handler. It is not an opcode but we define it here + as we want it to be available to both frameobject.c and ceval.c, while + remaining private.*/ +#define EXCEPT_HANDLER 257 + + +enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE, + PyCmp_GT=Py_GT, PyCmp_GE=Py_GE, PyCmp_IN, PyCmp_NOT_IN, + PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD}; + +#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_OPCODE_H */ diff --git a/qrenderdoc/3rdparty/python/include/osdefs.h b/qrenderdoc/3rdparty/python/include/osdefs.h new file mode 100644 index 000000000..bd84c1c12 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/osdefs.h @@ -0,0 +1,47 @@ +#ifndef Py_OSDEFS_H +#define Py_OSDEFS_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Operating system dependencies */ + +#ifdef MS_WINDOWS +#define SEP L'\\' +#define ALTSEP L'/' +#define MAXPATHLEN 256 +#define DELIM L';' +#endif + +/* Filename separator */ +#ifndef SEP +#define SEP L'/' +#endif + +/* Max pathname length */ +#ifdef __hpux +#include +#include +#ifndef PATH_MAX +#define PATH_MAX MAXPATHLEN +#endif +#endif + +#ifndef MAXPATHLEN +#if defined(PATH_MAX) && PATH_MAX > 1024 +#define MAXPATHLEN PATH_MAX +#else +#define MAXPATHLEN 1024 +#endif +#endif + +/* Search path entry delimiter */ +#ifndef DELIM +#define DELIM L':' +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_OSDEFS_H */ diff --git a/qrenderdoc/3rdparty/python/include/osmodule.h b/qrenderdoc/3rdparty/python/include/osmodule.h new file mode 100644 index 000000000..9095c2fdd --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/osmodule.h @@ -0,0 +1,17 @@ + +/* os module interface */ + +#ifndef Py_OSMODULE_H +#define Py_OSMODULE_H +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 +PyAPI_FUNC(PyObject *) PyOS_FSPath(PyObject *path); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_OSMODULE_H */ diff --git a/qrenderdoc/3rdparty/python/include/parsetok.h b/qrenderdoc/3rdparty/python/include/parsetok.h new file mode 100644 index 000000000..2acb85467 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/parsetok.h @@ -0,0 +1,108 @@ + +/* Parser-tokenizer link interface */ +#ifndef Py_LIMITED_API +#ifndef Py_PARSETOK_H +#define Py_PARSETOK_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + int error; +#ifndef PGEN + /* The filename is useless for pgen, see comment in tok_state structure */ + PyObject *filename; +#endif + int lineno; + int offset; + char *text; /* UTF-8-encoded string */ + int token; + int expected; +} perrdetail; + +#if 0 +#define PyPARSE_YIELD_IS_KEYWORD 0x0001 +#endif + +#define PyPARSE_DONT_IMPLY_DEDENT 0x0002 + +#if 0 +#define PyPARSE_WITH_IS_KEYWORD 0x0003 +#define PyPARSE_PRINT_IS_FUNCTION 0x0004 +#define PyPARSE_UNICODE_LITERALS 0x0008 +#endif + +#define PyPARSE_IGNORE_COOKIE 0x0010 +#define PyPARSE_BARRY_AS_BDFL 0x0020 + +PyAPI_FUNC(node *) PyParser_ParseString(const char *, grammar *, int, + perrdetail *); +PyAPI_FUNC(node *) PyParser_ParseFile (FILE *, const char *, grammar *, int, + const char *, const char *, + perrdetail *); + +PyAPI_FUNC(node *) PyParser_ParseStringFlags(const char *, grammar *, int, + perrdetail *, int); +PyAPI_FUNC(node *) PyParser_ParseFileFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + const char *enc, + grammar *g, + int start, + const char *ps1, + const char *ps2, + perrdetail *err_ret, + int flags); +PyAPI_FUNC(node *) PyParser_ParseFileFlagsEx( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + const char *enc, + grammar *g, + int start, + const char *ps1, + const char *ps2, + perrdetail *err_ret, + int *flags); +PyAPI_FUNC(node *) PyParser_ParseFileObject( + FILE *fp, + PyObject *filename, + const char *enc, + grammar *g, + int start, + const char *ps1, + const char *ps2, + perrdetail *err_ret, + int *flags); + +PyAPI_FUNC(node *) PyParser_ParseStringFlagsFilename( + const char *s, + const char *filename, /* decoded from the filesystem encoding */ + grammar *g, + int start, + perrdetail *err_ret, + int flags); +PyAPI_FUNC(node *) PyParser_ParseStringFlagsFilenameEx( + const char *s, + const char *filename, /* decoded from the filesystem encoding */ + grammar *g, + int start, + perrdetail *err_ret, + int *flags); +PyAPI_FUNC(node *) PyParser_ParseStringObject( + const char *s, + PyObject *filename, + grammar *g, + int start, + perrdetail *err_ret, + int *flags); + +/* Note that the following functions are defined in pythonrun.c, + not in parsetok.c */ +PyAPI_FUNC(void) PyParser_SetError(perrdetail *); +PyAPI_FUNC(void) PyParser_ClearError(perrdetail *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PARSETOK_H */ +#endif /* !Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/patchlevel.h b/qrenderdoc/3rdparty/python/include/patchlevel.h new file mode 100644 index 000000000..e909bb240 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/patchlevel.h @@ -0,0 +1,35 @@ + +/* Python version identification scheme. + + When the major or minor version changes, the VERSION variable in + configure.ac must also be changed. + + There is also (independent) API version information in modsupport.h. +*/ + +/* Values for PY_RELEASE_LEVEL */ +#define PY_RELEASE_LEVEL_ALPHA 0xA +#define PY_RELEASE_LEVEL_BETA 0xB +#define PY_RELEASE_LEVEL_GAMMA 0xC /* For release candidates */ +#define PY_RELEASE_LEVEL_FINAL 0xF /* Serial should be 0 here */ + /* Higher for patch releases */ + +/* Version parsed out into numeric values */ +/*--start constants--*/ +#define PY_MAJOR_VERSION 3 +#define PY_MINOR_VERSION 6 +#define PY_MICRO_VERSION 4 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL +#define PY_RELEASE_SERIAL 0 + +/* Version as a string */ +#define PY_VERSION "3.6.4" +/*--end constants--*/ + +/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. + Use this for numeric comparisons, e.g. #if PY_VERSION_HEX >= ... */ +#define PY_VERSION_HEX ((PY_MAJOR_VERSION << 24) | \ + (PY_MINOR_VERSION << 16) | \ + (PY_MICRO_VERSION << 8) | \ + (PY_RELEASE_LEVEL << 4) | \ + (PY_RELEASE_SERIAL << 0)) diff --git a/qrenderdoc/3rdparty/python/include/pgen.h b/qrenderdoc/3rdparty/python/include/pgen.h new file mode 100644 index 000000000..8a325ed07 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pgen.h @@ -0,0 +1,18 @@ +#ifndef Py_PGEN_H +#define Py_PGEN_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Parser generator interface */ + +extern grammar *meta_grammar(void); + +struct _node; +extern grammar *pgen(struct _node *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PGEN_H */ diff --git a/qrenderdoc/3rdparty/python/include/pgenheaders.h b/qrenderdoc/3rdparty/python/include/pgenheaders.h new file mode 100644 index 000000000..4843de6c0 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pgenheaders.h @@ -0,0 +1,43 @@ +#ifndef Py_PGENHEADERS_H +#define Py_PGENHEADERS_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Include files and extern declarations used by most of the parser. */ + +#include "Python.h" + +PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...) + Py_GCC_ATTRIBUTE((format(printf, 1, 2))); +PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...) + Py_GCC_ATTRIBUTE((format(printf, 1, 2))); + +#define addarc _Py_addarc +#define addbit _Py_addbit +#define adddfa _Py_adddfa +#define addfirstsets _Py_addfirstsets +#define addlabel _Py_addlabel +#define addstate _Py_addstate +#define delbitset _Py_delbitset +#define dumptree _Py_dumptree +#define findlabel _Py_findlabel +#define freegrammar _Py_freegrammar +#define mergebitset _Py_mergebitset +#define meta_grammar _Py_meta_grammar +#define newbitset _Py_newbitset +#define newgrammar _Py_newgrammar +#define pgen _Py_pgen +#define printgrammar _Py_printgrammar +#define printnonterminals _Py_printnonterminals +#define printtree _Py_printtree +#define samebitset _Py_samebitset +#define showtree _Py_showtree +#define tok_dump _Py_tok_dump +#define translatelabels _Py_translatelabels + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PGENHEADERS_H */ diff --git a/qrenderdoc/3rdparty/python/include/py_curses.h b/qrenderdoc/3rdparty/python/include/py_curses.h new file mode 100644 index 000000000..b09dde480 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/py_curses.h @@ -0,0 +1,178 @@ + +#ifndef Py_CURSES_H +#define Py_CURSES_H + +#ifdef __APPLE__ +/* +** On Mac OS X 10.2 [n]curses.h and stdlib.h use different guards +** against multiple definition of wchar_t. +*/ +#ifdef _BSD_WCHAR_T_DEFINED_ +#define _WCHAR_T +#endif +#endif /* __APPLE__ */ + +#ifdef __FreeBSD__ +/* +** On FreeBSD, [n]curses.h and stdlib.h/wchar.h use different guards +** against multiple definition of wchar_t and wint_t. +*/ +#ifdef _XOPEN_SOURCE_EXTENDED +#ifndef __FreeBSD_version +#include +#endif +#if __FreeBSD_version >= 500000 +#ifndef __wchar_t +#define __wchar_t +#endif +#ifndef __wint_t +#define __wint_t +#endif +#else +#ifndef _WCHAR_T +#define _WCHAR_T +#endif +#ifndef _WINT_T +#define _WINT_T +#endif +#endif +#endif +#endif + +#if !defined(HAVE_CURSES_IS_PAD) && defined(WINDOW_HAS_FLAGS) +/* The following definition is necessary for ncurses 5.7; without it, + some of [n]curses.h set NCURSES_OPAQUE to 1, and then Python + can't get at the WINDOW flags field. */ +#define NCURSES_OPAQUE 0 +#endif + +#ifdef HAVE_NCURSES_H +#include +#else +#include +#endif + +#ifdef HAVE_NCURSES_H +/* configure was checking , but we will + use , which has some or all these features. */ +#if !defined(WINDOW_HAS_FLAGS) && !(NCURSES_OPAQUE+0) +#define WINDOW_HAS_FLAGS 1 +#endif +#if !defined(HAVE_CURSES_IS_PAD) && NCURSES_VERSION_PATCH+0 >= 20090906 +#define HAVE_CURSES_IS_PAD 1 +#endif +#ifndef MVWDELCH_IS_EXPRESSION +#define MVWDELCH_IS_EXPRESSION 1 +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PyCurses_API_pointers 4 + +/* Type declarations */ + +typedef struct { + PyObject_HEAD + WINDOW *win; + char *encoding; +} PyCursesWindowObject; + +#define PyCursesWindow_Check(v) (Py_TYPE(v) == &PyCursesWindow_Type) + +#define PyCurses_CAPSULE_NAME "_curses._C_API" + + +#ifdef CURSES_MODULE +/* This section is used when compiling _cursesmodule.c */ + +#else +/* This section is used in modules that use the _cursesmodule API */ + +static void **PyCurses_API; + +#define PyCursesWindow_Type (*(PyTypeObject *) PyCurses_API[0]) +#define PyCursesSetupTermCalled {if (! ((int (*)(void))PyCurses_API[1]) () ) return NULL;} +#define PyCursesInitialised {if (! ((int (*)(void))PyCurses_API[2]) () ) return NULL;} +#define PyCursesInitialisedColor {if (! ((int (*)(void))PyCurses_API[3]) () ) return NULL;} + +#define import_curses() \ + PyCurses_API = (void **)PyCapsule_Import(PyCurses_CAPSULE_NAME, 1); + +#endif + +/* general error messages */ +static const char catchall_ERR[] = "curses function returned ERR"; +static const char catchall_NULL[] = "curses function returned NULL"; + +/* Function Prototype Macros - They are ugly but very, very useful. ;-) + + X - function name + TYPE - parameter Type + ERGSTR - format string for construction of the return value + PARSESTR - format string for argument parsing + */ + +#define NoArgNoReturnFunction(X) \ +static PyObject *PyCurses_ ## X (PyObject *self) \ +{ \ + PyCursesInitialised \ + return PyCursesCheckERR(X(), # X); } + +#define NoArgOrFlagNoReturnFunction(X) \ +static PyObject *PyCurses_ ## X (PyObject *self, PyObject *args) \ +{ \ + int flag = 0; \ + PyCursesInitialised \ + switch(PyTuple_Size(args)) { \ + case 0: \ + return PyCursesCheckERR(X(), # X); \ + case 1: \ + if (!PyArg_ParseTuple(args, "i;True(1) or False(0)", &flag)) return NULL; \ + if (flag) return PyCursesCheckERR(X(), # X); \ + else return PyCursesCheckERR(no ## X (), # X); \ + default: \ + PyErr_SetString(PyExc_TypeError, # X " requires 0 or 1 arguments"); \ + return NULL; } } + +#define NoArgReturnIntFunction(X) \ +static PyObject *PyCurses_ ## X (PyObject *self) \ +{ \ + PyCursesInitialised \ + return PyLong_FromLong((long) X()); } + + +#define NoArgReturnStringFunction(X) \ +static PyObject *PyCurses_ ## X (PyObject *self) \ +{ \ + PyCursesInitialised \ + return PyBytes_FromString(X()); } + +#define NoArgTrueFalseFunction(X) \ +static PyObject *PyCurses_ ## X (PyObject *self) \ +{ \ + PyCursesInitialised \ + if (X () == FALSE) { \ + Py_INCREF(Py_False); \ + return Py_False; \ + } \ + Py_INCREF(Py_True); \ + return Py_True; } + +#define NoArgNoReturnVoidFunction(X) \ +static PyObject *PyCurses_ ## X (PyObject *self) \ +{ \ + PyCursesInitialised \ + X(); \ + Py_INCREF(Py_None); \ + return Py_None; } + +#ifdef __cplusplus +} +#endif + +#endif /* !defined(Py_CURSES_H) */ + + diff --git a/qrenderdoc/3rdparty/python/include/pyarena.h b/qrenderdoc/3rdparty/python/include/pyarena.h new file mode 100644 index 000000000..db3ad0188 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pyarena.h @@ -0,0 +1,64 @@ +/* An arena-like memory interface for the compiler. + */ + +#ifndef Py_LIMITED_API +#ifndef Py_PYARENA_H +#define Py_PYARENA_H + +#ifdef __cplusplus +extern "C" { +#endif + + typedef struct _arena PyArena; + + /* PyArena_New() and PyArena_Free() create a new arena and free it, + respectively. Once an arena has been created, it can be used + to allocate memory via PyArena_Malloc(). Pointers to PyObject can + also be registered with the arena via PyArena_AddPyObject(), and the + arena will ensure that the PyObjects stay alive at least until + PyArena_Free() is called. When an arena is freed, all the memory it + allocated is freed, the arena releases internal references to registered + PyObject*, and none of its pointers are valid. + XXX (tim) What does "none of its pointers are valid" mean? Does it + XXX mean that pointers previously obtained via PyArena_Malloc() are + XXX no longer valid? (That's clearly true, but not sure that's what + XXX the text is trying to say.) + + PyArena_New() returns an arena pointer. On error, it + returns a negative number and sets an exception. + XXX (tim): Not true. On error, PyArena_New() actually returns NULL, + XXX and looks like it may or may not set an exception (e.g., if the + XXX internal PyList_New(0) returns NULL, PyArena_New() passes that on + XXX and an exception is set; OTOH, if the internal + XXX block_new(DEFAULT_BLOCK_SIZE) returns NULL, that's passed on but + XXX an exception is not set in that case). + */ + PyAPI_FUNC(PyArena *) PyArena_New(void); + PyAPI_FUNC(void) PyArena_Free(PyArena *); + + /* Mostly like malloc(), return the address of a block of memory spanning + * `size` bytes, or return NULL (without setting an exception) if enough + * new memory can't be obtained. Unlike malloc(0), PyArena_Malloc() with + * size=0 does not guarantee to return a unique pointer (the pointer + * returned may equal one or more other pointers obtained from + * PyArena_Malloc()). + * Note that pointers obtained via PyArena_Malloc() must never be passed to + * the system free() or realloc(), or to any of Python's similar memory- + * management functions. PyArena_Malloc()-obtained pointers remain valid + * until PyArena_Free(ar) is called, at which point all pointers obtained + * from the arena `ar` become invalid simultaneously. + */ + PyAPI_FUNC(void *) PyArena_Malloc(PyArena *, size_t size); + + /* This routine isn't a proper arena allocation routine. It takes + * a PyObject* and records it so that it can be DECREFed when the + * arena is freed. + */ + PyAPI_FUNC(int) PyArena_AddPyObject(PyArena *, PyObject *); + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_PYARENA_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/pyatomic.h b/qrenderdoc/3rdparty/python/include/pyatomic.h new file mode 100644 index 000000000..893d30d2e --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pyatomic.h @@ -0,0 +1,250 @@ +#ifndef Py_ATOMIC_H +#define Py_ATOMIC_H +#ifdef Py_BUILD_CORE + +#include "dynamic_annotations.h" + +#include "pyconfig.h" + +#if defined(HAVE_STD_ATOMIC) +#include +#endif + +/* This is modeled after the atomics interface from C1x, according to + * the draft at + * http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1425.pdf. + * Operations and types are named the same except with a _Py_ prefix + * and have the same semantics. + * + * Beware, the implementations here are deep magic. + */ + +#if defined(HAVE_STD_ATOMIC) + +typedef enum _Py_memory_order { + _Py_memory_order_relaxed = memory_order_relaxed, + _Py_memory_order_acquire = memory_order_acquire, + _Py_memory_order_release = memory_order_release, + _Py_memory_order_acq_rel = memory_order_acq_rel, + _Py_memory_order_seq_cst = memory_order_seq_cst +} _Py_memory_order; + +typedef struct _Py_atomic_address { + atomic_uintptr_t _value; +} _Py_atomic_address; + +typedef struct _Py_atomic_int { + atomic_int _value; +} _Py_atomic_int; + +#define _Py_atomic_signal_fence(/*memory_order*/ ORDER) \ + atomic_signal_fence(ORDER) + +#define _Py_atomic_thread_fence(/*memory_order*/ ORDER) \ + atomic_thread_fence(ORDER) + +#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + atomic_store_explicit(&(ATOMIC_VAL)->_value, NEW_VAL, ORDER) + +#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ + atomic_load_explicit(&(ATOMIC_VAL)->_value, ORDER) + +/* Use builtin atomic operations in GCC >= 4.7 */ +#elif defined(HAVE_BUILTIN_ATOMIC) + +typedef enum _Py_memory_order { + _Py_memory_order_relaxed = __ATOMIC_RELAXED, + _Py_memory_order_acquire = __ATOMIC_ACQUIRE, + _Py_memory_order_release = __ATOMIC_RELEASE, + _Py_memory_order_acq_rel = __ATOMIC_ACQ_REL, + _Py_memory_order_seq_cst = __ATOMIC_SEQ_CST +} _Py_memory_order; + +typedef struct _Py_atomic_address { + uintptr_t _value; +} _Py_atomic_address; + +typedef struct _Py_atomic_int { + int _value; +} _Py_atomic_int; + +#define _Py_atomic_signal_fence(/*memory_order*/ ORDER) \ + __atomic_signal_fence(ORDER) + +#define _Py_atomic_thread_fence(/*memory_order*/ ORDER) \ + __atomic_thread_fence(ORDER) + +#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + (assert((ORDER) == __ATOMIC_RELAXED \ + || (ORDER) == __ATOMIC_SEQ_CST \ + || (ORDER) == __ATOMIC_RELEASE), \ + __atomic_store_n(&(ATOMIC_VAL)->_value, NEW_VAL, ORDER)) + +#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ + (assert((ORDER) == __ATOMIC_RELAXED \ + || (ORDER) == __ATOMIC_SEQ_CST \ + || (ORDER) == __ATOMIC_ACQUIRE \ + || (ORDER) == __ATOMIC_CONSUME), \ + __atomic_load_n(&(ATOMIC_VAL)->_value, ORDER)) + +#else + +typedef enum _Py_memory_order { + _Py_memory_order_relaxed, + _Py_memory_order_acquire, + _Py_memory_order_release, + _Py_memory_order_acq_rel, + _Py_memory_order_seq_cst +} _Py_memory_order; + +typedef struct _Py_atomic_address { + uintptr_t _value; +} _Py_atomic_address; + +typedef struct _Py_atomic_int { + int _value; +} _Py_atomic_int; + +/* Only support GCC (for expression statements) and x86 (for simple + * atomic semantics) for now */ +#if defined(__GNUC__) && (defined(__i386__) || defined(__amd64)) + +static __inline__ void +_Py_atomic_signal_fence(_Py_memory_order order) +{ + if (order != _Py_memory_order_relaxed) + __asm__ volatile("":::"memory"); +} + +static __inline__ void +_Py_atomic_thread_fence(_Py_memory_order order) +{ + if (order != _Py_memory_order_relaxed) + __asm__ volatile("mfence":::"memory"); +} + +/* Tell the race checker about this operation's effects. */ +static __inline__ void +_Py_ANNOTATE_MEMORY_ORDER(const volatile void *address, _Py_memory_order order) +{ + (void)address; /* shut up -Wunused-parameter */ + switch(order) { + case _Py_memory_order_release: + case _Py_memory_order_acq_rel: + case _Py_memory_order_seq_cst: + _Py_ANNOTATE_HAPPENS_BEFORE(address); + break; + case _Py_memory_order_relaxed: + case _Py_memory_order_acquire: + break; + } + switch(order) { + case _Py_memory_order_acquire: + case _Py_memory_order_acq_rel: + case _Py_memory_order_seq_cst: + _Py_ANNOTATE_HAPPENS_AFTER(address); + break; + case _Py_memory_order_relaxed: + case _Py_memory_order_release: + break; + } +} + +#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + __extension__ ({ \ + __typeof__(ATOMIC_VAL) atomic_val = ATOMIC_VAL; \ + __typeof__(atomic_val->_value) new_val = NEW_VAL;\ + volatile __typeof__(new_val) *volatile_data = &atomic_val->_value; \ + _Py_memory_order order = ORDER; \ + _Py_ANNOTATE_MEMORY_ORDER(atomic_val, order); \ + \ + /* Perform the operation. */ \ + _Py_ANNOTATE_IGNORE_WRITES_BEGIN(); \ + switch(order) { \ + case _Py_memory_order_release: \ + _Py_atomic_signal_fence(_Py_memory_order_release); \ + /* fallthrough */ \ + case _Py_memory_order_relaxed: \ + *volatile_data = new_val; \ + break; \ + \ + case _Py_memory_order_acquire: \ + case _Py_memory_order_acq_rel: \ + case _Py_memory_order_seq_cst: \ + __asm__ volatile("xchg %0, %1" \ + : "+r"(new_val) \ + : "m"(atomic_val->_value) \ + : "memory"); \ + break; \ + } \ + _Py_ANNOTATE_IGNORE_WRITES_END(); \ + }) + +#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ + __extension__ ({ \ + __typeof__(ATOMIC_VAL) atomic_val = ATOMIC_VAL; \ + __typeof__(atomic_val->_value) result; \ + volatile __typeof__(result) *volatile_data = &atomic_val->_value; \ + _Py_memory_order order = ORDER; \ + _Py_ANNOTATE_MEMORY_ORDER(atomic_val, order); \ + \ + /* Perform the operation. */ \ + _Py_ANNOTATE_IGNORE_READS_BEGIN(); \ + switch(order) { \ + case _Py_memory_order_release: \ + case _Py_memory_order_acq_rel: \ + case _Py_memory_order_seq_cst: \ + /* Loads on x86 are not releases by default, so need a */ \ + /* thread fence. */ \ + _Py_atomic_thread_fence(_Py_memory_order_release); \ + break; \ + default: \ + /* No fence */ \ + break; \ + } \ + result = *volatile_data; \ + switch(order) { \ + case _Py_memory_order_acquire: \ + case _Py_memory_order_acq_rel: \ + case _Py_memory_order_seq_cst: \ + /* Loads on x86 are automatically acquire operations so */ \ + /* can get by with just a compiler fence. */ \ + _Py_atomic_signal_fence(_Py_memory_order_acquire); \ + break; \ + default: \ + /* No fence */ \ + break; \ + } \ + _Py_ANNOTATE_IGNORE_READS_END(); \ + result; \ + }) + +#else /* !gcc x86 */ +/* Fall back to other compilers and processors by assuming that simple + volatile accesses are atomic. This is false, so people should port + this. */ +#define _Py_atomic_signal_fence(/*memory_order*/ ORDER) ((void)0) +#define _Py_atomic_thread_fence(/*memory_order*/ ORDER) ((void)0) +#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + ((ATOMIC_VAL)->_value = NEW_VAL) +#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ + ((ATOMIC_VAL)->_value) + +#endif /* !gcc x86 */ +#endif + +/* Standardized shortcuts. */ +#define _Py_atomic_store(ATOMIC_VAL, NEW_VAL) \ + _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, _Py_memory_order_seq_cst) +#define _Py_atomic_load(ATOMIC_VAL) \ + _Py_atomic_load_explicit(ATOMIC_VAL, _Py_memory_order_seq_cst) + +/* Python-local extensions */ + +#define _Py_atomic_store_relaxed(ATOMIC_VAL, NEW_VAL) \ + _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, _Py_memory_order_relaxed) +#define _Py_atomic_load_relaxed(ATOMIC_VAL) \ + _Py_atomic_load_explicit(ATOMIC_VAL, _Py_memory_order_relaxed) + +#endif /* Py_BUILD_CORE */ +#endif /* Py_ATOMIC_H */ diff --git a/qrenderdoc/3rdparty/python/include/pycapsule.h b/qrenderdoc/3rdparty/python/include/pycapsule.h new file mode 100644 index 000000000..d9ecda7a4 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pycapsule.h @@ -0,0 +1,59 @@ + +/* Capsule objects let you wrap a C "void *" pointer in a Python + object. They're a way of passing data through the Python interpreter + without creating your own custom type. + + Capsules are used for communication between extension modules. + They provide a way for an extension module to export a C interface + to other extension modules, so that extension modules can use the + Python import mechanism to link to one another. + + For more information, please see "c-api/capsule.html" in the + documentation. +*/ + +#ifndef Py_CAPSULE_H +#define Py_CAPSULE_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_DATA(PyTypeObject) PyCapsule_Type; + +typedef void (*PyCapsule_Destructor)(PyObject *); + +#define PyCapsule_CheckExact(op) (Py_TYPE(op) == &PyCapsule_Type) + + +PyAPI_FUNC(PyObject *) PyCapsule_New( + void *pointer, + const char *name, + PyCapsule_Destructor destructor); + +PyAPI_FUNC(void *) PyCapsule_GetPointer(PyObject *capsule, const char *name); + +PyAPI_FUNC(PyCapsule_Destructor) PyCapsule_GetDestructor(PyObject *capsule); + +PyAPI_FUNC(const char *) PyCapsule_GetName(PyObject *capsule); + +PyAPI_FUNC(void *) PyCapsule_GetContext(PyObject *capsule); + +PyAPI_FUNC(int) PyCapsule_IsValid(PyObject *capsule, const char *name); + +PyAPI_FUNC(int) PyCapsule_SetPointer(PyObject *capsule, void *pointer); + +PyAPI_FUNC(int) PyCapsule_SetDestructor(PyObject *capsule, PyCapsule_Destructor destructor); + +PyAPI_FUNC(int) PyCapsule_SetName(PyObject *capsule, const char *name); + +PyAPI_FUNC(int) PyCapsule_SetContext(PyObject *capsule, void *context); + +PyAPI_FUNC(void *) PyCapsule_Import( + const char *name, /* UTF-8 encoded string */ + int no_block); + + +#ifdef __cplusplus +} +#endif +#endif /* !Py_CAPSULE_H */ diff --git a/qrenderdoc/3rdparty/python/include/pyconfig.h b/qrenderdoc/3rdparty/python/include/pyconfig.h new file mode 100644 index 000000000..2e36f06a7 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pyconfig.h @@ -0,0 +1,664 @@ +#ifndef Py_CONFIG_H +#define Py_CONFIG_H + +/* pyconfig.h. NOT Generated automatically by configure. + +This is a manually maintained version used for the Watcom, +Borland and Microsoft Visual C++ compilers. It is a +standard part of the Python distribution. + +WINDOWS DEFINES: +The code specific to Windows should be wrapped around one of +the following #defines + +MS_WIN64 - Code specific to the MS Win64 API +MS_WIN32 - Code specific to the MS Win32 (and Win64) API (obsolete, this covers all supported APIs) +MS_WINDOWS - Code specific to Windows, but all versions. +Py_ENABLE_SHARED - Code if the Python core is built as a DLL. + +Also note that neither "_M_IX86" or "_MSC_VER" should be used for +any purpose other than "Windows Intel x86 specific" and "Microsoft +compiler specific". Therefore, these should be very rare. + + +NOTE: The following symbols are deprecated: +NT, USE_DL_EXPORT, USE_DL_IMPORT, DL_EXPORT, DL_IMPORT +MS_CORE_DLL. + +WIN32 is still required for the locale module. + +*/ + +/* Deprecated USE_DL_EXPORT macro - please use Py_BUILD_CORE */ +#ifdef USE_DL_EXPORT +# define Py_BUILD_CORE +#endif /* USE_DL_EXPORT */ + +/* Visual Studio 2005 introduces deprecation warnings for + "insecure" and POSIX functions. The insecure functions should + be replaced by *_s versions (according to Microsoft); the + POSIX functions by _* versions (which, according to Microsoft, + would be ISO C conforming). Neither renaming is feasible, so + we just silence the warnings. */ + +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE 1 +#endif +#ifndef _CRT_NONSTDC_NO_DEPRECATE +#define _CRT_NONSTDC_NO_DEPRECATE 1 +#endif + +#define HAVE_IO_H +#define HAVE_SYS_UTIME_H +#define HAVE_TEMPNAM +#define HAVE_TMPFILE +#define HAVE_TMPNAM +#define HAVE_CLOCK +#define HAVE_STRERROR + +#include + +#define HAVE_HYPOT +#define HAVE_STRFTIME +#define DONT_HAVE_SIG_ALARM +#define DONT_HAVE_SIG_PAUSE +#define LONG_BIT 32 +#define WORD_BIT 32 + +#define MS_WIN32 /* only support win32 and greater. */ +#define MS_WINDOWS +#ifndef PYTHONPATH +# define PYTHONPATH L".\\DLLs;.\\lib" +#endif +#define NT_THREADS +#define WITH_THREAD +#ifndef NETSCAPE_PI +#define USE_SOCKET +#endif + + +/* Compiler specific defines */ + +/* ------------------------------------------------------------------------*/ +/* Microsoft C defines _MSC_VER */ +#ifdef _MSC_VER + +/* We want COMPILER to expand to a string containing _MSC_VER's *value*. + * This is horridly tricky, because the stringization operator only works + * on macro arguments, and doesn't evaluate macros passed *as* arguments. + * Attempts simpler than the following appear doomed to produce "_MSC_VER" + * literally in the string. + */ +#define _Py_PASTE_VERSION(SUFFIX) \ + ("[MSC v." _Py_STRINGIZE(_MSC_VER) " " SUFFIX "]") +/* e.g., this produces, after compile-time string catenation, + * ("[MSC v.1200 32 bit (Intel)]") + * + * _Py_STRINGIZE(_MSC_VER) expands to + * _Py_STRINGIZE1((_MSC_VER)) expands to + * _Py_STRINGIZE2(_MSC_VER) but as this call is the result of token-pasting + * it's scanned again for macros and so further expands to (under MSVC 6) + * _Py_STRINGIZE2(1200) which then expands to + * "1200" + */ +#define _Py_STRINGIZE(X) _Py_STRINGIZE1((X)) +#define _Py_STRINGIZE1(X) _Py_STRINGIZE2 ## X +#define _Py_STRINGIZE2(X) #X + +/* MSVC defines _WINxx to differentiate the windows platform types + + Note that for compatibility reasons _WIN32 is defined on Win32 + *and* on Win64. For the same reasons, in Python, MS_WIN32 is + defined on Win32 *and* Win64. Win32 only code must therefore be + guarded as follows: + #if defined(MS_WIN32) && !defined(MS_WIN64) + Some modules are disabled on Itanium processors, therefore we + have MS_WINI64 set for those targets, otherwise MS_WINX64 +*/ +#ifdef _WIN64 +#define MS_WIN64 +#endif + +/* set the COMPILER */ +#ifdef MS_WIN64 +#if defined(_M_IA64) +#define COMPILER _Py_PASTE_VERSION("64 bit (Itanium)") +#define MS_WINI64 +#define PYD_PLATFORM_TAG "win_ia64" +#elif defined(_M_X64) || defined(_M_AMD64) +#if defined(__INTEL_COMPILER) +#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 64 bit (amd64) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]") +#else +#define COMPILER _Py_PASTE_VERSION("64 bit (AMD64)") +#endif /* __INTEL_COMPILER */ +#define MS_WINX64 +#define PYD_PLATFORM_TAG "win_amd64" +#else +#define COMPILER _Py_PASTE_VERSION("64 bit (Unknown)") +#endif +#endif /* MS_WIN64 */ + +/* set the version macros for the windows headers */ +/* Python 3.5+ requires Windows Vista or greater */ +#define Py_WINVER 0x0600 /* _WIN32_WINNT_VISTA */ +#define Py_NTDDI NTDDI_VISTA + +/* We only set these values when building Python - we don't want to force + these values on extensions, as that will affect the prototypes and + structures exposed in the Windows headers. Even when building Python, we + allow a single source file to override this - they may need access to + structures etc so it can optionally use new Windows features if it + determines at runtime they are available. +*/ +#if defined(Py_BUILD_CORE) || defined(Py_BUILD_CORE_MODULE) +#ifndef NTDDI_VERSION +#define NTDDI_VERSION Py_NTDDI +#endif +#ifndef WINVER +#define WINVER Py_WINVER +#endif +#ifndef _WIN32_WINNT +#define _WIN32_WINNT Py_WINVER +#endif +#endif + +/* _W64 is not defined for VC6 or eVC4 */ +#ifndef _W64 +#define _W64 +#endif + +/* Define like size_t, omitting the "unsigned" */ +#ifdef MS_WIN64 +typedef __int64 ssize_t; +#else +typedef _W64 int ssize_t; +#endif +#define HAVE_SSIZE_T 1 + +#if defined(MS_WIN32) && !defined(MS_WIN64) +#if defined(_M_IX86) +#if defined(__INTEL_COMPILER) +#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 32 bit (Intel) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]") +#else +#define COMPILER _Py_PASTE_VERSION("32 bit (Intel)") +#endif /* __INTEL_COMPILER */ +#define PYD_PLATFORM_TAG "win32" +#elif defined(_M_ARM) +#define COMPILER _Py_PASTE_VERSION("32 bit (ARM)") +#define PYD_PLATFORM_TAG "win_arm" +#else +#define COMPILER _Py_PASTE_VERSION("32 bit (Unknown)") +#endif +#endif /* MS_WIN32 && !MS_WIN64 */ + +typedef int pid_t; + +#include +#define Py_IS_NAN _isnan +#define Py_IS_INFINITY(X) (!_finite(X) && !_isnan(X)) +#define Py_IS_FINITE(X) _finite(X) +#define copysign _copysign + +/* VS 2010 and above already defines hypot as _hypot */ +#if _MSC_VER < 1600 +#define hypot _hypot +#endif + +/* VS 2015 defines these names with a leading underscore */ +#if _MSC_VER >= 1900 +#define timezone _timezone +#define daylight _daylight +#define tzname _tzname +#endif + +/* Side by Side assemblies supported in VS 2005 and VS 2008 but not 2010*/ +#if _MSC_VER >= 1400 && _MSC_VER < 1600 +#define HAVE_SXS 1 +#endif + +/* define some ANSI types that are not defined in earlier Win headers */ +#if _MSC_VER >= 1200 +/* This file only exists in VC 6.0 or higher */ +#include +#endif + +#endif /* _MSC_VER */ + +/* ------------------------------------------------------------------------*/ +/* egcs/gnu-win32 defines __GNUC__ and _WIN32 */ +#if defined(__GNUC__) && defined(_WIN32) +/* XXX These defines are likely incomplete, but should be easy to fix. + They should be complete enough to build extension modules. */ +/* Suggested by Rene Liebscher to avoid a GCC 2.91.* + bug that requires structure imports. More recent versions of the + compiler don't exhibit this bug. +*/ +#if (__GNUC__==2) && (__GNUC_MINOR__<=91) +#warning "Please use an up-to-date version of gcc! (>2.91 recommended)" +#endif + +#define COMPILER "[gcc]" +#define hypot _hypot +#define PY_LONG_LONG long long +#define PY_LLONG_MIN LLONG_MIN +#define PY_LLONG_MAX LLONG_MAX +#define PY_ULLONG_MAX ULLONG_MAX +#endif /* GNUC */ + +/* ------------------------------------------------------------------------*/ +/* lcc-win32 defines __LCC__ */ +#if defined(__LCC__) +/* XXX These defines are likely incomplete, but should be easy to fix. + They should be complete enough to build extension modules. */ + +#define COMPILER "[lcc-win32]" +typedef int pid_t; +/* __declspec() is supported here too - do nothing to get the defaults */ + +#endif /* LCC */ + +/* ------------------------------------------------------------------------*/ +/* End of compilers - finish up */ + +#ifndef NO_STDIO_H +# include +#endif + +/* 64 bit ints are usually spelt __int64 unless compiler has overridden */ +#ifndef PY_LONG_LONG +# define PY_LONG_LONG __int64 +# define PY_LLONG_MAX _I64_MAX +# define PY_LLONG_MIN _I64_MIN +# define PY_ULLONG_MAX _UI64_MAX +#endif + +/* For Windows the Python core is in a DLL by default. Test +Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */ +#if !defined(MS_NO_COREDLL) && !defined(Py_NO_ENABLE_SHARED) +# define Py_ENABLE_SHARED 1 /* standard symbol for shared library */ +# define MS_COREDLL /* deprecated old symbol */ +#endif /* !MS_NO_COREDLL && ... */ + +/* All windows compilers that use this header support __declspec */ +#define HAVE_DECLSPEC_DLL + +#if defined(MS_WIN64) +/* maintain "win32" sys.platform for backward compatibility of Python code, + the Win64 API should be close enough to the Win32 API to make this + preferable */ +# define PLATFORM "win32" +# define SIZEOF_VOID_P 8 +# define SIZEOF_TIME_T 8 +# define SIZEOF_OFF_T 4 +# define SIZEOF_FPOS_T 8 +# define SIZEOF_HKEY 8 +# define SIZEOF_SIZE_T 8 +/* configure.ac defines HAVE_LARGEFILE_SUPPORT iff HAVE_LONG_LONG, + sizeof(off_t) > sizeof(long), and sizeof(PY_LONG_LONG) >= sizeof(off_t). + On Win64 the second condition is not true, but if fpos_t replaces off_t + then this is true. The uses of HAVE_LARGEFILE_SUPPORT imply that Win64 + should define this. */ +# define HAVE_LARGEFILE_SUPPORT +#elif defined(MS_WIN32) +# define PLATFORM "win32" +# define HAVE_LARGEFILE_SUPPORT +# define SIZEOF_VOID_P 4 +# define SIZEOF_OFF_T 4 +# define SIZEOF_FPOS_T 8 +# define SIZEOF_HKEY 4 +# define SIZEOF_SIZE_T 4 + /* MS VS2005 changes time_t to a 64-bit type on all platforms */ +# if defined(_MSC_VER) && _MSC_VER >= 1400 +# define SIZEOF_TIME_T 8 +# else +# define SIZEOF_TIME_T 4 +# endif +#endif + +#ifdef MS_WIN32 + +#define SIZEOF_SHORT 2 +#define SIZEOF_INT 4 +#define SIZEOF_LONG 4 +#define SIZEOF_LONG_LONG 8 +#define SIZEOF_DOUBLE 8 +#define SIZEOF_FLOAT 4 + +/* VC 7.1 has them and VC 6.0 does not. VC 6.0 has a version number of 1200. + Microsoft eMbedded Visual C++ 4.0 has a version number of 1201 and doesn't + define these. + If some compiler does not provide them, modify the #if appropriately. */ +#if defined(_MSC_VER) +#if _MSC_VER > 1300 +#define HAVE_UINTPTR_T 1 +#define HAVE_INTPTR_T 1 +#else +/* VC6, VS 2002 and eVC4 don't support the C99 LL suffix for 64-bit integer literals */ +#define Py_LL(x) x##I64 +#endif /* _MSC_VER > 1300 */ +#endif /* _MSC_VER */ + +#endif + +/* define signed and unsigned exact-width 32-bit and 64-bit types, used in the + implementation of Python integers. */ +#define PY_UINT32_T uint32_t +#define PY_UINT64_T uint64_t +#define PY_INT32_T int32_t +#define PY_INT64_T int64_t + +/* Fairly standard from here! */ + +/* Define to 1 if you have the `copysign' function. */ +#define HAVE_COPYSIGN 1 + +/* Define to 1 if you have the `round' function. */ +#if _MSC_VER >= 1800 +#define HAVE_ROUND 1 +#endif + +/* Define to 1 if you have the `isinf' macro. */ +#define HAVE_DECL_ISINF 1 + +/* Define to 1 if you have the `isnan' function. */ +#define HAVE_DECL_ISNAN 1 + +/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +/* Define to empty if the keyword does not work. */ +/* #define const */ + +/* Define to 1 if you have the header file. */ +#define HAVE_CONIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DIRECT_H 1 + +/* Define if you have dirent.h. */ +/* #define DIRENT 1 */ + +/* Define to the type of elements in the array set by `getgroups'. + Usually this is either `int' or `gid_t'. */ +/* #undef GETGROUPS_T */ + +/* Define to `int' if doesn't define. */ +/* #undef gid_t */ + +/* Define if your struct tm has tm_zone. */ +/* #undef HAVE_TM_ZONE */ + +/* Define if you don't have tm_zone but do have the external array + tzname. */ +#define HAVE_TZNAME + +/* Define to `int' if doesn't define. */ +/* #undef mode_t */ + +/* Define if you don't have dirent.h, but have ndir.h. */ +/* #undef NDIR */ + +/* Define to `long' if doesn't define. */ +/* #undef off_t */ + +/* Define to `int' if doesn't define. */ +/* #undef pid_t */ + +/* Define if the system does not provide POSIX.1 features except + with this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define if you need to in order for stat and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define as the return type of signal handlers (int or void). */ +#define RETSIGTYPE void + +/* Define to `unsigned' if doesn't define. */ +/* #undef size_t */ + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if you don't have dirent.h, but have sys/dir.h. */ +/* #undef SYSDIR */ + +/* Define if you don't have dirent.h, but have sys/ndir.h. */ +/* #undef SYSNDIR */ + +/* Define if you can safely include both and . */ +/* #undef TIME_WITH_SYS_TIME */ + +/* Define if your declares struct tm. */ +/* #define TM_IN_SYS_TIME 1 */ + +/* Define to `int' if doesn't define. */ +/* #undef uid_t */ + +/* Define if the closedir function returns void instead of int. */ +/* #undef VOID_CLOSEDIR */ + +/* Define if getpgrp() must be called as getpgrp(0) + and (consequently) setpgrp() as setpgrp(0, 0). */ +/* #undef GETPGRP_HAVE_ARGS */ + +/* Define this if your time.h defines altzone */ +/* #define HAVE_ALTZONE */ + +/* Define if you have the putenv function. */ +#define HAVE_PUTENV + +/* Define if your compiler supports function prototypes */ +#define HAVE_PROTOTYPES + +/* Define if you can safely include both and + (which you can't on SCO ODT 3.0). */ +/* #undef SYS_SELECT_WITH_SYS_TIME */ + +/* Define if you want documentation strings in extension modules */ +#define WITH_DOC_STRINGS 1 + +/* Define if you want to compile in rudimentary thread support */ +/* #undef WITH_THREAD */ + +/* Define if you want to use the GNU readline library */ +/* #define WITH_READLINE 1 */ + +/* Use Python's own small-block memory-allocator. */ +#define WITH_PYMALLOC 1 + +/* Define if you have clock. */ +/* #define HAVE_CLOCK */ + +/* Define when any dynamic module loading is enabled */ +#define HAVE_DYNAMIC_LOADING + +/* Define if you have ftime. */ +#define HAVE_FTIME + +/* Define if you have getpeername. */ +#define HAVE_GETPEERNAME + +/* Define if you have getpgrp. */ +/* #undef HAVE_GETPGRP */ + +/* Define if you have getpid. */ +#define HAVE_GETPID + +/* Define if you have gettimeofday. */ +/* #undef HAVE_GETTIMEOFDAY */ + +/* Define if you have getwd. */ +/* #undef HAVE_GETWD */ + +/* Define if you have lstat. */ +/* #undef HAVE_LSTAT */ + +/* Define if you have the mktime function. */ +#define HAVE_MKTIME + +/* Define if you have nice. */ +/* #undef HAVE_NICE */ + +/* Define if you have readlink. */ +/* #undef HAVE_READLINK */ + +/* Define if you have select. */ +/* #undef HAVE_SELECT */ + +/* Define if you have setpgid. */ +/* #undef HAVE_SETPGID */ + +/* Define if you have setpgrp. */ +/* #undef HAVE_SETPGRP */ + +/* Define if you have setsid. */ +/* #undef HAVE_SETSID */ + +/* Define if you have setvbuf. */ +#define HAVE_SETVBUF + +/* Define if you have siginterrupt. */ +/* #undef HAVE_SIGINTERRUPT */ + +/* Define if you have symlink. */ +/* #undef HAVE_SYMLINK */ + +/* Define if you have tcgetpgrp. */ +/* #undef HAVE_TCGETPGRP */ + +/* Define if you have tcsetpgrp. */ +/* #undef HAVE_TCSETPGRP */ + +/* Define if you have times. */ +/* #undef HAVE_TIMES */ + +/* Define if you have uname. */ +/* #undef HAVE_UNAME */ + +/* Define if you have waitpid. */ +/* #undef HAVE_WAITPID */ + +/* Define to 1 if you have the `wcsftime' function. */ +#if defined(_MSC_VER) && _MSC_VER >= 1310 +#define HAVE_WCSFTIME 1 +#endif + +/* Define to 1 if you have the `wcscoll' function. */ +#define HAVE_WCSCOLL 1 + +/* Define to 1 if you have the `wcsxfrm' function. */ +#define HAVE_WCSXFRM 1 + +/* Define if the zlib library has inflateCopy */ +#define HAVE_ZLIB_COPY 1 + +/* Define if you have the header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_PROCESS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SIGNAL_H 1 + +/* Define if you have the prototypes. */ +#define HAVE_STDARG_PROTOTYPES + +/* Define if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_AUDIOIO_H */ + +/* Define if you have the header file. */ +/* #define HAVE_SYS_PARAM_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_SYS_SELECT_H 1 */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the header file. */ +/* #define HAVE_SYS_TIME_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_SYS_TIMES_H 1 */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the header file. */ +/* #define HAVE_SYS_UN_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_SYS_UTIME_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_SYS_UTSNAME_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_UNISTD_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_UTIME_H 1 */ + +/* Define if the compiler provides a wchar.h header file. */ +#define HAVE_WCHAR_H 1 + +/* The size of `wchar_t', as computed by sizeof. */ +#define SIZEOF_WCHAR_T 2 + +/* The size of `_Bool', as computed by sizeof. */ +#define SIZEOF__BOOL 1 + +/* The size of `pid_t', as computed by sizeof. */ +#define SIZEOF_PID_T SIZEOF_INT + +/* Define if you have the dl library (-ldl). */ +/* #undef HAVE_LIBDL */ + +/* Define if you have the mpc library (-lmpc). */ +/* #undef HAVE_LIBMPC */ + +/* Define if you have the nsl library (-lnsl). */ +#define HAVE_LIBNSL 1 + +/* Define if you have the seq library (-lseq). */ +/* #undef HAVE_LIBSEQ */ + +/* Define if you have the socket library (-lsocket). */ +#define HAVE_LIBSOCKET 1 + +/* Define if you have the sun library (-lsun). */ +/* #undef HAVE_LIBSUN */ + +/* Define if you have the termcap library (-ltermcap). */ +/* #undef HAVE_LIBTERMCAP */ + +/* Define if you have the termlib library (-ltermlib). */ +/* #undef HAVE_LIBTERMLIB */ + +/* Define if you have the thread library (-lthread). */ +/* #undef HAVE_LIBTHREAD */ + +/* WinSock does not use a bitmask in select, and uses + socket handles greater than FD_SETSIZE */ +#define Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE + +/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the + least significant byte first */ +#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1 + +#endif /* !Py_CONFIG_H */ diff --git a/qrenderdoc/3rdparty/python/include/pyctype.h b/qrenderdoc/3rdparty/python/include/pyctype.h new file mode 100644 index 000000000..6bce63eeb --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pyctype.h @@ -0,0 +1,33 @@ +#ifndef Py_LIMITED_API +#ifndef PYCTYPE_H +#define PYCTYPE_H + +#define PY_CTF_LOWER 0x01 +#define PY_CTF_UPPER 0x02 +#define PY_CTF_ALPHA (PY_CTF_LOWER|PY_CTF_UPPER) +#define PY_CTF_DIGIT 0x04 +#define PY_CTF_ALNUM (PY_CTF_ALPHA|PY_CTF_DIGIT) +#define PY_CTF_SPACE 0x08 +#define PY_CTF_XDIGIT 0x10 + +PyAPI_DATA(const unsigned int) _Py_ctype_table[256]; + +/* Unlike their C counterparts, the following macros are not meant to + * handle an int with any of the values [EOF, 0-UCHAR_MAX]. The argument + * must be a signed/unsigned char. */ +#define Py_ISLOWER(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_LOWER) +#define Py_ISUPPER(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_UPPER) +#define Py_ISALPHA(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALPHA) +#define Py_ISDIGIT(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT) +#define Py_ISXDIGIT(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_XDIGIT) +#define Py_ISALNUM(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALNUM) +#define Py_ISSPACE(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_SPACE) + +PyAPI_DATA(const unsigned char) _Py_ctype_tolower[256]; +PyAPI_DATA(const unsigned char) _Py_ctype_toupper[256]; + +#define Py_TOLOWER(c) (_Py_ctype_tolower[Py_CHARMASK(c)]) +#define Py_TOUPPER(c) (_Py_ctype_toupper[Py_CHARMASK(c)]) + +#endif /* !PYCTYPE_H */ +#endif /* !Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/pydebug.h b/qrenderdoc/3rdparty/python/include/pydebug.h new file mode 100644 index 000000000..6e23a896c --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pydebug.h @@ -0,0 +1,40 @@ +#ifndef Py_LIMITED_API +#ifndef Py_PYDEBUG_H +#define Py_PYDEBUG_H +#ifdef __cplusplus +extern "C" { +#endif + +/* These global variable are defined in pylifecycle.c */ +/* XXX (ncoghlan): move these declarations to pylifecycle.h? */ +PyAPI_DATA(int) Py_DebugFlag; +PyAPI_DATA(int) Py_VerboseFlag; +PyAPI_DATA(int) Py_QuietFlag; +PyAPI_DATA(int) Py_InteractiveFlag; +PyAPI_DATA(int) Py_InspectFlag; +PyAPI_DATA(int) Py_OptimizeFlag; +PyAPI_DATA(int) Py_NoSiteFlag; +PyAPI_DATA(int) Py_BytesWarningFlag; +PyAPI_DATA(int) Py_UseClassExceptionsFlag; +PyAPI_DATA(int) Py_FrozenFlag; +PyAPI_DATA(int) Py_IgnoreEnvironmentFlag; +PyAPI_DATA(int) Py_DontWriteBytecodeFlag; +PyAPI_DATA(int) Py_NoUserSiteDirectory; +PyAPI_DATA(int) Py_UnbufferedStdioFlag; +PyAPI_DATA(int) Py_HashRandomizationFlag; +PyAPI_DATA(int) Py_IsolatedFlag; + +#ifdef MS_WINDOWS +PyAPI_DATA(int) Py_LegacyWindowsStdioFlag; +#endif + +/* this is a wrapper around getenv() that pays attention to + Py_IgnoreEnvironmentFlag. It should be used for getting variables like + PYTHONPATH and PYTHONHOME from the environment */ +#define Py_GETENV(s) (Py_IgnoreEnvironmentFlag ? NULL : getenv(s)) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PYDEBUG_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/pydtrace.d b/qrenderdoc/3rdparty/python/include/pydtrace.d new file mode 100644 index 000000000..883605566 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pydtrace.d @@ -0,0 +1,19 @@ +/* Python DTrace provider */ + +provider python { + probe function__entry(const char *, const char *, int); + probe function__return(const char *, const char *, int); + probe instance__new__start(const char *, const char *); + probe instance__new__done(const char *, const char *); + probe instance__delete__start(const char *, const char *); + probe instance__delete__done(const char *, const char *); + probe line(const char *, const char *, int); + probe gc__start(int); + probe gc__done(long); +}; + +#pragma D attributes Evolving/Evolving/Common provider python provider +#pragma D attributes Evolving/Evolving/Common provider python module +#pragma D attributes Evolving/Evolving/Common provider python function +#pragma D attributes Evolving/Evolving/Common provider python name +#pragma D attributes Evolving/Evolving/Common provider python args diff --git a/qrenderdoc/3rdparty/python/include/pydtrace.h b/qrenderdoc/3rdparty/python/include/pydtrace.h new file mode 100644 index 000000000..c43a253d3 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pydtrace.h @@ -0,0 +1,53 @@ +/* Static DTrace probes interface */ + +#ifndef Py_DTRACE_H +#define Py_DTRACE_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef WITH_DTRACE + +#include "pydtrace_probes.h" + +/* pydtrace_probes.h, on systems with DTrace, is auto-generated to include + `PyDTrace_{PROBE}` and `PyDTrace_{PROBE}_ENABLED()` macros for every probe + defined in pydtrace_provider.d. + + Calling these functions must be guarded by a `PyDTrace_{PROBE}_ENABLED()` + check to minimize performance impact when probing is off. For example: + + if (PyDTrace_FUNCTION_ENTRY_ENABLED()) + PyDTrace_FUNCTION_ENTRY(f); +*/ + +#else + +/* Without DTrace, compile to nothing. */ + +static inline void PyDTrace_LINE(const char *arg0, const char *arg1, int arg2) {} +static inline void PyDTrace_FUNCTION_ENTRY(const char *arg0, const char *arg1, int arg2) {} +static inline void PyDTrace_FUNCTION_RETURN(const char *arg0, const char *arg1, int arg2) {} +static inline void PyDTrace_GC_START(int arg0) {} +static inline void PyDTrace_GC_DONE(int arg0) {} +static inline void PyDTrace_INSTANCE_NEW_START(int arg0) {} +static inline void PyDTrace_INSTANCE_NEW_DONE(int arg0) {} +static inline void PyDTrace_INSTANCE_DELETE_START(int arg0) {} +static inline void PyDTrace_INSTANCE_DELETE_DONE(int arg0) {} + +static inline int PyDTrace_LINE_ENABLED(void) { return 0; } +static inline int PyDTrace_FUNCTION_ENTRY_ENABLED(void) { return 0; } +static inline int PyDTrace_FUNCTION_RETURN_ENABLED(void) { return 0; } +static inline int PyDTrace_GC_START_ENABLED(void) { return 0; } +static inline int PyDTrace_GC_DONE_ENABLED(void) { return 0; } +static inline int PyDTrace_INSTANCE_NEW_START_ENABLED(void) { return 0; } +static inline int PyDTrace_INSTANCE_NEW_DONE_ENABLED(void) { return 0; } +static inline int PyDTrace_INSTANCE_DELETE_START_ENABLED(void) { return 0; } +static inline int PyDTrace_INSTANCE_DELETE_DONE_ENABLED(void) { return 0; } + +#endif /* !WITH_DTRACE */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_DTRACE_H */ diff --git a/qrenderdoc/3rdparty/python/include/pyerrors.h b/qrenderdoc/3rdparty/python/include/pyerrors.h new file mode 100644 index 000000000..c28c1373f --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pyerrors.h @@ -0,0 +1,503 @@ +#ifndef Py_ERRORS_H +#define Py_ERRORS_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Error objects */ + +#ifndef Py_LIMITED_API +/* PyException_HEAD defines the initial segment of every exception class. */ +#define PyException_HEAD PyObject_HEAD PyObject *dict;\ + PyObject *args; PyObject *traceback;\ + PyObject *context; PyObject *cause;\ + char suppress_context; + +typedef struct { + PyException_HEAD +} PyBaseExceptionObject; + +typedef struct { + PyException_HEAD + PyObject *msg; + PyObject *filename; + PyObject *lineno; + PyObject *offset; + PyObject *text; + PyObject *print_file_and_line; +} PySyntaxErrorObject; + +typedef struct { + PyException_HEAD + PyObject *msg; + PyObject *name; + PyObject *path; +} PyImportErrorObject; + +typedef struct { + PyException_HEAD + PyObject *encoding; + PyObject *object; + Py_ssize_t start; + Py_ssize_t end; + PyObject *reason; +} PyUnicodeErrorObject; + +typedef struct { + PyException_HEAD + PyObject *code; +} PySystemExitObject; + +typedef struct { + PyException_HEAD + PyObject *myerrno; + PyObject *strerror; + PyObject *filename; + PyObject *filename2; +#ifdef MS_WINDOWS + PyObject *winerror; +#endif + Py_ssize_t written; /* only for BlockingIOError, -1 otherwise */ +} PyOSErrorObject; + +typedef struct { + PyException_HEAD + PyObject *value; +} PyStopIterationObject; + +/* Compatibility typedefs */ +typedef PyOSErrorObject PyEnvironmentErrorObject; +#ifdef MS_WINDOWS +typedef PyOSErrorObject PyWindowsErrorObject; +#endif +#endif /* !Py_LIMITED_API */ + +/* Error handling definitions */ + +PyAPI_FUNC(void) PyErr_SetNone(PyObject *); +PyAPI_FUNC(void) PyErr_SetObject(PyObject *, PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyErr_SetKeyError(PyObject *); +#endif +PyAPI_FUNC(void) PyErr_SetString( + PyObject *exception, + const char *string /* decoded from utf-8 */ + ); +PyAPI_FUNC(PyObject *) PyErr_Occurred(void); +PyAPI_FUNC(void) PyErr_Clear(void); +PyAPI_FUNC(void) PyErr_Fetch(PyObject **, PyObject **, PyObject **); +PyAPI_FUNC(void) PyErr_Restore(PyObject *, PyObject *, PyObject *); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(void) PyErr_GetExcInfo(PyObject **, PyObject **, PyObject **); +PyAPI_FUNC(void) PyErr_SetExcInfo(PyObject *, PyObject *, PyObject *); +#endif + +#if defined(__clang__) || \ + (defined(__GNUC_MAJOR__) && \ + ((__GNUC_MAJOR__ >= 3) || \ + (__GNUC_MAJOR__ == 2) && (__GNUC_MINOR__ >= 5))) +#define _Py_NO_RETURN __attribute__((__noreturn__)) +#else +#define _Py_NO_RETURN +#endif + +/* Defined in Python/pylifecycle.c */ +PyAPI_FUNC(void) Py_FatalError(const char *message) _Py_NO_RETURN; + +#if defined(Py_DEBUG) || defined(Py_LIMITED_API) +#define _PyErr_OCCURRED() PyErr_Occurred() +#else +#define _PyErr_OCCURRED() (PyThreadState_GET()->curexc_type) +#endif + +/* Error testing and normalization */ +PyAPI_FUNC(int) PyErr_GivenExceptionMatches(PyObject *, PyObject *); +PyAPI_FUNC(int) PyErr_ExceptionMatches(PyObject *); +PyAPI_FUNC(void) PyErr_NormalizeException(PyObject**, PyObject**, PyObject**); + +/* Traceback manipulation (PEP 3134) */ +PyAPI_FUNC(int) PyException_SetTraceback(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyException_GetTraceback(PyObject *); + +/* Cause manipulation (PEP 3134) */ +PyAPI_FUNC(PyObject *) PyException_GetCause(PyObject *); +PyAPI_FUNC(void) PyException_SetCause(PyObject *, PyObject *); + +/* Context manipulation (PEP 3134) */ +PyAPI_FUNC(PyObject *) PyException_GetContext(PyObject *); +PyAPI_FUNC(void) PyException_SetContext(PyObject *, PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyErr_ChainExceptions(PyObject *, PyObject *, PyObject *); +#endif + +/* */ + +#define PyExceptionClass_Check(x) \ + (PyType_Check((x)) && \ + PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)) + +#define PyExceptionInstance_Check(x) \ + PyType_FastSubclass((x)->ob_type, Py_TPFLAGS_BASE_EXC_SUBCLASS) + +#define PyExceptionClass_Name(x) \ + ((char *)(((PyTypeObject*)(x))->tp_name)) + +#define PyExceptionInstance_Class(x) ((PyObject*)((x)->ob_type)) + + +/* Predefined exceptions */ + +PyAPI_DATA(PyObject *) PyExc_BaseException; +PyAPI_DATA(PyObject *) PyExc_Exception; +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +PyAPI_DATA(PyObject *) PyExc_StopAsyncIteration; +#endif +PyAPI_DATA(PyObject *) PyExc_StopIteration; +PyAPI_DATA(PyObject *) PyExc_GeneratorExit; +PyAPI_DATA(PyObject *) PyExc_ArithmeticError; +PyAPI_DATA(PyObject *) PyExc_LookupError; + +PyAPI_DATA(PyObject *) PyExc_AssertionError; +PyAPI_DATA(PyObject *) PyExc_AttributeError; +PyAPI_DATA(PyObject *) PyExc_BufferError; +PyAPI_DATA(PyObject *) PyExc_EOFError; +PyAPI_DATA(PyObject *) PyExc_FloatingPointError; +PyAPI_DATA(PyObject *) PyExc_OSError; +PyAPI_DATA(PyObject *) PyExc_ImportError; +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 +PyAPI_DATA(PyObject *) PyExc_ModuleNotFoundError; +#endif +PyAPI_DATA(PyObject *) PyExc_IndexError; +PyAPI_DATA(PyObject *) PyExc_KeyError; +PyAPI_DATA(PyObject *) PyExc_KeyboardInterrupt; +PyAPI_DATA(PyObject *) PyExc_MemoryError; +PyAPI_DATA(PyObject *) PyExc_NameError; +PyAPI_DATA(PyObject *) PyExc_OverflowError; +PyAPI_DATA(PyObject *) PyExc_RuntimeError; +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +PyAPI_DATA(PyObject *) PyExc_RecursionError; +#endif +PyAPI_DATA(PyObject *) PyExc_NotImplementedError; +PyAPI_DATA(PyObject *) PyExc_SyntaxError; +PyAPI_DATA(PyObject *) PyExc_IndentationError; +PyAPI_DATA(PyObject *) PyExc_TabError; +PyAPI_DATA(PyObject *) PyExc_ReferenceError; +PyAPI_DATA(PyObject *) PyExc_SystemError; +PyAPI_DATA(PyObject *) PyExc_SystemExit; +PyAPI_DATA(PyObject *) PyExc_TypeError; +PyAPI_DATA(PyObject *) PyExc_UnboundLocalError; +PyAPI_DATA(PyObject *) PyExc_UnicodeError; +PyAPI_DATA(PyObject *) PyExc_UnicodeEncodeError; +PyAPI_DATA(PyObject *) PyExc_UnicodeDecodeError; +PyAPI_DATA(PyObject *) PyExc_UnicodeTranslateError; +PyAPI_DATA(PyObject *) PyExc_ValueError; +PyAPI_DATA(PyObject *) PyExc_ZeroDivisionError; + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_DATA(PyObject *) PyExc_BlockingIOError; +PyAPI_DATA(PyObject *) PyExc_BrokenPipeError; +PyAPI_DATA(PyObject *) PyExc_ChildProcessError; +PyAPI_DATA(PyObject *) PyExc_ConnectionError; +PyAPI_DATA(PyObject *) PyExc_ConnectionAbortedError; +PyAPI_DATA(PyObject *) PyExc_ConnectionRefusedError; +PyAPI_DATA(PyObject *) PyExc_ConnectionResetError; +PyAPI_DATA(PyObject *) PyExc_FileExistsError; +PyAPI_DATA(PyObject *) PyExc_FileNotFoundError; +PyAPI_DATA(PyObject *) PyExc_InterruptedError; +PyAPI_DATA(PyObject *) PyExc_IsADirectoryError; +PyAPI_DATA(PyObject *) PyExc_NotADirectoryError; +PyAPI_DATA(PyObject *) PyExc_PermissionError; +PyAPI_DATA(PyObject *) PyExc_ProcessLookupError; +PyAPI_DATA(PyObject *) PyExc_TimeoutError; +#endif + + +/* Compatibility aliases */ +PyAPI_DATA(PyObject *) PyExc_EnvironmentError; +PyAPI_DATA(PyObject *) PyExc_IOError; +#ifdef MS_WINDOWS +PyAPI_DATA(PyObject *) PyExc_WindowsError; +#endif + +/* Predefined warning categories */ +PyAPI_DATA(PyObject *) PyExc_Warning; +PyAPI_DATA(PyObject *) PyExc_UserWarning; +PyAPI_DATA(PyObject *) PyExc_DeprecationWarning; +PyAPI_DATA(PyObject *) PyExc_PendingDeprecationWarning; +PyAPI_DATA(PyObject *) PyExc_SyntaxWarning; +PyAPI_DATA(PyObject *) PyExc_RuntimeWarning; +PyAPI_DATA(PyObject *) PyExc_FutureWarning; +PyAPI_DATA(PyObject *) PyExc_ImportWarning; +PyAPI_DATA(PyObject *) PyExc_UnicodeWarning; +PyAPI_DATA(PyObject *) PyExc_BytesWarning; +PyAPI_DATA(PyObject *) PyExc_ResourceWarning; + + +/* Convenience functions */ + +PyAPI_FUNC(int) PyErr_BadArgument(void); +PyAPI_FUNC(PyObject *) PyErr_NoMemory(void); +PyAPI_FUNC(PyObject *) PyErr_SetFromErrno(PyObject *); +PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObject( + PyObject *, PyObject *); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000 +PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObjects( + PyObject *, PyObject *, PyObject *); +#endif +PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilename( + PyObject *exc, + const char *filename /* decoded from the filesystem encoding */ + ); +#if defined(MS_WINDOWS) && !defined(Py_LIMITED_API) +PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithUnicodeFilename( + PyObject *, const Py_UNICODE *); +#endif /* MS_WINDOWS */ + +PyAPI_FUNC(PyObject *) PyErr_Format( + PyObject *exception, + const char *format, /* ASCII-encoded string */ + ... + ); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +PyAPI_FUNC(PyObject *) PyErr_FormatV( + PyObject *exception, + const char *format, + va_list vargs); +#endif + +#ifndef Py_LIMITED_API +/* Like PyErr_Format(), but saves current exception as __context__ and + __cause__. + */ +PyAPI_FUNC(PyObject *) _PyErr_FormatFromCause( + PyObject *exception, + const char *format, /* ASCII-encoded string */ + ... + ); +#endif + +#ifdef MS_WINDOWS +PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename( + int ierr, + const char *filename /* decoded from the filesystem encoding */ + ); +#ifndef Py_LIMITED_API +/* XXX redeclare to use WSTRING */ +PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithUnicodeFilename( + int, const Py_UNICODE *); +#endif +PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int); +PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject( + PyObject *,int, PyObject *); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000 +PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObjects( + PyObject *,int, PyObject *, PyObject *); +#endif +PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename( + PyObject *exc, + int ierr, + const char *filename /* decoded from the filesystem encoding */ + ); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename( + PyObject *,int, const Py_UNICODE *); +#endif +PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int); +#endif /* MS_WINDOWS */ + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 +PyAPI_FUNC(PyObject *) PyErr_SetImportErrorSubclass(PyObject *, PyObject *, + PyObject *, PyObject *); +#endif +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyErr_SetImportError(PyObject *, PyObject *, + PyObject *); +#endif + +/* Export the old function so that the existing API remains available: */ +PyAPI_FUNC(void) PyErr_BadInternalCall(void); +PyAPI_FUNC(void) _PyErr_BadInternalCall(const char *filename, int lineno); +/* Mask the old API with a call to the new API for code compiled under + Python 2.0: */ +#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__) + +/* Function to create a new exception */ +PyAPI_FUNC(PyObject *) PyErr_NewException( + const char *name, PyObject *base, PyObject *dict); +PyAPI_FUNC(PyObject *) PyErr_NewExceptionWithDoc( + const char *name, const char *doc, PyObject *base, PyObject *dict); +PyAPI_FUNC(void) PyErr_WriteUnraisable(PyObject *); + +/* In exceptions.c */ +#ifndef Py_LIMITED_API +/* Helper that attempts to replace the current exception with one of the + * same type but with a prefix added to the exception text. The resulting + * exception description looks like: + * + * prefix (exc_type: original_exc_str) + * + * Only some exceptions can be safely replaced. If the function determines + * it isn't safe to perform the replacement, it will leave the original + * unmodified exception in place. + * + * Returns a borrowed reference to the new exception (if any), NULL if the + * existing exception was left in place. + */ +PyAPI_FUNC(PyObject *) _PyErr_TrySetFromCause( + const char *prefix_format, /* ASCII-encoded string */ + ... + ); +#endif + + +/* In sigcheck.c or signalmodule.c */ +PyAPI_FUNC(int) PyErr_CheckSignals(void); +PyAPI_FUNC(void) PyErr_SetInterrupt(void); + +/* In signalmodule.c */ +#ifndef Py_LIMITED_API +int PySignal_SetWakeupFd(int fd); +#endif + +/* Support for adding program text to SyntaxErrors */ +PyAPI_FUNC(void) PyErr_SyntaxLocation( + const char *filename, /* decoded from the filesystem encoding */ + int lineno); +PyAPI_FUNC(void) PyErr_SyntaxLocationEx( + const char *filename, /* decoded from the filesystem encoding */ + int lineno, + int col_offset); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) PyErr_SyntaxLocationObject( + PyObject *filename, + int lineno, + int col_offset); +#endif +PyAPI_FUNC(PyObject *) PyErr_ProgramText( + const char *filename, /* decoded from the filesystem encoding */ + int lineno); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyErr_ProgramTextObject( + PyObject *filename, + int lineno); +#endif + +/* The following functions are used to create and modify unicode + exceptions from C */ + +/* create a UnicodeDecodeError object */ +PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_Create( + const char *encoding, /* UTF-8 encoded string */ + const char *object, + Py_ssize_t length, + Py_ssize_t start, + Py_ssize_t end, + const char *reason /* UTF-8 encoded string */ + ); + +/* create a UnicodeEncodeError object */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_Create( + const char *encoding, /* UTF-8 encoded string */ + const Py_UNICODE *object, + Py_ssize_t length, + Py_ssize_t start, + Py_ssize_t end, + const char *reason /* UTF-8 encoded string */ + ); +#endif + +/* create a UnicodeTranslateError object */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_Create( + const Py_UNICODE *object, + Py_ssize_t length, + Py_ssize_t start, + Py_ssize_t end, + const char *reason /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) _PyUnicodeTranslateError_Create( + PyObject *object, + Py_ssize_t start, + Py_ssize_t end, + const char *reason /* UTF-8 encoded string */ + ); +#endif + +/* get the encoding attribute */ +PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetEncoding(PyObject *); +PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetEncoding(PyObject *); + +/* get the object attribute */ +PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetObject(PyObject *); +PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetObject(PyObject *); +PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_GetObject(PyObject *); + +/* get the value of the start attribute (the int * may not be NULL) + return 0 on success, -1 on failure */ +PyAPI_FUNC(int) PyUnicodeEncodeError_GetStart(PyObject *, Py_ssize_t *); +PyAPI_FUNC(int) PyUnicodeDecodeError_GetStart(PyObject *, Py_ssize_t *); +PyAPI_FUNC(int) PyUnicodeTranslateError_GetStart(PyObject *, Py_ssize_t *); + +/* assign a new value to the start attribute + return 0 on success, -1 on failure */ +PyAPI_FUNC(int) PyUnicodeEncodeError_SetStart(PyObject *, Py_ssize_t); +PyAPI_FUNC(int) PyUnicodeDecodeError_SetStart(PyObject *, Py_ssize_t); +PyAPI_FUNC(int) PyUnicodeTranslateError_SetStart(PyObject *, Py_ssize_t); + +/* get the value of the end attribute (the int *may not be NULL) + return 0 on success, -1 on failure */ +PyAPI_FUNC(int) PyUnicodeEncodeError_GetEnd(PyObject *, Py_ssize_t *); +PyAPI_FUNC(int) PyUnicodeDecodeError_GetEnd(PyObject *, Py_ssize_t *); +PyAPI_FUNC(int) PyUnicodeTranslateError_GetEnd(PyObject *, Py_ssize_t *); + +/* assign a new value to the end attribute + return 0 on success, -1 on failure */ +PyAPI_FUNC(int) PyUnicodeEncodeError_SetEnd(PyObject *, Py_ssize_t); +PyAPI_FUNC(int) PyUnicodeDecodeError_SetEnd(PyObject *, Py_ssize_t); +PyAPI_FUNC(int) PyUnicodeTranslateError_SetEnd(PyObject *, Py_ssize_t); + +/* get the value of the reason attribute */ +PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetReason(PyObject *); +PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetReason(PyObject *); +PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_GetReason(PyObject *); + +/* assign a new value to the reason attribute + return 0 on success, -1 on failure */ +PyAPI_FUNC(int) PyUnicodeEncodeError_SetReason( + PyObject *exc, + const char *reason /* UTF-8 encoded string */ + ); +PyAPI_FUNC(int) PyUnicodeDecodeError_SetReason( + PyObject *exc, + const char *reason /* UTF-8 encoded string */ + ); +PyAPI_FUNC(int) PyUnicodeTranslateError_SetReason( + PyObject *exc, + const char *reason /* UTF-8 encoded string */ + ); + +/* These APIs aren't really part of the error implementation, but + often needed to format error messages; the native C lib APIs are + not available on all platforms, which is why we provide emulations + for those platforms in Python/mysnprintf.c, + WARNING: The return value of snprintf varies across platforms; do + not rely on any particular behavior; eventually the C99 defn may + be reliable. +*/ +#if defined(MS_WIN32) && !defined(HAVE_SNPRINTF) +# define HAVE_SNPRINTF +# define snprintf _snprintf +# define vsnprintf _vsnprintf +#endif + +#include +PyAPI_FUNC(int) PyOS_snprintf(char *str, size_t size, const char *format, ...) + Py_GCC_ATTRIBUTE((format(printf, 3, 4))); +PyAPI_FUNC(int) PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va) + Py_GCC_ATTRIBUTE((format(printf, 3, 0))); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_ERRORS_H */ diff --git a/qrenderdoc/3rdparty/python/include/pyexpat.h b/qrenderdoc/3rdparty/python/include/pyexpat.h new file mode 100644 index 000000000..44259bf6d --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pyexpat.h @@ -0,0 +1,53 @@ +/* Stuff to export relevant 'expat' entry points from pyexpat to other + * parser modules, such as cElementTree. */ + +/* note: you must import expat.h before importing this module! */ + +#define PyExpat_CAPI_MAGIC "pyexpat.expat_CAPI 1.0" +#define PyExpat_CAPSULE_NAME "pyexpat.expat_CAPI" + +struct PyExpat_CAPI +{ + char* magic; /* set to PyExpat_CAPI_MAGIC */ + int size; /* set to sizeof(struct PyExpat_CAPI) */ + int MAJOR_VERSION; + int MINOR_VERSION; + int MICRO_VERSION; + /* pointers to selected expat functions. add new functions at + the end, if needed */ + const XML_LChar * (*ErrorString)(enum XML_Error code); + enum XML_Error (*GetErrorCode)(XML_Parser parser); + XML_Size (*GetErrorColumnNumber)(XML_Parser parser); + XML_Size (*GetErrorLineNumber)(XML_Parser parser); + enum XML_Status (*Parse)( + XML_Parser parser, const char *s, int len, int isFinal); + XML_Parser (*ParserCreate_MM)( + const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite, + const XML_Char *namespaceSeparator); + void (*ParserFree)(XML_Parser parser); + void (*SetCharacterDataHandler)( + XML_Parser parser, XML_CharacterDataHandler handler); + void (*SetCommentHandler)( + XML_Parser parser, XML_CommentHandler handler); + void (*SetDefaultHandlerExpand)( + XML_Parser parser, XML_DefaultHandler handler); + void (*SetElementHandler)( + XML_Parser parser, XML_StartElementHandler start, + XML_EndElementHandler end); + void (*SetNamespaceDeclHandler)( + XML_Parser parser, XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end); + void (*SetProcessingInstructionHandler)( + XML_Parser parser, XML_ProcessingInstructionHandler handler); + void (*SetUnknownEncodingHandler)( + XML_Parser parser, XML_UnknownEncodingHandler handler, + void *encodingHandlerData); + void (*SetUserData)(XML_Parser parser, void *userData); + void (*SetStartDoctypeDeclHandler)(XML_Parser parser, + XML_StartDoctypeDeclHandler start); + enum XML_Status (*SetEncoding)(XML_Parser parser, const XML_Char *encoding); + int (*DefaultUnknownEncodingHandler)( + void *encodingHandlerData, const XML_Char *name, XML_Encoding *info); + /* always add new stuff to the end! */ +}; + diff --git a/qrenderdoc/3rdparty/python/include/pyfpe.h b/qrenderdoc/3rdparty/python/include/pyfpe.h new file mode 100644 index 000000000..f9a15e622 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pyfpe.h @@ -0,0 +1,176 @@ +#ifndef Py_PYFPE_H +#define Py_PYFPE_H +#ifdef __cplusplus +extern "C" { +#endif +/* + --------------------------------------------------------------------- + / Copyright (c) 1996. \ + | The Regents of the University of California. | + | All rights reserved. | + | | + | Permission to use, copy, modify, and distribute this software for | + | any purpose without fee is hereby granted, provided that this en- | + | tire notice is included in all copies of any software which is or | + | includes a copy or modification of this software and in all | + | copies of the supporting documentation for such software. | + | | + | This work was produced at the University of California, Lawrence | + | Livermore National Laboratory under contract no. W-7405-ENG-48 | + | between the U.S. Department of Energy and The Regents of the | + | University of California for the operation of UC LLNL. | + | | + | DISCLAIMER | + | | + | This software was prepared as an account of work sponsored by an | + | agency of the United States Government. Neither the United States | + | Government nor the University of California nor any of their em- | + | ployees, makes any warranty, express or implied, or assumes any | + | liability or responsibility for the accuracy, completeness, or | + | usefulness of any information, apparatus, product, or process | + | disclosed, or represents that its use would not infringe | + | privately-owned rights. Reference herein to any specific commer- | + | cial products, process, or service by trade name, trademark, | + | manufacturer, or otherwise, does not necessarily constitute or | + | imply its endorsement, recommendation, or favoring by the United | + | States Government or the University of California. The views and | + | opinions of authors expressed herein do not necessarily state or | + | reflect those of the United States Government or the University | + | of California, and shall not be used for advertising or product | + \ endorsement purposes. / + --------------------------------------------------------------------- +*/ + +/* + * Define macros for handling SIGFPE. + * Lee Busby, LLNL, November, 1996 + * busby1@llnl.gov + * + ********************************************* + * Overview of the system for handling SIGFPE: + * + * This file (Include/pyfpe.h) defines a couple of "wrapper" macros for + * insertion into your Python C code of choice. Their proper use is + * discussed below. The file Python/pyfpe.c defines a pair of global + * variables PyFPE_jbuf and PyFPE_counter which are used by the signal + * handler for SIGFPE to decide if a particular exception was protected + * by the macros. The signal handler itself, and code for enabling the + * generation of SIGFPE in the first place, is in a (new) Python module + * named fpectl. This module is standard in every respect. It can be loaded + * either statically or dynamically as you choose, and like any other + * Python module, has no effect until you import it. + * + * In the general case, there are three steps toward handling SIGFPE in any + * Python code: + * + * 1) Add the *_PROTECT macros to your C code as required to protect + * dangerous floating point sections. + * + * 2) Turn on the inclusion of the code by adding the ``--with-fpectl'' + * flag at the time you run configure. If the fpectl or other modules + * which use the *_PROTECT macros are to be dynamically loaded, be + * sure they are compiled with WANT_SIGFPE_HANDLER defined. + * + * 3) When python is built and running, import fpectl, and execute + * fpectl.turnon_sigfpe(). This sets up the signal handler and enables + * generation of SIGFPE whenever an exception occurs. From this point + * on, any properly trapped SIGFPE should result in the Python + * FloatingPointError exception. + * + * Step 1 has been done already for the Python kernel code, and should be + * done soon for the NumPy array package. Step 2 is usually done once at + * python install time. Python's behavior with respect to SIGFPE is not + * changed unless you also do step 3. Thus you can control this new + * facility at compile time, or run time, or both. + * + ******************************** + * Using the macros in your code: + * + * static PyObject *foobar(PyObject *self,PyObject *args) + * { + * .... + * PyFPE_START_PROTECT("Error in foobar", return 0) + * result = dangerous_op(somearg1, somearg2, ...); + * PyFPE_END_PROTECT(result) + * .... + * } + * + * If a floating point error occurs in dangerous_op, foobar returns 0 (NULL), + * after setting the associated value of the FloatingPointError exception to + * "Error in foobar". ``Dangerous_op'' can be a single operation, or a block + * of code, function calls, or any combination, so long as no alternate + * return is possible before the PyFPE_END_PROTECT macro is reached. + * + * The macros can only be used in a function context where an error return + * can be recognized as signaling a Python exception. (Generally, most + * functions that return a PyObject * will qualify.) + * + * Guido's original design suggestion for PyFPE_START_PROTECT and + * PyFPE_END_PROTECT had them open and close a local block, with a locally + * defined jmp_buf and jmp_buf pointer. This would allow recursive nesting + * of the macros. The Ansi C standard makes it clear that such local + * variables need to be declared with the "volatile" type qualifier to keep + * setjmp from corrupting their values. Some current implementations seem + * to be more restrictive. For example, the HPUX man page for setjmp says + * + * Upon the return from a setjmp() call caused by a longjmp(), the + * values of any non-static local variables belonging to the routine + * from which setjmp() was called are undefined. Code which depends on + * such values is not guaranteed to be portable. + * + * I therefore decided on a more limited form of nesting, using a counter + * variable (PyFPE_counter) to keep track of any recursion. If an exception + * occurs in an ``inner'' pair of macros, the return will apparently + * come from the outermost level. + * + */ + +#ifdef WANT_SIGFPE_HANDLER +#include +#include +#include +extern jmp_buf PyFPE_jbuf; +extern int PyFPE_counter; +extern double PyFPE_dummy(void *); + +#define PyFPE_START_PROTECT(err_string, leave_stmt) \ +if (!PyFPE_counter++ && setjmp(PyFPE_jbuf)) { \ + PyErr_SetString(PyExc_FloatingPointError, err_string); \ + PyFPE_counter = 0; \ + leave_stmt; \ +} + +/* + * This (following) is a heck of a way to decrement a counter. However, + * unless the macro argument is provided, code optimizers will sometimes move + * this statement so that it gets executed *before* the unsafe expression + * which we're trying to protect. That pretty well messes things up, + * of course. + * + * If the expression(s) you're trying to protect don't happen to return a + * value, you will need to manufacture a dummy result just to preserve the + * correct ordering of statements. Note that the macro passes the address + * of its argument (so you need to give it something which is addressable). + * If your expression returns multiple results, pass the last such result + * to PyFPE_END_PROTECT. + * + * Note that PyFPE_dummy returns a double, which is cast to int. + * This seeming insanity is to tickle the Floating Point Unit (FPU). + * If an exception has occurred in a preceding floating point operation, + * some architectures (notably Intel 80x86) will not deliver the interrupt + * until the *next* floating point operation. This is painful if you've + * already decremented PyFPE_counter. + */ +#define PyFPE_END_PROTECT(v) PyFPE_counter -= (int)PyFPE_dummy(&(v)); + +#else + +#define PyFPE_START_PROTECT(err_string, leave_stmt) +#define PyFPE_END_PROTECT(v) + +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PYFPE_H */ diff --git a/qrenderdoc/3rdparty/python/include/pygetopt.h b/qrenderdoc/3rdparty/python/include/pygetopt.h new file mode 100644 index 000000000..962720c87 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pygetopt.h @@ -0,0 +1,21 @@ + +#ifndef Py_PYGETOPT_H +#define Py_PYGETOPT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +PyAPI_DATA(int) _PyOS_opterr; +PyAPI_DATA(int) _PyOS_optind; +PyAPI_DATA(wchar_t *) _PyOS_optarg; + +PyAPI_FUNC(void) _PyOS_ResetGetOpt(void); + +PyAPI_FUNC(int) _PyOS_GetOpt(int argc, wchar_t **argv, wchar_t *optstring); +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PYGETOPT_H */ diff --git a/qrenderdoc/3rdparty/python/include/pyhash.h b/qrenderdoc/3rdparty/python/include/pyhash.h new file mode 100644 index 000000000..9cfd071ea --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pyhash.h @@ -0,0 +1,145 @@ +#ifndef Py_HASH_H + +#define Py_HASH_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Helpers for hash functions */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_hash_t) _Py_HashDouble(double); +PyAPI_FUNC(Py_hash_t) _Py_HashPointer(void*); +PyAPI_FUNC(Py_hash_t) _Py_HashBytes(const void*, Py_ssize_t); +#endif + +/* Prime multiplier used in string and various other hashes. */ +#define _PyHASH_MULTIPLIER 1000003UL /* 0xf4243 */ + +/* Parameters used for the numeric hash implementation. See notes for + _Py_HashDouble in Python/pyhash.c. Numeric hashes are based on + reduction modulo the prime 2**_PyHASH_BITS - 1. */ + +#if SIZEOF_VOID_P >= 8 +# define _PyHASH_BITS 61 +#else +# define _PyHASH_BITS 31 +#endif + +#define _PyHASH_MODULUS (((size_t)1 << _PyHASH_BITS) - 1) +#define _PyHASH_INF 314159 +#define _PyHASH_NAN 0 +#define _PyHASH_IMAG _PyHASH_MULTIPLIER + + +/* hash secret + * + * memory layout on 64 bit systems + * cccccccc cccccccc cccccccc uc -- unsigned char[24] + * pppppppp ssssssss ........ fnv -- two Py_hash_t + * k0k0k0k0 k1k1k1k1 ........ siphash -- two uint64_t + * ........ ........ ssssssss djbx33a -- 16 bytes padding + one Py_hash_t + * ........ ........ eeeeeeee pyexpat XML hash salt + * + * memory layout on 32 bit systems + * cccccccc cccccccc cccccccc uc + * ppppssss ........ ........ fnv -- two Py_hash_t + * k0k0k0k0 k1k1k1k1 ........ siphash -- two uint64_t (*) + * ........ ........ ssss.... djbx33a -- 16 bytes padding + one Py_hash_t + * ........ ........ eeee.... pyexpat XML hash salt + * + * (*) The siphash member may not be available on 32 bit platforms without + * an unsigned int64 data type. + */ +#ifndef Py_LIMITED_API +typedef union { + /* ensure 24 bytes */ + unsigned char uc[24]; + /* two Py_hash_t for FNV */ + struct { + Py_hash_t prefix; + Py_hash_t suffix; + } fnv; + /* two uint64 for SipHash24 */ + struct { + uint64_t k0; + uint64_t k1; + } siphash; + /* a different (!) Py_hash_t for small string optimization */ + struct { + unsigned char padding[16]; + Py_hash_t suffix; + } djbx33a; + struct { + unsigned char padding[16]; + Py_hash_t hashsalt; + } expat; +} _Py_HashSecret_t; +PyAPI_DATA(_Py_HashSecret_t) _Py_HashSecret; +#endif + +#ifdef Py_DEBUG +PyAPI_DATA(int) _Py_HashSecret_Initialized; +#endif + + +/* hash function definition */ +#ifndef Py_LIMITED_API +typedef struct { + Py_hash_t (*const hash)(const void *, Py_ssize_t); + const char *name; + const int hash_bits; + const int seed_bits; +} PyHash_FuncDef; + +PyAPI_FUNC(PyHash_FuncDef*) PyHash_GetFuncDef(void); +#endif + + +/* cutoff for small string DJBX33A optimization in range [1, cutoff). + * + * About 50% of the strings in a typical Python application are smaller than + * 6 to 7 chars. However DJBX33A is vulnerable to hash collision attacks. + * NEVER use DJBX33A for long strings! + * + * A Py_HASH_CUTOFF of 0 disables small string optimization. 32 bit platforms + * should use a smaller cutoff because it is easier to create colliding + * strings. A cutoff of 7 on 64bit platforms and 5 on 32bit platforms should + * provide a decent safety margin. + */ +#ifndef Py_HASH_CUTOFF +# define Py_HASH_CUTOFF 0 +#elif (Py_HASH_CUTOFF > 7 || Py_HASH_CUTOFF < 0) +# error Py_HASH_CUTOFF must in range 0...7. +#endif /* Py_HASH_CUTOFF */ + + +/* hash algorithm selection + * + * The values for Py_HASH_SIPHASH24 and Py_HASH_FNV are hard-coded in the + * configure script. + * + * - FNV is available on all platforms and architectures. + * - SIPHASH24 only works on plaforms that don't require aligned memory for integers. + * - With EXTERNAL embedders can provide an alternative implementation with:: + * + * PyHash_FuncDef PyHash_Func = {...}; + * + * XXX: Figure out __declspec() for extern PyHash_FuncDef. + */ +#define Py_HASH_EXTERNAL 0 +#define Py_HASH_SIPHASH24 1 +#define Py_HASH_FNV 2 + +#ifndef Py_HASH_ALGORITHM +# ifndef HAVE_ALIGNED_REQUIRED +# define Py_HASH_ALGORITHM Py_HASH_SIPHASH24 +# else +# define Py_HASH_ALGORITHM Py_HASH_FNV +# endif /* uint64_t && uint32_t && aligned */ +#endif /* Py_HASH_ALGORITHM */ + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_HASH_H */ diff --git a/qrenderdoc/3rdparty/python/include/pylifecycle.h b/qrenderdoc/3rdparty/python/include/pylifecycle.h new file mode 100644 index 000000000..01abfa9fc --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pylifecycle.h @@ -0,0 +1,129 @@ + +/* Interfaces to configure, query, create & destroy the Python runtime */ + +#ifndef Py_PYLIFECYCLE_H +#define Py_PYLIFECYCLE_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(void) Py_SetProgramName(wchar_t *); +PyAPI_FUNC(wchar_t *) Py_GetProgramName(void); + +PyAPI_FUNC(void) Py_SetPythonHome(wchar_t *); +PyAPI_FUNC(wchar_t *) Py_GetPythonHome(void); + +#ifndef Py_LIMITED_API +/* Only used by applications that embed the interpreter and need to + * override the standard encoding determination mechanism + */ +PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding, + const char *errors); +#endif + +PyAPI_FUNC(void) Py_Initialize(void); +PyAPI_FUNC(void) Py_InitializeEx(int); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _Py_InitializeEx_Private(int, int); +#endif +PyAPI_FUNC(void) Py_Finalize(void); +PyAPI_FUNC(int) Py_FinalizeEx(void); +PyAPI_FUNC(int) Py_IsInitialized(void); +PyAPI_FUNC(PyThreadState *) Py_NewInterpreter(void); +PyAPI_FUNC(void) Py_EndInterpreter(PyThreadState *); + + +/* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level + * exit functions. + */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _Py_PyAtExit(void (*func)(void)); +#endif +PyAPI_FUNC(int) Py_AtExit(void (*func)(void)); + +PyAPI_FUNC(void) Py_Exit(int); + +/* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _Py_RestoreSignals(void); + +PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *); +#endif + +/* Bootstrap __main__ (defined in Modules/main.c) */ +PyAPI_FUNC(int) Py_Main(int argc, wchar_t **argv); + +/* In getpath.c */ +PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void); +PyAPI_FUNC(wchar_t *) Py_GetPrefix(void); +PyAPI_FUNC(wchar_t *) Py_GetExecPrefix(void); +PyAPI_FUNC(wchar_t *) Py_GetPath(void); +PyAPI_FUNC(void) Py_SetPath(const wchar_t *); +#ifdef MS_WINDOWS +int _Py_CheckPython3(); +#endif + +/* In their own files */ +PyAPI_FUNC(const char *) Py_GetVersion(void); +PyAPI_FUNC(const char *) Py_GetPlatform(void); +PyAPI_FUNC(const char *) Py_GetCopyright(void); +PyAPI_FUNC(const char *) Py_GetCompiler(void); +PyAPI_FUNC(const char *) Py_GetBuildInfo(void); +#ifndef Py_LIMITED_API +PyAPI_FUNC(const char *) _Py_gitidentifier(void); +PyAPI_FUNC(const char *) _Py_gitversion(void); +#endif + +/* Internal -- various one-time initializations */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void); +PyAPI_FUNC(PyObject *) _PySys_Init(void); +PyAPI_FUNC(void) _PyImport_Init(void); +PyAPI_FUNC(void) _PyExc_Init(PyObject * bltinmod); +PyAPI_FUNC(void) _PyImportHooks_Init(void); +PyAPI_FUNC(int) _PyFrame_Init(void); +PyAPI_FUNC(int) _PyFloat_Init(void); +PyAPI_FUNC(int) PyByteArray_Init(void); +PyAPI_FUNC(void) _PyRandom_Init(void); +#endif + +/* Various internal finalizers */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyExc_Fini(void); +PyAPI_FUNC(void) _PyImport_Fini(void); +PyAPI_FUNC(void) PyMethod_Fini(void); +PyAPI_FUNC(void) PyFrame_Fini(void); +PyAPI_FUNC(void) PyCFunction_Fini(void); +PyAPI_FUNC(void) PyDict_Fini(void); +PyAPI_FUNC(void) PyTuple_Fini(void); +PyAPI_FUNC(void) PyList_Fini(void); +PyAPI_FUNC(void) PySet_Fini(void); +PyAPI_FUNC(void) PyBytes_Fini(void); +PyAPI_FUNC(void) PyByteArray_Fini(void); +PyAPI_FUNC(void) PyFloat_Fini(void); +PyAPI_FUNC(void) PyOS_FiniInterrupts(void); +PyAPI_FUNC(void) _PyGC_DumpShutdownStats(void); +PyAPI_FUNC(void) _PyGC_Fini(void); +PyAPI_FUNC(void) PySlice_Fini(void); +PyAPI_FUNC(void) _PyType_Fini(void); +PyAPI_FUNC(void) _PyRandom_Fini(void); +PyAPI_FUNC(void) PyAsyncGen_Fini(void); + +PyAPI_DATA(PyThreadState *) _Py_Finalizing; +#endif + +/* Signals */ +typedef void (*PyOS_sighandler_t)(int); +PyAPI_FUNC(PyOS_sighandler_t) PyOS_getsig(int); +PyAPI_FUNC(PyOS_sighandler_t) PyOS_setsig(int, PyOS_sighandler_t); + +#ifndef Py_LIMITED_API +/* Random */ +PyAPI_FUNC(int) _PyOS_URandom(void *buffer, Py_ssize_t size); +PyAPI_FUNC(int) _PyOS_URandomNonblock(void *buffer, Py_ssize_t size); +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PYLIFECYCLE_H */ diff --git a/qrenderdoc/3rdparty/python/include/pymacconfig.h b/qrenderdoc/3rdparty/python/include/pymacconfig.h new file mode 100644 index 000000000..9dde11bd5 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pymacconfig.h @@ -0,0 +1,102 @@ +#ifndef PYMACCONFIG_H +#define PYMACCONFIG_H + /* + * This file moves some of the autoconf magic to compile-time + * when building on MacOSX. This is needed for building 4-way + * universal binaries and for 64-bit universal binaries because + * the values redefined below aren't configure-time constant but + * only compile-time constant in these scenarios. + */ + +#if defined(__APPLE__) + +# undef SIZEOF_LONG +# undef SIZEOF_PTHREAD_T +# undef SIZEOF_SIZE_T +# undef SIZEOF_TIME_T +# undef SIZEOF_VOID_P +# undef SIZEOF__BOOL +# undef SIZEOF_UINTPTR_T +# undef SIZEOF_PTHREAD_T +# undef WORDS_BIGENDIAN +# undef DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 +# undef DOUBLE_IS_BIG_ENDIAN_IEEE754 +# undef DOUBLE_IS_LITTLE_ENDIAN_IEEE754 +# undef HAVE_GCC_ASM_FOR_X87 + +# undef VA_LIST_IS_ARRAY +# if defined(__LP64__) && defined(__x86_64__) +# define VA_LIST_IS_ARRAY 1 +# endif + +# undef HAVE_LARGEFILE_SUPPORT +# ifndef __LP64__ +# define HAVE_LARGEFILE_SUPPORT 1 +# endif + +# undef SIZEOF_LONG +# ifdef __LP64__ +# define SIZEOF__BOOL 1 +# define SIZEOF__BOOL 1 +# define SIZEOF_LONG 8 +# define SIZEOF_PTHREAD_T 8 +# define SIZEOF_SIZE_T 8 +# define SIZEOF_TIME_T 8 +# define SIZEOF_VOID_P 8 +# define SIZEOF_UINTPTR_T 8 +# define SIZEOF_PTHREAD_T 8 +# else +# ifdef __ppc__ +# define SIZEOF__BOOL 4 +# else +# define SIZEOF__BOOL 1 +# endif +# define SIZEOF_LONG 4 +# define SIZEOF_PTHREAD_T 4 +# define SIZEOF_SIZE_T 4 +# define SIZEOF_TIME_T 4 +# define SIZEOF_VOID_P 4 +# define SIZEOF_UINTPTR_T 4 +# define SIZEOF_PTHREAD_T 4 +# endif + +# if defined(__LP64__) + /* MacOSX 10.4 (the first release to support 64-bit code + * at all) only supports 64-bit in the UNIX layer. + * Therefore suppress the toolbox-glue in 64-bit mode. + */ + + /* In 64-bit mode setpgrp always has no arguments, in 32-bit + * mode that depends on the compilation environment + */ +# undef SETPGRP_HAVE_ARG + +# endif + +#ifdef __BIG_ENDIAN__ +#define WORDS_BIGENDIAN 1 +#define DOUBLE_IS_BIG_ENDIAN_IEEE754 +#else +#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 +#endif /* __BIG_ENDIAN */ + +#ifdef __i386__ +# define HAVE_GCC_ASM_FOR_X87 +#endif + + /* + * The definition in pyconfig.h is only valid on the OS release + * where configure ran on and not necessarily for all systems where + * the executable can be used on. + * + * Specifically: OSX 10.4 has limited supported for '%zd', while + * 10.5 has full support for '%zd'. A binary built on 10.5 won't + * work properly on 10.4 unless we suppress the definition + * of PY_FORMAT_SIZE_T + */ +#undef PY_FORMAT_SIZE_T + + +#endif /* defined(_APPLE__) */ + +#endif /* PYMACCONFIG_H */ diff --git a/qrenderdoc/3rdparty/python/include/pymacro.h b/qrenderdoc/3rdparty/python/include/pymacro.h new file mode 100644 index 000000000..2a839abf8 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pymacro.h @@ -0,0 +1,98 @@ +#ifndef Py_PYMACRO_H +#define Py_PYMACRO_H + +/* Minimum value between x and y */ +#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x)) + +/* Maximum value between x and y */ +#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y)) + +/* Absolute value of the number x */ +#define Py_ABS(x) ((x) < 0 ? -(x) : (x)) + +#define _Py_XSTRINGIFY(x) #x + +/* Convert the argument to a string. For example, Py_STRINGIFY(123) is replaced + with "123" by the preprocessor. Defines are also replaced by their value. + For example Py_STRINGIFY(__LINE__) is replaced by the line number, not + by "__LINE__". */ +#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x) + +/* Get the size of a structure member in bytes */ +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) + +/* Argument must be a char or an int in [-128, 127] or [0, 255]. */ +#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff)) + +/* Assert a build-time dependency, as an expression. + + Your compile will fail if the condition isn't true, or can't be evaluated + by the compiler. This can be used in an expression: its value is 0. + + Example: + + #define foo_to_char(foo) \ + ((char *)(foo) \ + + Py_BUILD_ASSERT_EXPR(offsetof(struct foo, string) == 0)) + + Written by Rusty Russell, public domain, http://ccodearchive.net/ */ +#define Py_BUILD_ASSERT_EXPR(cond) \ + (sizeof(char [1 - 2*!(cond)]) - 1) + +#define Py_BUILD_ASSERT(cond) do { \ + (void)Py_BUILD_ASSERT_EXPR(cond); \ + } while(0) + +/* Get the number of elements in a visible array + + This does not work on pointers, or arrays declared as [], or function + parameters. With correct compiler support, such usage will cause a build + error (see Py_BUILD_ASSERT_EXPR). + + Written by Rusty Russell, public domain, http://ccodearchive.net/ + + Requires at GCC 3.1+ */ +#if (defined(__GNUC__) && !defined(__STRICT_ANSI__) && \ + (((__GNUC__ == 3) && (__GNU_MINOR__ >= 1)) || (__GNUC__ >= 4))) +/* Two gcc extensions. + &a[0] degrades to a pointer: a different type from an array */ +#define Py_ARRAY_LENGTH(array) \ + (sizeof(array) / sizeof((array)[0]) \ + + Py_BUILD_ASSERT_EXPR(!__builtin_types_compatible_p(typeof(array), \ + typeof(&(array)[0])))) +#else +#define Py_ARRAY_LENGTH(array) \ + (sizeof(array) / sizeof((array)[0])) +#endif + + +/* Define macros for inline documentation. */ +#define PyDoc_VAR(name) static char name[] +#define PyDoc_STRVAR(name,str) PyDoc_VAR(name) = PyDoc_STR(str) +#ifdef WITH_DOC_STRINGS +#define PyDoc_STR(str) str +#else +#define PyDoc_STR(str) "" +#endif + +/* Below "a" is a power of 2. */ +/* Round down size "n" to be a multiple of "a". */ +#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1)) +/* Round up size "n" to be a multiple of "a". */ +#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \ + (size_t)((a) - 1)) & ~(size_t)((a) - 1)) +/* Round pointer "p" down to the closest "a"-aligned address <= "p". */ +#define _Py_ALIGN_DOWN(p, a) ((void *)((uintptr_t)(p) & ~(uintptr_t)((a) - 1))) +/* Round pointer "p" up to the closest "a"-aligned address >= "p". */ +#define _Py_ALIGN_UP(p, a) ((void *)(((uintptr_t)(p) + \ + (uintptr_t)((a) - 1)) & ~(uintptr_t)((a) - 1))) +/* Check if pointer "p" is aligned to "a"-bytes boundary. */ +#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1))) + +#ifdef __GNUC__ +#define Py_UNUSED(name) _unused_ ## name __attribute__((unused)) +#else +#define Py_UNUSED(name) _unused_ ## name +#endif + +#endif /* Py_PYMACRO_H */ diff --git a/qrenderdoc/3rdparty/python/include/pymath.h b/qrenderdoc/3rdparty/python/include/pymath.h new file mode 100644 index 000000000..6cf69f98a --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pymath.h @@ -0,0 +1,230 @@ +#ifndef Py_PYMATH_H +#define Py_PYMATH_H + +#include "pyconfig.h" /* include for defines */ + +/************************************************************************** +Symbols and macros to supply platform-independent interfaces to mathematical +functions and constants +**************************************************************************/ + +/* Python provides implementations for copysign, round and hypot in + * Python/pymath.c just in case your math library doesn't provide the + * functions. + * + *Note: PC/pyconfig.h defines copysign as _copysign + */ +#ifndef HAVE_COPYSIGN +extern double copysign(double, double); +#endif + +#ifndef HAVE_ROUND +extern double round(double); +#endif + +#ifndef HAVE_HYPOT +extern double hypot(double, double); +#endif + +/* extra declarations */ +#ifndef _MSC_VER +#ifndef __STDC__ +extern double fmod (double, double); +extern double frexp (double, int *); +extern double ldexp (double, int); +extern double modf (double, double *); +extern double pow(double, double); +#endif /* __STDC__ */ +#endif /* _MSC_VER */ + +/* High precision definition of pi and e (Euler) + * The values are taken from libc6's math.h. + */ +#ifndef Py_MATH_PIl +#define Py_MATH_PIl 3.1415926535897932384626433832795029L +#endif +#ifndef Py_MATH_PI +#define Py_MATH_PI 3.14159265358979323846 +#endif + +#ifndef Py_MATH_El +#define Py_MATH_El 2.7182818284590452353602874713526625L +#endif + +#ifndef Py_MATH_E +#define Py_MATH_E 2.7182818284590452354 +#endif + +/* Tau (2pi) to 40 digits, taken from tauday.com/tau-digits. */ +#ifndef Py_MATH_TAU +#define Py_MATH_TAU 6.2831853071795864769252867665590057683943L +#endif + + +/* On x86, Py_FORCE_DOUBLE forces a floating-point number out of an x87 FPU + register and into a 64-bit memory location, rounding from extended + precision to double precision in the process. On other platforms it does + nothing. */ + +/* we take double rounding as evidence of x87 usage */ +#ifndef Py_LIMITED_API +#ifndef Py_FORCE_DOUBLE +# ifdef X87_DOUBLE_ROUNDING +PyAPI_FUNC(double) _Py_force_double(double); +# define Py_FORCE_DOUBLE(X) (_Py_force_double(X)) +# else +# define Py_FORCE_DOUBLE(X) (X) +# endif +#endif +#endif + +#ifndef Py_LIMITED_API +#ifdef HAVE_GCC_ASM_FOR_X87 +PyAPI_FUNC(unsigned short) _Py_get_387controlword(void); +PyAPI_FUNC(void) _Py_set_387controlword(unsigned short); +#endif +#endif + +/* Py_IS_NAN(X) + * Return 1 if float or double arg is a NaN, else 0. + * Caution: + * X is evaluated more than once. + * This may not work on all platforms. Each platform has *some* + * way to spell this, though -- override in pyconfig.h if you have + * a platform where it doesn't work. + * Note: PC/pyconfig.h defines Py_IS_NAN as _isnan + */ +#ifndef Py_IS_NAN +#if defined HAVE_DECL_ISNAN && HAVE_DECL_ISNAN == 1 +#define Py_IS_NAN(X) isnan(X) +#else +#define Py_IS_NAN(X) ((X) != (X)) +#endif +#endif + +/* Py_IS_INFINITY(X) + * Return 1 if float or double arg is an infinity, else 0. + * Caution: + * X is evaluated more than once. + * This implementation may set the underflow flag if |X| is very small; + * it really can't be implemented correctly (& easily) before C99. + * Override in pyconfig.h if you have a better spelling on your platform. + * Py_FORCE_DOUBLE is used to avoid getting false negatives from a + * non-infinite value v sitting in an 80-bit x87 register such that + * v becomes infinite when spilled from the register to 64-bit memory. + * Note: PC/pyconfig.h defines Py_IS_INFINITY as _isinf + */ +#ifndef Py_IS_INFINITY +# if defined HAVE_DECL_ISINF && HAVE_DECL_ISINF == 1 +# define Py_IS_INFINITY(X) isinf(X) +# else +# define Py_IS_INFINITY(X) ((X) && \ + (Py_FORCE_DOUBLE(X)*0.5 == Py_FORCE_DOUBLE(X))) +# endif +#endif + +/* Py_IS_FINITE(X) + * Return 1 if float or double arg is neither infinite nor NAN, else 0. + * Some compilers (e.g. VisualStudio) have intrisics for this, so a special + * macro for this particular test is useful + * Note: PC/pyconfig.h defines Py_IS_FINITE as _finite + */ +#ifndef Py_IS_FINITE +#if defined HAVE_DECL_ISFINITE && HAVE_DECL_ISFINITE == 1 +#define Py_IS_FINITE(X) isfinite(X) +#elif defined HAVE_FINITE +#define Py_IS_FINITE(X) finite(X) +#else +#define Py_IS_FINITE(X) (!Py_IS_INFINITY(X) && !Py_IS_NAN(X)) +#endif +#endif + +/* HUGE_VAL is supposed to expand to a positive double infinity. Python + * uses Py_HUGE_VAL instead because some platforms are broken in this + * respect. We used to embed code in pyport.h to try to worm around that, + * but different platforms are broken in conflicting ways. If you're on + * a platform where HUGE_VAL is defined incorrectly, fiddle your Python + * config to #define Py_HUGE_VAL to something that works on your platform. + */ +#ifndef Py_HUGE_VAL +#define Py_HUGE_VAL HUGE_VAL +#endif + +/* Py_NAN + * A value that evaluates to a NaN. On IEEE 754 platforms INF*0 or + * INF/INF works. Define Py_NO_NAN in pyconfig.h if your platform + * doesn't support NaNs. + */ +#if !defined(Py_NAN) && !defined(Py_NO_NAN) +#if !defined(__INTEL_COMPILER) + #define Py_NAN (Py_HUGE_VAL * 0.) +#else /* __INTEL_COMPILER */ + #if defined(ICC_NAN_STRICT) + #pragma float_control(push) + #pragma float_control(precise, on) + #pragma float_control(except, on) + #if defined(_MSC_VER) + __declspec(noinline) + #else /* Linux */ + __attribute__((noinline)) + #endif /* _MSC_VER */ + static double __icc_nan() + { + return sqrt(-1.0); + } + #pragma float_control (pop) + #define Py_NAN __icc_nan() + #else /* ICC_NAN_RELAXED as default for Intel Compiler */ + static const union { unsigned char buf[8]; double __icc_nan; } __nan_store = {0,0,0,0,0,0,0xf8,0x7f}; + #define Py_NAN (__nan_store.__icc_nan) + #endif /* ICC_NAN_STRICT */ +#endif /* __INTEL_COMPILER */ +#endif + +/* Py_OVERFLOWED(X) + * Return 1 iff a libm function overflowed. Set errno to 0 before calling + * a libm function, and invoke this macro after, passing the function + * result. + * Caution: + * This isn't reliable. C99 no longer requires libm to set errno under + * any exceptional condition, but does require +- HUGE_VAL return + * values on overflow. A 754 box *probably* maps HUGE_VAL to a + * double infinity, and we're cool if that's so, unless the input + * was an infinity and an infinity is the expected result. A C89 + * system sets errno to ERANGE, so we check for that too. We're + * out of luck if a C99 754 box doesn't map HUGE_VAL to +Inf, or + * if the returned result is a NaN, or if a C89 box returns HUGE_VAL + * in non-overflow cases. + * X is evaluated more than once. + * Some platforms have better way to spell this, so expect some #ifdef'ery. + * + * OpenBSD uses 'isinf()' because a compiler bug on that platform causes + * the longer macro version to be mis-compiled. This isn't optimal, and + * should be removed once a newer compiler is available on that platform. + * The system that had the failure was running OpenBSD 3.2 on Intel, with + * gcc 2.95.3. + * + * According to Tim's checkin, the FreeBSD systems use isinf() to work + * around a FPE bug on that platform. + */ +#if defined(__FreeBSD__) || defined(__OpenBSD__) +#define Py_OVERFLOWED(X) isinf(X) +#else +#define Py_OVERFLOWED(X) ((X) != 0.0 && (errno == ERANGE || \ + (X) == Py_HUGE_VAL || \ + (X) == -Py_HUGE_VAL)) +#endif + +/* Return whether integral type *type* is signed or not. */ +#define _Py_IntegralTypeSigned(type) ((type)(-1) < 0) +/* Return the maximum value of integral type *type*. */ +#define _Py_IntegralTypeMax(type) ((_Py_IntegralTypeSigned(type)) ? (((((type)1 << (sizeof(type)*CHAR_BIT - 2)) - 1) << 1) + 1) : ~(type)0) +/* Return the minimum value of integral type *type*. */ +#define _Py_IntegralTypeMin(type) ((_Py_IntegralTypeSigned(type)) ? -_Py_IntegralTypeMax(type) - 1 : 0) +/* Check whether *v* is in the range of integral type *type*. This is most + * useful if *v* is floating-point, since demoting a floating-point *v* to an + * integral type that cannot represent *v*'s integral part is undefined + * behavior. */ +#define _Py_InIntegralTypeRange(type, v) (_Py_IntegralTypeMin(type) <= v && v <= _Py_IntegralTypeMax(type)) + +#endif /* Py_PYMATH_H */ diff --git a/qrenderdoc/3rdparty/python/include/pymem.h b/qrenderdoc/3rdparty/python/include/pymem.h new file mode 100644 index 000000000..a7eb4d2e5 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pymem.h @@ -0,0 +1,233 @@ +/* The PyMem_ family: low-level memory allocation interfaces. + See objimpl.h for the PyObject_ memory family. +*/ + +#ifndef Py_PYMEM_H +#define Py_PYMEM_H + +#include "pyport.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void *) PyMem_RawMalloc(size_t size); +PyAPI_FUNC(void *) PyMem_RawCalloc(size_t nelem, size_t elsize); +PyAPI_FUNC(void *) PyMem_RawRealloc(void *ptr, size_t new_size); +PyAPI_FUNC(void) PyMem_RawFree(void *ptr); + +/* Configure the Python memory allocators. Pass NULL to use default + allocators. */ +PyAPI_FUNC(int) _PyMem_SetupAllocators(const char *opt); + +#ifdef WITH_PYMALLOC +PyAPI_FUNC(int) _PyMem_PymallocEnabled(void); +#endif + +/* Identifier of an address space (domain) in tracemalloc */ +typedef unsigned int _PyTraceMalloc_domain_t; + +/* Track an allocated memory block in the tracemalloc module. + Return 0 on success, return -1 on error (failed to allocate memory to store + the trace). + + Return -2 if tracemalloc is disabled. + + If memory block is already tracked, update the existing trace. */ +PyAPI_FUNC(int) _PyTraceMalloc_Track( + _PyTraceMalloc_domain_t domain, + uintptr_t ptr, + size_t size); + +/* Untrack an allocated memory block in the tracemalloc module. + Do nothing if the block was not tracked. + + Return -2 if tracemalloc is disabled, otherwise return 0. */ +PyAPI_FUNC(int) _PyTraceMalloc_Untrack( + _PyTraceMalloc_domain_t domain, + uintptr_t ptr); + +/* Get the traceback where a memory block was allocated. + + Return a tuple of (filename: str, lineno: int) tuples. + + Return None if the tracemalloc module is disabled or if the memory block + is not tracked by tracemalloc. + + Raise an exception and return NULL on error. */ +PyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback( + _PyTraceMalloc_domain_t domain, + uintptr_t ptr); +#endif /* !Py_LIMITED_API */ + + +/* BEWARE: + + Each interface exports both functions and macros. Extension modules should + use the functions, to ensure binary compatibility across Python versions. + Because the Python implementation is free to change internal details, and + the macros may (or may not) expose details for speed, if you do use the + macros you must recompile your extensions with each Python release. + + Never mix calls to PyMem_ with calls to the platform malloc/realloc/ + calloc/free. For example, on Windows different DLLs may end up using + different heaps, and if you use PyMem_Malloc you'll get the memory from the + heap used by the Python DLL; it could be a disaster if you free()'ed that + directly in your own extension. Using PyMem_Free instead ensures Python + can return the memory to the proper heap. As another example, in + PYMALLOC_DEBUG mode, Python wraps all calls to all PyMem_ and PyObject_ + memory functions in special debugging wrappers that add additional + debugging info to dynamic memory blocks. The system routines have no idea + what to do with that stuff, and the Python wrappers have no idea what to do + with raw blocks obtained directly by the system routines then. + + The GIL must be held when using these APIs. +*/ + +/* + * Raw memory interface + * ==================== + */ + +/* Functions + + Functions supplying platform-independent semantics for malloc/realloc/ + free. These functions make sure that allocating 0 bytes returns a distinct + non-NULL pointer (whenever possible -- if we're flat out of memory, NULL + may be returned), even if the platform malloc and realloc don't. + Returned pointers must be checked for NULL explicitly. No action is + performed on failure (no exception is set, no warning is printed, etc). +*/ + +PyAPI_FUNC(void *) PyMem_Malloc(size_t size); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize); +#endif +PyAPI_FUNC(void *) PyMem_Realloc(void *ptr, size_t new_size); +PyAPI_FUNC(void) PyMem_Free(void *ptr); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(char *) _PyMem_RawStrdup(const char *str); +PyAPI_FUNC(char *) _PyMem_Strdup(const char *str); +#endif + +/* Macros. */ + +/* PyMem_MALLOC(0) means malloc(1). Some systems would return NULL + for malloc(0), which would be treated as an error. Some platforms + would return a pointer with no memory behind it, which would break + pymalloc. To solve these problems, allocate an extra byte. */ +/* Returns NULL to indicate error if a negative size or size larger than + Py_ssize_t can represent is supplied. Helps prevents security holes. */ +#define PyMem_MALLOC(n) PyMem_Malloc(n) +#define PyMem_REALLOC(p, n) PyMem_Realloc(p, n) +#define PyMem_FREE(p) PyMem_Free(p) + +/* + * Type-oriented memory interface + * ============================== + * + * Allocate memory for n objects of the given type. Returns a new pointer + * or NULL if the request was too large or memory allocation failed. Use + * these macros rather than doing the multiplication yourself so that proper + * overflow checking is always done. + */ + +#define PyMem_New(type, n) \ + ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \ + ( (type *) PyMem_Malloc((n) * sizeof(type)) ) ) +#define PyMem_NEW(type, n) \ + ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \ + ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) ) + +/* + * The value of (p) is always clobbered by this macro regardless of success. + * The caller MUST check if (p) is NULL afterwards and deal with the memory + * error if so. This means the original value of (p) MUST be saved for the + * caller's memory error handler to not lose track of it. + */ +#define PyMem_Resize(p, type, n) \ + ( (p) = ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \ + (type *) PyMem_Realloc((p), (n) * sizeof(type)) ) +#define PyMem_RESIZE(p, type, n) \ + ( (p) = ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \ + (type *) PyMem_REALLOC((p), (n) * sizeof(type)) ) + +/* PyMem{Del,DEL} are left over from ancient days, and shouldn't be used + * anymore. They're just confusing aliases for PyMem_{Free,FREE} now. + */ +#define PyMem_Del PyMem_Free +#define PyMem_DEL PyMem_FREE + +#ifndef Py_LIMITED_API +typedef enum { + /* PyMem_RawMalloc(), PyMem_RawRealloc() and PyMem_RawFree() */ + PYMEM_DOMAIN_RAW, + + /* PyMem_Malloc(), PyMem_Realloc() and PyMem_Free() */ + PYMEM_DOMAIN_MEM, + + /* PyObject_Malloc(), PyObject_Realloc() and PyObject_Free() */ + PYMEM_DOMAIN_OBJ +} PyMemAllocatorDomain; + +typedef struct { + /* user context passed as the first argument to the 4 functions */ + void *ctx; + + /* allocate a memory block */ + void* (*malloc) (void *ctx, size_t size); + + /* allocate a memory block initialized by zeros */ + void* (*calloc) (void *ctx, size_t nelem, size_t elsize); + + /* allocate or resize a memory block */ + void* (*realloc) (void *ctx, void *ptr, size_t new_size); + + /* release a memory block */ + void (*free) (void *ctx, void *ptr); +} PyMemAllocatorEx; + +/* Get the memory block allocator of the specified domain. */ +PyAPI_FUNC(void) PyMem_GetAllocator(PyMemAllocatorDomain domain, + PyMemAllocatorEx *allocator); + +/* Set the memory block allocator of the specified domain. + + The new allocator must return a distinct non-NULL pointer when requesting + zero bytes. + + For the PYMEM_DOMAIN_RAW domain, the allocator must be thread-safe: the GIL + is not held when the allocator is called. + + If the new allocator is not a hook (don't call the previous allocator), the + PyMem_SetupDebugHooks() function must be called to reinstall the debug hooks + on top on the new allocator. */ +PyAPI_FUNC(void) PyMem_SetAllocator(PyMemAllocatorDomain domain, + PyMemAllocatorEx *allocator); + +/* Setup hooks to detect bugs in the following Python memory allocator + functions: + + - PyMem_RawMalloc(), PyMem_RawRealloc(), PyMem_RawFree() + - PyMem_Malloc(), PyMem_Realloc(), PyMem_Free() + - PyObject_Malloc(), PyObject_Realloc() and PyObject_Free() + + Newly allocated memory is filled with the byte 0xCB, freed memory is filled + with the byte 0xDB. Additionnal checks: + + - detect API violations, ex: PyObject_Free() called on a buffer allocated + by PyMem_Malloc() + - detect write before the start of the buffer (buffer underflow) + - detect write after the end of the buffer (buffer overflow) + + The function does nothing if Python is not compiled is debug mode. */ +PyAPI_FUNC(void) PyMem_SetupDebugHooks(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_PYMEM_H */ diff --git a/qrenderdoc/3rdparty/python/include/pyport.h b/qrenderdoc/3rdparty/python/include/pyport.h new file mode 100644 index 000000000..426822a81 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pyport.h @@ -0,0 +1,767 @@ +#ifndef Py_PYPORT_H +#define Py_PYPORT_H + +#include "pyconfig.h" /* include for defines */ + +#include + +/************************************************************************** +Symbols and macros to supply platform-independent interfaces to basic +C language & library operations whose spellings vary across platforms. + +Please try to make documentation here as clear as possible: by definition, +the stuff here is trying to illuminate C's darkest corners. + +Config #defines referenced here: + +SIGNED_RIGHT_SHIFT_ZERO_FILLS +Meaning: To be defined iff i>>j does not extend the sign bit when i is a + signed integral type and i < 0. +Used in: Py_ARITHMETIC_RIGHT_SHIFT + +Py_DEBUG +Meaning: Extra checks compiled in for debug mode. +Used in: Py_SAFE_DOWNCAST + +**************************************************************************/ + +/* typedefs for some C9X-defined synonyms for integral types. + * + * The names in Python are exactly the same as the C9X names, except with a + * Py_ prefix. Until C9X is universally implemented, this is the only way + * to ensure that Python gets reliable names that don't conflict with names + * in non-Python code that are playing their own tricks to define the C9X + * names. + * + * NOTE: don't go nuts here! Python has no use for *most* of the C9X + * integral synonyms. Only define the ones we actually need. + */ + +/* long long is required. Ensure HAVE_LONG_LONG is defined for compatibility. */ +#ifndef HAVE_LONG_LONG +#define HAVE_LONG_LONG 1 +#endif +#ifndef PY_LONG_LONG +#define PY_LONG_LONG long long +/* If LLONG_MAX is defined in limits.h, use that. */ +#define PY_LLONG_MIN LLONG_MIN +#define PY_LLONG_MAX LLONG_MAX +#define PY_ULLONG_MAX ULLONG_MAX +#endif + +#define PY_UINT32_T uint32_t +#define PY_UINT64_T uint64_t + +/* Signed variants of the above */ +#define PY_INT32_T int32_t +#define PY_INT64_T int64_t + +/* If PYLONG_BITS_IN_DIGIT is not defined then we'll use 30-bit digits if all + the necessary integer types are available, and we're on a 64-bit platform + (as determined by SIZEOF_VOID_P); otherwise we use 15-bit digits. */ + +#ifndef PYLONG_BITS_IN_DIGIT +#if SIZEOF_VOID_P >= 8 +#define PYLONG_BITS_IN_DIGIT 30 +#else +#define PYLONG_BITS_IN_DIGIT 15 +#endif +#endif + +/* uintptr_t is the C9X name for an unsigned integral type such that a + * legitimate void* can be cast to uintptr_t and then back to void* again + * without loss of information. Similarly for intptr_t, wrt a signed + * integral type. + */ +typedef uintptr_t Py_uintptr_t; +typedef intptr_t Py_intptr_t; + +/* Py_ssize_t is a signed integral type such that sizeof(Py_ssize_t) == + * sizeof(size_t). C99 doesn't define such a thing directly (size_t is an + * unsigned integral type). See PEP 353 for details. + */ +#ifdef HAVE_SSIZE_T +typedef ssize_t Py_ssize_t; +#elif SIZEOF_VOID_P == SIZEOF_SIZE_T +typedef Py_intptr_t Py_ssize_t; +#else +# error "Python needs a typedef for Py_ssize_t in pyport.h." +#endif + +/* Py_hash_t is the same size as a pointer. */ +#define SIZEOF_PY_HASH_T SIZEOF_SIZE_T +typedef Py_ssize_t Py_hash_t; +/* Py_uhash_t is the unsigned equivalent needed to calculate numeric hash. */ +#define SIZEOF_PY_UHASH_T SIZEOF_SIZE_T +typedef size_t Py_uhash_t; + +/* Only used for compatibility with code that may not be PY_SSIZE_T_CLEAN. */ +#ifdef PY_SSIZE_T_CLEAN +typedef Py_ssize_t Py_ssize_clean_t; +#else +typedef int Py_ssize_clean_t; +#endif + +/* Largest possible value of size_t. */ +#define PY_SIZE_MAX SIZE_MAX + +/* Largest positive value of type Py_ssize_t. */ +#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1)) +/* Smallest negative value of type Py_ssize_t. */ +#define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1) + +/* PY_FORMAT_SIZE_T is a platform-specific modifier for use in a printf + * format to convert an argument with the width of a size_t or Py_ssize_t. + * C99 introduced "z" for this purpose, but not all platforms support that; + * e.g., MS compilers use "I" instead. + * + * These "high level" Python format functions interpret "z" correctly on + * all platforms (Python interprets the format string itself, and does whatever + * the platform C requires to convert a size_t/Py_ssize_t argument): + * + * PyBytes_FromFormat + * PyErr_Format + * PyBytes_FromFormatV + * PyUnicode_FromFormatV + * + * Lower-level uses require that you interpolate the correct format modifier + * yourself (e.g., calling printf, fprintf, sprintf, PyOS_snprintf); for + * example, + * + * Py_ssize_t index; + * fprintf(stderr, "index %" PY_FORMAT_SIZE_T "d sucks\n", index); + * + * That will expand to %ld, or %Id, or to something else correct for a + * Py_ssize_t on the platform. + */ +#ifndef PY_FORMAT_SIZE_T +# if SIZEOF_SIZE_T == SIZEOF_INT && !defined(__APPLE__) +# define PY_FORMAT_SIZE_T "" +# elif SIZEOF_SIZE_T == SIZEOF_LONG +# define PY_FORMAT_SIZE_T "l" +# elif defined(MS_WINDOWS) +# define PY_FORMAT_SIZE_T "I" +# else +# error "This platform's pyconfig.h needs to define PY_FORMAT_SIZE_T" +# endif +#endif + +/* Py_LOCAL can be used instead of static to get the fastest possible calling + * convention for functions that are local to a given module. + * + * Py_LOCAL_INLINE does the same thing, and also explicitly requests inlining, + * for platforms that support that. + * + * If PY_LOCAL_AGGRESSIVE is defined before python.h is included, more + * "aggressive" inlining/optimization is enabled for the entire module. This + * may lead to code bloat, and may slow things down for those reasons. It may + * also lead to errors, if the code relies on pointer aliasing. Use with + * care. + * + * NOTE: You can only use this for functions that are entirely local to a + * module; functions that are exported via method tables, callbacks, etc, + * should keep using static. + */ + +#if defined(_MSC_VER) +#if defined(PY_LOCAL_AGGRESSIVE) +/* enable more aggressive optimization for visual studio */ +#pragma optimize("agtw", on) +#endif +/* ignore warnings if the compiler decides not to inline a function */ +#pragma warning(disable: 4710) +/* fastest possible local call under MSVC */ +#define Py_LOCAL(type) static type __fastcall +#define Py_LOCAL_INLINE(type) static __inline type __fastcall +#elif defined(USE_INLINE) +#define Py_LOCAL(type) static type +#define Py_LOCAL_INLINE(type) static inline type +#else +#define Py_LOCAL(type) static type +#define Py_LOCAL_INLINE(type) static type +#endif + +/* Py_MEMCPY is kept for backwards compatibility, + * see https://bugs.python.org/issue28126 */ +#define Py_MEMCPY memcpy + +#include + +#ifdef HAVE_IEEEFP_H +#include /* needed for 'finite' declaration on some platforms */ +#endif + +#include /* Moved here from the math section, before extern "C" */ + +/******************************************** + * WRAPPER FOR and/or * + ********************************************/ + +#ifdef TIME_WITH_SYS_TIME +#include +#include +#else /* !TIME_WITH_SYS_TIME */ +#ifdef HAVE_SYS_TIME_H +#include +#else /* !HAVE_SYS_TIME_H */ +#include +#endif /* !HAVE_SYS_TIME_H */ +#endif /* !TIME_WITH_SYS_TIME */ + + +/****************************** + * WRAPPER FOR * + ******************************/ + +/* NB caller must include */ + +#ifdef HAVE_SYS_SELECT_H +#include +#endif /* !HAVE_SYS_SELECT_H */ + +/******************************* + * stat() and fstat() fiddling * + *******************************/ + +#ifdef HAVE_SYS_STAT_H +#include +#elif defined(HAVE_STAT_H) +#include +#endif + +#ifndef S_IFMT +/* VisualAge C/C++ Failed to Define MountType Field in sys/stat.h */ +#define S_IFMT 0170000 +#endif + +#ifndef S_IFLNK +/* Windows doesn't define S_IFLNK but posixmodule.c maps + * IO_REPARSE_TAG_SYMLINK to S_IFLNK */ +# define S_IFLNK 0120000 +#endif + +#ifndef S_ISREG +#define S_ISREG(x) (((x) & S_IFMT) == S_IFREG) +#endif + +#ifndef S_ISDIR +#define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR) +#endif + +#ifndef S_ISCHR +#define S_ISCHR(x) (((x) & S_IFMT) == S_IFCHR) +#endif + +#ifdef __cplusplus +/* Move this down here since some C++ #include's don't like to be included + inside an extern "C" */ +extern "C" { +#endif + + +/* Py_ARITHMETIC_RIGHT_SHIFT + * C doesn't define whether a right-shift of a signed integer sign-extends + * or zero-fills. Here a macro to force sign extension: + * Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) + * Return I >> J, forcing sign extension. Arithmetically, return the + * floor of I/2**J. + * Requirements: + * I should have signed integer type. In the terminology of C99, this can + * be either one of the five standard signed integer types (signed char, + * short, int, long, long long) or an extended signed integer type. + * J is an integer >= 0 and strictly less than the number of bits in the + * type of I (because C doesn't define what happens for J outside that + * range either). + * TYPE used to specify the type of I, but is now ignored. It's been left + * in for backwards compatibility with versions <= 2.6 or 3.0. + * Caution: + * I may be evaluated more than once. + */ +#ifdef SIGNED_RIGHT_SHIFT_ZERO_FILLS +#define Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) \ + ((I) < 0 ? -1-((-1-(I)) >> (J)) : (I) >> (J)) +#else +#define Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) ((I) >> (J)) +#endif + +/* Py_FORCE_EXPANSION(X) + * "Simply" returns its argument. However, macro expansions within the + * argument are evaluated. This unfortunate trickery is needed to get + * token-pasting to work as desired in some cases. + */ +#define Py_FORCE_EXPANSION(X) X + +/* Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) + * Cast VALUE to type NARROW from type WIDE. In Py_DEBUG mode, this + * assert-fails if any information is lost. + * Caution: + * VALUE may be evaluated more than once. + */ +#ifdef Py_DEBUG +#define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) \ + (assert((WIDE)(NARROW)(VALUE) == (VALUE)), (NARROW)(VALUE)) +#else +#define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) (NARROW)(VALUE) +#endif + +/* Py_SET_ERRNO_ON_MATH_ERROR(x) + * If a libm function did not set errno, but it looks like the result + * overflowed or not-a-number, set errno to ERANGE or EDOM. Set errno + * to 0 before calling a libm function, and invoke this macro after, + * passing the function result. + * Caution: + * This isn't reliable. See Py_OVERFLOWED comments. + * X is evaluated more than once. + */ +#if defined(__FreeBSD__) || defined(__OpenBSD__) || (defined(__hpux) && defined(__ia64)) +#define _Py_SET_EDOM_FOR_NAN(X) if (isnan(X)) errno = EDOM; +#else +#define _Py_SET_EDOM_FOR_NAN(X) ; +#endif +#define Py_SET_ERRNO_ON_MATH_ERROR(X) \ + do { \ + if (errno == 0) { \ + if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL) \ + errno = ERANGE; \ + else _Py_SET_EDOM_FOR_NAN(X) \ + } \ + } while(0) + +/* Py_SET_ERANGE_ON_OVERFLOW(x) + * An alias of Py_SET_ERRNO_ON_MATH_ERROR for backward-compatibility. + */ +#define Py_SET_ERANGE_IF_OVERFLOW(X) Py_SET_ERRNO_ON_MATH_ERROR(X) + +/* Py_ADJUST_ERANGE1(x) + * Py_ADJUST_ERANGE2(x, y) + * Set errno to 0 before calling a libm function, and invoke one of these + * macros after, passing the function result(s) (Py_ADJUST_ERANGE2 is useful + * for functions returning complex results). This makes two kinds of + * adjustments to errno: (A) If it looks like the platform libm set + * errno=ERANGE due to underflow, clear errno. (B) If it looks like the + * platform libm overflowed but didn't set errno, force errno to ERANGE. In + * effect, we're trying to force a useful implementation of C89 errno + * behavior. + * Caution: + * This isn't reliable. See Py_OVERFLOWED comments. + * X and Y may be evaluated more than once. + */ +#define Py_ADJUST_ERANGE1(X) \ + do { \ + if (errno == 0) { \ + if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL) \ + errno = ERANGE; \ + } \ + else if (errno == ERANGE && (X) == 0.0) \ + errno = 0; \ + } while(0) + +#define Py_ADJUST_ERANGE2(X, Y) \ + do { \ + if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL || \ + (Y) == Py_HUGE_VAL || (Y) == -Py_HUGE_VAL) { \ + if (errno == 0) \ + errno = ERANGE; \ + } \ + else if (errno == ERANGE) \ + errno = 0; \ + } while(0) + +/* The functions _Py_dg_strtod and _Py_dg_dtoa in Python/dtoa.c (which are + * required to support the short float repr introduced in Python 3.1) require + * that the floating-point unit that's being used for arithmetic operations + * on C doubles is set to use 53-bit precision. It also requires that the + * FPU rounding mode is round-half-to-even, but that's less often an issue. + * + * If your FPU isn't already set to 53-bit precision/round-half-to-even, and + * you want to make use of _Py_dg_strtod and _Py_dg_dtoa, then you should + * + * #define HAVE_PY_SET_53BIT_PRECISION 1 + * + * and also give appropriate definitions for the following three macros: + * + * _PY_SET_53BIT_PRECISION_START : store original FPU settings, and + * set FPU to 53-bit precision/round-half-to-even + * _PY_SET_53BIT_PRECISION_END : restore original FPU settings + * _PY_SET_53BIT_PRECISION_HEADER : any variable declarations needed to + * use the two macros above. + * + * The macros are designed to be used within a single C function: see + * Python/pystrtod.c for an example of their use. + */ + +/* get and set x87 control word for gcc/x86 */ +#ifdef HAVE_GCC_ASM_FOR_X87 +#define HAVE_PY_SET_53BIT_PRECISION 1 +/* _Py_get/set_387controlword functions are defined in Python/pymath.c */ +#define _Py_SET_53BIT_PRECISION_HEADER \ + unsigned short old_387controlword, new_387controlword +#define _Py_SET_53BIT_PRECISION_START \ + do { \ + old_387controlword = _Py_get_387controlword(); \ + new_387controlword = (old_387controlword & ~0x0f00) | 0x0200; \ + if (new_387controlword != old_387controlword) \ + _Py_set_387controlword(new_387controlword); \ + } while (0) +#define _Py_SET_53BIT_PRECISION_END \ + if (new_387controlword != old_387controlword) \ + _Py_set_387controlword(old_387controlword) +#endif + +/* get and set x87 control word for VisualStudio/x86 */ +#if defined(_MSC_VER) && !defined(_WIN64) /* x87 not supported in 64-bit */ +#define HAVE_PY_SET_53BIT_PRECISION 1 +#define _Py_SET_53BIT_PRECISION_HEADER \ + unsigned int old_387controlword, new_387controlword, out_387controlword +/* We use the __control87_2 function to set only the x87 control word. + The SSE control word is unaffected. */ +#define _Py_SET_53BIT_PRECISION_START \ + do { \ + __control87_2(0, 0, &old_387controlword, NULL); \ + new_387controlword = \ + (old_387controlword & ~(_MCW_PC | _MCW_RC)) | (_PC_53 | _RC_NEAR); \ + if (new_387controlword != old_387controlword) \ + __control87_2(new_387controlword, _MCW_PC | _MCW_RC, \ + &out_387controlword, NULL); \ + } while (0) +#define _Py_SET_53BIT_PRECISION_END \ + do { \ + if (new_387controlword != old_387controlword) \ + __control87_2(old_387controlword, _MCW_PC | _MCW_RC, \ + &out_387controlword, NULL); \ + } while (0) +#endif + +#ifdef HAVE_GCC_ASM_FOR_MC68881 +#define HAVE_PY_SET_53BIT_PRECISION 1 +#define _Py_SET_53BIT_PRECISION_HEADER \ + unsigned int old_fpcr, new_fpcr +#define _Py_SET_53BIT_PRECISION_START \ + do { \ + __asm__ ("fmove.l %%fpcr,%0" : "=g" (old_fpcr)); \ + /* Set double precision / round to nearest. */ \ + new_fpcr = (old_fpcr & ~0xf0) | 0x80; \ + if (new_fpcr != old_fpcr) \ + __asm__ volatile ("fmove.l %0,%%fpcr" : : "g" (new_fpcr)); \ + } while (0) +#define _Py_SET_53BIT_PRECISION_END \ + do { \ + if (new_fpcr != old_fpcr) \ + __asm__ volatile ("fmove.l %0,%%fpcr" : : "g" (old_fpcr)); \ + } while (0) +#endif + +/* default definitions are empty */ +#ifndef HAVE_PY_SET_53BIT_PRECISION +#define _Py_SET_53BIT_PRECISION_HEADER +#define _Py_SET_53BIT_PRECISION_START +#define _Py_SET_53BIT_PRECISION_END +#endif + +/* If we can't guarantee 53-bit precision, don't use the code + in Python/dtoa.c, but fall back to standard code. This + means that repr of a float will be long (17 sig digits). + + Realistically, there are two things that could go wrong: + + (1) doubles aren't IEEE 754 doubles, or + (2) we're on x86 with the rounding precision set to 64-bits + (extended precision), and we don't know how to change + the rounding precision. + */ + +#if !defined(DOUBLE_IS_LITTLE_ENDIAN_IEEE754) && \ + !defined(DOUBLE_IS_BIG_ENDIAN_IEEE754) && \ + !defined(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754) +#define PY_NO_SHORT_FLOAT_REPR +#endif + +/* double rounding is symptomatic of use of extended precision on x86. If + we're seeing double rounding, and we don't have any mechanism available for + changing the FPU rounding precision, then don't use Python/dtoa.c. */ +#if defined(X87_DOUBLE_ROUNDING) && !defined(HAVE_PY_SET_53BIT_PRECISION) +#define PY_NO_SHORT_FLOAT_REPR +#endif + + +/* Py_DEPRECATED(version) + * Declare a variable, type, or function deprecated. + * Usage: + * extern int old_var Py_DEPRECATED(2.3); + * typedef int T1 Py_DEPRECATED(2.4); + * extern int x() Py_DEPRECATED(2.5); + */ +#if defined(__GNUC__) && ((__GNUC__ >= 4) || \ + (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)) +#define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__)) +#else +#define Py_DEPRECATED(VERSION_UNUSED) +#endif + +/************************************************************************** +Prototypes that are missing from the standard include files on some systems +(and possibly only some versions of such systems.) + +Please be conservative with adding new ones, document them and enclose them +in platform-specific #ifdefs. +**************************************************************************/ + +#ifdef SOLARIS +/* Unchecked */ +extern int gethostname(char *, int); +#endif + +#ifdef HAVE__GETPTY +#include /* we need to import mode_t */ +extern char * _getpty(int *, int, mode_t, int); +#endif + +/* On QNX 6, struct termio must be declared by including sys/termio.h + if TCGETA, TCSETA, TCSETAW, or TCSETAF are used. sys/termio.h must + be included before termios.h or it will generate an error. */ +#if defined(HAVE_SYS_TERMIO_H) && !defined(__hpux) +#include +#endif + +#if defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) +#if !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H) +/* BSDI does not supply a prototype for the 'openpty' and 'forkpty' + functions, even though they are included in libutil. */ +#include +extern int openpty(int *, int *, char *, struct termios *, struct winsize *); +extern pid_t forkpty(int *, char *, struct termios *, struct winsize *); +#endif /* !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H) */ +#endif /* defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) */ + + +/* On 4.4BSD-descendants, ctype functions serves the whole range of + * wchar_t character set rather than single byte code points only. + * This characteristic can break some operations of string object + * including str.upper() and str.split() on UTF-8 locales. This + * workaround was provided by Tim Robbins of FreeBSD project. + */ + +#ifdef __FreeBSD__ +#include +#if (__FreeBSD_version >= 500040 && __FreeBSD_version < 602113) || \ + (__FreeBSD_version >= 700000 && __FreeBSD_version < 700054) || \ + (__FreeBSD_version >= 800000 && __FreeBSD_version < 800001) +# define _PY_PORT_CTYPE_UTF8_ISSUE +#endif +#endif + + +#if defined(__APPLE__) +# define _PY_PORT_CTYPE_UTF8_ISSUE +#endif + +#ifdef _PY_PORT_CTYPE_UTF8_ISSUE +#ifndef __cplusplus + /* The workaround below is unsafe in C++ because + * the defines these symbols as real functions, + * with a slightly different signature. + * See issue #10910 + */ +#include +#include +#undef isalnum +#define isalnum(c) iswalnum(btowc(c)) +#undef isalpha +#define isalpha(c) iswalpha(btowc(c)) +#undef islower +#define islower(c) iswlower(btowc(c)) +#undef isspace +#define isspace(c) iswspace(btowc(c)) +#undef isupper +#define isupper(c) iswupper(btowc(c)) +#undef tolower +#define tolower(c) towlower(btowc(c)) +#undef toupper +#define toupper(c) towupper(btowc(c)) +#endif +#endif + + +/* Declarations for symbol visibility. + + PyAPI_FUNC(type): Declares a public Python API function and return type + PyAPI_DATA(type): Declares public Python data and its type + PyMODINIT_FUNC: A Python module init function. If these functions are + inside the Python core, they are private to the core. + If in an extension module, it may be declared with + external linkage depending on the platform. + + As a number of platforms support/require "__declspec(dllimport/dllexport)", + we support a HAVE_DECLSPEC_DLL macro to save duplication. +*/ + +/* + All windows ports, except cygwin, are handled in PC/pyconfig.h. + + Cygwin is the only other autoconf platform requiring special + linkage handling and it uses __declspec(). +*/ +#if defined(__CYGWIN__) +# define HAVE_DECLSPEC_DLL +#endif + +/* only get special linkage if built as shared or platform is Cygwin */ +#if defined(Py_ENABLE_SHARED) || defined(__CYGWIN__) +# if defined(HAVE_DECLSPEC_DLL) +# ifdef Py_BUILD_CORE +# define PyAPI_FUNC(RTYPE) __declspec(dllexport) RTYPE +# define PyAPI_DATA(RTYPE) extern __declspec(dllexport) RTYPE + /* module init functions inside the core need no external linkage */ + /* except for Cygwin to handle embedding */ +# if defined(__CYGWIN__) +# define PyMODINIT_FUNC __declspec(dllexport) PyObject* +# else /* __CYGWIN__ */ +# define PyMODINIT_FUNC PyObject* +# endif /* __CYGWIN__ */ +# else /* Py_BUILD_CORE */ + /* Building an extension module, or an embedded situation */ + /* public Python functions and data are imported */ + /* Under Cygwin, auto-import functions to prevent compilation */ + /* failures similar to those described at the bottom of 4.1: */ + /* http://docs.python.org/extending/windows.html#a-cookbook-approach */ +# if !defined(__CYGWIN__) +# define PyAPI_FUNC(RTYPE) __declspec(dllimport) RTYPE +# endif /* !__CYGWIN__ */ +# define PyAPI_DATA(RTYPE) extern __declspec(dllimport) RTYPE + /* module init functions outside the core must be exported */ +# if defined(__cplusplus) +# define PyMODINIT_FUNC extern "C" __declspec(dllexport) PyObject* +# else /* __cplusplus */ +# define PyMODINIT_FUNC __declspec(dllexport) PyObject* +# endif /* __cplusplus */ +# endif /* Py_BUILD_CORE */ +# endif /* HAVE_DECLSPEC */ +#endif /* Py_ENABLE_SHARED */ + +/* If no external linkage macros defined by now, create defaults */ +#ifndef PyAPI_FUNC +# define PyAPI_FUNC(RTYPE) RTYPE +#endif +#ifndef PyAPI_DATA +# define PyAPI_DATA(RTYPE) extern RTYPE +#endif +#ifndef PyMODINIT_FUNC +# if defined(__cplusplus) +# define PyMODINIT_FUNC extern "C" PyObject* +# else /* __cplusplus */ +# define PyMODINIT_FUNC PyObject* +# endif /* __cplusplus */ +#endif + +/* limits.h constants that may be missing */ + +#ifndef INT_MAX +#define INT_MAX 2147483647 +#endif + +#ifndef LONG_MAX +#if SIZEOF_LONG == 4 +#define LONG_MAX 0X7FFFFFFFL +#elif SIZEOF_LONG == 8 +#define LONG_MAX 0X7FFFFFFFFFFFFFFFL +#else +#error "could not set LONG_MAX in pyport.h" +#endif +#endif + +#ifndef LONG_MIN +#define LONG_MIN (-LONG_MAX-1) +#endif + +#ifndef LONG_BIT +#define LONG_BIT (8 * SIZEOF_LONG) +#endif + +#if LONG_BIT != 8 * SIZEOF_LONG +/* 04-Oct-2000 LONG_BIT is apparently (mis)defined as 64 on some recent + * 32-bit platforms using gcc. We try to catch that here at compile-time + * rather than waiting for integer multiplication to trigger bogus + * overflows. + */ +#error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." +#endif + +#ifdef __cplusplus +} +#endif + +/* + * Hide GCC attributes from compilers that don't support them. + */ +#if (!defined(__GNUC__) || __GNUC__ < 2 || \ + (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ) +#define Py_GCC_ATTRIBUTE(x) +#else +#define Py_GCC_ATTRIBUTE(x) __attribute__(x) +#endif + +/* + * Specify alignment on compilers that support it. + */ +#if defined(__GNUC__) && __GNUC__ >= 3 +#define Py_ALIGNED(x) __attribute__((aligned(x))) +#else +#define Py_ALIGNED(x) +#endif + +/* Eliminate end-of-loop code not reached warnings from SunPro C + * when using do{...}while(0) macros + */ +#ifdef __SUNPRO_C +#pragma error_messages (off,E_END_OF_LOOP_CODE_NOT_REACHED) +#endif + +#ifndef Py_LL +#define Py_LL(x) x##LL +#endif + +#ifndef Py_ULL +#define Py_ULL(x) Py_LL(x##U) +#endif + +#define Py_VA_COPY va_copy + +/* + * Convenient macros to deal with endianness of the platform. WORDS_BIGENDIAN is + * detected by configure and defined in pyconfig.h. The code in pyconfig.h + * also takes care of Apple's universal builds. + */ + +#ifdef WORDS_BIGENDIAN +#define PY_BIG_ENDIAN 1 +#define PY_LITTLE_ENDIAN 0 +#else +#define PY_BIG_ENDIAN 0 +#define PY_LITTLE_ENDIAN 1 +#endif + +#ifdef Py_BUILD_CORE +/* + * Macros to protect CRT calls against instant termination when passed an + * invalid parameter (issue23524). + */ +#if defined _MSC_VER && _MSC_VER >= 1900 + +extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler; +#define _Py_BEGIN_SUPPRESS_IPH { _invalid_parameter_handler _Py_old_handler = \ + _set_thread_local_invalid_parameter_handler(_Py_silent_invalid_parameter_handler); +#define _Py_END_SUPPRESS_IPH _set_thread_local_invalid_parameter_handler(_Py_old_handler); } + +#else + +#define _Py_BEGIN_SUPPRESS_IPH +#define _Py_END_SUPPRESS_IPH + +#endif /* _MSC_VER >= 1900 */ +#endif /* Py_BUILD_CORE */ + +#ifdef __ANDROID__ +#include +#endif + +#endif /* Py_PYPORT_H */ diff --git a/qrenderdoc/3rdparty/python/include/pystate.h b/qrenderdoc/3rdparty/python/include/pystate.h new file mode 100644 index 000000000..1838fa404 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pystate.h @@ -0,0 +1,324 @@ + +/* Thread and interpreter state structures and their interfaces */ + + +#ifndef Py_PYSTATE_H +#define Py_PYSTATE_H +#ifdef __cplusplus +extern "C" { +#endif + +/* This limitation is for performance and simplicity. If needed it can be +removed (with effort). */ +#define MAX_CO_EXTRA_USERS 255 + +/* State shared between threads */ + +struct _ts; /* Forward */ +struct _is; /* Forward */ +struct _frame; /* Forward declaration for PyFrameObject. */ + +#ifdef Py_LIMITED_API +typedef struct _is PyInterpreterState; +#else +typedef PyObject* (*_PyFrameEvalFunction)(struct _frame *, int); + +typedef struct _is { + + struct _is *next; + struct _ts *tstate_head; + + PyObject *modules; + PyObject *modules_by_index; + PyObject *sysdict; + PyObject *builtins; + PyObject *importlib; + + PyObject *codec_search_path; + PyObject *codec_search_cache; + PyObject *codec_error_registry; + int codecs_initialized; + int fscodec_initialized; + +#ifdef HAVE_DLOPEN + int dlopenflags; +#endif + + PyObject *builtins_copy; + PyObject *import_func; + /* Initialized to PyEval_EvalFrameDefault(). */ + _PyFrameEvalFunction eval_frame; +} PyInterpreterState; +#endif + +typedef struct _co_extra_state { + struct _co_extra_state *next; + PyInterpreterState* interp; + + Py_ssize_t co_extra_user_count; + freefunc co_extra_freefuncs[MAX_CO_EXTRA_USERS]; +} __PyCodeExtraState; + +/* This is temporary for backwards compat in 3.6 and will be removed in 3.7 */ +__PyCodeExtraState* __PyCodeExtraState_Get(void); + +/* State unique per thread */ + +#ifndef Py_LIMITED_API +/* Py_tracefunc return -1 when raising an exception, or 0 for success. */ +typedef int (*Py_tracefunc)(PyObject *, struct _frame *, int, PyObject *); + +/* The following values are used for 'what' for tracefunc functions: */ +#define PyTrace_CALL 0 +#define PyTrace_EXCEPTION 1 +#define PyTrace_LINE 2 +#define PyTrace_RETURN 3 +#define PyTrace_C_CALL 4 +#define PyTrace_C_EXCEPTION 5 +#define PyTrace_C_RETURN 6 +#endif + +#ifdef Py_LIMITED_API +typedef struct _ts PyThreadState; +#else +typedef struct _ts { + /* See Python/ceval.c for comments explaining most fields */ + + struct _ts *prev; + struct _ts *next; + PyInterpreterState *interp; + + struct _frame *frame; + int recursion_depth; + char overflowed; /* The stack has overflowed. Allow 50 more calls + to handle the runtime error. */ + char recursion_critical; /* The current calls must not cause + a stack overflow. */ + /* 'tracing' keeps track of the execution depth when tracing/profiling. + This is to prevent the actual trace/profile code from being recorded in + the trace/profile. */ + int tracing; + int use_tracing; + + Py_tracefunc c_profilefunc; + Py_tracefunc c_tracefunc; + PyObject *c_profileobj; + PyObject *c_traceobj; + + PyObject *curexc_type; + PyObject *curexc_value; + PyObject *curexc_traceback; + + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_traceback; + + PyObject *dict; /* Stores per-thread state */ + + int gilstate_counter; + + PyObject *async_exc; /* Asynchronous exception to raise */ + long thread_id; /* Thread id where this tstate was created */ + + int trash_delete_nesting; + PyObject *trash_delete_later; + + /* Called when a thread state is deleted normally, but not when it + * is destroyed after fork(). + * Pain: to prevent rare but fatal shutdown errors (issue 18808), + * Thread.join() must wait for the join'ed thread's tstate to be unlinked + * from the tstate chain. That happens at the end of a thread's life, + * in pystate.c. + * The obvious way doesn't quite work: create a lock which the tstate + * unlinking code releases, and have Thread.join() wait to acquire that + * lock. The problem is that we _are_ at the end of the thread's life: + * if the thread holds the last reference to the lock, decref'ing the + * lock will delete the lock, and that may trigger arbitrary Python code + * if there's a weakref, with a callback, to the lock. But by this time + * _PyThreadState_Current is already NULL, so only the simplest of C code + * can be allowed to run (in particular it must not be possible to + * release the GIL). + * So instead of holding the lock directly, the tstate holds a weakref to + * the lock: that's the value of on_delete_data below. Decref'ing a + * weakref is harmless. + * on_delete points to _threadmodule.c's static release_sentinel() function. + * After the tstate is unlinked, release_sentinel is called with the + * weakref-to-lock (on_delete_data) argument, and release_sentinel releases + * the indirectly held lock. + */ + void (*on_delete)(void *); + void *on_delete_data; + + PyObject *coroutine_wrapper; + int in_coroutine_wrapper; + + /* Now used from PyInterpreterState, kept here for ABI + compatibility with PyThreadState */ + Py_ssize_t _preserve_36_ABI_1; + freefunc _preserve_36_ABI_2[MAX_CO_EXTRA_USERS]; + + PyObject *async_gen_firstiter; + PyObject *async_gen_finalizer; + + /* XXX signal handlers should also be here */ + +} PyThreadState; +#endif + + +PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_New(void); +PyAPI_FUNC(void) PyInterpreterState_Clear(PyInterpreterState *); +PyAPI_FUNC(void) PyInterpreterState_Delete(PyInterpreterState *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyState_AddModule(PyObject*, struct PyModuleDef*); +#endif /* !Py_LIMITED_API */ +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +/* New in 3.3 */ +PyAPI_FUNC(int) PyState_AddModule(PyObject*, struct PyModuleDef*); +PyAPI_FUNC(int) PyState_RemoveModule(struct PyModuleDef*); +#endif +PyAPI_FUNC(PyObject*) PyState_FindModule(struct PyModuleDef*); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyState_ClearModules(void); +#endif + +PyAPI_FUNC(PyThreadState *) PyThreadState_New(PyInterpreterState *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyThreadState *) _PyThreadState_Prealloc(PyInterpreterState *); +PyAPI_FUNC(void) _PyThreadState_Init(PyThreadState *); +#endif /* !Py_LIMITED_API */ +PyAPI_FUNC(void) PyThreadState_Clear(PyThreadState *); +PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyThreadState_DeleteExcept(PyThreadState *tstate); +#endif /* !Py_LIMITED_API */ +#ifdef WITH_THREAD +PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyGILState_Reinit(void); +#endif /* !Py_LIMITED_API */ +#endif + +/* Return the current thread state. The global interpreter lock must be held. + * When the current thread state is NULL, this issues a fatal error (so that + * the caller needn't check for NULL). */ +PyAPI_FUNC(PyThreadState *) PyThreadState_Get(void); + +#ifndef Py_LIMITED_API +/* Similar to PyThreadState_Get(), but don't issue a fatal error + * if it is NULL. */ +PyAPI_FUNC(PyThreadState *) _PyThreadState_UncheckedGet(void); +#endif /* !Py_LIMITED_API */ + +PyAPI_FUNC(PyThreadState *) PyThreadState_Swap(PyThreadState *); +PyAPI_FUNC(PyObject *) PyThreadState_GetDict(void); +PyAPI_FUNC(int) PyThreadState_SetAsyncExc(long, PyObject *); + + +/* Variable and macro for in-line access to current thread state */ + +/* Assuming the current thread holds the GIL, this is the + PyThreadState for the current thread. */ +#ifdef Py_BUILD_CORE +PyAPI_DATA(_Py_atomic_address) _PyThreadState_Current; +# define PyThreadState_GET() \ + ((PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current)) +#else +# define PyThreadState_GET() PyThreadState_Get() +#endif + +typedef + enum {PyGILState_LOCKED, PyGILState_UNLOCKED} + PyGILState_STATE; + +#ifdef WITH_THREAD + +/* Ensure that the current thread is ready to call the Python + C API, regardless of the current state of Python, or of its + thread lock. This may be called as many times as desired + by a thread so long as each call is matched with a call to + PyGILState_Release(). In general, other thread-state APIs may + be used between _Ensure() and _Release() calls, so long as the + thread-state is restored to its previous state before the Release(). + For example, normal use of the Py_BEGIN_ALLOW_THREADS/ + Py_END_ALLOW_THREADS macros are acceptable. + + The return value is an opaque "handle" to the thread state when + PyGILState_Ensure() was called, and must be passed to + PyGILState_Release() to ensure Python is left in the same state. Even + though recursive calls are allowed, these handles can *not* be shared - + each unique call to PyGILState_Ensure must save the handle for its + call to PyGILState_Release. + + When the function returns, the current thread will hold the GIL. + + Failure is a fatal error. +*/ +PyAPI_FUNC(PyGILState_STATE) PyGILState_Ensure(void); + +/* Release any resources previously acquired. After this call, Python's + state will be the same as it was prior to the corresponding + PyGILState_Ensure() call (but generally this state will be unknown to + the caller, hence the use of the GILState API.) + + Every call to PyGILState_Ensure must be matched by a call to + PyGILState_Release on the same thread. +*/ +PyAPI_FUNC(void) PyGILState_Release(PyGILState_STATE); + +/* Helper/diagnostic function - get the current thread state for + this thread. May return NULL if no GILState API has been used + on the current thread. Note that the main thread always has such a + thread-state, even if no auto-thread-state call has been made + on the main thread. +*/ +PyAPI_FUNC(PyThreadState *) PyGILState_GetThisThreadState(void); + +#ifndef Py_LIMITED_API +/* Issue #26558: Flag to disable PyGILState_Check(). + If set to non-zero, PyGILState_Check() always return 1. */ +PyAPI_DATA(int) _PyGILState_check_enabled; + +/* Helper/diagnostic function - return 1 if the current thread + currently holds the GIL, 0 otherwise. + + The function returns 1 if _PyGILState_check_enabled is non-zero. */ +PyAPI_FUNC(int) PyGILState_Check(void); + +/* Unsafe function to get the single PyInterpreterState used by this process' + GILState implementation. + + Return NULL before _PyGILState_Init() is called and after _PyGILState_Fini() + is called. */ +PyAPI_FUNC(PyInterpreterState *) _PyGILState_GetInterpreterStateUnsafe(void); +#endif + +#endif /* #ifdef WITH_THREAD */ + +/* The implementation of sys._current_frames() Returns a dict mapping + thread id to that thread's current frame. +*/ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyThread_CurrentFrames(void); +#endif + +/* Routines for advanced debuggers, requested by David Beazley. + Don't use unless you know what you are doing! */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Head(void); +PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Next(PyInterpreterState *); +PyAPI_FUNC(PyThreadState *) PyInterpreterState_ThreadHead(PyInterpreterState *); +PyAPI_FUNC(PyThreadState *) PyThreadState_Next(PyThreadState *); + +typedef struct _frame *(*PyThreadFrameGetter)(PyThreadState *self_); +#endif + +/* hook for PyEval_GetFrame(), requested for Psyco */ +#ifndef Py_LIMITED_API +PyAPI_DATA(PyThreadFrameGetter) _PyThreadState_GetFrame; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PYSTATE_H */ diff --git a/qrenderdoc/3rdparty/python/include/pystrcmp.h b/qrenderdoc/3rdparty/python/include/pystrcmp.h new file mode 100644 index 000000000..edb12397e --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pystrcmp.h @@ -0,0 +1,23 @@ +#ifndef Py_STRCMP_H +#define Py_STRCMP_H + +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(int) PyOS_mystrnicmp(const char *, const char *, Py_ssize_t); +PyAPI_FUNC(int) PyOS_mystricmp(const char *, const char *); + +#ifdef MS_WINDOWS +#define PyOS_strnicmp strnicmp +#define PyOS_stricmp stricmp +#else +#define PyOS_strnicmp PyOS_mystrnicmp +#define PyOS_stricmp PyOS_mystricmp +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_STRCMP_H */ diff --git a/qrenderdoc/3rdparty/python/include/pystrhex.h b/qrenderdoc/3rdparty/python/include/pystrhex.h new file mode 100644 index 000000000..66a30e223 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pystrhex.h @@ -0,0 +1,19 @@ +#ifndef Py_STRHEX_H +#define Py_STRHEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +/* Returns a str() containing the hex representation of argbuf. */ +PyAPI_FUNC(PyObject*) _Py_strhex(const char* argbuf, const Py_ssize_t arglen); +/* Returns a bytes() containing the ASCII hex representation of argbuf. */ +PyAPI_FUNC(PyObject*) _Py_strhex_bytes(const char* argbuf, const Py_ssize_t arglen); +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_STRHEX_H */ diff --git a/qrenderdoc/3rdparty/python/include/pystrtod.h b/qrenderdoc/3rdparty/python/include/pystrtod.h new file mode 100644 index 000000000..c1e84de6f --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pystrtod.h @@ -0,0 +1,45 @@ +#ifndef Py_STRTOD_H +#define Py_STRTOD_H + +#ifdef __cplusplus +extern "C" { +#endif + + +PyAPI_FUNC(double) PyOS_string_to_double(const char *str, + char **endptr, + PyObject *overflow_exception); + +/* The caller is responsible for calling PyMem_Free to free the buffer + that's is returned. */ +PyAPI_FUNC(char *) PyOS_double_to_string(double val, + char format_code, + int precision, + int flags, + int *type); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _Py_string_to_number_with_underscores( + const char *str, Py_ssize_t len, const char *what, PyObject *obj, void *arg, + PyObject *(*innerfunc)(const char *, Py_ssize_t, void *)); + +PyAPI_FUNC(double) _Py_parse_inf_or_nan(const char *p, char **endptr); +#endif + + +/* PyOS_double_to_string's "flags" parameter can be set to 0 or more of: */ +#define Py_DTSF_SIGN 0x01 /* always add the sign */ +#define Py_DTSF_ADD_DOT_0 0x02 /* if the result is an integer add ".0" */ +#define Py_DTSF_ALT 0x04 /* "alternate" formatting. it's format_code + specific */ + +/* PyOS_double_to_string's "type", if non-NULL, will be set to one of: */ +#define Py_DTST_FINITE 0 +#define Py_DTST_INFINITE 1 +#define Py_DTST_NAN 2 + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_STRTOD_H */ diff --git a/qrenderdoc/3rdparty/python/include/pythonrun.h b/qrenderdoc/3rdparty/python/include/pythonrun.h new file mode 100644 index 000000000..efc613f65 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pythonrun.h @@ -0,0 +1,197 @@ + +/* Interfaces to parse and execute pieces of python code */ + +#ifndef Py_PYTHONRUN_H +#define Py_PYTHONRUN_H +#ifdef __cplusplus +extern "C" { +#endif + +#define PyCF_MASK (CO_FUTURE_DIVISION | CO_FUTURE_ABSOLUTE_IMPORT | \ + CO_FUTURE_WITH_STATEMENT | CO_FUTURE_PRINT_FUNCTION | \ + CO_FUTURE_UNICODE_LITERALS | CO_FUTURE_BARRY_AS_BDFL | \ + CO_FUTURE_GENERATOR_STOP) +#define PyCF_MASK_OBSOLETE (CO_NESTED) +#define PyCF_SOURCE_IS_UTF8 0x0100 +#define PyCF_DONT_IMPLY_DEDENT 0x0200 +#define PyCF_ONLY_AST 0x0400 +#define PyCF_IGNORE_COOKIE 0x0800 + +#ifndef Py_LIMITED_API +typedef struct { + int cf_flags; /* bitmask of CO_xxx flags relevant to future */ +} PyCompilerFlags; +#endif + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *); +PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *); +PyAPI_FUNC(int) PyRun_AnyFileExFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + int closeit, + PyCompilerFlags *flags); +PyAPI_FUNC(int) PyRun_SimpleFileExFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + int closeit, + PyCompilerFlags *flags); +PyAPI_FUNC(int) PyRun_InteractiveOneFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + PyCompilerFlags *flags); +PyAPI_FUNC(int) PyRun_InteractiveOneObject( + FILE *fp, + PyObject *filename, + PyCompilerFlags *flags); +PyAPI_FUNC(int) PyRun_InteractiveLoopFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + PyCompilerFlags *flags); + +PyAPI_FUNC(struct _mod *) PyParser_ASTFromString( + const char *s, + const char *filename, /* decoded from the filesystem encoding */ + int start, + PyCompilerFlags *flags, + PyArena *arena); +PyAPI_FUNC(struct _mod *) PyParser_ASTFromStringObject( + const char *s, + PyObject *filename, + int start, + PyCompilerFlags *flags, + PyArena *arena); +PyAPI_FUNC(struct _mod *) PyParser_ASTFromFile( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + const char* enc, + int start, + const char *ps1, + const char *ps2, + PyCompilerFlags *flags, + int *errcode, + PyArena *arena); +PyAPI_FUNC(struct _mod *) PyParser_ASTFromFileObject( + FILE *fp, + PyObject *filename, + const char* enc, + int start, + const char *ps1, + const char *ps2, + PyCompilerFlags *flags, + int *errcode, + PyArena *arena); +#endif + +#ifndef PyParser_SimpleParseString +#define PyParser_SimpleParseString(S, B) \ + PyParser_SimpleParseStringFlags(S, B, 0) +#define PyParser_SimpleParseFile(FP, S, B) \ + PyParser_SimpleParseFileFlags(FP, S, B, 0) +#endif +PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlags(const char *, int, + int); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlagsFilename(const char *, + const char *, + int, int); +#endif +PyAPI_FUNC(struct _node *) PyParser_SimpleParseFileFlags(FILE *, const char *, + int, int); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyRun_StringFlags(const char *, int, PyObject *, + PyObject *, PyCompilerFlags *); + +PyAPI_FUNC(PyObject *) PyRun_FileExFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + int start, + PyObject *globals, + PyObject *locals, + int closeit, + PyCompilerFlags *flags); +#endif + +#ifdef Py_LIMITED_API +PyAPI_FUNC(PyObject *) Py_CompileString(const char *, const char *, int); +#else +#define Py_CompileString(str, p, s) Py_CompileStringExFlags(str, p, s, NULL, -1) +#define Py_CompileStringFlags(str, p, s, f) Py_CompileStringExFlags(str, p, s, f, -1) +PyAPI_FUNC(PyObject *) Py_CompileStringExFlags( + const char *str, + const char *filename, /* decoded from the filesystem encoding */ + int start, + PyCompilerFlags *flags, + int optimize); +PyAPI_FUNC(PyObject *) Py_CompileStringObject( + const char *str, + PyObject *filename, int start, + PyCompilerFlags *flags, + int optimize); +#endif +PyAPI_FUNC(struct symtable *) Py_SymtableString( + const char *str, + const char *filename, /* decoded from the filesystem encoding */ + int start); +#ifndef Py_LIMITED_API +PyAPI_FUNC(struct symtable *) Py_SymtableStringObject( + const char *str, + PyObject *filename, + int start); +#endif + +PyAPI_FUNC(void) PyErr_Print(void); +PyAPI_FUNC(void) PyErr_PrintEx(int); +PyAPI_FUNC(void) PyErr_Display(PyObject *, PyObject *, PyObject *); + +#ifndef Py_LIMITED_API +/* Use macros for a bunch of old variants */ +#define PyRun_String(str, s, g, l) PyRun_StringFlags(str, s, g, l, NULL) +#define PyRun_AnyFile(fp, name) PyRun_AnyFileExFlags(fp, name, 0, NULL) +#define PyRun_AnyFileEx(fp, name, closeit) \ + PyRun_AnyFileExFlags(fp, name, closeit, NULL) +#define PyRun_AnyFileFlags(fp, name, flags) \ + PyRun_AnyFileExFlags(fp, name, 0, flags) +#define PyRun_SimpleString(s) PyRun_SimpleStringFlags(s, NULL) +#define PyRun_SimpleFile(f, p) PyRun_SimpleFileExFlags(f, p, 0, NULL) +#define PyRun_SimpleFileEx(f, p, c) PyRun_SimpleFileExFlags(f, p, c, NULL) +#define PyRun_InteractiveOne(f, p) PyRun_InteractiveOneFlags(f, p, NULL) +#define PyRun_InteractiveLoop(f, p) PyRun_InteractiveLoopFlags(f, p, NULL) +#define PyRun_File(fp, p, s, g, l) \ + PyRun_FileExFlags(fp, p, s, g, l, 0, NULL) +#define PyRun_FileEx(fp, p, s, g, l, c) \ + PyRun_FileExFlags(fp, p, s, g, l, c, NULL) +#define PyRun_FileFlags(fp, p, s, g, l, flags) \ + PyRun_FileExFlags(fp, p, s, g, l, 0, flags) +#endif + +/* Stuff with no proper home (yet) */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(char *) PyOS_Readline(FILE *, FILE *, const char *); +#endif +PyAPI_DATA(int) (*PyOS_InputHook)(void); +PyAPI_DATA(char) *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, const char *); +#ifndef Py_LIMITED_API +PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState; +#endif + +/* Stack size, in "pointers" (so we get extra safety margins + on 64-bit platforms). On a 32-bit platform, this translates + to an 8k margin. */ +#define PYOS_STACK_MARGIN 2048 + +#if defined(WIN32) && !defined(MS_WIN64) && defined(_MSC_VER) && _MSC_VER >= 1300 +/* Enable stack checking under Microsoft C */ +#define USE_STACKCHECK +#endif + +#ifdef USE_STACKCHECK +/* Check that we aren't overflowing our stack */ +PyAPI_FUNC(int) PyOS_CheckStack(void); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PYTHONRUN_H */ diff --git a/qrenderdoc/3rdparty/python/include/pythread.h b/qrenderdoc/3rdparty/python/include/pythread.h new file mode 100644 index 000000000..88c4873a5 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pythread.h @@ -0,0 +1,90 @@ + +#ifndef Py_PYTHREAD_H +#define Py_PYTHREAD_H + +typedef void *PyThread_type_lock; +typedef void *PyThread_type_sema; + +#ifdef __cplusplus +extern "C" { +#endif + +/* Return status codes for Python lock acquisition. Chosen for maximum + * backwards compatibility, ie failure -> 0, success -> 1. */ +typedef enum PyLockStatus { + PY_LOCK_FAILURE = 0, + PY_LOCK_ACQUIRED = 1, + PY_LOCK_INTR +} PyLockStatus; + +PyAPI_FUNC(void) PyThread_init_thread(void); +PyAPI_FUNC(long) PyThread_start_new_thread(void (*)(void *), void *); +PyAPI_FUNC(void) PyThread_exit_thread(void); +PyAPI_FUNC(long) PyThread_get_thread_ident(void); + +PyAPI_FUNC(PyThread_type_lock) PyThread_allocate_lock(void); +PyAPI_FUNC(void) PyThread_free_lock(PyThread_type_lock); +PyAPI_FUNC(int) PyThread_acquire_lock(PyThread_type_lock, int); +#define WAIT_LOCK 1 +#define NOWAIT_LOCK 0 + +/* PY_TIMEOUT_T is the integral type used to specify timeouts when waiting + on a lock (see PyThread_acquire_lock_timed() below). + PY_TIMEOUT_MAX is the highest usable value (in microseconds) of that + type, and depends on the system threading API. + + NOTE: this isn't the same value as `_thread.TIMEOUT_MAX`. The _thread + module exposes a higher-level API, with timeouts expressed in seconds + and floating-point numbers allowed. +*/ +#define PY_TIMEOUT_T long long +#define PY_TIMEOUT_MAX PY_LLONG_MAX + +/* In the NT API, the timeout is a DWORD and is expressed in milliseconds */ +#if defined (NT_THREADS) +#if 0xFFFFFFFFLL * 1000 < PY_TIMEOUT_MAX +#undef PY_TIMEOUT_MAX +#define PY_TIMEOUT_MAX (0xFFFFFFFFLL * 1000) +#endif +#endif + +/* If microseconds == 0, the call is non-blocking: it returns immediately + even when the lock can't be acquired. + If microseconds > 0, the call waits up to the specified duration. + If microseconds < 0, the call waits until success (or abnormal failure) + + microseconds must be less than PY_TIMEOUT_MAX. Behaviour otherwise is + undefined. + + If intr_flag is true and the acquire is interrupted by a signal, then the + call will return PY_LOCK_INTR. The caller may reattempt to acquire the + lock. +*/ +PyAPI_FUNC(PyLockStatus) PyThread_acquire_lock_timed(PyThread_type_lock, + PY_TIMEOUT_T microseconds, + int intr_flag); + +PyAPI_FUNC(void) PyThread_release_lock(PyThread_type_lock); + +PyAPI_FUNC(size_t) PyThread_get_stacksize(void); +PyAPI_FUNC(int) PyThread_set_stacksize(size_t); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject*) PyThread_GetInfo(void); +#endif + +/* Thread Local Storage (TLS) API */ +PyAPI_FUNC(int) PyThread_create_key(void); +PyAPI_FUNC(void) PyThread_delete_key(int); +PyAPI_FUNC(int) PyThread_set_key_value(int, void *); +PyAPI_FUNC(void *) PyThread_get_key_value(int); +PyAPI_FUNC(void) PyThread_delete_key_value(int key); + +/* Cleanup after a fork */ +PyAPI_FUNC(void) PyThread_ReInitTLS(void); + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_PYTHREAD_H */ diff --git a/qrenderdoc/3rdparty/python/include/pytime.h b/qrenderdoc/3rdparty/python/include/pytime.h new file mode 100644 index 000000000..158c460ae --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/pytime.h @@ -0,0 +1,211 @@ +#ifndef Py_LIMITED_API +#ifndef Py_PYTIME_H +#define Py_PYTIME_H + +#include "pyconfig.h" /* include for defines */ +#include "object.h" + +/************************************************************************** +Symbols and macros to supply platform-independent interfaces to time related +functions and constants +**************************************************************************/ +#ifdef __cplusplus +extern "C" { +#endif + +/* _PyTime_t: Python timestamp with subsecond precision. It can be used to + store a duration, and so indirectly a date (related to another date, like + UNIX epoch). */ +typedef int64_t _PyTime_t; +#define _PyTime_MIN PY_LLONG_MIN +#define _PyTime_MAX PY_LLONG_MAX + +typedef enum { + /* Round towards minus infinity (-inf). + For example, used to read a clock. */ + _PyTime_ROUND_FLOOR=0, + /* Round towards infinity (+inf). + For example, used for timeout to wait "at least" N seconds. */ + _PyTime_ROUND_CEILING=1, + /* Round to nearest with ties going to nearest even integer. + For example, used to round from a Python float. */ + _PyTime_ROUND_HALF_EVEN=2, + /* Round away from zero + For example, used for timeout. _PyTime_ROUND_CEILING rounds + -1e-9 to 0 milliseconds which causes bpo-31786 issue. + _PyTime_ROUND_UP rounds -1e-9 to -1 millisecond which keeps + the timeout sign as expected. select.poll(timeout) must block + for negative values." */ + _PyTime_ROUND_UP=3, + /* _PyTime_ROUND_TIMEOUT (an alias for _PyTime_ROUND_UP) should be + used for timeouts. */ + _PyTime_ROUND_TIMEOUT = _PyTime_ROUND_UP +} _PyTime_round_t; + + +/* Convert a time_t to a PyLong. */ +PyAPI_FUNC(PyObject *) _PyLong_FromTime_t( + time_t sec); + +/* Convert a PyLong to a time_t. */ +PyAPI_FUNC(time_t) _PyLong_AsTime_t( + PyObject *obj); + +/* Convert a number of seconds, int or float, to time_t. */ +PyAPI_FUNC(int) _PyTime_ObjectToTime_t( + PyObject *obj, + time_t *sec, + _PyTime_round_t); + +/* Convert a number of seconds, int or float, to a timeval structure. + usec is in the range [0; 999999] and rounded towards zero. + For example, -1.2 is converted to (-2, 800000). */ +PyAPI_FUNC(int) _PyTime_ObjectToTimeval( + PyObject *obj, + time_t *sec, + long *usec, + _PyTime_round_t); + +/* Convert a number of seconds, int or float, to a timespec structure. + nsec is in the range [0; 999999999] and rounded towards zero. + For example, -1.2 is converted to (-2, 800000000). */ +PyAPI_FUNC(int) _PyTime_ObjectToTimespec( + PyObject *obj, + time_t *sec, + long *nsec, + _PyTime_round_t); + + +/* Create a timestamp from a number of seconds. */ +PyAPI_FUNC(_PyTime_t) _PyTime_FromSeconds(int seconds); + +/* Macro to create a timestamp from a number of seconds, no integer overflow. + Only use the macro for small values, prefer _PyTime_FromSeconds(). */ +#define _PYTIME_FROMSECONDS(seconds) \ + ((_PyTime_t)(seconds) * (1000 * 1000 * 1000)) + +/* Create a timestamp from a number of nanoseconds. */ +PyAPI_FUNC(_PyTime_t) _PyTime_FromNanoseconds(long long ns); + +/* Convert a number of seconds (Python float or int) to a timetamp. + Raise an exception and return -1 on error, return 0 on success. */ +PyAPI_FUNC(int) _PyTime_FromSecondsObject(_PyTime_t *t, + PyObject *obj, + _PyTime_round_t round); + +/* Convert a number of milliseconds (Python float or int, 10^-3) to a timetamp. + Raise an exception and return -1 on error, return 0 on success. */ +PyAPI_FUNC(int) _PyTime_FromMillisecondsObject(_PyTime_t *t, + PyObject *obj, + _PyTime_round_t round); + +/* Convert a timestamp to a number of seconds as a C double. */ +PyAPI_FUNC(double) _PyTime_AsSecondsDouble(_PyTime_t t); + +/* Convert timestamp to a number of milliseconds (10^-3 seconds). */ +PyAPI_FUNC(_PyTime_t) _PyTime_AsMilliseconds(_PyTime_t t, + _PyTime_round_t round); + +/* Convert timestamp to a number of microseconds (10^-6 seconds). */ +PyAPI_FUNC(_PyTime_t) _PyTime_AsMicroseconds(_PyTime_t t, + _PyTime_round_t round); + +/* Convert timestamp to a number of nanoseconds (10^-9 seconds) as a Python int + object. */ +PyAPI_FUNC(PyObject *) _PyTime_AsNanosecondsObject(_PyTime_t t); + +/* Convert a timestamp to a timeval structure (microsecond resolution). + tv_usec is always positive. + Raise an exception and return -1 if the conversion overflowed, + return 0 on success. */ +PyAPI_FUNC(int) _PyTime_AsTimeval(_PyTime_t t, + struct timeval *tv, + _PyTime_round_t round); + +/* Similar to _PyTime_AsTimeval(), but don't raise an exception on error. */ +PyAPI_FUNC(int) _PyTime_AsTimeval_noraise(_PyTime_t t, + struct timeval *tv, + _PyTime_round_t round); + +/* Convert a timestamp to a number of seconds (secs) and microseconds (us). + us is always positive. This function is similar to _PyTime_AsTimeval() + except that secs is always a time_t type, whereas the timeval structure + uses a C long for tv_sec on Windows. + Raise an exception and return -1 if the conversion overflowed, + return 0 on success. */ +PyAPI_FUNC(int) _PyTime_AsTimevalTime_t( + _PyTime_t t, + time_t *secs, + int *us, + _PyTime_round_t round); + +#if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_KQUEUE) +/* Convert a timestamp to a timespec structure (nanosecond resolution). + tv_nsec is always positive. + Raise an exception and return -1 on error, return 0 on success. */ +PyAPI_FUNC(int) _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts); +#endif + +/* Get the current time from the system clock. + + The function cannot fail. _PyTime_Init() ensures that the system clock + works. */ +PyAPI_FUNC(_PyTime_t) _PyTime_GetSystemClock(void); + +/* Get the time of a monotonic clock, i.e. a clock that cannot go backwards. + The clock is not affected by system clock updates. The reference point of + the returned value is undefined, so that only the difference between the + results of consecutive calls is valid. + + The function cannot fail. _PyTime_Init() ensures that a monotonic clock + is available and works. */ +PyAPI_FUNC(_PyTime_t) _PyTime_GetMonotonicClock(void); + + +/* Structure used by time.get_clock_info() */ +typedef struct { + const char *implementation; + int monotonic; + int adjustable; + double resolution; +} _Py_clock_info_t; + +/* Get the current time from the system clock. + * Fill clock information if info is not NULL. + * Raise an exception and return -1 on error, return 0 on success. + */ +PyAPI_FUNC(int) _PyTime_GetSystemClockWithInfo( + _PyTime_t *t, + _Py_clock_info_t *info); + +/* Get the time of a monotonic clock, i.e. a clock that cannot go backwards. + The clock is not affected by system clock updates. The reference point of + the returned value is undefined, so that only the difference between the + results of consecutive calls is valid. + + Fill info (if set) with information of the function used to get the time. + + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) _PyTime_GetMonotonicClockWithInfo( + _PyTime_t *t, + _Py_clock_info_t *info); + + +/* Initialize time. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) _PyTime_Init(void); + +/* Converts a timestamp to the Gregorian time, using the local time zone. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) _PyTime_localtime(time_t t, struct tm *tm); + +/* Converts a timestamp to the Gregorian time, assuming UTC. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) _PyTime_gmtime(time_t t, struct tm *tm); + +#ifdef __cplusplus +} +#endif + +#endif /* Py_PYTIME_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/rangeobject.h b/qrenderdoc/3rdparty/python/include/rangeobject.h new file mode 100644 index 000000000..7e4dc2889 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/rangeobject.h @@ -0,0 +1,27 @@ + +/* Range object interface */ + +#ifndef Py_RANGEOBJECT_H +#define Py_RANGEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* +A range object represents an integer range. This is an immutable object; +a range cannot change its value after creation. + +Range objects behave like the corresponding tuple objects except that +they are represented by a start, stop, and step datamembers. +*/ + +PyAPI_DATA(PyTypeObject) PyRange_Type; +PyAPI_DATA(PyTypeObject) PyRangeIter_Type; +PyAPI_DATA(PyTypeObject) PyLongRangeIter_Type; + +#define PyRange_Check(op) (Py_TYPE(op) == &PyRange_Type) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_RANGEOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/setobject.h b/qrenderdoc/3rdparty/python/include/setobject.h new file mode 100644 index 000000000..87ec1c8af --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/setobject.h @@ -0,0 +1,108 @@ +/* Set object interface */ + +#ifndef Py_SETOBJECT_H +#define Py_SETOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API + +/* There are three kinds of entries in the table: + +1. Unused: key == NULL and hash == 0 +2. Dummy: key == dummy and hash == -1 +3. Active: key != NULL and key != dummy and hash != -1 + +The hash field of Unused slots is always zero. + +The hash field of Dummy slots are set to -1 +meaning that dummy entries can be detected by +either entry->key==dummy or by entry->hash==-1. +*/ + +#define PySet_MINSIZE 8 + +typedef struct { + PyObject *key; + Py_hash_t hash; /* Cached hash code of the key */ +} setentry; + +/* The SetObject data structure is shared by set and frozenset objects. + +Invariant for sets: + - hash is -1 + +Invariants for frozensets: + - data is immutable. + - hash is the hash of the frozenset or -1 if not computed yet. + +*/ + +typedef struct { + PyObject_HEAD + + Py_ssize_t fill; /* Number active and dummy entries*/ + Py_ssize_t used; /* Number active entries */ + + /* The table contains mask + 1 slots, and that's a power of 2. + * We store the mask instead of the size because the mask is more + * frequently needed. + */ + Py_ssize_t mask; + + /* The table points to a fixed-size smalltable for small tables + * or to additional malloc'ed memory for bigger tables. + * The table pointer is never NULL which saves us from repeated + * runtime null-tests. + */ + setentry *table; + Py_hash_t hash; /* Only used by frozenset objects */ + Py_ssize_t finger; /* Search finger for pop() */ + + setentry smalltable[PySet_MINSIZE]; + PyObject *weakreflist; /* List of weak references */ +} PySetObject; + +#define PySet_GET_SIZE(so) (((PySetObject *)(so))->used) + +PyAPI_DATA(PyObject *) _PySet_Dummy; + +PyAPI_FUNC(int) _PySet_NextEntry(PyObject *set, Py_ssize_t *pos, PyObject **key, Py_hash_t *hash); +PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable); +PyAPI_FUNC(int) PySet_ClearFreeList(void); + +#endif /* Section excluded by Py_LIMITED_API */ + +PyAPI_DATA(PyTypeObject) PySet_Type; +PyAPI_DATA(PyTypeObject) PyFrozenSet_Type; +PyAPI_DATA(PyTypeObject) PySetIter_Type; + +PyAPI_FUNC(PyObject *) PySet_New(PyObject *); +PyAPI_FUNC(PyObject *) PyFrozenSet_New(PyObject *); + +PyAPI_FUNC(int) PySet_Add(PyObject *set, PyObject *key); +PyAPI_FUNC(int) PySet_Clear(PyObject *set); +PyAPI_FUNC(int) PySet_Contains(PyObject *anyset, PyObject *key); +PyAPI_FUNC(int) PySet_Discard(PyObject *set, PyObject *key); +PyAPI_FUNC(PyObject *) PySet_Pop(PyObject *set); +PyAPI_FUNC(Py_ssize_t) PySet_Size(PyObject *anyset); + +#define PyFrozenSet_CheckExact(ob) (Py_TYPE(ob) == &PyFrozenSet_Type) +#define PyAnySet_CheckExact(ob) \ + (Py_TYPE(ob) == &PySet_Type || Py_TYPE(ob) == &PyFrozenSet_Type) +#define PyAnySet_Check(ob) \ + (Py_TYPE(ob) == &PySet_Type || Py_TYPE(ob) == &PyFrozenSet_Type || \ + PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \ + PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type)) +#define PySet_Check(ob) \ + (Py_TYPE(ob) == &PySet_Type || \ + PyType_IsSubtype(Py_TYPE(ob), &PySet_Type)) +#define PyFrozenSet_Check(ob) \ + (Py_TYPE(ob) == &PyFrozenSet_Type || \ + PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type)) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_SETOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/sliceobject.h b/qrenderdoc/3rdparty/python/include/sliceobject.h new file mode 100644 index 000000000..579ac073d --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/sliceobject.h @@ -0,0 +1,65 @@ +#ifndef Py_SLICEOBJECT_H +#define Py_SLICEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* The unique ellipsis object "..." */ + +PyAPI_DATA(PyObject) _Py_EllipsisObject; /* Don't use this directly */ + +#define Py_Ellipsis (&_Py_EllipsisObject) + +/* Slice object interface */ + +/* + +A slice object containing start, stop, and step data members (the +names are from range). After much talk with Guido, it was decided to +let these be any arbitrary python type. Py_None stands for omitted values. +*/ +#ifndef Py_LIMITED_API +typedef struct { + PyObject_HEAD + PyObject *start, *stop, *step; /* not NULL */ +} PySliceObject; +#endif + +PyAPI_DATA(PyTypeObject) PySlice_Type; +PyAPI_DATA(PyTypeObject) PyEllipsis_Type; + +#define PySlice_Check(op) (Py_TYPE(op) == &PySlice_Type) + +PyAPI_FUNC(PyObject *) PySlice_New(PyObject* start, PyObject* stop, + PyObject* step); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PySlice_FromIndices(Py_ssize_t start, Py_ssize_t stop); +PyAPI_FUNC(int) _PySlice_GetLongIndices(PySliceObject *self, PyObject *length, + PyObject **start_ptr, PyObject **stop_ptr, + PyObject **step_ptr); +#endif +PyAPI_FUNC(int) PySlice_GetIndices(PyObject *r, Py_ssize_t length, + Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step); +PyAPI_FUNC(int) PySlice_GetIndicesEx(PyObject *r, Py_ssize_t length, + Py_ssize_t *start, Py_ssize_t *stop, + Py_ssize_t *step, Py_ssize_t *slicelength); + +#if !defined(Py_LIMITED_API) || (Py_LIMITED_API+0 >= 0x03050400 && Py_LIMITED_API+0 < 0x03060000) || Py_LIMITED_API+0 >= 0x03060100 +#ifdef Py_LIMITED_API +#define PySlice_GetIndicesEx(slice, length, start, stop, step, slicelen) ( \ + PySlice_Unpack((slice), (start), (stop), (step)) < 0 ? \ + ((*(slicelen) = 0), -1) : \ + ((*(slicelen) = PySlice_AdjustIndices((length), (start), (stop), *(step))), \ + 0)) +#endif +PyAPI_FUNC(int) PySlice_Unpack(PyObject *slice, + Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step); +PyAPI_FUNC(Py_ssize_t) PySlice_AdjustIndices(Py_ssize_t length, + Py_ssize_t *start, Py_ssize_t *stop, + Py_ssize_t step); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_SLICEOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/structmember.h b/qrenderdoc/3rdparty/python/include/structmember.h new file mode 100644 index 000000000..5da8a4668 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/structmember.h @@ -0,0 +1,74 @@ +#ifndef Py_STRUCTMEMBER_H +#define Py_STRUCTMEMBER_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Interface to map C struct members to Python object attributes */ + +#include /* For offsetof */ + +/* An array of PyMemberDef structures defines the name, type and offset + of selected members of a C structure. These can be read by + PyMember_GetOne() and set by PyMember_SetOne() (except if their READONLY + flag is set). The array must be terminated with an entry whose name + pointer is NULL. */ + +typedef struct PyMemberDef { + char *name; + int type; + Py_ssize_t offset; + int flags; + char *doc; +} PyMemberDef; + +/* Types */ +#define T_SHORT 0 +#define T_INT 1 +#define T_LONG 2 +#define T_FLOAT 3 +#define T_DOUBLE 4 +#define T_STRING 5 +#define T_OBJECT 6 +/* XXX the ordering here is weird for binary compatibility */ +#define T_CHAR 7 /* 1-character string */ +#define T_BYTE 8 /* 8-bit signed int */ +/* unsigned variants: */ +#define T_UBYTE 9 +#define T_USHORT 10 +#define T_UINT 11 +#define T_ULONG 12 + +/* Added by Jack: strings contained in the structure */ +#define T_STRING_INPLACE 13 + +/* Added by Lillo: bools contained in the structure (assumed char) */ +#define T_BOOL 14 + +#define T_OBJECT_EX 16 /* Like T_OBJECT, but raises AttributeError + when the value is NULL, instead of + converting to None. */ +#define T_LONGLONG 17 +#define T_ULONGLONG 18 + +#define T_PYSSIZET 19 /* Py_ssize_t */ +#define T_NONE 20 /* Value is always None */ + + +/* Flags */ +#define READONLY 1 +#define READ_RESTRICTED 2 +#define PY_WRITE_RESTRICTED 4 +#define RESTRICTED (READ_RESTRICTED | PY_WRITE_RESTRICTED) + + +/* Current API, use this */ +PyAPI_FUNC(PyObject *) PyMember_GetOne(const char *, struct PyMemberDef *); +PyAPI_FUNC(int) PyMember_SetOne(char *, struct PyMemberDef *, PyObject *); + + +#ifdef __cplusplus +} +#endif +#endif /* !Py_STRUCTMEMBER_H */ diff --git a/qrenderdoc/3rdparty/python/include/structseq.h b/qrenderdoc/3rdparty/python/include/structseq.h new file mode 100644 index 000000000..af227164c --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/structseq.h @@ -0,0 +1,49 @@ + +/* Named tuple object interface */ + +#ifndef Py_STRUCTSEQ_H +#define Py_STRUCTSEQ_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct PyStructSequence_Field { + char *name; + char *doc; +} PyStructSequence_Field; + +typedef struct PyStructSequence_Desc { + char *name; + char *doc; + struct PyStructSequence_Field *fields; + int n_in_sequence; +} PyStructSequence_Desc; + +extern char* PyStructSequence_UnnamedField; + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) PyStructSequence_InitType(PyTypeObject *type, + PyStructSequence_Desc *desc); +PyAPI_FUNC(int) PyStructSequence_InitType2(PyTypeObject *type, + PyStructSequence_Desc *desc); +#endif +PyAPI_FUNC(PyTypeObject*) PyStructSequence_NewType(PyStructSequence_Desc *desc); + +PyAPI_FUNC(PyObject *) PyStructSequence_New(PyTypeObject* type); + +#ifndef Py_LIMITED_API +typedef PyTupleObject PyStructSequence; + +/* Macro, *only* to be used to fill in brand new objects */ +#define PyStructSequence_SET_ITEM(op, i, v) PyTuple_SET_ITEM(op, i, v) + +#define PyStructSequence_GET_ITEM(op, i) PyTuple_GET_ITEM(op, i) +#endif + +PyAPI_FUNC(void) PyStructSequence_SetItem(PyObject*, Py_ssize_t, PyObject*); +PyAPI_FUNC(PyObject*) PyStructSequence_GetItem(PyObject*, Py_ssize_t); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_STRUCTSEQ_H */ diff --git a/qrenderdoc/3rdparty/python/include/symtable.h b/qrenderdoc/3rdparty/python/include/symtable.h new file mode 100644 index 000000000..86ae3c28e --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/symtable.h @@ -0,0 +1,119 @@ +#ifndef Py_LIMITED_API +#ifndef Py_SYMTABLE_H +#define Py_SYMTABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* XXX(ncoghlan): This is a weird mix of public names and interpreter internal + * names. + */ + +typedef enum _block_type { FunctionBlock, ClassBlock, ModuleBlock } + _Py_block_ty; + +struct _symtable_entry; + +struct symtable { + PyObject *st_filename; /* name of file being compiled, + decoded from the filesystem encoding */ + struct _symtable_entry *st_cur; /* current symbol table entry */ + struct _symtable_entry *st_top; /* symbol table entry for module */ + PyObject *st_blocks; /* dict: map AST node addresses + * to symbol table entries */ + PyObject *st_stack; /* list: stack of namespace info */ + PyObject *st_global; /* borrowed ref to st_top->ste_symbols */ + int st_nblocks; /* number of blocks used. kept for + consistency with the corresponding + compiler structure */ + PyObject *st_private; /* name of current class or NULL */ + PyFutureFeatures *st_future; /* module's future features that affect + the symbol table */ + int recursion_depth; /* current recursion depth */ + int recursion_limit; /* recursion limit */ +}; + +typedef struct _symtable_entry { + PyObject_HEAD + PyObject *ste_id; /* int: key in ste_table->st_blocks */ + PyObject *ste_symbols; /* dict: variable names to flags */ + PyObject *ste_name; /* string: name of current block */ + PyObject *ste_varnames; /* list of function parameters */ + PyObject *ste_children; /* list of child blocks */ + PyObject *ste_directives;/* locations of global and nonlocal statements */ + _Py_block_ty ste_type; /* module, class, or function */ + int ste_nested; /* true if block is nested */ + unsigned ste_free : 1; /* true if block has free variables */ + unsigned ste_child_free : 1; /* true if a child block has free vars, + including free refs to globals */ + unsigned ste_generator : 1; /* true if namespace is a generator */ + unsigned ste_coroutine : 1; /* true if namespace is a coroutine */ + unsigned ste_varargs : 1; /* true if block has varargs */ + unsigned ste_varkeywords : 1; /* true if block has varkeywords */ + unsigned ste_returns_value : 1; /* true if namespace uses return with + an argument */ + unsigned ste_needs_class_closure : 1; /* for class scopes, true if a + closure over __class__ + should be created */ + int ste_lineno; /* first line of block */ + int ste_col_offset; /* offset of first line of block */ + int ste_opt_lineno; /* lineno of last exec or import * */ + int ste_opt_col_offset; /* offset of last exec or import * */ + int ste_tmpname; /* counter for listcomp temp vars */ + struct symtable *ste_table; +} PySTEntryObject; + +PyAPI_DATA(PyTypeObject) PySTEntry_Type; + +#define PySTEntry_Check(op) (Py_TYPE(op) == &PySTEntry_Type) + +PyAPI_FUNC(int) PyST_GetScope(PySTEntryObject *, PyObject *); + +PyAPI_FUNC(struct symtable *) PySymtable_Build( + mod_ty mod, + const char *filename, /* decoded from the filesystem encoding */ + PyFutureFeatures *future); +PyAPI_FUNC(struct symtable *) PySymtable_BuildObject( + mod_ty mod, + PyObject *filename, + PyFutureFeatures *future); +PyAPI_FUNC(PySTEntryObject *) PySymtable_Lookup(struct symtable *, void *); + +PyAPI_FUNC(void) PySymtable_Free(struct symtable *); + +/* Flags for def-use information */ + +#define DEF_GLOBAL 1 /* global stmt */ +#define DEF_LOCAL 2 /* assignment in code block */ +#define DEF_PARAM 2<<1 /* formal parameter */ +#define DEF_NONLOCAL 2<<2 /* nonlocal stmt */ +#define USE 2<<3 /* name is used */ +#define DEF_FREE 2<<4 /* name used but not defined in nested block */ +#define DEF_FREE_CLASS 2<<5 /* free variable from class's method */ +#define DEF_IMPORT 2<<6 /* assignment occurred via import */ +#define DEF_ANNOT 2<<7 /* this name is annotated */ + +#define DEF_BOUND (DEF_LOCAL | DEF_PARAM | DEF_IMPORT) + +/* GLOBAL_EXPLICIT and GLOBAL_IMPLICIT are used internally by the symbol + table. GLOBAL is returned from PyST_GetScope() for either of them. + It is stored in ste_symbols at bits 12-15. +*/ +#define SCOPE_OFFSET 11 +#define SCOPE_MASK (DEF_GLOBAL | DEF_LOCAL | DEF_PARAM | DEF_NONLOCAL) + +#define LOCAL 1 +#define GLOBAL_EXPLICIT 2 +#define GLOBAL_IMPLICIT 3 +#define FREE 4 +#define CELL 5 + +#define GENERATOR 1 +#define GENERATOR_EXPRESSION 2 + +#ifdef __cplusplus +} +#endif +#endif /* !Py_SYMTABLE_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/sysmodule.h b/qrenderdoc/3rdparty/python/include/sysmodule.h new file mode 100644 index 000000000..c5547ff67 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/sysmodule.h @@ -0,0 +1,43 @@ + +/* System module interface */ + +#ifndef Py_SYSMODULE_H +#define Py_SYSMODULE_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(PyObject *) PySys_GetObject(const char *); +PyAPI_FUNC(int) PySys_SetObject(const char *, PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PySys_GetObjectId(_Py_Identifier *key); +PyAPI_FUNC(int) _PySys_SetObjectId(_Py_Identifier *key, PyObject *); +#endif + +PyAPI_FUNC(void) PySys_SetArgv(int, wchar_t **); +PyAPI_FUNC(void) PySys_SetArgvEx(int, wchar_t **, int); +PyAPI_FUNC(void) PySys_SetPath(const wchar_t *); + +PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...) + Py_GCC_ATTRIBUTE((format(printf, 1, 2))); +PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...) + Py_GCC_ATTRIBUTE((format(printf, 1, 2))); +PyAPI_FUNC(void) PySys_FormatStdout(const char *format, ...); +PyAPI_FUNC(void) PySys_FormatStderr(const char *format, ...); + +PyAPI_FUNC(void) PySys_ResetWarnOptions(void); +PyAPI_FUNC(void) PySys_AddWarnOption(const wchar_t *); +PyAPI_FUNC(void) PySys_AddWarnOptionUnicode(PyObject *); +PyAPI_FUNC(int) PySys_HasWarnOptions(void); + +PyAPI_FUNC(void) PySys_AddXOption(const wchar_t *); +PyAPI_FUNC(PyObject *) PySys_GetXOptions(void); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(size_t) _PySys_GetSizeOf(PyObject *); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_SYSMODULE_H */ diff --git a/qrenderdoc/3rdparty/python/include/token.h b/qrenderdoc/3rdparty/python/include/token.h new file mode 100644 index 000000000..595afa015 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/token.h @@ -0,0 +1,90 @@ + +/* Token types */ +#ifndef Py_LIMITED_API +#ifndef Py_TOKEN_H +#define Py_TOKEN_H +#ifdef __cplusplus +extern "C" { +#endif + +#undef TILDE /* Prevent clash of our definition with system macro. Ex AIX, ioctl.h */ + +#define ENDMARKER 0 +#define NAME 1 +#define NUMBER 2 +#define STRING 3 +#define NEWLINE 4 +#define INDENT 5 +#define DEDENT 6 +#define LPAR 7 +#define RPAR 8 +#define LSQB 9 +#define RSQB 10 +#define COLON 11 +#define COMMA 12 +#define SEMI 13 +#define PLUS 14 +#define MINUS 15 +#define STAR 16 +#define SLASH 17 +#define VBAR 18 +#define AMPER 19 +#define LESS 20 +#define GREATER 21 +#define EQUAL 22 +#define DOT 23 +#define PERCENT 24 +#define LBRACE 25 +#define RBRACE 26 +#define EQEQUAL 27 +#define NOTEQUAL 28 +#define LESSEQUAL 29 +#define GREATEREQUAL 30 +#define TILDE 31 +#define CIRCUMFLEX 32 +#define LEFTSHIFT 33 +#define RIGHTSHIFT 34 +#define DOUBLESTAR 35 +#define PLUSEQUAL 36 +#define MINEQUAL 37 +#define STAREQUAL 38 +#define SLASHEQUAL 39 +#define PERCENTEQUAL 40 +#define AMPEREQUAL 41 +#define VBAREQUAL 42 +#define CIRCUMFLEXEQUAL 43 +#define LEFTSHIFTEQUAL 44 +#define RIGHTSHIFTEQUAL 45 +#define DOUBLESTAREQUAL 46 +#define DOUBLESLASH 47 +#define DOUBLESLASHEQUAL 48 +#define AT 49 +#define ATEQUAL 50 +#define RARROW 51 +#define ELLIPSIS 52 +/* Don't forget to update the table _PyParser_TokenNames in tokenizer.c! */ +#define OP 53 +#define AWAIT 54 +#define ASYNC 55 +#define ERRORTOKEN 56 +#define N_TOKENS 57 + +/* Special definitions for cooperation with parser */ + +#define NT_OFFSET 256 + +#define ISTERMINAL(x) ((x) < NT_OFFSET) +#define ISNONTERMINAL(x) ((x) >= NT_OFFSET) +#define ISEOF(x) ((x) == ENDMARKER) + + +PyAPI_DATA(const char *) _PyParser_TokenNames[]; /* Token names */ +PyAPI_FUNC(int) PyToken_OneChar(int); +PyAPI_FUNC(int) PyToken_TwoChars(int, int); +PyAPI_FUNC(int) PyToken_ThreeChars(int, int, int); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_TOKEN_H */ +#endif /* Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/traceback.h b/qrenderdoc/3rdparty/python/include/traceback.h new file mode 100644 index 000000000..b5874100f --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/traceback.h @@ -0,0 +1,119 @@ + +#ifndef Py_TRACEBACK_H +#define Py_TRACEBACK_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "pystate.h" + +struct _frame; + +/* Traceback interface */ +#ifndef Py_LIMITED_API +typedef struct _traceback { + PyObject_HEAD + struct _traceback *tb_next; + struct _frame *tb_frame; + int tb_lasti; + int tb_lineno; +} PyTracebackObject; +#endif + +PyAPI_FUNC(int) PyTraceBack_Here(struct _frame *); +PyAPI_FUNC(int) PyTraceBack_Print(PyObject *, PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _Py_DisplaySourceLine(PyObject *, PyObject *, int, int); +PyAPI_FUNC(void) _PyTraceback_Add(const char *, const char *, int); +#endif + +/* Reveal traceback type so we can typecheck traceback objects */ +PyAPI_DATA(PyTypeObject) PyTraceBack_Type; +#define PyTraceBack_Check(v) (Py_TYPE(v) == &PyTraceBack_Type) + +#ifndef Py_LIMITED_API +/* Write the Python traceback into the file 'fd'. For example: + + Traceback (most recent call first): + File "xxx", line xxx in + File "xxx", line xxx in + ... + File "xxx", line xxx in + + This function is written for debug purpose only, to dump the traceback in + the worst case: after a segmentation fault, at fatal error, etc. That's why, + it is very limited. Strings are truncated to 100 characters and encoded to + ASCII with backslashreplace. It doesn't write the source code, only the + function name, filename and line number of each frame. Write only the first + 100 frames: if the traceback is truncated, write the line " ...". + + This function is signal safe. */ + +PyAPI_FUNC(void) _Py_DumpTraceback( + int fd, + PyThreadState *tstate); + +/* Write the traceback of all threads into the file 'fd'. current_thread can be + NULL. + + Return NULL on success, or an error message on error. + + This function is written for debug purpose only. It calls + _Py_DumpTraceback() for each thread, and so has the same limitations. It + only write the traceback of the first 100 threads: write "..." if there are + more threads. + + If current_tstate is NULL, the function tries to get the Python thread state + of the current thread. It is not an error if the function is unable to get + the current Python thread state. + + If interp is NULL, the function tries to get the interpreter state from + the current Python thread state, or from + _PyGILState_GetInterpreterStateUnsafe() in last resort. + + It is better to pass NULL to interp and current_tstate, the function tries + different options to retrieve these informations. + + This function is signal safe. */ + +PyAPI_FUNC(const char*) _Py_DumpTracebackThreads( + int fd, + PyInterpreterState *interp, + PyThreadState *current_tstate); +#endif /* !Py_LIMITED_API */ + +#ifndef Py_LIMITED_API + +/* Write a Unicode object into the file descriptor fd. Encode the string to + ASCII using the backslashreplace error handler. + + Do nothing if text is not a Unicode object. The function accepts Unicode + string which is not ready (PyUnicode_WCHAR_KIND). + + This function is signal safe. */ +PyAPI_FUNC(void) _Py_DumpASCII(int fd, PyObject *text); + +/* Format an integer as decimal into the file descriptor fd. + + This function is signal safe. */ +PyAPI_FUNC(void) _Py_DumpDecimal( + int fd, + unsigned long value); + +/* Format an integer as hexadecimal into the file descriptor fd with at least + width digits. + + The maximum width is sizeof(unsigned long)*2 digits. + + This function is signal safe. */ +PyAPI_FUNC(void) _Py_DumpHexadecimal( + int fd, + unsigned long value, + Py_ssize_t width); + +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_TRACEBACK_H */ diff --git a/qrenderdoc/3rdparty/python/include/tupleobject.h b/qrenderdoc/3rdparty/python/include/tupleobject.h new file mode 100644 index 000000000..c273ce7dc --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/tupleobject.h @@ -0,0 +1,73 @@ + +/* Tuple object interface */ + +#ifndef Py_TUPLEOBJECT_H +#define Py_TUPLEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* +Another generally useful object type is a tuple of object pointers. +For Python, this is an immutable type. C code can change the tuple items +(but not their number), and even use tuples are general-purpose arrays of +object references, but in general only brand new tuples should be mutated, +not ones that might already have been exposed to Python code. + +*** WARNING *** PyTuple_SetItem does not increment the new item's reference +count, but does decrement the reference count of the item it replaces, +if not nil. It does *decrement* the reference count if it is *not* +inserted in the tuple. Similarly, PyTuple_GetItem does not increment the +returned item's reference count. +*/ + +#ifndef Py_LIMITED_API +typedef struct { + PyObject_VAR_HEAD + PyObject *ob_item[1]; + + /* ob_item contains space for 'ob_size' elements. + * Items must normally not be NULL, except during construction when + * the tuple is not yet visible outside the function that builds it. + */ +} PyTupleObject; +#endif + +PyAPI_DATA(PyTypeObject) PyTuple_Type; +PyAPI_DATA(PyTypeObject) PyTupleIter_Type; + +#define PyTuple_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS) +#define PyTuple_CheckExact(op) (Py_TYPE(op) == &PyTuple_Type) + +PyAPI_FUNC(PyObject *) PyTuple_New(Py_ssize_t size); +PyAPI_FUNC(Py_ssize_t) PyTuple_Size(PyObject *); +PyAPI_FUNC(PyObject *) PyTuple_GetItem(PyObject *, Py_ssize_t); +PyAPI_FUNC(int) PyTuple_SetItem(PyObject *, Py_ssize_t, PyObject *); +PyAPI_FUNC(PyObject *) PyTuple_GetSlice(PyObject *, Py_ssize_t, Py_ssize_t); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyTuple_Resize(PyObject **, Py_ssize_t); +#endif +PyAPI_FUNC(PyObject *) PyTuple_Pack(Py_ssize_t, ...); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyTuple_MaybeUntrack(PyObject *); +#endif + +/* Macro, trading safety for speed */ +#ifndef Py_LIMITED_API +#define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i]) +#define PyTuple_GET_SIZE(op) Py_SIZE(op) + +/* Macro, *only* to be used to fill in brand new tuples */ +#define PyTuple_SET_ITEM(op, i, v) (((PyTupleObject *)(op))->ob_item[i] = v) +#endif + +PyAPI_FUNC(int) PyTuple_ClearFreeList(void); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyTuple_DebugMallocStats(FILE *out); +#endif /* Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_TUPLEOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/typeslots.h b/qrenderdoc/3rdparty/python/include/typeslots.h new file mode 100644 index 000000000..0ce6a377d --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/typeslots.h @@ -0,0 +1,85 @@ +/* Do not renumber the file; these numbers are part of the stable ABI. */ +/* Disabled, see #10181 */ +#undef Py_bf_getbuffer +#undef Py_bf_releasebuffer +#define Py_mp_ass_subscript 3 +#define Py_mp_length 4 +#define Py_mp_subscript 5 +#define Py_nb_absolute 6 +#define Py_nb_add 7 +#define Py_nb_and 8 +#define Py_nb_bool 9 +#define Py_nb_divmod 10 +#define Py_nb_float 11 +#define Py_nb_floor_divide 12 +#define Py_nb_index 13 +#define Py_nb_inplace_add 14 +#define Py_nb_inplace_and 15 +#define Py_nb_inplace_floor_divide 16 +#define Py_nb_inplace_lshift 17 +#define Py_nb_inplace_multiply 18 +#define Py_nb_inplace_or 19 +#define Py_nb_inplace_power 20 +#define Py_nb_inplace_remainder 21 +#define Py_nb_inplace_rshift 22 +#define Py_nb_inplace_subtract 23 +#define Py_nb_inplace_true_divide 24 +#define Py_nb_inplace_xor 25 +#define Py_nb_int 26 +#define Py_nb_invert 27 +#define Py_nb_lshift 28 +#define Py_nb_multiply 29 +#define Py_nb_negative 30 +#define Py_nb_or 31 +#define Py_nb_positive 32 +#define Py_nb_power 33 +#define Py_nb_remainder 34 +#define Py_nb_rshift 35 +#define Py_nb_subtract 36 +#define Py_nb_true_divide 37 +#define Py_nb_xor 38 +#define Py_sq_ass_item 39 +#define Py_sq_concat 40 +#define Py_sq_contains 41 +#define Py_sq_inplace_concat 42 +#define Py_sq_inplace_repeat 43 +#define Py_sq_item 44 +#define Py_sq_length 45 +#define Py_sq_repeat 46 +#define Py_tp_alloc 47 +#define Py_tp_base 48 +#define Py_tp_bases 49 +#define Py_tp_call 50 +#define Py_tp_clear 51 +#define Py_tp_dealloc 52 +#define Py_tp_del 53 +#define Py_tp_descr_get 54 +#define Py_tp_descr_set 55 +#define Py_tp_doc 56 +#define Py_tp_getattr 57 +#define Py_tp_getattro 58 +#define Py_tp_hash 59 +#define Py_tp_init 60 +#define Py_tp_is_gc 61 +#define Py_tp_iter 62 +#define Py_tp_iternext 63 +#define Py_tp_methods 64 +#define Py_tp_new 65 +#define Py_tp_repr 66 +#define Py_tp_richcompare 67 +#define Py_tp_setattr 68 +#define Py_tp_setattro 69 +#define Py_tp_str 70 +#define Py_tp_traverse 71 +#define Py_tp_members 72 +#define Py_tp_getset 73 +#define Py_tp_free 74 +#define Py_nb_matrix_multiply 75 +#define Py_nb_inplace_matrix_multiply 76 +#define Py_am_await 77 +#define Py_am_aiter 78 +#define Py_am_anext 79 +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* New in 3.5 */ +#define Py_tp_finalize 80 +#endif diff --git a/qrenderdoc/3rdparty/python/include/ucnhash.h b/qrenderdoc/3rdparty/python/include/ucnhash.h new file mode 100644 index 000000000..45362e997 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/ucnhash.h @@ -0,0 +1,36 @@ +/* Unicode name database interface */ +#ifndef Py_LIMITED_API +#ifndef Py_UCNHASH_H +#define Py_UCNHASH_H +#ifdef __cplusplus +extern "C" { +#endif + +/* revised ucnhash CAPI interface (exported through a "wrapper") */ + +#define PyUnicodeData_CAPSULE_NAME "unicodedata.ucnhash_CAPI" + +typedef struct { + + /* Size of this struct */ + int size; + + /* Get name for a given character code. Returns non-zero if + success, zero if not. Does not set Python exceptions. + If self is NULL, data come from the default version of the database. + If it is not NULL, it should be a unicodedata.ucd_X_Y_Z object */ + int (*getname)(PyObject *self, Py_UCS4 code, char* buffer, int buflen, + int with_alias_and_seq); + + /* Get character code for a given name. Same error handling + as for getname. */ + int (*getcode)(PyObject *self, const char* name, int namelen, Py_UCS4* code, + int with_named_seq); + +} _PyUnicode_Name_CAPI; + +#ifdef __cplusplus +} +#endif +#endif /* !Py_UCNHASH_H */ +#endif /* !Py_LIMITED_API */ diff --git a/qrenderdoc/3rdparty/python/include/unicodeobject.h b/qrenderdoc/3rdparty/python/include/unicodeobject.h new file mode 100644 index 000000000..f49887387 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/unicodeobject.h @@ -0,0 +1,2342 @@ +#ifndef Py_UNICODEOBJECT_H +#define Py_UNICODEOBJECT_H + +#include + +/* + +Unicode implementation based on original code by Fredrik Lundh, +modified by Marc-Andre Lemburg (mal@lemburg.com) according to the +Unicode Integration Proposal. (See +http://www.egenix.com/files/python/unicode-proposal.txt). + +Copyright (c) Corporation for National Research Initiatives. + + + Original header: + -------------------------------------------------------------------- + + * Yet another Unicode string type for Python. This type supports the + * 16-bit Basic Multilingual Plane (BMP) only. + * + * Written by Fredrik Lundh, January 1999. + * + * Copyright (c) 1999 by Secret Labs AB. + * Copyright (c) 1999 by Fredrik Lundh. + * + * fredrik@pythonware.com + * http://www.pythonware.com + * + * -------------------------------------------------------------------- + * This Unicode String Type is + * + * Copyright (c) 1999 by Secret Labs AB + * Copyright (c) 1999 by Fredrik Lundh + * + * By obtaining, using, and/or copying this software and/or its + * associated documentation, you agree that you have read, understood, + * and will comply with the following terms and conditions: + * + * Permission to use, copy, modify, and distribute this software and its + * associated documentation for any purpose and without fee is hereby + * granted, provided that the above copyright notice appears in all + * copies, and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of Secret Labs + * AB or the author not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. + * + * SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * -------------------------------------------------------------------- */ + +#include + +/* === Internal API ======================================================= */ + +/* --- Internal Unicode Format -------------------------------------------- */ + +/* Python 3.x requires unicode */ +#define Py_USING_UNICODE + +#ifndef SIZEOF_WCHAR_T +#error Must define SIZEOF_WCHAR_T +#endif + +#define Py_UNICODE_SIZE SIZEOF_WCHAR_T + +/* If wchar_t can be used for UCS-4 storage, set Py_UNICODE_WIDE. + Otherwise, Unicode strings are stored as UCS-2 (with limited support + for UTF-16) */ + +#if Py_UNICODE_SIZE >= 4 +#define Py_UNICODE_WIDE +#endif + +/* Set these flags if the platform has "wchar.h" and the + wchar_t type is a 16-bit unsigned type */ +/* #define HAVE_WCHAR_H */ +/* #define HAVE_USABLE_WCHAR_T */ + +/* Py_UNICODE was the native Unicode storage format (code unit) used by + Python and represents a single Unicode element in the Unicode type. + With PEP 393, Py_UNICODE is deprecated and replaced with a + typedef to wchar_t. */ + +#ifndef Py_LIMITED_API +#define PY_UNICODE_TYPE wchar_t +typedef wchar_t Py_UNICODE; +#endif + +/* If the compiler provides a wchar_t type we try to support it + through the interface functions PyUnicode_FromWideChar(), + PyUnicode_AsWideChar() and PyUnicode_AsWideCharString(). */ + +#ifdef HAVE_USABLE_WCHAR_T +# ifndef HAVE_WCHAR_H +# define HAVE_WCHAR_H +# endif +#endif + +#ifdef HAVE_WCHAR_H +/* Work around a cosmetic bug in BSDI 4.x wchar.h; thanks to Thomas Wouters */ +# ifdef _HAVE_BSDI +# include +# endif +# include +#endif + +/* Py_UCS4 and Py_UCS2 are typedefs for the respective + unicode representations. */ +typedef uint32_t Py_UCS4; +typedef uint16_t Py_UCS2; +typedef uint8_t Py_UCS1; + +/* --- Internal Unicode Operations ---------------------------------------- */ + +/* Since splitting on whitespace is an important use case, and + whitespace in most situations is solely ASCII whitespace, we + optimize for the common case by using a quick look-up table + _Py_ascii_whitespace (see below) with an inlined check. + + */ +#ifndef Py_LIMITED_API +#define Py_UNICODE_ISSPACE(ch) \ + ((ch) < 128U ? _Py_ascii_whitespace[(ch)] : _PyUnicode_IsWhitespace(ch)) + +#define Py_UNICODE_ISLOWER(ch) _PyUnicode_IsLowercase(ch) +#define Py_UNICODE_ISUPPER(ch) _PyUnicode_IsUppercase(ch) +#define Py_UNICODE_ISTITLE(ch) _PyUnicode_IsTitlecase(ch) +#define Py_UNICODE_ISLINEBREAK(ch) _PyUnicode_IsLinebreak(ch) + +#define Py_UNICODE_TOLOWER(ch) _PyUnicode_ToLowercase(ch) +#define Py_UNICODE_TOUPPER(ch) _PyUnicode_ToUppercase(ch) +#define Py_UNICODE_TOTITLE(ch) _PyUnicode_ToTitlecase(ch) + +#define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch) +#define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch) +#define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch) +#define Py_UNICODE_ISPRINTABLE(ch) _PyUnicode_IsPrintable(ch) + +#define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch) +#define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch) +#define Py_UNICODE_TONUMERIC(ch) _PyUnicode_ToNumeric(ch) + +#define Py_UNICODE_ISALPHA(ch) _PyUnicode_IsAlpha(ch) + +#define Py_UNICODE_ISALNUM(ch) \ + (Py_UNICODE_ISALPHA(ch) || \ + Py_UNICODE_ISDECIMAL(ch) || \ + Py_UNICODE_ISDIGIT(ch) || \ + Py_UNICODE_ISNUMERIC(ch)) + +#define Py_UNICODE_COPY(target, source, length) \ + memcpy((target), (source), (length)*sizeof(Py_UNICODE)) + +#define Py_UNICODE_FILL(target, value, length) \ + do {Py_ssize_t i_; Py_UNICODE *t_ = (target); Py_UNICODE v_ = (value);\ + for (i_ = 0; i_ < (length); i_++) t_[i_] = v_;\ + } while (0) + +/* macros to work with surrogates */ +#define Py_UNICODE_IS_SURROGATE(ch) (0xD800 <= (ch) && (ch) <= 0xDFFF) +#define Py_UNICODE_IS_HIGH_SURROGATE(ch) (0xD800 <= (ch) && (ch) <= 0xDBFF) +#define Py_UNICODE_IS_LOW_SURROGATE(ch) (0xDC00 <= (ch) && (ch) <= 0xDFFF) +/* Join two surrogate characters and return a single Py_UCS4 value. */ +#define Py_UNICODE_JOIN_SURROGATES(high, low) \ + (((((Py_UCS4)(high) & 0x03FF) << 10) | \ + ((Py_UCS4)(low) & 0x03FF)) + 0x10000) +/* high surrogate = top 10 bits added to D800 */ +#define Py_UNICODE_HIGH_SURROGATE(ch) (0xD800 - (0x10000 >> 10) + ((ch) >> 10)) +/* low surrogate = bottom 10 bits added to DC00 */ +#define Py_UNICODE_LOW_SURROGATE(ch) (0xDC00 + ((ch) & 0x3FF)) + +/* Check if substring matches at given offset. The offset must be + valid, and the substring must not be empty. */ + +#define Py_UNICODE_MATCH(string, offset, substring) \ + ((*((string)->wstr + (offset)) == *((substring)->wstr)) && \ + ((*((string)->wstr + (offset) + (substring)->wstr_length-1) == *((substring)->wstr + (substring)->wstr_length-1))) && \ + !memcmp((string)->wstr + (offset), (substring)->wstr, (substring)->wstr_length*sizeof(Py_UNICODE))) + +#endif /* Py_LIMITED_API */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* --- Unicode Type ------------------------------------------------------- */ + +#ifndef Py_LIMITED_API + +/* ASCII-only strings created through PyUnicode_New use the PyASCIIObject + structure. state.ascii and state.compact are set, and the data + immediately follow the structure. utf8_length and wstr_length can be found + in the length field; the utf8 pointer is equal to the data pointer. */ +typedef struct { + /* There are 4 forms of Unicode strings: + + - compact ascii: + + * structure = PyASCIIObject + * test: PyUnicode_IS_COMPACT_ASCII(op) + * kind = PyUnicode_1BYTE_KIND + * compact = 1 + * ascii = 1 + * ready = 1 + * (length is the length of the utf8 and wstr strings) + * (data starts just after the structure) + * (since ASCII is decoded from UTF-8, the utf8 string are the data) + + - compact: + + * structure = PyCompactUnicodeObject + * test: PyUnicode_IS_COMPACT(op) && !PyUnicode_IS_ASCII(op) + * kind = PyUnicode_1BYTE_KIND, PyUnicode_2BYTE_KIND or + PyUnicode_4BYTE_KIND + * compact = 1 + * ready = 1 + * ascii = 0 + * utf8 is not shared with data + * utf8_length = 0 if utf8 is NULL + * wstr is shared with data and wstr_length=length + if kind=PyUnicode_2BYTE_KIND and sizeof(wchar_t)=2 + or if kind=PyUnicode_4BYTE_KIND and sizeof(wchar_t)=4 + * wstr_length = 0 if wstr is NULL + * (data starts just after the structure) + + - legacy string, not ready: + + * structure = PyUnicodeObject + * test: kind == PyUnicode_WCHAR_KIND + * length = 0 (use wstr_length) + * hash = -1 + * kind = PyUnicode_WCHAR_KIND + * compact = 0 + * ascii = 0 + * ready = 0 + * interned = SSTATE_NOT_INTERNED + * wstr is not NULL + * data.any is NULL + * utf8 is NULL + * utf8_length = 0 + + - legacy string, ready: + + * structure = PyUnicodeObject structure + * test: !PyUnicode_IS_COMPACT(op) && kind != PyUnicode_WCHAR_KIND + * kind = PyUnicode_1BYTE_KIND, PyUnicode_2BYTE_KIND or + PyUnicode_4BYTE_KIND + * compact = 0 + * ready = 1 + * data.any is not NULL + * utf8 is shared and utf8_length = length with data.any if ascii = 1 + * utf8_length = 0 if utf8 is NULL + * wstr is shared with data.any and wstr_length = length + if kind=PyUnicode_2BYTE_KIND and sizeof(wchar_t)=2 + or if kind=PyUnicode_4BYTE_KIND and sizeof(wchar_4)=4 + * wstr_length = 0 if wstr is NULL + + Compact strings use only one memory block (structure + characters), + whereas legacy strings use one block for the structure and one block + for characters. + + Legacy strings are created by PyUnicode_FromUnicode() and + PyUnicode_FromStringAndSize(NULL, size) functions. They become ready + when PyUnicode_READY() is called. + + See also _PyUnicode_CheckConsistency(). + */ + PyObject_HEAD + Py_ssize_t length; /* Number of code points in the string */ + Py_hash_t hash; /* Hash value; -1 if not set */ + struct { + /* + SSTATE_NOT_INTERNED (0) + SSTATE_INTERNED_MORTAL (1) + SSTATE_INTERNED_IMMORTAL (2) + + If interned != SSTATE_NOT_INTERNED, the two references from the + dictionary to this object are *not* counted in ob_refcnt. + */ + unsigned int interned:2; + /* Character size: + + - PyUnicode_WCHAR_KIND (0): + + * character type = wchar_t (16 or 32 bits, depending on the + platform) + + - PyUnicode_1BYTE_KIND (1): + + * character type = Py_UCS1 (8 bits, unsigned) + * all characters are in the range U+0000-U+00FF (latin1) + * if ascii is set, all characters are in the range U+0000-U+007F + (ASCII), otherwise at least one character is in the range + U+0080-U+00FF + + - PyUnicode_2BYTE_KIND (2): + + * character type = Py_UCS2 (16 bits, unsigned) + * all characters are in the range U+0000-U+FFFF (BMP) + * at least one character is in the range U+0100-U+FFFF + + - PyUnicode_4BYTE_KIND (4): + + * character type = Py_UCS4 (32 bits, unsigned) + * all characters are in the range U+0000-U+10FFFF + * at least one character is in the range U+10000-U+10FFFF + */ + unsigned int kind:3; + /* Compact is with respect to the allocation scheme. Compact unicode + objects only require one memory block while non-compact objects use + one block for the PyUnicodeObject struct and another for its data + buffer. */ + unsigned int compact:1; + /* The string only contains characters in the range U+0000-U+007F (ASCII) + and the kind is PyUnicode_1BYTE_KIND. If ascii is set and compact is + set, use the PyASCIIObject structure. */ + unsigned int ascii:1; + /* The ready flag indicates whether the object layout is initialized + completely. This means that this is either a compact object, or + the data pointer is filled out. The bit is redundant, and helps + to minimize the test in PyUnicode_IS_READY(). */ + unsigned int ready:1; + /* Padding to ensure that PyUnicode_DATA() is always aligned to + 4 bytes (see issue #19537 on m68k). */ + unsigned int :24; + } state; + wchar_t *wstr; /* wchar_t representation (null-terminated) */ +} PyASCIIObject; + +/* Non-ASCII strings allocated through PyUnicode_New use the + PyCompactUnicodeObject structure. state.compact is set, and the data + immediately follow the structure. */ +typedef struct { + PyASCIIObject _base; + Py_ssize_t utf8_length; /* Number of bytes in utf8, excluding the + * terminating \0. */ + char *utf8; /* UTF-8 representation (null-terminated) */ + Py_ssize_t wstr_length; /* Number of code points in wstr, possible + * surrogates count as two code points. */ +} PyCompactUnicodeObject; + +/* Strings allocated through PyUnicode_FromUnicode(NULL, len) use the + PyUnicodeObject structure. The actual string data is initially in the wstr + block, and copied into the data block using _PyUnicode_Ready. */ +typedef struct { + PyCompactUnicodeObject _base; + union { + void *any; + Py_UCS1 *latin1; + Py_UCS2 *ucs2; + Py_UCS4 *ucs4; + } data; /* Canonical, smallest-form Unicode buffer */ +} PyUnicodeObject; +#endif + +PyAPI_DATA(PyTypeObject) PyUnicode_Type; +PyAPI_DATA(PyTypeObject) PyUnicodeIter_Type; + +#define PyUnicode_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS) +#define PyUnicode_CheckExact(op) (Py_TYPE(op) == &PyUnicode_Type) + +/* Fast access macros */ +#ifndef Py_LIMITED_API + +#define PyUnicode_WSTR_LENGTH(op) \ + (PyUnicode_IS_COMPACT_ASCII(op) ? \ + ((PyASCIIObject*)op)->length : \ + ((PyCompactUnicodeObject*)op)->wstr_length) + +/* Returns the deprecated Py_UNICODE representation's size in code units + (this includes surrogate pairs as 2 units). + If the Py_UNICODE representation is not available, it will be computed + on request. Use PyUnicode_GET_LENGTH() for the length in code points. */ + +#define PyUnicode_GET_SIZE(op) \ + (assert(PyUnicode_Check(op)), \ + (((PyASCIIObject *)(op))->wstr) ? \ + PyUnicode_WSTR_LENGTH(op) : \ + ((void)PyUnicode_AsUnicode((PyObject *)(op)), \ + assert(((PyASCIIObject *)(op))->wstr), \ + PyUnicode_WSTR_LENGTH(op))) + +#define PyUnicode_GET_DATA_SIZE(op) \ + (PyUnicode_GET_SIZE(op) * Py_UNICODE_SIZE) + +/* Alias for PyUnicode_AsUnicode(). This will create a wchar_t/Py_UNICODE + representation on demand. Using this macro is very inefficient now, + try to port your code to use the new PyUnicode_*BYTE_DATA() macros or + use PyUnicode_WRITE() and PyUnicode_READ(). */ + +#define PyUnicode_AS_UNICODE(op) \ + (assert(PyUnicode_Check(op)), \ + (((PyASCIIObject *)(op))->wstr) ? (((PyASCIIObject *)(op))->wstr) : \ + PyUnicode_AsUnicode((PyObject *)(op))) + +#define PyUnicode_AS_DATA(op) \ + ((const char *)(PyUnicode_AS_UNICODE(op))) + + +/* --- Flexible String Representation Helper Macros (PEP 393) -------------- */ + +/* Values for PyASCIIObject.state: */ + +/* Interning state. */ +#define SSTATE_NOT_INTERNED 0 +#define SSTATE_INTERNED_MORTAL 1 +#define SSTATE_INTERNED_IMMORTAL 2 + +/* Return true if the string contains only ASCII characters, or 0 if not. The + string may be compact (PyUnicode_IS_COMPACT_ASCII) or not, but must be + ready. */ +#define PyUnicode_IS_ASCII(op) \ + (assert(PyUnicode_Check(op)), \ + assert(PyUnicode_IS_READY(op)), \ + ((PyASCIIObject*)op)->state.ascii) + +/* Return true if the string is compact or 0 if not. + No type checks or Ready calls are performed. */ +#define PyUnicode_IS_COMPACT(op) \ + (((PyASCIIObject*)(op))->state.compact) + +/* Return true if the string is a compact ASCII string (use PyASCIIObject + structure), or 0 if not. No type checks or Ready calls are performed. */ +#define PyUnicode_IS_COMPACT_ASCII(op) \ + (((PyASCIIObject*)op)->state.ascii && PyUnicode_IS_COMPACT(op)) + +enum PyUnicode_Kind { +/* String contains only wstr byte characters. This is only possible + when the string was created with a legacy API and _PyUnicode_Ready() + has not been called yet. */ + PyUnicode_WCHAR_KIND = 0, +/* Return values of the PyUnicode_KIND() macro: */ + PyUnicode_1BYTE_KIND = 1, + PyUnicode_2BYTE_KIND = 2, + PyUnicode_4BYTE_KIND = 4 +}; + +/* Return pointers to the canonical representation cast to unsigned char, + Py_UCS2, or Py_UCS4 for direct character access. + No checks are performed, use PyUnicode_KIND() before to ensure + these will work correctly. */ + +#define PyUnicode_1BYTE_DATA(op) ((Py_UCS1*)PyUnicode_DATA(op)) +#define PyUnicode_2BYTE_DATA(op) ((Py_UCS2*)PyUnicode_DATA(op)) +#define PyUnicode_4BYTE_DATA(op) ((Py_UCS4*)PyUnicode_DATA(op)) + +/* Return one of the PyUnicode_*_KIND values defined above. */ +#define PyUnicode_KIND(op) \ + (assert(PyUnicode_Check(op)), \ + assert(PyUnicode_IS_READY(op)), \ + ((PyASCIIObject *)(op))->state.kind) + +/* Return a void pointer to the raw unicode buffer. */ +#define _PyUnicode_COMPACT_DATA(op) \ + (PyUnicode_IS_ASCII(op) ? \ + ((void*)((PyASCIIObject*)(op) + 1)) : \ + ((void*)((PyCompactUnicodeObject*)(op) + 1))) + +#define _PyUnicode_NONCOMPACT_DATA(op) \ + (assert(((PyUnicodeObject*)(op))->data.any), \ + ((((PyUnicodeObject *)(op))->data.any))) + +#define PyUnicode_DATA(op) \ + (assert(PyUnicode_Check(op)), \ + PyUnicode_IS_COMPACT(op) ? _PyUnicode_COMPACT_DATA(op) : \ + _PyUnicode_NONCOMPACT_DATA(op)) + +/* In the access macros below, "kind" may be evaluated more than once. + All other macro parameters are evaluated exactly once, so it is safe + to put side effects into them (such as increasing the index). */ + +/* Write into the canonical representation, this macro does not do any sanity + checks and is intended for usage in loops. The caller should cache the + kind and data pointers obtained from other macro calls. + index is the index in the string (starts at 0) and value is the new + code point value which should be written to that location. */ +#define PyUnicode_WRITE(kind, data, index, value) \ + do { \ + switch ((kind)) { \ + case PyUnicode_1BYTE_KIND: { \ + ((Py_UCS1 *)(data))[(index)] = (Py_UCS1)(value); \ + break; \ + } \ + case PyUnicode_2BYTE_KIND: { \ + ((Py_UCS2 *)(data))[(index)] = (Py_UCS2)(value); \ + break; \ + } \ + default: { \ + assert((kind) == PyUnicode_4BYTE_KIND); \ + ((Py_UCS4 *)(data))[(index)] = (Py_UCS4)(value); \ + } \ + } \ + } while (0) + +/* Read a code point from the string's canonical representation. No checks + or ready calls are performed. */ +#define PyUnicode_READ(kind, data, index) \ + ((Py_UCS4) \ + ((kind) == PyUnicode_1BYTE_KIND ? \ + ((const Py_UCS1 *)(data))[(index)] : \ + ((kind) == PyUnicode_2BYTE_KIND ? \ + ((const Py_UCS2 *)(data))[(index)] : \ + ((const Py_UCS4 *)(data))[(index)] \ + ) \ + )) + +/* PyUnicode_READ_CHAR() is less efficient than PyUnicode_READ() because it + calls PyUnicode_KIND() and might call it twice. For single reads, use + PyUnicode_READ_CHAR, for multiple consecutive reads callers should + cache kind and use PyUnicode_READ instead. */ +#define PyUnicode_READ_CHAR(unicode, index) \ + (assert(PyUnicode_Check(unicode)), \ + assert(PyUnicode_IS_READY(unicode)), \ + (Py_UCS4) \ + (PyUnicode_KIND((unicode)) == PyUnicode_1BYTE_KIND ? \ + ((const Py_UCS1 *)(PyUnicode_DATA((unicode))))[(index)] : \ + (PyUnicode_KIND((unicode)) == PyUnicode_2BYTE_KIND ? \ + ((const Py_UCS2 *)(PyUnicode_DATA((unicode))))[(index)] : \ + ((const Py_UCS4 *)(PyUnicode_DATA((unicode))))[(index)] \ + ) \ + )) + +/* Returns the length of the unicode string. The caller has to make sure that + the string has it's canonical representation set before calling + this macro. Call PyUnicode_(FAST_)Ready to ensure that. */ +#define PyUnicode_GET_LENGTH(op) \ + (assert(PyUnicode_Check(op)), \ + assert(PyUnicode_IS_READY(op)), \ + ((PyASCIIObject *)(op))->length) + + +/* Fast check to determine whether an object is ready. Equivalent to + PyUnicode_IS_COMPACT(op) || ((PyUnicodeObject*)(op))->data.any) */ + +#define PyUnicode_IS_READY(op) (((PyASCIIObject*)op)->state.ready) + +/* PyUnicode_READY() does less work than _PyUnicode_Ready() in the best + case. If the canonical representation is not yet set, it will still call + _PyUnicode_Ready(). + Returns 0 on success and -1 on errors. */ +#define PyUnicode_READY(op) \ + (assert(PyUnicode_Check(op)), \ + (PyUnicode_IS_READY(op) ? \ + 0 : _PyUnicode_Ready((PyObject *)(op)))) + +/* Return a maximum character value which is suitable for creating another + string based on op. This is always an approximation but more efficient + than iterating over the string. */ +#define PyUnicode_MAX_CHAR_VALUE(op) \ + (assert(PyUnicode_IS_READY(op)), \ + (PyUnicode_IS_ASCII(op) ? \ + (0x7f) : \ + (PyUnicode_KIND(op) == PyUnicode_1BYTE_KIND ? \ + (0xffU) : \ + (PyUnicode_KIND(op) == PyUnicode_2BYTE_KIND ? \ + (0xffffU) : \ + (0x10ffffU))))) + +#endif + +/* --- Constants ---------------------------------------------------------- */ + +/* This Unicode character will be used as replacement character during + decoding if the errors argument is set to "replace". Note: the + Unicode character U+FFFD is the official REPLACEMENT CHARACTER in + Unicode 3.0. */ + +#define Py_UNICODE_REPLACEMENT_CHARACTER ((Py_UCS4) 0xFFFD) + +/* === Public API ========================================================= */ + +/* --- Plain Py_UNICODE --------------------------------------------------- */ + +/* With PEP 393, this is the recommended way to allocate a new unicode object. + This function will allocate the object and its buffer in a single memory + block. Objects created using this function are not resizable. */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_New( + Py_ssize_t size, /* Number of code points in the new string */ + Py_UCS4 maxchar /* maximum code point value in the string */ + ); +#endif + +/* Initializes the canonical string representation from the deprecated + wstr/Py_UNICODE representation. This function is used to convert Unicode + objects which were created using the old API to the new flexible format + introduced with PEP 393. + + Don't call this function directly, use the public PyUnicode_READY() macro + instead. */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyUnicode_Ready( + PyObject *unicode /* Unicode object */ + ); +#endif + +/* Get a copy of a Unicode string. */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) _PyUnicode_Copy( + PyObject *unicode + ); +#endif + +/* Copy character from one unicode object into another, this function performs + character conversion when necessary and falls back to memcpy() if possible. + + Fail if to is too small (smaller than *how_many* or smaller than + len(from)-from_start), or if kind(from[from_start:from_start+how_many]) > + kind(to), or if *to* has more than 1 reference. + + Return the number of written character, or return -1 and raise an exception + on error. + + Pseudo-code: + + how_many = min(how_many, len(from) - from_start) + to[to_start:to_start+how_many] = from[from_start:from_start+how_many] + return how_many + + Note: The function doesn't write a terminating null character. + */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_ssize_t) PyUnicode_CopyCharacters( + PyObject *to, + Py_ssize_t to_start, + PyObject *from, + Py_ssize_t from_start, + Py_ssize_t how_many + ); + +/* Unsafe version of PyUnicode_CopyCharacters(): don't check arguments and so + may crash if parameters are invalid (e.g. if the output string + is too short). */ +PyAPI_FUNC(void) _PyUnicode_FastCopyCharacters( + PyObject *to, + Py_ssize_t to_start, + PyObject *from, + Py_ssize_t from_start, + Py_ssize_t how_many + ); +#endif + +#ifndef Py_LIMITED_API +/* Fill a string with a character: write fill_char into + unicode[start:start+length]. + + Fail if fill_char is bigger than the string maximum character, or if the + string has more than 1 reference. + + Return the number of written character, or return -1 and raise an exception + on error. */ +PyAPI_FUNC(Py_ssize_t) PyUnicode_Fill( + PyObject *unicode, + Py_ssize_t start, + Py_ssize_t length, + Py_UCS4 fill_char + ); + +/* Unsafe version of PyUnicode_Fill(): don't check arguments and so may crash + if parameters are invalid (e.g. if length is longer than the string). */ +PyAPI_FUNC(void) _PyUnicode_FastFill( + PyObject *unicode, + Py_ssize_t start, + Py_ssize_t length, + Py_UCS4 fill_char + ); +#endif + +/* Create a Unicode Object from the Py_UNICODE buffer u of the given + size. + + u may be NULL which causes the contents to be undefined. It is the + user's responsibility to fill in the needed data afterwards. Note + that modifying the Unicode object contents after construction is + only allowed if u was set to NULL. + + The buffer is copied into the new object. */ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_FromUnicode( + const Py_UNICODE *u, /* Unicode buffer */ + Py_ssize_t size /* size of buffer */ + ); +#endif + +/* Similar to PyUnicode_FromUnicode(), but u points to UTF-8 encoded bytes */ +PyAPI_FUNC(PyObject*) PyUnicode_FromStringAndSize( + const char *u, /* UTF-8 encoded string */ + Py_ssize_t size /* size of buffer */ + ); + +/* Similar to PyUnicode_FromUnicode(), but u points to null-terminated + UTF-8 encoded bytes. The size is determined with strlen(). */ +PyAPI_FUNC(PyObject*) PyUnicode_FromString( + const char *u /* UTF-8 encoded string */ + ); + +#ifndef Py_LIMITED_API +/* Create a new string from a buffer of Py_UCS1, Py_UCS2 or Py_UCS4 characters. + Scan the string to find the maximum character. */ +PyAPI_FUNC(PyObject*) PyUnicode_FromKindAndData( + int kind, + const void *buffer, + Py_ssize_t size); + +/* Create a new string from a buffer of ASCII characters. + WARNING: Don't check if the string contains any non-ASCII character. */ +PyAPI_FUNC(PyObject*) _PyUnicode_FromASCII( + const char *buffer, + Py_ssize_t size); +#endif + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject*) PyUnicode_Substring( + PyObject *str, + Py_ssize_t start, + Py_ssize_t end); +#endif + +#ifndef Py_LIMITED_API +/* Compute the maximum character of the substring unicode[start:end]. + Return 127 for an empty string. */ +PyAPI_FUNC(Py_UCS4) _PyUnicode_FindMaxChar ( + PyObject *unicode, + Py_ssize_t start, + Py_ssize_t end); +#endif + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +/* Copy the string into a UCS4 buffer including the null character if copy_null + is set. Return NULL and raise an exception on error. Raise a SystemError if + the buffer is smaller than the string. Return buffer on success. + + buflen is the length of the buffer in (Py_UCS4) characters. */ +PyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4( + PyObject *unicode, + Py_UCS4* buffer, + Py_ssize_t buflen, + int copy_null); + +/* Copy the string into a UCS4 buffer. A new buffer is allocated using + * PyMem_Malloc; if this fails, NULL is returned with a memory error + exception set. */ +PyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4Copy(PyObject *unicode); +#endif + +#ifndef Py_LIMITED_API +/* Return a read-only pointer to the Unicode object's internal + Py_UNICODE buffer. + If the wchar_t/Py_UNICODE representation is not yet available, this + function will calculate it. */ + +PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode( + PyObject *unicode /* Unicode object */ + ); + +/* Similar to PyUnicode_AsUnicode(), but raises a ValueError if the string + contains null characters. */ +PyAPI_FUNC(const Py_UNICODE *) _PyUnicode_AsUnicode( + PyObject *unicode /* Unicode object */ + ); + +/* Return a read-only pointer to the Unicode object's internal + Py_UNICODE buffer and save the length at size. + If the wchar_t/Py_UNICODE representation is not yet available, this + function will calculate it. */ + +PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicodeAndSize( + PyObject *unicode, /* Unicode object */ + Py_ssize_t *size /* location where to save the length */ + ); +#endif + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +/* Get the length of the Unicode object. */ + +PyAPI_FUNC(Py_ssize_t) PyUnicode_GetLength( + PyObject *unicode +); +#endif + +/* Get the number of Py_UNICODE units in the + string representation. */ + +PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize( + PyObject *unicode /* Unicode object */ + ); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +/* Read a character from the string. */ + +PyAPI_FUNC(Py_UCS4) PyUnicode_ReadChar( + PyObject *unicode, + Py_ssize_t index + ); + +/* Write a character to the string. The string must have been created through + PyUnicode_New, must not be shared, and must not have been hashed yet. + + Return 0 on success, -1 on error. */ + +PyAPI_FUNC(int) PyUnicode_WriteChar( + PyObject *unicode, + Py_ssize_t index, + Py_UCS4 character + ); +#endif + +#ifndef Py_LIMITED_API +/* Get the maximum ordinal for a Unicode character. */ +PyAPI_FUNC(Py_UNICODE) PyUnicode_GetMax(void); +#endif + +/* Resize a Unicode object. The length is the number of characters, except + if the kind of the string is PyUnicode_WCHAR_KIND: in this case, the length + is the number of Py_UNICODE characters. + + *unicode is modified to point to the new (resized) object and 0 + returned on success. + + Try to resize the string in place (which is usually faster than allocating + a new string and copy characters), or create a new string. + + Error handling is implemented as follows: an exception is set, -1 + is returned and *unicode left untouched. + + WARNING: The function doesn't check string content, the result may not be a + string in canonical representation. */ + +PyAPI_FUNC(int) PyUnicode_Resize( + PyObject **unicode, /* Pointer to the Unicode object */ + Py_ssize_t length /* New length */ + ); + +/* Decode obj to a Unicode object. + + bytes, bytearray and other bytes-like objects are decoded according to the + given encoding and error handler. The encoding and error handler can be + NULL to have the interface use UTF-8 and "strict". + + All other objects (including Unicode objects) raise an exception. + + The API returns NULL in case of an error. The caller is responsible + for decref'ing the returned objects. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_FromEncodedObject( + PyObject *obj, /* Object */ + const char *encoding, /* encoding */ + const char *errors /* error handling */ + ); + +/* Copy an instance of a Unicode subtype to a new true Unicode object if + necessary. If obj is already a true Unicode object (not a subtype), return + the reference with *incremented* refcount. + + The API returns NULL in case of an error. The caller is responsible + for decref'ing the returned objects. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_FromObject( + PyObject *obj /* Object */ + ); + +PyAPI_FUNC(PyObject *) PyUnicode_FromFormatV( + const char *format, /* ASCII-encoded string */ + va_list vargs + ); +PyAPI_FUNC(PyObject *) PyUnicode_FromFormat( + const char *format, /* ASCII-encoded string */ + ... + ); + +#ifndef Py_LIMITED_API +typedef struct { + PyObject *buffer; + void *data; + enum PyUnicode_Kind kind; + Py_UCS4 maxchar; + Py_ssize_t size; + Py_ssize_t pos; + + /* minimum number of allocated characters (default: 0) */ + Py_ssize_t min_length; + + /* minimum character (default: 127, ASCII) */ + Py_UCS4 min_char; + + /* If non-zero, overallocate the buffer (default: 0). */ + unsigned char overallocate; + + /* If readonly is 1, buffer is a shared string (cannot be modified) + and size is set to 0. */ + unsigned char readonly; +} _PyUnicodeWriter ; + +/* Initialize a Unicode writer. + * + * By default, the minimum buffer size is 0 character and overallocation is + * disabled. Set min_length, min_char and overallocate attributes to control + * the allocation of the buffer. */ +PyAPI_FUNC(void) +_PyUnicodeWriter_Init(_PyUnicodeWriter *writer); + +/* Prepare the buffer to write 'length' characters + with the specified maximum character. + + Return 0 on success, raise an exception and return -1 on error. */ +#define _PyUnicodeWriter_Prepare(WRITER, LENGTH, MAXCHAR) \ + (((MAXCHAR) <= (WRITER)->maxchar \ + && (LENGTH) <= (WRITER)->size - (WRITER)->pos) \ + ? 0 \ + : (((LENGTH) == 0) \ + ? 0 \ + : _PyUnicodeWriter_PrepareInternal((WRITER), (LENGTH), (MAXCHAR)))) + +/* Don't call this function directly, use the _PyUnicodeWriter_Prepare() macro + instead. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_PrepareInternal(_PyUnicodeWriter *writer, + Py_ssize_t length, Py_UCS4 maxchar); + +/* Prepare the buffer to have at least the kind KIND. + For example, kind=PyUnicode_2BYTE_KIND ensures that the writer will + support characters in range U+000-U+FFFF. + + Return 0 on success, raise an exception and return -1 on error. */ +#define _PyUnicodeWriter_PrepareKind(WRITER, KIND) \ + (assert((KIND) != PyUnicode_WCHAR_KIND), \ + (KIND) <= (WRITER)->kind \ + ? 0 \ + : _PyUnicodeWriter_PrepareKindInternal((WRITER), (KIND))) + +/* Don't call this function directly, use the _PyUnicodeWriter_PrepareKind() + macro instead. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_PrepareKindInternal(_PyUnicodeWriter *writer, + enum PyUnicode_Kind kind); + +/* Append a Unicode character. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_WriteChar(_PyUnicodeWriter *writer, + Py_UCS4 ch + ); + +/* Append a Unicode string. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_WriteStr(_PyUnicodeWriter *writer, + PyObject *str /* Unicode string */ + ); + +/* Append a substring of a Unicode string. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_WriteSubstring(_PyUnicodeWriter *writer, + PyObject *str, /* Unicode string */ + Py_ssize_t start, + Py_ssize_t end + ); + +/* Append an ASCII-encoded byte string. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_WriteASCIIString(_PyUnicodeWriter *writer, + const char *str, /* ASCII-encoded byte string */ + Py_ssize_t len /* number of bytes, or -1 if unknown */ + ); + +/* Append a latin1-encoded byte string. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_WriteLatin1String(_PyUnicodeWriter *writer, + const char *str, /* latin1-encoded byte string */ + Py_ssize_t len /* length in bytes */ + ); + +/* Get the value of the writer as a Unicode string. Clear the + buffer of the writer. Raise an exception and return NULL + on error. */ +PyAPI_FUNC(PyObject *) +_PyUnicodeWriter_Finish(_PyUnicodeWriter *writer); + +/* Deallocate memory of a writer (clear its internal buffer). */ +PyAPI_FUNC(void) +_PyUnicodeWriter_Dealloc(_PyUnicodeWriter *writer); +#endif + +#ifndef Py_LIMITED_API +/* Format the object based on the format_spec, as defined in PEP 3101 + (Advanced String Formatting). */ +PyAPI_FUNC(int) _PyUnicode_FormatAdvancedWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + PyObject *format_spec, + Py_ssize_t start, + Py_ssize_t end); +#endif + +PyAPI_FUNC(void) PyUnicode_InternInPlace(PyObject **); +PyAPI_FUNC(void) PyUnicode_InternImmortal(PyObject **); +PyAPI_FUNC(PyObject *) PyUnicode_InternFromString( + const char *u /* UTF-8 encoded string */ + ); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _Py_ReleaseInternedUnicodeStrings(void); +#endif + +/* Use only if you know it's a string */ +#define PyUnicode_CHECK_INTERNED(op) \ + (((PyASCIIObject *)(op))->state.interned) + +/* --- wchar_t support for platforms which support it --------------------- */ + +#ifdef HAVE_WCHAR_H + +/* Create a Unicode Object from the wchar_t buffer w of the given + size. + + The buffer is copied into the new object. */ + +PyAPI_FUNC(PyObject*) PyUnicode_FromWideChar( + const wchar_t *w, /* wchar_t buffer */ + Py_ssize_t size /* size of buffer */ + ); + +/* Copies the Unicode Object contents into the wchar_t buffer w. At + most size wchar_t characters are copied. + + Note that the resulting wchar_t string may or may not be + 0-terminated. It is the responsibility of the caller to make sure + that the wchar_t string is 0-terminated in case this is required by + the application. + + Returns the number of wchar_t characters copied (excluding a + possibly trailing 0-termination character) or -1 in case of an + error. */ + +PyAPI_FUNC(Py_ssize_t) PyUnicode_AsWideChar( + PyObject *unicode, /* Unicode object */ + wchar_t *w, /* wchar_t buffer */ + Py_ssize_t size /* size of buffer */ + ); + +/* Convert the Unicode object to a wide character string. The output string + always ends with a nul character. If size is not NULL, write the number of + wide characters (excluding the null character) into *size. + + Returns a buffer allocated by PyMem_Malloc() (use PyMem_Free() to free it) + on success. On error, returns NULL, *size is undefined and raises a + MemoryError. */ + +PyAPI_FUNC(wchar_t*) PyUnicode_AsWideCharString( + PyObject *unicode, /* Unicode object */ + Py_ssize_t *size /* number of characters of the result */ + ); + +#ifndef Py_LIMITED_API +/* Similar to PyUnicode_AsWideCharString(unicode, NULL), but check if + the string contains null characters. */ +PyAPI_FUNC(wchar_t*) _PyUnicode_AsWideCharString( + PyObject *unicode /* Unicode object */ + ); + +PyAPI_FUNC(void*) _PyUnicode_AsKind(PyObject *s, unsigned int kind); +#endif + +#endif + +/* --- Unicode ordinals --------------------------------------------------- */ + +/* Create a Unicode Object from the given Unicode code point ordinal. + + The ordinal must be in range(0x110000). A ValueError is + raised in case it is not. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_FromOrdinal(int ordinal); + +/* --- Free-list management ----------------------------------------------- */ + +/* Clear the free list used by the Unicode implementation. + + This can be used to release memory used for objects on the free + list back to the Python memory allocator. + +*/ + +PyAPI_FUNC(int) PyUnicode_ClearFreeList(void); + +/* === Builtin Codecs ===================================================== + + Many of these APIs take two arguments encoding and errors. These + parameters encoding and errors have the same semantics as the ones + of the builtin str() API. + + Setting encoding to NULL causes the default encoding (UTF-8) to be used. + + Error handling is set by errors which may also be set to NULL + meaning to use the default handling defined for the codec. Default + error handling for all builtin codecs is "strict" (ValueErrors are + raised). + + The codecs all use a similar interface. Only deviation from the + generic ones are documented. + +*/ + +/* --- Manage the default encoding ---------------------------------------- */ + +/* Returns a pointer to the default encoding (UTF-8) of the + Unicode object unicode and the size of the encoded representation + in bytes stored in *size. + + In case of an error, no *size is set. + + This function caches the UTF-8 encoded string in the unicodeobject + and subsequent calls will return the same string. The memory is released + when the unicodeobject is deallocated. + + _PyUnicode_AsStringAndSize is a #define for PyUnicode_AsUTF8AndSize to + support the previous internal function with the same behaviour. + + *** This API is for interpreter INTERNAL USE ONLY and will likely + *** be removed or changed in the future. + + *** If you need to access the Unicode object as UTF-8 bytes string, + *** please use PyUnicode_AsUTF8String() instead. +*/ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(char *) PyUnicode_AsUTF8AndSize( + PyObject *unicode, + Py_ssize_t *size); +#define _PyUnicode_AsStringAndSize PyUnicode_AsUTF8AndSize +#endif + +/* Returns a pointer to the default encoding (UTF-8) of the + Unicode object unicode. + + Like PyUnicode_AsUTF8AndSize(), this also caches the UTF-8 representation + in the unicodeobject. + + _PyUnicode_AsString is a #define for PyUnicode_AsUTF8 to + support the previous internal function with the same behaviour. + + Use of this API is DEPRECATED since no size information can be + extracted from the returned data. + + *** This API is for interpreter INTERNAL USE ONLY and will likely + *** be removed or changed for Python 3.1. + + *** If you need to access the Unicode object as UTF-8 bytes string, + *** please use PyUnicode_AsUTF8String() instead. + +*/ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(char *) PyUnicode_AsUTF8(PyObject *unicode); +#define _PyUnicode_AsString PyUnicode_AsUTF8 +#endif + +/* Returns "utf-8". */ + +PyAPI_FUNC(const char*) PyUnicode_GetDefaultEncoding(void); + +/* --- Generic Codecs ----------------------------------------------------- */ + +/* Create a Unicode object by decoding the encoded string s of the + given size. */ + +PyAPI_FUNC(PyObject*) PyUnicode_Decode( + const char *s, /* encoded string */ + Py_ssize_t size, /* size of buffer */ + const char *encoding, /* encoding */ + const char *errors /* error handling */ + ); + +/* Decode a Unicode object unicode and return the result as Python + object. + + This API is DEPRECATED. The only supported standard encoding is rot13. + Use PyCodec_Decode() to decode with rot13 and non-standard codecs + that decode from str. */ + +PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedObject( + PyObject *unicode, /* Unicode object */ + const char *encoding, /* encoding */ + const char *errors /* error handling */ + ) Py_DEPRECATED(3.6); + +/* Decode a Unicode object unicode and return the result as Unicode + object. + + This API is DEPRECATED. The only supported standard encoding is rot13. + Use PyCodec_Decode() to decode with rot13 and non-standard codecs + that decode from str to str. */ + +PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedUnicode( + PyObject *unicode, /* Unicode object */ + const char *encoding, /* encoding */ + const char *errors /* error handling */ + ) Py_DEPRECATED(3.6); + +/* Encodes a Py_UNICODE buffer of the given size and returns a + Python string object. */ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_Encode( + const Py_UNICODE *s, /* Unicode char buffer */ + Py_ssize_t size, /* number of Py_UNICODE chars to encode */ + const char *encoding, /* encoding */ + const char *errors /* error handling */ + ); +#endif + +/* Encodes a Unicode object and returns the result as Python + object. + + This API is DEPRECATED. It is superceeded by PyUnicode_AsEncodedString() + since all standard encodings (except rot13) encode str to bytes. + Use PyCodec_Encode() for encoding with rot13 and non-standard codecs + that encode form str to non-bytes. */ + +PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedObject( + PyObject *unicode, /* Unicode object */ + const char *encoding, /* encoding */ + const char *errors /* error handling */ + ) Py_DEPRECATED(3.6); + +/* Encodes a Unicode object and returns the result as Python string + object. */ + +PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedString( + PyObject *unicode, /* Unicode object */ + const char *encoding, /* encoding */ + const char *errors /* error handling */ + ); + +/* Encodes a Unicode object and returns the result as Unicode + object. + + This API is DEPRECATED. The only supported standard encodings is rot13. + Use PyCodec_Encode() to encode with rot13 and non-standard codecs + that encode from str to str. */ + +PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedUnicode( + PyObject *unicode, /* Unicode object */ + const char *encoding, /* encoding */ + const char *errors /* error handling */ + ) Py_DEPRECATED(3.6); + +/* Build an encoding map. */ + +PyAPI_FUNC(PyObject*) PyUnicode_BuildEncodingMap( + PyObject* string /* 256 character map */ + ); + +/* --- UTF-7 Codecs ------------------------------------------------------- */ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7( + const char *string, /* UTF-7 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors /* error handling */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7Stateful( + const char *string, /* UTF-7 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + Py_ssize_t *consumed /* bytes consumed */ + ); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF7( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + int base64SetO, /* Encode RFC2152 Set O characters in base64 */ + int base64WhiteSpace, /* Encode whitespace (sp, ht, nl, cr) in base64 */ + const char *errors /* error handling */ + ); +PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF7( + PyObject *unicode, /* Unicode object */ + int base64SetO, /* Encode RFC2152 Set O characters in base64 */ + int base64WhiteSpace, /* Encode whitespace (sp, ht, nl, cr) in base64 */ + const char *errors /* error handling */ + ); +#endif + +/* --- UTF-8 Codecs ------------------------------------------------------- */ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8( + const char *string, /* UTF-8 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors /* error handling */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8Stateful( + const char *string, /* UTF-8 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + Py_ssize_t *consumed /* bytes consumed */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_AsUTF8String( + PyObject *unicode /* Unicode object */ + ); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) _PyUnicode_AsUTF8String( + PyObject *unicode, + const char *errors); + +PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + const char *errors /* error handling */ + ); +#endif + +/* --- UTF-32 Codecs ------------------------------------------------------ */ + +/* Decodes length bytes from a UTF-32 encoded buffer string and returns + the corresponding Unicode object. + + errors (if non-NULL) defines the error handling. It defaults + to "strict". + + If byteorder is non-NULL, the decoder starts decoding using the + given byte order: + + *byteorder == -1: little endian + *byteorder == 0: native order + *byteorder == 1: big endian + + In native mode, the first four bytes of the stream are checked for a + BOM mark. If found, the BOM mark is analysed, the byte order + adjusted and the BOM skipped. In the other modes, no BOM mark + interpretation is done. After completion, *byteorder is set to the + current byte order at the end of input data. + + If byteorder is NULL, the codec starts in native order mode. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32( + const char *string, /* UTF-32 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + int *byteorder /* pointer to byteorder to use + 0=native;-1=LE,1=BE; updated on + exit */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32Stateful( + const char *string, /* UTF-32 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + int *byteorder, /* pointer to byteorder to use + 0=native;-1=LE,1=BE; updated on + exit */ + Py_ssize_t *consumed /* bytes consumed */ + ); + +/* Returns a Python string using the UTF-32 encoding in native byte + order. The string always starts with a BOM mark. */ + +PyAPI_FUNC(PyObject*) PyUnicode_AsUTF32String( + PyObject *unicode /* Unicode object */ + ); + +/* Returns a Python string object holding the UTF-32 encoded value of + the Unicode data. + + If byteorder is not 0, output is written according to the following + byte order: + + byteorder == -1: little endian + byteorder == 0: native byte order (writes a BOM mark) + byteorder == 1: big endian + + If byteorder is 0, the output string will always start with the + Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is + prepended. + +*/ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF32( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + const char *errors, /* error handling */ + int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ + ); +PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF32( + PyObject *object, /* Unicode object */ + const char *errors, /* error handling */ + int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ + ); +#endif + +/* --- UTF-16 Codecs ------------------------------------------------------ */ + +/* Decodes length bytes from a UTF-16 encoded buffer string and returns + the corresponding Unicode object. + + errors (if non-NULL) defines the error handling. It defaults + to "strict". + + If byteorder is non-NULL, the decoder starts decoding using the + given byte order: + + *byteorder == -1: little endian + *byteorder == 0: native order + *byteorder == 1: big endian + + In native mode, the first two bytes of the stream are checked for a + BOM mark. If found, the BOM mark is analysed, the byte order + adjusted and the BOM skipped. In the other modes, no BOM mark + interpretation is done. After completion, *byteorder is set to the + current byte order at the end of input data. + + If byteorder is NULL, the codec starts in native order mode. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16( + const char *string, /* UTF-16 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + int *byteorder /* pointer to byteorder to use + 0=native;-1=LE,1=BE; updated on + exit */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16Stateful( + const char *string, /* UTF-16 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + int *byteorder, /* pointer to byteorder to use + 0=native;-1=LE,1=BE; updated on + exit */ + Py_ssize_t *consumed /* bytes consumed */ + ); + +/* Returns a Python string using the UTF-16 encoding in native byte + order. The string always starts with a BOM mark. */ + +PyAPI_FUNC(PyObject*) PyUnicode_AsUTF16String( + PyObject *unicode /* Unicode object */ + ); + +/* Returns a Python string object holding the UTF-16 encoded value of + the Unicode data. + + If byteorder is not 0, output is written according to the following + byte order: + + byteorder == -1: little endian + byteorder == 0: native byte order (writes a BOM mark) + byteorder == 1: big endian + + If byteorder is 0, the output string will always start with the + Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is + prepended. + + Note that Py_UNICODE data is being interpreted as UTF-16 reduced to + UCS-2. This trick makes it possible to add full UTF-16 capabilities + at a later point without compromising the APIs. + +*/ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + const char *errors, /* error handling */ + int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ + ); +PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF16( + PyObject* unicode, /* Unicode object */ + const char *errors, /* error handling */ + int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ + ); +#endif + +/* --- Unicode-Escape Codecs ---------------------------------------------- */ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeUnicodeEscape( + const char *string, /* Unicode-Escape encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors /* error handling */ + ); + +#ifndef Py_LIMITED_API +/* Helper for PyUnicode_DecodeUnicodeEscape that detects invalid escape + chars. */ +PyAPI_FUNC(PyObject*) _PyUnicode_DecodeUnicodeEscape( + const char *string, /* Unicode-Escape encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + const char **first_invalid_escape /* on return, points to first + invalid escaped char in + string. */ +); +#endif + +PyAPI_FUNC(PyObject*) PyUnicode_AsUnicodeEscapeString( + PyObject *unicode /* Unicode object */ + ); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_EncodeUnicodeEscape( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length /* Number of Py_UNICODE chars to encode */ + ); +#endif + +/* --- Raw-Unicode-Escape Codecs ------------------------------------------ */ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeRawUnicodeEscape( + const char *string, /* Raw-Unicode-Escape encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors /* error handling */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_AsRawUnicodeEscapeString( + PyObject *unicode /* Unicode object */ + ); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_EncodeRawUnicodeEscape( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length /* Number of Py_UNICODE chars to encode */ + ); +#endif + +/* --- Unicode Internal Codec --------------------------------------------- + + Only for internal use in _codecsmodule.c */ + +#ifndef Py_LIMITED_API +PyObject *_PyUnicode_DecodeUnicodeInternal( + const char *string, + Py_ssize_t length, + const char *errors + ); +#endif + +/* --- Latin-1 Codecs ----------------------------------------------------- + + Note: Latin-1 corresponds to the first 256 Unicode ordinals. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeLatin1( + const char *string, /* Latin-1 encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors /* error handling */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_AsLatin1String( + PyObject *unicode /* Unicode object */ + ); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) _PyUnicode_AsLatin1String( + PyObject* unicode, + const char* errors); + +PyAPI_FUNC(PyObject*) PyUnicode_EncodeLatin1( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ + const char *errors /* error handling */ + ); +#endif + +/* --- ASCII Codecs ------------------------------------------------------- + + Only 7-bit ASCII data is excepted. All other codes generate errors. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeASCII( + const char *string, /* ASCII encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors /* error handling */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_AsASCIIString( + PyObject *unicode /* Unicode object */ + ); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) _PyUnicode_AsASCIIString( + PyObject* unicode, + const char* errors); + +PyAPI_FUNC(PyObject*) PyUnicode_EncodeASCII( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ + const char *errors /* error handling */ + ); +#endif + +/* --- Character Map Codecs ----------------------------------------------- + + This codec uses mappings to encode and decode characters. + + Decoding mappings must map byte ordinals (integers in the range from 0 to + 255) to Unicode strings, integers (which are then interpreted as Unicode + ordinals) or None. Unmapped data bytes (ones which cause a LookupError) + as well as mapped to None, 0xFFFE or '\ufffe' are treated as "undefined + mapping" and cause an error. + + Encoding mappings must map Unicode ordinal integers to bytes objects, + integers in the range from 0 to 255 or None. Unmapped character + ordinals (ones which cause a LookupError) as well as mapped to + None are treated as "undefined mapping" and cause an error. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeCharmap( + const char *string, /* Encoded string */ + Py_ssize_t length, /* size of string */ + PyObject *mapping, /* decoding mapping */ + const char *errors /* error handling */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_AsCharmapString( + PyObject *unicode, /* Unicode object */ + PyObject *mapping /* encoding mapping */ + ); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_EncodeCharmap( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ + PyObject *mapping, /* encoding mapping */ + const char *errors /* error handling */ + ); +PyAPI_FUNC(PyObject*) _PyUnicode_EncodeCharmap( + PyObject *unicode, /* Unicode object */ + PyObject *mapping, /* encoding mapping */ + const char *errors /* error handling */ + ); +#endif + +/* Translate a Py_UNICODE buffer of the given length by applying a + character mapping table to it and return the resulting Unicode + object. + + The mapping table must map Unicode ordinal integers to Unicode strings, + Unicode ordinal integers or None (causing deletion of the character). + + Mapping tables may be dictionaries or sequences. Unmapped character + ordinals (ones which cause a LookupError) are left untouched and + are copied as-is. + +*/ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyUnicode_TranslateCharmap( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ + PyObject *table, /* Translate table */ + const char *errors /* error handling */ + ); +#endif + +#ifdef MS_WINDOWS + +/* --- MBCS codecs for Windows -------------------------------------------- */ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCS( + const char *string, /* MBCS encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors /* error handling */ + ); + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCSStateful( + const char *string, /* MBCS encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + Py_ssize_t *consumed /* bytes consumed */ + ); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject*) PyUnicode_DecodeCodePageStateful( + int code_page, /* code page number */ + const char *string, /* encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + Py_ssize_t *consumed /* bytes consumed */ + ); +#endif + +PyAPI_FUNC(PyObject*) PyUnicode_AsMBCSString( + PyObject *unicode /* Unicode object */ + ); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_EncodeMBCS( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + const char *errors /* error handling */ + ); +#endif + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject*) PyUnicode_EncodeCodePage( + int code_page, /* code page number */ + PyObject *unicode, /* Unicode object */ + const char *errors /* error handling */ + ); +#endif + +#endif /* MS_WINDOWS */ + +/* --- Decimal Encoder ---------------------------------------------------- */ + +/* Takes a Unicode string holding a decimal value and writes it into + an output buffer using standard ASCII digit codes. + + The output buffer has to provide at least length+1 bytes of storage + area. The output string is 0-terminated. + + The encoder converts whitespace to ' ', decimal characters to their + corresponding ASCII digit and all other Latin-1 characters except + \0 as-is. Characters outside this range (Unicode ordinals 1-256) + are treated as errors. This includes embedded NULL bytes. + + Error handling is defined by the errors argument: + + NULL or "strict": raise a ValueError + "ignore": ignore the wrong characters (these are not copied to the + output buffer) + "replace": replaces illegal characters with '?' + + Returns 0 on success, -1 on failure. + +*/ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) PyUnicode_EncodeDecimal( + Py_UNICODE *s, /* Unicode buffer */ + Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ + char *output, /* Output buffer; must have size >= length */ + const char *errors /* error handling */ + ); +#endif + +/* Transforms code points that have decimal digit property to the + corresponding ASCII digit code points. + + Returns a new Unicode string on success, NULL on failure. +*/ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) PyUnicode_TransformDecimalToASCII( + Py_UNICODE *s, /* Unicode buffer */ + Py_ssize_t length /* Number of Py_UNICODE chars to transform */ + ); +#endif + +/* Similar to PyUnicode_TransformDecimalToASCII(), but takes a PyObject + as argument instead of a raw buffer and length. This function additionally + transforms spaces to ASCII because this is what the callers in longobject, + floatobject, and complexobject did anyways. */ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) _PyUnicode_TransformDecimalAndSpaceToASCII( + PyObject *unicode /* Unicode object */ + ); +#endif + +/* --- Locale encoding --------------------------------------------------- */ + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +/* Decode a string from the current locale encoding. The decoder is strict if + *surrogateescape* is equal to zero, otherwise it uses the 'surrogateescape' + error handler (PEP 383) to escape undecodable bytes. If a byte sequence can + be decoded as a surrogate character and *surrogateescape* is not equal to + zero, the byte sequence is escaped using the 'surrogateescape' error handler + instead of being decoded. *str* must end with a null character but cannot + contain embedded null characters. */ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeLocaleAndSize( + const char *str, + Py_ssize_t len, + const char *errors); + +/* Similar to PyUnicode_DecodeLocaleAndSize(), but compute the string + length using strlen(). */ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeLocale( + const char *str, + const char *errors); + +/* Encode a Unicode object to the current locale encoding. The encoder is + strict is *surrogateescape* is equal to zero, otherwise the + "surrogateescape" error handler is used. Return a bytes object. The string + cannot contain embedded null characters. */ + +PyAPI_FUNC(PyObject*) PyUnicode_EncodeLocale( + PyObject *unicode, + const char *errors + ); +#endif + +/* --- File system encoding ---------------------------------------------- */ + +/* ParseTuple converter: encode str objects to bytes using + PyUnicode_EncodeFSDefault(); bytes objects are output as-is. */ + +PyAPI_FUNC(int) PyUnicode_FSConverter(PyObject*, void*); + +/* ParseTuple converter: decode bytes objects to unicode using + PyUnicode_DecodeFSDefaultAndSize(); str objects are output as-is. */ + +PyAPI_FUNC(int) PyUnicode_FSDecoder(PyObject*, void*); + +/* Decode a null-terminated string using Py_FileSystemDefaultEncoding + and the "surrogateescape" error handler. + + If Py_FileSystemDefaultEncoding is not set, fall back to the locale + encoding. + + Use PyUnicode_DecodeFSDefaultAndSize() if the string length is known. +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeFSDefault( + const char *s /* encoded string */ + ); + +/* Decode a string using Py_FileSystemDefaultEncoding + and the "surrogateescape" error handler. + + If Py_FileSystemDefaultEncoding is not set, fall back to the locale + encoding. +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_DecodeFSDefaultAndSize( + const char *s, /* encoded string */ + Py_ssize_t size /* size */ + ); + +/* Encode a Unicode object to Py_FileSystemDefaultEncoding with the + "surrogateescape" error handler, and return bytes. + + If Py_FileSystemDefaultEncoding is not set, fall back to the locale + encoding. +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_EncodeFSDefault( + PyObject *unicode + ); + +/* --- Methods & Slots ---------------------------------------------------- + + These are capable of handling Unicode objects and strings on input + (we refer to them as strings in the descriptions) and return + Unicode objects or integers as appropriate. */ + +/* Concat two strings giving a new Unicode string. */ + +PyAPI_FUNC(PyObject*) PyUnicode_Concat( + PyObject *left, /* Left string */ + PyObject *right /* Right string */ + ); + +/* Concat two strings and put the result in *pleft + (sets *pleft to NULL on error) */ + +PyAPI_FUNC(void) PyUnicode_Append( + PyObject **pleft, /* Pointer to left string */ + PyObject *right /* Right string */ + ); + +/* Concat two strings, put the result in *pleft and drop the right object + (sets *pleft to NULL on error) */ + +PyAPI_FUNC(void) PyUnicode_AppendAndDel( + PyObject **pleft, /* Pointer to left string */ + PyObject *right /* Right string */ + ); + +/* Split a string giving a list of Unicode strings. + + If sep is NULL, splitting will be done at all whitespace + substrings. Otherwise, splits occur at the given separator. + + At most maxsplit splits will be done. If negative, no limit is set. + + Separators are not included in the resulting list. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_Split( + PyObject *s, /* String to split */ + PyObject *sep, /* String separator */ + Py_ssize_t maxsplit /* Maxsplit count */ + ); + +/* Dito, but split at line breaks. + + CRLF is considered to be one line break. Line breaks are not + included in the resulting list. */ + +PyAPI_FUNC(PyObject*) PyUnicode_Splitlines( + PyObject *s, /* String to split */ + int keepends /* If true, line end markers are included */ + ); + +/* Partition a string using a given separator. */ + +PyAPI_FUNC(PyObject*) PyUnicode_Partition( + PyObject *s, /* String to partition */ + PyObject *sep /* String separator */ + ); + +/* Partition a string using a given separator, searching from the end of the + string. */ + +PyAPI_FUNC(PyObject*) PyUnicode_RPartition( + PyObject *s, /* String to partition */ + PyObject *sep /* String separator */ + ); + +/* Split a string giving a list of Unicode strings. + + If sep is NULL, splitting will be done at all whitespace + substrings. Otherwise, splits occur at the given separator. + + At most maxsplit splits will be done. But unlike PyUnicode_Split + PyUnicode_RSplit splits from the end of the string. If negative, + no limit is set. + + Separators are not included in the resulting list. + +*/ + +PyAPI_FUNC(PyObject*) PyUnicode_RSplit( + PyObject *s, /* String to split */ + PyObject *sep, /* String separator */ + Py_ssize_t maxsplit /* Maxsplit count */ + ); + +/* Translate a string by applying a character mapping table to it and + return the resulting Unicode object. + + The mapping table must map Unicode ordinal integers to Unicode strings, + Unicode ordinal integers or None (causing deletion of the character). + + Mapping tables may be dictionaries or sequences. Unmapped character + ordinals (ones which cause a LookupError) are left untouched and + are copied as-is. + +*/ + +PyAPI_FUNC(PyObject *) PyUnicode_Translate( + PyObject *str, /* String */ + PyObject *table, /* Translate table */ + const char *errors /* error handling */ + ); + +/* Join a sequence of strings using the given separator and return + the resulting Unicode string. */ + +PyAPI_FUNC(PyObject*) PyUnicode_Join( + PyObject *separator, /* Separator string */ + PyObject *seq /* Sequence object */ + ); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyUnicode_JoinArray( + PyObject *separator, + PyObject **items, + Py_ssize_t seqlen + ); +#endif /* Py_LIMITED_API */ + +/* Return 1 if substr matches str[start:end] at the given tail end, 0 + otherwise. */ + +PyAPI_FUNC(Py_ssize_t) PyUnicode_Tailmatch( + PyObject *str, /* String */ + PyObject *substr, /* Prefix or Suffix string */ + Py_ssize_t start, /* Start index */ + Py_ssize_t end, /* Stop index */ + int direction /* Tail end: -1 prefix, +1 suffix */ + ); + +/* Return the first position of substr in str[start:end] using the + given search direction or -1 if not found. -2 is returned in case + an error occurred and an exception is set. */ + +PyAPI_FUNC(Py_ssize_t) PyUnicode_Find( + PyObject *str, /* String */ + PyObject *substr, /* Substring to find */ + Py_ssize_t start, /* Start index */ + Py_ssize_t end, /* Stop index */ + int direction /* Find direction: +1 forward, -1 backward */ + ); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +/* Like PyUnicode_Find, but search for single character only. */ +PyAPI_FUNC(Py_ssize_t) PyUnicode_FindChar( + PyObject *str, + Py_UCS4 ch, + Py_ssize_t start, + Py_ssize_t end, + int direction + ); +#endif + +/* Count the number of occurrences of substr in str[start:end]. */ + +PyAPI_FUNC(Py_ssize_t) PyUnicode_Count( + PyObject *str, /* String */ + PyObject *substr, /* Substring to count */ + Py_ssize_t start, /* Start index */ + Py_ssize_t end /* Stop index */ + ); + +/* Replace at most maxcount occurrences of substr in str with replstr + and return the resulting Unicode object. */ + +PyAPI_FUNC(PyObject *) PyUnicode_Replace( + PyObject *str, /* String */ + PyObject *substr, /* Substring to find */ + PyObject *replstr, /* Substring to replace */ + Py_ssize_t maxcount /* Max. number of replacements to apply; + -1 = all */ + ); + +/* Compare two strings and return -1, 0, 1 for less than, equal, + greater than resp. + Raise an exception and return -1 on error. */ + +PyAPI_FUNC(int) PyUnicode_Compare( + PyObject *left, /* Left string */ + PyObject *right /* Right string */ + ); + +#ifndef Py_LIMITED_API +/* Test whether a unicode is equal to ASCII identifier. Return 1 if true, + 0 otherwise. The right argument must be ASCII identifier. + Any error occurs inside will be cleared before return. */ + +PyAPI_FUNC(int) _PyUnicode_EqualToASCIIId( + PyObject *left, /* Left string */ + _Py_Identifier *right /* Right identifier */ + ); +#endif + +/* Compare a Unicode object with C string and return -1, 0, 1 for less than, + equal, and greater than, respectively. It is best to pass only + ASCII-encoded strings, but the function interprets the input string as + ISO-8859-1 if it contains non-ASCII characters. + This function does not raise exceptions. */ + +PyAPI_FUNC(int) PyUnicode_CompareWithASCIIString( + PyObject *left, + const char *right /* ASCII-encoded string */ + ); + +#ifndef Py_LIMITED_API +/* Test whether a unicode is equal to ASCII string. Return 1 if true, + 0 otherwise. The right argument must be ASCII-encoded string. + Any error occurs inside will be cleared before return. */ + +PyAPI_FUNC(int) _PyUnicode_EqualToASCIIString( + PyObject *left, + const char *right /* ASCII-encoded string */ + ); +#endif + +/* Rich compare two strings and return one of the following: + + - NULL in case an exception was raised + - Py_True or Py_False for successful comparisons + - Py_NotImplemented in case the type combination is unknown + + Possible values for op: + + Py_GT, Py_GE, Py_EQ, Py_NE, Py_LT, Py_LE + +*/ + +PyAPI_FUNC(PyObject *) PyUnicode_RichCompare( + PyObject *left, /* Left string */ + PyObject *right, /* Right string */ + int op /* Operation: Py_EQ, Py_NE, Py_GT, etc. */ + ); + +/* Apply an argument tuple or dictionary to a format string and return + the resulting Unicode string. */ + +PyAPI_FUNC(PyObject *) PyUnicode_Format( + PyObject *format, /* Format string */ + PyObject *args /* Argument tuple or dictionary */ + ); + +/* Checks whether element is contained in container and return 1/0 + accordingly. + + element has to coerce to a one element Unicode string. -1 is + returned in case of an error. */ + +PyAPI_FUNC(int) PyUnicode_Contains( + PyObject *container, /* Container string */ + PyObject *element /* Element string */ + ); + +/* Checks whether argument is a valid identifier. */ + +PyAPI_FUNC(int) PyUnicode_IsIdentifier(PyObject *s); + +#ifndef Py_LIMITED_API +/* Externally visible for str.strip(unicode) */ +PyAPI_FUNC(PyObject *) _PyUnicode_XStrip( + PyObject *self, + int striptype, + PyObject *sepobj + ); +#endif + +/* Using explicit passed-in values, insert the thousands grouping + into the string pointed to by buffer. For the argument descriptions, + see Objects/stringlib/localeutil.h */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_ssize_t) _PyUnicode_InsertThousandsGrouping( + PyObject *unicode, + Py_ssize_t index, + Py_ssize_t n_buffer, + void *digits, + Py_ssize_t n_digits, + Py_ssize_t min_width, + const char *grouping, + PyObject *thousands_sep, + Py_UCS4 *maxchar); +#endif +/* === Characters Type APIs =============================================== */ + +/* Helper array used by Py_UNICODE_ISSPACE(). */ + +#ifndef Py_LIMITED_API +PyAPI_DATA(const unsigned char) _Py_ascii_whitespace[]; + +/* These should not be used directly. Use the Py_UNICODE_IS* and + Py_UNICODE_TO* macros instead. + + These APIs are implemented in Objects/unicodectype.c. + +*/ + +PyAPI_FUNC(int) _PyUnicode_IsLowercase( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsUppercase( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsTitlecase( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsXidStart( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsXidContinue( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsWhitespace( + const Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsLinebreak( + const Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(Py_UCS4) _PyUnicode_ToLowercase( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(Py_UCS4) _PyUnicode_ToUppercase( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(Py_UCS4) _PyUnicode_ToTitlecase( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_ToLowerFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_ToTitleFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_ToUpperFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_ToFoldedFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_IsCaseIgnorable( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsCased( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_ToDecimalDigit( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_ToDigit( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(double) _PyUnicode_ToNumeric( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsDecimalDigit( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsDigit( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsNumeric( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsPrintable( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsAlpha( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(size_t) Py_UNICODE_strlen( + const Py_UNICODE *u + ); + +PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcpy( + Py_UNICODE *s1, + const Py_UNICODE *s2); + +PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcat( + Py_UNICODE *s1, const Py_UNICODE *s2); + +PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strncpy( + Py_UNICODE *s1, + const Py_UNICODE *s2, + size_t n); + +PyAPI_FUNC(int) Py_UNICODE_strcmp( + const Py_UNICODE *s1, + const Py_UNICODE *s2 + ); + +PyAPI_FUNC(int) Py_UNICODE_strncmp( + const Py_UNICODE *s1, + const Py_UNICODE *s2, + size_t n + ); + +PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strchr( + const Py_UNICODE *s, + Py_UNICODE c + ); + +PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strrchr( + const Py_UNICODE *s, + Py_UNICODE c + ); + +PyAPI_FUNC(PyObject*) _PyUnicode_FormatLong(PyObject *, int, int, int); + +/* Create a copy of a unicode string ending with a nul character. Return NULL + and raise a MemoryError exception on memory allocation failure, otherwise + return a new allocated buffer (use PyMem_Free() to free the buffer). */ + +PyAPI_FUNC(Py_UNICODE*) PyUnicode_AsUnicodeCopy( + PyObject *unicode + ); +#endif /* Py_LIMITED_API */ + +#if defined(Py_DEBUG) && !defined(Py_LIMITED_API) +PyAPI_FUNC(int) _PyUnicode_CheckConsistency( + PyObject *op, + int check_content); +#elif !defined(NDEBUG) +/* For asserts that call _PyUnicode_CheckConsistency(), which would + * otherwise be a problem when building with asserts but without Py_DEBUG. */ +#define _PyUnicode_CheckConsistency(op, check_content) PyUnicode_Check(op) +#endif + +#ifndef Py_LIMITED_API +/* Return an interned Unicode object for an Identifier; may fail if there is no memory.*/ +PyAPI_FUNC(PyObject*) _PyUnicode_FromId(_Py_Identifier*); +/* Clear all static strings. */ +PyAPI_FUNC(void) _PyUnicode_ClearStaticStrings(void); + +/* Fast equality check when the inputs are known to be exact unicode types + and where the hash values are equal (i.e. a very probable match) */ +PyAPI_FUNC(int) _PyUnicode_EQ(PyObject *, PyObject *); +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_UNICODEOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/include/warnings.h b/qrenderdoc/3rdparty/python/include/warnings.h new file mode 100644 index 000000000..a3f83ff69 --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/warnings.h @@ -0,0 +1,63 @@ +#ifndef Py_WARNINGS_H +#define Py_WARNINGS_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject*) _PyWarnings_Init(void); +#endif + +PyAPI_FUNC(int) PyErr_WarnEx( + PyObject *category, + const char *message, /* UTF-8 encoded string */ + Py_ssize_t stack_level); +PyAPI_FUNC(int) PyErr_WarnFormat( + PyObject *category, + Py_ssize_t stack_level, + const char *format, /* ASCII-encoded string */ + ...); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 +/* Emit a ResourceWarning warning */ +PyAPI_FUNC(int) PyErr_ResourceWarning( + PyObject *source, + Py_ssize_t stack_level, + const char *format, /* ASCII-encoded string */ + ...); +#endif +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) PyErr_WarnExplicitObject( + PyObject *category, + PyObject *message, + PyObject *filename, + int lineno, + PyObject *module, + PyObject *registry); +#endif +PyAPI_FUNC(int) PyErr_WarnExplicit( + PyObject *category, + const char *message, /* UTF-8 encoded string */ + const char *filename, /* decoded from the filesystem encoding */ + int lineno, + const char *module, /* UTF-8 encoded string */ + PyObject *registry); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) +PyErr_WarnExplicitFormat(PyObject *category, + const char *filename, int lineno, + const char *module, PyObject *registry, + const char *format, ...); +#endif + +/* DEPRECATED: Use PyErr_WarnEx() instead. */ +#ifndef Py_LIMITED_API +#define PyErr_Warn(category, msg) PyErr_WarnEx(category, msg, 1) +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_WARNINGS_H */ + diff --git a/qrenderdoc/3rdparty/python/include/weakrefobject.h b/qrenderdoc/3rdparty/python/include/weakrefobject.h new file mode 100644 index 000000000..17051568f --- /dev/null +++ b/qrenderdoc/3rdparty/python/include/weakrefobject.h @@ -0,0 +1,86 @@ +/* Weak references objects for Python. */ + +#ifndef Py_WEAKREFOBJECT_H +#define Py_WEAKREFOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + + +typedef struct _PyWeakReference PyWeakReference; + +/* PyWeakReference is the base struct for the Python ReferenceType, ProxyType, + * and CallableProxyType. + */ +#ifndef Py_LIMITED_API +struct _PyWeakReference { + PyObject_HEAD + + /* The object to which this is a weak reference, or Py_None if none. + * Note that this is a stealth reference: wr_object's refcount is + * not incremented to reflect this pointer. + */ + PyObject *wr_object; + + /* A callable to invoke when wr_object dies, or NULL if none. */ + PyObject *wr_callback; + + /* A cache for wr_object's hash code. As usual for hashes, this is -1 + * if the hash code isn't known yet. + */ + Py_hash_t hash; + + /* If wr_object is weakly referenced, wr_object has a doubly-linked NULL- + * terminated list of weak references to it. These are the list pointers. + * If wr_object goes away, wr_object is set to Py_None, and these pointers + * have no meaning then. + */ + PyWeakReference *wr_prev; + PyWeakReference *wr_next; +}; +#endif + +PyAPI_DATA(PyTypeObject) _PyWeakref_RefType; +PyAPI_DATA(PyTypeObject) _PyWeakref_ProxyType; +PyAPI_DATA(PyTypeObject) _PyWeakref_CallableProxyType; + +#define PyWeakref_CheckRef(op) PyObject_TypeCheck(op, &_PyWeakref_RefType) +#define PyWeakref_CheckRefExact(op) \ + (Py_TYPE(op) == &_PyWeakref_RefType) +#define PyWeakref_CheckProxy(op) \ + ((Py_TYPE(op) == &_PyWeakref_ProxyType) || \ + (Py_TYPE(op) == &_PyWeakref_CallableProxyType)) + +#define PyWeakref_Check(op) \ + (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op)) + + +PyAPI_FUNC(PyObject *) PyWeakref_NewRef(PyObject *ob, + PyObject *callback); +PyAPI_FUNC(PyObject *) PyWeakref_NewProxy(PyObject *ob, + PyObject *callback); +PyAPI_FUNC(PyObject *) PyWeakref_GetObject(PyObject *ref); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_ssize_t) _PyWeakref_GetWeakrefCount(PyWeakReference *head); + +PyAPI_FUNC(void) _PyWeakref_ClearRef(PyWeakReference *self); +#endif + +/* Explanation for the Py_REFCNT() check: when a weakref's target is part + of a long chain of deallocations which triggers the trashcan mechanism, + clearing the weakrefs can be delayed long after the target's refcount + has dropped to zero. In the meantime, code accessing the weakref will + be able to "see" the target object even though it is supposed to be + unreachable. See issue #16602. */ + +#define PyWeakref_GET_OBJECT(ref) \ + (Py_REFCNT(((PyWeakReference *)(ref))->wr_object) > 0 \ + ? ((PyWeakReference *)(ref))->wr_object \ + : Py_None) + + +#ifdef __cplusplus +} +#endif +#endif /* !Py_WEAKREFOBJECT_H */ diff --git a/qrenderdoc/3rdparty/python/python36.zip b/qrenderdoc/3rdparty/python/python36.zip new file mode 100644 index 000000000..a61392381 Binary files /dev/null and b/qrenderdoc/3rdparty/python/python36.zip differ diff --git a/qrenderdoc/3rdparty/python/x64/_ctypes.pyd b/qrenderdoc/3rdparty/python/x64/_ctypes.pyd new file mode 100644 index 000000000..a256aeea5 Binary files /dev/null and b/qrenderdoc/3rdparty/python/x64/_ctypes.pyd differ diff --git a/qrenderdoc/3rdparty/python/x64/python36.def b/qrenderdoc/3rdparty/python/x64/python36.def new file mode 100644 index 000000000..371a691f9 --- /dev/null +++ b/qrenderdoc/3rdparty/python/x64/python36.def @@ -0,0 +1,1450 @@ +LIBRARY PYTHON36 +EXPORTS +PyAST_Compile +PyAST_CompileEx +PyAST_CompileObject +PyAST_FromNode +PyAST_FromNodeObject +PyAST_Validate +PyArena_AddPyObject +PyArena_Free +PyArena_Malloc +PyArena_New +PyArg_Parse +PyArg_ParseTuple +PyArg_ParseTupleAndKeywords +PyArg_UnpackTuple +PyArg_VaParse +PyArg_VaParseTupleAndKeywords +PyArg_ValidateKeywordArguments +PyAsyncGen_Fini +PyAsyncGen_New +PyAsyncGen_Type +PyBaseObject_Type +PyBool_FromLong +PyBool_Type +PyBuffer_FillContiguousStrides +PyBuffer_FillInfo +PyBuffer_FromContiguous +PyBuffer_GetPointer +PyBuffer_IsContiguous +PyBuffer_Release +PyBuffer_ToContiguous +PyByteArrayIter_Type +PyByteArray_AsString +PyByteArray_Concat +PyByteArray_Fini +PyByteArray_FromObject +PyByteArray_FromStringAndSize +PyByteArray_Init +PyByteArray_Resize +PyByteArray_Size +PyByteArray_Type +PyBytesIter_Type +PyBytes_AsString +PyBytes_AsStringAndSize +PyBytes_Concat +PyBytes_ConcatAndDel +PyBytes_DecodeEscape +PyBytes_Fini +PyBytes_FromFormat +PyBytes_FromFormatV +PyBytes_FromObject +PyBytes_FromString +PyBytes_FromStringAndSize +PyBytes_Repr +PyBytes_Size +PyBytes_Type +PyCFunction_Call +PyCFunction_ClearFreeList +PyCFunction_Fini +PyCFunction_GetFlags +PyCFunction_GetFunction +PyCFunction_GetSelf +PyCFunction_New +PyCFunction_NewEx +PyCFunction_Type +PyCallIter_New +PyCallIter_Type +PyCallable_Check +PyCapsule_GetContext +PyCapsule_GetDestructor +PyCapsule_GetName +PyCapsule_GetPointer +PyCapsule_Import +PyCapsule_IsValid +PyCapsule_New +PyCapsule_SetContext +PyCapsule_SetDestructor +PyCapsule_SetName +PyCapsule_SetPointer +PyCapsule_Type +PyCell_Get +PyCell_New +PyCell_Set +PyCell_Type +PyClassMethodDescr_Type +PyClassMethod_New +PyClassMethod_Type +PyCode_Addr2Line +PyCode_New +PyCode_NewEmpty +PyCode_Optimize +PyCode_Type +PyCodec_BackslashReplaceErrors +PyCodec_Decode +PyCodec_Decoder +PyCodec_Encode +PyCodec_Encoder +PyCodec_IgnoreErrors +PyCodec_IncrementalDecoder +PyCodec_IncrementalEncoder +PyCodec_KnownEncoding +PyCodec_LookupError +PyCodec_NameReplaceErrors +PyCodec_Register +PyCodec_RegisterError +PyCodec_ReplaceErrors +PyCodec_StreamReader +PyCodec_StreamWriter +PyCodec_StrictErrors +PyCodec_XMLCharRefReplaceErrors +PyCompile_OpcodeStackEffect +PyComplex_AsCComplex +PyComplex_FromCComplex +PyComplex_FromDoubles +PyComplex_ImagAsDouble +PyComplex_RealAsDouble +PyComplex_Type +PyCoro_New +PyCoro_Type +PyDescr_NewClassMethod +PyDescr_NewGetSet +PyDescr_NewMember +PyDescr_NewMethod +PyDescr_NewWrapper +PyDictItems_Type +PyDictIterItem_Type +PyDictIterKey_Type +PyDictIterValue_Type +PyDictKeys_Type +PyDictProxy_New +PyDictProxy_Type +PyDictValues_Type +PyDict_Clear +PyDict_ClearFreeList +PyDict_Contains +PyDict_Copy +PyDict_DelItem +PyDict_DelItemString +PyDict_Fini +PyDict_GetItem +PyDict_GetItemString +PyDict_GetItemWithError +PyDict_Items +PyDict_Keys +PyDict_Merge +PyDict_MergeFromSeq2 +PyDict_New +PyDict_Next +PyDict_SetDefault +PyDict_SetItem +PyDict_SetItemString +PyDict_Size +PyDict_Type +PyDict_Update +PyDict_Values +PyEllipsis_Type +PyEnum_Type +PyErr_BadArgument +PyErr_BadInternalCall +PyErr_CheckSignals +PyErr_Clear +PyErr_Display +PyErr_ExceptionMatches +PyErr_Fetch +PyErr_Format +PyErr_FormatV +PyErr_GetExcInfo +PyErr_GivenExceptionMatches +PyErr_NewException +PyErr_NewExceptionWithDoc +PyErr_NoMemory +PyErr_NormalizeException +PyErr_Occurred +PyErr_Print +PyErr_PrintEx +PyErr_ProgramText +PyErr_ProgramTextObject +PyErr_ResourceWarning +PyErr_Restore +PyErr_SetExcFromWindowsErr +PyErr_SetExcFromWindowsErrWithFilename +PyErr_SetExcFromWindowsErrWithFilenameObject +PyErr_SetExcFromWindowsErrWithFilenameObjects +PyErr_SetExcFromWindowsErrWithUnicodeFilename +PyErr_SetExcInfo +PyErr_SetFromErrno +PyErr_SetFromErrnoWithFilename +PyErr_SetFromErrnoWithFilenameObject +PyErr_SetFromErrnoWithFilenameObjects +PyErr_SetFromErrnoWithUnicodeFilename +PyErr_SetFromWindowsErr +PyErr_SetFromWindowsErrWithFilename +PyErr_SetFromWindowsErrWithUnicodeFilename +PyErr_SetImportError +PyErr_SetImportErrorSubclass +PyErr_SetInterrupt +PyErr_SetNone +PyErr_SetObject +PyErr_SetString +PyErr_SyntaxLocation +PyErr_SyntaxLocationEx +PyErr_SyntaxLocationObject +PyErr_Warn +PyErr_WarnEx +PyErr_WarnExplicit +PyErr_WarnExplicitFormat +PyErr_WarnExplicitObject +PyErr_WarnFormat +PyErr_WriteUnraisable +PyEval_AcquireLock +PyEval_AcquireThread +PyEval_CallFunction +PyEval_CallMethod +PyEval_CallObjectWithKeywords +PyEval_EvalCode +PyEval_EvalCodeEx +PyEval_EvalFrame +PyEval_EvalFrameEx +PyEval_GetBuiltins +PyEval_GetCallStats +PyEval_GetFrame +PyEval_GetFuncDesc +PyEval_GetFuncName +PyEval_GetGlobals +PyEval_GetLocals +PyEval_InitThreads +PyEval_MergeCompilerFlags +PyEval_ReInitThreads +PyEval_ReleaseLock +PyEval_ReleaseThread +PyEval_RestoreThread +PyEval_SaveThread +PyEval_SetProfile +PyEval_SetTrace +PyEval_ThreadsInitialized +PyExc_ArithmeticError +PyExc_AssertionError +PyExc_AttributeError +PyExc_BaseException +PyExc_BlockingIOError +PyExc_BrokenPipeError +PyExc_BufferError +PyExc_BytesWarning +PyExc_ChildProcessError +PyExc_ConnectionAbortedError +PyExc_ConnectionError +PyExc_ConnectionRefusedError +PyExc_ConnectionResetError +PyExc_DeprecationWarning +PyExc_EOFError +PyExc_EnvironmentError +PyExc_Exception +PyExc_FileExistsError +PyExc_FileNotFoundError +PyExc_FloatingPointError +PyExc_FutureWarning +PyExc_GeneratorExit +PyExc_IOError +PyExc_ImportError +PyExc_ImportWarning +PyExc_IndentationError +PyExc_IndexError +PyExc_InterruptedError +PyExc_IsADirectoryError +PyExc_KeyError +PyExc_KeyboardInterrupt +PyExc_LookupError +PyExc_MemoryError +PyExc_ModuleNotFoundError +PyExc_NameError +PyExc_NotADirectoryError +PyExc_NotImplementedError +PyExc_OSError +PyExc_OverflowError +PyExc_PendingDeprecationWarning +PyExc_PermissionError +PyExc_ProcessLookupError +PyExc_RecursionError +PyExc_ReferenceError +PyExc_ResourceWarning +PyExc_RuntimeError +PyExc_RuntimeWarning +PyExc_StopAsyncIteration +PyExc_StopIteration +PyExc_SyntaxError +PyExc_SyntaxWarning +PyExc_SystemError +PyExc_SystemExit +PyExc_TabError +PyExc_TimeoutError +PyExc_TypeError +PyExc_UnboundLocalError +PyExc_UnicodeDecodeError +PyExc_UnicodeEncodeError +PyExc_UnicodeError +PyExc_UnicodeTranslateError +PyExc_UnicodeWarning +PyExc_UserWarning +PyExc_ValueError +PyExc_Warning +PyExc_WindowsError +PyExc_ZeroDivisionError +PyException_GetCause +PyException_GetContext +PyException_GetTraceback +PyException_SetCause +PyException_SetContext +PyException_SetTraceback +PyFile_FromFd +PyFile_GetLine +PyFile_NewStdPrinter +PyFile_WriteObject +PyFile_WriteString +PyFilter_Type +PyFloat_AsDouble +PyFloat_ClearFreeList +PyFloat_Fini +PyFloat_FromDouble +PyFloat_FromString +PyFloat_GetInfo +PyFloat_GetMax +PyFloat_GetMin +PyFloat_Type +PyFrame_BlockPop +PyFrame_BlockSetup +PyFrame_ClearFreeList +PyFrame_FastToLocals +PyFrame_FastToLocalsWithError +PyFrame_Fini +PyFrame_GetLineNumber +PyFrame_LocalsToFast +PyFrame_New +PyFrame_Type +PyFrozenSet_New +PyFrozenSet_Type +PyFunction_GetAnnotations +PyFunction_GetClosure +PyFunction_GetCode +PyFunction_GetDefaults +PyFunction_GetGlobals +PyFunction_GetKwDefaults +PyFunction_GetModule +PyFunction_New +PyFunction_NewWithQualName +PyFunction_SetAnnotations +PyFunction_SetClosure +PyFunction_SetDefaults +PyFunction_SetKwDefaults +PyFunction_Type +PyFuture_FromAST +PyFuture_FromASTObject +PyGC_Collect +PyGILState_Check +PyGILState_Ensure +PyGILState_GetThisThreadState +PyGILState_Release +PyGen_NeedsFinalizing +PyGen_New +PyGen_NewWithQualName +PyGen_Type +PyGetSetDescr_Type +PyHash_GetFuncDef +PyImport_AddModule +PyImport_AddModuleObject +PyImport_AppendInittab +PyImport_Cleanup +PyImport_ExecCodeModule +PyImport_ExecCodeModuleEx +PyImport_ExecCodeModuleObject +PyImport_ExecCodeModuleWithPathnames +PyImport_ExtendInittab +PyImport_FrozenModules +PyImport_GetImporter +PyImport_GetMagicNumber +PyImport_GetMagicTag +PyImport_GetModuleDict +PyImport_Import +PyImport_ImportFrozenModule +PyImport_ImportFrozenModuleObject +PyImport_ImportModule +PyImport_ImportModuleLevel +PyImport_ImportModuleLevelObject +PyImport_ImportModuleNoBlock +PyImport_Inittab +PyImport_ReloadModule +PyInstanceMethod_Function +PyInstanceMethod_New +PyInstanceMethod_Type +PyInterpreterState_Clear +PyInterpreterState_Delete +PyInterpreterState_Head +PyInterpreterState_New +PyInterpreterState_Next +PyInterpreterState_ThreadHead +PyIter_Next +PyListIter_Type +PyListRevIter_Type +PyList_Append +PyList_AsTuple +PyList_ClearFreeList +PyList_Fini +PyList_GetItem +PyList_GetSlice +PyList_Insert +PyList_New +PyList_Reverse +PyList_SetItem +PyList_SetSlice +PyList_Size +PyList_Sort +PyList_Type +PyLongRangeIter_Type +PyLong_AsDouble +PyLong_AsLong +PyLong_AsLongAndOverflow +PyLong_AsLongLong +PyLong_AsLongLongAndOverflow +PyLong_AsSize_t +PyLong_AsSsize_t +PyLong_AsUnsignedLong +PyLong_AsUnsignedLongLong +PyLong_AsUnsignedLongLongMask +PyLong_AsUnsignedLongMask +PyLong_AsVoidPtr +PyLong_FromDouble +PyLong_FromLong +PyLong_FromLongLong +PyLong_FromSize_t +PyLong_FromSsize_t +PyLong_FromString +PyLong_FromUnicode +PyLong_FromUnicodeObject +PyLong_FromUnsignedLong +PyLong_FromUnsignedLongLong +PyLong_FromVoidPtr +PyLong_GetInfo +PyLong_Type +PyMap_Type +PyMapping_Check +PyMapping_GetItemString +PyMapping_HasKey +PyMapping_HasKeyString +PyMapping_Items +PyMapping_Keys +PyMapping_Length +PyMapping_SetItemString +PyMapping_Size +PyMapping_Values +PyMarshal_ReadLastObjectFromFile +PyMarshal_ReadLongFromFile +PyMarshal_ReadObjectFromFile +PyMarshal_ReadObjectFromString +PyMarshal_ReadShortFromFile +PyMarshal_WriteLongToFile +PyMarshal_WriteObjectToFile +PyMarshal_WriteObjectToString +PyMem_Calloc +PyMem_Free +PyMem_GetAllocator +PyMem_Malloc +PyMem_RawCalloc +PyMem_RawFree +PyMem_RawMalloc +PyMem_RawRealloc +PyMem_Realloc +PyMem_SetAllocator +PyMem_SetupDebugHooks +PyMemberDescr_Type +PyMember_GetOne +PyMember_SetOne +PyMemoryView_FromBuffer +PyMemoryView_FromMemory +PyMemoryView_FromObject +PyMemoryView_GetContiguous +PyMemoryView_Type +PyMethodDescr_Type +PyMethod_ClearFreeList +PyMethod_Fini +PyMethod_Function +PyMethod_New +PyMethod_Self +PyMethod_Type +PyModuleDef_Init +PyModuleDef_Type +PyModule_AddFunctions +PyModule_AddIntConstant +PyModule_AddObject +PyModule_AddStringConstant +PyModule_Create2 +PyModule_ExecDef +PyModule_FromDefAndSpec2 +PyModule_GetDef +PyModule_GetDict +PyModule_GetFilename +PyModule_GetFilenameObject +PyModule_GetName +PyModule_GetNameObject +PyModule_GetState +PyModule_New +PyModule_NewObject +PyModule_SetDocString +PyModule_Type +PyNode_AddChild +PyNode_Compile +PyNode_Free +PyNode_ListTree +PyNode_New +PyNumber_Absolute +PyNumber_Add +PyNumber_And +PyNumber_AsSsize_t +PyNumber_Check +PyNumber_Divmod +PyNumber_Float +PyNumber_FloorDivide +PyNumber_InPlaceAdd +PyNumber_InPlaceAnd +PyNumber_InPlaceFloorDivide +PyNumber_InPlaceLshift +PyNumber_InPlaceMatrixMultiply +PyNumber_InPlaceMultiply +PyNumber_InPlaceOr +PyNumber_InPlacePower +PyNumber_InPlaceRemainder +PyNumber_InPlaceRshift +PyNumber_InPlaceSubtract +PyNumber_InPlaceTrueDivide +PyNumber_InPlaceXor +PyNumber_Index +PyNumber_Invert +PyNumber_Long +PyNumber_Lshift +PyNumber_MatrixMultiply +PyNumber_Multiply +PyNumber_Negative +PyNumber_Or +PyNumber_Positive +PyNumber_Power +PyNumber_Remainder +PyNumber_Rshift +PyNumber_Subtract +PyNumber_ToBase +PyNumber_TrueDivide +PyNumber_Xor +PyODictItems_Type +PyODictIter_Type +PyODictKeys_Type +PyODictValues_Type +PyODict_DelItem +PyODict_New +PyODict_SetItem +PyODict_Type +PyOS_AfterFork +PyOS_FSPath +PyOS_FiniInterrupts +PyOS_InitInterrupts +PyOS_InputHook +PyOS_InterruptOccurred +PyOS_Readline +PyOS_ReadlineFunctionPointer +PyOS_double_to_string +PyOS_getsig +PyOS_mystricmp +PyOS_mystrnicmp +PyOS_setsig +PyOS_snprintf +PyOS_string_to_double +PyOS_strtol +PyOS_strtoul +PyOS_vsnprintf +PyObject_ASCII +PyObject_AsCharBuffer +PyObject_AsFileDescriptor +PyObject_AsReadBuffer +PyObject_AsWriteBuffer +PyObject_Bytes +PyObject_Call +PyObject_CallFinalizer +PyObject_CallFinalizerFromDealloc +PyObject_CallFunction +PyObject_CallFunctionObjArgs +PyObject_CallMethod +PyObject_CallMethodObjArgs +PyObject_CallObject +PyObject_Calloc +PyObject_CheckReadBuffer +PyObject_ClearWeakRefs +PyObject_CopyData +PyObject_DelItem +PyObject_DelItemString +PyObject_Dir +PyObject_Format +PyObject_Free +PyObject_GC_Del +PyObject_GC_Track +PyObject_GC_UnTrack +PyObject_GenericGetAttr +PyObject_GenericGetDict +PyObject_GenericSetAttr +PyObject_GenericSetDict +PyObject_GetArenaAllocator +PyObject_GetAttr +PyObject_GetAttrString +PyObject_GetBuffer +PyObject_GetItem +PyObject_GetIter +PyObject_HasAttr +PyObject_HasAttrString +PyObject_Hash +PyObject_HashNotImplemented +PyObject_Init +PyObject_InitVar +PyObject_IsInstance +PyObject_IsSubclass +PyObject_IsTrue +PyObject_Length +PyObject_LengthHint +PyObject_Malloc +PyObject_Not +PyObject_Print +PyObject_Realloc +PyObject_Repr +PyObject_RichCompare +PyObject_RichCompareBool +PyObject_SelfIter +PyObject_SetArenaAllocator +PyObject_SetAttr +PyObject_SetAttrString +PyObject_SetItem +PyObject_Size +PyObject_Str +PyObject_Type +PyParser_ASTFromFile +PyParser_ASTFromFileObject +PyParser_ASTFromString +PyParser_ASTFromStringObject +PyParser_ClearError +PyParser_ParseFile +PyParser_ParseFileFlags +PyParser_ParseFileFlagsEx +PyParser_ParseFileObject +PyParser_ParseString +PyParser_ParseStringFlags +PyParser_ParseStringFlagsFilename +PyParser_ParseStringFlagsFilenameEx +PyParser_ParseStringObject +PyParser_SetError +PyParser_SimpleParseFile +PyParser_SimpleParseFileFlags +PyParser_SimpleParseString +PyParser_SimpleParseStringFlags +PyParser_SimpleParseStringFlagsFilename +PyProperty_Type +PyRangeIter_Type +PyRange_Type +PyReversed_Type +PyRun_AnyFile +PyRun_AnyFileEx +PyRun_AnyFileExFlags +PyRun_AnyFileFlags +PyRun_File +PyRun_FileEx +PyRun_FileExFlags +PyRun_FileFlags +PyRun_InteractiveLoop +PyRun_InteractiveLoopFlags +PyRun_InteractiveOne +PyRun_InteractiveOneFlags +PyRun_InteractiveOneObject +PyRun_SimpleFile +PyRun_SimpleFileEx +PyRun_SimpleFileExFlags +PyRun_SimpleString +PyRun_SimpleStringFlags +PyRun_String +PyRun_StringFlags +PySTEntry_Type +PyST_GetScope +PySeqIter_New +PySeqIter_Type +PySequence_Check +PySequence_Concat +PySequence_Contains +PySequence_Count +PySequence_DelItem +PySequence_DelSlice +PySequence_Fast +PySequence_GetItem +PySequence_GetSlice +PySequence_In +PySequence_InPlaceConcat +PySequence_InPlaceRepeat +PySequence_Index +PySequence_Length +PySequence_List +PySequence_Repeat +PySequence_SetItem +PySequence_SetSlice +PySequence_Size +PySequence_Tuple +PySetIter_Type +PySet_Add +PySet_Clear +PySet_ClearFreeList +PySet_Contains +PySet_Discard +PySet_Fini +PySet_New +PySet_Pop +PySet_Size +PySet_Type +PySlice_AdjustIndices +PySlice_Fini +PySlice_GetIndices +PySlice_GetIndicesEx +PySlice_New +PySlice_Type +PySlice_Unpack +PyState_AddModule +PyState_FindModule +PyState_RemoveModule +PyStaticMethod_New +PyStaticMethod_Type +PyStdPrinter_Type +PyStructSequence_GetItem +PyStructSequence_InitType +PyStructSequence_InitType2 +PyStructSequence_New +PyStructSequence_NewType +PyStructSequence_SetItem +PySuper_Type +PySymtable_Build +PySymtable_BuildObject +PySymtable_Free +PySymtable_Lookup +PySys_AddWarnOption +PySys_AddWarnOptionUnicode +PySys_AddXOption +PySys_FormatStderr +PySys_FormatStdout +PySys_GetObject +PySys_GetXOptions +PySys_HasWarnOptions +PySys_ResetWarnOptions +PySys_SetArgv +PySys_SetArgvEx +PySys_SetObject +PySys_SetPath +PySys_WriteStderr +PySys_WriteStdout +PyThreadState_Clear +PyThreadState_Delete +PyThreadState_DeleteCurrent +PyThreadState_Get +PyThreadState_GetDict +PyThreadState_New +PyThreadState_Next +PyThreadState_SetAsyncExc +PyThreadState_Swap +PyThread_GetInfo +PyThread_ReInitTLS +PyThread_acquire_lock +PyThread_acquire_lock_timed +PyThread_allocate_lock +PyThread_create_key +PyThread_delete_key +PyThread_delete_key_value +PyThread_exit_thread +PyThread_free_lock +PyThread_get_key_value +PyThread_get_stacksize +PyThread_get_thread_ident +PyThread_init_thread +PyThread_release_lock +PyThread_set_key_value +PyThread_set_stacksize +PyThread_start_new_thread +PyToken_OneChar +PyToken_ThreeChars +PyToken_TwoChars +PyTraceBack_Here +PyTraceBack_Print +PyTraceBack_Type +PyTupleIter_Type +PyTuple_ClearFreeList +PyTuple_Fini +PyTuple_GetItem +PyTuple_GetSlice +PyTuple_New +PyTuple_Pack +PyTuple_SetItem +PyTuple_Size +PyTuple_Type +PyType_ClearCache +PyType_FromSpec +PyType_FromSpecWithBases +PyType_GenericAlloc +PyType_GenericNew +PyType_GetFlags +PyType_GetSlot +PyType_IsSubtype +PyType_Modified +PyType_Ready +PyType_Type +PyUnicodeDecodeError_Create +PyUnicodeDecodeError_GetEncoding +PyUnicodeDecodeError_GetEnd +PyUnicodeDecodeError_GetObject +PyUnicodeDecodeError_GetReason +PyUnicodeDecodeError_GetStart +PyUnicodeDecodeError_SetEnd +PyUnicodeDecodeError_SetReason +PyUnicodeDecodeError_SetStart +PyUnicodeEncodeError_Create +PyUnicodeEncodeError_GetEncoding +PyUnicodeEncodeError_GetEnd +PyUnicodeEncodeError_GetObject +PyUnicodeEncodeError_GetReason +PyUnicodeEncodeError_GetStart +PyUnicodeEncodeError_SetEnd +PyUnicodeEncodeError_SetReason +PyUnicodeEncodeError_SetStart +PyUnicodeIter_Type +PyUnicodeTranslateError_Create +PyUnicodeTranslateError_GetEnd +PyUnicodeTranslateError_GetObject +PyUnicodeTranslateError_GetReason +PyUnicodeTranslateError_GetStart +PyUnicodeTranslateError_SetEnd +PyUnicodeTranslateError_SetReason +PyUnicodeTranslateError_SetStart +PyUnicode_Append +PyUnicode_AppendAndDel +PyUnicode_AsASCIIString +PyUnicode_AsCharmapString +PyUnicode_AsDecodedObject +PyUnicode_AsDecodedUnicode +PyUnicode_AsEncodedObject +PyUnicode_AsEncodedString +PyUnicode_AsEncodedUnicode +PyUnicode_AsLatin1String +PyUnicode_AsMBCSString +PyUnicode_AsRawUnicodeEscapeString +PyUnicode_AsUCS4 +PyUnicode_AsUCS4Copy +PyUnicode_AsUTF16String +PyUnicode_AsUTF32String +PyUnicode_AsUTF8 +PyUnicode_AsUTF8AndSize +PyUnicode_AsUTF8String +PyUnicode_AsUnicode +PyUnicode_AsUnicodeAndSize +PyUnicode_AsUnicodeCopy +PyUnicode_AsUnicodeEscapeString +PyUnicode_AsWideChar +PyUnicode_AsWideCharString +PyUnicode_BuildEncodingMap +PyUnicode_ClearFreeList +PyUnicode_Compare +PyUnicode_CompareWithASCIIString +PyUnicode_Concat +PyUnicode_Contains +PyUnicode_CopyCharacters +PyUnicode_Count +PyUnicode_Decode +PyUnicode_DecodeASCII +PyUnicode_DecodeCharmap +PyUnicode_DecodeCodePageStateful +PyUnicode_DecodeFSDefault +PyUnicode_DecodeFSDefaultAndSize +PyUnicode_DecodeLatin1 +PyUnicode_DecodeLocale +PyUnicode_DecodeLocaleAndSize +PyUnicode_DecodeMBCS +PyUnicode_DecodeMBCSStateful +PyUnicode_DecodeRawUnicodeEscape +PyUnicode_DecodeUTF16 +PyUnicode_DecodeUTF16Stateful +PyUnicode_DecodeUTF32 +PyUnicode_DecodeUTF32Stateful +PyUnicode_DecodeUTF7 +PyUnicode_DecodeUTF7Stateful +PyUnicode_DecodeUTF8 +PyUnicode_DecodeUTF8Stateful +PyUnicode_DecodeUnicodeEscape +PyUnicode_Encode +PyUnicode_EncodeASCII +PyUnicode_EncodeCharmap +PyUnicode_EncodeCodePage +PyUnicode_EncodeDecimal +PyUnicode_EncodeFSDefault +PyUnicode_EncodeLatin1 +PyUnicode_EncodeLocale +PyUnicode_EncodeMBCS +PyUnicode_EncodeRawUnicodeEscape +PyUnicode_EncodeUTF16 +PyUnicode_EncodeUTF32 +PyUnicode_EncodeUTF7 +PyUnicode_EncodeUTF8 +PyUnicode_EncodeUnicodeEscape +PyUnicode_FSConverter +PyUnicode_FSDecoder +PyUnicode_Fill +PyUnicode_Find +PyUnicode_FindChar +PyUnicode_Format +PyUnicode_FromEncodedObject +PyUnicode_FromFormat +PyUnicode_FromFormatV +PyUnicode_FromKindAndData +PyUnicode_FromObject +PyUnicode_FromOrdinal +PyUnicode_FromString +PyUnicode_FromStringAndSize +PyUnicode_FromUnicode +PyUnicode_FromWideChar +PyUnicode_GetDefaultEncoding +PyUnicode_GetLength +PyUnicode_GetMax +PyUnicode_GetSize +PyUnicode_InternFromString +PyUnicode_InternImmortal +PyUnicode_InternInPlace +PyUnicode_IsIdentifier +PyUnicode_Join +PyUnicode_New +PyUnicode_Partition +PyUnicode_RPartition +PyUnicode_RSplit +PyUnicode_ReadChar +PyUnicode_Replace +PyUnicode_Resize +PyUnicode_RichCompare +PyUnicode_Split +PyUnicode_Splitlines +PyUnicode_Substring +PyUnicode_Tailmatch +PyUnicode_TransformDecimalToASCII +PyUnicode_Translate +PyUnicode_TranslateCharmap +PyUnicode_Type +PyUnicode_WriteChar +PyWeakref_GetObject +PyWeakref_NewProxy +PyWeakref_NewRef +PyWrapperDescr_Type +PyWrapper_New +PyZip_Type +Py_AddPendingCall +Py_AtExit +Py_BuildValue +Py_BytesWarningFlag +Py_CompileString +Py_CompileStringExFlags +Py_CompileStringFlags +Py_CompileStringObject +Py_DebugFlag +Py_DecRef +Py_DecodeLocale +Py_DontWriteBytecodeFlag +Py_EncodeLocale +Py_EndInterpreter +Py_Exit +Py_FatalError +Py_FdIsInteractive +Py_FileSystemDefaultEncodeErrors +Py_FileSystemDefaultEncoding +Py_Finalize +Py_FinalizeEx +Py_FrozenFlag +Py_GetBuildInfo +Py_GetCompiler +Py_GetCopyright +Py_GetExecPrefix +Py_GetPath +Py_GetPlatform +Py_GetPrefix +Py_GetProgramFullPath +Py_GetProgramName +Py_GetPythonHome +Py_GetRecursionLimit +Py_GetVersion +Py_HasFileSystemDefaultEncoding +Py_HashRandomizationFlag +Py_IgnoreEnvironmentFlag +Py_IncRef +Py_Initialize +Py_InitializeEx +Py_InspectFlag +Py_InteractiveFlag +Py_IsInitialized +Py_IsolatedFlag +Py_LegacyWindowsStdioFlag +Py_Main +Py_MakePendingCalls +Py_NewInterpreter +Py_NoSiteFlag +Py_NoUserSiteDirectory +Py_OptimizeFlag +Py_QuietFlag +Py_ReprEnter +Py_ReprLeave +Py_SetPath +Py_SetProgramName +Py_SetPythonHome +Py_SetRecursionLimit +Py_SetStandardStreamEncoding +Py_SymtableString +Py_SymtableStringObject +Py_UNICODE_strcat +Py_UNICODE_strchr +Py_UNICODE_strcmp +Py_UNICODE_strcpy +Py_UNICODE_strlen +Py_UNICODE_strncmp +Py_UNICODE_strncpy +Py_UNICODE_strrchr +Py_UnbufferedStdioFlag +Py_UniversalNewlineFgets +Py_UseClassExceptionsFlag +Py_VaBuildValue +Py_VerboseFlag +Py_hexdigits +_PyAIterWrapper_Type +_PyAccu_Accumulate +_PyAccu_Destroy +_PyAccu_Finish +_PyAccu_FinishAsList +_PyAccu_Init +_PyArg_NoKeywords +_PyArg_NoPositional +_PyArg_ParseStack +_PyArg_ParseStack_SizeT +_PyArg_ParseTupleAndKeywordsFast +_PyArg_ParseTupleAndKeywordsFast_SizeT +_PyArg_ParseTupleAndKeywords_SizeT +_PyArg_ParseTuple_SizeT +_PyArg_Parse_SizeT +_PyArg_VaParseTupleAndKeywordsFast +_PyArg_VaParseTupleAndKeywordsFast_SizeT +_PyArg_VaParseTupleAndKeywords_SizeT +_PyArg_VaParse_SizeT +_PyAsyncGenASend_Type +_PyAsyncGenAThrow_Type +_PyAsyncGenWrappedValue_Type +_PyBuiltin_Init +_PyByteArray_empty_string +_PyBytesWriter_Alloc +_PyBytesWriter_Dealloc +_PyBytesWriter_Finish +_PyBytesWriter_Init +_PyBytesWriter_Prepare +_PyBytesWriter_Resize +_PyBytesWriter_WriteBytes +_PyBytes_DecodeEscape +_PyBytes_FormatEx +_PyBytes_FromHex +_PyBytes_Join +_PyBytes_Resize +_PyCFunction_DebugMallocStats +_PyCFunction_FastCallDict +_PyCFunction_FastCallKeywords +_PyCode_CheckLineNumber +_PyCode_ConstantKey +_PyCode_GetExtra +_PyCode_SetExtra +_PyCodecInfo_GetIncrementalDecoder +_PyCodecInfo_GetIncrementalEncoder +_PyCodec_DecodeText +_PyCodec_EncodeText +_PyCodec_Forget +_PyCodec_Lookup +_PyCodec_LookupTextEncoding +_PyComplex_FormatAdvancedWriter +_PyCoroWrapper_Type +_PyDebugAllocatorStats +_PyDictView_Intersect +_PyDict_Contains +_PyDict_DebugMallocStats +_PyDict_DelItemId +_PyDict_DelItemIf +_PyDict_DelItem_KnownHash +_PyDict_GetItemId +_PyDict_GetItemIdWithError +_PyDict_GetItem_KnownHash +_PyDict_HasOnlyStringKeys +_PyDict_MaybeUntrack +_PyDict_MergeEx +_PyDict_NewPresized +_PyDict_Next +_PyDict_Pop +_PyDict_SetItemId +_PyDict_SetItem_KnownHash +_PyErr_BadInternalCall +_PyErr_ChainExceptions +_PyErr_FormatFromCause +_PyErr_SetKeyError +_PyErr_TrySetFromCause +_PyEval_CallTracing +_PyEval_EvalFrameDefault +_PyEval_FiniThreads +_PyEval_GetAsyncGenFinalizer +_PyEval_GetAsyncGenFirstiter +_PyEval_GetCoroutineWrapper +_PyEval_GetSwitchInterval +_PyEval_RequestCodeExtraIndex +_PyEval_SetAsyncGenFinalizer +_PyEval_SetAsyncGenFirstiter +_PyEval_SetCoroutineWrapper +_PyEval_SetSwitchInterval +_PyEval_SignalAsyncExc +_PyEval_SignalReceived +_PyEval_SliceIndex +_PyEval_SliceIndexNotNone +_PyExc_Fini +_PyExc_Init +_PyFloat_DebugMallocStats +_PyFloat_FormatAdvancedWriter +_PyFloat_Init +_PyFloat_Pack2 +_PyFloat_Pack4 +_PyFloat_Pack8 +_PyFloat_Unpack2 +_PyFloat_Unpack4 +_PyFloat_Unpack8 +_PyFrame_DebugMallocStats +_PyFrame_Init +_PyFunction_FastCallDict +_PyFunction_FastCallKeywords +_PyGC_CollectIfEnabled +_PyGC_CollectNoFail +_PyGC_DumpShutdownStats +_PyGC_Fini +_PyGILState_GetInterpreterStateUnsafe +_PyGILState_Reinit +_PyGILState_check_enabled +_PyGen_FetchStopIterationValue +_PyGen_Finalize +_PyGen_Send +_PyGen_SetStopIterationValue +_PyImportHooks_Init +_PyImportZip_Init +_PyImport_AcquireLock +_PyImport_FindBuiltin +_PyImport_FindExtensionObject +_PyImport_Fini +_PyImport_FixupBuiltin +_PyImport_FixupExtensionObject +_PyImport_Init +_PyImport_ReInitLock +_PyImport_ReleaseLock +_PyList_DebugMallocStats +_PyList_Extend +_PyLong_AsByteArray +_PyLong_AsInt +_PyLong_AsTime_t +_PyLong_Copy +_PyLong_DigitValue +_PyLong_DivmodNear +_PyLong_Format +_PyLong_FormatAdvancedWriter +_PyLong_FormatBytesWriter +_PyLong_FormatWriter +_PyLong_Frexp +_PyLong_FromByteArray +_PyLong_FromBytes +_PyLong_FromNbInt +_PyLong_FromTime_t +_PyLong_GCD +_PyLong_New +_PyLong_NumBits +_PyLong_Sign +_PyManagedBuffer_Type +_PyMem_PymallocEnabled +_PyMem_RawStrdup +_PyMem_SetupAllocators +_PyMem_Strdup +_PyMethodWrapper_Type +_PyMethod_DebugMallocStats +_PyModule_Clear +_PyModule_ClearDict +_PyNamespace_New +_PyNamespace_Type +_PyNode_SizeOf +_PyNone_Type +_PyNotImplemented_Type +_PyOS_GetOpt +_PyOS_IsMainThread +_PyOS_ReadlineTState +_PyOS_ResetGetOpt +_PyOS_SigintEvent +_PyOS_URandom +_PyOS_URandomNonblock +_PyOS_optarg +_PyOS_opterr +_PyOS_optind +_PyObject_CallFunction_SizeT +_PyObject_CallMethodId +_PyObject_CallMethodIdObjArgs +_PyObject_CallMethodId_SizeT +_PyObject_CallMethod_SizeT +_PyObject_Call_Prepend +_PyObject_DebugMallocStats +_PyObject_DebugTypeStats +_PyObject_Dump +_PyObject_FastCallDict +_PyObject_FastCallKeywords +_PyObject_GC_Calloc +_PyObject_GC_Malloc +_PyObject_GC_New +_PyObject_GC_NewVar +_PyObject_GC_Resize +_PyObject_GenericGetAttrWithDict +_PyObject_GenericSetAttrWithDict +_PyObject_GetAttrId +_PyObject_GetBuiltin +_PyObject_GetDictPtr +_PyObject_HasAttrId +_PyObject_HasLen +_PyObject_IsAbstract +_PyObject_LookupSpecial +_PyObject_New +_PyObject_NewVar +_PyObject_NextNotImplemented +_PyObject_RealIsInstance +_PyObject_RealIsSubclass +_PyObject_SetAttrId +_PyParser_Grammar +_PyParser_TokenNames +_PyRandom_Fini +_PyRandom_Init +_PySequence_BytesToCharpArray +_PySequence_IterSearch +_PySet_Dummy +_PySet_NextEntry +_PySet_Update +_PySlice_FromIndices +_PySlice_GetLongIndices +_PyStack_AsDict +_PyStack_AsTuple +_PyStack_UnpackDict +_PyState_AddModule +_PyState_ClearModules +_PySys_GetObjectId +_PySys_GetSizeOf +_PySys_Init +_PySys_SetObjectId +_PyThreadState_Current +_PyThreadState_DeleteExcept +_PyThreadState_GetFrame +_PyThreadState_Init +_PyThreadState_Prealloc +_PyThreadState_UncheckedGet +_PyThread_CurrentFrames +_PyTime_AsMicroseconds +_PyTime_AsMilliseconds +_PyTime_AsNanosecondsObject +_PyTime_AsSecondsDouble +_PyTime_AsTimeval +_PyTime_AsTimevalTime_t +_PyTime_AsTimeval_noraise +_PyTime_FromMillisecondsObject +_PyTime_FromNanoseconds +_PyTime_FromSeconds +_PyTime_FromSecondsObject +_PyTime_GetMonotonicClock +_PyTime_GetMonotonicClockWithInfo +_PyTime_GetSystemClock +_PyTime_GetSystemClockWithInfo +_PyTime_Init +_PyTime_ObjectToTime_t +_PyTime_ObjectToTimespec +_PyTime_ObjectToTimeval +_PyTime_gmtime +_PyTime_localtime +_PyTraceMalloc_GetTraceback +_PyTraceMalloc_Track +_PyTraceMalloc_Untrack +_PyTraceback_Add +_PyTrash_delete_later +_PyTrash_delete_nesting +_PyTrash_deposit_object +_PyTrash_destroy_chain +_PyTrash_thread_deposit_object +_PyTrash_thread_destroy_chain +_PyTuple_DebugMallocStats +_PyTuple_MaybeUntrack +_PyTuple_Resize +_PyType_CalculateMetaclass +_PyType_Fini +_PyType_GetDocFromInternalDoc +_PyType_GetTextSignatureFromInternalDoc +_PyType_Lookup +_PyType_LookupId +_PyUnicodeTranslateError_Create +_PyUnicodeWriter_Dealloc +_PyUnicodeWriter_Finish +_PyUnicodeWriter_Init +_PyUnicodeWriter_PrepareInternal +_PyUnicodeWriter_PrepareKindInternal +_PyUnicodeWriter_WriteASCIIString +_PyUnicodeWriter_WriteChar +_PyUnicodeWriter_WriteLatin1String +_PyUnicodeWriter_WriteStr +_PyUnicodeWriter_WriteSubstring +_PyUnicode_AsASCIIString +_PyUnicode_AsKind +_PyUnicode_AsLatin1String +_PyUnicode_AsUTF8String +_PyUnicode_AsUnicode +_PyUnicode_AsWideCharString +_PyUnicode_ClearStaticStrings +_PyUnicode_Copy +_PyUnicode_DecodeUnicodeEscape +_PyUnicode_EQ +_PyUnicode_EncodeCharmap +_PyUnicode_EncodeUTF16 +_PyUnicode_EncodeUTF32 +_PyUnicode_EncodeUTF7 +_PyUnicode_EqualToASCIIId +_PyUnicode_EqualToASCIIString +_PyUnicode_FastCopyCharacters +_PyUnicode_FastFill +_PyUnicode_FindMaxChar +_PyUnicode_FormatAdvancedWriter +_PyUnicode_FormatLong +_PyUnicode_FromASCII +_PyUnicode_FromId +_PyUnicode_InsertThousandsGrouping +_PyUnicode_IsAlpha +_PyUnicode_IsCaseIgnorable +_PyUnicode_IsCased +_PyUnicode_IsDecimalDigit +_PyUnicode_IsDigit +_PyUnicode_IsLinebreak +_PyUnicode_IsLowercase +_PyUnicode_IsNumeric +_PyUnicode_IsPrintable +_PyUnicode_IsTitlecase +_PyUnicode_IsUppercase +_PyUnicode_IsWhitespace +_PyUnicode_IsXidContinue +_PyUnicode_IsXidStart +_PyUnicode_JoinArray +_PyUnicode_Ready +_PyUnicode_ToDecimalDigit +_PyUnicode_ToDigit +_PyUnicode_ToFoldedFull +_PyUnicode_ToLowerFull +_PyUnicode_ToLowercase +_PyUnicode_ToNumeric +_PyUnicode_ToTitleFull +_PyUnicode_ToTitlecase +_PyUnicode_ToUpperFull +_PyUnicode_ToUppercase +_PyUnicode_TransformDecimalAndSpaceToASCII +_PyUnicode_XStrip +_PyWarnings_Init +_PyWeakref_CallableProxyType +_PyWeakref_ClearRef +_PyWeakref_GetWeakrefCount +_PyWeakref_ProxyType +_PyWeakref_RefType +_PyWindowsConsoleIO_Type +_Py_BreakPoint +_Py_BuildValue_SizeT +_Py_CheckFunctionResult +_Py_CheckRecursionLimit +_Py_CheckRecursiveCall +_Py_Dealloc +_Py_DisplaySourceLine +_Py_DumpASCII +_Py_DumpDecimal +_Py_DumpHexadecimal +_Py_DumpTraceback +_Py_DumpTracebackThreads +_Py_EllipsisObject +_Py_FalseStruct +_Py_Finalizing +_Py_FreeCharPArray +_Py_GetAllocatedBlocks +_Py_HashBytes +_Py_HashDouble +_Py_HashPointer +_Py_HashSecret +_Py_InitializeEx_Private +_Py_Mangle +_Py_NoneStruct +_Py_NotImplementedStruct +_Py_PackageContext +_Py_PyAtExit +_Py_ReleaseInternedUnicodeStrings +_Py_RestoreSignals +_Py_SwappedOp +_Py_TrueStruct +_Py_VaBuildValue_SizeT +_Py_add_one_to_index_C +_Py_add_one_to_index_F +_Py_ascii_whitespace +_Py_c_abs +_Py_c_diff +_Py_c_neg +_Py_c_pow +_Py_c_prod +_Py_c_quot +_Py_c_sum +_Py_ctype_table +_Py_ctype_tolower +_Py_ctype_toupper +_Py_device_encoding +_Py_dg_dtoa +_Py_dg_freedtoa +_Py_dg_infinity +_Py_dg_stdnan +_Py_dg_strtod +_Py_dup +_Py_fopen +_Py_fopen_obj +_Py_fstat +_Py_fstat_noraise +_Py_get_inheritable +_Py_gitidentifier +_Py_gitversion +_Py_hashtable_clear +_Py_hashtable_compare_direct +_Py_hashtable_copy +_Py_hashtable_destroy +_Py_hashtable_foreach +_Py_hashtable_get +_Py_hashtable_get_entry +_Py_hashtable_hash_ptr +_Py_hashtable_new +_Py_hashtable_new_full +_Py_hashtable_pop +_Py_hashtable_set +_Py_hashtable_size +_Py_open +_Py_open_noraise +_Py_parse_inf_or_nan +_Py_read +_Py_set_inheritable +_Py_stat +_Py_strhex +_Py_strhex_bytes +_Py_string_to_number_with_underscores +_Py_wfopen +_Py_wgetcwd +_Py_write +_Py_write_noraise diff --git a/qrenderdoc/3rdparty/python/x64/python36.dll b/qrenderdoc/3rdparty/python/x64/python36.dll new file mode 100644 index 000000000..fc80678f4 Binary files /dev/null and b/qrenderdoc/3rdparty/python/x64/python36.dll differ diff --git a/qrenderdoc/3rdparty/python/x64/python36.lib b/qrenderdoc/3rdparty/python/x64/python36.lib new file mode 100644 index 000000000..922839447 Binary files /dev/null and b/qrenderdoc/3rdparty/python/x64/python36.lib differ diff --git a/qrenderdoc/3rdparty/qt/LICENSE b/qrenderdoc/3rdparty/qt/LICENSE new file mode 100644 index 000000000..d5e7e01b3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/LICENSE @@ -0,0 +1,866 @@ +GENERAL +------- + +Qt is available under a commercial license with various pricing models and packages that meet a variety of needs. Commercial Qt license keeps your code proprietary where only you can control and monetize on your end product’s development, user experience and distribution. You also get great perks like additional functionality, productivity enhancing tools, world-class support and a close strategic relationship with The Qt Company to make sure your product and development goals are met. + +Qt has been created under the belief of open development and providing freedom and choice to developers. To support that, The Qt Company also licenses Qt under open source licenses, where most of the functionality is available under LGPLv3. It should be noted that the tools as well as some add-on components are available only under GPLv3. In order to preserve the true meaning of open development and uphold the spirit of free software, it is imperative that the rules and regulations of open source licenses are followed. If you use Qt under open-source licenses, you need to make sure that you comply with all the licenses of the components you use. + +Qt also contains some 3rd party components that are available under different open-source licenses. Please refer to the documentation for more details on 3rd party licenses used in Qt. + + +GPLv3 and LGPLv3 +---------------- + + GNU LESSER GENERAL PUBLIC LICENSE + + The Qt Toolkit is Copyright (C) 2017 The Qt Company Ltd. + Contact: https://www.qt.io/licensing + + You may use, distribute and copy the Qt GUI Toolkit under the terms of + GNU Lesser General Public License version 3, which supplements GNU General + Public License Version 3. Both of the licenses are displayed below. + +------------------------------------------------------------------------- + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + + +------------------------------------------------------------------------- + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright © 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies of this + license document, but changing it is not allowed. + +This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + +0. Additional Definitions. + + As used herein, “this License” refers to version 3 of the GNU Lesser +General Public License, and the “GNU GPL” refers to version 3 of the +GNU General Public License. + + “The Library” refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An “Application” is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A “Combined Work” is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the “Linked +Version”. + + The “Minimal Corresponding Source” for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The “Corresponding Application Code” for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + +1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + +2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort + to ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + +3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this + license document. + +4. Combined Works. + + You may convey a Combined Work under terms of your choice that, taken +together, effectively do not restrict modification of the portions of +the Library contained in the Combined Work and reverse engineering for +debugging such modifications, if you also do each of the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this + license document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of + this License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with + the Library. A suitable mechanism is one that (a) uses at run + time a copy of the Library already present on the user's + computer system, and (b) will operate properly with a modified + version of the Library that is interface-compatible with the + Linked Version. + + e) Provide Installation Information, but only if you would + otherwise be required to provide such information under section 6 + of the GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the Application + with a modified version of the Linked Version. (If you use option + 4d0, the Installation Information must accompany the Minimal + Corresponding Source and Corresponding Application Code. If you + use option 4d1, you must provide the Installation Information in + the manner specified by section 6 of the GNU GPL for conveying + Corresponding Source.) + +5. Combined Libraries. + + You may place library facilities that are a work based on the Library +side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities, conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of + it is a work based on the Library, and explaining where to find + the accompanying uncombined form of the same work. + +6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +as you received it specifies that a certain numbered version of the +GNU Lesser General Public License “or any later version” applies to +it, you have the option of following the terms and conditions either +of that published version or of any later version published by the +Free Software Foundation. If the Library as you received it does not +specify a version number of the GNU Lesser General Public License, +you may choose any version of the GNU Lesser General Public License +ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the Library. + diff --git a/qrenderdoc/3rdparty/qt/LICENSE.FDL b/qrenderdoc/3rdparty/qt/LICENSE.FDL new file mode 100644 index 000000000..bfb831355 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/LICENSE.FDL @@ -0,0 +1,450 @@ + GNU Free Documentation License + Version 1.3, 3 November 2008 + + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The "publisher" means any person or entity that distributes copies of +the Document to the public. + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgments", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no +other conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to +give them a chance to provide you with an updated version of the +Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document aspkg/qt/meta/LICENSE.FDL + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. For any section Entitled "Acknowledgments" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgments + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section.pkg/qt/meta/LICENSE.FDL +O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgments", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other +documents released under this License, and replace the individual +copies of this License in the various documents with a single copy +that is included in the collection, provided that you follow the rules +of this License for verbatim copying of each of the documents in all +other respects. + +You may extract a single document from such a collection, and +distribute it individually under this License, provided you insert a +copy of this License into the extracted document, and follow this +License in all other respects regarding verbatim copying of that +document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires specialpkg/qt/meta/LICENSE.FDL +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgments", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions of the +GNU Free Documentation License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in +detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +11. RELICENSING + +"Massive Multiauthor Collaboration Site" (or "MMC Site") means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +"Massive Multiauthor Collaboration" (or "MMC") contained in the site +means any set of copyrightable works thus published on the MMC site. + +"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +"Incorporate" means to publish or republish a Document, in whole or in +part, as part of another Document. + +An MMC is "eligible for relicensing" if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole or +in part into the MMC, (1) had no cover texts or invariant sections, and +(2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/qrenderdoc/3rdparty/qt/LICENSE.PYTHON b/qrenderdoc/3rdparty/qt/LICENSE.PYTHON new file mode 100644 index 000000000..628a737dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/LICENSE.PYTHON @@ -0,0 +1,49 @@ +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014, 2015, 2016 Python Software Foundation; All Rights +Reserved" are retained in Python alone or in any derivative version prepared by +Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + diff --git a/qrenderdoc/3rdparty/qt/README.md b/qrenderdoc/3rdparty/qt/README.md new file mode 100644 index 000000000..24d322b40 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/README.md @@ -0,0 +1 @@ +This folder contains a subset of the Qt 5.9.4 distribution necessary for renderdoc to compile against it. diff --git a/qrenderdoc/3rdparty/qt/ThirdPartySoftware_Listing.txt b/qrenderdoc/3rdparty/qt/ThirdPartySoftware_Listing.txt new file mode 100644 index 000000000..783c144e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/ThirdPartySoftware_Listing.txt @@ -0,0 +1,896 @@ +Qt Enterprise + +The various components of the release include Open Source licensed software components. These components, listed by the component where such Open Source licensed software appears, are described as follows: + +========= +Qt Libraries +========= + +The Qt framework and tools are primarily licensed under the license terms specified above. However, Qt does contain certain components and third party software that are licensed under terms different from the above licenses. The third party software, including Open Source Software included in Qt is as follows: + +---------------------------------- +FreeType 2 (freetype) version 2.3.6 +---------------------------------- + +The FreeType project is a team of volunteers who develop free, portable and high-quality software solutions for digital typography. We specifically target embedded systems and focus on bringing small, efficient and ubiquitous products. -- quoted from 3rdparty/freetype/docs/freetype2.html. +See src/3rdparty/freetype/docs/FTL.txt and src/3rdparty/freetype/docs/GPL.txt for license details. +See also the files in src/3rdparty/opentype, which are used by FreeType. +Parts of the FreeType projects have been modified and put into Qt for use in the painting subsystem. These files are ftraster.h, ftraster.c, ftgrays.h and ftgrays.c. The following modifications has been made to these files: +Renamed FT_ and ft_ symbols to QT_FT_ and qt_ft_ to avoid name conflicts. +Removed parts of code not relevant when compiled with _STANDALONE_ defined. +Changed behavior in ftraster.c to follow X polygon filling rules. +Implemented support in ftraster.c for winding / odd even polygon fill rules. +Replaced bitmap generation with span generation in ftraster.c +Renamed: ftraster.h to qblackraster_p.h +Renamed: ftraster.c to qblackraster.c +Renamed: ftgrays.h to qgrayraster_p.h +Renamed: ftgrays.c to qgrayraster.c +The FreeType Project LICENSE + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + +Introduction +============ + +The FreeType Project is distributed in several archive packages; some of them may contain, in addition to the FreeType font engine, various tools and contributions which rely on, or relate to, the FreeType Project. + +This license applies to all files found in such packages, and which do not fall under their own explicit license. The license affects thus the FreeType font engine, the test programs,documentation and makefiles, at the very least. + +This license was inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses, which all encourage inclusion and use of free software in commercial and freeware products alike. As a consequence, its main points are that: + o We don't promise that this software works. However, we will be interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use it, or only parts of it, in a program, you must acknowledge somewhere in your documentation that you have used the FreeType code. (`credits') + +We specifically permit and encourage the inclusion of this software, with or without modifications, in commercial products. We disclaim all warranties covering The FreeType Project and assume no liability related to The FreeType Project. + +Finally, many people asked us for a preferred form for a credit/disclaimer to use in compliance with this license. We thus encourage you to use the following text: + “Portions of this software are copyright © The FreeType Project (www.freetype.org). All rights reserved." + + Please replace with the value from the FreeType version you actually use. + +Legal Terms +=========== + +0. Definitions +-------------- +Throughout this license, the terms `package', `FreeType Project', and `FreeType archive' refer to the set of files originally distributed by the authors (David Turner, Robert Wilhelm, and Werner Lemberg) as the `FreeType Project', be they named as alpha, beta or final release. + +`You' refers to the licensee, or person using the project, where `using' is a generic term including compiling the project's source code as well as linking it to form a `program' or `executable'. This program is referred to as `a program using the FreeType engine'. + +This license applies to all files distributed in the original FreeType Project, including all source code, binaries and documentation, unless otherwise stated in the file in its original, unmodified form as distributed in the original archive. If you are unsure whether or not a particular file is covered by this license, you must contact us to verify this. + +The FreeType Project is copyright (C) 1996-2000 by David Turner, Robert Wilhelm, and Werner Lemberg. All rights reserved except as specified below. + +1. No Warranty +-------------- +THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- +This license grants a worldwide, royalty-free, perpetual and irrevocable right and license to use, execute, perform, compile, display, copy, create derivative works of, distribute and sublicense the FreeType Project (in both source and object code forms) and derivative works thereof for any purpose; and to authorize others to exercise some or all of the rights granted herein, subject to the following conditions: + + o Redistribution of source code must retain this license file (`FTL.TXT') unaltered; any additions, deletions or changes to the original files must be clearly indicated in accompanying documentation. The copyright notices of the unaltered, original files must be preserved in all copies of source files. + + o Redistribution in binary form must provide a disclaimer that states that the software is based in part of the work of the FreeType Team, in the distribution documentation. We also encourage you to put an URL to the FreeType web page in your documentation, though this isn't mandatory. + +These conditions apply to any software derived from or based on the FreeType Project, not just the unmodified files. If you use our work, you must acknowledge us. However, no fee need be paid to us. + +3. Advertising +-------------- +Neither the FreeType authors and contributors nor you shall use the name of the other for commercial, advertising, or promotional purposes without specific prior written permission. We suggest, but do not require, that you use one or more of the following phrases to refer to this software in your documentation or advertising materials: `FreeType Project', `FreeType Engine', `FreeType library', or `FreeType Distribution'. + +As you have not signed this license, you are not required to accept it. However, as the FreeType Project is copyrighted material, only this license, or another one contracted with the authors, grants you the right to use, distribute, and modify it. Therefore, by using, distributing, or modifying the FreeType Project, you indicate that you understand and accept all the terms of this license. + +4. Contacts +----------- + There are two mailing lists related to FreeType: + o freetype@nongnu.org +Discusses general use and applications of FreeType, as well as future and wanted additions to the library and distribution. If you are looking for support, start in this list if you haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org +Discusses bugs, as well as engine internals, design issues, specific licenses, porting, etc. + + Our home page can be found at http://www.freetype.org + +Freetype includes the Bitmap Distribution Format: + +Copyright 2000 Computing Research Labs, New Mexico State University +Copyright 2001, 2002, 2003, 2004 Francesco Zappa Nardelli + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 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 Software. + +* THE SOFTWARE IS 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. IN NO EVENT SHALL THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Libmng License + +Libjpeg License - version 8c +In plain English: +1. We don't promise that this software works. (But if you find any bugs, please let us know!) +2. You can use this software for whatever you want. You don't have to pay us. +3. You may not pretend that you wrote this software. If you use it in a program, you must acknowledge somewhere in your documentation that you've used the IJG code. +In legalese: +The authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy. +This software is copyright (C) 1991-1998, Thomas G. Lane. +All Rights Reserved except as specified below. +Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions: +(1) If any part of the source code for this software is distributed, then this README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind. +These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library. If you use our work, you ought to acknowledge us. +Permission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it. This software may be referred to only as "the Independent JPEG Group's software". +We specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor. +ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. ansi2knr.c is NOT covered by the above copyright and conditions, but instead by the usual distribution terms of the Free Software Foundation; principally,that you must include source code if you redistribute it. (See the file ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part of any program generated from the IJG code, this does not limit you more than the foregoing paragraphs do. +The Unix configuration script "configure" was produced with GNU Autoconf. It is copyright by the Free Software Foundation but is freely distributable. The same holds for its supporting scripts (config.guess, config.sub, +ltconfig, ltmain.sh). Another support script, install-sh, is copyright by M.I.T. but is also freely distributable. +It appears that the arithmetic coding option of the JPEG spec is covered by patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot legally be used without obtaining one or more licenses. For this reason, support for arithmetic coding has been removed from the free JPEG software. +(Since arithmetic coding provides only a marginal gain over the unpatented Huffman mode, it is unlikely that very many implementations will support it.) +So far as we are aware, there are no patent restrictions on the remaining code. +The IJG distribution formerly included code to read and write GIF files. +To avoid entanglement with the Unisys LZW patent, GIF reading support has been removed altogether, and the GIF writer has been simplified to produce "uncompressed GIFs". This technique does not use the LZW algorithm; the resulting GIF files are larger than usual, but are readable by all standard GIF decoders. +We are required to state that + "The Graphics Interchange Format(c) is the Copyright property of + CompuServe Incorporated. GIF(sm) is a Service Mark property of + CompuServe Incorporated." + +Libmng License + +Libjpeg License - version 8c +In plain English: +1. We don't promise that this software works. (But if you find any bugs, please let us know!) +2. You can use this software for whatever you want. You don't have to pay us. +3. You may not pretend that you wrote this software. If you use it in a program, you must acknowledge somewhere in your documentation that you've used the IJG code. +In legalese: +The authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy. +This software is copyright (C) 1991-1998, Thomas G. Lane. +All Rights Reserved except as specified below. +Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions: +(1) If any part of the source code for this software is distributed, then this README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind. +These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library. If you use our work, you ought to acknowledge us. +Permission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it. This software may be referred to only as "the Independent JPEG Group's software". +We specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor. +ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. ansi2knr.c is NOT covered by the above copyright and conditions, but instead by the usual distribution terms of the Free Software Foundation; principally,that you must include source code if you redistribute it. (See the file ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part of any program generated from the IJG code, this does not limit you more than the foregoing paragraphs do. +The Unix configuration script "configure" was produced with GNU Autoconf. It is copyright by the Free Software Foundation but is freely distributable. The same holds for its supporting scripts (config.guess, config.sub, +ltconfig, ltmain.sh). Another support script, install-sh, is copyright by M.I.T. but is also freely distributable. +It appears that the arithmetic coding option of the JPEG spec is covered by patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot legally be used without obtaining one or more licenses. For this reason, support for arithmetic coding has been removed from the free JPEG software. +(Since arithmetic coding provides only a marginal gain over the unpatented Huffman mode, it is unlikely that very many implementations will support it.) +So far as we are aware, there are no patent restrictions on the remaining code. +The IJG distribution formerly included code to read and write GIF files. +To avoid entanglement with the Unisys LZW patent, GIF reading support has been removed altogether, and the GIF writer has been simplified to produce "uncompressed GIFs". This technique does not use the LZW algorithm; the resulting GIF files are larger than usual, but are readable by all standard GIF decoders. +We are required to state that + "The Graphics Interchange Format(c) is the Copyright property of + CompuServe Incorporated. GIF(sm) is a Service Mark property of + CompuServe Incorporated." + +Libpng License - version 1.5.1 +This copy of the libpng notices is provided for your convenience. In case of any discrepancy between this copy and the notices in the file png.h that is included in the libpng distribution, the latter shall prevail. + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + +If you modify libpng you may insert additional notices immediately following this sentence. + +libpng versions 1.2.6, August 15, 2004, through 1.2.29, May 8, 2008, are Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.2.5 with the following individual added to the list of Contributing Authors + + Cosmin Truta + +libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.0.6 with the following individuals added to the list of Contributing Authors + + Simon-Pierre Cadieux + Eric S. Raymond + Gilles Vollant + +and with the following additions to the disclaimer: + +There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our efforts or the library will fulfill any of your particular purposes or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user. + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-0.96, with the following individuals added to the list of Contributing Authors: + + Tom Lane + Glenn Randers-Pehrson + Willem van Schaik + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright (c) 1996, 1997 Andreas Dilger + +Distributed according to the same disclaimer and license as libpng-0.88, with the following individuals added to the list of Contributing Authors: + + John Bowler + Kevin Bracey + Sam Bushell + Magnus Holmgren + Greg Roelofs + Tom Tanner + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. + +For the purposes of this copyright and license, "Contributing Authors" is defined as the following set of individuals: + + Andreas Dilger + Dave Martindale + Guy Eric Schalnat + Paul Schmidt + Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing Authors and Group 42, Inc. disclaim all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The Contributing Authors and Group 42, Inc. assume no liability for direct, indirect, incidental, special, exemplary, or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage. + +Permission is hereby granted to use, copy, modify, and distribute this source code, or portions hereof, for any purpose, without fee, subject to the following restrictions: + +1. The origin of this source code must not be misrepresented. + +2. Altered versions must be plainly marked as such and must not + be misrepresented as being the original source. + +3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + +The Contributing Authors and Group 42, Inc. specifically permit, without fee, and encourage the use of this source code as a component to supporting the PNG file format in commercial products. If you use this source code in a product, acknowledgment is not required but would be appreciated. + + +A "png_get_copyright" function is available, for convenient use in "about" boxes and the like: + + printf("%s",png_get_copyright(NULL)); + +Also, the PNG logo (in PNG format, of course) is supplied in the files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + +Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a certification mark of the Open Source Initiative. + +Glenn Randers-Pehrson +glennrp at users.sourceforge.net +May 8, 2008 + +Zlib License –version 1.2.5 + + Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler + +This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly jloup@gzip.org + Mark Adler madler@alumni.caltech.edu + + +Sqlite +1. 2001 September 15 +2. The author disclaims copyright to this source code. In place of a legal notice, here is a blessing: +3. May you do good and not eviL. +4. May you find forgiveness for yourself and forgive others. +5. May you share freely, never taking more than you give. + +Wintab +The text and information contained in this file may be freely used, Copied, or distributed without compensation or licensing restrictions. +This file is copyright 1991-1998 by LCS/Telegraphics. + +HarfBuzz (harfbuzz) +This is HarfBuzz, an OpenType Layout engine. +It was derived originally from the OpenType code in FreeType-1.x, ported to FreeType2. (This code has been abandoned for FreeType2, but until something better comes along, should serve our purposes.) In addition to porting to FreeType-2, it has been modified in various other ways. +Please see licensing terms and conditions set forth in Section a) above (i.e. the FreeType License). + +MD5 (md5.cpp and md5.h) +This code implements the MD5 message-digest algorithm. The algorithm is due to Ron Rivest. This code was written by Colin Plumb in 1993, no copyright is claimed. +This code is in the public domain; do with it what you wish. + + +LibTiff +Copyright (c) 1988-1997 Sam Leffler +Copyright (c) 1991-1997 Silicon Graphics, Inc. +Copyright (C) 2004, Andrey Kiselev +Copyright (c) 1997 Greg Ward Larson + +Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the names of Sam Leffler and Silicon Graphics may not be used in any advertising or publicity relating to the software without the specific, prior written permission of Sam Leffler and Silicon Graphics. + +THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Copyright (c) 1996-1997 Sam Leffler +Copyright (c) 1996 Pixar +Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the names of Pixar, Sam Leffler and Silicon Graphics may not be used in any advertising or publicity relating to the software without the specific, prior written permission of Pixar, Sam Leffler and Silicon Graphics. +THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL PIXAR, SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +PTMalloc Version 1.8 +ptmcalloc3 is a scalable concurrent memory allocator suitable for use in multi-threaded programs. +Copyright (c) 2001-2006 Wolfram Gloger +Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the name of Wolfram Gloger may not be used in any advertising or publicity relating to the software. +THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL WOLFRAM GLOGER BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +Non-Digia Owned Code used in Qt +Qt contains some code that is not provided under the the GNU General Public License version 3 (“GPL”), or the GNU Lesser General Public License version 2.1 (“LGPL”), but rather under specific highly permissive licenses from the original authors. This page lists the licenses used for that code, names the authors, and links to the points where it is used. +Digia gratefully acknowledges these and others contributions to Qt. We recommend that programs that use Qt or Qtopia Core also acknowledge these contributions, and quote these license statements in an appendix to the documentation. + +Copyright (C) 1999 Serika Kurusugawa. All rights reserved. +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 AND CONTRIBUTORS "AS IS". 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 REGENTS 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. +* Shift-JIS Text Codec +* ISO 2022-JP (JIS) Text Codec +* EUC-JP Text Codec + +Copyright (C) 1999-2000 Mizi Research 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: +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 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 REGENTS 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. +* EUC-KR Text Codec + +Copyright (C) 2000 TurboLinux, Inc. Written by Justin Yu and Sean Chen. +Copyright (C) 2001, 2002 Turbolinux, Inc. Written by James Su. +Copyright (C) 2001, 2002 ThizLinux Laboratory Ltd. Written by Anthony Fok. +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 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 REGENTS 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. +* GBK Text Codec + +Copyright (C) 2000 Ming-Che Chuang +Copyright (C) 2001, 2002 James Su, Turbolinux Inc. +Copyright (C) 2002 WU Yi, HancomLinux Inc. +Copyright (C) 2001, 2002 Anthony Fok, ThizLinux Laboratory Ltd. +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 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 REGENTS 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. +* Big5-HKSCS Text Codec + +Copyright (C) 2000 Ming-Che Chuang +Copyright (C) 2002 James Su, Turbolinux Inc. +Copyright (C) 2002 Anthony Fok, ThizLinux Laboratory Ltd. +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 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 REGENTS 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. +* Big5 Text Codec + +Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. +Copyright (C) 2005 Bjoern Bergstroem +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, modify, market, reproduce, grant sublicenses and distribute subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. These files are provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. +* Implementation of the Recursive Shadow Casting Algorithm in Qt Designer + +Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. +Copyright (C) 2005 Roberto Raggi +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, modify, market, reproduce, grant sublicenses and distribute subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. These files are provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. +* Contributions to the Following qt3to4 Files: treewalker.h, treedump.cpp, treedump.h, treewalker.cpp + +Copyright (c) 1987 X Consortium +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 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 Software. +THE SOFTWARE IS 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. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. +* QRegion + +Copyright (c) 1989 The Regents of the University of California. All rights reserved. +Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +* QDate::weekNumber() + +Copyright (c) 1991 by AT&T. +Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. +This product includes software developed by the University of California, Berkeley and its contributors. +* QLocale + +Copyright (c) 2000 Hans Petter Bieker. All rights reserved. +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 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 REGENTS 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. +* TSCII Text Codec + +Copyright 1996 Daniel Dardailler. +Permission to use, copy, modify, distribute, and sell this software for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Daniel Dardailler not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Daniel Dardailler makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. +Modifications Copyright 1999 Matt Koss, under the same license as above. +* Drag and Drop + +Copyright 2002 USC/Information Sciences Institute +Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Information Sciences Institute not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Information Sciences Institute makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. +INFORMATION SCIENCES INSTITUTE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL INFORMATION SCIENCES INSTITUTE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +* QtSvg Module + +Copyright (C) The Internet Society (2001). All Rights Reserved. +This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. +The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. +This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. +* Torrent Example + +Copyright (c) 1998 by Bjorn Reese +Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. +* Parts of the QCrashHandler Class + +Parts of the FreeType projects have been modified and put into Qt and Qtopia Core for use in the painting subsystem. These files are ftraster.h, ftraster.c, ftgrays.h and ftgrays.c. The following modifications has been made to these files: +* Renamed FT and ft_symbols to QT_FT_and qt_ft to avoid name conflicts in qrasterdefs_p.h. +* Removed parts of code not relevant when compiled with _STANDALONE_ defined. +* Changed behavior in ftraster.c to follow X polygon filling rules. +* Implemented support in ftraster.c for winding / odd even polygon fill rules. +* Replaced bitmap generation with span generation in ftraster.c. +* Renamed ftraster.h as qblackraster_p.h. +* Renamed ftraster.c as qblackraster.c. +* Renamed ftgrays.h as qgrayraster_p.h. +* Renamed ftgrays.c as qgrayraster.c. +See src/3rdparty/freetype/docs/FTL.txt and src/3rdparty/freetype/docs/GPL.txt for license details. + +Copyright (c) 1985, 1986, 1987 X Consortium +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 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 Software. +THE SOFTWARE IS 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. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. +* Parts of the Q3PolygonScanner Class Used in Qt for Embedded Linux + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. +All Rights Reserved +Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +* Parts of the Q3PolygonScanner class used in Qt for Embedded Linux + +OpenGL is a trademark of Silicon Graphics, Inc. in the United States and other countries. +* QGLFormat + +WebKit is licensed under the GNU Library General Public License. Individual contributor names and copyright dates can be found inline in the code. +This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. +You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* QtWebKit Module + +Copyright (C) 2000-2004, International Business Machines +Corporation and others. All Rights Reserved. +Copyright (C) 2007 Apple Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. +THE SOFTWARE IS 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. +* Parts of WebKit used by the QtWebKit module + +Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team +Changes are Copyright(C) 2007 by Trolltech ASA, all rights reserved. +This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +* QtHelp Module + +Copyright (C) 2004, 2005 Daniel M. Duley +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. +* QImage + +This file is part of the KDE project +Copyright (C) 2005-2007 Matthias Kretz +Copyright (C) 2007-2008 Trolltech ASA. +This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. +This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. +You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* Phonon Module + +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. +Contributions to the Following QtGui Files: +* qapplication_cocoa_p.h +* qapplication_mac.mm +* qdesktopwidget_mac.mm +* qeventdispatcher_mac.mm +* qeventdispatcher_mac_p.h +* qmacincludes_mac.h +* qt_cocoa_helpers.mm +* qt_cocoa_helpers_p.h +* qwidget_mac.mm +* qsystemtrayicon_mac.mm + + +Copyright (C) 2003-2004 immodule for Qt Project. All rights reserved. +This file is written to contribute to Digia Corporation and/or its subsidiary(-ies) under their own license. You may use this file under your Qt license. Following description is copied from their original file headers. Contact immodule-qt@freedesktop.org if any conditions of this licensing are not clear to you. +* QInputContextFactory +* QInputContext +* QInputContextPlugin + +Copyright (c) 2003, 2006 Matteo Frigo +Copyright (c) 2003, 2006 Massachusetts Institute of Technology +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 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 Software. +THE SOFTWARE IS 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. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +* QTestLib Manual + +Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +All rights reserved. +Contact: Qt Development Frameworks Information (qt-info@nokia.com) +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 Nokia Corporation 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." +* QAxServer Module +* The qtmain Library +* QAxContainer Module + +Copyright 1985, 1987, 1998 The Open Group +Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS 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. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. +* Parts of the internal QKeyMapper class on X11 platforms + +pnmscale.c - read a portable anymap and scale it +Copyright (C) 1989, 1991 by Jef Poskanzer. +Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. This software is provided "as is" without express or implied warranty. +* Parts of the internal QImageSmoothScaler::scale() function use code based on pnmscale.c by Jef Poskanzer. + +FFTReal version 2.0 +This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. +You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +JQuery +jQuery JavaScript Library v1.3.2 http://jquery.com/ +Copyright (c) 2009 John Resig Dual licensed under the MIT and GPL licenses. http://docs.jquery.com/License +Sizzle CSS Selector Engine - v0.9.3 Copyright 2009, The Dojo Foundation Released under the MIT, BSD, and GPL Licenses. More information: http://sizzlejs.com/ +* examples/webkit/fancybrowser/jquery.min.js + +DES (des.cpp) +Implementation of DES encryption for NTLM +Copyright 1997-2005 Simon Tatham. +This software is released under the MIT license. + +MD4 (md4.cpp and md4.h) +MD4 (RFC-1320) message digest. +Modified from MD5 code by Andrey Panin +Written by Solar Designer in 2001, and placed in +the public domain. There's absolutely no warranty. + +Bison Parser +As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. + +Copyright © 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ +This W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions: +Permission to use, copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make: +1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. +2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/" +3. Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.) +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders. +* XML Patterns Scheme (source/qt-everywhere-opensource-src-4.8.0/qt-everywhere-opensource-src-4.8.0/src/xmlpatterns/schema/schemas/xml.xsd-LICENSE) + +PowerVR: +Copyright : Copyright (c) Imagination Technologies Limited. +This specification is protected by copyright laws and contains material proprietary to Imagination Technologies Limited. +You may use and distribute this specification free of charge for implementing the functionality therein, without altering or removing any trademark, copyright, or other notice from the specification. + +Superfish: +Superfish v1.4.8 - jQuery menu widget +Copyright (c) 2008 Joel Birch +License: +* Dual licensed under the MIT and GPL licenses: +* http://www.opensource.org/licenses/mit-license.php +* http://www.gnu.org/licenses/gpl.html + +Cycle: +Copyright (c) 2003, 2006 Matteo Frigo +Copyright (c) 2003, 2006 Massachusetts Institute of Technology +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 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 Software. + +* THE SOFTWARE IS 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. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Wayland Windowing Manager: +Copyright © 2010 Kristian Høgsberg +Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of the copyright holders not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. The copyright holders make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +TestLib\Callgrind: +Copyright (C) 2003-2007 Josef Weidendorfer. All rights reserved. +License: +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. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +3. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +4. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. +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. + +TestLib\Valgrind: +Copyright (C) 2000-2007 Julian Seward.  All rights reserved. +License: +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. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +3. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +4. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES 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. + +PCRE: + +PCRE LICENSE +------------ + +PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + +Release 8 of PCRE is distributed under the terms of the "BSD" license, as +specified below. The documentation for PCRE, supplied in the "doc" +directory, is distributed under the same terms as the software itself. + +The basic library functions are written in C and are freestanding. Also +included in the distribution is a set of C++ wrapper functions, and a +just-in-time compiler that can be used to optimize pattern matching. These +are both optional features that can be omitted when the library is built. + + +THE BASIC LIBRARY FUNCTIONS +--------------------------- + +Written by: Philip Hazel +Email local part: ph10 +Email domain: cam.ac.uk + +University of Cambridge Computing Service, +Cambridge, England. + +Copyright (c) 1997-2012 University of Cambridge +All rights reserved. + + +PCRE JUST-IN-TIME COMPILATION SUPPORT +------------------------------------- + +Written by: Zoltan Herczeg +Email local part: hzmester +Emain domain: freemail.hu + +Copyright(c) 2010-2012 Zoltan Herczeg +All rights reserved. + + +STACK-LESS JUST-IN-TIME COMPILER +-------------------------------- + +Written by: Zoltan Herczeg +Email local part: hzmester +Emain domain: freemail.hu + +Copyright(c) 2009-2012 Zoltan Herczeg +All rights reserved. + + +THE C++ WRAPPER FUNCTIONS +------------------------- + +Contributed by: Google Inc. + +Copyright (c) 2007-2012, Google Inc. +All rights reserved. + + +THE "BSD" LICENSE +----------------- + +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 the University of Cambridge nor the name of Google + Inc. nor the names of their 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. + +End + + +ANGLE: +Copyright (C) 2002-2010 The ANGLE Project Authors. +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 TransGaming Inc., Google Inc., 3DLabs Inc. + Ltd., nor the names of their 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. + +xcb: +Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +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 Software. + +THE SOFTWARE IS 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. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors or their +institutions shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from the authors + + +========== +Qt Creator +========== +Qt Creator includes the following third-party components, +we thank the authors who made this possible: + +* Open Source front-end for C++ (license MIT), enhanced for use in Qt Creator + + Roberto Raggi + + QtCreator/src/shared/cplusplus + + Copyright 2005 Roberto Raggi + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS 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. IN NO EVENT SHALL THE + KDEVELOP TEAM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +* Botan, a C++ crypto library. Version 1.8.8 + + Copyright (C) 1999-2004 The Botan Project. All rights reserved. + Copyright (C) 1999-2009 Jack Lloyd + 2001 Peter J Jones + 2004-2007 Justin Karneges + 2005 Matthew Gregan + 2005-2006 Matt Johnston + 2006 Luca Piccarreta + 2007 Yves Jerschow + 2007-2008 FlexSecure GmbH + 2007-2008 Technische Universitat Darmstadt + 2007-2008 Falko Strenzke + 2007-2008 Martin Doering + 2007 Manuel Hartl + 2007 Christoph Ludwig + 2007 Patrick Sona + All rights reserved. + + 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(S) "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(S) OR CONTRIBUTOR(S) 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. + + The source code of Botan C++ crypto library can be found in + QtCreator/src/libs/3rdparty + + +* ClassView and ImageViewer plugins + + Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). + + All rights reserved. + Copyright (c) 2010 Denis Mingulov. + + Contact: http://www.qt-project.org/ + + This file is part of Qt Creator. + + 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." + diff --git a/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Core.dll b/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Core.dll new file mode 100644 index 000000000..7674e16d1 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Core.dll differ diff --git a/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Gui.dll b/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Gui.dll new file mode 100644 index 000000000..471430bda Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Gui.dll differ diff --git a/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Network.dll b/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Network.dll new file mode 100644 index 000000000..2f5ec45ce Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Network.dll differ diff --git a/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Svg.dll b/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Svg.dll new file mode 100644 index 000000000..2a4a472b2 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Svg.dll differ diff --git a/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Widgets.dll b/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Widgets.dll new file mode 100644 index 000000000..b627dfc4d Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/bin/Qt5Widgets.dll differ diff --git a/qrenderdoc/3rdparty/qt/Win32/bin/moc.exe b/qrenderdoc/3rdparty/qt/Win32/bin/moc.exe new file mode 100644 index 000000000..2d467d11b Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/bin/moc.exe differ diff --git a/qrenderdoc/3rdparty/qt/Win32/bin/rcc.exe b/qrenderdoc/3rdparty/qt/Win32/bin/rcc.exe new file mode 100644 index 000000000..d8934b9a1 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/bin/rcc.exe differ diff --git a/qrenderdoc/3rdparty/qt/Win32/bin/uic.exe b/qrenderdoc/3rdparty/qt/Win32/bin/uic.exe new file mode 100644 index 000000000..71239538e Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/bin/uic.exe differ diff --git a/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Core.lib b/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Core.lib new file mode 100644 index 000000000..09b34f816 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Core.lib differ diff --git a/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Gui.lib b/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Gui.lib new file mode 100644 index 000000000..f05cc75cc Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Gui.lib differ diff --git a/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Network.lib b/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Network.lib new file mode 100644 index 000000000..5de613b62 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Network.lib differ diff --git a/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Svg.lib b/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Svg.lib new file mode 100644 index 000000000..5e2d34310 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Svg.lib differ diff --git a/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Widgets.lib b/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Widgets.lib new file mode 100644 index 000000000..52484dd9d Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/lib/Qt5Widgets.lib differ diff --git a/qrenderdoc/3rdparty/qt/Win32/lib/qtmain.lib b/qrenderdoc/3rdparty/qt/Win32/lib/qtmain.lib new file mode 100644 index 000000000..974a2fb21 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/lib/qtmain.lib differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/aix/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/aix/qplatformdefs.h new file mode 100644 index 000000000..7bb8dfedd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/aix/qplatformdefs.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_AIX_QPLATFORMDEFS_H +#define Q_AIX_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 + + +// We are hot - unistd.h should have turned on the specific APIs we requested + + +// uncomment if you have problems with because your gcc +// hasn't been built on exactly the same OS version your are using now. +// typedef int crid_t; +// typedef unsigned int class_id_t; +#include +#include +#include +#include +#include +#include +#include +#include // AIX X11 headers define FD_ZERO using bzero() + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef QT_NO_IPV6IFNAME +#include +#endif + +// Only AIX 4.3 and better support 64-bit + +#define QT_USE_XOPEN_LFS_EXTENSIONS +#include "../posix/qplatformdefs.h" + +#undef QT_SOCKLEN_T + +#ifdef _AIX43 +// AIX 4.3 and better +#define QT_SOCKLEN_T socklen_t +#elif _AIX42 +// AIX 4.2 +#define QT_SOCKLEN_T size_t +#else +// AIX 4.1 +#define QT_SOCKLEN_T size_t +// override +#define QT_SOCKOPTLEN_T int +#endif + +#ifdef QT_LARGEFILE_SUPPORT +#undef QT_DIR +#undef QT_OPENDIR +#undef QT_CLOSEDIR + +#define QT_DIR DIR64 +#define QT_OPENDIR ::opendir64 +#define QT_CLOSEDIR ::closedir64 +#endif + +#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE-0 >= 500) +// AIX 4.3 and better +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf +#endif + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/android-base-head.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/android-base-head.conf new file mode 100644 index 000000000..9be611191 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/android-base-head.conf @@ -0,0 +1,77 @@ +load(device_config) + +# In early configure setup; nothing useful to be done here. +isEmpty(DEFAULT_ANDROID_NDK_ROOT): return() + +NDK_ROOT = $$(ANDROID_NDK_ROOT) +!exists($$NDK_ROOT) { + NDK_ROOT = $$DEFAULT_ANDROID_NDK_ROOT +} + +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, x86_64): NDK_TOOLCHAIN_PREFIX = x86_64 + else: equals(ANDROID_TARGET_ARCH, mips): NDK_TOOLCHAIN_PREFIX = mipsel-linux-android + else: equals(ANDROID_TARGET_ARCH, mips64): NDK_TOOLCHAIN_PREFIX = mips64el-linux-android + else: equals(ANDROID_TARGET_ARCH, arm64-v8a): NDK_TOOLCHAIN_PREFIX = aarch64-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, x86_64): NDK_TOOLS_PREFIX = x86_64-linux-android + else: equals(ANDROID_TARGET_ARCH, mips): NDK_TOOLS_PREFIX = mipsel-linux-android + else: equals(ANDROID_TARGET_ARCH, mips64): NDK_TOOLS_PREFIX = mips64el-linux-android + else: equals(ANDROID_TARGET_ARCH, arm64-v8a): NDK_TOOLS_PREFIX = aarch64-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, x86_64): ANDROID_ARCHITECTURE = x86_64 +else: equals(ANDROID_TARGET_ARCH, mips): ANDROID_ARCHITECTURE = mips +else: equals(ANDROID_TARGET_ARCH, mips64): ANDROID_ARCHITECTURE = mips64 +else: equals(ANDROID_TARGET_ARCH, arm64-v8a): ANDROID_ARCHITECTURE = arm64 +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 + + +ANDROID_SDK_ROOT = $$(ANDROID_SDK_ROOT) +isEmpty(ANDROID_SDK_ROOT): ANDROID_SDK_ROOT = $$DEFAULT_ANDROID_SDK_ROOT + +ANDROID_SDK_BUILD_TOOLS_REVISION = $$(ANDROID_BUILD_TOOLS_REVISION) +isEmpty(ANDROID_SDK_BUILD_TOOLS_REVISION) { + SDK_BUILD_TOOLS_REVISIONS = $$files($$ANDROID_SDK_ROOT/build-tools/*) + for (REVISION, SDK_BUILD_TOOLS_REVISIONS) { + BASENAME = $$basename(REVISION) + greaterThan(BASENAME, $$ANDROID_SDK_BUILD_TOOLS_REVISION): ANDROID_SDK_BUILD_TOOLS_REVISION = $$BASENAME + } +} + +CONFIG += $$ANDROID_PLATFORM +QMAKE_CFLAGS = -D__ANDROID_API__=$$replace(ANDROID_PLATFORM, "android-", "") + +ANDROID_PLATFORM_ROOT_PATH = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/ +ANDROID_PLATFORM_PATH = $$ANDROID_PLATFORM_ROOT_PATH/usr + +equals(ANDROID_TARGET_ARCH, x86_64)|equals(ANDROID_TARGET_ARCH, mips64): \ + QMAKE_ANDROID_PLATFORM_LIBDIR = $${QMAKE_ANDROID_PLATFORM_LIBDIR}64 + +CROSS_COMPILE = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX- diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/android-base-tail.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/android-base-tail.conf new file mode 100644 index 000000000..160caf011 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/android-base-tail.conf @@ -0,0 +1,99 @@ +# In early configure setup; nothing useful to be done here. +isEmpty(DEFAULT_ANDROID_NDK_ROOT): return() + +# -fstack-protector-strong offers good protection against stack smashing attacks. +# It is (currently) enabled only on Android because we know for sure that Andoroid compilers supports it +QMAKE_CFLAGS += -fstack-protector-strong -DANDROID + +equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ + QMAKE_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove +else: equals(ANDROID_TARGET_ARCH, armeabi): \ + QMAKE_CFLAGS += -march=armv5te -mtune=xscale -msoft-float -fno-builtin-memmove +# -fno-builtin-memmove is used to workaround https://code.google.com/p/android/issues/detail?id=81692 + +QMAKE_CFLAGS_WARN_ON = -Wall -W +QMAKE_CFLAGS_WARN_OFF = +equals(ANDROID_TARGET_ARCH, armeabi-v7a) | equals(ANDROID_TARGET_ARCH, armeabi) { + QMAKE_CFLAGS_RELEASE = $$QMAKE_ARM_CFLAGS_RELEASE + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = $$QMAKE_ARM_CFLAGS_RELEASE_WITH_DEBUGINFO + QMAKE_CFLAGS_DEBUG = -g -marm -O0 + equals(ANDROID_TARGET_ARCH, armeabi):if(equals(NDK_TOOLCHAIN_VERSION, 4.8)|equals(NDK_TOOLCHAIN_VERSION, 4.9)) { + DEFINES += QT_OS_ANDROID_GCC_48_WORKAROUND + } else { + QMAKE_CFLAGS_RELEASE += -mthumb + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -mthumb + } + + # Don't override our options with -O3 + QMAKE_CFLAGS_OPTIMIZE_FULL = +} else { + QMAKE_CFLAGS_RELEASE = -O2 + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -O2 + QMAKE_CFLAGS_DEBUG = -g +} + +QMAKE_CFLAGS_SHLIB = -fPIC +QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_THREAD = -D_REENTRANT +QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden +QMAKE_CFLAGS_NEON = -mfpu=neon + +QMAKE_CXXFLAGS_CXX11 = -std=c++11 +QMAKE_CXXFLAGS_CXX14 = -std=c++14 +QMAKE_CXXFLAGS_CXX1Z = -std=c++1z +QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++11 +QMAKE_CXXFLAGS_GNUCXX14 = -std=gnu++14 +QMAKE_CXXFLAGS_GNUCXX1Z = -std=gnu++1z + +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +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 + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P + +QMAKE_STRIP = +#$${CROSS_COMPILE}strip + +QMAKE_RANLIB = $${CROSS_COMPILE}ranlib + +QMAKE_INCDIR_POST = +QMAKE_LIBDIR_POST = $$ANDROID_SOURCES_CXX_STL_LIBDIR +QMAKE_INCDIR_X11 = +QMAKE_LIBDIR_X11 = +QMAKE_INCDIR_OPENGL = +QMAKE_LIBDIR_OPENGL = + +QMAKE_LINK_SHLIB = $$QMAKE_LINK +QMAKE_LFLAGS = --sysroot=$$ANDROID_PLATFORM_ROOT_PATH +QMAKE_RPATHLINK = $$QMAKE_ANDROID_PLATFORM_LIBDIR +QMAKE_LFLAGS_APP = -Wl,--no-undefined -Wl,-z,noexecstack -shared +QMAKE_LFLAGS_SHLIB = -Wl,--no-undefined -Wl,-z,noexecstack -shared +QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_NOUNDEF = -Wl,--no-undefined +QMAKE_LFLAGS_RPATH = -Wl,-rpath= +QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link= + +QMAKE_LIBS_PRIVATE = $$ANDROID_CXX_STL_LIBS -llog -lz -lm -ldl -lc +QMAKE_LIBS_X11 = +QMAKE_LIBS_THREAD = +QMAKE_LIBS_EGL = -lEGL +QMAKE_LIBS_OPENGL = +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 + + +!exists($$NDK_ROOT): error("You need to set the ANDROID_NDK_ROOT environment variable to point to your Android NDK.") + +load(qt_config) + +QMAKE_DEFAULT_LIBDIRS = $$QMAKE_LIBDIR +QMAKE_DEFAULT_INCDIRS = $$QMAKE_INCDIR diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/android/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/android/qplatformdefs.h new file mode 100644 index 000000000..048eb47c6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/android/qplatformdefs.h @@ -0,0 +1,162 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Collabora Ltd, author +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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 + +// 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 + +// We are hot - unistd.h should have turned on the specific APIs we requested + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#ifndef QT_NO_IPV6IFNAME +#include +#endif + +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +#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 + +#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 + +#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/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/angle.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/angle.conf new file mode 100644 index 000000000..fad0e719d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/angle.conf @@ -0,0 +1,13 @@ +# Renaming these files requires that the LIBRARY entry of their corresponding +# def files are also updated to reflect the name. +# The .def files are found in the angle directories: +# +# qtbase\src\3rdparty\angle\src\libEGL\libEGL[d?].def +# qtbase\src\3rdparty\angle\src\libEGL\libGLESv2[d?].def +# +# If a combined ANGLE library is used, the def files will automatically be +# combined into QtANGLE[d?].def by QtAngle.pro. + +LIBEGL_NAME = libEGL +LIBGLESV2_NAME = libGLESv2 +LIBQTANGLE_NAME = QtANGLE diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/bsd/bsd.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/bsd/bsd.conf new file mode 100644 index 000000000..390dfc58d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/bsd/bsd.conf @@ -0,0 +1,30 @@ +# +# common qmake configuration for *BSD +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM += bsd + +include(../unix.conf) + +QMAKE_CFLAGS_THREAD = -pthread + +QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD + +QMAKE_LFLAGS_THREAD = -pthread +QMAKE_LFLAGS_GCSECTIONS = -Wl,--gc-sections + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_EXECINFO = -lexecinfo +QMAKE_LIBS_X11 = -lXext -lX11 -lm +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = + +QMAKE_AR = ar cqs +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/bsd/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/bsd/qplatformdefs.h new file mode 100644 index 000000000..6c3a00b19 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/bsd/qplatformdefs.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_BSD_PLATFORMDEFS_H +#define Q_BSD_PLATFORMDEFS_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 + + +// We are hot - unistd.h should have turned on the specific APIs we requested + + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef QT_NO_IPV6IFNAME +#include +#endif + +#include "../posix/qplatformdefs.h" + +#undef QT_OPEN_LARGEFILE +#define QT_OPEN_LARGEFILE 0 + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/c89/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/c89/qplatformdefs.h new file mode 100644 index 000000000..b931c0384 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/c89/qplatformdefs.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_C89_QPLATFORMDEFS_H +#define Q_C89_QPLATFORMDEFS_H + +// #include + +#define QT_FPOS_T fpos_t +#define QT_OFF_T long + +#define QT_FOPEN ::fopen +#define QT_FSEEK ::fseek +#define QT_FTELL ::ftell +#define QT_FGETPOS ::fgetpos +#define QT_FSETPOS ::fsetpos + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/clang-mac.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/clang-mac.conf new file mode 100644 index 000000000..cbae2e626 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/clang-mac.conf @@ -0,0 +1,13 @@ + +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 + +QMAKE_XCODE_GCC_VERSION = com.apple.compilers.llvm.clang.1_0 + +QMAKE_CXXFLAGS += -stdlib=libc++ +QMAKE_LFLAGS += -stdlib=libc++ +QMAKE_AR_LTCG = libtool -static -o + +QMAKE_CFLAGS_APPLICATION_EXTENSION = -fapplication-extension diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/clang.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/clang.conf new file mode 100644 index 000000000..e003b947a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/clang.conf @@ -0,0 +1,44 @@ +# +# Qmake configuration for Clang on Linux, OS X and iOS +# + +QMAKE_COMPILER = gcc clang llvm # clang pretends to be gcc + +QMAKE_CC = clang +QMAKE_CXX = clang++ + +QMAKE_LINK_C = $$QMAKE_CC +QMAKE_LINK_C_SHLIB = $$QMAKE_CC + +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX + +CONFIG += clang_pch_style +QMAKE_PCH_OUTPUT_EXT = .pch + +QMAKE_CFLAGS_ISYSTEM = -isystem +QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE = -Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_LTCG = -flto +QMAKE_CFLAGS_DISABLE_LTCG = -fno-lto + +QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE +QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG +QMAKE_CXXFLAGS_DISABLE_LTCG = $$QMAKE_CFLAGS_DISABLE_LTCG +QMAKE_CXXFLAGS_CXX11 = -std=c++11 +QMAKE_CXXFLAGS_CXX14 = -std=c++1y +QMAKE_CXXFLAGS_CXX1Z = -std=c++1z +QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++11 +QMAKE_CXXFLAGS_GNUCXX14 = -std=gnu++1y +QMAKE_CXXFLAGS_GNUCXX1Z = -std=gnu++1z + +QMAKE_LFLAGS_CXX11 = +QMAKE_LFLAGS_CXX14 = +QMAKE_LFLAGS_CXX1Z = +QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG + +# Wrapper tools that understand .o/.a files with LLVM bytecode instead of machine code +QMAKE_AR_LTCG = llvm-ar cqs +QMAKE_NM_LTCG = llvm-nm -P +QMAKE_RANLIB_LTCG = true # No need to run, since llvm-ar has "s" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++-base.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++-base.conf new file mode 100644 index 000000000..c42c46b0e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++-base.conf @@ -0,0 +1,38 @@ +# +# Qmake configuration for the GNU C++ compiler +# +# 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. +# + +QMAKE_COMPILER = gcc + +QMAKE_CC = gcc + +QMAKE_LINK_C = $$QMAKE_CC +QMAKE_LINK_C_SHLIB = $$QMAKE_CC + +QMAKE_CXX = g++ + +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX + +QMAKE_PCH_OUTPUT_EXT = .gch + +QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE} +QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_CXXFLAGS_CXX11 = -std=c++11 +QMAKE_CXXFLAGS_CXX14 = -std=c++1y +QMAKE_CXXFLAGS_CXX1Z = -std=c++1z +QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++11 +QMAKE_CXXFLAGS_GNUCXX14 = -std=gnu++1y +QMAKE_CXXFLAGS_GNUCXX1Z = -std=gnu++1z +QMAKE_LFLAGS_CXX11 = +QMAKE_LFLAGS_CXX14 = +QMAKE_LFLAGS_CXX1Z = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++-macx.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++-macx.conf new file mode 100644 index 000000000..0ee813082 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++-macx.conf @@ -0,0 +1,22 @@ +# +# Qmake configuration for the GNU C++ compiler on OS X +# +# 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(g++-base.conf) + +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -gdwarf-2 +QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -gdwarf-2 +QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += -g -gdwarf-2 + +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 +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/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++-unix.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++-unix.conf new file mode 100644 index 000000000..a493cd598 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++-unix.conf @@ -0,0 +1,14 @@ +# +# Qmake configuration for the GNU C++ compiler on *nix-systems +# +# 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(g++-base.conf) + +QMAKE_LFLAGS_RELEASE += -Wl,-O1 +QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++.conf new file mode 100644 index 000000000..c5a34a9db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/g++.conf @@ -0,0 +1,12 @@ +# +# Notice: g++.conf has been split into g++-base.conf and g++-unix.conf +# +# This file will make sure that anyone who's still including g++.conf +# directly will get a warning and an explanation of how to fix their mkspec +# + +warning($$escape_expand("Your mkspec is including 'common/g++.conf', but the mkspecs have been refactored\\n\\tTo fix this include 'common/gcc-base-$${TARGET_PLATFORM}.conf and 'common/g++-$${TARGET_PLATFORM}.conf' instead")) + +# We include gcc-base-unix.conf and g++-unix.conf to keep the behavior of the old g++.conf +include(gcc-base-unix.conf) +include(g++-unix.conf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/gcc-base-mac.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/gcc-base-mac.conf new file mode 100644 index 000000000..600895253 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/gcc-base-mac.conf @@ -0,0 +1,24 @@ +# +# Base qmake configuration for GCC on 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. +# +# To verify that your change has the desired effect on the final configuration +# you can use the manual test in tests/manual/mkspecs. +# + +QMAKE_CFLAGS_PIC = -fPIC + +include(gcc-base.conf) + +QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__=4 __APPLE_CC__ + +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} +QMAKE_LFLAGS_HEADERPAD += -headerpad_max_install_names +QMAKE_LFLAGS_VERSION += -current_version$${LITERAL_WHITESPACE} +QMAKE_LFLAGS_COMPAT_VERSION += -compatibility_version$${LITERAL_WHITESPACE} + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/gcc-base-unix.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/gcc-base-unix.conf new file mode 100644 index 000000000..2d63877dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/gcc-base-unix.conf @@ -0,0 +1,27 @@ +# +# Base qmake configuration for GCC on *nix-systems +# +# 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. +# + +QMAKE_CFLAGS_PIC = -fPIC + +include(gcc-base.conf) + +QMAKE_LFLAGS_SHLIB += -shared +QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME += -Wl,-soname, +QMAKE_LFLAGS_THREAD += +QMAKE_LFLAGS_RPATH = -Wl,-rpath, +QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link, +QMAKE_LFLAGS_NEW_DTAGS = -Wl,--enable-new-dtags +QMAKE_LFLAGS_USE_GOLD = -fuse-ld=gold + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions +QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list, +QMAKE_LFLAGS_VERSION_SCRIPT = -Wl,--version-script, diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/gcc-base.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/gcc-base.conf new file mode 100644 index 000000000..6a2fa4f50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/gcc-base.conf @@ -0,0 +1,110 @@ +# +# This file is used as a basis for the following compilers: +# +# - The GNU C++ compiler (g++) +# - LLVM +# - Clang +# +# Platform-specific options shared by these compilers are put into: +# +# - gcc-base-mac.conf +# - gcc-base-unix.conf +# +# These base files are then combined with configurations for each compiler: +# +# - g++-base.conf +# - g++-macx.conf +# - g++-unix.conf +# - llvm.conf +# - clang.conf +# +# The combination happens in the top level mkspec, by including a platform- +# 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 +# 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. +# +# To verify that your change has the desired effect on the final configuration +# you can use the manual test in tests/manual/mkspecs. +# + +QMAKE_CFLAGS_OPTIMIZE = -O2 +QMAKE_CFLAGS_OPTIMIZE_FULL = -O3 +QMAKE_CFLAGS_OPTIMIZE_DEBUG = -Og +QMAKE_CFLAGS_OPTIMIZE_SIZE = -Os + +!equals(QMAKE_HOST.os, Windows): QMAKE_CFLAGS += -pipe +QMAKE_CFLAGS_DEPS += -M +QMAKE_CFLAGS_WARN_ON += -Wall -W +QMAKE_CFLAGS_WARN_OFF += -w +QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g +QMAKE_CFLAGS_DEBUG += -g +QMAKE_CFLAGS_SHLIB += $$QMAKE_CFLAGS_PIC +QMAKE_CFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_PIC +QMAKE_CFLAGS_APP += $$QMAKE_CFLAGS_PIC +QMAKE_CFLAGS_ISYSTEM = -isystem +QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden +QMAKE_CFLAGS_EXCEPTIONS_OFF += -fno-exceptions +QMAKE_CFLAGS_SPLIT_SECTIONS += -ffunction-sections +QMAKE_CFLAGS_LTCG = -flto -fno-fat-lto-objects +QMAKE_CFLAGS_LTCG_FATOBJECTS = -ffat-lto-objects +QMAKE_CFLAGS_DISABLE_LTCG = -fno-lto + +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_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO +QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG +QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB +QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB +QMAKE_CXXFLAGS_APP += $$QMAKE_CFLAGS_APP +QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden +QMAKE_CXXFLAGS_EXCEPTIONS_OFF += $$QMAKE_CFLAGS_EXCEPTIONS_OFF +QMAKE_CXXFLAGS_SPLIT_SECTIONS += $$QMAKE_CFLAGS_SPLIT_SECTIONS +QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG +QMAKE_CXXFLAGS_LTCG_FATOBJECTS = $$QMAKE_CFLAGS_LTCG_FATOBJECTS +QMAKE_CXXFLAGS_DISABLE_LTCG = $$QMAKE_CFLAGS_DISABLE_LTCG + +QMAKE_LFLAGS += +QMAKE_LFLAGS_DEBUG += +QMAKE_LFLAGS_APP += +QMAKE_LFLAGS_RELEASE += +QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += +QMAKE_LFLAGS_EXCEPTIONS_OFF += +QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG -fuse-linker-plugin + +QMAKE_CFLAGS_SSE2 += -msse2 +QMAKE_CFLAGS_SSE3 += -msse3 +QMAKE_CFLAGS_SSSE3 += -mssse3 +QMAKE_CFLAGS_SSE4_1 += -msse4.1 +QMAKE_CFLAGS_SSE4_2 += -msse4.2 +QMAKE_CFLAGS_F16C += -mf16c +QMAKE_CFLAGS_AVX += -mavx +QMAKE_CFLAGS_AVX2 += -mavx2 +QMAKE_CFLAGS_AVX512F += -mavx512f +QMAKE_CFLAGS_AVX512ER += -mavx512er +QMAKE_CFLAGS_AVX512CD += -mavx512cd +QMAKE_CFLAGS_AVX512PF += -mavx512pf +QMAKE_CFLAGS_AVX512DQ += -mavx512dq +QMAKE_CFLAGS_AVX512BW += -mavx512bw +QMAKE_CFLAGS_AVX512VL += -mavx512vl +QMAKE_CFLAGS_AVX512IFMA += -mavx512ifma +QMAKE_CFLAGS_AVX512VBMI += -mavx512vbmi +QMAKE_CFLAGS_NEON += -mfpu=neon +QMAKE_CFLAGS_MIPS_DSP += -mdsp +QMAKE_CFLAGS_MIPS_DSPR2 += -mdspr2 + +# Wrapper tools that understand .o/.a files with GIMPLE instead of machine code +QMAKE_AR_LTCG = gcc-ar cqs +QMAKE_NM_LTCG = gcc-nm -P +QMAKE_RANLIB_LTCG = true # No need to run since gcc-ar has "s" + +include(sanitize.conf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-base.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-base.conf new file mode 100644 index 000000000..a66971578 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-base.conf @@ -0,0 +1,40 @@ +# +# This file is used as a basis for the following compilers: +# +# - The Green Hills Software compiler +# + +QMAKE_COMPILER = ghs + +QMAKE_CFLAGS += --signed_fields --no_commons --diag_suppress=1,82,228,236,381,611,961,997,1795,1974 +QMAKE_CFLAGS_DEPS += -MD +QMAKE_CFLAGS_RELEASE += -Ospeed -Olink -Omax +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE -g +QMAKE_CFLAGS_DEBUG += -g -Omaxdebug +QMAKE_CFLAGS_SHLIB += +QMAKE_CFLAGS_STATIC_LIB += +QMAKE_CFLAGS_APP += +QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_HIDESYMS += + +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor +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_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO +QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG +QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB +QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB +QMAKE_CXXFLAGS_APP += $$QMAKE_CFLAGS_APP +QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS +QMAKE_CXXFLAGS_CXX11 += --c++11 --thread_local_storage +QMAKE_CXXFLAGS_EXCEPTIONS_ON += --exceptions + +QMAKE_LFLAGS += --signed_fields --no_commons --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor +QMAKE_LFLAGS_DEBUG += -g -Omaxdebug +QMAKE_LFLAGS_RELEASE += -Ospeed -Olink -Omax +QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_LFLAGS_RELEASE -g +QMAKE_LFLAGS_CXX11 += --c++11 --thread_local_storage +QMAKE_LFLAGS_EXCEPTIONS_ON += --exceptions diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-integrity-armv7.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-integrity-armv7.conf new file mode 100644 index 000000000..8cdff7538 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-integrity-armv7.conf @@ -0,0 +1,21 @@ +# +# Base qmake configuration for GHS on INTEGRITY +# +MAKEFILE_GENERATOR = UNIX + +QMAKE_PLATFORM = integrity + +include(unix.conf) + +QMAKE_CFLAGS += -bigswitch + +include(ghs-base.conf) + +QMAKE_CC = cxintarm -bsp $$(INTEGRITY_BSP) -os_dir $$(INTEGRITY_DIR) -non_shared +QMAKE_CXX = cxintarm -bsp $$(INTEGRITY_BSP) -os_dir $$(INTEGRITY_DIR) -non_shared +QMAKE_LINK = $$QMAKE_CXX +QMAKE_AR = $$QMAKE_CXX -archive -o + +QMAKE_LIBS_GUI = -lfbdev -lhiddev + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-integrity-armv8.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-integrity-armv8.conf new file mode 100644 index 000000000..e454cfd24 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-integrity-armv8.conf @@ -0,0 +1,27 @@ +# +# Base qmake configuration for INTEGRITY armv8 targets +# +MAKEFILE_GENERATOR = UNIX + +QMAKE_PLATFORM = integrity + +include(unix.conf) + +include(ghs-base.conf) + +bsp_name = $$(INTEGRITY_BSP) +isEmpty(bsp_name): \ + error("This qmakespec requires $INTEGRITY_BSP to be set") + +os_directory = $$(INTEGRITY_DIR) +isEmpty(os_directory): \ + error("This qmakespec requires $INTEGRITY_DIR to be set") + +QMAKE_CC = cxintarm64 -bsp $$bsp_name -os_dir $$os_directory -non_shared +QMAKE_CXX = cxintarm64 -bsp $$bsp_name -os_dir $$os_directory -non_shared +QMAKE_LINK = $$QMAKE_CXX +QMAKE_AR = $$QMAKE_CXX -archive -o + +QMAKE_CFLAGS += -bigswitch +QMAKE_CXXFLAGS += -bigswitch +QMAKE_LFLAGS += -bigswitch diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-integrity-x86.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-integrity-x86.conf new file mode 100644 index 000000000..5525b8cd1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ghs-integrity-x86.conf @@ -0,0 +1,17 @@ +# +# Base qmake configuration for GHS on INTEGRITY +# +MAKEFILE_GENERATOR = UNIX + +QMAKE_PLATFORM = integrity + +include(unix.conf) + +include(ghs-base.conf) + +QMAKE_CC = cxint86 -bsp $$(INTEGRITY_BSP) -os_dir $$(INTEGRITY_DIR) -non_shared +QMAKE_CXX = cxint86 -bsp $$(INTEGRITY_BSP) -os_dir $$(INTEGRITY_DIR) -non_shared +QMAKE_LINK = $$QMAKE_CXX +QMAKE_AR = $$QMAKE_CXX -archive -o + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/integrity/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/integrity/qplatformdefs.h new file mode 100644 index 000000000..7039318f2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/integrity/qplatformdefs.h @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Green Hills Software. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_INTEGRITY_PLATFORMDEFS_H +#define Q_INTEGRITY_PLATFORMDEFS_H + +// Get Qt defines/settings + +#include "qglobal.h" + +#include +#include +#include + +#define __STDC_CONSTANT_MACROS + +#include +#include +#include +#include +#include + +#include +#include +#include +// INTEGRITY doesn't have the System V header. This is not a standard +// POSIX header, it's only documented in the Single UNIX Specification. +// The preferred POSIX compliant way to share memory is to use the functions +// in that comply with the POSIX Real Time Interface (1003.1b). +#include +#include +#include +#include +#include +#ifndef QT_NO_IPV6IFNAME +#include +#endif + +// for htonl +#include + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +// INTEGRITY doesn't have getpagesize() +inline int getpagesize() +{ + return sysconf(_SC_PAGESIZE); +} + +// geteuid() is only available with multi-process posix, but we do not want +// to rely on it +inline uid_t geteuid(void) +{ + return 0; +} + +// getuid() is only available with multi-process posix, but we do not want +// to rely on it +inline uid_t getuid(void) +{ + return 0; +} + +#include "../posix/qplatformdefs.h" +#undef QT_OPEN_LARGEFILE +#define QT_OPEN_LARGEFILE 0 +#define PATH_MAX 1024 + +#endif // Q_INTEGRITY_PLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ios.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ios.conf new file mode 100644 index 000000000..dd9b29f9e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/ios.conf @@ -0,0 +1,20 @@ +# +# qmake common configuration for iOS +# + +QMAKE_PLATFORM += ios +QMAKE_MAC_SDK = iphoneos + +simulator.sdk = iphonesimulator +simulator.target = simulator +simulator.dir_affix = $${simulator.sdk} +simulator.CONFIG = $${simulator.sdk} +simulator.deployment_identifier = ios-simulator + +device.sdk = iphoneos +device.target = device +device.dir_affix = $${device.sdk} +device.CONFIG = $${device.sdk} +device.deployment_identifier = $${device.sdk} + +include(uikit.conf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/linux.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/linux.conf new file mode 100644 index 000000000..68e566aea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/linux.conf @@ -0,0 +1,51 @@ +# +# qmake configuration for common linux +# + +QMAKE_PLATFORM += linux + +include(unix.conf) + +QMAKE_CFLAGS_THREAD += -D_REENTRANT +QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD +QMAKE_LFLAGS_GCSECTIONS = -Wl,--gc-sections + +QMAKE_LFLAGS_REL_RPATH = -Wl,-z,origin +QMAKE_REL_RPATH_BASE = $ORIGIN + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = +QMAKE_LIBDIR_X11 = +QMAKE_INCDIR_OPENGL = +QMAKE_LIBDIR_OPENGL = +QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL +QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL +QMAKE_INCDIR_EGL = +QMAKE_LIBDIR_EGL = +QMAKE_INCDIR_OPENVG = +QMAKE_LIBDIR_OPENVG = + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = -ldl +QMAKE_LIBS_X11 = -lXext -lX11 -lm +QMAKE_LIBS_EGL = -lEGL +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 +QMAKE_LIBS_OPENVG = -lOpenVG +QMAKE_LIBS_THREAD = -lpthread + +QMAKE_INCDIR_WAYLAND = +QMAKE_LIBS_WAYLAND_CLIENT = -lwayland-client +QMAKE_LIBS_WAYLAND_SERVER = -lwayland-server +QMAKE_LIBDIR_WAYLAND = +QMAKE_DEFINES_WAYLAND = +QMAKE_WAYLAND_SCANNER = wayland-scanner + +QMAKE_AR = ar cqs +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/llvm.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/llvm.conf new file mode 100644 index 000000000..c906dce6f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/llvm.conf @@ -0,0 +1,18 @@ +# +# Qmake configuration for LLVM on Linux, OS X and iOS +# + +QMAKE_COMPILER = gcc llvm + +QMAKE_CC = llvm-gcc +QMAKE_CXX = llvm-g++ + +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX + +QMAKE_PCH_OUTPUT_EXT = .gch + +QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE} +QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/mac.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/mac.conf new file mode 100644 index 000000000..5208379f9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/mac.conf @@ -0,0 +1,44 @@ +# +# qmake configuration common to OS X and iOS +# + +!load(device_config): error(Could not successfully load device configuration) + +QMAKE_PLATFORM += mac darwin + +MAKEFILE_GENERATOR = UNIX +CONFIG += app_bundle incremental global_init_link_order lib_version_first sdk +QMAKE_INCREMENTAL_STYLE = sublib + +include(unix.conf) + +QMAKE_RESOURCE = /Developer/Tools/Rez +QMAKE_EXTENSION_SHLIB = dylib +QMAKE_LIBDIR = + +# 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_LFLAGS_RPATH = -Wl,-rpath, +QMAKE_LFLAGS_GCSECTIONS = -Wl,-dead_strip + +QMAKE_LFLAGS_REL_RPATH = +QMAKE_REL_RPATH_BASE = @loader_path + +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_OPENGL = -framework OpenGL -framework AGL +QMAKE_LIBS_THREAD = + +QMAKE_ACTOOL = actool + +QMAKE_DSYMUTIL = dsymutil +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += -S -x + +QMAKE_AR = ar cq +QMAKE_RANLIB = ranlib -s +QMAKE_NM = nm -P diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/mac/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/mac/qplatformdefs.h new file mode 100644 index 000000000..5cacd5a74 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/mac/qplatformdefs.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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 + + +// We are hot - unistd.h should have turned on the specific APIs we requested + + +#include +#include +#include +#include +#include +#include +#define QT_NO_LIBRARY_UNLOAD + +#include +#include +#include +#include +#include +#include +#include +#include +#define __APPLE_USE_RFC_3542 +#include +#ifndef QT_NO_IPV6IFNAME +#include +#endif + +#include "../posix/qplatformdefs.h" + +#undef QT_OPEN_LARGEFILE +#undef QT_SOCKLEN_T +#undef QT_SIGNAL_IGNORE + +#define QT_OPEN_LARGEFILE 0 + +#define QT_SOCKLEN_T socklen_t + +#define QT_SIGNAL_IGNORE (void (*)(int))1 + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/macx.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/macx.conf new file mode 100644 index 000000000..4be0eb3c3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/macx.conf @@ -0,0 +1,14 @@ +# +# qmake configuration for common OS X +# + +QMAKE_PLATFORM += macos osx macx +QMAKE_MAC_SDK = macosx + +device.sdk = macosx +device.target = device +device.dir_affix = $${device.sdk} +device.CONFIG = $${device.sdk} +device.deployment_identifier = $${device.sdk} + +include(mac.conf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/msvc-desktop.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/msvc-desktop.conf new file mode 100644 index 000000000..496ca1179 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/msvc-desktop.conf @@ -0,0 +1,111 @@ +# +# This file is used as a basis for the following compilers: +# +# - Microsoft C/C++ Optimizing Compiler (all desktop versions) +# - Intel C++ Compiler on Windows +# - Clang-cl +# +# Baseline: +# +# - Visual Studio 2005 (8.0), VC++ 14.0 +# +# Version-specific settings go in msvc-version.conf (loaded by default_pre) +# + +MAKEFILE_GENERATOR = MSVC.NET +QMAKE_PLATFORM = win32 +QMAKE_COMPILER = msvc +CONFIG += incremental flat debug_and_release debug_and_release_target precompile_header autogen_precompile_source embed_manifest_dll embed_manifest_exe +DEFINES += UNICODE _UNICODE WIN32 +QMAKE_COMPILER_DEFINES += _WIN32 +contains(QMAKE_TARGET.arch, x86_64) { + DEFINES += WIN64 + QMAKE_COMPILER_DEFINES += _WIN64 +} + +QMAKE_CFLAGS_OPTIMIZE = -O2 +QMAKE_CFLAGS_OPTIMIZE_SIZE = -O1 + +QMAKE_CC = cl +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = bison -y +QMAKE_YACCFLAGS = -d +QMAKE_CFLAGS = -nologo -Zc:wchar_t +QMAKE_CFLAGS_WARN_ON = -W3 +QMAKE_CFLAGS_WARN_OFF = -W0 +QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MD +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MD +QMAKE_CFLAGS_DEBUG = -Zi -MDd +QMAKE_CFLAGS_YACC = +QMAKE_CFLAGS_LTCG = -GL + +contains(QMAKE_TARGET.arch, x86_64) { + # SSE2 is mandatory on 64-bit mode, so skip the option. It triggers: + # cl : Command line warning D9002 : ignoring unknown option '-arch:SSE2' + QMAKE_CFLAGS_SSE2 = +} else { + QMAKE_CFLAGS_SSE2 = -arch:SSE2 +} +QMAKE_CFLAGS_SSE3 = $$QMAKE_CFLAGS_SSE2 +QMAKE_CFLAGS_SSSE3 = $$QMAKE_CFLAGS_SSE2 +QMAKE_CFLAGS_SSE4_1 = $$QMAKE_CFLAGS_SSE2 +QMAKE_CFLAGS_SSE4_2 = $$QMAKE_CFLAGS_SSE2 + +QMAKE_CXX = $$QMAKE_CC +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON -w34100 -w34189 -w44996 +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_YACC = $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG +QMAKE_CXXFLAGS_STL_ON = -EHsc +QMAKE_CXXFLAGS_STL_OFF = +QMAKE_CXXFLAGS_RTTI_ON = -GR +QMAKE_CXXFLAGS_RTTI_OFF = +QMAKE_CXXFLAGS_EXCEPTIONS_ON = -EHsc +QMAKE_CXXFLAGS_EXCEPTIONS_OFF = + +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_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<< + +QMAKE_LINK = link +QMAKE_LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT +QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO +QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF /INCREMENTAL:NO +QMAKE_LFLAGS_DEBUG = /DEBUG +QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE +QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS +QMAKE_LFLAGS_EXE = \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\" +QMAKE_LFLAGS_DLL = /DLL +QMAKE_LFLAGS_LTCG = /LTCG +QMAKE_PREFIX_SHLIB = +QMAKE_EXTENSION_SHLIB = dll +QMAKE_PREFIX_STATICLIB = +QMAKE_EXTENSION_STATICLIB = 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 +QMAKE_LIBS_OPENGL_ES2 = gdi32.lib user32.lib +QMAKE_LIBS_OPENGL_ES2_DEBUG = gdi32.lib user32.lib +QMAKE_LIBS_COMPAT = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib +QMAKE_LIBS_QT_ENTRY = -lqtmain + +QMAKE_IDL = midl /NOLOGO +QMAKE_LIB = lib /NOLOGO +QMAKE_RC = rc /NOLOGO + +VCPROJ_EXTENSION = .vcproj +VCSOLUTION_EXTENSION = .sln +VCPROJ_KEYWORD = Qt4VSv1.0 + +include(angle.conf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/msvc-version.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/msvc-version.conf new file mode 100644 index 000000000..ba74c49f9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/msvc-version.conf @@ -0,0 +1,95 @@ +# +# qmake configuration for Microsoft Visual Studio C/C++ Compiler +# This file is used by win32-msvc, win32-clang-msvc, and all +# winrt-XXX-msvcXXX specs +# + +# +# Version-specific changes +# + +isEmpty(QMAKE_MSC_VER): error("msvc-version.conf loaded but QMAKE_MSC_VER isn't set") + +MSVC_VER = 8.0 +COMPAT_MKSPEC = win32-msvc2005 + +greaterThan(QMAKE_MSC_VER, 1499) { + # Visual Studio 2008 (9.0) / Visual C++ 15.0 and up + MSVC_VER = 9.0 + COMPAT_MKSPEC = win32-msvc2008 + QMAKE_CFLAGS_MP = -MP + QMAKE_CXXFLAGS_MP = $$QMAKE_CFLAGS_MP +} + +greaterThan(QMAKE_MSC_VER, 1599) { + # Visual Studio 2010 (10.0) / Visual C++ 16.0 and up + MSVC_VER = 10.0 + COMPAT_MKSPEC = win32-msvc2010 + MAKEFILE_GENERATOR = MSBUILD + + QMAKE_CFLAGS_AVX = -arch:AVX + QMAKE_CFLAGS_AVX2 = -arch:AVX + + VCPROJ_EXTENSION = .vcxproj +} + +greaterThan(QMAKE_MSC_VER, 1699) { + # Visual Studio 2012 (11.0) / Visual C++ 17.0 and up + MSVC_VER = 11.0 + COMPAT_MKSPEC = win32-msvc2012 + QMAKE_CXXFLAGS_EXCEPTIONS_OFF = /wd4530 /wd4577 + QT_CONFIG += c++11 + CONFIG += c++11 +} + +greaterThan(QMAKE_MSC_VER, 1799) { + # Visual Studio 2013 (12.0) / Visual C++ 18.0 and up + MSVC_VER = 12.0 + COMPAT_MKSPEC = win32-msvc2013 + QMAKE_CFLAGS += -FS + QMAKE_CXXFLAGS += -FS -Zc:rvalueCast -Zc:inline + + QMAKE_CFLAGS_F16C = -arch:AVX + + equals(QMAKE_MSC_VER, 1800) { + QMAKE_CFLAGS_RELEASE += -Zc:strictStrings + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -Zc:strictStrings + QMAKE_CXXFLAGS_RELEASE += -Zc:strictStrings + QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -Zc:strictStrings + } +} + +greaterThan(QMAKE_MSC_VER, 1899) { + # Visual Studio 2015 (14.0) / Visual C++ 19.0 and up + MSVC_VER = 14.0 + COMPAT_MKSPEC = win32-msvc2015 + QMAKE_CFLAGS += -Zc:strictStrings + QMAKE_CFLAGS_WARN_ON += -w44456 -w44457 -w44458 + QMAKE_CFLAGS_AVX2 = -arch:AVX2 + QMAKE_CXXFLAGS += -Zc:strictStrings -Zc:throwingNew + QMAKE_CXXFLAGS_WARN_ON += -w44456 -w44457 -w44458 -wd4577 -wd4467 + + greaterThan(QMAKE_MSC_FULL_VER, 190023918):!intel_icl { + isEmpty(QT_CLANG_MAJOR_VERSION)|!lessThan(QT_CLANG_MAJOR_VERSION, 4) { + QMAKE_CFLAGS_UTF8_SOURCE = -utf-8 + } + } +} + +greaterThan(QMAKE_MSC_VER, 1909) { + # Visual Studio 2017 (15.0) / Visual C++ 19.10 and up + MSVC_VER = 15.0 + COMPAT_MKSPEC = win32-msvc2017 + QMAKE_CXXFLAGS += -Zc:referenceBinding + # For now permissive fails as soon as UWP API comes into play. In qtbase this + # API is used in direct2d, but also in multimedia, positioning and sensors. + # We can try again with a later version of Visual Studio. + # QMAKE_CXXFLAGS_STRICTCXX = -permissive- +} + +greaterThan(QMAKE_MSC_VER, 1910) { + # No compat spec past MSVC 2017 + COMPAT_MKSPEC = +} + +!isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/g++-nacl32.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/g++-nacl32.conf new file mode 100644 index 000000000..319d3ca47 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/g++-nacl32.conf @@ -0,0 +1,12 @@ + +# 32-bit x86 nacl configuration. + +QMAKE_CC = i686-nacl-gcc +QMAKE_CXX = i686-nacl-g++ +QMAKE_LINK = i686-nacl-g++ +QMAKE_LINK_SHLIB = i686-nacl-g++ +QMAKE_AR = i686-nacl-ar q +QMAKE_OBJCOPY = i686-nacl-objcopy +QMAKE_NM = i686-nacl-nm -P +QMAKE_STRIP = i686-nacl-strip + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/g++-nacl64.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/g++-nacl64.conf new file mode 100644 index 000000000..8a2053577 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/g++-nacl64.conf @@ -0,0 +1,12 @@ + +# 32-bit x86 nacl configuration. + +QMAKE_CC = x86_64-nacl-gcc +QMAKE_CXX = x86_64-nacl-g++ +QMAKE_LINK = x86_64-nacl-g++ +QMAKE_LINK_SHLIB = x86_64-nacl-g++ +QMAKE_AR = x86_64-nacl-ar q +QMAKE_OBJCOPY = x86_64-nacl-objcopy +QMAKE_NM = x86_64-nacl-nm -P +QMAKE_STRIP = x86_64-nacl-strip + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/nacl-base.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/nacl-base.conf new file mode 100644 index 000000000..d94c5c96d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/nacl-base.conf @@ -0,0 +1,11 @@ +QMAKE_PLATFORM = nacl $$QMAKE_PLATFORM + +# Work around linker crash when using PIC. We are building +# statically so this is safe. +QMAKE_CFLAGS_STATIC_LIB -= -fPIC +QMAKE_CFLAGS_SHLIB -= -fPIC +QMAKE_CXXFLAGS_STATIC_LIB -= -fPIC +QMAKE_CXXFLAGS_SHLIB -= -fPIC + +QMAKE_LIBS_DYNLOAD -= -ldl +QMAKE_LIBS_OPENGL_ES2 = -lppapi_gles2 diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/qplatformdefs.h new file mode 100644 index 000000000..2b9c7227e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/nacl/qplatformdefs.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#define _POSIX_TIMERS + +#include "qglobal.h" + +// extra disabling. +#ifdef __native_client__ +#define QT_NO_FSFILEENGINE +#endif + +#define QT_NO_SOCKET_H + +#define DIR void * +#define PATH_MAX 256 + +#include "qfunctions_nacl.h" +#include diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/posix/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/posix/qplatformdefs.h new file mode 100644 index 000000000..90fb90a7e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/posix/qplatformdefs.h @@ -0,0 +1,162 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_POSIX_QPLATFORMDEFS_H +#define Q_POSIX_QPLATFORMDEFS_H + +#include + +#include +#ifndef QT_NO_SOCKET_H +# include +#endif +#include + +#if defined(QT_USE_XOPEN_LFS_EXTENSIONS) && defined(QT_LARGEFILE_SUPPORT) + +#define QT_STATBUF struct stat64 +#define QT_FPOS_T fpos64_t +#define QT_OFF_T off64_t + +#define QT_STAT ::stat64 +#define QT_LSTAT ::lstat64 +#define QT_TRUNCATE ::truncate64 + +// File I/O +#define QT_OPEN ::open64 +#define QT_LSEEK ::lseek64 +#define QT_FSTAT ::fstat64 +#define QT_FTRUNCATE ::ftruncate64 + +// Standard C89 +#define QT_FOPEN ::fopen64 +#define QT_FSEEK ::fseeko64 +#define QT_FTELL ::ftello64 +#define QT_FGETPOS ::fgetpos64 +#define QT_FSETPOS ::fsetpos64 + +#define QT_MMAP ::mmap64 + +#else // !defined(QT_USE_XOPEN_LFS_EXTENSIONS) || !defined(QT_LARGEFILE_SUPPORT) + +#include "../c89/qplatformdefs.h" + +#define QT_STATBUF struct stat + +#define QT_STAT ::stat +#define QT_LSTAT ::lstat +#define QT_TRUNCATE ::truncate + +// File I/O +#define QT_OPEN ::open +#define QT_LSEEK ::lseek +#define QT_FSTAT ::fstat +#define QT_FTRUNCATE ::ftruncate + +// Posix extensions to C89 +#if !defined(QT_USE_XOPEN_LFS_EXTENSIONS) && !defined(QT_NO_USE_FSEEKO) +#undef QT_OFF_T +#undef QT_FSEEK +#undef QT_FTELL + +#define QT_OFF_T off_t + +#define QT_FSEEK ::fseeko +#define QT_FTELL ::ftello +#endif + +#define QT_MMAP ::mmap + +#endif // !defined (QT_USE_XOPEN_LFS_EXTENSIONS) || !defined(QT_LARGEFILE_SUPPORT) + +#define QT_STAT_MASK S_IFMT +#define QT_STAT_REG S_IFREG +#define QT_STAT_DIR S_IFDIR +#define QT_STAT_LNK S_IFLNK + +#define QT_ACCESS ::access +#define QT_GETCWD ::getcwd +#define QT_CHDIR ::chdir +#define QT_MKDIR ::mkdir +#define QT_RMDIR ::rmdir + +// File I/O +#define QT_CLOSE ::close +#define QT_READ ::read +#define QT_WRITE ::write + +#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 + +// Posix extensions to C89 +#define QT_FILENO fileno + +// 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_SOCKLEN_T socklen_t + +#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 + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-aarch64le.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-aarch64le.conf new file mode 100644 index 000000000..914ef33f3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-aarch64le.conf @@ -0,0 +1,23 @@ +# +# qmake configuration for qnx-qcc aarch64le targets +# + +MAKEFILE_GENERATOR = UNIX + +include(g++-unix.conf) +include(unix.conf) + +QMAKE_CC = qcc -Vgcc_ntoaarch64le +QMAKE_CXX = qcc -Vgcc_ntoaarch64le +QNX_CPUDIR = aarch64le + +include(qcc-base-qnx.conf) + +QMAKE_AR = ntoaarch64-ar cqs +QMAKE_OBJCOPY = ntoaarch64-objcopy +QMAKE_NM = ntoaarch64-nm -P +QMAKE_RANLIB = ntoaarch64-ranlib + +QMAKE_STRIP = ntoaarch64-strip + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-armle-v7.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-armle-v7.conf new file mode 100644 index 000000000..ad3bb33da --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-armle-v7.conf @@ -0,0 +1,25 @@ +# +# qmake configuration for qnx-qcc armv7 targets +# + +MAKEFILE_GENERATOR = UNIX + +include(unix.conf) + +include(g++-unix.conf) + +QMAKE_CC = qcc -Vgcc_ntoarmv7le +QMAKE_CXX = qcc -Vgcc_ntoarmv7le +QNX_CPUDIR = armle-v7 +QMAKE_CFLAGS += -mfpu=neon + +include(qcc-base-qnx.conf) + +QMAKE_AR = ntoarmv7-ar cqs +QMAKE_OBJCOPY = ntoarmv7-objcopy +QMAKE_NM = ntoarmv7-nm -P +QMAKE_RANLIB = ntoarmv7-ranlib + +QMAKE_STRIP = ntoarmv7-strip + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-x86-64.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-x86-64.conf new file mode 100644 index 000000000..fd04104f7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-x86-64.conf @@ -0,0 +1,23 @@ +# +# qmake configuration for qnx-qcc x86-64 targets +# + +MAKEFILE_GENERATOR = UNIX + +include(g++-unix.conf) +include(unix.conf) + +QMAKE_CC = qcc -Vgcc_ntox86_64 +QMAKE_CXX = qcc -Vgcc_ntox86_64 +QNX_CPUDIR = x86_64 + +include(qcc-base-qnx.conf) + +QMAKE_AR = ntox86_64-ar cqs +QMAKE_OBJCOPY = ntox86_64-objcopy +QMAKE_NM = ntox86_64-nm -P +QMAKE_RANLIB = ntox86_64-ranlib + +QMAKE_STRIP = ntox86_64-strip + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-x86.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-x86.conf new file mode 100644 index 000000000..37a5d9ce7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx-x86.conf @@ -0,0 +1,24 @@ +# +# qmake configuration for qnx-qcc x86 targets +# + +MAKEFILE_GENERATOR = UNIX + +include(unix.conf) + +include(g++-unix.conf) + +QMAKE_CC = qcc -Vgcc_ntox86 +QMAKE_CXX = qcc -Vgcc_ntox86 +QNX_CPUDIR = x86 + +include(qcc-base-qnx.conf) + +QMAKE_AR = ntox86-ar cqs +QMAKE_OBJCOPY = ntox86-objcopy +QMAKE_NM = ntox86-nm -P +QMAKE_RANLIB = ntox86-ranlib + +QMAKE_STRIP = ntox86-strip + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx.conf new file mode 100644 index 000000000..148645b4e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base-qnx.conf @@ -0,0 +1,61 @@ +# +# Base qmake configuration for QCC on *nix-systems +# + +include(qcc-base.conf) + +QMAKE_PLATFORM = qnx $$QMAKE_PLATFORM + +QMAKE_LFLAGS_SHLIB += -shared +QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME += -Wl,-soname, +QMAKE_LFLAGS_THREAD += +QMAKE_LFLAGS_RPATH = -Wl,-rpath, +QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link, + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions +QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list, +QMAKE_LFLAGS_VERSION_SCRIPT = -Wl,--version-script, + +# Generic options for all QNX qcc mkspecs +QMAKE_CFLAGS_THREAD = -D_REENTRANT +QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD +QMAKE_COMPILER_DEFINES += __QNXNTO__ + +QMAKE_LIBS = -lm +QMAKE_LIBS_NETWORK = -lsocket + +# OpenGL libraries have a dependency on libEGL +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 -lEGL +QMAKE_LIBS_EGL = -lEGL + +# When using this mkspec to build Qt apps (ie - not Qt itself) we want to build +# against the NDK's target directory which is referenced by the QNX_TARGET environment +# variable, and which is guaranteed by the NDK to be set. +QNX_DIR = $$(QNX_TARGET) +isEmpty(QNX_DIR) { + error("QNX_TARGET environment variable not set") +} + +QMAKE_INCDIR_POST = $${QNX_DIR}/usr/include $${QNX_DIR}/usr/include/freetype2 +QMAKE_LIBDIR_POST = $${QNX_DIR}/$${QNX_CPUDIR}/lib $${QNX_DIR}/$${QNX_CPUDIR}/usr/lib +QMAKE_RPATHLINKDIR_POST += $${QNX_DIR}/$${QNX_CPUDIR}/lib $${QNX_DIR}/$${QNX_CPUDIR}/usr/lib + +QMAKE_CXXFLAGS_CXX11 = -Wc,-std=gnu++11 +QMAKE_CXXFLAGS_CXX14 = -Wc,-std=gnu++1y +QMAKE_CXXFLAGS_CXX1Z = -Wc,-std=gnu++1z + +QMAKE_LINK_C = $$QMAKE_CC +QMAKE_LINK_C_SHLIB = $$QMAKE_CC + +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX + +QMAKE_STRIPFLAGS_LIB += --strip-unneeded + +equals(QMAKE_HOST.os, Windows) { + isEmpty(QMAKE_SH): error("This mkspec requires an MSYS environment.") + QMAKE_DIR_SEP = / + QMAKE_DIRLIST_SEP = : +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base.conf new file mode 100644 index 000000000..b48e84ee1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qcc-base.conf @@ -0,0 +1,57 @@ +# +# This file is used as a basis for the following compilers: +# +# - The QNX qcc compiler +# +# The differences between this and gcc-base.conf are that +# +# 1) -pipe is removed as it's on by default in qcc (and has an analogous -nopipe option) +# 2) -Wno-psabi is added to silence harmless warnings about va_list mangling +# + +QMAKE_COMPILER = rim_qcc gcc # qcc is mostly gcc in disguise + +QMAKE_CFLAGS_OPTIMIZE = -O2 +QMAKE_CFLAGS_OPTIMIZE_FULL = -O3 + +QMAKE_CFLAGS += -Wno-psabi +QMAKE_CFLAGS_DEPS += -M +QMAKE_CFLAGS_WARN_ON += -Wall -W +QMAKE_CFLAGS_WARN_OFF += -w +QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g +QMAKE_CFLAGS_DEBUG += -g +QMAKE_CFLAGS_SHLIB += -fPIC -shared +QMAKE_CFLAGS_STATIC_LIB += -fPIC +QMAKE_CFLAGS_APP += -fPIC +QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden +QMAKE_CFLAGS_SSE2 += -msse2 +QMAKE_CFLAGS_SSE3 += -msse3 +QMAKE_CFLAGS_SSSE3 += -mssse3 +QMAKE_CFLAGS_SSE4_1 += -msse4.1 +QMAKE_CFLAGS_SSE4_2 += -msse4.2 +QMAKE_CFLAGS_AVX += -mavx +QMAKE_CFLAGS_AVX2 += -mavx2 + +QMAKE_CFLAGS_STACK_PROTECTOR_STRONG = -fstack-protector-strong + +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS -lang-c++ +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_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO +QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG +QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB +QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB +QMAKE_CXXFLAGS_APP += $$QMAKE_CFLAGS_APP +QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden + +QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE = -Wc,-include -Wc,${QMAKE_PCH_OUTPUT_BASE} +QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_LFLAGS += -lang-c++ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qnx/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qnx/qplatformdefs.h new file mode 100644 index 000000000..72fc92738 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/qnx/qplatformdefs.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_QNX_PLATFORMDEFS_H +#define Q_QNX_PLATFORMDEFS_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 + +#define __STDC_CONSTANT_MACROS + +// We are hot - unistd.h should have turned on the specific APIs we requested + + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +// QNX doesn't have the System V header. This is not a standard +// POSIX header, it's only documented in the Single UNIX Specification. +// The preferred POSIX compliant way to share memory is to use the functions +// in that comply with the POSIX Real Time Interface (1003.1b). +#include +#include +#include +#include +#include +#ifndef QT_NO_IPV6IFNAME +#include +#endif + +// for htonl +#include + +#define QT_USE_XOPEN_LFS_EXTENSIONS +#if !defined(__EXT_QNX__READDIR64_R) +#define QT_NO_READDIR64 +#endif +#include "../posix/qplatformdefs.h" +#if defined(__EXT_QNX__READDIR64_R) +#define QT_EXT_QNX_READDIR_R ::_readdir64_r +#elif defined(__EXT_QNX__READDIR_R) +#define QT_EXT_QNX_READDIR_R ::_readdir_r +#endif + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +// QNX6 doesn't have getpagesize() +inline int getpagesize() +{ + return ::sysconf(_SC_PAGESIZE); +} + +#include + +#define QT_QWS_TEMP_DIR QString::fromLatin1(qgetenv("TMP")) + +#endif // Q_QNX_PLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/sanitize.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/sanitize.conf new file mode 100644 index 000000000..5e09406cf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/sanitize.conf @@ -0,0 +1,23 @@ +# +# Qmake configuration for the GCC / Clang sanitize features +# + +QMAKE_COMMON_SANITIZE_CFLAGS = -fno-omit-frame-pointer +QMAKE_COMMON_SANITIZE_CXXFLAGS = -fno-omit-frame-pointer + +QMAKE_SANITIZE_ADDRESS_CFLAGS = -fsanitize=address +QMAKE_SANITIZE_ADDRESS_CXXFLAGS = -fsanitize=address +QMAKE_SANITIZE_ADDRESS_LFLAGS = -fsanitize=address + +QMAKE_SANITIZE_THREAD_CFLAGS = -fsanitize=thread +QMAKE_SANITIZE_THREAD_CXXFLAGS = -fsanitize=thread +QMAKE_SANITIZE_THREAD_LFLAGS = -fsanitize=thread + +QMAKE_SANITIZE_MEMORY_CFLAGS = -fsanitize=memory +QMAKE_SANITIZE_MEMORY_CXXFLAGS = -fsanitize=memory +QMAKE_SANITIZE_MEMORY_LFLAGS = -fsanitize=memory + +QMAKE_SANITIZE_UNDEFINED_CFLAGS = -fsanitize=undefined +QMAKE_SANITIZE_UNDEFINED_CXXFLAGS = -fsanitize=undefined +QMAKE_SANITIZE_UNDEFINED_LFLAGS = -fsanitize=undefined + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/shell-unix.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/shell-unix.conf new file mode 100644 index 000000000..2ab932f7b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/shell-unix.conf @@ -0,0 +1 @@ +warning("shell-unix.conf is deprecated and has no effect.") diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/shell-win32.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/shell-win32.conf new file mode 100644 index 000000000..c6f351469 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/shell-win32.conf @@ -0,0 +1 @@ +warning("shell-win32.conf is deprecated and has no effect.") diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/solaris.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/solaris.conf new file mode 100644 index 000000000..024b75a9d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/solaris.conf @@ -0,0 +1,32 @@ +# +# qmake configuration for common solaris +# + +QMAKE_PLATFORM += solaris + +include(unix.conf) + +QMAKE_CFLAGS_THREAD = -D_REENTRANT +QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD +QMAKE_LFLAGS_GCSECTIONS = -Wl,-z,ignore + +QMAKE_LFLAGS_REL_RPATH = -Wl,-z,origin +QMAKE_REL_RPATH_BASE = $ORIGIN + +QMAKE_INCDIR_X11 = /usr/X11/include +QMAKE_INCDIR_OPENGL = /usr/X11/include/mesa + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = -ldl +QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = -lpthread -lrt +QMAKE_LIBS_NETWORK = -lresolv -lsocket -lxnet -lnsl + +QMAKE_AR = ar cq +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/tvos.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/tvos.conf new file mode 100644 index 000000000..45e8c82c7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/tvos.conf @@ -0,0 +1,20 @@ +# +# qmake common configuration for tvOS +# + +QMAKE_PLATFORM += tvos +QMAKE_MAC_SDK = appletvos + +simulator.sdk = appletvsimulator +simulator.target = simulator +simulator.dir_affix = $${simulator.sdk} +simulator.CONFIG = $${simulator.sdk} +simulator.deployment_identifier = tvos-simulator + +device.sdk = appletvos +device.target = device +device.dir_affix = $${device.sdk} +device.CONFIG = $${device.sdk} +device.deployment_identifier = $${device.sdk} + +include(uikit.conf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit.conf new file mode 100644 index 000000000..0388b8e61 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit.conf @@ -0,0 +1,10 @@ +# +# qmake configuration for shared by UIKIT platforms +# + +QMAKE_PLATFORM += uikit +CONFIG += bitcode reduce_exports shallow_bundle no_qt_rpath + +INCLUDEPATH += $$PWD/uikit + +include(mac.conf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit/GLES2/gl2.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit/GLES2/gl2.h new file mode 100644 index 000000000..0974509a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit/GLES2/gl2.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit/clang.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit/clang.conf new file mode 100644 index 000000000..6b9b7eea8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit/clang.conf @@ -0,0 +1,7 @@ +# +# compiler settings for iOS/tvOS/watchOS clang compilers +# + +# 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_OBJECTIVE_CFLAGS += -fobjc-nonfragile-abi -fobjc-legacy-dispatch diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit/qmake.conf new file mode 100644 index 000000000..45a4f0c80 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/uikit/qmake.conf @@ -0,0 +1,23 @@ +# +# Common build settings for all iOS/tvOS/watchOS configurations +# + +QMAKE_XCODE_CODE_SIGN_IDENTITY = "iPhone Developer" + +# 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 + +# OpenGL ES2 +QMAKE_INCDIR_OPENGL_ES2 = +QMAKE_LIBDIR_OPENGL_ES2 = +QMAKE_LIBS_OPENGL_ES2 = -framework OpenGLES + +# No desktop OpenGL +QMAKE_INCDIR_OPENGL = +QMAKE_LIBS_OPENGL = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/unix.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/unix.conf new file mode 100644 index 000000000..8521c85b9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/unix.conf @@ -0,0 +1,17 @@ +# +# qmake configuration for common unix +# + +QMAKE_PLATFORM += unix posix + +QMAKE_LEX = flex +QMAKE_LEXFLAGS += +QMAKE_YACC = yacc +QMAKE_YACCFLAGS += -d +QMAKE_YACCFLAGS_MANGLE += -p $base -b $base +QMAKE_YACC_HEADER = $base.tab.h +QMAKE_YACC_SOURCE = $base.tab.c +QMAKE_PREFIX_SHLIB = lib +QMAKE_EXTENSION_SHLIB = so +QMAKE_PREFIX_STATICLIB = lib +QMAKE_EXTENSION_STATICLIB = a diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/watchos.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/watchos.conf new file mode 100644 index 000000000..a9352aa9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/watchos.conf @@ -0,0 +1,20 @@ +# +# qmake common configuration for watchOS +# + +QMAKE_PLATFORM += watchos +QMAKE_MAC_SDK = watchos + +simulator.sdk = watchsimulator +simulator.target = simulator +simulator.dir_affix = $${simulator.sdk} +simulator.CONFIG = apple$${simulator.sdk} +simulator.deployment_identifier = watchos-simulator + +device.sdk = watchos +device.target = device +device.dir_affix = $${device.sdk} +device.CONFIG = apple$${device.sdk} +device.deployment_identifier = $${device.sdk} + +include(uikit.conf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_150x150.png b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_150x150.png new file mode 100644 index 000000000..069171ca4 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_150x150.png differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_30x30.png b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_30x30.png new file mode 100644 index 000000000..2acac59e7 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_30x30.png differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_310x150.png b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_310x150.png new file mode 100644 index 000000000..1a7948294 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_310x150.png differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_310x310.png b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_310x310.png new file mode 100644 index 000000000..02144a9f3 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_310x310.png differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_44x44.png b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_44x44.png new file mode 100644 index 000000000..3cc5bec19 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_44x44.png differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_480x800.png b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_480x800.png new file mode 100644 index 000000000..39a37dac5 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_480x800.png differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_620x300.png b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_620x300.png new file mode 100644 index 000000000..a2be79f5d Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_620x300.png differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_70x70.png b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_70x70.png new file mode 100644 index 000000000..334b2722b Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_70x70.png differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_71x71.png b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_71x71.png new file mode 100644 index 000000000..16d080875 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_71x71.png differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_store.png b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_store.png new file mode 100644 index 000000000..417ccdcb5 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/assets/logo_store.png differ diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/manifests/10.0/AppxManifest.xml.in b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/manifests/10.0/AppxManifest.xml.in new file mode 100644 index 000000000..18683e01e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/manifests/10.0/AppxManifest.xml.in @@ -0,0 +1,51 @@ + + + + + + + + + + $${WINRT_MANIFEST.name} + $${WINRT_MANIFEST.publisher} + $${WINRT_MANIFEST.logo_store} + + + + $${WINRT_MANIFEST.dependencies} + + + + + + + + + + + + + + + $${WINRT_MANIFEST.capabilities} + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/qmake.conf new file mode 100644 index 000000000..0fa9c22e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/qmake.conf @@ -0,0 +1,98 @@ +# +# qmake configuration for winrt and windows phone 8.1 +# +# Written for Microsoft Visual C++ +# + +MAKEFILE_GENERATOR = MSBUILD +QMAKE_COMPILER = msvc +QMAKE_PLATFORM = winrt win32 +CONFIG = package_manifest $$CONFIG incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target rtti +DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT Q_BYTE_ORDER=Q_LITTLE_ENDIAN +QMAKE_COMPILER_DEFINES += _WIN32 + +DEPLOYMENT_PLUGIN += qwinrt + +QMAKE_CC = cl +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = bison -y +QMAKE_YACCFLAGS = -d +QMAKE_CFLAGS = -nologo +QMAKE_CFLAGS_WARN_ON = -W3 +QMAKE_CFLAGS_WARN_OFF = -W0 +QMAKE_CFLAGS_RELEASE = -O2 -MD +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi +QMAKE_CFLAGS_DEBUG = -Zi -MDd +QMAKE_CFLAGS_YACC = +QMAKE_CFLAGS_LTCG = -GL +QMAKE_CFLAGS_MP = -MP +QMAKE_CFLAGS_SSE2 = -arch:SSE2 +QMAKE_CFLAGS_SSE3 = -arch:SSE2 +QMAKE_CFLAGS_SSSE3 = -arch:SSE2 +QMAKE_CFLAGS_SSE4_1 = -arch:SSE2 +QMAKE_CFLAGS_SSE4_2 = -arch:SSE2 +QMAKE_CFLAGS_AVX = -arch:AVX +QMAKE_CFLAGS_AVX2 = -arch:AVX + +QMAKE_CXX = $$QMAKE_CC +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON -w34100 -w34189 -w44996 +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_YACC = $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG +QMAKE_CXXFLAGS_MP = $$QMAKE_CFLAGS_MP +QMAKE_CXXFLAGS_STL_ON = -EHsc +QMAKE_CXXFLAGS_STL_OFF = +QMAKE_CXXFLAGS_RTTI_ON = -GR +QMAKE_CXXFLAGS_RTTI_OFF = +QMAKE_CXXFLAGS_EXCEPTIONS_ON = -EHsc +QMAKE_CXXFLAGS_EXCEPTIONS_OFF = /wd4530 /wd4577 + +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_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<< + +QMAKE_LINK = link +QMAKE_LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT /NODEFAULTLIB:ole32.lib /APPCONTAINER +QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO +QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF /INCREMENTAL:NO +QMAKE_LFLAGS_DEBUG = /DEBUG +QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS +QMAKE_LFLAGS_EXE = /MANIFEST:NO +QMAKE_LFLAGS_DLL = /MANIFEST:NO /DLL +QMAKE_LFLAGS_LTCG = /LTCG +QMAKE_PREFIX_SHLIB = +QMAKE_EXTENSION_SHLIB = dll +QMAKE_PREFIX_STATICLIB = +QMAKE_EXTENSION_STATICLIB = lib + +QMAKE_LIBS += runtimeobject.lib +QMAKE_LIBS_GUI = +QMAKE_LIBS_NETWORK += ws2_32.lib + +QMAKE_LIBS_QT_ENTRY = -lqtmain + +QMAKE_IDL = midl +QMAKE_LIB = lib /NOLOGO +QMAKE_RC = rc + +VCPROJ_EXTENSION = .vcxproj +VCSOLUTION_EXTENSION = .sln +VCPROJ_KEYWORD = Qt4VSv1.0 +WINRT_ASSETS_PATH = $$PWD/assets + +WINRT_MANIFEST.capabilities = defaults +WINRT_MANIFEST.capabilities_device = defaults + +include(../angle.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/qplatformdefs.h new file mode 100644 index 000000000..c561e4166 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/common/winrt_winphone/qplatformdefs.h @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#ifdef UNICODE +#ifndef _UNICODE +#define _UNICODE +#endif +#endif + +// Get Qt defines/settings + +#include "qglobal.h" +#include "qfunctions_winrt.h" + +#define _POSIX_ +#include +#undef _POSIX_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef QT_LARGEFILE_SUPPORT +#define QT_STATBUF struct _stati64 // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs +#define QT_STAT ::_stati64 +#define QT_FSTAT ::_fstati64 +#else +#define QT_STATBUF struct _stat // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stat // non-ANSI defs +#define QT_STAT ::_stat +#define QT_FSTAT ::_fstat +#endif +#define QT_STAT_REG _S_IFREG +#define QT_STAT_DIR _S_IFDIR +#define QT_STAT_MASK _S_IFMT +#if defined(_S_IFLNK) +# define QT_STAT_LNK _S_IFLNK +#endif +#define QT_FILENO _fileno +#define QT_OPEN ::_open +#define QT_CLOSE ::_close +#ifdef QT_LARGEFILE_SUPPORT +#define QT_LSEEK ::_lseeki64 +#define QT_TSTAT ::_tstati64 +#else +#define QT_LSEEK ::_lseek +#define QT_TSTAT ::_tstat +#endif +#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 0 +#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 +#if defined(O_TEXT) +# define QT_OPEN_TEXT _O_TEXT +# define QT_OPEN_BINARY _O_BINARY +#endif + +#include "../common/c89/qplatformdefs.h" + +#ifdef QT_LARGEFILE_SUPPORT +#undef QT_FSEEK +#undef QT_FTELL +#undef QT_OFF_T + +#define QT_FSEEK ::_fseeki64 +#define QT_FTELL ::_ftelli64 +#define QT_OFF_T __int64 +#endif + +#define QT_SIGNAL_ARGS int + +#define QT_VSNPRINTF(buffer, count, format, arg) \ + vsnprintf_s(buffer, count, count-1, format, arg) + +#define QT_SNPRINTF ::_snprintf + +# define F_OK 0 +# define X_OK 1 +# define W_OK 2 +# define R_OK 4 + +typedef int mode_t; + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/cygwin-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/cygwin-g++/qmake.conf new file mode 100644 index 000000000..a4f64d9c6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/cygwin-g++/qmake.conf @@ -0,0 +1,75 @@ +# +# qmake configuration for cygwin-g++ +# +# Written for Qt/X11 on Windows using Cygwin's POSIX API +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = cygwin unix posix +CONFIG += incremental unversioned_libname +QMAKE_INCREMENTAL_STYLE = sublib + +QMAKE_COMPILER = gcc + +QMAKE_CC = gcc +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = bison -y +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_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_LIBS = +QMAKE_LIBS_DYNLOAD = -ldl +QMAKE_LIBS_X11 = -lXext -lX11 +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = -lpthread +QMAKE_PREFIX_SHLIB = lib +QMAKE_EXTENSION_SHLIB = dll +QMAKE_PREFIX_STATICLIB = lib +QMAKE_EXTENSION_STATICLIB = a + +QMAKE_AR = ar cqs +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/cygwin-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/cygwin-g++/qplatformdefs.h new file mode 100644 index 000000000..6042f3809 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/cygwin-g++/qplatformdefs.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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 + +// 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 +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +#include + + +// We are hot - unistd.h should have turned on the specific APIs we requested + + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +// Cygwin does not provide and because it +// doesn't support SysV IPC or shared memory. See for example: +// http://afni.nimh.nih.gov/afni/afniboard/messages/1725.html +#include +#include +#include +#include +//#include +#include + +#define QT_NO_USE_FSEEKO +#include "../common/posix/qplatformdefs.h" + +#undef QT_OPEN_LARGEFILE +#define QT_OPEN_LARGEFILE 0 + +#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf +#endif + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/darwin-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/darwin-g++/qmake.conf new file mode 100644 index 000000000..85955f7af --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/darwin-g++/qmake.conf @@ -0,0 +1,89 @@ +# +# qmake configuration for darwin-g++ +# +# Written for Qt/X11 on Darwin and XFree86 +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = macos osx macx mac darwin +CONFIG += native_precompiled_headers +DEFINES += __USE_WS_X11__ + +include(../common/unix.conf) + +QMAKE_COMPILER = gcc + +QMAKE_CC = cc +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = yacc +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 = -fPIC +QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB +QMAKE_EXTENSION_SHLIB = dylib +QMAKE_EXTENSION_PLUGIN = so +QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden +QMAKE_CFLAGS_THREAD = +QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE} + +QMAKE_CXX = c++ +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_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden +QMAKE_CXXFLAGS_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_LINK = c++ +QMAKE_LINK_SHLIB = c++ +QMAKE_LFLAGS = +QMAKE_LFLAGS_RELEASE = +QMAKE_LFLAGS_DEBUG = +QMAKE_LFLAGS_APP = -prebind +QMAKE_LFLAGS_SHLIB = -prebind -dynamiclib -single_module +QMAKE_LFLAGS_PLUGIN = -prebind -bundle +QMAKE_LFLAGS_THREAD = +QMAKE_LFLAGS_SONAME += -install_name$${LITERAL_WHITESPACE} +QMAKE_LFLAGS_HEADERPAD += -headerpad_max_install_names + +QMAKE_LFLAGS_VERSION = -current_version$${LITERAL_WHITESPACE} +QMAKE_LFLAGS_COMPAT_VERSION = -compatibility_version$${LITERAL_WHITESPACE} + +QMAKE_LFLAGS_RPATH = + +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_X11 = -lXext -lX11 -lm +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = + +QMAKE_AR = ar cq +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = ranlib -s + +QMAKE_PCH_OUTPUT_EXT = .gch + +QMAKE_CXXFLAGS_PRECOMPILE += -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/darwin-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/darwin-g++/qplatformdefs.h new file mode 100644 index 000000000..46a938323 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/darwin-g++/qplatformdefs.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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 + + +// We are hot - unistd.h should have turned on the specific APIs we requested + + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef QT_NO_IPV6IFNAME +#include +#endif + +#include "../common/posix/qplatformdefs.h" + +#undef QT_OPEN_LARGEFILE +#define QT_OPEN_LARGEFILE 0 + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/freebsd_device_post.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/freebsd_device_post.conf new file mode 100644 index 000000000..173eeb00a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/freebsd_device_post.conf @@ -0,0 +1,7 @@ +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QMAKE_CFLAGS += $$COMPILER_FLAGS +QMAKE_CXXFLAGS += $$COMPILER_FLAGS +QMAKE_LFLAGS += $$LINKER_FLAGS diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/freebsd_device_pre.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/freebsd_device_pre.conf new file mode 100644 index 000000000..8eb76f60f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/freebsd_device_pre.conf @@ -0,0 +1,27 @@ +QT_QPA_DEFAULT_PLATFORM = bsdfb + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../freebsd-clang/qmake.conf) + +load(device_config) + +# modifications to g++-unix.conf +QMAKE_CC = $${CROSS_COMPILE}cc +QMAKE_CXX = $${CROSS_COMPILE}c++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +# Do not set QMAKE_INCDIR to system include here +# it messes up system include order. --sysroot is +# sufficient. See link for details: +# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213217 +QMAKE_LIBDIR_POST = $$[QT_SYSROOT]/usr/lib diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/linux_arm_device_post.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/linux_arm_device_post.conf new file mode 100644 index 000000000..b450db03d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/linux_arm_device_post.conf @@ -0,0 +1,9 @@ +contains(DISTRO_OPTS, hard-float) { + COMPILER_FLAGS += -mfloat-abi=hard + LINKER_FLAGS += -mfloat-abi=hard +} else: !contains(DISTRO_OPTS, aarch64) { + COMPILER_FLAGS += -mfloat-abi=softfp + LINKER_FLAGS += -mfloat-abi=softfp +} + +include(linux_device_post.conf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/linux_device_post.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/linux_device_post.conf new file mode 100644 index 000000000..9a434dba7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/linux_device_post.conf @@ -0,0 +1,17 @@ +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +contains(DISTRO_OPTS, deb-multi-arch) { + QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib/$${GCC_MACHINE_DUMP} \ + $$[QT_SYSROOT]/lib/$${GCC_MACHINE_DUMP} +} + +contains(DISTRO_OPTS, boot2qt) { + QMAKE_PLATFORM += boot2qt +} + +QMAKE_CFLAGS += $$COMPILER_FLAGS +QMAKE_CXXFLAGS += $$COMPILER_FLAGS +QMAKE_LFLAGS += $$LINKER_FLAGS diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/linux_device_pre.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/linux_device_pre.conf new file mode 100644 index 000000000..8c6c87d0b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/common/linux_device_pre.conf @@ -0,0 +1,28 @@ +QT_QPA_DEFAULT_PLATFORM = eglfs + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +!load(device_config) { + error(Could not successfully load device configuration) +} + +# modifications to g++-unix.conf +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +contains(DISTRO_OPTS, deb-multi-arch): \ + QMAKE_PKG_CONFIG = $${CROSS_COMPILE}pkg-config diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-generic-clang/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-generic-clang/qmake.conf new file mode 100644 index 000000000..1c3ca9b1f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-generic-clang/qmake.conf @@ -0,0 +1,9 @@ +# +# Generic qmake configuration for cross-compiling with clang +# +# A minimal configure line could look something like this: +# ./configure -device freebsd-generic-clang -device-option CROSS_COMPILE=/usr/armv6-freebsd/usr/bin/ + +include(../common/freebsd_device_pre.conf) +include(../common/freebsd_device_post.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-generic-clang/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-generic-clang/qplatformdefs.h new file mode 100644 index 000000000..de53ea5e1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-generic-clang/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../common/bsd/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-rasp-pi-clang/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-rasp-pi-clang/qmake.conf new file mode 100644 index 000000000..2105f08c7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-rasp-pi-clang/qmake.conf @@ -0,0 +1,25 @@ +# qmake configuration for the Raspberry Pi and Raspberry Pi 2 + +include(../common/freebsd_device_pre.conf) + +QT_QPA_DEFAULT_PLATFORM = eglfs +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_brcm + +QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/usr/local/lib +QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 +QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 + +QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/local/include \ + $$[QT_SYSROOT]/usr/local/include/interface/vcos/pthreads \ + $$[QT_SYSROOT]/usr/local/include/interface/vmcs_host/linux +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} + +QMAKE_LIBS_EGL = -lEGL -lGLESv2 +QMAKE_LIBS_OPENGL_ES2 = $${QMAKE_LIBS_EGL} +QMAKE_LIBS_OPENVG = -lEGL -lOpenVG -lGLESv2 + +include(../common/freebsd_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-rasp-pi-clang/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-rasp-pi-clang/qplatformdefs.h new file mode 100644 index 000000000..3fd73d421 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/freebsd-rasp-pi-clang/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../freebsd-generic-clang/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-drive-cx/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-drive-cx/qmake.conf new file mode 100644 index 000000000..37474e9de --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-drive-cx/qmake.conf @@ -0,0 +1,39 @@ +# +# qmake configuration for 64-bit Tegra X1 boards, like the DRIVE CX, using Vibrante Integrity +# +# A typical configure line might look like: +# configure \ +# -device integrity-armv8-drive-cx \ +# -device-option VIBRANTE_INTEGRITY_PDK_TOPDIR=/opt/nvidia/vibrante-t186ref-integrity +# -static \ +# -opengl es2 + +load(device_config) + +include(../../common/ghs-integrity-armv8.conf) + +DEFINES += WIN_INTERFACE_CUSTOM + +QT_QPA_DEFAULT_PLATFORM = eglfs + +QMAKE_LIBS_EGL += -lEGL -lGLESv2 -lnvidia-glsi -lnvidia-eglcore -lnvidia-rmapi-tegra -lposix -livfs -ldrm-nvdc -lnvll -lnvdc -lnvrm -lnvrm_gpu -lnvrm_graphics -lnvos -lsocket -lnet -lnvtegrahv +QMAKE_LIBS_OPENGL_ES2 += $${QMAKE_LIBS_EGL} + +EGLFS_DEVICE_INTEGRATION = eglfs_kms_egldevice + +# Vibrante Integrity PDK headers & libraries +QMAKE_INCDIR += $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/include +QMAKE_LIBDIR += $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/libs + +# OpenGL libraries have a dependency on libEGL +QMAKE_INCDIR_EGL = $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/include +QMAKE_LIBDIR_EGL = $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/libs +QMAKE_INCDIR_OPENGL_ES2 = $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/include +QMAKE_LIBDIR_OPENGL_ES2 = $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/libs + +defineTest(qtConfSanitizeMkspec) { + isEmpty(VIBRANTE_INTEGRITY_PDK_TOPDIR): \ + error("You must pass -device-option VIBRANTE_INTEGRITY_PDK_TOPDIR=/path/to/pdk") +} + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-drive-cx/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-drive-cx/qplatformdefs.h new file mode 100644 index 000000000..c8361113a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-drive-cx/qplatformdefs.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#include "../../common/integrity/qplatformdefs.h" + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-msm8996au/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-msm8996au/qmake.conf new file mode 100644 index 000000000..90299bf3e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-msm8996au/qmake.conf @@ -0,0 +1,57 @@ +# +# qmake configuration for INTEGRITY Qualcomm s820 Snapdragon MSM8996AU +# + +load(device_config) + +include(../../common/ghs-integrity-armv8.conf) + +QT_QPA_DEFAULT_PLATFORM = eglfs +EGLFS_DEVICE_INTEGRATION = eglfs_openwfd + +bsp_name = $$(INTEGRITY_BSP) +isEmpty(bsp_name): \ + error("This qmakespec requires $INTEGRITY_BSP to be set") + +os_directory = $$(INTEGRITY_DIR) +isEmpty(os_directory): \ + error("This qmakespec requires $INTEGRITY_DIR to be set") + +qclibs_directory = $$(QCLIBS_DIR) +isEmpty(qclibs_directory): \ + error("This qmakespec requires $QCLIBS_DIR to be set") + +qc_multimedia_inc_directory = $$(QC_MULTIMEDIA_INC_DIR) +isEmpty(qc_multimedia_inc_directory): \ + error("This qmakespec requires $QC_MULTIMEDIA_INC_DIR to be set") + +gl_inc_directory = $$(GL_INC_DIR) +isEmpty(gl_inc_directory): \ + error("This qmakespec requires $GL_INC_DIR to be set") + +gl_lib_directory = $$(GL_LIB_DIR) +isEmpty(gl_lib_directory): \ + error("This qmakespec requires $GL_LIB_DIR to be set") + +QMAKE_LIBDIR += $$(QCLIBS_DIR)/base +QMAKE_LIBDIR += $$(QCLIBS_DIR)/multimedia/display + +QMAKE_INCDIR += $$(QC_MULTIMEDIA_INC_DIR) + +QMAKE_LIBS_EGL += -lESXEGL_Adreno -lESXGLESv2_Adreno -ladreno_utils -lGSLUser -lOSUser -lpanel -livfs -lposix -lpmem -ltzbsp -lpaged_alloc -lglnext-llvm -lopenwfd +QMAKE_LIBS_OPENGL_ES2 += $${QMAKE_LIBS_EGL} + +QMAKE_CFLAGS += -DINTEGRITY +QMAKE_CXXFLAGS += -DINTEGRITY + +QMAKE_CFLAGS += -bigswitch +QMAKE_CXXFLAGS += -bigswitch +QMAKE_LFLAGS += -bigswitch + +# OpenGL libraries have a dependency on libEGL +QMAKE_INCDIR_EGL = $$(GL_INC_DIR) +QMAKE_LIBDIR_EGL = $$(GL_LIB_DIR) +QMAKE_INCDIR_OPENGL_ES2 = $$(GL_INC_DIR) +QMAKE_LIBDIR_OPENGL_ES2 = $$(GL_LIB_DIR) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-msm8996au/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-msm8996au/qplatformdefs.h new file mode 100644 index 000000000..c8361113a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/integrity-armv8-msm8996au/qplatformdefs.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#include "../../common/integrity/qplatformdefs.h" + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-archos-gen8-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-archos-gen8-g++/qmake.conf new file mode 100644 index 000000000..66662f90c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-archos-gen8-g++/qmake.conf @@ -0,0 +1,58 @@ +# +# qmake configuration for the Archos gen8 tablets (70 and 101) +# with the SDE (Software Developer Edition) firmware +# http://www.archos.com/support/support_tech/updates_dev.html +# +# OpenEmbedded platform build system for Qt5 available at: +# http://github.com/KDAB/OpenEmbedded-Archos + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QT_QPA_DEFAULT_PLATFORM = eglfs + +# modifications to g++.conf +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp + +#modifications to gcc-base.conf +QMAKE_CFLAGS += $${COMPILER_FLAGS} +QMAKE_CXXFLAGS += $${COMPILER_FLAGS} +QMAKE_CXXFLAGS_RELEASE += -O3 + +QMAKE_LIBS += -lrt -lpthread -ldl + +# Extra stuff (OpenGL, DirectFB, ...) +QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/include +QMAKE_LIBDIR_EGL = $$[QT_SYSROOT]/usr/lib +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} +QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} + +QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} +QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-archos-gen8-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-archos-gen8-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-archos-gen8-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-amlogic-8726M-g++/qeglfshooks_8726m.cpp b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-amlogic-8726M-g++/qeglfshooks_8726m.cpp new file mode 100644 index 000000000..184a47b68 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-amlogic-8726M-g++/qeglfshooks_8726m.cpp @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "private/qeglfshooks_p.h" +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QEglFS8726MHooks : public QEglFSHooks +{ +public: + virtual QSize screenSize() const; + virtual EGLNativeWindowType createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format); + virtual void destroyNativeWindow(EGLNativeWindowType window); +}; + +QSize QEglFS8726MHooks::screenSize() const +{ + int fd = open("/dev/fb0", O_RDONLY); + if (fd == -1) { + qFatal("Failed to open fb to detect screen resolution!"); + } + + struct fb_var_screeninfo vinfo; + if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) { + qFatal("Could not get variable screen info"); + } + + close(fd); + + return QSize(vinfo.xres, vinfo.yres); +} + +EGLNativeWindowType QEglFS8726MHooks::createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format) +{ + Q_UNUSED(window) + Q_UNUSED(format) + + fbdev_window *window = new fbdev_window; + window->width = size.width(); + window->height = size.height(); + + return window; +} + +void QEglFS8726MHooks::destroyNativeWindow(EGLNativeWindowType window) +{ + delete window; +} + +QEglFS8726MHooks eglFS8726MHooks; +QEglFSHooks *platformHooks = &eglFS8726MHooks; + +QT_END_NAMESPACE diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-amlogic-8726M-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-amlogic-8726M-g++/qmake.conf new file mode 100644 index 000000000..74eaf0dd0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-amlogic-8726M-g++/qmake.conf @@ -0,0 +1,36 @@ +# +# qmake configuration for linux-g++ +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +QMAKE_CFLAGS += -mfloat-abi=softfp -mfpu=neon -mcpu=cortex-a9 +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS + +EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_8726m.cpp + +QT_QPA_DEFAULT_PLATFORM = eglfs + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-amlogic-8726M-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-amlogic-8726M-g++/qplatformdefs.h new file mode 100644 index 000000000..b2d14f7cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-amlogic-8726M-g++/qplatformdefs.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-generic-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-generic-g++/qmake.conf new file mode 100644 index 000000000..3dbd297b9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-generic-g++/qmake.conf @@ -0,0 +1,9 @@ +# +# Generic qmake configuration for building with g++ on arm devices. +# +# A minimal configure line could look something like this: +# ./configure -device arm-generic-g++ -device-option CROSS_COMPILE=arm-linux-gnueabi- + +include(../common/linux_device_pre.conf) +include(../common/linux_arm_device_post.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-generic-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-generic-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-generic-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf new file mode 100644 index 000000000..f65e9730d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf @@ -0,0 +1,46 @@ +# +# qmake configuration for linux-arm-hisilicon-hix5hd2-g++ using the arm-linux-gnueabihf-g++ crosscompiler +# +# A typical configure line looks like this: +# /configure -opensource -confirm-license -release -make libs -make examples -optimized-qmake +# -platform linux-g++-64 -device linux-arm-hisilicon-hix5hd2-g++ -device-option CROSS_COMPILE=arm-linux-gnueabihf- +# -opengl es2 -no-qml-debug -no-directfb -no-kms -no-xcb -no-alsa -qt-zlib -qt-libjpeg -qt-libpng +# -no-icu -no-nis -sysroot -extprefix -hostprefix +# -prefix +# +# such as +# ./configure -opensource -confirm-license -release -make libs -make examples -optimized-qmake +# -platform linux-g++-64 -device linux-arm-hisilicon-hix5hd2-g++ -device-option CROSS_COMPILE=arm-linux-gnueabihf- +# -opengl es2 -no-qml-debug -no-directfb -no-kms -no-xcb -no-alsa -qt-zlib -qt-libjpeg -qt-libpng +# -no-icu -no-nis -sysroot /home/abc/project/sysbase +# -extprefix /home/abc/project/sysbase/qt_install +# -hostprefix /home/abc/project/qtdir/qtbase_hostinstall +# -prefix /home/abc/project/sysbase/qt_install + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += /usr/arm-linux-gnueabihf/include +QMAKE_LIBDIR_POST += /usr/arm-linux-gnueabihf/lib + +QMAKE_LIBS += -lrt + +QMAKE_INCDIR_EGL += $$[QT_SYSROOT]/egl/include +QMAKE_LIBDIR_EGL += $$[QT_SYSROOT]/egl/lib +QMAKE_INCDIR_OPENGL_ES2 += $$QMAKE_INCDIR_EGL +QMAKE_LIBDIR_OPENGL_ES2 += $$QMAKE_LIBDIR_EGL + +QMAKE_LIBS_EGL += -lMali +QMAKE_LIBS_OPENGL_ES2 += $$QMAKE_LIBS_EGL +QMAKE_LIBS_OPENVG += $$QMAKE_LIBS_EGL + +DISTRO_OPTS += hard-float + +QMAKE_CFLAGS +=-march=armv7-a -mcpu=cortex-a9 -mfpu=vfpv3-d16 +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_mali + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf new file mode 100644 index 000000000..5619c205f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf @@ -0,0 +1,68 @@ +# +# qmake configuration for building with arm-linux-uclibcgnueabi-g++ +# +# http://wiki.qt.io/Shiner +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + isEmpty(TRIDENT_SHINER_SDK_BUILDTREE): \ + error("TRIDENT_SHINER_SDK_BUILDTREE needs to be set via -device-option TRIDENT_SHINER_SDK_BUILDTREE=") + isEmpty(TRIDENT_SHINER_SDK_BUILDSPEC): \ + error("TRIDENT_SHINER_SDK_BUILDSPEC needs to be set via -device-option TRIDENT_SHINER_SDK_BUILDSPEC=") + isEmpty(TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2): \ + error("TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2 needs to be set via -device-option TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2=") + isEmpty(TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2): \ + error("TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2 needs to be set via -device-option TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2=") + deviceSanityCheckCompiler() +} + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${CROSS_COMPILE}g++ +QMAKE_LINK_SHLIB = $${CROSS_COMPILE}g++ + +# +# Usage configure options "-sysroot " with "--prefix=" results into installation of Qt at "". +# Trident Shiner SDK expects all libs to be in "Application file system" which is not +# +# Because of this fact not using "-sysroot " and hence following code is required +# +QMAKE_CFLAGS += --sysroot=$${TRIDENT_SHINER_SDK_BUILDTREE}/open_source_archive/linux/toolchains/gcc-4.5.2_uclibc/ +QMAKE_CXXFLAGS += --sysroot=$${TRIDENT_SHINER_SDK_BUILDTREE}/open_source_archive/linux/toolchains/gcc-4.5.2_uclibc/ +QMAKE_LFLAGS += --sysroot=$${TRIDENT_SHINER_SDK_BUILDTREE}/open_source_archive/linux/toolchains/gcc-4.5.2_uclibc/ + +QMAKE_CFLAGS = -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +QMAKE_INCDIR_POST += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generic_apps/usr/include +QMAKE_LIBDIR_POST += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generic_apps/usr/lib +QMAKE_LIBDIR_POST += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generated/lib/armgnu_linux_el_cortex-a9 + +QMAKE_INCDIR_EGL = $${TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2} +QMAKE_LIBDIR_EGL = $${TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2} + +QMAKE_INCDIR_OPENGL_ES2 = $${TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2} +QMAKE_LIBDIR_OPENGL_ES2 = $${TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2} + +QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um -lusc +QMAKE_LIBS_OPENGL_ES2 = $$QMAKE_LIBS_EGL -lGLESv2 -lGLES_CM + +QT_QPA_DEFAULT_PLATFORM = eglfs + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-trident-pnx8473-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-trident-pnx8473-g++/qplatformdefs.h new file mode 100644 index 000000000..b2d14f7cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-arm-trident-pnx8473-g++/qplatformdefs.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-beagleboard-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-beagleboard-g++/qmake.conf new file mode 100644 index 000000000..604da50f6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-beagleboard-g++/qmake.conf @@ -0,0 +1,58 @@ +# +# qmake configuration for the BeagleBoard and BeagleBoard xM boards +# http://beagleboard.org/ + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +QT_QPA_DEFAULT_PLATFORM = eglfs + +# modifications to g++.conf +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb + +#modifications to gcc-base.conf +QMAKE_CFLAGS += $${COMPILER_FLAGS} +QMAKE_CXXFLAGS += $${COMPILER_FLAGS} +QMAKE_CXXFLAGS_RELEASE += -O3 + +QMAKE_LIBS += -lrt -lpthread -ldl + +# Extra stuff (OpenGL, DirectFB, ...) +QMAKE_INCDIR_EGL = +QMAKE_LIBDIR_EGL = +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} +QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} + +QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} +QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} + +DISTRO_OPTS += hard-float + +# No need for any special EGL device integration. +# Prioritize the default, compiled-in integration over any plugins. +EGLFS_DEVICE_INTEGRATION = none + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-beagleboard-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-beagleboard-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-beagleboard-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-colibri-vf-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-colibri-vf-g++/qmake.conf new file mode 100644 index 000000000..bc42f67f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-colibri-vf-g++/qmake.conf @@ -0,0 +1,17 @@ +# +# qmake configuration for the NXP Colibri VFxx boards +# + +include(../common/linux_device_pre.conf) + +VFXX_CFLAGS = -march=armv7-a -mtune=cortex-a5 -mfpu=neon +QMAKE_CFLAGS += $$VFXX_CFLAGS +QMAKE_CXXFLAGS += $$VFXX_CFLAGS + +QT_QPA_DEFAULT_PLATFORM = linuxfb + +DISTRO_OPTS += hard-float + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-colibri-vf-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-colibri-vf-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-colibri-vf-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-drive-cx-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-drive-cx-g++/qmake.conf new file mode 100644 index 000000000..a0dcaddec --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-drive-cx-g++/qmake.conf @@ -0,0 +1,52 @@ +# +# qmake configuration for 64-bit Tegra X1 boards, like the DRIVE CX, using Vibrante Linux +# +# A typical configure line might look like: +# configure \ +# -device drive-cx \ +# -device-option VIBRANTE_SDK_TOPDIR=/opt/nvidia/vibrante-t186ref-linux +# -device-option CROSS_COMPILE=/opt/nvidia/toolchains/tegra-4.9-nv/usr/bin/aarch64-gnu-linux/aarch64-gnu-linux- \ +# -sysroot /opt/nvidia/vibrante-t186ref-linux/targetfs \ +# -no-gcc-sysroot \ +# -opengl es2 + +# Note: This enables eglfs and wayland only. To enable xcb (with EGL +# support) as well, add -qt-xcb and fix the SDK's X11 headers. See +# QTBUG-55140. + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/include \ + $$[QT_SYSROOT]/usr/include + +QMAKE_LIBDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/lib-target \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/lib/aarch64-linux-gnu \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu + +QMAKE_RPATHLINKDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/lib-target \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \ + $$[QT_SYSROOT]/lib/aarch64-linux-gnu + +DISTRO_OPTS += aarch64 + +# Do not define WIN_INTERFACE_CUSTOM here. It is suitable for drm and +# wayland, but not X11. Leave it to qt_egl_p.h instead. +COMPILER_FLAGS += -mtune=cortex-a57.cortex-a53 -march=armv8-a + +EGLFS_DEVICE_INTEGRATION = eglfs_kms_egldevice + +include(../common/linux_arm_device_post.conf) + +# override the default from linux_arm_device_post.conf +defineTest(qtConfSanitizeMkspec) { + isEmpty(VIBRANTE_SDK_TOPDIR): \ + error("You must pass -device-option VIBRANTE_SDK_TOPDIR=/path/to/sdk") + deviceSanityCheckCompiler() +} + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-drive-cx-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-drive-cx-g++/qplatformdefs.h new file mode 100644 index 000000000..e927f7501 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-drive-cx-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-emu-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-emu-g++/qmake.conf new file mode 100644 index 000000000..1de381ee7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-emu-g++/qmake.conf @@ -0,0 +1,29 @@ +# +# qmake configuration for the Qt Simulator for Embedded Linux +# (cross-compile for the x86-based Yocto image + use a custom EGL/GLES implementation) +# +# Example configure command: +# +# ./configure \ +# -prefix /usr/local/qt5 \ +# -hostprefix /usr/local/qt5-host \ +# -extprefix $PWD/../qt5 \ +# -device emu \ +# -device-option CROSS_COMPILE=$QT/Boot2Qt/emulator/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/i586-poky-linux/i586-poky-linux- \ +# -sysroot $QT/Boot2Qt/emulator/toolchain/sysroots/i586-poky-linux \ +# -nomake examples -nomake tests -v \ +# -release -force-debug-info \ +# -opengl es2 + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL = -lQtGlesStreamClient +QMAKE_LIBS_OPENGL_ES2 = $$QMAKE_LIBS_EGL +QMAKE_LIBS_OPENGL_ES2_DEBUG = $$QMAKE_LIBS_EGL + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_emu + +include(../common/linux_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-emu-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-emu-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-emu-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-generic-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-generic-g++/qmake.conf new file mode 100644 index 000000000..65cf6d055 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-generic-g++/qmake.conf @@ -0,0 +1,9 @@ +# +# Generic qmake configuration for building with g++ on generic devices. +# +# A minimal configure line could look something like this: +# ./configure -device linux-generic-g++ -device-option CROSS_COMPILE=mipsel-linux-gnu- + +include(../common/linux_device_pre.conf) +include(../common/linux_device_post.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-generic-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-generic-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-generic-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx53qsb-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx53qsb-g++/qmake.conf new file mode 100644 index 000000000..8572978cb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx53qsb-g++/qmake.conf @@ -0,0 +1,29 @@ +# +# qmake configuration for the Freescale iMX53 board +# +# This mkspec is based and tested on the Yocto Project's Poky Distribution +# with libEGL.so from Freescale without the X11 dependency. +# +# This mkspec is tested with a framebuffer (eglfs) configuration +# +# A typical configure line looks like: +# +# export PATH=/opt/imx53qsb/x86_64-linux/usr/bin/armv7a-vfp-neon-poky-linux-gnueabi:$PATH +# +# ./configure -prefix /usr/local/qt5-imx53 -hostprefix /opt/imx53qsb/x86_64-linux/usr/local/qt5-imx53 -release -device linux-imx53qsb-g++ +# -opensource -confirm-license -device-option CROSS_COMPILE=arm-poky-linux-gnueabi- -sysroot /opt/imx53qsb/sysroot +# -eglfs -no-pch -opengl es2 -no-xcb -silent + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL += -lEGL +QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL +QMAKE_LIBS_OPENVG += -lOpenVG -lEGL + +IMX5_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 -Wno-psabi +QMAKE_CFLAGS += $$IMX5_CFLAGS +QMAKE_CXXFLAGS += $$IMX5_CFLAGS + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx53qsb-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx53qsb-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx53qsb-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx6-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx6-g++/qmake.conf new file mode 100644 index 000000000..46d631796 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx6-g++/qmake.conf @@ -0,0 +1,39 @@ +# +# qmake configuration for the Freescale iMX6 boards (single, dual and quad) +# +# The configuration below is set up for running with EGL on the framebuffer via +# the eglfs platform plugin and its eglfs_viv backend. + +# Wayland is also fully functional out of the box. However, when writing Wayland +# *compositors* with Qt, the eglfs backend will have to be switched to +# eglfs_viv_wl by setting the QT_QPA_EGLFS_INTEGRATION environment variable. +# +# Below is an example configure line that assumes the SDK is in +# $HOME/imx6/toolchain. On device Qt is expected to be placed under +# /usr/local/qt5 whereas on the host 'make install' will copy the host tools and +# the target libraries to $HOME/imx6/qt5. +# +# ./configure -prefix /usr/local/qt5 -extprefix $HOME/imx6/qt5 -device linux-imx6-g++ \ +# -device-option CROSS_COMPILE=$HOME/imx6/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- \ +# -sysroot $HOME/imx6/toolchain/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi \ +# -nomake examples -nomake tests -v +# + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL += -lEGL +QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL -lGAL +QMAKE_LIBS_OPENVG += -lOpenVG -lEGL -lGAL + +IMX6_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 +QMAKE_CFLAGS += $$IMX6_CFLAGS +QMAKE_CXXFLAGS += $$IMX6_CFLAGS + +DISTRO_OPTS += hard-float + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_viv + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx6-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx6-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx6-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx7-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx7-g++/qmake.conf new file mode 100644 index 000000000..04f7eeddd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx7-g++/qmake.conf @@ -0,0 +1,17 @@ +# +# qmake configuration for the NXP iMX7 boards (single, dual and quad) +# + +include(../common/linux_device_pre.conf) + +IMX7_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 +QMAKE_CFLAGS += $$IMX7_CFLAGS +QMAKE_CXXFLAGS += $$IMX7_CFLAGS + +DISTRO_OPTS += hard-float + +QT_QPA_DEFAULT_PLATFORM = linuxfb + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx7-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx7-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-imx7-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf new file mode 100644 index 000000000..4c733e8b7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf @@ -0,0 +1,34 @@ +# +# qmake configuration for the Jetson TK1 boards running Linux For Tegra +# +# Note that this environment has been tested with X11 only. +# +# A typical configure line might look like: +# configure \ +# -device linux-jetson-tk1-g++ \ +# -device-option CROSS_COMPILE=/opt/nvidia/toolchains/tegra-4.8.1-nv/usr/bin/arm-cortex_a15-linux-gnueabi/arm-cortex_a15-linux-gnueabi- \ +# -sysroot /opt/nvidia/l4t/targetfs + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += \ + $$[QT_SYSROOT]/usr/include \ + $$[QT_SYSROOT]/usr/include/arm-linux-gnueabihf + +QMAKE_LIBDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf + +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf + +DISTRO_OPTS += hard-float +COMPILER_FLAGS += -mtune=cortex-a15 -march=armv7-a -mfpu=neon-vfpv4 + +EGLFS_DEVICE_INTEGRATION = eglfs_kms_egldevice + +include(../common/linux_arm_device_post.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-g++/qplatformdefs.h new file mode 100644 index 000000000..e927f7501 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf new file mode 100644 index 000000000..fb8972179 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf @@ -0,0 +1,47 @@ +# +# qmake configuration for the Jetson TK1 Pro boards running Vibrante Linux +# +# This environment supports eglfs (via DRM, EGLDevice, and EGLStream), +# Wayland (requires an EGLStream-capable compositor), and X11 (untested). +# +# A typical configure line might look like: +# configure \ +# -device jetson-tk1-pro \ +# -device-option VIBRANTE_SDK_TOPDIR=/opt/nvidia/vibrante-vcm30t124-linux +# -device-option CROSS_COMPILE=/opt/nvidia/toolchains/tegra-4.8.1-nv/usr/bin/arm-cortex_a15-linux-gnueabi/arm-cortex_a15-linux-gnueabi- \ +# -sysroot /opt/nvidia/vibrante-vcm30t124-linux/targetfs \ +# -no-gcc-sysroot + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/include \ + $$[QT_SYSROOT]/usr/include + +QMAKE_LIBDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/lib-target \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf + +QMAKE_RPATHLINKDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/lib-target \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf + +DISTRO_OPTS += hard-float +COMPILER_FLAGS += -mtune=cortex-a15 -march=armv7-a -mfpu=neon-vfpv4 -DWIN_INTERFACE_CUSTOM + +EGLFS_DEVICE_INTEGRATION = eglfs_kms_egldevice + +include(../common/linux_arm_device_post.conf) + +# override the default from linux_arm_device_post.conf +defineTest(qtConfSanitizeMkspec) { + isEmpty(VIBRANTE_SDK_TOPDIR): \ + error("You must pass -device-option VIBRANTE_SDK_TOPDIR=/path/to/sdk") + deviceSanityCheckCompiler() +} + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-pro-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-pro-g++/qplatformdefs.h new file mode 100644 index 000000000..e927f7501 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tk1-pro-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf new file mode 100644 index 000000000..f9dec441f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf @@ -0,0 +1,51 @@ +# +# qmake configuration for Jetson TX1 boards running 64-bit Linux For Tegra +# (tested with R24.2, sample root filesystem) +# +# Note that this environment has been tested with X11 only. +# +# A typical configure line might look like the following: +# +# configure \ +# -device linux-jetson-tx1-g++ \ +# -device-option CROSS_COMPILE=/opt/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- \ +# -sysroot /opt/Linux_for_Tegra/rootfs +# +# Note that this builds for GLX + OpenGL. To use EGL + OpenGL ES instead, pass +# -opengl es2 and ensure the rootfs has the headers (rootfs/usr/include/EGL, +# GLES2, GLES3), which may not be the case out of the box. +# +# Check the configure output carefully, some features may be disabled due to the +# rootfs not having the necessary dev files. +# +# If getting cryptic linker errors from static libs like libm.a, check that the +# symlinks libm.so, libz.so, etc. under rootfs/usr/lib/aarch64-linux-gnu are not +# broken. If they are, due to using absolute paths, change them so that they are +# relative to rootfs. + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += \ + $$[QT_SYSROOT]/usr/include \ + $$[QT_SYSROOT]/usr/include/aarch64-linux-gnu + +QMAKE_LIBDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/lib/aarch64-linux-gnu \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu + +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu/tegra \ + $$[QT_SYSROOT]/lib/aarch64-linux-gnu + +DISTRO_OPTS += aarch64 +COMPILER_FLAGS += -mtune=cortex-a57.cortex-a53 -march=armv8-a + +# When configured with -opengl es2, eglfs will be functional with its +# dummy fullscreen X11 backend, in addition to xcb. +EGLFS_DEVICE_INTEGRATION = eglfs_x11 + +include(../common/linux_arm_device_post.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tx1-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tx1-g++/qplatformdefs.h new file mode 100644 index 000000000..e927f7501 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-jetson-tx1-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qdirectfbeglhooks_bcm97425.cpp b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qdirectfbeglhooks_bcm97425.cpp new file mode 100644 index 000000000..396f0bbea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qdirectfbeglhooks_bcm97425.cpp @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qdirectfbeglhooks.h" +#include "qdirectfbconvenience.h" + +#include "default_directfb.h" + +QT_BEGIN_NAMESPACE + +// Exported to the directfb plugin +QDirectFBEGLHooks platform_hook; +static void *dbpl_handle; + +void QDirectFBEGLHooks::platformInit() +{ + DBPL_RegisterDirectFBDisplayPlatform(&dbpl_handle, QDirectFbConvenience::dfbInterface()); +} + +void QDirectFBEGLHooks::platformDestroy() +{ + DBPL_UnregisterDirectFBDisplayPlatform(dbpl_handle); + dbpl_handle = 0; +} + +bool QDirectFBEGLHooks::hasCapability(QPlatformIntegration::Capability cap) const +{ + switch (cap) { + case QPlatformIntegration::ThreadedOpenGL: + return true; + default: + return false; + } +} + +QT_END_NAMESPACE diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf new file mode 100644 index 000000000..c7b6970fe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf @@ -0,0 +1,68 @@ +# +# qmake configuration for linux-mipsel-broadcom-97425-g++ +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + isEmpty(B_REFSW_DEBUG): \ + error("B_REFSW_DEBUG needs to be set via -device-option B_REFSW_DEBUG=(y|n)") + isEmpty(BRCM_ROCKFORD_PATH): \ + error("BRCM_ROCKFORD_PATH needs to be set via -device-option BRCM_ROCKFORD_PATH=") + isEmpty(BRCM_APPLIBS_PATH): \ + error("BRCM_APPLIBS_PATH needs to be set via -device-option BRCM_APPLIBS_PATH=") + deviceSanityCheckCompiler() +} + +# Modify the defaults we loaded above +CROSS_COMPILE = mipsel-linux- +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +#TODO: Clean Qt to work with uclibc not calling itself GLIBC. +#QMAKE_CFLAGS += -D__FORCE_NOGLIBC +#QMAKE_CXXFLAGS += -D__FORCE_NOGLIBC + + +BRCM_PLATFORM = 97425 + +# Figure the kind of directfb build used. +BRCM_BUILD_TYPE = debug +contains(B_REFSW_DEBUG, [Nn]) { + BRCM_BUILD_TYPE = release +} + +QMAKE_INCDIR_OPENGL_ES2 = $${BRCM_ROCKFORD_PATH}/middleware/v3d/interface/khronos/include +QMAKE_LIBDIR_OPENGL_ES2 = $${BRCM_ROCKFORD_PATH}/middleware/v3d/lib_$${BRCM_PLATFORM}_$${BRCM_BUILD_TYPE} +QMAKE_LIBS_OPENGL_ES2 = -lv3ddriver -lrt +QMAKE_LIBS_EGL = + +QMAKE_INCDIR_POST += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 +QMAKE_LIBDIR_POST += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 +QMAKE_RPATHLINKDIR_POST += $$QMAKE_LIBDIR_OPENGL_ES2 $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 + +# DirectFB platform hooks for this hardware +QT_CONFIG += directfb_egl egl +DIRECTFB_PLATFORM_HOOKS_SOURCES = $$PWD/qdirectfbeglhooks_bcm97425.cpp +DIRECTFB_PLATFORM_HOOKS_INCLUDEPATH = $${BRCM_ROCKFORD_PATH}/middleware/platform/directfb +DIRECTFB_PLATFORM_HOOKS_LIBS = -ldbpl +DIRECTFB_PLATFORM_HOOKS_LIBDIR = $${BRCM_ROCKFORD_PATH}/middleware/platform/directfb/lib_$${BRCM_PLATFORM}_$${BRCM_BUILD_TYPE} + +QT_QPA_DEFAULT_PLATFORM = directfbegl + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-ci20-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-ci20-g++/qmake.conf new file mode 100644 index 000000000..6e5311eb4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-ci20-g++/qmake.conf @@ -0,0 +1,21 @@ +# +# qmake configuration for building with mips-mti-linux-gnu-g++ +# build for CI20 targets X11 +# + +CROSS_COMPILE = mips-mti-linux-gnu- + +include(../common/linux_device_pre.conf) + +QMAKE_CFLAGS = -EL -march=mips32r2 +QMAKE_CXXFLAGS = $${QMAKE_CFLAGS} +QMAKE_LFLAGS = -EL + +QT_QPA_DEFAULT_PLATFORM = xcb + +QMAKE_LIBS_EGL = -lEGL -lIMGegl -lusc +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} + +include(../common/linux_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-ci20-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-ci20-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-mipsel-ci20-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-nuc-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-nuc-g++/qmake.conf new file mode 100644 index 000000000..fef599134 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-nuc-g++/qmake.conf @@ -0,0 +1,20 @@ +# +# qmake configuration for the Intel NUC DE3815TYKE targeting EGL/GLES either via KMS (eglfs) or Wayland +# +# Verified with a core-image-weston image produced by Yocto. + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL += -lEGL +QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL + +NUC_CFLAGS = -m64 +QMAKE_CFLAGS += $$NUC_CFLAGS +QMAKE_CXXFLAGS += $$NUC_CFLAGS + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_kms + +include(../common/linux_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-nuc-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-nuc-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-nuc-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-odroid-xu3-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-odroid-xu3-g++/qmake.conf new file mode 100644 index 000000000..85f2a4cfb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-odroid-xu3-g++/qmake.conf @@ -0,0 +1,17 @@ +# +# qmake configuration for linux-odroid-xu3-g++ using the arm-linux-gnueabihf-g++ crosscompiler +# + +include(../common/linux_device_pre.conf) + +DISTRO_OPTS += hard-float + +QMAKE_CFLAGS += -mcpu=cortex-a15 -mfpu=neon-vfpv4 -marm +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_mali + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-odroid-xu3-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-odroid-xu3-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-odroid-xu3-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi-g++/qmake.conf new file mode 100644 index 000000000..5497b0ce1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi-g++/qmake.conf @@ -0,0 +1,47 @@ +# +# qmake configuration for Broadcom's Raspberry PI +# http://wiki.qt.io/RaspberryPi + +include(../common/linux_device_pre.conf) + +QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/opt/vc/lib + +QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/opt/vc/lib +QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 +QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 + +QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/opt/vc/include \ + $$[QT_SYSROOT]/opt/vc/include/interface/vcos/pthreads \ + $$[QT_SYSROOT]/opt/vc/include/interface/vmcs_host/linux +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} + +QMAKE_LIBS_EGL = -lEGL -lGLESv2 +QMAKE_LIBS_OPENVG = -lEGL -lOpenVG -lGLESv2 + +contains(DISTRO, squeeze) { + #Debian Squeeze: Legacy everything + QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 -lEGL +} else:contains(DISTRO, arch) { + #On principle: no wizardry required +} else { + #This is not strictly necessary + DISTRO_OPTS += deb-multi-arch + DISTRO_OPTS += hard-float +} + +QMAKE_CFLAGS += \ + -marm \ + -mfpu=vfp \ + -mtune=arm1176jzf-s \ + -march=armv6zk \ + -mabi=aapcs-linux + +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_brcm + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf new file mode 100644 index 000000000..ffe8f5739 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf @@ -0,0 +1,30 @@ +# qmake configuration for the Raspberry Pi 2 + +include(../common/linux_device_pre.conf) + +QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/opt/vc/lib + +QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/opt/vc/lib +QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 +QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 + +QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/opt/vc/include \ + $$[QT_SYSROOT]/opt/vc/include/interface/vcos/pthreads \ + $$[QT_SYSROOT]/opt/vc/include/interface/vmcs_host/linux +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} + +QMAKE_LIBS_EGL = -lEGL -lGLESv2 +QMAKE_LIBS_OPENVG = -lEGL -lOpenVG -lGLESv2 +QMAKE_CFLAGS += -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=cortex-a7 -mabi=aapcs-linux +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +DISTRO_OPTS += hard-float +DISTRO_OPTS += deb-multi-arch + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_brcm + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi2-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi2-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi2-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf new file mode 100644 index 000000000..2bb70ffb5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf @@ -0,0 +1,44 @@ +# qmake configuration for the Raspberry Pi 3 using the Broadcom graphics stack + +include(../common/linux_device_pre.conf) + +# For modern Yocto-based sysroots that have the proper include and lib +# setup in egl.pc we will pull the necessary arguments from +# there. However, to support Raspbian and older stuff that has /opt/vc +# and possibly no pkg-config, have some static values as well: + +# I consider it a bug that this is required, but our EGL config.test _requires_ it +QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/opt/vc/lib + +VC_LIBRARY_PATH = /opt/vc/lib +VC_INCLUDE_PATH = =/opt/vc/include + +VC_LINK_LINE = -L=$${VC_LIBRARY_PATH} + +QMAKE_LIBDIR_OPENGL_ES2 = =$${VC_LIBRARY_PATH} +QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 +QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 + +QMAKE_INCDIR_EGL = \ + $${VC_INCLUDE_PATH} \ + $${VC_INCLUDE_PATH}/interface/vcos/pthreads \ + $${VC_INCLUDE_PATH}/interface/vmcs_host/linux + +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} + +QMAKE_LIBS_OPENGL_ES2 = $${VC_LINK_LINE} -lGLESv2 + +# The official opt vc EGL references GLESv2 symbols: need to link it +QMAKE_LIBS_EGL = $${VC_LINK_LINE} -lEGL -lGLESv2 + +QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +DISTRO_OPTS += hard-float +DISTRO_OPTS += deb-multi-arch + +EGLFS_DEVICE_INTEGRATION= eglfs_brcm + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-g++/qplatformdefs.h new file mode 100644 index 000000000..4435fb255 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-vc4-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-vc4-g++/qmake.conf new file mode 100644 index 000000000..75b6ad7db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-vc4-g++/qmake.conf @@ -0,0 +1,44 @@ +# qmake configuration for the Raspberry Pi 3 (32-bit) using the +# *experimental* VC4 driver for Mesa and DRM. +# +# This should allow accelerated EGL and OpenGL with eglfs via +# KMS/DRM/GBM (instead of the Broadcom-specific backend), under X11 +# with xcb, and also enables (Qt)Wayland via the standard wayland-egl +# path. See https://dri.freedesktop.org/wiki/VC4 +# +# Note that this is not the same as the default, Broadcom proprietary +# driver. Some functionality and extensions may therefore be missing, +# in particular when it comes to accelerated multimedia (video, +# camera). +# +# At the time of writing Raspbian has to be switched explicitly to the +# experimental VC4 driver. To do this, run raspi-config and enable it +# in Advanced Options -> GL Driver. +# +# Example configure command below. We disable using the GNU gold +# linker as it apparently has issues with ARMv8. In the configure +# output check that "EGLFS GBM .......... yes" is present, otherwise +# eglfs will not be functional. +# +# ./configure -release -opengl es2 -device linux-rpi3-vc4-g++ \ +# -device-option CROSS_COMPILE=~/raspbian/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- \ +# -sysroot ~/raspbian/sysroot \ +# -prefix /usr/local/qt5pi -extprefix ~/raspbian/qt5pi -hostprefix ~/raspbian/qt5 \ +# -v -nomake examples -nomake tests -no-use-gold-linker + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL += -lEGL +QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL + +QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +DISTRO_OPTS += hard-float +DISTRO_OPTS += deb-multi-arch + +EGLFS_DEVICE_INTEGRATION = eglfs_kms + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-vc4-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-vc4-g++/qplatformdefs.h new file mode 100644 index 000000000..4435fb255 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rasp-pi3-vc4-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rcar-h2-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rcar-h2-g++/qmake.conf new file mode 100644 index 000000000..6a9346e4d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rcar-h2-g++/qmake.conf @@ -0,0 +1,31 @@ +# +# qmake configuration for the Renesas R-Car H2 (Lager) +# +# Both eglfs and wayland should be functional, via DRM/KMS. +# +# Below is an example configure line that assumes the SDK is in +# $HOME/rcar/toolchain. 'make install' will copy the host tools to qt5-host and +# the target contents to qt5. The latter is what should be deployed to +# /usr/local/qt5 on the target device. +# +# ./configure -prefix /usr/local/qt5 -extprefix $HOME/rcar/qt5 -hostprefix $HOME/rcar/qt5-host \ +# -device rcar-h2 \ +# -device-option CROSS_COMPILE=$HOME/rcar/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- \ +# -sysroot $HOME/rcar/toolchain/sysroots/cortexa15hf-neon-poky-linux-gnueabi \ +# -nomake examples -nomake tests -v + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL += -lEGL +QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL +QMAKE_LIBS_OPENVG += -lOpenVG -lEGL + +DISTRO_OPTS += hard-float +COMPILER_FLAGS += -mtune=cortex-a15 -march=armv7-a -mfpu=neon-vfpv4 + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_kms + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rcar-h2-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rcar-h2-g++/qplatformdefs.h new file mode 100644 index 000000000..e927f7501 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-rcar-h2-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qmake.conf new file mode 100644 index 000000000..8dab1ea28 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qmake.conf @@ -0,0 +1,35 @@ +# +# qmake configuration for linux-g++ using the sh4-linux-g++ crosscompiler +# +# http://wiki.qt.io/ST7108 +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +QMAKE_LIBS_EGL += -lMali + +QT_QPA_DEFAULT_PLATFORM = eglfs + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qplatformdefs.h new file mode 100644 index 000000000..b2d14f7cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qplatformdefs.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qmake.conf new file mode 100644 index 000000000..04b0a80d1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qmake.conf @@ -0,0 +1,47 @@ +# +# qmake configuration for linux-g++ using the sh4-linux-g++ crosscompiler +# +# http://wiki.qt.io/ST7540 +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +QMAKE_INCDIR_EGL += $$[QT_SYSROOT]/root/modules/include/ +QMAKE_LIBDIR_EGL += $$[QT_SYSROOT]/root/modules/ + +# +# The EGL library used for ST7540 is based on DirectFB so it has to be linked with +# 1. libdirectfb.so 2. libfusion.so 3. libdirect.so +# +QMAKE_LIBS_EGL += -lMali -ldirectfb -lfusion -ldirect + +QMAKE_INCDIR_OPENGL_ES2 += $$QMAKE_INCDIR_EGL +QMAKE_LIBDIR_OPENGL_ES2 += $$QMAKE_LIBDIR_EGL +QMAKE_LIBS_OPENGL_ES2 += $$QMAKE_LIBS_EGL + +QT_QPA_DEFAULT_PLATFORM = eglfs + +load(qt_config) + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qplatformdefs.h new file mode 100644 index 000000000..b2d14f7cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qplatformdefs.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-snowball-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-snowball-g++/qmake.conf new file mode 100644 index 000000000..ff0f3ab1a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-snowball-g++/qmake.conf @@ -0,0 +1,34 @@ +# +# qmake configuration for ST Ericsson's Snowball +# http://wiki.qt.io/Snowball + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-snowball-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-snowball-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-snowball-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-tegra2-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-tegra2-g++/qmake.conf new file mode 100644 index 000000000..3f6da7668 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-tegra2-g++/qmake.conf @@ -0,0 +1,30 @@ +# +# qmake configuration for the Tegra2 boards. +# +# This mkspec is based and tested on the TrimSlice using "Ubuntu Natty (11.04) - l4t.r15.01"-release. +# It might work with other boards and releases as well. +# A typical configure line looks like this: +# /configure -opensource -confirm-license -make libs -prefix /usr/local/Qt-5.0.0/Qt5-tegra2 +# -device tegra2 -device-option CROSS_COMPILE=/bin/arm-none-linux-gnueabi- \ +# -sysroot + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += $$[QT_SYSROOT]/usr/include + +QMAKE_LIBDIR_POST += $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabi \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabi + +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabi \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabi + +TEGRA2_CFLAGS = -mtune=cortex-a9 -march=armv7-a -mhard-float -mfloat-abi=softfp -mfpu=vfpv3-d16 +QMAKE_CFLAGS += $$TEGRA2_CFLAGS +QMAKE_CXXFLAGS += $$TEGRA2_CFLAGS + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-tegra2-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-tegra2-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/devices/linux-tegra2-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/dummy/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/dummy/qmake.conf new file mode 100644 index 000000000..7077fe634 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/dummy/qmake.conf @@ -0,0 +1,8 @@ +# +# Minimal qmake configuration qt_configure.prf is run with. +# + +# Make spec_post.prf happy. +MAKEFILE_GENERATOR = DUMMY +QMAKE_PLATFORM = dummy_platform +QMAKE_COMPILER = dummy_compiler diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/android.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/android.prf new file mode 100644 index 000000000..1dc8f8731 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/android.prf @@ -0,0 +1,14 @@ +contains(TEMPLATE, ".*app") { + !android_app { + !contains(TARGET, ".so"): TARGET = lib$${TARGET}.so + QMAKE_LFLAGS += -Wl,-soname,$$shell_quote($$TARGET) + + android_install { + target.path=/libs/$$ANDROID_TARGET_ARCH/ + INSTALLS *= target + } + } +} else: contains(TEMPLATE, "lib"):!static:!QTDIR_build:android_install { + target.path = /libs/$$ANDROID_TARGET_ARCH/ + INSTALLS *= target +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/android_deployment_settings.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/android_deployment_settings.prf new file mode 100644 index 000000000..913ab7141 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/android_deployment_settings.prf @@ -0,0 +1,74 @@ +contains(TEMPLATE, ".*app"):!build_pass: { + + defineReplace(emitString) { + return("\"$$replace(1, \\\\, \\\\)\"") + } + + FILE_CONTENT = "{" + FILE_CONTENT += " \"description\": \"This file is generated by qmake to be read by androiddeployqt and should not be modified by hand.\"," + + FILE_CONTENT += " \"qt\": $$emitString($$[QT_INSTALL_PREFIX])," + + # Settings from mkspecs/environment + FILE_CONTENT += " \"sdk\": $$emitString($$ANDROID_SDK_ROOT)," + FILE_CONTENT += " \"sdkBuildToolsRevision\": $$emitString($$ANDROID_SDK_BUILD_TOOLS_REVISION)," + + isEmpty(NDK_ROOT): NDK_ROOT = $$(ANDROID_NDK_ROOT) + isEmpty(NDK_ROOT): NDK_ROOT = $$DEFAULT_ANDROID_NDK_ROOT + FILE_CONTENT += " \"ndk\": $$emitString($$NDK_ROOT)," + + 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, x86_64): NDK_TOOLCHAIN_PREFIX = x86_64 + else: equals(ANDROID_TARGET_ARCH, mips): NDK_TOOLCHAIN_PREFIX = mipsel-linux-android + else: equals(ANDROID_TARGET_ARCH, mips64): NDK_TOOLCHAIN_PREFIX = mips64el-linux-android + else: equals(ANDROID_TARGET_ARCH, arm64-v8a): NDK_TOOLCHAIN_PREFIX = aarch64-linux-android + else: NDK_TOOLCHAIN_PREFIX = arm-linux-androideabi + } + FILE_CONTENT += " \"toolchain-prefix\": $$emitString($$NDK_TOOLCHAIN_PREFIX)," + FILE_CONTENT += " \"tool-prefix\": $$emitString($$NDK_TOOLS_PREFIX)," + + NDK_TOOLCHAIN_VERSION = $$(ANDROID_NDK_TOOLCHAIN_VERSION) + isEmpty(NDK_TOOLCHAIN_VERSION): NDK_TOOLCHAIN_VERSION = $$DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION + FILE_CONTENT += " \"toolchain-version\": $$emitString($$NDK_TOOLCHAIN_VERSION)," + + NDK_HOST = $$(ANDROID_NDK_HOST) + isEmpty(NDK_HOST): NDK_HOST = $$DEFAULT_ANDROID_NDK_HOST + FILE_CONTENT += " \"ndk-host\": $$emitString($$NDK_HOST)," + + ANDROID_TARGET_ARCH = $$(ANDROID_TARGET_ARCH) + isEmpty(ANDROID_TARGET_ARCH): ANDROID_TARGET_ARCH = $$DEFAULT_ANDROID_TARGET_ARCH + FILE_CONTENT += " \"target-architecture\": $$emitString($$ANDROID_TARGET_ARCH)," + + # Explicitly set qt dependencies of application for deployment + !isEmpty(ANDROID_DEPLOYMENT_DEPENDENCIES): \ + FILE_CONTENT += " \"deployment-dependencies\": $$emitString($$join(ANDROID_DEPLOYMENT_DEPENDENCIES, ","))," + + # Explicitly set external dependencies of application for deployment + !isEmpty(ANDROID_EXTRA_PLUGINS): \ + FILE_CONTENT += " \"android-extra-plugins\": $$emitString($$join(ANDROID_EXTRA_PLUGINS, ","))," + + # Android-specific settings of Project + !isEmpty(ANDROID_PACKAGE_SOURCE_DIR): \ + FILE_CONTENT += " \"android-package-source-directory\": $$emitString($$ANDROID_PACKAGE_SOURCE_DIR)," + + !isEmpty(ANDROID_EXTRA_LIBS): \ + FILE_CONTENT += " \"android-extra-libs\": $$emitString($$join(ANDROID_EXTRA_LIBS, ","))," + + !isEmpty(QML_IMPORT_PATH): \ + FILE_CONTENT += " \"qml-import-paths\": $$emitString($$join(QML_IMPORT_PATH, ","))," + + isEmpty(QML_ROOT_PATH): \ + QML_ROOT_PATH = $$_PRO_FILE_PWD_ + FILE_CONTENT += " \"qml-root-path\": $$emitString($$QML_ROOT_PATH)," + FILE_CONTENT += " \"stdcpp-path\": $$emitString($$ANDROID_STDCPP_PATH)," + + FILE_CONTENT += " \"application-binary\": $$emitString($$absolute_path($$DESTDIR, $$OUT_PWD)/$$TARGET)" + FILE_CONTENT += "}" + + isEmpty(ANDROID_DEPLOYMENT_SETTINGS_FILE): ANDROID_DEPLOYMENT_SETTINGS_FILE = $$OUT_PWD/android-$$TARGET-deployment-settings.json + + write_file($$ANDROID_DEPLOYMENT_SETTINGS_FILE, FILE_CONTENT)|error() +} + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/resolve_target.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/resolve_target.prf new file mode 100644 index 000000000..25682cd89 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/resolve_target.prf @@ -0,0 +1,3 @@ +load(resolve_config) +load(android) +load(resolve_target) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/sdk.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/sdk.prf new file mode 100644 index 000000000..eee7ac2d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/android/sdk.prf @@ -0,0 +1,21 @@ +API_VERSION_TO_USE = $$(ANDROID_API_VERSION) +isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = $$API_VERSION +isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = android-16 + +ANDROID_JAR_FILE = $$ANDROID_SDK_ROOT/platforms/$$API_VERSION_TO_USE/android.jar +!exists($$ANDROID_JAR_FILE) { + ANDROID_API_VERSION = $$section(API_VERSION_TO_USE, -, 1, 1) # Get version number from android-XY to ensure numeric comparison + ANDROID_API_VERSIONS = $$files($$ANDROID_SDK_ROOT/platforms/*) + for (VERSION, ANDROID_API_VERSIONS) { + BASENAME = $$basename(VERSION) + BASENAME = $$section(BASENAME, -, 1, 1) + greaterThan(BASENAME, $$ANDROID_API_VERSION): ANDROID_API_VERSION = $$BASENAME + } + API_VERSION_TO_USE = android-$$ANDROID_API_VERSION + ANDROID_JAR_FILE = $$ANDROID_SDK_ROOT/platforms/$$API_VERSION_TO_USE/android.jar +} +!exists($$ANDROID_JAR_FILE) { + error("No suitable Android SDK platform found. Minimum version is $${API_VERSION_TO_USE}.") +} +JAVACLASSPATH += $$ANDROID_JAR_FILE + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/benchmark.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/benchmark.prf new file mode 100644 index 000000000..bfae92270 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/benchmark.prf @@ -0,0 +1 @@ +load(testcase) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/build_pass.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/build_pass.prf new file mode 100644 index 000000000..6547c9744 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/build_pass.prf @@ -0,0 +1 @@ +CONFIG += no_autoqmake diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/cmake_functions.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/cmake_functions.prf new file mode 100644 index 000000000..1e6b05c78 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/cmake_functions.prf @@ -0,0 +1,70 @@ +# +# 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. +# + +defineReplace(cmakeModuleName) { + _module = $$1 + _name = $$eval(QT.$${_module}.name) + cmake_module_name = $$replace(_name, ^Qt, ) + return ($$cmake_module_name) +} + +defineReplace(cmakeModuleList) { + variable = $$1 + out = + for(v, variable) { + out += $$cmakeModuleName($$v) + } + return ($$join(out, ";")) +} + +defineReplace(cmakeTargetPath) { + SYSR = $$[QT_SYSROOT] + !isEmpty(SYSR): path = /$$relative_path($$1, $$[QT_SYSROOT]) + else: path = $$1 + return($$clean_path($$path)) +} + +defineReplace(cmakeTargetPaths) { + variable = $$1 + out = + for(v, variable) { + out += \"$$cmakeTargetPath($$v)\" + } + return ($$join(out, " ")) +} + +defineReplace(cmakePortablePaths) { + variable = $$1 + out = + for(v, variable) { + out += $$[QT_SYSROOT]$$cmakeTargetPath($$v) + } + return ($$join(out, ";")) +} + +defineReplace(cmakeProcessLibs) { + variable = $$1 + out = + for(v, variable) { + if(!equals(v, -framework):!contains(v, -L.*)) { + v ~= s,^-l,, + v ~= s,^-lib,, + v ~= s,.lib$,, + out += $$v + } + } + return ($$join(out, ";")) +} + +defineReplace(cmakeRelativePath) { + path = $$relative_path($$1, $$2) + return($$replace(path, ([^/])$, \\1/)) +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/configure.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/configure.prf new file mode 100644 index 000000000..934a18a92 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/configure.prf @@ -0,0 +1,88 @@ +# Ensure that a cache is present. If none was found on startup, this will create +# one in the build directory of the project which loads this feature. +cache() + +load(configure_base) + +isEmpty(QMAKE_CONFIG_VERBOSE): QMAKE_CONFIG_VERBOSE = false + +QMAKE_CONFIG_LOG = $$dirname(_QMAKE_CACHE_)/config.log +recheck: write_file($$QMAKE_CONFIG_LOG, "") + +isEmpty(QMAKE_CONFIG_TESTS_DIR): QMAKE_CONFIG_TESTS_DIR = $$_PRO_FILE_PWD_/config.tests + +# Try to build the test project in $$QMAKE_CONFIG_TESTS_DIR/$$1 +# ($$_PRO_FILE_PWD_/config.tests/$$1 by default). +# +# If the test passes, config_$$1 will be added to CONFIG. +# The result is automatically cached. Use of cached results +# can be suppressed by passing CONFIG+=recheck to qmake. +# +# Returns: true iff the test passes +defineTest(qtCompileTest) { + positive = config_$$1 + done = done_config_$$1 + + $$done:!recheck { + $$positive:return(true) + return(false) + } + + log("Checking for $${1}... ") + msg = "executing config test $$1" + write_file($$QMAKE_CONFIG_LOG, msg, append) + + test_dir = $$QMAKE_CONFIG_TESTS_DIR/$$1 + test_out_dir = $$shadowed($$test_dir) + test_cmd_base = "$$QMAKE_CD $$system_quote($$system_path($$test_out_dir)) &&" + + # Disable qmake features which are typically counterproductive for tests + qmake_configs = "\"CONFIG -= qt debug_and_release app_bundle lib_bundle\"" + + # On WinRT we need to change the entry point as we cannot create windows + # applications + winrt { + qmake_configs += " \"QMAKE_LFLAGS+=/ENTRY:main\"" + } + + # Clean up after previous run + exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE distclean") + + mkpath($$test_out_dir)|error() + + !isEmpty (QMAKE_QTCONF): qtconfarg = -qtconf $$QMAKE_QTCONF + + qtRunLoggedCommand("$$test_cmd_base $$system_quote($$system_path($$QMAKE_QMAKE)) $$qtconfarg -spec $$QMAKESPEC $$qmake_configs $$shell_quote($$test_dir)") { + qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE") { + log("yes$$escape_expand(\\n)") + msg = "test $$1 succeeded" + write_file($$QMAKE_CONFIG_LOG, msg, append) + + !$$positive { + CONFIG += $$positive + cache(CONFIG, add, positive) + } + !$$done { + CONFIG += $$done + cache(CONFIG, add, done) + } + export(CONFIG) + return(true) + } + } + + log("no$$escape_expand(\\n)") + msg = "test $$1 FAILED" + write_file($$QMAKE_CONFIG_LOG, msg, append) + + $$positive { + CONFIG -= $$positive + cache(CONFIG, sub, positive) + } + !$$done { + CONFIG += $$done + cache(CONFIG, add, done) + } + export(CONFIG) + return(false) +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/configure_base.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/configure_base.prf new file mode 100644 index 000000000..e870e2ee1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/configure_base.prf @@ -0,0 +1,48 @@ +equals(QMAKE_HOST.os, Windows) { + SETENV_PFX = "set " + SETENV_SFX = "&" +} else { + SETENV_PFX = + SETENV_SFX = +} + +QMAKE_MAKE = $$(MAKE) +!isEmpty(QMAKE_MAKE) { + # We were called recursively. Use the same make. +} else: if(equals(MAKEFILE_GENERATOR, UNIX)|equals(MAKEFILE_GENERATOR, MINGW)) { + !equals(QMAKE_HOST.os, Windows): \ + QMAKE_MAKE = make + else: \ + QMAKE_MAKE = mingw32-make +} else: if(equals(MAKEFILE_GENERATOR, MSVC.NET)|equals(MAKEFILE_GENERATOR, MSBUILD)) { + QMAKE_MAKE = nmake +} else { + error("Configure tests are not supported with the $$MAKEFILE_GENERATOR Makefile generator.") +} +QMAKE_MAKE_NAME = $$basename(QMAKE_MAKE) +# Make sure we don't inherit MAKEFLAGS - -i in particular is fatal. +QMAKE_MAKE = "$${SETENV_PFX}MAKEFLAGS=$$SETENV_SFX $$QMAKE_MAKE" + +defineTest(qtLog) { + write_file($$QMAKE_CONFIG_LOG, 1, append) + $$QMAKE_CONFIG_VERBOSE: for (l, 1): log("$$l$$escape_expand(\\n)") +} + +defineTest(qtRunLoggedCommand) { + qtLog("+ $$1") + + !equals(3, false): \ + 1 = "( $$1 ) 2>&1" + output = $$system("$$1", lines, result) + lg = + for (l, output): \ + lg += "> $$l" + qtLog($$lg) + !isEmpty(2) { + $$2 = $$output + export($$2) + } + + !equals(result, 0): return(false) + return(true) +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/create_cmake.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/create_cmake.prf new file mode 100644 index 000000000..bb5083c92 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/create_cmake.prf @@ -0,0 +1,330 @@ +# +# 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. +# + +load(cmake_functions) + +# Several distros (ArchLinux, Fedora) have in the past installed libraries +# in /lib(64)?, but are now moving to install libraries in /usr/lib(64)?/. +# The /lib paths are made symlinks to the /usr/lib paths. If someone searching +# for a Qt 5 package finds it in /lib/cmake/Qt5Core, although it has been +# installed in /usr/lib/cmake/Qt5Core, relative paths to the includes and +# executables will not work. +# To work around this, we insert code into the generated config files to check +# at cmake time whether package has been found via a symlink, and correct +# that to an absolute path. This is only done for installations to +# the /usr or / prefix. +CMAKE_INSTALL_LIBS_DIR = $$cmakeTargetPath($$[QT_INSTALL_LIBS]) +contains(CMAKE_INSTALL_LIBS_DIR, ^(/usr)?/lib(64)?.*): CMAKE_USR_MOVE_WORKAROUND = $$CMAKE_INSTALL_LIBS_DIR + +CMAKE_OUT_DIR = $$MODULE_BASE_OUTDIR/lib/cmake + +CMAKE_MODULE_NAME = $$cmakeModuleName($${MODULE}) + +split_incpath { + CMAKE_ADD_SOURCE_INCLUDE_DIRS = true + CMAKE_NO_PRIVATE_INCLUDES = true # Don't add private includes in the build dir which don't exist + CMAKE_SOURCE_INCLUDES = \ + $$cmakeTargetPaths($$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt$${CMAKE_MODULE_NAME}) + CMAKE_SOURCE_PRIVATE_INCLUDES = \ + $$cmakeTargetPaths($$QT_MODULE_INCLUDE_BASE/Qt$${CMAKE_MODULE_NAME}/$$eval(QT.$${MODULE}.VERSION) \ + $$QT_MODULE_INCLUDE_BASE/Qt$${CMAKE_MODULE_NAME}/$$eval(QT.$${MODULE}.VERSION)/Qt$${CMAKE_MODULE_NAME}) + + cmake_extra_source_includes.input = $$PWD/data/cmake/ExtraSourceIncludes.cmake.in + cmake_extra_source_includes.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/ExtraSourceIncludes.cmake + + !build_pass:QMAKE_SUBSTITUTES += \ + cmake_extra_source_includes + + cmake_qt5_module_files.files = \ + $$cmake_extra_source_includes.output +} + +CMAKE_INCLUDE_DIR = $$cmakeRelativePath($$[QT_INSTALL_HEADERS], $$[QT_INSTALL_PREFIX]) +contains(CMAKE_INCLUDE_DIR, "^\\.\\./.*") { + CMAKE_INCLUDE_DIR = $$[QT_INSTALL_HEADERS]/ + CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True +} + +!exists($$first(QT.$${MODULE}_private.includes)): CMAKE_NO_PRIVATE_INCLUDES = true + +CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) +contains(CMAKE_LIB_DIR,"^\\.\\./.*") { + CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/ + CMAKE_LIB_DIR_IS_ABSOLUTE = True +} else { + CMAKE_RELATIVE_INSTALL_LIBS_DIR = $$cmakeRelativePath($$[QT_INSTALL_PREFIX], $$[QT_INSTALL_LIBS]) + # We need to go up another two levels because the CMake files are + # installed in $${CMAKE_LIB_DIR}/cmake/Qt5$${CMAKE_MODULE_NAME} + CMAKE_RELATIVE_INSTALL_DIR = "$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}../../" +} + +CMAKE_BIN_DIR = $$cmakeRelativePath($$[QT_HOST_BINS], $$[QT_INSTALL_PREFIX]) +contains(CMAKE_BIN_DIR, "^\\.\\./.*") { + CMAKE_BIN_DIR = $$[QT_HOST_BINS]/ + CMAKE_BIN_DIR_IS_ABSOLUTE = True +} + +CMAKE_PLUGIN_DIR = $$cmakeRelativePath($$[QT_INSTALL_PLUGINS], $$[QT_INSTALL_PREFIX]) +contains(CMAKE_PLUGIN_DIR, "^\\.\\./.*") { + CMAKE_PLUGIN_DIR = $$[QT_INSTALL_PLUGINS]/ + CMAKE_PLUGIN_DIR_IS_ABSOLUTE = True +} + +win32:!static:!staticlib { + CMAKE_DLL_DIR = $$cmakeRelativePath($$[QT_INSTALL_BINS], $$[QT_INSTALL_PREFIX]) + contains(CMAKE_DLL_DIR, "^\\.\\./.*") { + CMAKE_DLL_DIR = $$[QT_INSTALL_BINS]/ + CMAKE_DLL_DIR_IS_ABSOLUTE = True + } +} else { + CMAKE_DLL_DIR = $$CMAKE_LIB_DIR + CMAKE_DLL_DIR_IS_ABSOLUTE = $$CMAKE_LIB_DIR_IS_ABSOLUTE +} + +static|staticlib:CMAKE_STATIC_TYPE = true + +CMAKE_DEBUG_TYPE = +CMAKE_RELEASE_TYPE = + +# Requirements: +# * If Qt is configured with -debug, we're creating debug libraries and not +# release libraries, regardless of whether we're on a platform where +# debug_and_release is true. +# * If Qt is configured with -release, we're creating release libraries and not +# debug libraries, regardless of whether we're on a platform where +# debug_and_release is true. +# * If Qt is configured with neither -debug nor -release, and we are on a +# platform where debug_and_release is true, we're creating both +# debug and release libraries. +# * If Qt is configured with -debug on a platform where debug_and_release is +# true, and 'make release' is subsequently invoked, CMake is only aware of +# the debug libraries at build time. + +equals(QMAKE_HOST.os, Windows): CMAKE_BIN_SUFFIX = ".exe" +if(build_all|CONFIG(debug, debug|release)): CMAKE_DEBUG_TYPE = debug +if(build_all|CONFIG(release, debug|release)): CMAKE_RELEASE_TYPE = release + +contains(CONFIG, plugin) { + !isEmpty(PLUGIN_EXTENDS):!equals(PLUGIN_EXTENDS, -) { + count(PLUGIN_EXTENDS, 1, greaterThan): \ + error("Plugin declares to extend multiple modules. We don't handle that ...") + PLUGIN_MODULE_NAME = $$PLUGIN_EXTENDS + } else { + PLUGIN_MODULE_NAME = + for (mod, QT_MODULES) { + contains(QT.$${mod}.plugin_types, $$PLUGIN_TYPE) { + !isEmpty(PLUGIN_MODULE_NAME): \ + error("Multiple modules claim plugin type '$$PLUGIN_TYPE' ($$mod, in addition to $$PLUGIN_MODULE_NAME)") + PLUGIN_MODULE_NAME = $$mod + break() + } + } + isEmpty(PLUGIN_MODULE_NAME): error("No module claims plugin type '$$PLUGIN_TYPE'") + } + + CMAKE_MODULE_NAME = $$cmakeModuleName($$PLUGIN_MODULE_NAME) + + CMAKE_PLUGIN_NAME = $$PLUGIN_CLASS_NAME + + win32 { + isEmpty(CMAKE_STATIC_TYPE) { + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${TARGET}.dll + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${TARGET}d.dll + } else:mingw { + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}.a + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}d.a + } else { # MSVC static + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${TARGET}.lib + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${TARGET}d.lib + } + } else { + mac { + isEmpty(CMAKE_STATIC_TYPE): CMAKE_PlUGIN_EXT = .dylib + else: CMAKE_PlUGIN_EXT = .a + + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} + } else { + isEmpty(CMAKE_STATIC_TYPE): CMAKE_PlUGIN_EXT = .so + else: CMAKE_PlUGIN_EXT = .a + + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} + } + } + cmake_target_file.input = $$PWD/data/cmake/Qt5PluginTarget.cmake.in + cmake_target_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}_$${PLUGIN_CLASS_NAME}.cmake + + !build_pass:QMAKE_SUBSTITUTES += \ + cmake_target_file + + cmake_qt5_plugin_file.files = $$cmake_target_file.output + cmake_qt5_plugin_file.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} + INSTALLS += cmake_qt5_plugin_file + + return() +} + +CMAKE_MKSPEC = $$[QMAKE_XSPEC] + +sorted_deps = $$sort_depends(QT.$${MODULE}.depends, QT.) +mod_deps = +lib_deps = +aux_mod_deps = +aux_lib_deps = +# Until CMake 3.0 is the minimum requirement of Qt 5, we need to filter +# out header-only modules from dependencies. CMake 3.0 provides INTERFACE +# libraries which are equivalent to header-only modules. +for (dep, sorted_deps) { + cdep = $$cmakeModuleName($$dep) + !contains(QT.$${dep}.module_config, no_link) { + mod_deps += $$cdep + lib_deps += Qt5::$$cdep + } else { + aux_mod_deps += $$cdep + aux_lib_deps += Qt5::$$cdep + } +} +CMAKE_MODULE_DEPS = $$join(mod_deps, ";") +CMAKE_QT5_MODULE_DEPS = $$join(lib_deps, ";") +CMAKE_INTERFACE_MODULE_DEPS = $$join(aux_mod_deps, ";") +CMAKE_INTERFACE_QT5_MODULE_DEPS = $$join(aux_lib_deps, ";") + +CMAKE_QT_STEM = Qt$$QT_MAJOR_VERSION$${CMAKE_MODULE_NAME}$${QT_LIBINFIX} + +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 + + CMAKE_PRL_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}_debug.prl + CMAKE_PRL_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.prl + } else { + qt_framework { + CMAKE_LIB_FILE_LOCATION_DEBUG = Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}.framework/Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX} + CMAKE_LIB_FILE_LOCATION_RELEASE = Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}.framework/Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX} + CMAKE_BUILD_IS_FRAMEWORK = "true" + } else { + CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}_debug.$$eval(QT.$${MODULE}.VERSION).dylib + CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.$$eval(QT.$${MODULE}.VERSION).dylib + } + } +} else:win32 { + CMAKE_WINDOWS_BUILD = "true" + CMAKE_FIND_OTHER_LIBRARY_BUILD = "true" + + CMAKE_LIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.dll + CMAKE_LIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.dll + + mingw { + CMAKE_WINMAIN_FILE_LOCATION_DEBUG = libqtmain$${QT_LIBINFIX}d.a + CMAKE_WINMAIN_FILE_LOCATION_RELEASE = libqtmain$${QT_LIBINFIX}.a + + !isEmpty(CMAKE_STATIC_TYPE) { + CMAKE_STATIC_WINDOWS_BUILD = "true" + CMAKE_IMPLIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}d.a + CMAKE_IMPLIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a + + CMAKE_PRL_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}d.prl + CMAKE_PRL_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.prl + } else { + CMAKE_IMPLIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}d.a + CMAKE_IMPLIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a + } + } else { + CMAKE_WINMAIN_FILE_LOCATION_DEBUG = qtmain$${QT_LIBINFIX}d.lib + CMAKE_WINMAIN_FILE_LOCATION_RELEASE = qtmain$${QT_LIBINFIX}.lib + + !isEmpty(CMAKE_STATIC_TYPE) { + CMAKE_STATIC_WINDOWS_BUILD = "true" + CMAKE_IMPLIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.lib + CMAKE_IMPLIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.lib + + CMAKE_PRL_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.prl + CMAKE_PRL_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.prl + } else { + CMAKE_IMPLIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.lib + CMAKE_IMPLIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.lib + } + } +} else { + !isEmpty(CMAKE_STATIC_TYPE) { + CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.a + CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a + CMAKE_PRL_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.prl + CMAKE_PRL_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.prl + } else:unversioned_libname { + CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.so + CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.so + CMAKE_LIB_SONAME = lib$${CMAKE_QT_STEM}.so + } else { + CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.so.$$eval(QT.$${MODULE}.VERSION) + CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.so.$$eval(QT.$${MODULE}.VERSION) + CMAKE_LIB_SONAME = lib$${CMAKE_QT_STEM}.so.$$section(QT.$${MODULE}.VERSION, ., 0, 0) + } +} + +INSTALLS += cmake_qt5_module_files + +cmake_config_file.input = $$PWD/data/cmake/Qt5BasicConfig.cmake.in +cmake_config_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}Config.cmake + +CMAKE_PACKAGE_VERSION = $$eval(QT.$${MODULE}.VERSION) + +cmake_config_version_file.input = $$PWD/data/cmake/Qt5ConfigVersion.cmake.in +cmake_config_version_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}ConfigVersion.cmake + +!build_pass:QMAKE_SUBSTITUTES += \ + cmake_config_file \ + cmake_config_version_file + +cmake_qt5_module_files.files = \ + $$cmake_config_file.output \ + $$cmake_config_version_file.output + +cmake_extras_file.input = $$_PRO_FILE_PWD_/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake.in +exists($$cmake_extras_file.input) { + + CMAKE_MODULE_EXTRAS = "true" + cmake_extras_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake + + !build_pass:QMAKE_SUBSTITUTES += cmake_extras_file + + cmake_qt5_module_files.files += \ + $$cmake_extras_file.output +} + +cmake_macros_file.input = $$_PRO_FILE_PWD_/Qt5$${CMAKE_MODULE_NAME}Macros.cmake +exists($$cmake_macros_file.input) { + CMAKE_MODULE_MACROS = "true" + + cmake_macros_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}Macros.cmake + cmake_macros_file.CONFIG = verbatim + + !build_pass:QMAKE_SUBSTITUTES += cmake_macros_file + + cmake_qt5_module_files.files += $$cmake_macros_file.output +} + +cmake_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} + +# We are generating cmake files. Most developers of Qt are not aware of cmake, +# so we require automatic tests to be available. The only module which should +# set CMAKE_MODULE_TESTS to '-' is enginio because that is known to be broken. +# Other modules should either create proper tests in tests/auto/cmake or, as +# a temporary measure, disable the generation of cmake files +# with 'CONFIG -= create_cmake' +!equals(CMAKE_MODULE_TESTS, -) { + isEmpty(CMAKE_MODULE_TESTS): CMAKE_MODULE_TESTS = $$MODULE_BASE_INDIR/tests/auto/cmake + !exists($$CMAKE_MODULE_TESTS): \ + error("Missing CMake tests. Either create tests in tests/auto/cmake," \ + "or disable cmake config file creation with CONFIG-=create_cmake.") +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ctest_testcase.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ctest_testcase.prf new file mode 100644 index 000000000..3b7f3091c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ctest_testcase.prf @@ -0,0 +1,9 @@ + +CMAKE_TEST_LOCATION = $$_PRO_FILE_PWD_ + +for(d, $$list($$split($$list($$[QMAKE_MKSPECS]), $$DIRLIST_SEPARATOR))) { + CMAKE_PREFIX_PATH *= $$clean_path($$dirname(d)) +} +CMAKE_PREFIX_PATH=\"$$join(CMAKE_PREFIX_PATH, ;)\" + +include(ctest_testcase_common.prf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ctest_testcase_common.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ctest_testcase_common.prf new file mode 100644 index 000000000..adb9da1b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ctest_testcase_common.prf @@ -0,0 +1,95 @@ + +CMAKE_VERSION = $$system(cmake --version 2>$$QMAKE_SYSTEM_NULL_DEVICE, lines) +CMAKE_VERSION = $$member(CMAKE_VERSION, 0, 0) + +check.commands = +QMAKE_EXTRA_TARGETS *= check + +isEmpty(CMAKE_VERSION) { + message("cmake executable not found. Not running CMake unit tests") + return() +} + +CTEST_VERSION = $$system(ctest --version 2>$$QMAKE_SYSTEM_NULL_DEVICE) +isEmpty(CTEST_VERSION) { + message("ctest executable not found. Not running CMake unit tests") + return() +} + +CMAKE_VERSION = $$last(CMAKE_VERSION) +CMAKE_VERSION_MAJOR = $$section(CMAKE_VERSION, ., 0, 0) +CMAKE_VERSION_MINOR = $$section(CMAKE_VERSION, ., 1, 1) +CMAKE_VERSION_PATCH = $$section(CMAKE_VERSION, ., 2, 2) +# CMake can report versions like 2.8.11-rc1, so strip off the rc part. +CMAKE_VERSION_PATCH ~= s,-.*,, + +VERSION_OK = +greaterThan(CMAKE_VERSION_MAJOR, 2) { + VERSION_OK = 1 +} else:greaterThan(CMAKE_VERSION_MAJOR, 1):greaterThan(CMAKE_VERSION_MINOR, 8) { + VERSION_OK = 1 +} else:greaterThan(CMAKE_VERSION_MAJOR, 1):greaterThan(CMAKE_VERSION_MINOR, 7):greaterThan(CMAKE_VERSION_PATCH, 2) { + VERSION_OK = 1 +} + +isEmpty(VERSION_OK) { + message("cmake $$CMAKE_VERSION is too old for this test.") + return() +} + +load(cmake_functions) + +CMAKE_BUILD_TYPE = Debug +CONFIG(release, debug|release):CMAKE_BUILD_TYPE = Release +win32: CMAKE_GENERATOR = -G \"NMake Makefiles\" +mingw:isEmpty(CROSS_COMPILE):CMAKE_GENERATOR = -G \"MinGW Makefiles\" + +BUILD_DIR = $$replace($$list($$OUT_PWD/build), /, $$QMAKE_DIR_SEP) + +!qtHaveModule(gui): CMAKE_MODULE_DEFINES += -DNO_GUI=True +!qtHaveModule(widgets): CMAKE_MODULE_DEFINES += -DNO_WIDGETS=True +!qtHaveModule(dbus): CMAKE_MODULE_DEFINES += -DNO_DBUS=True + +dependentmodules = $$resolve_depends(CMAKE_QT_MODULES_UNDER_TEST, "QT.") +dependentmodules -= $$CMAKE_QT_MODULES_UNDER_TEST + +mod_deps = +for (dep, dependentmodules): \ + !contains(QT.$${dep}.module_config, no_link): \ + mod_deps += $$cmakeModuleName($$dep) +dependentmodules = $$join(mod_deps, ";") + +QT_FOR_CONFIG += gui-private +qtConfig(angle): CMAKE_GL_DEFINES = -DQT_WITH_ANGLE=True +!qtConfig(egl): CMAKE_GL_DEFINES += -DNO_EGL=True + +CMAKE_MODULE_VERSIONS = +CMAKE_MODULES_UNDER_TEST = +for (MODULE_UNDER_TEST, CMAKE_QT_MODULES_UNDER_TEST) { + CMAKE_NAME = $$cmakeModuleName($$MODULE_UNDER_TEST) + ver = $$eval(QT.$${MODULE_UNDER_TEST}.VERSION) + CMAKE_MODULE_VERSIONS += \ + -DCMAKE_$${CMAKE_NAME}_MODULE_MAJOR_VERSION=$$section(ver, ., 0, 0) \ + -DCMAKE_$${CMAKE_NAME}_MODULE_MINOR_VERSION=$$section(ver, ., 1, 1) \ + -DCMAKE_$${CMAKE_NAME}_MODULE_PATCH_VERSION=$$section(ver, ., 2, 2) + CMAKE_MODULES_UNDER_TEST += $$CMAKE_NAME +} +CMAKE_MODULES_UNDER_TEST = $$join(CMAKE_MODULES_UNDER_TEST, ;) + +check.commands = \ + $(MKDIR) $$BUILD_DIR && $$QMAKE_CD $$BUILD_DIR && \ + cmake $$CMAKE_TEST_LOCATION $$CMAKE_GENERATOR \ + -DCMAKE_C_COMPILER=$$QMAKE_CC \ + -DCMAKE_CXX_COMPILER=$$QMAKE_CXX \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + $$CMAKE_MODULE_DEFINES \ + $$CMAKE_GL_DEFINES \ + -DCMAKE_BUILD_TYPE=$${CMAKE_BUILD_TYPE} \ + -DCMAKE_PREFIX_PATH=$$CMAKE_PREFIX_PATH \ + -DQt5_MODULE_TEST_DEPENDS=\"$${dependentmodules}\" \ + $${CMAKE_MODULE_VERSIONS} \ + -DCMAKE_MODULES_UNDER_TEST=\"$$CMAKE_MODULES_UNDER_TEST\" && \ + $(TESTRUNNER) ctest --output-on-failure + +insignificant_test:!isEmpty(check.commands): \ + check.commands = -$${check.commands} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ctest_testcase_installed.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ctest_testcase_installed.prf new file mode 100644 index 000000000..b54f32100 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ctest_testcase_installed.prf @@ -0,0 +1,10 @@ + +prefix_build { + CMAKE_TEST_LOCATION = $$_PRO_FILE_PWD_/../cmake + + CMAKE_PREFIX_PATH = $$[QT_INSTALL_PREFIX] + + CONFIG += insignificant_test + + include(ctest_testcase_common.prf) +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/android/dx.bat b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/android/dx.bat new file mode 100644 index 000000000..9816f9607 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/android/dx.bat @@ -0,0 +1,108 @@ +@echo off +REM Copyright (C) 2007 The Android Open Source Project +REM +REM Licensed under the Apache License, Version 2.0 (the "License"); +REM you may not use this file except in compliance with the License. +REM You may obtain a copy of the License at +REM +REM http://www.apache.org/licenses/LICENSE-2.0 +REM +REM Unless required by applicable law or agreed to in writing, software +REM distributed under the License is distributed on an "AS IS" BASIS, +REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +REM See the License for the specific language governing permissions and +REM limitations under the License. + +REM If/when Google merge: +REM https://android-review.googlesource.com/#/c/52680/ +REM this file will become redundant. + +REM don't modify the caller's environment +setlocal + +REM Locate dx.jar in the directory where dx.bat was found and start it. + +REM Set up prog to be the path of this script, including following symlinks, +REM and set up progdir to be the fully-qualified pathname of its directory. +set prog=%~f0 + +if [%1]==[] goto badArgs +set "dx_jar_path=%1" +shift /1 + +if [%1]==[] goto badArgs + +REM Use dpZ here to make it more like the Google version. +for %%F in ("%dx_jar_path%") do set dpZ=%%~dpF + +rem Check we have a valid Java.exe in the path. +set java_exe= +if exist "%dpZ%..\tools\lib\find_java.bat" call "%dpZ%..\tools\lib\find_java.bat" +if exist "%dpZ%..\..\tools\lib\find_java.bat" call "%dpZ%..\..\tools\lib\find_java.bat" + +if not defined java_exe goto :EOF + +set jarfile=dx.jar +set "frameworkdir=%dpZ%" +rem frameworkdir must not end with a dir sep. +set "frameworkdir=%frameworkdir:~0,-1%" + +if exist "%frameworkdir%\%jarfile%" goto JarFileOk + set "frameworkdir=%dpZ%lib" + +if exist "%frameworkdir%\%jarfile%" goto JarFileOk + set "frameworkdir=%dpZ%..\framework" + +:JarFileOk + +set "jarpath=%frameworkdir%\%jarfile%" + +set javaOpts= +set args= + +REM By default, give dx a max heap size of 1 gig and a stack size of 1meg. +rem This can be overridden by using "-JXmx..." and "-JXss..." options below. +set defaultXmx=-Xmx1024M +set defaultXss=-Xss1m + +REM Capture all arguments that are not -J options. +REM Note that when reading the input arguments with %1, the cmd.exe +REM automagically converts --name=value arguments into 2 arguments "--name" +REM followed by "value". Dx has been changed to know how to deal with that. +set params= + +:firstArg +if [%1]==[] goto endArgs +set a=%~1 + + if [%defaultXmx%]==[] goto notXmx + if %a:~0,5% NEQ -JXmx goto notXmx + set defaultXmx= + :notXmx + + if [%defaultXss%]==[] goto notXss + if %a:~0,5% NEQ -JXss goto notXss + set defaultXss= + :notXss + + if %a:~0,2% NEQ -J goto notJ + set javaOpts=%javaOpts% -%a:~2% + shift /1 + goto firstArg + + :notJ + set params=%params% %1 + shift /1 + goto firstArg + +:endArgs + +set javaOpts=%javaOpts% %defaultXmx% %defaultXss% +call "%java_exe%" %javaOpts% -Djava.ext.dirs="%frameworkdir%" -jar "%jarpath%" %params% + +goto :EOF + +:badArgs +echo Usage: dx (for Qt) ^ ^ +echo Example: dx (for Qt) C:\android-sdk\build-tools\17.0.0\dx.jar --dex --output=target.jar .classes + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/ExtraSourceIncludes.cmake.in b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/ExtraSourceIncludes.cmake.in new file mode 100644 index 000000000..ec8075f3f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/ExtraSourceIncludes.cmake.in @@ -0,0 +1,7 @@ + +list(APPEND _Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS + $$CMAKE_SOURCE_INCLUDES +) +set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS + $$CMAKE_SOURCE_PRIVATE_INCLUDES +) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in new file mode 100644 index 000000000..55c74aad6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in @@ -0,0 +1,385 @@ + +!!IF !equals(TEMPLATE, aux) +if (CMAKE_VERSION VERSION_LESS 2.8.3) + message(FATAL_ERROR \"Qt 5 requires at least CMake version 2.8.3\") +endif() +!!ELSE +if (CMAKE_VERSION VERSION_LESS 3.0.0) + message(FATAL_ERROR \"Qt 5 $${CMAKE_MODULE_NAME} module requires at least CMake version 3.0.0\") +endif() +!!ENDIF + +!!IF !isEmpty(CMAKE_USR_MOVE_WORKAROUND) +!!IF !isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") +!!ELSE +get_filename_component(_IMPORT_PREFIX \"${CMAKE_CURRENT_LIST_FILE}\" PATH) +# Use original install prefix when loaded through a +# cross-prefix symbolic link such as /lib -> /usr/lib. +get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH) +get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5$${CMAKE_MODULE_NAME}\" REALPATH) +if(_realCurr STREQUAL _realOrig) + get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE) +else() + get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) +endif() +unset(_realOrig) +unset(_realCurr) +unset(_IMPORT_PREFIX) +!!ENDIF +!!ELIF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) +!!ELSE +set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") +!!ENDIF + +!!IF !equals(TEMPLATE, aux) +# For backwards compatibility only. Use Qt5$${CMAKE_MODULE_NAME}_VERSION instead. +set(Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING "$$eval(QT.$${MODULE}.VERSION)") + +set(Qt5$${CMAKE_MODULE_NAME}_LIBRARIES Qt5::$${CMAKE_MODULE_NAME}) +!!ENDIF // TEMPLATE != aux + +macro(_qt5_$${CMAKE_MODULE_NAME}_check_file_exists file) + if(NOT EXISTS \"${file}\" ) + message(FATAL_ERROR \"The imported target \\\"Qt5::$${CMAKE_MODULE_NAME}\\\" references the file + \\\"${file}\\\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \\\"${CMAKE_CURRENT_LIST_FILE}\\\" +but not all the files it references. +\") + endif() +endmacro() + +!!IF !equals(TEMPLATE, aux) +macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + +!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") +!!ELSE + set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") +!!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES + \"INTERFACE_LINK_LIBRARIES\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" + \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} +!!IF !isEmpty(CMAKE_LIB_SONAME) + \"IMPORTED_SONAME_${Configuration}\" \"$${CMAKE_LIB_SONAME}\" +!!ENDIF + # For backward compatibility with CMake < 2.8.12 + \"IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" + ) + +!!IF !isEmpty(CMAKE_WINDOWS_BUILD) +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") +!!ELSE + set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") +!!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_implib}) + if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\") + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES + \"IMPORTED_IMPLIB_${Configuration}\" ${imported_implib} + ) + endif() +!!ENDIF +endmacro() +!!ENDIF + +if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) + +!!IF !no_module_headers +!!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" + ) +!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" + ) +!!ELSE + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") +!!ENDIF +!!ELSE +!!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\") +!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\" + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\" + ) +!!ELSE + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") +!!ENDIF +!!ELSE + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR\" \"$${CMAKE_INCLUDE_DIR}Qt$${CMAKE_MODULE_NAME}\") +!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS + \"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\" + \"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\" + ) +!!ELSE + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") +!!ENDIF +!!ENDIF +!!ENDIF +!!IF !isEmpty(CMAKE_ADD_SOURCE_INCLUDE_DIRS) + include(\"${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake\" OPTIONAL) +!!ENDIF +!!ELSE + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"\") + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") +!!ENDIF + + foreach(_dir ${_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS}) + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${_dir}) + endforeach() + +!!IF isEmpty(CMAKE_BUILD_IS_FRAMEWORK) + # Only check existence of private includes if the Private component is + # specified. + list(FIND Qt5$${CMAKE_MODULE_NAME}_FIND_COMPONENTS Private _check_private) + if (NOT _check_private STREQUAL -1) + foreach(_dir ${Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS}) + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${_dir}) + endforeach() + endif() +!!ENDIF + +!!IF !equals(TEMPLATE, aux) + set(Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS ${_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS}) + + set(Qt5$${CMAKE_MODULE_NAME}_DEFINITIONS -D$${MODULE_DEFINE}) + set(Qt5$${CMAKE_MODULE_NAME}_COMPILE_DEFINITIONS $${MODULE_DEFINES}) +!!ENDIF // TEMPLATE != aux + set(_Qt5$${CMAKE_MODULE_NAME}_MODULE_DEPENDENCIES \"$${CMAKE_MODULE_DEPS}\") + +!!IF !isEmpty(CMAKE_INTERFACE_MODULE_DEPS) + if (NOT CMAKE_VERSION VERSION_LESS 3.0.0) + list(APPEND _Qt5$${CMAKE_MODULE_NAME}_MODULE_DEPENDENCIES \"$${CMAKE_INTERFACE_MODULE_DEPS}\") + endif() +!!ENDIF + + set(Qt5$${CMAKE_MODULE_NAME}_OWN_PRIVATE_INCLUDE_DIRS ${Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS}) + + set(_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_REQUIRED) + if (Qt5$${CMAKE_MODULE_NAME}_FIND_REQUIRED) + set(_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_REQUIRED REQUIRED) + endif() + set(_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_QUIET) + if (Qt5$${CMAKE_MODULE_NAME}_FIND_QUIETLY) + set(_Qt5$${CMAKE_MODULE_NAME}_DEPENDENCIES_FIND_QUIET QUIET) + endif() + set(_Qt5$${CMAKE_MODULE_NAME}_FIND_VERSION_EXACT) + if (Qt5$${CMAKE_MODULE_NAME}_FIND_VERSION_EXACT) + set(_Qt5$${CMAKE_MODULE_NAME}_FIND_VERSION_EXACT EXACT) + endif() + +!!IF !equals(TEMPLATE, aux) + set(Qt5$${CMAKE_MODULE_NAME}_EXECUTABLE_COMPILE_FLAGS \"\") +!!ENDIF // TEMPLATE != aux + + foreach(_module_dep ${_Qt5$${CMAKE_MODULE_NAME}_MODULE_DEPENDENCIES}) + if (NOT Qt5${_module_dep}_FOUND) + find_package(Qt5${_module_dep} + $$VERSION ${_Qt5$${CMAKE_MODULE_NAME}_FIND_VERSION_EXACT} + ${_Qt5$${CMAKE_MODULE_NAME}_DEPENDENCIES_FIND_QUIET} + ${_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_REQUIRED} + PATHS \"${CMAKE_CURRENT_LIST_DIR}/..\" NO_DEFAULT_PATH + ) + endif() + + if (NOT Qt5${_module_dep}_FOUND) + set(Qt5$${CMAKE_MODULE_NAME}_FOUND False) + return() + endif() + +!!IF !equals(TEMPLATE, aux) + list(APPEND Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS \"${Qt5${_module_dep}_INCLUDE_DIRS}\") + list(APPEND Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"${Qt5${_module_dep}_PRIVATE_INCLUDE_DIRS}\") + list(APPEND Qt5$${CMAKE_MODULE_NAME}_DEFINITIONS ${Qt5${_module_dep}_DEFINITIONS}) + list(APPEND Qt5$${CMAKE_MODULE_NAME}_COMPILE_DEFINITIONS ${Qt5${_module_dep}_COMPILE_DEFINITIONS}) + list(APPEND Qt5$${CMAKE_MODULE_NAME}_EXECUTABLE_COMPILE_FLAGS ${Qt5${_module_dep}_EXECUTABLE_COMPILE_FLAGS}) +!!ENDIF // TEMPLATE != aux + endforeach() +!!IF !equals(TEMPLATE, aux) + list(REMOVE_DUPLICATES Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS) + list(REMOVE_DUPLICATES Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS) + list(REMOVE_DUPLICATES Qt5$${CMAKE_MODULE_NAME}_DEFINITIONS) + list(REMOVE_DUPLICATES Qt5$${CMAKE_MODULE_NAME}_COMPILE_DEFINITIONS) + list(REMOVE_DUPLICATES Qt5$${CMAKE_MODULE_NAME}_EXECUTABLE_COMPILE_FLAGS) +!!ENDIF // TEMPLATE != aux + + set(_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES \"$${CMAKE_QT5_MODULE_DEPS}\") + +!!IF !isEmpty(CMAKE_INTERFACE_QT5_MODULE_DEPS) + if (NOT CMAKE_VERSION VERSION_LESS 3.0.0) + list(APPEND _Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES \"$${CMAKE_INTERFACE_QT5_MODULE_DEPS}\") + endif() +!!ENDIF + +!!IF !isEmpty(CMAKE_STATIC_TYPE) + add_library(Qt5::$${CMAKE_MODULE_NAME} STATIC IMPORTED) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY IMPORTED_LINK_INTERFACE_LANGUAGES "CXX") +!!ELSE +!!IF equals(TEMPLATE, aux) + add_library(Qt5::$${CMAKE_MODULE_NAME} INTERFACE IMPORTED) +!!ELSE + add_library(Qt5::$${CMAKE_MODULE_NAME} SHARED IMPORTED) +!!ENDIF +!!ENDIF +!!IF !equals(TEMPLATE, aux) +!!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY FRAMEWORK 1) +!!ENDIF +!!ENDIF // TEMPLATE != aux + + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY + INTERFACE_INCLUDE_DIRECTORIES ${_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS}) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY + INTERFACE_COMPILE_DEFINITIONS $${MODULE_DEFINES}) + + set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST TRUE) + foreach (_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIR ${Qt5$${CMAKE_MODULE_NAME}_OWN_PRIVATE_INCLUDE_DIRS}) + if (NOT EXISTS ${_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIR}) + set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST FALSE) + endif() + endforeach() + + if (_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST + AND NOT CMAKE_VERSION VERSION_LESS 3.0.0 ) + add_library(Qt5::$${CMAKE_MODULE_NAME}Private INTERFACE IMPORTED) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME}Private PROPERTY + INTERFACE_INCLUDE_DIRECTORIES ${Qt5$${CMAKE_MODULE_NAME}_OWN_PRIVATE_INCLUDE_DIRS} + ) + set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATEDEPS) + foreach(dep ${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}) + if (TARGET ${dep}Private) + list(APPEND _Qt5$${CMAKE_MODULE_NAME}_PRIVATEDEPS ${dep}Private) + endif() + endforeach() + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME}Private PROPERTY + INTERFACE_LINK_LIBRARIES Qt5::$${CMAKE_MODULE_NAME} ${_Qt5$${CMAKE_MODULE_NAME}_PRIVATEDEPS} + ) + endif() + +!!IF !equals(TEMPLATE, aux) +!!IF !isEmpty(CMAKE_RELEASE_TYPE) +!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) + _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" ) +!!ELSE + _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD + +!!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) +!!IF isEmpty(CMAKE_DEBUG_TYPE) +!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE + if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE + _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) +!!ELSE // CMAKE_STATIC_WINDOWS_BUILD + if (EXISTS +!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" +!!ELSE + \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" +!!ENDIF + AND EXISTS +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ELSE + \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ENDIF + _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD + endif() +!!ENDIF // CMAKE_DEBUG_TYPE +!!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD + +!!ENDIF // CMAKE_RELEASE_TYPE + +!!IF !isEmpty(CMAKE_DEBUG_TYPE) +!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) + _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) +!!ELSE + _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD + +!!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) +!!IF isEmpty(CMAKE_RELEASE_TYPE) +!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE + if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE + _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" ) +!!ELSE // CMAKE_STATIC_WINDOWS_BUILD + if (EXISTS +!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" +!!ELSE + \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" +!!ENDIF + AND EXISTS +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ELSE + \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ENDIF + _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD + endif() +!!ENDIF // CMAKE_RELEASE_TYPE +!!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD + +!!ENDIF // CMAKE_DEBUG_TYPE +!!ELSE // TEMPLATE != aux + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES + INTERFACE_LINK_LIBRARIES \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" + ) +!!ENDIF // TEMPLATE != aux + + file(GLOB pluginTargets \"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}_*Plugin.cmake\") + + macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION) + set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + +!!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") +!!ELSE + set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") +!!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) + set_target_properties(Qt5::${Plugin} PROPERTIES + \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} + ) + endmacro() + + if (pluginTargets) + foreach(pluginTarget ${pluginTargets}) + include(${pluginTarget}) + endforeach() + endif() + + +!!IF !isEmpty(CMAKE_MODULE_EXTRAS) + include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake\") +!!ENDIF + +!!IF !isEmpty(CMAKE_MODULE_MACROS) + include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}Macros.cmake\") +!!ENDIF + +_qt5_$${CMAKE_MODULE_NAME}_check_file_exists(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigVersion.cmake\") + +endif() diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/Qt5ConfigVersion.cmake.in b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/Qt5ConfigVersion.cmake.in new file mode 100644 index 000000000..7c42430e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/Qt5ConfigVersion.cmake.in @@ -0,0 +1,11 @@ + +set(PACKAGE_VERSION $$CMAKE_PACKAGE_VERSION) + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in new file mode 100644 index 000000000..5baf0fdb1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in @@ -0,0 +1,11 @@ + +add_library(Qt5::$$CMAKE_PLUGIN_NAME MODULE IMPORTED) + +!!IF !isEmpty(CMAKE_RELEASE_TYPE) +_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\") +!!ENDIF +!!IF !isEmpty(CMAKE_DEBUG_TYPE) +_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\") +!!ENDIF + +list(APPEND Qt5$${CMAKE_MODULE_NAME}_PLUGINS Qt5::$$CMAKE_PLUGIN_NAME) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/configure.json b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/configure.json new file mode 100644 index 000000000..167c502e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/configure.json @@ -0,0 +1,21 @@ +{ + "files": { + }, + + "commandline": { + "options": { + "v": { "type": "enum", "name": "verbose", "values": { "yes": "true", "no": "false" } }, + "verbose": { "type": "enum", "values": { "yes": "true", "no": "false" } }, + + "continue": "void", + + "recheck": { "type": "optionalString", "name": "cache_recheck" }, + "recheck-all": { "type": "void", "name": "cache_use", "value": "none" }, + + "redo": { "type": "redo" }, + + "list-features": "void", + "list-libraries": "void" + } + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/dummy.cpp b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/dummy.cpp new file mode 100644 index 000000000..6bda7320e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/dummy.cpp @@ -0,0 +1,2 @@ +// Used when we need to compile with no source code +// (controls are in the command-line) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/mac/objc_namespace.sh b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/mac/objc_namespace.sh new file mode 100644 index 000000000..6ac004fe2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/mac/objc_namespace.sh @@ -0,0 +1,222 @@ +#!/bin/bash + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is the build configuration utility of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +script_argument_prefix="-Wobjc_namespace,--" + +required_arguments="target suffix original_ld" +optional_arguments="exclude_list exclude_regex slient" + +for argument in $required_arguments $optional_arguments; do + declare "$argument=" +done + +declare -i silent=0 +declare -a linker_arguments + +for i in "$@"; do + case $1 in + $script_argument_prefix*) + declare "${1#$script_argument_prefix}" + ;; + -o) + if [ -n "$2" ]; then + target="$2" + fi + linker_arguments+=("$1") + ;; + *) + linker_arguments+=("$1") + ;; + esac + shift +done + +get_entry() { + local map=$1 key=$2 + local i="${map}_map_${2}" + printf '%s' "${!i}" +} + +error() { + echo "$0: error: $*" >&2 + exit 1 +} + +for argument in $required_arguments; do + if [ -z "${!argument}" ]; then + error "missing argument --${argument}" + fi +done + +# Normalize suffix so we can use it as a bash variable +suffix=${suffix//[-. ]/_} + +link_binary() { + (PS4=; test $silent -ne 1 && set -x; $original_ld "${linker_arguments[@]}" "$@") 2>&1 || exit 1 +} + +sanitize_address() { + local address="$1" + address=${address#0x} # Remove hex prefix + address=${address: ${#address} < 8 ? 0 : -8} # Limit to 32-bit + echo "0x$address" +} + +read_binary() { + local address=$1 + local length=$2 + + dd if="$target" bs=1 iseek=$address count=$length 2>|/dev/null +} + +read_32bit_value() { + local address=$1 + read_binary $address 4 | xxd -p | dd conv=swab 2>/dev/null | rev +} + +inspect_binary() { + inspect_mode="$1" + + echo -n "🔎 Inspecting binary '$target', " + if [ ! -f "$target" ]; then + echo "target does not exist!" + exit 1 + fi + + read -a mach_header <<< "$(otool -h "$target" -v | tail -n 1)" + if [ "${mach_header[1]}" != "X86_64" ]; then + echo "binary is not 64-bit, only 64-bit binaries are supported!" + exit 1 + fi + + classnames_section="__objc_classname" + classnames=$(otool -v -s __TEXT $classnames_section "$target" | tail -n +3) + while read -a classname; do + address=$(sanitize_address ${classname[0]}) + name=${classname[1]} + + declare "address_to_classname_map_$address=$name" + declare "classname_to_address_map_$name=$address" + done <<< "$classnames" + + extra_classnames_file="$(mktemp -t ${classnames_section}_additions).S" + + if [ "$inspect_mode" == "inject_classnames" ]; then + echo "class names have not been namespaced, adding suffix '$suffix'..." + printf ".section __TEXT,$classnames_section,cstring_literals,no_dead_strip\n" > $extra_classnames_file + elif [ "$inspect_mode" == "patch_classes" ]; then + echo "found namespaced class names, updating class entries..." + fi + + classes=$(otool -o "$target" | grep class_ro_t) + while read -a class; do + address="$(sanitize_address ${class[1]})" + + class_flags="0x$(read_32bit_value $address)" + if [ -z "$class_flags" ]; then + echo " 💥 failed to read class flags for class at $address" + continue + fi + + is_metaclass=$(($class_flags & 0x1)) + + name_offset=$(($address + 24)) + classname_address="0x$(read_32bit_value $name_offset)" + if [ -z "$classname_address" ]; then + echo " 💥 failed to read class name address for class at $address" + continue + fi + + classname=$(get_entry address_to_classname $classname_address) + if [ -z "$classname" ]; then + echo " 💥 failed to resolve class name for address '$classname_address'" + continue + fi + + if [[ $exclude_list =~ $classname || $classname =~ $exclude_regex ]]; then + if [ $is_metaclass -eq 1 ]; then + class_type="meta class" + else + class_type="class" + fi + echo " 🚽 skipping excluded $class_type '$classname'" + continue + fi + + newclassname="${classname}_${suffix}" + + if [ "$inspect_mode" == "inject_classnames" ]; then + if [ $is_metaclass -eq 1 ]; then + continue + fi + + echo " 💉 injecting $classnames_section entry '$newclassname' for '$classname'" + printf ".asciz \"$newclassname\"\n" >> $extra_classnames_file + + elif [ "$inspect_mode" == "patch_classes" ]; then + newclassname_address=$(get_entry classname_to_address ${newclassname}) + if [ -z "$newclassname_address" ]; then + echo " 💥 failed to resolve class name address for class '$newclassname'" + continue + fi + + if [ $is_metaclass -eq 1 ]; then + class_type="meta" + else + class_type="class" + fi + + echo " 🔨 patching class_ro_t at $address ($class_type) from $classname_address ($classname) to $newclassname_address ($newclassname)" + echo ${newclassname_address: -8} | rev | dd conv=swab 2>/dev/null | xxd -p -r -seek $name_offset -l 4 - "$target" + fi + done <<< "$classes" +} + +echo "🔩 Linking binary using '$original_ld'..." +link_binary + +inspect_binary inject_classnames + +echo "🔩 Re-linking binary with extra __objc_classname section..." +link_binary $extra_classnames_file + +inspect_binary patch_classes + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/macros.cpp b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/macros.cpp new file mode 100644 index 000000000..9dcb8f091 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/macros.cpp @@ -0,0 +1,29 @@ +// Keep this file small. The pre-processed contents are eval'd by qmake. +QT_COMPILER_STDCXX = __cplusplus +#ifdef _MSC_VER +QMAKE_MSC_VER = _MSC_VER +QMAKE_MSC_FULL_VER = _MSC_FULL_VER +#endif +#ifdef __INTEL_COMPILER +QMAKE_ICC_VER = __INTEL_COMPILER +QMAKE_ICC_UPDATE_VER = __INTEL_COMPILER_UPDATE +#endif +#ifdef __APPLE_CC__ +QMAKE_APPLE_CC = __APPLE_CC__ +#endif +#ifdef __clang__ +#ifdef __APPLE_CC__ +QMAKE_APPLE_CLANG_MAJOR_VERSION = __clang_major__ +QMAKE_APPLE_CLANG_MINOR_VERSION = __clang_minor__ +QMAKE_APPLE_CLANG_PATCH_VERSION = __clang_patchlevel__ +#else +QMAKE_CLANG_MAJOR_VERSION = __clang_major__ +QMAKE_CLANG_MINOR_VERSION = __clang_minor__ +QMAKE_CLANG_PATCH_VERSION = __clang_patchlevel__ +#endif +#endif +#ifdef __GNUC__ +QMAKE_GCC_MAJOR_VERSION = __GNUC__ +QMAKE_GCC_MINOR_VERSION = __GNUC_MINOR__ +QMAKE_GCC_PATCH_VERSION = __GNUC_PATCHLEVEL__ +#endif diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/unix/findclasslist.pl b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/unix/findclasslist.pl new file mode 100644 index 000000000..b74b8b6a5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/data/unix/findclasslist.pl @@ -0,0 +1,64 @@ +#!/usr/bin/env perl +############################################################################# +## +## Copyright (C) 2016 Intel Corporation. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the build configuration tools of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +use strict; +my $syntax = "findclasslist.pl\n" . + "Replaces each \@FILE:filename\@ in stdin with the classes found in that file\n"; + +$\ = $/; +while () { + chomp; + unless (/\@FILE:(.*)\@/) { + print; + next; + } + + # Replace this line with the class list + open HDR, "<$1" or die("Could not open header $1: $!"); + my $comment = " /* $1 */"; + while (my $line = ) { + # Match a struct or class declaration, but not a forward declaration + $line =~ /^(?:struct|class|namespace) (?:Q_.*_EXPORT)? (\w+)(?!;)/ or next; + print $comment if $comment; + printf " *%d%s*;\n", length $1, $1; + $comment = 0; + } + close HDR; +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/dbusadaptors.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/dbusadaptors.prf new file mode 100644 index 000000000..43134e2a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/dbusadaptors.prf @@ -0,0 +1,4 @@ +dbus_type = adaptor +qdbusxml2cpp_option = -a + +include(dbuscommon.pri) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/dbuscommon.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/dbuscommon.pri new file mode 100644 index 000000000..cadcd46d6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/dbuscommon.pri @@ -0,0 +1,82 @@ +# +# 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. +# + +load(moc) +qtPrepareTool(QMAKE_QDBUSXML2CPP, qdbusxml2cpp) + +defineReplace(qdbusOutputBasename) { + return($$lower($$section($$list($$basename(1)),.,-2,-2))) +} + +dbus_TYPE = $$upper($$dbus_type) + +groups = +for(entry, DBUS_$${dbus_TYPE}S) { + + files = $$eval($${entry}.files) + isEmpty(files) { + files = $$entry + group = dbus_$${dbus_type} + } else { + group = $${entry}_dbus_$${dbus_type} + } + groups *= $$group + + input_list = $$upper($$group)_LIST + for(subent, $$list($$unique(files))) { + + !contains(subent, .*\\w\\.xml$) { + warning("Invalid D-BUS $${dbus_type}: '$$subent', please use 'com.mydomain.myinterface.xml' instead.") + next() + } + + $$input_list += $$subent + } +} + +for(group, groups) { + GROUP = $$upper($$group) + input_list = $${GROUP}_LIST + + # qmake does not keep empty elements in lists, so we reverse-engineer the short name + grp = $$replace(group, _?dbus_$${dbus_type}\$, ) + isEmpty(grp) { + hdr_flags = $$eval(QDBUSXML2CPP_$${dbus_TYPE}_HEADER_FLAGS) + src_flags = $$eval(QDBUSXML2CPP_$${dbus_TYPE}_SOURCE_FLAGS) + } else { + hdr_flags = $$eval($${grp}.header_flags) + src_flags = $$eval($${grp}.source_flags) + } + + $${group}_header.commands = $$QMAKE_QDBUSXML2CPP $$hdr_flags $$qdbusxml2cpp_option ${QMAKE_FILE_OUT}: ${QMAKE_FILE_IN} + $${group}_header.depends += $$QMAKE_QDBUSXML2CPP_EXE + $${group}_header.output = ${QMAKE_FUNC_FILE_IN_qdbusOutputBasename}_$${dbus_type}.h + $${group}_header.name = DBUSXML2CPP $${dbus_TYPE} HEADER ${QMAKE_FILE_IN} + $${group}_header.variable_out = $${GROUP}_HEADERS + $${group}_header.input = $$input_list + + $${group}_source.commands = $$QMAKE_QDBUSXML2CPP -i ${QMAKE_FILE_OUT_BASE}.h $$src_flags $$qdbusxml2cpp_option :${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + $${group}_source.depends += $$QMAKE_QDBUSXML2CPP_EXE + $${group}_source.output = ${QMAKE_FUNC_FILE_IN_qdbusOutputBasename}_$${dbus_type}.cpp + $${group}_source.name = DBUSXML2CPP $${dbus_TYPE} SOURCE ${QMAKE_FILE_IN} + $${group}_source.variable_out = SOURCES + $${group}_source.input = $$input_list + $${group}_source.depends += $$eval($${group}_header.output) # this actually belongs to the object file + + $${group}_moc.commands = $$moc_header.commands + $${group}_moc.depends += $$QMAKE_MOC_EXE + $${group}_moc.output = $$moc_header.output + $${group}_moc.input = $${GROUP}_HEADERS + $${group}_moc.variable_out = GENERATED_SOURCES + $${group}_moc.name = $${GROUP}_$$moc_header.name + + QMAKE_EXTRA_COMPILERS += $${group}_header $${group}_source $${group}_moc +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/dbusinterfaces.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/dbusinterfaces.prf new file mode 100644 index 000000000..910dace35 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/dbusinterfaces.prf @@ -0,0 +1,4 @@ +dbus_type = interface +qdbusxml2cpp_option = -p + +include(dbuscommon.pri) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/declarative_debug.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/declarative_debug.prf new file mode 100644 index 000000000..59e45f662 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/declarative_debug.prf @@ -0,0 +1 @@ +DEFINES += QT_DECLARATIVE_DEBUG diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/default_post.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/default_post.prf new file mode 100644 index 000000000..7e027325b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/default_post.prf @@ -0,0 +1,150 @@ +# This file is loaded by qmake right after loading the actual project file. + +contains(TEMPLATE, ".*(lib|app)"):CONFIG += have_target + +!have_target:!force_qt: CONFIG -= qt + +load(resolve_config) + +exclusive_builds: load(exclusive_builds_post) + +# If the TARGET looks like a path, split it into DESTDIR and the resulting TARGET +target_dir_part = $$dirname(TARGET) +!isEmpty(target_dir_part) { + isEmpty(DESTDIR): \ + DESTDIR = $$target_dir_part + else: \ + DESTDIR = $$DESTDIR/$$target_dir_part + + TARGET = $$basename(TARGET) + DESTDIR = $$clean_path($$DESTDIR) +} + +QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH) +!isEmpty(QT_BREAKPAD_ROOT_PATH): \ # quick test first whether requested ... + !static:release:have_target: \ # is it applicable? + !contains(TARGET, .*phony_target.*): \ # monster hack, you don't really see this here, right? ;) + system($$QT_BREAKPAD_ROOT_PATH/qtbreakpadsymbols --breakpad-exists) { # do we really have it? + CONFIG += breakpad force_debug_info + CONFIG -= no_debug_info separate_debug_info +} + +force_debug_info|debug: \ + CONFIG += debug_info + +force_debug_info { + QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO + QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO + QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO +} + +optimize_size { + !isEmpty(QMAKE_CFLAGS_OPTIMIZE):!isEmpty(QMAKE_CFLAGS_OPTIMIZE_SIZE) { + QMAKE_CFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE + QMAKE_CXXFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE + QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_SIZE + QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_SIZE + } +} else: optimize_full { + !isEmpty(QMAKE_CFLAGS_OPTIMIZE):!isEmpty(QMAKE_CFLAGS_OPTIMIZE_FULL) { + QMAKE_CFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE + QMAKE_CXXFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE + QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_FULL + QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_FULL + } +} + +optimize_debug { + QMAKE_CFLAGS_DEBUG += $$QMAKE_CFLAGS_OPTIMIZE_DEBUG + QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_OPTIMIZE_DEBUG +} + +debug { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_DEBUG + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_DEBUG + QMAKE_LFLAGS += $$QMAKE_LFLAGS_DEBUG + QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_DEBUG +} else { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_RELEASE + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RELEASE + QMAKE_LFLAGS += $$QMAKE_LFLAGS_RELEASE + QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_RELEASE +} + +stack_protector_strong { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_STACK_PROTECTOR_STRONG + QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_STACK_PROTECTOR_STRONG +} + +# disable special linker flags for host builds (no proper test for host support yet) +!host_build|!cross_compile { + use_gold_linker: QMAKE_LFLAGS += $$QMAKE_LFLAGS_USE_GOLD + enable_new_dtags: QMAKE_LFLAGS += $$QMAKE_LFLAGS_NEW_DTAGS +} + +dll:win32: QMAKE_LFLAGS += $$QMAKE_LFLAGS_DLL +static:mac: QMAKE_LFLAGS += $$QMAKE_LFLAGS_STATIC_LIB +staticlib:unix { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_STATIC_LIB + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STATIC_LIB +} + +incredibuild_xge { + CONFIG -= 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 +} + +breakpad { + load(resolve_target) + DEBUGFILENAME = $$shell_quote($$system_path($$QMAKE_RESOLVED_TARGET)) + PROJECTPATH = $$shell_quote($$system_path($$OUT_PWD)) + + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t) + QMAKE_POST_LINK = $$QMAKE_POST_LINK$$quote($${QT_BREAKPAD_ROOT_PATH}$${QMAKE_DIR_SEP}qtbreakpadsymbols $$DEBUGFILENAME $$PROJECTPATH) + !isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME) +} + +!c++11:!c++14:!c++1z { + # Qt requires C++11 since 5.7, check if we need to force a compiler option + QT_COMPILER_STDCXX_no_L = $$replace(QT_COMPILER_STDCXX, "L$", "") + !greaterThan(QT_COMPILER_STDCXX_no_L, 199711): CONFIG += c++11 +} +c++11|c++14|c++1z { + # Disable special compiler flags for host builds + !host_build|!cross_compile { + c++1z: cxxstd = CXX1Z + else: c++14: cxxstd = CXX14 + else: cxxstd = CXX11 + } else { + # Fall back to c++11, because since 5.7 c++11 is required everywhere, + # including host builds + cxxstd = CXX11 + } + + # Check if we should disable compiler extensions or not + isEmpty(QMAKE_CXXFLAGS_GNU$$cxxstd) { + strict_c++: QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STRICTCXX + } else { + !strict_c++: cxxstd = GNU$$cxxstd + } + + QMAKE_CXXFLAGS += $$eval(QMAKE_CXXFLAGS_$$cxxstd) + QMAKE_LFLAGS += $$eval(QMAKE_LFLAGS_$$cxxstd) + + unset(cxxstd) +} + +utf8_source { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_UTF8_SOURCE + QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_UTF8_SOURCE +} + +!precompile_header: SOURCES += $$NO_PCH_SOURCES diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/default_pre.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/default_pre.prf new file mode 100644 index 000000000..07a9b1c40 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/default_pre.prf @@ -0,0 +1,29 @@ +# This file is loaded by qmake right before each actual project file. +# Note that evaluating variable assignments from the command line +# still happens in between these two steps. + +# In early configure setup; nothing useful to be done here. +isEmpty(QMAKE_CXX): return() + +load(exclusive_builds) +CONFIG = \ + lex yacc debug exceptions depend_includepath \ + testcase_targets import_plugins import_qpa_plugin \ + $$CONFIG + +!build_pass:defined(QT_EDITION, var):!equals(QT_EDITION, "OpenSource"):!equals(QT_EDITION, "Preview") { + # + # call license checker (but cache result for one day) + # + today = $$section(_DATE_, " ", 0, 2) + !isEqual(QMAKE_LICHECK_TIMESTAMP, $$today) { + !system("$$system_quote($$system_path($$[QT_HOST_BINS/src]/$$QT_LICHECK)) check" \ + "$$QT_RELEASE_DATE $$[QMAKE_SPEC] $$[QMAKE_XSPEC]"): \ + error("License check failed! Giving up ...") + + cache(QMAKE_LICHECK_TIMESTAMP, set stash, today) + } + unset(today) +} + +load(toolchain) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/designer_defines.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/designer_defines.prf new file mode 100644 index 000000000..443f2d7dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/designer_defines.prf @@ -0,0 +1 @@ +plugin:DEFINES += QDESIGNER_EXPORT_WIDGETS diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/device_config.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/device_config.prf new file mode 100644 index 000000000..c15559e17 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/device_config.prf @@ -0,0 +1,12 @@ +# This file is loaded by some qmakespecs to get early configuration data. + +# Some of these qmakespecs can be used also in host mode, but they are not +# supposed to be influenced by -device-option then. +host_build: return() + +DEVICE_PRI = $$[QT_HOST_DATA/get]/mkspecs/qdevice.pri +exists($$DEVICE_PRI):include($$DEVICE_PRI) +unset(DEVICE_PRI) + +# this variable can be persisted via qmake -set CROSS_COMPILE /foo +isEmpty(CROSS_COMPILE): CROSS_COMPILE = $$[CROSS_COMPILE] diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/egl.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/egl.prf new file mode 100644 index 000000000..9fa0c9e21 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/egl.prf @@ -0,0 +1,8 @@ +INCLUDEPATH += $$QMAKE_INCDIR_EGL +LIBS_PRIVATE += $$QMAKE_LIBS_EGL +QMAKE_CFLAGS += $$QMAKE_CFLAGS_EGL +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_EGL +LIBS += $$QMAKE_LFLAGS_EGL +for(p, QMAKE_LIBDIR_EGL) { + LIBS_PRIVATE += -L$$p +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exceptions.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exceptions.prf new file mode 100644 index 000000000..ebfd5837c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exceptions.prf @@ -0,0 +1,6 @@ +CONFIG -= exceptions_off +QMAKE_CFLAGS *= $$QMAKE_CFLAGS_EXCEPTIONS_ON +QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_EXCEPTIONS_ON +QMAKE_LFLAGS *= $$QMAKE_LFLAGS_EXCEPTIONS_ON +DEFINES -= QT_NO_EXCEPTIONS + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exceptions_off.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exceptions_off.prf new file mode 100644 index 000000000..9c8a4043e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exceptions_off.prf @@ -0,0 +1,5 @@ +CONFIG -= exceptions +QMAKE_CFLAGS += $$QMAKE_CFLAGS_EXCEPTIONS_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_EXCEPTIONS_OFF +QMAKE_LFLAGS += $$QMAKE_LFLAGS_EXCEPTIONS_OFF +DEFINES += QT_NO_EXCEPTIONS diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exclusive_builds.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exclusive_builds.prf new file mode 100644 index 000000000..f40cc9917 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exclusive_builds.prf @@ -0,0 +1,42 @@ + +defineTest(addExclusiveBuildsProper) { + !$$1:!fix_output_dirs: \ + return(true) + + for(build, 2) { + isEmpty($${build}.name) { + $${build}.name = $$title($$build) + export($${build}.name) + } + isEmpty($${build}.target) { + $${build}.target = $$lower($$build) + export($${build}.target) + } + isEmpty($${build}.dir_affix) { + $${build}.dir_affix = $$lower($$build) + export($${build}.dir_affix) + } + + $${build}.exclusive = $$2 + export($${build}.exclusive) + + QMAKE_EXCLUSIVE_BUILDS += $$build + } + + CONFIG *= exclusive_builds + export(CONFIG) + + export(QMAKE_EXCLUSIVE_BUILDS) + return(true) +} + +defineTest(addExclusiveBuilds) { + lessThan(ARGC, 2): \ + error("addExclusiveBuilds() requires at least two arguments") + + addExclusiveBuildsProper($$join(ARGS, _and_), $$ARGS) +} + +# Default directories to process +QMAKE_DIR_REPLACE = OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR QGLTF_DIR DESTDIR +QMAKE_DIR_REPLACE_SANE += QGLTF_DIR diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exclusive_builds_post.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exclusive_builds_post.prf new file mode 100644 index 000000000..936085af0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/exclusive_builds_post.prf @@ -0,0 +1,160 @@ + +contains(TEMPLATE, subdirs) { + for(build, QMAKE_EXCLUSIVE_BUILDS) { + prepareRecursiveTarget($$build) + QMAKE_EXTRA_TARGETS += $$build + } +} else { + # Recursively combines a list of exclusive builds into combinations + # of non-exclusive builds (separated by a ':' character), eg the + # list [debug, release, static, shared] will result in the four + # combinations [debug:static, debug:shared, release:static, + # release:shared]. + defineReplace(combineExclusiveBuilds) { + permutationBuilds = $$1 + existingBuilds = $$2 + + isEmpty(permutationBuilds): \ + # Exit-condition, no more recursing + return($$existingBuilds) + + # Choose the first build of the permutations and use the set of exclusive + # builds associated with that build as the list of existing builds. This + # partitions the permutations into one set of exclusive builds + the rest + # of the unknown permutations. + newExistingBuilds = $$eval($$first(permutationBuilds).exclusive) + permutationBuilds -= $$newExistingBuilds + + # Recursively compute the combination of these two sets + recursiveCombination = $$combineExclusiveBuilds($$permutationBuilds, $$newExistingBuilds) + + isEmpty(existingBuilds): \ + # No need to combine further + return($$recursiveCombination) + + result = + for(existingBuild, existingBuilds) { + for(combination, recursiveCombination): \ + result += "$${existingBuild}:$${combination}" + } + return($$result) + } + + buildCombinations = $$combineExclusiveBuilds($$QMAKE_EXCLUSIVE_BUILDS) + + for(combination, buildCombinations) { + builds = $$split(combination, :) + key = + config = + target = + priority = + for(build, builds) { + key = $${key}$$eval($${build}.name) + config *= $$eval($${build}.CONFIG) $${build} $$eval($${build}.name)Build + target += $$eval($${build}.target) + + # If a build has been prioritized through CONFIG we prefer that + CONFIG($$build, $$join($${build}.exclusive, |)): \ + priority += 1 + } + + $${key}.name = $$key + $${key}.target = $$join(target, -) + $${key}.CONFIG = $$config + $${key}.builds = $$builds + + BUILDS.$$size(priority) += $$key + + # Add makefile targets for each exclusive build that will aggregate all targets + # that include the exclusive build. This matches the targets in the SUBDIR files + # so that you can recursivly build a single exclusive build. + !build_pass:count(builds, 1, >) { + for(build, builds) { + $${build}.depends += $$eval($${key}.target) + QMAKE_EXTRA_TARGETS *= $$build + } + } + } + + BUILDS = + priority = + for(ever) { + # Keep the order in BUILDS matching the priority from CONFIG, so that the first + # entry in BUILDS will be the first/default target when not CONFIG(build_all). + BUILDS = $$eval(BUILDS.$$size(priority)) $$BUILDS + count(BUILDS, $$size(buildCombinations), >=): break() + priority += 1 + } + + build_pass|fix_output_dirs { + !build_pass { + # The builds are sorted by priority based on the current config + # so choosing the first one gives us the most appropriate build. + BUILD_PASS = $$first(BUILDS) + } + + for(dir, QMAKE_DIR_REPLACE) { + + # Limit builds to ones that should affect the current $$dir + builds = + for(build, $${BUILD_PASS}.builds) { + equals(dir, DESTDIR) { + !$$join($${build}.exclusive, _and_)_target: \ + next() + } + + builds += $$build + } + + isEmpty(builds): \ + next() + + affixes = + for(build, builds): \ + affixes += $$eval($${build}.dir_affix) + full_dir_affix = $$join(affixes, -) + + isEmpty($$dir)|isEqual($$dir, .) { + # Use affix directly + $$dir = $$full_dir_affix + next() + } + + contains(QMAKE_DIR_REPLACE_SANE, $$dir) { + # Suffix output dir + $$dir = $$clean_path($$eval($$dir)/$$full_dir_affix) + } else { + # "Compatibility mode" with QTBUG-491 + for(build, builds) { + did_replace = false + build_affix = $$eval($${build}.dir_affix) + for(exclusive, $${build}.exclusive) { + equals(exclusive, $$build): \ + next() + + exclusive_affix = $$eval($${exclusive}.dir_affix) + contains($$dir, .*$${exclusive_affix}.*) { + $$dir ~= s/$${exclusive_affix}/$${build_affix}/gi + did_replace = true + } + } + $$did_replace: next() + + # Append (as subdir or as suffix) + !build_pass { + dir_affix = $$eval($${build}.dir_affix) + !contains($$dir, .*$${dir_affix}.*) { + contains($$dir, .*/$) { + # Subdir + $$dir = $$eval($$dir)$$dir_affix + } else { + # Suffix + $$dir = $$eval($$dir)-$${dir_affix} + } + } + } + } + } + } + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/file_copies.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/file_copies.prf new file mode 100644 index 000000000..58e07bd39 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/file_copies.prf @@ -0,0 +1,51 @@ +isEmpty(COPIES): return() +contains(TEMPLATE, .*subdirs): error("COPIES does not work with TEMPLATE=subdirs") + +build_pass:build_all:!isEqual(BUILD_PASS, $$first(BUILDS)) { + # Avoid that multiple build passes race with each other. + # This will fail to copy anything if the user explicitly invokes + # only the non-primary build. This is unfixable, as at qmake time + # we cannot possibly know how make will be invoked, yet we must + # predict it here. + return() +} + +defineReplace(qtStripProPwd) { + return($$relative_path($$1, $$_PRO_FILE_PWD_)) +} + +for (cp, COPIES) { + isEmpty($${cp}.files): next() + pfx = copy_$${cp} + notdir = false + dir = false + for (f, $${cp}.files) { + fil = $$absolute_path($$f, $$_PRO_FILE_PWD_) + tfiles = $$files($$fil/*) + isEmpty(tfiles): \ + notdir = true + else: \ + dir = true + $${pfx}.files += $$fil + } + $$dir:$$notdir: \ + error("COPIES entry $$cp lists both files and directories.") + path = $$eval($${cp}.path) + isEmpty(path): error("COPIES entry $$cp defines no .path") + base = $$eval($${cp}.base) + isEmpty(base) { + $${pfx}.output = $$path/${QMAKE_FILE_IN_NAME} + } else: isEqual(base, $$_PRO_FILE_PWD_) { + $${pfx}.output = $$path/${QMAKE_FUNC_FILE_IN_qtStripProPwd} + } else { + eval(defineReplace(qtStripSrcDir_$$cp) { \ + return(\$\$relative_path(\$\$1, $$val_escape(base))) \ + }) + $${pfx}.output = $$path/${QMAKE_FUNC_FILE_IN_qtStripSrcDir_$$cp} + } + $${pfx}.input = $${pfx}.files + $${pfx}.commands = $(QINSTALL) ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT} + $${pfx}.name = COPY ${QMAKE_FILE_IN} + $${pfx}.CONFIG = no_link no_clean target_predeps + QMAKE_EXTRA_COMPILERS += $${pfx} +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/gcov.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/gcov.prf new file mode 100644 index 000000000..f45ba4c52 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/gcov.prf @@ -0,0 +1,30 @@ +# +# Tested with gcov 4.8.1 +# http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Gcov.html + +# To instrument a Qt application or library with the gcov coverage +# tool, do `CONFIG+=gcov' in the application .pro file. +# +# To instrument Qt itself with gcov, use the `-gcov' configure +# option. + +# The .gcno file is generated when the source file is compiled. +# The .gcda file is generated when a program is executed. + +# Example how to generate the html output after you've run the program or test +# +# lcov --capture --directory . --output-file coverage-gcov.info --no-external +# lcov --output-file coverage-gcov.info --remove coverage-gcov.info '*.moc*' '.*rcc*' '*3rdparty*' +# genhtml coverage-gcov.info --output-directory doc/coverage + +# If you want to use gcov directly, you most likely need to manually move the .gcda and .gcno files +# along with the program. +# +# mv .obj/debug-shared/tst_example.gc* . +# gcov -b -c tst_example.cpp + +QMAKE_CFLAGS += -fprofile-arcs -ftest-coverage +QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage +QMAKE_LFLAGS += -fprofile-arcs -ftest-coverage + +QMAKE_CLEAN += $(OBJECTS_DIR)*.gcno and $(OBJECTS_DIR)*.gcda diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/include_source_dir.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/include_source_dir.prf new file mode 100644 index 000000000..8794998f4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/include_source_dir.prf @@ -0,0 +1 @@ +!equals(_PRO_FILE_PWD_, $$OUT_PWD):INCLUDEPATH *= . diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/incredibuild_xge.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/incredibuild_xge.prf new file mode 100644 index 000000000..75c7a9a75 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/incredibuild_xge.prf @@ -0,0 +1,8 @@ +contains(TEMPLATE, "vc.*") { + # The VCPROJ generator will replace the \r\h with the coded \r\n: + EOC = $$escape_expand(\\r\\h) + + for(xge, INCREDIBUILD_XGE) { + $${xge}.commands = Rem IncrediBuild_AllowRemote $$EOC Rem IncrediBuild_OutputFile $$system_path($${xge}.output) $$EOC $$eval($${xge}.commands) + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/java.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/java.prf new file mode 100644 index 000000000..852954e5c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/java.prf @@ -0,0 +1,65 @@ +TEMPLATE = lib +android { + load(sdk) + + # 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) { + bundled_jar_file: CLASS_DIR = .classes.bundled + else: 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 -Xlint:unchecked -bootclasspath $$ANDROID_JAR_FILE -cp $$shell_quote($$system_path($$join(JAVACLASSPATH, $$DIRLIST_SEPARATOR))) -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() + +# 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 distributable Android archives) or jar (for other java builds) +android:!bundled_jar_file { + contains(QMAKE_HOST.os, Windows) { + # The location where dx.bat expects itself to be found is used as the landmark instead + # of the base sdk folder. + # Doing it this way makes this logic more similar to the other platforms and + # also means that our dx.bat is more like Google's dx.bat + DEX_BAT = $$ANDROID_SDK_ROOT/platform-tools/dx.bat + !exists($$DEX_BAT): DEX_BAT = $$ANDROID_SDK_ROOT/build-tools/$$ANDROID_SDK_BUILD_TOOLS_REVISION/dx.bat + DEX_CMD = $$PWD/data/android/dx $$DEX_BAT + } else { + DEX_CMD = $$ANDROID_SDK_ROOT/platform-tools/dx + !exists($$DEX_CMD): DEX_CMD = $$ANDROID_SDK_ROOT/build-tools/$$ANDROID_SDK_BUILD_TOOLS_REVISION/dx + !exists($$DEX_CMD): error("The path $$DEX_CMD does not exist. Please set the environment variable ANDROID_BUILD_TOOLS_REVISION to the revision of the build tools installed in your Android SDK.") + } + QMAKE_LINK_SHLIB_CMD = $$DEX_CMD --dex --output $(TARGET) $$CLASS_DIR +} else { + QMAKE_LINK_SHLIB_CMD = jar cf $(TARGET) -C $$CLASS_DIR . +} + +# Force link step to always happen, since we are always updating the +# .class files +PRE_TARGETDEPS += FORCE diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/lex.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/lex.prf new file mode 100644 index 000000000..7d8325bed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/lex.prf @@ -0,0 +1,38 @@ +# +# Lex extra-compiler for handling files specified in the LEXSOURCES variable +# + +{ + lex.name = Lex ${QMAKE_FILE_IN} + lex.input = LEXSOURCES + lex.dependency_type = TYPE_C + lex_included { + lex.CONFIG += no_link + } else { + lex.variable_out = GENERATED_SOURCES + } + + isEmpty(QMAKE_LEXFLAGS_MANGLE):QMAKE_LEXFLAGS_MANGLE = -P${QMAKE_FILE_BASE} + QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS + !yacc_no_name_mangle:QMAKE_LEXEXTRAFLAGS += $$QMAKE_LEXFLAGS_MANGLE + + contains(QMAKE_LEX, .*flex) { + # GNU flex, we can use -o outfile + lex.commands = $$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS --nounistd -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + } else { + # stupid POSIX lex, it only generates a file called lex.yy.c + # or lex.prefix.c if the -P option is active + intermediate_file = lex.yy.c + QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS $$QMAKE_LEXFLAGS_MANGLE + + lex.commands = \ + -$(DEL_FILE) ${QMAKE_FILE_OUT}$$escape_expand(\\n\\t) \ + $$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS ${QMAKE_FILE_IN}$$escape_expand(\\n\\t) \ + $(MOVE) $$intermediate_file ${QMAKE_FILE_OUT} $$escape_expand(\\n\\t) + unset(intermediate_file) + } + lex.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_LEX}$${first(QMAKE_EXT_CPP)} + + silent:lex.commands = @echo Lex ${QMAKE_FILE_IN} && $$lex.commands + QMAKE_EXTRA_COMPILERS += lex +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/link_ltcg.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/link_ltcg.prf new file mode 100644 index 000000000..4da061e1f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/link_ltcg.prf @@ -0,0 +1,26 @@ +gcc { + # on Windows, MinGW's support for -flto=N is broken + intel_icc { + QMAKE_LFLAGS_LTCG ~= s/-ipo/-ipo=$$QMAKE_HOST.cpu_count/ + } else: !clang:!equals(QMAKE_HOST.os, Windows):greaterThan(QMAKE_HOST.cpu_count, 1) { + # Override LTO number of jobs + QMAKE_LFLAGS_LTCG ~= s/^-flto$/-flto=$$QMAKE_HOST.cpu_count/ + } + + # When doing link-time code generation, we need to pass the compiler + # flags during linking the stage too. This file is processed after + # default_post.prf, so the QMAKE_CXXFLAGS already contains + # QMAKE_CXXFLAGS_DEBUG or _RELEASE. + use_c_linker { + # use_c_linker.prf is in effect, use the C flags + QMAKE_LFLAGS_LTCG += $$QMAKE_CFLAGS $$QMAKE_CFLAGS_LTCG + QMAKE_LFLAGS_APP += $$QMAKE_CFLAGS_APP + QMAKE_LFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB + QMAKE_LFLAGS_PLUGIN += $$QMAKE_CFLAGS_SHLIB + } else { + QMAKE_LFLAGS_LTCG = $$QMAKE_CXXFLAGS $$QMAKE_LFLAGS_LTCG + QMAKE_LFLAGS_APP += $$QMAKE_CXXFLAGS_APP + QMAKE_LFLAGS_SHLIB += $$QMAKE_CXXFLAGS_SHLIB + QMAKE_LFLAGS_PLUGIN += $$QMAKE_CFLAGS_SHLIB + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/link_pkgconfig.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/link_pkgconfig.prf new file mode 100644 index 000000000..44d1a4c04 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/link_pkgconfig.prf @@ -0,0 +1,32 @@ +PKG_CONFIG = $$pkgConfigExecutable() + +# qmake supports no empty list elements, so the outer loop is a bit arcane +pkgsfx = +for(ever) { + pkgvar = PKGCONFIG$$pkgsfx + libvar = LIBS$$pkgsfx + for(PKGCONFIG_LIB, $$list($$unique($$pkgvar))) { + # don't proceed if the .pro asks for a package we don't have! + !packagesExist($$PKGCONFIG_LIB): error("$$PKGCONFIG_LIB development package not found") + + PKGCONFIG_CFLAGS = $$system($$PKG_CONFIG --cflags $$PKGCONFIG_LIB) + + PKGCONFIG_INCLUDEPATH = $$find(PKGCONFIG_CFLAGS, ^-I.*) + PKGCONFIG_INCLUDEPATH ~= s/^-I(.*)/\\1/g + + PKGCONFIG_DEFINES = $$find(PKGCONFIG_CFLAGS, ^-D.*) + PKGCONFIG_DEFINES ~= s/^-D(.*)/\\1/g + + PKGCONFIG_CFLAGS ~= s/^-[ID].*//g + + INCLUDEPATH *= $$PKGCONFIG_INCLUDEPATH + DEFINES *= $$PKGCONFIG_DEFINES + + QMAKE_CXXFLAGS += $$PKGCONFIG_CFLAGS + QMAKE_CFLAGS += $$PKGCONFIG_CFLAGS + $$libvar += $$system($$PKG_CONFIG --libs $$PKGCONFIG_LIB) + } + !isEmpty(pkgsfx): break() + pkgsfx = _PRIVATE +} + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ltcg.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ltcg.prf new file mode 100644 index 000000000..ccf022627 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/ltcg.prf @@ -0,0 +1,34 @@ +CONFIG(release, debug|release) { + # We need fat object files when creating static libraries on some platforms + # so the linker will know to load a particular object from the library + # in the first place. On others, we have special ar and nm to create the symbol + # tables so the linker will know better. For other compilers, we disable LTCG + # for static libraries. + msvc { + # Nothing to do + } else { + !isEmpty(QMAKE_AR_LTCG): QMAKE_AR = $$QMAKE_AR_LTCG + !isEmpty(QMAKE_NM_LTCG): QMAKE_NM = $$QMAKE_NM_LTCG + + equals(QMAKE_RANLIB_LTCG, true): QMAKE_RANLIB = + else: !isEmpty(QMAKE_RANLIB_LTCG): QMAKE_RANLIB = $$QMAKE_RANLIB_LTCG + + static:isEmpty(QMAKE_AR_LTCG):isEmpty(QMAKE_RANLIB_LTCG) { + # We don't know how to create symbol tables for static libs with this + # compiler, so disable LTCG + QMAKE_CFLAGS_LTCG = + QMAKE_CXXFLAGS_LTCG = + QMAKE_LFLAGS_LTCG = + } + } + + fat-lto { + QMAKE_CFLAGS_LTCG += $$QMAKE_CFLAGS_LTCG_FATOBJECTS + QMAKE_CXXFLAGS_LTCG += $$QMAKE_CXXFLAGS_LTCG_FATOBJECTS + } + + load(link_ltcg) + QMAKE_CFLAGS *= $$QMAKE_CFLAGS_LTCG + QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_LTCG + QMAKE_LFLAGS *= $$QMAKE_LFLAGS_LTCG +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/asset_catalogs.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/asset_catalogs.prf new file mode 100644 index 000000000..123a0e0fc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/asset_catalogs.prf @@ -0,0 +1,124 @@ +# QMAKE_ASSET_CATALOGS +# Paths to xcassets directories to be compiled +# +# QMAKE_ASSET_CATALOGS_BUILD_PATH +# Location which asset catalogs will be compiled to. +# If the current target is an app bundle, defaults to its Resources directory. +# Otherwise, this value must be set manually. +# +# QMAKE_ASSET_CATALOGS_APP_ICON +# Name of the icon resource in the asset catalogs that will be used as the app icon. +# Defaults to AppIcon. +# +# QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE +# Name of the launch image resource in the asset catalogs that will be used as the launch image. +# +# QMAKE_ASSET_CATALOGS_INSTALL_PATH +# Base path to install files to. Falls back to a path relative to the target install path, +# based on QMAKE_ASSET_CATALOGS_BUILD_PATH. + +!have_target|if(!build_pass:!isEmpty(BUILDS)): \ + return() + +!isEmpty(QMAKE_ASSET_CATALOGS) { + load(resolve_target) + + isEmpty(QMAKE_ASSET_CATALOGS_BUILD_PATH) { + !isEmpty(QMAKE_RESOLVED_BUNDLE):equals(TEMPLATE, app):app_bundle { + macos: \ + QMAKE_ASSET_CATALOGS_BUILD_PATH = $$QMAKE_RESOLVED_BUNDLE/Contents/Resources + else: \ + QMAKE_ASSET_CATALOGS_BUILD_PATH = $$QMAKE_RESOLVED_BUNDLE + } else { + error("QMAKE_ASSET_CATALOGS_BUILD_PATH must be set when using QMAKE_ASSET_CATALOGS.") + } + } + + QMAKE_ASSET_CATALOGS_BUILD_PATH = $$clean_path($$QMAKE_ASSET_CATALOGS_BUILD_PATH) + + macx-xcode { + !isEmpty(QMAKE_ASSET_CATALOGS_APP_ICON) { + asset_catalog_appicon.name = "ASSETCATALOG_COMPILER_APPICON_NAME" + asset_catalog_appicon.value = $$QMAKE_ASSET_CATALOGS_APP_ICON + QMAKE_MAC_XCODE_SETTINGS += asset_catalog_appicon + } + + !isEmpty(QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE) { + asset_catalog_launchimage.name = "ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME" + asset_catalog_launchimage.value = $$QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE + QMAKE_MAC_XCODE_SETTINGS += asset_catalog_launchimage + } + + asset_catalog_compiler.files = $$QMAKE_ASSET_CATALOGS + macos: asset_catalog_compiler.path = Contents/Resources + QMAKE_BUNDLE_DATA += asset_catalog_compiler + } else { + !isEmpty(QMAKE_ASSET_CATALOGS_APP_ICON) { + asset_catalog_app_icon_arg = \ + --app-icon $$shell_quote($$QMAKE_ASSET_CATALOGS_APP_ICON) + } + + !isEmpty(QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE) { + asset_catalog_launch_image_arg = \ + --launch-image $$shell_quote($$QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE) + } + + asset_catalog_compiler.target = $$OUT_PWD/asset_catalog_compiler.Info.plist + asset_catalog_compiler.commands = $$shell_quote($$QMAKE_ACTOOL) \ + $$asset_catalog_app_icon_arg \ + $$asset_catalog_launch_image_arg \ + --output-partial-info-plist $$shell_quote($$asset_catalog_compiler.target) \ + --platform $${version_identifier} \ + --minimum-deployment-target $${deployment_target} \ + --compile $$shell_quote($$QMAKE_ASSET_CATALOGS_BUILD_PATH) + + for (catalog, QMAKE_ASSET_CATALOGS) { + asset_catalog_compiler.commands += $${catalog} + asset_catalog_compiler.depends += $$files($$catalog/*, true) + } + + actool_output_files = $$system(\ + mkdir -p $$system_quote($$QMAKE_ASSET_CATALOGS_BUILD_PATH) && \ + /usr/libexec/PlistBuddy -c \'Print :com.apple.actool.compilation-results:output-files\' \ + /dev/stdin <<< $($${asset_catalog_compiler.commands} 2>/dev/null) | sed -Ene \'s/^ +//p\', lines) + + for (output_file, actool_output_files) { + !equals(output_file, $$asset_catalog_compiler.target): \ + actool_output_files_rel += $$relative_path($$output_file, $$QMAKE_ASSET_CATALOGS_BUILD_PATH) + } + + QMAKE_EXTRA_TARGETS += asset_catalog_compiler + PRE_TARGETDEPS += $$asset_catalog_compiler.target + + isEmpty(QMAKE_ASSET_CATALOGS_INSTALL_PATH) { + !isEmpty(target.path): \ + QMAKE_ASSET_CATALOGS_INSTALL_PATH = $${target.path}/ + QMAKE_ASSET_CATALOGS_INSTALL_PATH = $${QMAKE_ASSET_CATALOGS_INSTALL_PATH}$$relative_path(\ + $$QMAKE_ASSET_CATALOGS_BUILD_PATH, $$absolute_path($$DESTDIR, $$OUT_PWD)) + } + + for (ac_install_file, actool_output_files_rel) { + asset_catalogs_files.files += \ + $$QMAKE_ASSET_CATALOGS_BUILD_PATH/$$ac_install_file + } + contains(INSTALLS, target): asset_catalogs_files.depends += install_target + asset_catalogs_files.path = $$QMAKE_ASSET_CATALOGS_INSTALL_PATH + asset_catalogs_files.CONFIG += no_check_exist + INSTALLS += asset_catalogs_files + } +} else: macx-xcode { + # Backwards compatibility + for (bundle_data, QMAKE_BUNDLE_DATA) { + for (bundle_file, $${bundle_data}.files) { + !contains(bundle_file, .*\.xcassets$): next() + warning("*.xcassets in QMAKE_BUNDLE_DATA is deprecated. Use QMAKE_ASSET_CATALOGS instead.") + !exists($$absolute_path($$bundle_file/AppIcon.appiconset, $$_PRO_FILE_PWD_)): next() + + asset_catalog_appicon.name = "ASSETCATALOG_COMPILER_APPICON_NAME" + asset_catalog_appicon.value = "AppIcon" + QMAKE_MAC_XCODE_SETTINGS += asset_catalog_appicon + break() + } + !isEmpty(asset_catalog_appicon.name): break() + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/default_post.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/default_post.prf new file mode 100644 index 000000000..e645ba580 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/default_post.prf @@ -0,0 +1,189 @@ +load(default_post) + +!no_objective_c:CONFIG += objective_c + +qt { + qtConfig(static) { + # C++11 support means using libc++ instead of libstd++. As the + # two libraries are incompatible we need to ensure the end user + # project is built using the same C++11 support/no support as Qt. + qtConfig(c++11) { + CONFIG += c++11 + } else: c++11 { + warning("Qt was not built with C++11 enabled, disabling feature") + CONFIG -= c++11 + } + + !c++11 { + # Explicitly use libstdc++ if C++11 support is not enabled, + # as otherwise the compiler will choose the standard library + # based on the deployment target, which for iOS 7 and OS X 10.9 + # is libc++, and we can't mix and match the two. + QMAKE_CXXFLAGS += -stdlib=libstdc++ + QMAKE_LFLAGS += -stdlib=libstdc++ + } + } +} + +# Add the same default rpaths as Xcode does for new projects. +# This is especially important for iOS/tvOS/watchOS where no other option is possible. +!no_default_rpath { + QMAKE_RPATHDIR += @executable_path/Frameworks + equals(TEMPLATE, lib):!plugin:lib_bundle: QMAKE_RPATHDIR += @loader_path/Frameworks +} + +# Don't pass -headerpad_max_install_names when using Bitcode. +# In that case the linker emits a warning stating that the flag is ignored when +# used with bitcode, for reasons that cannot be determined (rdar://problem/20748962). +# Using this flag is also unnecessary in practice on UIKit platforms since they +# are sandboxed, and only UIKit platforms support bitcode to begin with. +!bitcode: QMAKE_LFLAGS += $$QMAKE_LFLAGS_HEADERPAD + +app_extension_api_only { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION + QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION + QMAKE_CXXFLAGS_PRECOMPILE += $$QMAKE_CFLAGS_APPLICATION_EXTENSION + QMAKE_LFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION +} + +macx-xcode { + !isEmpty(QMAKE_XCODE_DEBUG_INFORMATION_FORMAT) { + debug_information_format.name = DEBUG_INFORMATION_FORMAT + debug_information_format.value = $$QMAKE_XCODE_DEBUG_INFORMATION_FORMAT + debug_information_format.build = debug + QMAKE_MAC_XCODE_SETTINGS += debug_information_format + } + + QMAKE_XCODE_ARCHS = + + arch_device.name = "ARCHS[sdk=$${device.sdk}*]" + arch_device.value = $$QMAKE_APPLE_DEVICE_ARCHS + QMAKE_XCODE_ARCHS += $$QMAKE_APPLE_DEVICE_ARCHS + QMAKE_MAC_XCODE_SETTINGS += arch_device + + simulator { + arch_simulator.name = "ARCHS[sdk=$${simulator.sdk}*]" + arch_simulator.value = $$QMAKE_APPLE_SIMULATOR_ARCHS + QMAKE_XCODE_ARCHS += $$QMAKE_APPLE_SIMULATOR_ARCHS + QMAKE_MAC_XCODE_SETTINGS += arch_simulator + } + + only_active_arch.name = ONLY_ACTIVE_ARCH + only_active_arch.value = YES + only_active_arch.build = debug + QMAKE_MAC_XCODE_SETTINGS += only_active_arch +} else { + device|!simulator: VALID_DEVICE_ARCHS = $$QMAKE_APPLE_DEVICE_ARCHS + simulator: VALID_SIMULATOR_ARCHS = $$QMAKE_APPLE_SIMULATOR_ARCHS + VALID_ARCHS = $$VALID_DEVICE_ARCHS $$VALID_SIMULATOR_ARCHS + + isEmpty(VALID_ARCHS): \ + error("QMAKE_APPLE_DEVICE_ARCHS or QMAKE_APPLE_SIMULATOR_ARCHS must contain at least one architecture") + + single_arch: VALID_ARCHS = $$first(VALID_ARCHS) + + ACTIVE_ARCHS = $(filter $(EXPORT_VALID_ARCHS), $(ARCHS)) + ARCH_ARGS = $(foreach arch, $(if $(EXPORT_ACTIVE_ARCHS), $(EXPORT_ACTIVE_ARCHS), $(EXPORT_VALID_ARCHS)), -arch $(arch)) + + QMAKE_EXTRA_VARIABLES += VALID_ARCHS ACTIVE_ARCHS ARCH_ARGS + + arch_flags = $(EXPORT_ARCH_ARGS) + + QMAKE_CFLAGS += $$arch_flags + QMAKE_CXXFLAGS += $$arch_flags + QMAKE_LFLAGS += $$arch_flags + + QMAKE_PCH_ARCHS = $$VALID_ARCHS + + macos: deployment_target = $$QMAKE_MACOSX_DEPLOYMENT_TARGET + ios: deployment_target = $$QMAKE_IOS_DEPLOYMENT_TARGET + tvos: deployment_target = $$QMAKE_TVOS_DEPLOYMENT_TARGET + watchos: deployment_target = $$QMAKE_WATCHOS_DEPLOYMENT_TARGET + + # If we're doing a simulator and device build, device and simulator + # architectures use different paths and flags for the sysroot and + # deployment target switch, so we must multiplex them across multiple + # architectures using -Xarch. Otherwise we fall back to the simple path. + # This is not strictly necessary, but results in cleaner command lines + # and makes it easier for people to override EXPORT_VALID_ARCHS to limit + # individual rules to a different set of architecture(s) from the overall + # build (such as machtest in QtCore). + simulator:device { + QMAKE_XARCH_CFLAGS = + QMAKE_XARCH_LFLAGS = + QMAKE_EXTRA_VARIABLES += QMAKE_XARCH_CFLAGS QMAKE_XARCH_LFLAGS + + for (arch, VALID_ARCHS) { + contains(VALID_SIMULATOR_ARCHS, $$arch) { + sdk = $$simulator.sdk + version_identifier = $$simulator.deployment_identifier + } else { + sdk = $$device.sdk + version_identifier = $$device.deployment_identifier + } + + version_min_flags = \ + -Xarch_$${arch} \ + -m$${version_identifier}-version-min=$$deployment_target + QMAKE_XARCH_CFLAGS_$${arch} = $$version_min_flags \ + -Xarch_$${arch} \ + -isysroot$$xcodeSDKInfo(Path, $$sdk) + QMAKE_XARCH_LFLAGS_$${arch} = $$version_min_flags \ + -Xarch_$${arch} \ + -Wl,-syslibroot,$$xcodeSDKInfo(Path, $$sdk) + + QMAKE_XARCH_CFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS_$${arch}) + QMAKE_XARCH_LFLAGS += $(EXPORT_QMAKE_XARCH_LFLAGS_$${arch}) + + QMAKE_EXTRA_VARIABLES += \ + QMAKE_XARCH_CFLAGS_$${arch} \ + QMAKE_XARCH_LFLAGS_$${arch} + } + + QMAKE_CFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS) + QMAKE_CXXFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS) + QMAKE_LFLAGS += $(EXPORT_QMAKE_XARCH_LFLAGS) + } else { + simulator: \ + version_identifier = $$simulator.deployment_identifier + else: \ + version_identifier = $$device.deployment_identifier + version_min_flag = -m$${version_identifier}-version-min=$$deployment_target + QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH $$version_min_flag + QMAKE_CXXFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH $$version_min_flag + QMAKE_LFLAGS += -Wl,-syslibroot,$$QMAKE_MAC_SDK_PATH $$version_min_flag + } + + # Enable precompiled headers for multiple architectures + QMAKE_CFLAGS_USE_PRECOMPILE = + for (arch, VALID_ARCHS) { + icc_pch_style: \ + use_flag = "-pch-use " + else: \ + use_flag = -include + + # Only use Xarch with multi-arch, as the option confuses ccache + count(VALID_ARCHS, 1, greaterThan): \ + QMAKE_CFLAGS_USE_PRECOMPILE += \ + -Xarch_$${arch} + + QMAKE_CFLAGS_USE_PRECOMPILE += \ + $${use_flag}${QMAKE_PCH_OUTPUT_$${arch}} + } + icc_pch_style { + QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE -include ${QMAKE_PCH_INPUT} + QMAKE_CFLAGS_USE_PRECOMPILE = + } else { + QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + } + + QMAKE_PCH_OUTPUT_EXT = _${QMAKE_PCH_ARCH}$${QMAKE_PCH_OUTPUT_EXT} +} + +cache(QMAKE_XCODE_DEVELOPER_PATH, stash) +!isEmpty(QMAKE_XCODE_VERSION): \ + cache(QMAKE_XCODE_VERSION, stash) + +QMAKE_XCODE_LIBRARY_SUFFIX = $$qtPlatformTargetSuffix() diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/default_pre.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/default_pre.prf new file mode 100644 index 000000000..44636f228 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/default_pre.prf @@ -0,0 +1,56 @@ +CONFIG = asset_catalogs rez $$CONFIG +load(default_pre) + +isEmpty(QMAKE_XCODE_DEVELOPER_PATH) { + # Get path of Xcode's Developer directory + QMAKE_XCODE_DEVELOPER_PATH = $$system("/usr/bin/xcode-select --print-path 2>/dev/null") + 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.") +} + +isEmpty(QMAKE_XCODEBUILD_PATH): \ + QMAKE_XCODEBUILD_PATH = $$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null") + +!isEmpty(QMAKE_XCODEBUILD_PATH) { + # Make sure Xcode is set up properly + !system("/usr/bin/xcrun xcodebuild -license check 2>/dev/null"): \ + error("Xcode not set up properly. You need to confirm the license agreement by running 'sudo xcrun xcodebuild -license accept'.") + + isEmpty(QMAKE_XCODE_VERSION) { + # Extract Xcode version using xcodebuild + xcode_version = $$system("/usr/bin/xcrun xcodebuild -version") + QMAKE_XCODE_VERSION = $$member(xcode_version, 1) + isEmpty(QMAKE_XCODE_VERSION): error("Could not resolve Xcode version.") + unset(xcode_version) + } +} + +isEmpty(QMAKE_TARGET_BUNDLE_PREFIX) { + QMAKE_XCODE_PREFERENCES_FILE = $$(HOME)/Library/Preferences/com.apple.dt.Xcode.plist + exists($$QMAKE_XCODE_PREFERENCES_FILE): \ + QMAKE_TARGET_BUNDLE_PREFIX = $$system("/usr/libexec/PlistBuddy -c 'print IDETemplateOptions:bundleIdentifierPrefix' $$QMAKE_XCODE_PREFERENCES_FILE 2>/dev/null") + + !isEmpty(_QMAKE_CACHE_):!isEmpty(QMAKE_TARGET_BUNDLE_PREFIX): \ + cache(QMAKE_TARGET_BUNDLE_PREFIX) +} + +QMAKE_ASSET_CATALOGS_APP_ICON = AppIcon + +# Make the default debug info format for static debug builds +# DWARF instead of DWARF with dSYM. This cuts down build times +# for application debug builds significantly, as Xcode doesn't +# have to pull out all the DWARF info from the Qt static libs +# and put it into a dSYM file. We don't need that dSYM file in +# the first place, since the information is available in the +# object files inside the archives (static libraries). +macx-xcode:qtConfig(static): \ + QMAKE_XCODE_DEBUG_INFORMATION_FORMAT = dwarf + +# This variable is used by the xcode_dynamic_library_suffix +# feature, which allows Xcode to choose the Qt libraries to link to +# at build time, depending on the current Xcode SDK and configuration. +QMAKE_XCODE_LIBRARY_SUFFIX_SETTING = QT_LIBRARY_SUFFIX diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/objective_c.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/objective_c.prf new file mode 100644 index 000000000..ed1ad8ad3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/objective_c.prf @@ -0,0 +1,12 @@ + +# Objective-C/C++ sources go in SOURCES, like all other sources +SOURCES += $$OBJECTIVE_SOURCES +unset(OBJECTIVE_SOURCES) + +# Strip C/C++ flags from QMAKE_OBJECTIVE_CFLAGS just in case +QMAKE_OBJECTIVE_CFLAGS -= $$QMAKE_CFLAGS $$QMAKE_CXXFLAGS + +# Add Objective-C/C++ flags to C/C++ flags, the compiler can handle it +QMAKE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS +QMAKE_CXXFLAGS += $$QMAKE_OBJECTIVE_CFLAGS +unset(QMAKE_OBJECTIVE_CFLAGS) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/rez.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/rez.prf new file mode 100644 index 000000000..3defd8685 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/rez.prf @@ -0,0 +1,16 @@ + +#global defaults +isEmpty(QMAKE_REZ) { + QMAKE_REZ = /Developer/Tools/Rez +} +isEmpty(REZ_DIR):REZ_DIR = . +isEmpty(QMAKE_EXT_REZ):QMAKE_EXT_REZ = .rsrc + +rez_source.CONFIG += no_link +rez_source.dependency_type = TYPE_C +rez_source.commands = $$QMAKE_REZ ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} -useDF +rez_source.output = $$REZ_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_REZ)} +rez_source.input = REZ_FILES +rez_source.name = REZ ${QMAKE_FILE_IN} +silent:rez_source.commands = @echo rez ${QMAKE_FILE_IN} && $$rez_source.commands +QMAKE_EXTRA_COMPILERS += rez_source diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/sdk.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/sdk.prf new file mode 100644 index 000000000..3f6dc076c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/sdk.prf @@ -0,0 +1,58 @@ + +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)") + +defineReplace(xcodeSDKInfo) { + info = $$1 + equals(info, "Path"): \ + info = --show-sdk-path + equals(info, "PlatformPath"): \ + info = --show-sdk-platform-path + equals(info, "SDKVersion"): \ + info = --show-sdk-version + sdk = $$2 + isEmpty(sdk): \ + sdk = $$QMAKE_MAC_SDK + + isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}) { + QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("/usr/bin/xcrun --sdk $$sdk $$info 2>/dev/null") + # --show-sdk-platform-path won't work for Command Line Tools; this is fine + # only used by the XCTest backend to testlib + isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}):if(!isEmpty(QMAKE_XCODEBUILD_PATH)|!equals(info, "--show-sdk-platform-path")): \ + error("Could not resolve SDK $$info for \'$$sdk\'") + cache(QMAKE_MAC_SDK.$${sdk}.$${info}, set stash, QMAKE_MAC_SDK.$${sdk}.$${info}) + } + + return($$eval(QMAKE_MAC_SDK.$${sdk}.$${info})) +} + +QMAKE_MAC_SDK_PATH = $$xcodeSDKInfo(Path) +QMAKE_MAC_SDK_PLATFORM_PATH = $$xcodeSDKInfo(PlatformPath) +QMAKE_MAC_SDK_VERSION = $$xcodeSDKInfo(SDKVersion) + +sysrootified = +for(val, QMAKE_INCDIR_OPENGL): sysrootified += $${QMAKE_MAC_SDK_PATH}$$val +QMAKE_INCDIR_OPENGL = $$sysrootified + +QMAKESPEC_NAME = $$basename(QMAKESPEC) + +# 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 QMAKE_ACTOOL)) { + tool_variable = QMAKE_MAC_SDK.$${QMAKESPEC_NAME}.$${QMAKE_MAC_SDK}.$${tool} + !isEmpty($$tool_variable) { + $$tool = $$eval($$tool_variable) + next() + } + + value = $$eval($$tool) + isEmpty(value): next() + + sysrooted = $$system("/usr/bin/xcrun -sdk $$QMAKE_MAC_SDK -find $$first(value) 2>/dev/null") + isEmpty(sysrooted): next() + + $$tool = $$sysrooted $$member(value, 1, -1) + cache($$tool_variable, set stash, $$tool) +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/toolchain.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/toolchain.prf new file mode 100644 index 000000000..df191eb13 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/toolchain.prf @@ -0,0 +1,5 @@ +# Ensure that we process sdk.prf first, as it will update QMAKE_CXX, +# which the default path determination uses. +sdk: load(sdk) + +load(toolchain) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/unsupported/objc_namespace.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/unsupported/objc_namespace.prf new file mode 100644 index 000000000..94e0fbe0d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/mac/unsupported/objc_namespace.prf @@ -0,0 +1,50 @@ +# +# 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. +# + +# The Objective-C runtime will complain when loading a binary that +# introduces as class name that already exists in the global namespace. +# This may happen when linking Qt statically into a plugin, and then +# loading more than two plugins into the same host, both using Qt. +# +# We work around this by doing a bit of post-processing on the final +# binary, adding new suffixed class name entries to the __objc_classname +# section of the __TEXT segment, and then patching the class_ro_t +# entries to point to the newly added class names. +# +# By linking the binary between these two steps we avoid having to +# manually remap all the offsets in the Mach-O binary due to the +# added class names, instead relying on the linker to do this +# for us by linking in an assembly file with the added names. + +objc_namespace_script = $$clean_path($$PWD/../../data/mac/objc_namespace.sh) + +isEmpty(QMAKE_OBJC_NAMESPACE_SUFFIX) { + QMAKE_OBJC_NAMESPACE_SUFFIX = $$TARGET + !isEmpty(QMAKE_TARGET_BUNDLE_PREFIX): \ + QMAKE_OBJC_NAMESPACE_SUFFIX = $${QMAKE_TARGET_BUNDLE_PREFIX}.$${QMAKE_OBJC_NAMESPACE_SUFFIX} +} + +QMAKE_LFLAGS += \ + -Wobjc_namespace,--target=$$shell_quote($$TARGET) \ + -Wobjc_namespace,--suffix=$$shell_quote($$QMAKE_OBJC_NAMESPACE_SUFFIX) \ + -Wobjc_namespace,--original_ld=$$shell_quote($$QMAKE_LINK) + +!isEmpty(QMAKE_OBJC_NAMESPACE_EXCLUDE): \ + QMAKE_LFLAGS += -Wobjc_namespace,--exclude_list=$$shell_quote($$QMAKE_OBJC_NAMESPACE_EXCLUDE) +!isEmpty(QMAKE_OBJC_NAMESPACE_EXCLUDE_REGEX) { + equals(MAKEFILE_GENERATOR, UNIX): \ + QMAKE_OBJC_NAMESPACE_EXCLUDE_REGEX ~= s/\\$/\$\$/ + QMAKE_LFLAGS += -Wobjc_namespace,--exclude_regex=$$shell_quote($$QMAKE_OBJC_NAMESPACE_EXCLUDE_REGEX) +} + +slient: QMAKE_LFLAGS += -Wobjc_namespace,--silent=1 + +QMAKE_LINK = $$objc_namespace_script diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/moc.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/moc.prf new file mode 100644 index 000000000..4f2080ee6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/moc.prf @@ -0,0 +1,108 @@ + +#global defaults +qtPrepareTool(QMAKE_MOC, moc) +isEmpty(MOC_DIR):MOC_DIR = . +isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_ +isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc + +MOC_INCLUDEPATH = +for (inc, INCLUDEPATH): \ + MOC_INCLUDEPATH += $$absolute_path($$inc, $$_PRO_FILE_PWD_) +!no_include_pwd:!isEqual(OUT_PWD, $$_PRO_FILE_PWD_): \ + MOC_INCLUDEPATH += . +MOC_INCLUDEPATH = $$QMAKESPEC $$_PRO_FILE_PWD_ $$MOC_INCLUDEPATH $$QMAKE_DEFAULT_INCDIRS + +# On Windows, put the includes into a .inc file which moc will read, if the project +# has too many includes. We do this to overcome a command-line limit on Win < XP +WIN_INCLUDETEMP= +win32:count(MOC_INCLUDEPATH, 40, >) { + WIN_INCLUDETEMP = $$MOC_DIR/mocinclude.opt + + WIN_INCLUDETEMP_CONT = + for (inc, MOC_INCLUDEPATH): \ + WIN_INCLUDETEMP_CONT += -I$$inc + write_file($$absolute_path($$WIN_INCLUDETEMP, $$OUT_PWD), WIN_INCLUDETEMP_CONT)|error() +} + +# QNX's compiler sets "gcc" config, but does not support the -dM option; +# UIKit builds are always multi-arch due to simulator_and_device (unless +# -sdk is used) so this feature cannot possibly work. +if(gcc|intel_icl|msvc):!rim_qcc:!uikit:!no_moc_predefs:if(!macos|count(QMAKE_APPLE_DEVICE_ARCHS, 1)) { + moc_predefs.name = "Generate moc_predefs.h" + moc_predefs.CONFIG = no_link + gcc: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -dM -E -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + else:intel_icl: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -QdM -P -Fi${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + else:msvc { + moc_predefs.commands += $$QMAKE_CXX -Bx$$shell_quote($$shell_path($$QMAKE_QMAKE)) $$QMAKE_CXXFLAGS \ + -E ${QMAKE_FILE_IN} 2>NUL >${QMAKE_FILE_OUT} + } else: error("Oops, I messed up") + moc_predefs.output = $$MOC_DIR/moc_predefs.h + moc_predefs.input = MOC_PREDEF_FILE + silent: moc_predefs.commands = @echo generating $$moc_predefs.output$$escape_expand(\n\t)@$$moc_predefs.commands + QMAKE_EXTRA_COMPILERS += moc_predefs + MOC_PREDEF_FILE = $$[QT_HOST_DATA/src]/mkspecs/features/data/dummy.cpp +} + +defineReplace(mocCmdBase) { + !isEmpty(WIN_INCLUDETEMP) { + incvar = @$$shell_quote($$WIN_INCLUDETEMP) + } else { + incvar = + for (inc, MOC_INCLUDEPATH): \ + incvar += -I$$shell_quote($$inc) + incvar += $$QMAKE_FRAMEWORKPATH_FLAGS + } + + RET = $$QMAKE_MOC $(DEFINES) + msvc: RET += --compiler-flavor=msvc + + isEmpty(MOC_PREDEF_FILE): RET += $$join(QMAKE_COMPILER_DEFINES, " -D", -D) + else: RET += --include $$shell_quote($$moc_predefs.output) + + RET += $$incvar $$QMAKE_MOC_OPTIONS + return($$RET) +} + +#moc headers +moc_header.CONFIG = moc_verify +moc_header.dependency_type = TYPE_C +moc_header.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} +moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} +moc_header.input = HEADERS +moc_header.variable_out = SOURCES +moc_header.name = MOC ${QMAKE_FILE_IN} +moc_header.depends += $$WIN_INCLUDETEMP $$moc_predefs.output +silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands +QMAKE_EXTRA_COMPILERS += moc_header +INCREDIBUILD_XGE += moc_header + +#moc sources +moc_source.CONFIG = no_link moc_verify +moc_source.dependency_type = TYPE_C +moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} +moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC} +moc_source.input = SOURCES +moc_source.name = MOC ${QMAKE_FILE_IN} +moc_source.depends += $$WIN_INCLUDETEMP $$moc_predefs.output +silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands +QMAKE_EXTRA_COMPILERS += moc_source +INCREDIBUILD_XGE += moc_source + +#make sure we can include these files +INCLUDEPATH += $$absolute_path($$MOC_DIR, $$OUT_PWD) + +#auto depend on moc +!no_mocdepend { + moc_source.depends += $$QMAKE_MOC_EXE + moc_header.depends += $$QMAKE_MOC_EXE +} + +#generate a mocclean +build_pass|isEmpty(BUILDS):mocclean.depends = compiler_moc_header_clean compiler_moc_source_clean +else:mocclean.CONFIG += recursive +QMAKE_EXTRA_TARGETS += mocclean + +#generate a mocables +build_pass|isEmpty(BUILDS):mocables.depends = compiler_moc_header_make_all compiler_moc_source_make_all +else:mocables.CONFIG += recursive +QMAKE_EXTRA_TARGETS += mocables diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/no_debug_info.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/no_debug_info.prf new file mode 100644 index 000000000..da14b7bb2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/no_debug_info.prf @@ -0,0 +1,13 @@ +msvc { + QMAKE_CFLAGS -= -Zi + QMAKE_CFLAGS_DEBUG -= -Zi + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO -= -Zi + QMAKE_CXXFLAGS -= -Zi + QMAKE_CXXFLAGS_DEBUG -= -Zi + QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zi +} else { + QMAKE_CFLAGS -= -g -ggdb3 -gstabs + QMAKE_CXXFLAGS -= -g -ggdb3 -gstabs + QMAKE_LFLAGS -= -g -ggdb3 -gstabs + QMAKE_LIBFLAGS -= -g -ggdb3 -gstabs +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/plugin_bundle.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/plugin_bundle.prf new file mode 100644 index 000000000..f3e7294c9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/plugin_bundle.prf @@ -0,0 +1,2 @@ +# Override mkspec default which creates a shared library +mac: QMAKE_LFLAGS_PLUGIN = -bundle diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/precompile_header.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/precompile_header.prf new file mode 100644 index 000000000..9b233dd87 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/precompile_header.prf @@ -0,0 +1,24 @@ +# +# 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. +# + +# +# Set up extra compiler for PCH disabled sources +# +no_pch_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} +msvc: no_pch_compiler.commands += -Fo${QMAKE_FILE_OUT} +else: no_pch_compiler.commands += -o ${QMAKE_FILE_OUT} +no_pch_compiler.dependency_type = TYPE_C +no_pch_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} +no_pch_compiler.input = NO_PCH_SOURCES +no_pch_compiler.variable_out = OBJECTS +no_pch_compiler.name = compiling[no_pch] ${QMAKE_FILE_IN} +silent: no_pch_compiler.commands = @echo compiling[no_pch] ${QMAKE_FILE_IN} && $$no_pch_compiler.commands +QMAKE_EXTRA_COMPILERS += no_pch_compiler diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qgltf.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qgltf.prf new file mode 100644 index 000000000..e3a5c64e3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qgltf.prf @@ -0,0 +1,12 @@ +qtPrepareTool(QMAKE_QGLTF, qgltf) + +isEmpty(QGLTF_DIR): QGLTF_DIR = . + +qgltf.input = QT3D_MODELS +qgltf.output = $$QGLTF_DIR/${QMAKE_FILE_BASE}.qrc +qgltf.variable_out += RESOURCES +qgltf.depends += $$QMAKE_QGLTF_EXE +qgltf.commands = $$QMAKE_QGLTF -d $$QGLTF_DIR $$QGLTF_PARAMS ${QMAKE_FILE_NAME} +silent: qgltf.commands = @echo qgltf ${QMAKE_FILE_IN} && $$qgltf.commands -s +qgltf.CONFIG += no_link +QMAKE_EXTRA_COMPILERS += qgltf diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qlalr.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qlalr.prf new file mode 100644 index 000000000..54d8b583c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qlalr.prf @@ -0,0 +1,50 @@ +qtPrepareTool(QMAKE_QLALR, qlalr) + +isEmpty(QLALR_DIR): QLALR_DIR = . + +!isEmpty(QLALRSOURCES) { + INCLUDEPATH += $$absolute_path($$QLALR_DIR, $$OUT_PWD) +} + +for (s, QLALRSOURCES) { + sf = $$absolute_path($$s, $$_PRO_FILE_PWD_) + QMAKE_INTERNAL_INCLUDED_FILES += $$sf + sfl = $$cat($$sf, lines) + parser = $$lower($$member($$list($$find(sfl, "^%parser\\s")), 1)) + isEmpty(parser): error("Could not extract %parser from $$sf") + decl = $$member($$list($$find(sfl, "^%decl\\s")), 1) + isEmpty(decl): error("Could not extract %decl from $$sf") + impl = $$member($$list($$find(sfl, "^%impl\\s")), 1) + isEmpty(impl): error("Could not extract %impl from $$sf") + base = qlalr_$$replace(sf, ^.*/([^./]+)[^/]*$, \\1) + + invar = $$upper($$base)_SOURCES + $$invar = $$sf + $${base}.input = $$invar + $${base}.output = $$QLALR_DIR/$${parser}.cpp + $${base}.variable_out = GENERATED_SOURCES + $${base}.depends += $$QMAKE_QLALR_EXE + $${base}.commands = $$QMAKE_QLALR $$QMAKE_QLALRFLAGS ${QMAKE_FILE_IN} + silent: $${base}.commands = @echo qlalr ${QMAKE_FILE_IN} && $$eval($${base}.commands) + $${base}.name = QLALR ${QMAKE_FILE_IN} + + $${base}_h.input = $$invar + $${base}_h.output = $$QLALR_DIR/$${parser}_p.h + $${base}_h.CONFIG = no_link + $${base}_h.depends += $$QLALR_DIR/$${parser}.cpp + $${base}_h.commands = $$escape_expand(\\n) # force creation of rule + + $${base}_decl.input = $$invar + $${base}_decl.output = $$QLALR_DIR/$${decl} + $${base}_decl.CONFIG = no_link + $${base}_decl.depends += $$QLALR_DIR/$${parser}.cpp + $${base}_decl.commands = $$escape_expand(\\n) # force creation of rule + + $${base}_impl.input = $$invar + $${base}_impl.output = $$QLALR_DIR/$${impl} + $${base}_impl.variable_out = GENERATED_SOURCES + $${base}_impl.depends += $$QLALR_DIR/$${parser}.cpp + $${base}_impl.commands = $$escape_expand(\\n) # force creation of rule + + QMAKE_EXTRA_COMPILERS += $$base $${base}_h $${base}_decl $${base}_impl +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qmake_use.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qmake_use.prf new file mode 100644 index 000000000..f81d1cece --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qmake_use.prf @@ -0,0 +1,25 @@ +suffix = +for(ever) { + QMAKE_USE$${suffix} = $$unique(QMAKE_USE$${suffix}) + for (use, QMAKE_USE$${suffix}) { + use = $$split(use, /) + name = $$take_first(use) + nu = $$upper($$name) + !defined(QMAKE_LIBS_$$nu, var): \ + error("Library '$$name' is not defined.") + + !contains(use, nolink) { + QMAKE_LIBDIR += $$eval(QMAKE_LIBDIR_$$nu) + debug: \ + LIBS$${suffix} += $$eval(QMAKE_LIBS_$${nu}_DEBUG) $$eval(QMAKE_LIBS_$$nu) + else: \ + LIBS$${suffix} += $$eval(QMAKE_LIBS_$${nu}_RELEASE) $$eval(QMAKE_LIBS_$$nu) + } + !contains(use, linkonly) { + DEFINES += $$eval(QMAKE_DEFINES_$${nu}) + INCLUDEPATH += $$eval(QMAKE_INCDIR_$${nu}) + } + } + !isEmpty(suffix): break() + suffix = "_PRIVATE" +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml1_module.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml1_module.prf new file mode 100644 index 000000000..33c3e4480 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml1_module.prf @@ -0,0 +1,13 @@ +# +# 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. +# + +CONFIG += qml1_target +load(qml_module) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml1_plugin.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml1_plugin.prf new file mode 100644 index 000000000..cb1f0ce26 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml1_plugin.prf @@ -0,0 +1,13 @@ +# +# 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. +# + +CONFIG += qml1_target +load(qml_plugin) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml_debug.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml_debug.prf new file mode 100644 index 000000000..72f4f2202 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml_debug.prf @@ -0,0 +1 @@ +DEFINES += QT_QML_DEBUG diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml_module.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml_module.prf new file mode 100644 index 000000000..4db0040dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml_module.prf @@ -0,0 +1,64 @@ +# +# 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. +# + +equals(TEMPLATE, app): TEMPLATE = aux + +isEmpty(TARGETPATH): error("Must set TARGETPATH (QML import name)") + +qmldir_file = $$_PRO_FILE_PWD_/qmldir + +fq_qml_files = +for(qmlf, QML_FILES): fq_qml_files += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_) + +fq_aux_qml_files = +for(qmlf, AUX_QML_FILES): fq_aux_qml_files += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_) + +load(qt_build_paths) + +qml1_target { + DESTDIR = $$MODULE_BASE_OUTDIR/imports/$$TARGETPATH + instbase = $$[QT_INSTALL_IMPORTS] +} else { + DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH + instbase = $$[QT_INSTALL_QML] +} + +!qml1_target:static: CONFIG += builtin_resources + +builtin_resources { + URITARGET = $$replace(URI, "\\.", "_") + # Ensure the QML files are included in the resources. In static builds, + # the QML engine reads also the qmldir file from the resources. + $${URITARGET}.files = $$qmldir_file $$fq_qml_files + # qt-project.org/imports is the path used for locating imports inside the resources + $${URITARGET}.prefix = /qt-project.org/imports/$$TARGETPATH + RESOURCES += $${URITARGET} +} + +# Install rules +qmldir.base = $$_PRO_FILE_PWD_ +# Tools need qmldir and plugins.qmltypes always installed on the file system +qmldir.files = $$qmldir_file $$fq_aux_qml_files +!builtin_resources: qmldir.files += $$fq_qml_files +qmldir.path = $$instbase/$$TARGETPATH +INSTALLS += qmldir + +!debug_and_release|!build_all|CONFIG(release, debug|release) { + !prefix_build { + COPIES += qmldir + } else { + # For non-installed static builds, tools need qmldir and plugins.qmltypes + # files in the build dir + qmldir2build.files = $$qmldir_file $$fq_aux_qml_files + qmldir2build.path = $$DESTDIR + COPIES += qmldir2build + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml_plugin.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml_plugin.prf new file mode 100644 index 000000000..d49f4c49c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qml_plugin.prf @@ -0,0 +1,122 @@ +# +# 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. +# + +load(qt_build_config) + +TEMPLATE = lib +CONFIG += plugin + +if(win32|mac):!macx-xcode { + qtConfig(debug_and_release): CONFIG += debug_and_release + qtConfig(build_all): CONFIG += build_all +} + +CONFIG += relative_qt_rpath # Qt's QML plugins should be relocatable + +# Qt libraries should only use Application Extension safe APIs +darwin:!no_app_extension_api_only: CONFIG += app_extension_api_only + +!no_cxx_module:isEmpty(CXX_MODULE) { + CXX_MODULE = $$TARGET + TARGET = declarative_$${TARGET} +} +isEmpty(TARGETPATH): TARGETPATH = $$eval(QT.$${CXX_MODULE}.name) + +win32:CONFIG(shared, static|shared) { + # Embed a VERSIONINFO resource into the plugin's DLL. + isEmpty(VERSION): VERSION = $$MODULE_VERSION + CONFIG += skip_target_version_ext +} + +# Insert the plugins URI into its meta data to enable usage +# of static plugins in QtDeclarative: +URI = $$replace(TARGETPATH, "/", ".") +QMAKE_MOC_OPTIONS += -Muri=$$URI + +QMLTYPEFILE = $$_PRO_FILE_PWD_/plugins.qmltypes +exists($$QMLTYPEFILE): AUX_QML_FILES += $$QMLTYPEFILE + +# Install rules + +load(qt_build_paths) + +qml1_target { + DESTDIR = $$MODULE_BASE_OUTDIR/imports/$$TARGETPATH + instbase = $$[QT_INSTALL_IMPORTS] +} else { + DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH + instbase = $$[QT_INSTALL_QML] +} + +target.path = $$instbase/$$TARGETPATH +INSTALLS += target + +# Some final setup + +TARGET = $$qt5LibraryTarget($$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 +# automatically at compile time because qmlplugindump does not support some QML features and it may +# not be possible when cross-compiling. +# +# To regenerate run 'make qmltypes' which will update the plugins.qmltypes file in the source +# directory. Then review and commit the changes made to plugins.qmltypes. +# +!cross_compile { + qml1_target { + qmlplugindump = qml1plugindump + importpath.name = QML_IMPORT_PATH + } else { + qmlplugindump = qmlplugindump + importpath.name = QML2_IMPORT_PATH + } + importpath.value = + for(qmod, QTREPOS) { + qml1_target: \ + qmod = $$qmod/imports + else: \ + qmod = $$qmod/qml + exists($$qmod): importpath.value += $$shell_path($$qmod) + } + importpath.value = $$unique(importpath.value) + QT_TOOL_ENV = importpath + qtPrepareTool(QMLPLUGINDUMP, $$qmlplugindump) + QT_TOOL_ENV = + + # qtPrepareTool() must be called outside a build pass, as it protects + # against concurrent wrapper creation by omitting it during build passes. + # However, creating the actual targets is reserved to the build passes. + build_pass|!debug_and_release { + isEmpty(IMPORT_VERSION) { + no_cxx_module { + IMPORT_VERSION = $$section(MODULE_VERSION, ., 0, 1) + isEmpty(IMPORT_VERSION): error("Must set IMPORT_VERSION") + } else { + IMPORT_VERSION = $$section(QT.$${CXX_MODULE}.VERSION, ., 0, 1) + } + } + + load(resolve_target) + TARGETPATHBASE = $$replace(TARGETPATH, \\.\\d+\$, ) + qmltypes.target = qmltypes + qmltypes.commands = $$QMLPLUGINDUMP -nonrelocatable $$replace(TARGETPATHBASE, /, .) $$IMPORT_VERSION > $$QMLTYPEFILE + qmltypes.depends = $$QMAKE_RESOLVED_TARGET + } else { + qmltypes.CONFIG += recursive + } + QMAKE_EXTRA_TARGETS += qmltypes +} + +load(qml_module) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qmlcache.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qmlcache.prf new file mode 100644 index 000000000..330da358b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qmlcache.prf @@ -0,0 +1,60 @@ +static { + message("QML cache generation ahead of time is not supported in static builds") + return() +} + +android { + message("QML cache generation ahead of time is not supported on Android") + return() +} + +qtPrepareTool(QML_CACHEGEN, qmlcachegen, _ARCH_CHECK) + +isEmpty(TARGETPATH): error("Must set TARGETPATH (QML import name) for ahead-of-time QML cache generation") + +!isEmpty(QT_TARGET_ARCH):QML_CACHEGEN_ARCH=$$QT_TARGET_ARCH +else:QML_CACHEGEN_ARCH=$$QT_ARCH + +!isEmpty(QT_TARGET_BUILDABI):QML_CACHEGEN_ABI=$$QT_TARGET_BUILDABI +else:QML_CACHEGEN_ABI=$$QT_BUILDABI + +QML_CACHEGEN_ARGS=--target-architecture=$$QML_CACHEGEN_ARCH --target-abi=$$QML_CACHEGEN_ABI + +!system($$QML_CACHEGEN_ARCH_CHECK $$QML_CACHEGEN_ARGS --check-if-supported) { + message("QML cache generation requested but target architecture $$QML_CACHEGEN_ARCH is not supported.") + return() +} + +load(qt_build_paths) + +prefix_build: QMLCACHE_DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH +else: QMLCACHE_DESTDIR = $$[QT_INSTALL_QML]/$$TARGETPATH + +CACHEGEN_FILES= +qmlcacheinst.files = +for(qmlf, QML_FILES) { + contains(qmlf,.*\\.js$)|contains(qmlf,.*\\.qml$) { + CACHEGEN_FILES += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_) + qmlcacheinst.files += $$QMLCACHE_DESTDIR/$$relative_path($$qmlf, $$_PRO_FILE_PWD_)c + } +} + +defineReplace(qmlCacheOutputFileName) { + return($$relative_path($$QMLCACHE_DESTDIR/$$relative_path($$1, $$_PRO_FILE_PWD_)c, $$OUT_PWD)) +} + +qmlcacheinst.base = $$QMLCACHE_DESTDIR +qmlcacheinst.path = $$[QT_INSTALL_QML]/$$TARGETPATH +qmlcacheinst.CONFIG = no_check_exist + +qmlcachegen.input = CACHEGEN_FILES +qmlcachegen.output = ${QMAKE_FUNC_FILE_IN_qmlCacheOutputFileName} +qmlcachegen.CONFIG = no_link target_predeps +qmlcachegen.commands = $$QML_CACHEGEN $$QML_CACHEGEN_ARGS -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} +qmlcachegen.name = Generate QML Cache ${QMAKE_FILE_IN} +qmlcachegen.variable_out = GENERATED_FILES + +!debug_and_release|!build_all|CONFIG(release, debug|release) { + QMAKE_EXTRA_COMPILERS += qmlcachegen + INSTALLS += qmlcacheinst +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qmltestcase.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qmltestcase.prf new file mode 100644 index 000000000..335ba9000 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qmltestcase.prf @@ -0,0 +1,13 @@ +CONFIG += testcase + +QT += qml qmltest + +mac: CONFIG -= app_bundle + +# If the .pro file specified an IMPORTPATH, then add that to +# the command-line when the test is run. +!isEmpty(IMPORTPATH) { + load(testcase) + for(import, IMPORTPATH): check.commands += -import \"$$import\" +} +DEFINES += QUICK_TEST_SOURCE_DIR=\"\\\"$$_PRO_FILE_PWD_\\\"\" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qscxmlc.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qscxmlc.prf new file mode 100644 index 000000000..ae1b3baea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qscxmlc.prf @@ -0,0 +1,39 @@ +qtPrepareTool(QMAKE_QSCXMLC, qscxmlc) + +isEmpty(QSCXMLC_DIR):QSCXMLC_DIR = . + +debug_and_release { + CONFIG(debug, debug|release):SUFFIX = /debug + CONFIG(release, debug|release):SUFFIX = /release +} + +QSCXMLC_DIR = $$QSCXMLC_DIR$$SUFFIX + +{ +qscxmlc.name = QSCXMLC ${QMAKE_FILE_IN}.h +qscxmlc.input = STATECHARTS +qscxmlc.variable_out = QSCXMLC_HEADERS +qscxmlc.commands = $$QMAKE_QSCXMLC ${QMAKE_FILE_IN} --header ${QMAKE_FILE_OUT} --impl $$QSCXMLC_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} $$QSCXMLC_ARGUMENTS +!isEmpty(QSCXMLC_NAMESPACE): qscxmlc.commands = $${qscxmlc.commands} --namespace $$QSCXMLC_NAMESPACE +qscxmlc.output = $$QSCXMLC_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +qscxmlc.CONFIG += target_predeps +qscxmlc.depends += $$QMAKE_QSCXMLC_EXE + +QMAKE_EXTRA_COMPILERS += qscxmlc + +qscxmlc_sm.name = QSCXMLC ${QMAKE_FILE_IN}.cpp +qscxmlc_sm.input = QSCXMLC_HEADERS +qscxmlc_sm.variable_out = GENERATED_SOURCES +qscxmlc_sm.commands = $$escape_expand(\\n) # force creation of rule +qscxmlc_sm.output = $$QSCXMLC_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} +qscxmlc_sm.CONFIG += target_predeps + +QMAKE_EXTRA_COMPILERS += qscxmlc_sm +} + +!isEmpty(STATECHARTS) { + INCLUDEPATH += $$absolute_path($$QSCXMLC_DIR, $$OUT_PWD) +} + +QMAKE_DIR_REPLACE += QSCXMLC_DIR +QMAKE_DIR_REPLACE_SANE += QSCXMLC_DIR diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt.prf new file mode 100644 index 000000000..3ccbbe706 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt.prf @@ -0,0 +1,342 @@ +CONFIG *= thread + +#handle defines +win32 { + qtConfig(shared) { + # this variable is read by qmake in qmake/generators/win32/msvc_vcproj.cpp + # function VcprojGenerator::initDeploymentTool() + QMAKE_DLL_PATHS += $$[QT_INSTALL_BINS/get] + } +} +CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG +qtConfig(force_asserts): DEFINES += QT_FORCE_ASSERTS +no_keywords:DEFINES += QT_NO_KEYWORDS +plugin { #Qt plugins + static:DEFINES += QT_STATICPLUGIN + DEFINES += QT_PLUGIN +} + +qtestlib { + warning("CONFIG+=qtestlib is deprecated. Use QT+=testlib instead.") + QT += testlib +} +qdbus { + warning("CONFIG+=qdbus is deprecated. Use QT+=dbus instead.") + QT += dbus +} +help { + warning("CONFIG+=help is deprecated. Use QT+=help instead.") + QT += help-private # sic! +} +designer { + warning("CONFIG+=designer is deprecated. Use QT+=designer instead.") + QT += designer +} +uitools { + warning("CONFIG+=uitools is deprecated. Use QT+=uitools instead.") + QT += uitools +} +qaxcontainer { + warning("CONFIG+=qaxcontainer is deprecated. Use QT+=axcontainer instead.") + QT += axcontainer +} +qaxserver { + warning("CONFIG+=qaxserver is deprecated. Use QT+=axserver instead.") + QT += axserver +} + +!import_qpa_plugin { + warning("CONFIG-=import_qpa_plugin is deprecated. Use QTPLUGIN.platforms=- instead.") + QTPLUGIN.platforms = - +} else: qpa_minimal_plugin { + warning("CONFIG+=qpa_minimal_plugin is deprecated. Use QTPLUGIN.platforms=qminimal instead.") + QTPLUGIN.platforms = qminimal +} + +!force_import_plugins:!contains(TEMPLATE, ".*app"):!if(contains(TEMPLATE, ".*lib"):dll): \ + CONFIG -= import_plugins + +# qmake variables cannot contain dashes, so normalize the names first +CLEAN_QT = $$replace(QT, -private$, _private) +CLEAN_QT_PRIVATE = $$replace(QT_PRIVATE, -private$, _private) + +qt_module_deps = $$CLEAN_QT $$CLEAN_QT_PRIVATE +all_qt_module_deps = $$resolve_depends(qt_module_deps, "QT.", ".depends" ".run_depends") + +QTPLUGIN = $$unique($$list($$lower($$QTPLUGIN))) + +import_plugins:qtConfig(static) { + manualplugs = $$QTPLUGIN # User may specify plugins. Mostly legacy. + autoplugs = # Auto-added plugins. + # First round: explicitly specified modules. + plugin_deps = $$all_qt_module_deps + for(ever) { + # Automatically link the default plugins for the linked Qt modules. + for (qtmod, plugin_deps) { + for (ptype, QT.$${qtmod}.plugin_types) { + nptype = $$replace(ptype, [-/], _) + isEmpty(QTPLUGIN.$$nptype) { + for (plug, QT_PLUGINS) { + equals(QT_PLUGIN.$${plug}.TYPE, $$ptype) { + for (dep, QT_PLUGIN.$${plug}.EXTENDS) { + !contains(all_qt_module_deps, $$dep) { + plug = + break() + } + } + autoplugs += $$plug + } + } + } else { + plug = $$eval(QTPLUGIN.$$nptype) + !equals(plug, -): \ + autoplugs += $$plug + } + } + } + QTPLUGIN = $$manualplugs $$autoplugs + QTPLUGIN = $$unique(QTPLUGIN) + + # Obtain the plugins' Qt dependencies ... + plugin_deps = + for (plug, QTPLUGIN): \ + plugin_deps += $$eval(QT_PLUGIN.$${plug}.DEPENDS) + plugin_deps = $$resolve_depends(plugin_deps, "QT.", ".depends" ".run_depends") + plugin_deps -= $$all_qt_module_deps + isEmpty(plugin_deps): \ + break() + # ... and start over if any new Qt modules appeared, + # as these may want to load plugins in turn. + all_qt_module_deps += $$plugin_deps + } + extraplugs = $$manualplugs + manualplugs -= $$autoplugs + extraplugs -= $$manualplugs + !isEmpty(extraplugs): \ + warning("Redundant entries in QTPLUGIN: $$extraplugs") + + !isEmpty(QTPLUGIN) { + IMPORT_FILE_CONT = \ + "// This file is autogenerated by qmake. It imports static plugin classes for" \ + "// static plugins specified using QTPLUGIN and QT_PLUGIN_CLASS. variables." \ + "$${LITERAL_HASH}include " + for (plug, QTPLUGIN) { + plug_class = $$eval(QT_PLUGIN.$${plug}.CLASS_NAME) + !isEmpty(plug_class): \ + IMPORT_FILE_CONT += "Q_IMPORT_PLUGIN($$plug_class)" + else: \ + warning("Plugin class name could not be determined for plugin '$$plug'.") + } + IMPORT_CPP = $$OUT_PWD/$$lower($$basename(TARGET))_plugin_import.cpp + write_file($$IMPORT_CPP, IMPORT_FILE_CONT)|error() + GENERATED_SOURCES += $$IMPORT_CPP + QMAKE_DISTCLEAN += $$IMPORT_CPP + } +} + +# Only link against plugins in static builds +!isEmpty(QTPLUGIN):qtConfig(static) { + for (plug, QTPLUGIN) { + # Check if the plugin is known to Qt. We can use this to determine + # the plugin path. Unknown plugins must rely on the default link path. + plug_type = $$eval(QT_PLUGIN.$${plug}.TYPE) + !isEmpty(plug_type) { + plug_path = $$eval(QT_PLUGIN.$${plug}.PATH) + isEmpty(plug_path): \ + plug_path = $$[QT_INSTALL_PLUGINS/get] + LIBS += -L$$plug_path/$$plug_type + } + LIBS += -l$${plug}$$qtPlatformTargetSuffix() + } +} + +# target variable, flag source variable +defineTest(qtProcessModuleFlags) { + for(flag, $$2) { + contains(flag, ^-.*): \ + $$1 -= $$replace(flag, ^-, ) + else: \ + $$1 += $$flag + } + export($$1) +} + +unset(using_privates) +var_sfx = +for(ever) { + # Topological resolution of modules based on their QT..depends variable + FULL_QT$$var_sfx = $$resolve_depends(CLEAN_QT$$var_sfx, "QT.") + # Finally actually add the modules + unset(BAD_QT) + for(QTLIB, FULL_QT$$var_sfx) { + MODULE_NAME = $$eval(QT.$${QTLIB}.name) + MODULE_MODULE = $$eval(QT.$${QTLIB}.module) + MODULE_INCLUDES = $$eval(QT.$${QTLIB}.includes) + MODULE_LIBS = $$eval(QT.$${QTLIB}.libs) + MODULE_FRAMEWORKS = $$eval(QT.$${QTLIB}.frameworks) + MODULE_USES = $$eval(QT.$${QTLIB}.uses) + MODULE_CONFIG = $$eval(QT.$${QTLIB}.module_config) + + isEmpty(MODULE_NAME) { + BAD_QT += $$QTLIB + next() + } + + contains(MODULE_CONFIG, internal_module): \ + using_privates = true + contains(MODULE_CONFIG, ltcg): \ + CONFIG += link_ltcg + + qtProcessModuleFlags(CONFIG, QT.$${QTLIB}.CONFIG) + qtProcessModuleFlags(DEFINES, QT.$${QTLIB}.DEFINES) + + MODULE_INCLUDES -= $$QMAKE_DEFAULT_INCDIRS + MODULE_LIBS_ADD = $$MODULE_LIBS + MODULE_LIBS_ADD -= $$QMAKE_DEFAULT_LIBDIRS + + !contains(MODULE_CONFIG, v2) { + # Backwards compatibility with pre-5.6 module .pri files + + contains(MODULE_CONFIG, lib_bundle) { + MODULE_FRAMEWORKS = $$MODULE_LIBS + inc = $$MODULE_LIBS/$${MODULE_NAME}.framework/Headers + MODULE_INCLUDES = $$inc + contains(MODULE_CONFIG, internal_module): \ + MODULE_INCLUDES += \ + $$inc/$$eval(QT.$${QTLIB}.VERSION) \ + $$inc/$$eval(QT.$${QTLIB}.VERSION)/$$MODULE_NAME + } else { + # Re-insert the major version in the library name (cf qt5LibraryTarget above) + MODULE_NAME ~= s,^Qt,Qt$$QT_MAJOR_VERSION, + } + + # Only link to this module if a libs directory is set, else this is just a module + # to give access to sources or include files, and not for linking. + !isEmpty(MODULE_LIBS):!contains(MODULE_CONFIG, no_link): \ + MODULE_MODULE = $${MODULE_NAME}$${QT_LIBINFIX} + } + + # Frameworks shouldn't need include paths, but much code does not use + # module-qualified #includes, so by default we add paths which point + # directly into the frameworks. Private modules have somewhat convoluted + # header paths, so adding them is necessary in every case. + !if(contains(MODULE_CONFIG, lib_bundle):qt_no_framework_direct_includes) \ + |contains(MODULE_CONFIG, internal_module): \ + INCLUDEPATH *= $$MODULE_INCLUDES + QMAKE_FRAMEWORKPATH *= $$MODULE_FRAMEWORKS + !isEmpty(MODULE_MODULE) { + contains(MODULE_CONFIG, lib_bundle) { + LIBS$$var_sfx += -framework $$MODULE_MODULE + } else { + !isEmpty(MODULE_LIBS_ADD): \ + LIBS$$var_sfx += -L$$MODULE_LIBS_ADD + + lib = $$MODULE_MODULE$$qtPlatformTargetSuffix() + LIBS$$var_sfx += -l$$lib + + contains(MODULE_CONFIG, staticlib): \ + PRE_TARGETDEPS *= $$MODULE_LIBS/$${QMAKE_PREFIX_STATICLIB}$${lib}.$${QMAKE_EXTENSION_STATICLIB} + + !isEmpty(QMAKE_LSB) { + !isEmpty(MODULE_LIBS_ADD): \ + QMAKE_LFLAGS *= --lsb-libpath=$$MODULE_LIBS_ADD + QMAKE_LFLAGS *= --lsb-shared-libs=$$lib + QMAKE_LIBDIR *= /opt/lsb/lib + } + } + } + QMAKE_USE$$var_sfx += $$MODULE_USES + # Add capabilities as defined by modules used in the project + winrt { + MODULE_WINRT_CAPABILITIES = $$eval(QT.$${QTLIB}.winrt_capabilities) + !isEmpty(MODULE_WINRT_CAPABILITIES): \ + WINRT_MANIFEST.capabilities_default += $$MODULE_WINRT_CAPABILITIES + MODULE_WINRT_CAPABILITIES_DEVICE = $$eval(QT.$${QTLIB}.winrt_capabilities_device) + !isEmpty(MODULE_WINRT_CAPABILITIES_DEVICE): \ + WINRT_MANIFEST.capabilities_device_default += $$MODULE_WINRT_CAPABILITIES_DEVICE + } + } + !isEmpty(BAD_QT):error("Unknown module(s) in QT$$var_sfx: $$replace(BAD_QT, _private$, -private)") + + !isEmpty(var_sfx): break() + var_sfx = _PRIVATE +} +!isEmpty(using_privates):!no_private_qt_headers_warning:!build_pass { + message("This project is using private headers and will therefore be tied to this specific Qt module build version.") + message("Running this project against other versions of the Qt modules may crash at any arbitrary point.") + message("This is not a bug, but a result of using Qt internals. You have been warned!") +} + +!no_qt_rpath:!static:qtConfig(rpath):!qtConfig(static):\ + contains(all_qt_module_deps, core) { + relative_qt_rpath:!isEmpty(QMAKE_REL_RPATH_BASE):contains(INSTALLS, target):\ + isEmpty(target.files):isEmpty(target.commands):isEmpty(target.extra) { + # NOT the /dev property, as INSTALLS use host paths + QMAKE_RPATHDIR += $$relative_path($$[QT_INSTALL_LIBS], $$qtRelativeRPathBase()) + } else { + QMAKE_RPATHDIR += $$[QT_INSTALL_LIBS/dev] + } +} + +!isEmpty(QMAKE_LFLAGS_RPATHLINK):!qtConfig(static) { + # -rpath-link is used by the linker to find dependencies of dynamic + # libraries which were NOT specified on the command line. + # This means that paths of direct dependencies (QT & QT_PRIVATE) + # don't need to be listed, unlike their private dependencies' paths. + privdep = $$all_qt_module_deps + privdep -= $$resolve_depends(qt_module_deps, "QT.") + rpaths = + for(dep, privdep): \ + rpaths += $$eval(QT.$${dep}.libs) + QMAKE_RPATHLINKDIR *= $$unique(rpaths) +} + +# static builds: link qml import plugins into the target. +contains(all_qt_module_deps, qml): \ + qtConfig(static):import_plugins:!host_build:!no_import_scan { + exists($$[QT_INSTALL_QML/get]): \ + QMLPATHS *= $$[QT_INSTALL_QML/get] + + # run qmlimportscanner + qtPrepareTool(QMLIMPORTSCANNER, qmlimportscanner, , system) + for (QMLPATH, QMLPATHS): \ + IMPORTPATHS += -importPath $$system_quote($$QMLPATH) + + #message(run $$QMLIMPORTSCANNER $$_PRO_FILE_PWD_ $$IMPORTPATHS) + JSON = $$system($$QMLIMPORTSCANNER $$system_quote($$_PRO_FILE_PWD_) $$IMPORTPATHS) + + parseJson(JSON, IMPORTS)| error("Failed to parse qmlimportscanner output.") + + !isEmpty(IMPORTS._KEYS_) { + # add import plugins to LIBS line + for (key, IMPORTS._KEYS_) { + PATH = $$eval(IMPORTS.$${key}.path) + PLUGIN = $$eval(IMPORTS.$${key}.plugin) + !isEmpty(PATH):!isEmpty(PLUGIN): LIBS *= -L$$PATH -l$${PLUGIN}$$qtPlatformTargetSuffix() + } + + # create qml_plugin_import.cpp + IMPORT_FILE_CONT = \ + "// This file is autogenerated by qmake. It imports static plugin classes for" \ + "// static plugins used by QML imports." \ + "$${LITERAL_HASH}include " + for (key, IMPORTS._KEYS_) { + PLUGIN = $$eval(IMPORTS.$${key}.plugin) + CLASSNAME = $$eval(IMPORTS.$${key}.classname) + !isEmpty(PLUGIN) { + !isEmpty(CLASSNAME) { + !contains(ADDED_IMPORTS, $$PLUGIN) { + ADDED_IMPORTS += $$PLUGIN + IMPORT_FILE_CONT += "Q_IMPORT_PLUGIN($$CLASSNAME)" + } + } else { + error("Plugin $$PLUGIN is missing a classname entry, please add one to the qmldir file.") + } + } + } + QML_IMPORT_CPP = $$OUT_PWD/$$lower($$basename(TARGET))_qml_plugin_import.cpp + write_file($$QML_IMPORT_CPP, IMPORT_FILE_CONT)|error() + GENERATED_SOURCES += $$QML_IMPORT_CPP + QMAKE_DISTCLEAN += $$QML_IMPORT_CPP + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_android_deps.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_android_deps.prf new file mode 100644 index 000000000..c172ca8c4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_android_deps.prf @@ -0,0 +1,90 @@ + +# 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_BASE_OUTDIR/lib/ +DEPENDENCY_FILE = $$ANDROID_DEPENDS_DIR$$TARGET-android-dependencies.xml + +!build_pass { + !isEmpty(MODULE_PLUGIN_TYPES) { + for(PLUGIN_TYPE, MODULE_PLUGIN_TYPES) { + ANDROID_BUNDLED_FILES += "plugins/$$PLUGIN_TYPE" + } + } + + !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 += "" + } + } + + !isEmpty(ANDROID_BUNDLED_JAR_DEPENDENCIES) { + for(JAR_FILE, ANDROID_BUNDLED_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 += "" + } + } + + !isEmpty(ANDROID_LIB_DEPENDENCIES) { + for(LIB_FILE, ANDROID_LIB_DEPENDENCIES) { + EXTENDS = $$section(LIB_FILE, ":", 1, 1) + !isEmpty(EXTENDS): EXTENDS = "extends=\"$$EXTENDS\"" + LIB_FILE = $$section(LIB_FILE, ":", 0, 0) + FILE_CONTENT += "" + } + } + + !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 += "" + } + } + + !isEmpty(ANDROID_BUNDLED_FILES) { + for (BUNDLED_FILE, ANDROID_BUNDLED_FILES) { + FILE_CONTENT += "" + } + } + + !isEmpty(ANDROID_PERMISSIONS) { + for (ANDROID_PERMISSION, ANDROID_PERMISSIONS) { + FILE_CONTENT += "" + } + } + + !isEmpty(ANDROID_FEATURES) { + for (ANDROID_FEATURE, ANDROID_FEATURES) { + FILE_CONTENT += "" + } + } + + + !isEmpty(FILE_CONTENT) { + FILE_CONTENT = "" $$FILE_CONTENT "" + write_file($$DEPENDENCY_FILE, FILE_CONTENT)|error() + } +} + +!isEmpty(ANDROID_JAR_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCY_REPLACEMENTS)|!isEmpty(ANDROID_BUNDLED_JAR_DEPENDENCIES)|!isEmpty(ANDROID_BUNDLED_FILES) { + install_dependencies_file.files = $$DEPENDENCY_FILE + install_dependencies_file.path = $$[QT_INSTALL_LIBS] + INSTALLS += install_dependencies_file +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_app.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_app.prf new file mode 100644 index 000000000..883f8ca21 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_app.prf @@ -0,0 +1,68 @@ +# +# 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. +# + +TEMPLATE = app + +load(qt_build_paths) +DESTDIR = $$MODULE_BASE_OUTDIR/bin + +isEmpty(VERSION): VERSION = $$MODULE_VERSION +isEmpty(QMAKE_TARGET_DESCRIPTION): \ + QMAKE_TARGET_DESCRIPTION = "Qt $$title($$TARGET)" + +isEmpty(QMAKE_INFO_PLIST): CONFIG -= app_bundle + +# This decreases the binary size for tools if statically linked +QMAKE_LFLAGS += $$QMAKE_LFLAGS_GCSECTIONS + +host_build: QT -= gui # no host tool will ever use gui +host_build:force_bootstrap { + !build_pass:qtConfig(release_tools): CONFIG += release + contains(QT, core(-private)?|xml) { + QT -= core core-private xml + QT += bootstrap-private + } + target.path = $$[QT_HOST_BINS] +} else { + !build_pass:qtConfig(debug_and_release): CONFIG += release + target.path = $$[QT_INSTALL_BINS] + CONFIG += relative_qt_rpath # Qt's tools and apps should be relocatable +} +INSTALLS += target + +load(qt_targets) +load(qt_common) + +qtSetQmlPath() + +no_launch_target: return() + +load(resolve_target) +launch.commands = $$shell_quote($$shell_path($$QMAKE_RESOLVED_TARGET)) +QMAKE_EXTRA_TARGETS += launch + +# Add environment for non-installed builds. +QT_TOOL_NAME = target +qtAddTargetEnv(launch.commands, QT) + +isEmpty(BUILDS)|build_pass { + launch.depends = first +} else { + # For exclusive builds, run the app only once. + launch.CONFIG = recursive + launch.target = launch_all + launch.recurse_target = launch + launch.commands = + + launch_first.depends = $$eval($$first(BUILDS).target)-launch + launch_first.target = launch + QMAKE_EXTRA_TARGETS += launch_first +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_build_config.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_build_config.prf new file mode 100644 index 000000000..150d2b2cc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_build_config.prf @@ -0,0 +1,139 @@ +# +# 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(QMAKE_INTERNAL_INCLUDED_FILES, .*qmodule\\.pri) { + QMAKE_QT_MODULE = $$[QT_HOST_DATA/get]/mkspecs/qmodule.pri + !exists($$QMAKE_QT_MODULE)|!include($$QMAKE_QT_MODULE, "", true) { + debug(1, "Cannot load qmodule.pri!") + } else { + debug(1, "Loaded qmodule.pri from ($$QMAKE_QT_MODULE)") + } +} else { + debug(1, "Not loading qmodule.pri twice") +} + +PRECOMPILED_DIR = .pch +OBJECTS_DIR = .obj +MOC_DIR = .moc +RCC_DIR = .rcc +UI_DIR = .uic +intel_icl { + # ICL 14.0 has a bug that makes it not find #includes in dirs starting with . + MOC_DIR = tmp/moc + RCC_DIR = tmp/rcc + UI_DIR = tmp/uic +} + +QMAKE_DIR_REPLACE_SANE = PRECOMPILED_DIR OBJECTS_DIR MOC_DIR RCC_DIR UI_DIR + +# force_independent can be set externally. prefix_build not. +!exists($$[QT_HOST_DATA]/.qmake.cache): \ + CONFIG += prefix_build force_independent + +!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):force_independent { + # When doing a -prefix build of top-level qt5/qt.pro, we need to announce + # this repo's output dir to the other repos. + MODULE_BASE_OUTDIR = $$shadowed($$dirname(_QMAKE_CONF_)) + !contains(QTREPOS, $$MODULE_BASE_OUTDIR): \ + cache(QTREPOS, add super, MODULE_BASE_OUTDIR) + # This repo's module pris' location needs to be made known to qmake. + isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR + modpath = $$MODULE_QMAKE_OUTDIR/mkspecs/modules + !contains(QMAKEMODULES, $$modpath): \ + cache(QMAKEMODULES, add super, modpath) + unset(modpath) +} + +defineTest(qtSetQmlPath) { + !qtConfig(static)|host_build|no_import_scan: \ + return() + deps = $$replace(QT, -private$, _private) + deps = $$resolve_depends(deps, "QT.") + !contains(deps, qml): \ + return() + + isEmpty(QTREPOS): \ + QTREPOS = $$shadowed($$dirname(_QMAKE_CONF_)) + for (qrep, QTREPOS): \ + exists($$qrep/qml): \ + QMLPATHS += $$qrep/qml + export(QMLPATHS) +} + +# Apply extra compiler flags passed via configure last. +CONFIG = qt_build_extra $$CONFIG + +# Don't actually try to install anything in non-prefix builds. +# This is much easier and safer than making every single INSTALLS +# assignment conditional. +!prefix_build: \ + CONFIG += qt_clear_installs + +cross_compile: \ + CONFIG += force_bootstrap + +android|uikit|winrt: \ + CONFIG += builtin_testdata + +CONFIG += \ + utf8_source \ + create_prl link_prl \ + prepare_docs qt_docs_targets \ + no_private_qt_headers_warning QTDIR_build \ + qt_example_installs \ + # Qt modules get compiled without exceptions enabled by default. + # However, testcases should be still built with exceptions. + exceptions_off testcase_exceptions + +# Under Windows, this is neither necessary (transitive deps are automatically +# resolved), nor functional (.res files end up in .prl files and break things). +unix: CONFIG += explicitlib + +# By default we want tests on macOS to be built as standalone executables +macos: CONFIG += testcase_no_bundle + +defineTest(qtBuildPart) { + bp = $$eval($$upper($$section(_QMAKE_CONF_, /, -2, -2))_BUILD_PARTS) + isEmpty(bp): bp = $$QT_BUILD_PARTS + contains(bp, $$1): return(true) + return(false) +} + +defineTest(qtNomakeTools) { + qtBuildPart(tools): return() + for (d, 1) { + $${d}.CONFIG += no_default_target no_default_install + export($${d}.CONFIG) + } +} + +# This overloads the same function from qt_functions.prf. +# This is not in qt_module.prf, as that gets loaded too late. +defineTest(qtConfig) { + modules = $$QT $$QT_PRIVATE $$QT_FOR_PRIVATE $$QT_FOR_CONFIG + modules ~= s,-private$,_private,g + modules = $$resolve_depends(modules, "QT.", ".depends") + isEmpty(MODULE): \ + MODULE = $$section($$list($$basename(_PRO_FILE_)), ., 0, 0) + exists($$OUT_PWD/qt$${MODULE}-config.pri) { + include($$OUT_PWD/qt$${MODULE}-config.pri) + modules += $${MODULE} $${MODULE}_private + } + modules += global global_private + modules = $$reverse(modules) + for (module, modules) { + contains(QT.$${module}.enabled_features, $$1): \ + return(true) + contains(QT.$${module}.disabled_features, $$1): \ + return(false) + } + error("Could not find feature $${1}.") +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_build_extra.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_build_extra.prf new file mode 100644 index 000000000..a1512c3a1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_build_extra.prf @@ -0,0 +1,41 @@ +# +# 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. +# + +equals(TEMPLATE, subdirs): return() + +# It's likely that these extra flags will be wrong for host builds, +# and the bootstrapped tools usually don't need them anyway. +host_build:cross_compile: return() + +# The headersclean check needs defines and includes even for +# header-only modules. +DEFINES += $$EXTRA_DEFINES +INCLUDEPATH += $$EXTRA_INCLUDEPATH + +# The other flags are relevant only for actual libraries. +equals(TEMPLATE, aux): return() + +QMAKE_LIBDIR += $$EXTRA_LIBDIR +QMAKE_FRAMEWORKPATH += $$EXTRA_FRAMEWORKPATH + +# Static libs need no rpaths +static: return() + +for (rp, EXTRA_RPATHS) { + absrp = $$absolute_path($$rp, $$[QT_INSTALL_LIBS]) + !isEqual(absrp, $$rp) { + isEmpty(QMAKE_REL_RPATH_BASE)|!contains(INSTALLS, target): \ + rp = $$absrp + else: \ + rp = $$relative_path($$absrp, $$qtRelativeRPathBase()) + } + QMAKE_RPATHDIR += $$rp +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_build_paths.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_build_paths.prf new file mode 100644 index 000000000..1848f00e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_build_paths.prf @@ -0,0 +1,28 @@ +# +# 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. +# + +# Find the module's source root dir. +isEmpty(_QMAKE_CONF_): error("Project has no top-level .qmake.conf file.") +MODULE_BASE_INDIR = $$dirname(_QMAKE_CONF_) +MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_INDIR) +!isEmpty(MODULE_BASE_DIR): MODULE_SYNCQT_DIR = $$MODULE_BASE_DIR # compat for webkit +isEmpty(MODULE_SYNCQT_DIR): MODULE_SYNCQT_DIR = $$MODULE_BASE_INDIR +isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR + +exists($$MODULE_BASE_INDIR/.git): \ + CONFIG += git_build + +!force_independent { + # If the module is not built independently, everything ends up in qtbase. + # This is the case in non-prefix builds, except for selected modules. + MODULE_BASE_OUTDIR = $$[QT_HOST_PREFIX] + MODULE_QMAKE_OUTDIR = $$[QT_HOST_PREFIX] +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_clear_installs.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_clear_installs.prf new file mode 100644 index 000000000..66d12f9d6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_clear_installs.prf @@ -0,0 +1,12 @@ +# +# 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. +# + +INSTALLS = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_common.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_common.prf new file mode 100644 index 000000000..fb96d1b6a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_common.prf @@ -0,0 +1,118 @@ +# +# 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. +# + +QMAKE_DIR_REPLACE_SANE += DESTDIR +CONFIG -= debug_and_release_target + +DEFINES *= QT_NO_NARROWING_CONVERSIONS_IN_CONNECT + +qtConfig(c++11): CONFIG += c++11 strict_c++ +qtConfig(c++14): CONFIG += c++14 +qtConfig(c++1z): CONFIG += c++1z +qtConfig(stack-protector-strong): CONFIG += stack_protector_strong +contains(TEMPLATE, .*lib) { + # module and plugins + if(!host_build|!cross_compile):qtConfig(reduce_exports): CONFIG += hide_symbols + unix:qtConfig(reduce_relocations): CONFIG += bsymbolic_functions + qtConfig(separate_debug_info): CONFIG += separate_debug_info + + !isEmpty(_QMAKE_SUPER_CACHE_): \ + rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]* + else: \ + rplbase = $$MODULE_BASE_OUTDIR + host_build { + qqt_libdir = \$\$\$\$[QT_HOST_LIBS] + qt_libdir = $$[QT_HOST_LIBS] + } else { + qqt_libdir = \$\$\$\$[QT_INSTALL_LIBS] + qt_libdir = $$[QT_INSTALL_LIBS] + } + contains(QMAKE_DEFAULT_LIBDIRS, $$qt_libdir) { + lib_replace.match = "[^ ']*$$rplbase/lib" + lib_replace.replace = + } else { + lib_replace.match = $$rplbase/lib + lib_replace.replace = $$qqt_libdir + } + lib_replace.CONFIG = path + QMAKE_PRL_INSTALL_REPLACE += lib_replace +} + +# The remainder of this file must not apply to host tools/libraries, +# as the host compiler's version and capabilities are not checked. +host_build:cross_compile: return() + +# Extra warnings for Qt non-example code, to ensure cleanliness of the sources. +# The block below may turn these warnings into errors for some Qt targets. +# -Wdate-time: warn if we use __DATE__ or __TIME__ (we want to be able to reproduce the exact same binary) +# -Wvla: use of variable-length arrays (an extension to C++) +clang { + # Clang 3.5 introduced -Wdate-time + # The conditional assumes we aren't compiling against Clang 2.x anymore + greaterThan(QT_CLANG_MAJOR_VERSION, 3)|greaterThan(QT_CLANG_MINOR_VERSION, 4): \ + QMAKE_CXXFLAGS_WARN_ON += -Wdate-time +} else: gcc:!intel_icc { + QMAKE_CXXFLAGS_WARN_ON += -Wvla + # GCC 5 introduced -Wdate-time + greaterThan(QT_GCC_MAJOR_VERSION, 4): QMAKE_CXXFLAGS_WARN_ON += -Wdate-time + # GCC 6 introduced these + greaterThan(QT_GCC_MAJOR_VERSION, 5): QMAKE_CXXFLAGS_WARN_ON += -Wshift-overflow=2 -Wduplicated-cond + # GCC 7 has a lot of false positives relating to this, so disable completely + greaterThan(QT_GCC_MAJOR_VERSION, 6): QMAKE_CXXFLAGS_WARN_ON += -Wno-stringop-overflow +} + +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-4.2,5.0-5.1,6.0-6.4,7.0-7.3 + # Regular clang 3.x-5.0 + apple_ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION} + reg_ver = $${QT_CLANG_MAJOR_VERSION}.$${QT_CLANG_MINOR_VERSION} + contains(apple_ver, "4\\.[012]|5\\.[01]|6\\.[01234]|7\\.[0123]")|contains(reg_ver, "[34]\\.|5\\.0") { + QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=\\$${LITERAL_HASH}warnings -Wno-error=deprecated-declarations $$WERROR + } + } else:intel_icc:linux { + # Intel CC 13.0 - 17.0, on Linux only + ver = $${QT_ICC_MAJOR_VERSION}.$${QT_ICC_MINOR_VERSION} + linux:contains(ver, "(1[3456]\\.|17\\.0)") { + # 177: function "entity" was declared but never referenced + # (too aggressive; ICC reports even for functions created due to template instantiation) + # 1224: #warning directive + # 1478: function "entity" (declared at line N) was declared deprecated + # 1881: argument must be a constant null pointer value + # (NULL in C++ is usually a literal 0) + QMAKE_CXXFLAGS_WARN_ON += -Werror -ww177,1224,1478,1881 $$WERROR + } + } else:gcc:!clang:!intel_icc:!rim_qcc { + # GCC 4.6-4.9, 5.x, ... + ver = $${QT_GCC_MAJOR_VERSION}.$${QT_GCC_MINOR_VERSION} + contains(ver, "(4\\.[6789]|[5-9]\\..)") { + QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=cpp -Wno-error=deprecated-declarations $$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_WARN_ON += -Wno-error=strict-overflow + + # GCC 7 includes -Wimplicit-fallthrough in -Wextra, but Qt is not yet free of implicit fallthroughs. + greaterThan(QT_GCC_MAJOR_VERSION, 6): QMAKE_CXXFLAGS_WARN_ON += -Wno-error=implicit-fallthrough + + # Work-around for bug https://code.google.com/p/android/issues/detail?id=58135 + android: QMAKE_CXXFLAGS_WARN_ON += -Wno-error=literal-suffix + } + } else:msvc:!intel_icl { + # enable for MSVC 2012, MSVC 2013, MSVC 2015 + contains(MSVC_VER, "1[124].0"): QMAKE_CXXFLAGS_WARN_ON += -WX + } + unset(ver) +} + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_config.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_config.prf new file mode 100644 index 000000000..93c54e301 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_config.prf @@ -0,0 +1,42 @@ +# This file is loaded as one of the last things by all qmakespecs. + +QMAKE_QT_CONFIG = $$[QT_HOST_DATA/get]/mkspecs/qconfig.pri +!exists($$QMAKE_QT_CONFIG)|!include($$QMAKE_QT_CONFIG, "", true) { + debug(1, "Cannot load qconfig.pri!") +} else { + debug(1, "Loaded .qconfig.pri from ($$QMAKE_QT_CONFIG)") + dirs = $$(QMAKEMODULES) + QMAKE_MODULE_PATH = $$split(dirs, $$DIRLIST_SEPARATOR) + QMAKE_MODULE_PATH += $$QMAKEMODULES + dirs = $$[QMAKEMODULES] + QMAKE_MODULE_PATH += $$split(dirs, $$DIRLIST_SEPARATOR) + dirs = $$[QMAKE_MKSPECS] + dirs = $$split(dirs, $$DIRLIST_SEPARATOR) + QMAKE_MODULE_PATH += $$replace(dirs, \$, /modules) + unset(dirs) + QMAKE_MODULE_PATH = $$unique(QMAKE_MODULE_PATH) + QMAKE_MODULE_PATH = $$reverse(QMAKE_MODULE_PATH) + for(dir, QMAKE_MODULE_PATH) { + debug(1, "Loading modules from $${dir}") + mods = $$files($$dir/qt_*.pri) + for (mod, mods) { + # For installed Qt these paths will be common for all modules. + # For uninstalled prefix builds these will vary per module, via the + # forwarding module pri files. Keep qt_module_pris.prf in sync with this! + QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS] + QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS] + QT_MODULE_HOST_LIB_BASE = $$[QT_HOST_LIBS] + QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS] + include($$mod) + } + unset(mods) + } + QT_MODULES = $$unique(QT_MODULES) # In case modules appear in multiple places + unset(QT_MODULE_INCLUDE_BASE) + unset(QT_MODULE_LIB_BASE) + unset(QT_MODULE_HOST_LIB_BASE) + unset(QT_MODULE_BIN_BASE) +} + +load(qt_functions) + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_configure.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_configure.prf new file mode 100644 index 000000000..d5dcda22a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_configure.prf @@ -0,0 +1,2158 @@ + +QT_CONFIGURE_REPORT = +QT_CONFIGURE_NOTES = +QT_CONFIGURE_WARNINGS = +QT_CONFIGURE_ERRORS = + +defineTest(qtConfAddReport) { + QT_CONFIGURE_REPORT += "$$join(1, $$escape_expand(\\n))" + export(QT_CONFIGURE_REPORT) +} + +defineTest(qtConfAddNote) { + QT_CONFIGURE_NOTES += "Note: $$join(1, $$escape_expand(\\n))" + export(QT_CONFIGURE_NOTES) +} + +defineTest(qtConfAddWarning) { + QT_CONFIGURE_WARNINGS += "WARNING: $$join(1, $$escape_expand(\\n))" + export(QT_CONFIGURE_WARNINGS) +} + +defineTest(qtConfAddError) { + QT_CONFIGURE_ERRORS += "ERROR: $$join(1, $$escape_expand(\\n))" + export(QT_CONFIGURE_ERRORS) + equals(2, log):qt_conf_tests_allowed { + CONFIG += mention_config_log + export(CONFIG) + } +} + +defineTest(qtConfFatalError) { + qtConfAddError($$1, $$2) + qtConfPrintReport() + error() +} + +# Return a string list for the specified JSON path, which may be either a +# single string or an array of strings. +# Note that this returns a variable name, so it can be directly iterated over. +defineReplace(qtConfScalarOrList) { + defined($$1, var): return($$1) + vals = $$list() + for (i, $${1}._KEYS_): \ + $$vals += $$eval($${1}.$$i) + export($$vals) + return($$vals) +} + +defineTest(qtConfCommandlineSetInput) { + arg = $${1} + val = $${2} + !isEmpty($${currentConfig}.commandline.options.$${arg}.name): \ + arg = $$eval($${currentConfig}.commandline.options.$${arg}.name) + + config.input.$$arg = $$val + export(config.input.$$arg) +} + +defineReplace(qtConfGetNextCommandlineArg) { + c = $$take_first(QMAKE_EXTRA_ARGS) + export(QMAKE_EXTRA_ARGS) + return($$c) +} + +defineReplace(qtConfPeekNextCommandlineArg) { + return($$first(QMAKE_EXTRA_ARGS)) +} + +defineTest(qtConfCommandline_boolean) { + opt = $${1} + val = $${2} + isEmpty(val): val = yes + + !equals(val, yes):!equals(val, no) { + qtConfAddError("Invalid value given for boolean command line option '$$opt'.") + return() + } + + qtConfCommandlineSetInput($$opt, $$val) +} + +defineTest(qtConfCommandline_void) { + opt = $${1} + val = $${2} + !isEmpty(val) { + qtConfAddError("Command line option '$$opt' expects no argument ('$$val' given).") + return() + } + + val = $$eval($${currentConfig}.commandline.options.$${opt}.value) + isEmpty(val): val = yes + + qtConfCommandlineSetInput($$opt, $$val) +} + +defineTest(qtConfCommandline_enum) { + opt = $${1} + val = $${2} + isEmpty(val): val = yes + + # validate and map value + mapped = $$eval($${currentConfig}.commandline.options.$${opt}.values.$${val}) + isEmpty(mapped) { + # just a list of allowed values + for (i, $${currentConfig}.commandline.options.$${opt}.values._KEYS_) { + equals($${currentConfig}.commandline.options.$${opt}.values.$${i}, $$val) { + mapped = $$val + break() + } + } + } + isEmpty(mapped) { + qtConfAddError("Invalid value '$$val' supplied to command line option '$$opt'.") + return() + } + + qtConfCommandlineSetInput($$opt, $$mapped) +} + +defineTest(qtConfValidateValue) { + opt = $${1} + val = $${2} + + validValues = $$eval($${currentConfig}.commandline.options.$${opt}.values._KEYS_) + isEmpty(validValues): \ + return(true) + + for (i, validValues) { + equals($${currentConfig}.commandline.options.$${opt}.values.$${i}, $$val): \ + return(true) + } + + qtConfAddError("Invalid value '$$val' supplied to command line option '$$opt'.") + return(false) +} + +defineTest(qtConfCommandline_string) { + opt = $${1} + val = $${2} + nextok = $${3} + isEmpty(val):$$nextok: val = $$qtConfGetNextCommandlineArg() + + # Note: Arguments which are variable assignments are legit here. + contains(val, "^-.*")|isEmpty(val) { + qtConfAddError("No value supplied to command line option '$$opt'.") + return() + } + + !qtConfValidateValue($$opt, $$val): \ + return() + + qtConfCommandlineSetInput($$opt, $$val) +} + +defineTest(qtConfCommandline_optionalString) { + opt = $${1} + val = $${2} + nextok = $${3} + isEmpty(val) { + $$nextok: val = $$qtConfPeekNextCommandlineArg() + contains(val, "^-.*|[A-Z_]+=.*")|isEmpty(val): \ + val = "yes" + else: \ + val = $$qtConfGetNextCommandlineArg() + } + + !qtConfValidateValue($$opt, $$val): \ + return() + + qtConfCommandlineSetInput($$opt, $$val) +} + + +defineTest(qtConfCommandline_addString) { + opt = $${1} + val = $${2} + nextok = $${3} + isEmpty(val):$$nextok: val = $$qtConfGetNextCommandlineArg() + + # Note: Arguments which are variable assignments are legit here. + contains(val, "^-.*")|isEmpty(val) { + qtConfAddError("No value supplied to command line option '$$opt'.") + return() + } + + !qtConfValidateValue($$opt, $$val): \ + return() + + !isEmpty($${currentConfig}.commandline.options.$${opt}.name): \ + opt = $$eval($${currentConfig}.commandline.options.$${opt}.name) + + config.input.$$opt += $$val + export(config.input.$$opt) +} + +defineTest(qtConfCommandline_redo) { + !exists($$OUT_PWD/config.opt) { + qtConfAddError("No config.opt present - cannot redo configuration.") + return() + } + QMAKE_EXTRA_REDO_ARGS = $$cat($$OUT_PWD/config.opt, lines) + export(QMAKE_EXTRA_REDO_ARGS) # just for config.log + QMAKE_EXTRA_ARGS = $$QMAKE_EXTRA_REDO_ARGS $$QMAKE_EXTRA_ARGS + export(QMAKE_EXTRA_ARGS) + QMAKE_REDO_CONFIG = true + export(QMAKE_REDO_CONFIG) +} + +defineTest(qtConfParseCommandLine) { + customCalls = + for (cc, allConfigs) { + custom = $$eval($${cc}.commandline.custom) + + !isEmpty(custom) { + customCall = qtConfCommandline_$$custom + !defined($$customCall, test): \ + error("Custom command line callback '$$custom' is undefined.") + customCalls += $$customCall + } + } + + for (ever) { + c = $$qtConfGetNextCommandlineArg() + isEmpty(c): break() + + didCustomCall = false + for (customCall, customCalls) { + $${customCall}($$c) { + didCustomCall = true + break() + } + } + $$didCustomCall: \ + next() + + contains(c, "([A-Z_]+)=(.*)") { + opt = $$replace(c, "^([A-Z_]+)=(.*)", "\\1") + val = $$replace(c, "^([A-Z_]+)=(.*)", "\\2") + for (cc, allConfigs) { + var = $$eval($${cc}.commandline.assignments.$${opt}) + !isEmpty(var): \ + break() + } + isEmpty(var) { + qtConfAddError("Assigning unknown variable '$$opt' on command line.") + return() + } + config.input.$$var = $$val + export(config.input.$$var) + next() + } + + # parse out opt and val + nextok = false + contains(c, "^--?enable-(.*)") { + opt = $$replace(c, "^--?enable-(.*)", "\\1") + val = yes + } else: contains(c, "^--?(disable|no)-(.*)") { + opt = $$replace(c, "^--?(disable|no)-(.*)", "\\2") + val = no + } else: contains(c, "^--([^=]+)=(.*)") { + opt = $$replace(c, "^--([^=]+)=(.*)", "\\1") + val = $$replace(c, "^--([^=]+)=(.*)", "\\2") + } else: contains(c, "^--(.*)") { + opt = $$replace(c, "^--(.*)", "\\1") + val = + } else: contains(c, "^-(.*)") { + opt = $$replace(c, "^-(.*)", "\\1") + val = + nextok = true + for (cc, allConfigs) { + type = $$eval($${cc}.commandline.options.$${opt}) + !isEmpty(type): break() + type = $$eval($${cc}.commandline.options.$${opt}.type) + !isEmpty(type): break() + } + isEmpty(type):contains(opt, "(qt|system)-.*") { + val = $$replace(opt, "(qt|system)-(.*)", "\\1") + opt = $$replace(opt, "(qt|system)-(.*)", "\\2") + } + } else { + qtConfAddError("Invalid command line parameter '$$c'.") + return() + } + + for (cc, allConfigs) { + type = $$eval($${cc}.commandline.options.$${opt}) + isEmpty(type): \ + type = $$eval($${cc}.commandline.options.$${opt}.type) + isEmpty(type) { + # no match in the regular options, try matching the prefixes + for (p, $${cc}.commandline.prefix._KEYS_) { + e = "^-$${p}(.*)" + contains(c, $$e) { + opt = $$eval($${cc}.commandline.prefix.$${p}) + val = $$replace(c, $$e, "\\1") + nextok = true + type = "addString" + break() + } + } + } + !isEmpty(type) { + currentConfig = $$cc + break() + } + } + # handle builtin [-no]-feature-xxx + isEmpty(type):contains(opt, "feature-(.*)") { + opt ~= s,^feature-,, + found = false + for (cc, allConfigs) { + contains($${cc}.features._KEYS_, $$opt) { + found = true + break() + } + } + !$$found { + qtConfAddError("Enabling/Disabling unknown feature '$$opt'.") + return() + } + # this is a boolean enabling/disabling the corresponding feature + type = boolean + } + + isEmpty(type) { + qtConfAddError("Unknown command line option '$$c'.") + return() + } + + call = "qtConfCommandline_$${type}" + !defined($$call, test): \ + error("Command line option '$$c' has unknown type '$$type'.") + + # now that we have opt and value, process it + $${call}($$opt, $$val, $$nextok) + } +} + +defineReplace(qtConfToolchainSupportsFlag) { + test_out_dir = $$OUT_PWD/$$basename(QMAKE_CONFIG_TESTS_DIR) + test_cmd_base = "$$QMAKE_CD $$system_quote($$system_path($$test_out_dir)) &&" + + conftest = "int main() { return 0; }" + write_file("$$test_out_dir/conftest.cpp", conftest)|error() + + qtRunLoggedCommand("$$test_cmd_base $$QMAKE_CXX $${1} -o conftest-out conftest.cpp"): \ + return(true) + return(false) +} + +defineTest(qtConfTest_compilerSupportsFlag) { + flag = $$eval($${1}.flag) + + return($$qtConfToolchainSupportsFlag($$flag)) +} + +defineTest(qtConfTest_linkerSupportsFlag) { + flag = $$eval($${1}.flag) + + use_gold_linker: \ + LFLAGS = -fuse-ld=gold + + return($$qtConfToolchainSupportsFlag($$LFLAGS "-Wl,$$flag")) +} + +defineReplace(qtConfFindInPathList) { + for (dir, 2) { + exists("$$dir/$${1}"): \ + return("$$dir/$${1}") + } + return() +} + +defineReplace(qtConfFindInPath) { + ensurePathEnv() + return($$qtConfFindInPathList($$1, $$2 $$QMAKE_PATH_ENV)) +} + +defineReplace(qtConfPkgConfigEnv) { + env = + !isEmpty(PKG_CONFIG_SYSROOT_DIR): env = "$${SETENV_PFX}PKG_CONFIG_SYSROOT_DIR=$${PKG_CONFIG_SYSROOT_DIR}$${SETENV_SFX} " + !isEmpty(PKG_CONFIG_LIBDIR): env = "$$env$${SETENV_PFX}PKG_CONFIG_LIBDIR=$${PKG_CONFIG_LIBDIR}$${SETENV_SFX} " + return($$env) +} + +defineReplace(qtConfPkgConfig) { + host = $$1 + isEmpty(host): host = false + + $$host { + pkg_config = $$qtConfFindInPath("pkg-config") + } else { + pkg_config = "$$qtConfPkgConfigEnv()$$PKG_CONFIG_EXECUTABLE" + } + + return($$pkg_config) +} + +defineTest(qtConfPkgConfigPackageExists) { + isEmpty(1)|isEmpty(2): \ + return(false) + + !qtRunLoggedCommand("$${1} --exists --silence-errors $${2}"): \ + return(false) + + return(true) +} + +defineReplace(qtSystemQuote) { + args = + for (a, 1): \ + args += $$system_quote($$a) + return($$args) +} + +defineReplace(qtConfPrepareArgs) { + return($$qtSystemQuote($$split(1))) +} + +defineTest(qtConfSetupLibraries) { + asspfx = $${currentConfig}.commandline.assignments + for (l, $${currentConfig}.libraries._KEYS_) { + lpfx = $${currentConfig}.libraries.$${l} + # 'export' may be omitted, in which case it falls back to the library's name + !defined($${lpfx}.export, var) { + $${lpfx}.export = $$l + export($${lpfx}.export) + } + # 'export' may also be empty, but we need a derived identifier + alias = $$eval($${lpfx}.export) + isEmpty(alias): alias = $$l + $${lpfx}.alias = $$alias + export($${lpfx}.alias) + # make it easy to refer to the library by its export name. + $${currentConfig}.exports._KEYS_ += $$alias + $${currentConfig}.exports.$$alias += $$l + export($${currentConfig}.exports.$$alias) + isEmpty($${lpfx}.sources._KEYS_): \ + error("Library $$l defines no sources") + for (s, $${lpfx}.sources._KEYS_) { + spfx = $${lpfx}.sources.$${s} + # link back to parent object + $${spfx}.library = $$l + export($${spfx}.library) + # a plain string is transformed into a structure + isEmpty($${spfx}._KEYS_) { + $${spfx}.libs = $$eval($${spfx}) + export($${spfx}.libs) + } + # if the type is missing (implicitly in the case of plain strings), assume 'inline' + isEmpty($${spfx}.type) { + $${spfx}.type = inline + export($${spfx}.type) + } + } + } + $${currentConfig}.exports._KEYS_ = $$unique($${currentConfig}.exports._KEYS_) + export($${currentConfig}.exports._KEYS_) + + for (alias, $${currentConfig}.exports._KEYS_) { + ua = $$upper($$alias) + $${asspfx}._KEYS_ += \ + $${ua}_PREFIX $${ua}_INCDIR $${ua}_LIBDIR \ + $${ua}_LIBS $${ua}_LIBS_DEBUG $${ua}_LIBS_RELEASE + uapfx = $${asspfx}.$${ua} + $${uapfx}_PREFIX = $${alias}.prefix + $${uapfx}_INCDIR = $${alias}.incdir + $${uapfx}_LIBDIR = $${alias}.libdir + $${uapfx}_LIBS = $${alias}.libs + $${uapfx}_LIBS_DEBUG = $${alias}.libs.debug + $${uapfx}_LIBS_RELEASE = $${alias}.libs.release + export($${uapfx}_PREFIX) + export($${uapfx}_INCDIR) + export($${uapfx}_LIBDIR) + export($${uapfx}_LIBS) + export($${uapfx}_LIBS_DEBUG) + export($${uapfx}_LIBS_RELEASE) + } + export($${asspfx}._KEYS_) + + # reverse mapping for assignments on command line. + for (a, $${asspfx}._KEYS_) { + apfx = $${asspfx}.$${a} + ra = config.commandline.rev_assignments.$$eval($$apfx) + $$ra = $$a + export($$ra) + } +} + +# the library is specified inline in a 'libs' field. +# overrides from the command line are accepted. +defineTest(qtConfLibrary_inline) { + lib = $$eval($${1}.library) + !defined($${1}.libs, var):isEmpty($${1}.builds._KEYS_): \ + error("'inline' source in library '$$lib' specifies neither 'libs' nor 'builds'.") + + # if multiple libraries provide the same export, it makes sense + # to make them recognize the same input variables. + input = $$eval($${2}.alias) + + # build-specific direct libs. overwrites inline libs. + vars = + any = false + all = true + for (b, $$list(debug release)) { + iv = $${input}.libs.$${b} + vars += $$eval(config.commandline.rev_assignments.$${iv}) + defined(config.input.$${iv}, var) { + $${1}.builds.$${b} = $$eval(config.input.$${iv}) + export($${1}.builds.$${b}) + $${1}.builds._KEYS_ *= $${b} + any = true + } else { + all = false + } + } + $$any { + !$$all { + qtConfAddError("Either none or all of $$join(vars, ", ", [, ]) must be specified.") + return(false) + } + export($${1}.builds._KEYS_) + # we also reset the generic libs, to avoid surprises. + $${1}.libs = + export($${1}.libs) + } + + # direct libs. overwrites inline libs. + defined(config.input.$${input}.libs, var) { + $${1}.libs = $$eval(config.input.$${input}.libs) + export($${1}.libs) + } + + # prefix. prepends to (possibly overwritten) inline libs. + prefix = $$val_escape(config.input.$${input}.prefix) + !isEmpty(prefix) { + $${1}.includedir = $$prefix/include + export($${1}.includedir) + $${1}.libs = "-L$$prefix/lib $$eval($${1}.libs)" + export($${1}.libs) + } + + incdir = $$val_escape(config.input.$${input}.incdir) + !isEmpty(incdir) { + $${1}.includedir = $$incdir + export($${1}.includedir) + } + + libdir = $$val_escape(config.input.$${input}.libdir) + !isEmpty(libdir) { + $${1}.libs = "-L$$libdir $$eval($${1}.libs)" + export($${1}.libs) + } + + return(true) +} + +# the library is provided by the qmake spec. +# this source type cannot fail. +defineTest(qtConfLibrary_makeSpec) { + spec = $$eval($${1}.spec) + isEmpty(spec): \ + error("makeSpec source in library '$$eval($${1}.library)' does not specify 'spec'.") + + $${1}.includedir = "$$val_escape(QMAKE_INCDIR_$$spec)" + export($${1}.includedir) + libs = + for (l, QMAKE_LIBDIR_$$spec): \ + libs += -L$$l + libs += $$eval(QMAKE_LIBS_$$spec) + $${1}.libs = "$$val_escape(libs)" + export($${1}.libs) + + # the library definition is always in scope, so no point in exporting it. + $${1}.export = false + export($${1}.export) + + return(true) +} + +# the library is found via pkg-config. +defineTest(qtConfLibrary_pkgConfig) { + pkg_config = $$qtConfPkgConfig($$eval($${1}.host)) + isEmpty(pkg_config) { + qtLog("pkg-config use disabled globally.") + return(false) + } + args = $$qtConfPrepareArgs($$eval($${1}.args)) + + !qtConfPkgConfigPackageExists($$pkg_config, $$args) { + qtLog("pkg-config did not find package.") + return(false) + } + + qtRunLoggedCommand("$$pkg_config --modversion $$args", version)|return(false) + qtRunLoggedCommand("$$pkg_config --libs-only-L $$args", libpaths)|return(false) + qtRunLoggedCommand("$$pkg_config --libs-only-l $$args", libs)|return(false) + qtRunLoggedCommand("$$pkg_config --cflags $$args", $${1}.cflags)|return(false) + version ~= s/[^0-9.].*$// + $${1}.version = $$first(version) + export($${1}.version) + libpaths += $$libs + $${1}.libs = "$$libpaths" + export($${1}.libs) + return(true) +} + +defineTest(qtConfTest_getPkgConfigVariable) { + pkg_config = $$qtConfPkgConfig($$eval($${1}.host)) + isEmpty(pkg_config): \ + return(false) + args = $$qtConfPrepareArgs($$eval($${1}.pkg-config-args)) + + !qtConfPkgConfigPackageExists($$pkg_config, $$args): \ + return(false) + + variable = $$eval($${1}.pkg-config-variable) + qtRunLoggedCommand("$$pkg_config --variable=$$variable $$args", $${1}.value)|return(false) + export($${1}.value) + $${1}.cache += value + export($${1}.cache) + return(true) +} + +defineReplace(qtConfLibraryArgs) { + qmake_args = + libs = $$eval($${1}.libs) + !isEmpty(libs): \ + qmake_args += $$system_quote(LIBS += $$libs) + for (b, $${1}.builds._KEYS_): \ + qmake_args += $$system_quote(LIBS_$$upper($$b) += $$eval($${1}.builds.$${b})) + includedir = $$eval($${1}.includedir) + !isEmpty(includedir): \ + qmake_args += $$system_quote(INCLUDEPATH *= $$includedir) + cflags = $$eval($${1}.cflags) + !isEmpty(cflags): \ + qmake_args += $$system_quote(QMAKE_CFLAGS += $$cflags) $$system_quote(QMAKE_CXXFLAGS += $$cflags) + return($$qmake_args) +} + +defineTest(qtConfExportLibrary) { + lpfx = $${currentConfig}.libraries.$$1 + alias = $$eval($${lpfx}.alias) + $${currentConfig}.found.$$alias = $$1 + export($${currentConfig}.found.$$alias) + name = $$eval($${lpfx}.export) + isEmpty(name): return() + spfx = $${lpfx}.sources.$$eval($${lpfx}.source) + !$$qtConfEvaluate($$eval($${spfx}.export)): return() + + output = privatePro + + eval(libs = $$eval($${spfx}.libs)) + eval(cflags = $$eval($${spfx}.cflags)) + eval(includes = $$eval($${spfx}.includedir)) + + # Split $$cflags into stuff that goes into DEFINES, INCLUDEPATH, and other stuff. + defines = + ignored = + for (i, cflags) { + contains(i, "-I.*") { + i ~= s/^-I// + includes += $$i + } else: contains(i, "-D.*") { + i ~= s/^-D// + defines += $$i + } else { + # Sometimes, pkg-config files or *-config scripts include other flags + # we really don't need and shouldn't add (pg_config is really bad). + ignored += $$i + } + } + !isEmpty(ignored): \ + qtConfAddNote("Dropped compiler flags '$$ignored' when detecting library '$$name'.") + + NAME = $$upper($$name) + # LIBS is emitted even if empty, as this allows the library to be "seen". + qtConfOutputVar(assign, $$output, QMAKE_LIBS_$$NAME, $$libs) + for (b, $${spfx}.builds._KEYS_) { + eval(blibs = $$eval($${spfx}.builds.$${b})) + qtConfOutputVar(assign, $$output, QMAKE_LIBS_$${NAME}_$$upper($$b), $$blibs) + } + !isEmpty(defines): qtConfOutputVar(assign, $$output, QMAKE_DEFINES_$$NAME, $$defines) + !isEmpty(includes): qtConfOutputVar(assign, $$output, QMAKE_INCDIR_$$NAME, $$includes) + !isEmpty($${currentConfig}.module): \ + qtConfExtendVar($$output, "QT.$${currentModule}_private.libraries", $$name) +} + +defineTest(qtConfHandleLibrary) { + lpfx = $${currentConfig}.libraries.$$1 + defined($${lpfx}.result, var): return() + + alias = $$eval($${lpfx}.alias) + !isEmpty($${currentConfig}.found.$$alias) { + # this happening indicates a logic error in the conditions + # of the feature(s) referring to this library. + # note that this does not look across module boundaries, as + # multiple modules may know the same libraries; de-duplication + # happens via the cache (obviously, this assumes identical + # definitions and logic). + error("A library exporting '$$alias' was already found.") + } + + qtConfEnsureTestTypeDeps("library") + !qtConfTestPrepare_compile($$lpfx) { + $${lpfx}.result = false + export($${lpfx}.result) + return() + } + use_args = $$eval($${lpfx}.literal_args) + + qtConfLoadResult($${lpfx}, $$1) { + $$eval($${lpfx}.result): \ + qtConfExportLibrary($$1) + return() + } + + qtLogTestIntro($${lpfx}, "looking for library $${1}") + + result = false + for (s, $${lpfx}.sources._KEYS_) { + spfx = $${lpfx}.sources.$${s} + + t = $$eval($${spfx}.type) + call = qtConfLibrary_$$t + !defined($$call, test): \ + error("Library $${1} source $${s} has unknown type '$$t'") + + qtLog("Trying source $$s (type $$t) of library $${1} ...") + + cond = $$eval($${spfx}.condition) + !$$qtConfEvaluate($$cond) { + qtLog(" => source failed condition '$$cond'.") + next() + } + + !$${call}($$spfx, $$lpfx) { + qtLog(" => source produced no result.") + next() + } + + # if the library defines a test, use it to verify the source. + !isEmpty($${lpfx}.test)|!isEmpty($${lpfx}.test._KEYS_) { + $${lpfx}.literal_args = $$qtConfLibraryArgs($$spfx) $$use_args + $${lpfx}.host = $$eval($${spfx}.host) + !qtConfTest_compile($$lpfx) { + qtLog(" => source failed verification.") + next() + } + } + + qtLog(" => source accepted.") + + $${lpfx}.cache += source + for (v, $$list(libs includedir cflags version export)): \ + $${lpfx}.cache += sources.$${s}.$${v} + for (b, $${spfx}.builds._KEYS_): \ + $${lpfx}.cache += sources.$${s}.builds.$${b} + + $${lpfx}.source = $$s + export($${lpfx}.source) + + # immediately output the library as well. + qtConfExportLibrary($$1) + + result = true + break() + } + + qtLogTestResult($${lpfx}, $$result) + + $${lpfx}.result = $$result + export($${lpfx}.result) + qtConfSaveResult($${lpfx}, $$1) +} + +# This is a fake test type for the test dependency system. +defineTest(qtConfTest_library) { + error("The test type 'library' may not be instantiated.") +} + +defineTest(qtConfTestPrepare_compile) { + !isEmpty($${1}.use._KEYS_) { + uses = + for (k, $${1}.use._KEYS_) { + use = $$eval($${1}.use.$${k}.lib) + isEmpty(use): \ + error("'use' entry $$k in test $$1 lacks 'lib' field.") + !$$qtConfEvaluate($$eval($${1}.use.$${k}.condition)): \ + next() + uses += $$use + } + } else { + uses = $$split($${1}.use) + } + for (u, uses) { + libConfig = + exports = $$eval($${currentConfig}.exports.$$u) + !isEmpty(exports) { + # using a local library by exported name. + ru = $$eval($${currentConfig}.found.$$u) + !isEmpty(ru) { + # if it was already found, all is good. + u = $$ru + } else: count(exports, 1) { + # otherwise, if there is only one option, ensure it's resolved. + u = $$exports + qtConfHandleLibrary($$u) + } else { + # otherwise, verify that all options were resolved. + for (x, exports) { + isEmpty($${currentConfig}.libraries.$${x}.result) { + # the higher-level logic is in the features, which we cannot + # infer from here. so the only option is failing. + error("Test $$1 refers to yet unresolved library export '$$u'") + } + } + return(false) + } + libConfig = $$currentConfig + } else: contains($${currentConfig}.libraries._KEYS_, $$u) { + # using a local library by real name. this should be the exception. + qtConfHandleLibrary($$u) + libConfig = $$currentConfig + } else { + for (d, QMAKE_LIBRARY_DEPS) { + exports = $$eval($${d}.exports.$$u) + !isEmpty(exports) { + # using a foreign library by exported name. + # foreign libraries may be external (if they are from a different + # repository and the build is modular), and using these by real + # name is impossible. so for consistency, uses by real name are + # limited to local libraries. + ru = $$eval($${d}.found.$$u) + !isEmpty(ru) { + u = $$ru + libConfig = $$d + break() + } + for (x, exports) { + isEmpty($${d}.libraries.$${x}.result): \ + error("Test $$1 refers to unresolved library export '$$u' in '$$d'") + } + return(false) + } + } + } + isEmpty(libConfig) { + nu = $$upper($$u) + !defined(QMAKE_LIBS_$$nu, var): \ + error("Test $$1 tries to use undeclared library '$$u'") + # using an external library by exported name. + $${1}.literal_args += $$system_quote(QMAKE_USE += $$u) + } else { + lpfx = $${libConfig}.libraries.$${u} + isEmpty($${lpfx}.source): \ + return(false) + $${1}.literal_args += $$qtConfLibraryArgs($${lpfx}.sources.$$eval($${lpfx}.source)) + } + } + export($${1}.literal_args) + return(true) +} + +defineTest(qtConfPrepareCompileTestSource) { + test_dir = $$2 + + # Create source code + contents = "/* Generated by configure */" + # Custom code before includes + for (ent, $$qtConfScalarOrList($${1}.head)): \ + contents += $$ent + # Includes + for (ent, $$qtConfScalarOrList($${1}.include)): \ + contents += "$${LITERAL_HASH}include <$$ent>" + # Custom code after includes + for (ent, $$qtConfScalarOrList($${1}.tail)): \ + contents += $$ent + # And finally the custom code inside main() + contents += \ + "int main(int argc, char **argv)" \ + "{" \ + " (void)argc; (void)argv;" \ + " /* BEGIN TEST: */" + for (ent, $$qtConfScalarOrList($${1}.main)): \ + contents += " $$ent" + contents += \ + " /* END TEST */" \ + " return 0;" \ + "}" + write_file($$test_dir/main.cpp, contents)|error() + + # Create stub .pro file + contents = "SOURCES = main.cpp" + # Custom project code + for (ent, $$qtConfScalarOrList($${1}.qmake)): \ + contents += $$ent + write_file($$test_dir/$$basename(test_dir).pro, contents)|error() +} + +defineTest(qtConfTest_compile) { + test = $$eval($${1}.test) + host = $$eval($${1}.host) + isEmpty(host): host = false + + test_base_out_dir = $$OUT_PWD/$$basename(QMAKE_CONFIG_TESTS_DIR) + isEmpty(test) { + test_dir = $$test_base_out_dir/$$section(1, ".", -1) + test_out_dir = $$test_dir + qtConfPrepareCompileTestSource($${1}.test, $$test_dir) + } else { + test_dir = $$QMAKE_CONFIG_TESTS_DIR/$$test + test_out_dir = $$test_base_out_dir/$$test + !isEmpty($${1}.pro): \ + test_dir = $$test_dir/$$eval($${1}.pro) + } + test_cmd_base = "$$QMAKE_CD $$system_quote($$system_path($$test_out_dir)) &&" + + qmake_args = $$qtConfPkgConfigEnv()$$system_quote($$system_path($$QMAKE_QMAKE)) + !isEmpty(QMAKE_QTCONF): \ + qmake_args += -qtconf $$system_quote($$QMAKE_QTCONF) + + # Disable qmake features which are typically counterproductive for tests + qmake_args += "\"CONFIG -= qt debug_and_release app_bundle lib_bundle\"" + + # allow tests to behave differently depending on the type of library + # being built (shared/static). e.g. see config.tests/unix/icu + shared: \ + qmake_configs = "shared" + else: \ + qmake_configs = "static" + + use_gold_linker: \ + qmake_configs += "use_gold_linker" + + # disable warnings from the builds, since they're just noise at this point. + qmake_configs += "warn_off" + + # add console to the CONFIG variable when running the tests, so that they + # can work with a regular main() entry point on Windows. + qmake_configs += "console" + + # for platforms with multiple architectures (macOS, iOS, tvOS, watchOS), + # make sure tests are only built for a single architecture + qmake_configs += "single_arch" + + qmake_args += "\"CONFIG += $$qmake_configs\"" + + !$$host|!cross_compile { + # On WinRT we need to change the entry point as we cannot create windows + # applications + winrt: \ + qmake_args += " \"QMAKE_LFLAGS += /ENTRY:main\"" + + # add compiler flags, these are set for the target and should not be applied to host tests + !isEmpty(EXTRA_DEFINES): \ + qmake_args += $$system_quote(DEFINES += $$val_escape(EXTRA_DEFINES)) + !isEmpty(EXTRA_LIBDIR) \ + qmake_args += $$system_quote(QMAKE_LIBDIR += $$val_escape(EXTRA_LIBDIR)) + !isEmpty(EXTRA_FRAMEWORKPATH) \ + qmake_args += $$system_quote(QMAKE_FRAMEWORKPATH += $$val_escape(EXTRA_FRAMEWORKPATH)) + !isEmpty(EXTRA_INCLUDEPATH): \ + qmake_args += $$system_quote(INCLUDEPATH += $$val_escape(EXTRA_INCLUDEPATH)) + qmake_args += $$EXTRA_QMAKE_ARGS + } + + # make sure to make this the last override (because of -early) + cross_compile { + # must be done before loading default_pre.prf. + qmake_args += -early "\"CONFIG += cross_compile\"" + } + + # Clean up after previous run + exists($$test_out_dir/Makefile): \ + QMAKE_MAKE = "$$QMAKE_MAKE clean && $$QMAKE_MAKE" + + mkpath($$test_out_dir)|error() + write_file($$test_base_out_dir/.qmake.cache)|error() + + # add possible command line args + qmake_args += $$qtConfPrepareArgs($$eval($${1}.args)) $$eval($${1}.literal_args) + + qtRunLoggedCommand("$$test_cmd_base $$qmake_args $$system_quote($$test_dir)") { + qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE"): \ + return(true) + } + + return(false) +} + +defineTest(qtConfTest_verifySpec) { + qtConfTest_compile($$1): return(true) + qtConfFatalError("Cannot compile a minimal program. The toolchain or QMakeSpec is broken.", log) +} + +defineTest(qtConfTest_files) { + for(i, $${1}.files._KEYS_) { + f = $$eval($${1}.files.$${i}) + qtLog("Searching for file $${f}.") + contains(f, ".*\.h") { + file = $$qtConfFindInPathList($$f, $$EXTRA_INCLUDEPATH $$QMAKE_DEFAULT_INCDIRS) + } else: contains(f, ".*\.(lib|so|a)") { + file = $$qtConfFindInPathList($$f, $$EXTRA_LIBDIR $$QMAKE_DEFAULT_LIBDIRS) + } else { + # assume we're looking for an executable + file = $$qtConfFindInPath($$f, $$EXTRA_PATH) + } + isEmpty(file) { + qtLog(" Not found."); + return(false) + } + qtLog(" Found at $${file}.") + } + return(true) +} + +defineTest(logn) { + log("$${1}$$escape_expand(\\n)") +} + +defineTest(qtLogTestIntro) { + label = $$eval($${1}.label) + isEmpty(label): return() + + log("Checking for $${label}... ") + $$QMAKE_CONFIG_VERBOSE: log("$$escape_expand(\\n)") + write_file($$QMAKE_CONFIG_LOG, 2, append) +} + +defineTest(qtLogTestResult) { + isEmpty($${1}.label): return() + + !isEmpty($${1}.log) { + field = $$eval($${1}.log) + log_msg = $$eval($${1}.$$field) + msg = "test $$1 gave result $$log_msg" + } else: $${2} { + log_msg = yes + msg = "test $$1 succeeded" + } else { + log_msg = no + msg = "test $$1 FAILED" + } + $$QMAKE_CONFIG_VERBOSE: log_msg = $$msg + logn("$$log_msg") + write_file($$QMAKE_CONFIG_LOG, msg, append) +} + +defineTest(qtConfSaveResult) { + equals($${1}.cache, -): \ + return() + keys = result $$eval($${1}.cache) + cont = "cache.$${2}._KEYS_ = $$keys" + cache.$${2}._KEYS_ = $$keys + export(cache.$${2}._KEYS_) + for (k, keys) { + cont += "cache.$${2}.$${k} = $$val_escape($${1}.$${k})" + cache.$${2}.$${k} = $$eval($${1}.$${k}) + export(cache.$${2}.$${k}) + } + write_file($$QMAKE_CONFIG_CACHE, cont, append)|error() +} + +defineTest(qtConfLoadResult) { + equals(QMAKE_CONFIG_CACHE_USE, none): \ + return(false) + isEmpty(cache.$${2}._KEYS_): \ + return(false) + equals(QMAKE_CONFIG_CACHE_USE, positive):!$$eval(cache.$${2}.result): \ + return(false) + for (k, cache.$${2}._KEYS_) { + $${1}.$${k} = $$eval(cache.$${2}.$${k}) + export($${1}.$${k}) + } + return(true) +} + +defineTest(qtConfIsBoolean) { + equals(1, "true")|equals(1, "false"): \ + return(true) + return(false) +} + +defineTest(qtConfSetupTestTypeDeps) { + for (tt, $${currentConfig}.testTypeDependencies._KEYS_) { + !defined(qtConfTest_$${tt}, test): \ + error("Declaring dependency for undefined test type '$$tt'.") + for (f, $${currentConfig}.testTypeDependencies.$${tt}._KEYS_) { + feature = $$eval($${currentConfig}.testTypeDependencies.$${tt}.$${f}) + isEmpty($${currentConfig}.features.$${feature}._KEYS_): \ + error("Test type '$$tt' depends on undefined feature '$$feature'.") + } + } + # Test type aliasing means that one test type's callback is called by + # another test type's callback. Put differently, one callback forwards + # the call to another one. The former representation is more natural + # (and concise) to write, while the latter is more efficient to process. + # Hence, this function inverts the mapping. + for (tt, $${currentConfig}.testTypeAliases._KEYS_) { + !defined(qtConfTest_$${tt}, test): \ + error("Aliasing undefined test type '$$tt'.") + for (tta, $${currentConfig}.testTypeAliases.$${tt}._KEYS_) { + type = $$eval($${currentConfig}.testTypeAliases.$${tt}.$${tta}) + !defined(qtConfTest_$${type}, test): \ + error("Aliasing '$$tt' to undefined test type '$$type'.") + $${currentConfig}.testTypeForwards.$${type} += $$tt + export($${currentConfig}.testTypeForwards.$${type}) + } + } +} + +defineTest(qtConfEnsureTestTypeDeps) { + depsn = $${currentConfig}.testTypeDependencies.$${1}._KEYS_ + !isEmpty($$depsn) { + for (dep, $$depsn) { + feature = $$eval($${currentConfig}.testTypeDependencies.$${1}.$${dep}) + !qtConfCheckFeature($$feature): \ + error("Test type '$$1' depends on non-emitted feature $${feature}.") + } + $$depsn = + export($$depsn) + } + fwdsn = $${currentConfig}.testTypeForwards.$${1} + !isEmpty($$fwdsn) { + for (fwd, $$fwdsn): \ + qtConfEnsureTestTypeDeps($$fwd) + $$fwdsn = + export($$fwdsn) + } +} + +defineTest(qtRunSingleTest) { + tpfx = $${currentConfig}.tests.$${1} + defined($${tpfx}.result, var): \ + return() + + type = $$eval($${tpfx}.type) + call = "qtConfTest_$$type" + !defined($$call, test): \ + error("Configure test $${1} refers to nonexistent type $$type") + + qtConfEnsureTestTypeDeps($$type) + + preCall = "qtConfTestPrepare_$$type" + defined($$preCall, test):!$${preCall}($${tpfx}) { + $${tpfx}.result = false + export($${tpfx}.result) + # don't cache the result; the pre-deps have their own caches. + return() + } + + # note: we do this only after resolving the dependencies and the + # preparation (which may resolve libraries), so that caching does + # not alter the execution order (and thus the output). + qtConfLoadResult($${tpfx}, $$1): \ + return() + + qtLogTestIntro($${tpfx}, "executing config test $${1}") + + result = false + $${call}($${tpfx}): result = true + + qtLogTestResult($${tpfx}, $$result) + + $${tpfx}.result = $$result + export($${tpfx}.result) + qtConfSaveResult($${tpfx}, $$1) +} + +defineTest(qtConfHaveModule) { + module = $$replace(1, -, _) + !isEmpty(QT.$${module}.skip):$$eval(QT.$${module}.skip): \ + return(false) + !isEmpty(QT.$${module}.name): \ + return(true) + return(false) +} + +defineReplace(qtConfEvaluate) { + isEmpty(1): return(true) + + 1 ~= s/$$escape_expand(\\t)/ /g + 1 ~= s/$$escape_expand(\\r)//g + 1 ~= s/$$escape_expand(\\n) */ /g + expr = $${1} + expr ~= s/&&/ && /g + expr ~= s/\|\|/ || /g + expr ~= s/!/ ! /g + expr ~= s/\\(/ ( /g + expr ~= s/\\)/ ) /g + expr ~= s/ *== */==/g + expr ~= s/ *! = */!=/g + expr_list = $$eval($$list($$expr)) + return($$qtConfEvaluateSubExpression($${1}, $$expr_list, 0)) +} + +defineReplace(qtConfEvaluateSingleExpression) { + e = $${2} + + equals(e, true) { + result = true + } else: equals(e, false) { + result = false + } else: contains(e, "^[0-9]+$") { + # numbers + result = $$e + } else: contains(e, "^'.*'$") { + # quoted literals + result = $$replace(e, "^'(.*)'$", "\\1") + } else: contains(e, "^tests\..*") { + !qt_conf_tests_allowed: \ + error("Expression '$${1}' refers to a test, which is not allowed at this stage of configuring.") + test = $$section(e, ".", 1, 1) + var = $$section(e, ".", 2, -1) + isEmpty(var): \ + var = result + !contains($${currentConfig}.tests._KEYS_, $$test): \ + error("Unknown test object $${test} in expression '$${1}'.") + qtRunSingleTest($$test) + result = $$eval($${currentConfig}.tests.$${test}.$${var}) + } else: contains(e, "^libs\..*") { + !qt_conf_tests_allowed: \ + error("Expression '$${1}' refers to a library, which is not allowed at this stage of configuring.") + lib = $$section(e, ".", 1, 1) + var = $$section(e, ".", 2, -1) + isEmpty(var): \ + var = result + !contains($${currentConfig}.libraries._KEYS_, $$lib): \ + error("Unknown library object $${lib} in expression '$${1}'.") + qtConfHandleLibrary($$lib) + !defined($${currentConfig}.libraries.$${lib}.$${var}, var): \ + var = sources.$$eval($${currentConfig}.libraries.$${lib}.source).$$var + result = $$eval($${currentConfig}.libraries.$${lib}.$${var}) + } else: contains(e, "^features\..*") { + feature = $$section(e, ".", 1, 1) + var = $$section(e, ".", 2, -1) + isEmpty(var): \ + var = available + !contains($${currentConfig}.features._KEYS_, $$feature) { + # this is basically a copy of what qtConfig() in qt_build_config.prf + # does, but we produce a nicer error message. + for (module, QMAKE_CONFIG_DEPS) { + contains(QT.$${module}.enabled_features, $$feature): \ + result = true + else: contains(QT.$${module}.disabled_features, $$feature): \ + result = false + else: \ + next() + !equals(var, available): \ + error("Expression '$$1' is accessing field '$$var' of non-local feature $${feature}.") + return($$result) + } + error("Unknown feature object $${feature} in expression '$${1}'.") + } + !qtConfCheckFeature($$feature): \ + error("Expression '$$1' is accessing non-emitted feature $${feature}.") + result = $$eval($${currentConfig}.features.$${feature}.$${var}) + } else: contains(e, "^config\..*") { + var = $$replace(e, "^config\.", "") + result = false + contains(CONFIG, $$var): result = true + } else: contains(e, "^module\..*") { + var = $$replace(e, "^module\.", "") + result = false + qtConfHaveModule($$var): result = true + } else: contains(e, "^arch\..*") { + var = $$replace(e, "^arch\.", "") + result = false + isEmpty(QT_ARCH): \ + qtConfCheckFeature(architecture) + contains(QT_ARCH, $$var): result = true + } else: contains(e, "^input\..*") { + result = $$eval(config.$$e) + } else: contains(e, "^var\..*") { + var = $$replace(e, "^var\.", "") + result = $$eval($$var) + } else: contains(e, "^call\..*") { + call = $$replace(e, "^call\.", "qtConfFunc_") + !defined($$call, replace): \ + error("Call $$call referenced in expression '$${1}' does not exist") + eval(result = \$\$"$$call"()) + } else { + error("Unrecognized token $$e in expression '$${1}'") + } + return($$result) +} + +defineReplace(qtConfEvaluateSubExpression) { + expr_list = $${2} + result = true + negate = false + runSubExpression = false + nesting_level = 0 + for (n, $${3}..$$num_add($$size(expr_list), -1)) { + e = $$member(expr_list, $$n) + $$runSubExpression { + runSubExpression = false + result = $$qtConfEvaluateSubExpression($${1}, $$expr_list, $$n) + } else: isEqual(e, "(") { + isEqual(nesting_level, 0): runSubExpression = true + nesting_level = $$num_add($$nesting_level, 1) + next() + } else: isEqual(e, ")") { + nesting_level = $$num_add($$nesting_level, -1) + lessThan(nesting_level, 0): break() + next() + } else: greaterThan(nesting_level, 0) { + next() + } else: isEqual(e, "!") { + negate = true + next() + } else: isEqual(e, "&&") { + !qtConfIsBoolean($$result): \ + error("Left hand side of && is non-boolean value '$$result' in expression '$${1}'") + !$$result: return(false) + } else: isEqual(e, "||") { + !qtConfIsBoolean($$result): \ + error("Left hand side of || is non-boolean value '$$result' in expression '$${1}'") + $$result: return(true) + } else { + contains(e, ".*==.*") { + lhs = $$qtConfEvaluateSingleExpression($${1}, $$replace(e, "==.*", "")) + rhs = $$qtConfEvaluateSingleExpression($${1}, $$replace(e, ".*==", "")) + result = false + equals(lhs, $$rhs): result = true + } else: contains(e, ".*!=.*") { + lhs = $$qtConfEvaluateSingleExpression($${1}, $$replace(e, "!=.*", "")) + rhs = $$qtConfEvaluateSingleExpression($${1}, $$replace(e, ".*!=", "")) + result = false + !equals(lhs, $$rhs): result = true + } else { + result = $$qtConfEvaluateSingleExpression($${1}, $$e) + } + } + $$negate { + !qtConfIsBoolean($$result): \ + error("Attempting to negate a non-boolean value '$$result' in expression '$${1}'") + $$result: \ + result = false + else: \ + result = true + negate = false + } + } + return($$result) +} + +defineReplace(qtIsFeatureEnabled) { + enable = $$eval($${currentConfig}.features.$${1}.enable) + !isEmpty(enable) { + $$qtConfEvaluate($$enable): \ + return(true) + } else { + equals(config.input.$${1}, "yes"): \ + return(true) + } + + return(false) +} + +defineReplace(qtIsFeatureDisabled) { + disable = $$eval($${currentConfig}.features.$${1}.disable) + !isEmpty(disable) { + $$qtConfEvaluate($$disable): \ + return(true) + } else { + equals(config.input.$${1}, "no"): \ + return(true) + } + + return(false) +} + +defineReplace(qtConfCheckSingleCondition) { + result = $$qtConfEvaluate($$2) + + !qtConfIsBoolean($$result): \ + error("Evaluation of condition '$$2' yielded non-boolean value '$$result' in feature '$${1}'.") + + !$$result { + $${3} { + qtConfAddError("Feature '$${1}' was enabled, but the pre-condition '$$2' failed.", log) + $$result = true + } + } + return($$result) +} + +defineTest(qtConfCheckFeature) { + fpfx = $${currentConfig}.features.$${1} + + available = $$eval($${fpfx}.available) + !isEmpty(available): return(true) + + # skip features that will not get emitted anyway + emitIf = $$qtConfEvaluate($$eval($${fpfx}.emitIf)) + enabled = $$qtIsFeatureEnabled($$1) + disabled = $$qtIsFeatureDisabled($$1) + + !$$emitIf { + $$enabled|$$disabled: \ + qtConfAddWarning("Feature $${1} is insignificant in this configuration, ignoring related command line option(s).") + return(false) + } + + $$disabled { + result = false + } else: !$$enabled:!$$qtConfEvaluate($$eval($${fpfx}.autoDetect)) { + # feature not auto-detected and not explicitly enabled + result = false + } else { + result = true + for (condition, $$qtConfScalarOrList($${fpfx}.condition)) { + result = $$qtConfCheckSingleCondition($$1, $$condition, $$enabled) + !$$result: break() + } + } + $${fpfx}.available = $$result + export($${fpfx}.available) + + for (i, $${fpfx}.output._KEYS_): \ + qtConfProcessOneOutput($${1}, $$i) + + return(true) +} + +defineTest(qtConfCheckModuleCondition) { + QT.$${currentModule}.skip = false + !$$qtConfEvaluate($$eval($${currentConfig}.condition)): \ + QT.$${currentModule}.skip = true + export(QT.$${currentModule}.skip) + + # ensure qtConfHaveModule() works + QT.$${currentModule}.name = - + export(QT.$${currentModule}.name) +} + + +defineTest(qtConfProcessFeatures) { + for (feature, $${currentConfig}.features._KEYS_): \ + qtConfCheckFeature($$feature) +} + +# +# reporting +# + +defineReplace(qtConfPadCols) { + pad = $$num_add($$str_size($$2), -$$str_size($${1})) + lessThan(pad, 0): pad = 0 + return("$$1 $$str_member($$2, 0, $$pad) $$3") +} + +defineTest(qtConfReportPadded) { + qtConfAddReport($$qtConfPadCols($$1, "........................................", $$2)) +} + +defineReplace(qtConfCollectFeatures) { + l = + for (feature, $$list($${1})) { + $$eval($${currentConfig}.features.$${feature}.available): \ + l += $$eval($${currentConfig}.features.$${feature}.label) + } + + isEmpty(l): return("") + return($$join(l, ' ')) +} + +defineTest(qtConfReport_featureList) { + qtConfReportPadded($${1}, $$qtConfCollectFeatures($${2})) +} + +defineReplace(qtConfFindFirstAvailableFeature) { + for (feature, $$list($${1})) { + isEmpty($${currentConfig}.features.$${feature}._KEYS_): \ + error("Asking for a report on undefined feature $${2}.") + $$eval($${currentConfig}.features.$${feature}.available): \ + return($$eval($${currentConfig}.features.$${feature}.label)) + } + + return("") +} + +defineTest(qtConfReport_firstAvailableFeature) { + qtConfReportPadded($${1}, $$qtConfFindFirstAvailableFeature($${2})) +} + +defineTest(qtConfReport_feature) { + !contains($${currentConfig}.features._KEYS_, $$2): \ + error("Asking for a report on undefined feature $${2}.") + + # hide report for not emitted features + isEmpty($${currentConfig}.features.$${2}.available): \ + return() + + $$eval($${currentConfig}.features.$${2}.available) { + result = "yes" + !isEmpty(3): result = "$${3}" + } else { + result = "no" + !isEmpty(4): result = "$${4}" + } + + text = $$eval($${currentConfig}.features.$${2}.label) + + qtConfReportPadded($${1}$$text, $$result) +} + +defineTest(qtConfReport_note) { + qtConfAddNote($${1}) +} + +defineTest(qtConfReport_warning) { + qtConfAddWarning($${1}) +} + +defineTest(qtConfReport_error) { + qtConfAddError($${1}, log) +} + +defineTest(qtConfReport_fatal) { + qtConfFatalError($${1}) +} + +defineTest(qtConfCreateReportRecurse) { + equals(2, false) { + indent = "" + recurse = false + } else { + indent = $${2} + recurse = true + } + + keys = $$eval($${1}._KEYS_) + for (n, keys) { + entry = $${1}.$$n + subKeys = $$eval($${entry}._KEYS_) + contains(subKeys, condition) { + condition = $$eval($${entry}.condition) + r = $$qtConfEvaluate($$condition) + !qtConfIsBoolean($$r): \ + error("Evaluation of condition '$$condition' in report entry $${entry} yielded non-boolean value '$$r'.") + !$$r: next() + } + contains(subKeys, "section") { + !$$recurse: \ + error("Report type 'section' is not allowed in '$$1'.") + section = $$eval($${entry}.section) + qtConfAddReport("$$indent$$section:") + qtConfCreateReportRecurse("$${entry}.entries", "$$indent ") + } else: !isEmpty($${entry}) { + feature = $$eval($${entry}) + qtConfReport_feature($$indent, $$feature) + } else { + text = $$eval($${entry}.message) + isEmpty($${entry}.type): \ + error("Report entry $${entry} doesn't define a type.") + r = "qtConfReport_$$eval($${entry}.type)" + !defined($$r, test): \ + error("Undefined report type $$eval($${entry}.type) used in report entry $${entry}.") + args = $$eval($${entry}.args) + $${r}($$indent$${text}, $$args) + } + } +} + +defineTest(qtConfProcessEarlyChecks) { + qtConfCreateReportRecurse($${currentConfig}.earlyReport, false) +} + +defineTest(qtConfCreateReport) { + qtConfCreateReportRecurse($${currentConfig}.report, false) +} + +defineTest(qtConfCreateSummary) { + qtConfCreateReportRecurse($${currentConfig}.summary, "") +} + +defineTest(qtConfPrintReport) { + blocks = \ + "$$join(QT_CONFIGURE_REPORT, $$escape_expand(\\n))" \ + "$$join(QT_CONFIGURE_NOTES, $$escape_expand(\\n\\n))" \ + "$$join(QT_CONFIGURE_WARNINGS, $$escape_expand(\\n\\n))" + + !isEmpty(QT_CONFIGURE_ERRORS) { + blocks += "$$join(QT_CONFIGURE_ERRORS, $$escape_expand(\\n\\n))" + mention_config_log:!$$QMAKE_CONFIG_VERBOSE: \ + blocks += "Check config.log for details." + } + blocks = "$$join(blocks, $$escape_expand(\\n\\n))" + logn($$blocks) + !isEmpty(QT_CONFIGURE_ERRORS):!equals(config.input.continue, yes): \ + error() + write_file($$OUT_PWD/config.summary, blocks)|error() +} + +defineTest(qtConfCheckErrors) { + !isEmpty(QT_CONFIGURE_ERRORS):!equals(config.input.continue, yes): \ + qtConfPrintReport() +} + +# +# output generation +# + +# qtConfOutputVar(modifier, output, name, value) +defineTest(qtConfOutputVar) { + modifier = $$1 + output = $$2 + name = $$3 + value = $$val_escape(4) + + defined($${currentConfig}.output.$${output}.assign.$${name}, var): \ + error("Trying to overwrite assigned variable '$$name' in '$$output' using modifier '$$modifier'.") + + equals(modifier, assign) { + !isEmpty($${currentConfig}.output.$${output}.append.$${name})|!isEmpty($${currentConfig}.output.$${output}.remove.$${name}): \ + error("Trying to assign variable '$$name' in '$$output', which has already appended or removed parts.") + $${currentConfig}.output.$${output}.assign.$${name} = $$value + } else: equals(modifier, append) { + contains($${currentConfig}.output.$${output}.remove.$${name}, $$value): \ + error("Trying to append removed '$$value' to variable '$$name' in '$$output'.") + $${currentConfig}.output.$${output}.append.$${name} += $$value + } else: equals(modifier, remove) { + contains($${currentConfig}.output.$${output}.append.$${name}, $$value): \ + error("Trying to remove appended '$$value' to variable '$$name' in '$$output'.") + $${currentConfig}.output.$${output}.remove.$${name} += $$value + } else { + error("Invalid modifier '$$modifier' passed to qtConfOutputVar.") + } + $${currentConfig}.output.$${output}.$${modifier}._KEYS_ *= $${name} + export($${currentConfig}.output.$${output}.$${modifier}.$${name}) + export($${currentConfig}.output.$${output}.$${modifier}._KEYS_) +} + +# qtConfExtendVar(output, name, value) +defineTest(qtConfExtendVar) { + output = $$1 + name = $$2 + value = $$val_escape(3) + + !defined($${currentConfig}.output.$${output}.assign.$${name}, var): \ + error("Trying to extend undefined variable '$$name' in '$$output'.") + + $${currentConfig}.output.$${output}.assign.$${name} += $$value + export($${currentConfig}.output.$${output}.assign.$${name}) +} + +defineTest(qtConfOutputVarHelper) { + !isEmpty($${2}.public):$$eval($${2}.public) { + output = "publicPro" + } else { + output = "privatePro" + } + + negative = $$eval($${2}.negative) + isEmpty(negative): negative = false + equals(3, $$negative): return() + + name = $$eval($${2}.name) + isEmpty(name): \ + error("Output type 'var$$title($$1)' used in feature '$$eval($${2}.feature)' without a 'name' entry.") + + value = $$qtConfEvaluate($$eval($${2}.value)) + !isEmpty($${2}.eval):$$qtConfEvaluate($$eval($${2}.eval)): \ + eval(value = $$value) + qtConfOutputVar($$1, $$output, $$name, $$value) + equals(output, "publicPro"):!isEmpty($${currentConfig}.module): \ + qtConfExtendVar($$output, "QT.$${currentModule}.exports", $$name) +} + +defineTest(qtConfOutput_varAssign) { + qtConfOutputVarHelper(assign, $$1, $$2) +} + +defineTest(qtConfOutput_varAppend) { + qtConfOutputVarHelper(append, $$1, $$2) +} + +defineTest(qtConfOutput_varRemove) { + qtConfOutputVarHelper(remove, $$1, $$2) +} + +defineTest(qtConfOutputConfigVar) { + pro = $$3 + var = $$4 + modular = $$5 + + negative = $$eval($${1}.negative) + isEmpty(negative): negative = false + equals(2, $$negative): return() + + val = $$eval($${1}.name) + isEmpty(val) { + val = $$eval($${1}.feature) + $$negative: val = no-$$val + } + + isEmpty($${currentConfig}.module)|!$$modular: \ + qtConfOutputVar(append, $$pro, $$var, $$val) + else: \ + qtConfExtendVar($$pro, "QT.$${currentModule}.$$var", $$val) +} + +defineTest(qtConfOutput_publicQtConfig) { + qtConfOutputConfigVar($$1, $$2, "publicPro", "QT_CONFIG", true) +} + +defineTest(qtConfOutput_publicConfig) { + !isEmpty($${currentConfig}.module): \ + error("Cannot use output type 'publicConfig' in module-local feature '$$eval($${1}.feature)'.") + qtConfOutputConfigVar($$1, $$2, "publicPro", "CONFIG", false) +} + +defineTest(qtConfOutput_privateConfig) { + qtConfOutputConfigVar($$1, $$2, "privatePro", "CONFIG", false) +} + +defineTest(qtConfOutputSetDefine) { + $${currentConfig}.output.$${1}.$${2} = $${3} + $${currentConfig}.output.$${1}._KEYS_ *= $${2} + export($${currentConfig}.output.$${1}.$${2}) + export($${currentConfig}.output.$${1}._KEYS_) +} + +defineTest(qtConfOutput_define) { + output = publicHeader + define = $$eval($${1}.name) + value = $$qtConfEvaluate($$eval($${1}.value)) + isEmpty(define): \ + error("Output type 'define' used in feature '$$eval($${1}.feature)' without a 'name' entry.") + + negative = $$eval($${1}.negative) + isEmpty(negative): negative = false + equals(2, $$negative): return() + + qtConfOutputSetDefine($$output, $$define, $$value) +} + +defineTest(qtConfOutput_feature) { + name = "$$eval($${1}.name)" + isEmpty(name): \ + name = $$eval($${1}.feature) + + $${2} { + isEmpty($${currentConfig}.module): \ + qtConfOutputVar(append, "publicPro", "QT_CONFIG", $$name) + else: \ + qtConfExtendVar("publicPro", "QT.$${currentModule}.QT_CONFIG", $$name) + } else { + f = $$upper($$replace(name, -, _)) + qtConfOutputSetDefine("publicHeader", "QT_NO_$$f") + } +} + +defineTest(qtConfSetModuleName) { + currentModule = $$eval($${currentConfig}.module) + isEmpty(currentModule): \ + currentModule = global + export(currentModule) +} + +defineTest(qtConfSetupModuleOutputs) { + qtConfOutputVar(assign, "publicPro", "QT.$${currentModule}.enabled_features", ) + qtConfOutputVar(assign, "publicPro", "QT.$${currentModule}.disabled_features", ) + qtConfOutputVar(assign, "privatePro", "QT.$${currentModule}_private.enabled_features", ) + qtConfOutputVar(assign, "privatePro", "QT.$${currentModule}_private.disabled_features", ) + !isEmpty($${currentConfig}.module) { + qtConfOutputVar(assign, "publicPro", "QT.$${currentModule}.QT_CONFIG", ) + qtConfOutputVar(assign, "publicPro", "QT.$${currentModule}.exports", ) + qtConfOutputVar(assign, "privatePro", "QT.$${currentModule}_private.libraries", ) + } +} + +defineTest(qtConfOutput_publicFeature) { + name = "$$eval($${1}.name)" + isEmpty(name): \ + name = $$eval($${1}.feature) + feature = $$replace(name, [-+.], _) + + $${2} { + qtConfExtendVar("publicPro", "QT.$${currentModule}.enabled_features", $$name) + QT.$${currentModule}.enabled_features += $$name + export(QT.$${currentModule}.enabled_features) + qtConfOutputSetDefine("publicHeader", "QT_FEATURE_$$feature", 1) + } else { + qtConfExtendVar("publicPro", "QT.$${currentModule}.disabled_features", $$name) + QT.$${currentModule}.disabled_features += $$name + export(QT.$${currentModule}.disabled_features) + qtConfOutputSetDefine("publicHeader", "QT_FEATURE_$$feature", -1) + } +} + +defineTest(qtConfOutput_privateFeature) { + name = "$$eval($${1}.name)" + isEmpty(name): \ + name = $$eval($${1}.feature) + feature = $$replace(name, [-+.], _) + + $${2} { + qtConfExtendVar("privatePro", "QT.$${currentModule}_private.enabled_features", $$name) + QT.$${currentModule}_private.enabled_features += $$name + export(QT.$${currentModule}_private.enabled_features) + qtConfOutputSetDefine("privateHeader", "QT_FEATURE_$$feature", 1) + } else { + qtConfExtendVar("privatePro", "QT.$${currentModule}_private.disabled_features", $$name) + QT.$${currentModule}_private.disabled_features += $$name + export(QT.$${currentModule}_private.disabled_features) + qtConfOutputSetDefine("privateHeader", "QT_FEATURE_$$feature", -1) + } +} + +defineTest(qtConfProcessOneOutput) { + feature = $${1} + fpfx = $${currentConfig}.features.$${feature} + opfx = $${fpfx}.output.$${2} + + call = $$eval($${opfx}.type) + isEmpty(call) { + # output is just a string, not an object + call = $$eval($$opfx) + } + !defined("qtConfOutput_$$call", test): \ + error("Undefined type '$$call' in output '$$2' of feature '$$feature'.") + + !$$qtConfEvaluate($$eval($${opfx}.condition)): \ + return() + + $${opfx}.feature = $$feature + qtConfOutput_$${call}($$opfx, $$eval($${fpfx}.available)) +} + +defineTest(qtConfProcessOutput) { + !contains($${currentConfig}._KEYS_, "features"): \ + return() + + basedir = $$shadowed($$eval($${currentConfig}.dir)) + module = $$eval($${currentConfig}.module) + + # write it to the output files + !defined($${currentConfig}.files._KEYS_, var) { + # set defaults that should work for most Qt modules + isEmpty(module): \ + error("Neither module nor files section specified in configuration file.") + + $${currentConfig}.files._KEYS_ = publicPro privatePro publicHeader privateHeader + $${currentConfig}.files.publicPro = qt$${module}-config.pri + $${currentConfig}.files.privatePro = qt$${module}-config.pri # sic! + $${currentConfig}.files.publicHeader = qt$${module}-config.h + $${currentConfig}.files.privateHeader = qt$${module}-config_p.h + } + + for (type, $${currentConfig}.files._KEYS_) { + contains(type, ".*Pro") { + for (k, $${currentConfig}.output.$${type}.assign._KEYS_): \ + $${currentConfig}.output.$$type += "$$k = $$eval($${currentConfig}.output.$${type}.assign.$$k)" + for (k, $${currentConfig}.output.$${type}.remove._KEYS_): \ + $${currentConfig}.output.$$type += "$$k -= $$eval($${currentConfig}.output.$${type}.remove.$$k)" + for (k, $${currentConfig}.output.$${type}.append._KEYS_): \ + $${currentConfig}.output.$$type += "$$k += $$eval($${currentConfig}.output.$${type}.append.$$k)" + } else: contains(type, ".*Header") { + for (define, $${currentConfig}.output.$${type}._KEYS_) { + value = $$eval($${currentConfig}.output.$${type}.$${define}) + $${currentConfig}.output.$$type += "$${LITERAL_HASH}define $$define $$value" + } + } + + content = $$eval($${currentConfig}.output.$${type}) + + !isEmpty(module): \ + call = qtConfOutputPostProcess_$${module}_$${type} + else: \ + call = qtConfOutputPostProcess_$${type} + defined($$call, replace): \ + eval(content = \$\$"$$call"(\$\$content)) + + file = $$eval($${currentConfig}.files.$${type}) + fileCont.$$file += $$content + fileCont._KEYS_ *= $$file + } + + for (file, fileCont._KEYS_): \ + write_file($$basedir/$$file, fileCont.$$file)|error() +} + +# +# tie it all together +# + +!isEmpty(_QMAKE_SUPER_CACHE_):!equals(OUT_PWD, $$dirname(_QMAKE_SUPER_CACHE_)) { + # sub-repo within a top-level build; no need to configure anything. + !isEmpty(QMAKE_EXTRA_ARGS) { + # sub-projects don't get the extra args passed down automatically, + # so we can use their presence to detect misguided attempts to + # configure the repositories separately. + # caveat: a plain qmake call is indistinguishable from a recursion + # (by design), so we cannot detect this case. + error("You cannot configure $$TARGET separately within a top-level build.") + } + return() +} + +config.$${TARGET}.dir = $$_PRO_FILE_PWD_ +cfgs = $$TARGET +!isEmpty(_QMAKE_SUPER_CACHE_) { + for (s, SUBDIRS) { + config.$${s}.dir = $$_PRO_FILE_PWD_/$${s} + cfgs += $$s + } +} +configsToProcess = +for (c, cfgs) { + s = $$eval(config.$${c}.dir) + exists($$s/configure.json): \ + configsToProcess += $$c +} +isEmpty(configsToProcess) { + !isEmpty(QMAKE_EXTRA_ARGS): \ + error("This module does not accept configure command line arguments.") + return() +} + +load(configure_base) + +QMAKE_POST_CONFIGURE = +config.builtins.dir = $$PWD/data +configsToProcess = builtins $$configsToProcess +allConfigs = +for(ever) { + isEmpty(configsToProcess): \ + break() + + currentConfig = config.$$take_first(configsToProcess) + thisDir = $$eval($${currentConfig}.dir) + jsonFile = $$thisDir/configure.json + priFile = $$thisDir/configure.pri + + # load configuration data + configure_data = $$cat($$jsonFile, blob) + !parseJson(configure_data, $$currentConfig): \ + error("Invalid or non-existent file $${jsonFile}.") + exists($$priFile): \ + !include($$priFile): error() + + # only configs which contain more than just subconfigs are saved for later. + $${currentConfig}._KEYS_ -= subconfigs + !isEmpty($${currentConfig}._KEYS_) { + allConfigs += $$currentConfig + contains($${currentConfig}._KEYS_, libraries) { + qtConfSetupLibraries() + # this ensures that references in QMAKE_LIBRARY_DEPS are unique. + qtConfSetModuleName() + ex = $$eval(config.modules.$${currentModule}) + !isEmpty(ex): \ + error("Module $$currentModule is claimed by both $$currentConfig and $${ex}.") + config.modules.$${currentModule} = $$currentConfig + } + } + + # prepend all subconfigs to files to keep a depth first search order + subconfigs = + for(n, $${currentConfig}.subconfigs._KEYS_) { + subconfig = $$eval($${currentConfig}.subconfigs.$${n}) + name = $$basename(subconfig) + ex = $$eval(config.$${name}.dir) + !isEmpty(ex): \ + error("Basename clash between $$thisDir/$$subconfig and $${ex}.") + config.$${name}.dir = $$thisDir/$$subconfig + subconfigs += $$name + } + configsToProcess = $$subconfigs $$configsToProcess +} + +QMAKE_SAVED_ARGS = $$QMAKE_EXTRA_ARGS +QMAKE_REDO_CONFIG = false +qtConfParseCommandLine() +qtConfCheckErrors() + +!isEmpty(config.input.list-features) { + all_ft = + for (currentConfig, allConfigs) { + for (k, $${currentConfig}.features._KEYS_) { + pp = $$eval($${currentConfig}.features.$${k}.purpose) + !isEmpty(pp) { + pfx = $$eval($${currentConfig}.features.$${k}.section) + !isEmpty(pfx): pfx = "$$pfx: " + all_ft += $$qtConfPadCols($$k, ".......................", \ + $$pfx$$section(pp, $$escape_expand(\\n), 0, 0)) + } + } + } + all_ft = $$sorted(all_ft) + logn() + for (ft, all_ft): \ + logn($$ft) + error() +} + +!isEmpty(config.input.list-libraries) { + logn() + for (currentConfig, allConfigs) { + !isEmpty($${currentConfig}.exports._KEYS_) { + !isEmpty($${currentConfig}.module): \ + logn($$eval($${currentConfig}.module):) + else: \ + logn($$section(currentConfig, ., -1):) + all_xp = + for (xport, $${currentConfig}.exports._KEYS_) { + libs = $$eval($${currentConfig}.exports.$$xport) + isEqual($${currentConfig}.libraries.$$first(libs).export, "") { # not isEmpty()! + !isEmpty(config.input.verbose): \ + all_xp += "$$xport!" + } else { + out = "$$xport" + !isEmpty(config.input.verbose):!isEqual(xport, $$libs): \ + out += "($$libs)" + all_xp += "$$out" + } + } + all_xp = $$sorted(all_xp) + all_xp ~= s,^([^!]*)!$,(\\1),g + for (xp, all_xp): \ + logn(" $$xp") + } + } + error() +} + +QMAKE_CONFIG_VERBOSE = $$eval(config.input.verbose) +isEmpty(QMAKE_CONFIG_VERBOSE): \ + QMAKE_CONFIG_VERBOSE = false +QMAKE_CONFIG_LOG = $$OUT_PWD/config.log +write_file($$QMAKE_CONFIG_LOG, "") +qtLog("Command line: $$qtSystemQuote($$QMAKE_SAVED_ARGS)") +$$QMAKE_REDO_CONFIG: \ + qtLog("config.opt: $$qtSystemQuote($$QMAKE_EXTRA_REDO_ARGS)") + +for (currentConfig, allConfigs) { + qtConfSetModuleName() + qtConfSetupModuleOutputs() + # do early checks, mainly to validate the command line + qtConfProcessEarlyChecks() +} +qtConfCheckErrors() + +QMAKE_CONFIG_CACHE = $$OUT_PWD/config.cache +QMAKE_CONFIG_CACHE_USE = $$eval(config.input.cache_use) +cache_recheck = $$eval(config.input.cache_recheck) +equals(cache_recheck, yes) { + QMAKE_CONFIG_CACHE_USE = positive + cache_recheck = +} +isEmpty(QMAKE_CONFIG_CACHE_USE): \ + QMAKE_CONFIG_CACHE_USE = all +!equals(QMAKE_CONFIG_CACHE_USE, none) { + include($$QMAKE_CONFIG_CACHE, , true) + # this crudely determines when to discard the cache. this also catches the case + # of no cache being there in the first place. + !equals(cache.platform, $$[QMAKE_SPEC])|!equals(cache.xplatform, $$[QMAKE_XSPEC]) { + QMAKE_CONFIG_CACHE_USE = none + } else: !isEmpty(cache_recheck) { + for (cr, $$list($$split(cache_recheck, ","))) { + !isEmpty(cache.$${cr}._KEYS_) { + cache.$${cr}._KEYS_ = + } else { + qtConfAddWarning("Attempting to discard non-cached result '$$cr'.") + } + } + } +} +equals(QMAKE_CONFIG_CACHE_USE, none) { + cont = \ + "cache.platform = $$[QMAKE_SPEC]" \ + "cache.xplatform = $$[QMAKE_XSPEC]" + write_file($$QMAKE_CONFIG_CACHE, cont) +} + +CONFIG += qt_conf_tests_allowed +logn() +logn("Running configuration tests...") + +for (currentConfig, allConfigs) { + tdir = $$eval($${currentConfig}.testDir) + isEmpty(tdir): tdir = config.tests + QMAKE_CONFIG_TESTS_DIR = $$absolute_path($$tdir, $$eval($${currentConfig}.dir)) + + qtConfSetModuleName() + + qtConfSetupTestTypeDeps() + + # correctly setup dependencies + QMAKE_CONFIG_DEPS = global global_private + QMAKE_LIBRARY_DEPS = $$eval(config.modules.global) + !isEmpty($${currentConfig}.module) { + for (d, $${currentConfig}.depends._KEYS_) { + dep = $$replace($${currentConfig}.depends.$$d, -private$, _private) + gdep = $$replace(dep, _private$, ) + dep *= $$gdep + QMAKE_CONFIG_DEPS += $$dep + !isEqual(gdep, $$dep): \ # libraries are in the private module. + QMAKE_LIBRARY_DEPS += $$eval(config.modules.$$gdep) + } + } + + qtConfCheckModuleCondition() + + qtConfHaveModule($$currentModule) { + # process all features + qtConfProcessFeatures() + } else { + qtConfOutputVar(assign, "privatePro", "QT.$${currentModule}.skip", "true") + } + + # generate files and reports + qtConfProcessOutput() + qtConfHaveModule($$currentModule) { + qtConfCreateReport() + qtConfCreateSummary() + } else { + QT_CONFIGURE_SKIPPED_MODULES += " $$currentModule" + } +} + +!isEmpty(QT_CONFIGURE_SKIPPED_MODULES): \ + qtConfAddNote("The following modules are not being compiled in this configuration:" $$QT_CONFIGURE_SKIPPED_MODULES) + +logn("Done running configuration tests.") +logn() + +!$$QMAKE_REDO_CONFIG { + write_file($$OUT_PWD/config.opt, QMAKE_SAVED_ARGS)|error() +} + +# these come from the pri files loaded above. +for (p, QMAKE_POST_CONFIGURE): \ + eval($$p) + +logn("Configure summary:") +logn() +qtConfPrintReport() + +# final notes for the user +logn() +logn("Qt is now configured for building. Just run '$$QMAKE_MAKE_NAME'.") +pfx = $$[QT_INSTALL_PREFIX] +equals(pfx, $$[QT_INSTALL_PREFIX/get]) { + logn("Once everything is built, Qt is installed.") + logn("You should NOT run '$$QMAKE_MAKE_NAME install'.") + logn("Note that this build cannot be deployed to other machines or devices.") +} else { + logn("Once everything is built, you must run '$$QMAKE_MAKE_NAME install'.") + logn("Qt will be installed into '$$system_path($$pfx)'.") +} +logn() +logn("Prior to reconfiguration, make sure you remove any leftovers from") +logn("the previous build.") +logn() diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_docs.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_docs.prf new file mode 100644 index 000000000..72dde61a4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_docs.prf @@ -0,0 +1,106 @@ +# +# 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. +# + +!exists($$QMAKE_DOCS): error("Cannot find documentation specification file $$QMAKE_DOCS") + +qtver.name = QT_VERSION +qtver.value = $$VERSION +isEmpty(qtver.value): qtver.value = $$MODULE_VERSION +isEmpty(qtver.value): error("No version for documentation specified.") +qtmver.name = QT_VER +qtmver.value = $$replace(qtver.value, ^(\\d+\\.\\d+).*$, \\1) +qtvertag.name = QT_VERSION_TAG +qtvertag.value = $$replace(qtver.value, \.,) +qtdocs.name = QT_INSTALL_DOCS +qtdocs.value = $$[QT_INSTALL_DOCS/src] +builddir.name = BUILDDIR +builddir.value = $$OUT_PWD +QT_TOOL_ENV = qtver qtmver qtvertag qtdocs builddir +qtPrepareTool(QDOC, qdoc) +QT_TOOL_ENV = + +!build_online_docs: qtPrepareTool(QHELPGENERATOR, qhelpgenerator) + +qtPrepareTool(QTATTRIBUTIONSSCANNER, qtattributionsscanner) + +# qtPrepareTool() must be called outside a build pass, as it protects +# against concurrent wrapper creation by omitting it during build passes. +# However, creating the actual targets is reserved to the build passes. +debug_and_release:!build_pass: return() + +load(qt_build_paths) +QMAKE_DOCS_BASE_OUTDIR = $$MODULE_BASE_OUTDIR/doc + +QMAKE_DOCS_TARGET = $$replace(QMAKE_DOCS, ^(.*/)?(.*)\\.qdocconf$, \\2) +isEmpty(QMAKE_DOCS_TARGETDIR): QMAKE_DOCS_TARGETDIR = $$QMAKE_DOCS_TARGET +QMAKE_DOCS_OUTPUTDIR = $$QMAKE_DOCS_BASE_OUTDIR/$$QMAKE_DOCS_TARGETDIR + +QDOC += -outputdir $$shell_quote($$QMAKE_DOCS_OUTPUTDIR) +!build_online_docs: \ + QDOC += -installdir $$shell_quote($$[QT_INSTALL_DOCS]) +PREP_DOC_INDEXES = +DOC_INDEXES = +!isEmpty(QTREPOS) { + prepare_docs { + # This is not for linking, but for providing type information. + mps = + deps = $$replace(QT, -private$, ) + deps = $$resolve_depends(deps, "QT.") + for (d, deps): \ + mps += $$dirname(QT.$${d}.libs) + mps = $$unique(mps) + for (mp, mps): \ + PREP_DOC_INDEXES += -indexdir $$shell_quote($$mp/doc) + } + for(qrep, QTREPOS): \ + DOC_INDEXES += -indexdir $$shell_quote($$qrep/doc) +} else { + prepare_docs: \ + PREP_DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get]) + DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get]) +} + +qtattributionsscanner.target = qtattributionsscanner +qtattributionsscanner.commands = $$QTATTRIBUTIONSSCANNER $$shell_quote($$MODULE_BASE_INDIR) \ + --filter "QDocModule=$$QMAKE_DOCS_TARGET" -o $$shell_quote($$OUT_PWD/codeattributions.qdoc) +qtattributionsscanner.CONFIG += phony +QMAKE_EXTRA_TARGETS += qtattributionsscanner + +doc_command = $$QDOC $$QMAKE_DOCS +prepare_docs { + prepare_docs.commands += $$doc_command -prepare $$PREP_DOC_INDEXES -no-link-errors + generate_docs.commands += $$doc_command -generate $$DOC_INDEXES + prepare_docs.depends += qtattributionsscanner +} else { + html_docs.commands += $$doc_command $$DOC_INDEXES + html_docs.depends += qtattributionsscanner +} + +!build_online_docs { + qch_docs.commands = $$QHELPGENERATOR $$shell_quote($$QMAKE_DOCS_OUTPUTDIR/$${QMAKE_DOCS_TARGET}.qhp) -o $$shell_quote($$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch) + + inst_html_docs.files = $$QMAKE_DOCS_OUTPUTDIR + inst_html_docs.path = $$[QT_INSTALL_DOCS] + inst_html_docs.CONFIG += no_check_exist directory no_default_install no_build + INSTALLS += inst_html_docs + + inst_qch_docs.files = $$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch + inst_qch_docs.path = $$[QT_INSTALL_DOCS] + inst_qch_docs.CONFIG += no_check_exist no_default_install no_build + INSTALLS += inst_qch_docs + + install_html_docs.depends = install_inst_html_docs + uninstall_html_docs.depends = uninstall_inst_html_docs + install_qch_docs.depends = install_inst_qch_docs + uninstall_qch_docs.depends = uninstall_inst_qch_docs + install_docs.depends = install_html_docs install_qch_docs + uninstall_docs.depends = uninstall_html_docs uninstall_qch_docs +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_docs_targets.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_docs_targets.prf new file mode 100644 index 000000000..9e9643246 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_docs_targets.prf @@ -0,0 +1,45 @@ +# +# 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. +# + +DOC_TARGETS = \ + install_html_docs uninstall_html_docs \ + install_qch_docs uninstall_qch_docs \ + install_docs uninstall_docs \ + qch_docs + +prepare_docs { + DOC_TARGETS += prepare_docs generate_docs + html_docs.commands = $(MAKE) -f $(MAKEFILE) prepare_docs && $(MAKE) -f $(MAKEFILE) generate_docs + QMAKE_EXTRA_TARGETS += html_docs +} else { + DOC_TARGETS += html_docs +} + +docs.commands = $(MAKE) -f $(MAKEFILE) html_docs && $(MAKE) -f $(MAKEFILE) qch_docs +QMAKE_EXTRA_TARGETS += docs + +contains(TEMPLATE, subdirs) { + for(inst, DOC_TARGETS): \ + prepareRecursiveTarget($$inst) +} else { + !isEmpty(BUILDS):!build_pass { + sub = $$first(BUILDS) + for(inst, DOC_TARGETS) { + $${inst}.CONFIG = recursive + $${inst}.recurse = $$sub + } + } + # Apps and libs request docs creation by setting QMAKE_DOCS. + # This is a backwards compat hack - technically, the modules which need it + # are supposed to load(qt_docs) themselves. + !isEmpty(QMAKE_DOCS): load(qt_docs) +} +QMAKE_EXTRA_TARGETS += $$DOC_TARGETS diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_example_installs.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_example_installs.prf new file mode 100644 index 000000000..668669e4c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_example_installs.prf @@ -0,0 +1,137 @@ +# +# 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. +# + +defineTest(addInstallFiles) { + for(sf, 2) { + sf = $$relative_path($$sf, $$_PRO_FILE_PWD_) + contains(sf, \\..*) { + check_examples: message("Notice: $$_PRO_FILE_ refers to $$sf") + } else { + sfp = $$replace(sf, /.*, ) + !equals(sfp, $$sf): \ + $$1 *= $$sfp + else: \ + $$1 += $$sf + } + } + export($$1) +} + +probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples) +isEmpty(probase)|contains(probase, ^\\..*): \ + return() + +isEmpty(_QMAKE_CACHE_) { + !equals(OUT_PWD, $$_PRO_FILE_PWD_): \ + return() + error("You cannot build examples inside the Qt source tree, except as part of a proper Qt build.") +} + +contains(TEMPLATE, "vc.*"): \ + return() + +contains(TEMPLATE, .*app): \ + qtSetQmlPath() + +for(ex, EXAMPLE_FILES): \ + sourcefiles += $$files($$absolute_path($$ex, $$_PRO_FILE_PWD_)) +for(res, RESOURCES) { + rfile = $$cat($$absolute_path($$res, $$_PRO_FILE_PWD_), lines) + for(rline, rfile) { + resrc = $$replace(rline, ^[ \\t]*]*>([^<]+)[ \\t]*$, \\1) + !equals(resrc, $$rline): \ + sourcefiles += $$resrc + } +} +for(res, RC_FILE) { + rfile = $$cat($$absolute_path($$res, $$_PRO_FILE_PWD_), lines) + for(rline, rfile) { + resrc = $$replace(rline, "^\\d+\\s+ICON\\s+[^\"]*\"([^\"]+)\"\$", \\1) + !equals(resrc, $$rline): \ + sourcefiles += $$resrc + } +} +sourcefiles += \ + $$ANDROID_PACKAGE_SOURCE_DIR \ + $$QMAKE_INFO_PLIST \ + $$DISTFILES +extras = \ + $$_PRO_FILE_PWD_/README \ + $$_PRO_FILE_PWD_/README.TXT \ + $$files($$_PRO_FILE_PWD_/*.pri) \ + $$replace(_PRO_FILE_, \\.pro$, .qmlproject) \ + $$replace(_PRO_FILE_, \\.pro$, .json) \ + $$replace(_PRO_FILE_, \\.pro$, .inf) +for(extra, extras): \ + exists($$extra): \ + sourcefiles += $$extra + +# Just for Qt Creator +OTHER_FILES += $$sourcefiles + +sourcefiles += \ + $$_PRO_FILE_ $$RC_FILE $$DEF_FILE \ + $$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \ + $$DBUS_ADAPTORS $$DBUS_INTERFACES +addInstallFiles(sources.files, $$sourcefiles) +sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase +INSTALLS += sources + +check_examples { + srcfiles = $$sources.files + for(inst, INSTALLS): \ + !equals(inst, target):!contains($${inst}.CONFIG, no_check_exist): \ + for(file, $${inst}.files): \ + instfiles += $$files($$absolute_path($$file, $$_PRO_FILE_PWD_)) + addInstallFiles(srcfiles, $$instfiles) + + thefiles = $$files($$_PRO_FILE_PWD_/*) + for(i, thefiles): \ + allfiles += $$relative_path($$i, $$_PRO_FILE_PWD_) + for(i, srcfiles): \ + allfiles -= $$relative_path($$i, $$_PRO_FILE_PWD_) + for(i, SUBDIRS) { + sd = $$eval($${i}.file) + !isEmpty(sd) { + sd ~= s,/.*,, + } else { + sd = $$eval($${i}.subdir) + isEmpty(sd): sd = $$i + } + allfiles -= $$sd + } + allfiles -= doc + !isEmpty(allfiles): warning("remaining files in $$_PRO_FILE_PWD_: $$allfiles") +} + +equals(TEMPLATE, app)|equals(TEMPLATE, lib) { + !contains(INSTALLS, target) { + !install_ok: \ + error("$$_PRO_FILE_ is lacking an install target.") + else: check_examples: \ + warning("$$_PRO_FILE_ is lacking an install target.") + } else: !equals(target.path, $$sources.path) { + !install_ok: \ + error("$$_PRO_FILE_ installs target to unexpected location.") + else: check_examples: \ + warning("$$_PRO_FILE_ installs target to unexpected location.") + } +} + +!equals(TEMPLATE, subdirs):!compile_examples { + TEMPLATE = aux + CONFIG -= have_target qt staticlib dll + SOURCES = + OBJECTIVE_SOURCES = + INSTALLS -= target +} else { + CONFIG += relative_qt_rpath # Examples built as part of Qt should be relocatable +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_functions.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_functions.prf new file mode 100644 index 000000000..1903e509c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_functions.prf @@ -0,0 +1,352 @@ + +defineReplace(qtPlatformTargetSuffix) { + suffix = + CONFIG(debug, debug|release) { + !debug_and_release|build_pass { + mac: return($${suffix}_debug) + win32: return($${suffix}d) + } + } + return($$suffix) +} + +defineReplace(qtLibraryTarget) { + LIBRARY_NAME = $$1 + CONFIG(shared, static|shared):qtConfig(framework) { + QMAKE_FRAMEWORK_BUNDLE_NAME = $$LIBRARY_NAME + export(QMAKE_FRAMEWORK_BUNDLE_NAME) + } + return($$LIBRARY_NAME$$qtPlatformTargetSuffix()) +} + +defineReplace(qt5LibraryTarget) { + LIBRARY_NAME = $$qtLibraryTarget($$1) + isEmpty(QMAKE_FRAMEWORK_BUNDLE_NAME) { + # Insert the major version of Qt in the library name + # unless it's a framework build. + LIBRARY_NAME ~= s,^Qt,Qt$$QT_MAJOR_VERSION, + } + return($$LIBRARY_NAME) +} + +defineReplace(qtRelativeRPathBase) { + darwin { + if(equals(TEMPLATE, app):app_bundle)|\ + if(equals(TEMPLATE, lib):plugin:plugin_bundle) { + shallow_bundle: return($$target.path/$${TARGET}.app) + return($$target.path/$${TARGET}.app/Contents/MacOS) + } + equals(TEMPLATE, lib):!plugin:lib_bundle { + shallow_bundle: return($$target.path/$${TARGET}.framework) + return($$target.path/$${TARGET}.framework/Versions/Current) + } + } + return($$target.path) +} + +defineTest(qtAddLibrary) { + warning("qtAddLibrary() is deprecated. Use QT+= instead.") + + # Reverse-engineer the module name from the library name. + for(var, QT_MODULES) { + isEqual(QT.$${var}.name, $$1) { + QT += $$var + export(QT) + return(true) + } + } + error("No module matching library '$$1' found.") +} + +# qt module +defineTest(qtHaveModule) { + !isEmpty(QT.$$replace(1, -, _).name): \ + return(true) + return(false) +} + +# variable, default, [suffix for variable for system() use], [prepare primary variable for system() use] +defineTest(qtPrepareTool) { + cmd = $$eval(QT_TOOL.$${2}.binary) + isEmpty(cmd) { + cmd = $$[QT_HOST_BINS]/$$2 + exists($${cmd}.pl) { + $${1}_EXE = $${cmd}.pl + cmd = perl -w $$system_path($${cmd}.pl) + } else: contains(QMAKE_HOST.os, Windows) { + $${1}_EXE = $${cmd}.exe + cmd = $$system_path($${cmd}.exe) + } else:contains(QMAKE_HOST.os, Darwin) { + BUNDLENAME = $${cmd}.app/Contents/MacOS/$$2 + exists($$BUNDLENAME) { + cmd = $$BUNDLENAME + } + $${1}_EXE = $$cmd + } else { + $${1}_EXE = $$cmd + } + } else { + $${1}_EXE = $$last(cmd) + } + export($${1}_EXE) + QT_TOOL_ENV += $$eval(QT_TOOL.$${2}.envvars) + QT_TOOL_NAME = $$2 + !isEmpty(3)|!isEmpty(4) { + $$1$$3 = + for (arg, cmd): \ + $$1$$3 += $$system_quote($$arg) + qtAddTargetEnv($$1$$3, QT_TOOL.$${2}.depends, system) + } + isEmpty(4) { + $$1 = + for (arg, cmd): \ + $$1 += $$shell_quote($$arg) + qtAddTargetEnv($$1, QT_TOOL.$${2}.depends, ) + } +} + +# target variable, list of env var names, [non-empty: prepare for system(), not make] +defineTest(qtAddToolEnv) { + isEmpty(3): \ + ds = $$QMAKE_DIR_SEP + else: \ + ds = $$DIR_SEPARATOR + batch_sets = + for(env, 2) { + value = $$eval($${env}.value) + !isEmpty(value) { + name = $$eval($${env}.name) + config = $$eval($${env}.CONFIG) + equals(ds, /) { + contains(config, prepend): infix = \${$$name:+:\$$$name} + else: contains(config, always_prepend): infix = :\$$$name + else: infix = + # Under msys, this path is taken only in the non-system() + # case, so using shell_quote() always works. + batch_sets += \ + "$$name=$$shell_quote($$join(value, :))$$infix" \ + "export $$name" + } else { + value ~= s,\\^,^^^^,g + value ~= s,!,^^!,g + value ~= s,\\),^),g + contains(config, prepend) { + batch_sets += \ + "if defined $$name (" \ + " set $$name=$$join(value, ;);!$$name!" \ + ") else (" \ + " set $$name=$$join(value, ;)" \ + ")" + } else: contains(config, always_prepend) { + batch_sets += "(set $$name=$$join(value, ;);!$$name!)" + } else { + batch_sets += "(set $$name=$$join(value, ;))" + } + } + } + } + !isEmpty(batch_sets) { + batch_name = wrapper + !isEmpty(QT_TOOL_NAME): batch_name = $${QT_TOOL_NAME}_wrapper + cmd = $$eval($$1) + !isEmpty(cmd): cmd = "$$cmd " + equals(ds, /) { + batch_name = $${batch_name}.sh + batch_cont = \ + "$$LITERAL_HASH!/bin/sh" \ + $$batch_sets \ + "exec $$cmd\"$@\"" + # It would be nicer to use the '.' command (without 'exec' above), + # but that doesn't set the positional arguments under (d)ash. + $$1 = + } else { + batch_name = $${batch_name}.bat + batch_cont = \ + "@echo off" \ + "SetLocal EnableDelayedExpansion" \ + $$batch_sets \ + "$$cmd%*" \ + "EndLocal" + $$1 = call + } + !build_pass:!write_file($$OUT_PWD/$$batch_name, batch_cont, exe): error() + isEmpty(3): \ + $$1 += $$shell_quote($$shell_path($$OUT_PWD/$$batch_name)) + else: \ + $$1 += $$system_quote($$system_path($$OUT_PWD/$$batch_name)) + QMAKE_DISTCLEAN += $$OUT_PWD/$$batch_name + } + export($$1) + export(QMAKE_DISTCLEAN) +} + +# target variable, dependency var name, [non-empty: prepare for system(), not make] +defineTest(qtAddTargetEnv) { + deps = $$replace($$2, -private$, _private) + deps = $$resolve_depends(deps, "QT.", ".depends" ".run_depends") + !isEmpty(deps) { + libs = libs + deppath.CONFIG = prepend + equals(QMAKE_HOST.os, Windows) { + libs = bins + deppath.CONFIG = always_prepend + deppath.name = PATH + } else:contains(QMAKE_HOST.os, Linux|FreeBSD|OpenBSD|NetBSD|DragonFly|SunOS|HP-UX|QNX|GNU) { + deppath.name = LD_LIBRARY_PATH + } else:contains(QMAKE_HOST.os, Haiku) { + deppath.name = LIBRARY_PATH + } else:equals(QMAKE_HOST.os, Darwin) { + qtConfig(framework): \ + deppath.name = DYLD_FRAMEWORK_PATH + else: \ + deppath.name = DYLD_LIBRARY_PATH + } else:equals(QMAKE_HOST.os, AIX) { + deppath.name = LIBPATH + } else { + error("Operating system not supported.") + } + ptypes = + for(dep, deps) { + isEmpty(3): \ + deppath += $$shell_path($$eval(QT.$${dep}.$$libs)) + else: \ + deppath += $$system_path($$eval(QT.$${dep}.$$libs)) + ptypes += $$eval(QT.$${dep}.plugin_types) + } + deppath.value = $$unique(deppath) + + pluginpath.value = + ppaths = $$[QT_INSTALL_PLUGINS/get] + for(qplug, QT_PLUGINS): \ + contains(ptypes, $$eval(QT_PLUGIN.$${qplug}.TYPE)): \ + ppaths += $$eval(QT_PLUGIN.$${qplug}.PATH) + ppaths = $$unique(ppaths) + for(qplug, ppaths) { + isEmpty(3): \ + pluginpath.value += $$shell_path($$qplug) + else: \ + pluginpath.value += $$system_path($$qplug) + } + pluginpath.name = QT_PLUGIN_PATH + pluginpath.CONFIG = prepend + + QT_TOOL_ENV += deppath pluginpath + } + qtAddToolEnv($$1, $$QT_TOOL_ENV, $$3) +} + +defineReplace(pkgConfigExecutable) { + isEmpty(PKG_CONFIG) { + !isEmpty(QMAKE_PKG_CONFIG) { + # Assumed to be properly sysrootified. + PKG_CONFIG = $$QMAKE_PKG_CONFIG + export(PKG_CONFIG) + } else { + PKG_CONFIG = pkg-config + !cross_compile { + export(PKG_CONFIG) + } else { + # Cross compiling, ensure that pkg-config is set up sanely. + sysroot = $$[QT_SYSROOT] + + pkgConfigLibdir = $$(PKG_CONFIG_LIBDIR) + isEmpty(pkgConfigLibdir) { + isEmpty(sysroot) { + warning("Cross compiling without sysroot. Disabling pkg-config.") + return() + } + !exists("$$sysroot/usr/lib/pkgconfig") { + warning("Disabling pkg-config since PKG_CONFIG_LIBDIR is not set and the") + warning("host's .pc files would be used (even if you set PKG_CONFIG_PATH).") + warning("Set this variable to the directory that contains target .pc files") + warning("for pkg-config to function correctly when cross-compiling.") + return() + } + + pkgConfigLibdir = $$system_path($$sysroot/usr/lib/pkgconfig)$$QMAKE_DIRLIST_SEP$$system_path($$sysroot/usr/share/pkgconfig) + !isEmpty(GCC_MACHINE_DUMP): \ + pkgConfigLibdir = "$$pkgConfigLibdir$$QMAKE_DIRLIST_SEP$$system_path($$sysroot/usr/lib/$$GCC_MACHINE_DUMP/pkgconfig)" + message("PKG_CONFIG_LIBDIR automatically set to $$pkgConfigLibdir") + } + pkgConfigSysrootDir = $$(PKG_CONFIG_SYSROOT_DIR) + isEmpty(pkgConfigSysrootDir) { + isEmpty(sysroot) { + warning("Disabling pkg-config since PKG_CONFIG_SYSROOT_DIR is not set.") + warning("Set this variable to your sysroot for pkg-config to function") + warning("correctly when cross-compiling.") + return() + } + + pkgConfigSysrootDir = $$sysroot + message("PKG_CONFIG_SYSROOT_DIR automatically set to $$pkgConfigSysrootDir") + } + + sysroot.name = PKG_CONFIG_SYSROOT_DIR + sysroot.value = $$pkgConfigSysrootDir + libdir.name = PKG_CONFIG_LIBDIR + libdir.value = $$pkgConfigLibdir + QT_TOOL_NAME = pkg-config + qtAddToolEnv(PKG_CONFIG, sysroot libdir, SYS) + } + } + } + + PKG_CONFIG += 2> $$QMAKE_SYSTEM_NULL_DEVICE + + return($$PKG_CONFIG) +} + +defineTest(packagesExist) { + # this can't be done in global scope here because qt_functions is loaded + # before the .pro is parsed, so if the .pro set PKG_CONFIG, we wouldn't know it + # yet. oops. + pkg_config = $$pkgConfigExecutable() + + for(package, ARGS) { + !system($$pkg_config --exists $$package):return(false) + } + + return(true) +} + +# Prepares target that will iterate through all subdirs (except those +# with no_default_target or no_{name_of_target}_target. The prepared +# target must still be manually added to QMAKE_EXTRA_TARGETS. +defineTest(prepareRecursiveTarget) { + target = $$1 + no_$${target}_target: return() + + for(subdir, SUBDIRS) { + subdir_config = $$eval($${subdir}.CONFIG) + contains(subdir_config, no_default_target): next() + contains(subdir_config, no_$${target}_target): next() + + $${target}.recurse += $$subdir + } + + # Set up the recurse target only when there + # is something to recurse into. + isEmpty($${target}.recurse): return() + + $${target}.CONFIG = recursive + $${target}.recurse_target = $${target} + + export($${target}.recurse) + export($${target}.CONFIG) + export($${target}.recurse_target) +} + +defineTest(qtConfig) { + modules = $$QT $$QT_PRIVATE $$QT_FOR_CONFIG + modules ~= s,-private$,_private,g + modules = $$resolve_depends(modules, "QT.", ".depends") + modules += global global_private + modules = $$reverse(modules) + for (module, modules) { + contains(QT.$${module}.enabled_features, $$1): \ + return(true) + contains(QT.$${module}.disabled_features, $$1): \ + return(false) + } + error("Could not find feature $${1}.") +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_helper_lib.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_helper_lib.prf new file mode 100644 index 000000000..b3e49e462 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_helper_lib.prf @@ -0,0 +1,60 @@ +# +# 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. +# + +load(qt_build_paths) + +TEMPLATE = lib +CONFIG -= qt +QT = # In case qt is re-added. + +INCLUDEPATH += $$MODULE_INCLUDEPATH +DEFINES += $$MODULE_DEFINES + +CONFIG -= warning_clean # Don't presume 3rd party code to be clean +load(qt_common) + +qtConfig(debug_and_release): CONFIG += debug_and_release +qtConfig(build_all): CONFIG += build_all + +DESTDIR = $$MODULE_BASE_OUTDIR/lib +DLLDESTDIR = $$MODULE_BASE_OUTDIR/bin + +THE_TARGET = $$qt5LibraryTarget($$TARGET) + +!build_pass { + MODULE = $$replace(TARGET, ^qt, ) + MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_ext_$${MODULE}.pri + ucmodule = $$upper($$MODULE) + + MODULE_PRI_CONT = \ + "QMAKE_INCDIR_$${ucmodule} = $$val_escape(MODULE_INCLUDEPATH)" \ + "QMAKE_DEFINES_$${ucmodule} = $$val_escape(MODULE_DEFINES)" + debug_and_release { + win32: MODULE_DEBUG_LIBS = -L$$DESTDIR -l$${TARGET}d + darwin: MODULE_DEBUG_LIBS = -L$$DESTDIR -l$${TARGET}_debug + MODULE_RELEASE_LIBS = -L$$DESTDIR -l$$TARGET + MODULE_PRI_CONT += \ + "QMAKE_LIBS_$${ucmodule} =" \ # Needed for the module to be recognized. + "QMAKE_LIBS_$${ucmodule}_DEBUG = $$val_escape(MODULE_DEBUG_LIBS)" \ + "QMAKE_LIBS_$${ucmodule}_RELEASE = $$val_escape(MODULE_RELEASE_LIBS)" + } else { + MODULE_LIBS = -L$$DESTDIR -l$$THE_TARGET + MODULE_PRI_CONT += \ + "QMAKE_LIBS_$${ucmodule} = $$val_escape(MODULE_LIBS)" + } + write_file($$MODULE_PRI, MODULE_PRI_CONT)|error() +} + +TARGET = $$THE_TARGET + +# In static builds of Qt, convenience libraries must be installed, +# as in this case they are not linked to the final library/plugin. +installed|if(!not_installed:qtConfig(static)): load(qt_installs) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_installs.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_installs.prf new file mode 100644 index 000000000..0d3dfb6b9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_installs.prf @@ -0,0 +1,62 @@ +# +# 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. +# + +#library +!qt_no_install_library { + win32 { + host_build: \ + dlltarget.path = $$[QT_HOST_BINS] + else: \ + dlltarget.path = $$[QT_INSTALL_BINS] + INSTALLS += dlltarget + } + host_build: \ + target.path = $$[QT_HOST_LIBS] + else: \ + target.path = $$[QT_INSTALL_LIBS] + !static: target.CONFIG = no_dll + INSTALLS += target +} + +#headers +qt_install_headers { + class_headers.files = $$SYNCQT.HEADER_CLASSES + class_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME + INSTALLS += class_headers + + targ_headers.files = $$SYNCQT.HEADER_FILES + targ_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME + INSTALLS += targ_headers + + private_headers.files = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.INJECTED_PRIVATE_HEADER_FILES + private_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private + INSTALLS += private_headers + + qpa_headers.files = $$SYNCQT.QPA_HEADER_FILES + qpa_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa + INSTALLS += qpa_headers +} + +#module +qt_install_module { + !isEmpty(MODULE_PRI) { + pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules + pritarget.files = $$MODULE_PRI + INSTALLS += pritarget + } else: isEmpty(MODULE_PRIVATE_PRI) { + warning("Project $$basename(_PRO_FILE_) is a module, but has not defined MODULE_PRI, which is required for Qt to expose the module to other projects.") + } + !isEmpty(MODULE_PRIVATE_PRI) { + privpritarget.path = $$[QT_HOST_DATA]/mkspecs/modules + privpritarget.files = $$MODULE_PRIVATE_PRI + INSTALLS += privpritarget + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_module.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_module.prf new file mode 100644 index 000000000..36f632e8c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_module.prf @@ -0,0 +1,316 @@ +# +# 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. +# + +isEmpty(MODULE):MODULE = $$section($$list($$basename(_PRO_FILE_)), ., 0, 0) +isEmpty(VERSION): VERSION = $$MODULE_VERSION +isEmpty(VERSION): error("Module does not define version.") + +exists($$OUT_PWD/qt$${MODULE}-config.pri) { + include($$OUT_PWD/qt$${MODULE}-config.pri) + CONFIG += generated_privates +} + +skip = $$eval(QT.$${MODULE}.skip) +isEmpty(skip): skip = false +requires(!$$skip) + +# Compile as shared/DLL or static according to the option given to configure +# unless overridden. Host builds are always static +host_build|staticlib: CONFIG += static + +host_build { + QT -= gui # no host module will ever use gui + QMAKE_CFLAGS += $$QMAKE_CFLAGS_SPLIT_SECTIONS + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_SPLIT_SECTIONS + force_bootstrap { + !build_pass:qtConfig(release_tools): CONFIG += release + contains(QT, core(-private)?|xml) { + QT -= core core-private xml + QT += bootstrap-private + } + } else { + !build_pass:qtConfig(debug_and_release): CONFIG += release + } +} + +qtConfig(framework) { + minimal_syncqt: \ + CONFIG += module_frameworks + else: CONFIG(shared, static|shared): \ + CONFIG += module_frameworks lib_bundle +} + +CONFIG += relative_qt_rpath # Qt libraries should be relocatable + +# Qt libraries should only use Application Extension safe APIs +darwin:!no_app_extension_api_only: CONFIG += app_extension_api_only + +ucmodule = $$upper($$MODULE) + +isEmpty(MODULE_INCNAME): MODULE_INCNAME = $$TARGET + +internal_module: \ + MODULE_DEPENDS = $$replace(QT, -private$, _private) +else: \ + MODULE_DEPENDS = $$replace(QT, -private$, ) +MODULE_DEPENDS = $$unique(MODULE_DEPENDS) +contains(MODULE_DEPENDS, $$MODULE): \ + error("$$TARGET depends on itself.") + +contains(TARGET, QtAddOn.*): \ + MODULE_DEFINE = QT_ADDON_$${ucmodule}_LIB +else: \ + MODULE_DEFINE = QT_$${ucmodule}_LIB +MODULE_DEFINES = $$MODULE_DEFINE $$MODULE_DEFINES + +# Make sure that the supporting runtime is linked into the application when +# the module is built with exceptions enabled. +integrity:CONFIG(exceptions, exceptions|exceptions_off): \ + MODULE_CONFIG += exceptions + +load(qt_build_paths) + +header_module { + TEMPLATE = aux + CONFIG += force_qt # Needed for the headers_clean tests. + !lib_bundle: \ + CONFIG += qt_no_install_library +} else { + TEMPLATE = lib +} +DESTDIR = $$MODULE_BASE_OUTDIR/lib +DLLDESTDIR = $$MODULE_BASE_OUTDIR/bin + +CONFIG += qmake_cache target_qt + +QMAKE_DOCS_TARGETDIR = qt$${MODULE} + +load(qt_common) +!no_module_headers: load(qt_module_headers) +load(qt_module_pris) + +INCLUDEPATH *= $$eval(QT.$${MODULE}.includes) $$eval(QT.$${MODULE}_private.includes) + +# If Qt was configured with -debug-and-release then build the module the same way +# - unless this is a host library +!host_build:if(win32|mac):!macx-xcode { + qtConfig(debug_and_release): CONFIG += debug_and_release + qtConfig(build_all): CONFIG += build_all +} + +QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF + +QT_PRIVATE += $$QT_FOR_PRIVATE +unset(QT_FOR_PRIVATE) +QMAKE_USE_PRIVATE += $$QMAKE_USE_FOR_PRIVATE +unset(QMAKE_USE_FOR_PRIVATE) + +!internal_module:CONFIG += create_cmake + +contains(TARGET, QtAddOn.*): \ + DEFINES += QT_BUILD_ADDON_$${ucmodule}_LIB +else: \ + DEFINES += QT_BUILD_$${ucmodule}_LIB + +# OS X and iOS frameworks +lib_bundle { + # Set the CFBundleIdentifier prefix for Qt frameworks + QMAKE_TARGET_BUNDLE_PREFIX = org.qt-project + #QMAKE_FRAMEWORK_VERSION = 4.0 + CONFIG += sliced_bundle + header_module { + CONFIG += bundle + QMAKE_BUNDLE_NAME = $$TARGET + QMAKE_BUNDLE_EXTENSION = .framework + QMAKE_INFO_PLIST = $$QMAKESPEC/Info.plist.lib + } + !build_all| \ + if(if(!debug_and_release|CONFIG(release, debug|release))) { + FRAMEWORK_HEADERS.version = Versions + FRAMEWORK_HEADERS.files = $$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES + FRAMEWORK_HEADERS.path = Headers + FRAMEWORK_PRIVATE_HEADERS.version = Versions + FRAMEWORK_PRIVATE_HEADERS.files = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.INJECTED_PRIVATE_HEADER_FILES + FRAMEWORK_PRIVATE_HEADERS.path = Headers/$$VERSION/$$MODULE_INCNAME/private + FRAMEWORK_QPA_HEADERS.version = Versions + FRAMEWORK_QPA_HEADERS.files = $$SYNCQT.QPA_HEADER_FILES + FRAMEWORK_QPA_HEADERS.path = Headers/$$VERSION/$$MODULE_INCNAME/qpa + QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS FRAMEWORK_PRIVATE_HEADERS FRAMEWORK_QPA_HEADERS + } +} + +mac { + macx-g++ { + QMAKE_CFLAGS += -fconstant-cfstrings + QMAKE_CXXFLAGS += -fconstant-cfstrings + } + + qtConfig(rpath): \ + QMAKE_SONAME_PREFIX = @rpath + else: \ + CONFIG += absolute_library_soname +} + +DEFINES += QT_BUILDING_QT +win32 { + INCLUDEPATH += tmp + CONFIG += skip_target_version_ext + # If the code is really "unsafe" then it is unsafe on + # other platforms as well; so fixing these warnings just + # for MSVC builds, would clutter the code and wouldn't help + # in fixing issues that might exist on other platforms. + # Using the same functions across all supported platforms + # keeps the code clean and helps in writing code that is + # safe across all platforms. + DEFINES *= _CRT_SECURE_NO_WARNINGS + + DEFINES += _USE_MATH_DEFINES +} + +aix-g++* { + QMAKE_CFLAGS += -mminimal-toc + QMAKE_CXXFLAGS += -mminimal-toc +} + +sse2:!contains(QT_CPU_FEATURES.$$QT_ARCH, sse2):!host_build:!if(static:qtConfig(shared)) { + # If the compiler supports SSE2, enable it unconditionally in all of Qt shared libraries + # (and only the libraries). This is not expected to be a problem because: + # - on Windows, sharing of libraries is uncommon + # - on Mac OS X, all x86 CPUs already have SSE2 support (we won't even reach here) + # - on Linux, the dynamic loader can find the libraries on LIBDIR/sse2/ + # The last guarantee does not apply to executables and plugins, so we can't enable for them. + QT_CPU_FEATURES.$$QT_ARCH += sse sse2 + QMAKE_CFLAGS += $$QMAKE_CFLAGS_SSE2 + QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE2 +} + +clang { + apple_clang_ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION} + reg_clang_ver = $${QT_CLANG_MAJOR_VERSION}.$${QT_CLANG_MINOR_VERSION} + !lessThan(apple_clang_ver, "5.1")|!lessThan(reg_clang_ver, "3.4"): \ + CONFIG += compiler_supports_fpmath +} else: gcc { + CONFIG += compiler_supports_fpmath +} + +equals(QT_ARCH, i386):contains(QT_CPU_FEATURES.$$QT_ARCH, sse2):compiler_supports_fpmath { + # Turn on SSE-based floating-point math + QMAKE_CFLAGS += -mfpmath=sse + QMAKE_CXXFLAGS += -mfpmath=sse +} + +android: CONFIG += qt_android_deps no_linker_version_script + +!header_module:unix:!isEmpty(QMAKE_LFLAGS_VERSION_SCRIPT):!no_linker_version_script:!static { + verscript = $${TARGET}.version + QMAKE_LFLAGS += $${QMAKE_LFLAGS_VERSION_SCRIPT}$$verscript + + internal_module { + verscript_content = "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API { *; };" + } else { + verscript_content = "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API {" \ + " qt_private_api_tag*;" + + private_api_headers = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.QPA_HEADER_FILES + + for(header, private_api_headers): \ + verscript_content += " @FILE:$${_PRO_FILE_PWD_}/$$header@" + verscript_content += "};" + + current = Qt_$$QT_MAJOR_VERSION + verscript_content += "$$current { *; };" + isEmpty(QT_NAMESPACE): tag_symbol = qt_version_tag + else: tag_symbol = qt_version_tag_$$QT_NAMESPACE + + for(i, 0..$$QT_MINOR_VERSION) { + previous = $$current + current = Qt_$${QT_MAJOR_VERSION}.$$i + equals(i, $$QT_MINOR_VERSION): verscript_content += "$$current { $$tag_symbol; } $$previous;" + else: verscript_content += "$$current {} $$previous;" + } + + # Add a post-processing step to replace the @FILE:filename@ + verscript_in = $${verscript}.in + verscriptprocess.name = linker version script ${QMAKE_FILE_BASE} + verscriptprocess.input = verscript_in + verscriptprocess.CONFIG += no_link target_predeps + for(header, private_api_headers): \ + verscriptprocess.depends += $${_PRO_FILE_PWD_}/$$header + verscriptprocess.output = $$verscript + verscriptprocess.commands = perl $${PWD}/data/unix/findclasslist.pl < ${QMAKE_FILE_IN} > $@ + silent:verscriptprocess.commands = @echo creating linker version script ${QMAKE_FILE_BASE} && $$verscriptprocess.commands + QMAKE_EXTRA_COMPILERS += verscriptprocess + + verscript = $$verscript_in + } + write_file($$OUT_PWD/$$verscript, verscript_content)|error() + unset(current) + unset(previous) + unset(verscript) + unset(verscript_content) +} + +#install directives +load(qt_installs) + +load(qt_targets) + +# this builds on top of qt_common +!internal_module:!lib_bundle:if(unix|mingw) { + CONFIG += create_pc + QMAKE_PKGCONFIG_DESTDIR = pkgconfig + host_build: \ + QMAKE_PKGCONFIG_LIBDIR = $$[QT_HOST_LIBS] + else: \ + QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw] + QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw] + QMAKE_PKGCONFIG_CFLAGS = -I${includedir}/$$MODULE_INCNAME + QMAKE_PKGCONFIG_NAME = $$replace(TARGET, ^Qt, "Qt$$QT_MAJOR_VERSION ") + QMAKE_PKGCONFIG_FILE = $$replace(TARGET, ^Qt, Qt$$QT_MAJOR_VERSION) + for(i, MODULE_DEPENDS): \ + QMAKE_PKGCONFIG_REQUIRES += $$replace(QT.$${i}.name, ^Qt, Qt$$section(QT.$${i}.VERSION, ., 0, 0)) + isEmpty(QMAKE_PKGCONFIG_DESCRIPTION): \ + QMAKE_PKGCONFIG_DESCRIPTION = $$replace(TARGET, ^Qt, "Qt ") module + pclib_replace.match = $$lib_replace.match + !isEmpty(lib_replace.replace): \ + pclib_replace.replace = $$QMAKE_PKGCONFIG_LIBDIR + pclib_replace.CONFIG = path + QMAKE_PKGCONFIG_INSTALL_REPLACE += pclib_replace +} +!lib_bundle:unix { + CONFIG += create_libtool + host_build: \ + QMAKE_LIBTOOL_LIBDIR = $$[QT_HOST_LIBS] + else: \ + QMAKE_LIBTOOL_LIBDIR = "=$$[QT_INSTALL_LIBS/raw]" + ltlib_replace.match = $$lib_replace.match + !isEmpty(lib_replace.replace): \ + ltlib_replace.replace = $$QMAKE_LIBTOOL_LIBDIR + ltlib_replace.CONFIG = path + QMAKE_LIBTOOL_INSTALL_REPLACE += ltlib_replace +} + +contains(QT_PRODUCT, OpenSource.*):DEFINES *= QT_OPENSOURCE +DEFINES *= QT_NO_CAST_TO_ASCII QT_ASCII_CAST_WARNINGS +DEFINES *= QT_MOC_COMPAT #we don't need warnings from calling moc code in our generated code +DEFINES *= QT_USE_QSTRINGBUILDER +DEFINES *= QT_DEPRECATED_WARNINGS + +win32 { + # On Windows, due to the way DLLs work, we need to export all functions, + # including the inlines + DEFINES *= QT_DISABLE_DEPRECATED_BEFORE=0x040800 +} else { + # On other platforms, Qt's own compilation goes needs to compile the Qt 5.0 API + DEFINES *= QT_DISABLE_DEPRECATED_BEFORE=0x050000 +} + +TARGET = $$qt5LibraryTarget($$TARGET$$QT_LIBINFIX) # Do this towards the end diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_module_headers.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_module_headers.prf new file mode 100644 index 000000000..8837410b8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_module_headers.prf @@ -0,0 +1,287 @@ +# +# 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. +# + +load(qt_build_paths) + +!build_pass:git_build { + qtPrepareTool(QMAKE_SYNCQT, syncqt, , system) + minimal_syncqt { + QMAKE_SYNCQT += -minimal $$QMAKE_SYNCQT_OPTIONS + } else { + qtConfig(private_tests): \ # -developer-build + QMAKE_SYNCQT += -check-includes + } + for(mod, MODULE_INCNAME): \ + QMAKE_SYNCQT += -module $$mod + QMAKE_SYNCQT += \ + -version $$VERSION -outdir $$system_quote($$MODULE_BASE_OUTDIR) $$MODULE_SYNCQT_DIR + !silent: message($$QMAKE_SYNCQT) + system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT") + + !minimal_syncqt { + include-distclean.commands = \ + $$QMAKE_DEL_TREE $$shell_quote($$shell_path($$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME)) + QMAKE_EXTRA_TARGETS += include-distclean + DISTCLEAN_DEPS += include-distclean + } +} + +# Pre-generated headers in the source tree (tar-ball) and +# - shadow build or +# - non-shadow non-prefix build of a module which is not qtbase +# (because the build-time generated headers all end up in qtbase). +!git_build: \ + if(!equals(_PRO_FILE_PWD_, $$OUT_PWD) \ + |if(!prefix_build:!equals(MODULE_BASE_INDIR, $$[QT_HOST_PREFIX]))): \ + CONFIG += split_incpath + +# To avoid stuffing the code with repetetive conditionals, +# we parametrize the names of the variables we assign to. + +# Internal modules have no private part - they *are* private. +!internal_module: \ + prv = _PRIVATE + +# When doing a framework build with a prefix, the module needs to point +# into the frameworks' Headers dirs directly, as no shared include/ dir +# is installed. +# However, during the build, it needs to point into the shared include/ +# dir, as the framework doesn't even exist yet. For bootstrapped modules +# which borrow headers from "proper" modules, this situation persists +# even beyond the module's own build. The implication of this is that +# qmake might never use a framework's headers in a non-prefix build, +# as there is no separate set of .pri files for users outside Qt. +# Borrowing is assumed to happen from modules which, in a framework build, +# actually are frameworks. +prefix_build:module_frameworks: \ + fwd = _FWD +# When using a split include path during the build, the installed module's +# include path is also structurally different from that in the build dir. +prefix_build:split_incpath: \ + sfwd = _FWD + +ibase = \$\$QT_MODULE_INCLUDE_BASE +MODULE$${fwd}_INCLUDES = $$ibase +split_incpath { + bibase = $$val_escape(MODULE_BASE_OUTDIR)/include + MODULE$${sfwd}_INCLUDES += $$bibase +} +for(mod, MODULE_INCNAME) { + mibase = $$ibase/$$mod + MODULE$${fwd}_INCLUDES += $$mibase + MODULE$${fwd}$${prv}_INCLUDES += $$mibase/$$VERSION $$mibase/$$VERSION/$$mod + split_incpath { + mbibase = $$bibase/$$mod + MODULE$${sfwd}_INCLUDES += $$mbibase + generated_privates: \ + MODULE$${sfwd}$${prv}_INCLUDES += $$mbibase/$$VERSION $$mbibase/$$VERSION/$$mod + } + prefix_build:module_frameworks { + mfbase = \$\$QT_MODULE_LIB_BASE/$${mod}.framework/Headers + MODULE_INCLUDES += $$mfbase + MODULE$${prv}_INCLUDES += $$mfbase/$$VERSION $$mfbase/$$VERSION/$$mod + } +} +MODULE_INCLUDES += $$MODULE_AUX_INCLUDES +MODULE_PRIVATE_INCLUDES += $$MODULE_PRIVATE_AUX_INCLUDES + +minimal_syncqt: return() + +#load up the headers info +git_build: \ + INC_PATH = $$MODULE_BASE_OUTDIR +else: \ + INC_PATH = $$MODULE_BASE_INDIR +include($$INC_PATH/include/$$MODULE_INCNAME/headers.pri, "", true) +!lib_bundle: \ # Headers are embedded into the bundle, so don't install them separately. + CONFIG += qt_install_headers + +alien_syncqt: return() + +MODULE_INC_OUTDIR = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME + +exists($$OUT_PWD/qt$${MODULE}-config.h) { + fwd_rel = $$relative_path($$OUT_PWD, $$MODULE_INC_OUTDIR) + SYNCQT.INJECTIONS += \ + $$fwd_rel/qt$${MODULE}-config.h:qt$${MODULE}-config.h \ + $$fwd_rel/qt$${MODULE}-config_p.h:$$MODULE_VERSION/$$MODULE_INCNAME/private/qt$${MODULE}-config_p.h + inst_rel = $$relative_path($$OUT_PWD, $$_PRO_FILE_PWD_) + SYNCQT.HEADER_FILES += $$inst_rel/qt$${MODULE}-config.h + SYNCQT.INJECTED_PRIVATE_HEADER_FILES += $$inst_rel/qt$${MODULE}-config_p.h +} + +for (injection, SYNCQT.INJECTIONS) { + injects = $$split(injection, :) + dst_hdr = $$absolute_path($$member(injects, 0), $$MODULE_INC_OUTDIR) + fwd_hdr = $$member(injects, 1) + MAIN_FWD = $$MODULE_INC_OUTDIR/$$fwd_hdr + MAIN_FWD_CONT = '$${LITERAL_HASH}include "$$relative_path($$dst_hdr, $$dirname(MAIN_FWD))"' + write_file($$MAIN_FWD, MAIN_FWD_CONT)|error() + touch($$MAIN_FWD, $$dst_hdr) + !git_build: QMAKE_DISTCLEAN += $$MAIN_FWD + injects = $$member(injects, 2, -1) + for (inject, injects) { + CLASS_FWD = $$MODULE_INC_OUTDIR/$$inject + CLASS_FWD_CONT = '$${LITERAL_HASH}include "$$fwd_hdr"' + write_file($$CLASS_FWD, CLASS_FWD_CONT)|error() + touch($$CLASS_FWD, $$dst_hdr) + !git_build: QMAKE_DISTCLEAN += $$CLASS_FWD + } +} + +autogen_warning = \ + "/* This file was generated by qmake with the info from /$$relative_path($$_PRO_FILE_, $$MODULE_BASE_INDIR). */" + +# Create a module master depends header +MODULE_MASTER_DEPS_HEADER = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$${MODULE_INCNAME}Depends +!build_pass { + MODULE_MASTER_DEPS_HEADER_CONT = $$autogen_warning + MODULE_MASTER_DEPS_HEADER_CONT += "$${LITERAL_HASH}ifdef __cplusplus /* create empty PCH in C mode */" + for(dep, MODULE_DEPENDS) { + depname = $$eval(QT.$${dep}.master_header) + isEmpty(depname): \ + depname = $$eval(QT.$${dep}.name) + MODULE_MASTER_DEPS_HEADER_CONT += "$${LITERAL_HASH}include <$$depname/$$depname>" + } + MODULE_MASTER_DEPS_HEADER_CONT += "$${LITERAL_HASH}endif" + write_file($$MODULE_MASTER_DEPS_HEADER, MODULE_MASTER_DEPS_HEADER_CONT)|error() + !git_build: QMAKE_DISTCLEAN += $$MODULE_MASTER_DEPS_HEADER +} +SYNCQT.HEADER_FILES += $$MODULE_MASTER_DEPS_HEADER + +# Automatically enable precompiled headers for Qt modules with more than 2 sources +combined_SOURCES = $$SOURCES $$OBJECTIVE_SOURCES +count(combined_SOURCES, 2, >) { + # except for Gcc/Windows: Larger precompiled headers crash cc1plus.exe + # (e.g. with i686-4.8.2-release-posix-dwarf-rt_v3-rev3) + !if(gcc:equals(QMAKE_HOST.os, Windows)):!equals(TEMPLATE, aux) { + !defined(PRECOMPILED_HEADER, "var"): PRECOMPILED_HEADER = $$MODULE_MASTER_DEPS_HEADER + } +} else { + CONFIG -= precompile_header +} +unset(combined_SOURCES) + +headersclean:!internal_module { + # Make sure that the header compiles with our strict options + hcleanDEFS = -DQT_NO_CAST_TO_ASCII=1 \ + -DQT_NO_CAST_FROM_ASCII=1 \ + -UQT_RESTRICTED_CAST_FROM_ASCII \ + -DQT_STRICT_ITERATORS \ + -DQT_NO_URL_CAST_FROM_STRING=1 \ + -DQT_NO_CAST_FROM_BYTEARRAY=1 \ + -DQT_NO_KEYWORDS=1 \ + -DQT_USE_QSTRINGBUILDER \ + -DQT_USE_FAST_OPERATOR_PLUS \ + -Dsignals=int \ + -Dslots=int \ + -Demit=public: \ + -Dforeach=public: \ + -Dforever=public: + + gcc:!rim_qcc { + # Turn on some extra warnings not found in -Wall -Wextra. + # Common to GCC, Clang and ICC (and other compilers that masquerade as GCC): + hcleanFLAGS = -Wall -Wextra -Werror \ + -Woverloaded-virtual -Wshadow -Wundef -Wfloat-equal \ + -Wnon-virtual-dtor -Wpointer-arith -Wformat-security \ + -Wno-long-long -Wno-variadic-macros -pedantic-errors + + intel_icc { + # these warnings are disabled because explicit constructors with zero or + # multiple arguments are permitted in C++11: + # 2304: non-explicit constructor with single argument may cause implicit type conversion + # 2305: declaration of 'explicit' constructor without a single argument is redundant + hcleanFLAGS += -wd2304,2305 + greaterThan(QT_ICC_MAJOR_VERSION, 13) { + # ICC 14+ has a bug with -Wshadow, emitting it for cases where there's no shadowing + # (issue ID 0000698329, task DPD200245740) + hcleanFLAGS -= -Wshadow + } + } else { + # options accepted by GCC and Clang + hcleanFLAGS += -Wchar-subscripts -Wold-style-cast + + !contains(QT_ARCH, arm):!contains(QT_ARCH, mips): \ + hcleanFLAGS += -Wcast-align + + greaterThan(QT_CLANG_MAJOR_VERSION, 3) { + hcleanFLAGS += -Wdouble-promotion + } greaterThan(QT_CLANG_MAJOR_VERSION, 2):greaterThan(QT_CLANG_MINOR_VERSION, 7) { + hcleanFLAGS += -Wdouble-promotion + } + + !clang { + # options accepted only by GCC + + greaterThan(QT_GCC_MAJOR_VERSION, 4) { + hcleanFLAGS += -Wdouble-promotion + } greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 4) { + hcleanFLAGS += -Wdouble-promotion + } + c++11 { + # only enabled for actual c++11 builds due to + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52806 + hcleanFLAGS += -Wzero-as-null-pointer-constant + } + } + } + + # Use strict mode C++11 or C++98, with no GNU extensions (see -pedantic-errors above). + # The module might set CONFIG += c++11, but it might also change QMAKE_CXXFLAGS_CXX11 + # or the module (or the mkspec) can set the C++11 flag on QMAKE_CXXFLAGS + # (or QMAKE_CXXFLAGS_{RELEASE,DEBUG} but that's unlikely). + c++11:contains(QMAKE_CXXFLAGS_CXX11, -std=gnu++11) { + hcleanFLAGS += -std=c++11 + } else: contains(QMAKE_CXXFLAGS, -std=gnu++11) { + hcleanFLAGS += -std=c++11 + } else: c++11:contains(QMAKE_CXXFLAGS_CXX11, -std=gnu++0x) { + hcleanFLAGS += -std=c++0x + } else: contains(QMAKE_CXXFLAGS, -std=gnu++0x) { + hcleanFLAGS += -std=c++0x + } else: !c++11:!contains(QMAKE_CXXFLAGS, -std=c++0x):!contains(QMAKE_CXXFLAGS, -std=c++11) { + hcleanFLAGS += -std=c++98 + } + + hcleanCOMMAND = $$QMAKE_CXX -c $(CXXFLAGS) $$hcleanFLAGS $(INCPATH) $$hcleanDEFS -xc++ ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + } else: win32-msvc2013 { + # 4180: qualifier applied to function type has no meaning; ignored + # 4458: declaration of 'identifier' hides class member + # -Za enables strict standards behavior, but we can't add it because + # and violate the standards. + hcleanFLAGS = -WX -W3 -wd4180 -wd4458 + hcleanCOMMAND = $$QMAKE_CXX -c $(CXXFLAGS) $$hcleanFLAGS $(INCPATH) $$hcleanDEFS -FI${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} \ + $$[QT_INSTALL_DATA/src]/mkspecs/features/data/dummy.cpp + } + + !isEmpty(hcleanCOMMAND):if(!qtConfig(debug_and_release)|CONFIG(release, debug|release)) { + CLEAN_HEADERS = + for (h, SYNCQT.CLEAN_HEADER_FILES) { + hh = $$split(h, :) + hr = $$member(hh, 1) + isEmpty(hr)|qtConfig($$hr): \ + CLEAN_HEADERS += $$member(hh, 0) + } + CLEAN_HEADERS -= $$HEADERSCLEAN_EXCLUDE + header_check.dependency_type = TYPE_C + header_check.CONFIG += no_link + header_check.output = ${QMAKE_VAR_OBJECTS_DIR}header_${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + header_check.input = CLEAN_HEADERS + header_check.variable_out = PRE_TARGETDEPS + header_check.name = headercheck ${QMAKE_FILE_IN} + header_check.commands = $$hcleanCOMMAND + silent:header_check.commands = @echo compiling[header] ${QMAKE_FILE_IN} && $$hcleanCOMMAND + QMAKE_EXTRA_COMPILERS += header_check + } + unset(hcleanCOMMAND) + unset(hcleanFLAGS) + unset(hcleanDEFS) +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_module_pris.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_module_pris.prf new file mode 100644 index 000000000..163f52f23 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_module_pris.prf @@ -0,0 +1,221 @@ +# +# 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. +# + +load(qt_build_paths) +force_independent|split_incpath: \ + CONFIG += need_fwd_pri +mod_work_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules +need_fwd_pri: \ + mod_inst_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst +else: \ + mod_inst_pfx = $$mod_work_pfx +!internal_module { + MODULE_ID = $$MODULE + mods_to_load = $$MODULE + !no_private_module { + MODULE_PRIVATE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE}_private.pri + mods_to_load += $${MODULE}_private + } +} else { + MODULE_ID = $${MODULE}_private + mods_to_load = $${MODULE}_private +} +need_fwd_pri: \ + pris_to_load = $$MODULE_ID +else: \ + pris_to_load = $$mods_to_load +MODULE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE_ID}.pri +MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri + +defineReplace(qtGetFeaturesForModule) { + enabled = $$unique(QT.$${1}.enabled_features) + disabled = $$unique(QT.$${1}.disabled_features) + result = \ + "QT.$${1}.enabled_features =$$join(enabled, " ", " ")" \ + "QT.$${1}.disabled_features =$$join(disabled, " ", " ")" + return($$result) +} + +defineReplace(qtGetExportsForModule) { + result = + for (var, QT.$${1}.exports): \ + result += "$$var = $$val_escape($$var)" + return($$result) +} + +defineReplace(qtExportLibsForModule) { + result = + for (lib, QT.$${1}.libraries) { + NAME = $$upper($$lib) + vars = \ + QMAKE_LIBS_$$NAME QMAKE_LIBS_$${NAME}_DEBUG QMAKE_LIBS_$${NAME}_RELEASE \ + QMAKE_DEFINES_$$NAME QMAKE_INCDIR_$$NAME + for (var, vars) { + defined($$var, var): \ + result += "$$var = $$val_escape($$var)" + } + } + return($$result) +} + +!build_pass { + + # Create a module .pri file + host_build: \ + module_libs = "\$\$QT_MODULE_HOST_LIB_BASE" + else: \ + module_libs = "\$\$QT_MODULE_LIB_BASE" + # In addition to the library's private deps, the private module's deps + # are logically runtime deps of the public module. + runtime_deps = $$QT_PRIVATE $$QT_FOR_PRIVATE + !isEmpty(runtime_deps): \ + module_rundep = "QT.$${MODULE_ID}.run_depends = $$replace(runtime_deps, -private$, _private)" + else: \ + module_rundep = + module_build_type = v2 + static: \ + module_build_type += staticlib + lib_bundle: \ + module_build_type += lib_bundle + module_frameworks: \ + MODULE_FRAMEWORKS = " \$\$QT_MODULE_LIB_BASE" + internal_module: \ + module_build_type += internal_module + ltcg: \ + module_build_type += ltcg + module_module = + !equals(TEMPLATE, aux) { + module_module = $$TARGET$$QT_LIBINFIX + !lib_bundle: module_module ~= s,^Qt,Qt$$QT_MAJOR_VERSION, + } + !isEmpty(MODULE_CONFIG): \ + module_config = "QT.$${MODULE_ID}.CONFIG = $$MODULE_CONFIG" + else: \ + module_config = + !isEmpty(MODULE_PLUGIN_TYPES): \ + module_plugtypes = "QT.$${MODULE_ID}.plugin_types = $$replace(MODULE_PLUGIN_TYPES, /[^.]+\\.[^.]+$, )" + else: \ + module_plugtypes = + !isEmpty(MODULE_MASTER_HEADER): \ + module_master = "QT.$${MODULE_ID}.master_header = $$MODULE_MASTER_HEADER" + else: \ + module_master = + MODULE_PRI_CONT = \ + "QT.$${MODULE_ID}.VERSION = $${VERSION}" \ + "" \ + "QT.$${MODULE_ID}.name = $$TARGET" \ + "QT.$${MODULE_ID}.module = $$module_module" \ + "QT.$${MODULE_ID}.libs = $$module_libs" \ + $$module_master \ + "QT.$${MODULE_ID}.includes = $$MODULE_INCLUDES" \ + "QT.$${MODULE_ID}.frameworks =$$MODULE_FRAMEWORKS" + !host_build: MODULE_PRI_CONT += \ + "QT.$${MODULE_ID}.bins = \$\$QT_MODULE_BIN_BASE" \ + $$module_plugtypes + MODULE_PRI_CONT += \ + "QT.$${MODULE_ID}.depends =$$join(MODULE_DEPENDS, " ", " ")" \ + $$module_rundep \ + "QT.$${MODULE_ID}.uses =$$join(QMAKE_USE, " ", " ")" \ + "QT.$${MODULE_ID}.module_config =$$join(module_build_type, " ", " ")" \ + $$module_config \ + "QT.$${MODULE_ID}.DEFINES = $$val_escape(MODULE_DEFINES)" \ + $$qtGetFeaturesForModule($$MODULE_ID) \ + $$qtGetExportsForModule($$MODULE_ID) \ + "QT_CONFIG +=$$join(QT.$${MODULE_ID}.QT_CONFIG, " ", " ")" \ + "" \ + "QT_MODULES += $$MODULE" + winrt: MODULE_PRI_CONT += \ + "QT.$${MODULE_ID}.winrt_capabilities =$$join(MODULE_WINRT_CAPABILITIES, " ", " ")" \ + "QT.$${MODULE_ID}.winrt_capabilities_device =$$join(MODULE_WINRT_CAPABILITIES_DEVICE, " ", " ")" + write_file($$MODULE_PRI, MODULE_PRI_CONT)|error() + !internal_module:!no_private_module { + module_build_type += internal_module + private_deps = $$QT + private_deps -= $$MODULE_DEPENDS + private_deps += $$MODULE $$QT_FOR_PRIVATE + private_deps ~= s,-private$,_private,g + MODULE_PRIVATE_PRI_CONT = \ + "QT.$${MODULE}_private.VERSION = $${VERSION}" \ + "" \ + "QT.$${MODULE}_private.name = $${TARGET}" \ # Same name as base module + "QT.$${MODULE}_private.module =" \ + "QT.$${MODULE}_private.libs = $$module_libs" \ + "QT.$${MODULE}_private.includes = $$MODULE_PRIVATE_INCLUDES" \ + "QT.$${MODULE}_private.frameworks =" \ + "QT.$${MODULE}_private.depends = $$private_deps" \ + "QT.$${MODULE}_private.uses =$$join(QMAKE_USE_FOR_PRIVATE, " ", " ")" \ + "QT.$${MODULE}_private.module_config =$$join(module_build_type, " ", " ")" \ + $$qtGetFeaturesForModule($${MODULE}_private) \ + "" \ + $$qtExportLibsForModule($${MODULE}_private) + write_file($$MODULE_PRIVATE_PRI, MODULE_PRIVATE_PRI_CONT)|error() + } + MODULE_PRI_FILES = $$MODULE_PRI $$MODULE_PRIVATE_PRI + + need_fwd_pri { + + !git_build: \ + MODULE_BASE_INCDIR = $$MODULE_BASE_INDIR + else: \ + MODULE_BASE_INCDIR = $$MODULE_BASE_OUTDIR + + # Create a forwarding module .pri file + MODULE_FWD_PRI_CONT = \ + "QT_MODULE_BIN_BASE = $$val_escape(MODULE_BASE_OUTDIR)/bin" \ + "QT_MODULE_INCLUDE_BASE = $$val_escape(MODULE_BASE_INCDIR)/include" \ + "QT_MODULE_LIB_BASE = $$val_escape(MODULE_BASE_OUTDIR)/lib" \ + "QT_MODULE_HOST_LIB_BASE = $$val_escape(MODULE_BASE_OUTDIR)/lib" \ + "include($$val_escape(MODULE_PRI))" \ + "QT.$${MODULE_ID}.priority = 1" + !internal_module:!no_private_module: MODULE_FWD_PRI_CONT += \ + "include($$val_escape(MODULE_PRIVATE_PRI))" \ + "QT.$${MODULE}_private.priority = 1" + !isEmpty(MODULE_FWD_INCLUDES) { + !lib_bundle: \ + pls = + + MODULE_FWD_PRI_CONT += \ + "QT.$${MODULE_ID}.includes $$pls= $$MODULE_FWD_INCLUDES" + !internal_module: \ + MODULE_FWD_PRI_CONT += \ + "QT.$${MODULE}_private.includes $$pls= $$MODULE_FWD_PRIVATE_INCLUDES" + } + write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error() + touch($$MODULE_FWD_PRI, $$MODULE_PRI) + MODULE_PRI_FILES += $$MODULE_FWD_PRI + + } else { + + # This is needed for the direct include() below. Mirrors qt_config.prf + QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS] + QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS] + QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS] + QT_MODULE_HOST_LIB_BASE = $$[QT_HOST_LIBS] + + } + + # Then, inject the new module into the current cache state + !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_PRI): \ # before the actual include()! + cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, MODULE_PRI_FILES) + for(pri, pris_to_load): \ + include($$mod_work_pfx/qt_lib_$${pri}.pri) + for(mod, mods_to_load) { + for(var, $$list(VERSION MAJOR_VERSION MINOR_VERSION PATCH_VERSION \ + name module depends run_depends plugin_types module_config CONFIG DEFINES \ + priority includes bins libs frameworks \ + winrt_capabilities winrt_capabilities_device \ + )):defined(QT.$${mod}.$$var, var):cache(QT.$${mod}.$$var, transient) + } + cache(QT_MODULES, transient) + +} # !build_pass + +# Schedule the regular .pri file for installation +CONFIG += qt_install_module diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_parts.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_parts.prf new file mode 100644 index 000000000..67e218ca7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_parts.prf @@ -0,0 +1,94 @@ +# +# 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. +# + +# Ensure that each module has a .qmake.cache when properly qmake'd. +cache() + +load(qt_configure) + +load(qt_build_config) + +TEMPLATE = subdirs + +bp = $$eval($$upper($$TARGET)_BUILD_PARTS) +!isEmpty(bp): QT_BUILD_PARTS = $$bp + +exists($$_PRO_FILE_PWD_/src/src.pro) { + sub_src.subdir = src + sub_src.target = sub-src + SUBDIRS += sub_src + + exists($$_PRO_FILE_PWD_/tools/tools.pro) { + sub_tools.subdir = tools + sub_tools.target = sub-tools + sub_tools.depends = sub_src + # conditional treatment happens on a case-by-case basis + SUBDIRS += sub_tools + } +} + +exists($$_PRO_FILE_PWD_/examples/examples.pro) { + sub_examples.subdir = examples + sub_examples.target = sub-examples + contains(SUBDIRS, sub_src): sub_examples.depends = sub_src + examples_need_tools: sub_examples.depends += sub_tools + !contains(QT_BUILD_PARTS, examples): sub_examples.CONFIG = no_default_target no_default_install + SUBDIRS += sub_examples +} + +# Some modules still have these +exists($$_PRO_FILE_PWD_/demos/demos.pro) { + sub_demos.subdir = demos + sub_demos.target = sub-demos + contains(SUBDIRS, sub_src): sub_demos.depends = sub_src + examples_need_tools: sub_demos.depends += sub_tools + !contains(QT_BUILD_PARTS, examples): sub_demos.CONFIG = no_default_target no_default_install + SUBDIRS += sub_demos +} + +exists($$_PRO_FILE_PWD_/tests/tests.pro) { + sub_tests.subdir = tests + sub_tests.target = sub-tests + contains(SUBDIRS, sub_src): sub_tests.depends = sub_src # The tests may have a run-time only dependency on other parts + tests_need_tools: sub_tests.depends += sub_tools + sub_tests.CONFIG = no_default_install + !contains(QT_BUILD_PARTS, tests) { + sub_tests.CONFIG += no_default_target + } else: !uikit { + # Make sure these are there in case we need them + sub_tools.CONFIG -= no_default_target + sub_examples.CONFIG -= no_default_target + sub_demos.CONFIG -= no_default_target + } + SUBDIRS += sub_tests +} + +QT_BUILD_PARTS -= libs tools examples tests +!isEmpty(QT_BUILD_PARTS): warning("Unknown build part(s): $$QT_BUILD_PARTS") + +QMAKE_DISTCLEAN += \ + .qmake.cache \ + config.cache \ + config.log \ + mkspecs/modules/*.pri \ + mkspecs/modules-inst/*.pri + +tests = $$files($$_PRO_FILE_PWD_/config.tests/*.pro, true) +testdirs = +for (t, tests): \ + testdirs += $$relative_path($$dirname(t), $$_PRO_FILE_PWD_) +testdirs = $$unique(testdirs) +for (td, testdirs) { + t = $$basename(td)-distclean + $${t}.commands = -$$QMAKE_CD $$shell_path($$td) && $(MAKE) distclean + QMAKE_EXTRA_TARGETS += $$t + DISTCLEAN_DEPS += $$t +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_plugin.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_plugin.prf new file mode 100644 index 000000000..14fc5f9a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_plugin.prf @@ -0,0 +1,101 @@ +# +# 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. +# + +load(qt_build_paths) + +isEmpty(PLUGIN_TYPE): error("PLUGIN_TYPE (plugins/ subdirectory) needs to be defined.") + +TEMPLATE = lib +CONFIG += plugin +DESTDIR = $$MODULE_BASE_OUTDIR/plugins/$$PLUGIN_TYPE + +win32:CONFIG(shared, static|shared) { + # Embed a VERSIONINFO resource into the plugin's DLL. + isEmpty(VERSION): VERSION = $$QT_VERSION + CONFIG += skip_target_version_ext +} + +tool_plugin { + !build_pass:qtConfig(debug_and_release): CONFIG += release +} else:if(win32|mac):!macx-xcode { + qtConfig(debug_and_release): CONFIG += debug_and_release + qtConfig(build_all): CONFIG += build_all +} + +CONFIG += relative_qt_rpath # Qt's plugins should be relocatable + +# Qt libraries should only use Application Extension safe APIs +darwin:!no_app_extension_api_only: CONFIG += app_extension_api_only + +CONFIG(static, static|shared)|prefix_build { + isEmpty(MODULE): MODULE = $$basename(TARGET) + + mod_work_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules + force_independent: \ + mod_inst_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst + else: \ + mod_inst_pfx = $$mod_work_pfx + MODULE_PRI = $$mod_inst_pfx/qt_plugin_$${MODULE}.pri + MODULE_FWD_PRI = $$mod_work_pfx/qt_plugin_$${MODULE}.pri + + !build_pass { + qt_plugin_deps = $$QT $$QT_PRIVATE + qt_plugin_deps ~= s,-private$,_private,g + + MODULE_PRI_CONT = \ + "QT_PLUGIN.$${MODULE}.TYPE = $$PLUGIN_TYPE" \ + "QT_PLUGIN.$${MODULE}.EXTENDS =$$join(PLUGIN_EXTENDS, " ", " ")" \ + "QT_PLUGIN.$${MODULE}.DEPENDS = $$qt_plugin_deps" \ + "QT_PLUGIN.$${MODULE}.CLASS_NAME = $$PLUGIN_CLASS_NAME" \ + "QT_PLUGINS += $$MODULE" + write_file($$MODULE_PRI, MODULE_PRI_CONT)|error() + MODULE_PRI_FILES = $$MODULE_PRI + + force_independent { + + # Create a forwarding module .pri file + MODULE_FWD_PRI_CONT = \ + "QT_PLUGIN.$${MODULE}.PATH = $$MODULE_BASE_OUTDIR/plugins" \ + "include($$MODULE_PRI)" + write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error() + touch($$MODULE_FWD_PRI, $$MODULE_PRI) + MODULE_PRI_FILES += $$MODULE_FWD_PRI + + } + + # Then, inject the new module into the current cache state + !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_FWD_PRI): \ # before the actual include()! + cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, MODULE_PRI_FILES) + include($$MODULE_FWD_PRI) + for(var, $$list(TYPE EXTENDS CLASS_NAME PATH)): \ + defined(QT_PLUGIN.$${MODULE}.$$var, var): \ + cache(QT_PLUGIN.$${MODULE}.$$var, transient) + cache(QT_PLUGINS, transient) + } + + CONFIG(static, static|shared) { + pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules + pritarget.files = $$MODULE_PRI + INSTALLS += pritarget + } +} + +target.path = $$[QT_INSTALL_PLUGINS]/$$PLUGIN_TYPE +INSTALLS += target + +TARGET = $$qt5LibraryTarget($$TARGET) + +CONFIG += create_cmake + +load(qt_targets) +load(qt_common) + +QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_targets.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_targets.prf new file mode 100644 index 000000000..49f7e6bd4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_targets.prf @@ -0,0 +1,4 @@ +QMAKE_TARGET_COMPANY = The Qt Company Ltd. +isEmpty(QMAKE_TARGET_PRODUCT): QMAKE_TARGET_PRODUCT = Qt5 +isEmpty(QMAKE_TARGET_DESCRIPTION): QMAKE_TARGET_DESCRIPTION = C++ Application Development Framework +QMAKE_TARGET_COPYRIGHT = Copyright (C) 2017 The Qt Company Ltd. diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_tool.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_tool.prf new file mode 100644 index 000000000..a8d589f0f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/qt_tool.prf @@ -0,0 +1,78 @@ +# +# 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. +# + +CONFIG += no_launch_target +load(qt_app) + +CONFIG += console +DEFINES *= QT_USE_QSTRINGBUILDER + +# If we are doing a prefix build, create a "module" pri which enables +# qtPrepareTool() to work with the non-installed build. +# Non-bootstrapped tools always need this because of the environment setup. +!build_pass:if(!host_build|!force_bootstrap|force_independent|!isEmpty(HOST_QT_TOOLS)) { + isEmpty(MODULE):MODULE = $$TARGET + + load(qt_build_paths) + + TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_tool_$${MODULE}.pri + + vars = binary depends + + !host_build|isEmpty(HOST_QT_TOOLS) { + load(resolve_target) + + !host_build|!force_bootstrap: MODULE_DEPENDS = $$replace(QT, -private$, _private) + + !isEmpty(QT_TOOL_ENV) { + vars += envvars + module_var_names = + module_var_sets = + for(var, QT_TOOL_ENV) { + vars += env.$${var}.name env.$${var}.value + module_var_names += QT_TOOL.$${MODULE}.env.$${var} + module_var_sets += \ + "QT_TOOL.$${MODULE}.env.$${var}.name = $$val_escape($${var}.name)" \ + "QT_TOOL.$${MODULE}.env.$${var}.value = $$val_escape($${var}.value)" + } + module_envvars = \ + "QT_TOOL.$${MODULE}.envvars = $$module_var_names" \ + $$module_var_sets + } else { + module_envvars = + } + + bin = $$system_path($$QMAKE_RESOLVED_TARGET) + } else { + bin = $${HOST_QT_TOOLS}/$${TARGET} + equals(QMAKE_HOST.os, Windows): bin = $${bin}.exe + bin = $$system_path($$bin) + } + + TOOL_PRI_CONT = \ + "QT_TOOL.$${MODULE}.binary = $$val_escape(bin)" \ + "QT_TOOL.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" \ + $$module_envvars + write_file($$TOOL_PRI, TOOL_PRI_CONT)|error() + + # Then, inject the new tool into the current cache state + !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$TOOL_PRI) { # before the actual include()! + added = $$TOOL_PRI + cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, added) + unset(added) + } + include($$TOOL_PRI) + for(var, vars): \ + cache(QT_TOOL.$${MODULE}.$$var, transient) + +} +# The variable is re-used by qtPrepareTool(), and we really don't want that. +unset(QT_TOOL_ENV) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/resolve_config.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/resolve_config.prf new file mode 100644 index 000000000..816c3b680 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/resolve_config.prf @@ -0,0 +1,59 @@ +# +# 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. +# + +staticlib: \ + CONFIG += static +else: dll: \ + CONFIG += shared + +CONFIG(static, static|shared) { + CONFIG -= shared dll + contains(TEMPLATE, ".*lib"): CONFIG += staticlib +} else { + CONFIG -= static staticlib + contains(TEMPLATE, ".*lib"): CONFIG += dll +} + +!macx-xcode: \ + addExclusiveBuilds(shared, static) + +CONFIG(debug, debug|release) { + CONFIG -= release + !force_debug_plist:debug_and_release: \ + CONFIG += no_plist +} else { + CONFIG -= debug +} + +!macx-xcode { + addExclusiveBuilds(debug, release) +} else { + # The Xcode generator always generates project files with + # debug and release configurations, regardless of whether + # or not debug_and_release is active. + for(build, $$list(debug release)) { + suffix = + qtConfig(debug_and_release) { + equals(build, debug): \ + suffix = _debug + } else { + contains(QT_CONFIG, debug): \ + suffix = _debug + } + + library_suffix_$${build}.name = $$QMAKE_XCODE_LIBRARY_SUFFIX_SETTING + library_suffix_$${build}.value = $$suffix + library_suffix_$${build}.build = $$build + QMAKE_MAC_XCODE_SETTINGS += library_suffix_$${build} + + CONFIG *= xcode_dynamic_library_suffix + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/resolve_target.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/resolve_target.prf new file mode 100644 index 000000000..a9fe0d76d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/resolve_target.prf @@ -0,0 +1,102 @@ +# +# 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. +# + +load(resolve_config) + +exclusive_builds: load(exclusive_builds_post) + +QMAKE_RESOLVED_TARGET = $$absolute_path($$DESTDIR, $$OUT_PWD)/ + +win32 { + contains(TEMPLATE, .*lib) { + !skip_target_version_ext:isEmpty(TARGET_VERSION_EXT):!isEmpty(VERSION) { + TARGET_VERSION_EXT = $$section(VERSION, ., 0, 0) + } + static:TARGET_EXT = .lib + else:TARGET_EXT = .dll + } else { + TARGET_EXT = .exe + } + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${TARGET}$${TARGET_VERSION_EXT}$${TARGET_EXT} +} else { + contains(TEMPLATE, .*lib):!if(plugin:no_plugin_name_prefix): LIBPREFIX = lib + + mac { + equals(TEMPLATE, lib) { + plugin:plugin_bundle { + !isEmpty(QMAKE_PLUGIN_BUNDLE_NAME): \ + plugin_target = $$QMAKE_PLUGIN_BUNDLE_NAME + else: \ + plugin_target = $$TARGET + QMAKE_RESOLVED_BUNDLE = $${QMAKE_RESOLVED_TARGET}$${plugin_target}.plugin + !shallow_bundle: \ + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/Contents/MacOS/$${TARGET} + else: \ + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}$${TARGET} + } else: !plugin:lib_bundle { + !isEmpty(QMAKE_FRAMEWORK_BUNDLE_NAME): \ + framework_target = $$QMAKE_FRAMEWORK_BUNDLE_NAME + else: \ + framework_target = $$TARGET + QMAKE_RESOLVED_BUNDLE = $${QMAKE_RESOLVED_TARGET}$${framework_target}.framework + !shallow_bundle { + TEMP_VERSION = $$section(VERSION, ., 0, 0) + isEmpty(TEMP_VERSION):TEMP_VERSION = A + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/Versions/$${TEMP_VERSION}/$${TARGET} + } else { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/$${TARGET} + } + } else { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${LIBPREFIX}$${TARGET} + !plugin { + TEMP_VERSION = $$section(VERSION, ., 0, 0) + isEmpty(TEMP_VERSION):TEMP_VERSION = 1 + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}.$${TEMP_VERSION} + } + static:QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}.$${QMAKE_EXTENSION_STATICLIB} + else:QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}.$${QMAKE_EXTENSION_SHLIB} + } + } else { + app_bundle { + !isEmpty(QMAKE_APPLICATION_BUNDLE_NAME): \ + app_target = $$QMAKE_APPLICATION_BUNDLE_NAME + else: \ + app_target = $$TARGET + QMAKE_RESOLVED_BUNDLE = $${QMAKE_RESOLVED_TARGET}$${app_target}.app + !shallow_bundle: \ + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/Contents/MacOS/$${TARGET} + else: \ + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/$${TARGET} + } else { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${TARGET} + } + } + } else { + equals(TEMPLATE, lib) { + static { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${LIBPREFIX}$${TARGET}.$${QMAKE_EXTENSION_STATICLIB} + } else: plugin|unversioned_libname { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${LIBPREFIX}$${TARGET}.$${QMAKE_EXTENSION_SHLIB} + } else { + TEMP_VERSION = $$VERSION + isEmpty(TEMP_VERSION):TEMP_VERSION = 1.0.0 + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${LIBPREFIX}$${TARGET}.$${QMAKE_EXTENSION_SHLIB}.$${TEMP_VERSION} + } + } else { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${TARGET} + } + } +} + +unset(TARGET_EXT) +unset(LIBPREFIX) +unset(TEMP_VERSION) + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/resources.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/resources.prf new file mode 100644 index 000000000..de769b4b8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/resources.prf @@ -0,0 +1,109 @@ +qtPrepareTool(QMAKE_RCC, rcc, _DEP) + +isEmpty(RCC_DIR):RCC_DIR = . +isEmpty(QMAKE_MOD_RCC):QMAKE_MOD_RCC = qrc + +!contains(QMAKE_RESOURCE_FLAGS, -root):!isEmpty(QMAKE_RESOURCE_ROOT):QMAKE_RESOURCE_FLAGS += -root $$QMAKE_RESOURCE_ROOT +!contains(QMAKE_RESOURCE_FLAGS, -name): QMAKE_RESOURCE_FLAGS += -name ${QMAKE_FILE_BASE} + +# http://www.w3.org/TR/xml/#syntax +defineReplace(xml_escape) { + 1 ~= s,&,&, + 1 ~= s,\',', + 1 ~= s,\",", + 1 ~= s,<,<, + 1 ~= s,>,>, + return($$1) +} + +RESOURCES += qmake_immediate +for(resource, RESOURCES) { + # Regular case of user qrc file + contains(resource, ".*\\.qrc$"): \ + next() + + # Fallback for stand-alone files/directories + !defined($${resource}.files, var) { + !equals(resource, qmake_immediate) { + !exists($$absolute_path($$resource, $$_PRO_FILE_PWD_)): \ + warning("Failure to find: $$resource") + qmake_immediate.files += $$resource + } + RESOURCES -= $$resource + next() + } + + resource_file = $$RCC_DIR/qmake_$${resource}.qrc + + isEmpty(BUILDS)|build_pass { + # Collection of files, generate qrc file + prefix = $$eval($${resource}.prefix) + isEmpty(prefix): \ + prefix = "/" + + resource_file_content = \ + "" \ + "" + + abs_base = $$absolute_path($$eval($${resource}.base), $$_PRO_FILE_PWD_) + + for(file, $${resource}.files) { + abs_path = $$absolute_path($$file, $$_PRO_FILE_PWD_) + files = $$files($$abs_path/*, true) + isEmpty(files): \ + files = $$abs_path + for (file, files) { + exists($$file/*): next() # exclude directories + alias = $$relative_path($$file, $$abs_base) + resource_file_content += \ + "$$xml_escape($$file)" + } + } + + resource_file_content += \ + "" \ + "" + + !write_file($$OUT_PWD/$$resource_file, resource_file_content): \ + error() + } + + RESOURCES -= $$resource + RESOURCES += $$resource_file +} + +rcc.input = RESOURCES +rcc.name = RCC ${QMAKE_FILE_IN} +rcc.depend_command = $$QMAKE_RCC_DEP -list $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} +rcc.CONFIG += add_inputs_as_makefile_deps + +!resources_big|ltcg|macx-xcode|contains(TEMPLATE, "vc.*") { + +rcc.output = $$RCC_DIR/$${first(QMAKE_MOD_RCC)}_${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} +rcc.commands = $$QMAKE_RCC $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} +rcc.variable_out = SOURCES + +} else { + +isEmpty(RCC_CXX):RCC_CXX = $$QMAKE_CXX $(CXXFLAGS) +RCC_OUT_BASE = $$RCC_DIR/$${first(QMAKE_MOD_RCC)}_${QMAKE_FILE_BASE} +RCC_CPP = $$RCC_OUT_BASE$${first(QMAKE_EXT_CPP)} +RCC_TMP = $${RCC_OUT_BASE}.tmp$${first(QMAKE_EXT_OBJ)} +RCC_OBJ = $$RCC_OUT_BASE$${first(QMAKE_EXT_OBJ)} + +msvc: RCC_CXX_O_FLAG = "-Fo" +else: RCC_CXX_O_FLAG = "-o " + +rcc.output = $$RCC_OBJ +rcc.commands = \ + $$QMAKE_RCC $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -pass 1 -o $$RCC_CPP && \ + $$RCC_CXX -c $$RCC_CPP $$RCC_CXX_O_FLAG$$RCC_TMP && \ + $$QMAKE_RCC $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -pass 2 -temp $$RCC_TMP -o ${QMAKE_FILE_OUT} +rcc.clean += $$RCC_CPP $$RCC_TMP + +} + +rcc.depends += $$QMAKE_RCC_EXE +silent:rcc.commands = @echo rcc ${QMAKE_FILE_IN} && $$rcc.commands +else:rcc.commands ~= s/&&/$$escape_expand(\\n\\t)/g +QMAKE_EXTRA_COMPILERS += rcc diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/sanitizer.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/sanitizer.prf new file mode 100644 index 000000000..9e7ff0218 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/sanitizer.prf @@ -0,0 +1,30 @@ +# Sanitizer flags + + +sanitize_address { + QMAKE_CFLAGS += $$QMAKE_SANITIZE_ADDRESS_CFLAGS + QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_ADDRESS_CXXFLAGS + QMAKE_LFLAGS += $$QMAKE_SANITIZE_ADDRESS_LFLAGS +} + +sanitize_memory { + QMAKE_CFLAGS += $$QMAKE_SANITIZE_MEMORY_CFLAGS + QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_MEMORY_CXXFLAGS + QMAKE_LFLAGS += $$QMAKE_SANITIZE_MEMORY_LFLAGS +} + +sanitize_thread { + QMAKE_CFLAGS += $$QMAKE_SANITIZE_THREAD_CFLAGS + QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_THREAD_CXXFLAGS + QMAKE_LFLAGS += $$QMAKE_SANITIZE_THREAD_LFLAGS +} + +sanitize_undefined { + QMAKE_CFLAGS += $$QMAKE_SANITIZE_UNDEFINED_CFLAGS + QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_UNDEFINED_CXXFLAGS + QMAKE_LFLAGS += $$QMAKE_SANITIZE_UNDEFINED_LFLAGS +} + +QMAKE_CFLAGS += $$QMAKE_COMMON_SANITIZE_CFLAGS +QMAKE_CXXFLAGS += $$QMAKE_COMMON_SANITIZE_CXXFLAGS + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/silent.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/silent.prf new file mode 100644 index 000000000..6d7c17041 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/silent.prf @@ -0,0 +1,11 @@ +!macx-xcode { + msvc { + QMAKE_CC = @$$QMAKE_CC + QMAKE_CXX = @$$QMAKE_CXX + } else { + QMAKE_CC = @echo compiling $< && $$QMAKE_CC + QMAKE_CXX = @echo compiling $< && $$QMAKE_CXX + } + !contains(QMAKE_LINK, "@:"):QMAKE_LINK = @echo linking $@ && $$QMAKE_LINK + QMAKE_LINK_SHLIB = @echo linking $@ && $$QMAKE_LINK_SHLIB +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/simd.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/simd.prf new file mode 100644 index 000000000..953fc52c6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/simd.prf @@ -0,0 +1,142 @@ +# +# 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. +# + +# Get the SIMD flags +load(qt_build_config) + +# Set QT_CPU_FEATURES for convenience +QT_CPU_FEATURES = $$eval(QT_CPU_FEATURES.$$QT_ARCH) + +# +# Set up compilers for SIMD (SSE/AVX, NEON etc) +# +defineTest(addSimdCompiler) { + name = $$1 + upname = $$upper($$name) + headers_var = $${upname}_HEADERS + sources_var = $${upname}_SOURCES + asm_var = $${upname}_ASM + + CONFIG($$1) { + cflags = $$eval(QMAKE_CFLAGS_$${upname}) + ltcg: cflags += $$QMAKE_CFLAGS_DISABLE_LTCG + contains(QT_CPU_FEATURES, $$name) { + # Default compiler settings include this feature, so just add to SOURCES + SOURCES += $$eval($$sources_var) + export(SOURCES) + } else { + # We need special compiler flags + $${name}_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) $$cflags $(INCPATH) ${QMAKE_FILE_IN} + msvc: $${name}_compiler.commands += -Fo${QMAKE_FILE_OUT} + else: $${name}_compiler.commands += -o ${QMAKE_FILE_OUT} + + $${name}_compiler.dependency_type = TYPE_C + $${name}_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + $${name}_compiler.input = $$sources_var + $${name}_compiler.variable_out = OBJECTS + $${name}_compiler.name = compiling[$${name}] ${QMAKE_FILE_IN} + silent: $${name}_compiler.commands = @echo compiling[$${name}] ${QMAKE_FILE_IN} && $$eval($${name}_compiler.commands) + QMAKE_EXTRA_COMPILERS += $${name}_compiler + + export($${name}_compiler.commands) + export($${name}_compiler.dependency_type) + export($${name}_compiler.output) + export($${name}_compiler.input) + export($${name}_compiler.variable_out) + export($${name}_compiler.name) + } + + # We always need an assembler (need to run the C compiler and without precompiled headers) + msvc { + # Don't know how to run MSVC's assembler... + !isEmpty($$asm_var): error("Sorry, not implemented: assembling $$upname for MSVC.") + } else: false { + # This is just for the IDE + SOURCES += $$eval($$asm_var) + export(SOURCES) + } else { + $${name}_assembler.commands = $$QMAKE_CC -c $(CFLAGS) + !contains(QT_CPU_FEATURES, $${name}): $${name}_assembler.commands += $$cflags + clang:no_clang_integrated_as: $${name}_assembler.commands += -fno-integrated-as + $${name}_assembler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + $${name}_assembler.dependency_type = TYPE_C + $${name}_assembler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + $${name}_assembler.input = $$asm_var + $${name}_assembler.variable_out = OBJECTS + $${name}_assembler.name = assembling[$${name}] ${QMAKE_FILE_IN} + silent: $${name}_assembler.commands = @echo assembling[$${name}] ${QMAKE_FILE_IN} && $$eval($${name}_assembler.commands) + QMAKE_EXTRA_COMPILERS += $${name}_assembler + + export($${name}_assembler.commands) + export($${name}_assembler.dependency_type) + export($${name}_assembler.output) + export($${name}_assembler.input) + export($${name}_assembler.variable_out) + export($${name}_assembler.name) + } + + HEADERS += $$eval($$headers_var) + export(HEADERS) + export(QMAKE_EXTRA_COMPILERS) + } +} +addSimdCompiler(sse2) +addSimdCompiler(sse3) +addSimdCompiler(ssse3) +addSimdCompiler(sse4_1) +addSimdCompiler(sse4_2) +addSimdCompiler(avx) +addSimdCompiler(avx2) +addSimdCompiler(avx512f) +addSimdCompiler(avx512cd) +addSimdCompiler(avx512er) +addSimdCompiler(avx512pf) +addSimdCompiler(avx512dq) +addSimdCompiler(avx512bw) +addSimdCompiler(avx512vl) +addSimdCompiler(avx512ifma) +addSimdCompiler(avx512vbmi) +addSimdCompiler(f16c) +addSimdCompiler(neon) +addSimdCompiler(mips_dsp) +addSimdCompiler(mips_dspr2) + +# Follow the Intel compiler's lead and define profiles of AVX512 instructions +defineTest(addAvx512Profile) { + name = $$1 + dependencies = $$2 + upname = $$upper($$name) + varname = QMAKE_CFLAGS_$$upname + + cpu_features_missing = + cflags = $$QMAKE_CFLAGS_AVX512F + for(part, dependencies) { + !CONFIG($$part): return() # Profile isn't supported by the compiler + + uppart = $$upper($$part) + cflags *= $$eval(QMAKE_CFLAGS_$${uppart}) + !contains(QT_CPU_FEATURES, $$uppart): cpu_features_missing += $$uppart + } + + CONFIG += $$name + isEmpty(cpu_features_missing): QT_CPU_FEATURES += $$name + $$varname = $$cflags + + export(QT_CPU_FEATURES) + export(CONFIG) + export($$varname) + addSimdCompiler($$name) +} +addAvx512Profile(avx512common, avx512cd) +addAvx512Profile(avx512mic, avx512cd avx512er avx512pf) +addAvx512Profile(avx512core, avx512cd avx512bw avx512dq avx512vl) +addAvx512Profile(avx512ifmavl, avx512ifma avx512vl) +addAvx512Profile(avx512vbmivl, avx512vbmi avx512vl) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/spec_post.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/spec_post.prf new file mode 100644 index 000000000..432bb5151 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/spec_post.prf @@ -0,0 +1,130 @@ +# This file is loaded by qmake right after loading the qmakespec. +# Afterwards, the project's .qmake.conf and .qmake.cache are loaded +# (if present). +# Note that up to this point, nothing specific to a particular SUBDIRS +# project or build pass can be done. + +isEmpty(MAKEFILE_GENERATOR):error("Qmake spec does not set MAKEFILE_GENERATOR.") +isEmpty(QMAKE_PLATFORM) { + isEmpty(TARGET_PLATFORM) { + equals(MAKEFILE_GENERATOR, UNIX) { + equals(QMAKE_HOST.os, Darwin): \ + TARGET_PLATFORM = macx # backwards compatibility; cannot change + else: \ + TARGET_PLATFORM = unix + } else:if(equals(MAKEFILE_GENERATOR, MSVC.NET) \ + |equals(MAKEFILE_GENERATOR, MSBUILD) \ + |equals(MAKEFILE_GENERATOR, MINGW)) { + TARGET_PLATFORM = win32 + } else:if(equals(MAKEFILE_GENERATOR, PROJECTBUILDER) \ + |equals(MAKEFILE_GENERATOR, XCODE)) { + TARGET_PLATFORM = macx + } else { + error("Qmake spec sets an invalid MAKEFILE_GENERATOR.") + } + } + equals(TARGET_PLATFORM, unix): \ + QMAKE_PLATFORM = unix + else:equals(TARGET_PLATFORM, macx): \ + QMAKE_PLATFORM = macos osx macx mac darwin unix + else:equals(TARGET_PLATFORM, win32): \ + QMAKE_PLATFORM = win32 + else: \ + error("Qmake spec sets an invalid TARGET_PLATFORM.") +} + +contains(QMAKE_PLATFORM, macx) { + !contains(QMAKE_PLATFORM, osx) { + warning("qmake spec specified platform macx, but not osx."); + QMAKE_PLATFORM = osx $$QMAKE_PLATFORM + } + + !contains(QMAKE_PLATFORM, macos) { + warning("qmake spec specifies platform macx, but not macos.") + QMAKE_PLATFORM = macos $$QMAKE_PLATFORM + } +} + +CONFIG += $$QMAKE_PLATFORM + +isEmpty(QMAKE_COMPILER) { + *-g++*: \ + QMAKE_COMPILER = gcc + else:*-llvm*: \ + QMAKE_COMPILER = gcc llvm + else:*-clang*: \ + QMAKE_COMPILER = gcc clang llvm + else:*-msvc*: \ + QMAKE_COMPILER = msvc + else: \ + error("qmake spec does not announce the compiler family, and it cannot be guessed.") + warning("qmake spec does not announce the compiler family. Guessed $${QMAKE_COMPILER}.") +} +CONFIG += $$QMAKE_COMPILER + +equals(MAKEFILE_GENERATOR, MSBUILD) \ +|equals(MAKEFILE_GENERATOR, MSVC.NET) \ +|isEmpty(QMAKE_SH) { + QMAKE_ZIP = zip -r -9 + + QMAKE_CD = cd /d + QMAKE_COPY = copy /y + QMAKE_COPY_FILE = $$QMAKE_COPY + QMAKE_COPY_DIR = xcopy /s /q /y /i + # xcopy copies the contained files if source is a directory. Deal with it. + CONFIG += copy_dir_files + QMAKE_MOVE = move + QMAKE_DEL_FILE = del + QMAKE_DEL_DIR = rmdir + QMAKE_DEL_TREE = rmdir /s /q + QMAKE_CHK_EXISTS = if not exist %1 + QMAKE_CHK_DIR_EXISTS = if not exist # legacy + QMAKE_MKDIR = mkdir # legacy + QMAKE_MKDIR_CMD = if not exist %1 mkdir %1 & if not exist %1 exit 1 + QMAKE_STREAM_EDITOR = $(QMAKE) -install sed + QMAKE_SHELL_NULL_DEVICE = NUL + QMAKE_INSTALL_FILE = copy /y + QMAKE_INSTALL_PROGRAM = copy /y +} else { + QMAKE_TAR = tar -cf + QMAKE_GZIP = gzip -9f + + QMAKE_CD = cd + QMAKE_COPY = cp -f + QMAKE_COPY_FILE = $$QMAKE_COPY + QMAKE_COPY_DIR = $$QMAKE_COPY -R + QMAKE_MOVE = mv -f + QMAKE_DEL_FILE = rm -f + QMAKE_DEL_DIR = rmdir + QMAKE_DEL_TREE = rm -rf + QMAKE_CHK_EXISTS = test -e %1 || + QMAKE_CHK_DIR_EXISTS = test -d # legacy + QMAKE_MKDIR = mkdir -p # legacy + QMAKE_MKDIR_CMD = test -d %1 || mkdir -p %1 + QMAKE_STREAM_EDITOR = sed + QMAKE_SHELL_NULL_DEVICE = /dev/null + + equals(QMAKE_HOST.os, Windows) { + MINGW_IN_SHELL = 1 # legacy + # Override built-ins. + QMAKE_DIR_SEP = / + QMAKE_DIRLIST_SEP = : + # Because install's ability to set permissions is not relevant on Windows, + # and git's msys does not provide it to start with. + QMAKE_INSTALL_FILE = cp -f + QMAKE_INSTALL_PROGRAM = cp -f + } else { + QMAKE_INSTALL_FILE = install -m 644 -p + QMAKE_INSTALL_PROGRAM = install -m 755 -p + } +} +QMAKE_INSTALL_DIR = $$QMAKE_COPY_DIR +equals(QMAKE_HOST.os, Windows) { + QMAKE_SYMBOLIC_LINK = $(QMAKE) -install ln -f -s + QMAKE_LN_SHLIB = $(QMAKE) -install ln -s + QMAKE_SYSTEM_NULL_DEVICE = NUL +} else { + QMAKE_SYMBOLIC_LINK = ln -f -s + QMAKE_LN_SHLIB = ln -s + QMAKE_SYSTEM_NULL_DEVICE = /dev/null +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/spec_pre.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/spec_pre.prf new file mode 100644 index 000000000..51ea3a832 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/spec_pre.prf @@ -0,0 +1,55 @@ +# This file is loaded by qmake right before loading the qmakespec. +# At this point, the built-in variables have been set up and the project's +# .qmake.super was read (if present). + +QMAKE_DIR_SEP = $$DIR_SEPARATOR +QMAKE_DIRLIST_SEP = $$DIRLIST_SEPARATOR + +QMAKE_EXT_C = .c +QMAKE_EXT_CPP = .cpp .cc .cxx +QMAKE_EXT_OBJC = .m +QMAKE_EXT_OBJCXX = .mm +QMAKE_EXT_CPP_MOC = .moc +QMAKE_EXT_H = .h .hpp .hh .hxx +QMAKE_EXT_H_MOC = .cpp +QMAKE_EXT_JS = .js +QMAKE_EXT_LEX = .l +QMAKE_EXT_LIBTOOL = .la +QMAKE_EXT_PKGCONFIG = .pc +QMAKE_EXT_PRL = .prl +QMAKE_EXT_UI = .ui +QMAKE_EXT_YACC = .y + +QMAKE_CPP_MOD_MOC = +QMAKE_H_MOD_MOC = moc_ +QMAKE_MOD_LEX = _lex +QMAKE_MOD_YACC = _yacc + +defineTest(ensurePathEnv) { + isEmpty(QMAKE_PATH_ENV) { + QMAKE_PATH_ENV = $$(PATH) + QMAKE_PATH_ENV = $$split(QMAKE_PATH_ENV, $$QMAKE_DIRLIST_SEP) + export(QMAKE_PATH_ENV) + } +} + +equals(QMAKE_HOST.os, Windows) { + QMAKE_EXT_OBJ = .obj + QMAKE_EXT_RES = .res + QMAKE_SH = + ensurePathEnv() + for(dir, QMAKE_PATH_ENV) { + exists($$dir/sh.exe) { + QMAKE_SH = $$dir/sh.exe + break() + } + } +} else { + QMAKE_EXT_CPP += .C + QMAKE_EXT_H += .H + QMAKE_EXT_OBJ = .o + QMAKE_SH = sh +} + +CONFIG = file_copies qmake_use qt warn_on release link_prl +QT = core gui diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/static_runtime.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/static_runtime.prf new file mode 100644 index 000000000..3275e6e2e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/static_runtime.prf @@ -0,0 +1,7 @@ +msvc { + # -MD becomes -MT, -MDd becomes -MTd + QMAKE_CFLAGS ~= s,^-MD(d?)$, -MT\1,g + QMAKE_CXXFLAGS ~= s,^-MD(d?)$, -MT\1,g +} else: mingw { + QMAKE_LFLAGS += -static +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testcase.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testcase.prf new file mode 100644 index 000000000..3e1537dde --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testcase.prf @@ -0,0 +1,209 @@ +!have_target: return() + +# qt_build_config.prf disables execptions for all Qt modules which don't +# explicitly turn it on again, while the qmake default is to build with +# exceptions. As we want tests to be built like 3rd party applications, +# qt_build_config tells us to re-enable exceptions here. +testcase_exceptions: CONFIG += exceptions + +# Set in qt_build_config.prf +testcase_no_bundle: CONFIG -= app_bundle + +benchmark: type = benchmark +else: type = check + +$${type}.files = +$${type}.path = . + +# Add environment for non-installed builds. Do this first, so the +# 'make' variable expansions don't end up in a batch file/script. +QT_TOOL_NAME = target +qtAddTargetEnv($${type}.commands, QT) + +# If the test ends up in a different directory, we should cd to that directory. +TESTRUN_CWD = $$DESTDIR + +debug_and_release:debug_and_release_target { + # But in debug-and-release-target mode we don't want to cd into the debug/release + # directory (e.g. if the test goes to foo/release/tst_thing.exe, we want to do + # 'cd foo && release/tst_thing.exe', not 'cd foo/release && tst_thing.exe'). + + TESTRUN_CWD ~= s/(release|debug)$// + TEST_TARGET_DIR = $$relative_path($$absolute_path($$DESTDIR, $$OUT_PWD), $$absolute_path($$TESTRUN_CWD, $$OUT_PWD)) +} + +# Allow for a custom test runner script +$${type}.commands += $(TESTRUNNER) + +unix { + isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = . + + app_bundle: \ + $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET) + else: \ + $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET) +} else { + # Windows + !isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = $${TEST_TARGET_DIR}$${QMAKE_DIR_SEP} + $${type}.commands += $${TEST_TARGET_DIR}$(TARGET) +} + +# Allow for custom arguments to tests +$${type}.commands += $(TESTARGS) + +!isEmpty(TESTRUN_CWD):!contains(TESTRUN_CWD, ^\\./?): \ + $${type}.commands = $$QMAKE_CD $$shell_path($$TESTRUN_CWD) && $$eval($${type}.commands) + +# If the test is marked as insignificant, discard the exit code +insignificant_test: $${type}.commands = -$$eval($${type}.commands) + +QMAKE_EXTRA_TARGETS *= $${type} + +isEmpty(BUILDS)|build_pass { + $${type}.depends = first +} else { + # For exclusive builds, only run the test once. + $${type}.CONFIG = recursive + $${type}.target = $${type}_all + $${type}.recurse_target = $${type} + $${type}.commands = + + $${type}_first.depends = $$eval($$first(BUILDS).target)-$${type} + $${type}_first.target = $${type} + QMAKE_EXTRA_TARGETS += $${type}_first +} + +!no_testcase_installs:!contains(INSTALLS, target) { + # Install tests unless no_testcase_installs is set, or there is already + # a `target' in INSTALLS. + # + # Tests are installed under a directory named after the target so that each + # test has its own directory for testdata etc. + # + load(resolve_target) + TARGET_BASENAME = $$basename(QMAKE_RESOLVED_TARGET) + target.path = $$[QT_INSTALL_TESTS]/$$TARGET_BASENAME + INSTALLS += target +} + +!builtin_testdata:contains(INSTALLS, target) { + # Install testdata and helpers as well, but only if we're actually installing the test. + # + # Testdata is installed relative to the directory containing the testcase + # binary itself, e.g. this: + # + # CONFIG += testcase + # TARGET = tst_qxmlreader + # + # TESTDATA += testdata/test1.xml testdata/test2.xml + # + # ... will result in: + # + # /usr/lib/qt5/tests/tst_qxmlreader/tst_qxmlreader + # /usr/lib/qt5/tests/tst_qxmlreader/testdata/test1.xml + # /usr/lib/qt5/tests/tst_qxmlreader/testdata/test2.xml + # ... + # + for(file, TESTDATA) { + tnam = $$file + tnam ~= s,\\.\\.,dotdot, + tnam ~= s,[?*],wildcard, + tnam ~= s,[^A-Za-z0-9],_, + tdi = testdata_$$tnam + + # TESTDATA consists of the files to install (source)... + $${tdi}.files = $$file + + # ... and the destination preserves the relative path. + # Strip any leading ../ from the testdata, so that installation does not escape + # the test's directory in the case of e.g. + # + # TARGET = ../tst_qprocess + # TESTDATA = ../thing1 ../thing2 + # + # The testdata should end up at $$[QT_INSTALL_TESTS]/tst_qprocess/thing1, + # rather than $$[QT_INSTALL_TESTS]/tst_qprocess/../thing1. + # + # Note that this does not guarantee the same relative path between test binary + # and testdata in the build and install tree, but should cover most cases. + # + file = $$replace(file, ^(\\.\\./)+, ) + $${tdi}.path = $${target.path}/$$dirname(file) + + INSTALLS += $$tdi + } + + # Install GENERATED_TESTDATA. + # Logic is copied from the TESTDATA installation, only difference being that + # INSTALL target is added with CONFIG = no_check_exist + for(file, GENERATED_TESTDATA) { + tnam = $$file + tnam ~= s,\\.\\.,dotdot, + tnam ~= s,[?*],wildcard, + tnam ~= s,[^A-Za-z0-9],_, + tdi = testdata_$$tnam + + $${tdi}.files = $$file + $${tdi}.CONFIG = no_check_exist + + file = $$replace(file, ^(\\.\\./)+, ) + $${tdi}.path = $${target.path}/$$dirname(file) + + INSTALLS += $$tdi + } + + # TEST_HELPER_INSTALLS specifies additional test helper executables for installation. + # + # Typical usage is: + # + # TEST_HELPER_INSTALLS += ../some/helper1 ../some/helper2 + # + # Resulting in the test helpers being installed to: + # + # $$[QT_INSTALL_TESTS]/$$TARGET/some/helper1 + # $$[QT_INSTALL_TESTS]/$$TARGET/some/helper2 + # + win32: extension = .exe + for(test_helper, TEST_HELPER_INSTALLS) { + test_helper_dir = $$dirname(test_helper) + output = $$basename(test_helper_dir) + target = $$basename(test_helper) + targetName = $$replace(target, ' ', '_') # handle spaces in name + subTarget = $${targetName}.target + subInstall = $${targetName}_install + subConfig = $${subInstall}.CONFIG + subFiles = $${subInstall}.files + subPath = $${subInstall}.path + $$subTarget = $${output}/$${target}$${extension} + $$subFiles = $${OUT_PWD}/$${test_helper}$${extension} + $$subPath = $${target.path}/$${output} + $$subConfig += no_check_exist executable + INSTALLS += $${subInstall} + } +} + +builtin_testdata { + ALL_TESTDATA = $$TESTDATA $$GENERATED_TESTDATA + + # BLACKLIST needs to be added to the testdata + BLACKLISTPATH = $$_PRO_FILE_PWD_/BLACKLIST + exists($$BLACKLISTPATH): ALL_TESTDATA *= $$BLACKLISTPATH + + # RESOURCES does not support wildcards (for good reasons) + for(td, ALL_TESTDATA): \ + testdata.files += $$files($$absolute_path($$td, $$_PRO_FILE_PWD_)) + !isEmpty(testdata.files) { + testdata.base = $$_PRO_FILE_PWD_ + RESOURCES += testdata + } + + !isEmpty(TEST_HELPER_INSTALLS): \ + error("This platform does not support tests which require helpers.") +} + +macx-xcode:bundle:isEmpty(QMAKE_BUNDLE_EXTENSION) { + QMAKE_PBX_PRODUCT_TYPE = com.apple.product-type.bundle.unit-test + QMAKE_PBX_BUNDLE_TYPE = wrapper.cfbundle + QMAKE_BUNDLE_EXTENSION = .xctest +} + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testcase_targets.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testcase_targets.prf new file mode 100644 index 000000000..16ec6a9f0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testcase_targets.prf @@ -0,0 +1,19 @@ + +# Let every project have a standard GNU `check' target +!contains(QMAKE_EXTRA_TARGETS, check) { + contains(TEMPLATE, subdirs): \ + prepareRecursiveTarget(check) + else: \ + check.depends = first # `make check' implies build + QMAKE_EXTRA_TARGETS += check +} + +# ... and the same for benchmarks, too. +!contains(QMAKE_EXTRA_TARGETS, benchmark) { + contains(TEMPLATE, subdirs): \ + prepareRecursiveTarget(benchmark) + else: \ + benchmark.depends = first # `make benchmark' implies build + QMAKE_EXTRA_TARGETS += benchmark +} + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testcocoon.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testcocoon.prf new file mode 100644 index 000000000..efa33ecb0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testcocoon.prf @@ -0,0 +1,57 @@ +# +# Tested with TestCocoon 1.6.14 +# + +load(resolve_target) + +# Retrieve the target basename +TARGET_BASENAME = $$basename(QMAKE_RESOLVED_TARGET) + +# Configure testcocoon for a full instrumentation - excluding the moc, ui and qrc files from the instrumentation +# --cs-output defines the name to give to the execution report (.csexe). +TESTCOCOON_COVERAGE_OPTIONS = \ + --cs-qt4 \ + --cs-exclude-file-regex=\'(^|[/\\\\])(qrc|moc)_.*\\.cpp\$\$\' \ + --cs-exclude-file-regex=\'.*\\.moc\$\$\' \ + --cs-exclude-file-regex=\'.*\\.g\$\$\' \ + --cs-exclude-file-regex=\'.*\\.h\$\$\' \ + --cs-output=\'$$TARGET_BASENAME\' # name of the csexe file (execution report) + +# The .csmes file should be placed alongside the .so or binary. +# Unfortunately, testcocoon has no option to specify the output directory, +# so we must move it into place if a custom destdir was used. +# We don't move applications' csmes because some qt applications (tools, examples) +# are using DESTDIR in some cases but always alongside target.path, so the binary +# is built directly in target.path and there is no need to move the csmes. +!isEmpty(DESTDIR):contains(TEMPLATE, lib) { + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK + QMAKE_POST_LINK = -$(MOVE) $${TARGET_BASENAME}.csmes $$shell_path($${QMAKE_RESOLVED_TARGET}.csmes)$$QMAKE_POST_LINK +} + +QMAKE_CLEAN += *.csexe *.csmes + +# The compiler/linker is replaced by the coveragescanner which is named after the name of the +# compiler/linker preceded by cs (ie gcc is replaced by csgcc). +# Testcocoon options defined in TESTCOCOON_COVERAGE_OPTIONS are added as argument to the coveragescanner (ie csgcc). +# In practice they are added as compiler/linker flags. + +*-g++* { + QMAKE_CXX ~= s/(\\S*g\\+\\+)/cs\\1/ + QMAKE_CC ~= s/(\\S*gcc)/cs\\1/ + QMAKE_LINK ~= s/(\\S*g\\+\\+|\\S*gcc)/cs\\1/ + QMAKE_AR ~= s/(\\S*ar)/cs\\1/ + QMAKE_AR += $$TESTCOCOON_COVERAGE_OPTIONS +} else { + error("Non-gcc qmake specs not supported by TestCocoon integration yet") +} + +QMAKE_CFLAGS += $$TESTCOCOON_COVERAGE_OPTIONS +QMAKE_CXXFLAGS += $$TESTCOCOON_COVERAGE_OPTIONS +QMAKE_LFLAGS += $$TESTCOCOON_COVERAGE_OPTIONS + +unix { + QMAKE_LFLAGS += --cs-libgen=-fPIC +} + +unset(TARGET_BASENAME) +unset(TESTCOCOON_COVERAGE_OPTIONS) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testlib_defines.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testlib_defines.prf new file mode 100644 index 000000000..901e03a91 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/testlib_defines.prf @@ -0,0 +1,2 @@ +contains(TEMPLATE, vc.*): DEFINES += QT_TESTCASE_BUILDDIR=\"$$OUT_PWD\" +else: DEFINES += QT_TESTCASE_BUILDDIR=$$shell_quote(\"$$OUT_PWD\") diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/toolchain.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/toolchain.prf new file mode 100644 index 000000000..fdf3d1cdd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/toolchain.prf @@ -0,0 +1,252 @@ + +defineReplace(qtMakeExpand) { + out = "$$1" + for(ever) { + m = $$replace(out, ".*\\$\\(EXPORT_([^)]+)\\).*", \\1) + equals(m, $$out): \ + return($$out) + out = $$replace(out, "\\$\\(EXPORT_$$m\\)", $$eval($$m)) + } +} + +defineTest(qtCompilerErrror) { + !cross_compile: \ + what = + else: host_build: \ + what = " host" + else: \ + what = " target" + msg = \ + "Cannot run$$what compiler '$$1'. Output:" \ + "===================" \ + $$2 \ + "===================" \ + "Maybe you forgot to setup the environment?" + error($$join(msg, $$escape_expand(\\n))) +} + +cross_compile:host_build: \ + target_prefix = QMAKE_HOST_CXX +else: \ + target_prefix = QMAKE_CXX + +isEmpty($${target_prefix}.INCDIRS) { + # + # Get default include and library paths from compiler + # + gcc { + cmd_suffix = "<$$QMAKE_SYSTEM_NULL_DEVICE >$$QMAKE_SYSTEM_NULL_DEVICE" + equals(QMAKE_HOST.os, Windows): \ + cmd_prefix = "set LC_ALL=C&" + else: \ + cmd_prefix = "LC_ALL=C" + + cxx_flags = $$QMAKE_CXXFLAGS + + # Manually inject the sysroot for Apple Platforms because its resolution + # normally does not happen until default_post.prf. This is especially + # important for moc to gain the correct default include directory list. + # While technically incorrect but without any likely practical effect, + # UIKit simulator platforms will see the device SDK's sysroot in + # QMAKE_DEFAULT_*DIRS, because they're handled in a single build pass. + darwin { + uikit:macx-xcode: \ + cxx_flags += -isysroot $$sdk_path_device.value + else: \ + cxx_flags += -isysroot $$QMAKE_MAC_SDK_PATH + } + + rim_qcc: \ + # Need the cc1plus and ld command lines to pick up the paths + cxx_flags += $$QMAKE_LFLAGS_SHLIB -o $$QMAKE_SYSTEM_NULL_DEVICE -v + else: darwin:clang: \ + # Need to link to pick up library paths + cxx_flags += $$QMAKE_LFLAGS_SHLIB -o /dev/null -v -Wl,-v + else: \ + # Just preprocess, might not pick up library paths + cxx_flags += -E -v + + output = $$system("$$cmd_prefix $$QMAKE_CXX $$qtMakeExpand($$cxx_flags) -xc++ - 2>&1 $$cmd_suffix", lines, ec) + !equals(ec, 0): qtCompilerErrror($$QMAKE_CXX, $$output) + + rim_qcc { + for (line, output) { + contains(line, "^[^ ]*cc1plus .*") { + take_next = false + for (parameter, $$list($$line)) { + $$take_next { + QMAKE_DEFAULT_INCDIRS += $$clean_path($$parameter) + take_next = false + } else: equals(parameter, "-isystem") { + take_next = true + } + } + } else: contains(line, "^[^ ]*-ld .*") { + for (parameter, $$list($$line)) { + contains(parameter, "^-L.*") { + parameter ~= s/^-L// + QMAKE_DEFAULT_LIBDIRS += $$clean_path($$parameter) + } + } + } + } + } else { + add_includes = false + add_libraries = false + for (line, output) { + line ~= s/^[ \\t]*// # remove leading spaces + contains(line, "LIBRARY_PATH=.*") { + line ~= s/^LIBRARY_PATH=// # remove leading LIBRARY_PATH= + paths = $$split(line, $$QMAKE_DIRLIST_SEP) + for (path, paths): \ + QMAKE_DEFAULT_LIBDIRS += $$clean_path($$path) + } else: contains(line, "Library search paths:") { + add_libraries = true + } else: contains(line, "$${LITERAL_HASH}include <.*") { # #include <...> search starts here: + add_includes = true + } else: contains(line, "End of search.*") { + add_includes = false + } else: $$add_libraries { + # We assume all library search paths are absolute + !contains(line, "^/.*") { + add_libraries = false + next() + } + QMAKE_DEFAULT_LIBDIRS += $$clean_path($$line) + } else: $$add_includes { + !contains(line, ".* \\(framework directory\\)"): \ + QMAKE_DEFAULT_INCDIRS += $$clean_path($$line) + } + } + } + if(!darwin:clang)|intel_icc { + # Clang on a non-Apple system (that is, a system without ld64 -- say, with GNU ld + # or gold under Linux) will not print any library search path. Need to use another + # invocation with different options (which in turn doesn't print include search + # paths, so it can't just be used in place of the above code). + # What's more, -print-search-dirs can't be used on clang on Apple because it + # won't print all the library paths (only the clang-internal ones). + output = $$system("$$cmd_prefix $$QMAKE_CXX -print-search-dirs", lines, ec) + !equals(ec, 0): qtCompilerErrror($$QMAKE_CXX, $$output) + + for (line, output) { + contains(line, "^libraries: .*") { + line ~= s,^libraries: ,, + paths = $$split(line, $$QMAKE_DIRLIST_SEP) + for (path, paths): \ + QMAKE_DEFAULT_LIBDIRS += $$clean_path($$replace(path, ^=, $$[SYSROOT])) + } + } + } + isEmpty(QMAKE_DEFAULT_LIBDIRS)|isEmpty(QMAKE_DEFAULT_INCDIRS): \ + !integrity: \ + error("failed to parse default search paths from compiler output") + QMAKE_DEFAULT_LIBDIRS = $$unique(QMAKE_DEFAULT_LIBDIRS) + } else: msvc { + # This doesn't differentiate between host and target, + # but neither do the compilers. + LIB = $$getenv("LIB") + QMAKE_DEFAULT_LIBDIRS = $$split(LIB, $$QMAKE_DIRLIST_SEP) + INCLUDE = $$getenv("INCLUDE") + QMAKE_DEFAULT_INCDIRS = $$split(INCLUDE, $$QMAKE_DIRLIST_SEP) + } + + unix { + isEmpty(QMAKE_DEFAULT_INCDIRS): QMAKE_DEFAULT_INCDIRS = /usr/include /usr/local/include + isEmpty(QMAKE_DEFAULT_LIBDIRS): QMAKE_DEFAULT_LIBDIRS = /lib /usr/lib + } + + cache($${target_prefix}.INCDIRS, set stash, QMAKE_DEFAULT_INCDIRS) + cache($${target_prefix}.LIBDIRS, set stash, QMAKE_DEFAULT_LIBDIRS) +} else { + QMAKE_DEFAULT_INCDIRS = $$eval($${target_prefix}.INCDIRS) + QMAKE_DEFAULT_LIBDIRS = $$eval($${target_prefix}.LIBDIRS) +} + +# +# Determine and cache the compiler version +# + +defineReplace(qtVariablesFromMSVC) { + ret = $$system("$$1 -nologo -E $$2 $$system_quote($$PWD/data/macros.cpp) NUL", lines, ec) + !equals(ec, 0): qtCompilerErrror($$1, $$ret) + return($$ret) +} + +defineReplace(qtVariablesFromGCC) { + ret = $$system("$$1 -E $$system_quote($$PWD/data/macros.cpp) \ + <$$QMAKE_SYSTEM_NULL_DEVICE 2>$$QMAKE_SYSTEM_NULL_DEVICE", lines, ec) + !equals(ec, 0): qtCompilerErrror($$1, $$ret) + return($$ret) +} + +isEmpty($${target_prefix}.COMPILER_MACROS) { + msvc { + clang_cl { + # We need to obtain the cl.exe version first + vars = $$qtVariablesFromMSVC(cl) + for (v, vars) { + isEmpty(v)|contains(v, $${LITERAL_HASH}.*): next() + eval($$v) + } + isEmpty(QMAKE_MSC_FULL_VER): error("Could not determine the Visual Studio version") + + QMAKE_CFLAGS_MSVC_COMPAT = $$replace(QMAKE_MSC_FULL_VER, "(..)(..)(.*)", \ + "-fms-compatibility-version=\\1.\\2.\\3") + cache($${target_prefix}.QMAKE_CFLAGS_MSVC_COMPAT, set stash, QMAKE_CFLAGS_MSVC_COMPAT) + $${target_prefix}.COMPILER_MACROS += QMAKE_CFLAGS_MSVC_COMPAT + vars = $$qtVariablesFromMSVC($$QMAKE_CXX, $$QMAKE_CFLAGS_MSVC_COMPAT) + } else { + vars = $$qtVariablesFromMSVC($$QMAKE_CXX) + } + } else: gcc { + vars = $$qtVariablesFromGCC($$QMAKE_CXX) + } + for (v, vars) { + contains(v, $${LITERAL_HASH}.*)|contains(v, " *"): next() + # Set both for the outer scope ... + eval($$v) + v ~= s/ .*// + isEmpty($$v): error("Compiler produced empty value for $${v}.") + # ... and save QMAKE_(HOST_)?CXX. in the cache. + cache($${target_prefix}.$$v, set stash, $$v) + $${target_prefix}.COMPILER_MACROS += $$v + } + cache($${target_prefix}.COMPILER_MACROS, set stash) +} else { + # load from the cache + for (i, $${target_prefix}.COMPILER_MACROS): \ + $$i = $$eval($${target_prefix}.$$i) +} + +unset(target_prefix) + +# Populate QMAKE_COMPILER_DEFINES and some compatibility variables. +# The $$format_number() calls strip leading zeros to avoid misinterpretation as octal. +QMAKE_COMPILER_DEFINES += __cplusplus=$$QT_COMPILER_STDCXX +!isEmpty(QMAKE_MSC_VER): \ + QMAKE_COMPILER_DEFINES += _MSC_VER=$$QMAKE_MSC_VER _MSC_FULL_VER=$$QMAKE_MSC_FULL_VER +!isEmpty(QMAKE_ICC_VER): \ + QMAKE_COMPILER_DEFINES += __INTEL_COMPILER=$$QMAKE_ICC_VER __INTEL_COMPILER_UPDATE=$$QMAKE_ICC_UPDATE_VER +!isEmpty(QMAKE_APPLE_CC): \ + QMAKE_COMPILER_DEFINES += __APPLE_CC__=$$QMAKE_APPLE_CC +!isEmpty(QMAKE_APPLE_CLANG_MAJOR_VERSION): \ + QMAKE_COMPILER_DEFINES += __clang__ \ + __clang_major__=$$QMAKE_APPLE_CLANG_MAJOR_VERSION \ + __clang_minor__=$$QMAKE_APPLE_CLANG_MINOR_VERSION \ + __clang_patchlevel__=$$QMAKE_APPLE_CLANG_PATCH_VERSION +!isEmpty(QMAKE_CLANG_MAJOR_VERSION): \ + QMAKE_COMPILER_DEFINES += __clang__ \ + __clang_major__=$$QMAKE_CLANG_MAJOR_VERSION \ + __clang_minor__=$$QMAKE_CLANG_MINOR_VERSION \ + __clang_patchlevel__=$$QMAKE_CLANG_PATCH_VERSION +!isEmpty(QMAKE_GCC_MAJOR_VERSION): \ + QMAKE_COMPILER_DEFINES += \ + __GNUC__=$$QMAKE_GCC_MAJOR_VERSION \ + __GNUC_MINOR__=$$QMAKE_GCC_MINOR_VERSION \ + __GNUC_PATCHLEVEL__=$$QMAKE_GCC_PATCH_VERSION + +QMAKE_CFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT + +msvc:!intel_icl:!clang_cl: include(../common/msvc-version.conf) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uic.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uic.prf new file mode 100644 index 000000000..ca8283920 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uic.prf @@ -0,0 +1,20 @@ +qtPrepareTool(QMAKE_UIC, uic, _DEP) + +isEmpty(UI_DIR):UI_DIR = . +isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_ + +uic.depends += $$QMAKE_UIC_EXE +uic.commands = $$QMAKE_UIC ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} +uic.depend_command = $$QMAKE_UIC_DEP -d ${QMAKE_FILE_IN} +uic.output = $$UI_DIR/$${QMAKE_MOD_UIC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +uic.input = FORMS +uic.variable_out = GENERATED_FILES +uic.CONFIG += no_link target_predeps +uic.name = UIC ${QMAKE_FILE_IN} +silent:uic.commands = @echo uic ${QMAKE_FILE_IN} && $$uic.commands +QMAKE_EXTRA_COMPILERS += uic +INCREDIBUILD_XGE += uic + +!isEmpty(FORMS) { + INCLUDEPATH += $$absolute_path($$UI_DIR, $$OUT_PWD) +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/bitcode.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/bitcode.prf new file mode 100644 index 000000000..df298171c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/bitcode.prf @@ -0,0 +1,21 @@ +lessThan(QMAKE_XCODE_VERSION, "7.0") { + warning("You need to update Xcode to version 7 or newer to support bitcode") +} else: !macx-xcode { + # Simulator builds and all debug builds SHOULD use -fembed-bitcode-marker, + # but unfortunately the -fembed-bitcode and -fembed-bitcode-marker driver + # flags do not work in conjunction with -Xarch, so we'll have to let it use + # the "wrong" flags for now (note that this issue affects only the Makefile + # generator). We also don't want the flags to be passed in Xcode builds, as + # the Xcode ENABLE_BITCODE setting will take care of that for us. + release { + QMAKE_CFLAGS += -fembed-bitcode + QMAKE_CXXFLAGS += -fembed-bitcode + QMAKE_OBJECTIVE_CFLAGS += -fembed-bitcode + QMAKE_LFLAGS += -fembed-bitcode + } else { + QMAKE_CFLAGS += -fembed-bitcode-marker + QMAKE_CXXFLAGS += -fembed-bitcode-marker + QMAKE_OBJECTIVE_CFLAGS += -fembed-bitcode-marker + QMAKE_LFLAGS += -fembed-bitcode-marker + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/default_post.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/default_post.prf new file mode 100644 index 000000000..f7245e48b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/default_post.prf @@ -0,0 +1,62 @@ +equals(TEMPLATE, app):qt { + # If the application uses Qt, it needs to be an application bundle + # to be able to deploy and run on iOS. The only exception to this + # is if you're working with a jailbroken device and can run the + # resulting binary from the console/over SSH, but that's not a + # use-case we care about, so no need to complicate the logic. + CONFIG *= app_bundle + + # For Qt applications we want Xcode project files as the generated output, + # but since qmake doesn't handle the transition between makefiles and Xcode + # project files (which happens when using subdirs), we can't just override + # MAKEFILE_GENERATOR. Instead, we generate the Xcode project by spawning a + # child qmake process with -spec macx-xcode and let the top level qmake + # process generate a wrapper makefile that forwards everything to xcodebuild. + equals(MAKEFILE_GENERATOR, UNIX): \ + CONFIG = xcodebuild $$CONFIG +} + +load(default_post) + +macx-xcode { + ios:!isEmpty(QMAKE_IOS_TARGETED_DEVICE_FAMILY) { + warning("QMAKE_IOS_TARGETED_DEVICE_FAMILY is deprecated; use QMAKE_APPLE_TARGETED_DEVICE_FAMILY") + QMAKE_APPLE_TARGETED_DEVICE_FAMILY = $$QMAKE_IOS_TARGETED_DEVICE_FAMILY + } + + device_family.name = TARGETED_DEVICE_FAMILY + device_family.value = $$QMAKE_APPLE_TARGETED_DEVICE_FAMILY + QMAKE_MAC_XCODE_SETTINGS += device_family + + ios { + # Set up default 4-inch iPhone/iPod launch image so that our apps + # support the full screen resolution of those devices. + qmake_launch_image = Default-568h@2x.png + qmake_copy_image.input = $$QMAKESPEC/$$qmake_launch_image + qmake_copy_image.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$qmake_launch_image + qmake_copy_image.CONFIG = verbatim + QMAKE_SUBSTITUTES += qmake_copy_image + qmake_launch_images.files = $$qmake_copy_image.output + QMAKE_BUNDLE_DATA += qmake_launch_images + + lessThan(QMAKE_XCODE_VERSION, "6.0") { + warning("You need to update Xcode to version 6 or newer to fully support iPhone6/6+") + } else { + # Set up default LaunchScreen to support iPhone6/6+ + qmake_launch_screen = LaunchScreen.xib + qmake_copy_launch_screen.input = $$QMAKESPEC/$$qmake_launch_screen + qmake_copy_launch_screen.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$qmake_launch_screen + QMAKE_SUBSTITUTES += qmake_copy_launch_screen + qmake_launch_screens.files = $$qmake_copy_launch_screen.output + QMAKE_BUNDLE_DATA += qmake_launch_screens + } + } +} + +!xcodebuild:equals(TEMPLATE, app):!isEmpty(QMAKE_INFO_PLIST) { + # Only link in photo library support if Info.plist contains + # NSPhotoLibraryUsageDescription. Otherwise it will be rejected from AppStore. + plist_path = $$absolute_path($$QMAKE_INFO_PLIST, $$_PRO_FILE_PWD_) + system("/usr/libexec/PlistBuddy -c 'Print NSPhotoLibraryUsageDescription' $$system_quote($$plist_path) &>/dev/null"): \ + QTPLUGIN += qiosnsphotolibrarysupport +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/default_pre.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/default_pre.prf new file mode 100644 index 000000000..00e29a5c8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/default_pre.prf @@ -0,0 +1,28 @@ +sim_and_dev = false +!isEmpty(QT_VERSION):qtConfig(simulator_and_device): \ + sim_and_dev = true + +$$sim_and_dev|contains(QMAKE_MAC_SDK, ^$${device.sdk}.*): \ + CONFIG += device $${device.sdk} +$$sim_and_dev|contains(QMAKE_MAC_SDK, ^$${simulator.sdk}.*): \ + CONFIG += simulator $${simulator.sdk} + +$$sim_and_dev { + # For a simulator_and_device build all the config tests + # are based on the device's ARM SDK, but we know that the simulator + # is Intel and that we support SSE/SSE2. + QT_CPU_FEATURES.$$QT_ARCH += sse sse2 + CONFIG += sse sse2 + DEFINES += QT_COMPILER_SUPPORTS_SSE2 +} + +unset(sim_and_dev) + +load(default_pre) + +# Check for supported Xcode versions +lessThan(QMAKE_XCODE_VERSION, "4.3"): \ + error("This mkspec requires Xcode 4.3 or later") + +ios:shared:lessThan(QMAKE_IOS_DEPLOYMENT_TARGET, "8.0"): \ + QMAKE_IOS_DEPLOYMENT_TARGET = 8.0 diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/device_destinations.sh b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/device_destinations.sh new file mode 100644 index 000000000..162ad01aa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/device_destinations.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is the build configuration utility of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +booted_simulator=$($DIR/devices.pl "$1" "Booted" "NOT unavailable" | tail -n 1) +echo "SIMULATOR_DEVICES = $booted_simulator" + +xcodebuild test -scheme $2 -destination 'id=0' -destination-timeout 1 2>&1| sed -n 's/{ \(platform:.*\) }/\1/p' | while read destination; do + id=$(echo $destination | sed -n -E 's/.*id:([^ ,]+).*/\1/p') + [[ $id == *"placeholder"* ]] && continue + + echo $destination | tr ',' '\n' | while read keyval; do + key=$(echo $keyval | cut -d ':' -f 1 | tr '[:lower:]' '[:upper:]') + val=$(echo $keyval | cut -d ':' -f 2) + echo "%_$id: DESTINATION_${key} = $val" + + if [ $key = 'PLATFORM' ]; then + if [ "$val" = "iOS" ]; then + echo "HARDWARE_DEVICES += $id" + elif [ "$val" = "iOS Simulator" -a "$id" != "$booted_simulator" ]; then + echo "SIMULATOR_DEVICES += $id" + elif [ "$val" = "tvOS" ]; then + echo "HARDWARE_DEVICES += $id" + elif [ "$val" = "tvOS Simulator" -a "$id" != "$booted_simulator" ]; then + echo "SIMULATOR_DEVICES += $id" + elif [ "$val" = "watchOS" ]; then + echo "HARDWARE_DEVICES += $id" + elif [ "$val" = "watchOS Simulator" -a "$id" != "$booted_simulator" ]; then + echo "SIMULATOR_DEVICES += $id" + fi + fi + done + echo +done diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/devices.pl b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/devices.pl new file mode 100644 index 000000000..8d69a9727 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/devices.pl @@ -0,0 +1,56 @@ +#!/usr/bin/perl + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is the build configuration utility of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +$output = `xcrun simctl list devices --json 2>&1`; +$output =~ s/\n//g; + +BLOCK: +foreach $block ($output =~ /{.*?}/g) { + foreach $filter (@ARGV) { + if ($filter =~ /^NOT\s(.*)/) { + $block =~ /$1/ && next BLOCK; + } else { + $block =~ /$filter/ || next BLOCK; + } + } + $block =~ /udid[:|\s|\"]+(.*)\"/; + print "$1\n"; +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/exclusive_builds_post.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/exclusive_builds_post.prf new file mode 100644 index 000000000..1fb0a5584 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/exclusive_builds_post.prf @@ -0,0 +1,8 @@ + +xcodebuild { + # Prevent qmake from generating empty output dirs for each exclusive build, + # as Xcode will do this by itself, and with a different name. + QMAKE_DIR_REPLACE = +} + +load(exclusive_builds_post) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/qt.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/qt.prf new file mode 100644 index 000000000..4475c137d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/qt.prf @@ -0,0 +1,33 @@ + +qt_depends = $$resolve_depends(QT, "QT.") +!watchos:equals(TEMPLATE, app):contains(qt_depends, gui(-private)?) { + LIBS *= -L$$[QT_INSTALL_PLUGINS/get]/platforms + + lib_name = qios + lib_path_and_base = $$[QT_INSTALL_PLUGINS/get]/platforms/lib$${lib_name}$$qtPlatformTargetSuffix() + LIBS += -l$${lib_name}$$qtPlatformTargetSuffix() $$fromfile($${lib_path_and_base}.prl, QMAKE_PRL_LIBS) + + !bitcode { + # By marking qt_registerPlatformPlugin as undefined, we ensure that + # the plugin.o translation unit is considered for inclusion in + # the final binary, which in turn ensures that the plugin's + # static initializer is included and run. + QMAKE_LFLAGS += -u _qt_registerPlatformPlugin + + # We do link and dependency resolution for the platform plugin + # manually, since we know we always need the plugin, so we don't + # need to generate an import for it. + QTPLUGIN.platforms = - + } + + !no_main_wrapper { + # The LC_MAIN load command available in iOS 6.0 and above allows dyld to + # directly call the entrypoint instead of going through _start in crt.o. + # Passing -e to the linker changes the entrypoint from _main to our custom + # wrapper that calls UIApplicationMain and dispatches back to main() once + # the application has started up and is ready to initialize QApplication. + QMAKE_LFLAGS += -Wl,-e,_qt_main_wrapper + } +} + +load(qt) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/qt_parts.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/qt_parts.prf new file mode 100644 index 000000000..81814a62b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/qt_parts.prf @@ -0,0 +1,5 @@ + +# Disable tests for anything but qtbase for now +!equals(TARGET, qtbase): QT_BUILD_PARTS -= tests + +load(qt_parts) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/resolve_config.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/resolve_config.prf new file mode 100644 index 000000000..e3c9ae23a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/resolve_config.prf @@ -0,0 +1,17 @@ + +xcodebuild { + # Xcode project files always support both Debug and Release configurations + # and device and simulator targets, so we make sure the wrapper-makefile + # also does. + CONFIG += debug_and_release simulator_and_device +} + +load(resolve_config) + +!macx-xcode:xcodebuild { + # Switch the order to make sure that the first Makefile target is the right one + !qtConfig(simulator_and_device):contains(QMAKE_MAC_SDK, ^$${simulator.sdk}.*): \ + addExclusiveBuildsProper(simulator_and_device, simulator device) + else: \ + addExclusiveBuildsProper(simulator_and_device, device simulator) +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/sdk.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/sdk.prf new file mode 100644 index 000000000..0bfc26211 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/sdk.prf @@ -0,0 +1,17 @@ +load(sdk) + +macx-xcode { + sdk_path_device.name = "QMAKE_MAC_SDK_PATH[sdk=$${device.sdk}*]" + sdk_path_device.value = $$xcodeSDKInfo(Path, $${device.sdk}) + sdk_path_simulator.name = "QMAKE_MAC_SDK_PATH[sdk=$${simulator.sdk}*]" + sdk_path_simulator.value = $$xcodeSDKInfo(Path, $${simulator.sdk}) + QMAKE_MAC_XCODE_SETTINGS += sdk_path_device sdk_path_simulator + QMAKE_MAC_SDK_PATH = "$(QMAKE_MAC_SDK_PATH)" + + sdk_platform_path_device.name = "QMAKE_MAC_SDK_PLATFORM_PATH[sdk=$${device.sdk}*]" + sdk_platform_path_device.value = $$xcodeSDKInfo(PlatformPath, $${device.sdk}) + sdk_platform_path_simulator.name = "QMAKE_MAC_SDK_PLATFORM_PATH[sdk=$${simulator.sdk}*]" + sdk_platform_path_simulator.value = $$xcodeSDKInfo(PlatformPath, $${simulator.sdk}) + QMAKE_MAC_XCODE_SETTINGS += sdk_platform_path_device sdk_platform_path_simulator + QMAKE_MAC_SDK_PLATFORM_PATH = "$(QMAKE_MAC_SDK_PLATFORM_PATH)" +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/testcase.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/testcase.prf new file mode 100644 index 000000000..e16c163ff --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/testcase.prf @@ -0,0 +1,12 @@ +# Pretend we have a target, even though our template is aux +xcodebuild: \ + CONFIG += have_target + +load(testcase) + +# We provide our own check logic +xcodebuild { + check.depends = + check.commands = + QMAKE_EXTRA_TARGETS *= check +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/testcase_targets.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/testcase_targets.prf new file mode 100644 index 000000000..e0a2922c3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/testcase_targets.prf @@ -0,0 +1,3 @@ +# For the xcodebuild wrapper makefile we deal with test targets manually +!xcodebuild: \ + load(testcase_targets) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/xcodebuild.mk b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/xcodebuild.mk new file mode 100644 index 000000000..7d3275df6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/xcodebuild.mk @@ -0,0 +1,108 @@ + +# We don't want xcodebuild to run in parallel +.NOTPARALLEL: + +# Functions +targets = $(foreach target, $(EXPORT_SUBTARGETS), $(target)-$(strip $(1))) +toupper = $(shell echo $1 | tr '[:lower:]' '[:upper:]') +tolower = $(shell echo $1 | tr '[:upper:]' '[:lower:]') +basesdk = $(shell echo $1 | sed 's/[0-9.]*$$//') + +# Explicit comma variable +, := , + +# Default targets +first: build +all: build_all + +.DEFAULT_GOAL = first + +# Top level targets +build: build_first +clean: clean_first +install: install_first +check: check_first +distclean: clean_all + +$(EXPORT_SUBTARGETS): % : %-build + +# Generic targets +%_first: $(firstword $(call targets, %)) ; +%_all: $(call targets, %) ; + +# Actions +%-build: ACTION = build +%-build: xcodebuild-% ; + +%-clean: ACTION = clean +%-clean: xcodebuild-% ; + +%-install: ACTION = install +%-install: xcodebuild-% ; + +# Simulator doesn't support archiving +%-simulator-install: ACTION = build +simulator-install: ACTION = build + +# Limit check to a single configuration +%-device-check: check-device ; +%-simulator-check: check-simulator ; + +# SDK +%-device: SDK = $(DEVICE_SDK) +%-simulator: SDK = $(SIMULATOR_SDK) + +# Configuration +release-%: CONFIGURATION = Release +debug-%: CONFIGURATION = Debug + +MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) + +# Test and build (device) destinations +ifneq ($(filter check%,$(MAKECMDGOALS)),) + ifeq ($(DEVICES),) + $(info Enumerating test destinations (you may override this by setting DEVICES explicitly), please wait...) + DESTINATIONS_INCLUDE = /tmp/device_destinations.mk + $(shell $(MAKEFILE_DIR)device_destinations.sh '$(EXPORT_DEVICE_FILTER)' $(TARGET) > $(DESTINATIONS_INCLUDE)) + include $(DESTINATIONS_INCLUDE) + endif +endif + +%-simulator: DEVICES = $(firstword $(SIMULATOR_DEVICES)) +%-device: DEVICES = $(HARDWARE_DEVICES) + +GENERIC_DEVICE_DESTINATION := $(EXPORT_GENERIC_DEVICE_DESTINATION) +GENERIC_SIMULATOR_DESTINATION := "id=$(shell $(MAKEFILE_DIR)devices.pl '$(EXPORT_DEVICE_FILTER)' "NOT unavailable" | tail -n 1)" + +%-simulator: DESTINATION = $(if $(DESTINATION_ID),"id=$(DESTINATION_ID)",$(GENERIC_SIMULATOR_DESTINATION)) +%-device: DESTINATION = $(if $(DESTINATION_ID),"id=$(DESTINATION_ID)",$(GENERIC_DEVICE_DESTINATION)) + +XCODE_VERSION_MAJOR := $(shell xcodebuild -version | grep Xcode | sed -e 's/Xcode //' | sed -e 's/\..*//') + +ifeq ($(shell test $(XCODE_VERSION_MAJOR) -gt 7; echo $$?),0) + XCODEBUILD_FLAGS += $(shell echo "$(MAKEFLAGS)" | sed -e 's/\([^ ]*\).*/\1/' | grep -qv 's' || echo -quiet) +endif + +# Xcodebuild + +DESTINATION_MESSAGE = "Running $(call tolower,$(CONFIGURATION)) $(ACTION) \ + on '$(DESTINATION_NAME)' ($(DESTINATION_ID))$(if $(DESTINATION_OS),$(,) $(DESTINATION_PLATFORM) $(DESTINATION_OS),)" + +xcodebuild-%: + @$(if $(DESTINATION_NAME), echo $(DESTINATION_MESSAGE),) + xcodebuild $(ACTION) $(XCODEBUILD_FLAGS) -project $(TARGET).xcodeproj -scheme $(TARGET) $(if $(SDK), -sdk $(SDK),) $(if $(CONFIGURATION), -configuration $(CONFIGURATION),) $(if $(DESTINATION), -destination $(DESTINATION) -destination-timeout 1,) $(if $(DESTINATION_ID),, ENABLE_ONLY_ACTIVE_RESOURCES=NO) $(if $(INSTALL_ROOT), DSTROOT=$(INSTALL_ROOT),) + +xcodebuild-check-device_%: DESTINATION_ID=$(lastword $(subst _, ,$@)) + +# Special check target (requires SECONDEXPANSION due to devices) +.SECONDEXPANSION: +check-%: ACTION = test +check-%: $$(foreach device, $$(DEVICES), xcodebuild-check-device_$$(device)) ; + @echo $(if $^, Ran $(call tolower,$(CONFIGURATION)) tests on $(words $^) $(SDK) destination\(s\): $(DEVICES), No compatible test devices found for \'$(SDK)\' SDK && false) + +# Determined by device +check-%: SDK = + +# Default to debug for testing +check-%: CONFIGURATION = Debug + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/xcodebuild.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/xcodebuild.prf new file mode 100644 index 000000000..a766b9ea5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/uikit/xcodebuild.prf @@ -0,0 +1,69 @@ + +# For Qt applications we want Xcode project files as the generated output, +# but since qmake doesn't handle the transition between makefiles and Xcode +# project files (which happens when using subdirs), we can't just override +# MAKEFILE_GENERATOR. Instead, we generate the Xcode project by spawing a +# child qmake process with -spec macx-xcode and let the top level qmake +# process generate a wrapper makefile that forwards everything to xcodebuild. + +TEMPLATE = aux + +SOURCES = +OBJECTIVE_SOURCES = +RESOURCES = +INSTALLS = +QMAKE_EXTRA_COMPILERS = + +!mkpath($$OUT_PWD): \ + error("Failed to create $$OUT_PWD") + +args = +prev_arg = +for(arg, QMAKE_ARGS) { + !equals(arg, "-spec"):!equals(prev_arg, "-spec"): \ + args += $$system_quote($$arg) + prev_arg = $$arg +} + +cmd = "$$QMAKE_QMAKE $$system_quote($$_PRO_FILE_) -spec macx-xcode $$args" +debug(1, "Generating Xcode project in $$OUT_PWD using '$$cmd'") +system("$$QMAKE_CD $$system_quote($$OUT_PWD) && $$cmd") + +# Subtargets + +for(build, BUILDS): \ + SUBTARGETS += $$eval($${build}.target) +QMAKE_EXTRA_VARIABLES += SUBTARGETS + +CONFIG += no_default_goal_deps + +DEVICE_SDK = $${device.sdk} +SIMULATOR_SDK = $${simulator.sdk} +ios { + DEVICE_FILTER = "iPhone|iPad" + GENERIC_DEVICE_DESTINATION = "generic/platform=iOS" +} +tvos { + DEVICE_FILTER = "Apple TV" + GENERIC_DEVICE_DESTINATION = "generic/platform=tvOS" +} +watchos { + DEVICE_FILTER = "Apple Watch" + GENERIC_DEVICE_DESTINATION = "generic/platform=watchOS" +} +QMAKE_EXTRA_VARIABLES += DEVICE_SDK SIMULATOR_SDK DEVICE_FILTER GENERIC_DEVICE_DESTINATION + +QMAKE_EXTRA_INCLUDES += $$shell_quote($$PWD/xcodebuild.mk) + +# Distclean + +distfiles = $${TARGET}.xcodeproj +for(build, BUILDS): \ + distfiles += $$title($$eval($${build}.target)) +distclean_xcodebuild.commands = -$(DEL_FILE) -R $$distfiles + +distclean.depends += clean_all distclean_xcodebuild +QMAKE_EXTRA_TARGETS += distclean distclean_xcodebuild + +# Empty exclusive builds, we've set them up manually +BUILDS = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/bsymbolic_functions.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/bsymbolic_functions.prf new file mode 100644 index 000000000..5fca5ac17 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/bsymbolic_functions.prf @@ -0,0 +1,6 @@ + +dll { + QMAKE_LFLAGS_SHLIB += $$QMAKE_LFLAGS_BSYMBOLIC_FUNC + + !isEmpty(QMAKE_DYNAMIC_LIST_FILE):QMAKE_LFLAGS_SHLIB += $$QMAKE_LFLAGS_DYNAMIC_LIST$$QMAKE_DYNAMIC_LIST_FILE +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/ccache.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/ccache.prf new file mode 100644 index 000000000..d5739d3ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/ccache.prf @@ -0,0 +1,19 @@ +macx-xcode: return() + +darwin: load(sdk) + +ccache_prefix = ccache + +precompile_header { + CCACHE_SLOPPINESS += pch_defines time_macros + + ccache_prefix = \ + CCACHE_SLOPPINESS=\"$$join(CCACHE_SLOPPINESS, ',')\$${CCACHE_SLOPPINESS+,\$$CCACHE_SLOPPINESS}\" \ + # Make sure we build sources directly, not from their preprocessed version, + # otherwise precompiled headers will not be used during cache misses. + CCACHE_CPP2=true \ + $$ccache_prefix +} + +for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_LINK QMAKE_LINK_SHLIB QMAKE_LINK_C)): \ + $$tool = $$ccache_prefix $$eval($$tool) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/hide_symbols.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/hide_symbols.prf new file mode 100644 index 000000000..f4d3921cb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/hide_symbols.prf @@ -0,0 +1,3 @@ +QMAKE_CFLAGS += $$QMAKE_CFLAGS_HIDESYMS +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_HIDESYMS +QMAKE_LFLAGS += $$QMAKE_LFLAGS_HIDESYMS diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/largefile.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/largefile.prf new file mode 100644 index 000000000..104d6759a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/largefile.prf @@ -0,0 +1,2 @@ +DEFINES += _LARGEFILE64_SOURCE _LARGEFILE_SOURCE + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/opengl.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/opengl.prf new file mode 100644 index 000000000..72b5ac453 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/opengl.prf @@ -0,0 +1,12 @@ +qtConfig(opengles2) { + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES2 + !isEmpty(QMAKE_LIBDIR_OPENGL_ES2):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2 + target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES2 + else:LIBS += $$QMAKE_LIBS_OPENGL_ES2 +} else { + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL + !isEmpty(QMAKE_LIBDIR_OPENGL):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL + target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL + else:LIBS += $$QMAKE_LIBS_OPENGL +} + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/separate_debug_info.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/separate_debug_info.prf new file mode 100644 index 000000000..ebb37bdfc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/separate_debug_info.prf @@ -0,0 +1,97 @@ +have_target:!static:if(darwin|!isEmpty(QMAKE_OBJCOPY)) { + darwin { + debug_info_copy_bin = $$QMAKE_DSYMUTIL + debug_info_strip_bin = $$QMAKE_STRIP + debug_info_suffix = dSYM + debug_info_out = --flat -o + debug_info_strip = -S + } else { + debug_info_copy_bin = $$QMAKE_OBJCOPY + debug_info_strip_bin = $$QMAKE_OBJCOPY + 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 + } + } + load(resolve_target) + debug_info_target = $$QMAKE_RESOLVED_TARGET + + darwin { + !isEmpty(QMAKE_RESOLVED_BUNDLE) { + debug_info_target = $$QMAKE_RESOLVED_BUNDLE + CONFIG += any_bundle + } + + debug_info_target_rel = $$section(debug_info_target, /, -1, -1) + + debug_info_target_dir_suffix = .$$debug_info_suffix/Contents/Resources/DWARF + + debug_info_target_dir = $${debug_info_target}$${debug_info_target_dir_suffix} + debug_info_target_dir_rel = $${debug_info_target_rel}$${debug_info_target_dir_suffix} + !isEmpty(QMAKE_RESOLVED_BUNDLE): \ + QMAKE_TARGET_DEBUG_INFO = $$debug_info_target_dir/$$TARGET + else: \ + QMAKE_TARGET_DEBUG_INFO = $$debug_info_target_dir/$$section(QMAKE_RESOLVED_TARGET, /, -1, -1) + + if(any_bundle:!build_pass)|if(!any_bundle:if(build_pass|isEmpty(BUILDS))) { + equals(TEMPLATE, lib):lib_bundle:!isEmpty(QMAKE_FRAMEWORK_BUNDLE_NAME): \ + BUNDLEIDENTIFIER = $$replace(QMAKE_FRAMEWORK_BUNDLE_NAME, \\.framework$, ) + else: equals(TEMPLATE, app):app_bundle:!isEmpty(QMAKE_APPLICATION_BUNDLE_NAME): \ + BUNDLEIDENTIFIER = $$replace(QMAKE_APPLICATION_BUNDLE_NAME, \\.app$, ) + else: \ + BUNDLEIDENTIFIER = $${TARGET} + + !isEmpty(QMAKE_TARGET_BUNDLE_PREFIX): \ + BUNDLEIDENTIFIER = $$replace(QMAKE_TARGET_BUNDLE_PREFIX, \\.$, ).$${BUNDLEIDENTIFIER} + else: \ + BUNDLEIDENTIFIER = com.yourcompany.$${BUNDLEIDENTIFIER} + + BUNDLEIDENTIFIER ~= s,_,-, + + debug_info_plist.input = $$QMAKESPEC/Info.plist.dSYM.in + debug_info_plist.output = $${debug_info_target}.$$debug_info_suffix/Contents/Info.plist + QMAKE_SUBSTITUTES += debug_info_plist + } + + contains(INSTALLS, target):isEmpty(target.files):isEmpty(target.commands):isEmpty(target.extra) { + !build_pass|release { + debug_info_plist_target.CONFIG += no_check_exist + debug_info_plist_target.files = $${debug_info_target}.$$debug_info_suffix/Contents/Info.plist + debug_info_plist_target.path += $${target.path}/$${debug_info_target_rel}.$$debug_info_suffix/Contents + INSTALLS += debug_info_plist_target + } + + debug_info_target.CONFIG += no_check_exist + debug_info_target.files = $$QMAKE_TARGET_DEBUG_INFO + debug_info_target.path += $${target.path}/$${debug_info_target_dir_rel} + INSTALLS += debug_info_target + } + } else { + QMAKE_TARGET_DEBUG_INFO = $${QMAKE_RESOLVED_TARGET}.$$debug_info_suffix + target.targets += $$QMAKE_TARGET_DEBUG_INFO + } + + shell_target = $$shell_quote($$relative_path($$QMAKE_RESOLVED_TARGET, $$OUT_PWD)) + shell_target_debug_info = $$shell_quote($$relative_path($$QMAKE_TARGET_DEBUG_INFO, $$OUT_PWD)) + copy_debug_info = $$debug_info_copy_bin $$debug_info_keep $$shell_target $$debug_info_out $$shell_target_debug_info + strip_debug_info = $$debug_info_strip_bin $$debug_info_strip $$shell_target + + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK + darwin { + mkdir_debug_info = $$QMAKE_MKDIR $$shell_quote($$debug_info_target_dir) + QMAKE_POST_LINK = $$mkdir_debug_info && $$copy_debug_info && $$strip_debug_info $$QMAKE_POST_LINK + } else { + link_debug_info = $$QMAKE_OBJCOPY --add-gnu-debuglink=$$shell_target_debug_info $$shell_target + !contains(QMAKE_HOST.os, Windows): \ + QMAKE_POST_LINK = && chmod -x $$shell_target_debug_info $$QMAKE_POST_LINK + QMAKE_POST_LINK = $$copy_debug_info && $$strip_debug_info && $$link_debug_info $$QMAKE_POST_LINK + } + silent:QMAKE_POST_LINK = @echo creating $@.$$debug_info_suffix && $$QMAKE_POST_LINK + + QMAKE_DISTCLEAN += $$QMAKE_TARGET_DEBUG_INFO +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/thread.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/thread.prf new file mode 100644 index 000000000..d6df7b647 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/thread.prf @@ -0,0 +1,14 @@ +!isEmpty(QMAKE_CFLAGS_THREAD) { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_THREAD + QMAKE_EXPORT_CFLAGS += $$QMAKE_CFLAGS_THREAD +} +!isEmpty(QMAKE_CXXFLAGS_THREAD) { + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_THREAD + QMAKE_EXPORT_CXXFLAGS += $$QMAKE_CXXFLAGS_THREAD +} +INCLUDEPATH += $$QMAKE_INCDIR_THREAD +LIBS += $$QMAKE_LIBS_THREAD +!isEmpty(QMAKE_LFLAGS_THREAD):QMAKE_LFLAGS += $$QMAKE_LFLAGS_THREAD +!isEmpty(QMAKE_CC_THREAD):QMAKE_CC = $$QMAKE_CC_THREAD +!isEmpty(QMAKE_CXX_THREAD):QMAKE_CXX = $$QMAKE_CXX_THREAD +!isEmpty(QMAKE_LINK_THREAD):QMAKE_LINK = $$QMAKE_LINK_THREAD diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11.prf new file mode 100644 index 000000000..404ce08d4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11.prf @@ -0,0 +1 @@ +CONFIG *= x11lib x11inc diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11inc.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11inc.prf new file mode 100644 index 000000000..7e11b5bfa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11inc.prf @@ -0,0 +1,3 @@ +INCLUDEPATH += $$QMAKE_INCDIR_X11 +QMAKE_CFLAGS += $$QMAKE_CFLAGS_X11 +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_X11 diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11lib.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11lib.prf new file mode 100644 index 000000000..b661d53dd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11lib.prf @@ -0,0 +1,2 @@ +!isEmpty(QMAKE_LIBDIR_X11):QMAKE_LIBDIR += $$QMAKE_LIBDIR_X11 +LIBS_PRIVATE += $$QMAKE_LIBS_X11 diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11sm.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11sm.prf new file mode 100644 index 000000000..3ff309e63 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/unix/x11sm.prf @@ -0,0 +1 @@ +!isEmpty(QMAKE_LIBDIR_X11):QMAKE_LIBDIR += $$QMAKE_LIBDIR_X11 diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/use_c_linker.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/use_c_linker.prf new file mode 100644 index 000000000..e07ce6a3b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/use_c_linker.prf @@ -0,0 +1,5 @@ +!isEmpty(QMAKE_LINK_C):QMAKE_LINK = $$QMAKE_LINK_C +!isEmpty(QMAKE_LINK_C_SHLIB) { + !isEmpty(QMAKE_LINK_SHLIB_CMD):QMAKE_LINK_SHLIB_CMD ~= s/^$$re_escape($$QMAKE_LINK_SHLIB)$/$$QMAKE_LINK_C_SHLIB/ + QMAKE_LINK_SHLIB = $$QMAKE_LINK_C_SHLIB +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/vxworks.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/vxworks.prf new file mode 100644 index 000000000..e257cd7ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/vxworks.prf @@ -0,0 +1,64 @@ +# VxWorks Munching Feature +# When compiling C++ sources on VxWorks in kernel mode, all .o files have to +# be processed by the so-called 'munch' script which will generate +# additional code for static c'tors and d'tors. The resulting .c file has to +# be compiled in turn and linked to the executable. +# This can only been done when linking applications, since the munch script +# generates a .c file containing static symbols: linking a lib that was +# already munched to a munched application would lead to duplicate symbols! + +isEmpty(VXWORKS_MUNCH_EXT):VXWORKS_MUNCH_EXT = vxm +isEmpty(VXWORKS_MUNCH_TOOL):VXWORKS_MUNCH_TOOL = $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl + + +!exists($$VXWORKS_MUNCH_TOOL) { + error("Could not find VxWorks Munch tool: '$${VXWORKS_MUNCH_TOOL}'. Please set the environment variable WIND_BASE correctly.") +} + +# The following scope is entered for any project that specifies 'shared' as well +# as for any project specifying neither 'shared', nor 'lib', nor 'staticlib'. +# This means that for a static build only the executable is munched, while for +# a shared build, every lib, plugin and executable is munched separately. + +shared|!staticlib:!lib { + *-dcc { + VXWORKS_MUNCH_CMD = targ=`basename $(TARGET)`; \ + ddump -Ng \"$(TARGET)\" | tclsh $$VXWORKS_MUNCH_TOOL -c $$VXWORKS_ARCH_MUNCH >\"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" && \ + $$QMAKE_CC -c $$QMAKE_CFLAGS \"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" -o \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" && \ + $$QMAKE_LINK $$QMAKE_LFLAGS -X -r5 -r4 \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" \"$(TARGET)\" -o \"$(TARGET).munched\" && \ + mv \"$(TARGET).munched\" \"$(TARGET)\" && \ + chmod +x \"$(TARGET)\" + } + *-g++ { + VXWORKS_MUNCH_CMD = targ=`basename $(TARGET)`; \ + nm \"$(DESTDIR)$(TARGET)\" | tclsh $$VXWORKS_MUNCH_TOOL -c $$VXWORKS_ARCH_MUNCH >\"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" && \ + $$QMAKE_CC -c $$QMAKE_CFLAGS -fdollars-in-identifiers \"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" -o \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" && \ + $$QMAKE_LINK $$QMAKE_LFLAGS -nostdlib -Wl,-X -T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" \"$(DESTDIR)$(TARGET)\" -o \"$(DESTDIR)$(TARGET).munched\" && \ + mv \"$(DESTDIR)$(TARGET).munched\" \"$(DESTDIR)$(TARGET)\" && \ + chmod +x \"$(DESTDIR)$(TARGET)\" + } + + # We need to create a dummy lib.a in case someone links against this lib. + # In VxWorks it's the responsibility of the run-time linker ld to resolve + # symbols, since there are no real shared libraries for the toolchain linker + # to link against. + + shared:contains(TEMPLATE, lib) { + VXWORKS_MUNCH_CMD += "&&" + VXWORKS_MUNCH_CMD += (atarg=`basename $(TARGET) .so.$${VERSION}`.a ; touch \"$(DESTDIR)\$\${atarg}\") + } + + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK + QMAKE_POST_LINK = $$VXWORKS_MUNCH_CMD$$QMAKE_POST_LINK + silent:QMAKE_POST_LINK = @echo creating $@.$$VXWORKS_MUNCH_EXT && $$QMAKE_POST_LINK + + isEmpty(DESTDIR) { + target.targets += "`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT" + QMAKE_DISTCLEAN += "`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT" + } else { + target.targets += "$(DESTDIR)/`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT" + QMAKE_DISTCLEAN += "$(DESTDIR)/`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT" + } + *-g++:LIBS += -lgcc +} + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/warn_off.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/warn_off.prf new file mode 100644 index 000000000..072a7aca1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/warn_off.prf @@ -0,0 +1,3 @@ +CONFIG -= warn_on +QMAKE_CFLAGS += $$QMAKE_CFLAGS_WARN_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_WARN_OFF diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/warn_on.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/warn_on.prf new file mode 100644 index 000000000..03a4a24a6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/warn_on.prf @@ -0,0 +1,4 @@ +CONFIG -= warn_off +QMAKE_CFLAGS += $$QMAKE_CFLAGS_WARN_ON +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_WARN_ON + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/wayland-scanner.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/wayland-scanner.prf new file mode 100644 index 000000000..9166ae775 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/wayland-scanner.prf @@ -0,0 +1,121 @@ +# +# Extra-compilers for handling files specified in +# the WAYLANDSERVERSOURCES and WAYLANDCLIENTSOURCES variables. +# +# WAYLANDSERVERSOURCES_SYSTEM and WAYLANDCLIENTSOURCES_SYSTEM +# are for protocols where the wayland-scanner output is already +# included in the system libraries. In that case, .c files must +# not be generated, to avoid the Qt version replacing driver-specific +# functions. These files are therefore omitted from wayland_code.input. +# Header files are still generated because they are used to build QtWayland. +# +# qtwaylandscanner must be used even in the _SYSTEM case, since the system +# Wayland libraries do not contain Qt code. + +isEmpty(QMAKE_WAYLAND_SCANNER):error("QMAKE_WAYLAND_SCANNER not defined for this mkspec") + +defineReplace(waylandScannerHeaderFiles) { + side = $$1 + path = $$2 + isEqual(side, "server"): \ + sources_list = $$WAYLANDSERVERSOURCES $$WAYLANDSERVERSOURCES_SYSTEM + else: \ + sources_list = $$WAYLANDCLIENTSOURCES $$WAYLANDCLIENTSOURCES_SYSTEM + wayland_header_files_for_side = + for(file, sources_list) { + basenameFile = $$basename(file) + basenameFile ~= s,\\.xml$,, + wayland_header_files_for_side += $$path/wayland-$$basenameFile-$$side-protocol$${first(QMAKE_EXT_H)} + isEqual(side, "server"): \ + wayland_header_files_for_side += $$path/qwayland-server-$$basenameFile$${first(QMAKE_EXT_H)} + else: \ + wayland_header_files_for_side += $$path/qwayland-$$basenameFile$${first(QMAKE_EXT_H)} + } + return($$wayland_header_files_for_side) +} + +qt_install_headers { + header_dest = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private + + header_files_client = $$waylandScannerHeaderFiles(client, $$header_dest) + !isEmpty(header_files_client) { + wayland_generated_client_headers.files = $$header_files_client + wayland_generated_client_headers.path = $$private_headers.path + wayland_generated_client_headers.CONFIG = no_check_exist + INSTALLS += wayland_generated_client_headers + WAYLAND_CLIENT_HEADER_DEST = $$header_dest/ + WAYLAND_CLIENT_INCLUDE_DIR = $$MODULE_INCNAME/private + } + + header_files_server = $$waylandScannerHeaderFiles(server, $$header_dest) + !isEmpty(header_files_server) { + wayland_generated_server_headers.files = $$header_files_server + wayland_generated_server_headers.path = $$private_headers.path + wayland_generated_server_headers.CONFIG = no_check_exist + INSTALLS += wayland_generated_server_headers + WAYLAND_SERVER_HEADER_DEST = $$header_dest/ + WAYLAND_SERVER_INCLUDE_DIR = $$MODULE_INCNAME/private + } +} + +wayland_server_header.name = wayland ${QMAKE_FILE_BASE} +wayland_server_header.input = WAYLANDSERVERSOURCES WAYLANDSERVERSOURCES_SYSTEM +wayland_server_header.variable_out = HEADERS +wayland_server_header.output = $${WAYLAND_SERVER_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-server-protocol$${first(QMAKE_EXT_H)} +wayland_server_header.commands = $$QMAKE_WAYLAND_SCANNER server-header < ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT} +silent:wayland_server_header.commands = @echo Wayland server header ${QMAKE_FILE_IN} && $$wayland_server_header.commands +QMAKE_EXTRA_COMPILERS += wayland_server_header + +wayland_client_header.name = wayland ${QMAKE_FILE_BASE} +wayland_client_header.input = WAYLANDCLIENTSOURCES WAYLANDCLIENTSOURCES_SYSTEM +wayland_client_header.variable_out = HEADERS +wayland_client_header.output = $${WAYLAND_CLIENT_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-client-protocol$${first(QMAKE_EXT_H)} +wayland_client_header.commands = $$QMAKE_WAYLAND_SCANNER client-header < ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT} +silent:wayland_client_header.commands = @echo Wayland client header ${QMAKE_FILE_IN} && $$wayland_client_header.commands +QMAKE_EXTRA_COMPILERS += wayland_client_header + +wayland_code.name = wayland ${QMAKE_FILE_BASE} +wayland_code.input = WAYLANDCLIENTSOURCES WAYLANDSERVERSOURCES +wayland_code.variable_out = SOURCES +wayland_code.output = wayland-${QMAKE_FILE_BASE}-protocol.c +wayland_code.commands = $$QMAKE_WAYLAND_SCANNER code < ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT} +silent:wayland_code.commands = @echo Wayland code header ${QMAKE_FILE_IN} && $$wayland_code.commands +QMAKE_EXTRA_COMPILERS += wayland_code + +qtPrepareTool(QMAKE_QTWAYLANDSCANNER, qtwaylandscanner) + +qtwayland_client_header.name = qtwayland ${QMAKE_FILE_BASE} +qtwayland_client_header.input = WAYLANDCLIENTSOURCES WAYLANDCLIENTSOURCES_SYSTEM +qtwayland_client_header.variable_out = HEADERS +qtwayland_client_header.depends += $$QMAKE_QTWAYLANDSCANNER_EXE $${WAYLAND_CLIENT_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-client-protocol$${first(QMAKE_EXT_H)} +qtwayland_client_header.output = $${WAYLAND_CLIENT_HEADER_DEST}qwayland-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +qtwayland_client_header.commands = $$QMAKE_QTWAYLANDSCANNER client-header ${QMAKE_FILE_IN} $$WAYLAND_CLIENT_INCLUDE_DIR > ${QMAKE_FILE_OUT} +silent:qtwayland_client_header.commands = @echo QtWayland client header ${QMAKE_FILE_IN} && $$qtwayland_client_header.commands +QMAKE_EXTRA_COMPILERS += qtwayland_client_header + +qtwayland_client_code.name = qtwayland ${QMAKE_FILE_BASE} +qtwayland_client_code.input = WAYLANDCLIENTSOURCES WAYLANDCLIENTSOURCES_SYSTEM +qtwayland_client_code.variable_out = SOURCES +qtwayland_client_code.depends += $$QMAKE_QTWAYLANDSCANNER_EXE $${WAYLAND_CLIENT_HEADER_DEST}qwayland-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +qtwayland_client_code.output = qwayland-${QMAKE_FILE_BASE}.cpp +qtwayland_client_code.commands = $$QMAKE_QTWAYLANDSCANNER client-code ${QMAKE_FILE_IN} $$WAYLAND_CLIENT_INCLUDE_DIR > ${QMAKE_FILE_OUT} +silent:qtwayland_client_code.commands = @echo QtWayland client code ${QMAKE_FILE_IN} && $$qtwayland_client_code.commands +QMAKE_EXTRA_COMPILERS += qtwayland_client_code + +qtwayland_server_header.name = qtwayland ${QMAKE_FILE_BASE} +qtwayland_server_header.input = WAYLANDSERVERSOURCES WAYLANDSERVERSOURCES_SYSTEM +qtwayland_server_header.variable_out = HEADERS +qtwayland_server_header.depends += $$QMAKE_QTWAYLANDSCANNER_EXE $${WAYLAND_SERVER_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-server-protocol$${first(QMAKE_EXT_H)} +qtwayland_server_header.output = $${WAYLAND_SERVER_HEADER_DEST}qwayland-server-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +qtwayland_server_header.commands = $$QMAKE_QTWAYLANDSCANNER server-header ${QMAKE_FILE_IN} $$WAYLAND_SERVER_INCLUDE_DIR > ${QMAKE_FILE_OUT} +silent:qtwayland_server_header.commands = @echo QtWayland server header ${QMAKE_FILE_IN} && $$qtwayland_server_header.commands +QMAKE_EXTRA_COMPILERS += qtwayland_server_header + +qtwayland_server_code.name = qtwayland ${QMAKE_FILE_BASE} +qtwayland_server_code.input = WAYLANDSERVERSOURCES WAYLANDSERVERSOURCES_SYSTEM +qtwayland_server_code.variable_out = SOURCES +qtwayland_server_code.depends += $$QMAKE_QTWAYLANDSCANNER_EXE $${WAYLAND_SERVER_HEADER_DEST}qwayland-server-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +qtwayland_server_code.output = qwayland-server-${QMAKE_FILE_BASE}.cpp +qtwayland_server_code.commands = $$QMAKE_QTWAYLANDSCANNER server-code ${QMAKE_FILE_IN} $$WAYLAND_SERVER_INCLUDE_DIR > ${QMAKE_FILE_OUT} +silent:qtwayland_server_code.commands = @echo QtWayland server code ${QMAKE_FILE_IN} && $$qtwayland_server_code.commands +QMAKE_EXTRA_COMPILERS += qtwayland_server_code diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/console.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/console.prf new file mode 100644 index 000000000..739bb0e01 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/console.prf @@ -0,0 +1,5 @@ +CONFIG -= windows +QMAKE_LFLAGS += $$QMAKE_LFLAGS_CONSOLE +contains(TEMPLATE, ".*app") { + QMAKE_LFLAGS += $$QMAKE_LFLAGS_EXE +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/default_pre.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/default_pre.prf new file mode 100644 index 000000000..4bd1653ae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/default_pre.prf @@ -0,0 +1,2 @@ +CONFIG = windows $$CONFIG +load(default_pre) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/dumpcpp.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/dumpcpp.prf new file mode 100644 index 000000000..c8cb0dd24 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/dumpcpp.prf @@ -0,0 +1,36 @@ +qtPrepareTool(QMAKE_DUMPCPP, dumpcpp) + +dumpcpp_decl.depends += $$QMAKE_DUMPCPP_EXE +dumpcpp_decl.commands = $$QMAKE_DUMPCPP ${QMAKE_FILE_IN} -o ${QMAKE_FILE_BASE} +qaxcontainer_compat: dumpcpp_decl.commands += -compat +dumpcpp_decl.output = ${QMAKE_FILE_BASE}.h +dumpcpp_decl.input = TYPELIBS +dumpcpp_decl.variable_out = HEADERS +dumpcpp_decl.name = DUMP +dumpcpp_decl.CONFIG += no_link + +QMAKE_EXTRA_COMPILERS += dumpcpp_decl + + +dumpcpp_impl.commands = $$escape_expand(\\n) # dummy command +dumpcpp_impl.output = ${QMAKE_FILE_BASE}.cpp +dumpcpp_impl.input = TYPELIBS +dumpcpp_impl.variable_out = SOURCES +dumpcpp_impl.name = CPP +dumpcpp_impl.depends += ${QMAKE_FILE_BASE}.h + +QMAKE_EXTRA_COMPILERS += dumpcpp_impl + + +# Create dependencies from every object file to our generated header files. +if(isEmpty(BUILDS)|build_pass):have_target:!contains(TEMPLATE, vc.*) { + for(tlb, TYPELIBS) { + hdr = $$basename(tlb) + hdr = $$section(hdr, ., 0, -2).h + TYPELIB_HEADERS += $$hdr + } + + objtgt.target = $(OBJECTS) + objtgt.depends += $$TYPELIB_HEADERS + QMAKE_EXTRA_TARGETS += objtgt +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/idcidl.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/idcidl.prf new file mode 100644 index 000000000..922ae3f99 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/idcidl.prf @@ -0,0 +1,48 @@ +build_pass:console { + warning("QAxServer applications cannot be console applications.") + warning("Remove 'console' from your CONFIG.") +} + +# Do not link qtmain.lib +QMAKE_LIBS_QT_ENTRY = + +ACTIVEQT_VERSION = $$VERSION +isEmpty(ACTIVEQT_VERSION):ACTIVEQT_VERSION = 1.0 + +qtPrepareTool(QMAKE_IDC, idc) +contains(TEMPLATE, "vc.*") { + ACTIVEQT_IDC = $${QMAKE_IDC} + ACTIVEQT_IDL = $${QMAKE_IDL} + ACTIVEQT_TARGET = \"$(TargetPath)\" + ACTIVEQT_NEWLINE = $$escape_expand(\\n\\t) + ACTIVEQT_OUTPUT = $(IntDir)$${TARGET} + ACTIVEQT_TLBOUT = \"$(TargetDir)/$${TARGET}.tlb\" + GENERATED += $${OBJECTS_DIR}/$${TARGET}.idl $${ACTIVEQT_TLBOUT} +} else { + ACTIVEQT_IDC = -$(IDC) + ACTIVEQT_IDL = -$(IDL) + ACTIVEQT_NEWLINE = $$escape_expand(\\n\\t) + ACTIVEQT_TARGET = $(DESTDIR_TARGET) + ACTIVEQT_OUTPUT = $(OBJECTS_DIR)/$${TARGET} + isEmpty(DESTDIR) { + ACTIVEQT_TLBOUT = $${TARGET}.tlb + } else { + ACTIVEQT_TLBOUT = $${DESTDIR}/$${TARGET}.tlb + } +} + +!qaxserver_no_postlink { + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK += $$quote($$ACTIVEQT_NEWLINE) + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDC $${ACTIVEQT_TARGET} /idl $${ACTIVEQT_OUTPUT}.idl -version $${ACTIVEQT_VERSION}$${ACTIVEQT_NEWLINE}) + !isEmpty(RC_FILE) { + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDL "$${ACTIVEQT_OUTPUT}.idl" /nologo /tlb "$${ACTIVEQT_OUTPUT}.tlb"$$ACTIVEQT_NEWLINE) + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDC $${ACTIVEQT_TARGET} /tlb $${ACTIVEQT_OUTPUT}.tlb$$ACTIVEQT_NEWLINE) + } else { + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDL "$${ACTIVEQT_OUTPUT}.idl" /nologo /tlb "$${ACTIVEQT_TLBOUT}"$$ACTIVEQT_NEWLINE) + message("No rc-file linked into project; type library will be a separate file.") + } + !qaxserver_no_register: \ + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDC $${ACTIVEQT_TARGET} /regserver) + QMAKE_CLEAN += $${ACTIVEQT_OUTPUT}.idl $${ACTIVEQT_OUTPUT}.tlb +} + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/msvc_mp.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/msvc_mp.prf new file mode 100644 index 000000000..d6dea14db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/msvc_mp.prf @@ -0,0 +1,2 @@ +QMAKE_CFLAGS += $$QMAKE_CFLAGS_MP +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_MP diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/opengl.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/opengl.prf new file mode 100644 index 000000000..c6fba7770 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/opengl.prf @@ -0,0 +1,31 @@ +QT_FOR_CONFIG += gui + +qtConfig(opengles2) { + # Depending on the configuration we use libQtANGLE or libEGL and libGLESv2 + qtConfig(combined-angle-lib) { + QMAKE_LIBS_OPENGL_ES2 = -l$${LIBQTANGLE_NAME} $$QMAKE_LIBS_OPENGL_ES2 + QMAKE_LIBS_OPENGL_ES2_DEBUG = -l$${LIBQTANGLE_NAME}d $$QMAKE_LIBS_OPENGL_ES2_DEBUG + } else { + QMAKE_LIBS_OPENGL_ES2 = -l$${LIBEGL_NAME} -l$${LIBGLESV2_NAME} $$QMAKE_LIBS_OPENGL_ES2 + QMAKE_LIBS_OPENGL_ES2_DEBUG = -l$${LIBEGL_NAME}d -l$${LIBGLESV2_NAME}d $$QMAKE_LIBS_OPENGL_ES2_DEBUG + } +# For Desktop, use the ANGLE library location passed on from configure. + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES2 + CONFIG(debug, debug|release) { + QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2_DEBUG + qtConfig(angle) { + LIBS += $$QMAKE_LIBS_OPENGL_ES2_DEBUG + } else { + LIBS += $$QMAKE_LIBS_OPENGL_ES2 + } + } else { + LIBS += $$QMAKE_LIBS_OPENGL_ES2 + QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2_RELEASE + } + qtConfig(static): DEFINES += GL_APICALL= EGLAPI= +} else { + !qtConfig(dynamicgl) { + QMAKE_LIBS += $$QMAKE_LIBS_OPENGL + QMAKE_LFLAGS += $$QMAKE_LFLAGS_OPENGL + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/qt_dll.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/qt_dll.prf new file mode 100644 index 000000000..f03c0c08c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/qt_dll.prf @@ -0,0 +1 @@ +CONFIG *= qt diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/rtti.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/rtti.prf new file mode 100644 index 000000000..6d720d243 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/rtti.prf @@ -0,0 +1,3 @@ +CONFIG -= rtti_off +QMAKE_CFLAGS += $$QMAKE_CFLAGS_RTTI_ON +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RTTI_ON diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/rtti_off.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/rtti_off.prf new file mode 100644 index 000000000..b520bfa8b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/rtti_off.prf @@ -0,0 +1,4 @@ +CONFIG -= rtti +QMAKE_CFLAGS += $$QMAKE_CFLAGS_RTTI_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RTTI_OFF +DEFINES += QT_NO_DYNAMIC_CAST \ No newline at end of file diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/separate_debug_info.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/separate_debug_info.prf new file mode 100644 index 000000000..2838020f0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/separate_debug_info.prf @@ -0,0 +1,18 @@ +have_target:!static:!isEmpty(QMAKE_OBJCOPY) { + load(resolve_target) + QMAKE_TARGET_DEBUG_INFO = $${QMAKE_RESOLVED_TARGET}.debug + + shell_target = $$shell_quote($$relative_path($$QMAKE_RESOLVED_TARGET, $$OUT_PWD)) + shell_target_debug_info = $$shell_quote($$relative_path($$QMAKE_TARGET_DEBUG_INFO, $$OUT_PWD)) + copy_debug_info = $$QMAKE_OBJCOPY --only-keep-debug $$shell_target $$shell_target_debug_info + link_debug_info = $$QMAKE_OBJCOPY --add-gnu-debuglink=$$shell_target_debug_info $$shell_target + strip_debug_info = $$QMAKE_OBJCOPY --strip-debug $$shell_target + + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK + + QMAKE_POST_LINK = $$copy_debug_info && $$strip_debug_info && $$link_debug_info $$QMAKE_POST_LINK + silent:QMAKE_POST_LINK = @echo creating $@.debug && $$QMAKE_POST_LINK + + target.targets += $$QMAKE_TARGET_DEBUG_INFO + QMAKE_DISTCLEAN += $$QMAKE_TARGET_DEBUG_INFO +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/stl.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/stl.prf new file mode 100644 index 000000000..caf30ef68 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/stl.prf @@ -0,0 +1,3 @@ +CONFIG -= stl_off +QMAKE_CFLAGS *= $$QMAKE_CFLAGS_STL_ON +QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_STL_ON diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/stl_off.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/stl_off.prf new file mode 100644 index 000000000..10198c76d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/stl_off.prf @@ -0,0 +1,3 @@ +CONFIG -= stl +QMAKE_CFLAGS += $$QMAKE_CFLAGS_STL_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STL_OFF diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/windeployqt.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/windeployqt.prf new file mode 100644 index 000000000..fb5b2c423 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/windeployqt.prf @@ -0,0 +1,20 @@ +# Extra target for running windeployqt +qtPrepareTool(QMAKE_WINDEPLOYQT, windeployqt) +build_pass { + load(resolve_target) + + isEmpty(WINDEPLOYQT_OPTIONS): WINDEPLOYQT_OPTIONS = -qmldir $$shell_quote($$system_path($$_PRO_FILE_PWD_)) + WINDEPLOYQT_TARGET = $$shell_quote($$system_path($$QMAKE_RESOLVED_TARGET)) + WINDEPLOYQT_OUTPUT = $$shell_quote($$system_path($$dirname(QMAKE_RESOLVED_TARGET)/$$basename(TARGET).windeployqt)) + windeployqt.target = windeployqt + windeployqt.commands = $$QMAKE_WINDEPLOYQT $$WINDEPLOYQT_OPTIONS -list target $$WINDEPLOYQT_TARGET > $$WINDEPLOYQT_OUTPUT + + windeployqt_clean.commands = if exist $$WINDEPLOYQT_OUTPUT for /f %i in ($$WINDEPLOYQT_OUTPUT) do $$QMAKE_DEL_FILE %~fi && $$QMAKE_DEL_DIR %~pi + QMAKE_EXTRA_TARGETS += windeployqt_clean + DISTCLEAN_DEPS += windeployqt_clean + QMAKE_DISTCLEAN += $$WINDEPLOYQT_OUTPUT +} else { + windeployqt.CONFIG += recursive + windeployqt_clean.CONFIG += recursive +} +QMAKE_EXTRA_TARGETS += windeployqt windeployqt_clean diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/windows.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/windows.prf new file mode 100644 index 000000000..ecb167bf1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/win32/windows.prf @@ -0,0 +1,17 @@ +CONFIG -= console +QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS +contains(TEMPLATE, ".*app") { + QMAKE_LFLAGS += $$QMAKE_LFLAGS_EXE + mingw:DEFINES += QT_NEEDS_QMAIN + + qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) { + isEqual(entryLib, -lqtmain) { + !contains(QMAKE_DEFAULT_LIBDIRS, $$QT.core.libs): \ + QMAKE_LIBS += -L$$QT.core.libs + CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}d + else: QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX} + } else { + QMAKE_LIBS += $${entryLib} + } + } +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/winrt/console.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/winrt/console.prf new file mode 100644 index 000000000..c4afe5b96 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/winrt/console.prf @@ -0,0 +1,5 @@ +# This is an empty prf file to overwrite the win32 version. +# On Windows RT all applications need to be windows applications +# and also link to winmain. Inside winmain we create the launch +# arguments and also initialize the UI. + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/winrt/default_pre.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/winrt/default_pre.prf new file mode 100644 index 000000000..966d24f09 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/winrt/default_pre.prf @@ -0,0 +1,14 @@ +# Note that the order is important - ucrt(d) has to be first. +# Otherwise, the linker might use malloc from a different library, +# but free_dbg() from the runtime, causing an assertion failure +# due to deleting an item from a different heap. +# vcruntime(d) is necessary when we don't link to any libraries +# which would pull it in transitively. +CONFIG(debug, debug|release): \ + QMAKE_LIBS = ucrtd.lib vcruntimed.lib $$QMAKE_LIBS +else: \ + QMAKE_LIBS = ucrt.lib vcruntime.lib $$QMAKE_LIBS + +equals(TEMPLATE, "vcapp"):!static: CONFIG += windeployqt + +load(default_pre) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/winrt/package_manifest.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/winrt/package_manifest.prf new file mode 100644 index 000000000..d850254dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/winrt/package_manifest.prf @@ -0,0 +1,223 @@ +# This performs basic variable replacement on the contents of the WinRT manifest template, as +# specified by WINRT_MANIFEST. The resulting manifest file is written to the output directory. +# While the most common options are covered by the default template, the developer is expected +# to make an application-level copy of the template in order to customize the manifest further. +# Afterwards, they can override the default template by assigning their template to WINRT_MANIFEST. +# +# All subkeys in WINRT_MANIFEST will be replaced if defined/found, so new variables can be easily +# added. The following keys have default values and are present in the default templates: +# WINRT_MANIFEST: The name of the input manifest file. Defaults to a file defined by the mkspec. +# WINRT_MANIFEST.target: The name of the target (.exe). Defaults to TARGET. +# WINRT_MANIFEST.identity: The unique ID of the app. Defaults to reusing the existing generated manifest's UUID, or generates a new UUID if none is present. +# WINRT_MANIFEST.name: The name of the package as displayed to the user. Defaults to TARGET. +# WINRT_MANIFEST.architecture: The target architecture. Defaults to VCPROJ_ARCH. +# WINRT_MANIFEST.version: The version number of the package. Defaults to "1.0.0.0". +# WINRT_MANIFEST.publisher: Display name of the publisher. Defaults to "Default publisher display name". +# WINRT_MANIFEST.publisher_id: The publisher's distinguished name (default: CN=MyCN). +# WINRT_MANIFEST.phone_product_id: The GUID of the product. Defaults to the value of WINRT_MANIFEST.identity. (Windows Phone only) +# WINRT_MANIFEST.phone_publisher_id: The GUID of the publisher. Defaults to an invalid GUID. (Windows Phone only) +# WINRT_MANIFEST.description: Package description. Defaults to "Default package description". +# WINRT_MANIFEST.background: Tile background color. Defaults to "green". +# WINRT_MANIFEST.foreground: Tile foreground (text) color (Windows 8/RT only). Defaults to "light". +# WINRT_MANIFEST.logo_store: Logo image file for Windows Store. Default provided by the mkspec. +# WINRT_MANIFEST.logo_small: Small logo image file. Default provided by the mkspec. +# WINRT_MANIFEST.logo_medium: Medium logo image file. Default provided by the mkspec. +# WINRT_MANIFEST.logo_large: Large logo image file. Default provided by the mkspec. +# WINRT_MANIFEST.splash_screen: Splash screen image file. Default provided by the mkspec. +# WINRT_MANIFEST.rotation_preference: Orientation specification. Default is empty. (portrait, landscape, landscapeFlipped) +# WINRT_MANIFEST.iconic_tile_icon: Image file for the "iconic" tile template icon. Default provided by the mkspec. +# WINRT_MANIFEST.iconic_tile_small: Image file for the small "iconic" tile template logo. Default provided by the mkspec. +# WINRT_MANIFEST.default_language: Specifies the default language of the application +# WINRT_MANIFEST.capabilities: Specifies capabilities to add to the capability list. +# WINRT_MANIFEST.capabilities_device: Specifies device capabilities to add to the capability list. (location, webcam...) +# WINRT_MANIFEST.dependencies: Specifies dependencies required by the package. +# WINRT_MANIFEST.minVersion: Specifies the minimum required Windows version to run the package. Defaults to %UCRTVersion% +# WINRT_MANIFEST.maxVersionTested: Specifies the maximum Windows version the package has been tested against. Defaults to WINRT_MANIFEST.minVersion + +# The manifest is generated for each build pass for normal apps, and only once for vcapps. +# - Normal apps have their package root directory in the same place as the target (one for each build pass). +# - Visual Studio requires a design-mode manifest in the same location as the vcproj. +!isEmpty(WINRT_MANIFEST): \ + if(build_pass:equals(TEMPLATE, "app"))| \ + if(!build_pass:equals(TEMPLATE, "vcapp")) { + + manifest_file.input = $$WINRT_MANIFEST + + contains(TEMPLATE, "vc.*") { + BUILD_DIR = $$OUT_PWD + } else { + load(resolve_target) + BUILD_DIR = $$dirname(QMAKE_RESOLVED_TARGET) + } + + contains(TEMPLATE, "vc.*"): \ + manifest_file.output = $$BUILD_DIR/Package.appxmanifest + else: \ + manifest_file.output = $$BUILD_DIR/AppxManifest.xml + + !contains(WINRT_MANIFEST.CONFIG, "verbatim") { + # Provide the C-runtime dependency + equals(TEMPLATE, "app") { + VCLIBS = Microsoft.VCLibs.$$replace(MSVC_VER, \\., ).00 + CONFIG(debug, debug|release): \ + VCLIBS = $${VCLIBS}.Debug + else: \ + VCLIBS = $${VCLIBS} + # VS 2017 still uses vclibs 140 + contains(MSVC_VER, "15.0"): VCLIBS = $$replace(VCLIBS, 150, 140) + VCLIBS = "$${VCLIBS}\" MinVersion=\"14.0.0.0\" Publisher=\"CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" + WINRT_MANIFEST.dependencies += $$VCLIBS + } + + # Provide default values for required variables + isEmpty(WINRT_MANIFEST.target): WINRT_MANIFEST.target = $$TARGET + isEmpty(WINRT_MANIFEST.identity) { + # Reuse the existing UUID if possible + UUID_CACHE = $$OUT_PWD/.qmake.winrt_uuid_$$TARGET + exists($$UUID_CACHE) { + include($$UUID_CACHE) + } else { + WINRT_UUID = $$system(uuidgen) + isEmpty(WINRT_UUID): error("Unable to generate a UUID. Make sure uuidgen is in your PATH.") + WINRT_UUID = "WINRT_MANIFEST.identity = $$WINRT_UUID" + write_file($$UUID_CACHE, WINRT_UUID)|error("Unable to write the UUID cache; aborting.") + eval($$WINRT_UUID) + } + } + isEmpty(WINRT_MANIFEST.name): WINRT_MANIFEST.name = $$TARGET + isEmpty(WINRT_MANIFEST.architecture): WINRT_MANIFEST.architecture = $$VCPROJ_ARCH + isEmpty(WINRT_MANIFEST.version): WINRT_MANIFEST.version = 1.0.0.0 + isEmpty(WINRT_MANIFEST.publisher): WINRT_MANIFEST.publisher = Default publisher display name + isEmpty(WINRT_MANIFEST.publisherid): WINRT_MANIFEST.publisherid = CN=$$(USERNAME) + isEmpty(WINRT_MANIFEST.phone_product_id): WINRT_MANIFEST.phone_product_id = $$WINRT_MANIFEST.identity + isEmpty(WINRT_MANIFEST.phone_publisher_id): WINRT_MANIFEST.phone_publisher_id = 00000000-0000-0000-0000-000000000000 + isEmpty(WINRT_MANIFEST.description): WINRT_MANIFEST.description = Default package description + isEmpty(WINRT_MANIFEST.background): WINRT_MANIFEST.background = green + isEmpty(WINRT_MANIFEST.foreground): WINRT_MANIFEST.foreground = light + isEmpty(WINRT_MANIFEST.default_language): WINRT_MANIFEST.default_language = en + *-msvc2015|*-msvc2017 { + isEmpty(WINRT_MANIFEST.minVersion): WINRT_MANIFEST.minVersion = $$(UCRTVersion) + isEmpty(WINRT_MANIFEST.minVersion): error("No UCRTVersion found in environment.")) + isEmpty(WINRT_MANIFEST.maxVersionTested): WINRT_MANIFEST.maxVersionTested = $$WINRT_MANIFEST.minVersion + } + + INDENT = "$$escape_expand(\\r\\n) " + + VS_XML_NAMESPACE = "m2" + WINRT_MANIFEST.rotation_preference = $$unique(WINRT_MANIFEST.rotation_preference) + !isEmpty(WINRT_MANIFEST.rotation_preference) { + MANIFEST_ROTATION += "<$${VS_XML_NAMESPACE}:InitialRotationPreference>" + for(ROTATION, WINRT_MANIFEST.rotation_preference): \ + MANIFEST_ROTATION += " <$${VS_XML_NAMESPACE}:Rotation Preference=\"$$ROTATION\" />" + MANIFEST_ROTATION += "" + + WINRT_MANIFEST.rotation_preference = $$join(MANIFEST_ROTATION, $$INDENT, $$INDENT) + } + + INDENT = "$$escape_expand(\\r\\n) " + + # All Windows 10 applications need to have internetClient. + WINRT_MANIFEST.capabilities += internetClient + + contains(WINRT_MANIFEST.capabilities, defaults) { + WINRT_MANIFEST.capabilities -= defaults + WINRT_MANIFEST.capabilities += $$WINRT_MANIFEST.capabilities_default + } + + contains(WINRT_MANIFEST.capabilities_device, defaults) { + WINRT_MANIFEST.capabilities_device -= defaults + WINRT_MANIFEST.capabilities_device += $$WINRT_MANIFEST.capabilities_device_default + } + + UAP_CAPABILITIES += \ + appointments \ + blockedChatMessages \ + chat \ + contacts \ + enterpriseAuthentication \ + # internetClient is special, as it needs to be written without namespace + #internetClient \ + musicLibrary \ + objects3D \ + phoneCall \ + picturesLibrary \ + removableStorage \ + sharedUserCertificates \ + userAccountInformation \ + videosLibrary \ + voipCall + + UAP3_CAPABILITIES += backgroundMediaPlayback remoteSystem userNotificationListener + + # Capabilities are given as a string list and may change with the configuration (network, sensors, etc.) + WINRT_MANIFEST.capabilities = $$unique(WINRT_MANIFEST.capabilities) + WINRT_MANIFEST.capabilities_device = $$unique(WINRT_MANIFEST.capabilities_device) + !isEmpty(WINRT_MANIFEST.capabilities)|!isEmpty(WINRT_MANIFEST.capabilities_device) { + MANIFEST_CAPABILITIES += "" + for (CAPABILITY, WINRT_MANIFEST.capabilities) { + contains(UAP_CAPABILITIES, $$CAPABILITY): \ + MANIFEST_CAPABILITIES += " " + else:contains(UAP3_CAPABILITIES, $$CAPABILITY): \ + MANIFEST_CAPABILITIES += " " + else: \ + MANIFEST_CAPABILITIES += " " + } + for(CAPABILITY, WINRT_MANIFEST.capabilities_device): \ + MANIFEST_CAPABILITIES += " " + MANIFEST_CAPABILITIES += "" + + WINRT_MANIFEST.capabilities = $$join(MANIFEST_CAPABILITIES, $$INDENT, $$INDENT) + } + + # Dependencies are given as a string list. The CRT dependency is added automatically above. + # For MSVC2015/2017 the dependencies are added in conjunction with TargetDeviceFamily + # Due to the hard coded dependency on "Windows.Universal" the tag + # is already inside the MSVC2015 manifest. + WINRT_MANIFEST.dependencies = $$unique(WINRT_MANIFEST.dependencies) + !isEmpty(WINRT_MANIFEST.dependencies) { + for(DEPENDENCY, WINRT_MANIFEST.dependencies): \ + MANIFEST_DEPENDENCIES += " " + + WINRT_MANIFEST.dependencies = $$join(MANIFEST_DEPENDENCIES, $$INDENT, $$INDENT) + } + + # Provide default icons where needed + isEmpty(WINRT_ASSETS_PATH): WINRT_ASSETS_PATH = $$[QT_HOST_DATA/get]/mkspecs/common/winrt_winphone/assets + TEMPLATE_CONTENTS = $$cat($$WINRT_MANIFEST, lines) + ICONS_FOUND = $$find(TEMPLATE_CONTENTS, \\\$\\\$\\{WINRT_MANIFEST\\.(logo|tile)_) + ICONS_FOUND ~= s/.*\\\$\\\$\\{WINRT_MANIFEST\\.((logo|tile)_[^\}]+)\\}.*/\\1/g + for (ICON_NAME, ICONS_FOUND) { + ICON_FILE = $$eval(WINRT_MANIFEST.$$ICON_NAME) + isEmpty(ICON_FILE) { + equals(ICON_NAME, "logo_310x150"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_wide) + else: equals(ICON_NAME, "logo_150x150"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_large) + # Windows Phone specifics + else: equals(ICON_NAME, "logo_480x800"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_splash) + else: equals(ICON_NAME, "logo_71x71"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_medium) + else: equals(ICON_NAME, "logo_44x44"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_small) + # Windows RT specifics + else: equals(ICON_NAME, "logo_620x300"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_splash) + else: equals(ICON_NAME, "logo_70x70"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_medium) + else: equals(ICON_NAME, "logo_30x30"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_small) + } + isEmpty(ICON_FILE): ICON_FILE = $$WINRT_ASSETS_PATH/$${ICON_NAME}.png + icon_$${ICON_NAME}.input = $$ICON_FILE + icon_$${ICON_NAME}.output = $$BUILD_DIR/assets/$$basename(ICON_FILE) + icon_$${ICON_NAME}.CONFIG = verbatim + QMAKE_SUBSTITUTES += icon_$${ICON_NAME} + WINRT_MANIFEST.$${ICON_NAME} = assets/$$basename(ICON_FILE) + } + + !contains(TEMPLATE, "vc.*") { + winrt_manifest_install.files = $$manifest_file.output + winrt_manifest_install.path = $$target.path + winrt_assets_install.files = $$BUILD_DIR/assets/* + winrt_assets_install.path = $$target.path/assets + INSTALLS += winrt_manifest_install winrt_assets_install + } + } else { + manifest_file.CONFIG += verbatim + } + + QMAKE_SUBSTITUTES += manifest_file +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/xctest.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/xctest.prf new file mode 100644 index 000000000..4ee504f0a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/xctest.prf @@ -0,0 +1,7 @@ +equals(TEMPLATE, app) { + load(sdk) + # Make the XCTest framework available. This is normally handled automatically + # by Xcode based on heuristics, but we need to explicitly link to XCTest. + !isEmpty(QMAKE_MAC_SDK_PLATFORM_PATH): \ + QMAKE_LFLAGS += -F$${QMAKE_MAC_SDK_PLATFORM_PATH}/Developer/Library/Frameworks -weak_framework XCTest +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/yacc.prf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/yacc.prf new file mode 100644 index 000000000..618f0668c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/features/yacc.prf @@ -0,0 +1,43 @@ +# +# Yacc extra-compiler for handling files specified in the YACCSOURCES variable +# + +{ + yacc_decl.name = Yacc header + yacc_decl.input = YACCSOURCES + yacc_decl.variable_out = GENERATED_FILES + + + isEmpty(QMAKE_YACCFLAGS_MANGLE) { + QMAKE_YACCFLAGS_MANGLE = -p ${QMAKE_FILE_BASE} -b ${QMAKE_FILE_BASE} + QMAKE_YACC_HEADER = ${QMAKE_FILE_BASE}.tab.h + QMAKE_YACC_SOURCE = ${QMAKE_FILE_BASE}.tab.c + } else { + QMAKE_YACCFLAGS_MANGLE ~= s/\\$base/${QMAKE_FILE_BASE}/g #backwards compat + QMAKE_YACC_HEADER ~= s/\\$base/${QMAKE_FILE_BASE}/g + QMAKE_YACC_SOURCE ~= s/\\$base/${QMAKE_FILE_BASE}/g + } + QMAKE_YACCDECLFLAGS = $$QMAKE_YACCFLAGS + !yacc_no_name_mangle:QMAKE_YACCDECLFLAGS += $$QMAKE_YACCFLAGS_MANGLE + + yacc_decl.commands = \ + -$(DEL_FILE) $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) \ + $$QMAKE_YACC $$QMAKE_YACCDECLFLAGS ${QMAKE_FILE_IN}$$escape_expand(\\n\\t) \ + $(MOVE) $${QMAKE_YACC_HEADER} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)}$$escape_expand(\\n\\t) \ + $(MOVE) $${QMAKE_YACC_SOURCE} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) + yacc_decl.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)} + + silent:yacc_decl.commands = @echo Yacc ${QMAKE_FILE_IN} && $$yacc_decl.commands + QMAKE_EXTRA_COMPILERS += yacc_decl +} + +{ + yacc_impl.name = source for ${QMAKE_FILE_IN} + yacc_impl.input = YACCSOURCES + yacc_impl.variable_out = GENERATED_SOURCES + yacc_impl.dependency_type = TYPE_C + yacc_impl.commands = $$escape_expand(\\n) # We don't want any commands where, but if command is empty no rules are created + yacc_impl.depends += $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)} # Make sure we depend on the step above + yacc_impl.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_CPP)} # Faked output from this step, output really created in step above + QMAKE_EXTRA_COMPILERS += yacc_impl +} diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3danimation.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3danimation.pri new file mode 100644 index 000000000..10b7208d9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3danimation.pri @@ -0,0 +1,15 @@ +QT.3danimation.VERSION = 5.9.4 +QT.3danimation.name = Qt3DAnimation +QT.3danimation.module = Qt53DAnimation +QT.3danimation.libs = $$QT_MODULE_LIB_BASE +QT.3danimation.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DAnimation +QT.3danimation.frameworks = +QT.3danimation.bins = $$QT_MODULE_BIN_BASE +QT.3danimation.depends = core gui 3dcore 3drender +QT.3danimation.uses = +QT.3danimation.module_config = v2 +QT.3danimation.DEFINES = QT_3DANIMATION_LIB +QT.3danimation.enabled_features = +QT.3danimation.disabled_features = +QT_CONFIG += +QT_MODULES += 3danimation diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3danimation_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3danimation_private.pri new file mode 100644 index 000000000..3a424ab07 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3danimation_private.pri @@ -0,0 +1,11 @@ +QT.3danimation_private.VERSION = 5.9.4 +QT.3danimation_private.name = Qt3DAnimation +QT.3danimation_private.module = +QT.3danimation_private.libs = $$QT_MODULE_LIB_BASE +QT.3danimation_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DAnimation/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DAnimation/5.9.4/Qt3DAnimation +QT.3danimation_private.frameworks = +QT.3danimation_private.depends = core_private 3dcore_private 3drender_private 3danimation +QT.3danimation_private.uses = +QT.3danimation_private.module_config = v2 internal_module +QT.3danimation_private.enabled_features = +QT.3danimation_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dcore.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dcore.pri new file mode 100644 index 000000000..84acedcd3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dcore.pri @@ -0,0 +1,15 @@ +QT.3dcore.VERSION = 5.9.4 +QT.3dcore.name = Qt3DCore +QT.3dcore.module = Qt53DCore +QT.3dcore.libs = $$QT_MODULE_LIB_BASE +QT.3dcore.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DCore +QT.3dcore.frameworks = +QT.3dcore.bins = $$QT_MODULE_BIN_BASE +QT.3dcore.depends = core gui network +QT.3dcore.uses = +QT.3dcore.module_config = v2 +QT.3dcore.DEFINES = QT_3DCORE_LIB +QT.3dcore.enabled_features = +QT.3dcore.disabled_features = +QT_CONFIG += assimp +QT_MODULES += 3dcore diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dcore_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dcore_private.pri new file mode 100644 index 000000000..f9aff0c6d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dcore_private.pri @@ -0,0 +1,11 @@ +QT.3dcore_private.VERSION = 5.9.4 +QT.3dcore_private.name = Qt3DCore +QT.3dcore_private.module = +QT.3dcore_private.libs = $$QT_MODULE_LIB_BASE +QT.3dcore_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DCore/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DCore/5.9.4/Qt3DCore +QT.3dcore_private.frameworks = +QT.3dcore_private.depends = core_private gui_private 3dcore +QT.3dcore_private.uses = +QT.3dcore_private.module_config = v2 internal_module +QT.3dcore_private.enabled_features = assimp +QT.3dcore_private.disabled_features = qt3d-profile-gl qt3d-profile-jobs system-assimp diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dextras.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dextras.pri new file mode 100644 index 000000000..0a8e67f7e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dextras.pri @@ -0,0 +1,15 @@ +QT.3dextras.VERSION = 5.9.4 +QT.3dextras.name = Qt3DExtras +QT.3dextras.module = Qt53DExtras +QT.3dextras.libs = $$QT_MODULE_LIB_BASE +QT.3dextras.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DExtras +QT.3dextras.frameworks = +QT.3dextras.bins = $$QT_MODULE_BIN_BASE +QT.3dextras.depends = core gui 3dcore 3drender 3dinput 3dlogic +QT.3dextras.uses = +QT.3dextras.module_config = v2 +QT.3dextras.DEFINES = QT_3DEXTRAS_LIB +QT.3dextras.enabled_features = +QT.3dextras.disabled_features = +QT_CONFIG += +QT_MODULES += 3dextras diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dextras_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dextras_private.pri new file mode 100644 index 000000000..a0cb65685 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dextras_private.pri @@ -0,0 +1,11 @@ +QT.3dextras_private.VERSION = 5.9.4 +QT.3dextras_private.name = Qt3DExtras +QT.3dextras_private.module = +QT.3dextras_private.libs = $$QT_MODULE_LIB_BASE +QT.3dextras_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DExtras/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DExtras/5.9.4/Qt3DExtras +QT.3dextras_private.frameworks = +QT.3dextras_private.depends = core_private 3dcore_private 3drender_private 3dextras +QT.3dextras_private.uses = +QT.3dextras_private.module_config = v2 internal_module +QT.3dextras_private.enabled_features = +QT.3dextras_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dinput.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dinput.pri new file mode 100644 index 000000000..dcc5ad6ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dinput.pri @@ -0,0 +1,16 @@ +QT.3dinput.VERSION = 5.9.4 +QT.3dinput.name = Qt3DInput +QT.3dinput.module = Qt53DInput +QT.3dinput.libs = $$QT_MODULE_LIB_BASE +QT.3dinput.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DInput +QT.3dinput.frameworks = +QT.3dinput.bins = $$QT_MODULE_BIN_BASE +QT.3dinput.plugin_types = 3dinputdevices +QT.3dinput.depends = core gui 3dcore gamepad +QT.3dinput.uses = +QT.3dinput.module_config = v2 +QT.3dinput.DEFINES = QT_3DINPUT_LIB +QT.3dinput.enabled_features = +QT.3dinput.disabled_features = +QT_CONFIG += +QT_MODULES += 3dinput diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dinput_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dinput_private.pri new file mode 100644 index 000000000..964f47b95 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dinput_private.pri @@ -0,0 +1,11 @@ +QT.3dinput_private.VERSION = 5.9.4 +QT.3dinput_private.name = Qt3DInput +QT.3dinput_private.module = +QT.3dinput_private.libs = $$QT_MODULE_LIB_BASE +QT.3dinput_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DInput/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DInput/5.9.4/Qt3DInput +QT.3dinput_private.frameworks = +QT.3dinput_private.depends = core_private 3dcore_private 3dinput +QT.3dinput_private.uses = +QT.3dinput_private.module_config = v2 internal_module +QT.3dinput_private.enabled_features = +QT.3dinput_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dlogic.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dlogic.pri new file mode 100644 index 000000000..09582e125 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dlogic.pri @@ -0,0 +1,15 @@ +QT.3dlogic.VERSION = 5.9.4 +QT.3dlogic.name = Qt3DLogic +QT.3dlogic.module = Qt53DLogic +QT.3dlogic.libs = $$QT_MODULE_LIB_BASE +QT.3dlogic.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DLogic +QT.3dlogic.frameworks = +QT.3dlogic.bins = $$QT_MODULE_BIN_BASE +QT.3dlogic.depends = core gui 3dcore +QT.3dlogic.uses = +QT.3dlogic.module_config = v2 +QT.3dlogic.DEFINES = QT_3DLOGIC_LIB +QT.3dlogic.enabled_features = +QT.3dlogic.disabled_features = +QT_CONFIG += +QT_MODULES += 3dlogic diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dlogic_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dlogic_private.pri new file mode 100644 index 000000000..bd2a96a1d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dlogic_private.pri @@ -0,0 +1,11 @@ +QT.3dlogic_private.VERSION = 5.9.4 +QT.3dlogic_private.name = Qt3DLogic +QT.3dlogic_private.module = +QT.3dlogic_private.libs = $$QT_MODULE_LIB_BASE +QT.3dlogic_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DLogic/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DLogic/5.9.4/Qt3DLogic +QT.3dlogic_private.frameworks = +QT.3dlogic_private.depends = core_private gui_private 3dcore_private 3dlogic +QT.3dlogic_private.uses = +QT.3dlogic_private.module_config = v2 internal_module +QT.3dlogic_private.enabled_features = +QT.3dlogic_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquick.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquick.pri new file mode 100644 index 000000000..4306ba21c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquick.pri @@ -0,0 +1,15 @@ +QT.3dquick.VERSION = 5.9.4 +QT.3dquick.name = Qt3DQuick +QT.3dquick.module = Qt53DQuick +QT.3dquick.libs = $$QT_MODULE_LIB_BASE +QT.3dquick.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuick +QT.3dquick.frameworks = +QT.3dquick.bins = $$QT_MODULE_BIN_BASE +QT.3dquick.depends = core gui qml quick 3dcore +QT.3dquick.uses = +QT.3dquick.module_config = v2 +QT.3dquick.DEFINES = QT_3DQUICK_LIB +QT.3dquick.enabled_features = +QT.3dquick.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquick diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquick_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquick_private.pri new file mode 100644 index 000000000..aeae2ef29 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquick_private.pri @@ -0,0 +1,11 @@ +QT.3dquick_private.VERSION = 5.9.4 +QT.3dquick_private.name = Qt3DQuick +QT.3dquick_private.module = +QT.3dquick_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquick_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuick/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuick/5.9.4/Qt3DQuick +QT.3dquick_private.frameworks = +QT.3dquick_private.depends = core_private gui_private qml_private quick_private 3dcore_private 3dquick +QT.3dquick_private.uses = +QT.3dquick_private.module_config = v2 internal_module +QT.3dquick_private.enabled_features = +QT.3dquick_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickanimation.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickanimation.pri new file mode 100644 index 000000000..5433d419a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickanimation.pri @@ -0,0 +1,15 @@ +QT.3dquickanimation.VERSION = 5.9.4 +QT.3dquickanimation.name = Qt3DQuickAnimation +QT.3dquickanimation.module = Qt53DQuickAnimation +QT.3dquickanimation.libs = $$QT_MODULE_LIB_BASE +QT.3dquickanimation.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuickAnimation +QT.3dquickanimation.frameworks = +QT.3dquickanimation.bins = $$QT_MODULE_BIN_BASE +QT.3dquickanimation.depends = core gui qml 3dcore 3drender 3danimation 3dquick +QT.3dquickanimation.uses = +QT.3dquickanimation.module_config = v2 +QT.3dquickanimation.DEFINES = QT_3DQUICKANIMATION_LIB +QT.3dquickanimation.enabled_features = +QT.3dquickanimation.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquickanimation diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickanimation_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickanimation_private.pri new file mode 100644 index 000000000..d800204cc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickanimation_private.pri @@ -0,0 +1,11 @@ +QT.3dquickanimation_private.VERSION = 5.9.4 +QT.3dquickanimation_private.name = Qt3DQuickAnimation +QT.3dquickanimation_private.module = +QT.3dquickanimation_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquickanimation_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuickAnimation/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuickAnimation/5.9.4/Qt3DQuickAnimation +QT.3dquickanimation_private.frameworks = +QT.3dquickanimation_private.depends = core_private qml_private 3dquick_private 3dcore_private 3drender_private 3dquickanimation +QT.3dquickanimation_private.uses = +QT.3dquickanimation_private.module_config = v2 internal_module +QT.3dquickanimation_private.enabled_features = +QT.3dquickanimation_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickextras.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickextras.pri new file mode 100644 index 000000000..e35521613 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickextras.pri @@ -0,0 +1,15 @@ +QT.3dquickextras.VERSION = 5.9.4 +QT.3dquickextras.name = Qt3DQuickExtras +QT.3dquickextras.module = Qt53DQuickExtras +QT.3dquickextras.libs = $$QT_MODULE_LIB_BASE +QT.3dquickextras.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuickExtras +QT.3dquickextras.frameworks = +QT.3dquickextras.bins = $$QT_MODULE_BIN_BASE +QT.3dquickextras.depends = core gui qml 3dcore 3dinput 3dquick 3drender 3dlogic 3dextras +QT.3dquickextras.uses = +QT.3dquickextras.module_config = v2 +QT.3dquickextras.DEFINES = QT_3DQUICKEXTRAS_LIB +QT.3dquickextras.enabled_features = +QT.3dquickextras.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquickextras diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickextras_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickextras_private.pri new file mode 100644 index 000000000..9d04f30fd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickextras_private.pri @@ -0,0 +1,11 @@ +QT.3dquickextras_private.VERSION = 5.9.4 +QT.3dquickextras_private.name = Qt3DQuickExtras +QT.3dquickextras_private.module = +QT.3dquickextras_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquickextras_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuickExtras/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuickExtras/5.9.4/Qt3DQuickExtras +QT.3dquickextras_private.frameworks = +QT.3dquickextras_private.depends = core_private qml_private 3dquick_private 3drender_private 3dquickextras +QT.3dquickextras_private.uses = +QT.3dquickextras_private.module_config = v2 internal_module +QT.3dquickextras_private.enabled_features = +QT.3dquickextras_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickinput.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickinput.pri new file mode 100644 index 000000000..8cb15d2d0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickinput.pri @@ -0,0 +1,15 @@ +QT.3dquickinput.VERSION = 5.9.4 +QT.3dquickinput.name = Qt3DQuickInput +QT.3dquickinput.module = Qt53DQuickInput +QT.3dquickinput.libs = $$QT_MODULE_LIB_BASE +QT.3dquickinput.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuickInput +QT.3dquickinput.frameworks = +QT.3dquickinput.bins = $$QT_MODULE_BIN_BASE +QT.3dquickinput.depends = core gui qml 3dcore 3dinput 3dquick +QT.3dquickinput.uses = +QT.3dquickinput.module_config = v2 +QT.3dquickinput.DEFINES = QT_3DQUICKINPUT_LIB +QT.3dquickinput.enabled_features = +QT.3dquickinput.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquickinput diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickinput_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickinput_private.pri new file mode 100644 index 000000000..f20441f50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickinput_private.pri @@ -0,0 +1,11 @@ +QT.3dquickinput_private.VERSION = 5.9.4 +QT.3dquickinput_private.name = Qt3DQuickInput +QT.3dquickinput_private.module = +QT.3dquickinput_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquickinput_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuickInput/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuickInput/5.9.4/Qt3DQuickInput +QT.3dquickinput_private.frameworks = +QT.3dquickinput_private.depends = core_private qml_private 3dquick_private 3dcore_private 3dinput_private 3dquickinput +QT.3dquickinput_private.uses = +QT.3dquickinput_private.module_config = v2 internal_module +QT.3dquickinput_private.enabled_features = +QT.3dquickinput_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickrender.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickrender.pri new file mode 100644 index 000000000..2ef479d12 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickrender.pri @@ -0,0 +1,15 @@ +QT.3dquickrender.VERSION = 5.9.4 +QT.3dquickrender.name = Qt3DQuickRender +QT.3dquickrender.module = Qt53DQuickRender +QT.3dquickrender.libs = $$QT_MODULE_LIB_BASE +QT.3dquickrender.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuickRender +QT.3dquickrender.frameworks = +QT.3dquickrender.bins = $$QT_MODULE_BIN_BASE +QT.3dquickrender.depends = core gui qml 3dcore 3drender 3dquick +QT.3dquickrender.uses = +QT.3dquickrender.module_config = v2 +QT.3dquickrender.DEFINES = QT_3DQUICKRENDER_LIB +QT.3dquickrender.enabled_features = +QT.3dquickrender.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquickrender diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickrender_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickrender_private.pri new file mode 100644 index 000000000..e8c21f419 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickrender_private.pri @@ -0,0 +1,11 @@ +QT.3dquickrender_private.VERSION = 5.9.4 +QT.3dquickrender_private.name = Qt3DQuickRender +QT.3dquickrender_private.module = +QT.3dquickrender_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquickrender_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuickRender/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuickRender/5.9.4/Qt3DQuickRender +QT.3dquickrender_private.frameworks = +QT.3dquickrender_private.depends = core_private qml_private 3dquick_private 3dcore_private 3drender_private 3dquickrender +QT.3dquickrender_private.uses = +QT.3dquickrender_private.module_config = v2 internal_module +QT.3dquickrender_private.enabled_features = +QT.3dquickrender_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickscene2d.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickscene2d.pri new file mode 100644 index 000000000..53249af9f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickscene2d.pri @@ -0,0 +1,15 @@ +QT.3dquickscene2d.VERSION = 5.9.4 +QT.3dquickscene2d.name = Qt3DQuickScene2D +QT.3dquickscene2d.module = Qt53DQuickScene2D +QT.3dquickscene2d.libs = $$QT_MODULE_LIB_BASE +QT.3dquickscene2d.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuickScene2D +QT.3dquickscene2d.frameworks = +QT.3dquickscene2d.bins = $$QT_MODULE_BIN_BASE +QT.3dquickscene2d.depends = core gui qml 3dcore 3drender 3dquick +QT.3dquickscene2d.uses = +QT.3dquickscene2d.module_config = v2 +QT.3dquickscene2d.DEFINES = QT_3DQUICKSCENE2D_LIB +QT.3dquickscene2d.enabled_features = +QT.3dquickscene2d.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquickscene2d diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickscene2d_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickscene2d_private.pri new file mode 100644 index 000000000..366c2e358 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3dquickscene2d_private.pri @@ -0,0 +1,11 @@ +QT.3dquickscene2d_private.VERSION = 5.9.4 +QT.3dquickscene2d_private.name = Qt3DQuickScene2D +QT.3dquickscene2d_private.module = +QT.3dquickscene2d_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquickscene2d_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuickScene2D/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuickScene2D/5.9.4/Qt3DQuickScene2D +QT.3dquickscene2d_private.frameworks = +QT.3dquickscene2d_private.depends = core_private qml_private 3dquick_private 3dcore_private 3drender_private 3dquickscene2d +QT.3dquickscene2d_private.uses = +QT.3dquickscene2d_private.module_config = v2 internal_module +QT.3dquickscene2d_private.enabled_features = +QT.3dquickscene2d_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3drender.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3drender.pri new file mode 100644 index 000000000..8bb937381 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3drender.pri @@ -0,0 +1,17 @@ +QT.3drender.VERSION = 5.9.4 +QT.3drender.name = Qt3DRender +QT.3drender.module = Qt53DRender +QT.3drender.libs = $$QT_MODULE_LIB_BASE +QT.3drender.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DRender +QT.3drender.frameworks = +QT.3drender.bins = $$QT_MODULE_BIN_BASE +QT.3drender.plugin_types = sceneparsers geometryloaders renderplugins +QT.3drender.depends = core gui 3dcore +QT.3drender.run_depends = openglextensions concurrent +QT.3drender.uses = +QT.3drender.module_config = v2 +QT.3drender.DEFINES = QT_3DRENDER_LIB +QT.3drender.enabled_features = +QT.3drender.disabled_features = +QT_CONFIG += +QT_MODULES += 3drender diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3drender_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3drender_private.pri new file mode 100644 index 000000000..9682be9ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_3drender_private.pri @@ -0,0 +1,11 @@ +QT.3drender_private.VERSION = 5.9.4 +QT.3drender_private.name = Qt3DRender +QT.3drender_private.module = +QT.3drender_private.libs = $$QT_MODULE_LIB_BASE +QT.3drender_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DRender/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DRender/5.9.4/Qt3DRender +QT.3drender_private.frameworks = +QT.3drender_private.depends = core_private gui_private 3dcore_private 3drender concurrent +QT.3drender_private.uses = +QT.3drender_private.module_config = v2 internal_module +QT.3drender_private.enabled_features = +QT.3drender_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_accessibility_support_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_accessibility_support_private.pri new file mode 100644 index 000000000..58670a387 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_accessibility_support_private.pri @@ -0,0 +1,15 @@ +QT.accessibility_support_private.VERSION = 5.9.4 +QT.accessibility_support_private.name = QtAccessibilitySupport +QT.accessibility_support_private.module = Qt5AccessibilitySupport +QT.accessibility_support_private.libs = $$QT_MODULE_LIB_BASE +QT.accessibility_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtAccessibilitySupport $$QT_MODULE_INCLUDE_BASE/QtAccessibilitySupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtAccessibilitySupport/5.9.4/QtAccessibilitySupport +QT.accessibility_support_private.frameworks = +QT.accessibility_support_private.bins = $$QT_MODULE_BIN_BASE +QT.accessibility_support_private.depends = core_private gui_private +QT.accessibility_support_private.uses = +QT.accessibility_support_private.module_config = v2 staticlib internal_module +QT.accessibility_support_private.DEFINES = QT_ACCESSIBILITY_SUPPORT_LIB +QT.accessibility_support_private.enabled_features = +QT.accessibility_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += accessibility_support diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axbase.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axbase.pri new file mode 100644 index 000000000..758199251 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axbase.pri @@ -0,0 +1,15 @@ +QT.axbase.VERSION = 5.9.4 +QT.axbase.name = QtAxBase +QT.axbase.module = Qt5AxBase +QT.axbase.libs = $$QT_MODULE_LIB_BASE +QT.axbase.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/ActiveQt +QT.axbase.frameworks = +QT.axbase.bins = $$QT_MODULE_BIN_BASE +QT.axbase.depends = core gui widgets +QT.axbase.uses = +QT.axbase.module_config = v2 staticlib +QT.axbase.DEFINES = QT_AXBASE_LIB +QT.axbase.enabled_features = +QT.axbase.disabled_features = +QT_CONFIG += +QT_MODULES += axbase diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axbase_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axbase_private.pri new file mode 100644 index 000000000..131c25eae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axbase_private.pri @@ -0,0 +1,11 @@ +QT.axbase_private.VERSION = 5.9.4 +QT.axbase_private.name = QtAxBase +QT.axbase_private.module = +QT.axbase_private.libs = $$QT_MODULE_LIB_BASE +QT.axbase_private.includes = $$QT_MODULE_INCLUDE_BASE/ActiveQt/5.9.4 $$QT_MODULE_INCLUDE_BASE/ActiveQt/5.9.4/ActiveQt +QT.axbase_private.frameworks = +QT.axbase_private.depends = gui_private axbase +QT.axbase_private.uses = +QT.axbase_private.module_config = v2 staticlib internal_module +QT.axbase_private.enabled_features = +QT.axbase_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axcontainer.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axcontainer.pri new file mode 100644 index 000000000..32fa4369e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axcontainer.pri @@ -0,0 +1,17 @@ +QT.axcontainer.VERSION = 5.9.4 +QT.axcontainer.name = QtAxContainer +QT.axcontainer.module = Qt5AxContainer +QT.axcontainer.libs = $$QT_MODULE_LIB_BASE +QT.axcontainer.master_header = ActiveQt +QT.axcontainer.includes = +QT.axcontainer.frameworks = +QT.axcontainer.bins = $$QT_MODULE_BIN_BASE +QT.axcontainer.depends = core gui widgets axbase +QT.axcontainer.uses = +QT.axcontainer.module_config = v2 staticlib +QT.axcontainer.CONFIG = dumpcpp +QT.axcontainer.DEFINES = QT_AXCONTAINER_LIB +QT.axcontainer.enabled_features = +QT.axcontainer.disabled_features = +QT_CONFIG += +QT_MODULES += axcontainer diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axcontainer_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axcontainer_private.pri new file mode 100644 index 000000000..44e9a169a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axcontainer_private.pri @@ -0,0 +1,11 @@ +QT.axcontainer_private.VERSION = 5.9.4 +QT.axcontainer_private.name = QtAxContainer +QT.axcontainer_private.module = +QT.axcontainer_private.libs = $$QT_MODULE_LIB_BASE +QT.axcontainer_private.includes = +QT.axcontainer_private.frameworks = +QT.axcontainer_private.depends = core_private gui_private widgets_private axcontainer +QT.axcontainer_private.uses = +QT.axcontainer_private.module_config = v2 staticlib internal_module +QT.axcontainer_private.enabled_features = +QT.axcontainer_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axserver.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axserver.pri new file mode 100644 index 000000000..4bcfe6b1c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axserver.pri @@ -0,0 +1,17 @@ +QT.axserver.VERSION = 5.9.4 +QT.axserver.name = QtAxServer +QT.axserver.module = Qt5AxServer +QT.axserver.libs = $$QT_MODULE_LIB_BASE +QT.axserver.master_header = ActiveQt +QT.axserver.includes = +QT.axserver.frameworks = +QT.axserver.bins = $$QT_MODULE_BIN_BASE +QT.axserver.depends = core gui widgets axbase +QT.axserver.uses = +QT.axserver.module_config = v2 staticlib +QT.axserver.CONFIG = idcidl force_import_plugins +QT.axserver.DEFINES = QT_AXSERVER_LIB QAXSERVER +QT.axserver.enabled_features = +QT.axserver.disabled_features = +QT_CONFIG += +QT_MODULES += axserver diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axserver_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axserver_private.pri new file mode 100644 index 000000000..81ff714ff --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_axserver_private.pri @@ -0,0 +1,11 @@ +QT.axserver_private.VERSION = 5.9.4 +QT.axserver_private.name = QtAxServer +QT.axserver_private.module = +QT.axserver_private.libs = $$QT_MODULE_LIB_BASE +QT.axserver_private.includes = +QT.axserver_private.frameworks = +QT.axserver_private.depends = core_private gui_private axserver +QT.axserver_private.uses = +QT.axserver_private.module_config = v2 staticlib internal_module +QT.axserver_private.enabled_features = +QT.axserver_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_bluetooth.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_bluetooth.pri new file mode 100644 index 000000000..2177b7e80 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_bluetooth.pri @@ -0,0 +1,15 @@ +QT.bluetooth.VERSION = 5.9.4 +QT.bluetooth.name = QtBluetooth +QT.bluetooth.module = Qt5Bluetooth +QT.bluetooth.libs = $$QT_MODULE_LIB_BASE +QT.bluetooth.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtBluetooth +QT.bluetooth.frameworks = +QT.bluetooth.bins = $$QT_MODULE_BIN_BASE +QT.bluetooth.depends = core +QT.bluetooth.uses = +QT.bluetooth.module_config = v2 +QT.bluetooth.DEFINES = QT_BLUETOOTH_LIB +QT.bluetooth.enabled_features = +QT.bluetooth.disabled_features = bluez +QT_CONFIG += +QT_MODULES += bluetooth diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_bluetooth_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_bluetooth_private.pri new file mode 100644 index 000000000..d9b5841dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_bluetooth_private.pri @@ -0,0 +1,11 @@ +QT.bluetooth_private.VERSION = 5.9.4 +QT.bluetooth_private.name = QtBluetooth +QT.bluetooth_private.module = +QT.bluetooth_private.libs = $$QT_MODULE_LIB_BASE +QT.bluetooth_private.includes = $$QT_MODULE_INCLUDE_BASE/QtBluetooth/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtBluetooth/5.9.4/QtBluetooth +QT.bluetooth_private.frameworks = +QT.bluetooth_private.depends = core_private bluetooth +QT.bluetooth_private.uses = +QT.bluetooth_private.module_config = v2 internal_module +QT.bluetooth_private.enabled_features = +QT.bluetooth_private.disabled_features = bluez_le linux_crypto_api diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_bootstrap_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_bootstrap_private.pri new file mode 100644 index 000000000..89b775fc5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_bootstrap_private.pri @@ -0,0 +1,14 @@ +QT.bootstrap_private.VERSION = 5.9.4 +QT.bootstrap_private.name = QtBootstrap +QT.bootstrap_private.module = Qt5Bootstrap +QT.bootstrap_private.libs = $$QT_MODULE_HOST_LIB_BASE +QT.bootstrap_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtCore $$QT_MODULE_INCLUDE_BASE/QtCore/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtCore/5.9.4/QtCore $$QT_MODULE_INCLUDE_BASE/QtXml $$QT_MODULE_INCLUDE_BASE/QtXml/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtXml/5.9.4/QtXml +QT.bootstrap_private.frameworks = +QT.bootstrap_private.depends = +QT.bootstrap_private.uses = +QT.bootstrap_private.module_config = v2 staticlib internal_module +QT.bootstrap_private.DEFINES = QT_BOOTSTRAP_LIB QT_VERSION_STR=\"\\\"5.9.4\\\"\" QT_VERSION_MAJOR=5 QT_VERSION_MINOR=9 QT_VERSION_PATCH=4 QT_BOOTSTRAPPED QT_NO_CAST_TO_ASCII +QT.bootstrap_private.enabled_features = +QT.bootstrap_private.disabled_features = +QT_CONFIG += +QT_MODULES += bootstrap diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_concurrent.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_concurrent.pri new file mode 100644 index 000000000..f6d4ef120 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_concurrent.pri @@ -0,0 +1,15 @@ +QT.concurrent.VERSION = 5.9.4 +QT.concurrent.name = QtConcurrent +QT.concurrent.module = Qt5Concurrent +QT.concurrent.libs = $$QT_MODULE_LIB_BASE +QT.concurrent.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtConcurrent +QT.concurrent.frameworks = +QT.concurrent.bins = $$QT_MODULE_BIN_BASE +QT.concurrent.depends = core +QT.concurrent.uses = +QT.concurrent.module_config = v2 +QT.concurrent.DEFINES = QT_CONCURRENT_LIB +QT.concurrent.enabled_features = +QT.concurrent.disabled_features = +QT_CONFIG += +QT_MODULES += concurrent diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_concurrent_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_concurrent_private.pri new file mode 100644 index 000000000..0c47e4c41 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_concurrent_private.pri @@ -0,0 +1,11 @@ +QT.concurrent_private.VERSION = 5.9.4 +QT.concurrent_private.name = QtConcurrent +QT.concurrent_private.module = +QT.concurrent_private.libs = $$QT_MODULE_LIB_BASE +QT.concurrent_private.includes = $$QT_MODULE_INCLUDE_BASE/QtConcurrent/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtConcurrent/5.9.4/QtConcurrent +QT.concurrent_private.frameworks = +QT.concurrent_private.depends = core_private concurrent +QT.concurrent_private.uses = +QT.concurrent_private.module_config = v2 internal_module +QT.concurrent_private.enabled_features = +QT.concurrent_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_core.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_core.pri new file mode 100644 index 000000000..0ab063b58 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_core.pri @@ -0,0 +1,16 @@ +QT.core.VERSION = 5.9.4 +QT.core.name = QtCore +QT.core.module = Qt5Core +QT.core.libs = $$QT_MODULE_LIB_BASE +QT.core.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtCore +QT.core.frameworks = +QT.core.bins = $$QT_MODULE_BIN_BASE +QT.core.depends = +QT.core.uses = libatomic +QT.core.module_config = v2 +QT.core.CONFIG = moc resources +QT.core.DEFINES = QT_CORE_LIB +QT.core.enabled_features = properties animation textcodec big_codecs codecs commandlineparser textdate datestring filesystemiterator filesystemwatcher gestures itemmodel proxymodel identityproxymodel library mimetype processenvironment process statemachine qeventtransition regularexpression settings sharedmemory sortfilterproxymodel std-atomic64 stringlistmodel systemsemaphore temporaryfile timezone topleveldomain translation xmlstream xmlstreamreader xmlstreamwriter +QT.core.disabled_features = +QT_CONFIG += properties animation textcodec big_codecs codecs textdate datestring doubleconversion filesystemiterator filesystemwatcher gestures itemmodel proxymodel identityproxymodel library mimetype process statemachine regularexpression settings sharedmemory sortfilterproxymodel stringlistmodel systemsemaphore temporaryfile translation xmlstream xmlstreamreader xmlstreamwriter +QT_MODULES += core diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_core_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_core_private.pri new file mode 100644 index 000000000..b53539f5e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_core_private.pri @@ -0,0 +1,12 @@ +QT.core_private.VERSION = 5.9.4 +QT.core_private.name = QtCore +QT.core_private.module = +QT.core_private.libs = $$QT_MODULE_LIB_BASE +QT.core_private.includes = $$QT_MODULE_INCLUDE_BASE/QtCore/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtCore/5.9.4/QtCore +QT.core_private.frameworks = +QT.core_private.depends = core +QT.core_private.uses = +QT.core_private.module_config = v2 internal_module +QT.core_private.enabled_features = datetimeparser doubleconversion sha3-fast +QT.core_private.disabled_features = clock-gettime dlopen glib gnu-libiconv icu posix-libiconv iconv inotify journald slog2 syslog system-doubleconversion system-pcre2 +QMAKE_LIBS_LIBATOMIC = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_dbus.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_dbus.pri new file mode 100644 index 000000000..6280040f3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_dbus.pri @@ -0,0 +1,16 @@ +QT.dbus.VERSION = 5.9.4 +QT.dbus.name = QtDBus +QT.dbus.module = Qt5DBus +QT.dbus.libs = $$QT_MODULE_LIB_BASE +QT.dbus.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtDBus +QT.dbus.frameworks = +QT.dbus.bins = $$QT_MODULE_BIN_BASE +QT.dbus.depends = core +QT.dbus.uses = +QT.dbus.module_config = v2 +QT.dbus.CONFIG = dbusadaptors dbusinterfaces +QT.dbus.DEFINES = QT_DBUS_LIB +QT.dbus.enabled_features = +QT.dbus.disabled_features = +QT_CONFIG += +QT_MODULES += dbus diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_dbus_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_dbus_private.pri new file mode 100644 index 000000000..47da34761 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_dbus_private.pri @@ -0,0 +1,11 @@ +QT.dbus_private.VERSION = 5.9.4 +QT.dbus_private.name = QtDBus +QT.dbus_private.module = +QT.dbus_private.libs = $$QT_MODULE_LIB_BASE +QT.dbus_private.includes = $$QT_MODULE_INCLUDE_BASE/QtDBus/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtDBus/5.9.4/QtDBus +QT.dbus_private.frameworks = +QT.dbus_private.depends = core_private dbus +QT.dbus_private.uses = +QT.dbus_private.module_config = v2 internal_module +QT.dbus_private.enabled_features = +QT.dbus_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_designer.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_designer.pri new file mode 100644 index 000000000..de717de42 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_designer.pri @@ -0,0 +1,17 @@ +QT.designer.VERSION = 5.9.4 +QT.designer.name = QtDesigner +QT.designer.module = Qt5Designer +QT.designer.libs = $$QT_MODULE_LIB_BASE +QT.designer.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtDesigner +QT.designer.frameworks = +QT.designer.bins = $$QT_MODULE_BIN_BASE +QT.designer.plugin_types = designer +QT.designer.depends = core gui widgets xml uiplugin +QT.designer.run_depends = uiplugin +QT.designer.uses = +QT.designer.module_config = v2 +QT.designer.DEFINES = QT_DESIGNER_LIB +QT.designer.enabled_features = +QT.designer.disabled_features = +QT_CONFIG += +QT_MODULES += designer diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_designer_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_designer_private.pri new file mode 100644 index 000000000..c963c3641 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_designer_private.pri @@ -0,0 +1,11 @@ +QT.designer_private.VERSION = 5.9.4 +QT.designer_private.name = QtDesigner +QT.designer_private.module = +QT.designer_private.libs = $$QT_MODULE_LIB_BASE +QT.designer_private.includes = $$QT_MODULE_INCLUDE_BASE/QtDesigner/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtDesigner/5.9.4/QtDesigner +QT.designer_private.frameworks = +QT.designer_private.depends = core_private gui_private widgets_private designer +QT.designer_private.uses = +QT.designer_private.module_config = v2 internal_module +QT.designer_private.enabled_features = +QT.designer_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_designercomponents_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_designercomponents_private.pri new file mode 100644 index 000000000..93a5c3066 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_designercomponents_private.pri @@ -0,0 +1,16 @@ +QT.designercomponents_private.VERSION = 5.9.4 +QT.designercomponents_private.name = QtDesignerComponents +QT.designercomponents_private.module = Qt5DesignerComponents +QT.designercomponents_private.libs = $$QT_MODULE_LIB_BASE +QT.designercomponents_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtDesignerComponents $$QT_MODULE_INCLUDE_BASE/QtDesignerComponents/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtDesignerComponents/5.9.4/QtDesignerComponents +QT.designercomponents_private.frameworks = +QT.designercomponents_private.bins = $$QT_MODULE_BIN_BASE +QT.designercomponents_private.depends = core gui_private widgets_private designer_private xml +QT.designercomponents_private.run_depends = xml +QT.designercomponents_private.uses = +QT.designercomponents_private.module_config = v2 internal_module +QT.designercomponents_private.DEFINES = QT_DESIGNERCOMPONENTS_LIB +QT.designercomponents_private.enabled_features = +QT.designercomponents_private.disabled_features = +QT_CONFIG += +QT_MODULES += designercomponents diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_devicediscovery_support_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_devicediscovery_support_private.pri new file mode 100644 index 000000000..5c55a1a31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_devicediscovery_support_private.pri @@ -0,0 +1,15 @@ +QT.devicediscovery_support_private.VERSION = 5.9.4 +QT.devicediscovery_support_private.name = QtDeviceDiscoverySupport +QT.devicediscovery_support_private.module = Qt5DeviceDiscoverySupport +QT.devicediscovery_support_private.libs = $$QT_MODULE_LIB_BASE +QT.devicediscovery_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtDeviceDiscoverySupport $$QT_MODULE_INCLUDE_BASE/QtDeviceDiscoverySupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtDeviceDiscoverySupport/5.9.4/QtDeviceDiscoverySupport +QT.devicediscovery_support_private.frameworks = +QT.devicediscovery_support_private.bins = $$QT_MODULE_BIN_BASE +QT.devicediscovery_support_private.depends = core_private +QT.devicediscovery_support_private.uses = +QT.devicediscovery_support_private.module_config = v2 staticlib internal_module +QT.devicediscovery_support_private.DEFINES = QT_DEVICEDISCOVERY_SUPPORT_LIB +QT.devicediscovery_support_private.enabled_features = +QT.devicediscovery_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += devicediscovery_support diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_egl_support_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_egl_support_private.pri new file mode 100644 index 000000000..d1fe845c8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_egl_support_private.pri @@ -0,0 +1,15 @@ +QT.egl_support_private.VERSION = 5.9.4 +QT.egl_support_private.name = QtEglSupport +QT.egl_support_private.module = Qt5EglSupport +QT.egl_support_private.libs = $$QT_MODULE_LIB_BASE +QT.egl_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtEglSupport $$QT_MODULE_INCLUDE_BASE/QtEglSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtEglSupport/5.9.4/QtEglSupport +QT.egl_support_private.frameworks = +QT.egl_support_private.bins = $$QT_MODULE_BIN_BASE +QT.egl_support_private.depends = core_private gui_private +QT.egl_support_private.uses = +QT.egl_support_private.module_config = v2 staticlib internal_module +QT.egl_support_private.DEFINES = QT_EGL_SUPPORT_LIB +QT.egl_support_private.enabled_features = +QT.egl_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += egl_support diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri new file mode 100644 index 000000000..2315ba7eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri @@ -0,0 +1,15 @@ +QT.eventdispatcher_support_private.VERSION = 5.9.4 +QT.eventdispatcher_support_private.name = QtEventDispatcherSupport +QT.eventdispatcher_support_private.module = Qt5EventDispatcherSupport +QT.eventdispatcher_support_private.libs = $$QT_MODULE_LIB_BASE +QT.eventdispatcher_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtEventDispatcherSupport $$QT_MODULE_INCLUDE_BASE/QtEventDispatcherSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtEventDispatcherSupport/5.9.4/QtEventDispatcherSupport +QT.eventdispatcher_support_private.frameworks = +QT.eventdispatcher_support_private.bins = $$QT_MODULE_BIN_BASE +QT.eventdispatcher_support_private.depends = core_private gui_private +QT.eventdispatcher_support_private.uses = +QT.eventdispatcher_support_private.module_config = v2 staticlib internal_module +QT.eventdispatcher_support_private.DEFINES = QT_EVENTDISPATCHER_SUPPORT_LIB +QT.eventdispatcher_support_private.enabled_features = +QT.eventdispatcher_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += eventdispatcher_support diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_fb_support_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_fb_support_private.pri new file mode 100644 index 000000000..a17ad6032 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_fb_support_private.pri @@ -0,0 +1,15 @@ +QT.fb_support_private.VERSION = 5.9.4 +QT.fb_support_private.name = QtFbSupport +QT.fb_support_private.module = Qt5FbSupport +QT.fb_support_private.libs = $$QT_MODULE_LIB_BASE +QT.fb_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtFbSupport $$QT_MODULE_INCLUDE_BASE/QtFbSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtFbSupport/5.9.4/QtFbSupport +QT.fb_support_private.frameworks = +QT.fb_support_private.bins = $$QT_MODULE_BIN_BASE +QT.fb_support_private.depends = core_private gui_private +QT.fb_support_private.uses = +QT.fb_support_private.module_config = v2 staticlib internal_module +QT.fb_support_private.DEFINES = QT_FB_SUPPORT_LIB +QT.fb_support_private.enabled_features = +QT.fb_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += fb_support diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_fontdatabase_support_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_fontdatabase_support_private.pri new file mode 100644 index 000000000..de835964e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_fontdatabase_support_private.pri @@ -0,0 +1,15 @@ +QT.fontdatabase_support_private.VERSION = 5.9.4 +QT.fontdatabase_support_private.name = QtFontDatabaseSupport +QT.fontdatabase_support_private.module = Qt5FontDatabaseSupport +QT.fontdatabase_support_private.libs = $$QT_MODULE_LIB_BASE +QT.fontdatabase_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtFontDatabaseSupport $$QT_MODULE_INCLUDE_BASE/QtFontDatabaseSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtFontDatabaseSupport/5.9.4/QtFontDatabaseSupport +QT.fontdatabase_support_private.frameworks = +QT.fontdatabase_support_private.bins = $$QT_MODULE_BIN_BASE +QT.fontdatabase_support_private.depends = core_private gui_private +QT.fontdatabase_support_private.uses = +QT.fontdatabase_support_private.module_config = v2 staticlib internal_module +QT.fontdatabase_support_private.DEFINES = QT_FONTDATABASE_SUPPORT_LIB +QT.fontdatabase_support_private.enabled_features = +QT.fontdatabase_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += fontdatabase_support diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gamepad.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gamepad.pri new file mode 100644 index 000000000..ab9a58a32 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gamepad.pri @@ -0,0 +1,16 @@ +QT.gamepad.VERSION = 5.9.4 +QT.gamepad.name = QtGamepad +QT.gamepad.module = Qt5Gamepad +QT.gamepad.libs = $$QT_MODULE_LIB_BASE +QT.gamepad.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtGamepad +QT.gamepad.frameworks = +QT.gamepad.bins = $$QT_MODULE_BIN_BASE +QT.gamepad.plugin_types = gamepads +QT.gamepad.depends = core gui +QT.gamepad.uses = +QT.gamepad.module_config = v2 +QT.gamepad.DEFINES = QT_GAMEPAD_LIB +QT.gamepad.enabled_features = +QT.gamepad.disabled_features = +QT_CONFIG += +QT_MODULES += gamepad diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gamepad_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gamepad_private.pri new file mode 100644 index 000000000..d0fddf302 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gamepad_private.pri @@ -0,0 +1,11 @@ +QT.gamepad_private.VERSION = 5.9.4 +QT.gamepad_private.name = QtGamepad +QT.gamepad_private.module = +QT.gamepad_private.libs = $$QT_MODULE_LIB_BASE +QT.gamepad_private.includes = $$QT_MODULE_INCLUDE_BASE/QtGamepad/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtGamepad/5.9.4/QtGamepad +QT.gamepad_private.frameworks = +QT.gamepad_private.depends = core_private gamepad +QT.gamepad_private.uses = +QT.gamepad_private.module_config = v2 internal_module +QT.gamepad_private.enabled_features = +QT.gamepad_private.disabled_features = sdl2 diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gui.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gui.pri new file mode 100644 index 000000000..bf749b3d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gui.pri @@ -0,0 +1,18 @@ +QT.gui.VERSION = 5.9.4 +QT.gui.name = QtGui +QT.gui.module = Qt5Gui +QT.gui.libs = $$QT_MODULE_LIB_BASE +QT.gui.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtGui $$QT_MODULE_INCLUDE_BASE/QtANGLE +QT.gui.frameworks = +QT.gui.bins = $$QT_MODULE_BIN_BASE +QT.gui.plugin_types = platforms platforms/darwin xcbglintegrations platformthemes platforminputcontexts generic iconengines imageformats egldeviceintegrations +QT.gui.depends = core +QT.gui.run_depends = core +QT.gui.uses = +QT.gui.module_config = v2 +QT.gui.CONFIG = opengl +QT.gui.DEFINES = QT_GUI_LIB +QT.gui.enabled_features = accessibility action dynamicgl angle clipboard colornames cssparser cursor desktopservices imageformat_xpm draganddrop opengl imageformatplugin highdpiscaling im image_heuristic_mask image_text imageformat_bmp imageformat_jpeg imageformat_png imageformat_ppm imageformat_xbm movie pdf picture sessionmanager shortcut standarditemmodel systemtrayicon tabletevent texthtmlparser textodfwriter validator whatsthis wheelevent +QT.gui.disabled_features = opengles2 combined-angle-lib opengles3 opengles31 openvg +QT_CONFIG += accessibility action clipboard colornames cssparser cursor desktopservices imageformat_xpm draganddrop opengl egl freetype imageformatplugin harfbuzz highdpiscaling ico im image_heuristic_mask image_text imageformat_bmp imageformat_jpeg imageformat_png imageformat_ppm imageformat_xbm movie pdf picture sessionmanager shortcut standarditemmodel systemtrayicon tabletevent texthtmlparser textodfwriter validator whatsthis wheelevent +QT_MODULES += gui diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gui_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gui_private.pri new file mode 100644 index 000000000..e54c62c08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_gui_private.pri @@ -0,0 +1,11 @@ +QT.gui_private.VERSION = 5.9.4 +QT.gui_private.name = QtGui +QT.gui_private.module = +QT.gui_private.libs = $$QT_MODULE_LIB_BASE +QT.gui_private.includes = $$QT_MODULE_INCLUDE_BASE/QtGui/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtGui/5.9.4/QtGui +QT.gui_private.frameworks = +QT.gui_private.depends = core_private gui +QT.gui_private.uses = +QT.gui_private.module_config = v2 internal_module +QT.gui_private.enabled_features = angle_d3d11_qdtd direct2d directwrite directwrite2 egl freetype gif harfbuzz ico jpeg multiprocess png +QT.gui_private.disabled_features = xcb accessibility-atspi-bridge directfb egl_x11 eglfs eglfs_brcm eglfs_egldevice eglfs_gbm eglfs_mali eglfs_openwfd eglfs_rcar eglfs_viv eglfs_viv_wl evdev fontconfig integrityfb integrityhid kms libinput libinput-axis-api linuxfb mirclient mtdev system-freetype system-harfbuzz system-jpeg system-png system-xcb tslib vnc xkbcommon-evdev xlib diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_help.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_help.pri new file mode 100644 index 000000000..822f72392 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_help.pri @@ -0,0 +1,16 @@ +QT.help.VERSION = 5.9.4 +QT.help.name = QtHelp +QT.help.module = Qt5Help +QT.help.libs = $$QT_MODULE_LIB_BASE +QT.help.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtHelp +QT.help.frameworks = +QT.help.bins = $$QT_MODULE_BIN_BASE +QT.help.depends = core gui widgets sql +QT.help.run_depends = network +QT.help.uses = +QT.help.module_config = v2 +QT.help.DEFINES = QT_HELP_LIB +QT.help.enabled_features = +QT.help.disabled_features = +QT_CONFIG += +QT_MODULES += help diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_help_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_help_private.pri new file mode 100644 index 000000000..fd460923b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_help_private.pri @@ -0,0 +1,11 @@ +QT.help_private.VERSION = 5.9.4 +QT.help_private.name = QtHelp +QT.help_private.module = +QT.help_private.libs = $$QT_MODULE_LIB_BASE +QT.help_private.includes = $$QT_MODULE_INCLUDE_BASE/QtHelp/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtHelp/5.9.4/QtHelp +QT.help_private.frameworks = +QT.help_private.depends = core_private help +QT.help_private.uses = +QT.help_private.module_config = v2 internal_module +QT.help_private.enabled_features = +QT.help_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_location.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_location.pri new file mode 100644 index 000000000..34dc01cfe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_location.pri @@ -0,0 +1,16 @@ +QT.location.VERSION = 5.9.4 +QT.location.name = QtLocation +QT.location.module = Qt5Location +QT.location.libs = $$QT_MODULE_LIB_BASE +QT.location.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtLocation +QT.location.frameworks = +QT.location.bins = $$QT_MODULE_BIN_BASE +QT.location.plugin_types = geoservices +QT.location.depends = core positioning gui quick network qml +QT.location.uses = +QT.location.module_config = v2 +QT.location.DEFINES = QT_LOCATION_LIB +QT.location.enabled_features = +QT.location.disabled_features = +QT_CONFIG += +QT_MODULES += location diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_location_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_location_private.pri new file mode 100644 index 000000000..57d301232 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_location_private.pri @@ -0,0 +1,11 @@ +QT.location_private.VERSION = 5.9.4 +QT.location_private.name = QtLocation +QT.location_private.module = +QT.location_private.libs = $$QT_MODULE_LIB_BASE +QT.location_private.includes = $$QT_MODULE_INCLUDE_BASE/QtLocation/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtLocation/5.9.4/QtLocation +QT.location_private.frameworks = +QT.location_private.depends = core_private positioning_private quick_private positioning_private qml_private core_private gui_private location +QT.location_private.uses = +QT.location_private.module_config = v2 internal_module +QT.location_private.enabled_features = geoservices_esri geoservices_here geoservices_itemsoverlay geoservices_mapbox geoservices_osm +QT.location_private.disabled_features = geoservices_mapboxgl diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimedia.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimedia.pri new file mode 100644 index 000000000..dab8fcea9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimedia.pri @@ -0,0 +1,16 @@ +QT.multimedia.VERSION = 5.9.4 +QT.multimedia.name = QtMultimedia +QT.multimedia.module = Qt5Multimedia +QT.multimedia.libs = $$QT_MODULE_LIB_BASE +QT.multimedia.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtMultimedia +QT.multimedia.frameworks = +QT.multimedia.bins = $$QT_MODULE_BIN_BASE +QT.multimedia.plugin_types = mediaservice audio video/bufferpool video/gstvideorenderer video/videonode playlistformats resourcepolicy +QT.multimedia.depends = core network gui +QT.multimedia.uses = +QT.multimedia.module_config = v2 +QT.multimedia.DEFINES = QT_MULTIMEDIA_LIB +QT.multimedia.enabled_features = +QT.multimedia.disabled_features = +QT_CONFIG += directshow evr wshellitem +QT_MODULES += multimedia diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimedia_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimedia_private.pri new file mode 100644 index 000000000..9012eb0b0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimedia_private.pri @@ -0,0 +1,13 @@ +QT.multimedia_private.VERSION = 5.9.4 +QT.multimedia_private.name = QtMultimedia +QT.multimedia_private.module = +QT.multimedia_private.libs = $$QT_MODULE_LIB_BASE +QT.multimedia_private.includes = $$QT_MODULE_INCLUDE_BASE/QtMultimedia/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtMultimedia/5.9.4/QtMultimedia +QT.multimedia_private.frameworks = +QT.multimedia_private.depends = core_private gui_private multimedia +QT.multimedia_private.uses = +QT.multimedia_private.module_config = v2 internal_module +QT.multimedia_private.enabled_features = directshow directshow-player evr wasapi wmf wmsdk wshellitem +QT.multimedia_private.disabled_features = alsa wmf-player gpu_vivante gstreamer_1_0 gstreamer_0_10 gstreamer gstreamer_app gstreamer_encodingprofiles gstreamer_photography linux_v4l openal pulseaudio resourcepolicy +QMAKE_LIBS_DIRECTSHOW = -lstrmiids -ldmoguids -luuid -lmsdmo -lole32 -loleaut32 +QMAKE_LIBS_WMF = -lstrmiids -ldmoguids -luuid -lmsdmo -lole32 -loleaut32 -lMf -lMfuuid -lMfplat -lPropsys diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimediawidgets.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimediawidgets.pri new file mode 100644 index 000000000..617c605c1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimediawidgets.pri @@ -0,0 +1,16 @@ +QT.multimediawidgets.VERSION = 5.9.4 +QT.multimediawidgets.name = QtMultimediaWidgets +QT.multimediawidgets.module = Qt5MultimediaWidgets +QT.multimediawidgets.libs = $$QT_MODULE_LIB_BASE +QT.multimediawidgets.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtMultimediaWidgets +QT.multimediawidgets.frameworks = +QT.multimediawidgets.bins = $$QT_MODULE_BIN_BASE +QT.multimediawidgets.depends = core gui multimedia widgets +QT.multimediawidgets.run_depends = opengl +QT.multimediawidgets.uses = +QT.multimediawidgets.module_config = v2 +QT.multimediawidgets.DEFINES = QT_MULTIMEDIAWIDGETS_LIB +QT.multimediawidgets.enabled_features = +QT.multimediawidgets.disabled_features = +QT_CONFIG += +QT_MODULES += multimediawidgets diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimediawidgets_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimediawidgets_private.pri new file mode 100644 index 000000000..f3abebf21 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_multimediawidgets_private.pri @@ -0,0 +1,11 @@ +QT.multimediawidgets_private.VERSION = 5.9.4 +QT.multimediawidgets_private.name = QtMultimediaWidgets +QT.multimediawidgets_private.module = +QT.multimediawidgets_private.libs = $$QT_MODULE_LIB_BASE +QT.multimediawidgets_private.includes = $$QT_MODULE_INCLUDE_BASE/QtMultimediaWidgets/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtMultimediaWidgets/5.9.4/QtMultimediaWidgets +QT.multimediawidgets_private.frameworks = +QT.multimediawidgets_private.depends = multimedia_private widgets_private multimediawidgets +QT.multimediawidgets_private.uses = +QT.multimediawidgets_private.module_config = v2 internal_module +QT.multimediawidgets_private.enabled_features = +QT.multimediawidgets_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_network.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_network.pri new file mode 100644 index 000000000..f2d10ff19 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_network.pri @@ -0,0 +1,17 @@ +QT.network.VERSION = 5.9.4 +QT.network.name = QtNetwork +QT.network.module = Qt5Network +QT.network.libs = $$QT_MODULE_LIB_BASE +QT.network.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtNetwork +QT.network.frameworks = +QT.network.bins = $$QT_MODULE_BIN_BASE +QT.network.plugin_types = bearer +QT.network.depends = core +QT.network.run_depends = core +QT.network.uses = +QT.network.module_config = v2 +QT.network.DEFINES = QT_NETWORK_LIB +QT.network.enabled_features = networkinterface bearermanagement ftp http localserver networkdiskcache networkproxy socks5 ssl udpsocket +QT.network.disabled_features = sctp +QT_CONFIG += networkinterface bearermanagement ftp http localserver networkdiskcache networkproxy openssl socks5 ssl udpsocket +QT_MODULES += network diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_network_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_network_private.pri new file mode 100644 index 000000000..aac487485 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_network_private.pri @@ -0,0 +1,12 @@ +QT.network_private.VERSION = 5.9.4 +QT.network_private.name = QtNetwork +QT.network_private.module = +QT.network_private.libs = $$QT_MODULE_LIB_BASE +QT.network_private.includes = $$QT_MODULE_INCLUDE_BASE/QtNetwork/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtNetwork/5.9.4/QtNetwork +QT.network_private.frameworks = +QT.network_private.depends = core_private network +QT.network_private.uses = openssl/nolink +QT.network_private.module_config = v2 internal_module +QT.network_private.enabled_features = openssl system-proxies +QT.network_private.disabled_features = libproxy securetransport openssl-linked +QMAKE_LIBS_OPENSSL = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_nfc.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_nfc.pri new file mode 100644 index 000000000..f4c290d98 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_nfc.pri @@ -0,0 +1,15 @@ +QT.nfc.VERSION = 5.9.4 +QT.nfc.name = QtNfc +QT.nfc.module = Qt5Nfc +QT.nfc.libs = $$QT_MODULE_LIB_BASE +QT.nfc.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtNfc +QT.nfc.frameworks = +QT.nfc.bins = $$QT_MODULE_BIN_BASE +QT.nfc.depends = core +QT.nfc.uses = +QT.nfc.module_config = v2 +QT.nfc.DEFINES = QT_NFC_LIB +QT.nfc.enabled_features = +QT.nfc.disabled_features = +QT_CONFIG += +QT_MODULES += nfc diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_nfc_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_nfc_private.pri new file mode 100644 index 000000000..2e62d435e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_nfc_private.pri @@ -0,0 +1,11 @@ +QT.nfc_private.VERSION = 5.9.4 +QT.nfc_private.name = QtNfc +QT.nfc_private.module = +QT.nfc_private.libs = $$QT_MODULE_LIB_BASE +QT.nfc_private.includes = $$QT_MODULE_INCLUDE_BASE/QtNfc/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtNfc/5.9.4/QtNfc +QT.nfc_private.frameworks = +QT.nfc_private.depends = nfc +QT.nfc_private.uses = +QT.nfc_private.module_config = v2 internal_module +QT.nfc_private.enabled_features = +QT.nfc_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_opengl.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_opengl.pri new file mode 100644 index 000000000..e0149a16b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_opengl.pri @@ -0,0 +1,15 @@ +QT.opengl.VERSION = 5.9.4 +QT.opengl.name = QtOpenGL +QT.opengl.module = Qt5OpenGL +QT.opengl.libs = $$QT_MODULE_LIB_BASE +QT.opengl.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtOpenGL +QT.opengl.frameworks = +QT.opengl.bins = $$QT_MODULE_BIN_BASE +QT.opengl.depends = core gui widgets +QT.opengl.uses = +QT.opengl.module_config = v2 +QT.opengl.DEFINES = QT_OPENGL_LIB +QT.opengl.enabled_features = +QT.opengl.disabled_features = +QT_CONFIG += +QT_MODULES += opengl diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_opengl_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_opengl_private.pri new file mode 100644 index 000000000..9f8911eb7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_opengl_private.pri @@ -0,0 +1,11 @@ +QT.opengl_private.VERSION = 5.9.4 +QT.opengl_private.name = QtOpenGL +QT.opengl_private.module = +QT.opengl_private.libs = $$QT_MODULE_LIB_BASE +QT.opengl_private.includes = $$QT_MODULE_INCLUDE_BASE/QtOpenGL/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtOpenGL/5.9.4/QtOpenGL +QT.opengl_private.frameworks = +QT.opengl_private.depends = core_private gui_private widgets_private opengl +QT.opengl_private.uses = +QT.opengl_private.module_config = v2 internal_module +QT.opengl_private.enabled_features = +QT.opengl_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_openglextensions.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_openglextensions.pri new file mode 100644 index 000000000..7957ebbd5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_openglextensions.pri @@ -0,0 +1,15 @@ +QT.openglextensions.VERSION = 5.9.4 +QT.openglextensions.name = QtOpenGLExtensions +QT.openglextensions.module = Qt5OpenGLExtensions +QT.openglextensions.libs = $$QT_MODULE_LIB_BASE +QT.openglextensions.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtOpenGLExtensions +QT.openglextensions.frameworks = +QT.openglextensions.bins = $$QT_MODULE_BIN_BASE +QT.openglextensions.depends = core gui +QT.openglextensions.uses = +QT.openglextensions.module_config = v2 staticlib +QT.openglextensions.DEFINES = QT_OPENGLEXTENSIONS_LIB +QT.openglextensions.enabled_features = +QT.openglextensions.disabled_features = +QT_CONFIG += +QT_MODULES += openglextensions diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_openglextensions_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_openglextensions_private.pri new file mode 100644 index 000000000..fc080706e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_openglextensions_private.pri @@ -0,0 +1,11 @@ +QT.openglextensions_private.VERSION = 5.9.4 +QT.openglextensions_private.name = QtOpenGLExtensions +QT.openglextensions_private.module = +QT.openglextensions_private.libs = $$QT_MODULE_LIB_BASE +QT.openglextensions_private.includes = $$QT_MODULE_INCLUDE_BASE/QtOpenGLExtensions/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtOpenGLExtensions/5.9.4/QtOpenGLExtensions +QT.openglextensions_private.frameworks = +QT.openglextensions_private.depends = openglextensions +QT.openglextensions_private.uses = +QT.openglextensions_private.module_config = v2 staticlib internal_module +QT.openglextensions_private.enabled_features = +QT.openglextensions_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_packetprotocol_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_packetprotocol_private.pri new file mode 100644 index 000000000..c1e48458f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_packetprotocol_private.pri @@ -0,0 +1,15 @@ +QT.packetprotocol_private.VERSION = 5.9.4 +QT.packetprotocol_private.name = QtPacketProtocol +QT.packetprotocol_private.module = Qt5PacketProtocol +QT.packetprotocol_private.libs = $$QT_MODULE_LIB_BASE +QT.packetprotocol_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtPacketProtocol $$QT_MODULE_INCLUDE_BASE/QtPacketProtocol/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtPacketProtocol/5.9.4/QtPacketProtocol +QT.packetprotocol_private.frameworks = +QT.packetprotocol_private.bins = $$QT_MODULE_BIN_BASE +QT.packetprotocol_private.depends = core_private qml_private +QT.packetprotocol_private.uses = +QT.packetprotocol_private.module_config = v2 staticlib internal_module +QT.packetprotocol_private.DEFINES = QT_PACKETPROTOCOL_LIB +QT.packetprotocol_private.enabled_features = +QT.packetprotocol_private.disabled_features = +QT_CONFIG += +QT_MODULES += packetprotocol diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_platformcompositor_support_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_platformcompositor_support_private.pri new file mode 100644 index 000000000..107c8ab38 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_platformcompositor_support_private.pri @@ -0,0 +1,15 @@ +QT.platformcompositor_support_private.VERSION = 5.9.4 +QT.platformcompositor_support_private.name = QtPlatformCompositorSupport +QT.platformcompositor_support_private.module = Qt5PlatformCompositorSupport +QT.platformcompositor_support_private.libs = $$QT_MODULE_LIB_BASE +QT.platformcompositor_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtPlatformCompositorSupport $$QT_MODULE_INCLUDE_BASE/QtPlatformCompositorSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtPlatformCompositorSupport/5.9.4/QtPlatformCompositorSupport +QT.platformcompositor_support_private.frameworks = +QT.platformcompositor_support_private.bins = $$QT_MODULE_BIN_BASE +QT.platformcompositor_support_private.depends = core_private gui_private +QT.platformcompositor_support_private.uses = +QT.platformcompositor_support_private.module_config = v2 staticlib internal_module +QT.platformcompositor_support_private.DEFINES = QT_PLATFORMCOMPOSITOR_SUPPORT_LIB +QT.platformcompositor_support_private.enabled_features = +QT.platformcompositor_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += platformcompositor_support diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_positioning.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_positioning.pri new file mode 100644 index 000000000..67b0d5d0f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_positioning.pri @@ -0,0 +1,16 @@ +QT.positioning.VERSION = 5.9.4 +QT.positioning.name = QtPositioning +QT.positioning.module = Qt5Positioning +QT.positioning.libs = $$QT_MODULE_LIB_BASE +QT.positioning.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtPositioning +QT.positioning.frameworks = +QT.positioning.bins = $$QT_MODULE_BIN_BASE +QT.positioning.plugin_types = position +QT.positioning.depends = core +QT.positioning.uses = +QT.positioning.module_config = v2 +QT.positioning.DEFINES = QT_POSITIONING_LIB +QT.positioning.enabled_features = +QT.positioning.disabled_features = +QT_CONFIG += +QT_MODULES += positioning diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_positioning_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_positioning_private.pri new file mode 100644 index 000000000..b0cd5b316 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_positioning_private.pri @@ -0,0 +1,11 @@ +QT.positioning_private.VERSION = 5.9.4 +QT.positioning_private.name = QtPositioning +QT.positioning_private.module = +QT.positioning_private.libs = $$QT_MODULE_LIB_BASE +QT.positioning_private.includes = $$QT_MODULE_INCLUDE_BASE/QtPositioning/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtPositioning/5.9.4/QtPositioning +QT.positioning_private.frameworks = +QT.positioning_private.depends = core_private positioning +QT.positioning_private.uses = +QT.positioning_private.module_config = v2 internal_module +QT.positioning_private.enabled_features = winrt_geolocation +QT.positioning_private.disabled_features = gypsy diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_printsupport.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_printsupport.pri new file mode 100644 index 000000000..f045d7c0f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_printsupport.pri @@ -0,0 +1,16 @@ +QT.printsupport.VERSION = 5.9.4 +QT.printsupport.name = QtPrintSupport +QT.printsupport.module = Qt5PrintSupport +QT.printsupport.libs = $$QT_MODULE_LIB_BASE +QT.printsupport.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtPrintSupport +QT.printsupport.frameworks = +QT.printsupport.bins = $$QT_MODULE_BIN_BASE +QT.printsupport.plugin_types = printsupport +QT.printsupport.depends = core gui widgets +QT.printsupport.uses = +QT.printsupport.module_config = v2 +QT.printsupport.DEFINES = QT_PRINTSUPPORT_LIB +QT.printsupport.enabled_features = printer printdialog printpreviewwidget printpreviewdialog +QT.printsupport.disabled_features = +QT_CONFIG += printer printdialog printpreviewwidget printpreviewdialog +QT_MODULES += printsupport diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_printsupport_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_printsupport_private.pri new file mode 100644 index 000000000..3d80cb64a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_printsupport_private.pri @@ -0,0 +1,11 @@ +QT.printsupport_private.VERSION = 5.9.4 +QT.printsupport_private.name = QtPrintSupport +QT.printsupport_private.module = +QT.printsupport_private.libs = $$QT_MODULE_LIB_BASE +QT.printsupport_private.includes = $$QT_MODULE_INCLUDE_BASE/QtPrintSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtPrintSupport/5.9.4/QtPrintSupport +QT.printsupport_private.frameworks = +QT.printsupport_private.depends = core_private gui_private widgets_private printsupport +QT.printsupport_private.uses = +QT.printsupport_private.module_config = v2 internal_module +QT.printsupport_private.enabled_features = +QT.printsupport_private.disabled_features = cups cupsjobwidget diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qml.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qml.pri new file mode 100644 index 000000000..d7b4de28a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qml.pri @@ -0,0 +1,16 @@ +QT.qml.VERSION = 5.9.4 +QT.qml.name = QtQml +QT.qml.module = Qt5Qml +QT.qml.libs = $$QT_MODULE_LIB_BASE +QT.qml.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQml +QT.qml.frameworks = +QT.qml.bins = $$QT_MODULE_BIN_BASE +QT.qml.plugin_types = qmltooling +QT.qml.depends = core network +QT.qml.uses = +QT.qml.module_config = v2 +QT.qml.DEFINES = QT_QML_LIB +QT.qml.enabled_features = qml-network +QT.qml.disabled_features = +QT_CONFIG += +QT_MODULES += qml diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qml_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qml_private.pri new file mode 100644 index 000000000..25486897a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qml_private.pri @@ -0,0 +1,11 @@ +QT.qml_private.VERSION = 5.9.4 +QT.qml_private.name = QtQml +QT.qml_private.module = +QT.qml_private.libs = $$QT_MODULE_LIB_BASE +QT.qml_private.includes = $$QT_MODULE_INCLUDE_BASE/QtQml/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQml/5.9.4/QtQml +QT.qml_private.frameworks = +QT.qml_private.depends = core_private qml +QT.qml_private.uses = +QT.qml_private.module_config = v2 internal_module +QT.qml_private.enabled_features = qml-interpreter qml-profiler +QT.qml_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmldebug_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmldebug_private.pri new file mode 100644 index 000000000..8f971f934 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmldebug_private.pri @@ -0,0 +1,15 @@ +QT.qmldebug_private.VERSION = 5.9.4 +QT.qmldebug_private.name = QtQmlDebug +QT.qmldebug_private.module = Qt5QmlDebug +QT.qmldebug_private.libs = $$QT_MODULE_LIB_BASE +QT.qmldebug_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQmlDebug $$QT_MODULE_INCLUDE_BASE/QtQmlDebug/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQmlDebug/5.9.4/QtQmlDebug +QT.qmldebug_private.frameworks = +QT.qmldebug_private.bins = $$QT_MODULE_BIN_BASE +QT.qmldebug_private.depends = core_private network packetprotocol_private qml_private +QT.qmldebug_private.uses = +QT.qmldebug_private.module_config = v2 staticlib internal_module +QT.qmldebug_private.DEFINES = QT_QMLDEBUG_LIB +QT.qmldebug_private.enabled_features = +QT.qmldebug_private.disabled_features = +QT_CONFIG += +QT_MODULES += qmldebug diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmldevtools_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmldevtools_private.pri new file mode 100644 index 000000000..f3ea1302e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmldevtools_private.pri @@ -0,0 +1,14 @@ +QT.qmldevtools_private.VERSION = 5.9.4 +QT.qmldevtools_private.name = QtQmlDevTools +QT.qmldevtools_private.module = Qt5QmlDevTools +QT.qmldevtools_private.libs = $$QT_MODULE_HOST_LIB_BASE +QT.qmldevtools_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQml $$QT_MODULE_INCLUDE_BASE/QtQml/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQml/5.9.4/QtQml +QT.qmldevtools_private.frameworks = +QT.qmldevtools_private.depends = core_private +QT.qmldevtools_private.uses = +QT.qmldevtools_private.module_config = v2 staticlib internal_module +QT.qmldevtools_private.DEFINES = QT_QMLDEVTOOLS_LIB +QT.qmldevtools_private.enabled_features = +QT.qmldevtools_private.disabled_features = +QT_CONFIG += +QT_MODULES += qmldevtools diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmltest.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmltest.pri new file mode 100644 index 000000000..27e951d51 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmltest.pri @@ -0,0 +1,17 @@ +QT.qmltest.VERSION = 5.9.4 +QT.qmltest.name = QtQuickTest +QT.qmltest.module = Qt5QuickTest +QT.qmltest.libs = $$QT_MODULE_LIB_BASE +QT.qmltest.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuickTest +QT.qmltest.frameworks = +QT.qmltest.bins = $$QT_MODULE_BIN_BASE +QT.qmltest.depends = core testlib widgets +QT.qmltest.run_depends = quick qml_private gui core_private gui_private +QT.qmltest.uses = +QT.qmltest.module_config = v2 +QT.qmltest.CONFIG = console testlib_defines +QT.qmltest.DEFINES = QT_QMLTEST_LIB +QT.qmltest.enabled_features = +QT.qmltest.disabled_features = +QT_CONFIG += +QT_MODULES += qmltest diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmltest_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmltest_private.pri new file mode 100644 index 000000000..a244cc692 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qmltest_private.pri @@ -0,0 +1,11 @@ +QT.qmltest_private.VERSION = 5.9.4 +QT.qmltest_private.name = QtQuickTest +QT.qmltest_private.module = +QT.qmltest_private.libs = $$QT_MODULE_LIB_BASE +QT.qmltest_private.includes = $$QT_MODULE_INCLUDE_BASE/QtQuickTest/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuickTest/5.9.4/QtQuickTest +QT.qmltest_private.frameworks = +QT.qmltest_private.depends = testlib_private qmltest +QT.qmltest_private.uses = +QT.qmltest_private.module_config = v2 internal_module +QT.qmltest_private.enabled_features = +QT.qmltest_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri new file mode 100644 index 000000000..44c6be83f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri @@ -0,0 +1,15 @@ +QT.qtmultimediaquicktools_private.VERSION = 5.9.4 +QT.qtmultimediaquicktools_private.name = QtMultimediaQuick_p +QT.qtmultimediaquicktools_private.module = Qt5MultimediaQuick_p +QT.qtmultimediaquicktools_private.libs = $$QT_MODULE_LIB_BASE +QT.qtmultimediaquicktools_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtMultimediaQuick_p $$QT_MODULE_INCLUDE_BASE/QtMultimediaQuick_p/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtMultimediaQuick_p/5.9.4/QtMultimediaQuick_p +QT.qtmultimediaquicktools_private.frameworks = +QT.qtmultimediaquicktools_private.bins = $$QT_MODULE_BIN_BASE +QT.qtmultimediaquicktools_private.depends = core quick multimedia_private +QT.qtmultimediaquicktools_private.uses = +QT.qtmultimediaquicktools_private.module_config = v2 internal_module +QT.qtmultimediaquicktools_private.DEFINES = QT_QTMULTIMEDIAQUICKTOOLS_LIB +QT.qtmultimediaquicktools_private.enabled_features = +QT.qtmultimediaquicktools_private.disabled_features = +QT_CONFIG += +QT_MODULES += qtmultimediaquicktools diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quick.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quick.pri new file mode 100644 index 000000000..d5604bada --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quick.pri @@ -0,0 +1,17 @@ +QT.quick.VERSION = 5.9.4 +QT.quick.name = QtQuick +QT.quick.module = Qt5Quick +QT.quick.libs = $$QT_MODULE_LIB_BASE +QT.quick.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuick +QT.quick.frameworks = +QT.quick.bins = $$QT_MODULE_BIN_BASE +QT.quick.plugin_types = accessible scenegraph +QT.quick.depends = core gui qml +QT.quick.run_depends = network +QT.quick.uses = +QT.quick.module_config = v2 +QT.quick.DEFINES = QT_QUICK_LIB +QT.quick.enabled_features = d3d12 +QT.quick.disabled_features = +QT_CONFIG += +QT_MODULES += quick diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quick_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quick_private.pri new file mode 100644 index 000000000..a560dca9d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quick_private.pri @@ -0,0 +1,11 @@ +QT.quick_private.VERSION = 5.9.4 +QT.quick_private.name = QtQuick +QT.quick_private.module = +QT.quick_private.libs = $$QT_MODULE_LIB_BASE +QT.quick_private.includes = $$QT_MODULE_INCLUDE_BASE/QtQuick/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuick/5.9.4/QtQuick +QT.quick_private.frameworks = +QT.quick_private.depends = core_private gui_private qml_private gui_private core_private qml_private core_private gui_private qml_private quick +QT.quick_private.uses = +QT.quick_private.module_config = v2 internal_module +QT.quick_private.enabled_features = quick-animatedimage quick-path quick-canvas quick-designer quick-flipable quick-gridview quick-itemview quick-listview quick-shadereffect quick-sprite quick-particles quick-pathview quick-positioners quick-viewtransitions +QT.quick_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickcontrols2.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickcontrols2.pri new file mode 100644 index 000000000..ec9a7d8e0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickcontrols2.pri @@ -0,0 +1,16 @@ +QT.quickcontrols2.VERSION = 5.9.4 +QT.quickcontrols2.name = QtQuickControls2 +QT.quickcontrols2.module = Qt5QuickControls2 +QT.quickcontrols2.libs = $$QT_MODULE_LIB_BASE +QT.quickcontrols2.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuickControls2 +QT.quickcontrols2.frameworks = +QT.quickcontrols2.bins = $$QT_MODULE_BIN_BASE +QT.quickcontrols2.depends = core gui quick +QT.quickcontrols2.run_depends = core_private gui_private qml_private quick_private quicktemplates2_private +QT.quickcontrols2.uses = +QT.quickcontrols2.module_config = v2 +QT.quickcontrols2.DEFINES = QT_QUICKCONTROLS2_LIB +QT.quickcontrols2.enabled_features = +QT.quickcontrols2.disabled_features = +QT_CONFIG += +QT_MODULES += quickcontrols2 diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickcontrols2_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickcontrols2_private.pri new file mode 100644 index 000000000..deacf2ab7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickcontrols2_private.pri @@ -0,0 +1,11 @@ +QT.quickcontrols2_private.VERSION = 5.9.4 +QT.quickcontrols2_private.name = QtQuickControls2 +QT.quickcontrols2_private.module = +QT.quickcontrols2_private.libs = $$QT_MODULE_LIB_BASE +QT.quickcontrols2_private.includes = $$QT_MODULE_INCLUDE_BASE/QtQuickControls2/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuickControls2/5.9.4/QtQuickControls2 +QT.quickcontrols2_private.frameworks = +QT.quickcontrols2_private.depends = quickcontrols2 +QT.quickcontrols2_private.uses = +QT.quickcontrols2_private.module_config = v2 internal_module +QT.quickcontrols2_private.enabled_features = quickcontrols2-default quickcontrols2-material quickcontrols2-universal +QT.quickcontrols2_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickparticles_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickparticles_private.pri new file mode 100644 index 000000000..1d5e43e3e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickparticles_private.pri @@ -0,0 +1,15 @@ +QT.quickparticles_private.VERSION = 5.9.4 +QT.quickparticles_private.name = QtQuickParticles +QT.quickparticles_private.module = Qt5QuickParticles +QT.quickparticles_private.libs = $$QT_MODULE_LIB_BASE +QT.quickparticles_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuickParticles $$QT_MODULE_INCLUDE_BASE/QtQuickParticles/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuickParticles/5.9.4/QtQuickParticles +QT.quickparticles_private.frameworks = +QT.quickparticles_private.bins = $$QT_MODULE_BIN_BASE +QT.quickparticles_private.depends = core_private gui_private qml_private quick_private +QT.quickparticles_private.uses = +QT.quickparticles_private.module_config = v2 internal_module +QT.quickparticles_private.DEFINES = QT_QUICKPARTICLES_LIB +QT.quickparticles_private.enabled_features = +QT.quickparticles_private.disabled_features = +QT_CONFIG += +QT_MODULES += quickparticles diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quicktemplates2_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quicktemplates2_private.pri new file mode 100644 index 000000000..89b01eb1d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quicktemplates2_private.pri @@ -0,0 +1,16 @@ +QT.quicktemplates2_private.VERSION = 5.9.4 +QT.quicktemplates2_private.name = QtQuickTemplates2 +QT.quicktemplates2_private.module = Qt5QuickTemplates2 +QT.quicktemplates2_private.libs = $$QT_MODULE_LIB_BASE +QT.quicktemplates2_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuickTemplates2 $$QT_MODULE_INCLUDE_BASE/QtQuickTemplates2/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuickTemplates2/5.9.4/QtQuickTemplates2 +QT.quicktemplates2_private.frameworks = +QT.quicktemplates2_private.bins = $$QT_MODULE_BIN_BASE +QT.quicktemplates2_private.depends = core gui quick +QT.quicktemplates2_private.run_depends = core_private gui_private qml_private quick_private +QT.quicktemplates2_private.uses = +QT.quicktemplates2_private.module_config = v2 internal_module +QT.quicktemplates2_private.DEFINES = QT_QUICKTEMPLATES2_LIB +QT.quicktemplates2_private.enabled_features = quicktemplates2-hover quicktemplates2-multitouch +QT.quicktemplates2_private.disabled_features = +QT_CONFIG += +QT_MODULES += quicktemplates2 diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickwidgets.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickwidgets.pri new file mode 100644 index 000000000..6ad1ba95e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickwidgets.pri @@ -0,0 +1,15 @@ +QT.quickwidgets.VERSION = 5.9.4 +QT.quickwidgets.name = QtQuickWidgets +QT.quickwidgets.module = Qt5QuickWidgets +QT.quickwidgets.libs = $$QT_MODULE_LIB_BASE +QT.quickwidgets.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuickWidgets +QT.quickwidgets.frameworks = +QT.quickwidgets.bins = $$QT_MODULE_BIN_BASE +QT.quickwidgets.depends = core gui qml quick widgets +QT.quickwidgets.uses = +QT.quickwidgets.module_config = v2 +QT.quickwidgets.DEFINES = QT_QUICKWIDGETS_LIB +QT.quickwidgets.enabled_features = +QT.quickwidgets.disabled_features = +QT_CONFIG += +QT_MODULES += quickwidgets diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickwidgets_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickwidgets_private.pri new file mode 100644 index 000000000..28f52bb70 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_quickwidgets_private.pri @@ -0,0 +1,11 @@ +QT.quickwidgets_private.VERSION = 5.9.4 +QT.quickwidgets_private.name = QtQuickWidgets +QT.quickwidgets_private.module = +QT.quickwidgets_private.libs = $$QT_MODULE_LIB_BASE +QT.quickwidgets_private.includes = $$QT_MODULE_INCLUDE_BASE/QtQuickWidgets/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuickWidgets/5.9.4/QtQuickWidgets +QT.quickwidgets_private.frameworks = +QT.quickwidgets_private.depends = core_private gui_private qml_private quick_private widgets_private quickwidgets +QT.quickwidgets_private.uses = +QT.quickwidgets_private.module_config = v2 internal_module +QT.quickwidgets_private.enabled_features = +QT.quickwidgets_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_scxml.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_scxml.pri new file mode 100644 index 000000000..44bd85f9e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_scxml.pri @@ -0,0 +1,16 @@ +QT.scxml.VERSION = 5.9.4 +QT.scxml.name = QtScxml +QT.scxml.module = Qt5Scxml +QT.scxml.libs = $$QT_MODULE_LIB_BASE +QT.scxml.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtScxml +QT.scxml.frameworks = +QT.scxml.bins = $$QT_MODULE_BIN_BASE +QT.scxml.depends = core qml +QT.scxml.uses = +QT.scxml.module_config = v2 +QT.scxml.CONFIG = c++11 qscxmlc +QT.scxml.DEFINES = QT_SCXML_LIB +QT.scxml.enabled_features = +QT.scxml.disabled_features = +QT_CONFIG += +QT_MODULES += scxml diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_scxml_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_scxml_private.pri new file mode 100644 index 000000000..30b0043e4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_scxml_private.pri @@ -0,0 +1,11 @@ +QT.scxml_private.VERSION = 5.9.4 +QT.scxml_private.name = QtScxml +QT.scxml_private.module = +QT.scxml_private.libs = $$QT_MODULE_LIB_BASE +QT.scxml_private.includes = $$QT_MODULE_INCLUDE_BASE/QtScxml/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtScxml/5.9.4/QtScxml +QT.scxml_private.frameworks = +QT.scxml_private.depends = core_private qml_private scxml +QT.scxml_private.uses = +QT.scxml_private.module_config = v2 internal_module +QT.scxml_private.enabled_features = +QT.scxml_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sensors.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sensors.pri new file mode 100644 index 000000000..16c7b82d2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sensors.pri @@ -0,0 +1,16 @@ +QT.sensors.VERSION = 5.9.4 +QT.sensors.name = QtSensors +QT.sensors.module = Qt5Sensors +QT.sensors.libs = $$QT_MODULE_LIB_BASE +QT.sensors.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtSensors +QT.sensors.frameworks = +QT.sensors.bins = $$QT_MODULE_BIN_BASE +QT.sensors.plugin_types = sensors sensorgestures +QT.sensors.depends = core +QT.sensors.uses = +QT.sensors.module_config = v2 +QT.sensors.DEFINES = QT_SENSORS_LIB +QT.sensors.enabled_features = +QT.sensors.disabled_features = +QT_CONFIG += +QT_MODULES += sensors diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sensors_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sensors_private.pri new file mode 100644 index 000000000..99a7de04f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sensors_private.pri @@ -0,0 +1,11 @@ +QT.sensors_private.VERSION = 5.9.4 +QT.sensors_private.name = QtSensors +QT.sensors_private.module = +QT.sensors_private.libs = $$QT_MODULE_LIB_BASE +QT.sensors_private.includes = $$QT_MODULE_INCLUDE_BASE/QtSensors/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtSensors/5.9.4/QtSensors +QT.sensors_private.frameworks = +QT.sensors_private.depends = core_private sensors +QT.sensors_private.uses = +QT.sensors_private.module_config = v2 internal_module +QT.sensors_private.enabled_features = +QT.sensors_private.disabled_features = sensorfw diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialbus.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialbus.pri new file mode 100644 index 000000000..d48410e50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialbus.pri @@ -0,0 +1,17 @@ +QT.serialbus.VERSION = 5.9.4 +QT.serialbus.name = QtSerialBus +QT.serialbus.module = Qt5SerialBus +QT.serialbus.libs = $$QT_MODULE_LIB_BASE +QT.serialbus.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtSerialBus +QT.serialbus.frameworks = +QT.serialbus.bins = $$QT_MODULE_BIN_BASE +QT.serialbus.plugin_types = canbus +QT.serialbus.depends = core +QT.serialbus.run_depends = network serialport +QT.serialbus.uses = +QT.serialbus.module_config = v2 +QT.serialbus.DEFINES = QT_SERIALBUS_LIB +QT.serialbus.enabled_features = +QT.serialbus.disabled_features = +QT_CONFIG += +QT_MODULES += serialbus diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialbus_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialbus_private.pri new file mode 100644 index 000000000..c4fd2bd01 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialbus_private.pri @@ -0,0 +1,11 @@ +QT.serialbus_private.VERSION = 5.9.4 +QT.serialbus_private.name = QtSerialBus +QT.serialbus_private.module = +QT.serialbus_private.libs = $$QT_MODULE_LIB_BASE +QT.serialbus_private.includes = $$QT_MODULE_INCLUDE_BASE/QtSerialBus/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtSerialBus/5.9.4/QtSerialBus +QT.serialbus_private.frameworks = +QT.serialbus_private.depends = core_private serialbus network serialport +QT.serialbus_private.uses = +QT.serialbus_private.module_config = v2 internal_module +QT.serialbus_private.enabled_features = +QT.serialbus_private.disabled_features = socketcan socketcan_fd diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialport.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialport.pri new file mode 100644 index 000000000..43f1ffefe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialport.pri @@ -0,0 +1,15 @@ +QT.serialport.VERSION = 5.9.4 +QT.serialport.name = QtSerialPort +QT.serialport.module = Qt5SerialPort +QT.serialport.libs = $$QT_MODULE_LIB_BASE +QT.serialport.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtSerialPort +QT.serialport.frameworks = +QT.serialport.bins = $$QT_MODULE_BIN_BASE +QT.serialport.depends = core +QT.serialport.uses = +QT.serialport.module_config = v2 +QT.serialport.DEFINES = QT_SERIALPORT_LIB +QT.serialport.enabled_features = +QT.serialport.disabled_features = +QT_CONFIG += +QT_MODULES += serialport diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialport_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialport_private.pri new file mode 100644 index 000000000..e34cbe7f1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_serialport_private.pri @@ -0,0 +1,11 @@ +QT.serialport_private.VERSION = 5.9.4 +QT.serialport_private.name = QtSerialPort +QT.serialport_private.module = +QT.serialport_private.libs = $$QT_MODULE_LIB_BASE +QT.serialport_private.includes = $$QT_MODULE_INCLUDE_BASE/QtSerialPort/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtSerialPort/5.9.4/QtSerialPort +QT.serialport_private.frameworks = +QT.serialport_private.depends = core_private serialport +QT.serialport_private.uses = +QT.serialport_private.module_config = v2 internal_module +QT.serialport_private.enabled_features = +QT.serialport_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sql.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sql.pri new file mode 100644 index 000000000..44453e70f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sql.pri @@ -0,0 +1,16 @@ +QT.sql.VERSION = 5.9.4 +QT.sql.name = QtSql +QT.sql.module = Qt5Sql +QT.sql.libs = $$QT_MODULE_LIB_BASE +QT.sql.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtSql +QT.sql.frameworks = +QT.sql.bins = $$QT_MODULE_BIN_BASE +QT.sql.plugin_types = sqldrivers +QT.sql.depends = core +QT.sql.uses = +QT.sql.module_config = v2 +QT.sql.DEFINES = QT_SQL_LIB +QT.sql.enabled_features = +QT.sql.disabled_features = +QT_CONFIG += +QT_MODULES += sql diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sql_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sql_private.pri new file mode 100644 index 000000000..4de515012 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_sql_private.pri @@ -0,0 +1,11 @@ +QT.sql_private.VERSION = 5.9.4 +QT.sql_private.name = QtSql +QT.sql_private.module = +QT.sql_private.libs = $$QT_MODULE_LIB_BASE +QT.sql_private.includes = $$QT_MODULE_INCLUDE_BASE/QtSql/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtSql/5.9.4/QtSql +QT.sql_private.frameworks = +QT.sql_private.depends = core_private sql +QT.sql_private.uses = +QT.sql_private.module_config = v2 internal_module +QT.sql_private.enabled_features = +QT.sql_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_svg.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_svg.pri new file mode 100644 index 000000000..06ff8a504 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_svg.pri @@ -0,0 +1,16 @@ +QT.svg.VERSION = 5.9.4 +QT.svg.name = QtSvg +QT.svg.module = Qt5Svg +QT.svg.libs = $$QT_MODULE_LIB_BASE +QT.svg.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtSvg +QT.svg.frameworks = +QT.svg.bins = $$QT_MODULE_BIN_BASE +QT.svg.depends = core gui widgets +QT.svg.run_depends = zlib_private +QT.svg.uses = +QT.svg.module_config = v2 +QT.svg.DEFINES = QT_SVG_LIB +QT.svg.enabled_features = +QT.svg.disabled_features = +QT_CONFIG += +QT_MODULES += svg diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_svg_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_svg_private.pri new file mode 100644 index 000000000..57bb959ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_svg_private.pri @@ -0,0 +1,11 @@ +QT.svg_private.VERSION = 5.9.4 +QT.svg_private.name = QtSvg +QT.svg_private.module = +QT.svg_private.libs = $$QT_MODULE_LIB_BASE +QT.svg_private.includes = $$QT_MODULE_INCLUDE_BASE/QtSvg/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtSvg/5.9.4/QtSvg +QT.svg_private.frameworks = +QT.svg_private.depends = core_private gui_private widgets_private svg +QT.svg_private.uses = +QT.svg_private.module_config = v2 internal_module +QT.svg_private.enabled_features = +QT.svg_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_testlib.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_testlib.pri new file mode 100644 index 000000000..cf171b515 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_testlib.pri @@ -0,0 +1,16 @@ +QT.testlib.VERSION = 5.9.4 +QT.testlib.name = QtTest +QT.testlib.module = Qt5Test +QT.testlib.libs = $$QT_MODULE_LIB_BASE +QT.testlib.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtTest +QT.testlib.frameworks = +QT.testlib.bins = $$QT_MODULE_BIN_BASE +QT.testlib.depends = core +QT.testlib.uses = +QT.testlib.module_config = v2 +QT.testlib.CONFIG = console testlib_defines +QT.testlib.DEFINES = QT_TESTLIB_LIB +QT.testlib.enabled_features = +QT.testlib.disabled_features = +QT_CONFIG += +QT_MODULES += testlib diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_testlib_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_testlib_private.pri new file mode 100644 index 000000000..0b3e7c395 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_testlib_private.pri @@ -0,0 +1,11 @@ +QT.testlib_private.VERSION = 5.9.4 +QT.testlib_private.name = QtTest +QT.testlib_private.module = +QT.testlib_private.libs = $$QT_MODULE_LIB_BASE +QT.testlib_private.includes = $$QT_MODULE_INCLUDE_BASE/QtTest/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtTest/5.9.4/QtTest +QT.testlib_private.frameworks = +QT.testlib_private.depends = core_private testlib +QT.testlib_private.uses = +QT.testlib_private.module_config = v2 internal_module +QT.testlib_private.enabled_features = +QT.testlib_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_theme_support_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_theme_support_private.pri new file mode 100644 index 000000000..a0ba93c6e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_theme_support_private.pri @@ -0,0 +1,15 @@ +QT.theme_support_private.VERSION = 5.9.4 +QT.theme_support_private.name = QtThemeSupport +QT.theme_support_private.module = Qt5ThemeSupport +QT.theme_support_private.libs = $$QT_MODULE_LIB_BASE +QT.theme_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtThemeSupport $$QT_MODULE_INCLUDE_BASE/QtThemeSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtThemeSupport/5.9.4/QtThemeSupport +QT.theme_support_private.frameworks = +QT.theme_support_private.bins = $$QT_MODULE_BIN_BASE +QT.theme_support_private.depends = core_private gui_private +QT.theme_support_private.uses = +QT.theme_support_private.module_config = v2 staticlib internal_module +QT.theme_support_private.DEFINES = QT_THEME_SUPPORT_LIB +QT.theme_support_private.enabled_features = +QT.theme_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += theme_support diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_uiplugin.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_uiplugin.pri new file mode 100644 index 000000000..b45375527 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_uiplugin.pri @@ -0,0 +1,16 @@ +QT.uiplugin.VERSION = 5.9.4 +QT.uiplugin.name = QtUiPlugin +QT.uiplugin.module = +QT.uiplugin.libs = $$QT_MODULE_LIB_BASE +QT.uiplugin.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtUiPlugin +QT.uiplugin.frameworks = +QT.uiplugin.bins = $$QT_MODULE_BIN_BASE +QT.uiplugin.depends = core gui widgets +QT.uiplugin.uses = +QT.uiplugin.module_config = v2 +QT.uiplugin.CONFIG = designer_defines +QT.uiplugin.DEFINES = QT_UIPLUGIN_LIB +QT.uiplugin.enabled_features = +QT.uiplugin.disabled_features = +QT_CONFIG += +QT_MODULES += uiplugin diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_uitools.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_uitools.pri new file mode 100644 index 000000000..bb2ec8005 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_uitools.pri @@ -0,0 +1,16 @@ +QT.uitools.VERSION = 5.9.4 +QT.uitools.name = QtUiTools +QT.uitools.module = Qt5UiTools +QT.uitools.libs = $$QT_MODULE_LIB_BASE +QT.uitools.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtUiTools +QT.uitools.frameworks = +QT.uitools.bins = $$QT_MODULE_BIN_BASE +QT.uitools.depends = core gui widgets +QT.uitools.run_depends = uiplugin +QT.uitools.uses = +QT.uitools.module_config = v2 staticlib +QT.uitools.DEFINES = QT_UITOOLS_LIB +QT.uitools.enabled_features = +QT.uitools.disabled_features = +QT_CONFIG += +QT_MODULES += uitools diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_uitools_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_uitools_private.pri new file mode 100644 index 000000000..b03578726 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_uitools_private.pri @@ -0,0 +1,11 @@ +QT.uitools_private.VERSION = 5.9.4 +QT.uitools_private.name = QtUiTools +QT.uitools_private.module = +QT.uitools_private.libs = $$QT_MODULE_LIB_BASE +QT.uitools_private.includes = $$QT_MODULE_INCLUDE_BASE/QtUiTools/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtUiTools/5.9.4/QtUiTools +QT.uitools_private.frameworks = +QT.uitools_private.depends = uitools +QT.uitools_private.uses = +QT.uitools_private.module_config = v2 staticlib internal_module +QT.uitools_private.enabled_features = +QT.uitools_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webchannel.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webchannel.pri new file mode 100644 index 000000000..f5355c888 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webchannel.pri @@ -0,0 +1,15 @@ +QT.webchannel.VERSION = 5.9.4 +QT.webchannel.name = QtWebChannel +QT.webchannel.module = Qt5WebChannel +QT.webchannel.libs = $$QT_MODULE_LIB_BASE +QT.webchannel.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtWebChannel +QT.webchannel.frameworks = +QT.webchannel.bins = $$QT_MODULE_BIN_BASE +QT.webchannel.depends = core qml +QT.webchannel.uses = +QT.webchannel.module_config = v2 +QT.webchannel.DEFINES = QT_WEBCHANNEL_LIB +QT.webchannel.enabled_features = +QT.webchannel.disabled_features = +QT_CONFIG += +QT_MODULES += webchannel diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webchannel_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webchannel_private.pri new file mode 100644 index 000000000..54e186967 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webchannel_private.pri @@ -0,0 +1,11 @@ +QT.webchannel_private.VERSION = 5.9.4 +QT.webchannel_private.name = QtWebChannel +QT.webchannel_private.module = +QT.webchannel_private.libs = $$QT_MODULE_LIB_BASE +QT.webchannel_private.includes = $$QT_MODULE_INCLUDE_BASE/QtWebChannel/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtWebChannel/5.9.4/QtWebChannel +QT.webchannel_private.frameworks = +QT.webchannel_private.depends = core_private webchannel +QT.webchannel_private.uses = +QT.webchannel_private.module_config = v2 internal_module +QT.webchannel_private.enabled_features = +QT.webchannel_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_websockets.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_websockets.pri new file mode 100644 index 000000000..ae0b67e15 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_websockets.pri @@ -0,0 +1,15 @@ +QT.websockets.VERSION = 5.9.4 +QT.websockets.name = QtWebSockets +QT.websockets.module = Qt5WebSockets +QT.websockets.libs = $$QT_MODULE_LIB_BASE +QT.websockets.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtWebSockets +QT.websockets.frameworks = +QT.websockets.bins = $$QT_MODULE_BIN_BASE +QT.websockets.depends = core network +QT.websockets.uses = +QT.websockets.module_config = v2 +QT.websockets.DEFINES = QT_WEBSOCKETS_LIB +QT.websockets.enabled_features = +QT.websockets.disabled_features = +QT_CONFIG += +QT_MODULES += websockets diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_websockets_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_websockets_private.pri new file mode 100644 index 000000000..68aec718b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_websockets_private.pri @@ -0,0 +1,11 @@ +QT.websockets_private.VERSION = 5.9.4 +QT.websockets_private.name = QtWebSockets +QT.websockets_private.module = +QT.websockets_private.libs = $$QT_MODULE_LIB_BASE +QT.websockets_private.includes = $$QT_MODULE_INCLUDE_BASE/QtWebSockets/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtWebSockets/5.9.4/QtWebSockets +QT.websockets_private.frameworks = +QT.websockets_private.depends = core_private websockets +QT.websockets_private.uses = +QT.websockets_private.module_config = v2 internal_module +QT.websockets_private.enabled_features = +QT.websockets_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webview.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webview.pri new file mode 100644 index 000000000..5a76d16ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webview.pri @@ -0,0 +1,16 @@ +QT.webview.VERSION = 5.9.4 +QT.webview.name = QtWebView +QT.webview.module = Qt5WebView +QT.webview.libs = $$QT_MODULE_LIB_BASE +QT.webview.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtWebView +QT.webview.frameworks = +QT.webview.bins = $$QT_MODULE_BIN_BASE +QT.webview.depends = +QT.webview.run_depends = webengine_private quick_private core_private gui_private +QT.webview.uses = +QT.webview.module_config = v2 +QT.webview.DEFINES = QT_WEBVIEW_LIB +QT.webview.enabled_features = +QT.webview.disabled_features = +QT_CONFIG += +QT_MODULES += webview diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webview_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webview_private.pri new file mode 100644 index 000000000..27e496dec --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_webview_private.pri @@ -0,0 +1,11 @@ +QT.webview_private.VERSION = 5.9.4 +QT.webview_private.name = QtWebView +QT.webview_private.module = +QT.webview_private.libs = $$QT_MODULE_LIB_BASE +QT.webview_private.includes = $$QT_MODULE_INCLUDE_BASE/QtWebView/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtWebView/5.9.4/QtWebView +QT.webview_private.frameworks = +QT.webview_private.depends = webview quick_private core_private gui_private +QT.webview_private.uses = +QT.webview_private.module_config = v2 internal_module +QT.webview_private.enabled_features = +QT.webview_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_widgets.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_widgets.pri new file mode 100644 index 000000000..d7da71d9a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_widgets.pri @@ -0,0 +1,17 @@ +QT.widgets.VERSION = 5.9.4 +QT.widgets.name = QtWidgets +QT.widgets.module = Qt5Widgets +QT.widgets.libs = $$QT_MODULE_LIB_BASE +QT.widgets.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtWidgets +QT.widgets.frameworks = +QT.widgets.bins = $$QT_MODULE_BIN_BASE +QT.widgets.plugin_types = styles +QT.widgets.depends = core gui +QT.widgets.uses = +QT.widgets.module_config = v2 +QT.widgets.CONFIG = uic +QT.widgets.DEFINES = QT_WIDGETS_LIB +QT.widgets.enabled_features = abstractbutton abstractslider groupbox buttongroup label pushbutton menu lineedit spinbox slider scrollbar scrollarea itemviews tableview toolbutton calendarwidget checkbox dialog dialogbuttonbox colordialog listview columnview combobox commandlinkbutton completer contextmenu datawidgetmapper datetimeedit dial filesystemmodel dirmodel resizehandler mainwindow dockwidget textedit errormessage splitter stackedwidget treeview filedialog fontcombobox fontdialog formlayout fscompleter graphicsview graphicseffect inputdialog keysequenceedit lcdnumber listwidget mdiarea menubar messagebox paint_debug progressbar progressdialog radiobutton rubberband scroller sizegrip splashscreen statusbar statustip style-stylesheet syntaxhighlighter tabbar tablewidget tabwidget textbrowser toolbar toolbox tooltip treewidget undocommand undostack undogroup undoview wizard +QT.widgets.disabled_features = +QT_CONFIG += groupbox buttongroup menu lineedit spinbox slider scrollbar scrollarea itemviews tableview toolbutton calendarwidget colordialog listview columnview combobox completer contextmenu datawidgetmapper datetimeedit dial filesystemmodel dirmodel resizehandler mainwindow dockwidget textedit errormessage splitter stackedwidget treeview filedialog fontcombobox fontdialog fscompleter graphicsview graphicseffect inputdialog keysequenceedit lcdnumber listwidget mdiarea menubar messagebox paint_debug progressbar progressdialog rubberband sizegrip splashscreen statusbar statustip style-stylesheet syntaxhighlighter tabbar tablewidget tabwidget textbrowser toolbar toolbox tooltip treewidget undocommand undostack undogroup undoview wizard +QT_MODULES += widgets diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_widgets_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_widgets_private.pri new file mode 100644 index 000000000..554711f8f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_widgets_private.pri @@ -0,0 +1,11 @@ +QT.widgets_private.VERSION = 5.9.4 +QT.widgets_private.name = QtWidgets +QT.widgets_private.module = +QT.widgets_private.libs = $$QT_MODULE_LIB_BASE +QT.widgets_private.includes = $$QT_MODULE_INCLUDE_BASE/QtWidgets/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtWidgets/5.9.4/QtWidgets +QT.widgets_private.frameworks = +QT.widgets_private.depends = core_private gui_private widgets +QT.widgets_private.uses = +QT.widgets_private.module_config = v2 internal_module +QT.widgets_private.enabled_features = widgettextcontrol effects style-fusion style-windows style-windowsxp style-windowsvista +QT.widgets_private.disabled_features = gtk3 style-android style-mac diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_winextras.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_winextras.pri new file mode 100644 index 000000000..6d5c872fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_winextras.pri @@ -0,0 +1,15 @@ +QT.winextras.VERSION = 5.9.4 +QT.winextras.name = QtWinExtras +QT.winextras.module = Qt5WinExtras +QT.winextras.libs = $$QT_MODULE_LIB_BASE +QT.winextras.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtWinExtras +QT.winextras.frameworks = +QT.winextras.bins = $$QT_MODULE_BIN_BASE +QT.winextras.depends = core gui +QT.winextras.uses = +QT.winextras.module_config = v2 +QT.winextras.DEFINES = QT_WINEXTRAS_LIB +QT.winextras.enabled_features = +QT.winextras.disabled_features = +QT_CONFIG += +QT_MODULES += winextras diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_winextras_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_winextras_private.pri new file mode 100644 index 000000000..6d5829fb5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_winextras_private.pri @@ -0,0 +1,11 @@ +QT.winextras_private.VERSION = 5.9.4 +QT.winextras_private.name = QtWinExtras +QT.winextras_private.module = +QT.winextras_private.libs = $$QT_MODULE_LIB_BASE +QT.winextras_private.includes = $$QT_MODULE_INCLUDE_BASE/QtWinExtras/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtWinExtras/5.9.4/QtWinExtras +QT.winextras_private.frameworks = +QT.winextras_private.depends = gui_private core_private winextras +QT.winextras_private.uses = +QT.winextras_private.module_config = v2 internal_module +QT.winextras_private.enabled_features = +QT.winextras_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xml.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xml.pri new file mode 100644 index 000000000..4ed724534 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xml.pri @@ -0,0 +1,15 @@ +QT.xml.VERSION = 5.9.4 +QT.xml.name = QtXml +QT.xml.module = Qt5Xml +QT.xml.libs = $$QT_MODULE_LIB_BASE +QT.xml.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtXml +QT.xml.frameworks = +QT.xml.bins = $$QT_MODULE_BIN_BASE +QT.xml.depends = core +QT.xml.uses = +QT.xml.module_config = v2 +QT.xml.DEFINES = QT_XML_LIB +QT.xml.enabled_features = dom +QT.xml.disabled_features = +QT_CONFIG += dom +QT_MODULES += xml diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xml_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xml_private.pri new file mode 100644 index 000000000..028d4fdce --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xml_private.pri @@ -0,0 +1,11 @@ +QT.xml_private.VERSION = 5.9.4 +QT.xml_private.name = QtXml +QT.xml_private.module = +QT.xml_private.libs = $$QT_MODULE_LIB_BASE +QT.xml_private.includes = $$QT_MODULE_INCLUDE_BASE/QtXml/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtXml/5.9.4/QtXml +QT.xml_private.frameworks = +QT.xml_private.depends = core_private xml +QT.xml_private.uses = +QT.xml_private.module_config = v2 internal_module +QT.xml_private.enabled_features = +QT.xml_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xmlpatterns.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xmlpatterns.pri new file mode 100644 index 000000000..c9cdc8438 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xmlpatterns.pri @@ -0,0 +1,15 @@ +QT.xmlpatterns.VERSION = 5.9.4 +QT.xmlpatterns.name = QtXmlPatterns +QT.xmlpatterns.module = Qt5XmlPatterns +QT.xmlpatterns.libs = $$QT_MODULE_LIB_BASE +QT.xmlpatterns.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtXmlPatterns +QT.xmlpatterns.frameworks = +QT.xmlpatterns.bins = $$QT_MODULE_BIN_BASE +QT.xmlpatterns.depends = core network +QT.xmlpatterns.uses = +QT.xmlpatterns.module_config = v2 +QT.xmlpatterns.DEFINES = QT_XMLPATTERNS_LIB +QT.xmlpatterns.enabled_features = xml-schema +QT.xmlpatterns.disabled_features = +QT_CONFIG += +QT_MODULES += xmlpatterns diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xmlpatterns_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xmlpatterns_private.pri new file mode 100644 index 000000000..fe1d42fb4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_xmlpatterns_private.pri @@ -0,0 +1,11 @@ +QT.xmlpatterns_private.VERSION = 5.9.4 +QT.xmlpatterns_private.name = QtXmlPatterns +QT.xmlpatterns_private.module = +QT.xmlpatterns_private.libs = $$QT_MODULE_LIB_BASE +QT.xmlpatterns_private.includes = $$QT_MODULE_INCLUDE_BASE/QtXmlPatterns/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtXmlPatterns/5.9.4/QtXmlPatterns +QT.xmlpatterns_private.frameworks = +QT.xmlpatterns_private.depends = core_private xmlpatterns +QT.xmlpatterns_private.uses = +QT.xmlpatterns_private.module_config = v2 internal_module +QT.xmlpatterns_private.enabled_features = +QT.xmlpatterns_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_zlib_private.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_zlib_private.pri new file mode 100644 index 000000000..733c943ee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/modules/qt_lib_zlib_private.pri @@ -0,0 +1,15 @@ +QT.zlib_private.VERSION = 5.9.4 +QT.zlib_private.name = QtZlib +QT.zlib_private.module = +QT.zlib_private.libs = $$QT_MODULE_LIB_BASE +QT.zlib_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtZlib $$QT_MODULE_INCLUDE_BASE/QtZlib/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtZlib/5.9.4/QtZlib +QT.zlib_private.frameworks = +QT.zlib_private.bins = $$QT_MODULE_BIN_BASE +QT.zlib_private.depends = +QT.zlib_private.uses = +QT.zlib_private.module_config = v2 internal_module +QT.zlib_private.DEFINES = QT_ZLIB_LIB +QT.zlib_private.enabled_features = +QT.zlib_private.disabled_features = +QT_CONFIG += +QT_MODULES += zlib diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/qconfig.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/qconfig.pri new file mode 100644 index 000000000..b91e6acaf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/qconfig.pri @@ -0,0 +1,16 @@ +QT_ARCH = i386 +QT_BUILDABI = i386-little_endian-ilp32 +QT.global.enabled_features = shared debug_and_release build_all c++11 concurrent +QT.global.disabled_features = cross_compile framework rpath appstore-compliant c++14 c++1z pkg-config force_asserts separate_debug_info simulator_and_device static +QT_CONFIG += shared debug_and_release debug release build_all c++11 concurrent dbus no-pkg-config stl +CONFIG += shared release no_plugin_manifest +QT_VERSION = 5.9.4 +QT_MAJOR_VERSION = 5 +QT_MINOR_VERSION = 9 +QT_PATCH_VERSION = 4 +QT_MSVC_MAJOR_VERSION = 19 +QT_MSVC_MINOR_VERSION = 0 +QT_MSVC_PATCH_VERSION = 24215 +QT_EDITION = OpenSource +QT_LICHECK = licheck.exe +QT_RELEASE_DATE = 2018-01-18 diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/qdevice.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/qdevice.pri new file mode 100644 index 000000000..1784eeda5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/qdevice.pri @@ -0,0 +1 @@ +GCC_MACHINE_DUMP = diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/qmodule.pri b/qrenderdoc/3rdparty/qt/Win32/mkspecs/qmodule.pri new file mode 100644 index 000000000..b5dfe6e64 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/qmodule.pri @@ -0,0 +1,9 @@ +EXTRA_INCLUDEPATH += C:\\Utils\\my_sql\\my_sqlx86\\include C:\\Utils\\postgresqlx86\\pgsql\\include +EXTRA_LIBDIR += C:\\Utils\\my_sql\\my_sqlx86\\lib C:\\Utils\\postgresqlx86\\pgsql\\lib +QT_CPU_FEATURES.i386 = sse sse2 +QT.global_private.enabled_features = alloca_malloc_h alloca sse2 dbus gui network qml-debug sql testlib widgets xml +QT.global_private.disabled_features = alloca_h android-style-assets private_tests dbus-linked libudev posix_fallocate reduce_exports reduce_relocations release_tools stack-protector-strong system-zlib +QT_COORD_TYPE = double +CONFIG += sse2 sse3 ssse3 sse4_1 sse4_2 avx avx2 compile_examples f16c force_debug_info largefile precompile_header +QT_BUILD_PARTS += libs tools +QT_HOST_CFLAGS_DBUS += diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-host-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-host-g++/qmake.conf new file mode 100644 index 000000000..7853ade8c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-host-g++/qmake.conf @@ -0,0 +1,115 @@ +# +# QMake configuration for Scratchbox's host-gcc compiler. +# +# 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 +# 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 +# for QMake variables (I.e. "QMAKE_foo = bar" is broken). + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = linux +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../common/unix.conf) + +# +# qmake configuration for common gcc +# + +QMAKE_COMPILER = gcc + +QMAKE_CC = host-gcc +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 += -fPIC +QMAKE_CFLAGS_STATIC_LIB += -fPIC +QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden +QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE} + +QMAKE_CXX = host-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_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB +QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden +QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_LINK = host-g++ +QMAKE_LINK_SHLIB = host-g++ +QMAKE_LINK_C = host-gcc +QMAKE_LINK_C_SHLIB = host-gcc +QMAKE_LFLAGS += +QMAKE_LFLAGS_RELEASE += -Wl,-O1 +QMAKE_LFLAGS_DEBUG += +QMAKE_LFLAGS_APP += +QMAKE_LFLAGS_SHLIB += -shared +QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME += -Wl,-soname, +QMAKE_LFLAGS_THREAD += +QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined +QMAKE_LFLAGS_RPATH = -Wl,-rpath, + +QMAKE_PCH_OUTPUT_EXT = .gch + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions +QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list, +QMAKE_LFLAGS_VERSION_SCRIPT = -Wl,--version-script, + +# +# qmake configuration for common linux +# + +QMAKE_CFLAGS_THREAD += -D_REENTRANT +QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = +QMAKE_LIBDIR_X11 = +QMAKE_INCDIR_OPENGL = +QMAKE_LIBDIR_OPENGL = +QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL +QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL +QMAKE_INCDIR_EGL = +QMAKE_LIBDIR_EGL = +QMAKE_INCDIR_OPENVG = +QMAKE_LIBDIR_OPENVG = + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = -ldl +QMAKE_LIBS_X11 = -lXext -lX11 -lm +QMAKE_LIBS_EGL = -lEGL +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 +QMAKE_LIBS_OPENVG = -lOpenVG +QMAKE_LIBS_THREAD = -lpthread + +QMAKE_AR = host-ar cqs +QMAKE_OBJCOPY = host-objcopy +QMAKE_NM = host-nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = host-strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-host-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-host-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-host-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf new file mode 100644 index 000000000..63f516895 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf @@ -0,0 +1,34 @@ +# +# qmake configuration derived from linux-g++ +# +# This mkspec is intended for use with scratchbox 2 (sb2) and assumes the +# default sb2 target is set appropriately, or you will have to append the +# appropriate -t $target argument to sb2 + +# If you want to use pkg-config you have to explicitly force it by passing +# -force-pkg-config to configure. You will probably want to export your +# PKG_CONFIG_PATH shell variable in order for the host pkg-config to +# correctly query and utilize your targets .pc files (normally stored in +# $staging/usr/lib/pkgconfig) + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +# modifications to g++.conf +QMAKE_CC = sb2 gcc +QMAKE_CXX = sb2 g++ +QMAKE_LINK = sb2 g++ +QMAKE_LINK_SHLIB = sb2 g++ + +# modifications to linux.conf +QMAKE_AR = sb2 ar cqs +QMAKE_OBJCOPY = sb2 objcopy +QMAKE_NM = sb2 nm -P +QMAKE_STRIP = sb2 strip + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl-g++/qmake.conf new file mode 100644 index 000000000..581422fcf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl-g++/qmake.conf @@ -0,0 +1,13 @@ +# +# qmake configuration for building with nacl-g++ +# + +include(../../common/linux.conf) +include(../../common/qws.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) +include(../../common/nacl/nacl-base.conf) +include(../../common/nacl/g++-nacl32.conf) + + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl-g++/qplatformdefs.h new file mode 100644 index 000000000..fbdb8712a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl-g++/qplatformdefs.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#include "../../common/nacl/qplatformdefs.h" +#include "../../common/posix/qplatformdefs.h" + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl64-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl64-g++/qmake.conf new file mode 100644 index 000000000..fcef45fae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl64-g++/qmake.conf @@ -0,0 +1,13 @@ +# +# qmake configuration for building with nacl-g++ +# + +include(../../common/linux.conf) +include(../../common/qws.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) +include(../../common/nacl/nacl64-base.conf) +include(../../common/nacl/g++-nacl64.conf) + + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl64-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl64-g++/qplatformdefs.h new file mode 100644 index 000000000..fbdb8712a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/nacl64-g++/qplatformdefs.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#include "../../common/nacl/qplatformdefs.h" +#include "../../common/posix/qplatformdefs.h" + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/qnx-X11-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/qnx-X11-g++/qmake.conf new file mode 100644 index 000000000..79a5609db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/qnx-X11-g++/qmake.conf @@ -0,0 +1,39 @@ +# +# qmake configuration for qnx-x11-g++ +# +# Written for QNX RTOS v6 with X11 +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = qnx + +include(../common/unix.conf) +include(../common/gcc-base-unix.conf) +include(../common/g++-unix.conf) + +QMAKE_CFLAGS_THREAD = -D_REENTRANT +QMAKE_CXXFLAGS_THREAD = $$QMAKE_CLFAGS_THREAD +QMAKE_COMPILER_DEFINES += __QNXNTO__ + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = /opt/X11R6/include +QMAKE_LIBDIR_X11 = /opt/X11R6/lib +QMAKE_INCDIR_OPENGL = /opt/X11R6/include +QMAKE_LIBDIR_OPENGL = /opt/X11R6/lib + +#QMAKE_LIBS = -lunix +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_X11 = -lXext -lX11 -lm -lsocket +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = +QMAKE_LIBS_NETWORK = -lsocket + +QMAKE_AR = ar cqs +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/qnx-X11-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/qnx-X11-g++/qplatformdefs.h new file mode 100644 index 000000000..de4a2cc2c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/qnx-X11-g++/qplatformdefs.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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 + + +// We are hot - unistd.h should have turned on the specific APIs we requested + + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +// QNX doesn't have the System V header. This is not a standard +// POSIX header, it's only documented in the Single UNIX Specification. +// The preferred POSIX compliant way to share memory is to use the functions +// in that comply with the POSIX Real Time Interface (1003.1b). +#include +#include +#include +#include +#include +#ifndef QT_NO_IPV6IFNAME +#include +#endif + +// for htonl +#include + +#define QT_USE_XOPEN_LFS_EXTENSIONS +#include "../../common/posix/qplatformdefs.h" + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +// QNX6 doesn't have getpagesize() +inline int getpagesize() +{ + return ::sysconf(_SC_PAGESIZE); +} + +#include + +// QNX6 doesn't have strtof - use strtod instead +inline float strtof(const char *b, char **e) +{ + return float(strtod(b, e)); +} + +#define QT_QWS_TEMP_DIR QString::fromLatin1(qgetenv("TMP")) + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf new file mode 100644 index 000000000..2fa514854 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf @@ -0,0 +1,93 @@ +# +# qmake configuration for vxworks-ppc-dcc +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = vxworks +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../common/unix.conf) + +VXWORKS_ARCH = ppc +VXWORKS_CPU = PPC32 +VXWORKS_DIAB_SPEC = -tPPC7400FV:vxworks66 +VXWORKS_ARCH_MUNCH = ppc + +QMAKE_COMPILER = wr_dcc + +QMAKE_CC = dcc +QMAKE_CFLAGS += $$VXWORKS_DIAB_SPEC -Xkeywords=0x0 -Xcode-absolute-far -Xansi -Xforce-declarations -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip -DCPU=$$upper($$VXWORKS_ARCH) -DVX_CPU_FAMILY=$$VXWORKS_ARCH -DTOOL_FAMILY=diab -DTOOL=diab -D_WRS_KERNEL -DVXWORKS -D_VSB_CONFIG_FILE=\'<../lib/h/config/vsbConfig.h>\' +QMAKE_CFLAGS_DEPS += +QMAKE_CFLAGS_WARN_ON += +QMAKE_CFLAGS_WARN_OFF += -Xsuppress-warnings +QMAKE_CFLAGS_RELEASE += +QMAKE_CFLAGS_DEBUG += -g +QMAKE_CFLAGS_SHLIB += +QMAKE_CFLAGS_STATIC_LIB += +QMAKE_CFLAGS_YACC += +QMAKE_CFLAGS_HIDESYMS += +QMAKE_CFLAGS_PRECOMPILE += +QMAKE_CFLAGS_USE_PRECOMPILE += + +QMAKE_CXX = dcc +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_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS +QMAKE_CXXFLAGS_PRECOMPILE += +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_LINK = dld +QMAKE_LINK_SHLIB = dld +QMAKE_LFLAGS += $$VXWORKS_DIAB_SPEC +QMAKE_LFLAGS_RELEASE += +QMAKE_LFLAGS_DEBUG += +QMAKE_LFLAGS_APP += -r5 +QMAKE_LFLAGS_SHLIB += +QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME += +QMAKE_LFLAGS_THREAD += +QMAKE_LFLAGS_NOUNDEF += +QMAKE_LFLAGS_RPATH = + +QMAKE_PCH_OUTPUT_EXT = .gch + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = +QMAKE_LFLAGS_DYNAMIC_LIST = + +QMAKE_CFLAGS_THREAD += -D_REENTRANT +QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = $(WIND_HOME)/GSS/include +QMAKE_LIBDIR_X11 = $(WIND_HOME)/GSS/lib +QMAKE_INCDIR_OPENGL = $$QMAKE_INCDIR_X11 +QMAKE_LIBDIR_OPENGL = $$QMAKE_LIBDIR_X11 + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_X11 = -lXext -lX11 +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = +QMAKE_LIBS_NETWORK = # -lnetwrap # only needed if kernel is missing gethostbyname and friends + + +QMAKE_AR = ar cqs +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded + +load(qt_config) + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h new file mode 100644 index 000000000..4161c37a7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../vxworks-simpentium-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf new file mode 100644 index 000000000..49cacdba4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf @@ -0,0 +1,38 @@ +# +# qmake configuration for vxworks-simpentium-g++ +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = vxworks +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib +DEFINES += VXWORKS + +include(../../common/linux.conf) + +VXWORKS_ARCH = ppc +VXWORKS_CPU = PPC32 +VXWORKS_ARCH_MUNCH = ppc + +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +QMAKE_CC = cc$$VXWORKS_ARCH_MUNCH +QMAKE_CFLAGS = -fno-builtin -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip -DCPU=$$upper($$VXWORKS_ARCH) -DVX_CPU_FAMILY=$$VXWORKS_ARCH -DTOOL_FAMILY=gnu -DTOOL=gnu -D_WRS_KERNEL -D_VSB_CONFIG_FILE=\'<../lib/h/config/vsbConfig.h>\' +QMAKE_CFLAGS_SHLIB = # remove -fPIC +QMAKE_CFLAGS_STATIC_LIB = # remove -fPIC +QMAKE_CXX = c++$$VXWORKS_ARCH_MUNCH +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +QMAKE_CXXFLAGS_SHLIB = # remove -fPIC +QMAKE_CXXFLAGS_STATIC_LIB = # remove -fPIC +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX +QMAKE_LFLAGS_SHLIB = -Wl,-Ur -L $(WIND_BASE)/target/lib/$$VXWORKS_ARCH/$$VXWORKS_CPU/common # remove -shared +QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_APP += -Wl,-Ur -L $(WIND_BASE)/target/lib/$$VXWORKS_ARCH/$$VXWORKS_CPU/common +# QMAKE_LIBS_NETWORK = # -lnetwrap # only needed if kernel is missing gethostbyname() and friends +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_THREAD = + +load(qt_config) + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h new file mode 100644 index 000000000..4161c37a7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../vxworks-simpentium-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf new file mode 100644 index 000000000..5aa96dff7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf @@ -0,0 +1,92 @@ +# +# qmake configuration for vxworks-simpentium-dcc +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = vxworks +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../common/unix.conf) + +VXWORKS_ARCH = simlinux +VXWORKS_CPU = SIMLINUX +VXWORKS_DIAB_SPEC = -tX86LH:vxworks66 +VXWORKS_ARCH_MUNCH = pentium + +QMAKE_COMPILER = wr_dcc + +QMAKE_CC = dcc +QMAKE_CFLAGS += $$VXWORKS_DIAB_SPEC -Xkeywords=0x0 -Xcode-absolute-far -Xansi -Xforce-declarations -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip -DCPU=$$upper($$VXWORKS_ARCH) -DVX_CPU_FAMILY=$$VXWORKS_ARCH -DTOOL_FAMILY=diab -DTOOL=diab -D_WRS_KERNEL -DVXWORKS -D_VSB_CONFIG_FILE=\'<../lib/h/config/vsbConfig.h>\' +QMAKE_CFLAGS_DEPS += +QMAKE_CFLAGS_WARN_ON += +QMAKE_CFLAGS_WARN_OFF += -Xsuppress-warnings +QMAKE_CFLAGS_RELEASE += +QMAKE_CFLAGS_DEBUG += -g +QMAKE_CFLAGS_SHLIB += +QMAKE_CFLAGS_STATIC_LIB += +QMAKE_CFLAGS_YACC += +QMAKE_CFLAGS_HIDESYMS += +QMAKE_CFLAGS_PRECOMPILE += +QMAKE_CFLAGS_USE_PRECOMPILE += + +QMAKE_CXX = dcc +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_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS +QMAKE_CXXFLAGS_PRECOMPILE += +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_LINK = dld +QMAKE_LINK_SHLIB = dld +QMAKE_LFLAGS += $$VXWORKS_DIAB_SPEC -L $(WIND_BASE)/target/lib/$$VXWORKS_ARCH/$$VXWORKS_CPU/common +QMAKE_LFLAGS_RELEASE += +QMAKE_LFLAGS_DEBUG += +QMAKE_LFLAGS_APP += -r5 +QMAKE_LFLAGS_SHLIB += +QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME += +QMAKE_LFLAGS_THREAD += +QMAKE_LFLAGS_NOUNDEF += +QMAKE_LFLAGS_RPATH = + +QMAKE_PCH_OUTPUT_EXT = .gch + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = +QMAKE_LFLAGS_DYNAMIC_LIST = + +QMAKE_CFLAGS_THREAD += -D_REENTRANT +QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = $(WIND_HOME)/GSS/include +QMAKE_LIBDIR_X11 = $(WIND_HOME)/GSS/lib +QMAKE_INCDIR_OPENGL = $$QMAKE_INCDIR_X11 +QMAKE_LIBDIR_OPENGL = $$QMAKE_LIBDIR_X11 + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_X11 = -lXext -lX11 +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = +QMAKE_LIBS_NETWORK = # -lnet # only needed if kernel is missing gethostbyname and friends + +QMAKE_AR = ar cqs +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded + +load(qt_config) + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h new file mode 100644 index 000000000..4161c37a7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../vxworks-simpentium-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf new file mode 100644 index 000000000..4d5cc97fa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf @@ -0,0 +1,38 @@ +# +# qmake configuration for vxworks-simpentium-g++ +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = vxworks +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib +DEFINES += VXWORKS + +include(../../common/linux.conf) + +VXWORKS_ARCH = simlinux +VXWORKS_CPU = SIMLINUX +VXWORKS_ARCH_MUNCH = pentium + +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +QMAKE_CC = cc$$VXWORKS_ARCH_MUNCH +QMAKE_CFLAGS = -fno-builtin -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip -DCPU=$$upper($$VXWORKS_ARCH) -DVX_CPU_FAMILY=$$VXWORKS_ARCH -DTOOL_FAMILY=gnu -DTOOL=gnu -D_WRS_KERNEL -D_VSB_CONFIG_FILE=\'<../lib/h/config/vsbConfig.h>\' +QMAKE_CFLAGS_SHLIB = # remove -fPIC +QMAKE_CFLAGS_STATIC_LIB = # remove -fPIC +QMAKE_CXX = c++$$VXWORKS_ARCH_MUNCH +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +QMAKE_CXXFLAGS_SHLIB = # remove -fPIC +QMAKE_CXXFLAGS_STATIC_LIB = # remove -fPIC +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX +QMAKE_LFLAGS_SHLIB = -Wl,-Ur -L $(WIND_BASE)/target/lib/$$VXWORKS_ARCH/$$VXWORKS_CPU/common # remove -shared +QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_APP += -Wl,-Ur -L $(WIND_BASE)/target/lib/$$VXWORKS_ARCH/$$VXWORKS_CPU/common +QMAKE_LIBS_NETWORK = # -lnetwrap # only needed if kernel is missing gethostbyname() and friends +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_THREAD = + +load(qt_config) + diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h new file mode 100644 index 000000000..7365e53d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +// Get Qt defines/settings + +#include "qglobal.h" +#include "qfunctions_vxworks.h" + +#define QT_USE_XOPEN_LFS_EXTENSIONS +#include "../../common/posix/qplatformdefs.h" + +#undef QT_LSTAT +#undef QT_MKDIR +#undef QT_READ +#undef QT_WRITE +#undef QT_SOCKLEN_T +#undef QT_SOCKET_CONNECT + +#define QT_LSTAT QT_STAT +#define QT_MKDIR(dir, perm) ::mkdir(dir) + +#define QT_READ(fd, buf, len) ::read(fd, (char*) buf, len) +#define QT_WRITE(fd, buf, len) ::write(fd, (char*) buf, len) + +// there IS a socklen_t in sys/socket.h (unsigned int), +// but sockLib.h uses int in all function declaration... +#define QT_SOCKLEN_T int +#define QT_SOCKET_CONNECT(sd, to, tolen) \ + ::connect(sd, (struct sockaddr *) to, tolen) + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-clang-msvc/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-clang-msvc/qmake.conf new file mode 100644 index 000000000..0041788ef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-clang-msvc/qmake.conf @@ -0,0 +1,20 @@ +# +# qmake configuration for win32-clang-msvc +# +# Notice: this uses the clang-cl wrapper +# + +include(../common/msvc-desktop.conf) + +QMAKE_COMPILER += clang_cl llvm + +QMAKE_CC = clang-cl +QMAKE_CXX = $$QMAKE_CC + +QMAKE_CFLAGS += -Wno-microsoft-enum-value +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +# Precompiled headers are not supported yet by clang +CONFIG -= precompile_header + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-clang-msvc/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-clang-msvc/qplatformdefs.h new file mode 100644 index 000000000..8a3afa763 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-clang-msvc/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../win32-msvc/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-g++/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-g++/qmake.conf new file mode 100644 index 000000000..a4955e99f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-g++/qmake.conf @@ -0,0 +1,84 @@ +# +# qmake configuration for win32-g++ +# +# Written for MinGW-w64 / gcc 5.3 or higher +# +# Cross compile example for i686-w64-mingw32-g++: +# configure -xplatform win32-g++ -device-option CROSS_COMPILE=i686-w64-mingw32- +# + +load(device_config) +include(../common/gcc-base.conf) +include(../common/g++-base.conf) + +# modifications to gcc-base.conf and g++-base.conf + +MAKEFILE_GENERATOR = MINGW +QMAKE_PLATFORM = win32 mingw +CONFIG += debug_and_release debug_and_release_target precompile_header +DEFINES += UNICODE _UNICODE +QMAKE_COMPILER_DEFINES += __GNUC__ WIN32 + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = bison -y +QMAKE_YACCFLAGS = -d +QMAKE_CFLAGS += -fno-keep-inline-dllexport +QMAKE_CFLAGS_WARN_ON += -Wextra + +QMAKE_CFLAGS_SSE2 += -mstackrealign + +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_CXXFLAGS_RTTI_ON = -frtti +QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti +QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads + +QMAKE_INCDIR = + +QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src +QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< +QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src +QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +QMAKE_LINK = $${CROSS_COMPILE}g++ +QMAKE_LINK_C = $${CROSS_COMPILE}gcc +QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads +QMAKE_LFLAGS_RELEASE = -Wl,-s +QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console +QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows +QMAKE_LFLAGS_DLL = -shared +QMAKE_LFLAGS_GCSECTIONS = -Wl,--gc-sections +equals(QMAKE_HOST.os, Windows) { + QMAKE_LINK_OBJECT_MAX = 10 + QMAKE_LINK_OBJECT_SCRIPT = object_script +} +QMAKE_EXT_OBJ = .o +QMAKE_EXT_RES = _res.o +QMAKE_PREFIX_SHLIB = +QMAKE_EXTENSION_SHLIB = dll +QMAKE_PREFIX_STATICLIB = lib +QMAKE_EXTENSION_STATICLIB = a +QMAKE_LIB_EXTENSIONS = a dll.a + +QMAKE_LIBS = +QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -luser32 -ladvapi32 +QMAKE_LIBS_NETWORK = -lws2_32 +QMAKE_LIBS_OPENGL = -lglu32 -lopengl32 -lgdi32 -luser32 +QMAKE_LIBS_OPENGL_ES2 = -lgdi32 -luser32 +QMAKE_LIBS_OPENGL_ES2_DEBUG = -lgdi32 -luser32 +QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32 +QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain + +QMAKE_IDL = midl +QMAKE_LIB = $${CROSS_COMPILE}ar -rc +QMAKE_RC = $${CROSS_COMPILE}windres + +QMAKE_STRIP = $${CROSS_COMPILE}strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P + +include(../common/angle.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-g++/qplatformdefs.h new file mode 100644 index 000000000..c5a70b144 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-g++/qplatformdefs.h @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#ifdef UNICODE +#ifndef _UNICODE +#define _UNICODE +#endif +#endif + +// Get Qt defines/settings + +#include "qglobal.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 +} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT; +#endif + +#ifdef QT_LARGEFILE_SUPPORT +#define QT_STATBUF struct _stati64 // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs +#define QT_STAT ::_stati64 +#define QT_FSTAT ::_fstati64 +#else +#define QT_STATBUF struct _stat // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stat // non-ANSI defs +#define QT_STAT ::_stat +#define QT_FSTAT ::_fstat +#endif +#define QT_STAT_REG _S_IFREG +#define QT_STAT_DIR _S_IFDIR +#define QT_STAT_MASK _S_IFMT +#if defined(_S_IFLNK) +# define QT_STAT_LNK _S_IFLNK +#endif +#define QT_FILENO _fileno +#define QT_OPEN ::_open +#define QT_CLOSE ::_close +#ifdef QT_LARGEFILE_SUPPORT +#define QT_LSEEK ::_lseeki64 +#ifndef UNICODE +#define QT_TSTAT ::_stati64 +#else +#define QT_TSTAT ::_wstati64 +#endif +#else +#define QT_LSEEK ::_lseek +#ifndef UNICODE +#define QT_TSTAT ::_stat +#else +#define QT_TSTAT ::_wstat +#endif +#endif +#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 0 +#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 +#if defined(O_TEXT) +# define QT_OPEN_TEXT _O_TEXT +# define QT_OPEN_BINARY _O_BINARY +#endif + +#include "../common/c89/qplatformdefs.h" + +#ifdef QT_LARGEFILE_SUPPORT +#undef QT_FSEEK +#undef QT_FTELL +#undef QT_OFF_T + +#define QT_FSEEK ::fseeko64 +#define QT_FTELL ::ftello64 +#define QT_OFF_T off64_t +#endif + +#define QT_SIGNAL_ARGS int + +#define QT_VSNPRINTF ::_vsnprintf +#define QT_SNPRINTF ::_snprintf + +# define F_OK 0 +# define X_OK 1 +# define W_OK 2 +# define R_OK 4 + + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-icc/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-icc/qmake.conf new file mode 100644 index 000000000..4d18b1cc5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-icc/qmake.conf @@ -0,0 +1,58 @@ +# +# qmake configuration for win32-icc +# +# Written for Intel C++ Compiler on Windows / icl 16.0 or higher +# + +# Use the Microsoft (R) C/C++ Optimizing Compiler configuration, +# since ICC on Windows pretends to be MSVC + +include(../common/msvc-desktop.conf) + +# modifications to msvc-desktop.conf + +QMAKE_COMPILER += intel_icl + +QMAKE_CC = icl +QMAKE_CFLAGS = -nologo -Zm200 /Qprec /Qwd1744,1738,809,3373 +QMAKE_CFLAGS_WARN_ON = -W3 /Qwd673 +QMAKE_CFLAGS_WARN_OFF = -W0 /Qwd673 +QMAKE_CFLAGS_DEBUG = -Od -Zi -MDd +QMAKE_CFLAGS_LTCG = -Qipo +QMAKE_CFLAGS_DISABLE_LTCG = -Qno-ipo + +QMAKE_CFLAGS_SSE2 = -QxSSE2 +QMAKE_CFLAGS_SSE3 = -QxSSE3 +QMAKE_CFLAGS_SSSE3 = -QxSSSE3 +QMAKE_CFLAGS_SSE4_1 = -QxSSE4.1 +QMAKE_CFLAGS_SSE4_2 = -QxSSE4.2 +QMAKE_CFLAGS_AVX = -QxAVX +QMAKE_CFLAGS_AVX2 = -QxCORE-AVX2 +QMAKE_CFLAGS_AVX512F += -QxCOMMON-AVX512 +QMAKE_CFLAGS_AVX512CD += -QxCOMMON-AVX512 +QMAKE_CFLAGS_AVX512ER += -QxMIC-AVX512 +QMAKE_CFLAGS_AVX512PF += -QxMIC-AVX512 +QMAKE_CFLAGS_AVX512DQ += -QxCORE-AVX512 +QMAKE_CFLAGS_AVX512BW += -QxCORE-AVX512 +QMAKE_CFLAGS_AVX512VL += -QxCORE-AVX512 +QMAKE_CFLAGS_F16C = $$QMAKE_CFLAGS_AVX2 + +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_CXX11 = -Qstd=c++11 +# ICC supports the following but Qt won't compile +#QMAKE_CXXFLAGS_CXX14 = -Qstd=c++14 +#QMAKE_CXXFLAGS_CXX1Z = -Qstd=c++1z +QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG +QMAKE_CXXFLAGS_DISABLE_LTCG = $$QMAKE_CFLAGS_DISABLE_LTCG + +QMAKE_LINK = xilink +QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG + +QMAKE_LIB = xilib /NOLOGO + +include(../common/angle.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-icc/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-icc/qplatformdefs.h new file mode 100644 index 000000000..8a3afa763 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-icc/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../win32-msvc/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-msvc/qmake.conf b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-msvc/qmake.conf new file mode 100644 index 000000000..5c38330ad --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-msvc/qmake.conf @@ -0,0 +1,8 @@ +# +# qmake configuration for win32-msvc +# +# Written for Microsoft C/C++ Optimizing Compiler (all desktop versions) +# + +include(../common/msvc-desktop.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-msvc/qplatformdefs.h b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-msvc/qplatformdefs.h new file mode 100644 index 000000000..9573d18a4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/Win32/mkspecs/win32-msvc/qplatformdefs.h @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#ifdef UNICODE +#ifndef _UNICODE +#define _UNICODE +#endif +#endif + +// Get Qt defines/settings + +#include "qglobal.h" + +#define _POSIX_ +#include +#undef _POSIX_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef QT_LARGEFILE_SUPPORT +#define QT_STATBUF struct _stati64 // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs +#define QT_STAT ::_stati64 +#define QT_FSTAT ::_fstati64 +#else +#define QT_STATBUF struct _stat // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stat // non-ANSI defs +#define QT_STAT ::_stat +#define QT_FSTAT ::_fstat +#endif +#define QT_STAT_REG _S_IFREG +#define QT_STAT_DIR _S_IFDIR +#define QT_STAT_MASK _S_IFMT +#if defined(_S_IFLNK) +# define QT_STAT_LNK _S_IFLNK +#else +# define QT_STAT_LNK 0120000 +#endif +#define QT_FILENO _fileno +#define QT_OPEN ::_open +#define QT_CLOSE ::_close +#ifdef QT_LARGEFILE_SUPPORT +#define QT_LSEEK ::_lseeki64 +#define QT_TSTAT ::_tstati64 +#else +#define QT_LSEEK ::_lseek +#define QT_TSTAT ::_tstat +#endif +#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 0 +#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 +#if defined(O_TEXT) +# define QT_OPEN_TEXT _O_TEXT +# define QT_OPEN_BINARY _O_BINARY +#endif + +#include "../common/c89/qplatformdefs.h" + +#ifdef QT_LARGEFILE_SUPPORT +#undef QT_FSEEK +#undef QT_FTELL +#undef QT_OFF_T + +#define QT_FSEEK ::_fseeki64 +#define QT_FTELL ::_ftelli64 +#define QT_OFF_T __int64 +#endif + +#define QT_SIGNAL_ARGS int + +#define QT_VSNPRINTF(buffer, count, format, arg) \ + vsnprintf_s(buffer, count, count-1, format, arg) + +#define QT_SNPRINTF ::_snprintf + +# define F_OK 0 +# define X_OK 1 +# define W_OK 2 +# define R_OK 4 + +typedef int mode_t; + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/Win32/plugins/imageformats/qsvg.dll b/qrenderdoc/3rdparty/qt/Win32/plugins/imageformats/qsvg.dll new file mode 100644 index 000000000..7387c8555 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/plugins/imageformats/qsvg.dll differ diff --git a/qrenderdoc/3rdparty/qt/Win32/plugins/platforms/qwindows.dll b/qrenderdoc/3rdparty/qt/Win32/plugins/platforms/qwindows.dll new file mode 100644 index 000000000..99be334e0 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/Win32/plugins/platforms/qwindows.dll differ diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/cp949codetbl_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/cp949codetbl_p.h new file mode 100644 index 000000000..3b615d4e1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/cp949codetbl_p.h @@ -0,0 +1,648 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef CP949CODETBL_P_H +#define CP949CODETBL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +static const unsigned short cp949_icode_to_unicode[] = { +0xac02, 0xac03, 0xac05, 0xac06, 0xac0b, 0xac0c, 0xac0d, 0xac0e, 0xac0f, 0xac18, 0xac1e, 0xac1f, 0xac21, 0xac22, 0xac23, +0xac25, 0xac26, 0xac27, 0xac28, 0xac29, 0xac2a, 0xac2b, 0xac2e, 0xac32, 0xac33, 0xac34, 0xac35, 0xac36, 0xac37, 0xac3a, +0xac3b, 0xac3d, 0xac3e, 0xac3f, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, 0xac48, 0xac49, 0xac4a, 0xac4c, +0xac4e, 0xac4f, 0xac50, 0xac51, 0xac52, 0xac53, 0xac55, 0xac56, 0xac57, 0xac59, 0xac5a, 0xac5b, 0xac5d, 0xac5e, 0xac5f, +0xac60, 0xac61, 0xac62, 0xac63, 0xac64, 0xac65, 0xac66, 0xac67, 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e, +0xac6f, 0xac72, 0xac73, 0xac75, 0xac76, 0xac79, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac7f, 0xac82, 0xac87, 0xac88, 0xac8d, +0xac8e, 0xac8f, 0xac91, 0xac92, 0xac93, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, 0xac9a, 0xac9b, 0xac9e, 0xaca2, 0xaca3, +0xaca4, 0xaca5, 0xaca6, 0xaca7, 0xacab, 0xacad, 0xacae, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6, 0xacb7, 0xacba, +0xacbe, 0xacbf, 0xacc0, 0xacc2, 0xacc3, 0xacc5, 0xacc6, 0xacc7, 0xacc9, 0xacca, 0xaccb, 0xaccd, 0xacce, 0xaccf, 0xacd0, +0xacd1, 0xacd2, 0xacd3, 0xacd4, 0xacd6, 0xacd8, 0xacd9, 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf, 0xace2, 0xace3, +0xace5, 0xace6, 0xace9, 0xaceb, 0xaced, 0xacee, 0xacf2, 0xacf4, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0xacfe, 0xacff, +0xad01, 0xad02, 0xad03, 0xad05, 0xad07, 0xad08, 0xad09, 0xad0a, 0xad0b, 0xad0e, 0xad10, 0xad12, 0xad13, 0xad14, 0xad15, +0xad16, 0xad17, 0xad19, 0xad1a, 0xad1b, 0xad1d, 0xad1e, 0xad1f, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25, 0xad26, 0xad27, +0xad28, 0xad2a, 0xad2b, 0xad2e, 0xad2f, 0xad30, 0xad31, 0xad32, 0xad33, 0xad36, 0xad37, 0xad39, 0xad3a, 0xad3b, 0xad3d, +0xad3e, 0xad3f, 0xad40, 0xad41, 0xad42, 0xad43, 0xad46, 0xad48, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0xad51, +0xad52, 0xad53, 0xad55, 0xad56, 0xad57, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, 0xad60, 0xad62, 0xad64, +0xad65, 0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6e, 0xad6f, 0xad71, 0xad72, 0xad77, 0xad78, 0xad79, 0xad7a, +0xad7e, 0xad80, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0xad8a, 0xad8b, 0xad8d, 0xad8e, 0xad8f, 0xad91, 0xad92, 0xad93, +0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9e, 0xad9f, 0xada0, 0xada1, 0xada2, 0xada3, 0xada5, +0xada6, 0xada7, 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, 0xadad, 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb2, 0xadb3, 0xadb4, +0xadb5, 0xadb6, 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe, 0xadbf, 0xadc2, 0xadc3, 0xadc5, 0xadc6, 0xadc7, +0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, 0xadd2, 0xadd4, 0xadd5, 0xadd6, 0xadd7, 0xadd8, 0xadd9, 0xadda, +0xaddb, 0xaddd, 0xadde, 0xaddf, 0xade1, 0xade2, 0xade3, 0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea, 0xadeb, 0xadec, +0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1, 0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, 0xadfa, 0xadfb, 0xadfd, 0xadfe, +0xae02, 0xae03, 0xae04, 0xae05, 0xae06, 0xae07, 0xae0a, 0xae0c, 0xae0e, 0xae0f, 0xae10, 0xae11, 0xae12, 0xae13, 0xae15, +0xae16, 0xae17, 0xae18, 0xae19, 0xae1a, 0xae1b, 0xae1c, 0xae1d, 0xae1e, 0xae1f, 0xae20, 0xae21, 0xae22, 0xae23, 0xae24, +0xae25, 0xae26, 0xae27, 0xae28, 0xae29, 0xae2a, 0xae2b, 0xae2c, 0xae2d, 0xae2e, 0xae2f, 0xae32, 0xae33, 0xae35, 0xae36, +0xae39, 0xae3b, 0xae3c, 0xae3d, 0xae3e, 0xae3f, 0xae42, 0xae44, 0xae47, 0xae48, 0xae49, 0xae4b, 0xae4f, 0xae51, 0xae52, +0xae53, 0xae55, 0xae57, 0xae58, 0xae59, 0xae5a, 0xae5b, 0xae5e, 0xae62, 0xae63, 0xae64, 0xae66, 0xae67, 0xae6a, 0xae6b, +0xae6d, 0xae6e, 0xae6f, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76, 0xae77, 0xae7a, 0xae7e, 0xae7f, 0xae80, 0xae81, +0xae82, 0xae83, 0xae86, 0xae87, 0xae88, 0xae89, 0xae8a, 0xae8b, 0xae8d, 0xae8e, 0xae8f, 0xae90, 0xae91, 0xae92, 0xae93, +0xae94, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, 0xaea0, 0xaea1, 0xaea2, +0xaea3, 0xaea4, 0xaea5, 0xaea6, 0xaea7, 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae, 0xaeaf, 0xaeb0, 0xaeb1, +0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5, 0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0xaebf, 0xaec1, 0xaec2, 0xaec3, 0xaec5, +0xaec6, 0xaec7, 0xaec8, 0xaec9, 0xaeca, 0xaecb, 0xaece, 0xaed2, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, 0xaeda, 0xaedb, +0xaedd, 0xaede, 0xaedf, 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6, 0xaee7, 0xaee9, 0xaeea, 0xaeec, 0xaeee, +0xaeef, 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0xaef5, 0xaef6, 0xaef7, 0xaef9, 0xaefa, 0xaefb, 0xaefd, 0xaefe, 0xaeff, 0xaf00, +0xaf01, 0xaf02, 0xaf03, 0xaf04, 0xaf05, 0xaf06, 0xaf09, 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0e, 0xaf0f, 0xaf11, 0xaf12, 0xaf13, +0xaf14, 0xaf15, 0xaf16, 0xaf17, 0xaf18, 0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e, 0xaf1f, 0xaf20, 0xaf21, 0xaf22, +0xaf23, 0xaf24, 0xaf25, 0xaf26, 0xaf27, 0xaf28, 0xaf29, 0xaf2a, 0xaf2b, 0xaf2e, 0xaf2f, 0xaf31, 0xaf33, 0xaf35, 0xaf36, +0xaf37, 0xaf38, 0xaf39, 0xaf3a, 0xaf3b, 0xaf3e, 0xaf40, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, +0xaf4e, 0xaf4f, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5e, 0xaf5f, +0xaf60, 0xaf61, 0xaf62, 0xaf63, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, +0xaf71, 0xaf72, 0xaf73, 0xaf74, 0xaf75, 0xaf76, 0xaf77, 0xaf78, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf7f, 0xaf81, +0xaf82, 0xaf83, 0xaf85, 0xaf86, 0xaf87, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, 0xaf92, 0xaf93, 0xaf94, +0xaf96, 0xaf97, 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0xaf9d, 0xaf9e, 0xaf9f, 0xafa0, 0xafa1, 0xafa2, 0xafa3, 0xafa4, 0xafa5, +0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac, 0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1, 0xafb2, 0xafb3, 0xafb4, +0xafb5, 0xafb6, 0xafb7, 0xafba, 0xafbb, 0xafbd, 0xafbe, 0xafbf, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6, 0xafca, +0xafcc, 0xafcf, 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0xafd5, 0xafd6, 0xafd7, 0xafd8, 0xafd9, 0xafda, 0xafdb, 0xafdd, 0xafde, +0xafdf, 0xafe0, 0xafe1, 0xafe2, 0xafe3, 0xafe4, 0xafe5, 0xafe6, 0xafe7, 0xafea, 0xafeb, 0xafec, 0xafed, 0xafee, 0xafef, +0xaff2, 0xaff3, 0xaff5, 0xaff6, 0xaff7, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe, 0xafff, 0xb002, 0xb003, 0xb005, +0xb006, 0xb007, 0xb008, 0xb009, 0xb00a, 0xb00b, 0xb00d, 0xb00e, 0xb00f, 0xb011, 0xb012, 0xb013, 0xb015, 0xb016, 0xb017, +0xb018, 0xb019, 0xb01a, 0xb01b, 0xb01e, 0xb01f, 0xb020, 0xb021, 0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027, 0xb029, +0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e, 0xb02f, 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036, 0xb037, 0xb038, +0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d, 0xb03e, 0xb03f, 0xb040, 0xb041, 0xb042, 0xb043, 0xb046, 0xb047, 0xb049, 0xb04b, +0xb04d, 0xb04f, 0xb050, 0xb051, 0xb052, 0xb056, 0xb058, 0xb05a, 0xb05b, 0xb05c, 0xb05e, 0xb05f, 0xb060, 0xb061, 0xb062, +0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, 0xb070, 0xb071, +0xb072, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, 0xb078, 0xb079, 0xb07a, 0xb07b, 0xb07e, 0xb07f, 0xb081, 0xb082, 0xb083, +0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08e, 0xb090, 0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097, +0xb09b, 0xb09d, 0xb09e, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, 0xb0aa, 0xb0b0, 0xb0b2, 0xb0b6, 0xb0b7, 0xb0b9, 0xb0ba, +0xb0bb, 0xb0bd, 0xb0be, 0xb0bf, 0xb0c0, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c6, 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf, +0xb0d2, 0xb0d3, 0xb0d5, 0xb0d6, 0xb0d7, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de, 0xb0df, 0xb0e1, 0xb0e2, 0xb0e3, +0xb0e4, 0xb0e6, 0xb0e7, 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0, 0xb0f1, 0xb0f2, 0xb0f3, +0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, 0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb0fe, 0xb0ff, 0xb100, 0xb101, 0xb102, +0xb103, 0xb104, 0xb105, 0xb106, 0xb107, 0xb10a, 0xb10d, 0xb10e, 0xb10f, 0xb111, 0xb114, 0xb115, 0xb116, 0xb117, 0xb11a, +0xb11e, 0xb11f, 0xb120, 0xb121, 0xb122, 0xb126, 0xb127, 0xb129, 0xb12a, 0xb12b, 0xb12d, 0xb12e, 0xb12f, 0xb130, 0xb131, +0xb132, 0xb133, 0xb136, 0xb13a, 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f, 0xb142, 0xb143, 0xb145, 0xb146, 0xb147, 0xb149, +0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb152, 0xb153, 0xb156, 0xb157, 0xb159, 0xb15a, 0xb15b, 0xb15d, 0xb15e, +0xb15f, 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168, 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e, +0xb16f, 0xb170, 0xb171, 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0xb17a, 0xb17b, 0xb17d, 0xb17e, 0xb17f, 0xb181, +0xb183, 0xb184, 0xb185, 0xb186, 0xb187, 0xb18a, 0xb18c, 0xb18e, 0xb18f, 0xb190, 0xb191, 0xb195, 0xb196, 0xb197, 0xb199, +0xb19a, 0xb19b, 0xb19d, 0xb19e, 0xb19f, 0xb1a0, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a9, 0xb1aa, +0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, 0xb1b8, 0xb1b9, +0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf, 0xb1c0, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5, 0xb1c6, 0xb1c7, 0xb1c8, +0xb1c9, 0xb1ca, 0xb1cb, 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d1, 0xb1d2, 0xb1d3, 0xb1d5, 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da, +0xb1db, 0xb1de, 0xb1e0, 0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0xb1ea, 0xb1eb, 0xb1ed, 0xb1ee, 0xb1ef, +0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, 0xb1f8, 0xb1fa, 0xb1fc, 0xb1fe, 0xb1ff, 0xb200, 0xb201, 0xb202, +0xb203, 0xb206, 0xb207, 0xb209, 0xb20a, 0xb20d, 0xb20e, 0xb20f, 0xb210, 0xb211, 0xb212, 0xb213, 0xb216, 0xb218, 0xb21a, +0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f, 0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226, 0xb227, 0xb228, 0xb229, 0xb22a, +0xb22b, 0xb22c, 0xb22d, 0xb22e, 0xb22f, 0xb230, 0xb231, 0xb232, 0xb233, 0xb235, 0xb236, 0xb237, 0xb238, 0xb239, 0xb23a, +0xb23b, 0xb23d, 0xb23e, 0xb23f, 0xb240, 0xb241, 0xb242, 0xb243, 0xb244, 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a, +0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257, 0xb259, 0xb25a, +0xb25b, 0xb25d, 0xb25e, 0xb25f, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, 0xb26a, 0xb26b, 0xb26c, 0xb26d, +0xb26e, 0xb26f, 0xb270, 0xb271, 0xb272, 0xb273, 0xb276, 0xb277, 0xb278, 0xb279, 0xb27a, 0xb27b, 0xb27d, 0xb27e, 0xb27f, +0xb280, 0xb281, 0xb282, 0xb283, 0xb286, 0xb287, 0xb288, 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, 0xb292, 0xb293, +0xb295, 0xb296, 0xb297, 0xb29b, 0xb29c, 0xb29d, 0xb29e, 0xb29f, 0xb2a2, 0xb2a4, 0xb2a7, 0xb2a8, 0xb2a9, 0xb2ab, 0xb2ad, +0xb2ae, 0xb2af, 0xb2b1, 0xb2b2, 0xb2b3, 0xb2b5, 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2be, +0xb2bf, 0xb2c0, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, 0xb2ca, 0xb2cb, 0xb2cd, 0xb2ce, 0xb2cf, 0xb2d1, +0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6, 0xb2d7, 0xb2da, 0xb2dc, 0xb2de, 0xb2df, 0xb2e0, 0xb2e1, 0xb2e3, 0xb2e7, 0xb2e9, 0xb2ea, +0xb2f0, 0xb2f1, 0xb2f2, 0xb2f6, 0xb2fc, 0xb2fd, 0xb2fe, 0xb302, 0xb303, 0xb305, 0xb306, 0xb307, 0xb309, 0xb30a, 0xb30b, +0xb30c, 0xb30d, 0xb30e, 0xb30f, 0xb312, 0xb316, 0xb317, 0xb318, 0xb319, 0xb31a, 0xb31b, 0xb31d, 0xb31e, 0xb31f, 0xb320, +0xb321, 0xb322, 0xb323, 0xb324, 0xb325, 0xb326, 0xb327, 0xb328, 0xb329, 0xb32a, 0xb32b, 0xb32c, 0xb32d, 0xb32e, 0xb32f, +0xb330, 0xb331, 0xb332, 0xb333, 0xb334, 0xb335, 0xb336, 0xb337, 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e, +0xb33f, 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346, 0xb347, 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d, +0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, 0xb353, 0xb357, 0xb359, 0xb35a, 0xb35d, 0xb360, 0xb361, 0xb362, 0xb363, 0xb366, +0xb368, 0xb36a, 0xb36c, 0xb36d, 0xb36f, 0xb372, 0xb373, 0xb375, 0xb376, 0xb377, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d, +0xb37e, 0xb37f, 0xb382, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38d, 0xb38e, 0xb38f, 0xb391, 0xb392, 0xb393, +0xb395, 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, 0xb39e, 0xb39f, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, +0xb3a6, 0xb3a7, 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ad, 0xb3ae, 0xb3af, 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, +0xb3b7, 0xb3b8, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0xb3c6, 0xb3c7, +0xb3c9, 0xb3ca, 0xb3cd, 0xb3cf, 0xb3d1, 0xb3d2, 0xb3d3, 0xb3d6, 0xb3d8, 0xb3da, 0xb3dc, 0xb3de, 0xb3df, 0xb3e1, 0xb3e2, +0xb3e3, 0xb3e5, 0xb3e6, 0xb3e7, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee, 0xb3ef, 0xb3f0, 0xb3f1, 0xb3f2, 0xb3f3, +0xb3f4, 0xb3f5, 0xb3f6, 0xb3f7, 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0xb3fd, 0xb3fe, 0xb3ff, 0xb400, 0xb401, 0xb402, 0xb403, +0xb404, 0xb405, 0xb406, 0xb407, 0xb408, 0xb409, 0xb40a, 0xb40b, 0xb40c, 0xb40d, 0xb40e, 0xb40f, 0xb411, 0xb412, 0xb413, +0xb414, 0xb415, 0xb416, 0xb417, 0xb419, 0xb41a, 0xb41b, 0xb41d, 0xb41e, 0xb41f, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425, +0xb426, 0xb427, 0xb42a, 0xb42c, 0xb42d, 0xb42e, 0xb42f, 0xb430, 0xb431, 0xb432, 0xb433, 0xb435, 0xb436, 0xb437, 0xb438, +0xb439, 0xb43a, 0xb43b, 0xb43c, 0xb43d, 0xb43e, 0xb43f, 0xb440, 0xb441, 0xb442, 0xb443, 0xb444, 0xb445, 0xb446, 0xb447, +0xb448, 0xb449, 0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, 0xb452, 0xb453, 0xb455, 0xb456, 0xb457, 0xb459, 0xb45a, +0xb45b, 0xb45c, 0xb45d, 0xb45e, 0xb45f, 0xb462, 0xb464, 0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46d, 0xb46e, +0xb46f, 0xb470, 0xb471, 0xb472, 0xb473, 0xb474, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d, +0xb47e, 0xb47f, 0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e, +0xb48f, 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49e, +0xb49f, 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a5, 0xb4a6, 0xb4a7, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ad, 0xb4ae, 0xb4af, 0xb4b0, +0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xb4b6, 0xb4b8, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, 0xb4c1, 0xb4c2, 0xb4c3, +0xb4c5, 0xb4c6, 0xb4c7, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d6, +0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xb4de, 0xb4df, 0xb4e1, 0xb4e2, 0xb4e5, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb, +0xb4ee, 0xb4f0, 0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe, 0xb4ff, +0xb500, 0xb501, 0xb502, 0xb503, 0xb504, 0xb505, 0xb506, 0xb507, 0xb508, 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d, 0xb50e, +0xb50f, 0xb510, 0xb511, 0xb512, 0xb513, 0xb516, 0xb517, 0xb519, 0xb51a, 0xb51d, 0xb51e, 0xb51f, 0xb520, 0xb521, 0xb522, +0xb523, 0xb526, 0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f, 0xb532, 0xb533, 0xb535, 0xb536, 0xb537, 0xb539, 0xb53a, 0xb53b, +0xb53c, 0xb53d, 0xb53e, 0xb53f, 0xb542, 0xb546, 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54e, 0xb54f, 0xb551, 0xb552, 0xb553, +0xb555, 0xb556, 0xb557, 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55e, 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567, 0xb568, +0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xb56f, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576, 0xb577, +0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, 0xb57e, 0xb57f, 0xb580, 0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586, +0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, 0xb594, 0xb595, +0xb596, 0xb597, 0xb598, 0xb599, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, 0xb5a2, 0xb5a3, 0xb5a5, 0xb5a6, 0xb5a7, +0xb5a9, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af, 0xb5b2, 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5be, 0xb5bf, 0xb5c1, 0xb5c2, +0xb5c3, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, 0xb5c9, 0xb5ca, 0xb5cb, 0xb5ce, 0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, +0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de, 0xb5df, 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6, 0xb5e7, +0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ed, 0xb5ee, 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7, +0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff, 0xb600, 0xb601, 0xb602, 0xb603, 0xb604, 0xb605, 0xb606, +0xb607, 0xb608, 0xb609, 0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e, 0xb60f, 0xb612, 0xb613, 0xb615, 0xb616, 0xb617, 0xb619, +0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e, 0xb61f, 0xb620, 0xb621, 0xb622, 0xb623, 0xb624, 0xb626, 0xb627, 0xb628, 0xb629, +0xb62a, 0xb62b, 0xb62d, 0xb62e, 0xb62f, 0xb630, 0xb631, 0xb632, 0xb633, 0xb635, 0xb636, 0xb637, 0xb638, 0xb639, 0xb63a, +0xb63b, 0xb63c, 0xb63d, 0xb63e, 0xb63f, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0xb649, 0xb64a, +0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, +0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb65e, 0xb65f, 0xb660, 0xb661, 0xb662, 0xb663, 0xb665, 0xb666, 0xb667, 0xb669, 0xb66a, +0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb672, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, 0xb678, 0xb679, +0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f, 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688, +0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, 0xb690, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697, +0xb698, 0xb699, 0xb69a, 0xb69b, 0xb69e, 0xb69f, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa, +0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc, +0xb6bd, 0xb6be, 0xb6bf, 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8, 0xb6c9, 0xb6ca, 0xb6cb, +0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9, 0xb6da, 0xb6db, +0xb6dc, 0xb6dd, 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4, 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea, +0xb6eb, 0xb6ec, 0xb6ed, 0xb6ee, 0xb6ef, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f5, 0xb6f6, 0xb6f7, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, +0xb6fd, 0xb6fe, 0xb6ff, 0xb702, 0xb703, 0xb704, 0xb706, 0xb707, 0xb708, 0xb709, 0xb70a, 0xb70b, 0xb70c, 0xb70d, 0xb70e, +0xb70f, 0xb710, 0xb711, 0xb712, 0xb713, 0xb714, 0xb715, 0xb716, 0xb717, 0xb718, 0xb719, 0xb71a, 0xb71b, 0xb71c, 0xb71d, +0xb71e, 0xb71f, 0xb720, 0xb721, 0xb722, 0xb723, 0xb724, 0xb725, 0xb726, 0xb727, 0xb72a, 0xb72b, 0xb72d, 0xb72e, 0xb731, +0xb732, 0xb733, 0xb734, 0xb735, 0xb736, 0xb737, 0xb73a, 0xb73c, 0xb73d, 0xb73e, 0xb73f, 0xb740, 0xb741, 0xb742, 0xb743, +0xb745, 0xb746, 0xb747, 0xb749, 0xb74a, 0xb74b, 0xb74d, 0xb74e, 0xb74f, 0xb750, 0xb751, 0xb752, 0xb753, 0xb756, 0xb757, +0xb758, 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, 0xb761, 0xb762, 0xb763, 0xb765, 0xb766, 0xb767, 0xb769, +0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e, 0xb76f, 0xb772, 0xb774, 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77e, +0xb77f, 0xb781, 0xb782, 0xb783, 0xb785, 0xb786, 0xb787, 0xb788, 0xb789, 0xb78a, 0xb78b, 0xb78e, 0xb793, 0xb794, 0xb795, +0xb79a, 0xb79b, 0xb79d, 0xb79e, 0xb79f, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, 0xb7a7, 0xb7aa, 0xb7ae, 0xb7af, +0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0xb7b6, 0xb7b7, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, 0xb7c0, 0xb7c1, +0xb7c2, 0xb7c3, 0xb7c4, 0xb7c5, 0xb7c6, 0xb7c8, 0xb7ca, 0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, 0xb7d0, 0xb7d1, 0xb7d2, +0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6, 0xb7d7, 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de, 0xb7df, 0xb7e0, 0xb7e1, +0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, 0xb7e6, 0xb7e7, 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0xb7ee, 0xb7ef, 0xb7f1, 0xb7f2, 0xb7f3, +0xb7f5, 0xb7f6, 0xb7f7, 0xb7f8, 0xb7f9, 0xb7fa, 0xb7fb, 0xb7fe, 0xb802, 0xb803, 0xb804, 0xb805, 0xb806, 0xb80a, 0xb80b, +0xb80d, 0xb80e, 0xb80f, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816, 0xb817, 0xb81a, 0xb81c, 0xb81e, 0xb81f, 0xb820, +0xb821, 0xb822, 0xb823, 0xb826, 0xb827, 0xb829, 0xb82a, 0xb82b, 0xb82d, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb832, 0xb833, +0xb836, 0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f, 0xb841, 0xb842, 0xb843, 0xb845, 0xb846, 0xb847, 0xb848, 0xb849, +0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f, 0xb850, 0xb852, 0xb854, 0xb855, 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, +0xb85b, 0xb85e, 0xb85f, 0xb861, 0xb862, 0xb863, 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xb86b, 0xb86e, 0xb870, +0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0xb879, 0xb87a, 0xb87b, 0xb87d, 0xb87e, 0xb87f, 0xb880, 0xb881, 0xb882, +0xb883, 0xb884, 0xb885, 0xb886, 0xb887, 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb892, +0xb893, 0xb894, 0xb895, 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f, 0xb8a0, 0xb8a1, +0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0xb8b1, 0xb8b2, +0xb8b3, 0xb8b5, 0xb8b6, 0xb8b7, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be, 0xb8bf, 0xb8c2, 0xb8c4, 0xb8c6, 0xb8c7, +0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d1, 0xb8d2, 0xb8d3, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, +0xb8da, 0xb8db, 0xb8dc, 0xb8de, 0xb8e0, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0xb8ea, 0xb8eb, 0xb8ed, 0xb8ee, +0xb8ef, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8fa, 0xb8fc, 0xb8fe, 0xb8ff, 0xb900, 0xb901, 0xb902, +0xb903, 0xb905, 0xb906, 0xb907, 0xb908, 0xb909, 0xb90a, 0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f, 0xb910, 0xb911, 0xb912, +0xb913, 0xb914, 0xb915, 0xb916, 0xb917, 0xb919, 0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f, 0xb921, 0xb922, 0xb923, +0xb924, 0xb925, 0xb926, 0xb927, 0xb928, 0xb929, 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e, 0xb92f, 0xb930, 0xb931, 0xb932, +0xb933, 0xb934, 0xb935, 0xb936, 0xb937, 0xb938, 0xb939, 0xb93a, 0xb93b, 0xb93e, 0xb93f, 0xb941, 0xb942, 0xb943, 0xb945, +0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94d, 0xb94e, 0xb950, 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957, +0xb95a, 0xb95b, 0xb95d, 0xb95e, 0xb95f, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xb96a, 0xb96c, 0xb96e, +0xb96f, 0xb970, 0xb971, 0xb972, 0xb973, 0xb976, 0xb977, 0xb979, 0xb97a, 0xb97b, 0xb97d, 0xb97e, 0xb97f, 0xb980, 0xb981, +0xb982, 0xb983, 0xb986, 0xb988, 0xb98b, 0xb98c, 0xb98f, 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, 0xb997, +0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e, 0xb99f, 0xb9a0, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6, +0xb9a7, 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ae, 0xb9af, 0xb9b1, 0xb9b2, 0xb9b3, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9, +0xb9ba, 0xb9bb, 0xb9be, 0xb9c0, 0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, 0xb9ca, 0xb9cb, 0xb9cd, 0xb9d3, 0xb9d4, +0xb9d5, 0xb9d6, 0xb9d7, 0xb9da, 0xb9dc, 0xb9df, 0xb9e0, 0xb9e2, 0xb9e6, 0xb9e7, 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ed, 0xb9ee, +0xb9ef, 0xb9f0, 0xb9f1, 0xb9f2, 0xb9f3, 0xb9f6, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe, 0xb9ff, 0xba02, 0xba03, 0xba04, 0xba05, +0xba06, 0xba07, 0xba09, 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e, 0xba0f, 0xba10, 0xba11, 0xba12, 0xba13, 0xba14, 0xba16, +0xba17, 0xba18, 0xba19, 0xba1a, 0xba1b, 0xba1c, 0xba1d, 0xba1e, 0xba1f, 0xba20, 0xba21, 0xba22, 0xba23, 0xba24, 0xba25, +0xba26, 0xba27, 0xba28, 0xba29, 0xba2a, 0xba2b, 0xba2c, 0xba2d, 0xba2e, 0xba2f, 0xba30, 0xba31, 0xba32, 0xba33, 0xba34, +0xba35, 0xba36, 0xba37, 0xba3a, 0xba3b, 0xba3d, 0xba3e, 0xba3f, 0xba41, 0xba43, 0xba44, 0xba45, 0xba46, 0xba47, 0xba4a, +0xba4c, 0xba4f, 0xba50, 0xba51, 0xba52, 0xba56, 0xba57, 0xba59, 0xba5a, 0xba5b, 0xba5d, 0xba5e, 0xba5f, 0xba60, 0xba61, +0xba62, 0xba63, 0xba66, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba72, 0xba73, 0xba75, 0xba76, 0xba77, 0xba79, +0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e, 0xba7f, 0xba80, 0xba81, 0xba82, 0xba86, 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8d, +0xba8e, 0xba8f, 0xba90, 0xba91, 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c, +0xba9d, 0xba9e, 0xba9f, 0xbaa0, 0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaaa, 0xbaad, 0xbaae, 0xbaaf, +0xbab1, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7, 0xbaba, 0xbabc, 0xbabe, 0xbabf, 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0xbac5, +0xbac6, 0xbac7, 0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2, 0xbad3, 0xbad4, 0xbad5, +0xbad6, 0xbad7, 0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf, 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6, +0xbae7, 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, 0xbaf0, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5, +0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0xbafd, 0xbafe, 0xbaff, 0xbb01, 0xbb02, 0xbb03, 0xbb05, 0xbb06, 0xbb07, +0xbb08, 0xbb09, 0xbb0a, 0xbb0b, 0xbb0c, 0xbb0e, 0xbb10, 0xbb12, 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17, 0xbb19, 0xbb1a, +0xbb1b, 0xbb1d, 0xbb1e, 0xbb1f, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26, 0xbb27, 0xbb28, 0xbb2a, 0xbb2c, 0xbb2d, +0xbb2e, 0xbb2f, 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0xbb37, 0xbb39, 0xbb3a, 0xbb3f, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb46, +0xbb48, 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4e, 0xbb51, 0xbb52, 0xbb53, 0xbb55, 0xbb56, 0xbb57, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, +0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb62, 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0xbb6d, 0xbb6e, +0xbb6f, 0xbb70, 0xbb71, 0xbb72, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, +0xbb7e, 0xbb7f, 0xbb80, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8d, 0xbb8e, +0xbb8f, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96, 0xbb97, 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, 0xbb9e, +0xbb9f, 0xbba0, 0xbba1, 0xbba2, 0xbba3, 0xbba5, 0xbba6, 0xbba7, 0xbba9, 0xbbaa, 0xbbab, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0, +0xbbb1, 0xbbb2, 0xbbb3, 0xbbb5, 0xbbb6, 0xbbb8, 0xbbb9, 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0xbbc1, 0xbbc2, +0xbbc3, 0xbbc5, 0xbbc6, 0xbbc7, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce, 0xbbcf, 0xbbd1, 0xbbd2, 0xbbd4, 0xbbd5, +0xbbd6, 0xbbd7, 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2, 0xbbe3, 0xbbe4, +0xbbe5, 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec, 0xbbed, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3, +0xbbf4, 0xbbf5, 0xbbf6, 0xbbf7, 0xbbfa, 0xbbfb, 0xbbfd, 0xbbfe, 0xbc01, 0xbc03, 0xbc04, 0xbc05, 0xbc06, 0xbc07, 0xbc0a, +0xbc0e, 0xbc10, 0xbc12, 0xbc13, 0xbc19, 0xbc1a, 0xbc20, 0xbc21, 0xbc22, 0xbc23, 0xbc26, 0xbc28, 0xbc2a, 0xbc2b, 0xbc2c, +0xbc2e, 0xbc2f, 0xbc32, 0xbc33, 0xbc35, 0xbc36, 0xbc37, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e, 0xbc3f, 0xbc42, +0xbc46, 0xbc47, 0xbc48, 0xbc4a, 0xbc4b, 0xbc4e, 0xbc4f, 0xbc51, 0xbc52, 0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58, +0xbc59, 0xbc5a, 0xbc5b, 0xbc5c, 0xbc5e, 0xbc5f, 0xbc60, 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68, +0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77, +0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, 0xbc7e, 0xbc7f, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc86, 0xbc87, 0xbc89, +0xbc8a, 0xbc8d, 0xbc8f, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbc96, 0xbc98, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca2, +0xbca3, 0xbca5, 0xbca6, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae, 0xbcaf, 0xbcb2, 0xbcb6, 0xbcb7, 0xbcb8, 0xbcb9, +0xbcba, 0xbcbb, 0xbcbe, 0xbcbf, 0xbcc1, 0xbcc2, 0xbcc3, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca, 0xbccb, 0xbccc, +0xbcce, 0xbcd2, 0xbcd3, 0xbcd4, 0xbcd6, 0xbcd7, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdd, 0xbcde, 0xbcdf, 0xbce0, 0xbce1, 0xbce2, +0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7, 0xbce8, 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1, +0xbcf2, 0xbcf3, 0xbcf7, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfd, 0xbcfe, 0xbcff, 0xbd00, 0xbd01, 0xbd02, 0xbd03, 0xbd06, 0xbd08, +0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f, 0xbd11, 0xbd12, 0xbd13, 0xbd15, 0xbd16, 0xbd17, 0xbd18, 0xbd19, 0xbd1a, +0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e, 0xbd1f, 0xbd20, 0xbd21, 0xbd22, 0xbd23, 0xbd25, 0xbd26, 0xbd27, 0xbd28, 0xbd29, 0xbd2a, +0xbd2b, 0xbd2d, 0xbd2e, 0xbd2f, 0xbd30, 0xbd31, 0xbd32, 0xbd33, 0xbd34, 0xbd35, 0xbd36, 0xbd37, 0xbd38, 0xbd39, 0xbd3a, +0xbd3b, 0xbd3c, 0xbd3d, 0xbd3e, 0xbd3f, 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd4a, 0xbd4b, 0xbd4d, +0xbd4e, 0xbd4f, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f, +0xbd60, 0xbd61, 0xbd62, 0xbd63, 0xbd65, 0xbd66, 0xbd67, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, +0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f, +0xbd82, 0xbd83, 0xbd85, 0xbd86, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd92, 0xbd94, 0xbd96, 0xbd97, 0xbd98, 0xbd9b, +0xbd9d, 0xbd9e, 0xbd9f, 0xbda0, 0xbda1, 0xbda2, 0xbda3, 0xbda5, 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac, +0xbdad, 0xbdae, 0xbdaf, 0xbdb1, 0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd, +0xbdbe, 0xbdbf, 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, 0xbdc8, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, +0xbdcd, 0xbdce, 0xbdcf, 0xbdd0, 0xbdd1, 0xbdd2, 0xbdd3, 0xbdd6, 0xbdd7, 0xbdd9, 0xbdda, 0xbddb, 0xbddd, 0xbdde, 0xbddf, +0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4, 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee, 0xbdef, +0xbdf1, 0xbdf2, 0xbdf3, 0xbdf5, 0xbdf6, 0xbdf7, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbdff, 0xbe01, 0xbe02, +0xbe04, 0xbe06, 0xbe07, 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0xbe0e, 0xbe0f, 0xbe11, 0xbe12, 0xbe13, 0xbe15, 0xbe16, 0xbe17, +0xbe18, 0xbe19, 0xbe1a, 0xbe1b, 0xbe1e, 0xbe20, 0xbe21, 0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27, 0xbe28, 0xbe29, +0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e, 0xbe2f, 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36, 0xbe37, 0xbe38, +0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d, 0xbe3e, 0xbe3f, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe46, 0xbe47, 0xbe49, 0xbe4a, +0xbe4b, 0xbe4d, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xbe56, 0xbe58, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, 0xbe62, 0xbe63, +0xbe65, 0xbe66, 0xbe67, 0xbe69, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e, 0xbe6f, 0xbe72, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, +0xbe7e, 0xbe7f, 0xbe81, 0xbe82, 0xbe83, 0xbe85, 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8e, 0xbe92, 0xbe93, +0xbe94, 0xbe95, 0xbe96, 0xbe97, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f, 0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4, +0xbea5, 0xbea6, 0xbea7, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0xbeb4, +0xbeb5, 0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, 0xbec0, 0xbec1, 0xbec2, 0xbec3, +0xbec4, 0xbec5, 0xbec6, 0xbec7, 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, 0xbed2, 0xbed3, 0xbed5, +0xbed6, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, 0xbedf, 0xbee1, 0xbee2, 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea, +0xbeeb, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2, 0xbef3, 0xbef4, 0xbef5, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa, +0xbefb, 0xbefc, 0xbefd, 0xbefe, 0xbeff, 0xbf00, 0xbf02, 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, 0xbf0a, 0xbf0b, 0xbf0c, +0xbf0d, 0xbf0e, 0xbf0f, 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16, 0xbf17, 0xbf1a, 0xbf1e, 0xbf1f, 0xbf20, +0xbf21, 0xbf22, 0xbf23, 0xbf24, 0xbf25, 0xbf26, 0xbf27, 0xbf28, 0xbf29, 0xbf2a, 0xbf2b, 0xbf2c, 0xbf2d, 0xbf2e, 0xbf2f, +0xbf30, 0xbf31, 0xbf32, 0xbf33, 0xbf34, 0xbf35, 0xbf36, 0xbf37, 0xbf38, 0xbf39, 0xbf3a, 0xbf3b, 0xbf3c, 0xbf3d, 0xbf3e, +0xbf3f, 0xbf42, 0xbf43, 0xbf45, 0xbf46, 0xbf47, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf52, 0xbf53, +0xbf54, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63, +0xbf64, 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72, +0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e, 0xbf7f, 0xbf80, 0xbf81, +0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, 0xbf88, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90, +0xbf91, 0xbf92, 0xbf93, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, +0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf, +0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6, 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe, 0xbfbf, +0xbfc0, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc6, 0xbfc7, 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0xbfce, 0xbfcf, 0xbfd1, 0xbfd2, +0xbfd3, 0xbfd5, 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdd, 0xbfde, 0xbfe0, 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5, +0xbfe6, 0xbfe7, 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef, 0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4, +0xbff5, 0xbff6, 0xbff7, 0xbff8, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xbfff, 0xc000, 0xc001, 0xc002, 0xc003, +0xc004, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009, 0xc00a, 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc012, +0xc013, 0xc014, 0xc015, 0xc016, 0xc017, 0xc018, 0xc019, 0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f, 0xc020, 0xc021, +0xc022, 0xc023, 0xc024, 0xc025, 0xc026, 0xc027, 0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e, 0xc02f, 0xc030, +0xc031, 0xc032, 0xc033, 0xc034, 0xc035, 0xc036, 0xc037, 0xc038, 0xc039, 0xc03a, 0xc03b, 0xc03d, 0xc03e, 0xc03f, 0xc040, +0xc041, 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f, +0xc050, 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xc059, 0xc05a, 0xc05b, 0xc05d, 0xc05e, 0xc05f, 0xc061, 0xc062, +0xc063, 0xc064, 0xc065, 0xc066, 0xc067, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, 0xc071, 0xc072, 0xc073, +0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f, 0xc080, 0xc081, 0xc082, +0xc083, 0xc084, 0xc085, 0xc086, 0xc087, 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, 0xc092, 0xc093, +0xc095, 0xc096, 0xc097, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, 0xc09f, 0xc0a2, 0xc0a4, 0xc0a6, 0xc0a7, 0xc0a8, +0xc0a9, 0xc0aa, 0xc0ab, 0xc0ae, 0xc0b1, 0xc0b2, 0xc0b7, 0xc0b8, 0xc0b9, 0xc0ba, 0xc0bb, 0xc0be, 0xc0c2, 0xc0c3, 0xc0c4, +0xc0c6, 0xc0c7, 0xc0ca, 0xc0cb, 0xc0cd, 0xc0ce, 0xc0cf, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7, 0xc0da, +0xc0de, 0xc0df, 0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0xc0e6, 0xc0e7, 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0, +0xc0f1, 0xc0f2, 0xc0f3, 0xc0f6, 0xc0f8, 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff, 0xc101, 0xc102, 0xc103, 0xc105, +0xc106, 0xc107, 0xc109, 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e, 0xc10f, 0xc111, 0xc112, 0xc113, 0xc114, 0xc116, 0xc117, +0xc118, 0xc119, 0xc11a, 0xc11b, 0xc121, 0xc122, 0xc125, 0xc128, 0xc129, 0xc12a, 0xc12b, 0xc12e, 0xc132, 0xc133, 0xc134, +0xc135, 0xc137, 0xc13a, 0xc13b, 0xc13d, 0xc13e, 0xc13f, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146, 0xc147, 0xc14a, +0xc14e, 0xc14f, 0xc150, 0xc151, 0xc152, 0xc153, 0xc156, 0xc157, 0xc159, 0xc15a, 0xc15b, 0xc15d, 0xc15e, 0xc15f, 0xc160, +0xc161, 0xc162, 0xc163, 0xc166, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0xc171, 0xc172, 0xc173, 0xc175, 0xc176, +0xc177, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e, 0xc17f, 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, 0xc186, 0xc187, +0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18f, 0xc191, 0xc192, 0xc193, 0xc195, 0xc197, 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19e, +0xc1a0, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a6, 0xc1a7, 0xc1aa, 0xc1ab, 0xc1ad, 0xc1ae, 0xc1af, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4, +0xc1b5, 0xc1b6, 0xc1b7, 0xc1b8, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1be, 0xc1bf, 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3, 0xc1c5, +0xc1c6, 0xc1c7, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d5, 0xc1d6, 0xc1d9, +0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e9, 0xc1ea, 0xc1eb, +0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, 0xc1f2, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xc1fe, 0xc1ff, +0xc201, 0xc202, 0xc203, 0xc205, 0xc206, 0xc207, 0xc208, 0xc209, 0xc20a, 0xc20b, 0xc20e, 0xc210, 0xc212, 0xc213, 0xc214, +0xc215, 0xc216, 0xc217, 0xc21a, 0xc21b, 0xc21d, 0xc21e, 0xc221, 0xc222, 0xc223, 0xc224, 0xc225, 0xc226, 0xc227, 0xc22a, +0xc22c, 0xc22e, 0xc230, 0xc233, 0xc235, 0xc236, 0xc237, 0xc238, 0xc239, 0xc23a, 0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f, +0xc240, 0xc241, 0xc242, 0xc243, 0xc244, 0xc245, 0xc246, 0xc247, 0xc249, 0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f, +0xc252, 0xc253, 0xc255, 0xc256, 0xc257, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, 0xc25f, 0xc261, 0xc262, 0xc263, +0xc264, 0xc266, 0xc267, 0xc268, 0xc269, 0xc26a, 0xc26b, 0xc26e, 0xc26f, 0xc271, 0xc272, 0xc273, 0xc275, 0xc276, 0xc277, +0xc278, 0xc279, 0xc27a, 0xc27b, 0xc27e, 0xc280, 0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, 0xc28a, 0xc28b, 0xc28c, +0xc28d, 0xc28e, 0xc28f, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, 0xc297, 0xc299, 0xc29a, 0xc29c, 0xc29e, 0xc29f, +0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a6, 0xc2a7, 0xc2a9, 0xc2aa, 0xc2ab, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b2, 0xc2b3, +0xc2b6, 0xc2b8, 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf, 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6, +0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5, +0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2de, 0xc2df, 0xc2e1, 0xc2e2, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9, +0xc2ea, 0xc2ee, 0xc2f0, 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f7, 0xc2fa, 0xc2fd, 0xc2fe, 0xc2ff, 0xc301, 0xc302, 0xc303, +0xc304, 0xc305, 0xc306, 0xc307, 0xc30a, 0xc30b, 0xc30e, 0xc30f, 0xc310, 0xc311, 0xc312, 0xc316, 0xc317, 0xc319, 0xc31a, +0xc31b, 0xc31d, 0xc31e, 0xc31f, 0xc320, 0xc321, 0xc322, 0xc323, 0xc326, 0xc327, 0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e, +0xc32f, 0xc330, 0xc331, 0xc332, 0xc333, 0xc334, 0xc335, 0xc336, 0xc337, 0xc338, 0xc339, 0xc33a, 0xc33b, 0xc33c, 0xc33d, +0xc33e, 0xc33f, 0xc340, 0xc341, 0xc342, 0xc343, 0xc344, 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c, 0xc34d, +0xc34e, 0xc34f, 0xc350, 0xc351, 0xc352, 0xc353, 0xc354, 0xc355, 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c, +0xc35d, 0xc35e, 0xc35f, 0xc360, 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0xc36a, 0xc36b, 0xc36d, 0xc36e, +0xc36f, 0xc371, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc37a, 0xc37b, 0xc37e, 0xc37f, 0xc380, 0xc381, 0xc382, 0xc383, +0xc385, 0xc386, 0xc387, 0xc389, 0xc38a, 0xc38b, 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc392, 0xc393, 0xc394, 0xc395, +0xc396, 0xc397, 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, +0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, 0xc3b0, 0xc3b1, 0xc3b2, 0xc3b3, +0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, 0xc3c1, 0xc3c2, 0xc3c3, +0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9, 0xc3ca, 0xc3cb, 0xc3cc, 0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1, 0xc3d2, +0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7, 0xc3da, 0xc3db, 0xc3dd, 0xc3de, 0xc3e1, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, 0xc3e7, +0xc3ea, 0xc3eb, 0xc3ec, 0xc3ee, 0xc3ef, 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0xc3f6, 0xc3f7, 0xc3f9, 0xc3fa, 0xc3fb, 0xc3fc, +0xc3fd, 0xc3fe, 0xc3ff, 0xc400, 0xc401, 0xc402, 0xc403, 0xc404, 0xc405, 0xc406, 0xc407, 0xc409, 0xc40a, 0xc40b, 0xc40c, +0xc40d, 0xc40e, 0xc40f, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416, 0xc417, 0xc418, 0xc419, 0xc41a, 0xc41b, 0xc41c, +0xc41d, 0xc41e, 0xc41f, 0xc420, 0xc421, 0xc422, 0xc423, 0xc425, 0xc426, 0xc427, 0xc428, 0xc429, 0xc42a, 0xc42b, 0xc42d, +0xc42e, 0xc42f, 0xc431, 0xc432, 0xc433, 0xc435, 0xc436, 0xc437, 0xc438, 0xc439, 0xc43a, 0xc43b, 0xc43e, 0xc43f, 0xc440, +0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, 0xc44f, 0xc450, +0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, 0xc457, 0xc458, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, 0xc45e, 0xc45f, +0xc460, 0xc461, 0xc462, 0xc463, 0xc466, 0xc467, 0xc469, 0xc46a, 0xc46b, 0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc472, +0xc473, 0xc476, 0xc477, 0xc478, 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485, +0xc486, 0xc487, 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, 0xc490, 0xc491, 0xc492, 0xc493, 0xc495, +0xc496, 0xc497, 0xc498, 0xc499, 0xc49a, 0xc49b, 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, 0xc4a5, +0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac, 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4, +0xc4b5, 0xc4b6, 0xc4b7, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bd, 0xc4be, 0xc4bf, 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, +0xc4c6, 0xc4c7, 0xc4c8, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0xc4d4, +0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, 0xc4dc, 0xc4dd, 0xc4de, 0xc4df, 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3, +0xc4e4, 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, 0xc4f2, 0xc4f3, 0xc4f5, 0xc4f6, +0xc4f7, 0xc4f9, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, 0xc502, 0xc503, 0xc504, 0xc505, 0xc506, 0xc507, 0xc508, 0xc509, 0xc50a, +0xc50b, 0xc50d, 0xc50e, 0xc50f, 0xc511, 0xc512, 0xc513, 0xc515, 0xc516, 0xc517, 0xc518, 0xc519, 0xc51a, 0xc51b, 0xc51d, +0xc51e, 0xc51f, 0xc520, 0xc521, 0xc522, 0xc523, 0xc524, 0xc525, 0xc526, 0xc527, 0xc52a, 0xc52b, 0xc52d, 0xc52e, 0xc52f, +0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536, 0xc537, 0xc53a, 0xc53c, 0xc53e, 0xc53f, 0xc540, 0xc541, 0xc542, 0xc543, +0xc546, 0xc547, 0xc54b, 0xc54f, 0xc550, 0xc551, 0xc552, 0xc556, 0xc55a, 0xc55b, 0xc55c, 0xc55f, 0xc562, 0xc563, 0xc565, +0xc566, 0xc567, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, 0xc56f, 0xc572, 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a, +0xc57b, 0xc57e, 0xc57f, 0xc581, 0xc582, 0xc583, 0xc585, 0xc586, 0xc588, 0xc589, 0xc58a, 0xc58b, 0xc58e, 0xc590, 0xc592, +0xc593, 0xc594, 0xc596, 0xc599, 0xc59a, 0xc59b, 0xc59d, 0xc59e, 0xc59f, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6, +0xc5a7, 0xc5a8, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af, 0xc5b0, 0xc5b1, 0xc5b2, 0xc5b3, 0xc5b6, 0xc5b7, 0xc5ba, +0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3, 0xc5cb, 0xc5cd, 0xc5cf, 0xc5d2, 0xc5d3, 0xc5d5, 0xc5d6, 0xc5d7, 0xc5d9, 0xc5da, +0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df, 0xc5e2, 0xc5e4, 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ef, 0xc5f1, +0xc5f2, 0xc5f3, 0xc5f5, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc602, 0xc603, 0xc604, 0xc609, 0xc60a, 0xc60b, 0xc60d, 0xc60e, +0xc60f, 0xc611, 0xc612, 0xc613, 0xc614, 0xc615, 0xc616, 0xc617, 0xc61a, 0xc61d, 0xc61e, 0xc61f, 0xc620, 0xc621, 0xc622, +0xc623, 0xc626, 0xc627, 0xc629, 0xc62a, 0xc62b, 0xc62f, 0xc631, 0xc632, 0xc636, 0xc638, 0xc63a, 0xc63c, 0xc63d, 0xc63e, +0xc63f, 0xc642, 0xc643, 0xc645, 0xc646, 0xc647, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, 0xc652, 0xc656, +0xc657, 0xc658, 0xc659, 0xc65a, 0xc65b, 0xc65e, 0xc65f, 0xc661, 0xc662, 0xc663, 0xc664, 0xc665, 0xc666, 0xc667, 0xc668, +0xc669, 0xc66a, 0xc66b, 0xc66d, 0xc66e, 0xc670, 0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, 0xc67a, 0xc67b, 0xc67d, +0xc67e, 0xc67f, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, 0xc68a, 0xc68c, 0xc68e, 0xc68f, 0xc690, 0xc691, +0xc692, 0xc693, 0xc696, 0xc697, 0xc699, 0xc69a, 0xc69b, 0xc69d, 0xc69e, 0xc69f, 0xc6a0, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a6, +0xc6a8, 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b2, 0xc6b3, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6bb, 0xc6bc, 0xc6bd, +0xc6be, 0xc6bf, 0xc6c2, 0xc6c4, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0xc6ce, 0xc6cf, 0xc6d1, 0xc6d2, 0xc6d3, +0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6de, 0xc6df, 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, +0xc6ea, 0xc6eb, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6fa, 0xc6fb, 0xc6fc, +0xc6fe, 0xc6ff, 0xc700, 0xc701, 0xc702, 0xc703, 0xc706, 0xc707, 0xc709, 0xc70a, 0xc70b, 0xc70d, 0xc70e, 0xc70f, 0xc710, +0xc711, 0xc712, 0xc713, 0xc716, 0xc718, 0xc71a, 0xc71b, 0xc71c, 0xc71d, 0xc71e, 0xc71f, 0xc722, 0xc723, 0xc725, 0xc726, +0xc727, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e, 0xc72f, 0xc732, 0xc734, 0xc736, 0xc738, 0xc739, 0xc73a, 0xc73b, +0xc73e, 0xc73f, 0xc741, 0xc742, 0xc743, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74b, 0xc74e, 0xc750, 0xc759, 0xc75a, +0xc75b, 0xc75d, 0xc75e, 0xc75f, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc769, 0xc76a, 0xc76c, 0xc76d, +0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc776, 0xc777, 0xc779, 0xc77a, 0xc77b, 0xc77f, 0xc780, 0xc781, 0xc782, +0xc786, 0xc78b, 0xc78c, 0xc78d, 0xc78f, 0xc792, 0xc793, 0xc795, 0xc799, 0xc79b, 0xc79c, 0xc79d, 0xc79e, 0xc79f, 0xc7a2, +0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ae, 0xc7af, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, +0xc7ba, 0xc7bb, 0xc7be, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7ca, 0xc7cb, 0xc7cd, 0xc7cf, 0xc7d1, 0xc7d2, +0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, +0xc7e5, 0xc7e6, 0xc7e7, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, +0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff, 0xc802, 0xc803, 0xc805, 0xc806, 0xc807, +0xc809, 0xc80b, 0xc80c, 0xc80d, 0xc80e, 0xc80f, 0xc812, 0xc814, 0xc817, 0xc818, 0xc819, 0xc81a, 0xc81b, 0xc81e, 0xc81f, +0xc821, 0xc822, 0xc823, 0xc825, 0xc826, 0xc827, 0xc828, 0xc829, 0xc82a, 0xc82b, 0xc82e, 0xc830, 0xc832, 0xc833, 0xc834, +0xc835, 0xc836, 0xc837, 0xc839, 0xc83a, 0xc83b, 0xc83d, 0xc83e, 0xc83f, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, +0xc847, 0xc84a, 0xc84b, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a, +0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, +0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc872, 0xc873, 0xc875, 0xc876, 0xc877, 0xc879, 0xc87b, 0xc87c, 0xc87d, +0xc87e, 0xc87f, 0xc882, 0xc884, 0xc888, 0xc889, 0xc88a, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc892, 0xc893, 0xc895, 0xc896, +0xc897, 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89e, 0xc8a0, 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a9, +0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8, +0xc8b9, 0xc8ba, 0xc8bb, 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c9, 0xc8ca, 0xc8cb, +0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3, 0xc8d6, 0xc8d8, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, +0xc8e2, 0xc8e3, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1, +0xc8f2, 0xc8f3, 0xc8f4, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xc8fe, 0xc8ff, 0xc901, 0xc902, 0xc903, 0xc907, +0xc908, 0xc909, 0xc90a, 0xc90b, 0xc90e, 0xc910, 0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917, 0xc919, 0xc91a, 0xc91b, +0xc91c, 0xc91d, 0xc91e, 0xc91f, 0xc920, 0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926, 0xc927, 0xc928, 0xc929, 0xc92a, +0xc92b, 0xc92d, 0xc92e, 0xc92f, 0xc930, 0xc931, 0xc932, 0xc933, 0xc935, 0xc936, 0xc937, 0xc938, 0xc939, 0xc93a, 0xc93b, +0xc93c, 0xc93d, 0xc93e, 0xc93f, 0xc940, 0xc941, 0xc942, 0xc943, 0xc944, 0xc945, 0xc946, 0xc947, 0xc948, 0xc949, 0xc94a, +0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0xc952, 0xc953, 0xc955, 0xc956, 0xc957, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d, +0xc95e, 0xc95f, 0xc962, 0xc964, 0xc965, 0xc966, 0xc967, 0xc968, 0xc969, 0xc96a, 0xc96b, 0xc96d, 0xc96e, 0xc96f, 0xc971, +0xc972, 0xc973, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, 0xc97a, 0xc97b, 0xc97d, 0xc97e, 0xc97f, 0xc980, 0xc981, 0xc982, +0xc983, 0xc984, 0xc985, 0xc986, 0xc987, 0xc98a, 0xc98b, 0xc98d, 0xc98e, 0xc98f, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, +0xc996, 0xc997, 0xc99a, 0xc99c, 0xc99e, 0xc99f, 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8, +0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4, 0xc9b5, 0xc9b6, 0xc9b7, +0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be, 0xc9bf, 0xc9c2, 0xc9c3, 0xc9c5, 0xc9c6, 0xc9c9, 0xc9cb, 0xc9cc, +0xc9cd, 0xc9ce, 0xc9cf, 0xc9d2, 0xc9d4, 0xc9d7, 0xc9d8, 0xc9db, 0xc9de, 0xc9df, 0xc9e1, 0xc9e3, 0xc9e5, 0xc9e6, 0xc9e8, +0xc9e9, 0xc9ea, 0xc9eb, 0xc9ee, 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0xc9fa, 0xc9fb, 0xc9fd, 0xc9fe, 0xc9ff, +0xca01, 0xca02, 0xca03, 0xca04, 0xca05, 0xca06, 0xca07, 0xca0a, 0xca0e, 0xca0f, 0xca10, 0xca11, 0xca12, 0xca13, 0xca15, +0xca16, 0xca17, 0xca19, 0xca1a, 0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f, 0xca20, 0xca21, 0xca22, 0xca23, 0xca24, 0xca25, +0xca26, 0xca27, 0xca28, 0xca2a, 0xca2b, 0xca2c, 0xca2d, 0xca2e, 0xca2f, 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35, +0xca36, 0xca37, 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e, 0xca3f, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44, +0xca45, 0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4e, 0xca4f, 0xca51, 0xca52, 0xca53, 0xca55, 0xca56, 0xca57, +0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5e, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0xca69, 0xca6a, 0xca6b, 0xca6c, +0xca6d, 0xca6e, 0xca6f, 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, 0xca79, 0xca7a, 0xca7b, +0xca7c, 0xca7e, 0xca7f, 0xca80, 0xca81, 0xca82, 0xca83, 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c, +0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, 0xca95, 0xca96, 0xca97, 0xca99, 0xca9a, 0xca9b, 0xca9c, +0xca9d, 0xca9e, 0xca9f, 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7, 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab, +0xcaac, 0xcaad, 0xcaae, 0xcaaf, 0xcab0, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, 0xcab8, 0xcab9, 0xcaba, +0xcabb, 0xcabe, 0xcabf, 0xcac1, 0xcac2, 0xcac3, 0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcace, 0xcad0, +0xcad2, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, 0xcadf, 0xcae1, 0xcae2, 0xcae3, 0xcae4, +0xcae5, 0xcae6, 0xcae7, 0xcae8, 0xcae9, 0xcaea, 0xcaeb, 0xcaed, 0xcaee, 0xcaef, 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0xcaf5, +0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff, 0xcb00, 0xcb01, 0xcb02, 0xcb03, 0xcb04, +0xcb05, 0xcb06, 0xcb07, 0xcb09, 0xcb0a, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f, 0xcb11, 0xcb12, 0xcb13, 0xcb15, 0xcb16, +0xcb17, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e, 0xcb1f, 0xcb22, 0xcb23, 0xcb24, 0xcb25, 0xcb26, 0xcb27, 0xcb28, +0xcb29, 0xcb2a, 0xcb2b, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, 0xcb30, 0xcb31, 0xcb32, 0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37, +0xcb38, 0xcb39, 0xcb3a, 0xcb3b, 0xcb3c, 0xcb3d, 0xcb3e, 0xcb3f, 0xcb40, 0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, +0xcb4a, 0xcb4b, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, 0xcb57, 0xcb5a, 0xcb5b, 0xcb5c, +0xcb5e, 0xcb5f, 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, +0xcb6e, 0xcb6f, 0xcb70, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77, 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e, +0xcb7f, 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, +0xcb8e, 0xcb8f, 0xcb90, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9d, +0xcb9e, 0xcb9f, 0xcba0, 0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa, 0xcbab, 0xcbac, +0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1, 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc, +0xcbbd, 0xcbbe, 0xcbbf, 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, 0xcbc7, 0xcbc8, 0xcbc9, 0xcbca, 0xcbcb, +0xcbcc, 0xcbcd, 0xcbce, 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb, +0xcbdc, 0xcbdd, 0xcbde, 0xcbdf, 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, 0xcbe5, 0xcbe6, 0xcbe8, 0xcbea, 0xcbeb, 0xcbec, 0xcbed, +0xcbee, 0xcbef, 0xcbf0, 0xcbf1, 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7, 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc, +0xcbfd, 0xcbfe, 0xcbff, 0xcc00, 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05, 0xcc06, 0xcc07, 0xcc08, 0xcc09, 0xcc0a, 0xcc0b, +0xcc0e, 0xcc0f, 0xcc11, 0xcc12, 0xcc13, 0xcc15, 0xcc16, 0xcc17, 0xcc18, 0xcc19, 0xcc1a, 0xcc1b, 0xcc1e, 0xcc1f, 0xcc20, +0xcc23, 0xcc24, 0xcc25, 0xcc26, 0xcc2a, 0xcc2b, 0xcc2d, 0xcc2f, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36, 0xcc37, +0xcc3a, 0xcc3f, 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0xcc46, 0xcc47, 0xcc49, 0xcc4a, 0xcc4b, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50, +0xcc51, 0xcc52, 0xcc53, 0xcc56, 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc61, 0xcc62, 0xcc63, 0xcc65, 0xcc67, +0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc76, 0xcc77, 0xcc78, 0xcc79, +0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88, +0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, 0xcc91, 0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97, +0xcc9a, 0xcc9b, 0xcc9d, 0xcc9e, 0xcc9f, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, 0xcca7, 0xccaa, 0xccae, 0xccaf, +0xccb0, 0xccb1, 0xccb2, 0xccb3, 0xccb6, 0xccb7, 0xccb9, 0xccba, 0xccbb, 0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1, 0xccc2, +0xccc3, 0xccc6, 0xccc8, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0xccd1, 0xccd2, 0xccd3, 0xccd5, 0xccd6, 0xccd7, +0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf, 0xcce0, 0xcce1, 0xcce2, 0xcce3, 0xcce5, 0xcce6, 0xcce7, +0xcce8, 0xcce9, 0xccea, 0xcceb, 0xcced, 0xccee, 0xccef, 0xccf1, 0xccf2, 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, 0xccf8, +0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, 0xccfe, 0xccff, 0xcd00, 0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, 0xcd07, 0xcd0a, +0xcd0b, 0xcd0d, 0xcd0e, 0xcd0f, 0xcd11, 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16, 0xcd17, 0xcd1a, 0xcd1c, 0xcd1e, 0xcd1f, +0xcd20, 0xcd21, 0xcd22, 0xcd23, 0xcd25, 0xcd26, 0xcd27, 0xcd29, 0xcd2a, 0xcd2b, 0xcd2d, 0xcd2e, 0xcd2f, 0xcd30, 0xcd31, +0xcd32, 0xcd33, 0xcd34, 0xcd35, 0xcd36, 0xcd37, 0xcd38, 0xcd3a, 0xcd3b, 0xcd3c, 0xcd3d, 0xcd3e, 0xcd3f, 0xcd40, 0xcd41, +0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, 0xcd50, +0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0xcd5d, 0xcd5e, 0xcd5f, 0xcd61, +0xcd62, 0xcd63, 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6e, 0xcd70, 0xcd72, 0xcd73, 0xcd74, 0xcd75, +0xcd76, 0xcd77, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, 0xcd7f, 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, +0xcd86, 0xcd87, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xcd96, 0xcd97, +0xcd99, 0xcd9a, 0xcd9b, 0xcd9d, 0xcd9e, 0xcd9f, 0xcda0, 0xcda1, 0xcda2, 0xcda3, 0xcda6, 0xcda8, 0xcdaa, 0xcdab, 0xcdac, +0xcdad, 0xcdae, 0xcdaf, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, +0xcdbd, 0xcdbe, 0xcdbf, 0xcdc0, 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc5, 0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcd, +0xcdce, 0xcdcf, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd, +0xcdde, 0xcddf, 0xcde0, 0xcde1, 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0xcde9, 0xcdea, 0xcdeb, 0xcded, 0xcdee, +0xcdef, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6, 0xcdf7, 0xcdfa, 0xcdfc, 0xcdfe, 0xcdff, 0xce00, 0xce01, 0xce02, +0xce03, 0xce05, 0xce06, 0xce07, 0xce09, 0xce0a, 0xce0b, 0xce0d, 0xce0e, 0xce0f, 0xce10, 0xce11, 0xce12, 0xce13, 0xce15, +0xce16, 0xce17, 0xce18, 0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f, 0xce22, 0xce23, 0xce25, 0xce26, 0xce27, 0xce29, +0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e, 0xce2f, 0xce32, 0xce34, 0xce36, 0xce37, 0xce38, 0xce39, 0xce3a, 0xce3b, 0xce3c, +0xce3d, 0xce3e, 0xce3f, 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48, 0xce49, 0xce4a, 0xce4b, +0xce4c, 0xce4d, 0xce4e, 0xce4f, 0xce50, 0xce51, 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0xce5a, 0xce5b, 0xce5d, +0xce5e, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, 0xce67, 0xce6a, 0xce6c, 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce72, 0xce73, +0xce76, 0xce77, 0xce79, 0xce7a, 0xce7b, 0xce7d, 0xce7e, 0xce7f, 0xce80, 0xce81, 0xce82, 0xce83, 0xce86, 0xce88, 0xce8a, +0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0xce92, 0xce93, 0xce95, 0xce96, 0xce97, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d, +0xce9e, 0xce9f, 0xcea2, 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2, 0xceb3, +0xceb4, 0xceb5, 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, 0xcebe, 0xcebf, 0xcec0, 0xcec2, 0xcec3, +0xcec4, 0xcec5, 0xcec6, 0xcec7, 0xcec8, 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0, 0xced1, 0xced2, +0xced3, 0xced4, 0xced5, 0xced6, 0xced7, 0xced8, 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcede, 0xcedf, 0xcee0, 0xcee1, +0xcee2, 0xcee3, 0xcee6, 0xcee7, 0xcee9, 0xceea, 0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef2, 0xcef3, 0xcef6, 0xcefa, +0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xceff, 0xcf02, 0xcf03, 0xcf05, 0xcf06, 0xcf07, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d, +0xcf0e, 0xcf0f, 0xcf12, 0xcf14, 0xcf16, 0xcf17, 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0xcf1d, 0xcf1e, 0xcf1f, 0xcf21, 0xcf22, +0xcf23, 0xcf25, 0xcf26, 0xcf27, 0xcf28, 0xcf29, 0xcf2a, 0xcf2b, 0xcf2e, 0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37, +0xcf39, 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e, 0xcf3f, 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47, +0xcf48, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0xcf56, 0xcf57, 0xcf59, +0xcf5a, 0xcf5b, 0xcf5d, 0xcf5e, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, 0xcf63, 0xcf66, 0xcf68, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, +0xcf6e, 0xcf6f, 0xcf72, 0xcf73, 0xcf75, 0xcf76, 0xcf77, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0xcf7f, 0xcf81, +0xcf82, 0xcf83, 0xcf84, 0xcf86, 0xcf87, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92, +0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, 0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, 0xcf9f, 0xcfa0, 0xcfa2, +0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6, 0xcfa7, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf, 0xcfb1, 0xcfb2, 0xcfb3, +0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7, 0xcfb8, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, 0xcfbf, 0xcfc0, 0xcfc1, 0xcfc2, +0xcfc3, 0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca, 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2, +0xcfd3, 0xcfd4, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8, 0xcfd9, 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0xcfe2, 0xcfe3, +0xcfe5, 0xcfe6, 0xcfe7, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee, 0xcfef, 0xcff2, 0xcff4, 0xcff6, 0xcff7, 0xcff8, +0xcff9, 0xcffa, 0xcffb, 0xcffd, 0xcffe, 0xcfff, 0xd001, 0xd002, 0xd003, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009, 0xd00a, +0xd00b, 0xd00c, 0xd00d, 0xd00e, 0xd00f, 0xd010, 0xd012, 0xd013, 0xd014, 0xd015, 0xd016, 0xd017, 0xd019, 0xd01a, 0xd01b, +0xd01c, 0xd01d, 0xd01e, 0xd01f, 0xd020, 0xd021, 0xd022, 0xd023, 0xd024, 0xd025, 0xd026, 0xd027, 0xd028, 0xd029, 0xd02a, +0xd02b, 0xd02c, 0xd02e, 0xd02f, 0xd030, 0xd031, 0xd032, 0xd033, 0xd036, 0xd037, 0xd039, 0xd03a, 0xd03b, 0xd03d, 0xd03e, +0xd03f, 0xd040, 0xd041, 0xd042, 0xd043, 0xd046, 0xd048, 0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f, 0xd051, 0xd052, +0xd053, 0xd055, 0xd056, 0xd057, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, 0xd05f, 0xd061, 0xd062, 0xd063, 0xd064, +0xd065, 0xd066, 0xd067, 0xd068, 0xd069, 0xd06a, 0xd06b, 0xd06e, 0xd06f, 0xd071, 0xd072, 0xd073, 0xd075, 0xd076, 0xd077, +0xd078, 0xd079, 0xd07a, 0xd07b, 0xd07e, 0xd07f, 0xd080, 0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, 0xd088, 0xd089, +0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e, 0xd08f, 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096, 0xd097, 0xd098, +0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, 0xd09e, 0xd09f, 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3, 0xd0a6, 0xd0a7, 0xd0a9, 0xd0aa, +0xd0ab, 0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b2, 0xd0b3, 0xd0b6, 0xd0b8, 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be, +0xd0bf, 0xd0c2, 0xd0c3, 0xd0c5, 0xd0c6, 0xd0c7, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf, 0xd0d2, 0xd0d6, 0xd0d7, +0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0de, 0xd0df, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9, 0xd0ea, +0xd0eb, 0xd0ee, 0xd0f2, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe, 0xd0ff, +0xd100, 0xd101, 0xd102, 0xd103, 0xd104, 0xd105, 0xd106, 0xd107, 0xd108, 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10e, 0xd10f, +0xd110, 0xd111, 0xd112, 0xd113, 0xd114, 0xd115, 0xd116, 0xd117, 0xd118, 0xd119, 0xd11a, 0xd11b, 0xd11c, 0xd11d, 0xd11e, +0xd11f, 0xd120, 0xd121, 0xd122, 0xd123, 0xd124, 0xd125, 0xd126, 0xd127, 0xd128, 0xd129, 0xd12a, 0xd12b, 0xd12c, 0xd12d, +0xd12e, 0xd12f, 0xd132, 0xd133, 0xd135, 0xd136, 0xd137, 0xd139, 0xd13b, 0xd13c, 0xd13d, 0xd13e, 0xd13f, 0xd142, 0xd146, +0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14e, 0xd14f, 0xd151, 0xd152, 0xd153, 0xd155, 0xd156, 0xd157, 0xd158, 0xd159, +0xd15a, 0xd15b, 0xd15e, 0xd160, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0xd169, 0xd16a, 0xd16b, 0xd16d, 0xd16e, +0xd16f, 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, 0xd178, 0xd179, 0xd17a, 0xd17b, 0xd17d, 0xd17e, +0xd17f, 0xd180, 0xd181, 0xd182, 0xd183, 0xd185, 0xd186, 0xd187, 0xd189, 0xd18a, 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f, +0xd190, 0xd191, 0xd192, 0xd193, 0xd194, 0xd195, 0xd196, 0xd197, 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e, +0xd19f, 0xd1a2, 0xd1a3, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, 0xd1b2, 0xd1b4, +0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, 0xd1bb, 0xd1bd, 0xd1be, 0xd1bf, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6, 0xd1c7, +0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6, +0xd1d7, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df, 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6, +0xd1e7, 0xd1e8, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0xd1f5, 0xd1f6, +0xd1f7, 0xd1f9, 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, 0xd200, 0xd201, 0xd202, 0xd203, 0xd204, 0xd205, 0xd206, +0xd208, 0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216, 0xd217, 0xd218, +0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e, 0xd21f, 0xd220, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225, 0xd226, 0xd227, +0xd228, 0xd229, 0xd22a, 0xd22b, 0xd22e, 0xd22f, 0xd231, 0xd232, 0xd233, 0xd235, 0xd236, 0xd237, 0xd238, 0xd239, 0xd23a, +0xd23b, 0xd23e, 0xd240, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e, +0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25d, 0xd25e, +0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e, +0xd26f, 0xd270, 0xd271, 0xd272, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a, 0xd27b, 0xd27c, 0xd27d, +0xd27e, 0xd27f, 0xd282, 0xd283, 0xd285, 0xd286, 0xd287, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, 0xd28f, 0xd292, +0xd293, 0xd294, 0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29d, 0xd29e, 0xd29f, 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a5, +0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0, 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, +0xd2b7, 0xd2ba, 0xd2bb, 0xd2bd, 0xd2be, 0xd2c1, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, 0xd2ca, 0xd2cc, 0xd2cd, 0xd2ce, +0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0xd2d5, 0xd2d6, 0xd2d7, 0xd2d9, 0xd2da, 0xd2db, 0xd2dd, 0xd2de, 0xd2df, 0xd2e0, +0xd2e1, 0xd2e2, 0xd2e3, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0xd2f2, 0xd2f3, +0xd2f5, 0xd2f6, 0xd2f7, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe, 0xd2ff, 0xd302, 0xd304, 0xd306, 0xd307, 0xd308, +0xd309, 0xd30a, 0xd30b, 0xd30f, 0xd311, 0xd312, 0xd313, 0xd315, 0xd317, 0xd318, 0xd319, 0xd31a, 0xd31b, 0xd31e, 0xd322, +0xd323, 0xd324, 0xd326, 0xd327, 0xd32a, 0xd32b, 0xd32d, 0xd32e, 0xd32f, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336, +0xd337, 0xd33a, 0xd33e, 0xd33f, 0xd340, 0xd341, 0xd342, 0xd343, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, +0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, +0xd35c, 0xd35d, 0xd35e, 0xd35f, 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, 0xd368, 0xd369, 0xd36a, +0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, 0xd370, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, 0xd378, 0xd379, +0xd37a, 0xd37b, 0xd37e, 0xd37f, 0xd381, 0xd382, 0xd383, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38e, +0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0xd39a, 0xd39b, 0xd39d, 0xd39e, 0xd39f, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, +0xd3a5, 0xd3a6, 0xd3a7, 0xd3aa, 0xd3ac, 0xd3ae, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b9, +0xd3ba, 0xd3bb, 0xd3bd, 0xd3be, 0xd3bf, 0xd3c0, 0xd3c1, 0xd3c2, 0xd3c3, 0xd3c6, 0xd3c7, 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd, +0xd3ce, 0xd3cf, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, 0xd3d7, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de, +0xd3df, 0xd3e0, 0xd3e2, 0xd3e4, 0xd3e5, 0xd3e6, 0xd3e7, 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0xd3ee, 0xd3ef, 0xd3f1, 0xd3f2, +0xd3f3, 0xd3f5, 0xd3f6, 0xd3f7, 0xd3f8, 0xd3f9, 0xd3fa, 0xd3fb, 0xd3fe, 0xd400, 0xd402, 0xd403, 0xd404, 0xd405, 0xd406, +0xd407, 0xd409, 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e, 0xd40f, 0xd410, 0xd411, 0xd412, 0xd413, 0xd414, 0xd415, 0xd416, +0xd417, 0xd418, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41e, 0xd41f, 0xd420, 0xd421, 0xd422, 0xd423, 0xd424, 0xd425, 0xd426, +0xd427, 0xd428, 0xd429, 0xd42a, 0xd42b, 0xd42c, 0xd42d, 0xd42e, 0xd42f, 0xd430, 0xd431, 0xd432, 0xd433, 0xd434, 0xd435, +0xd436, 0xd437, 0xd438, 0xd439, 0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e, 0xd43f, 0xd441, 0xd442, 0xd443, 0xd445, 0xd446, +0xd447, 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455, +0xd456, 0xd457, 0xd458, 0xd459, 0xd45a, 0xd45b, 0xd45d, 0xd45e, 0xd45f, 0xd461, 0xd462, 0xd463, 0xd465, 0xd466, 0xd467, +0xd468, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46e, 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, 0xd47a, +0xd47b, 0xd47d, 0xd47e, 0xd481, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd48a, 0xd48c, 0xd48e, 0xd48f, 0xd490, 0xd491, +0xd492, 0xd493, 0xd495, 0xd496, 0xd497, 0xd498, 0xd499, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, 0xd4a0, 0xd4a1, +0xd4a2, 0xd4a3, 0xd4a4, 0xd4a5, 0xd4a6, 0xd4a7, 0xd4a8, 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, 0xd4b0, 0xd4b1, +0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, 0xd4b7, 0xd4b8, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf, 0xd4c0, +0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5, 0xd4c6, 0xd4c7, 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0xd4cd, 0xd4ce, 0xd4cf, 0xd4d1, +0xd4d2, 0xd4d3, 0xd4d5, 0xd4d6, 0xd4d7, 0xd4d8, 0xd4d9, 0xd4da, 0xd4db, 0xd4dd, 0xd4de, 0xd4e0, 0xd4e1, 0xd4e2, 0xd4e3, +0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ed, 0xd4ee, 0xd4ef, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, +0xd4f6, 0xd4f7, 0xd4f9, 0xd4fa, 0xd4fc, 0xd4fe, 0xd4ff, 0xd500, 0xd501, 0xd502, 0xd503, 0xd505, 0xd506, 0xd507, 0xd509, +0xd50a, 0xd50b, 0xd50d, 0xd50e, 0xd50f, 0xd510, 0xd511, 0xd512, 0xd513, 0xd516, 0xd518, 0xd519, 0xd51a, 0xd51b, 0xd51c, +0xd51d, 0xd51e, 0xd51f, 0xd520, 0xd521, 0xd522, 0xd523, 0xd524, 0xd525, 0xd526, 0xd527, 0xd528, 0xd529, 0xd52a, 0xd52b, +0xd52c, 0xd52d, 0xd52e, 0xd52f, 0xd530, 0xd531, 0xd532, 0xd533, 0xd534, 0xd535, 0xd536, 0xd537, 0xd538, 0xd539, 0xd53a, +0xd53b, 0xd53e, 0xd53f, 0xd541, 0xd542, 0xd543, 0xd545, 0xd546, 0xd547, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54e, 0xd550, +0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557, 0xd55a, 0xd55b, 0xd55d, 0xd55e, 0xd55f, 0xd561, 0xd562, 0xd563, 0xd564, +0xd566, 0xd567, 0xd56a, 0xd56c, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, 0xd576, 0xd577, 0xd579, 0xd57a, 0xd57b, +0xd57d, 0xd57e, 0xd57f, 0xd580, 0xd581, 0xd582, 0xd583, 0xd586, 0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f, 0xd591, +0xd592, 0xd593, 0xd594, 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e, 0xd59f, 0xd5a0, +0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a6, 0xd5a7, 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0xd5ac, 0xd5ad, 0xd5ae, 0xd5af, 0xd5b0, +0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6, 0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xd5bd, 0xd5be, 0xd5bf, +0xd5c0, 0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, 0xd5ca, 0xd5cb, 0xd5cd, 0xd5ce, 0xd5cf, 0xd5d1, 0xd5d3, +0xd5d4, 0xd5d5, 0xd5d6, 0xd5d7, 0xd5da, 0xd5dc, 0xd5de, 0xd5df, 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0xd5e6, 0xd5e7, 0xd5e9, +0xd5ea, 0xd5eb, 0xd5ed, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2, 0xd5f3, 0xd5f6, 0xd5f8, 0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd, +0xd5fe, 0xd5ff, 0xd602, 0xd603, 0xd605, 0xd606, 0xd607, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e, 0xd60f, 0xd612, +0xd616, 0xd617, 0xd618, 0xd619, 0xd61a, 0xd61b, 0xd61d, 0xd61e, 0xd61f, 0xd621, 0xd622, 0xd623, 0xd625, 0xd626, 0xd627, +0xd628, 0xd629, 0xd62a, 0xd62b, 0xd62c, 0xd62e, 0xd62f, 0xd630, 0xd631, 0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637, +0xd63a, 0xd63b, 0xd63d, 0xd63e, 0xd63f, 0xd641, 0xd642, 0xd643, 0xd644, 0xd646, 0xd647, 0xd64a, 0xd64c, 0xd64e, 0xd64f, +0xd650, 0xd652, 0xd653, 0xd656, 0xd657, 0xd659, 0xd65a, 0xd65b, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xd663, +0xd664, 0xd665, 0xd666, 0xd668, 0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd672, 0xd673, 0xd675, 0xd676, 0xd677, +0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd67f, 0xd680, 0xd681, 0xd682, 0xd684, 0xd686, 0xd687, 0xd688, +0xd689, 0xd68a, 0xd68b, 0xd68e, 0xd68f, 0xd691, 0xd692, 0xd693, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, 0xd69b, +0xd69c, 0xd69e, 0xd6a0, 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ad, 0xd6ae, 0xd6af, +0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7, 0xd6b8, 0xd6ba, 0xd6bc, 0xd6bd, 0xd6be, 0xd6bf, 0xd6c0, 0xd6c1, +0xd6c2, 0xd6c3, 0xd6c6, 0xd6c7, 0xd6c9, 0xd6ca, 0xd6cb, 0xd6cd, 0xd6ce, 0xd6cf, 0xd6d0, 0xd6d2, 0xd6d3, 0xd6d5, 0xd6d6, +0xd6d8, 0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e5, 0xd6e6, 0xd6e7, 0xd6e9, 0xd6ea, +0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee, 0xd6ef, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f6, 0xd6f7, 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb, +0xd6fe, 0xd6ff, 0xd701, 0xd702, 0xd703, 0xd705, 0xd706, 0xd707, 0xd708, 0xd709, 0xd70a, 0xd70b, 0xd70c, 0xd70d, 0xd70e, +0xd70f, 0xd710, 0xd712, 0xd713, 0xd714, 0xd715, 0xd716, 0xd717, 0xd71a, 0xd71b, 0xd71d, 0xd71e, 0xd71f, 0xd721, 0xd722, +0xd723, 0xd724, 0xd725, 0xd726, 0xd727, 0xd72a, 0xd72c, 0xd72e, 0xd72f, 0xd730, 0xd731, 0xd732, 0xd733, 0xd736, 0xd737, +0xd739, 0xd73a, 0xd73b, 0xd73d, 0xd73e, 0xd73f, 0xd740, 0xd741, 0xd742, 0xd743, 0xd745, 0xd746, 0xd748, 0xd74a, 0xd74b, +0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xd752, 0xd753, 0xd755, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, 0xd762, 0xd764, +0xd766, 0xd767, 0xd768, 0xd76a, 0xd76b, 0xd76d, 0xd76e, 0xd76f, 0xd771, 0xd772, 0xd773, 0xd775, 0xd776, 0xd777, 0xd778, +0xd779, 0xd77a, 0xd77b, 0xd77e, 0xd77f, 0xd780, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd78a, 0xd78b, 0xd78d, +0xd78e, 0xd78f, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd79a, 0xd79c, 0xd79e, 0xd79f, 0xd7a0, 0xd7a1, +0xd7a2, 0xd7a3 +}; + +#endif // CP949CODETBL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractanimation_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractanimation_p.h new file mode 100644 index 000000000..3b901c442 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractanimation_p.h @@ -0,0 +1,301 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTANIMATION_P_H +#define QABSTRACTANIMATION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. +// This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include + +#ifndef QT_NO_ANIMATION + +QT_BEGIN_NAMESPACE + +class QAnimationGroup; +class QAbstractAnimation; +class QAbstractAnimationPrivate : public QObjectPrivate +{ +public: + QAbstractAnimationPrivate() + : state(QAbstractAnimation::Stopped), + direction(QAbstractAnimation::Forward), + totalCurrentTime(0), + currentTime(0), + loopCount(1), + currentLoop(0), + deleteWhenStopped(false), + hasRegisteredTimer(false), + isPause(false), + isGroup(false), + group(0) + { + } + + virtual ~QAbstractAnimationPrivate() {} + + static QAbstractAnimationPrivate *get(QAbstractAnimation *q) + { + return q->d_func(); + } + + QAbstractAnimation::State state; + QAbstractAnimation::Direction direction; + void setState(QAbstractAnimation::State state); + + int totalCurrentTime; + int currentTime; + int loopCount; + int currentLoop; + + bool deleteWhenStopped; + bool hasRegisteredTimer; + bool isPause; + bool isGroup; + + QAnimationGroup *group; + +private: + Q_DECLARE_PUBLIC(QAbstractAnimation) +}; + + +class QUnifiedTimer; +class QDefaultAnimationDriver : public QAnimationDriver +{ + Q_OBJECT +public: + QDefaultAnimationDriver(QUnifiedTimer *timer); + void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE; + +private Q_SLOTS: + void startTimer(); + void stopTimer(); + +private: + QBasicTimer m_timer; + QUnifiedTimer *m_unified_timer; +}; + +class Q_CORE_EXPORT QAnimationDriverPrivate : public QObjectPrivate +{ +public: + QAnimationDriverPrivate() : running(false) {} + QElapsedTimer timer; + bool running; +}; + +class Q_CORE_EXPORT QAbstractAnimationTimer : public QObject +{ + Q_OBJECT +public: + QAbstractAnimationTimer() : isRegistered(false), isPaused(false), pauseDuration(0) {} + + virtual void updateAnimationsTime(qint64 delta) = 0; + virtual void restartAnimationTimer() = 0; + virtual int runningAnimationCount() = 0; + + bool isRegistered; + bool isPaused; + int pauseDuration; +}; + +class Q_CORE_EXPORT QUnifiedTimer : public QObject +{ + Q_OBJECT +private: + QUnifiedTimer(); + +public: + static QUnifiedTimer *instance(); + static QUnifiedTimer *instance(bool create); + + static void startAnimationTimer(QAbstractAnimationTimer *timer); + static void stopAnimationTimer(QAbstractAnimationTimer *timer); + + static void pauseAnimationTimer(QAbstractAnimationTimer *timer, int duration); + static void resumeAnimationTimer(QAbstractAnimationTimer *timer); + + //defines the timing interval. Default is DEFAULT_TIMER_INTERVAL + void setTimingInterval(int interval); + + /* + this allows to have a consistent timer interval at each tick from the timer + not taking the real time that passed into account. + */ + void setConsistentTiming(bool consistent) { consistentTiming = consistent; } + + //these facilitate fine-tuning of complex animations + void setSlowModeEnabled(bool enabled) { slowMode = enabled; } + void setSlowdownFactor(qreal factor) { slowdownFactor = factor; } + + void installAnimationDriver(QAnimationDriver *driver); + void uninstallAnimationDriver(QAnimationDriver *driver); + bool canUninstallAnimationDriver(QAnimationDriver *driver); + + void restart(); + void maybeUpdateAnimationsToCurrentTime(); + void updateAnimationTimers(qint64 currentTick); + + //useful for profiling/debugging + int runningAnimationCount(); + void registerProfilerCallback(void (*cb)(qint64)); + + void startAnimationDriver(); + void stopAnimationDriver(); + qint64 elapsed() const; + +protected: + void timerEvent(QTimerEvent *) Q_DECL_OVERRIDE; + +private Q_SLOTS: + void startTimers(); + void stopTimer(); + +private: + friend class QDefaultAnimationDriver; + friend class QAnimationDriver; + + QAnimationDriver *driver; + QDefaultAnimationDriver defaultDriver; + + QBasicTimer pauseTimer; + + QElapsedTimer time; + + qint64 lastTick; + int timingInterval; + int currentAnimationIdx; + bool insideTick; + bool insideRestart; + bool consistentTiming; + bool slowMode; + bool startTimersPending; + bool stopTimerPending; + + // This factor will be used to divide the DEFAULT_TIMER_INTERVAL at each tick + // when slowMode is enabled. Setting it to 0 or higher than DEFAULT_TIMER_INTERVAL (16) + // stops all animations. + qreal slowdownFactor; + + QList animationTimers, animationTimersToStart; + QList pausedAnimationTimers; + + void localRestart(); + int closestPausedAnimationTimerTimeToFinish(); + + void (*profilerCallback)(qint64); + + qint64 driverStartTime; // The time the animation driver was started + qint64 temporalDrift; // The delta between animation driver time and wall time. +}; + +class QAnimationTimer : public QAbstractAnimationTimer +{ + Q_OBJECT +private: + QAnimationTimer(); + +public: + static QAnimationTimer *instance(); + static QAnimationTimer *instance(bool create); + + static void registerAnimation(QAbstractAnimation *animation, bool isTopLevel); + static void unregisterAnimation(QAbstractAnimation *animation); + + /* + this is used for updating the currentTime of all animations in case the pause + timer is active or, otherwise, only of the animation passed as parameter. + */ + static void ensureTimerUpdate(); + + /* + this will evaluate the need of restarting the pause timer in case there is still + some pause animations running. + */ + static void updateAnimationTimer(); + + void restartAnimationTimer() Q_DECL_OVERRIDE; + void updateAnimationsTime(qint64 delta) Q_DECL_OVERRIDE; + + //useful for profiling/debugging + int runningAnimationCount() Q_DECL_OVERRIDE { return animations.count(); } + +private Q_SLOTS: + void startAnimations(); + void stopTimer(); + +private: + qint64 lastTick; + int currentAnimationIdx; + bool insideTick; + bool startAnimationPending; + bool stopTimerPending; + + QList animations, animationsToStart; + + // this is the count of running animations that are not a group neither a pause animation + int runningLeafAnimations; + QList runningPauseAnimations; + + void registerRunningAnimation(QAbstractAnimation *animation); + void unregisterRunningAnimation(QAbstractAnimation *animation); + + int closestPauseAnimationTimeToFinish(); +}; + +QT_END_NAMESPACE + +#endif //QT_NO_ANIMATION + +#endif //QABSTRACTANIMATION_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstracteventdispatcher_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstracteventdispatcher_p.h new file mode 100644 index 000000000..5679cae07 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstracteventdispatcher_p.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTEVENTDISPATCHER_P_H +#define QABSTRACTEVENTDISPATCHER_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/qabstracteventdispatcher.h" +#include "private/qobject_p.h" + +QT_BEGIN_NAMESPACE + +Q_CORE_EXPORT uint qGlobalPostedEventsCount(); + +class Q_CORE_EXPORT QAbstractEventDispatcherPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QAbstractEventDispatcher) +public: + inline QAbstractEventDispatcherPrivate() + { } + + QList eventFilters; + + static int allocateTimerId(); + static void releaseTimerId(int id); +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTEVENTDISPATCHER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractfileengine_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractfileengine_p.h new file mode 100644 index 000000000..58fa776e4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractfileengine_p.h @@ -0,0 +1,272 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTFILEENGINE_P_H +#define QABSTRACTFILEENGINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qfile.h" +#include "QtCore/qdir.h" + +#ifdef open +#error qabstractfileengine_p.h must be included before any header file that defines open +#endif + +QT_BEGIN_NAMESPACE + +class QVariant; +class QAbstractFileEngineIterator; +class QAbstractFileEnginePrivate; + +class Q_CORE_EXPORT QAbstractFileEngine +{ +public: + enum FileFlag { + //perms (overlaps the QFile::Permission) + ReadOwnerPerm = 0x4000, WriteOwnerPerm = 0x2000, ExeOwnerPerm = 0x1000, + ReadUserPerm = 0x0400, WriteUserPerm = 0x0200, ExeUserPerm = 0x0100, + ReadGroupPerm = 0x0040, WriteGroupPerm = 0x0020, ExeGroupPerm = 0x0010, + ReadOtherPerm = 0x0004, WriteOtherPerm = 0x0002, ExeOtherPerm = 0x0001, + + //types + LinkType = 0x10000, + FileType = 0x20000, + DirectoryType = 0x40000, + BundleType = 0x80000, + + //flags + HiddenFlag = 0x0100000, + LocalDiskFlag = 0x0200000, + ExistsFlag = 0x0400000, + RootFlag = 0x0800000, + Refresh = 0x1000000, + + //masks + PermsMask = 0x0000FFFF, + TypesMask = 0x000F0000, + FlagsMask = 0x0FF00000, + FileInfoAll = FlagsMask | PermsMask | TypesMask + }; + Q_DECLARE_FLAGS(FileFlags, FileFlag) + + enum FileName { + DefaultName, + BaseName, + PathName, + AbsoluteName, + AbsolutePathName, + LinkName, + CanonicalName, + CanonicalPathName, + BundleName, + NFileNames = 9 + }; + enum FileOwner { + OwnerUser, + OwnerGroup + }; + enum FileTime { + CreationTime, + ModificationTime, + AccessTime + }; + + virtual ~QAbstractFileEngine(); + + 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); + virtual bool isSequential() const; + 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; + virtual bool setSize(qint64 size); + virtual bool caseSensitive() const; + virtual bool isRelativePath() const; + virtual QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const; + virtual FileFlags fileFlags(FileFlags type=FileInfoAll) const; + virtual bool setPermissions(uint perms); + virtual QByteArray id() const; + virtual QString fileName(FileName file=DefaultName) const; + virtual uint ownerId(FileOwner) const; + virtual QString owner(FileOwner) const; + virtual QDateTime fileTime(FileTime time) const; + virtual void setFileName(const QString &file); + virtual int handle() const; + bool atEnd() const; + uchar *map(qint64 offset, qint64 size, QFile::MemoryMapFlags flags); + bool unmap(uchar *ptr); + + typedef QAbstractFileEngineIterator Iterator; + virtual Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames); + virtual Iterator *endEntryList(); + + virtual qint64 read(char *data, qint64 maxlen); + virtual qint64 readLine(char *data, qint64 maxlen); + virtual qint64 write(const char *data, qint64 len); + + QFile::FileError error() const; + QString errorString() const; + + enum Extension { + AtEndExtension, + FastReadLineExtension, + MapExtension, + UnMapExtension + }; + class ExtensionOption + {}; + class ExtensionReturn + {}; + + class MapExtensionOption : public ExtensionOption { + public: + qint64 offset; + qint64 size; + QFile::MemoryMapFlags flags; + }; + class MapExtensionReturn : public ExtensionReturn { + public: + uchar *address; + }; + + class UnMapExtensionOption : public ExtensionOption { + public: + uchar *address; + }; + + virtual bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0); + virtual bool supportsExtension(Extension extension) const; + + // Factory + static QAbstractFileEngine *create(const QString &fileName); + +protected: + void setError(QFile::FileError error, const QString &str); + + QAbstractFileEngine(); + QAbstractFileEngine(QAbstractFileEnginePrivate &); + + QScopedPointer d_ptr; +private: + Q_DECLARE_PRIVATE(QAbstractFileEngine) + Q_DISABLE_COPY(QAbstractFileEngine) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractFileEngine::FileFlags) + +class Q_CORE_EXPORT QAbstractFileEngineHandler +{ +public: + QAbstractFileEngineHandler(); + virtual ~QAbstractFileEngineHandler(); + virtual QAbstractFileEngine *create(const QString &fileName) const = 0; +}; + +class QAbstractFileEngineIteratorPrivate; +class Q_CORE_EXPORT QAbstractFileEngineIterator +{ +public: + QAbstractFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters); + virtual ~QAbstractFileEngineIterator(); + + virtual QString next() = 0; + virtual bool hasNext() const = 0; + + QString path() const; + QStringList nameFilters() const; + QDir::Filters filters() const; + + virtual QString currentFileName() const = 0; + virtual QFileInfo currentFileInfo() const; + QString currentFilePath() const; + +protected: + enum EntryInfoType { + }; + virtual QVariant entryInfo(EntryInfoType type) const; + +private: + Q_DISABLE_COPY(QAbstractFileEngineIterator) + friend class QDirIterator; + friend class QDirIteratorPrivate; + void setPath(const QString &path); + QScopedPointer d; +}; + +class QAbstractFileEnginePrivate +{ +public: + inline QAbstractFileEnginePrivate() + : fileError(QFile::UnspecifiedError) + { + } + inline virtual ~QAbstractFileEnginePrivate() { } + + QFile::FileError fileError; + QString errorString; + + QAbstractFileEngine *q_ptr; + Q_DECLARE_PUBLIC(QAbstractFileEngine) +}; + +QAbstractFileEngine *qt_custom_file_engine_handler_create(const QString &path); + +QT_END_NAMESPACE + +#endif // QABSTRACTFILEENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractitemmodel_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractitemmodel_p.h new file mode 100644 index 000000000..7086ae730 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractitemmodel_p.h @@ -0,0 +1,160 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTITEMMODEL_P_H +#define QABSTRACTITEMMODEL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of QAbstractItemModel*. This header file may change from version +// to version without notice, or even be removed. +// +// We mean it. +// +// + +#include "QtCore/qabstractitemmodel.h" +#include "QtCore/private/qobject_p.h" +#include "QtCore/qstack.h" +#include "QtCore/qset.h" +#include "QtCore/qhash.h" + +QT_BEGIN_NAMESPACE + +class QPersistentModelIndexData +{ +public: + QPersistentModelIndexData() : model(0) {} + QPersistentModelIndexData(const QModelIndex &idx) : index(idx), model(idx.model()) {} + QModelIndex index; + QAtomicInt ref; + const QAbstractItemModel *model; + static QPersistentModelIndexData *create(const QModelIndex &index); + static void destroy(QPersistentModelIndexData *data); +}; + +class Q_CORE_EXPORT QAbstractItemModelPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QAbstractItemModel) + +public: + QAbstractItemModelPrivate(); + ~QAbstractItemModelPrivate(); + + void removePersistentIndexData(QPersistentModelIndexData *data); + void movePersistentIndexes(const QVector &indexes, int change, const QModelIndex &parent, Qt::Orientation orientation); + void rowsAboutToBeInserted(const QModelIndex &parent, int first, int last); + void rowsInserted(const QModelIndex &parent, int first, int last); + void rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last); + void rowsRemoved(const QModelIndex &parent, int first, int last); + void columnsAboutToBeInserted(const QModelIndex &parent, int first, int last); + void columnsInserted(const QModelIndex &parent, int first, int last); + void columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last); + void columnsRemoved(const QModelIndex &parent, int first, int last); + static QAbstractItemModel *staticEmptyModel(); + static bool variantLessThan(const QVariant &v1, const QVariant &v2); + + void itemsAboutToBeMoved(const QModelIndex &srcParent, int srcFirst, int srcLast, const QModelIndex &destinationParent, int destinationChild, Qt::Orientation); + void itemsMoved(const QModelIndex &srcParent, int srcFirst, int srcLast, const QModelIndex &destinationParent, int destinationChild, Qt::Orientation orientation); + bool allowMove(const QModelIndex &srcParent, int srcFirst, int srcLast, const QModelIndex &destinationParent, int destinationChild, Qt::Orientation orientation); + + inline QModelIndex createIndex(int row, int column, void *data = 0) const { + return q_func()->createIndex(row, column, data); + } + + inline QModelIndex createIndex(int row, int column, int id) const { + return q_func()->createIndex(row, column, id); + } + + inline bool indexValid(const QModelIndex &index) const { + return (index.row() >= 0) && (index.column() >= 0) && (index.model() == q_func()); + } + + void invalidatePersistentIndexes(); + void invalidatePersistentIndex(const QModelIndex &index); + + struct Change { + Q_DECL_CONSTEXPR Change() : parent(), first(-1), last(-1), needsAdjust(false) {} + Q_DECL_CONSTEXPR Change(const QModelIndex &p, int f, int l) : parent(p), first(f), last(l), needsAdjust(false) {} + + QModelIndex parent; + int first, last; + + + // In cases such as this: + // - A + // - B + // - C + // - - D + // - - E + // - - F + // + // If B is moved to above E, C is the source parent in the signal and its row is 2. When the move is + // completed however, C is at row 1 and there is no row 2 at the same level in the model at all. + // The QModelIndex is adjusted to correct that in those cases before reporting it though the + // rowsMoved signal. + bool needsAdjust; + + Q_DECL_CONSTEXPR bool isValid() const { return first >= 0 && last >= 0; } + }; + QStack changes; + + struct Persistent { + Persistent() {} + QHash indexes; + QStack > moved; + QStack > invalidated; + void insertMultiAtEnd(const QModelIndex& key, QPersistentModelIndexData *data); + } persistent; + + Qt::DropActions supportedDragActions; + + QHash roleNames; + static const QHash &defaultRoleNames(); + static bool isVariantLessThan(const QVariant &left, const QVariant &right, + Qt::CaseSensitivity cs = Qt::CaseSensitive, bool isLocaleAware = false); +}; +Q_DECLARE_TYPEINFO(QAbstractItemModelPrivate::Change, Q_MOVABLE_TYPE); + +QT_END_NAMESPACE + +#endif // QABSTRACTITEMMODEL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractproxymodel_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractproxymodel_p.h new file mode 100644 index 000000000..929bf1eb7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractproxymodel_p.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTPROXYMODEL_P_H +#define QABSTRACTPROXYMODEL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of QAbstractItemModel*. This header file may change from version +// to version without notice, or even be removed. +// +// We mean it. +// +// + +#include "private/qabstractitemmodel_p.h" + +#ifndef QT_NO_PROXYMODEL + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QAbstractProxyModelPrivate : public QAbstractItemModelPrivate +{ + Q_DECLARE_PUBLIC(QAbstractProxyModel) +public: + QAbstractProxyModelPrivate() : QAbstractItemModelPrivate(), model(0) {} + QAbstractItemModel *model; + virtual void _q_sourceModelDestroyed(); + void mapDropCoordinatesToSource(int row, int column, const QModelIndex &parent, + int *source_row, int *source_column, QModelIndex *source_parent) const; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_PROXYMODEL + +#endif // QABSTRACTPROXYMODEL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractstate_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractstate_p.h new file mode 100644 index 000000000..11befc187 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstractstate_p.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSTATE_P_H +#define QABSTRACTSTATE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QStateMachine; + +class QState; +class QAbstractStatePrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QAbstractState) + +public: + enum StateType { + AbstractState, + StandardState, + FinalState, + HistoryState + }; + + QAbstractStatePrivate(StateType type); + + static QAbstractStatePrivate *get(QAbstractState *q) + { return q->d_func(); } + static const QAbstractStatePrivate *get(const QAbstractState *q) + { return q->d_func(); } + + QStateMachine *machine() const; + + void callOnEntry(QEvent *e); + void callOnExit(QEvent *e); + + void emitEntered(); + void emitExited(); + + uint stateType:30; + uint isMachine:1; + bool active:1; + mutable QState *parentState; +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTSTATE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstracttransition_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstracttransition_p.h new file mode 100644 index 000000000..e11514670 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qabstracttransition_p.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTTRANSITION_P_H +#define QABSTRACTTRANSITION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include +#include +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QAbstractState; +class QState; +class QStateMachine; + +class QAbstractTransition; +class Q_CORE_EXPORT QAbstractTransitionPrivate + : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QAbstractTransition) +public: + QAbstractTransitionPrivate(); + + static QAbstractTransitionPrivate *get(QAbstractTransition *q) + { return q->d_func(); } + + bool callEventTest(QEvent *e); + virtual void callOnTransition(QEvent *e); + QState *sourceState() const; + QStateMachine *machine() const; + void emitTriggered(); + + QVector > targetStates; + QAbstractTransition::TransitionType transitionType; + +#ifndef QT_NO_ANIMATION + QList animations; +#endif +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qanimationgroup_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qanimationgroup_p.h new file mode 100644 index 000000000..31c2cd08e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qanimationgroup_p.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANIMATIONGROUP_P_H +#define QANIMATIONGROUP_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 "qanimationgroup.h" + +#include + +#include "private/qabstractanimation_p.h" + +#ifndef QT_NO_ANIMATION + +QT_BEGIN_NAMESPACE + +class QAnimationGroupPrivate : public QAbstractAnimationPrivate +{ + Q_DECLARE_PUBLIC(QAnimationGroup) +public: + QAnimationGroupPrivate() + { + isGroup = true; + } + + virtual void animationInsertedAt(int) { } + virtual void animationRemoved(int, QAbstractAnimation *); + + void disconnectUncontrolledAnimation(QAbstractAnimation *anim) + { + //0 for the signal here because we might be called from the animation destructor + QObject::disconnect(anim, 0, q_func(), SLOT(_q_uncontrolledAnimationFinished())); + } + + void connectUncontrolledAnimation(QAbstractAnimation *anim) + { + QObject::connect(anim, SIGNAL(finished()), q_func(), SLOT(_q_uncontrolledAnimationFinished())); + } + + QList animations; +}; + +QT_END_NAMESPACE + +#endif //QT_NO_ANIMATION + +#endif //QANIMATIONGROUP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qbig5codec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qbig5codec_p.h new file mode 100644 index 000000000..9dbcf41a6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qbig5codec_p.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Most of the code here was originally written by Ming-Che Chuang and +// is included in Qt with the author's permission, and the grateful +// thanks of the Qt team. + +#ifndef QBIG5CODEC_P_H +#define QBIG5CODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_BIG_CODECS + +class QBig5Codec : public QTextCodec { +public: + static QByteArray _name(); + static QList _aliases(); + static int _mibEnum(); + + QByteArray name() const { return _name(); } + QList aliases() const { return _aliases(); } + int mibEnum() const { return _mibEnum(); } + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; +}; + +class QBig5hkscsCodec : public QTextCodec { +public: + static QByteArray _name(); + static QList _aliases() { return QList(); } + static int _mibEnum(); + + QByteArray name() const { return _name(); } + QList aliases() const { return _aliases(); } + int mibEnum() const { return _mibEnum(); } + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; +}; + +#endif // QT_NO_BIG_CODECS + +QT_END_NAMESPACE + +#endif // QBIG5CODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qbytearray_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qbytearray_p.h new file mode 100644 index 000000000..6ebff739c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qbytearray_p.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBYTEARRAY_P_H +#define QBYTEARRAY_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qtools_p.h" + +QT_BEGIN_NAMESPACE + +enum { + // Define as enum to force inlining. Don't expose MaxAllocSize in a public header. + MaxByteArraySize = MaxAllocSize - sizeof(std::remove_pointer::type) +}; + +QT_END_NAMESPACE + +#endif // QBYTEARRAY_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qbytedata_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qbytedata_p.h new file mode 100644 index 000000000..8331be112 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qbytedata_p.h @@ -0,0 +1,245 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBYTEDATA_P_H +#define QBYTEDATA_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +// this class handles a list of QByteArrays. It is a variant of QRingBuffer +// that avoid malloc/realloc/memcpy. +class QByteDataBuffer +{ +private: + QList buffers; + qint64 bufferCompleteSize; + qint64 firstPos; +public: + QByteDataBuffer() : bufferCompleteSize(0), firstPos(0) + { + } + + ~QByteDataBuffer() + { + clear(); + } + + static inline void popFront(QByteArray &ba, qint64 n) + { + ba = QByteArray(ba.constData() + n, ba.size() - n); + } + + inline void squeezeFirst() + { + if (!buffers.isEmpty() && firstPos > 0) { + popFront(buffers.first(), firstPos); + firstPos = 0; + } + } + + inline void append(const QByteDataBuffer& other) + { + if (other.isEmpty()) + return; + + buffers.append(other.buffers); + bufferCompleteSize += other.byteAmount(); + + if (other.firstPos > 0) + popFront(buffers[bufferCount() - other.bufferCount()], other.firstPos); + } + + + inline void append(const QByteArray& bd) + { + if (bd.isEmpty()) + return; + + buffers.append(bd); + bufferCompleteSize += bd.size(); + } + + inline void prepend(const QByteArray& bd) + { + if (bd.isEmpty()) + return; + + squeezeFirst(); + + buffers.prepend(bd); + bufferCompleteSize += bd.size(); + } + + // return the first QByteData. User of this function has to free() its .data! + // preferably use this function to read data. + inline QByteArray read() + { + squeezeFirst(); + bufferCompleteSize -= buffers.first().size(); + return buffers.takeFirst(); + } + + // return everything. User of this function has to free() its .data! + // avoid to use this, it might malloc and memcpy. + inline QByteArray readAll() + { + return read(byteAmount()); + } + + // return amount. User of this function has to free() its .data! + // avoid to use this, it might malloc and memcpy. + inline QByteArray read(qint64 amount) + { + amount = qMin(byteAmount(), amount); + QByteArray byteData; + byteData.resize(amount); + read(byteData.data(), byteData.size()); + return byteData; + } + + // return amount bytes. User of this function has to free() its .data! + // avoid to use this, it will memcpy. + qint64 read(char* dst, qint64 amount) + { + amount = qMin(amount, byteAmount()); + qint64 originalAmount = amount; + char *writeDst = dst; + + while (amount > 0) { + const QByteArray &first = buffers.first(); + qint64 firstSize = first.size() - firstPos; + if (amount >= firstSize) { + // take it completely + bufferCompleteSize -= firstSize; + amount -= firstSize; + memcpy(writeDst, first.constData() + firstPos, firstSize); + writeDst += firstSize; + firstPos = 0; + buffers.takeFirst(); + } else { + // take a part of it & it is the last one to take + bufferCompleteSize -= amount; + memcpy(writeDst, first.constData() + firstPos, amount); + firstPos += amount; + amount = 0; + } + } + + return originalAmount; + } + + inline char getChar() + { + char c; + read(&c, 1); + return c; + } + + inline void clear() + { + buffers.clear(); + bufferCompleteSize = 0; + firstPos = 0; + } + + // The byte count of all QByteArrays + inline qint64 byteAmount() const + { + return bufferCompleteSize; + } + + // the number of QByteArrays + inline qint64 bufferCount() const + { + return buffers.length(); + } + + inline bool isEmpty() const + { + return byteAmount() == 0; + } + + inline qint64 sizeNextBlock() const + { + if(buffers.isEmpty()) + return 0; + else + return buffers.first().size() - firstPos; + } + + inline QByteArray& operator[](int i) + { + if (i == 0) + squeezeFirst(); + + return buffers[i]; + } + + inline bool canReadLine() const { + int i = 0; + if (i < buffers.length()) { + if (buffers.at(i).indexOf('\n', firstPos) != -1) + return true; + ++i; + + for (; i < buffers.length(); i++) + if (buffers.at(i).contains('\n')) + return true; + } + return false; + } +}; + +QT_END_NAMESPACE + +#endif // QBYTEDATA_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcfsocketnotifier_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcfsocketnotifier_p.h new file mode 100644 index 000000000..12c5bf633 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcfsocketnotifier_p.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCFSOCKETNOTIFIER_P_H +#define QCFSOCKETNOTIFIER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +struct MacSocketInfo { + MacSocketInfo() : socket(0), runloop(0), readNotifier(0), writeNotifier(0), + readEnabled(false), writeEnabled(false) {} + CFSocketRef socket; + CFRunLoopSourceRef runloop; + QObject *readNotifier; + QObject *writeNotifier; + bool readEnabled; + bool writeEnabled; +}; +typedef QHash MacSocketHash; + +typedef void (*MaybeCancelWaitForMoreEventsFn)(QAbstractEventDispatcher *hostEventDispacher); + +// The CoreFoundationSocketNotifier class implements socket notifiers support using +// CFSocket for event dispatchers running on top of the Core Foundation run loop system. +// (currently Mac and iOS) +// +// The principal functions are registerSocketNotifier() and unregisterSocketNotifier(). +// +// setHostEventDispatcher() should be called at startup. +// removeSocketNotifiers() should be called at shutdown. +// +class Q_CORE_EXPORT QCFSocketNotifier +{ +public: + QCFSocketNotifier(); + ~QCFSocketNotifier(); + void setHostEventDispatcher(QAbstractEventDispatcher *hostEventDispacher); + void setMaybeCancelWaitForMoreEventsCallback(MaybeCancelWaitForMoreEventsFn callBack); + void registerSocketNotifier(QSocketNotifier *notifier); + void unregisterSocketNotifier(QSocketNotifier *notifier); + void removeSocketNotifiers(); + +private: + void destroyRunLoopObserver(); + + static void unregisterSocketInfo(MacSocketInfo *socketInfo); + static void enableSocketNotifiers(CFRunLoopObserverRef ref, CFRunLoopActivity activity, void *info); + + MacSocketHash macSockets; + QAbstractEventDispatcher *eventDispatcher; + MaybeCancelWaitForMoreEventsFn maybeCancelWaitForMoreEvents; + CFRunLoopObserverRef enableNotifiersObserver; + + friend void qt_mac_socket_callback(CFSocketRef, CFSocketCallBackType, CFDataRef, const void *, void *); +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcollator_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcollator_p.h new file mode 100644 index 000000000..c03a3431d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcollator_p.h @@ -0,0 +1,150 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2013 Aleix Pol Gonzalez +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOLLATOR_P_H +#define QCOLLATOR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qcollator.h" +#include +#if QT_CONFIG(icu) +#include +#elif defined(Q_OS_OSX) +#include +#elif defined(Q_OS_WIN) +#include +#endif + +QT_BEGIN_NAMESPACE + +#if QT_CONFIG(icu) +typedef UCollator *CollatorType; +typedef QByteArray CollatorKeyType; + +#elif defined(Q_OS_OSX) +typedef CollatorRef CollatorType; +typedef QVector CollatorKeyType; + +#elif defined(Q_OS_WIN) +typedef QString CollatorKeyType; +typedef int CollatorType; +# ifdef Q_OS_WINRT +# define USE_COMPARESTRINGEX +# endif + +#else //posix +typedef QVector CollatorKeyType; +typedef int CollatorType; +#endif + +class QCollatorPrivate +{ +public: + QAtomicInt ref; + QLocale locale; +#if defined(Q_OS_WIN) && !QT_CONFIG(icu) +#ifdef USE_COMPARESTRINGEX + QString localeName; +#else + LCID localeID; +#endif +#endif + Qt::CaseSensitivity caseSensitivity; + bool numericMode; + bool ignorePunctuation; + bool dirty; + + CollatorType collator; + + void clear() { + cleanup(); + collator = 0; + } + + void init(); + void cleanup(); + + QCollatorPrivate() + : ref(1), + caseSensitivity(Qt::CaseSensitive), + numericMode(false), + ignorePunctuation(false), + dirty(true), + collator(0) + { cleanup(); } + + ~QCollatorPrivate() { cleanup(); } + +private: + Q_DISABLE_COPY(QCollatorPrivate) +}; + +class QCollatorSortKeyPrivate : public QSharedData +{ + friend class QCollator; +public: + template + explicit QCollatorSortKeyPrivate(T &&...args) + : QSharedData() + , m_key(std::forward(args)...) + { + } + + CollatorKeyType m_key; + +private: + Q_DISABLE_COPY(QCollatorSortKeyPrivate) +}; + + +QT_END_NAMESPACE + +#endif // QCOLLATOR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qconfig_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qconfig_p.h new file mode 100644 index 000000000..c42efba09 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qconfig_p.h @@ -0,0 +1,22 @@ +#define QT_FEATURE_alloca_h -1 +#define QT_FEATURE_alloca_malloc_h 1 +#define QT_FEATURE_alloca 1 +#define QT_FEATURE_android_style_assets -1 +#define QT_FEATURE_sse2 1 +#define QT_FEATURE_private_tests -1 +#define QT_FEATURE_dbus 1 +#define QT_FEATURE_dbus_linked -1 +#define QT_FEATURE_gui 1 +#define QT_FEATURE_libudev -1 +#define QT_FEATURE_network 1 +#define QT_FEATURE_posix_fallocate -1 +#define QT_FEATURE_qml_debug 1 +#define QT_FEATURE_reduce_exports -1 +#define QT_FEATURE_reduce_relocations -1 +#define QT_FEATURE_release_tools -1 +#define QT_FEATURE_sql 1 +#define QT_FEATURE_stack_protector_strong -1 +#define QT_FEATURE_system_zlib -1 +#define QT_FEATURE_testlib 1 +#define QT_FEATURE_widgets 1 +#define QT_FEATURE_xml 1 diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcore_mac_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcore_mac_p.h new file mode 100644 index 000000000..b87babc07 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcore_mac_p.h @@ -0,0 +1,142 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCORE_MAC_P_H +#define QCORE_MAC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#ifndef __IMAGECAPTURE__ +# define __IMAGECAPTURE__ +#endif + +#if defined(QT_BOOTSTRAPPED) +#include +#else +#include +#endif + +#include "private/qglobal_p.h" + +#ifdef __OBJC__ +#include +#endif + +#include "qstring.h" + +#if defined( __OBJC__) && defined(QT_NAMESPACE) +#define QT_NAMESPACE_ALIAS_OBJC_CLASS(__KLASS__) @compatibility_alias __KLASS__ QT_MANGLE_NAMESPACE(__KLASS__) +#else +#define QT_NAMESPACE_ALIAS_OBJC_CLASS(__KLASS__) +#endif + +QT_BEGIN_NAMESPACE + +/* + Helper class that automates refernce counting for CFtypes. + After constructing the QCFType object, it can be copied like a + value-based type. + + Note that you must own the object you are wrapping. + This is typically the case if you get the object from a Core + Foundation function with the word "Create" or "Copy" in it. If + you got the object from a "Get" function, either retain it or use + constructFromGet(). One exception to this rule is the + HIThemeGet*Shape functions, which in reality are "Copy" functions. +*/ +template +class Q_CORE_EXPORT QCFType +{ +public: + inline QCFType(const T &t = 0) : type(t) {} + inline QCFType(const QCFType &helper) : type(helper.type) { if (type) CFRetain(type); } + inline ~QCFType() { if (type) CFRelease(type); } + inline operator T() { return type; } + inline QCFType operator =(const QCFType &helper) + { + if (helper.type) + CFRetain(helper.type); + CFTypeRef type2 = type; + type = helper.type; + if (type2) + CFRelease(type2); + return *this; + } + inline T *operator&() { return &type; } + template X as() const { return reinterpret_cast(type); } + static QCFType constructFromGet(const T &t) + { + if (t) + CFRetain(t); + return QCFType(t); + } +protected: + T type; +}; + +class Q_CORE_EXPORT QCFString : public QCFType +{ +public: + inline QCFString(const QString &str) : QCFType(0), string(str) {} + inline QCFString(const CFStringRef cfstr = 0) : QCFType(cfstr) {} + inline QCFString(const QCFType &other) : QCFType(other) {} + operator QString() const; + operator CFStringRef() const; + +private: + QString string; +}; + +#ifdef Q_OS_OSX +Q_CORE_EXPORT QChar qt_mac_qtKey2CocoaKey(Qt::Key key); +Q_CORE_EXPORT Qt::Key qt_mac_cocoaKey2QtKey(QChar keyCode); +#endif + +QT_END_NAMESPACE + +#endif // QCORE_MAC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcore_unix_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcore_unix_p.h new file mode 100644 index 000000000..86bace326 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcore_unix_p.h @@ -0,0 +1,373 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCORE_UNIX_P_H +#define QCORE_UNIX_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt code on Unix. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qplatformdefs.h" +#include "qatomic.h" + +#ifndef Q_OS_UNIX +# error "qcore_unix_p.h included on a non-Unix system" +#endif + +#include +#include +#include +#include + +#ifdef Q_OS_NACL +#elif !defined (Q_OS_VXWORKS) +# if !defined(Q_OS_HPUX) || defined(__ia64) +# include +# endif +# include +#else +# include +#endif + +#include +#include +#include + +#if !defined(QT_POSIX_IPC) && !defined(QT_NO_SHAREDMEMORY) && !defined(Q_OS_ANDROID) +# include +#endif + +#if defined(Q_OS_VXWORKS) +# include +#endif + +#ifdef QT_NO_NATIVE_POLL +# include "qpoll_p.h" +#else +# include +#endif + +struct sockaddr; + +#define EINTR_LOOP(var, cmd) \ + do { \ + var = cmd; \ + } while (var == -1 && errno == EINTR) + +QT_BEGIN_NAMESPACE + +// Internal operator functions for timespecs +inline timespec &normalizedTimespec(timespec &t) +{ + while (t.tv_nsec >= 1000000000) { + ++t.tv_sec; + t.tv_nsec -= 1000000000; + } + while (t.tv_nsec < 0) { + --t.tv_sec; + t.tv_nsec += 1000000000; + } + return t; +} +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 bool operator!=(const timespec &t1, const timespec &t2) +{ return !(t1 == t2); } +inline timespec &operator+=(timespec &t1, const timespec &t2) +{ + t1.tv_sec += t2.tv_sec; + t1.tv_nsec += t2.tv_nsec; + return normalizedTimespec(t1); +} +inline timespec operator+(const timespec &t1, const timespec &t2) +{ + timespec tmp; + tmp.tv_sec = t1.tv_sec + t2.tv_sec; + tmp.tv_nsec = t1.tv_nsec + t2.tv_nsec; + return normalizedTimespec(tmp); +} +inline timespec operator-(const timespec &t1, const timespec &t2) +{ + timespec tmp; + tmp.tv_sec = t1.tv_sec - (t2.tv_sec - 1); + tmp.tv_nsec = t1.tv_nsec - (t2.tv_nsec + 1000000000); + return normalizedTimespec(tmp); +} +inline timespec operator*(const timespec &t1, int mul) +{ + timespec tmp; + tmp.tv_sec = t1.tv_sec * mul; + tmp.tv_nsec = t1.tv_nsec * mul; + return normalizedTimespec(tmp); +} +inline timeval timespecToTimeval(const timespec &ts) +{ + timeval tv; + tv.tv_sec = ts.tv_sec; + tv.tv_usec = ts.tv_nsec / 1000; + return tv; +} + + +inline void qt_ignore_sigpipe() +{ + // Set to ignore SIGPIPE once only. + static QBasicAtomicInt atom = Q_BASIC_ATOMIC_INITIALIZER(0); + if (!atom.load()) { + // More than one thread could turn off SIGPIPE at the same time + // But that's acceptable because they all would be doing the same + // action + struct sigaction noaction; + memset(&noaction, 0, sizeof(noaction)); + noaction.sa_handler = SIG_IGN; + ::sigaction(SIGPIPE, &noaction, 0); + atom.store(1); + } +} + +// don't call QT_OPEN or ::open +// call qt_safe_open +static inline int qt_safe_open(const char *pathname, int flags, mode_t mode = 0777) +{ +#ifdef O_CLOEXEC + flags |= O_CLOEXEC; +#endif + int fd; + EINTR_LOOP(fd, QT_OPEN(pathname, flags, mode)); + + // unknown flags are ignored, so we have no way of verifying if + // O_CLOEXEC was accepted + if (fd != -1) + ::fcntl(fd, F_SETFD, FD_CLOEXEC); + return fd; +} +#undef QT_OPEN +#define QT_OPEN qt_safe_open + +#ifndef Q_OS_VXWORKS // no POSIX pipes in VxWorks +// don't call ::pipe +// call qt_safe_pipe +static inline int qt_safe_pipe(int pipefd[2], int flags = 0) +{ + Q_ASSERT((flags & ~O_NONBLOCK) == 0); + +#ifdef QT_THREADSAFE_CLOEXEC + // use pipe2 + flags |= O_CLOEXEC; + return ::pipe2(pipefd, flags); // pipe2 is documented not to return EINTR +#else + int ret = ::pipe(pipefd); + if (ret == -1) + return -1; + + ::fcntl(pipefd[0], F_SETFD, FD_CLOEXEC); + ::fcntl(pipefd[1], F_SETFD, FD_CLOEXEC); + + // set non-block too? + if (flags & O_NONBLOCK) { + ::fcntl(pipefd[0], F_SETFL, ::fcntl(pipefd[0], F_GETFL) | O_NONBLOCK); + ::fcntl(pipefd[1], F_SETFL, ::fcntl(pipefd[1], F_GETFL) | O_NONBLOCK); + } + + return 0; +#endif +} + +#endif // Q_OS_VXWORKS + +// don't call dup or fcntl(F_DUPFD) +static inline int qt_safe_dup(int oldfd, int atleast = 0, int flags = FD_CLOEXEC) +{ + Q_ASSERT(flags == FD_CLOEXEC || flags == 0); + +#ifdef F_DUPFD_CLOEXEC + int cmd = F_DUPFD; + if (flags & FD_CLOEXEC) + cmd = F_DUPFD_CLOEXEC; + return ::fcntl(oldfd, cmd, atleast); +#else + // use F_DUPFD + int ret = ::fcntl(oldfd, F_DUPFD, atleast); + + if (flags && ret != -1) + ::fcntl(ret, F_SETFD, flags); + return ret; +#endif +} + +// don't call dup2 +// call qt_safe_dup2 +static inline int qt_safe_dup2(int oldfd, int newfd, int flags = FD_CLOEXEC) +{ + Q_ASSERT(flags == FD_CLOEXEC || flags == 0); + + int ret; +#ifdef QT_THREADSAFE_CLOEXEC + // use dup3 + EINTR_LOOP(ret, ::dup3(oldfd, newfd, flags ? O_CLOEXEC : 0)); + return ret; +#else + EINTR_LOOP(ret, ::dup2(oldfd, newfd)); + if (ret == -1) + return -1; + + if (flags) + ::fcntl(newfd, F_SETFD, flags); + return 0; +#endif +} + +static inline qint64 qt_safe_read(int fd, void *data, qint64 maxlen) +{ + qint64 ret = 0; + EINTR_LOOP(ret, QT_READ(fd, data, maxlen)); + return ret; +} +#undef QT_READ +#define QT_READ qt_safe_read + +static inline qint64 qt_safe_write(int fd, const void *data, qint64 len) +{ + qint64 ret = 0; + EINTR_LOOP(ret, QT_WRITE(fd, data, len)); + return ret; +} +#undef QT_WRITE +#define QT_WRITE qt_safe_write + +static inline qint64 qt_safe_write_nosignal(int fd, const void *data, qint64 len) +{ + qt_ignore_sigpipe(); + return qt_safe_write(fd, data, len); +} + +static inline int qt_safe_close(int fd) +{ + int ret; + EINTR_LOOP(ret, QT_CLOSE(fd)); + return ret; +} +#undef QT_CLOSE +#define QT_CLOSE qt_safe_close + +// - VxWorks & iOS/tvOS/watchOS don't have processes +#if QT_CONFIG(process) +static inline int qt_safe_execve(const char *filename, char *const argv[], + char *const envp[]) +{ + int ret; + EINTR_LOOP(ret, ::execve(filename, argv, envp)); + return ret; +} + +static inline int qt_safe_execv(const char *path, char *const argv[]) +{ + int ret; + EINTR_LOOP(ret, ::execv(path, argv)); + return ret; +} + +static inline int qt_safe_execvp(const char *file, char *const argv[]) +{ + int ret; + EINTR_LOOP(ret, ::execvp(file, argv)); + return ret; +} + +static inline pid_t qt_safe_waitpid(pid_t pid, int *status, int options) +{ + int ret; + EINTR_LOOP(ret, ::waitpid(pid, status, options)); + return ret; +} +#endif // QT_CONFIG(process) + +#if !defined(_POSIX_MONOTONIC_CLOCK) +# define _POSIX_MONOTONIC_CLOCK -1 +#endif + +// in qelapsedtimer_mac.cpp or qtimestamp_unix.cpp +timespec qt_gettime() Q_DECL_NOTHROW; +void qt_nanosleep(timespec amount); + +Q_CORE_EXPORT int qt_safe_poll(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout_ts); + +static inline int qt_poll_msecs(struct pollfd *fds, nfds_t nfds, int timeout) +{ + timespec ts, *pts = Q_NULLPTR; + + if (timeout >= 0) { + ts.tv_sec = timeout / 1000; + ts.tv_nsec = (timeout % 1000) * 1000 * 1000; + pts = &ts; + } + + return qt_safe_poll(fds, nfds, pts); +} + +static inline struct pollfd qt_make_pollfd(int fd, short events) +{ + struct pollfd pfd = { fd, events, 0 }; + return pfd; +} + +// according to X/OPEN we have to define semun ourselves +// we use prefix as on some systems sem.h will have it +struct semid_ds; +union qt_semun { + int val; /* value for SETVAL */ + struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */ + unsigned short *array; /* array for GETALL, SETALL */ +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcoreapplication_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcoreapplication_p.h new file mode 100644 index 000000000..c64678629 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcoreapplication_p.h @@ -0,0 +1,176 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOREAPPLICATION_P_H +#define QCOREAPPLICATION_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/qcoreapplication.h" +#include "QtCore/qtranslator.h" +#include "QtCore/qsettings.h" +#ifndef QT_NO_QOBJECT +#include "private/qobject_p.h" +#endif + +QT_BEGIN_NAMESPACE + +typedef QList QTranslatorList; + +class QAbstractEventDispatcher; + +class Q_CORE_EXPORT QCoreApplicationPrivate +#ifndef QT_NO_QOBJECT + : public QObjectPrivate +#endif +{ + Q_DECLARE_PUBLIC(QCoreApplication) + +public: + enum Type { + Tty, + Gui + }; + + QCoreApplicationPrivate(int &aargc, char **aargv, uint flags); + ~QCoreApplicationPrivate(); + + void init(); + + QString appName() const; + QString appVersion() const; + +#ifdef Q_OS_DARWIN + static QString infoDictionaryStringProperty(const QString &propertyName); +#endif + + static void initLocale(); + + static bool checkInstance(const char *method); + +#ifndef QT_NO_QOBJECT + bool sendThroughApplicationEventFilters(QObject *, QEvent *); + static bool sendThroughObjectEventFilters(QObject *, QEvent *); + static bool notify_helper(QObject *, QEvent *); + static inline void setEventSpontaneous(QEvent *e, bool spontaneous) { e->spont = spontaneous; } + + virtual void createEventDispatcher(); + virtual void eventDispatcherReady(); + static void removePostedEvent(QEvent *); +#ifdef Q_OS_WIN + static void removePostedTimerEvent(QObject *object, int timerId); +#endif + + QAtomicInt quitLockRef; + void ref(); + void deref(); + virtual bool shouldQuit() { + return true; + } + void maybeQuit(); + + static QBasicAtomicPointer theMainThread; + static QThread *mainThread(); + static bool threadRequiresCoreApplication(); + + static void sendPostedEvents(QObject *receiver, int event_type, QThreadData *data); + + static void checkReceiverThread(QObject *receiver); + void cleanupThreadData(); +#endif // QT_NO_QOBJECT + + int &argc; + char **argv; +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) + int origArgc; + char **origArgv; // store unmodified arguments for QCoreApplication::arguments() +#endif + void appendApplicationPathToLibraryPaths(void); + +#ifndef QT_NO_TRANSLATION + QTranslatorList translators; + + static bool isTranslatorInstalled(QTranslator *translator); +#endif + + QCoreApplicationPrivate::Type application_type; + + QString cachedApplicationDirPath; + static QString *cachedApplicationFilePath; + static void setApplicationFilePath(const QString &path); + static inline void clearApplicationFilePath() { delete cachedApplicationFilePath; cachedApplicationFilePath = 0; } + +#ifndef QT_NO_QOBJECT + void execCleanup(); + + bool in_exec; + bool aboutToQuitEmitted; + bool threadData_clean; + + static QAbstractEventDispatcher *eventDispatcher; + static bool is_app_running; + static bool is_app_closing; +#endif + + static bool setuidAllowed; + static uint attribs; + static inline bool testAttribute(uint flag) { return attribs & (1 << flag); } + static int app_compile_version; + + 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 + +#endif // QCOREAPPLICATION_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcorecmdlineargs_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcorecmdlineargs_p.h new file mode 100644 index 000000000..33445a162 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcorecmdlineargs_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCORECMDLINEARGS_P_H +#define QCORECMDLINEARGS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qstring.h" +#include "QtCore/qstringlist.h" + +#if defined(Q_OS_WIN) +# ifdef Q_OS_WIN32 +# include // first to suppress min, max macros. +# include +# else +# include "QtCore/qvector.h" +# include +# endif + +QT_BEGIN_NAMESPACE + +#if defined(Q_OS_WIN32) + +static inline QStringList qWinCmdArgs(const QString &cmdLine) +{ + QStringList result; + int size; + if (wchar_t **argv = CommandLineToArgvW((const wchar_t *)cmdLine.utf16(), &size)) { + result.reserve(size); + wchar_t **argvEnd = argv + size; + for (wchar_t **a = argv; a < argvEnd; ++a) + result.append(QString::fromWCharArray(*a)); + LocalFree(argv); + } + return result; +} + +#elif defined(Q_OS_WINRT) // Q_OS_WIN32 + +static inline QStringList qCmdLineArgs(int argc, char *argv[]) +{ + QStringList args; + for (int i = 0; i != argc; ++i) + args += QString::fromLocal8Bit(argv[i]); + return args; +} + +#endif // Q_OS_WINRT + +QT_END_NAMESPACE + +#endif // Q_OS_WIN + +#endif // QCORECMDLINEARGS_WIN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcoreglobaldata_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcoreglobaldata_p.h new file mode 100644 index 000000000..c3c2f7b4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qcoreglobaldata_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOREGLOBALDATA_P_H +#define QCOREGLOBALDATA_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qmap.h" +#include "QtCore/qstringlist.h" +#include "QtCore/qreadwritelock.h" +#include "QtCore/qhash.h" +#include "QtCore/qbytearray.h" +#include "QtCore/qtextcodec.h" +#include "QtCore/qmutex.h" + +QT_BEGIN_NAMESPACE + +typedef QHash QTextCodecCache; + +struct QCoreGlobalData { + QCoreGlobalData(); + ~QCoreGlobalData(); + + QMap dirSearchPaths; + QReadWriteLock dirSearchPathsLock; + +#if QT_CONFIG(textcodec) + QList allCodecs; + QAtomicPointer codecForLocale; + QTextCodecCache codecCache; +#endif + + static QCoreGlobalData *instance(); +}; + + +QT_END_NAMESPACE +#endif // QCOREGLOBALDATA_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdatastream_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdatastream_p.h new file mode 100644 index 000000000..3ca0ae840 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdatastream_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDATASTREAM_P_H +#define QDATASTREAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED) +class QDataStreamPrivate +{ +public: + QDataStreamPrivate() : floatingPointPrecision(QDataStream::DoublePrecision), + transactionDepth(0) { } + + QDataStream::FloatingPointPrecision floatingPointPrecision; + int transactionDepth; +}; +#endif + +QT_END_NAMESPACE + +#endif // QDATASTREAM_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdataurl_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdataurl_p.h new file mode 100644 index 000000000..fd5c7df50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdataurl_p.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDATAURL_P_H +#define QDATAURL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qDecodeDataUrl. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qurl.h" +#include "QtCore/qbytearray.h" +#include "QtCore/qstring.h" +#include "QtCore/qpair.h" + +QT_BEGIN_NAMESPACE + +Q_CORE_EXPORT bool qDecodeDataUrl(const QUrl &url, QString &mimeType, QByteArray &payload); + +QT_END_NAMESPACE + +#endif // QDATAURL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdatetime_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdatetime_p.h new file mode 100644 index 000000000..4d30d4192 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdatetime_p.h @@ -0,0 +1,147 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDATETIME_P_H +#define QDATETIME_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qplatformdefs.h" +#include "QtCore/qatomic.h" +#include "QtCore/qdatetime.h" +#include "QtCore/qpair.h" + +#if QT_CONFIG(timezone) +#include "qtimezone.h" +#endif + +QT_BEGIN_NAMESPACE + +class QDateTimePrivate +{ +public: + // forward the declarations from QDateTime (this makes them public) + typedef QDateTime::ShortData QDateTimeShortData; + typedef QDateTime::Data QDateTimeData; + + // Never change or delete this enum, it is required for backwards compatible + // serialization of QDateTime before 5.2, so is essentially public API + enum Spec { + LocalUnknown = -1, + LocalStandard = 0, + LocalDST = 1, + UTC = 2, + OffsetFromUTC = 3, + TimeZone = 4 + }; + + // Daylight Time Status + enum DaylightStatus { + UnknownDaylightTime = -1, + StandardTime = 0, + DaylightTime = 1 + }; + + // Status of date/time + enum StatusFlag { + ShortData = 0x01, + + ValidDate = 0x02, + ValidTime = 0x04, + ValidDateTime = 0x08, + + TimeSpecMask = 0x30, + + SetToStandardTime = 0x40, + SetToDaylightTime = 0x80 + }; + Q_DECLARE_FLAGS(StatusFlags, StatusFlag) + + enum { + TimeSpecShift = 4, + ValidityMask = ValidDate | ValidTime | ValidDateTime, + DaylightMask = SetToStandardTime | SetToDaylightTime + }; + + QDateTimePrivate() : m_msecs(0), + m_status(StatusFlag(Qt::LocalTime << TimeSpecShift)), + m_offsetFromUtc(0), + ref(0) + { + } + + static QDateTime::Data create(const QDate &toDate, const QTime &toTime, Qt::TimeSpec toSpec, + int offsetSeconds); + +#if QT_CONFIG(timezone) + static QDateTime::Data create(const QDate &toDate, const QTime &toTime, const QTimeZone & timeZone); +#endif // timezone + + qint64 m_msecs; + StatusFlags m_status; + int m_offsetFromUtc; + mutable QAtomicInt ref; +#if QT_CONFIG(timezone) + QTimeZone m_timeZone; +#endif // timezone + +#if QT_CONFIG(timezone) + static qint64 zoneMSecsToEpochMSecs(qint64 msecs, const QTimeZone &zone, + DaylightStatus hint = UnknownDaylightTime, + QDate *localDate = 0, QTime *localTime = 0); + + // Inlined for its one caller in qdatetime.cpp + inline void setUtcOffsetByTZ(qint64 atMSecsSinceEpoch); +#endif // timezone +}; + +QT_END_NAMESPACE + +#endif // QDATETIME_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdatetimeparser_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdatetimeparser_p.h new file mode 100644 index 000000000..39abdf555 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdatetimeparser_p.h @@ -0,0 +1,292 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDATETIMEPARSER_P_H +#define QDATETIMEPARSER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qplatformdefs.h" +#include "QtCore/qatomic.h" +#include "QtCore/qdatetime.h" +#include "QtCore/qstringlist.h" +#include "QtCore/qlocale.h" +#ifndef QT_BOOTSTRAPPED +# include "QtCore/qvariant.h" +#endif +#include "QtCore/qvector.h" +#include "QtCore/qcoreapplication.h" + +QT_REQUIRE_CONFIG(datetimeparser); + +#define QDATETIMEEDIT_TIME_MIN QTime(0, 0, 0, 0) +#define QDATETIMEEDIT_TIME_MAX QTime(23, 59, 59, 999) +#define QDATETIMEEDIT_DATE_MIN QDate(100, 1, 1) +#define QDATETIMEEDIT_COMPAT_DATE_MIN QDate(1752, 9, 14) +#define QDATETIMEEDIT_DATE_MAX QDate(7999, 12, 31) +#define QDATETIMEEDIT_DATETIME_MIN QDateTime(QDATETIMEEDIT_DATE_MIN, QDATETIMEEDIT_TIME_MIN) +#define QDATETIMEEDIT_COMPAT_DATETIME_MIN QDateTime(QDATETIMEEDIT_COMPAT_DATE_MIN, QDATETIMEEDIT_TIME_MIN) +#define QDATETIMEEDIT_DATETIME_MAX QDateTime(QDATETIMEEDIT_DATE_MAX, QDATETIMEEDIT_TIME_MAX) +#define QDATETIMEEDIT_DATE_INITIAL QDate(2000, 1, 1) + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QDateTimeParser +{ + Q_DECLARE_TR_FUNCTIONS(QDateTimeParser) +public: + enum Context { + FromString, + DateTimeEdit + }; + QDateTimeParser(QVariant::Type t, Context ctx) + : currentSectionIndex(-1), display(0), cachedDay(-1), parserType(t), + fixday(false), spec(Qt::LocalTime), context(ctx) + { + defaultLocale = QLocale::system(); + first.type = FirstSection; + first.pos = -1; + first.count = -1; + first.zeroesAdded = 0; + last.type = LastSection; + last.pos = -1; + last.count = -1; + last.zeroesAdded = 0; + none.type = NoSection; + none.pos = -1; + none.count = -1; + none.zeroesAdded = 0; + } + virtual ~QDateTimeParser(); + + enum Section { + NoSection = 0x00000, + AmPmSection = 0x00001, + MSecSection = 0x00002, + SecondSection = 0x00004, + MinuteSection = 0x00008, + Hour12Section = 0x00010, + Hour24Section = 0x00020, + HourSectionMask = (Hour12Section | Hour24Section), + TimeSectionMask = (MSecSection | SecondSection | MinuteSection | + HourSectionMask | AmPmSection), + + DaySection = 0x00100, + MonthSection = 0x00200, + YearSection = 0x00400, + YearSection2Digits = 0x00800, + YearSectionMask = YearSection | YearSection2Digits, + DayOfWeekSectionShort = 0x01000, + DayOfWeekSectionLong = 0x02000, + DayOfWeekSectionMask = DayOfWeekSectionShort | DayOfWeekSectionLong, + DaySectionMask = DaySection | DayOfWeekSectionMask, + DateSectionMask = DaySectionMask | MonthSection | YearSectionMask, + + Internal = 0x10000, + FirstSection = 0x20000 | Internal, + LastSection = 0x40000 | Internal, + CalendarPopupSection = 0x80000 | Internal, + + NoSectionIndex = -1, + FirstSectionIndex = -2, + LastSectionIndex = -3, + CalendarPopupIndex = -4 + }; // extending qdatetimeedit.h's equivalent + Q_DECLARE_FLAGS(Sections, Section) + + struct Q_CORE_EXPORT SectionNode { + Section type; + mutable int pos; + int count; + int zeroesAdded; + + static QString name(Section s); + QString name() const { return name(type); } + QString format() const; + int maxChange() const; + }; + + enum State { // duplicated from QValidator + Invalid, + Intermediate, + Acceptable + }; + + struct StateNode { + StateNode() : state(Invalid), conflicts(false) {} + QString input; + State state; + bool conflicts; + QDateTime value; + }; + + enum AmPm { + AmText, + PmText + }; + + enum Case { + UpperCase, + LowerCase + }; + +#ifndef QT_NO_DATESTRING + StateNode parse(QString &input, int &cursorPosition, const QDateTime ¤tValue, bool fixup) const; +#endif + bool parseFormat(const QString &format); +#ifndef QT_NO_DATESTRING + bool fromString(const QString &text, QDate *date, QTime *time) const; +#endif + + enum FieldInfoFlag { + Numeric = 0x01, + FixedWidth = 0x02, + AllowPartial = 0x04, + Fraction = 0x08 + }; + Q_DECLARE_FLAGS(FieldInfo, FieldInfoFlag) + + FieldInfo fieldInfo(int index) const; + + void setDefaultLocale(const QLocale &loc) { defaultLocale = loc; } + virtual QString displayText() const { return text; } + +private: + int sectionMaxSize(Section s, int count) const; + QString sectionText(const QString &text, int sectionIndex, int index) const; + int parseSection(const QDateTime ¤tValue, int sectionIndex, QString &txt, int &cursorPosition, + int index, QDateTimeParser::State &state, int *used = 0) const; +#ifndef QT_NO_TEXTDATE + int findMonth(const QString &str1, int monthstart, int sectionIndex, + QString *monthName = 0, int *used = 0) const; + int findDay(const QString &str1, int intDaystart, int sectionIndex, + QString *dayName = 0, int *used = 0) const; +#endif + + enum AmPmFinder { + Neither = -1, + AM = 0, + PM = 1, + PossibleAM = 2, + PossiblePM = 3, + PossibleBoth = 4 + }; + AmPmFinder findAmPm(QString &str, int index, int *used = 0) const; + bool potentialValue(const QStringRef &str, int min, int max, int index, + const QDateTime ¤tValue, int insert) const; + bool potentialValue(const QString &str, int min, int max, int index, + const QDateTime ¤tValue, int insert) const + { + return potentialValue(QStringRef(&str), min, max, index, currentValue, insert); + } + +protected: // for the benefit of QDateTimeEditPrivate + int sectionSize(int index) const; + int sectionMaxSize(int index) const; + int sectionPos(int index) const; + int sectionPos(const SectionNode &sn) const; + + const SectionNode §ionNode(int index) const; + Section sectionType(int index) const; + QString sectionText(int sectionIndex) const; + int getDigit(const QDateTime &dt, int index) const; + bool setDigit(QDateTime &t, int index, int newval) const; + + int absoluteMax(int index, const QDateTime &value = QDateTime()) const; + int absoluteMin(int index) const; + + bool skipToNextSection(int section, const QDateTime ¤t, const QStringRef §ionText) const; + bool skipToNextSection(int section, const QDateTime ¤t, const QString §ionText) const + { + return skipToNextSection(section, current, QStringRef(§ionText)); + } + QString stateName(State s) const; + virtual QDateTime getMinimum() const; + virtual QDateTime getMaximum() const; + virtual int cursorPosition() const { return -1; } + virtual QString getAmPmText(AmPm ap, Case cs) const; + virtual QLocale locale() const { return defaultLocale; } + + mutable int currentSectionIndex; + Sections display; + /* + This stores the most recently selected day. + It is useful when considering the following scenario: + + 1. Date is: 31/01/2000 + 2. User increments month: 29/02/2000 + 3. User increments month: 31/03/2000 + + At step 1, cachedDay stores 31. At step 2, the 31 is invalid for February, so the cachedDay is not updated. + At step 3, the month is changed to March, for which 31 is a valid day. Since 29 < 31, the day is set to cachedDay. + This is good for when users have selected their desired day and are scrolling up or down in the month or year section + and do not want smaller months (or non-leap years) to alter the day that they chose. + */ + mutable int cachedDay; + mutable QString text; + QVector sectionNodes; + SectionNode first, last, none, popup; + QStringList separators; + QString displayFormat; + QLocale defaultLocale; + QVariant::Type parserType; + bool fixday; + Qt::TimeSpec spec; // spec if used by QDateTimeEdit + Context context; +}; +Q_DECLARE_TYPEINFO(QDateTimeParser::SectionNode, Q_PRIMITIVE_TYPE); + +Q_CORE_EXPORT bool operator==(const QDateTimeParser::SectionNode &s1, const QDateTimeParser::SectionNode &s2); + +Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeParser::Sections) +Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeParser::FieldInfo) + +QT_END_NAMESPACE + +#endif // QDATETIME_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdeadlinetimer_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdeadlinetimer_p.h new file mode 100644 index 000000000..46e12de6c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdeadlinetimer_p.h @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDEADLINETIMER_P_H +#define QDEADLINETIMER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +enum { +#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) + // t1 contains seconds and t2 contains nanoseconds + QDeadlineTimerNanosecondsInT2 = 1 +#else + // t1 contains nanoseconds, t2 is always zero + QDeadlineTimerNanosecondsInT2 = 0 +#endif +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdebug_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdebug_p.h new file mode 100644 index 000000000..a1887655d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdebug_p.h @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDEBUG_P_H +#define QDEBUG_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qdebug.h" +#include "QtCore/qmetaobject.h" +#include "QtCore/qflags.h" + +QT_BEGIN_NAMESPACE + +namespace QtDebugUtils { + +// inline helpers for formatting basic classes. + +template +static inline void formatQPoint(QDebug &debug, const Point &point) +{ + debug << point.x() << ',' << point.y(); +} + +template +static inline void formatQSize(QDebug &debug, const Size &size) +{ + debug << size.width() << ", " << size.height(); +} + +template +static inline void formatQRect(QDebug &debug, const Rect &rect) +{ + debug << rect.x() << ',' << rect.y() << ' ' << rect.width() << 'x' << rect.height(); +} + +template +static inline void formatQMargins(QDebug &debug, const Margins &margins) +{ + debug << margins.left() << ", " << margins.top() << ", " << margins.right() + << ", " << margins.bottom(); +} + +#ifndef QT_NO_QOBJECT +template +static inline void formatQEnum(QDebug &debug, QEnum value) +{ + const QMetaObject *metaObject = qt_getEnumMetaObject(value); + const QMetaEnum me = metaObject->enumerator(metaObject->indexOfEnumerator(qt_getEnumName(value))); + if (const char *key = me.valueToKey(value)) + debug << key; + else + debug << int(value); +} + +template +static inline void formatNonNullQEnum(QDebug &debug, const char *prefix, QEnum value) +{ + if (value) { + debug << prefix; + formatQEnum(debug, value); + } +} + +template +static inline void formatQFlags(QDebug &debug, const QFlags &value) +{ + const QMetaObject *metaObject = qt_getEnumMetaObject(Enum()); + const QMetaEnum me = metaObject->enumerator(metaObject->indexOfEnumerator(qt_getEnumName(Enum()))); + const QDebugStateSaver saver(debug); + debug.noquote(); + debug << me.valueToKeys(value); +} + +template +static inline void formatNonNullQFlags(QDebug &debug, const char *prefix, const QFlags &value) +{ + if (value) { + debug << prefix; + formatQFlags(debug, value); + } +} + +#endif // !QT_NO_QOBJECT + +} // namespace QtDebugUtils + +QT_END_NAMESPACE + +#endif // QDEBUG_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdir_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdir_p.h new file mode 100644 index 000000000..85d915223 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdir_p.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDIR_P_H +#define QDIR_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 "qfilesystementry_p.h" +#include "qfilesystemmetadata_p.h" + +QT_BEGIN_NAMESPACE + +class QDirPrivate : public QSharedData +{ +public: + explicit QDirPrivate(const QString &path, const QStringList &nameFilters_ = QStringList(), + QDir::SortFlags sort_ = QDir::SortFlags(QDir::Name | QDir::IgnoreCase), + QDir::Filters filters_ = QDir::AllEntries); + + explicit QDirPrivate(const QDirPrivate ©); + + bool exists() const; + + void initFileEngine(); + void initFileLists(const QDir &dir) const; + + static void sortFileList(QDir::SortFlags, QFileInfoList &, QStringList *, QFileInfoList *); + + static inline QChar getFilterSepChar(const QString &nameFilter); + + static inline QStringList splitFilters(const QString &nameFilter, QChar sep = 0); + + void setPath(const QString &path); + + void clearFileLists(); + + void resolveAbsoluteEntry() const; + + mutable bool fileListsInitialized; + mutable QStringList files; + mutable QFileInfoList fileInfos; + + QStringList nameFilters; + QDir::SortFlags sort; + QDir::Filters filters; + + QScopedPointer fileEngine; + + QFileSystemEntry dirEntry; + mutable QFileSystemEntry absoluteDirEntry; + mutable QFileSystemMetaData metaData; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdoublescanprint_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdoublescanprint_p.h new file mode 100644 index 000000000..3865c69a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qdoublescanprint_p.h @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDOUBLESCANPRINT_P_H +#define QDOUBLESCANPRINT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include + +#if defined(Q_CC_MSVC) && (defined(QT_BOOTSTRAPPED) || defined(QT_NO_DOUBLECONVERSION)) +# include +# include + +QT_BEGIN_NAMESPACE + +// We can always use _sscanf_l and _snprintf_l on MSVC as those were introduced in 2005. + +// MSVC doesn't document what it will do with a NULL locale passed to _sscanf_l or _snprintf_l. +// The documentation for _create_locale() does not formally document "C" to be valid, but an example +// code snippet in the same documentation shows it. + +struct QCLocaleT { + QCLocaleT() : locale(_create_locale(LC_ALL, "C")) + { + } + + ~QCLocaleT() + { + _free_locale(locale); + } + + const _locale_t locale; +}; + +# define QT_CLOCALE_HOLDER Q_GLOBAL_STATIC(QCLocaleT, cLocaleT) +# define QT_CLOCALE cLocaleT()->locale + +inline int qDoubleSscanf(const char *buf, _locale_t locale, const char *format, double *d, + int *processed) +{ + return _sscanf_l(buf, format, locale, d, processed); +} + +inline int qDoubleSnprintf(char *buf, size_t buflen, _locale_t locale, const char *format, double d) +{ + return _snprintf_l(buf, buflen, format, locale, d); +} + +QT_END_NAMESPACE + +#elif defined(QT_BOOTSTRAPPED) +# include + +QT_BEGIN_NAMESPACE + +// When bootstrapping we don't have libdouble-conversion available, yet. We can also not use locale +// aware snprintf and sscanf variants in the general case because those are only available on select +// platforms. We can use the regular snprintf and sscanf because we don't do setlocale(3) when +// bootstrapping and the locale is always "C" then. + +# define QT_CLOCALE_HOLDER +# define QT_CLOCALE 0 + +inline int qDoubleSscanf(const char *buf, int, const char *format, double *d, int *processed) +{ + return sscanf(buf, format, d, processed); +} +inline int qDoubleSnprintf(char *buf, size_t buflen, int, const char *format, double d) +{ + return snprintf(buf, buflen, format, d); +} + +QT_END_NAMESPACE + +#else // !QT_BOOTSTRAPPED && (!Q_CC_MSVC || !QT_NO_DOUBLECONVERSION) +# ifdef QT_NO_DOUBLECONVERSION +# include +# include + +QT_BEGIN_NAMESPACE + +// OS X and FreeBSD both treat NULL as the "C" locale for snprintf_l and sscanf_l. +// When other implementations with different behavior show up, we'll have to do newlocale(3) and +// freelocale(3) here. The arguments to those will depend on what the other implementations will +// offer. OS X and FreeBSD again interpret a locale name of NULL as "C", but "C" itself is not +// documented as valid locale name. Mind that the names of the LC_* constants differ between e.g. +// BSD variants and linux. + +# define QT_CLOCALE_HOLDER +# define QT_CLOCALE NULL + +inline int qDoubleSscanf(const char *buf, locale_t locale, const char *format, double *d, + int *processed) +{ + return sscanf_l(buf, locale, format, d, processed); +} +inline int qDoubleSnprintf(char *buf, size_t buflen, locale_t locale, const char *format, double d) +{ + return snprintf_l(buf, buflen, locale, format, d); +} + +QT_END_NAMESPACE + +# else // !QT_NO_DOUBLECONVERSION +# include +# define QT_CLOCALE_HOLDER +# endif // QT_NO_DOUBLECONVERSION +#endif // QT_BOOTSTRAPPED + +#endif // QDOUBLESCANPRINT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qelfparser_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qelfparser_p.h new file mode 100644 index 000000000..3e73c5d14 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qelfparser_p.h @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QELFPARSER_P_H +#define QELFPARSER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_REQUIRE_CONFIG(library); + +#if defined (Q_OF_ELF) && defined(Q_CC_GNU) + +QT_BEGIN_NAMESPACE + +class QString; +class QLibraryPrivate; + +typedef quint16 qelfhalf_t; +typedef quint32 qelfword_t; +typedef quintptr qelfoff_t; +typedef quintptr qelfaddr_t; + +class QElfParser +{ +public: + enum { QtMetaDataSection, NoQtSection, NotElf, Corrupt }; + enum {ElfLittleEndian = 0, ElfBigEndian = 1}; + + struct ElfSectionHeader + { + qelfword_t name; + qelfword_t type; + qelfoff_t offset; + qelfoff_t size; + }; + + int m_endian; + int m_bits; + int m_stringTableFileOffset; + + template + T read(const char *s) + { + if (m_endian == ElfBigEndian) + return qFromBigEndian(s); + else + return qFromLittleEndian(s); + } + + const char *parseSectionHeader(const char* s, ElfSectionHeader *sh); + int parse(const char *m_s, ulong fdlen, const QString &library, QLibraryPrivate *lib, long *pos, ulong *sectionlen); +}; + +QT_END_NAMESPACE + +#endif // defined(Q_OF_ELF) && defined(Q_CC_GNU) + +#endif // QELFPARSER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeucjpcodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeucjpcodec_p.h new file mode 100644 index 000000000..98ad286e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeucjpcodec_p.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Most of the code here was originally written by Serika Kurusugawa +// a.k.a. Junji Takagi, and is included in Qt with the author's permission, +// and the grateful thanks of the Qt team. + +/* + * Copyright (C) 1999 Serika Kurusugawa, All rights reserved. + * + * 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 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 REGENTS 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 QEUCJPCODEC_P_H +#define QEUCJPCODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qjpunicode_p.h" +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_BIG_CODECS + +class QEucJpCodec : public QTextCodec { +public: + static QByteArray _name(); + static QList _aliases() { return QList(); } + static int _mibEnum(); + + QByteArray name() const { return _name(); } + QList aliases() const { return _aliases(); } + int mibEnum() const { return _mibEnum(); } + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; + + QEucJpCodec(); + ~QEucJpCodec(); + +protected: + const QJpUnicodeConv *conv; +}; + +#endif // QT_NO_BIG_CODECS + +QT_END_NAMESPACE + +#endif // QEUCJPCODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeuckrcodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeuckrcodec_p.h new file mode 100644 index 000000000..2cf950a35 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeuckrcodec_p.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* + * Copyright (C) 1999-2000 Mizi Research 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: + * 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 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 REGENTS 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 QEUCKRCODEC_P_H +#define QEUCKRCODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_BIG_CODECS + +class QEucKrCodec : public QTextCodec { +public: + static QByteArray _name(); + static QList _aliases() { return QList(); } + static int _mibEnum(); + + QByteArray name() const { return _name(); } + QList aliases() const { return _aliases(); } + int mibEnum() const { return _mibEnum(); } + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; +}; + +class QCP949Codec : public QTextCodec { +public: + static QByteArray _name(); + static QList _aliases(); + static int _mibEnum(); + + QByteArray name() const { return _name(); } + QList aliases() const { return _aliases(); } + int mibEnum() const { return _mibEnum(); } + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; +}; + +#endif // QT_NO_BIG_CODECS + +QT_END_NAMESPACE + +#endif // QEUCKRCODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_cf_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_cf_p.h new file mode 100644 index 000000000..8a234ebc4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_cf_p.h @@ -0,0 +1,285 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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_CF_P_H +#define QEVENTDISPATCHER_CF_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. +// + +#define DEBUG_EVENT_DISPATCHER 0 + +#include +#include +#include +#include +#include +#include + +Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(RunLoopModeTracker)); + +QT_BEGIN_NAMESPACE + +class QEventDispatcherCoreFoundation; + +template +class RunLoopSource +{ +public: + typedef bool (T::*CallbackFunction)(); + + enum { kHighestPriority = 0 } RunLoopSourcePriority; + + RunLoopSource(T *delegate, CallbackFunction callback) + : m_delegate(delegate), m_callback(callback) + { + CFRunLoopSourceContext context = {}; + context.info = this; + context.perform = RunLoopSource::process; + + m_source = CFRunLoopSourceCreate(kCFAllocatorDefault, kHighestPriority, &context); + Q_ASSERT(m_source); + } + + ~RunLoopSource() + { + CFRunLoopSourceInvalidate(m_source); + CFRelease(m_source); + } + + void addToMode(CFStringRef mode, CFRunLoopRef runLoop = 0) + { + if (!runLoop) + runLoop = CFRunLoopGetCurrent(); + + CFRunLoopAddSource(runLoop, m_source, mode); + } + + void signal() { CFRunLoopSourceSignal(m_source); } + +private: + static void process(void *info) + { + RunLoopSource *self = static_cast(info); + ((self->m_delegate)->*(self->m_callback))(); + } + + T *m_delegate; + CallbackFunction m_callback; + CFRunLoopSourceRef m_source; +}; + +template +class RunLoopObserver +{ +public: + typedef void (T::*CallbackFunction) (CFRunLoopActivity activity); + + RunLoopObserver(T *delegate, CallbackFunction callback, CFOptionFlags activities) + : m_delegate(delegate), m_callback(callback) + { + CFRunLoopObserverContext context = {}; + context.info = this; + + m_observer = CFRunLoopObserverCreate(kCFAllocatorDefault, activities, true, 0, process, &context); + Q_ASSERT(m_observer); + } + + ~RunLoopObserver() + { + CFRunLoopObserverInvalidate(m_observer); + CFRelease(m_observer); + } + + void addToMode(CFStringRef mode, CFRunLoopRef runLoop = 0) + { + if (!runLoop) + runLoop = CFRunLoopGetCurrent(); + + if (!CFRunLoopContainsObserver(runLoop, m_observer, mode)) + CFRunLoopAddObserver(runLoop, m_observer, mode); + } + + void removeFromMode(CFStringRef mode, CFRunLoopRef runLoop = 0) + { + if (!runLoop) + runLoop = CFRunLoopGetCurrent(); + + if (CFRunLoopContainsObserver(runLoop, m_observer, mode)) + CFRunLoopRemoveObserver(runLoop, m_observer, mode); + } + +private: + static void process(CFRunLoopObserverRef, CFRunLoopActivity activity, void *info) + { + RunLoopObserver *self = static_cast(info); + ((self->m_delegate)->*(self->m_callback))(activity); + } + + T *m_delegate; + CallbackFunction m_callback; + CFRunLoopObserverRef m_observer; +}; + +class Q_CORE_EXPORT QEventDispatcherCoreFoundation : public QAbstractEventDispatcher +{ + Q_OBJECT + +public: + explicit QEventDispatcherCoreFoundation(QObject *parent = 0); + ~QEventDispatcherCoreFoundation(); + + bool processEvents(QEventLoop::ProcessEventsFlags flags); + bool hasPendingEvents(); + + void registerSocketNotifier(QSocketNotifier *notifier); + void unregisterSocketNotifier(QSocketNotifier *notifier); + + void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object); + bool unregisterTimer(int timerId); + bool unregisterTimers(QObject *object); + QList registeredTimers(QObject *object) const; + + int remainingTime(int timerId); + + void wakeUp(); + void interrupt(); + void flush(); + +protected: + QEventLoop *currentEventLoop() const; + + virtual bool processPostedEvents(); + + struct ProcessEventsState + { + ProcessEventsState(QEventLoop::ProcessEventsFlags f) + : flags(f), wasInterrupted(false) + , processedPostedEvents(false), processedTimers(false) + , deferredWakeUp(false), deferredUpdateTimers(false) {} + + QEventLoop::ProcessEventsFlags flags; + bool wasInterrupted; + bool processedPostedEvents; + bool processedTimers; + bool deferredWakeUp; + bool deferredUpdateTimers; + }; + + ProcessEventsState m_processEvents; + +private: + RunLoopSource<> m_postedEventsRunLoopSource; + RunLoopObserver<> m_runLoopActivityObserver; + + QT_MANGLE_NAMESPACE(RunLoopModeTracker) *m_runLoopModeTracker; + + QTimerInfoList m_timerInfoList; + CFRunLoopTimerRef m_runLoopTimer; + CFRunLoopTimerRef m_blockedRunLoopTimer; + bool m_overdueTimerScheduled; + + QCFSocketNotifier m_cfSocketNotifier; + + void processTimers(CFRunLoopTimerRef); + + void handleRunLoopActivity(CFRunLoopActivity activity); + + void updateTimers(); + void invalidateTimer(); +}; + +QT_END_NAMESPACE + +#if DEBUG_EVENT_DISPATCHER +extern uint g_eventDispatcherIndentationLevel; +#define qEventDispatcherDebug() qDebug().nospace() \ + << qPrintable(QString(QLatin1String("| ")).repeated(g_eventDispatcherIndentationLevel)) \ + << __FUNCTION__ << "(): " +#define qIndent() ++g_eventDispatcherIndentationLevel +#define qUnIndent() --g_eventDispatcherIndentationLevel +#else +#define qEventDispatcherDebug() QT_NO_QDEBUG_MACRO() +#define qIndent() +#define qUnIndent() +#endif + +#endif // QEVENTDISPATCHER_CF_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_glib_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_glib_p.h new file mode 100644 index 000000000..8e9925d7a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_glib_p.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEVENTDISPATCHER_GLIB_P_H +#define QEVENTDISPATCHER_GLIB_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 QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include "qabstracteventdispatcher.h" +#include "qabstracteventdispatcher_p.h" + +typedef struct _GMainContext GMainContext; + +QT_BEGIN_NAMESPACE + +class QEventDispatcherGlibPrivate; + +class Q_CORE_EXPORT QEventDispatcherGlib : public QAbstractEventDispatcher +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QEventDispatcherGlib) + +public: + explicit QEventDispatcherGlib(QObject *parent = 0); + explicit QEventDispatcherGlib(GMainContext *context, QObject *parent = 0); + ~QEventDispatcherGlib(); + + bool processEvents(QEventLoop::ProcessEventsFlags flags) Q_DECL_OVERRIDE; + bool hasPendingEvents() Q_DECL_OVERRIDE; + + void registerSocketNotifier(QSocketNotifier *socketNotifier) Q_DECL_FINAL; + void unregisterSocketNotifier(QSocketNotifier *socketNotifier) Q_DECL_FINAL; + + void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object) Q_DECL_FINAL; + bool unregisterTimer(int timerId) Q_DECL_FINAL; + bool unregisterTimers(QObject *object) Q_DECL_FINAL; + QList registeredTimers(QObject *object) const Q_DECL_FINAL; + + int remainingTime(int timerId) Q_DECL_FINAL; + + void wakeUp() Q_DECL_FINAL; + void interrupt() Q_DECL_FINAL; + void flush() Q_DECL_FINAL; + + static bool versionSupported(); + +protected: + QEventDispatcherGlib(QEventDispatcherGlibPrivate &dd, QObject *parent); +}; + +struct GPostEventSource; +struct GSocketNotifierSource; +struct GTimerSource; +struct GIdleTimerSource; + +class Q_CORE_EXPORT QEventDispatcherGlibPrivate : public QAbstractEventDispatcherPrivate +{ + +public: + QEventDispatcherGlibPrivate(GMainContext *context = 0); + GMainContext *mainContext; + GPostEventSource *postEventSource; + GSocketNotifierSource *socketNotifierSource; + GTimerSource *timerSource; + GIdleTimerSource *idleTimerSource; + + void runTimersOnceWithNormalPriority(); +}; + +QT_END_NAMESPACE + +#endif // QEVENTDISPATCHER_GLIB_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_unix_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_unix_p.h new file mode 100644 index 000000000..d72804034 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_unix_p.h @@ -0,0 +1,184 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEVENTDISPATCHER_UNIX_P_H +#define QEVENTDISPATCHER_UNIX_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/qabstracteventdispatcher.h" +#include "QtCore/qlist.h" +#include "private/qabstracteventdispatcher_p.h" +#include "private/qcore_unix_p.h" +#include "private/qpodlist_p.h" +#include "QtCore/qvarlengtharray.h" +#include "private/qtimerinfo_unix_p.h" + +QT_BEGIN_NAMESPACE + +class QEventDispatcherUNIXPrivate; + +struct Q_CORE_EXPORT QSocketNotifierSetUNIX Q_DECL_FINAL +{ + inline QSocketNotifierSetUNIX() Q_DECL_NOTHROW; + + inline bool isEmpty() const Q_DECL_NOTHROW; + inline short events() const Q_DECL_NOTHROW; + + QSocketNotifier *notifiers[3]; +}; + +Q_DECLARE_TYPEINFO(QSocketNotifierSetUNIX, Q_PRIMITIVE_TYPE); + +struct QThreadPipe +{ + QThreadPipe(); + ~QThreadPipe(); + + bool init(); + pollfd prepare() const; + + void wakeUp(); + int check(const pollfd &pfd); + + // note for eventfd(7) support: + // if fds[1] is -1, then eventfd(7) is in use and is stored in fds[0] + int fds[2]; + QAtomicInt wakeUps; + +#if defined(Q_OS_VXWORKS) + static const int len_name = 20; + char name[len_name]; +#endif +}; + +class Q_CORE_EXPORT QEventDispatcherUNIX : public QAbstractEventDispatcher +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QEventDispatcherUNIX) + +public: + explicit QEventDispatcherUNIX(QObject *parent = 0); + ~QEventDispatcherUNIX(); + + bool processEvents(QEventLoop::ProcessEventsFlags flags) Q_DECL_OVERRIDE; + bool hasPendingEvents() Q_DECL_OVERRIDE; + + void registerSocketNotifier(QSocketNotifier *notifier) Q_DECL_FINAL; + void unregisterSocketNotifier(QSocketNotifier *notifier) Q_DECL_FINAL; + + void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object) Q_DECL_FINAL; + bool unregisterTimer(int timerId) Q_DECL_FINAL; + bool unregisterTimers(QObject *object) Q_DECL_FINAL; + QList registeredTimers(QObject *object) const Q_DECL_FINAL; + + int remainingTime(int timerId) Q_DECL_FINAL; + + void wakeUp() Q_DECL_FINAL; + void interrupt() Q_DECL_FINAL; + void flush() Q_DECL_OVERRIDE; + +protected: + QEventDispatcherUNIX(QEventDispatcherUNIXPrivate &dd, QObject *parent = 0); +}; + +class Q_CORE_EXPORT QEventDispatcherUNIXPrivate : public QAbstractEventDispatcherPrivate +{ + Q_DECLARE_PUBLIC(QEventDispatcherUNIX) + +public: + QEventDispatcherUNIXPrivate(); + ~QEventDispatcherUNIXPrivate(); + + int activateTimers(); + + void markPendingSocketNotifiers(); + int activateSocketNotifiers(); + void setSocketNotifierPending(QSocketNotifier *notifier); + + QThreadPipe threadPipe; + QVector pollfds; + + QHash socketNotifiers; + QVector pendingNotifiers; + + QTimerInfoList timerList; + QAtomicInt interrupt; // bool +}; + +inline QSocketNotifierSetUNIX::QSocketNotifierSetUNIX() Q_DECL_NOTHROW +{ + notifiers[0] = 0; + notifiers[1] = 0; + notifiers[2] = 0; +} + +inline bool QSocketNotifierSetUNIX::isEmpty() const Q_DECL_NOTHROW +{ + return !notifiers[0] && !notifiers[1] && !notifiers[2]; +} + +inline short QSocketNotifierSetUNIX::events() const Q_DECL_NOTHROW +{ + short result = 0; + + if (notifiers[0]) + result |= POLLIN; + + if (notifiers[1]) + result |= POLLOUT; + + if (notifiers[2]) + result |= POLLPRI; + + return result; +} + +QT_END_NAMESPACE + +#endif // QEVENTDISPATCHER_UNIX_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_win_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_win_p.h new file mode 100644 index 000000000..f6d1bffdf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_win_p.h @@ -0,0 +1,204 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEVENTDISPATCHER_WIN_P_H +#define QEVENTDISPATCHER_WIN_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/qabstracteventdispatcher.h" +#include "QtCore/qt_windows.h" +#include "QtCore/qhash.h" + +#include "qabstracteventdispatcher_p.h" + +QT_BEGIN_NAMESPACE + +class QWinEventNotifier; +class QEventDispatcherWin32Private; + +// forward declaration +LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPARAM lp); +quint64 qt_msectime(); + +class Q_CORE_EXPORT QEventDispatcherWin32 : public QAbstractEventDispatcher +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QEventDispatcherWin32) + +protected: + void createInternalHwnd(); + void installMessageHook(); + void uninstallMessageHook(); + +public: + explicit QEventDispatcherWin32(QObject *parent = 0); + ~QEventDispatcherWin32(); + + bool QT_ENSURE_STACK_ALIGNED_FOR_SSE processEvents(QEventLoop::ProcessEventsFlags flags); + bool hasPendingEvents(); + + void registerSocketNotifier(QSocketNotifier *notifier); + void unregisterSocketNotifier(QSocketNotifier *notifier); + + void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object); + bool unregisterTimer(int timerId); + bool unregisterTimers(QObject *object); + QList registeredTimers(QObject *object) const; + + bool registerEventNotifier(QWinEventNotifier *notifier); + void unregisterEventNotifier(QWinEventNotifier *notifier); + void activateEventNotifiers(); + + int remainingTime(int timerId); + + void wakeUp(); + void interrupt(); + void flush(); + + void startingUp(); + void closingDown(); + + bool event(QEvent *e); + + HWND internalHwnd(); + +protected: + QEventDispatcherWin32(QEventDispatcherWin32Private &dd, QObject *parent = 0); + virtual void sendPostedEvents(); + void doUnregisterSocketNotifier(QSocketNotifier *notifier); + +private: + friend LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPARAM lp); + friend LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int, WPARAM, LPARAM); +}; + +struct QSockNot { + QSocketNotifier *obj; + int fd; +}; +typedef QHash QSNDict; + +struct QSockFd { + long event; + long mask; + bool selected; + + explicit inline QSockFd(long ev = 0, long ma = 0) : event(ev), mask(ma), selected(false) { } +}; +typedef QHash QSFDict; + +struct WinTimerInfo { // internal timer info + QObject *dispatcher; + int timerId; + int interval; + Qt::TimerType timerType; + quint64 timeout; // - when to actually fire + QObject *obj; // - object to receive events + bool inTimerEvent; + UINT fastTimerId; +}; + +class QZeroTimerEvent : public QTimerEvent +{ +public: + explicit inline QZeroTimerEvent(int timerId) + : QTimerEvent(timerId) + { t = QEvent::ZeroTimerEvent; } +}; + +typedef QList WinTimerVec; // vector of TimerInfo structs +typedef QHash WinTimerDict; // fast dict of timers + +class Q_CORE_EXPORT QEventDispatcherWin32Private : public QAbstractEventDispatcherPrivate +{ + Q_DECLARE_PUBLIC(QEventDispatcherWin32) +public: + QEventDispatcherWin32Private(); + ~QEventDispatcherWin32Private(); + + DWORD threadId; + + bool interrupt; + bool closingDown; + + // internal window handle used for socketnotifiers/timers/etc + HWND internalHwnd; + HHOOK getMessageHook; + + // for controlling when to send posted events + QAtomicInt serialNumber; + int lastSerialNumber, sendPostedEventsWindowsTimerId; + QAtomicInt wakeUps; + + // timers + WinTimerVec timerVec; + WinTimerDict timerDict; + void registerTimer(WinTimerInfo *t); + void unregisterTimer(WinTimerInfo *t); + void sendTimerEvent(int timerId); + + // socket notifiers + QSNDict sn_read; + QSNDict sn_write; + QSNDict sn_except; + QSFDict active_fd; + bool activateNotifiersPosted; + void postActivateSocketNotifiers(); + void doWsaAsyncSelect(int socket, long event); + + QList winEventNotifierList; + void activateEventNotifier(QWinEventNotifier * wen); + + QList queuedUserInputEvents; + QList queuedSocketEvents; +}; + +QT_END_NAMESPACE + +#endif // QEVENTDISPATCHER_WIN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_winrt_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_winrt_p.h new file mode 100644 index 000000000..f69bb9cf3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventdispatcher_winrt_p.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QEVENTDISPATCHER_WINRT_P_H +#define QEVENTDISPATCHER_WINRT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qabstracteventdispatcher.h" + +#include + +namespace std { template class function; } + +QT_BEGIN_NAMESPACE + +quint64 qt_msectime(); + +class QEventDispatcherWinRTPrivate; + +class Q_CORE_EXPORT QEventDispatcherWinRT : public QAbstractEventDispatcher +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QEventDispatcherWinRT) + +public: + explicit QEventDispatcherWinRT(QObject *parent = 0); + ~QEventDispatcherWinRT(); + + static HRESULT runOnXamlThread(const std::function &delegate, bool waitForRun = true); + + bool processEvents(QEventLoop::ProcessEventsFlags flags); + bool hasPendingEvents(); + + void registerSocketNotifier(QSocketNotifier *notifier); + void unregisterSocketNotifier(QSocketNotifier *notifier); + + void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object); + bool unregisterTimer(int timerId); + bool unregisterTimers(QObject *object); + QList registeredTimers(QObject *object) const; + + int remainingTime(int timerId); + + bool registerEventNotifier(QWinEventNotifier *notifier); + void unregisterEventNotifier(QWinEventNotifier *notifier); + + void wakeUp(); + void interrupt(); + void flush(); + + void startingUp(); + void closingDown(); + +protected: + QEventDispatcherWinRT(QEventDispatcherWinRTPrivate &dd, QObject *parent = 0); + + virtual bool sendPostedEvents(QEventLoop::ProcessEventsFlags flags); + bool event(QEvent *); + int activateTimers(); +}; + +QT_END_NAMESPACE + +#endif // QEVENTDISPATCHER_WINRT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventloop_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventloop_p.h new file mode 100644 index 000000000..dcbb5c63c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventloop_p.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEVENTLOOP_P_H +#define QEVENTLOOP_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 "qcoreapplication.h" +#include "qobject_p.h" + +QT_BEGIN_NAMESPACE + +class QEventLoopPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QEventLoop) +public: + inline QEventLoopPrivate() + : inExec(false) + { + returnCode.store(-1); + exit.store(true); + } + + QAtomicInt quitLockRef; + + QBasicAtomicInt exit; // bool + QBasicAtomicInt returnCode; + bool inExec; + + void ref() + { + quitLockRef.ref(); + } + + void deref() + { + if (!quitLockRef.deref() && inExec) { + qApp->postEvent(q_ptr, new QEvent(QEvent::Quit)); + } + } +}; + +QT_END_NAMESPACE + +#endif // QEVENTLOOP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventtransition_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventtransition_p.h new file mode 100644 index 000000000..e30e12bc8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qeventtransition_p.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEVENTTRANSITION_P_H +#define QEVENTTRANSITION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qabstracttransition_p.h" + +QT_REQUIRE_CONFIG(qeventtransition); + +QT_BEGIN_NAMESPACE + +class QEventTransition; +class Q_CORE_EXPORT QEventTransitionPrivate : public QAbstractTransitionPrivate +{ + Q_DECLARE_PUBLIC(QEventTransition) +public: + QEventTransitionPrivate(); + ~QEventTransitionPrivate(); + + static QEventTransitionPrivate *get(QEventTransition *q) + { return q->d_func(); } + + void unregister(); + void maybeRegister(); + + QObject *object; + bool registered; + QEvent::Type eventType; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfactoryloader_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfactoryloader_p.h new file mode 100644 index 000000000..7be18942a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfactoryloader_p.h @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFACTORYLOADER_P_H +#define QFACTORYLOADER_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/qglobal.h" +#ifndef QT_NO_QOBJECT + +#include "QtCore/qobject.h" +#include "QtCore/qstringlist.h" +#include "QtCore/qjsonobject.h" +#include "QtCore/qjsondocument.h" +#include "QtCore/qmap.h" +#include "QtCore/qendian.h" +#if QT_CONFIG(library) +#include "private/qlibrary_p.h" +#endif + +QT_BEGIN_NAMESPACE + +inline QJsonDocument qJsonFromRawLibraryMetaData(const char *raw) +{ + raw += strlen("QTMETADATA "); + // the size of the embedded JSON object can be found 8 bytes into the data (see qjson_p.h), + // but doesn't include the size of the header (8 bytes) + QByteArray json(raw, qFromLittleEndian(*(const uint *)(raw + 8)) + 8); + return QJsonDocument::fromBinaryData(json); +} + +class QFactoryLoaderPrivate; +class Q_CORE_EXPORT QFactoryLoader : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QFactoryLoader) + +public: + explicit QFactoryLoader(const char *iid, + const QString &suffix = QString(), + Qt::CaseSensitivity = Qt::CaseSensitive); + +#if QT_CONFIG(library) + ~QFactoryLoader(); + + void update(); + static void refreshAll(); + +#if defined(Q_OS_UNIX) && !defined (Q_OS_MAC) + QLibraryPrivate *library(const QString &key) const; +#endif // Q_OS_UNIX && !Q_OS_MAC +#endif // QT_CONFIG(library) + + QMultiMap keyMap() const; + int indexOf(const QString &needle) const; + + QList metaData() const; + QObject *instance(int index) const; +}; + +template +PluginInterface *qLoadPlugin(const QFactoryLoader *loader, const QString &key, Args &&...args) +{ + const int index = loader->indexOf(key); + if (index != -1) { + QObject *factoryObject = loader->instance(index); + if (FactoryInterface *factory = qobject_cast(factoryObject)) + if (PluginInterface *result = factory->create(key, std::forward(args)...)) + return result; + } + return nullptr; +} + +template +Q_DECL_DEPRECATED PluginInterface *qLoadPlugin1(const QFactoryLoader *loader, const QString &key, Arg &&arg) +{ return qLoadPlugin(loader, key, std::forward(arg)); } + +QT_END_NAMESPACE + +#endif // QT_NO_QOBJECT + +#endif // QFACTORYLOADER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfile_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfile_p.h new file mode 100644 index 000000000..545890c6b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfile_p.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILE_P_H +#define QFILE_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 "qfile.h" +#include "private/qfiledevice_p.h" + +QT_BEGIN_NAMESPACE + +class QTemporaryFile; + +class QFilePrivate : public QFileDevicePrivate +{ + Q_DECLARE_PUBLIC(QFile) + friend class QTemporaryFile; + +protected: + QFilePrivate(); + ~QFilePrivate(); + + bool openExternalFile(int flags, int fd, QFile::FileHandleFlags handleFlags); + bool openExternalFile(int flags, FILE *fh, QFile::FileHandleFlags handleFlags); + + QAbstractFileEngine *engine() const override; + + QString fileName; +}; + +QT_END_NAMESPACE + +#endif // QFILE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfiledevice_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfiledevice_p.h new file mode 100644 index 000000000..60c51afb7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfiledevice_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILEDEVICE_P_H +#define QFILEDEVICE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qiodevice_p.h" + +QT_BEGIN_NAMESPACE + +class QAbstractFileEngine; +class QFSFileEngine; + +class QFileDevicePrivate : public QIODevicePrivate +{ + Q_DECLARE_PUBLIC(QFileDevice) +protected: + QFileDevicePrivate(); + ~QFileDevicePrivate(); + + virtual QAbstractFileEngine *engine() const; + + inline bool ensureFlushed() const; + + bool putCharHelper(char c) Q_DECL_OVERRIDE; + + void setError(QFileDevice::FileError err); + void setError(QFileDevice::FileError err, const QString &errorString); + void setError(QFileDevice::FileError err, int errNum); + + mutable QAbstractFileEngine *fileEngine; + mutable qint64 cachedSize; + + QFileDevice::FileHandleFlags handleFlags; + QFileDevice::FileError error; + + bool lastWasWrite; +}; + +inline bool QFileDevicePrivate::ensureFlushed() const +{ + // This function ensures that the write buffer has been flushed (const + // because certain const functions need to call it. + if (lastWasWrite) { + const_cast(this)->lastWasWrite = false; + if (!const_cast(q_func())->flush()) + return false; + } + return true; +} + +QT_END_NAMESPACE + +#endif // QFILEDEVICE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfileinfo_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfileinfo_p.h new file mode 100644 index 000000000..806df179e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfileinfo_p.h @@ -0,0 +1,183 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILEINFO_P_H +#define QFILEINFO_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 "qfileinfo.h" +#include "qdatetime.h" +#include "qatomic.h" +#include "qshareddata.h" +#include "qfilesystemengine_p.h" +#include "qvector.h" + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QFileInfoPrivate : public QSharedData +{ +public: + enum { CachedFileFlags=0x01, CachedLinkTypeFlag=0x02, CachedBundleTypeFlag=0x04, + CachedMTime=0x10, CachedCTime=0x20, CachedATime=0x40, + CachedSize =0x08, CachedPerms=0x80 }; + + inline QFileInfoPrivate() + : QSharedData(), fileEngine(0), + cachedFlags(0), + isDefaultConstructed(true), + cache_enabled(true), fileFlags(0), fileSize(0) + {} + inline QFileInfoPrivate(const QFileInfoPrivate ©) + : QSharedData(copy), + fileEntry(copy.fileEntry), + metaData(copy.metaData), + fileEngine(QFileSystemEngine::resolveEntryAndCreateLegacyEngine(fileEntry, metaData)), + cachedFlags(0), +#ifndef QT_NO_FSFILEENGINE + isDefaultConstructed(false), +#else + isDefaultConstructed(!fileEngine), +#endif + cache_enabled(copy.cache_enabled), fileFlags(0), fileSize(0) + {} + inline QFileInfoPrivate(const QString &file) + : fileEntry(QDir::fromNativeSeparators(file)), + fileEngine(QFileSystemEngine::resolveEntryAndCreateLegacyEngine(fileEntry, metaData)), + cachedFlags(0), +#ifndef QT_NO_FSFILEENGINE + isDefaultConstructed(false), +#else + isDefaultConstructed(!fileEngine), +#endif + cache_enabled(true), fileFlags(0), fileSize(0) + { + } + + inline QFileInfoPrivate(const QFileSystemEntry &file, const QFileSystemMetaData &data) + : QSharedData(), + fileEntry(file), + metaData(data), + fileEngine(QFileSystemEngine::resolveEntryAndCreateLegacyEngine(fileEntry, metaData)), + cachedFlags(0), + isDefaultConstructed(false), + cache_enabled(true), fileFlags(0), fileSize(0) + { + //If the file engine is not null, this maybe a "mount point" for a custom file engine + //in which case we can't trust the metadata + if (fileEngine) + metaData = QFileSystemMetaData(); + } + + inline QFileInfoPrivate(const QFileSystemEntry &file, const QFileSystemMetaData &data, QAbstractFileEngine *engine) + : fileEntry(file), + metaData(data), + fileEngine(engine), + cachedFlags(0), +#ifndef QT_NO_FSFILEENGINE + isDefaultConstructed(false), +#else + isDefaultConstructed(!fileEngine), +#endif + cache_enabled(true), fileFlags(0), fileSize(0) + { + } + + inline void clearFlags() const { + fileFlags = 0; + cachedFlags = 0; + if (fileEngine) + (void)fileEngine->fileFlags(QAbstractFileEngine::Refresh); + } + inline void clear() { + metaData.clear(); + clearFlags(); + for (int i = QAbstractFileEngine::NFileNames - 1 ; i >= 0 ; --i) + fileNames[i].clear(); + fileOwners[1].clear(); + fileOwners[0].clear(); + } + + uint getFileFlags(QAbstractFileEngine::FileFlags) const; + QDateTime &getFileTime(QAbstractFileEngine::FileTime) const; + QString getFileName(QAbstractFileEngine::FileName) const; + QString getFileOwner(QAbstractFileEngine::FileOwner own) const; + + QFileSystemEntry fileEntry; + mutable QFileSystemMetaData metaData; + + QScopedPointer const fileEngine; + + mutable QString fileNames[QAbstractFileEngine::NFileNames]; + mutable QString fileOwners[2]; + + mutable uint cachedFlags : 30; + bool const isDefaultConstructed : 1; // QFileInfo is a default constructed instance + bool cache_enabled : 1; + mutable uint fileFlags; + mutable qint64 fileSize; + // ### Qt6: FIXME: This vector is essentially a plain array + // mutable QDateTime fileTimes[3], but the array is slower + // to initialize than the QVector as QDateTime has a pimpl. + // In Qt 6, QDateTime should inline its data members, + // and this here can be an array again. + mutable QVector fileTimes; + inline bool getCachedFlag(uint c) const + { return cache_enabled ? (cachedFlags & c) : 0; } + inline void setCachedFlag(uint c) const + { if (cache_enabled) cachedFlags |= c; } + +}; + +QT_END_NAMESPACE + +#endif // QFILEINFO_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfileselector_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfileselector_p.h new file mode 100644 index 000000000..024d0b190 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfileselector_p.h @@ -0,0 +1,84 @@ +/*************************************************************************** +** +** Copyright (C) 2013 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESELECTOR_P_H +#define QFILESELECTOR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +struct QFileSelectorSharedData //Not QSharedData because currently is just a global store +{ + QStringList staticSelectors; + QStringList preloadedStatics; +}; + +class Q_CORE_EXPORT QFileSelectorPrivate : QObjectPrivate //Exported for use in other modules (like QtGui) +{ + Q_DECLARE_PUBLIC(QFileSelector) +public: + static void updateSelectors(); + static QStringList platformSelectors(); + static void addStatics(const QStringList &); //For loading GUI statics from other Qt modules + static QString selectionHelper(const QString &path, const QString &fileName, + const QStringList &selectors, const QChar &indicator = QLatin1Char('+')); + QFileSelectorPrivate(); + QString select(const QString &filePath) const; + + QStringList extras; +}; + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemengine_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemengine_p.h new file mode 100644 index 000000000..e3e52f6ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemengine_p.h @@ -0,0 +1,143 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMENGINE_P_H +#define QFILESYSTEMENGINE_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 "qfile.h" +#include "qfilesystementry_p.h" +#include "qfilesystemmetadata_p.h" +#include + +QT_BEGIN_NAMESPACE + +class QFileSystemEngine +{ +public: + static bool isCaseSensitive() + { +#ifndef Q_OS_WIN + return true; +#else + return false; +#endif + } + + static QFileSystemEntry getLinkTarget(const QFileSystemEntry &link, QFileSystemMetaData &data); + static QFileSystemEntry canonicalName(const QFileSystemEntry &entry, QFileSystemMetaData &data); + static QFileSystemEntry absoluteName(const QFileSystemEntry &entry); + static QByteArray id(const QFileSystemEntry &entry); + static QString resolveUserName(const QFileSystemEntry &entry, QFileSystemMetaData &data); + static QString resolveGroupName(const QFileSystemEntry &entry, QFileSystemMetaData &data); + +#if defined(Q_OS_UNIX) + static QString resolveUserName(uint userId); + static QString resolveGroupName(uint groupId); +#endif + +#if defined(Q_OS_DARWIN) + static QString bundleName(const QFileSystemEntry &entry); +#else + static QString bundleName(const QFileSystemEntry &entry) { Q_UNUSED(entry) return QString(); } +#endif + + static bool fillMetaData(const QFileSystemEntry &entry, QFileSystemMetaData &data, + QFileSystemMetaData::MetaDataFlags what); +#if defined(Q_OS_UNIX) + static bool fillMetaData(int fd, QFileSystemMetaData &data); // what = PosixStatFlags + static QByteArray id(int fd); + static bool setPermissions(int fd, QFile::Permissions permissions, QSystemError &error, + QFileSystemMetaData *data = nullptr); +#endif +#if defined(Q_OS_WIN) + + static bool uncListSharesOnServer(const QString &server, QStringList *list); //Used also by QFSFileEngineIterator::hasNext() + static bool fillMetaData(int fd, QFileSystemMetaData &data, + QFileSystemMetaData::MetaDataFlags what); + static bool fillMetaData(HANDLE fHandle, QFileSystemMetaData &data, + QFileSystemMetaData::MetaDataFlags what); + static bool fillPermissions(const QFileSystemEntry &entry, QFileSystemMetaData &data, + QFileSystemMetaData::MetaDataFlags what); + static QByteArray id(HANDLE fHandle); + static QString owner(const QFileSystemEntry &entry, QAbstractFileEngine::FileOwner own); + static QString nativeAbsoluteFilePath(const QString &path); +#endif + //homePath, rootPath and tempPath shall return clean paths + static QString homePath(); + static QString rootPath(); + static QString tempPath(); + + static bool createDirectory(const QFileSystemEntry &entry, bool createParents); + static bool removeDirectory(const QFileSystemEntry &entry, bool removeEmptyParents); + + static bool createLink(const QFileSystemEntry &source, const QFileSystemEntry &target, QSystemError &error); + + static bool copyFile(const QFileSystemEntry &source, const QFileSystemEntry &target, QSystemError &error); + static bool renameFile(const QFileSystemEntry &source, const QFileSystemEntry &target, QSystemError &error); + static bool removeFile(const QFileSystemEntry &entry, QSystemError &error); + + static bool setPermissions(const QFileSystemEntry &entry, QFile::Permissions permissions, QSystemError &error, + QFileSystemMetaData *data = 0); + + static bool setCurrentPath(const QFileSystemEntry &entry); + static QFileSystemEntry currentPath(); + + static QAbstractFileEngine *resolveEntryAndCreateLegacyEngine(QFileSystemEntry &entry, + QFileSystemMetaData &data); +private: + static QString slowCanonicalized(const QString &path); +#if defined(Q_OS_WIN) + static void clearWinStatData(QFileSystemMetaData &data); +#endif +}; + +QT_END_NAMESPACE + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystementry_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystementry_p.h new file mode 100644 index 000000000..700696d09 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystementry_p.h @@ -0,0 +1,129 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMENTRY_P_H +#define QFILESYSTEMENTRY_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#if defined(Q_OS_WIN) +#define QFILESYSTEMENTRY_NATIVE_PATH_IS_UTF16 +#endif + +QT_BEGIN_NAMESPACE + +class QFileSystemEntry +{ +public: + +#ifndef QFILESYSTEMENTRY_NATIVE_PATH_IS_UTF16 + typedef QByteArray NativePath; +#else + typedef QString NativePath; +#endif + struct FromNativePath{}; + struct FromInternalPath{}; + + QFileSystemEntry(); + explicit QFileSystemEntry(const QString &filePath); + + QFileSystemEntry(const QString &filePath, FromInternalPath dummy); + QFileSystemEntry(const NativePath &nativeFilePath, FromNativePath dummy); + QFileSystemEntry(const QString &filePath, const NativePath &nativeFilePath); + + QString filePath() const; + QString fileName() const; + QString path() const; + NativePath nativeFilePath() const; + QString baseName() const; + QString completeBaseName() const; + QString suffix() const; + QString completeSuffix() const; + bool isAbsolute() const; + bool isRelative() const; + bool isClean() const; + +#if defined(Q_OS_WIN) + bool isDriveRoot() const; + static bool isDriveRootPath(const QString &path); +#endif + bool isRoot() const; + + bool isEmpty() const; + void clear() + { + *this = QFileSystemEntry(); + } + + Q_CORE_EXPORT static bool isRootPath(const QString &path); + +private: + // creates the QString version out of the bytearray version + void resolveFilePath() const; + // creates the bytearray version out of the QString version + void resolveNativeFilePath() const; + // resolves the separator + void findLastSeparator() const; + // resolves the dots and the separator + void findFileNameSeparators() const; + + mutable QString m_filePath; // always has slashes as separator + mutable NativePath m_nativeFilePath; // native encoding and separators + + mutable qint16 m_lastSeparator; // index in m_filePath of last separator + mutable qint16 m_firstDotInFileName; // index after m_filePath for first dot (.) + mutable qint16 m_lastDotInFileName; // index after m_firstDotInFileName for last dot (.) +}; + +QT_END_NAMESPACE + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemiterator_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemiterator_p.h new file mode 100644 index 000000000..081487e66 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemiterator_p.h @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMITERATOR_P_H +#define QFILESYSTEMITERATOR_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 + +#ifndef QT_NO_FILESYSTEMITERATOR + +#include +#include +#include + +#include +#include + +// Platform-specific headers +#if !defined(Q_OS_WIN) +#include +#endif + +QT_BEGIN_NAMESPACE + +class QFileSystemIterator +{ +public: + QFileSystemIterator(const QFileSystemEntry &entry, QDir::Filters filters, + const QStringList &nameFilters, QDirIterator::IteratorFlags flags + = QDirIterator::FollowSymlinks | QDirIterator::Subdirectories); + ~QFileSystemIterator(); + + bool advance(QFileSystemEntry &fileEntry, QFileSystemMetaData &metaData); + +private: + QFileSystemEntry::NativePath nativePath; + + // Platform-specific data +#if defined(Q_OS_WIN) + QString dirPath; + HANDLE findFileHandle; + QStringList uncShares; + bool uncFallback; + int uncShareIndex; + bool onlyDirs; +#else + QT_DIR *dir; + QT_DIRENT *dirEntry; + int lastError; +#endif + + Q_DISABLE_COPY(QFileSystemIterator) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_FILESYSTEMITERATOR + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemmetadata_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemmetadata_p.h new file mode 100644 index 000000000..b09223d65 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemmetadata_p.h @@ -0,0 +1,363 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMMETADATA_P_H +#define QFILESYSTEMMETADATA_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 "qplatformdefs.h" +#include +#include +#include + +// Platform-specific includes +#ifdef Q_OS_WIN +# include +# ifndef IO_REPARSE_TAG_SYMLINK +# define IO_REPARSE_TAG_SYMLINK (0xA000000CL) +# endif +#endif + +QT_BEGIN_NAMESPACE + +class QFileSystemEngine; + +class Q_AUTOTEST_EXPORT QFileSystemMetaData +{ +public: + QFileSystemMetaData() + : knownFlagsMask(0), + size_(-1) + { + } + + enum MetaDataFlag { + // Permissions, overlaps with QFile::Permissions + OtherReadPermission = 0x00000004, OtherWritePermission = 0x00000002, OtherExecutePermission = 0x00000001, + GroupReadPermission = 0x00000040, GroupWritePermission = 0x00000020, GroupExecutePermission = 0x00000010, + UserReadPermission = 0x00000400, UserWritePermission = 0x00000200, UserExecutePermission = 0x00000100, + OwnerReadPermission = 0x00004000, OwnerWritePermission = 0x00002000, OwnerExecutePermission = 0x00001000, + + OtherPermissions = OtherReadPermission | OtherWritePermission | OtherExecutePermission, + GroupPermissions = GroupReadPermission | GroupWritePermission | GroupExecutePermission, + UserPermissions = UserReadPermission | UserWritePermission | UserExecutePermission, + OwnerPermissions = OwnerReadPermission | OwnerWritePermission | OwnerExecutePermission, + + ReadPermissions = OtherReadPermission | GroupReadPermission | UserReadPermission | OwnerReadPermission, + WritePermissions = OtherWritePermission | GroupWritePermission | UserWritePermission | OwnerWritePermission, + ExecutePermissions = OtherExecutePermission | GroupExecutePermission | UserExecutePermission | OwnerExecutePermission, + + Permissions = OtherPermissions | GroupPermissions | UserPermissions | OwnerPermissions, + + // Type + LinkType = 0x00010000, + FileType = 0x00020000, + DirectoryType = 0x00040000, +#if defined(Q_OS_DARWIN) + BundleType = 0x00080000, + AliasType = 0x08000000, +#else + BundleType = 0x0, + AliasType = 0x0, +#endif +#if defined(Q_OS_WIN) + WinLnkType = 0x08000000, // Note: Uses the same position for AliasType on Mac +#else + WinLnkType = 0x0, +#endif + SequentialType = 0x00800000, // Note: overlaps with QAbstractFileEngine::RootFlag + + LegacyLinkType = LinkType | AliasType | WinLnkType, + + Type = LinkType | FileType | DirectoryType | BundleType | SequentialType | AliasType, + + // Attributes + HiddenAttribute = 0x00100000, + SizeAttribute = 0x00200000, // Note: overlaps with QAbstractFileEngine::LocalDiskFlag + ExistsAttribute = 0x00400000, + + Attributes = HiddenAttribute | SizeAttribute | ExistsAttribute, + + // Times + CreationTime = 0x01000000, // Note: overlaps with QAbstractFileEngine::Refresh + ModificationTime = 0x02000000, + AccessTime = 0x04000000, + + Times = CreationTime | ModificationTime | AccessTime, + + // Owner IDs + UserId = 0x10000000, + GroupId = 0x20000000, + + OwnerIds = UserId | GroupId, + + PosixStatFlags = QFileSystemMetaData::OtherPermissions + | QFileSystemMetaData::GroupPermissions + | QFileSystemMetaData::OwnerPermissions + | QFileSystemMetaData::FileType + | QFileSystemMetaData::DirectoryType + | QFileSystemMetaData::SequentialType + | QFileSystemMetaData::SizeAttribute + | QFileSystemMetaData::Times + | QFileSystemMetaData::OwnerIds, + +#if defined(Q_OS_WIN) + WinStatFlags = QFileSystemMetaData::FileType + | QFileSystemMetaData::DirectoryType + | QFileSystemMetaData::HiddenAttribute + | QFileSystemMetaData::ExistsAttribute + | QFileSystemMetaData::SizeAttribute + | QFileSystemMetaData::Times, +#endif + + AllMetaDataFlags = 0xFFFFFFFF + + }; + Q_DECLARE_FLAGS(MetaDataFlags, MetaDataFlag) + + bool hasFlags(MetaDataFlags flags) const + { + return ((knownFlagsMask & flags) == flags); + } + + MetaDataFlags missingFlags(MetaDataFlags flags) + { + return flags & ~knownFlagsMask; + } + + void clear() + { + knownFlagsMask = 0; + } + + void clearFlags(MetaDataFlags flags = AllMetaDataFlags) + { + knownFlagsMask &= ~flags; + } + + bool exists() const { return (entryFlags & ExistsAttribute); } + + bool isLink() const { return (entryFlags & LinkType); } + bool isFile() const { return (entryFlags & FileType); } + bool isDirectory() const { return (entryFlags & DirectoryType); } + bool isBundle() const; + bool isAlias() const; + bool isLegacyLink() const { return (entryFlags & LegacyLinkType); } + bool isSequential() const { return (entryFlags & SequentialType); } + bool isHidden() const { return (entryFlags & HiddenAttribute); } +#if defined(Q_OS_WIN) + bool isLnkFile() const { return (entryFlags & WinLnkType); } +#else + bool isLnkFile() const { return false; } +#endif + + qint64 size() const { return size_; } + + QFile::Permissions permissions() const { return QFile::Permissions(Permissions & entryFlags); } + + QDateTime creationTime() const; + QDateTime modificationTime() const; + QDateTime accessTime() const; + + QDateTime fileTime(QAbstractFileEngine::FileTime time) const; + uint userId() const; + uint groupId() const; + uint ownerId(QAbstractFileEngine::FileOwner owner) const; + +#ifdef Q_OS_UNIX + void fillFromStatBuf(const QT_STATBUF &statBuffer); + void fillFromDirEnt(const QT_DIRENT &statBuffer); +#endif + +#if defined(Q_OS_WIN) + inline void fillFromFileAttribute(DWORD fileAttribute, bool isDriveRoot = false); + inline void fillFromFindData(WIN32_FIND_DATA &findData, bool setLinkType = false, bool isDriveRoot = false); +# ifndef Q_OS_WINRT + inline void fillFromFindInfo(BY_HANDLE_FILE_INFORMATION &fileInfo); +# endif +#endif +private: + friend class QFileSystemEngine; + + MetaDataFlags knownFlagsMask; + MetaDataFlags entryFlags; + + qint64 size_; + + // Platform-specific data goes here: +#if defined(Q_OS_WIN) + DWORD fileAttribute_; + FILETIME creationTime_; + FILETIME lastAccessTime_; + FILETIME lastWriteTime_; +#else + // msec precision + qint64 creationTime_; + qint64 modificationTime_; + qint64 accessTime_; + + uint userId_; + uint groupId_; +#endif + +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QFileSystemMetaData::MetaDataFlags) + +#if defined(Q_OS_DARWIN) +inline bool QFileSystemMetaData::isBundle() const { return (entryFlags & BundleType); } +inline bool QFileSystemMetaData::isAlias() const { return (entryFlags & AliasType); } +#else +inline bool QFileSystemMetaData::isBundle() const { return false; } +inline bool QFileSystemMetaData::isAlias() const { return false; } +#endif + +#if defined(Q_OS_UNIX) || defined (Q_OS_WIN) +inline QDateTime QFileSystemMetaData::fileTime(QAbstractFileEngine::FileTime time) const +{ + switch (time) { + case QAbstractFileEngine::ModificationTime: + return modificationTime(); + + case QAbstractFileEngine::AccessTime: + return accessTime(); + + case QAbstractFileEngine::CreationTime: + return creationTime(); + } + + return QDateTime(); +} +#endif + +#if defined(Q_OS_UNIX) +inline QDateTime QFileSystemMetaData::creationTime() const { return QDateTime::fromMSecsSinceEpoch(creationTime_); } +inline QDateTime QFileSystemMetaData::modificationTime() const { return QDateTime::fromMSecsSinceEpoch(modificationTime_); } +inline QDateTime QFileSystemMetaData::accessTime() const { return QDateTime::fromMSecsSinceEpoch(accessTime_); } + +inline uint QFileSystemMetaData::userId() const { return userId_; } +inline uint QFileSystemMetaData::groupId() const { return groupId_; } + +inline uint QFileSystemMetaData::ownerId(QAbstractFileEngine::FileOwner owner) const +{ + if (owner == QAbstractFileEngine::OwnerUser) + return userId(); + else + return groupId(); +} +#endif + +#if defined(Q_OS_WIN) +inline uint QFileSystemMetaData::userId() const { return (uint) -2; } +inline uint QFileSystemMetaData::groupId() const { return (uint) -2; } +inline uint QFileSystemMetaData::ownerId(QAbstractFileEngine::FileOwner owner) const +{ + if (owner == QAbstractFileEngine::OwnerUser) + return userId(); + else + return groupId(); +} + +inline void QFileSystemMetaData::fillFromFileAttribute(DWORD fileAttribute,bool isDriveRoot) +{ + fileAttribute_ = fileAttribute; + // Ignore the hidden attribute for drives. + if (!isDriveRoot && (fileAttribute_ & FILE_ATTRIBUTE_HIDDEN)) + entryFlags |= HiddenAttribute; + entryFlags |= ((fileAttribute & FILE_ATTRIBUTE_DIRECTORY) ? DirectoryType: FileType); + entryFlags |= ExistsAttribute; + knownFlagsMask |= FileType | DirectoryType | HiddenAttribute | ExistsAttribute; +} + +inline void QFileSystemMetaData::fillFromFindData(WIN32_FIND_DATA &findData, bool setLinkType, bool isDriveRoot) +{ + fillFromFileAttribute(findData.dwFileAttributes, isDriveRoot); + creationTime_ = findData.ftCreationTime; + lastAccessTime_ = findData.ftLastAccessTime; + lastWriteTime_ = findData.ftLastWriteTime; + if (fileAttribute_ & FILE_ATTRIBUTE_DIRECTORY) { + size_ = 0; + } else { + size_ = findData.nFileSizeHigh; + size_ <<= 32; + size_ += findData.nFileSizeLow; + } + knownFlagsMask |= Times | SizeAttribute; + if (setLinkType) { + knownFlagsMask |= LinkType; + entryFlags &= ~LinkType; + if ((fileAttribute_ & FILE_ATTRIBUTE_REPARSE_POINT) + && (findData.dwReserved0 == IO_REPARSE_TAG_SYMLINK)) { + entryFlags |= LinkType; + } + } +} + +#ifndef Q_OS_WINRT +inline void QFileSystemMetaData::fillFromFindInfo(BY_HANDLE_FILE_INFORMATION &fileInfo) +{ + fillFromFileAttribute(fileInfo.dwFileAttributes); + creationTime_ = fileInfo.ftCreationTime; + lastAccessTime_ = fileInfo.ftLastAccessTime; + lastWriteTime_ = fileInfo.ftLastWriteTime; + if (fileAttribute_ & FILE_ATTRIBUTE_DIRECTORY) { + size_ = 0; + } else { + size_ = fileInfo.nFileSizeHigh; + size_ <<= 32; + size_ += fileInfo.nFileSizeLow; + } + knownFlagsMask |= Times | SizeAttribute; +} +#endif // !Q_OS_WINRT +#endif // Q_OS_WIN + +QT_END_NAMESPACE + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_fsevents_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_fsevents_p.h new file mode 100644 index 000000000..1b0b8ae15 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_fsevents_p.h @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMWATCHER_FSEVENTS_P_H +#define QFILESYSTEMWATCHER_FSEVENTS_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 "qfilesystemwatcher_p.h" + +#include +#include +#include +#include +#include + +#include +#include + +#ifndef QT_NO_FILESYSTEMWATCHER + +QT_BEGIN_NAMESPACE + +class QFseventsFileSystemWatcherEngine : public QFileSystemWatcherEngine +{ + Q_OBJECT +public: + ~QFseventsFileSystemWatcherEngine(); + + static QFseventsFileSystemWatcherEngine *create(QObject *parent); + + QStringList addPaths(const QStringList &paths, QStringList *files, QStringList *directories); + QStringList removePaths(const QStringList &paths, QStringList *files, QStringList *directories); + + void processEvent(ConstFSEventStreamRef streamRef, size_t numEvents, char **eventPaths, const FSEventStreamEventFlags eventFlags[], const FSEventStreamEventId eventIds[]); + +Q_SIGNALS: + void emitFileChanged(const QString &path, bool removed); + void emitDirectoryChanged(const QString &path, bool removed); + void scheduleStreamRestart(); + +private slots: + void doEmitFileChanged(const QString &path, bool removed); + void doEmitDirectoryChanged(const QString &path, bool removed); + bool restartStream(); + +private: + struct Info { + QString origPath; + timespec ctime; + mode_t mode; + QString watchedPath; + + Info(): mode(0) + { + ctime.tv_sec = 0; + ctime.tv_nsec = 0; + } + + Info(const QString &origPath, const timespec &ctime, mode_t mode, const QString &watchedPath) + : origPath(origPath) + , ctime(ctime) + , mode(mode) + , watchedPath(watchedPath) + {} + }; + typedef QHash InfoByName; + typedef QHash FilesByPath; + struct DirInfo { + Info dirInfo; + InfoByName entries; + }; + typedef QHash DirsByName; + typedef QHash PathRefCounts; + + struct WatchingState { + // These fields go hand-in-hand. FSEvents watches paths, and there is no use in watching + // the same path multiple times. So, the "refcount" on a path is the number of watched + // files that have the same path, plus the number of directories that have the same path. + // + // If the stream fails to start after adding files/directories, the watcher will try to + // keep watching files/directories that it was already watching. It does that by restoring + // the previous WatchingState and restarting the stream. + FilesByPath watchedFiles; + DirsByName watchedDirectories; + PathRefCounts watchedPaths; + }; + + QFseventsFileSystemWatcherEngine(QObject *parent); + bool startStream(); + void stopStream(bool isStopped = false); + InfoByName scanForDirEntries(const QString &path); + bool derefPath(const QString &watchedPath); + bool checkDir(DirsByName::iterator &it); + bool rescanDirs(const QString &path); + bool rescanFiles(InfoByName &filesInPath); + bool rescanFiles(const QString &path); + + QMutex lock; + dispatch_queue_t queue; + FSEventStreamRef stream; + FSEventStreamEventId lastReceivedEvent; + WatchingState watchingState; +}; + +QT_END_NAMESPACE + +#endif //QT_NO_FILESYSTEMWATCHER +#endif // QFILESYSTEMWATCHER_FSEVENTS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_inotify_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_inotify_p.h new file mode 100644 index 000000000..777d62dc8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_inotify_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMWATCHER_INOTIFY_P_H +#define QFILESYSTEMWATCHER_INOTIFY_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 "qfilesystemwatcher_p.h" + +#ifndef QT_NO_FILESYSTEMWATCHER + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QInotifyFileSystemWatcherEngine : public QFileSystemWatcherEngine +{ + Q_OBJECT + +public: + ~QInotifyFileSystemWatcherEngine(); + + static QInotifyFileSystemWatcherEngine *create(QObject *parent); + + QStringList addPaths(const QStringList &paths, QStringList *files, QStringList *directories) Q_DECL_OVERRIDE; + QStringList removePaths(const QStringList &paths, QStringList *files, QStringList *directories) Q_DECL_OVERRIDE; + +private Q_SLOTS: + void readFromInotify(); + +private: + QString getPathFromID(int id) const; + +private: + QInotifyFileSystemWatcherEngine(int fd, QObject *parent); + int inotifyFd; + QHash pathToID; + QMultiHash idToPath; + QSocketNotifier notifier; +}; + + +QT_END_NAMESPACE +#endif // QT_NO_FILESYSTEMWATCHER +#endif // QFILESYSTEMWATCHER_INOTIFY_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_kqueue_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_kqueue_p.h new file mode 100644 index 000000000..9d4b6d1fe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_kqueue_p.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMWATCHER_KQUEUE_P_H +#define QFILESYSTEMWATCHER_KQUEUE_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 "qfilesystemwatcher_p.h" + +#include +#include +#include +#include +#include + +#ifndef QT_NO_FILESYSTEMWATCHER +struct kevent; + +QT_BEGIN_NAMESPACE + +class QKqueueFileSystemWatcherEngine : public QFileSystemWatcherEngine +{ + Q_OBJECT +public: + ~QKqueueFileSystemWatcherEngine(); + + static QKqueueFileSystemWatcherEngine *create(QObject *parent); + + QStringList addPaths(const QStringList &paths, QStringList *files, QStringList *directories); + QStringList removePaths(const QStringList &paths, QStringList *files, QStringList *directories); + +private Q_SLOTS: + void readFromKqueue(); + +private: + QKqueueFileSystemWatcherEngine(int kqfd, QObject *parent); + + int kqfd; + + QHash pathToID; + QHash idToPath; + QSocketNotifier notifier; +}; + +QT_END_NAMESPACE + +#endif //QT_NO_FILESYSTEMWATCHER +#endif // QFILESYSTEMWATCHER_KQUEUE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_p.h new file mode 100644 index 000000000..4220c1db2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_p.h @@ -0,0 +1,124 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMWATCHER_P_H +#define QFILESYSTEMWATCHER_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 "qfilesystemwatcher.h" + +#ifndef QT_NO_FILESYSTEMWATCHER + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class QFileSystemWatcherEngine : public QObject +{ + Q_OBJECT + +protected: + inline QFileSystemWatcherEngine(QObject *parent) + : QObject(parent) + { + } + +public: + // fills \a files and \a directories with the \a paths it could + // watch, and returns a list of paths this engine could not watch + virtual QStringList addPaths(const QStringList &paths, + QStringList *files, + QStringList *directories) = 0; + // removes \a paths from \a files and \a directories, and returns + // a list of paths this engine does not know about (either addPath + // failed or wasn't called) + virtual QStringList removePaths(const QStringList &paths, + QStringList *files, + QStringList *directories) = 0; + +Q_SIGNALS: + void fileChanged(const QString &path, bool removed); + void directoryChanged(const QString &path, bool removed); +}; + +class QFileSystemWatcherPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QFileSystemWatcher) + + static QFileSystemWatcherEngine *createNativeEngine(QObject *parent); + +public: + QFileSystemWatcherPrivate(); + void init(); + void initPollerEngine(); + + QFileSystemWatcherEngine *native, *poller; + QStringList files, directories; + + // private slots + void _q_fileChanged(const QString &path, bool removed); + void _q_directoryChanged(const QString &path, bool removed); + +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) + void _q_winDriveLockForRemoval(const QString &); + void _q_winDriveLockForRemovalFailed(const QString &); + void _q_winDriveRemoved(const QString &); + +private: + QHash temporarilyRemovedPaths; +#endif // Q_OS_WIN && !Q_OS_WINRT +}; + + +QT_END_NAMESPACE +#endif // QT_NO_FILESYSTEMWATCHER +#endif // QFILESYSTEMWATCHER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_polling_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_polling_p.h new file mode 100644 index 000000000..6dff08ac0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_polling_p.h @@ -0,0 +1,126 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMWATCHER_POLLING_P_H +#define QFILESYSTEMWATCHER_POLLING_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include + +#include "qfilesystemwatcher_p.h" + +#ifndef QT_NO_FILESYSTEMWATCHER +QT_BEGIN_NAMESPACE + +enum { PollingInterval = 1000 }; + +class QPollingFileSystemWatcherEngine : public QFileSystemWatcherEngine +{ + Q_OBJECT + + class FileInfo + { + uint ownerId; + uint groupId; + QFile::Permissions permissions; + QDateTime lastModified; + QStringList entries; + + public: + FileInfo(const QFileInfo &fileInfo) + : ownerId(fileInfo.ownerId()), + groupId(fileInfo.groupId()), + permissions(fileInfo.permissions()), + lastModified(fileInfo.lastModified()) + { + if (fileInfo.isDir()) { + entries = fileInfo.absoluteDir().entryList(QDir::AllEntries); + } + } + FileInfo &operator=(const QFileInfo &fileInfo) + { + *this = FileInfo(fileInfo); + return *this; + } + + bool operator!=(const QFileInfo &fileInfo) const + { + if (fileInfo.isDir() && entries != fileInfo.absoluteDir().entryList(QDir::AllEntries)) + return true; + return (ownerId != fileInfo.ownerId() + || groupId != fileInfo.groupId() + || permissions != fileInfo.permissions() + || lastModified != fileInfo.lastModified()); + } + }; + + QHash files, directories; + +public: + QPollingFileSystemWatcherEngine(QObject *parent); + + QStringList addPaths(const QStringList &paths, QStringList *files, QStringList *directories) Q_DECL_OVERRIDE; + QStringList removePaths(const QStringList &paths, QStringList *files, QStringList *directories) Q_DECL_OVERRIDE; + +private Q_SLOTS: + void timeout(); + +private: + QTimer timer; +}; + +QT_END_NAMESPACE +#endif // !QT_NO_FILESYSTEMWATCHER +#endif // QFILESYSTEMWATCHER_POLLING_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_win_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_win_p.h new file mode 100644 index 000000000..8322fc170 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfilesystemwatcher_win_p.h @@ -0,0 +1,180 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMWATCHER_WIN_P_H +#define QFILESYSTEMWATCHER_WIN_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 "qfilesystemwatcher_p.h" + +#ifndef QT_NO_FILESYSTEMWATCHER + +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QWindowsFileSystemWatcherEngineThread; +class QWindowsRemovableDriveListener; + +// Even though QWindowsFileSystemWatcherEngine is derived of QThread +// via QFileSystemWatcher, it does not start a thread. +// Instead QWindowsFileSystemWatcher creates QWindowsFileSystemWatcherEngineThreads +// to do the actually watching. +class QWindowsFileSystemWatcherEngine : public QFileSystemWatcherEngine +{ + Q_OBJECT +public: + explicit QWindowsFileSystemWatcherEngine(QObject *parent); + ~QWindowsFileSystemWatcherEngine(); + + QStringList addPaths(const QStringList &paths, QStringList *files, QStringList *directories); + QStringList removePaths(const QStringList &paths, QStringList *files, QStringList *directories); + + class Handle + { + public: + Qt::HANDLE handle; + uint flags; + + Handle(); + }; + + class PathInfo { + public: + QString absolutePath; + QString path; + bool isDir; + + // fileinfo bits + uint ownerId; + uint groupId; + QFile::Permissions permissions; + QDateTime lastModified; + + PathInfo &operator=(const QFileInfo &fileInfo) + { + ownerId = fileInfo.ownerId(); + groupId = fileInfo.groupId(); + permissions = fileInfo.permissions(); + lastModified = fileInfo.lastModified(); + return *this; + } + + bool operator!=(const QFileInfo &fileInfo) const + { + return (ownerId != fileInfo.ownerId() + || groupId != fileInfo.groupId() + || permissions != fileInfo.permissions() + || lastModified != fileInfo.lastModified()); + } + }; + +signals: + void driveLockForRemoval(const QString &); + void driveLockForRemovalFailed(const QString &); + void driveRemoved(const QString &); + +private: + QList threads; +#ifndef Q_OS_WINRT + QWindowsRemovableDriveListener *m_driveListener = nullptr; +#endif +}; + +class QFileSystemWatcherPathKey : public QString +{ +public: + QFileSystemWatcherPathKey() {} + explicit QFileSystemWatcherPathKey(const QString &other) : QString(other) {} + QFileSystemWatcherPathKey(const QFileSystemWatcherPathKey &other) : QString(other) {} + bool operator==(const QFileSystemWatcherPathKey &other) const { return !compare(other, Qt::CaseInsensitive); } +}; + +Q_DECLARE_TYPEINFO(QFileSystemWatcherPathKey, Q_MOVABLE_TYPE); + +inline uint qHash(const QFileSystemWatcherPathKey &key) { return qHash(key.toCaseFolded()); } + +class QWindowsFileSystemWatcherEngineThread : public QThread +{ + Q_OBJECT + +public: + typedef QHash HandleForDirHash; + typedef QHash PathInfoHash; + + QWindowsFileSystemWatcherEngineThread(); + ~QWindowsFileSystemWatcherEngineThread(); + void run(); + void stop(); + void wakeup(); + + QMutex mutex; + QVector handles; + int msg; + + HandleForDirHash handleForDir; + + QHash pathInfoForHandle; + +Q_SIGNALS: + void fileChanged(const QString &path, bool removed); + void directoryChanged(const QString &path, bool removed); +}; + +QT_END_NAMESPACE + +#endif // QT_NO_FILESYSTEMWATCHER + +#endif // QFILESYSTEMWATCHER_WIN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfinalstate_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfinalstate_p.h new file mode 100644 index 000000000..65598f6c1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfinalstate_p.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFINALSTATE_P_H +#define QFINALSTATE_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 "qfinalstate.h" +#include "private/qabstractstate_p.h" + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QFinalStatePrivate : public QAbstractStatePrivate +{ + Q_DECLARE_PUBLIC(QFinalState) + +public: + QFinalStatePrivate(); + ~QFinalStatePrivate(); +}; + +QT_END_NAMESPACE + +#endif // QFINALSTATE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfloat16_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfloat16_p.h new file mode 100644 index 000000000..f3fc96e11 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfloat16_p.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 by Southwest Research Institute (R) +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFLOAT16_P_H +#define QFLOAT16_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +static inline bool qt_is_inf(qfloat16 d) Q_DECL_NOTHROW +{ + bool is_inf; + uchar *ch = (uchar *)&d; + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) + is_inf = (ch[0] & 0x7c) == 0x7c && (ch[0] & 0x02) == 0; + else + is_inf = (ch[1] & 0x7c) == 0x7c && (ch[1] & 0x02) == 0; + return is_inf; +} + +static inline bool qt_is_nan(qfloat16 d) Q_DECL_NOTHROW +{ + bool is_nan; + uchar *ch = (uchar *)&d; + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) + is_nan = (ch[0] & 0x7c) == 0x7c && (ch[0] & 0x02) != 0; + else + is_nan = (ch[1] & 0x7c) == 0x7c && (ch[1] & 0x02) != 0; + return is_nan; +} + +static inline bool qt_is_finite(qfloat16 d) Q_DECL_NOTHROW +{ + bool is_finite; + uchar *ch = (uchar *)&d; + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) + is_finite = (ch[0] & 0x7c) != 0x7c; + else + is_finite = (ch[1] & 0x7c) != 0x7c; + return is_finite; +} + + +QT_END_NAMESPACE + +#endif // QFLOAT16_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfreelist_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfreelist_p.h new file mode 100644 index 000000000..2f98cf5cc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfreelist_p.h @@ -0,0 +1,292 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFREELIST_P_H +#define QFREELIST_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + + +/*! \internal + + Element in a QFreeList. ConstReferenceType and ReferenceType are used as + the return values for QFreeList::at() and QFreeList::operator[](). Contains + the real data storage (_t) and the id of the next free element (next). + + Note: the t() functions should be used to access the data, not _t. +*/ +template +struct QFreeListElement +{ + typedef const T &ConstReferenceType; + typedef T &ReferenceType; + + T _t; + QAtomicInt next; + + inline ConstReferenceType t() const { return _t; } + inline ReferenceType t() { return _t; } +}; + +/*! \internal + + Element in a QFreeList without a payload. ConstReferenceType and + ReferenceType are void, the t() functions return void and are empty. +*/ +template <> +struct QFreeListElement +{ + typedef void ConstReferenceType; + typedef void ReferenceType; + + QAtomicInt next; + + inline void t() const { } + inline void t() { } +}; + +/*! \internal + + Defines default constants used by QFreeList: + + - The initial value returned by QFreeList::next() is zero. + + - QFreeList allows for up to 16777216 elements in QFreeList and uses the top + 8 bits to store a serial counter for ABA protection. + + - QFreeList will make a maximum of 4 allocations (blocks), with each + successive block larger than the previous. + + - Sizes static int[] array to define the size of each block. + + It is possible to define your own constants struct/class and give this to + QFreeList to customize/tune the behavior. +*/ +struct Q_AUTOTEST_EXPORT QFreeListDefaultConstants +{ + // used by QFreeList, make sure to define all of when customizing + enum { + InitialNextValue = 0, + IndexMask = 0x00ffffff, + SerialMask = ~IndexMask & ~0x80000000, + SerialCounter = IndexMask + 1, + MaxIndex = IndexMask, + BlockCount = 4 + }; + + static const int Sizes[BlockCount]; +}; + +/*! \internal + + This is a generic implementation of a lock-free free list. Use next() to + get the next free entry in the list, and release(id) when done with the id. + + This version is templated and allows having a payload of type T which can + be accessed using the id returned by next(). The payload is allocated and + deallocated automatically by the free list, but *NOT* when calling + next()/release(). Initialization should be done by code needing it after + next() returns. Likewise, cleanup() should happen before calling release(). + It is possible to have use 'void' as the payload type, in which case the + free list only contains indexes to the next free entry. + + The ConstantsType type defaults to QFreeListDefaultConstants above. You can + define your custom ConstantsType, see above for details on what needs to be + available. +*/ +template +class QFreeList +{ + typedef T ValueType; + typedef QFreeListElement ElementType; + typedef typename ElementType::ConstReferenceType ConstReferenceType; + typedef typename ElementType::ReferenceType ReferenceType; + + // return which block the index \a x falls in, and modify \a x to be the index into that block + static inline int blockfor(int &x) + { + for (int i = 0; i < ConstantsType::BlockCount; ++i) { + int size = ConstantsType::Sizes[i]; + if (x < size) + return i; + x -= size; + } + Q_ASSERT(false); + return -1; + } + + // allocate a block of the given \a size, initialized starting with the given \a offset + static inline ElementType *allocate(int offset, int size) + { + // qDebug("QFreeList: allocating %d elements (%ld bytes) with offset %d", size, size * sizeof(ElementType), offset); + ElementType *v = new ElementType[size]; + for (int i = 0; i < size; ++i) + v[i].next.store(offset + i + 1); + return v; + } + + // take the current serial number from \a o, increment it, and store it in \a n + static inline int incrementserial(int o, int n) + { + return int((uint(n) & ConstantsType::IndexMask) | ((uint(o) + ConstantsType::SerialCounter) & ConstantsType::SerialMask)); + } + + // the blocks + QAtomicPointer _v[ConstantsType::BlockCount]; + // the next free id + QAtomicInt _next; + + // QFreeList is not copyable + Q_DISABLE_COPY(QFreeList) + +public: + Q_DECL_CONSTEXPR inline QFreeList(); + inline ~QFreeList(); + + // returns the payload for the given index \a x + inline ConstReferenceType at(int x) const; + inline ReferenceType operator[](int x); + + /* + Return the next free id. Use this id to access the payload (see above). + Call release(id) when done using the id. + */ + inline int next(); + inline void release(int id); +}; + +template +Q_DECL_CONSTEXPR inline QFreeList::QFreeList() + : +#if defined(Q_COMPILER_CONSTEXPR) + _v{}, // uniform initialization required +#endif + _next(ConstantsType::InitialNextValue) +{ } + +template +inline QFreeList::~QFreeList() +{ + for (int i = 0; i < ConstantsType::BlockCount; ++i) + delete [] _v[i].load(); +} + +template +inline typename QFreeList::ConstReferenceType QFreeList::at(int x) const +{ + const int block = blockfor(x); + return (_v[block].load())[x].t(); +} + +template +inline typename QFreeList::ReferenceType QFreeList::operator[](int x) +{ + const int block = blockfor(x); + return (_v[block].load())[x].t(); +} + +template +inline int QFreeList::next() +{ + int id, newid, at; + ElementType *v; + do { + id = _next.loadAcquire(); + + at = id & ConstantsType::IndexMask; + const int block = blockfor(at); + v = _v[block].loadAcquire(); + + if (!v) { + v = allocate((id & ConstantsType::IndexMask) - at, ConstantsType::Sizes[block]); + if (!_v[block].testAndSetRelease(0, v)) { + // race with another thread lost + delete [] v; + v = _v[block].loadAcquire(); + Q_ASSERT(v != 0); + } + } + + newid = v[at].next.load() | (id & ~ConstantsType::IndexMask); + } while (!_next.testAndSetRelease(id, newid)); + // qDebug("QFreeList::next(): returning %d (_next now %d, serial %d)", + // id & ConstantsType::IndexMask, + // newid & ConstantsType::IndexMask, + // (newid & ~ConstantsType::IndexMask) >> 24); + return id & ConstantsType::IndexMask; +} + +template +inline void QFreeList::release(int id) +{ + int at = id & ConstantsType::IndexMask; + const int block = blockfor(at); + ElementType *v = _v[block].load(); + + int x, newid; + do { + x = _next.loadAcquire(); + v[at].next.store(x & ConstantsType::IndexMask); + + newid = incrementserial(x, id); + } while (!_next.testAndSetRelease(x, newid)); + // qDebug("QFreeList::release(%d): _next now %d (was %d), serial %d", + // id & ConstantsType::IndexMask, + // newid & ConstantsType::IndexMask, + // x & ConstantsType::IndexMask, + // (newid & ~ConstantsType::IndexMask) >> 24); +} + +QT_END_NAMESPACE + +#endif // QFREELIST_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfsfileengine_iterator_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfsfileengine_iterator_p.h new file mode 100644 index 000000000..7f094ba9d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfsfileengine_iterator_p.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFSFILEENGINE_ITERATOR_P_H +#define QFSFILEENGINE_ITERATOR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qabstractfileengine_p.h" +#include "qfilesystemiterator_p.h" +#include "qdir.h" + +#ifndef QT_NO_FILESYSTEMITERATOR + +QT_BEGIN_NAMESPACE + +class QFSFileEngineIteratorPrivate; +class QFSFileEngineIteratorPlatformSpecificData; + +class QFSFileEngineIterator : public QAbstractFileEngineIterator +{ +public: + QFSFileEngineIterator(QDir::Filters filters, const QStringList &filterNames); + ~QFSFileEngineIterator(); + + QString next() Q_DECL_OVERRIDE; + bool hasNext() const Q_DECL_OVERRIDE; + + QString currentFileName() const Q_DECL_OVERRIDE; + QFileInfo currentFileInfo() const Q_DECL_OVERRIDE; + +private: + void advance() const; + mutable QScopedPointer nativeIterator; + mutable QFileInfo currentInfo; + mutable QFileInfo nextInfo; + mutable bool done; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_FILESYSTEMITERATOR + +#endif // QFSFILEENGINE_ITERATOR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfsfileengine_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfsfileengine_p.h new file mode 100644 index 000000000..ab9ad3aa6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfsfileengine_p.h @@ -0,0 +1,229 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFSFILEENGINE_P_H +#define QFSFILEENGINE_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 "qplatformdefs.h" +#include "QtCore/private/qabstractfileengine_p.h" +#include +#include +#include + +#ifndef QT_NO_FSFILEENGINE + +QT_BEGIN_NAMESPACE + +class QFSFileEnginePrivate; + +class Q_CORE_EXPORT QFSFileEngine : public QAbstractFileEngine +{ + Q_DECLARE_PRIVATE(QFSFileEngine) +public: + QFSFileEngine(); + explicit QFSFileEngine(const QString &file); + ~QFSFileEngine(); + + bool open(QIODevice::OpenMode openMode) Q_DECL_OVERRIDE; + bool open(QIODevice::OpenMode flags, FILE *fh); + bool close() Q_DECL_OVERRIDE; + bool flush() Q_DECL_OVERRIDE; + bool syncToDisk() Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; + qint64 pos() const Q_DECL_OVERRIDE; + bool seek(qint64) Q_DECL_OVERRIDE; + bool isSequential() const Q_DECL_OVERRIDE; + bool remove() Q_DECL_OVERRIDE; + bool copy(const QString &newName) Q_DECL_OVERRIDE; + bool rename(const QString &newName) Q_DECL_OVERRIDE; + bool renameOverwrite(const QString &newName) Q_DECL_OVERRIDE; + bool link(const QString &newName) Q_DECL_OVERRIDE; + bool mkdir(const QString &dirName, bool createParentDirectories) const Q_DECL_OVERRIDE; + bool rmdir(const QString &dirName, bool recurseParentDirectories) const Q_DECL_OVERRIDE; + bool setSize(qint64 size) Q_DECL_OVERRIDE; + bool caseSensitive() const Q_DECL_OVERRIDE; + bool isRelativePath() const Q_DECL_OVERRIDE; + QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const Q_DECL_OVERRIDE; + FileFlags fileFlags(FileFlags type) const Q_DECL_OVERRIDE; + bool setPermissions(uint perms) Q_DECL_OVERRIDE; + QByteArray id() const override; + QString fileName(FileName file) const Q_DECL_OVERRIDE; + uint ownerId(FileOwner) const Q_DECL_OVERRIDE; + QString owner(FileOwner) const Q_DECL_OVERRIDE; + QDateTime fileTime(FileTime time) const Q_DECL_OVERRIDE; + void setFileName(const QString &file) Q_DECL_OVERRIDE; + int handle() const Q_DECL_OVERRIDE; + +#ifndef QT_NO_FILESYSTEMITERATOR + Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) Q_DECL_OVERRIDE; + Iterator *endEntryList() Q_DECL_OVERRIDE; +#endif + + qint64 read(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 readLine(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 write(const char *data, qint64 len) Q_DECL_OVERRIDE; + + bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0) Q_DECL_OVERRIDE; + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; + + //FS only!! + bool open(QIODevice::OpenMode flags, int fd); + bool open(QIODevice::OpenMode flags, int fd, QFile::FileHandleFlags handleFlags); + bool open(QIODevice::OpenMode flags, FILE *fh, QFile::FileHandleFlags handleFlags); + static bool setCurrentPath(const QString &path); + static QString currentPath(const QString &path = QString()); + static QString homePath(); + static QString rootPath(); + static QString tempPath(); + static QFileInfoList drives(); + +protected: + QFSFileEngine(QFSFileEnginePrivate &dd); +}; + +class Q_AUTOTEST_EXPORT QFSFileEnginePrivate : public QAbstractFileEnginePrivate +{ + Q_DECLARE_PUBLIC(QFSFileEngine) + +public: +#ifdef Q_OS_WIN + static QString longFileName(const QString &path); +#endif + + QFileSystemEntry fileEntry; + QIODevice::OpenMode openMode; + + bool nativeOpen(QIODevice::OpenMode openMode); + bool openFh(QIODevice::OpenMode flags, FILE *fh); + bool openFd(QIODevice::OpenMode flags, int fd); + bool nativeClose(); + bool closeFdFh(); + bool nativeFlush(); + bool nativeSyncToDisk(); + bool flushFh(); + qint64 nativeSize() const; +#ifndef Q_OS_WIN + qint64 sizeFdFh() const; +#endif + qint64 nativePos() const; + qint64 posFdFh() const; + bool nativeSeek(qint64); + bool seekFdFh(qint64); + qint64 nativeRead(char *data, qint64 maxlen); + qint64 readFdFh(char *data, qint64 maxlen); + qint64 nativeReadLine(char *data, qint64 maxlen); + qint64 readLineFdFh(char *data, qint64 maxlen); + qint64 nativeWrite(const char *data, qint64 len); + qint64 writeFdFh(const char *data, qint64 len); + int nativeHandle() const; + bool nativeIsSequential() const; +#ifndef Q_OS_WIN + bool isSequentialFdFh() const; +#endif + + uchar *map(qint64 offset, qint64 size, QFile::MemoryMapFlags flags); + bool unmap(uchar *ptr); + void unmapAll(); + + mutable QFileSystemMetaData metaData; + + FILE *fh; + +#ifdef Q_OS_WIN + HANDLE fileHandle; + HANDLE mapHandle; + QHash maps; + + mutable int cachedFd; + mutable DWORD fileAttrib; +#else + QHash > maps; +#endif + int fd; + + enum LastIOCommand + { + IOFlushCommand, + IOReadCommand, + IOWriteCommand + }; + LastIOCommand lastIOCommand; + bool lastFlushFailed; + bool closeFileHandle; + + mutable uint is_sequential : 2; + mutable uint tried_stat : 1; + mutable uint need_lstat : 1; + mutable uint is_link : 1; + +#if defined(Q_OS_WIN) + bool doStat(QFileSystemMetaData::MetaDataFlags flags) const; +#else + bool doStat(QFileSystemMetaData::MetaDataFlags flags = QFileSystemMetaData::PosixStatFlags) const; +#endif + bool isSymlink() const; + +#if defined(Q_OS_WIN32) + int sysOpen(const QString &, int flags); +#endif + +protected: + QFSFileEnginePrivate(); + + void init(); + + QAbstractFileEngine::FileFlags getPermissions(QAbstractFileEngine::FileFlags type) const; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_FSFILEENGINE + +#endif // QFSFILEENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfunctions_fake_env_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfunctions_fake_env_p.h new file mode 100644 index 000000000..16d18c4d8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfunctions_fake_env_p.h @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUNCTIONS_FAKE_ENV_P_H +#define QFUNCTIONS_FAKE_ENV_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 "qbytearray.h" +#include "qvector.h" + +QT_BEGIN_NAMESPACE + +// Environment ------------------------------------------------------ +struct Variable { + Variable() { } + + Variable(const QByteArray &name, const QByteArray &value) + : name(name), value(value) { } + + QByteArray name; + QByteArray value; +}; + +Q_DECLARE_TYPEINFO(Variable, Q_MOVABLE_TYPE); + +struct NameEquals { + typedef bool result_type; + const char *name; + explicit NameEquals(const char *name) Q_DECL_NOTHROW : name(name) {} + result_type operator()(const Variable &other) const Q_DECL_NOTHROW + { return qstrcmp(other.name, name) == 0; } +}; + +Q_GLOBAL_STATIC(QVector, qt_app_environment) + +errno_t qt_fake_getenv_s(size_t *sizeNeeded, char *buffer, size_t bufferSize, const char *varName) +{ + if (!sizeNeeded) + return EINVAL; + + QVector::const_iterator end = qt_app_environment->constEnd(); + QVector::const_iterator iterator = std::find_if(qt_app_environment->constBegin(), + end, + NameEquals(varName)); + if (iterator == end) { + if (buffer) + buffer[0] = '\0'; + return ENOENT; + } + + const int size = iterator->value.size() + 1; + if (bufferSize < size_t(size)) { + *sizeNeeded = size; + return ERANGE; + } + + qstrcpy(buffer, iterator->value.constData()); + return 0; +} + +errno_t qt_fake__putenv_s(const char *varName, const char *value) +{ + QVector::iterator end = qt_app_environment->end(); + QVector::iterator iterator = std::find_if(qt_app_environment->begin(), + end, + NameEquals(varName)); + if (!value || !*value) { + if (iterator != end) + qt_app_environment->erase(iterator); + } else { + if (iterator == end) + qt_app_environment->append(Variable(varName, value)); + else + iterator->value = value; + } + + return 0; +} + +QT_END_NAMESPACE + +#endif // QFUNCTIONS_FAKE_ENV_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfunctions_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfunctions_p.h new file mode 100644 index 000000000..715c553dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfunctions_p.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qfunctions_*. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#ifndef QFUNCTIONS_P_H +#define QFUNCTIONS_P_H + +#include + +#if defined(Q_OS_VXWORKS) +# include "QtCore/qfunctions_vxworks.h" +#elif defined(Q_OS_NACL) +# include "QtCore/qfunctions_nacl.h" +#elif defined(Q_OS_WINRT) +# include "QtCore/qfunctions_winrt.h" +#endif + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfutureinterface_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfutureinterface_p.h new file mode 100644 index 000000000..cf882dd9b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfutureinterface_p.h @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUTUREINTERFACE_P_H +#define QFUTUREINTERFACE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QFutureCallOutEvent : public QEvent +{ +public: + enum CallOutType { + Started, + Finished, + Canceled, + Paused, + Resumed, + Progress, + ProgressRange, + ResultsReady + }; + + QFutureCallOutEvent() + : QEvent(QEvent::FutureCallOut), callOutType(CallOutType(0)), index1(-1), index2(-1) + { } + explicit QFutureCallOutEvent(CallOutType callOutType, int index1 = -1) + : QEvent(QEvent::FutureCallOut), callOutType(callOutType), index1(index1), index2(-1) + { } + QFutureCallOutEvent(CallOutType callOutType, int index1, int index2) + : QEvent(QEvent::FutureCallOut), callOutType(callOutType), index1(index1), index2(index2) + { } + + QFutureCallOutEvent(CallOutType callOutType, int index1, const QString &text) + : QEvent(QEvent::FutureCallOut), + callOutType(callOutType), + index1(index1), + index2(-1), + text(text) + { } + + CallOutType callOutType; + int index1; + int index2; + QString text; + + QFutureCallOutEvent *clone() const + { + return new QFutureCallOutEvent(callOutType, index1, index2, text); + } + +private: + QFutureCallOutEvent(CallOutType callOutType, + int index1, + int index2, + const QString &text) + : QEvent(QEvent::FutureCallOut), + callOutType(callOutType), + index1(index1), + index2(index2), + text(text) + { } +}; + +class QFutureCallOutInterface +{ +public: + virtual ~QFutureCallOutInterface() {} + virtual void postCallOutEvent(const QFutureCallOutEvent &) = 0; + virtual void callOutInterfaceDisconnected() = 0; +}; + +class QFutureInterfaceBasePrivate +{ +public: + QFutureInterfaceBasePrivate(QFutureInterfaceBase::State initialState); + + // When the last QFuture reference is removed, we need to make + // sure that data stored in the ResultStore is cleaned out. + // Since QFutureInterfaceBasePrivate can be shared between QFuture + // and QFuture objects, we use a separate ref. counter + // to keep track of QFuture objects. + class RefCount + { + public: + inline RefCount(int r = 0, int rt = 0) + : m_refCount(r), m_refCountT(rt) {} + // Default ref counter for QFIBP + inline bool ref() { return m_refCount.ref(); } + inline bool deref() { return m_refCount.deref(); } + inline int load() const { return m_refCount.load(); } + // Ref counter for type T + inline bool refT() { return m_refCountT.ref(); } + inline bool derefT() { return m_refCountT.deref(); } + inline int loadT() const { return m_refCountT.load(); } + + private: + QAtomicInt m_refCount; + QAtomicInt m_refCountT; + }; + + // T: accessed from executing thread + // Q: accessed from the waiting/querying thread + RefCount refCount; + mutable QMutex m_mutex; + QWaitCondition waitCondition; + QList outputConnections; + int m_progressValue; // TQ + int m_progressMinimum; // TQ + int m_progressMaximum; // TQ + QAtomicInt state; // reads and writes can happen unprotected, both must be atomic + QElapsedTimer progressTime; + QWaitCondition pausedWaitCondition; + QtPrivate::ResultStoreBase m_results; + bool manualProgress; // only accessed from executing thread + int m_expectedResultCount; + QtPrivate::ExceptionStore m_exceptionStore; + QString m_progressText; + QRunnable *runnable; + QThreadPool *m_pool; + + inline QThreadPool *pool() const + { return m_pool ? m_pool : QThreadPool::globalInstance(); } + + // Internal functions that does not change the mutex state. + // The mutex must be locked when calling these. + int internal_resultCount() const; + bool internal_isResultReadyAt(int index) const; + bool internal_waitForNextResult(); + bool internal_updateProgress(int progress, const QString &progressText = QString()); + void internal_setThrottled(bool enable); + void sendCallOut(const QFutureCallOutEvent &callOut); + void sendCallOuts(const QFutureCallOutEvent &callOut1, const QFutureCallOutEvent &callOut2); + void connectOutputInterface(QFutureCallOutInterface *iface); + void disconnectOutputInterface(QFutureCallOutInterface *iface); + + void setState(QFutureInterfaceBase::State state); +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfuturewatcher_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfuturewatcher_p.h new file mode 100644 index 000000000..e83bdaf45 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qfuturewatcher_p.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUTUREWATCHER_P_H +#define QFUTUREWATCHER_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 "qfutureinterface_p.h" +#include + +#ifndef QT_NO_QFUTURE + +#include + +QT_BEGIN_NAMESPACE + +class QFutureWatcherBase; +class QFutureWatcherBasePrivate : public QObjectPrivate, + public QFutureCallOutInterface +{ + Q_DECLARE_PUBLIC(QFutureWatcherBase) + +public: + QFutureWatcherBasePrivate(); + + void postCallOutEvent(const QFutureCallOutEvent &callOutEvent) Q_DECL_OVERRIDE; + void callOutInterfaceDisconnected() Q_DECL_OVERRIDE; + + void sendCallOutEvent(QFutureCallOutEvent *event); + + QList pendingCallOutEvents; + QAtomicInt pendingResultsReady; + int maximumPendingResultsReady; + + QAtomicInt resultAtConnected; + bool finished; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_QFUTURE +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qgb18030codec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qgb18030codec_p.h new file mode 100644 index 000000000..dd136aedd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qgb18030codec_p.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Contributed by James Su + +#ifndef QGB18030CODEC_P_H +#define QGB18030CODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_BIG_CODECS + +class QGb18030Codec : public QTextCodec { +public: + QGb18030Codec(); + + static QByteArray _name() { return "GB18030"; } + static QList _aliases() { return QList(); } + static int _mibEnum() { return 114; } + + QByteArray name() const { return _name(); } + QList aliases() const { return _aliases(); } + int mibEnum() const { return _mibEnum(); } + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; +}; + +class QGbkCodec : public QGb18030Codec { +public: + QGbkCodec(); + + static QByteArray _name(); + static QList _aliases(); + static int _mibEnum(); + + QByteArray name() const { return _name(); } + QList aliases() const { return _aliases(); } + int mibEnum() const { return _mibEnum(); } + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; +}; + +class QGb2312Codec : public QGb18030Codec { +public: + QGb2312Codec(); + + static QByteArray _name(); + static QList _aliases() { return QList(); } + static int _mibEnum(); + + QByteArray name() const { return _name(); } + int mibEnum() const { return _mibEnum(); } + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; +}; + +#endif // QT_NO_BIG_CODECS + +QT_END_NAMESPACE + +#endif // QGB18030CODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qglobal_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qglobal_p.h new file mode 100644 index 000000000..5f5891bcf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qglobal_p.h @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2015 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGLOBAL_P_H +#define QGLOBAL_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 "qglobal.h" +#include "qglobal_p.h" // include self to avoid syncqt warning - no-op + +#ifndef QT_BOOTSTRAPPED +#include +#include +#endif + +#if defined(__cplusplus) +#if !QT_HAS_BUILTIN(__builtin_available) +#include +#include +#include + +QT_BEGIN_NAMESPACE + +struct qt_clang_builtin_available_os_version_data { + QOperatingSystemVersion::OSType type; + const char *version; +}; + +static inline bool qt_clang_builtin_available( + const std::initializer_list &versions) +{ + for (auto it = versions.begin(); it != versions.end(); ++it) { + if (currentType() == it->type) { + const auto current = QOperatingSystemVersion::current(); + return QVersionNumber( + current.majorVersion(), + current.minorVersion(), + current.microVersion()) >= QVersionNumber::fromString( + QString::fromLatin1(it->version)); + } + } + + // Result is true if the platform is not any of the checked ones; this matches behavior of + // LLVM __builtin_available and @available constructs + return true; +} + +QT_END_NAMESPACE + +#define QT_AVAILABLE_OS_VER(os, ver) \ + QT_PREPEND_NAMESPACE(qt_clang_builtin_available_os_version_data){\ + QT_PREPEND_NAMESPACE(QOperatingSystemVersion)::os, #ver} +#define QT_AVAILABLE_CAT(L, R) QT_AVAILABLE_CAT_(L, R) +#define QT_AVAILABLE_CAT_(L, R) L ## R +#define QT_AVAILABLE_EXPAND(...) QT_AVAILABLE_OS_VER(__VA_ARGS__) +#define QT_AVAILABLE_SPLIT(os_ver) QT_AVAILABLE_EXPAND(QT_AVAILABLE_CAT(QT_AVAILABLE_SPLIT_, os_ver)) +#define QT_AVAILABLE_SPLIT_macOS MacOS, +#define QT_AVAILABLE_SPLIT_iOS IOS, +#define QT_AVAILABLE_SPLIT_tvOS TvOS, +#define QT_AVAILABLE_SPLIT_watchOS WatchOS, +#define QT_BUILTIN_AVAILABLE0(e) \ + QT_PREPEND_NAMESPACE(qt_clang_builtin_available)({}) +#define QT_BUILTIN_AVAILABLE1(a, e) \ + QT_PREPEND_NAMESPACE(qt_clang_builtin_available)({QT_AVAILABLE_SPLIT(a)}) +#define QT_BUILTIN_AVAILABLE2(a, b, e) \ + QT_PREPEND_NAMESPACE(qt_clang_builtin_available)({QT_AVAILABLE_SPLIT(a), \ + QT_AVAILABLE_SPLIT(b)}) +#define QT_BUILTIN_AVAILABLE3(a, b, c, e) \ + QT_PREPEND_NAMESPACE(qt_clang_builtin_available)({QT_AVAILABLE_SPLIT(a), \ + QT_AVAILABLE_SPLIT(b), \ + QT_AVAILABLE_SPLIT(c)}) +#define QT_BUILTIN_AVAILABLE4(a, b, c, d, e) \ + QT_PREPEND_NAMESPACE(qt_clang_builtin_available)({QT_AVAILABLE_SPLIT(a), \ + QT_AVAILABLE_SPLIT(b), \ + QT_AVAILABLE_SPLIT(c), \ + QT_AVAILABLE_SPLIT(d)}) +#define QT_BUILTIN_AVAILABLE_ARG(arg0, arg1, arg2, arg3, arg4, arg5, ...) arg5 +#define QT_BUILTIN_AVAILABLE_CHOOSER(...) QT_BUILTIN_AVAILABLE_ARG(__VA_ARGS__, \ + QT_BUILTIN_AVAILABLE4, \ + QT_BUILTIN_AVAILABLE3, \ + QT_BUILTIN_AVAILABLE2, \ + QT_BUILTIN_AVAILABLE1, \ + QT_BUILTIN_AVAILABLE0, ) +#define __builtin_available(...) QT_BUILTIN_AVAILABLE_CHOOSER(__VA_ARGS__)(__VA_ARGS__) +#endif // !QT_HAS_BUILTIN(__builtin_available) +#endif // defined(__cplusplus) + +#endif // QGLOBAL_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qharfbuzz_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qharfbuzz_p.h new file mode 100644 index 000000000..2a0307d35 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qharfbuzz_p.h @@ -0,0 +1,357 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// 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 + +#ifndef QHARFBUZZ_P_H +#define QHARFBUZZ_P_H + +#include + +#if defined(QT_BUILD_CORE_LIB) +# include +#else +// a minimal set of HB types required for Qt libs other than Core +extern "C" { + +typedef enum { + /* no error */ + HB_Err_Ok = 0x0000, + HB_Err_Not_Covered = 0xFFFF, + + /* _hb_err() is called whenever returning the following errors, + * and in a couple places for HB_Err_Not_Covered too. */ + + /* programmer error */ + HB_Err_Invalid_Argument = 0x1A66, + + /* font error */ + HB_Err_Invalid_SubTable_Format = 0x157F, + HB_Err_Invalid_SubTable = 0x1570, + HB_Err_Read_Error = 0x6EAD, + + /* system error */ + HB_Err_Out_Of_Memory = 0xDEAD +} HB_Error; + +typedef QT_PREPEND_NAMESPACE(qint8) hb_int8; +typedef QT_PREPEND_NAMESPACE(quint8) hb_uint8; +typedef QT_PREPEND_NAMESPACE(qint16) hb_int16; +typedef QT_PREPEND_NAMESPACE(quint16) hb_uint16; +typedef QT_PREPEND_NAMESPACE(qint32) hb_int32; +typedef QT_PREPEND_NAMESPACE(quint32) hb_uint32; + +typedef hb_uint8 HB_Bool; +typedef hb_uint8 HB_Byte; +typedef hb_uint16 HB_UShort; +typedef hb_uint32 HB_UInt; +typedef hb_int8 HB_Char; +typedef hb_int16 HB_Short; +typedef hb_int32 HB_Int; +typedef hb_uint16 HB_UChar16; +typedef hb_uint32 HB_UChar32; +typedef hb_uint32 HB_Glyph; +typedef hb_int32 HB_Fixed; /* 26.6 */ +typedef hb_int32 HB_16Dot16; /* 16.16 */ +typedef hb_uint32 HB_Tag; + +typedef struct { + HB_Fixed x; + HB_Fixed y; +} HB_FixedPoint; + +typedef enum { + HB_Script_Common, + HB_Script_Greek, + HB_Script_Cyrillic, + HB_Script_Armenian, + HB_Script_Hebrew, + HB_Script_Arabic, + HB_Script_Syriac, + HB_Script_Thaana, + HB_Script_Devanagari, + HB_Script_Bengali, + HB_Script_Gurmukhi, + HB_Script_Gujarati, + HB_Script_Oriya, + HB_Script_Tamil, + HB_Script_Telugu, + HB_Script_Kannada, + HB_Script_Malayalam, + HB_Script_Sinhala, + HB_Script_Thai, + HB_Script_Lao, + HB_Script_Tibetan, + HB_Script_Myanmar, + HB_Script_Georgian, + HB_Script_Hangul, + HB_Script_Ogham, + HB_Script_Runic, + HB_Script_Khmer, + HB_Script_Nko, + HB_Script_Inherited, + HB_ScriptCount = HB_Script_Inherited +} HB_Script; + +#ifdef __xlC__ +typedef unsigned hb_bitfield; +#else +typedef hb_uint8 hb_bitfield; +#endif + +typedef struct { + hb_bitfield justification :4; /* Justification class */ + hb_bitfield clusterStart :1; /* First glyph of representation of cluster */ + hb_bitfield mark :1; /* needs to be positioned around base char */ + hb_bitfield zeroWidth :1; /* ZWJ, ZWNJ etc, with no width */ + hb_bitfield dontPrint :1; + hb_bitfield combiningClass :8; +} HB_GlyphAttributes; + +typedef void * HB_GDEF; +typedef void * HB_GSUB; +typedef void * HB_GPOS; +typedef void * HB_Buffer; + +typedef HB_Error (*HB_GetFontTableFunc)(void *font, HB_Tag tag, HB_Byte *buffer, HB_UInt *length); + +typedef struct HB_FaceRec_ { + HB_Bool isSymbolFont; + + HB_GDEF gdef; + HB_GSUB gsub; + HB_GPOS gpos; + HB_Bool supported_scripts[HB_ScriptCount]; + HB_Buffer buffer; + HB_Script current_script; + int current_flags; /* HB_ShaperFlags */ + HB_Bool has_opentype_kerning; + HB_Bool glyphs_substituted; + HB_GlyphAttributes *tmpAttributes; + unsigned int *tmpLogClusters; + int length; + int orig_nglyphs; + void *font_for_init; + HB_GetFontTableFunc get_font_table_func; +} HB_FaceRec; + +typedef struct { + HB_Fixed x, y; + HB_Fixed width, height; + HB_Fixed xOffset, yOffset; +} HB_GlyphMetrics; + +typedef enum { + HB_FontAscent +} HB_FontMetric; + +struct HB_Font_; +typedef struct HB_Font_ *HB_Font; +typedef struct HB_FaceRec_ *HB_Face; + +typedef struct { + HB_Bool (*convertStringToGlyphIndices)(HB_Font font, const HB_UChar16 *string, hb_uint32 length, HB_Glyph *glyphs, hb_uint32 *numGlyphs, HB_Bool rightToLeft); + void (*getGlyphAdvances)(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGlyphs, HB_Fixed *advances, int flags /*HB_ShaperFlag*/); + HB_Bool (*canRender)(HB_Font font, const HB_UChar16 *string, hb_uint32 length); + /* implementation needs to make sure to load a scaled glyph, so /no/ FT_LOAD_NO_SCALE */ + HB_Error (*getPointInOutline)(HB_Font font, HB_Glyph glyph, int flags /*HB_ShaperFlag*/, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints); + void (*getGlyphMetrics)(HB_Font font, HB_Glyph glyph, HB_GlyphMetrics *metrics); + HB_Fixed (*getFontMetric)(HB_Font font, HB_FontMetric metric); +} HB_FontClass; + +typedef struct HB_Font_ { + const HB_FontClass *klass; + + /* Metrics */ + HB_UShort x_ppem, y_ppem; + HB_16Dot16 x_scale, y_scale; + + void *userData; +} HB_FontRec; + +typedef enum { + HB_LeftToRight = 0, + HB_RightToLeft = 1 +} HB_StringToGlyphsFlags; + +typedef enum { + HB_ShaperFlag_Default = 0, + HB_ShaperFlag_NoKerning = 1, + HB_ShaperFlag_UseDesignMetrics = 2 +} HB_ShaperFlag; + +typedef struct +{ + hb_uint32 pos; + hb_uint32 length; + HB_Script script; + hb_uint8 bidiLevel; +} HB_ScriptItem; + +typedef struct HB_ShaperItem_ HB_ShaperItem; + +struct HB_ShaperItem_ { + const HB_UChar16 *string; /* input: the Unicode UTF16 text to be shaped */ + hb_uint32 stringLength; /* input: the length of the input in 16-bit words */ + HB_ScriptItem item; /* input: the current run to be shaped: a run of text all in the same script that is a substring of */ + HB_Font font; /* input: the font: scale, units and function pointers supplying glyph indices and metrics */ + HB_Face face; /* input: the shaper state; current script, access to the OpenType tables , etc. */ + int shaperFlags; /* input (unused) should be set to 0; intended to support flags defined in HB_ShaperFlag */ + HB_Bool glyphIndicesPresent; /* input: true if the array contains glyph indices ready to be shaped */ + hb_uint32 initialGlyphCount; /* input: if glyphIndicesPresent is true, the number of glyph indices in the array */ + + hb_uint32 num_glyphs; /* input: capacity of output arrays , , , , and ; */ + /* output: required capacity (may be larger than actual capacity) */ + + HB_Glyph *glyphs; /* output: indices of shaped glyphs */ + HB_GlyphAttributes *attributes; /* output: glyph attributes */ + HB_Fixed *advances; /* output: advances */ + HB_FixedPoint *offsets; /* output: offsets */ + unsigned short *log_clusters; /* output: for each output glyph, the index in the input of the start of its logical cluster */ + + /* internal */ + HB_Bool kerning_applied; /* output: true if kerning was applied by the shaper */ +}; + +} + +#endif // QT_BUILD_CORE_LIB + + +QT_BEGIN_NAMESPACE + +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 +Q_CORE_EXPORT HB_Face qHBNewFace(void *font, HB_GetFontTableFunc tableFunc); +Q_CORE_EXPORT void qHBFreeFace(HB_Face); +Q_CORE_EXPORT HB_Face qHBLoadFace(HB_Face face); + +Q_DECLARE_TYPEINFO(HB_GlyphAttributes, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(HB_FixedPoint, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(HB_ScriptItem, Q_PRIMITIVE_TYPE); + +QT_END_NAMESPACE + +#endif // QHARFBUZZ_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qhistorystate_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qhistorystate_p.h new file mode 100644 index 000000000..d22e5c4aa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qhistorystate_p.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHISTORYSTATE_P_H +#define QHISTORYSTATE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qabstractstate_p.h" +#include +#include +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QHistoryStatePrivate : public QAbstractStatePrivate +{ + Q_DECLARE_PUBLIC(QHistoryState) + +public: + QHistoryStatePrivate(); + + static QHistoryStatePrivate *get(QHistoryState *q) + { return q->d_func(); } + + QAbstractTransition *defaultTransition; + QHistoryState::HistoryType historyType; + QList configuration; +}; + +class DefaultStateTransition: public QAbstractTransition +{ + Q_OBJECT + +public: + DefaultStateTransition(QHistoryState *source, QAbstractState *target); + +protected: + // It doesn't matter whether this transition matches any event or not. It is always associated + // with a QHistoryState, and as soon as the state-machine detects that it enters a history + // state, it will handle this transition as a special case. The history state itself is never + // entered either: either the stored configuration will be used, or the target(s) of this + // transition are used. + bool eventTest(QEvent *event) override { Q_UNUSED(event); return false; } + void onTransition(QEvent *event) override { Q_UNUSED(event); } +}; + +QT_END_NAMESPACE + +#endif // QHISTORYSTATE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qhooks_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qhooks_p.h new file mode 100644 index 000000000..a51a2ec86 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qhooks_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Volker Krause +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QHOOKS_H +#define QHOOKS_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +class QObject; + +namespace QHooks { + +enum HookIndex { + HookDataVersion = 0, + HookDataSize = 1, + QtVersion = 2, + AddQObject = 3, + RemoveQObject = 4, + Startup = 5, + TypeInformationVersion = 6, + LastHookIndex +}; + +typedef void(*AddQObjectCallback)(QObject*); +typedef void(*RemoveQObjectCallback)(QObject*); +typedef void(*StartupCallback)(); + +} + +extern quintptr Q_CORE_EXPORT qtHookData[]; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qiconvcodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qiconvcodec_p.h new file mode 100644 index 000000000..9b8500538 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qiconvcodec_p.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QICONVCODEC_P_H +#define QICONVCODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qtextcodec.h" + +QT_REQUIRE_CONFIG(iconv); + +#include + +QT_BEGIN_NAMESPACE + +class QIconvCodec: public QTextCodec +{ +private: + mutable QTextCodec *utf16Codec; + +public: + QIconvCodec(); + ~QIconvCodec(); + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; + + QByteArray name() const; + int mibEnum() const; + + void init() const; + iconv_t createIconv_t(const char *to, const char *from) const; + + class IconvState + { + public: + IconvState(iconv_t x); + ~IconvState(); + ConverterState internalState; + char *buffer; + int bufferLen; + iconv_t cd; + + char array[8]; + + void saveChars(const char *c, int count); + }; +}; + +QT_END_NAMESPACE + +#endif // QICONVCODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qicucodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qicucodec_p.h new file mode 100644 index 000000000..3a373ce5b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qicucodec_p.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QICUCODEC_P_H +#define QICUCODEC_P_H + +#include "QtCore/qtextcodec.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 + +extern "C" { + typedef struct UConverter UConverter; +} + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_TEXTCODEC + +class QIcuCodec : public QTextCodec +{ +public: + static QList availableCodecs(); + static QList availableMibs(); + + static QTextCodec *defaultCodecUnlocked(); + + static QTextCodec *codecForNameUnlocked(const char *name); + static QTextCodec *codecForMibUnlocked(int mib); + + QString convertToUnicode(const char *, int, ConverterState *) const Q_DECL_OVERRIDE; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const Q_DECL_OVERRIDE; + + QByteArray name() const Q_DECL_OVERRIDE; + QList aliases() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; + +private: + QIcuCodec(const char *name); + ~QIcuCodec(); + + UConverter *getConverter(QTextCodec::ConverterState *state) const; + + const char *m_name; +}; + +#endif // QT_NO_TEXTCODEC + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qiodevice_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qiodevice_p.h new file mode 100644 index 000000000..71a326dd5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qiodevice_p.h @@ -0,0 +1,185 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIODEVICE_P_H +#define QIODEVICE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of QIODevice. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "QtCore/qiodevice.h" +#include "QtCore/qbytearray.h" +#include "QtCore/qobjectdefs.h" +#include "QtCore/qstring.h" +#include "private/qringbuffer_p.h" +#include "QtCore/qvector.h" +#ifndef QT_NO_QOBJECT +#include "private/qobject_p.h" +#endif + +QT_BEGIN_NAMESPACE + +#ifndef QIODEVICE_BUFFERSIZE +#define QIODEVICE_BUFFERSIZE 16384 +#endif + +Q_CORE_EXPORT int qt_subtract_from_timeout(int timeout, int elapsed); + +class Q_CORE_EXPORT QIODevicePrivate +#ifndef QT_NO_QOBJECT + : public QObjectPrivate +#endif +{ + Q_DECLARE_PUBLIC(QIODevice) + +public: + QIODevicePrivate(); + virtual ~QIODevicePrivate(); + + QIODevice::OpenMode openMode; + QString errorString; + + QVector readBuffers; + QVector writeBuffers; + + class QRingBufferRef { + QRingBuffer *m_buf; + inline QRingBufferRef() : m_buf(Q_NULLPTR) { } + friend class QIODevicePrivate; + public: + // wrap functions from QRingBuffer + inline void setChunkSize(int size) { Q_ASSERT(m_buf); m_buf->setChunkSize(size); } + inline int chunkSize() const { Q_ASSERT(m_buf); return m_buf->chunkSize(); } + inline qint64 nextDataBlockSize() const { return (m_buf ? m_buf->nextDataBlockSize() : Q_INT64_C(0)); } + inline const char *readPointer() const { return (m_buf ? m_buf->readPointer() : Q_NULLPTR); } + inline const char *readPointerAtPosition(qint64 pos, qint64 &length) const { Q_ASSERT(m_buf); return m_buf->readPointerAtPosition(pos, length); } + inline void free(qint64 bytes) { Q_ASSERT(m_buf); m_buf->free(bytes); } + inline char *reserve(qint64 bytes) { Q_ASSERT(m_buf); return m_buf->reserve(bytes); } + inline char *reserveFront(qint64 bytes) { Q_ASSERT(m_buf); return m_buf->reserveFront(bytes); } + inline void truncate(qint64 pos) { Q_ASSERT(m_buf); m_buf->truncate(pos); } + inline void chop(qint64 bytes) { Q_ASSERT(m_buf); m_buf->chop(bytes); } + inline bool isEmpty() const { return !m_buf || m_buf->isEmpty(); } + inline int getChar() { return (m_buf ? m_buf->getChar() : -1); } + inline void putChar(char c) { Q_ASSERT(m_buf); m_buf->putChar(c); } + inline void ungetChar(char c) { Q_ASSERT(m_buf); m_buf->ungetChar(c); } + inline qint64 size() const { return (m_buf ? m_buf->size() : Q_INT64_C(0)); } + inline void clear() { if (m_buf) m_buf->clear(); } + inline qint64 indexOf(char c) const { return (m_buf ? m_buf->indexOf(c, m_buf->size()) : Q_INT64_C(-1)); } + inline qint64 indexOf(char c, qint64 maxLength, qint64 pos = 0) const { return (m_buf ? m_buf->indexOf(c, maxLength, pos) : Q_INT64_C(-1)); } + inline qint64 read(char *data, qint64 maxLength) { return (m_buf ? m_buf->read(data, maxLength) : Q_INT64_C(0)); } + inline QByteArray read() { return (m_buf ? m_buf->read() : QByteArray()); } + inline qint64 peek(char *data, qint64 maxLength, qint64 pos = 0) const { return (m_buf ? m_buf->peek(data, maxLength, pos) : Q_INT64_C(0)); } + inline void append(const char *data, qint64 size) { Q_ASSERT(m_buf); m_buf->append(data, size); } + inline void append(const QByteArray &qba) { Q_ASSERT(m_buf); m_buf->append(qba); } + inline qint64 skip(qint64 length) { return (m_buf ? m_buf->skip(length) : Q_INT64_C(0)); } + inline qint64 readLine(char *data, qint64 maxLength) { return (m_buf ? m_buf->readLine(data, maxLength) : Q_INT64_C(-1)); } + inline bool canReadLine() const { return m_buf && m_buf->canReadLine(); } + }; + + QRingBufferRef buffer; + QRingBufferRef writeBuffer; + qint64 pos; + qint64 devicePos; + int readChannelCount; + int writeChannelCount; + int currentReadChannel; + int currentWriteChannel; + int readBufferChunkSize; + int writeBufferChunkSize; + qint64 transactionPos; + bool transactionStarted; + bool baseReadLineDataCalled; + + virtual bool putCharHelper(char c); + + enum AccessMode { + Unset, + Sequential, + RandomAccess + }; + mutable AccessMode accessMode; + inline bool isSequential() const + { + if (accessMode == Unset) + accessMode = q_func()->isSequential() ? Sequential : RandomAccess; + return accessMode == Sequential; + } + + inline bool isBufferEmpty() const + { + return buffer.isEmpty() || (transactionStarted && isSequential() + && transactionPos == buffer.size()); + } + bool allWriteBuffersEmpty() const; + + void seekBuffer(qint64 newPos); + + inline void setCurrentReadChannel(int channel) + { + buffer.m_buf = (channel < readBuffers.size() ? &readBuffers[channel] : nullptr); + currentReadChannel = channel; + } + inline void setCurrentWriteChannel(int channel) + { + writeBuffer.m_buf = (channel < writeBuffers.size() ? &writeBuffers[channel] : nullptr); + currentWriteChannel = channel; + } + void setReadChannelCount(int count); + void setWriteChannelCount(int count); + + qint64 read(char *data, qint64 maxSize, bool peeking = false); + virtual qint64 peek(char *data, qint64 maxSize); + virtual QByteArray peek(qint64 maxSize); + +#ifdef QT_NO_QOBJECT + QIODevice *q_ptr; +#endif +}; + +QT_END_NAMESPACE + +#endif // QIODEVICE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qipaddress_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qipaddress_p.h new file mode 100644 index 000000000..d95cccb3b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qipaddress_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIPADDRESS_P_H +#define QIPADDRESS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qstring.h" + +QT_BEGIN_NAMESPACE + +namespace QIPAddressUtils { + +typedef quint32 IPv4Address; +typedef quint8 IPv6Address[16]; + +Q_CORE_EXPORT bool parseIp4(IPv4Address &address, const QChar *begin, const QChar *end); +Q_CORE_EXPORT const QChar *parseIp6(IPv6Address &address, const QChar *begin, const QChar *end); +Q_CORE_EXPORT void toString(QString &appendTo, IPv4Address address); +Q_CORE_EXPORT void toString(QString &appendTo, IPv6Address address); + +} // namespace + +QT_END_NAMESPACE + +#endif // QIPADDRESS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qisciicodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qisciicodec_p.h new file mode 100644 index 000000000..f92c0091c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qisciicodec_p.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QISCIICODEC_P_H +#define QISCIICODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qtextcodec.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_CODECS + +class QIsciiCodec : public QTextCodec { +public: + explicit QIsciiCodec(int i) : idx(i) {} + ~QIsciiCodec(); + + static QTextCodec *create(const char *name); + + QByteArray name() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; + + QString convertToUnicode(const char *, int, ConverterState *) const Q_DECL_OVERRIDE; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const Q_DECL_OVERRIDE; + +private: + int idx; +}; + +#endif // QT_NO_CODECS + +QT_END_NAMESPACE + +#endif // QISCIICODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qitemselectionmodel_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qitemselectionmodel_p.h new file mode 100644 index 000000000..dfc038756 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qitemselectionmodel_p.h @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QITEMSELECTIONMODEL_P_H +#define QITEMSELECTIONMODEL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qobject_p.h" + +QT_BEGIN_NAMESPACE + +class QItemSelectionModelPrivate: public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QItemSelectionModel) +public: + QItemSelectionModelPrivate() + : model(0), + currentCommand(QItemSelectionModel::NoUpdate), + tableSelected(false), tableColCount(0), tableRowCount(0) {} + + QItemSelection expandSelection(const QItemSelection &selection, + QItemSelectionModel::SelectionFlags command) const; + + void initModel(QAbstractItemModel *model); + + void _q_rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); + void _q_columnsAboutToBeRemoved(const QModelIndex &parent, int start, int end); + void _q_rowsAboutToBeInserted(const QModelIndex &parent, int start, int end); + void _q_columnsAboutToBeInserted(const QModelIndex &parent, int start, int end); + void _q_layoutAboutToBeChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint); + void _q_layoutChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint); + + inline void remove(QList &r) + { + QList::const_iterator it = r.constBegin(); + for (; it != r.constEnd(); ++it) + ranges.removeAll(*it); + } + + inline void finalize() + { + ranges.merge(currentSelection, currentCommand); + if (!currentSelection.isEmpty()) // ### perhaps this should be in QList + currentSelection.clear(); + } + + QPointer model; + QItemSelection ranges; + QItemSelection currentSelection; + QPersistentModelIndex currentIndex; + QItemSelectionModel::SelectionFlags currentCommand; + QVector savedPersistentIndexes; + QVector savedPersistentCurrentIndexes; + QVector > savedPersistentRowLengths; + QVector > savedPersistentCurrentRowLengths; + // optimization when all indexes are selected + bool tableSelected; + QPersistentModelIndex tableParent; + int tableColCount, tableRowCount; +}; + +QT_END_NAMESPACE + +#endif // QITEMSELECTIONMODEL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjiscodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjiscodec_p.h new file mode 100644 index 000000000..4db872881 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjiscodec_p.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Most of the code here was originally written by Serika Kurusugawa +// a.k.a. Junji Takagi, and is included in Qt with the author's permission, +// and the grateful thanks of the Qt team. + +/* + * Copyright (C) 1999 Serika Kurusugawa, All rights reserved. + * + * 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 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 REGENTS 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 QJISCODEC_P_H +#define QJISCODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qjpunicode_p.h" +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_BIG_CODECS + +class QJisCodec : public QTextCodec { +public: + static QByteArray _name(); + static QList _aliases(); + static int _mibEnum(); + + QByteArray name() const { return _name(); } + QList aliases() const { return _aliases(); } + int mibEnum() const { return _mibEnum(); } + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; + + QJisCodec(); + ~QJisCodec(); + +protected: + const QJpUnicodeConv *conv; +}; + +#endif // QT_NO_BIG_CODECS + +QT_END_NAMESPACE + +#endif // QJISCODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjni_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjni_p.h new file mode 100644 index 000000000..52abd51dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjni_p.h @@ -0,0 +1,291 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// 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. +// + +#ifndef QJNI_P_H +#define QJNI_P_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +struct Q_CORE_EXPORT QJNILocalRefDeleter +{ + static void cleanup(jobject obj); +}; + +// To simplify this we only define it for jobjects. +typedef QScopedPointer<_jobject, QJNILocalRefDeleter> QJNIScopedLocalRef; + +class Q_CORE_EXPORT QJNIEnvironmentPrivate +{ +public: + QJNIEnvironmentPrivate(); + ~QJNIEnvironmentPrivate(); + JNIEnv *operator->(); + operator JNIEnv*() const; + static jclass findClass(const char *className, JNIEnv *env = 0); + +private: + friend class QAndroidJniEnvironment; + Q_DISABLE_COPY(QJNIEnvironmentPrivate) + JNIEnv *jniEnv; +}; + +class Q_CORE_EXPORT QJNIObjectData +{ +public: + QJNIObjectData(); + ~QJNIObjectData(); + jobject m_jobject; + jclass m_jclass; + bool m_own_jclass; + QByteArray m_className; +}; + +class Q_CORE_EXPORT QJNIObjectPrivate +{ +public: + QJNIObjectPrivate(); + explicit QJNIObjectPrivate(const char *className); + QJNIObjectPrivate(const char *className, const char *sig, ...); + explicit QJNIObjectPrivate(jclass clazz); + QJNIObjectPrivate(jclass clazz, const char *sig, ...); + // In most cases you should never call this function with a local ref. unless you intend + // to manage the local ref. yourself. + // NOTE: see fromLocalRef() for converting a local ref. to QJNIObjectPrivate. + explicit QJNIObjectPrivate(jobject globalRef); + + template + T callMethod(const char *methodName, + const char *sig, + ...) const; + template + T callMethod(const char *methodName) const; + template + QJNIObjectPrivate callObjectMethod(const char *methodName) const; + QJNIObjectPrivate callObjectMethod(const char *methodName, + const char *sig, + ...) const; + template + static T callStaticMethod(const char *className, + const char *methodName, + const char *sig, ...); + template + static T callStaticMethod(const char *className, + const char *methodName); + template + static T callStaticMethod(jclass clazz, + const char *methodName, + const char *sig, ...); + template + static T callStaticMethod(jclass clazz, + const char *methodName); + static QJNIObjectPrivate callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, ...); + + static QJNIObjectPrivate callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, ...); + + template + T getField(const char *fieldName) const; + template + static T getStaticField(const char *className, const char *fieldName); + template + static T getStaticField(jclass clazz, const char *fieldName); + + QJNIObjectPrivate getObjectField(const char *fieldName, const char *sig) const; + static QJNIObjectPrivate getStaticObjectField(const char *className, + const char *fieldName, + const char *sig); + static QJNIObjectPrivate getStaticObjectField(jclass clazz, + const char *fieldName, + const char *sig); + + template + void setField(const char *fieldName, T value); + template + void setField(const char *fieldName, const char *sig, T value); + template + static void setStaticField(const char *className, + const char *fieldName, + T value); + template + static void setStaticField(const char *className, + const char *fieldName, + const char *sig, + T value); + template + static void setStaticField(jclass clazz, + const char *fieldName, + const char *sig, + T value); + + template + static void setStaticField(jclass clazz, + const char *fieldName, + T value); + + static QJNIObjectPrivate fromString(const QString &string); + QString toString() const; + + static bool isClassAvailable(const char *className); + bool isValid() const; + jobject object() const { return d->m_jobject; } + + template + inline QJNIObjectPrivate &operator=(T o) + { + jobject jobj = static_cast(o); + if (!isSameObject(jobj)) { + d = QSharedPointer::create(); + if (jobj) { + QJNIEnvironmentPrivate env; + d->m_jobject = env->NewGlobalRef(jobj); + jclass objectClass = env->GetObjectClass(jobj); + d->m_jclass = static_cast(env->NewGlobalRef(objectClass)); + env->DeleteLocalRef(objectClass); + } + } + + return *this; + } + + // This function takes ownership of the jobject and releases the local ref. before returning. + static QJNIObjectPrivate fromLocalRef(jobject lref); + +private: + friend class QAndroidJniObject; + + struct QVaListPrivate { operator va_list &() const { return m_args; } va_list &m_args; }; + + QJNIObjectPrivate(const char *className, const char *sig, const QVaListPrivate &args); + QJNIObjectPrivate(jclass clazz, const char *sig, const QVaListPrivate &args); + + template + T callMethodV(const char *methodName, + const char *sig, + va_list args) const; + QJNIObjectPrivate callObjectMethodV(const char *methodName, + const char *sig, + va_list args) const; + template + static T callStaticMethodV(const char *className, + const char *methodName, + const char *sig, + va_list args); + template + static T callStaticMethodV(jclass clazz, + const char *methodName, + const char *sig, + va_list args); + static QJNIObjectPrivate callStaticObjectMethodV(const char *className, + const char *methodName, + const char *sig, + va_list args); + + static QJNIObjectPrivate callStaticObjectMethodV(jclass clazz, + const char *methodName, + const char *sig, + va_list args); + + bool isSameObject(jobject obj) const; + bool isSameObject(const QJNIObjectPrivate &other) const; + + friend bool operator==(const QJNIObjectPrivate &, const QJNIObjectPrivate &); + friend bool operator!=(const QJNIObjectPrivate&, const QJNIObjectPrivate&); + template friend bool operator!=(const QJNIObjectPrivate&, T); + template friend bool operator==(const QJNIObjectPrivate&, T); + template friend bool operator!=(T, const QJNIObjectPrivate&); + template friend bool operator==(T, const QJNIObjectPrivate&); + + QSharedPointer d; +}; + +inline bool operator==(const QJNIObjectPrivate&obj1, const QJNIObjectPrivate&obj2) +{ + return obj1.isSameObject(obj2); +} + +inline bool operator!=(const QJNIObjectPrivate&obj1, const QJNIObjectPrivate&obj2) +{ + return !obj1.isSameObject(obj2); +} + +template +inline bool operator==(const QJNIObjectPrivate &obj1, T obj2) +{ + return obj1.isSameObject(static_cast(obj2)); +} + +template +inline bool operator==(T obj1, const QJNIObjectPrivate &obj2) +{ + return obj2.isSameObject(static_cast(obj1)); +} + +template +inline bool operator!=(const QJNIObjectPrivate &obj1, T obj2) +{ + return !obj1.isSameObject(obj2); +} + +template +inline bool operator!=(T obj1, const QJNIObjectPrivate &obj2) +{ + return !obj2.isSameObject(obj1); +} + +QT_END_NAMESPACE + +#endif // QJNI_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjnihelpers_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjnihelpers_p.h new file mode 100644 index 000000000..d88e4fc19 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjnihelpers_p.h @@ -0,0 +1,152 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QJNIHELPERS_H +#define QJNIHELPERS_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QRunnable; +class QStringList; + +namespace QtAndroidPrivate +{ + class Q_CORE_EXPORT ActivityResultListener + { + public: + virtual ~ActivityResultListener(); + virtual bool handleActivityResult(jint requestCode, jint resultCode, jobject data) = 0; + }; + + class Q_CORE_EXPORT NewIntentListener + { + public: + virtual ~NewIntentListener(); + virtual bool handleNewIntent(JNIEnv *env, jobject intent) = 0; + }; + + class Q_CORE_EXPORT ResumePauseListener + { + public: + virtual ~ResumePauseListener(); + virtual void handlePause(); + virtual void handleResume(); + }; + + class Q_CORE_EXPORT GenericMotionEventListener + { + public: + virtual ~GenericMotionEventListener(); + virtual bool handleGenericMotionEvent(jobject event) = 0; + }; + + class Q_CORE_EXPORT KeyEventListener + { + public: + virtual ~KeyEventListener(); + virtual bool handleKeyEvent(jobject event) = 0; + }; + + enum class PermissionsResult { + Granted, + Denied + }; + typedef QHash PermissionsHash; + typedef std::function Runnable; + typedef std::function PermissionsResultFunc; + + Q_CORE_EXPORT jobject activity(); + Q_CORE_EXPORT jobject service(); + Q_CORE_EXPORT jobject context(); + Q_CORE_EXPORT JavaVM *javaVM(); + Q_CORE_EXPORT jint initJNI(JavaVM *vm, JNIEnv *env); + jobject classLoader(); + Q_CORE_EXPORT jint androidSdkVersion(); + Q_CORE_EXPORT void runOnAndroidThread(const Runnable &runnable, JNIEnv *env); + Q_CORE_EXPORT void runOnAndroidThreadSync(const Runnable &runnable, JNIEnv *env, int timeoutMs = INT_MAX); + Q_CORE_EXPORT void runOnUiThread(QRunnable *runnable, JNIEnv *env); + Q_CORE_EXPORT void requestPermissions(JNIEnv *env, const QStringList &permissions, const PermissionsResultFunc &callbackFunc, bool directCall = false); + Q_CORE_EXPORT PermissionsHash requestPermissionsSync(JNIEnv *env, const QStringList &permissions, int timeoutMs = INT_MAX); + Q_CORE_EXPORT PermissionsResult checkPermission(const QString &permission); + Q_CORE_EXPORT bool shouldShowRequestPermissionRationale(const QString &permission); + + Q_CORE_EXPORT void handleActivityResult(jint requestCode, jint resultCode, jobject data); + Q_CORE_EXPORT void registerActivityResultListener(ActivityResultListener *listener); + Q_CORE_EXPORT void unregisterActivityResultListener(ActivityResultListener *listener); + + Q_CORE_EXPORT void handleNewIntent(JNIEnv *env, jobject intent); + Q_CORE_EXPORT void registerNewIntentListener(NewIntentListener *listener); + Q_CORE_EXPORT void unregisterNewIntentListener(NewIntentListener *listener); + + Q_CORE_EXPORT void handlePause(); + Q_CORE_EXPORT void handleResume(); + Q_CORE_EXPORT void registerResumePauseListener(ResumePauseListener *listener); + Q_CORE_EXPORT void unregisterResumePauseListener(ResumePauseListener *listener); + + Q_CORE_EXPORT void registerGenericMotionEventListener(GenericMotionEventListener *listener); + Q_CORE_EXPORT void unregisterGenericMotionEventListener(GenericMotionEventListener *listener); + + Q_CORE_EXPORT void registerKeyEventListener(KeyEventListener *listener); + Q_CORE_EXPORT void unregisterKeyEventListener(KeyEventListener *listener); + + Q_CORE_EXPORT void hideSplashScreen(JNIEnv *env); +} + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QtAndroidPrivate::PermissionsHash) + +#endif // QJNIHELPERS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjpunicode_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjpunicode_p.h new file mode 100644 index 000000000..4fa2b9f75 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjpunicode_p.h @@ -0,0 +1,187 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Most of the code here was originally written by Serika Kurusugawa +// a.k.a. Junji Takagi, and is included in Qt with the author's permission, +// and the grateful thanks of the Qt team. + +/* + * Copyright (C) 1999 Serika Kurusugawa, All rights reserved. + * + * 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 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 REGENTS 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 QJPUNICODE_P_H +#define QJPUNICODE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_BIG_CODECS + +class QJpUnicodeConv { +public: + virtual ~QJpUnicodeConv() {} + enum Rules { + // "ASCII" is ANSI X.3.4-1986, a.k.a. US-ASCII here. + Default = 0x0000, + + Unicode = 0x0001, + Unicode_JISX0201 = 0x0001, + Unicode_ASCII = 0x0002, + JISX0221_JISX0201 = 0x0003, + JISX0221_ASCII = 0x0004, + Sun_JDK117 = 0x0005, + Microsoft_CP932 = 0x0006, + + NEC_VDC = 0x0100, // NEC Vender Defined Char + UDC = 0x0200, // User Defined Char + IBM_VDC = 0x0400 // IBM Vender Defined Char + }; + static QJpUnicodeConv *newConverter(int rule); + + virtual uint asciiToUnicode(uint h, uint l) const; + /*virtual*/ uint jisx0201ToUnicode(uint h, uint l) const; + virtual uint jisx0201LatinToUnicode(uint h, uint l) const; + /*virtual*/ uint jisx0201KanaToUnicode(uint h, uint l) const; + virtual uint jisx0208ToUnicode(uint h, uint l) const; + virtual uint jisx0212ToUnicode(uint h, uint l) const; + + uint asciiToUnicode(uint ascii) const { + return asciiToUnicode((ascii & 0xff00) >> 8, (ascii & 0x00ff)); + } + uint jisx0201ToUnicode(uint jis) const { + return jisx0201ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff)); + } + uint jisx0201LatinToUnicode(uint jis) const { + return jisx0201LatinToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff)); + } + uint jisx0201KanaToUnicode(uint jis) const { + return jisx0201KanaToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff)); + } + uint jisx0208ToUnicode(uint jis) const { + return jisx0208ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff)); + } + uint jisx0212ToUnicode(uint jis) const { + return jisx0212ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff)); + } + + virtual uint unicodeToAscii(uint h, uint l) const; + /*virtual*/ uint unicodeToJisx0201(uint h, uint l) const; + virtual uint unicodeToJisx0201Latin(uint h, uint l) const; + /*virtual*/ uint unicodeToJisx0201Kana(uint h, uint l) const; + virtual uint unicodeToJisx0208(uint h, uint l) const; + virtual uint unicodeToJisx0212(uint h, uint l) const; + + uint unicodeToAscii(uint unicode) const { + return unicodeToAscii((unicode & 0xff00) >> 8, (unicode & 0x00ff)); + } + uint unicodeToJisx0201(uint unicode) const { + return unicodeToJisx0201((unicode & 0xff00) >> 8, (unicode & 0x00ff)); + } + uint unicodeToJisx0201Latin(uint unicode) const { + return unicodeToJisx0201Latin((unicode & 0xff00) >> 8, (unicode & 0x00ff)); + } + uint unicodeToJisx0201Kana(uint unicode) const { + return unicodeToJisx0201Kana((unicode & 0xff00) >> 8, (unicode & 0x00ff)); + } + uint unicodeToJisx0208(uint unicode) const { + return unicodeToJisx0208((unicode & 0xff00) >> 8, (unicode & 0x00ff)); + } + uint unicodeToJisx0212(uint unicode) const { + return unicodeToJisx0212((unicode & 0xff00) >> 8, (unicode & 0x00ff)); + } + + uint sjisToUnicode(uint h, uint l) const; + uint unicodeToSjis(uint h, uint l) const; + uint sjisibmvdcToUnicode(uint h, uint l) const; + uint unicodeToSjisibmvdc(uint h, uint l) const; + uint cp932ToUnicode(uint h, uint l) const; + uint unicodeToCp932(uint h, uint l) const; + + uint sjisToUnicode(uint sjis) const { + return sjisToUnicode((sjis & 0xff00) >> 8, (sjis & 0x00ff)); + } + uint unicodeToSjis(uint unicode) const { + return unicodeToSjis((unicode & 0xff00) >> 8, (unicode & 0x00ff)); + } + +protected: + explicit QJpUnicodeConv(int r) : rule(r) {} + +private: + int rule; +}; + +#endif // QT_NO_BIG_CODECS + +QT_END_NAMESPACE + +#endif // QJPUNICODE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjson_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjson_p.h new file mode 100644 index 000000000..c012ec266 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjson_p.h @@ -0,0 +1,902 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QJSON_P_H +#define QJSON_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "private/qsimd_p.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +/* + This defines a binary data structure for Json data. The data structure is optimised for fast reading + and minimum allocations. The whole data structure can be mmap'ed and used directly. + + In most cases the binary structure is not as space efficient as a utf8 encoded text representation, but + much faster to access. + + The size requirements are: + + String: + Latin1 data: 2 bytes header + string.length() + Full Unicode: 4 bytes header + 2*(string.length()) + + Values: 4 bytes + size of data (size can be 0 for some data) + bool: 0 bytes + double: 8 bytes (0 if integer with less than 27bits) + string: see above + array: size of array + object: size of object + Array: 12 bytes + 4*length + size of Value data + Object: 12 bytes + 8*length + size of Key Strings + size of Value data + + For an example such as + + { // object: 12 + 5*8 = 52 + "firstName": "John", // key 12, value 8 = 20 + "lastName" : "Smith", // key 12, value 8 = 20 + "age" : 25, // key 8, value 0 = 8 + "address" : // key 12, object below = 140 + { // object: 12 + 4*8 + "streetAddress": "21 2nd Street", // key 16, value 16 + "city" : "New York", // key 8, value 12 + "state" : "NY", // key 8, value 4 + "postalCode" : "10021" // key 12, value 8 + }, // object total: 128 + "phoneNumber": // key: 16, value array below = 172 + [ // array: 12 + 2*4 + values below: 156 + { // object 12 + 2*8 + "type" : "home", // key 8, value 8 + "number": "212 555-1234" // key 8, value 16 + }, // object total: 68 + { // object 12 + 2*8 + "type" : "fax", // key 8, value 8 + "number": "646 555-4567" // key 8, value 16 + } // object total: 68 + ] // array total: 156 + } // great total: 412 bytes + + The uncompressed text file used roughly 500 bytes, so in this case we end up using about + the same space as the text representation. + + Other measurements have shown a slightly bigger binary size than a compact text + representation where all possible whitespace was stripped out. +*/ +#define Q_DECLARE_JSONPRIVATE_TYPEINFO(Class, Flags) } Q_DECLARE_TYPEINFO(QJsonPrivate::Class, Flags); namespace QJsonPrivate { +namespace QJsonPrivate { + +class Array; +class Object; +class Value; +class Entry; + +template +class q_littleendian +{ +public: + T val; + + q_littleendian &operator =(T i) { val = qToLittleEndian(i); return *this; } + operator T() const { return qFromLittleEndian(val); } + + bool operator ==(T i) { return qFromLittleEndian(val) == i; } + bool operator !=(T i) { return qFromLittleEndian(val) != i; } + bool operator ==(q_littleendian i) { return val == i.val; } + bool operator !=(q_littleendian i) { return val != i.val; } + bool operator <(T i) { return qFromLittleEndian(val) < i; } + bool operator >(T i) { return qFromLittleEndian(val) > i; } + bool operator <=(T i) { return qFromLittleEndian(val) <= i; } + bool operator >=(T i) { return qFromLittleEndian(val) >= i; } + q_littleendian &operator +=(T i) { + val = qToLittleEndian(qFromLittleEndian(val) + i); + return *this; + } + q_littleendian &operator |=(T i) { + val = qToLittleEndian(qFromLittleEndian(val) | i); + return *this; + } + q_littleendian &operator &=(T i) { + val = qToLittleEndian(qFromLittleEndian(val) & i); + return *this; + } +}; +} // namespace QJsonPrivate + +template +class QTypeInfo > + : public QTypeInfoMerger, T> {}; + +namespace QJsonPrivate { + +typedef q_littleendian qle_short; +typedef q_littleendian qle_ushort; +typedef q_littleendian qle_int; +typedef q_littleendian qle_uint; + +template +class qle_bitfield +{ +public: + uint val; + + enum { + mask = ((1u << width) - 1) << pos + }; + + void operator =(uint t) { + uint i = qFromLittleEndian(val); + i &= ~mask; + i |= t << pos; + val = qToLittleEndian(i); + } + operator uint() const { + uint t = qFromLittleEndian(val); + t &= mask; + t >>= pos; + return t; + } + bool operator !() const { + return !operator uint(); + } + + bool operator ==(uint t) { return uint(*this) == t; } + bool operator !=(uint t) { return uint(*this) != t; } + bool operator <(uint t) { return uint(*this) < t; } + bool operator >(uint t) { return uint(*this) > t; } + bool operator <=(uint t) { return uint(*this) <= t; } + bool operator >=(uint t) { return uint(*this) >= t; } + qle_bitfield &operator +=(uint i) { + *this = (uint(*this) + i); + return *this; + } + qle_bitfield &operator -=(uint i) { + *this = (uint(*this) - i); + return *this; + } + qle_bitfield &operator |=(uint i) { + *this = (uint(*this) | i); + return *this; + } + qle_bitfield &operator &=(uint i) { + *this = (uint(*this) & i); + return *this; + } +}; + +template +class qle_signedbitfield +{ +public: + uint val; + + enum { + mask = ((1u << width) - 1) << pos + }; + + void operator =(int t) { + uint i = qFromLittleEndian(val); + i &= ~mask; + i |= t << pos; + val = qToLittleEndian(i); + } + operator int() const { + uint i = qFromLittleEndian(val); + i <<= 32 - width - pos; + int t = (int) i; + t >>= 32 - width; + return t; + } + bool operator !() const { + return !operator int(); + } + + bool operator ==(int t) { return int(*this) == t; } + bool operator !=(int t) { return int(*this) != t; } + bool operator <(int t) { return int(*this) < t; } + bool operator >(int t) { return int(*this) > t; } + bool operator <=(int t) { return int(*this) <= t; } + bool operator >=(int t) { return int(*this) >= t; } + qle_signedbitfield &operator +=(int i) { + *this = (int(*this) + i); + return *this; + } + qle_signedbitfield &operator -=(int i) { + *this = (int(*this) - i); + return *this; + } +}; + +typedef qle_uint offset; + +// round the size up to the next 4 byte boundary +inline int alignedSize(int size) { return (size + 3) & ~3; } + +static inline bool useCompressed(const QString &s) +{ + if (s.length() >= 0x8000) + return false; + const ushort *uc = (const ushort *)s.constData(); + const ushort *e = uc + s.length(); + while (uc < e) { + if (*uc > 0xff) + return false; + ++uc; + } + return true; +} + +static inline int qStringSize(const QString &string, bool compress) +{ + int l = 2 + string.length(); + if (!compress) + l *= 2; + return alignedSize(l); +} + +// returns INT_MAX if it can't compress it into 28 bits +static inline int compressedNumber(double d) +{ + // this relies on details of how ieee floats are represented + const int exponent_off = 52; + const quint64 fraction_mask = 0x000fffffffffffffull; + const quint64 exponent_mask = 0x7ff0000000000000ull; + + quint64 val; + memcpy (&val, &d, sizeof(double)); + int exp = (int)((val & exponent_mask) >> exponent_off) - 1023; + if (exp < 0 || exp > 25) + return INT_MAX; + + quint64 non_int = val & (fraction_mask >> exp); + if (non_int) + return INT_MAX; + + bool neg = (val >> 63) != 0; + val &= fraction_mask; + val |= ((quint64)1 << 52); + int res = (int)(val >> (52 - exp)); + return neg ? -res : res; +} + +class Latin1String; + +class String +{ +public: + explicit String(const char *data) { d = (Data *)data; } + + struct Data { + qle_uint length; + qle_ushort utf16[1]; + }; + + Data *d; + + int byteSize() const { return sizeof(uint) + sizeof(ushort) * d->length; } + bool isValid(int maxSize) const { + // Check byteSize() <= maxSize, avoiding integer overflow + maxSize -= sizeof(uint); + return maxSize >= 0 && uint(d->length) <= maxSize / sizeof(ushort); + } + + inline String &operator=(const QString &str) + { + d->length = str.length(); +#if Q_BYTE_ORDER == Q_BIG_ENDIAN + const ushort *uc = (const ushort *)str.unicode(); + for (int i = 0; i < str.length(); ++i) + d->utf16[i] = uc[i]; +#else + memcpy(d->utf16, str.unicode(), str.length()*sizeof(ushort)); +#endif + if (str.length() & 1) + d->utf16[str.length()] = 0; + return *this; + } + + inline bool operator ==(const QString &str) const { + int slen = str.length(); + int l = d->length; + if (slen != l) + return false; + const ushort *s = (const ushort *)str.constData(); + const qle_ushort *a = d->utf16; + const ushort *b = s; + while (l-- && *a == *b) + a++,b++; + return (l == -1); + } + inline bool operator !=(const QString &str) const { + return !operator ==(str); + } + inline bool operator >=(const QString &str) const { + // ### + return toString() >= str; + } + + inline bool operator<(const Latin1String &str) const; + inline bool operator>=(const Latin1String &str) const { return !operator <(str); } + inline bool operator ==(const Latin1String &str) const; + + inline bool operator ==(const String &str) const { + if (d->length != str.d->length) + return false; + return !memcmp(d->utf16, str.d->utf16, d->length*sizeof(ushort)); + } + inline bool operator<(const String &other) const; + inline bool operator >=(const String &other) const { return !(*this < other); } + + inline QString toString() const { +#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN + return QString((QChar *)d->utf16, d->length); +#else + int l = d->length; + QString str(l, Qt::Uninitialized); + QChar *ch = str.data(); + for (int i = 0; i < l; ++i) + ch[i] = QChar(d->utf16[i]); + return str; +#endif + } + +}; + +class Latin1String +{ +public: + explicit Latin1String(const char *data) { d = (Data *)data; } + + struct Data { + qle_ushort length; + char latin1[1]; + }; + Data *d; + + int byteSize() const { return sizeof(ushort) + sizeof(char)*(d->length); } + bool isValid(int maxSize) const { + return byteSize() <= maxSize; + } + + inline Latin1String &operator=(const QString &str) + { + int len = d->length = str.length(); + uchar *l = (uchar *)d->latin1; + const ushort *uc = (const ushort *)str.unicode(); + int i = 0; +#ifdef __SSE2__ + for ( ; i + 16 <= len; i += 16) { + __m128i chunk1 = _mm_loadu_si128((__m128i*)&uc[i]); // load + __m128i chunk2 = _mm_loadu_si128((__m128i*)&uc[i + 8]); // load + // pack the two vector to 16 x 8bits elements + const __m128i result = _mm_packus_epi16(chunk1, chunk2); + _mm_storeu_si128((__m128i*)&l[i], result); // store + } +# ifdef Q_PROCESSOR_X86_64 + // we can do one more round, of 8 characters + if (i + 8 <= len) { + __m128i chunk = _mm_loadu_si128((__m128i*)&uc[i]); // load + // pack with itself, we'll discard the high part anyway + chunk = _mm_packus_epi16(chunk, chunk); + // unaligned 64-bit store + qToUnaligned(_mm_cvtsi128_si64(chunk), l + i); + i += 8; + } +# endif +#endif + for ( ; i < len; ++i) + l[i] = uc[i]; + for ( ; (quintptr)(l+i) & 0x3; ++i) + l[i] = 0; + return *this; + } + + QLatin1String toQLatin1String() const Q_DECL_NOTHROW { + return QLatin1String(d->latin1, d->length); + } + + inline bool operator<(const String &str) const + { + const qle_ushort *uc = (qle_ushort *) str.d->utf16; + if (!uc || *uc == 0) + return false; + + const uchar *c = (uchar *)d->latin1; + const uchar *e = c + qMin((int)d->length, (int)str.d->length); + + while (c < e) { + if (*c != *uc) + break; + ++c; + ++uc; + } + return (c == e ? (int)d->length < (int)str.d->length : *c < *uc); + + } + inline bool operator ==(const String &str) const { + return (str == *this); + } + inline bool operator >=(const String &str) const { + return !(*this < str); + } + + inline QString toString() const { + return QString::fromLatin1(d->latin1, d->length); + } +}; + +#define DEF_OP(op) \ + inline bool operator op(Latin1String lhs, Latin1String rhs) Q_DECL_NOTHROW \ + { \ + return lhs.toQLatin1String() op rhs.toQLatin1String(); \ + } \ + inline bool operator op(QLatin1String lhs, Latin1String rhs) Q_DECL_NOTHROW \ + { \ + return lhs op rhs.toQLatin1String(); \ + } \ + inline bool operator op(Latin1String lhs, QLatin1String rhs) Q_DECL_NOTHROW \ + { \ + return lhs.toQLatin1String() op rhs; \ + } \ + inline bool operator op(const QString &lhs, Latin1String rhs) Q_DECL_NOTHROW \ + { \ + return lhs op rhs.toQLatin1String(); \ + } \ + inline bool operator op(Latin1String lhs, const QString &rhs) Q_DECL_NOTHROW \ + { \ + return lhs.toQLatin1String() op rhs; \ + } \ + /*end*/ +DEF_OP(==) +DEF_OP(!=) +DEF_OP(< ) +DEF_OP(> ) +DEF_OP(<=) +DEF_OP(>=) +#undef DEF_OP + +inline bool String::operator ==(const Latin1String &str) const +{ + if ((int)d->length != (int)str.d->length) + return false; + const qle_ushort *uc = d->utf16; + const qle_ushort *e = uc + d->length; + const uchar *c = (uchar *)str.d->latin1; + + while (uc < e) { + if (*uc != *c) + return false; + ++uc; + ++c; + } + return true; +} + +inline bool String::operator <(const String &other) const +{ + int alen = d->length; + int blen = other.d->length; + int l = qMin(alen, blen); + qle_ushort *a = d->utf16; + qle_ushort *b = other.d->utf16; + + while (l-- && *a == *b) + a++,b++; + if (l==-1) + return (alen < blen); + return (ushort)*a < (ushort)*b; +} + +inline bool String::operator<(const Latin1String &str) const +{ + const uchar *c = (uchar *) str.d->latin1; + if (!c || *c == 0) + return false; + + const qle_ushort *uc = d->utf16; + const qle_ushort *e = uc + qMin((int)d->length, (int)str.d->length); + + while (uc < e) { + if (*uc != *c) + break; + ++uc; + ++c; + } + return (uc == e ? (int)d->length < (int)str.d->length : (ushort)*uc < *c); + +} + +static inline void copyString(char *dest, const QString &str, bool compress) +{ + if (compress) { + Latin1String string(dest); + string = str; + } else { + String string(dest); + string = str; + } +} + + +/* + Base is the base class for both Object and Array. Both classe work more or less the same way. + The class starts with a header (defined by the struct below), then followed by data (the data for + values in the Array case and Entry's (see below) for objects. + + After the data a table follows (tableOffset points to it) containing Value objects for Arrays, and + offsets from the beginning of the object to Entry's in the case of Object. + + Entry's in the Object's table are lexicographically sorted by key in the table(). This allows the usage + of a binary search over the keys in an Object. + */ +class Base +{ +public: + qle_uint size; + union { + uint _dummy; + qle_bitfield<0, 1> is_object; + qle_bitfield<1, 31> length; + }; + offset tableOffset; + // content follows here + + inline bool isObject() const { return !!is_object; } + inline bool isArray() const { return !isObject(); } + + inline offset *table() const { return (offset *) (((char *) this) + tableOffset); } + + int reserveSpace(uint dataSize, int posInTable, uint numItems, bool replace); + void removeItems(int pos, int numItems); +}; + +class Object : public Base +{ +public: + Entry *entryAt(int i) const { + return reinterpret_cast(((char *)this) + table()[i]); + } + int indexOf(const QString &key, bool *exists) const; + int indexOf(QLatin1String key, bool *exists) const; + + bool isValid(int maxSize) const; +}; + + +class Array : public Base +{ +public: + inline Value at(int i) const; + inline Value &operator [](int i); + + bool isValid(int maxSize) const; +}; + + +class Value +{ +public: + enum { + MaxSize = (1<<27) - 1 + }; + union { + uint _dummy; + qle_bitfield<0, 3> type; + qle_bitfield<3, 1> latinOrIntValue; + qle_bitfield<4, 1> latinKey; + qle_bitfield<5, 27> value; + qle_signedbitfield<5, 27> int_value; + }; + + inline char *data(const Base *b) const { return ((char *)b) + value; } + int usedStorage(const Base *b) const; + + bool toBoolean() const; + double toDouble(const Base *b) const; + QString toString(const Base *b) const; + String asString(const Base *b) const; + Latin1String asLatin1String(const Base *b) const; + Base *base(const Base *b) const; + + bool isValid(const Base *b) const; + + static int requiredStorage(QJsonValue &v, bool *compressed); + static uint valueToStore(const QJsonValue &v, uint offset); + static void copyData(const QJsonValue &v, char *dest, bool compressed); +}; +Q_DECLARE_JSONPRIVATE_TYPEINFO(Value, Q_PRIMITIVE_TYPE) + +inline Value Array::at(int i) const +{ + return *(Value *) (table() + i); +} + +inline Value &Array::operator [](int i) +{ + return *(Value *) (table() + i); +} + + + +class Entry { +public: + Value value; + // key + // value data follows key + + uint size() const { + int s = sizeof(Entry); + if (value.latinKey) + s += shallowLatin1Key().byteSize(); + else + s += shallowKey().byteSize(); + return alignedSize(s); + } + + int usedStorage(Base *b) const { + return size() + value.usedStorage(b); + } + + String shallowKey() const + { + Q_ASSERT(!value.latinKey); + return String((const char *)this + sizeof(Entry)); + } + Latin1String shallowLatin1Key() const + { + Q_ASSERT(value.latinKey); + return Latin1String((const char *)this + sizeof(Entry)); + } + QString key() const + { + if (value.latinKey) { + return shallowLatin1Key().toString(); + } + return shallowKey().toString(); + } + + bool isValid(int maxSize) const { + if (maxSize < (int)sizeof(Entry)) + return false; + maxSize -= sizeof(Entry); + if (value.latinKey) + return shallowLatin1Key().isValid(maxSize); + return shallowKey().isValid(maxSize); + } + + bool operator ==(const QString &key) const; + inline bool operator !=(const QString &key) const { return !operator ==(key); } + inline bool operator >=(const QString &key) const; + + bool operator==(QLatin1String key) const; + inline bool operator!=(QLatin1String key) const { return !operator ==(key); } + inline bool operator>=(QLatin1String key) const; + + bool operator ==(const Entry &other) const; + bool operator >=(const Entry &other) const; +}; + +inline bool Entry::operator >=(const QString &key) const +{ + if (value.latinKey) + return (shallowLatin1Key() >= key); + else + return (shallowKey() >= key); +} + +inline bool Entry::operator >=(QLatin1String key) const +{ + if (value.latinKey) + return shallowLatin1Key() >= key; + else + return shallowKey() >= key; +} + +inline bool operator <(const QString &key, const Entry &e) +{ return e >= key; } + +inline bool operator<(QLatin1String key, const Entry &e) +{ return e >= key; } + + +class Header { +public: + qle_uint tag; // 'qbjs' + qle_uint version; // 1 + Base *root() { return (Base *)(this + 1); } +}; + + +inline bool Value::toBoolean() const +{ + Q_ASSERT(type == QJsonValue::Bool); + return value != 0; +} + +inline double Value::toDouble(const Base *b) const +{ + Q_ASSERT(type == QJsonValue::Double); + if (latinOrIntValue) + return int_value; + + quint64 i = qFromLittleEndian((const uchar *)b + value); + double d; + memcpy(&d, &i, sizeof(double)); + return d; +} + +inline String Value::asString(const Base *b) const +{ + Q_ASSERT(type == QJsonValue::String && !latinOrIntValue); + return String(data(b)); +} + +inline Latin1String Value::asLatin1String(const Base *b) const +{ + Q_ASSERT(type == QJsonValue::String && latinOrIntValue); + return Latin1String(data(b)); +} + +inline QString Value::toString(const Base *b) const +{ + if (latinOrIntValue) + return asLatin1String(b).toString(); + else + return asString(b).toString(); +} + +inline Base *Value::base(const Base *b) const +{ + Q_ASSERT(type == QJsonValue::Array || type == QJsonValue::Object); + return reinterpret_cast(data(b)); +} + +class Data { +public: + enum Validation { + Unchecked, + Validated, + Invalid + }; + + QAtomicInt ref; + int alloc; + union { + char *rawData; + Header *header; + }; + uint compactionCounter : 31; + uint ownsData : 1; + + inline Data(char *raw, int a) + : alloc(a), rawData(raw), compactionCounter(0), ownsData(true) + { + } + inline Data(int reserved, QJsonValue::Type valueType) + : rawData(0), compactionCounter(0), ownsData(true) + { + Q_ASSERT(valueType == QJsonValue::Array || valueType == QJsonValue::Object); + + alloc = sizeof(Header) + sizeof(Base) + reserved + sizeof(offset); + header = (Header *)malloc(alloc); + Q_CHECK_PTR(header); + header->tag = QJsonDocument::BinaryFormatTag; + header->version = 1; + Base *b = header->root(); + b->size = sizeof(Base); + b->is_object = (valueType == QJsonValue::Object); + b->tableOffset = sizeof(Base); + b->length = 0; + } + inline ~Data() + { if (ownsData) free(rawData); } + + uint offsetOf(const void *ptr) const { return (uint)(((char *)ptr - rawData)); } + + QJsonObject toObject(Object *o) const + { + return QJsonObject(const_cast(this), o); + } + + QJsonArray toArray(Array *a) const + { + return QJsonArray(const_cast(this), a); + } + + Data *clone(Base *b, int reserve = 0) + { + int size = sizeof(Header) + b->size; + if (b == header->root() && ref.load() == 1 && alloc >= size + reserve) + return this; + + if (reserve) { + if (reserve < 128) + reserve = 128; + size = qMax(size + reserve, qMin(size *2, (int)Value::MaxSize)); + if (size > Value::MaxSize) { + qWarning("QJson: Document too large to store in data structure"); + return 0; + } + } + char *raw = (char *)malloc(size); + Q_CHECK_PTR(raw); + memcpy(raw + sizeof(Header), b, b->size); + Header *h = (Header *)raw; + h->tag = QJsonDocument::BinaryFormatTag; + h->version = 1; + Data *d = new Data(raw, size); + d->compactionCounter = (b == header->root()) ? compactionCounter : 0; + return d; + } + + void compact(); + bool valid() const; + +private: + Q_DISABLE_COPY(Data) +}; + +} + +QT_END_NAMESPACE + +#endif // QJSON_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjsonparser_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjsonparser_p.h new file mode 100644 index 000000000..379256847 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjsonparser_p.h @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QJSONPARSER_P_H +#define QJSONPARSER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +namespace QJsonPrivate { + +class Parser +{ +public: + Parser(const char *json, int length); + + QJsonDocument parse(QJsonParseError *error); + + class ParsedObject + { + public: + ParsedObject(Parser *p, int pos) : parser(p), objectPosition(pos) { + offsets.reserve(64); + } + void insert(uint offset); + + Parser *parser; + int objectPosition; + QVector offsets; + + inline QJsonPrivate::Entry *entryAt(int i) const { + return reinterpret_cast(parser->data + objectPosition + offsets[i]); + } + }; + + +private: + inline void eatBOM(); + inline bool eatSpace(); + inline char nextToken(); + + bool parseObject(); + bool parseArray(); + bool parseMember(int baseOffset); + bool parseString(bool *latin1); + bool parseValue(QJsonPrivate::Value *val, int baseOffset); + bool parseNumber(QJsonPrivate::Value *val, int baseOffset); + const char *head; + const char *json; + const char *end; + + char *data; + int dataLength; + int current; + int nestingLevel; + QJsonParseError::ParseError lastError; + + inline int reserveSpace(int space) { + if (current + space >= dataLength) { + dataLength = 2*dataLength + space; + char *newData = (char *)realloc(data, dataLength); + if (!newData) { + lastError = QJsonParseError::DocumentTooLarge; + return -1; + } + data = newData; + } + int pos = current; + current += space; + return pos; + } +}; + +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjsonwriter_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjsonwriter_p.h new file mode 100644 index 000000000..76a846044 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qjsonwriter_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QJSONWRITER_P_H +#define QJSONWRITER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +namespace QJsonPrivate +{ + +class Writer +{ +public: + static void objectToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact = false); + static void arrayToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact = false); +}; + +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlatincodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlatincodec_p.h new file mode 100644 index 000000000..1042c3b80 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlatincodec_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLATINCODEC_P_H +#define QLATINCODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qtextcodec.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_TEXTCODEC + +class QLatin1Codec : public QTextCodec +{ +public: + ~QLatin1Codec(); + + QString convertToUnicode(const char *, int, ConverterState *) const Q_DECL_OVERRIDE; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const Q_DECL_OVERRIDE; + + QByteArray name() const Q_DECL_OVERRIDE; + QList aliases() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; +}; + + + +class QLatin15Codec: public QTextCodec +{ +public: + ~QLatin15Codec(); + + QString convertToUnicode(const char *, int, ConverterState *) const Q_DECL_OVERRIDE; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const Q_DECL_OVERRIDE; + + QByteArray name() const Q_DECL_OVERRIDE; + QList aliases() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; +}; + +#endif // QT_NO_TEXTCODEC + +QT_END_NAMESPACE + +#endif // QLATINCODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlibrary_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlibrary_p.h new file mode 100644 index 000000000..3f650501c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlibrary_p.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLIBRARY_P_H +#define QLIBRARY_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 QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qlibrary.h" +#include "QtCore/qpointer.h" +#include "QtCore/qstringlist.h" +#include "QtCore/qplugin.h" +#include "QtCore/qsharedpointer.h" +#ifdef Q_OS_WIN +# include "QtCore/qt_windows.h" +#endif + +QT_REQUIRE_CONFIG(library); + +QT_BEGIN_NAMESPACE + +bool qt_debug_component(); + +class QLibraryStore; +class QLibraryPrivate +{ +public: + +#ifdef Q_OS_WIN + HINSTANCE +#else + void * +#endif + pHnd; + + enum UnloadFlag { UnloadSys, NoUnloadSys }; + + QString fileName, qualifiedFileName; + QString fullVersion; + + bool load(); + bool loadPlugin(); // loads and resolves instance + bool unload(UnloadFlag flag = UnloadSys); + void release(); + QFunctionPointer resolve(const char *); + + QLibrary::LoadHints loadHints() const + { return QLibrary::LoadHints(loadHintsInt.load()); } + void setLoadHints(QLibrary::LoadHints lh); + + static QLibraryPrivate *findOrCreate(const QString &fileName, const QString &version = QString(), + QLibrary::LoadHints loadHints = 0); + static QStringList suffixes_sys(const QString &fullVersion); + static QStringList prefixes_sys(); + + QPointer inst; + QtPluginInstanceFunction instance; + QJsonObject metaData; + + QString errorString; + + void updatePluginState(); + bool isPlugin(); + +private: + explicit QLibraryPrivate(const QString &canonicalFileName, const QString &version, QLibrary::LoadHints loadHints); + ~QLibraryPrivate(); + void mergeLoadHints(QLibrary::LoadHints loadHints); + + bool load_sys(); + bool unload_sys(); + QFunctionPointer resolve_sys(const char *); + + QAtomicInt loadHintsInt; + + /// 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 QLibraryStore; +}; + +QT_END_NAMESPACE + +#endif // QLIBRARY_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlocale_data_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlocale_data_p.h new file mode 100644 index 000000000..869153942 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlocale_data_p.h @@ -0,0 +1,8352 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCALE_DATA_P_H +#define QLOCALE_DATA_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +/* This part of the file isn't generated, but written by hand since + * Unicode CLDR doesn't contain measurement system information. + */ +struct CountryLanguage +{ + quint16 languageId; + quint16 countryId; + QLocale::MeasurementSystem system; +}; +static const CountryLanguage ImperialMeasurementSystems[] = { + { QLocale::English, QLocale::UnitedStates, QLocale::ImperialUSSystem }, + { QLocale::English, QLocale::UnitedStatesMinorOutlyingIslands, QLocale::ImperialUSSystem }, + { QLocale::Spanish, QLocale::UnitedStates, QLocale::ImperialUSSystem }, + { QLocale::Hawaiian, QLocale::UnitedStates, QLocale::ImperialUSSystem }, + { QLocale::English, QLocale::UnitedKingdom, QLocale::ImperialUKSystem } +}; +static const int ImperialMeasurementSystemsCount = + sizeof(ImperialMeasurementSystems)/sizeof(ImperialMeasurementSystems[0]); + +// GENERATED PART STARTS HERE + +/* + This part of the file was generated on 2016-03-19 from the + Common Locale Data Repository v29 + + http://www.unicode.org/cldr/ + + Do not change it, instead edit CLDR data and regenerate this file using + cldr2qlocalexml.py and qlocalexml2cpp.py. +*/ + + +static const QLocaleId likely_subtags[] = { + { 4, 0, 0 }, { 4, 7, 69 }, // aa -> aa_Latn_ET + { 2, 0, 0 }, { 2, 2, 81 }, // ab -> ab_Cyrl_GE + { 255, 0, 0 }, { 255, 36, 102 }, // ae -> ae_Avst_IR + { 5, 0, 0 }, { 5, 7, 195 }, // af -> af_Latn_ZA + { 237, 0, 0 }, { 237, 7, 37 }, // agq -> agq_Latn_CM + { 340, 0, 0 }, { 340, 128, 100 }, // aho -> aho_Ahom_IN + { 146, 0, 0 }, { 146, 7, 83 }, // ak -> ak_Latn_GH + { 262, 0, 0 }, { 262, 94, 103 }, // akk -> akk_Xsux_IQ + { 7, 0, 0 }, { 7, 14, 69 }, // am -> am_Ethi_ET + { 8, 0, 0 }, { 8, 1, 64 }, // ar -> ar_Arab_EG + { 265, 0, 0 }, { 265, 57, 102 }, // arc -> arc_Armi_IR + { 265, 119, 0 }, { 265, 119, 109 }, // arc_Nbat -> arc_Nbat_JO + { 265, 120, 0 }, { 265, 120, 207 }, // arc_Palm -> arc_Palm_SY + { 315, 0, 0 }, { 315, 7, 43 }, // arn -> arn_Latn_CL + { 10, 0, 0 }, { 10, 11, 100 }, // as -> as_Beng_IN + { 205, 0, 0 }, { 205, 7, 210 }, // asa -> asa_Latn_TZ + { 341, 0, 0 }, { 341, 133, 225 }, // ase -> ase_Sgnw_US + { 256, 0, 0 }, { 256, 7, 197 }, // ast -> ast_Latn_ES + { 216, 0, 0 }, { 216, 2, 178 }, // av -> av_Cyrl_RU + { 11, 0, 0 }, { 11, 7, 26 }, // ay -> ay_Latn_BO + { 12, 0, 0 }, { 12, 7, 15 }, // az -> az_Latn_AZ + { 12, 0, 103 }, { 12, 1, 103 }, // az_IQ -> az_Arab_IQ + { 12, 0, 102 }, { 12, 1, 102 }, // az_IR -> az_Arab_IR + { 12, 0, 178 }, { 12, 2, 178 }, // az_RU -> az_Cyrl_RU + { 12, 1, 0 }, { 12, 1, 102 }, // az_Arab -> az_Arab_IR + { 13, 0, 0 }, { 13, 2, 178 }, // ba -> ba_Cyrl_RU + { 266, 0, 0 }, { 266, 7, 101 }, // ban -> ban_Latn_ID + { 238, 0, 0 }, { 238, 7, 37 }, // bas -> bas_Latn_CM + { 267, 0, 0 }, { 267, 38, 37 }, // bax -> bax_Bamu_CM + { 268, 0, 0 }, { 268, 7, 101 }, // bbc -> bbc_Latn_ID + { 22, 0, 0 }, { 22, 2, 20 }, // be -> be_Cyrl_BY + { 195, 0, 0 }, { 195, 7, 239 }, // bem -> bem_Latn_ZM + { 186, 0, 0 }, { 186, 7, 210 }, // bez -> bez_Latn_TZ + { 20, 0, 0 }, { 20, 2, 33 }, // bg -> bg_Cyrl_BG + { 343, 0, 0 }, { 343, 13, 100 }, // bho -> bho_Deva_IN + { 18, 0, 0 }, { 18, 7, 229 }, // bi -> bi_Latn_VU + { 270, 0, 0 }, { 270, 7, 170 }, // bku -> bku_Latn_PH + { 309, 0, 0 }, { 309, 100, 232 }, // blt -> blt_Tavt_VN + { 188, 0, 0 }, { 188, 7, 132 }, // bm -> bm_Latn_ML + { 15, 0, 0 }, { 15, 11, 18 }, // bn -> bn_Beng_BD + { 121, 0, 0 }, { 121, 31, 44 }, // bo -> bo_Tibt_CN + { 19, 0, 0 }, { 19, 7, 74 }, // br -> br_Latn_FR + { 215, 0, 0 }, { 215, 13, 100 }, // brx -> brx_Deva_IN + { 142, 0, 0 }, { 142, 7, 27 }, // bs -> bs_Latn_BA + { 336, 0, 0 }, { 336, 106, 121 }, // bsq -> bsq_Bass_LR + { 312, 0, 0 }, { 312, 7, 37 }, // bss -> bss_Latn_CM + { 269, 0, 0 }, { 269, 7, 101 }, // bug -> bug_Latn_ID + { 152, 0, 0 }, { 152, 14, 67 }, // byn -> byn_Ethi_ER + { 24, 0, 0 }, { 24, 7, 197 }, // ca -> ca_Latn_ES + { 156, 0, 0 }, { 156, 7, 157 }, // cch -> cch_Latn_NG + { 272, 0, 0 }, { 272, 11, 100 }, // ccp -> ccp_Beng_IN + { 272, 46, 0 }, { 272, 46, 18 }, // ccp_Cakm -> ccp_Cakm_BD + { 218, 0, 0 }, { 218, 2, 178 }, // ce -> ce_Cyrl_RU + { 211, 0, 0 }, { 211, 7, 221 }, // cgg -> cgg_Latn_UG + { 217, 0, 0 }, { 217, 7, 89 }, // ch -> ch_Latn_GU + { 190, 0, 0 }, { 190, 12, 225 }, // chr -> chr_Cher_US + { 276, 0, 0 }, { 276, 47, 232 }, // cjm -> cjm_Cham_VN + { 316, 0, 0 }, { 316, 1, 103 }, // ckb -> ckb_Arab_IQ + { 26, 0, 0 }, { 26, 7, 74 }, // co -> co_Latn_FR + { 274, 0, 0 }, { 274, 48, 64 }, // cop -> cop_Copt_EG + { 221, 0, 0 }, { 221, 44, 38 }, // cr -> cr_Cans_CA + { 28, 0, 0 }, { 28, 7, 57 }, // cs -> cs_Latn_CZ + { 338, 0, 0 }, { 338, 121, 147 }, // ctd -> ctd_Pauc_MM + { 219, 0, 0 }, { 219, 2, 178 }, // cu -> cu_Cyrl_RU + { 219, 52, 0 }, { 219, 52, 33 }, // cu_Glag -> cu_Glag_BG + { 220, 0, 0 }, { 220, 2, 178 }, // cv -> cv_Cyrl_RU + { 134, 0, 0 }, { 134, 7, 224 }, // cy -> cy_Latn_GB + { 29, 0, 0 }, { 29, 7, 58 }, // da -> da_Latn_DK + { 176, 0, 0 }, { 176, 7, 111 }, // dav -> dav_Latn_KE + { 42, 0, 0 }, { 42, 7, 82 }, // de -> de_Latn_DE + { 239, 0, 0 }, { 239, 7, 156 }, // dje -> dje_Latn_NE + { 275, 0, 0 }, { 275, 1, 100 }, // doi -> doi_Arab_IN + { 317, 0, 0 }, { 317, 7, 82 }, // dsb -> dsb_Latn_DE + { 240, 0, 0 }, { 240, 7, 37 }, // dua -> dua_Latn_CM + { 143, 0, 0 }, { 143, 29, 131 }, // dv -> dv_Thaa_MV + { 241, 0, 0 }, { 241, 7, 187 }, // dyo -> dyo_Latn_SN + { 16, 0, 0 }, { 16, 31, 25 }, // dz -> dz_Tibt_BT + { 189, 0, 0 }, { 189, 7, 111 }, // ebu -> ebu_Latn_KE + { 161, 0, 0 }, { 161, 7, 83 }, // ee -> ee_Latn_GH + { 263, 0, 0 }, { 263, 50, 64 }, // egy -> egy_Egyp_EG + { 277, 0, 0 }, { 277, 63, 147 }, // eky -> eky_Kali_MM + { 43, 0, 0 }, { 43, 16, 85 }, // el -> el_Grek_GR + { 31, 0, 0 }, { 31, 7, 225 }, // en -> en_Latn_US + { 31, 92, 0 }, { 31, 92, 224 }, // en_Shaw -> en_Shaw_GB + { 111, 0, 0 }, { 111, 7, 197 }, // es -> es_Latn_ES + { 33, 0, 0 }, { 33, 7, 68 }, // et -> et_Latn_EE + { 278, 0, 0 }, { 278, 79, 106 }, // ett -> ett_Ital_IT + { 14, 0, 0 }, { 14, 7, 197 }, // eu -> eu_Latn_ES + { 242, 0, 0 }, { 242, 7, 37 }, // ewo -> ewo_Latn_CM + { 89, 0, 0 }, { 89, 1, 102 }, // fa -> fa_Arab_IR + { 177, 0, 0 }, { 177, 7, 187 }, // ff -> ff_Latn_SN + { 177, 134, 0 }, { 177, 134, 91 }, // ff_Adlm -> ff_Adlm_GN + { 36, 0, 0 }, { 36, 7, 73 }, // fi -> fi_Latn_FI + { 166, 0, 0 }, { 166, 7, 170 }, // fil -> fil_Latn_PH + { 35, 0, 0 }, { 35, 7, 72 }, // fj -> fj_Latn_FJ + { 34, 0, 0 }, { 34, 7, 71 }, // fo -> fo_Latn_FO + { 37, 0, 0 }, { 37, 7, 74 }, // fr -> fr_Latn_FR + { 159, 0, 0 }, { 159, 7, 106 }, // fur -> fur_Latn_IT + { 38, 0, 0 }, { 38, 7, 151 }, // fy -> fy_Latn_NL + { 57, 0, 0 }, { 57, 7, 104 }, // ga -> ga_Latn_IE + { 148, 0, 0 }, { 148, 7, 83 }, // gaa -> gaa_Latn_GH + { 39, 0, 0 }, { 39, 7, 224 }, // gd -> gd_Latn_GB + { 153, 0, 0 }, { 153, 14, 69 }, // gez -> gez_Ethi_ET + { 40, 0, 0 }, { 40, 7, 197 }, // gl -> gl_Latn_ES + { 45, 0, 0 }, { 45, 7, 168 }, // gn -> gn_Latn_PY + { 279, 0, 0 }, { 279, 53, 222 }, // got -> got_Goth_UA + { 264, 0, 0 }, { 264, 49, 56 }, // grc -> grc_Cprt_CY + { 264, 68, 0 }, { 264, 68, 85 }, // grc_Linb -> grc_Linb_GR + { 167, 0, 0 }, { 167, 7, 206 }, // gsw -> gsw_Latn_CH + { 46, 0, 0 }, { 46, 17, 100 }, // gu -> gu_Gujr_IN + { 175, 0, 0 }, { 175, 7, 111 }, // guz -> guz_Latn_KE + { 144, 0, 0 }, { 144, 7, 251 }, // gv -> gv_Latn_IM + { 47, 0, 0 }, { 47, 7, 157 }, // ha -> ha_Latn_NG + { 47, 0, 37 }, { 47, 1, 37 }, // ha_CM -> ha_Arab_CM + { 47, 0, 201 }, { 47, 1, 201 }, // ha_SD -> ha_Arab_SD + { 163, 0, 0 }, { 163, 7, 225 }, // haw -> haw_Latn_US + { 48, 0, 0 }, { 48, 18, 105 }, // he -> he_Hebr_IL + { 49, 0, 0 }, { 49, 13, 100 }, // hi -> hi_Deva_IN + { 344, 0, 0 }, { 344, 129, 217 }, // hlu -> hlu_Hluw_TR + { 282, 0, 0 }, { 282, 86, 44 }, // hmd -> hmd_Plrd_CN + { 333, 0, 0 }, { 333, 110, 117 }, // hnj -> hnj_Hmng_LA + { 280, 0, 0 }, { 280, 7, 170 }, // hnn -> hnn_Latn_PH + { 224, 0, 0 }, { 224, 7, 167 }, // ho -> ho_Latn_PG + { 334, 0, 0 }, { 334, 13, 100 }, // hoc -> hoc_Deva_IN + { 27, 0, 0 }, { 27, 7, 54 }, // hr -> hr_Latn_HR + { 318, 0, 0 }, { 318, 7, 82 }, // hsb -> hsb_Latn_DE + { 222, 0, 0 }, { 222, 7, 94 }, // ht -> ht_Latn_HT + { 50, 0, 0 }, { 50, 7, 98 }, // hu -> hu_Latn_HU + { 9, 0, 0 }, { 9, 10, 11 }, // hy -> hy_Armn_AM + { 223, 0, 0 }, { 223, 7, 148 }, // hz -> hz_Latn_NA + { 53, 0, 0 }, { 53, 7, 74 }, // ia -> ia_Latn_FR + { 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 + { 56, 0, 0 }, { 56, 7, 225 }, // ik -> ik_Latn_US + { 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 + { 55, 0, 0 }, { 55, 44, 38 }, // iu -> iu_Cans_CA + { 59, 0, 0 }, { 59, 19, 108 }, // ja -> ja_Jpan_JP + { 257, 0, 0 }, { 257, 7, 37 }, // jgo -> jgo_Latn_CM + { 200, 0, 0 }, { 200, 7, 210 }, // jmc -> jmc_Latn_TZ + { 60, 0, 0 }, { 60, 7, 101 }, // jv -> jv_Latn_ID + { 41, 0, 0 }, { 41, 15, 81 }, // ka -> ka_Geor_GE + { 184, 0, 0 }, { 184, 7, 3 }, // kab -> kab_Latn_DZ + { 158, 0, 0 }, { 158, 7, 157 }, // kaj -> kaj_Latn_NG + { 150, 0, 0 }, { 150, 7, 111 }, // kam -> kam_Latn_KE + { 164, 0, 0 }, { 164, 7, 157 }, // kcg -> kcg_Latn_NG + { 192, 0, 0 }, { 192, 7, 210 }, // kde -> kde_Latn_TZ + { 196, 0, 0 }, { 196, 7, 39 }, // kea -> kea_Latn_CV + { 319, 0, 0 }, { 319, 7, 37 }, // ken -> ken_Latn_CM + { 154, 0, 0 }, { 154, 7, 53 }, // kfo -> kfo_Latn_CI + { 227, 0, 0 }, { 227, 7, 49 }, // kg -> kg_Latn_CD + { 286, 0, 0 }, { 286, 76, 44 }, // khb -> khb_Talu_CN + { 208, 0, 0 }, { 208, 7, 132 }, // khq -> khq_Latn_ML + { 178, 0, 0 }, { 178, 7, 111 }, // ki -> ki_Latn_KE + { 228, 0, 0 }, { 228, 7, 148 }, // kj -> kj_Latn_NA + { 63, 0, 0 }, { 63, 2, 110 }, // kk -> kk_Cyrl_KZ + { 63, 0, 1 }, { 63, 1, 1 }, // kk_AF -> kk_Arab_AF + { 63, 0, 44 }, { 63, 1, 44 }, // kk_CN -> kk_Arab_CN + { 63, 0, 102 }, { 63, 1, 102 }, // kk_IR -> kk_Arab_IR + { 63, 0, 143 }, { 63, 1, 143 }, // kk_MN -> kk_Arab_MN + { 63, 1, 0 }, { 63, 1, 44 }, // kk_Arab -> kk_Arab_CN + { 258, 0, 0 }, { 258, 7, 37 }, // kkj -> kkj_Latn_CM + { 44, 0, 0 }, { 44, 7, 86 }, // kl -> kl_Latn_GL + { 198, 0, 0 }, { 198, 7, 111 }, // kln -> kln_Latn_KE + { 23, 0, 0 }, { 23, 20, 36 }, // km -> km_Khmr_KH + { 61, 0, 0 }, { 61, 21, 100 }, // kn -> kn_Knda_IN + { 66, 0, 0 }, { 66, 22, 114 }, // ko -> ko_Kore_KR + { 147, 0, 0 }, { 147, 13, 100 }, // kok -> kok_Deva_IN + { 169, 0, 0 }, { 169, 7, 121 }, // kpe -> kpe_Latn_LR + { 62, 0, 0 }, { 62, 1, 100 }, // ks -> ks_Arab_IN + { 214, 0, 0 }, { 214, 7, 210 }, // ksb -> ksb_Latn_TZ + { 243, 0, 0 }, { 243, 7, 37 }, // ksf -> ksf_Latn_CM + { 201, 0, 0 }, { 201, 7, 82 }, // ksh -> ksh_Latn_DE + { 67, 0, 0 }, { 67, 7, 217 }, // ku -> ku_Latn_TR + { 67, 0, 119 }, { 67, 1, 119 }, // ku_LB -> ku_Arab_LB + { 67, 1, 0 }, { 67, 1, 103 }, // ku_Arab -> ku_Arab_IQ + { 226, 0, 0 }, { 226, 2, 178 }, // kv -> kv_Cyrl_RU + { 145, 0, 0 }, { 145, 7, 224 }, // kw -> kw_Latn_GB + { 65, 0, 0 }, { 65, 2, 116 }, // ky -> ky_Cyrl_KG + { 65, 0, 44 }, { 65, 1, 44 }, // ky_CN -> ky_Arab_CN + { 65, 0, 217 }, { 65, 7, 217 }, // ky_TR -> ky_Latn_TR + { 65, 1, 0 }, { 65, 1, 44 }, // ky_Arab -> ky_Arab_CN + { 65, 7, 0 }, { 65, 7, 217 }, // ky_Latn -> ky_Latn_TR + { 70, 0, 0 }, { 70, 7, 230 }, // la -> la_Latn_VA + { 332, 0, 0 }, { 332, 112, 85 }, // lab -> lab_Lina_GR + { 193, 0, 0 }, { 193, 7, 210 }, // lag -> lag_Latn_TZ + { 231, 0, 0 }, { 231, 7, 125 }, // lb -> lb_Latn_LU + { 283, 0, 0 }, { 283, 66, 100 }, // lep -> lep_Lepc_IN + { 335, 0, 0 }, { 335, 2, 178 }, // lez -> lez_Cyrl_RU + { 194, 0, 0 }, { 194, 7, 221 }, // lg -> lg_Latn_UG + { 229, 0, 0 }, { 229, 7, 151 }, // li -> li_Latn_NL + { 284, 0, 0 }, { 284, 13, 150 }, // lif -> lif_Deva_NP + { 284, 67, 0 }, { 284, 67, 100 }, // lif_Limb -> lif_Limb_IN + { 285, 0, 0 }, { 285, 51, 44 }, // lis -> lis_Lisu_CN + { 313, 0, 0 }, { 313, 7, 225 }, // lkt -> lkt_Latn_US + { 72, 0, 0 }, { 72, 7, 49 }, // ln -> ln_Latn_CD + { 69, 0, 0 }, { 69, 23, 117 }, // lo -> lo_Laoo_LA + { 349, 0, 0 }, { 349, 1, 102 }, // lrc -> lrc_Arab_IR + { 73, 0, 0 }, { 73, 7, 124 }, // lt -> lt_Latn_LT + { 230, 0, 0 }, { 230, 7, 49 }, // lu -> lu_Latn_CD + { 210, 0, 0 }, { 210, 7, 111 }, // luo -> luo_Latn_KE + { 204, 0, 0 }, { 204, 7, 111 }, // luy -> luy_Latn_KE + { 71, 0, 0 }, { 71, 7, 118 }, // lv -> lv_Latn_LV + { 345, 0, 0 }, { 345, 5, 44 }, // lzh -> lzh_Hans_CN + { 339, 0, 0 }, { 339, 13, 100 }, // mai -> mai_Deva_IN + { 289, 0, 0 }, { 289, 7, 80 }, // man -> man_Latn_GM + { 289, 0, 91 }, { 289, 75, 91 }, // man_GN -> man_Nkoo_GN + { 289, 75, 0 }, { 289, 75, 91 }, // man_Nkoo -> man_Nkoo_GN + { 202, 0, 0 }, { 202, 7, 111 }, // mas -> mas_Latn_KE + { 330, 0, 0 }, { 330, 7, 189 }, // men -> men_Latn_SL + { 197, 0, 0 }, { 197, 7, 111 }, // mer -> mer_Latn_KE + { 191, 0, 0 }, { 191, 7, 137 }, // mfe -> mfe_Latn_MU + { 75, 0, 0 }, { 75, 7, 128 }, // mg -> mg_Latn_MG + { 244, 0, 0 }, { 244, 7, 146 }, // mgh -> mgh_Latn_MZ + { 259, 0, 0 }, { 259, 7, 37 }, // mgo -> mgo_Latn_CM + { 81, 0, 0 }, { 81, 7, 134 }, // mh -> mh_Latn_MH + { 79, 0, 0 }, { 79, 7, 154 }, // mi -> mi_Latn_NZ + { 356, 0, 0 }, { 356, 130, 103 }, // mis -> mis_Hatr_IQ + { 74, 0, 0 }, { 74, 2, 127 }, // mk -> mk_Cyrl_MK + { 77, 0, 0 }, { 77, 24, 100 }, // ml -> ml_Mlym_IN + { 82, 0, 0 }, { 82, 2, 143 }, // mn -> mn_Cyrl_MN + { 82, 0, 44 }, { 82, 8, 44 }, // mn_CN -> mn_Mong_CN + { 82, 8, 0 }, { 82, 8, 44 }, // mn_Mong -> mn_Mong_CN + { 290, 0, 0 }, { 290, 11, 100 }, // mni -> mni_Beng_IN + { 320, 0, 0 }, { 320, 7, 38 }, // moh -> moh_Latn_CA + { 80, 0, 0 }, { 80, 13, 100 }, // mr -> mr_Deva_IN + { 347, 0, 0 }, { 347, 117, 18 }, // mro -> mro_Mroo_BD + { 76, 0, 0 }, { 76, 7, 130 }, // ms -> ms_Latn_MY + { 76, 0, 46 }, { 76, 1, 46 }, // ms_CC -> ms_Arab_CC + { 76, 0, 101 }, { 76, 1, 101 }, // ms_ID -> ms_Arab_ID + { 78, 0, 0 }, { 78, 7, 133 }, // mt -> mt_Latn_MT + { 245, 0, 0 }, { 245, 7, 37 }, // mua -> mua_Latn_CM + { 21, 0, 0 }, { 21, 25, 147 }, // my -> my_Mymr_MM + { 273, 0, 0 }, { 273, 71, 102 }, // myz -> myz_Mand_IR + { 346, 0, 0 }, { 346, 1, 102 }, // mzn -> mzn_Arab_IR + { 83, 0, 0 }, { 83, 7, 149 }, // na -> na_Latn_NR + { 199, 0, 0 }, { 199, 7, 148 }, // naq -> naq_Latn_NA + { 85, 0, 0 }, { 85, 7, 161 }, // nb -> nb_Latn_NO + { 181, 0, 0 }, { 181, 7, 240 }, // nd -> nd_Latn_ZW + { 170, 0, 0 }, { 170, 7, 82 }, // nds -> nds_Latn_DE + { 84, 0, 0 }, { 84, 13, 150 }, // ne -> ne_Deva_NP + { 348, 0, 0 }, { 348, 13, 150 }, // new -> new_Deva_NP + { 233, 0, 0 }, { 233, 7, 148 }, // ng -> ng_Latn_NA + { 30, 0, 0 }, { 30, 7, 151 }, // nl -> nl_Latn_NL + { 246, 0, 0 }, { 246, 7, 37 }, // nmg -> nmg_Latn_CM + { 141, 0, 0 }, { 141, 7, 161 }, // nn -> nn_Latn_NO + { 260, 0, 0 }, { 260, 7, 37 }, // nnh -> nnh_Latn_CM + { 292, 0, 0 }, { 292, 65, 211 }, // nod -> nod_Lana_TH + { 294, 0, 0 }, { 294, 88, 205 }, // non -> non_Runr_SE + { 321, 0, 0 }, { 321, 75, 91 }, // nqo -> nqo_Nkoo_GN + { 171, 0, 0 }, { 171, 7, 195 }, // nr -> nr_Latn_ZA + { 172, 0, 0 }, { 172, 7, 195 }, // nso -> nso_Latn_ZA + { 247, 0, 0 }, { 247, 7, 254 }, // nus -> nus_Latn_SS + { 232, 0, 0 }, { 232, 7, 225 }, // nv -> nv_Latn_US + { 165, 0, 0 }, { 165, 7, 129 }, // ny -> ny_Latn_MW + { 185, 0, 0 }, { 185, 7, 221 }, // nyn -> nyn_Latn_UG + { 86, 0, 0 }, { 86, 7, 74 }, // oc -> oc_Latn_FR + { 3, 0, 0 }, { 3, 7, 69 }, // om -> om_Latn_ET + { 87, 0, 0 }, { 87, 26, 100 }, // or -> or_Orya_IN + { 101, 0, 0 }, { 101, 2, 81 }, // os -> os_Cyrl_GE + { 358, 0, 0 }, { 358, 138, 225 }, // osa -> osa_Osge_US + { 296, 0, 0 }, { 296, 82, 143 }, // otk -> otk_Orkh_MN + { 92, 0, 0 }, { 92, 4, 100 }, // pa -> pa_Guru_IN + { 92, 0, 163 }, { 92, 1, 163 }, // pa_PK -> pa_Arab_PK + { 92, 1, 0 }, { 92, 1, 163 }, // pa_Arab -> pa_Arab_PK + { 297, 0, 0 }, { 297, 58, 102 }, // pal -> pal_Phli_IR + { 297, 123, 0 }, { 297, 123, 44 }, // pal_Phlp -> pal_Phlp_CN + { 351, 0, 0 }, { 351, 7, 12 }, // pap -> pap_Latn_AW + { 350, 0, 0 }, { 350, 7, 164 }, // pau -> pau_Latn_PW + { 295, 0, 0 }, { 295, 80, 102 }, // peo -> peo_Xpeo_IR + { 299, 0, 0 }, { 299, 85, 119 }, // phn -> phn_Phnx_LB + { 342, 0, 0 }, { 342, 41, 100 }, // pka -> pka_Brah_IN + { 90, 0, 0 }, { 90, 7, 172 }, // pl -> pl_Latn_PL + { 300, 0, 0 }, { 300, 64, 163 }, // pra -> pra_Khar_PK + { 88, 0, 0 }, { 88, 1, 1 }, // ps -> ps_Arab_AF + { 91, 0, 0 }, { 91, 7, 30 }, // pt -> pt_Latn_BR + { 93, 0, 0 }, { 93, 7, 169 }, // qu -> qu_Latn_PE + { 323, 0, 0 }, { 323, 7, 90 }, // quc -> quc_Latn_GT + { 301, 0, 0 }, { 301, 7, 101 }, // rej -> rej_Latn_ID + { 94, 0, 0 }, { 94, 7, 206 }, // rm -> rm_Latn_CH + { 68, 0, 0 }, { 68, 7, 35 }, // rn -> rn_Latn_BI + { 95, 0, 0 }, { 95, 7, 177 }, // ro -> ro_Latn_RO + { 182, 0, 0 }, { 182, 7, 210 }, // rof -> rof_Latn_TZ + { 96, 0, 0 }, { 96, 2, 178 }, // ru -> ru_Cyrl_RU + { 64, 0, 0 }, { 64, 7, 179 }, // rw -> rw_Latn_RW + { 209, 0, 0 }, { 209, 7, 210 }, // rwk -> rwk_Latn_TZ + { 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 + { 305, 0, 0 }, { 305, 90, 100 }, // saz -> saz_Saur_IN + { 249, 0, 0 }, { 249, 7, 210 }, // sbp -> sbp_Latn_TZ + { 115, 0, 0 }, { 115, 7, 106 }, // sc -> sc_Latn_IT + { 105, 0, 0 }, { 105, 1, 163 }, // sd -> sd_Arab_PK + { 105, 13, 0 }, { 105, 13, 100 }, // sd_Deva -> sd_Deva_IN + { 105, 111, 0 }, { 105, 111, 100 }, // sd_Khoj -> sd_Khoj_IN + { 105, 125, 0 }, { 105, 125, 100 }, // sd_Sind -> sd_Sind_IN + { 173, 0, 0 }, { 173, 7, 161 }, // se -> se_Latn_NO + { 180, 0, 0 }, { 180, 7, 146 }, // seh -> seh_Latn_MZ + { 213, 0, 0 }, { 213, 7, 132 }, // ses -> ses_Latn_ML + { 98, 0, 0 }, { 98, 7, 41 }, // sg -> sg_Latn_CF + { 293, 0, 0 }, { 293, 77, 104 }, // sga -> sga_Ogam_IE + { 183, 0, 0 }, { 183, 9, 145 }, // shi -> shi_Tfng_MA + { 106, 0, 0 }, { 106, 32, 198 }, // si -> si_Sinh_LK + { 155, 0, 0 }, { 155, 7, 69 }, // sid -> sid_Latn_ET + { 108, 0, 0 }, { 108, 7, 191 }, // sk -> sk_Latn_SK + { 352, 0, 0 }, { 352, 1, 163 }, // skr -> skr_Arab_PK + { 109, 0, 0 }, { 109, 7, 192 }, // sl -> sl_Latn_SI + { 97, 0, 0 }, { 97, 7, 183 }, // sm -> sm_Latn_WS + { 324, 0, 0 }, { 324, 7, 205 }, // sma -> sma_Latn_SE + { 325, 0, 0 }, { 325, 7, 205 }, // smj -> smj_Latn_SE + { 326, 0, 0 }, { 326, 7, 73 }, // smn -> smn_Latn_FI + { 303, 0, 0 }, { 303, 89, 105 }, // smp -> smp_Samr_IL + { 327, 0, 0 }, { 327, 7, 73 }, // sms -> sms_Latn_FI + { 104, 0, 0 }, { 104, 7, 240 }, // sn -> sn_Latn_ZW + { 110, 0, 0 }, { 110, 7, 194 }, // so -> so_Latn_SO + { 6, 0, 0 }, { 6, 7, 2 }, // sq -> sq_Latn_AL + { 100, 0, 0 }, { 100, 2, 243 }, // sr -> sr_Cyrl_RS + { 100, 0, 242 }, { 100, 7, 242 }, // sr_ME -> sr_Latn_ME + { 100, 0, 177 }, { 100, 7, 177 }, // sr_RO -> sr_Latn_RO + { 100, 0, 178 }, { 100, 7, 178 }, // sr_RU -> sr_Latn_RU + { 100, 0, 217 }, { 100, 7, 217 }, // sr_TR -> sr_Latn_TR + { 306, 0, 0 }, { 306, 93, 100 }, // srb -> srb_Sora_IN + { 107, 0, 0 }, { 107, 7, 195 }, // ss -> ss_Latn_ZA + { 207, 0, 0 }, { 207, 7, 67 }, // ssy -> ssy_Latn_ER + { 102, 0, 0 }, { 102, 7, 195 }, // st -> st_Latn_ZA + { 112, 0, 0 }, { 112, 7, 101 }, // su -> su_Latn_ID + { 114, 0, 0 }, { 114, 7, 205 }, // sv -> sv_Latn_SE + { 113, 0, 0 }, { 113, 7, 210 }, // sw -> sw_Latn_TZ + { 250, 0, 0 }, { 250, 7, 49 }, // swc -> swc_Latn_CD + { 307, 0, 0 }, { 307, 11, 18 }, // syl -> syl_Beng_BD + { 151, 0, 0 }, { 151, 33, 103 }, // syr -> syr_Syrc_IQ + { 117, 0, 0 }, { 117, 27, 100 }, // ta -> ta_Taml_IN + { 308, 0, 0 }, { 308, 7, 170 }, // tbw -> tbw_Latn_PH + { 310, 0, 0 }, { 310, 99, 44 }, // tdd -> tdd_Tale_CN + { 119, 0, 0 }, { 119, 28, 100 }, // te -> te_Telu_IN + { 206, 0, 0 }, { 206, 7, 221 }, // teo -> teo_Latn_UG + { 116, 0, 0 }, { 116, 2, 209 }, // tg -> tg_Cyrl_TJ + { 116, 0, 163 }, { 116, 1, 163 }, // tg_PK -> tg_Arab_PK + { 116, 1, 0 }, { 116, 1, 163 }, // tg_Arab -> tg_Arab_PK + { 120, 0, 0 }, { 120, 30, 211 }, // th -> th_Thai_TH + { 122, 0, 0 }, { 122, 14, 69 }, // ti -> ti_Ethi_ET + { 157, 0, 0 }, { 157, 14, 67 }, // tig -> tig_Ethi_ER + { 126, 0, 0 }, { 126, 7, 218 }, // tk -> tk_Latn_TM + { 353, 0, 0 }, { 353, 7, 213 }, // tkl -> tkl_Latn_TK + { 103, 0, 0 }, { 103, 7, 195 }, // tn -> tn_Latn_ZA + { 123, 0, 0 }, { 123, 7, 214 }, // to -> to_Latn_TO + { 354, 0, 0 }, { 354, 7, 167 }, // tpi -> tpi_Latn_PG + { 125, 0, 0 }, { 125, 7, 217 }, // tr -> tr_Latn_TR + { 174, 0, 0 }, { 174, 7, 208 }, // trv -> trv_Latn_TW + { 124, 0, 0 }, { 124, 7, 195 }, // ts -> ts_Latn_ZA + { 118, 0, 0 }, { 118, 2, 178 }, // tt -> tt_Cyrl_RU + { 355, 0, 0 }, { 355, 7, 220 }, // tvl -> tvl_Latn_TV + { 251, 0, 0 }, { 251, 7, 156 }, // twq -> twq_Latn_NE + { 359, 0, 0 }, { 359, 139, 44 }, // txg -> txg_Tang_CN + { 127, 0, 0 }, { 127, 7, 77 }, // ty -> ty_Latn_PF + { 212, 0, 0 }, { 212, 7, 145 }, // tzm -> tzm_Latn_MA + { 128, 0, 0 }, { 128, 1, 44 }, // ug -> ug_Arab_CN + { 128, 0, 110 }, { 128, 2, 110 }, // ug_KZ -> ug_Cyrl_KZ + { 128, 0, 143 }, { 128, 2, 143 }, // ug_MN -> ug_Cyrl_MN + { 128, 2, 0 }, { 128, 2, 110 }, // ug_Cyrl -> ug_Cyrl_KZ + { 311, 0, 0 }, { 311, 102, 207 }, // uga -> uga_Ugar_SY + { 129, 0, 0 }, { 129, 2, 222 }, // uk -> uk_Cyrl_UA + { 130, 0, 0 }, { 130, 1, 163 }, // ur -> ur_Arab_PK + { 131, 0, 0 }, { 131, 7, 228 }, // uz -> uz_Latn_UZ + { 131, 0, 1 }, { 131, 1, 1 }, // uz_AF -> uz_Arab_AF + { 131, 0, 44 }, { 131, 2, 44 }, // uz_CN -> uz_Cyrl_CN + { 131, 1, 0 }, { 131, 1, 1 }, // uz_Arab -> uz_Arab_AF + { 252, 0, 0 }, { 252, 35, 121 }, // vai -> vai_Vaii_LR + { 160, 0, 0 }, { 160, 7, 195 }, // ve -> ve_Latn_ZA + { 132, 0, 0 }, { 132, 7, 232 }, // vi -> vi_Latn_VN + { 187, 0, 0 }, { 187, 7, 210 }, // vun -> vun_Latn_TZ + { 236, 0, 0 }, { 236, 7, 21 }, // wa -> wa_Latn_BE + { 253, 0, 0 }, { 253, 7, 206 }, // wae -> wae_Latn_CH + { 162, 0, 0 }, { 162, 14, 69 }, // wal -> wal_Ethi_ET + { 328, 0, 0 }, { 328, 7, 13 }, // wbp -> wbp_Latn_AU + { 135, 0, 0 }, { 135, 7, 187 }, // wo -> wo_Latn_SN + { 271, 0, 0 }, { 271, 45, 217 }, // xcr -> xcr_Cari_TR + { 136, 0, 0 }, { 136, 7, 195 }, // xh -> xh_Latn_ZA + { 287, 0, 0 }, { 287, 69, 217 }, // xlc -> xlc_Lyci_TR + { 288, 0, 0 }, { 288, 70, 217 }, // xld -> xld_Lydi_TR + { 329, 0, 0 }, { 329, 114, 44 }, // xmn -> xmn_Mani_CN + { 291, 0, 0 }, { 291, 74, 201 }, // xmr -> xmr_Merc_SD + { 331, 0, 0 }, { 331, 118, 186 }, // xna -> xna_Narb_SA + { 203, 0, 0 }, { 203, 7, 221 }, // xog -> xog_Latn_UG + { 298, 0, 0 }, { 298, 59, 102 }, // xpr -> xpr_Prti_IR + { 302, 0, 0 }, { 302, 81, 237 }, // xsa -> xsa_Sarb_YE + { 254, 0, 0 }, { 254, 7, 37 }, // yav -> yav_Latn_CM + { 138, 0, 0 }, { 138, 7, 157 }, // yo -> yo_Latn_NG + { 357, 0, 0 }, { 357, 6, 97 }, // yue -> yue_Hant_HK + { 357, 0, 44 }, { 357, 5, 44 }, // yue_CN -> yue_Hans_CN + { 357, 5, 0 }, { 357, 5, 44 }, // yue_Hans -> yue_Hans_CN + { 139, 0, 0 }, { 139, 7, 44 }, // za -> za_Latn_CN + { 314, 0, 0 }, { 314, 9, 145 }, // zgh -> zgh_Tfng_MA + { 25, 0, 0 }, { 25, 5, 44 }, // zh -> zh_Hans_CN + { 25, 0, 13 }, { 25, 6, 13 }, // zh_AU -> zh_Hant_AU + { 25, 0, 32 }, { 25, 6, 32 }, // zh_BN -> zh_Hant_BN + { 25, 0, 224 }, { 25, 6, 224 }, // zh_GB -> zh_Hant_GB + { 25, 0, 76 }, { 25, 6, 76 }, // zh_GF -> zh_Hant_GF + { 25, 0, 97 }, { 25, 6, 97 }, // zh_HK -> zh_Hant_HK + { 25, 0, 101 }, { 25, 6, 101 }, // zh_ID -> zh_Hant_ID + { 25, 0, 126 }, { 25, 6, 126 }, // zh_MO -> zh_Hant_MO + { 25, 0, 130 }, { 25, 6, 130 }, // zh_MY -> zh_Hant_MY + { 25, 0, 166 }, { 25, 6, 166 }, // zh_PA -> zh_Hant_PA + { 25, 0, 77 }, { 25, 6, 77 }, // zh_PF -> zh_Hant_PF + { 25, 0, 170 }, { 25, 6, 170 }, // zh_PH -> zh_Hant_PH + { 25, 0, 202 }, { 25, 6, 202 }, // zh_SR -> zh_Hant_SR + { 25, 0, 211 }, { 25, 6, 211 }, // zh_TH -> zh_Hant_TH + { 25, 0, 208 }, { 25, 6, 208 }, // zh_TW -> zh_Hant_TW + { 25, 0, 225 }, { 25, 6, 225 }, // zh_US -> zh_Hant_US + { 25, 0, 232 }, { 25, 6, 232 }, // zh_VN -> zh_Hant_VN + { 25, 40, 0 }, { 25, 40, 208 }, // zh_Bopo -> zh_Bopo_TW + { 25, 140, 0 }, { 25, 140, 208 }, // zh_Hanb -> zh_Hanb_TW + { 25, 6, 0 }, { 25, 6, 208 }, // zh_Hant -> zh_Hant_TW + { 140, 0, 0 }, { 140, 7, 195 }, // zu -> zu_Latn_ZA + { 0, 0, 246 }, { 111, 7, 246 }, // und_419 -> es_Latn_419 + { 0, 0, 5 }, { 24, 7, 5 }, // und_AD -> ca_Latn_AD + { 0, 0, 223 }, { 8, 1, 223 }, // und_AE -> ar_Arab_AE + { 0, 0, 1 }, { 89, 1, 1 }, // und_AF -> fa_Arab_AF + { 0, 0, 2 }, { 6, 7, 2 }, // und_AL -> sq_Latn_AL + { 0, 0, 11 }, { 9, 10, 11 }, // und_AM -> hy_Armn_AM + { 0, 0, 6 }, { 91, 7, 6 }, // und_AO -> pt_Latn_AO + { 0, 0, 8 }, { 0, 7, 8 }, // und_AQ -> und_Latn_AQ + { 0, 0, 10 }, { 111, 7, 10 }, // und_AR -> es_Latn_AR + { 0, 0, 4 }, { 97, 7, 4 }, // und_AS -> sm_Latn_AS + { 0, 0, 14 }, { 42, 7, 14 }, // und_AT -> de_Latn_AT + { 0, 0, 12 }, { 30, 7, 12 }, // und_AW -> nl_Latn_AW + { 0, 0, 248 }, { 114, 7, 248 }, // und_AX -> sv_Latn_AX + { 0, 0, 15 }, { 12, 7, 15 }, // und_AZ -> az_Latn_AZ + { 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 + { 0, 0, 34 }, { 37, 7, 34 }, // und_BF -> fr_Latn_BF + { 0, 0, 33 }, { 20, 2, 33 }, // und_BG -> bg_Cyrl_BG + { 0, 0, 17 }, { 8, 1, 17 }, // und_BH -> ar_Arab_BH + { 0, 0, 35 }, { 68, 7, 35 }, // und_BI -> rn_Latn_BI + { 0, 0, 23 }, { 37, 7, 23 }, // und_BJ -> fr_Latn_BJ + { 0, 0, 244 }, { 37, 7, 244 }, // und_BL -> fr_Latn_BL + { 0, 0, 32 }, { 76, 7, 32 }, // und_BN -> ms_Latn_BN + { 0, 0, 26 }, { 111, 7, 26 }, // und_BO -> es_Latn_BO + { 0, 0, 255 }, { 351, 7, 255 }, // und_BQ -> pap_Latn_BQ + { 0, 0, 30 }, { 91, 7, 30 }, // und_BR -> pt_Latn_BR + { 0, 0, 25 }, { 16, 31, 25 }, // und_BT -> dz_Tibt_BT + { 0, 0, 29 }, { 0, 7, 29 }, // und_BV -> und_Latn_BV + { 0, 0, 20 }, { 22, 2, 20 }, // und_BY -> be_Cyrl_BY + { 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 + { 0, 0, 206 }, { 42, 7, 206 }, // und_CH -> de_Latn_CH + { 0, 0, 53 }, { 37, 7, 53 }, // und_CI -> fr_Latn_CI + { 0, 0, 43 }, { 111, 7, 43 }, // und_CL -> es_Latn_CL + { 0, 0, 37 }, { 37, 7, 37 }, // und_CM -> fr_Latn_CM + { 0, 0, 44 }, { 25, 5, 44 }, // und_CN -> zh_Hans_CN + { 0, 0, 47 }, { 111, 7, 47 }, // und_CO -> es_Latn_CO + { 0, 0, 241 }, { 0, 7, 241 }, // und_CP -> und_Latn_CP + { 0, 0, 52 }, { 111, 7, 52 }, // und_CR -> es_Latn_CR + { 0, 0, 55 }, { 111, 7, 55 }, // und_CU -> es_Latn_CU + { 0, 0, 39 }, { 91, 7, 39 }, // und_CV -> pt_Latn_CV + { 0, 0, 152 }, { 351, 7, 152 }, // und_CW -> pap_Latn_CW + { 0, 0, 56 }, { 43, 16, 56 }, // und_CY -> el_Grek_CY + { 0, 0, 57 }, { 28, 7, 57 }, // und_CZ -> cs_Latn_CZ + { 0, 0, 82 }, { 42, 7, 82 }, // und_DE -> de_Latn_DE + { 0, 0, 59 }, { 4, 7, 59 }, // und_DJ -> aa_Latn_DJ + { 0, 0, 58 }, { 29, 7, 58 }, // und_DK -> da_Latn_DK + { 0, 0, 61 }, { 111, 7, 61 }, // und_DO -> es_Latn_DO + { 0, 0, 3 }, { 8, 1, 3 }, // und_DZ -> ar_Arab_DZ + { 0, 0, 250 }, { 111, 7, 250 }, // und_EA -> es_Latn_EA + { 0, 0, 63 }, { 111, 7, 63 }, // und_EC -> es_Latn_EC + { 0, 0, 68 }, { 33, 7, 68 }, // und_EE -> et_Latn_EE + { 0, 0, 64 }, { 8, 1, 64 }, // und_EG -> ar_Arab_EG + { 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, 0, 69 }, { 7, 14, 69 }, // und_ET -> am_Ethi_ET + { 0, 0, 258 }, { 31, 7, 224 }, // und_EU -> en_Latn_GB + { 0, 0, 73 }, { 36, 7, 73 }, // und_FI -> fi_Latn_FI + { 0, 0, 71 }, { 34, 7, 71 }, // und_FO -> fo_Latn_FO + { 0, 0, 74 }, { 37, 7, 74 }, // und_FR -> fr_Latn_FR + { 0, 0, 79 }, { 37, 7, 79 }, // und_GA -> fr_Latn_GA + { 0, 0, 81 }, { 41, 15, 81 }, // und_GE -> ka_Geor_GE + { 0, 0, 76 }, { 37, 7, 76 }, // und_GF -> fr_Latn_GF + { 0, 0, 83 }, { 146, 7, 83 }, // und_GH -> ak_Latn_GH + { 0, 0, 86 }, { 44, 7, 86 }, // und_GL -> kl_Latn_GL + { 0, 0, 91 }, { 37, 7, 91 }, // und_GN -> fr_Latn_GN + { 0, 0, 88 }, { 37, 7, 88 }, // und_GP -> fr_Latn_GP + { 0, 0, 66 }, { 111, 7, 66 }, // und_GQ -> es_Latn_GQ + { 0, 0, 85 }, { 43, 16, 85 }, // und_GR -> el_Grek_GR + { 0, 0, 196 }, { 0, 7, 196 }, // und_GS -> und_Latn_GS + { 0, 0, 90 }, { 111, 7, 90 }, // und_GT -> es_Latn_GT + { 0, 0, 92 }, { 91, 7, 92 }, // und_GW -> pt_Latn_GW + { 0, 0, 97 }, { 25, 6, 97 }, // und_HK -> zh_Hant_HK + { 0, 0, 95 }, { 0, 7, 95 }, // und_HM -> und_Latn_HM + { 0, 0, 96 }, { 111, 7, 96 }, // und_HN -> es_Latn_HN + { 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, 0, 238 }, { 111, 7, 238 }, // und_IC -> es_Latn_IC + { 0, 0, 101 }, { 52, 7, 101 }, // und_ID -> id_Latn_ID + { 0, 0, 105 }, { 48, 18, 105 }, // und_IL -> he_Hebr_IL + { 0, 0, 100 }, { 49, 13, 100 }, // und_IN -> hi_Deva_IN + { 0, 0, 103 }, { 8, 1, 103 }, // und_IQ -> ar_Arab_IQ + { 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, 0, 109 }, { 8, 1, 109 }, // und_JO -> ar_Arab_JO + { 0, 0, 108 }, { 59, 19, 108 }, // und_JP -> ja_Jpan_JP + { 0, 0, 111 }, { 113, 7, 111 }, // und_KE -> sw_Latn_KE + { 0, 0, 116 }, { 65, 2, 116 }, // und_KG -> ky_Cyrl_KG + { 0, 0, 36 }, { 23, 20, 36 }, // und_KH -> km_Khmr_KH + { 0, 0, 48 }, { 8, 1, 48 }, // und_KM -> ar_Arab_KM + { 0, 0, 113 }, { 66, 22, 113 }, // und_KP -> ko_Kore_KP + { 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, 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 + { 0, 0, 198 }, { 106, 32, 198 }, // und_LK -> si_Sinh_LK + { 0, 0, 120 }, { 102, 7, 120 }, // und_LS -> st_Latn_LS + { 0, 0, 124 }, { 73, 7, 124 }, // und_LT -> lt_Latn_LT + { 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, 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 + { 0, 0, 242 }, { 100, 7, 242 }, // und_ME -> sr_Latn_ME + { 0, 0, 245 }, { 37, 7, 245 }, // und_MF -> fr_Latn_MF + { 0, 0, 128 }, { 75, 7, 128 }, // und_MG -> mg_Latn_MG + { 0, 0, 127 }, { 74, 2, 127 }, // und_MK -> mk_Cyrl_MK + { 0, 0, 132 }, { 188, 7, 132 }, // und_ML -> bm_Latn_ML + { 0, 0, 147 }, { 21, 25, 147 }, // und_MM -> my_Mymr_MM + { 0, 0, 143 }, { 82, 2, 143 }, // und_MN -> mn_Cyrl_MN + { 0, 0, 126 }, { 25, 6, 126 }, // und_MO -> zh_Hant_MO + { 0, 0, 135 }, { 37, 7, 135 }, // und_MQ -> fr_Latn_MQ + { 0, 0, 136 }, { 8, 1, 136 }, // und_MR -> ar_Arab_MR + { 0, 0, 133 }, { 78, 7, 133 }, // und_MT -> mt_Latn_MT + { 0, 0, 137 }, { 191, 7, 137 }, // und_MU -> mfe_Latn_MU + { 0, 0, 131 }, { 143, 29, 131 }, // und_MV -> dv_Thaa_MV + { 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, 0, 148 }, { 5, 7, 148 }, // und_NA -> af_Latn_NA + { 0, 0, 153 }, { 37, 7, 153 }, // und_NC -> fr_Latn_NC + { 0, 0, 156 }, { 47, 7, 156 }, // und_NE -> ha_Latn_NE + { 0, 0, 155 }, { 111, 7, 155 }, // und_NI -> es_Latn_NI + { 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, 0, 162 }, { 8, 1, 162 }, // und_OM -> ar_Arab_OM + { 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 + { 0, 0, 167 }, { 354, 7, 167 }, // und_PG -> tpi_Latn_PG + { 0, 0, 170 }, { 166, 7, 170 }, // und_PH -> fil_Latn_PH + { 0, 0, 163 }, { 130, 1, 163 }, // und_PK -> ur_Arab_PK + { 0, 0, 172 }, { 90, 7, 172 }, // und_PL -> pl_Latn_PL + { 0, 0, 200 }, { 37, 7, 200 }, // und_PM -> fr_Latn_PM + { 0, 0, 174 }, { 111, 7, 174 }, // und_PR -> es_Latn_PR + { 0, 0, 165 }, { 8, 1, 165 }, // und_PS -> ar_Arab_PS + { 0, 0, 173 }, { 91, 7, 173 }, // und_PT -> pt_Latn_PT + { 0, 0, 164 }, { 350, 7, 164 }, // und_PW -> pau_Latn_PW + { 0, 0, 168 }, { 45, 7, 168 }, // und_PY -> gn_Latn_PY + { 0, 0, 175 }, { 8, 1, 175 }, // und_QA -> ar_Arab_QA + { 0, 0, 259 }, { 31, 7, 31 }, // und_QO -> en_Latn_IO + { 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, 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 + { 0, 0, 205 }, { 114, 7, 205 }, // und_SE -> sv_Latn_SE + { 0, 0, 192 }, { 109, 7, 192 }, // und_SI -> sl_Latn_SI + { 0, 0, 203 }, { 85, 7, 203 }, // und_SJ -> nb_Latn_SJ + { 0, 0, 191 }, { 108, 7, 191 }, // und_SK -> sk_Latn_SK + { 0, 0, 184 }, { 58, 7, 184 }, // und_SM -> it_Latn_SM + { 0, 0, 187 }, { 37, 7, 187 }, // und_SN -> fr_Latn_SN + { 0, 0, 194 }, { 110, 7, 194 }, // und_SO -> so_Latn_SO + { 0, 0, 202 }, { 30, 7, 202 }, // und_SR -> nl_Latn_SR + { 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, 0, 42 }, { 37, 7, 42 }, // und_TD -> fr_Latn_TD + { 0, 0, 78 }, { 37, 7, 78 }, // und_TF -> fr_Latn_TF + { 0, 0, 212 }, { 37, 7, 212 }, // und_TG -> fr_Latn_TG + { 0, 0, 211 }, { 120, 30, 211 }, // und_TH -> th_Thai_TH + { 0, 0, 209 }, { 116, 2, 209 }, // und_TJ -> tg_Cyrl_TJ + { 0, 0, 213 }, { 353, 7, 213 }, // und_TK -> tkl_Latn_TK + { 0, 0, 62 }, { 91, 7, 62 }, // und_TL -> pt_Latn_TL + { 0, 0, 218 }, { 126, 7, 218 }, // und_TM -> tk_Latn_TM + { 0, 0, 216 }, { 8, 1, 216 }, // und_TN -> ar_Arab_TN + { 0, 0, 214 }, { 123, 7, 214 }, // und_TO -> to_Latn_TO + { 0, 0, 217 }, { 125, 7, 217 }, // und_TR -> tr_Latn_TR + { 0, 0, 220 }, { 355, 7, 220 }, // und_TV -> tvl_Latn_TV + { 0, 0, 208 }, { 25, 6, 208 }, // und_TW -> zh_Hant_TW + { 0, 0, 210 }, { 113, 7, 210 }, // und_TZ -> sw_Latn_TZ + { 0, 0, 222 }, { 129, 2, 222 }, // und_UA -> uk_Cyrl_UA + { 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, 7, 228 }, // und_UZ -> uz_Latn_UZ + { 0, 0, 230 }, { 58, 7, 230 }, // und_VA -> it_Latn_VA + { 0, 0, 231 }, { 111, 7, 231 }, // und_VE -> es_Latn_VE + { 0, 0, 232 }, { 132, 7, 232 }, // und_VN -> vi_Latn_VN + { 0, 0, 229 }, { 18, 7, 229 }, // und_VU -> bi_Latn_VU + { 0, 0, 235 }, { 37, 7, 235 }, // und_WF -> fr_Latn_WF + { 0, 0, 183 }, { 97, 7, 183 }, // und_WS -> sm_Latn_WS + { 0, 0, 257 }, { 6, 7, 257 }, // und_XK -> sq_Latn_XK + { 0, 0, 237 }, { 8, 1, 237 }, // und_YE -> ar_Arab_YE + { 0, 0, 138 }, { 37, 7, 138 }, // und_YT -> fr_Latn_YT + { 0, 0, 240 }, { 104, 7, 240 }, // und_ZW -> sn_Latn_ZW + { 0, 134, 0 }, { 177, 134, 91 }, // und_Adlm -> ff_Adlm_GN + { 0, 105, 0 }, { 335, 105, 178 }, // und_Aghb -> lez_Aghb_RU + { 0, 128, 0 }, { 340, 128, 100 }, // und_Ahom -> aho_Ahom_IN + { 0, 1, 0 }, { 8, 1, 64 }, // und_Arab -> ar_Arab_EG + { 0, 1, 46 }, { 76, 1, 46 }, // und_Arab_CC -> ms_Arab_CC + { 0, 1, 44 }, { 128, 1, 44 }, // und_Arab_CN -> ug_Arab_CN + { 0, 1, 224 }, { 62, 1, 224 }, // und_Arab_GB -> ks_Arab_GB + { 0, 1, 101 }, { 76, 1, 101 }, // und_Arab_ID -> ms_Arab_ID + { 0, 1, 100 }, { 130, 1, 100 }, // und_Arab_IN -> ur_Arab_IN + { 0, 1, 143 }, { 63, 1, 143 }, // und_Arab_MN -> kk_Arab_MN + { 0, 1, 137 }, { 130, 1, 137 }, // und_Arab_MU -> ur_Arab_MU + { 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, 1, 209 }, { 89, 1, 209 }, // und_Arab_TJ -> fa_Arab_TJ + { 0, 1, 217 }, { 12, 1, 217 }, // und_Arab_TR -> az_Arab_TR + { 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, 37, 0 }, { 266, 37, 101 }, // und_Bali -> ban_Bali_ID + { 0, 38, 0 }, { 267, 38, 37 }, // und_Bamu -> bax_Bamu_CM + { 0, 106, 0 }, { 336, 106, 121 }, // und_Bass -> bsq_Bass_LR + { 0, 39, 0 }, { 268, 39, 101 }, // und_Batk -> bbc_Batk_ID + { 0, 11, 0 }, { 15, 11, 18 }, // und_Beng -> bn_Beng_BD + { 0, 135, 0 }, { 99, 135, 100 }, // und_Bhks -> sa_Bhks_IN + { 0, 40, 0 }, { 25, 40, 208 }, // und_Bopo -> zh_Bopo_TW + { 0, 41, 0 }, { 342, 41, 100 }, // und_Brah -> pka_Brah_IN + { 0, 103, 0 }, { 37, 103, 74 }, // und_Brai -> fr_Brai_FR + { 0, 42, 0 }, { 269, 42, 101 }, // und_Bugi -> bug_Bugi_ID + { 0, 43, 0 }, { 270, 43, 170 }, // und_Buhd -> bku_Buhd_PH + { 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, 2 }, { 74, 2, 2 }, // und_Cyrl_AL -> mk_Cyrl_AL + { 0, 2, 27 }, { 100, 2, 27 }, // und_Cyrl_BA -> sr_Cyrl_BA + { 0, 2, 81 }, { 2, 2, 81 }, // und_Cyrl_GE -> ab_Cyrl_GE + { 0, 2, 85 }, { 74, 2, 85 }, // und_Cyrl_GR -> mk_Cyrl_GR + { 0, 2, 141 }, { 129, 2, 141 }, // und_Cyrl_MD -> uk_Cyrl_MD + { 0, 2, 172 }, { 22, 2, 172 }, // und_Cyrl_PL -> be_Cyrl_PL + { 0, 2, 177 }, { 20, 2, 177 }, // und_Cyrl_RO -> bg_Cyrl_RO + { 0, 2, 191 }, { 129, 2, 191 }, // und_Cyrl_SK -> uk_Cyrl_SK + { 0, 2, 257 }, { 100, 2, 257 }, // und_Cyrl_XK -> sr_Cyrl_XK + { 0, 13, 0 }, { 49, 13, 100 }, // und_Deva -> hi_Deva_IN + { 0, 13, 25 }, { 84, 13, 25 }, // und_Deva_BT -> ne_Deva_BT + { 0, 13, 137 }, { 343, 13, 137 }, // und_Deva_MU -> bho_Deva_MU + { 0, 107, 0 }, { 37, 107, 74 }, // und_Dupl -> fr_Dupl_FR + { 0, 50, 0 }, { 263, 50, 64 }, // und_Egyp -> egy_Egyp_EG + { 0, 108, 0 }, { 6, 108, 2 }, // und_Elba -> sq_Elba_AL + { 0, 14, 0 }, { 7, 14, 69 }, // und_Ethi -> am_Ethi_ET + { 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, 109, 0 }, { 99, 109, 100 }, // und_Gran -> sa_Gran_IN + { 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 + { 0, 140, 0 }, { 25, 140, 208 }, // und_Hanb -> zh_Hanb_TW + { 0, 55, 0 }, { 66, 55, 114 }, // und_Hang -> ko_Hang_KR + { 0, 54, 0 }, { 25, 54, 44 }, // und_Hani -> zh_Hani_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, 6, 44 }, { 357, 6, 44 }, // und_Hant_CN -> yue_Hant_CN + { 0, 130, 0 }, { 356, 130, 103 }, // und_Hatr -> mis_Hatr_IQ + { 0, 18, 0 }, { 48, 18, 105 }, // und_Hebr -> he_Hebr_IL + { 0, 18, 38 }, { 137, 18, 38 }, // und_Hebr_CA -> yi_Hebr_CA + { 0, 18, 224 }, { 137, 18, 224 }, // und_Hebr_GB -> yi_Hebr_GB + { 0, 18, 205 }, { 137, 18, 205 }, // und_Hebr_SE -> yi_Hebr_SE + { 0, 18, 222 }, { 137, 18, 222 }, // und_Hebr_UA -> yi_Hebr_UA + { 0, 18, 225 }, { 137, 18, 225 }, // und_Hebr_US -> yi_Hebr_US + { 0, 104, 0 }, { 59, 104, 108 }, // und_Hira -> ja_Hira_JP + { 0, 129, 0 }, { 344, 129, 217 }, // und_Hluw -> hlu_Hluw_TR + { 0, 110, 0 }, { 333, 110, 117 }, // und_Hmng -> hnj_Hmng_LA + { 0, 132, 0 }, { 50, 132, 98 }, // und_Hung -> hu_Hung_HU + { 0, 79, 0 }, { 278, 79, 106 }, // und_Ital -> ett_Ital_IT + { 0, 141, 0 }, { 66, 141, 114 }, // und_Jamo -> ko_Jamo_KR + { 0, 60, 0 }, { 60, 60, 101 }, // und_Java -> jv_Java_ID + { 0, 19, 0 }, { 59, 19, 108 }, // und_Jpan -> ja_Jpan_JP + { 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, 111, 0 }, { 105, 111, 100 }, // und_Khoj -> sd_Khoj_IN + { 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 }, { 343, 61, 100 }, // und_Kthi -> bho_Kthi_IN + { 0, 65, 0 }, { 292, 65, 211 }, // und_Lana -> nod_Lana_TH + { 0, 23, 0 }, { 69, 23, 117 }, // und_Laoo -> lo_Laoo_LA + { 0, 7, 1 }, { 126, 7, 1 }, // und_Latn_AF -> tk_Latn_AF + { 0, 7, 11 }, { 67, 7, 11 }, // und_Latn_AM -> ku_Latn_AM + { 0, 7, 44 }, { 139, 7, 44 }, // und_Latn_CN -> za_Latn_CN + { 0, 7, 56 }, { 125, 7, 56 }, // und_Latn_CY -> tr_Latn_CY + { 0, 7, 3 }, { 37, 7, 3 }, // und_Latn_DZ -> fr_Latn_DZ + { 0, 7, 69 }, { 31, 7, 69 }, // und_Latn_ET -> en_Latn_ET + { 0, 7, 81 }, { 67, 7, 81 }, // und_Latn_GE -> ku_Latn_GE + { 0, 7, 102 }, { 126, 7, 102 }, // und_Latn_IR -> tk_Latn_IR + { 0, 7, 48 }, { 37, 7, 48 }, // und_Latn_KM -> fr_Latn_KM + { 0, 7, 145 }, { 37, 7, 145 }, // und_Latn_MA -> fr_Latn_MA + { 0, 7, 127 }, { 6, 7, 127 }, // und_Latn_MK -> sq_Latn_MK + { 0, 7, 126 }, { 91, 7, 126 }, // und_Latn_MO -> pt_Latn_MO + { 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, 7, 208 }, { 174, 7, 208 }, // und_Latn_TW -> trv_Latn_TW + { 0, 7, 222 }, { 90, 7, 222 }, // und_Latn_UA -> pl_Latn_UA + { 0, 66, 0 }, { 283, 66, 100 }, // und_Lepc -> lep_Lepc_IN + { 0, 67, 0 }, { 284, 67, 100 }, // und_Limb -> lif_Limb_IN + { 0, 112, 0 }, { 332, 112, 85 }, // und_Lina -> lab_Lina_GR + { 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, 113, 0 }, { 49, 113, 100 }, // und_Mahj -> hi_Mahj_IN + { 0, 71, 0 }, { 273, 71, 102 }, // und_Mand -> myz_Mand_IR + { 0, 114, 0 }, { 329, 114, 44 }, // und_Mani -> xmn_Mani_CN + { 0, 136, 0 }, { 121, 136, 44 }, // und_Marc -> bo_Marc_CN + { 0, 115, 0 }, { 330, 115, 189 }, // und_Mend -> men_Mend_SL + { 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, 116, 0 }, { 80, 116, 100 }, // und_Modi -> mr_Modi_IN + { 0, 8, 0 }, { 82, 8, 44 }, // und_Mong -> mn_Mong_CN + { 0, 117, 0 }, { 347, 117, 18 }, // und_Mroo -> mro_Mroo_BD + { 0, 72, 0 }, { 290, 72, 100 }, // und_Mtei -> mni_Mtei_IN + { 0, 131, 0 }, { 352, 131, 163 }, // und_Mult -> skr_Mult_PK + { 0, 25, 0 }, { 21, 25, 147 }, // und_Mymr -> my_Mymr_MM + { 0, 118, 0 }, { 331, 118, 186 }, // und_Narb -> xna_Narb_SA + { 0, 119, 0 }, { 265, 119, 109 }, // und_Nbat -> arc_Nbat_JO + { 0, 137, 0 }, { 348, 137, 150 }, // und_Newa -> new_Newa_NP + { 0, 75, 0 }, { 289, 75, 91 }, // und_Nkoo -> man_Nkoo_GN + { 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, 138, 0 }, { 358, 138, 225 }, // und_Osge -> osa_Osge_US + { 0, 83, 0 }, { 110, 83, 194 }, // und_Osma -> so_Osma_SO + { 0, 120, 0 }, { 265, 120, 207 }, // und_Palm -> arc_Palm_SY + { 0, 121, 0 }, { 338, 121, 147 }, // und_Pauc -> ctd_Pauc_MM + { 0, 122, 0 }, { 226, 122, 178 }, // und_Perm -> kv_Perm_RU + { 0, 84, 0 }, { 345, 84, 44 }, // und_Phag -> lzh_Phag_CN + { 0, 58, 0 }, { 297, 58, 102 }, // und_Phli -> pal_Phli_IR + { 0, 123, 0 }, { 297, 123, 44 }, // und_Phlp -> pal_Phlp_CN + { 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, 87, 0 }, { 301, 87, 101 }, // und_Rjng -> rej_Rjng_ID + { 0, 88, 0 }, { 294, 88, 205 }, // und_Runr -> non_Runr_SE + { 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, 133, 0 }, { 341, 133, 225 }, // und_Sgnw -> ase_Sgnw_US + { 0, 92, 0 }, { 31, 92, 224 }, // und_Shaw -> en_Shaw_GB + { 0, 91, 0 }, { 99, 91, 100 }, // und_Shrd -> sa_Shrd_IN + { 0, 124, 0 }, { 99, 124, 100 }, // und_Sidd -> sa_Sidd_IN + { 0, 125, 0 }, { 105, 125, 100 }, // und_Sind -> sd_Sind_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, 103 }, // und_Syrc -> syr_Syrc_IQ + { 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, 139, 0 }, { 359, 139, 44 }, // und_Tang -> txg_Tang_CN + { 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 }, { 314, 9, 145 }, // und_Tfng -> zgh_Tfng_MA + { 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 + { 0, 126, 0 }, { 339, 126, 100 }, // und_Tirh -> mai_Tirh_IN + { 0, 102, 0 }, { 311, 102, 207 }, // und_Ugar -> uga_Ugar_SY + { 0, 35, 0 }, { 252, 35, 121 }, // und_Vaii -> vai_Vaii_LR + { 0, 127, 0 }, { 334, 127, 100 }, // und_Wara -> hoc_Wara_IN + { 0, 80, 0 }, { 295, 80, 102 }, // und_Xpeo -> peo_Xpeo_IR + { 0, 94, 0 }, { 262, 94, 103 }, // und_Xsux -> akk_Xsux_IQ + { 0, 34, 0 }, { 168, 34, 44 } // und_Yiii -> ii_Yiii_CN +}; + +static const quint16 locale_index[] = { + 0, // AnyLanguage + 0, // C + 0, // Abkhazian + 1, // Oromo + 3, // Afar + 4, // Afrikaans + 6, // Albanian + 9, // Amharic + 10, // Arabic + 37, // Armenian + 38, // Assamese + 0, // Aymara + 39, // Azerbaijani + 42, // Bashkir + 43, // Basque + 44, // Bengali + 46, // Dzongkha + 0, // Bihari + 0, // Bislama + 47, // Breton + 48, // Bulgarian + 49, // Burmese + 50, // Belarusian + 51, // Khmer + 52, // Catalan + 56, // Chinese + 63, // Corsican + 64, // Croatian + 66, // Czech + 67, // Danish + 69, // Dutch + 76, // English + 0, // Esperanto + 179, // Estonian + 180, // Faroese + 0, // Fijian + 182, // Finnish + 183, // French + 229, // Western Frisian + 230, // Gaelic + 231, // Galician + 232, // Georgian + 233, // German + 239, // Greek + 241, // Greenlandic + 242, // Guarani + 243, // Gujarati + 244, // Hausa + 248, // Hebrew + 249, // Hindi + 250, // Hungarian + 251, // Icelandic + 252, // Indonesian + 253, // Interlingua + 0, // Interlingue + 254, // Inuktitut + 0, // Inupiak + 256, // Irish + 257, // Italian + 260, // Japanese + 261, // Javanese + 262, // Kannada + 263, // Kashmiri + 264, // Kazakh + 265, // Kinyarwanda + 266, // Kirghiz + 267, // Korean + 269, // Kurdish + 270, // Rundi + 271, // Lao + 0, // Latin + 272, // Latvian + 273, // Lingala + 277, // Lithuanian + 278, // Macedonian + 279, // Malagasy + 280, // Malay + 284, // Malayalam + 285, // Maltese + 286, // Maori + 287, // Marathi + 0, // Marshallese + 288, // Mongolian + 0, // Nauru + 290, // Nepali + 292, // NorwegianBokmal + 294, // Occitan + 295, // Oriya + 296, // Pashto + 297, // Persian + 299, // Polish + 300, // Portuguese + 312, // Punjabi + 314, // Quechua + 317, // Romansh + 318, // Romanian + 320, // Russian + 0, // Samoan + 326, // Sango + 327, // Sanskrit + 328, // Serbian + 336, // Ossetic + 338, // Southern Sotho + 339, // Tswana + 340, // Shona + 341, // Sindhi + 342, // Sinhala + 343, // Swati + 344, // Slovak + 345, // Slovenian + 346, // Somali + 350, // Spanish + 0, // Sundanese + 377, // Swahili + 381, // Swedish + 0, // Sardinian + 384, // Tajik + 385, // Tamil + 389, // Tatar + 390, // Telugu + 391, // Thai + 392, // Tibetan + 394, // Tigrinya + 396, // Tongan + 397, // Tsonga + 398, // Turkish + 400, // Turkmen + 0, // Tahitian + 401, // Uighur + 402, // Ukrainian + 403, // Urdu + 405, // Uzbek + 408, // Vietnamese + 0, // Volapuk + 409, // Welsh + 410, // Wolof + 411, // Xhosa + 0, // Yiddish + 412, // Yoruba + 0, // Zhuang + 414, // Zulu + 415, // NorwegianNynorsk + 416, // Bosnian + 418, // Divehi + 419, // Manx + 420, // Cornish + 421, // Akan + 422, // Konkani + 423, // Ga + 424, // Igbo + 425, // Kamba + 426, // Syriac + 427, // Blin + 428, // Geez + 0, // Koro + 429, // Sidamo + 430, // Atsam + 431, // Tigre + 432, // Jju + 433, // Friulian + 434, // Venda + 435, // Ewe + 437, // Walamo + 438, // Hawaiian + 439, // Tyap + 440, // Nyanja + 441, // Filipino + 442, // Swiss German + 445, // Sichuan Yi + 446, // Kpelle + 447, // Low German + 448, // South Ndebele + 449, // Northern Sotho + 450, // Northern Sami + 453, // Taroko + 454, // Gusii + 455, // Taita + 456, // Fulah + 460, // Kikuyu + 461, // Samburu + 462, // Sena + 463, // North Ndebele + 464, // Rombo + 465, // Tachelhit + 467, // Kabyle + 468, // Nyankole + 469, // Bena + 470, // Vunjo + 471, // Bambara + 473, // Embu + 474, // Cherokee + 475, // Morisyen + 476, // Makonde + 477, // Langi + 478, // Ganda + 479, // Bemba + 480, // Kabuverdianu + 481, // Meru + 482, // Kalenjin + 483, // Nama + 484, // Machame + 485, // Colognian + 486, // Masai + 488, // Soga + 489, // Luyia + 490, // Asu + 491, // Teso + 493, // Saho + 494, // Koyra Chiini + 495, // Rwa + 496, // Luo + 497, // Chiga + 498, // Central Morocco Tamazight + 499, // Koyraboro Senni + 500, // Shambala + 501, // Bodo + 0, // Avaric + 0, // Chamorro + 502, // Chechen + 503, // Church + 504, // Chuvash + 0, // Cree + 0, // Haitian + 0, // Herero + 0, // Hiri Motu + 0, // Kanuri + 0, // Komi + 0, // Kongo + 0, // Kwanyama + 0, // Limburgish + 505, // LubaKatanga + 506, // Luxembourgish + 0, // Navaho + 0, // Ndonga + 0, // Ojibwa + 0, // Pali + 507, // Walloon + 508, // Aghem + 509, // Basaa + 510, // Zarma + 511, // Duala + 512, // JolaFonyi + 513, // Ewondo + 514, // Bafia + 515, // MakhuwaMeetto + 516, // Mundang + 517, // Kwasio + 518, // Nuer + 519, // Sakha + 520, // Sangu + 0, // Congo Swahili + 521, // Tasawaq + 522, // Vai + 524, // Walser + 525, // Yangben + 0, // Avestan + 526, // Asturian + 527, // Ngomba + 528, // Kako + 529, // Meta + 530, // 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 + 531, // Akoose + 532, // Lakota + 533, // Standard Moroccan Tamazight + 534, // Mapuche + 535, // Central Kurdish + 537, // LowerSorbian + 538, // UpperSorbian + 539, // Kenyang + 540, // Mohawk + 541, // Nko + 0, // Prussian + 542, // Kiche + 543, // Southern Sami + 544, // Lule Sami + 545, // Inari Sami + 546, // Skolt Sami + 547, // Warlpiri + 0, // Manichaean Middle Persian + 0, // Mende + 0, // Ancient North Arabian + 0, // Linear A + 0, // Hmong Njua + 0, // Ho + 0, // Lezghian + 0, // Bassa + 0, // Mono + 0, // Tedim Chin + 0, // Maithili + 0, // Ahom + 0, // American Sign Language + 0, // Ardhamagadhi Prakrit + 0, // Bhojpuri + 0, // Hieroglyphic Luwian + 0, // Literary Chinese + 548, // Mazanderani + 0, // Mru + 0, // Newari + 549, // Northern Luri + 0, // Palauan + 0, // Papiamento + 0, // Saraiki + 0, // Tokelau + 0, // Tok Pisin + 0, // Tuvalu + 0, // UncodedLanguages + 551, // Cantonese + 0, // Osage + 0, // Tangut + 0 // trailing 0 +}; + +static const QLocaleData locale_data[] = { +// lang script terr dec group list prcnt zero minus plus exp quotStart quotEnd altQuotStart altQuotEnd lpStart lpMid lpEnd lpTwo sDtFmt lDtFmt sTmFmt lTmFmt ssMonth slMonth sMonth lMonth sDays lDays am,len pm,len + { 1, 0, 0, 46, 44, 59, 37, 48, 45, 43, 101, 34, 34, 39, 39, 0,6 , 0,6 , 0,6 , 0,6 , 0,10 , 10,17 , 0,8 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 158,27 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 99,14 , 0,2 , 0,2 , {0,0,0}, 0,0 , 0,7 , 0,4 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // C/AnyScript/AnyCountry + { 3, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 35,18 , 18,7 , 25,12 , 185,48 , 233,111 , 134,24 , 185,48 , 233,111 , 134,24 , 113,28 , 141,55 , 85,14 , 113,28 , 141,55 , 85,14 , 2,2 , 2,2 , {69,84,66}, 0,2 , 7,24 , 4,4 , 4,0 , 0,6 , 6,10 , 2, 1, 7, 6, 7 }, // Oromo/Latin/Ethiopia + { 3, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 35,18 , 37,5 , 8,10 , 185,48 , 233,111 , 134,24 , 185,48 , 233,111 , 134,24 , 113,28 , 141,55 , 85,14 , 113,28 , 141,55 , 85,14 , 2,2 , 2,2 , {75,69,83}, 2,3 , 0,7 , 4,4 , 4,0 , 0,6 , 16,8 , 2, 1, 7, 6, 7 }, // Oromo/Latin/Kenya + { 4, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,84,66}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Afar/Latin/Ethiopia + { 5, 7, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 53,10 , 80,18 , 18,7 , 25,12 , 392,59 , 451,92 , 134,24 , 392,59 , 451,92 , 134,24 , 196,28 , 224,58 , 282,14 , 196,28 , 224,58 , 282,14 , 4,3 , 4,3 , {90,65,82}, 5,1 , 31,67 , 4,4 , 4,0 , 24,9 , 33,11 , 2, 1, 7, 6, 7 }, // Afrikaans/Latin/SouthAfrica + { 5, 7, 148, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 53,10 , 98,16 , 18,7 , 25,12 , 392,59 , 451,92 , 134,24 , 392,59 , 451,92 , 134,24 , 196,28 , 224,58 , 282,14 , 196,28 , 224,58 , 282,14 , 4,3 , 4,3 , {78,65,68}, 6,1 , 98,55 , 4,4 , 4,0 , 24,9 , 44,7 , 2, 1, 1, 6, 7 }, // Afrikaans/Latin/Namibia + { 6, 7, 2, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 14,9 , 14,9 , 114,6 , 10,17 , 18,7 , 42,13 , 543,48 , 591,78 , 669,24 , 543,48 , 693,78 , 669,24 , 296,28 , 324,58 , 382,14 , 296,28 , 396,58 , 382,14 , 7,11 , 7,10 , {65,76,76}, 7,4 , 153,45 , 13,5 , 4,0 , 51,5 , 56,8 , 0, 0, 1, 6, 7 }, // Albanian/Latin/Albania + { 6, 7, 127, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 14,9 , 14,9 , 114,6 , 10,17 , 37,5 , 8,10 , 543,48 , 591,78 , 669,24 , 543,48 , 693,78 , 669,24 , 296,28 , 324,58 , 382,14 , 296,28 , 396,58 , 382,14 , 7,11 , 7,10 , {77,75,68}, 11,3 , 198,54 , 13,5 , 4,0 , 51,5 , 64,8 , 2, 1, 1, 6, 7 }, // Albanian/Latin/Macedonia + { 6, 7, 257, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 14,9 , 14,9 , 114,6 , 10,17 , 37,5 , 8,10 , 543,48 , 591,78 , 669,24 , 543,48 , 693,78 , 669,24 , 296,28 , 324,58 , 382,14 , 296,28 , 396,58 , 382,14 , 7,11 , 7,10 , {69,85,82}, 14,1 , 252,21 , 13,5 , 4,0 , 51,5 , 72,6 , 2, 1, 1, 6, 7 }, // Albanian/Latin/Kosovo + { 7, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 23,6 , 23,6 , 29,9 , 38,8 , 120,10 , 130,17 , 18,7 , 25,12 , 771,46 , 817,61 , 878,24 , 771,46 , 817,61 , 878,24 , 454,27 , 481,28 , 509,14 , 454,27 , 481,28 , 509,14 , 18,3 , 17,4 , {69,84,66}, 15,2 , 273,34 , 4,4 , 4,0 , 78,4 , 82,5 , 2, 1, 7, 6, 7 }, // Amharic/Ethiopic/Ethiopia + { 8, 1, 64, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {69,71,80}, 17,5 , 307,81 , 8,5 , 4,0 , 87,7 , 94,3 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Egypt + { 8, 1, 3, 44, 46, 59, 1642, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 1001,71 , 1001,71 , 1072,24 , 1001,71 , 1001,71 , 1072,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {68,90,68}, 22,5 , 388,102 , 8,5 , 4,0 , 87,7 , 97,7 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Algeria + { 8, 1, 17, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {66,72,68}, 27,5 , 490,98 , 8,5 , 4,0 , 87,7 , 104,7 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Bahrain + { 8, 1, 42, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {88,65,70}, 32,4 , 588,112 , 8,5 , 4,0 , 87,7 , 111,4 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Chad + { 8, 1, 48, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 37,5 , 8,10 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {75,77,70}, 36,7 , 700,105 , 8,5 , 4,0 , 87,7 , 115,9 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Comoros + { 8, 1, 59, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {68,74,70}, 43,3 , 805,84 , 8,5 , 4,0 , 87,7 , 124,6 , 0, 0, 6, 6, 7 }, // Arabic/Arabic/Djibouti + { 8, 1, 67, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {69,82,78}, 46,3 , 889,91 , 8,5 , 4,0 , 87,7 , 130,7 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Eritrea + { 8, 1, 103, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 1096,92 , 1096,92 , 1188,24 , 1212,92 , 1096,92 , 1188,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {73,81,68}, 49,5 , 980,91 , 8,5 , 4,0 , 87,7 , 137,6 , 0, 0, 6, 5, 6 }, // Arabic/Arabic/Iraq + { 8, 1, 105, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 55,4 , 59,9 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {73,76,83}, 54,1 , 1071,133 , 8,5 , 4,0 , 87,7 , 143,7 , 2, 1, 7, 5, 6 }, // Arabic/Arabic/Israel + { 8, 1, 109, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 1096,92 , 1096,92 , 1188,24 , 1096,92 , 1096,92 , 1188,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {74,79,68}, 55,5 , 1204,91 , 8,5 , 4,0 , 87,7 , 150,6 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Jordan + { 8, 1, 115, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {75,87,68}, 60,5 , 1295,91 , 8,5 , 4,0 , 87,7 , 156,6 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Kuwait + { 8, 1, 119, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 1096,92 , 1096,92 , 1188,24 , 1096,92 , 1096,92 , 1188,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {76,66,80}, 65,5 , 1386,84 , 8,5 , 4,0 , 87,7 , 162,5 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Lebanon + { 8, 1, 122, 44, 46, 59, 1642, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {76,89,68}, 70,5 , 1470,88 , 8,5 , 4,0 , 87,7 , 167,5 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Libya + { 8, 1, 136, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 1304,72 , 1304,72 , 1376,24 , 1304,72 , 1304,72 , 1376,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {77,82,79}, 75,5 , 1558,112 , 8,5 , 4,0 , 87,7 , 172,9 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Mauritania + { 8, 1, 145, 44, 46, 59, 1642, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 37,5 , 8,10 , 1400,70 , 1400,70 , 1470,24 , 1400,70 , 1400,70 , 1470,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {77,65,68}, 80,5 , 1670,87 , 8,5 , 4,0 , 87,7 , 181,6 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Morocco + { 8, 1, 162, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {79,77,82}, 85,5 , 1757,84 , 8,5 , 4,0 , 87,7 , 187,5 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Oman + { 8, 1, 165, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 1096,92 , 1096,92 , 1188,24 , 1096,92 , 1096,92 , 1188,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {73,76,83}, 54,1 , 1071,133 , 8,5 , 4,0 , 87,7 , 192,18 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/PalestinianTerritories + { 8, 1, 175, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {81,65,82}, 90,5 , 1841,77 , 8,5 , 4,0 , 87,7 , 210,3 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Qatar + { 8, 1, 186, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {83,65,82}, 95,5 , 1918,84 , 8,5 , 4,0 , 87,7 , 213,24 , 2, 1, 7, 5, 6 }, // Arabic/Arabic/SaudiArabia + { 8, 1, 194, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {83,79,83}, 100,1 , 2002,77 , 8,5 , 4,0 , 87,7 , 237,7 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Somalia + { 8, 1, 201, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {83,68,71}, 101,4 , 2079,91 , 8,5 , 4,0 , 87,7 , 244,7 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Sudan + { 8, 1, 207, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 1096,92 , 1096,92 , 1188,24 , 1096,92 , 1096,92 , 1188,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {83,89,80}, 105,5 , 2170,78 , 8,5 , 4,0 , 87,7 , 251,5 , 0, 0, 6, 5, 6 }, // Arabic/Arabic/Syria + { 8, 1, 216, 44, 46, 59, 1642, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 1001,71 , 1001,71 , 1072,24 , 1001,71 , 1001,71 , 1072,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {84,78,68}, 110,5 , 2248,95 , 8,5 , 4,0 , 87,7 , 256,4 , 3, 0, 7, 5, 6 }, // Arabic/Arabic/Tunisia + { 8, 1, 223, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {65,69,68}, 115,5 , 2343,97 , 8,5 , 4,0 , 87,7 , 260,24 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/UnitedArabEmirates + { 8, 1, 236, 46, 44, 59, 1642, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {77,65,68}, 80,5 , 1670,87 , 8,5 , 4,0 , 87,7 , 284,15 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/WesternSahara + { 8, 1, 237, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {89,69,82}, 120,5 , 2440,77 , 8,5 , 4,0 , 87,7 , 299,5 , 0, 0, 7, 5, 6 }, // Arabic/Arabic/Yemen + { 8, 1, 254, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 147,10 , 157,18 , 18,7 , 25,12 , 902,75 , 902,75 , 977,24 , 902,75 , 902,75 , 977,24 , 523,52 , 523,52 , 575,14 , 523,52 , 523,52 , 575,14 , 21,1 , 21,1 , {83,83,80}, 125,1 , 2517,132 , 8,5 , 4,0 , 87,7 , 304,12 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/SouthSudan + { 9, 10, 11, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 65,7 , 65,7 , 175,8 , 183,19 , 55,4 , 68,10 , 1494,48 , 1542,94 , 1636,24 , 1494,48 , 1660,106 , 1636,24 , 589,28 , 617,62 , 679,21 , 589,28 , 617,62 , 700,15 , 0,2 , 0,2 , {65,77,68}, 126,1 , 2649,46 , 8,5 , 4,0 , 316,7 , 323,8 , 0, 0, 1, 6, 7 }, // Armenian/Armenian/Armenia + { 10, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 202,8 , 210,18 , 78,8 , 86,12 , 1766,62 , 1828,88 , 158,27 , 1766,62 , 1828,88 , 158,27 , 715,37 , 752,58 , 85,14 , 715,37 , 752,58 , 85,14 , 22,9 , 22,7 , {73,78,82}, 127,1 , 0,7 , 8,5 , 4,0 , 331,7 , 338,4 , 2, 1, 7, 7, 7 }, // Assamese/Bengali/India + { 12, 7, 15, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 72,8 , 72,8 , 175,8 , 228,17 , 37,5 , 8,10 , 1916,48 , 1964,77 , 158,27 , 1916,48 , 2041,77 , 158,27 , 810,27 , 837,67 , 99,14 , 810,27 , 837,67 , 99,14 , 0,2 , 0,2 , {65,90,78}, 128,1 , 2695,58 , 8,5 , 4,0 , 342,15 , 357,10 , 2, 1, 1, 6, 7 }, // Azerbaijani/Latin/Azerbaijan + { 12, 1, 102, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 6, 5, 5 }, // Azerbaijani/Arabic/Iran + { 12, 2, 15, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 175,8 , 245,19 , 37,5 , 8,10 , 2118,77 , 2118,77 , 158,27 , 2118,77 , 2118,77 , 158,27 , 904,67 , 904,67 , 99,14 , 904,67 , 904,67 , 99,14 , 0,2 , 0,2 , {65,90,78}, 128,1 , 2753,12 , 8,5 , 4,0 , 367,15 , 382,10 , 2, 1, 1, 6, 7 }, // Azerbaijani/Cyrillic/Azerbaijan + { 13, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {82,85,66}, 129,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Bashkir/Cyrillic/Russia + { 14, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 80,9 , 80,9 , 264,10 , 274,26 , 37,5 , 98,12 , 2195,60 , 2255,93 , 2348,24 , 2372,60 , 2432,105 , 2348,24 , 971,28 , 999,68 , 1067,14 , 1081,28 , 1109,68 , 1067,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 2765,20 , 13,5 , 4,0 , 392,7 , 399,8 , 2, 1, 1, 6, 7 }, // Basque/Latin/Spain + { 15, 11, 18, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 89,10 , 99,9 , 300,6 , 210,18 , 18,7 , 25,12 , 2537,90 , 2537,90 , 2627,33 , 2537,90 , 2537,90 , 2627,33 , 1177,37 , 1214,58 , 1272,18 , 1177,37 , 1290,58 , 1272,18 , 31,9 , 29,7 , {66,68,84}, 130,1 , 2785,49 , 0,4 , 4,0 , 407,5 , 412,8 , 2, 1, 5, 6, 7 }, // Bengali/Bengali/Bangladesh + { 15, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 89,10 , 99,9 , 300,6 , 210,18 , 18,7 , 25,12 , 2537,90 , 2537,90 , 2627,33 , 2537,90 , 2537,90 , 2627,33 , 1177,37 , 1214,58 , 1272,18 , 1177,37 , 1290,58 , 1272,18 , 31,9 , 29,7 , {73,78,82}, 127,1 , 2834,43 , 0,4 , 4,0 , 407,5 , 420,4 , 2, 1, 7, 7, 7 }, // Bengali/Bengali/India + { 16, 31, 25, 46, 44, 59, 37, 3872, 45, 43, 101, 8220, 8221, 8216, 8217, 108,9 , 108,9 , 108,9 , 108,9 , 53,10 , 306,30 , 110,22 , 132,27 , 2660,63 , 2723,191 , 2914,27 , 2941,27 , 2968,132 , 3100,27 , 1348,34 , 1382,79 , 1461,27 , 1348,34 , 1382,79 , 1461,27 , 40,5 , 36,6 , {66,84,78}, 131,3 , 2877,15 , 4,4 , 4,0 , 424,6 , 430,5 , 2, 1, 7, 6, 7 }, // Dzongkha/Tibetan/Bhutan + { 19, 7, 74, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 3127,63 , 3190,78 , 3268,36 , 3304,63 , 3190,78 , 3268,36 , 1488,33 , 1521,43 , 1564,18 , 1488,33 , 1521,43 , 1564,18 , 45,4 , 42,4 , {69,85,82}, 14,1 , 2892,36 , 13,5 , 4,0 , 435,9 , 444,5 , 2, 1, 1, 6, 7 }, // Breton/Latin/France + { 20, 2, 33, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 117,7 , 117,7 , 336,12 , 348,22 , 55,4 , 59,9 , 3367,49 , 3416,82 , 3498,24 , 3367,49 , 3416,82 , 3498,24 , 1582,21 , 1603,55 , 1658,14 , 1582,21 , 1603,55 , 1658,14 , 49,6 , 46,6 , {66,71,78}, 134,3 , 2928,47 , 13,5 , 4,0 , 449,9 , 458,8 , 2, 1, 1, 6, 7 }, // Bulgarian/Cyrillic/Bulgaria + { 21, 25, 147, 46, 44, 4170, 37, 4160, 45, 43, 101, 8220, 8221, 8216, 8217, 124,6 , 124,6 , 130,11 , 141,9 , 370,8 , 378,18 , 37,5 , 8,10 , 3522,46 , 3568,88 , 3656,24 , 3522,46 , 3568,88 , 3656,24 , 1672,54 , 1672,54 , 1726,14 , 1672,54 , 1672,54 , 1726,14 , 55,5 , 52,3 , {77,77,75}, 137,1 , 2975,27 , 8,5 , 4,0 , 466,3 , 469,6 , 0, 0, 7, 6, 7 }, // Burmese/Myanmar/Myanmar + { 22, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 150,7 , 150,7 , 114,6 , 10,17 , 159,5 , 164,10 , 3680,48 , 3728,95 , 3823,24 , 3847,48 , 3895,98 , 3823,24 , 1740,21 , 1761,56 , 1817,14 , 1740,21 , 1761,56 , 1817,14 , 60,9 , 55,12 , {66,89,82}, 138,2 , 3002,89 , 13,5 , 4,0 , 475,10 , 485,8 , 0, 0, 1, 6, 7 }, // Belarusian/Cyrillic/Belarus + { 23, 20, 36, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 157,9 , 166,9 , 300,6 , 98,16 , 18,7 , 25,12 , 3993,71 , 3993,71 , 158,27 , 3993,71 , 3993,71 , 158,27 , 1831,47 , 1831,47 , 1878,19 , 1831,47 , 1831,47 , 1878,19 , 69,5 , 67,5 , {75,72,82}, 140,1 , 3091,29 , 4,4 , 4,0 , 493,5 , 498,7 , 2, 1, 7, 6, 7 }, // Khmer/Khmer/Cambodia + { 24, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 175,7 , 175,7 , 300,6 , 396,22 , 55,4 , 59,9 , 4064,60 , 4124,82 , 4206,36 , 4064,60 , 4242,115 , 4206,36 , 1897,28 , 1925,60 , 1985,21 , 1897,28 , 1925,60 , 1985,21 , 74,5 , 72,5 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 505,6 , 511,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Spain + { 24, 7, 5, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 175,7 , 175,7 , 300,6 , 396,22 , 55,4 , 59,9 , 4064,60 , 4124,82 , 4206,36 , 4064,60 , 4242,115 , 4206,36 , 1897,28 , 1925,60 , 1985,21 , 1897,28 , 1925,60 , 1985,21 , 74,5 , 72,5 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 505,6 , 518,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Andorra + { 24, 7, 74, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 175,7 , 175,7 , 300,6 , 396,22 , 55,4 , 59,9 , 4064,60 , 4124,82 , 4206,36 , 4064,60 , 4242,115 , 4206,36 , 1897,28 , 1925,60 , 1985,21 , 1897,28 , 1925,60 , 1985,21 , 74,5 , 72,5 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 505,6 , 525,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/France + { 24, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 175,7 , 175,7 , 300,6 , 396,22 , 55,4 , 59,9 , 4064,60 , 4124,82 , 4206,36 , 4064,60 , 4242,115 , 4206,36 , 1897,28 , 1925,60 , 1985,21 , 1897,28 , 1925,60 , 1985,21 , 74,5 , 72,5 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 505,6 , 531,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Italy + { 25, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 182,5 , 182,5 , 187,5 , 187,5 , 418,8 , 426,13 , 174,6 , 180,11 , 4357,39 , 4396,38 , 158,27 , 4357,39 , 4396,38 , 158,27 , 2006,21 , 2027,28 , 2055,14 , 2006,21 , 2027,28 , 2055,14 , 79,2 , 77,2 , {67,78,89}, 141,1 , 3140,13 , 4,4 , 4,0 , 537,4 , 541,2 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/China + { 25, 5, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 182,5 , 182,5 , 187,5 , 187,5 , 300,6 , 426,13 , 174,6 , 180,11 , 4357,39 , 4396,38 , 158,27 , 4357,39 , 4396,38 , 158,27 , 2006,21 , 2027,28 , 2055,14 , 2006,21 , 2027,28 , 2055,14 , 79,2 , 77,2 , {72,75,68}, 142,3 , 3153,11 , 4,4 , 4,0 , 537,4 , 543,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/HongKong + { 25, 5, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 182,5 , 182,5 , 187,5 , 187,5 , 300,6 , 426,13 , 174,6 , 180,11 , 4357,39 , 4396,38 , 158,27 , 4357,39 , 4396,38 , 158,27 , 2006,21 , 2027,28 , 2055,14 , 2006,21 , 2027,28 , 2055,14 , 79,2 , 77,2 , {77,79,80}, 145,4 , 3164,13 , 4,4 , 4,0 , 537,4 , 552,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Macau + { 25, 5, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 182,5 , 182,5 , 187,5 , 187,5 , 27,8 , 426,13 , 174,6 , 180,11 , 4357,39 , 4396,38 , 158,27 , 4357,39 , 4396,38 , 158,27 , 2006,21 , 2027,28 , 2055,14 , 2006,21 , 2027,28 , 2055,14 , 79,2 , 77,2 , {83,71,68}, 6,1 , 3177,15 , 4,4 , 4,0 , 537,4 , 561,3 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Singapore + { 25, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 182,5 , 182,5 , 192,5 , 192,5 , 439,8 , 426,13 , 174,6 , 191,13 , 4357,39 , 4357,39 , 158,27 , 4357,39 , 4357,39 , 158,27 , 2069,21 , 2027,28 , 2055,14 , 2069,21 , 2027,28 , 2055,14 , 79,2 , 77,2 , {72,75,68}, 142,3 , 3153,11 , 18,5 , 4,0 , 564,4 , 568,14 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/HongKong + { 25, 6, 126, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 182,5 , 182,5 , 192,5 , 192,5 , 439,8 , 426,13 , 174,6 , 191,13 , 4357,39 , 4357,39 , 158,27 , 4357,39 , 4357,39 , 158,27 , 2069,21 , 2027,28 , 2055,14 , 2069,21 , 2027,28 , 2055,14 , 79,2 , 77,2 , {77,79,80}, 145,4 , 3192,13 , 18,5 , 4,0 , 564,4 , 582,14 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Macau + { 25, 6, 208, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 182,5 , 182,5 , 187,5 , 187,5 , 418,8 , 447,14 , 174,6 , 191,13 , 4357,39 , 4357,39 , 158,27 , 4357,39 , 4357,39 , 158,27 , 2069,21 , 2027,28 , 2055,14 , 2069,21 , 2027,28 , 2055,14 , 79,2 , 77,2 , {84,87,68}, 6,1 , 3205,13 , 4,4 , 4,0 , 564,4 , 596,2 , 2, 0, 7, 6, 7 }, // Chinese/Traditional Han/Taiwan + { 26, 7, 74, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Corsican/Latin/France + { 27, 7, 54, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 175,7 , 175,7 , 461,11 , 472,19 , 37,5 , 8,10 , 4434,49 , 4483,94 , 4577,39 , 4434,49 , 4616,98 , 4577,39 , 2090,28 , 2118,58 , 2176,14 , 2090,28 , 2118,58 , 2190,14 , 0,2 , 0,2 , {72,82,75}, 149,3 , 3218,60 , 13,5 , 4,0 , 598,8 , 606,8 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Croatia + { 27, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 175,7 , 175,7 , 461,11 , 472,19 , 37,5 , 8,10 , 4434,49 , 4483,94 , 4577,39 , 4434,49 , 4616,98 , 4577,39 , 2090,28 , 2118,58 , 2176,14 , 2090,28 , 2118,58 , 2190,14 , 0,2 , 0,2 , {66,65,77}, 152,2 , 3278,85 , 13,5 , 4,0 , 598,8 , 614,19 , 2, 1, 1, 6, 7 }, // Croatian/Latin/BosniaAndHerzegowina + { 28, 7, 57, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 197,7 , 197,7 , 175,8 , 491,17 , 55,4 , 59,9 , 4714,48 , 4762,82 , 158,27 , 4714,48 , 4844,84 , 158,27 , 2204,21 , 2225,49 , 2274,14 , 2204,21 , 2225,49 , 2274,14 , 81,4 , 79,4 , {67,90,75}, 154,2 , 3363,68 , 13,5 , 4,0 , 633,7 , 640,15 , 2, 0, 1, 6, 7 }, // Czech/Latin/CzechRepublic + { 29, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 204,8 , 204,8 , 120,10 , 508,23 , 159,5 , 164,10 , 4928,48 , 4976,84 , 134,24 , 5060,59 , 4976,84 , 134,24 , 2288,28 , 2316,51 , 2367,14 , 2381,35 , 2316,51 , 2367,14 , 0,2 , 0,2 , {68,75,75}, 156,3 , 3431,42 , 13,5 , 4,0 , 655,5 , 660,7 , 2, 1, 1, 6, 7 }, // Danish/Latin/Denmark + { 29, 7, 86, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 204,8 , 204,8 , 120,10 , 508,23 , 204,7 , 86,12 , 4928,48 , 4976,84 , 134,24 , 5060,59 , 4976,84 , 134,24 , 2288,28 , 2316,51 , 2367,14 , 2381,35 , 2316,51 , 2367,14 , 0,2 , 0,2 , {68,75,75}, 156,3 , 3431,42 , 13,5 , 4,0 , 655,5 , 667,8 , 2, 1, 1, 6, 7 }, // Danish/Latin/Greenland + { 30, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 370,8 , 98,16 , 37,5 , 8,10 , 5119,59 , 5178,88 , 134,24 , 5119,59 , 5178,88 , 134,24 , 2416,21 , 2437,59 , 2496,14 , 2416,21 , 2437,59 , 2496,14 , 85,4 , 83,4 , {69,85,82}, 14,1 , 3473,19 , 8,5 , 23,6 , 675,10 , 685,9 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Netherlands + { 30, 7, 12, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 370,8 , 98,16 , 37,5 , 8,10 , 5119,59 , 5178,88 , 134,24 , 5119,59 , 5178,88 , 134,24 , 2416,21 , 2437,59 , 2496,14 , 2416,21 , 2437,59 , 2496,14 , 85,4 , 83,4 , {65,87,71}, 159,4 , 3492,55 , 8,5 , 23,6 , 675,10 , 694,5 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Aruba + { 30, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 531,7 , 98,16 , 37,5 , 8,10 , 5119,59 , 5178,88 , 134,24 , 5119,59 , 5178,88 , 134,24 , 2416,21 , 2437,59 , 2496,14 , 2416,21 , 2437,59 , 2496,14 , 85,4 , 83,4 , {69,85,82}, 14,1 , 3473,19 , 13,5 , 4,0 , 699,6 , 705,6 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Belgium + { 30, 7, 152, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 370,8 , 98,16 , 37,5 , 8,10 , 5119,59 , 5178,88 , 134,24 , 5119,59 , 5178,88 , 134,24 , 2416,21 , 2437,59 , 2496,14 , 2416,21 , 2437,59 , 2496,14 , 85,4 , 83,4 , {65,78,71}, 163,4 , 3547,97 , 8,5 , 23,6 , 675,10 , 711,7 , 2, 1, 1, 6, 7 }, // Dutch/Latin/CuraSao + { 30, 7, 202, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 370,8 , 98,16 , 37,5 , 8,10 , 5119,59 , 5178,88 , 134,24 , 5119,59 , 5178,88 , 134,24 , 2416,21 , 2437,59 , 2496,14 , 2416,21 , 2437,59 , 2496,14 , 85,4 , 83,4 , {83,82,68}, 6,1 , 3644,58 , 8,5 , 23,6 , 675,10 , 718,8 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Suriname + { 30, 7, 255, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 370,8 , 98,16 , 37,5 , 8,10 , 5119,59 , 5178,88 , 134,24 , 5119,59 , 5178,88 , 134,24 , 2416,21 , 2437,59 , 2496,14 , 2416,21 , 2437,59 , 2496,14 , 85,4 , 83,4 , {85,83,68}, 6,1 , 3702,61 , 8,5 , 23,6 , 675,10 , 726,19 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Bonaire + { 30, 7, 256, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 370,8 , 98,16 , 37,5 , 8,10 , 5119,59 , 5178,88 , 134,24 , 5119,59 , 5178,88 , 134,24 , 2416,21 , 2437,59 , 2496,14 , 2416,21 , 2437,59 , 2496,14 , 85,4 , 83,4 , {65,78,71}, 163,4 , 3547,97 , 8,5 , 23,6 , 675,10 , 745,12 , 2, 1, 1, 6, 7 }, // Dutch/Latin/SintMaarten + { 31, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 538,6 , 35,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 3763,35 , 4,4 , 4,0 , 757,16 , 773,13 , 2, 1, 7, 6, 7 }, // English/Latin/UnitedStates + { 31, 3, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {85,83,68}, 167,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // English/Deseret/UnitedStates + { 31, 7, 4, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 538,6 , 35,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 3763,35 , 4,4 , 4,0 , 786,7 , 793,14 , 2, 1, 7, 6, 7 }, // English/Latin/AmericanSamoa + { 31, 7, 7, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {88,67,68}, 6,1 , 3798,71 , 4,4 , 4,0 , 786,7 , 807,8 , 2, 1, 1, 6, 7 }, // English/Latin/Anguilla + { 31, 7, 9, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {88,67,68}, 6,1 , 3798,71 , 4,4 , 4,0 , 786,7 , 815,17 , 2, 1, 7, 6, 7 }, // English/Latin/AntiguaAndBarbuda + { 31, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 222,9 , 222,9 , 300,6 , 10,17 , 18,7 , 25,12 , 5266,59 , 48,86 , 5266,59 , 5266,59 , 48,86 , 5266,59 , 2510,35 , 28,57 , 2545,25 , 2510,35 , 28,57 , 2545,25 , 89,2 , 87,2 , {65,85,68}, 6,1 , 3869,59 , 4,4 , 4,0 , 832,18 , 850,9 , 2, 1, 7, 6, 7 }, // English/Latin/Australia + { 31, 7, 14, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3928,20 , 8,5 , 4,0 , 786,7 , 859,7 , 2, 1, 1, 6, 7 }, // English/Latin/Austria + { 31, 7, 16, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {66,83,68}, 6,1 , 3948,53 , 4,4 , 4,0 , 786,7 , 866,7 , 2, 1, 7, 6, 7 }, // English/Latin/Bahamas + { 31, 7, 19, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {66,66,68}, 6,1 , 4001,56 , 4,4 , 4,0 , 786,7 , 873,8 , 2, 1, 1, 6, 7 }, // English/Latin/Barbados + { 31, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 27,8 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3928,20 , 13,5 , 4,0 , 786,7 , 881,7 , 2, 1, 1, 6, 7 }, // English/Latin/Belgium + { 31, 7, 22, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 27,8 , 80,18 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {66,90,68}, 6,1 , 4057,47 , 4,4 , 4,0 , 786,7 , 888,6 , 2, 1, 7, 6, 7 }, // English/Latin/Belize + { 31, 7, 24, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {66,77,68}, 6,1 , 4104,53 , 4,4 , 4,0 , 786,7 , 894,7 , 2, 1, 1, 6, 7 }, // English/Latin/Bermuda + { 31, 7, 28, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 27,8 , 80,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {66,87,80}, 170,1 , 4157,50 , 4,4 , 4,0 , 786,7 , 901,8 , 2, 1, 7, 6, 7 }, // English/Latin/Botswana + { 31, 7, 31, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 167,3 , 3763,35 , 4,4 , 4,0 , 786,7 , 909,30 , 2, 1, 1, 6, 7 }, // English/Latin/BritishIndianOceanTerritory + { 31, 7, 35, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 538,6 , 35,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {66,73,70}, 171,3 , 4207,53 , 4,4 , 4,0 , 786,7 , 939,7 , 0, 0, 1, 6, 7 }, // English/Latin/Burundi + { 31, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {88,65,70}, 32,4 , 4260,83 , 4,4 , 4,0 , 786,7 , 946,8 , 0, 0, 1, 6, 7 }, // English/Latin/Cameroon + { 31, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 53,10 , 35,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {67,65,68}, 6,1 , 4343,53 , 4,4 , 4,0 , 954,16 , 970,6 , 2, 0, 7, 6, 7 }, // English/Latin/Canada + { 31, 7, 40, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {75,89,68}, 6,1 , 4396,71 , 4,4 , 4,0 , 786,7 , 976,14 , 2, 1, 1, 6, 7 }, // English/Latin/CaymanIslands + { 31, 7, 45, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {65,85,68}, 6,1 , 3869,59 , 4,4 , 4,0 , 786,7 , 990,16 , 2, 1, 1, 6, 7 }, // English/Latin/ChristmasIsland + { 31, 7, 46, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {65,85,68}, 6,1 , 3869,59 , 4,4 , 4,0 , 786,7 , 1006,23 , 2, 1, 1, 6, 7 }, // English/Latin/CocosIslands + { 31, 7, 51, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {78,90,68}, 6,1 , 4467,62 , 4,4 , 4,0 , 786,7 , 1029,12 , 2, 1, 1, 6, 7 }, // English/Latin/CookIslands + { 31, 7, 56, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3928,20 , 4,4 , 4,0 , 786,7 , 1041,6 , 2, 1, 1, 6, 7 }, // English/Latin/Cyprus + { 31, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 159,5 , 164,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {68,75,75}, 156,3 , 4529,44 , 13,5 , 4,0 , 786,7 , 1047,7 , 2, 1, 1, 6, 7 }, // English/Latin/Denmark + { 31, 7, 60, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {88,67,68}, 6,1 , 3798,71 , 4,4 , 4,0 , 786,7 , 1054,8 , 2, 1, 7, 6, 7 }, // English/Latin/Dominica + { 31, 7, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {69,82,78}, 46,3 , 4573,50 , 4,4 , 4,0 , 786,7 , 1062,7 , 2, 1, 1, 6, 7 }, // English/Latin/Eritrea + { 31, 7, 70, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {70,75,80}, 125,1 , 4623,74 , 4,4 , 4,0 , 786,7 , 1069,16 , 2, 1, 1, 6, 7 }, // English/Latin/FalklandIslands + { 31, 7, 72, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {70,74,68}, 6,1 , 4697,47 , 4,4 , 4,0 , 786,7 , 1085,4 , 2, 1, 1, 6, 7 }, // English/Latin/Fiji + { 31, 7, 73, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 211,4 , 215,9 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3928,20 , 13,5 , 4,0 , 786,7 , 1089,7 , 2, 1, 1, 6, 7 }, // English/Latin/Finland + { 31, 7, 75, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {71,66,80}, 125,1 , 4744,32 , 4,4 , 4,0 , 786,7 , 1096,8 , 2, 1, 1, 6, 7 }, // English/Latin/Guernsey + { 31, 7, 80, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {71,77,68}, 174,1 , 4776,50 , 4,4 , 4,0 , 786,7 , 1104,6 , 2, 1, 1, 6, 7 }, // English/Latin/Gambia + { 31, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3928,20 , 13,5 , 4,0 , 786,7 , 1110,7 , 2, 1, 1, 6, 7 }, // English/Latin/Germany + { 31, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {71,72,83}, 175,3 , 4826,47 , 4,4 , 4,0 , 786,7 , 1117,5 , 2, 1, 1, 6, 7 }, // English/Latin/Ghana + { 31, 7, 84, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {71,73,80}, 125,1 , 4873,53 , 4,4 , 4,0 , 786,7 , 1122,9 , 2, 1, 1, 6, 7 }, // English/Latin/Gibraltar + { 31, 7, 87, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {88,67,68}, 6,1 , 3798,71 , 4,4 , 4,0 , 786,7 , 1131,7 , 2, 1, 1, 6, 7 }, // English/Latin/Grenada + { 31, 7, 89, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 538,6 , 35,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 3763,35 , 4,4 , 4,0 , 786,7 , 1138,4 , 2, 1, 7, 6, 7 }, // English/Latin/Guam + { 31, 7, 93, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {71,89,68}, 6,1 , 4926,56 , 4,4 , 4,0 , 786,7 , 1142,6 , 0, 0, 1, 6, 7 }, // English/Latin/Guyana + { 31, 7, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 439,8 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {72,75,68}, 142,3 , 4982,56 , 4,4 , 4,0 , 786,7 , 1148,19 , 2, 1, 7, 6, 7 }, // English/Latin/HongKong + { 31, 7, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 27,8 , 98,16 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {73,78,82}, 127,1 , 5038,44 , 8,5 , 4,0 , 786,7 , 1167,5 , 2, 1, 7, 7, 7 }, // English/Latin/India + { 31, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 98,16 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 85,4 , 83,4 , {69,85,82}, 14,1 , 3928,20 , 4,4 , 4,0 , 786,7 , 1172,7 , 2, 1, 7, 6, 7 }, // English/Latin/Ireland + { 31, 7, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 55,4 , 59,9 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {73,76,83}, 54,1 , 5082,62 , 4,4 , 4,0 , 786,7 , 1179,6 , 2, 1, 7, 5, 6 }, // English/Latin/Israel + { 31, 7, 107, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 300,6 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {74,77,68}, 6,1 , 5144,53 , 4,4 , 4,0 , 786,7 , 1185,7 , 2, 1, 7, 6, 7 }, // English/Latin/Jamaica + { 31, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {75,69,83}, 2,3 , 5197,53 , 4,4 , 4,0 , 786,7 , 1192,5 , 2, 1, 7, 6, 7 }, // English/Latin/Kenya + { 31, 7, 112, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {65,85,68}, 6,1 , 3869,59 , 4,4 , 4,0 , 786,7 , 1197,8 , 2, 1, 1, 6, 7 }, // English/Latin/Kiribati + { 31, 7, 120, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 5250,61 , 4,4 , 4,0 , 786,7 , 1205,7 , 2, 1, 1, 6, 7 }, // English/Latin/Lesotho + { 31, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {76,82,68}, 6,1 , 5311,53 , 4,4 , 4,0 , 786,7 , 1212,7 , 2, 1, 1, 6, 7 }, // English/Latin/Liberia + { 31, 7, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {77,79,80}, 145,4 , 5364,53 , 4,4 , 4,0 , 786,7 , 1219,15 , 2, 1, 7, 6, 7 }, // English/Latin/Macau + { 31, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {77,71,65}, 178,2 , 5417,54 , 4,4 , 4,0 , 786,7 , 1234,10 , 0, 0, 1, 6, 7 }, // English/Latin/Madagascar + { 31, 7, 129, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {77,87,75}, 180,2 , 5471,53 , 4,4 , 4,0 , 786,7 , 1244,6 , 2, 1, 1, 6, 7 }, // English/Latin/Malawi + { 31, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {77,89,82}, 182,2 , 5524,59 , 4,4 , 4,0 , 786,7 , 1250,8 , 2, 1, 1, 6, 7 }, // English/Latin/Malaysia + { 31, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3928,20 , 4,4 , 4,0 , 786,7 , 1258,5 , 2, 1, 7, 6, 7 }, // English/Latin/Malta + { 31, 7, 134, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 538,6 , 35,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 3763,35 , 4,4 , 4,0 , 786,7 , 1263,16 , 2, 1, 7, 6, 7 }, // English/Latin/MarshallIslands + { 31, 7, 137, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {77,85,82}, 184,2 , 5583,53 , 4,4 , 4,0 , 786,7 , 1279,9 , 0, 0, 1, 6, 7 }, // English/Latin/Mauritius + { 31, 7, 140, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 167,3 , 3763,35 , 4,4 , 4,0 , 786,7 , 1288,10 , 2, 1, 1, 6, 7 }, // English/Latin/Micronesia + { 31, 7, 144, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {88,67,68}, 6,1 , 3798,71 , 4,4 , 4,0 , 786,7 , 1298,10 , 2, 1, 1, 6, 7 }, // English/Latin/Montserrat + { 31, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {78,65,68}, 6,1 , 5636,53 , 4,4 , 4,0 , 786,7 , 1308,7 , 2, 1, 1, 6, 7 }, // English/Latin/Namibia + { 31, 7, 149, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {65,85,68}, 6,1 , 3869,59 , 4,4 , 4,0 , 786,7 , 1315,5 , 2, 1, 1, 6, 7 }, // English/Latin/Nauru + { 31, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3928,20 , 8,5 , 23,6 , 786,7 , 1320,11 , 2, 1, 1, 6, 7 }, // English/Latin/Netherlands + { 31, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 531,7 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {78,90,68}, 6,1 , 4467,62 , 4,4 , 4,0 , 786,7 , 1331,11 , 2, 1, 7, 6, 7 }, // English/Latin/NewZealand + { 31, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {78,71,78}, 186,1 , 5689,50 , 4,4 , 4,0 , 786,7 , 1342,7 , 2, 1, 1, 6, 7 }, // English/Latin/Nigeria + { 31, 7, 158, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {78,90,68}, 6,1 , 4467,62 , 4,4 , 4,0 , 786,7 , 1349,4 , 2, 1, 1, 6, 7 }, // English/Latin/Niue + { 31, 7, 159, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {65,85,68}, 6,1 , 3869,59 , 4,4 , 4,0 , 786,7 , 1353,14 , 2, 1, 1, 6, 7 }, // English/Latin/NorfolkIsland + { 31, 7, 160, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 538,6 , 35,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 3763,35 , 4,4 , 4,0 , 786,7 , 1367,24 , 2, 1, 1, 6, 7 }, // English/Latin/NorthernMarianaIslands + { 31, 7, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {80,75,82}, 184,2 , 5739,53 , 4,4 , 4,0 , 786,7 , 1391,8 , 0, 0, 7, 6, 7 }, // English/Latin/Pakistan + { 31, 7, 164, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 167,3 , 3763,35 , 4,4 , 4,0 , 786,7 , 1399,5 , 2, 1, 1, 6, 7 }, // English/Latin/Palau + { 31, 7, 167, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {80,71,75}, 137,1 , 5792,73 , 4,4 , 4,0 , 786,7 , 1404,16 , 2, 1, 1, 6, 7 }, // English/Latin/PapuaNewGuinea + { 31, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {80,72,80}, 187,1 , 5865,53 , 4,4 , 4,0 , 786,7 , 1420,11 , 2, 1, 7, 6, 7 }, // English/Latin/Philippines + { 31, 7, 171, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {78,90,68}, 6,1 , 4467,62 , 4,4 , 4,0 , 786,7 , 1431,16 , 2, 1, 1, 6, 7 }, // English/Latin/Pitcairn + { 31, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 538,6 , 35,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 3763,35 , 4,4 , 4,0 , 786,7 , 1447,11 , 2, 1, 7, 6, 7 }, // English/Latin/PuertoRico + { 31, 7, 179, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {82,87,70}, 188,2 , 5918,47 , 4,4 , 4,0 , 786,7 , 1458,6 , 0, 0, 1, 6, 7 }, // English/Latin/Rwanda + { 31, 7, 180, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {88,67,68}, 6,1 , 3798,71 , 4,4 , 4,0 , 786,7 , 1464,17 , 2, 1, 1, 6, 7 }, // English/Latin/SaintKittsAndNevis + { 31, 7, 181, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {88,67,68}, 6,1 , 3798,71 , 4,4 , 4,0 , 786,7 , 1481,9 , 2, 1, 1, 6, 7 }, // English/Latin/SaintLucia + { 31, 7, 182, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {88,67,68}, 6,1 , 3798,71 , 4,4 , 4,0 , 786,7 , 1490,24 , 2, 1, 1, 6, 7 }, // English/Latin/SaintVincentAndTheGrenadines + { 31, 7, 183, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {87,83,84}, 190,3 , 5965,40 , 4,4 , 4,0 , 786,7 , 1514,5 , 2, 1, 7, 6, 7 }, // English/Latin/Samoa + { 31, 7, 188, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {83,67,82}, 193,2 , 6005,59 , 4,4 , 4,0 , 786,7 , 1519,10 , 2, 1, 1, 6, 7 }, // English/Latin/Seychelles + { 31, 7, 189, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {83,76,76}, 195,2 , 6064,68 , 4,4 , 4,0 , 786,7 , 1529,12 , 0, 0, 1, 6, 7 }, // English/Latin/SierraLeone + { 31, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 300,6 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {83,71,68}, 6,1 , 6132,56 , 4,4 , 4,0 , 786,7 , 1541,9 , 2, 1, 7, 6, 7 }, // English/Latin/Singapore + { 31, 7, 192, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3928,20 , 13,5 , 29,7 , 786,7 , 1550,8 , 2, 1, 1, 6, 7 }, // English/Latin/Slovenia + { 31, 7, 193, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {83,66,68}, 6,1 , 6188,74 , 4,4 , 4,0 , 786,7 , 1558,15 , 2, 1, 1, 6, 7 }, // English/Latin/SolomonIslands + { 31, 7, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 264,10 , 80,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 5250,61 , 4,4 , 4,0 , 786,7 , 1573,12 , 2, 1, 7, 6, 7 }, // English/Latin/SouthAfrica + { 31, 7, 199, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {83,72,80}, 125,1 , 6262,56 , 4,4 , 4,0 , 786,7 , 1585,10 , 2, 1, 1, 6, 7 }, // English/Latin/SaintHelena + { 31, 7, 201, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {83,68,71}, 0,0 , 6318,50 , 4,4 , 4,0 , 786,7 , 1595,5 , 2, 1, 6, 5, 6 }, // English/Latin/Sudan + { 31, 7, 204, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {83,90,76}, 197,1 , 6368,53 , 4,4 , 4,0 , 786,7 , 1600,9 , 2, 1, 1, 6, 7 }, // English/Latin/Swaziland + { 31, 7, 205, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 53,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {83,69,75}, 198,2 , 6421,47 , 13,5 , 4,0 , 786,7 , 1609,6 , 2, 1, 1, 6, 7 }, // English/Latin/Sweden + { 31, 7, 206, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {67,72,70}, 0,0 , 6468,41 , 8,5 , 36,5 , 786,7 , 1615,11 , 2, 0, 1, 6, 7 }, // English/Latin/Switzerland + { 31, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {84,90,83}, 200,3 , 6509,62 , 4,4 , 4,0 , 786,7 , 1626,8 , 0, 0, 1, 6, 7 }, // English/Latin/Tanzania + { 31, 7, 213, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {78,90,68}, 6,1 , 4467,62 , 4,4 , 4,0 , 786,7 , 1634,7 , 2, 1, 1, 6, 7 }, // English/Latin/Tokelau + { 31, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {84,79,80}, 203,2 , 6571,49 , 4,4 , 4,0 , 786,7 , 1641,5 , 2, 1, 1, 6, 7 }, // English/Latin/Tonga + { 31, 7, 215, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {84,84,68}, 6,1 , 6620,80 , 4,4 , 4,0 , 786,7 , 1646,17 , 2, 1, 7, 6, 7 }, // English/Latin/TrinidadAndTobago + { 31, 7, 219, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 167,3 , 3763,35 , 4,4 , 4,0 , 786,7 , 1663,22 , 2, 1, 1, 6, 7 }, // English/Latin/TurksAndCaicosIslands + { 31, 7, 220, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {65,85,68}, 6,1 , 3869,59 , 4,4 , 4,0 , 786,7 , 1685,6 , 2, 1, 1, 6, 7 }, // English/Latin/Tuvalu + { 31, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,71,88}, 205,3 , 6700,56 , 4,4 , 4,0 , 786,7 , 1691,6 , 0, 0, 1, 6, 7 }, // English/Latin/Uganda + { 31, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 222,9 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 89,2 , 87,2 , {71,66,80}, 125,1 , 6756,47 , 4,4 , 4,0 , 1697,15 , 1712,14 , 2, 1, 1, 6, 7 }, // English/Latin/UnitedKingdom + { 31, 7, 226, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 538,6 , 35,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 3763,35 , 4,4 , 4,0 , 786,7 , 1726,21 , 2, 1, 7, 6, 7 }, // English/Latin/UnitedStatesMinorOutlyingIslands + { 31, 7, 229, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {86,85,86}, 208,2 , 6803,44 , 4,4 , 4,0 , 786,7 , 1747,7 , 0, 0, 1, 6, 7 }, // English/Latin/Vanuatu + { 31, 7, 233, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 167,3 , 3763,35 , 4,4 , 4,0 , 786,7 , 1754,22 , 2, 1, 1, 6, 7 }, // English/Latin/BritishVirginIslands + { 31, 7, 234, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 538,6 , 35,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 3763,35 , 4,4 , 4,0 , 786,7 , 1776,19 , 2, 1, 7, 6, 7 }, // English/Latin/UnitedStatesVirginIslands + { 31, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {90,77,87}, 137,1 , 6847,50 , 4,4 , 4,0 , 786,7 , 1795,6 , 2, 1, 1, 6, 7 }, // English/Latin/Zambia + { 31, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 439,8 , 80,18 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 167,3 , 3763,35 , 4,4 , 4,0 , 786,7 , 1801,8 , 2, 1, 7, 6, 7 }, // English/Latin/Zimbabwe + { 31, 7, 249, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 167,3 , 3763,35 , 4,4 , 4,0 , 786,7 , 1809,12 , 2, 1, 1, 6, 7 }, // English/Latin/DiegoGarcia + { 31, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {71,66,80}, 125,1 , 4744,32 , 4,4 , 4,0 , 786,7 , 1821,11 , 2, 1, 1, 6, 7 }, // English/Latin/IsleOfMan + { 31, 7, 252, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {71,66,80}, 125,1 , 4744,32 , 4,4 , 4,0 , 786,7 , 1832,6 , 2, 1, 1, 6, 7 }, // English/Latin/Jersey + { 31, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {83,83,80}, 125,1 , 6897,68 , 4,4 , 4,0 , 786,7 , 1838,11 , 2, 1, 1, 6, 7 }, // English/Latin/SouthSudan + { 31, 7, 256, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 212,10 , 222,9 , 120,10 , 10,17 , 37,5 , 8,10 , 0,48 , 48,86 , 134,24 , 0,48 , 48,86 , 134,24 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , {65,78,71}, 163,4 , 6965,95 , 4,4 , 4,0 , 786,7 , 1849,12 , 2, 1, 1, 6, 7 }, // English/Latin/SintMaarten + { 33, 7, 68, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 231,8 , 231,8 , 175,8 , 544,18 , 55,4 , 224,9 , 5325,59 , 5384,91 , 5475,24 , 5325,59 , 5384,91 , 5475,24 , 2570,14 , 2584,63 , 2570,14 , 2570,14 , 2584,63 , 2570,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 7060,20 , 13,5 , 4,0 , 1861,5 , 1866,5 , 2, 1, 1, 6, 7 }, // Estonian/Latin/Estonia + { 34, 7, 71, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 204,8 , 204,8 , 175,8 , 544,18 , 37,5 , 8,10 , 5499,48 , 5547,83 , 134,24 , 5630,59 , 5547,83 , 134,24 , 2647,28 , 2675,74 , 2749,14 , 2763,35 , 2675,74 , 2749,14 , 0,2 , 0,2 , {68,75,75}, 198,2 , 7080,43 , 13,5 , 4,0 , 1871,8 , 1879,7 , 2, 1, 1, 6, 7 }, // Faroese/Latin/FaroeIslands + { 34, 7, 58, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 204,8 , 204,8 , 175,8 , 544,18 , 37,5 , 8,10 , 5499,48 , 5547,83 , 134,24 , 5630,59 , 5547,83 , 134,24 , 2647,28 , 2675,74 , 2749,14 , 2763,35 , 2675,74 , 2749,14 , 0,2 , 0,2 , {68,75,75}, 156,3 , 7080,43 , 13,5 , 4,0 , 1871,8 , 660,7 , 2, 1, 1, 6, 7 }, // Faroese/Latin/Denmark + { 36, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 231,8 , 231,8 , 562,8 , 491,17 , 211,4 , 215,9 , 5689,69 , 5758,105 , 5863,24 , 5887,129 , 5887,129 , 5863,24 , 2798,21 , 2819,67 , 2886,14 , 2798,21 , 2900,81 , 2886,14 , 91,3 , 89,3 , {69,85,82}, 14,1 , 7123,20 , 13,5 , 4,0 , 1886,5 , 1891,5 , 2, 1, 1, 6, 7 }, // Finnish/Latin/Finland + { 37, 7, 74, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 1904,6 , 2, 1, 1, 6, 7 }, // French/Latin/France + { 37, 7, 3, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 18,7 , 25,12 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {68,90,68}, 210,2 , 7143,51 , 13,5 , 4,0 , 1896,8 , 1910,7 , 2, 1, 6, 5, 6 }, // French/Latin/Algeria + { 37, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 531,7 , 98,16 , 37,5 , 233,23 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 1917,8 , 2, 1, 1, 6, 7 }, // French/Latin/Belgium + { 37, 7, 23, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 7194,59 , 13,5 , 4,0 , 1896,8 , 1925,5 , 0, 0, 1, 6, 7 }, // French/Latin/Benin + { 37, 7, 34, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 7194,59 , 13,5 , 4,0 , 1896,8 , 1930,12 , 0, 0, 1, 6, 7 }, // French/Latin/BurkinaFaso + { 37, 7, 35, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {66,73,70}, 171,3 , 7253,53 , 13,5 , 4,0 , 1896,8 , 939,7 , 0, 0, 1, 6, 7 }, // French/Latin/Burundi + { 37, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,65,70}, 32,4 , 7306,56 , 13,5 , 4,0 , 1896,8 , 1942,8 , 0, 0, 1, 6, 7 }, // French/Latin/Cameroon + { 37, 7, 38, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 570,8 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {67,65,68}, 6,1 , 7362,54 , 41,8 , 4,0 , 1950,17 , 970,6 , 2, 0, 7, 6, 7 }, // French/Latin/Canada + { 37, 7, 41, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,65,70}, 32,4 , 7306,56 , 13,5 , 4,0 , 1896,8 , 1967,25 , 0, 0, 1, 6, 7 }, // French/Latin/CentralAfricanRepublic + { 37, 7, 42, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 18,7 , 25,12 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,65,70}, 32,4 , 7306,56 , 13,5 , 4,0 , 1896,8 , 1992,5 , 0, 0, 1, 6, 7 }, // French/Latin/Chad + { 37, 7, 48, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {75,77,70}, 215,2 , 7416,51 , 13,5 , 4,0 , 1896,8 , 1997,7 , 0, 0, 1, 6, 7 }, // French/Latin/Comoros + { 37, 7, 49, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {67,68,70}, 217,2 , 7467,53 , 13,5 , 4,0 , 1896,8 , 2004,14 , 2, 1, 1, 6, 7 }, // French/Latin/CongoKinshasa + { 37, 7, 50, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,65,70}, 32,4 , 7306,56 , 13,5 , 4,0 , 1896,8 , 2018,17 , 0, 0, 1, 6, 7 }, // French/Latin/CongoBrazzaville + { 37, 7, 53, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 7194,59 , 13,5 , 4,0 , 1896,8 , 2035,13 , 0, 0, 1, 6, 7 }, // French/Latin/IvoryCoast + { 37, 7, 59, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 18,7 , 25,12 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {68,74,70}, 43,3 , 7520,57 , 13,5 , 4,0 , 1896,8 , 2048,8 , 0, 0, 6, 6, 7 }, // French/Latin/Djibouti + { 37, 7, 66, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,65,70}, 32,4 , 7306,56 , 13,5 , 4,0 , 1896,8 , 2056,18 , 0, 0, 1, 6, 7 }, // French/Latin/EquatorialGuinea + { 37, 7, 76, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 2074,16 , 2, 1, 1, 6, 7 }, // French/Latin/FrenchGuiana + { 37, 7, 77, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,80,70}, 219,4 , 7577,35 , 13,5 , 4,0 , 1896,8 , 2090,19 , 0, 0, 1, 6, 7 }, // French/Latin/FrenchPolynesia + { 37, 7, 79, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,65,70}, 32,4 , 7306,56 , 13,5 , 4,0 , 1896,8 , 2109,5 , 0, 0, 1, 6, 7 }, // French/Latin/Gabon + { 37, 7, 88, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 2114,10 , 2, 1, 1, 6, 7 }, // French/Latin/Guadeloupe + { 37, 7, 91, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {71,78,70}, 223,2 , 7612,48 , 13,5 , 4,0 , 1896,8 , 2124,6 , 0, 0, 1, 6, 7 }, // French/Latin/Guinea + { 37, 7, 94, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {72,84,71}, 225,1 , 7660,57 , 13,5 , 4,0 , 1896,8 , 2130,5 , 2, 1, 1, 6, 7 }, // French/Latin/Haiti + { 37, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 2135,10 , 2, 1, 1, 6, 7 }, // French/Latin/Luxembourg + { 37, 7, 128, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {77,71,65}, 178,2 , 7717,54 , 13,5 , 4,0 , 1896,8 , 1234,10 , 0, 0, 1, 6, 7 }, // French/Latin/Madagascar + { 37, 7, 132, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 7194,59 , 13,5 , 4,0 , 1896,8 , 2145,4 , 0, 0, 1, 6, 7 }, // French/Latin/Mali + { 37, 7, 135, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 2149,10 , 2, 1, 1, 6, 7 }, // French/Latin/Martinique + { 37, 7, 136, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 18,7 , 25,12 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {77,82,79}, 226,2 , 7771,66 , 13,5 , 4,0 , 1896,8 , 2159,10 , 0, 0, 1, 6, 7 }, // French/Latin/Mauritania + { 37, 7, 137, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {77,85,82}, 184,2 , 7837,63 , 13,5 , 4,0 , 1896,8 , 2169,7 , 0, 0, 1, 6, 7 }, // French/Latin/Mauritius + { 37, 7, 138, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 2176,7 , 2, 1, 1, 6, 7 }, // French/Latin/Mayotte + { 37, 7, 142, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 2183,6 , 2, 1, 1, 6, 7 }, // French/Latin/Monaco + { 37, 7, 145, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6164,61 , 6079,85 , 134,24 , 6164,61 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 85,4 , 83,4 , {77,65,68}, 228,3 , 7900,54 , 13,5 , 4,0 , 1896,8 , 2189,5 , 2, 1, 6, 5, 6 }, // French/Latin/Morocco + { 37, 7, 153, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,80,70}, 219,4 , 7577,35 , 13,5 , 4,0 , 1896,8 , 2194,18 , 0, 0, 1, 6, 7 }, // French/Latin/NewCaledonia + { 37, 7, 156, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 7194,59 , 13,5 , 4,0 , 1896,8 , 2212,5 , 0, 0, 1, 6, 7 }, // French/Latin/Niger + { 37, 7, 176, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 2217,10 , 2, 1, 1, 6, 7 }, // French/Latin/Reunion + { 37, 7, 179, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {82,87,70}, 188,2 , 7954,50 , 13,5 , 4,0 , 1896,8 , 1458,6 , 0, 0, 1, 6, 7 }, // French/Latin/Rwanda + { 37, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 7194,59 , 13,5 , 4,0 , 1896,8 , 2227,7 , 0, 0, 1, 6, 7 }, // French/Latin/Senegal + { 37, 7, 188, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {83,67,82}, 193,2 , 8004,71 , 13,5 , 4,0 , 1896,8 , 1519,10 , 2, 1, 1, 6, 7 }, // French/Latin/Seychelles + { 37, 7, 200, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 2234,24 , 2, 1, 1, 6, 7 }, // French/Latin/SaintPierreAndMiquelon + { 37, 7, 206, 46, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 239,8 , 239,8 , 175,8 , 10,17 , 37,5 , 256,14 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {67,72,70}, 231,3 , 8075,45 , 8,5 , 36,5 , 2258,15 , 2273,6 , 2, 0, 1, 6, 7 }, // French/Latin/Switzerland + { 37, 7, 207, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 18,7 , 25,12 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {83,89,80}, 234,2 , 8120,51 , 13,5 , 4,0 , 1896,8 , 2279,5 , 0, 0, 6, 5, 6 }, // French/Latin/Syria + { 37, 7, 212, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 7194,59 , 13,5 , 4,0 , 1896,8 , 2284,4 , 0, 0, 1, 6, 7 }, // French/Latin/Togo + { 37, 7, 216, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 18,7 , 25,12 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {84,78,68}, 236,2 , 8171,51 , 13,5 , 4,0 , 1896,8 , 2288,7 , 3, 0, 7, 5, 6 }, // French/Latin/Tunisia + { 37, 7, 229, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 18,7 , 25,12 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {86,85,86}, 208,2 , 8222,51 , 13,5 , 4,0 , 1896,8 , 1747,7 , 0, 0, 1, 6, 7 }, // French/Latin/Vanuatu + { 37, 7, 235, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {88,80,70}, 219,4 , 7577,35 , 13,5 , 4,0 , 1896,8 , 2295,16 , 0, 0, 1, 6, 7 }, // French/Latin/WallisAndFutunaIslands + { 37, 7, 244, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 2311,16 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Barthelemy + { 37, 7, 245, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 239,8 , 239,8 , 120,10 , 98,16 , 37,5 , 8,10 , 6016,63 , 6079,85 , 134,24 , 6016,63 , 6079,85 , 134,24 , 2981,35 , 3016,52 , 3068,14 , 2981,35 , 3016,52 , 3068,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 1896,8 , 2327,12 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Martin + { 38, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 370,8 , 98,16 , 37,5 , 8,10 , 6225,48 , 6273,95 , 134,24 , 6368,60 , 6273,95 , 134,24 , 3082,21 , 3103,54 , 2496,14 , 3082,21 , 3103,54 , 2496,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 3473,19 , 8,5 , 49,6 , 2339,10 , 2349,8 , 2, 1, 1, 6, 7 }, // Western Frisian/Latin/Netherlands + { 39, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 247,10 , 247,10 , 120,10 , 578,21 , 37,5 , 8,10 , 6428,61 , 6489,142 , 6631,24 , 6428,61 , 6655,167 , 6631,24 , 3157,28 , 3185,69 , 3254,14 , 3157,28 , 3185,69 , 3254,14 , 94,1 , 92,1 , {71,66,80}, 125,1 , 8273,86 , 4,4 , 4,0 , 2357,8 , 2365,22 , 2, 1, 1, 6, 7 }, // Gaelic/Latin/UnitedKingdom + { 40, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 599,17 , 37,5 , 8,10 , 6822,48 , 6870,87 , 6957,24 , 6981,48 , 7029,87 , 6957,24 , 3268,28 , 3296,49 , 3345,14 , 3359,29 , 3388,49 , 3345,14 , 85,4 , 83,4 , {69,85,82}, 14,1 , 3928,20 , 13,5 , 4,0 , 2387,6 , 2393,6 , 2, 1, 1, 6, 7 }, // Galician/Latin/Spain + { 41, 15, 81, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 171, 187, 0,6 , 0,6 , 264,8 , 264,8 , 175,8 , 616,19 , 37,5 , 8,10 , 7116,48 , 7164,99 , 7263,24 , 7116,48 , 7164,99 , 7263,24 , 3437,28 , 3465,62 , 3527,14 , 3437,28 , 3465,62 , 3527,14 , 0,2 , 0,2 , {71,69,76}, 238,1 , 8359,43 , 13,5 , 4,0 , 2399,7 , 2406,10 , 2, 1, 1, 6, 7 }, // Georgian/Georgian/Georgia + { 42, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 272,9 , 272,9 , 175,8 , 544,18 , 37,5 , 8,10 , 7287,48 , 7335,83 , 134,24 , 7418,59 , 7335,83 , 134,24 , 3541,21 , 3562,60 , 3622,14 , 3636,28 , 3562,60 , 3622,14 , 95,5 , 93,6 , {69,85,82}, 14,1 , 8402,19 , 13,5 , 4,0 , 2416,7 , 2423,11 , 2, 1, 1, 6, 7 }, // German/Latin/Germany + { 42, 7, 14, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 272,9 , 272,9 , 175,8 , 544,18 , 37,5 , 8,10 , 7477,48 , 7525,83 , 134,24 , 7608,59 , 7525,83 , 134,24 , 3541,21 , 3562,60 , 3622,14 , 3636,28 , 3562,60 , 3622,14 , 95,5 , 93,6 , {69,85,82}, 14,1 , 8402,19 , 8,5 , 4,0 , 2434,24 , 2458,10 , 2, 1, 1, 6, 7 }, // German/Latin/Austria + { 42, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 272,9 , 272,9 , 175,8 , 544,18 , 37,5 , 8,10 , 7287,48 , 7335,83 , 134,24 , 7418,59 , 7335,83 , 134,24 , 3541,21 , 3562,60 , 3622,14 , 3636,28 , 3562,60 , 3622,14 , 95,5 , 93,6 , {69,85,82}, 14,1 , 8402,19 , 13,5 , 4,0 , 2416,7 , 2468,7 , 2, 1, 1, 6, 7 }, // German/Latin/Belgium + { 42, 7, 123, 46, 39, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 272,9 , 272,9 , 175,8 , 544,18 , 37,5 , 8,10 , 7287,48 , 7335,83 , 134,24 , 7418,59 , 7335,83 , 134,24 , 3541,21 , 3562,60 , 3622,14 , 3636,28 , 3562,60 , 3622,14 , 95,5 , 93,6 , {67,72,70}, 231,3 , 8421,58 , 8,5 , 4,0 , 2416,7 , 2475,13 , 2, 0, 1, 6, 7 }, // German/Latin/Liechtenstein + { 42, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 272,9 , 272,9 , 175,8 , 544,18 , 37,5 , 8,10 , 7287,48 , 7335,83 , 134,24 , 7418,59 , 7335,83 , 134,24 , 3541,21 , 3562,60 , 3622,14 , 3636,28 , 3562,60 , 3622,14 , 95,5 , 93,6 , {69,85,82}, 14,1 , 8402,19 , 13,5 , 4,0 , 2416,7 , 2488,9 , 2, 1, 1, 6, 7 }, // German/Latin/Luxembourg + { 42, 7, 206, 46, 39, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 272,9 , 272,9 , 175,8 , 544,18 , 37,5 , 8,10 , 7287,48 , 7335,83 , 134,24 , 7418,59 , 7335,83 , 134,24 , 3541,21 , 3562,60 , 3622,14 , 3636,28 , 3562,60 , 3622,14 , 95,5 , 93,6 , {67,72,70}, 231,3 , 8421,58 , 8,5 , 36,5 , 2497,21 , 2518,7 , 2, 0, 1, 6, 7 }, // German/Latin/Switzerland + { 43, 16, 85, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 281,9 , 281,9 , 300,6 , 10,17 , 18,7 , 25,12 , 7667,50 , 7717,115 , 7832,24 , 7856,50 , 7906,115 , 7832,24 , 3664,28 , 3692,55 , 3747,14 , 3664,28 , 3692,55 , 3747,14 , 100,4 , 99,4 , {69,85,82}, 14,1 , 8479,19 , 13,5 , 4,0 , 2525,8 , 2533,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Greece + { 43, 16, 56, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 281,9 , 281,9 , 300,6 , 10,17 , 18,7 , 25,12 , 7667,50 , 7717,115 , 7832,24 , 7856,50 , 7906,115 , 7832,24 , 3664,28 , 3692,55 , 3747,14 , 3664,28 , 3692,55 , 3747,14 , 100,4 , 99,4 , {69,85,82}, 14,1 , 8479,19 , 13,5 , 4,0 , 2525,8 , 2539,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Cyprus + { 44, 7, 86, 44, 46, 59, 37, 48, 45, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 290,11 , 290,11 , 53,10 , 599,17 , 18,7 , 25,12 , 4928,48 , 8021,96 , 134,24 , 4928,48 , 8021,96 , 134,24 , 3761,28 , 3789,98 , 3887,14 , 3761,28 , 3789,98 , 3887,14 , 0,2 , 0,2 , {68,75,75}, 156,3 , 8498,62 , 4,4 , 36,5 , 2545,11 , 2556,16 , 2, 1, 1, 6, 7 }, // Greenlandic/Latin/Greenland + { 45, 7, 168, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {80,89,71}, 239,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 7, 6, 7 }, // Guarani/Latin/Paraguay + { 46, 17, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 301,9 , 301,9 , 300,6 , 210,18 , 270,8 , 278,13 , 8117,67 , 8184,87 , 8271,31 , 8117,67 , 8184,87 , 8271,31 , 3901,32 , 3933,53 , 3986,19 , 3901,32 , 3933,53 , 3986,19 , 0,2 , 0,2 , {73,78,82}, 127,1 , 8560,46 , 4,4 , 4,0 , 2572,7 , 2579,4 , 2, 1, 7, 7, 7 }, // Gujarati/Gujarati/India + { 47, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 300,6 , 210,18 , 18,7 , 25,12 , 8302,48 , 8350,85 , 8435,24 , 8302,48 , 8350,85 , 8435,24 , 4005,21 , 4026,52 , 4078,14 , 4005,21 , 4026,52 , 4078,14 , 0,2 , 0,2 , {78,71,78}, 186,1 , 8606,12 , 8,5 , 4,0 , 2583,5 , 2588,8 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Nigeria + { 47, 1, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {78,71,78}, 186,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Hausa/Arabic/Nigeria + { 47, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 300,6 , 210,18 , 18,7 , 25,12 , 8302,48 , 8350,85 , 8435,24 , 8302,48 , 8350,85 , 8435,24 , 4005,21 , 4026,52 , 4078,14 , 4005,21 , 4026,52 , 4078,14 , 0,2 , 0,2 , {71,72,83}, 175,3 , 0,7 , 8,5 , 4,0 , 2583,5 , 2596,4 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Ghana + { 47, 7, 156, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 300,6 , 210,18 , 37,5 , 8,10 , 8302,48 , 8350,85 , 8435,24 , 8302,48 , 8350,85 , 8435,24 , 4005,21 , 4026,52 , 4078,14 , 4005,21 , 4026,52 , 4078,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 8618,36 , 8,5 , 4,0 , 2583,5 , 2600,5 , 0, 0, 1, 6, 7 }, // Hausa/Latin/Niger + { 48, 18, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 310,6 , 310,6 , 562,8 , 635,18 , 55,4 , 59,9 , 8459,58 , 8517,72 , 158,27 , 8459,58 , 8517,72 , 158,27 , 4092,46 , 4138,65 , 4203,21 , 4092,46 , 4138,65 , 4203,21 , 104,6 , 103,5 , {73,76,83}, 54,1 , 8654,54 , 13,5 , 4,0 , 2605,5 , 2610,5 , 2, 1, 7, 5, 6 }, // Hebrew/Hebrew/Israel + { 49, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 316,9 , 325,8 , 300,6 , 10,17 , 18,7 , 25,12 , 8589,59 , 8648,73 , 8721,30 , 8589,59 , 8648,73 , 8721,30 , 4224,32 , 4256,53 , 4309,19 , 4224,32 , 4256,53 , 4309,19 , 110,9 , 108,7 , {73,78,82}, 127,1 , 8708,42 , 4,4 , 4,0 , 2615,6 , 2621,4 , 2, 1, 7, 7, 7 }, // Hindi/Devanagari/India + { 50, 7, 98, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 187, 171, 0,6 , 0,6 , 333,8 , 333,8 , 653,13 , 666,19 , 55,4 , 59,9 , 8751,64 , 8815,98 , 8913,25 , 8751,64 , 8815,98 , 8913,25 , 4328,19 , 4347,52 , 4399,17 , 4328,19 , 4347,52 , 4399,17 , 119,3 , 115,3 , {72,85,70}, 240,2 , 8750,46 , 13,5 , 4,0 , 2625,6 , 2631,12 , 2, 0, 1, 6, 7 }, // Hungarian/Latin/Hungary + { 51, 7, 99, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 204,8 , 204,8 , 562,8 , 544,18 , 37,5 , 8,10 , 8938,59 , 8997,82 , 9079,24 , 8938,59 , 8997,82 , 9079,24 , 4416,35 , 4451,81 , 4532,14 , 4416,35 , 4451,81 , 4532,14 , 122,4 , 118,4 , {73,83,75}, 242,3 , 8796,49 , 13,5 , 4,0 , 2643,8 , 2651,6 , 0, 0, 1, 6, 7 }, // Icelandic/Latin/Iceland + { 52, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 341,10 , 351,9 , 27,8 , 80,18 , 159,5 , 164,10 , 9103,48 , 9151,87 , 134,24 , 9103,48 , 9151,87 , 134,24 , 4546,28 , 4574,43 , 4617,14 , 4546,28 , 4574,43 , 4617,14 , 0,2 , 0,2 , {73,68,82}, 245,2 , 8845,39 , 4,4 , 4,0 , 2657,9 , 2657,9 , 0, 0, 7, 6, 7 }, // Indonesian/Latin/Indonesia + { 53, 7, 74, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Interlingua/Latin/France + { 55, 44, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {67,65,68}, 247,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/CanadianAboriginal/Canada + { 55, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {67,65,68}, 247,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Latin/Canada + { 57, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 360,11 , 247,10 , 120,10 , 98,16 , 37,5 , 8,10 , 9238,62 , 9300,107 , 9407,24 , 9238,62 , 9300,107 , 9407,24 , 4631,37 , 4668,75 , 4743,14 , 4631,37 , 4668,75 , 4743,14 , 85,4 , 83,4 , {69,85,82}, 14,1 , 8884,31 , 4,4 , 4,0 , 2666,7 , 2673,4 , 2, 1, 7, 6, 7 }, // Irish/Latin/Ireland + { 58, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 98,16 , 37,5 , 8,10 , 9431,48 , 9479,94 , 9573,24 , 9431,48 , 9597,94 , 9573,24 , 4757,28 , 4785,57 , 4842,14 , 4757,28 , 4856,57 , 4842,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 8915,19 , 13,5 , 4,0 , 2677,8 , 2685,6 , 2, 1, 1, 6, 7 }, // Italian/Latin/Italy + { 58, 7, 184, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 98,16 , 37,5 , 8,10 , 9431,48 , 9479,94 , 9573,24 , 9431,48 , 9597,94 , 9573,24 , 4757,28 , 4785,57 , 4842,14 , 4757,28 , 4856,57 , 4842,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 8915,19 , 13,5 , 4,0 , 2677,8 , 2691,10 , 2, 1, 1, 6, 7 }, // Italian/Latin/SanMarino + { 58, 7, 206, 46, 39, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 257,7 , 257,7 , 175,8 , 10,17 , 37,5 , 8,10 , 9431,48 , 9597,94 , 9573,24 , 9431,48 , 9597,94 , 9573,24 , 4757,28 , 4785,57 , 4842,14 , 4757,28 , 4856,57 , 4842,14 , 0,2 , 0,2 , {67,72,70}, 231,3 , 8934,53 , 8,5 , 36,5 , 2677,8 , 2701,8 , 2, 0, 1, 6, 7 }, // Italian/Latin/Switzerland + { 59, 19, 108, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 182,5 , 182,5 , 182,5 , 182,5 , 264,10 , 426,13 , 55,4 , 291,10 , 4357,39 , 4357,39 , 158,27 , 4357,39 , 4357,39 , 158,27 , 4913,14 , 4927,28 , 4913,14 , 4913,14 , 4927,28 , 4913,14 , 126,2 , 122,2 , {74,80,89}, 141,1 , 8987,11 , 4,4 , 4,0 , 2709,3 , 2712,2 , 0, 0, 7, 6, 7 }, // Japanese/Japanese/Japan + { 60, 7, 101, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {73,68,82}, 245,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 7, 6, 7 }, // Javanese/Latin/Indonesia + { 61, 21, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 371,12 , 383,11 , 300,6 , 35,18 , 270,8 , 278,13 , 9691,63 , 9754,87 , 9841,31 , 9691,63 , 9754,87 , 9841,31 , 4955,33 , 4988,54 , 5042,20 , 4955,33 , 4988,54 , 5042,20 , 128,9 , 124,7 , {73,78,82}, 127,1 , 8998,49 , 4,4 , 4,0 , 2714,5 , 2719,4 , 2, 1, 7, 7, 7 }, // Kannada/Kannada/India + { 62, 1, 100, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 538,6 , 35,18 , 18,7 , 25,12 , 9872,72 , 9872,72 , 9944,24 , 9872,72 , 9872,72 , 9944,24 , 5062,54 , 5116,56 , 5172,14 , 5062,54 , 5116,56 , 5172,14 , 0,2 , 0,2 , {73,78,82}, 127,1 , 9047,23 , 8,5 , 4,0 , 2723,5 , 2728,10 , 2, 1, 7, 7, 7 }, // Kashmiri/Arabic/India + { 63, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 394,10 , 175,8 , 685,22 , 37,5 , 8,10 , 9968,60 , 10028,83 , 10111,24 , 10135,60 , 10195,83 , 10111,24 , 5186,21 , 5207,56 , 5263,14 , 5186,21 , 5277,56 , 5263,14 , 137,5 , 131,11 , {75,90,84}, 250,1 , 9070,58 , 13,5 , 4,0 , 2738,10 , 2748,9 , 2, 1, 1, 6, 7 }, // Kazakh/Cyrillic/Kazakhstan + { 64, 7, 179, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 707,8 , 715,18 , 37,5 , 8,10 , 10278,60 , 10338,101 , 158,27 , 10278,60 , 10338,101 , 158,27 , 5333,35 , 5368,84 , 85,14 , 5333,35 , 5368,84 , 85,14 , 0,2 , 0,2 , {82,87,70}, 188,2 , 0,7 , 55,6 , 4,0 , 2757,11 , 1458,6 , 0, 0, 1, 6, 7 }, // Kinyarwanda/Latin/Rwanda + { 65, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 404,10 , 404,10 , 175,8 , 733,23 , 37,5 , 8,10 , 10439,48 , 10487,80 , 10567,24 , 10591,59 , 10650,80 , 10567,24 , 5452,38 , 5490,57 , 5547,14 , 5452,38 , 5490,57 , 5547,14 , 142,5 , 142,14 , {75,71,83}, 251,3 , 9128,52 , 13,5 , 4,0 , 2768,8 , 2776,10 , 2, 1, 1, 6, 7 }, // Kirghiz/Cyrillic/Kyrgyzstan + { 66, 22, 114, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 414,7 , 414,7 , 756,9 , 765,16 , 301,7 , 308,13 , 10730,39 , 10730,39 , 10730,39 , 10730,39 , 10730,39 , 10730,39 , 5561,14 , 5575,28 , 5561,14 , 5561,14 , 5575,28 , 5561,14 , 147,2 , 156,2 , {75,82,87}, 254,1 , 9180,19 , 4,4 , 4,0 , 2786,3 , 2789,4 , 0, 0, 7, 6, 7 }, // Korean/Korean/SouthKorea + { 66, 22, 113, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 414,7 , 414,7 , 756,9 , 765,16 , 301,7 , 308,13 , 10730,39 , 10730,39 , 10730,39 , 10730,39 , 10730,39 , 10730,39 , 5561,14 , 5575,28 , 5561,14 , 5561,14 , 5575,28 , 5561,14 , 147,2 , 156,2 , {75,80,87}, 255,3 , 9199,39 , 4,4 , 4,0 , 2786,3 , 2793,11 , 0, 0, 1, 6, 7 }, // Korean/Korean/NorthKorea + { 67, 7, 217, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {84,82,89}, 258,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Kurdish/Latin/Turkey + { 68, 7, 35, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 10769,60 , 10829,106 , 158,27 , 10769,60 , 10829,106 , 158,27 , 5603,34 , 5637,89 , 85,14 , 5603,34 , 5637,89 , 85,14 , 149,5 , 158,5 , {66,73,70}, 171,3 , 9238,27 , 0,4 , 4,0 , 2804,8 , 2812,8 , 0, 0, 1, 6, 7 }, // Rundi/Latin/Burundi + { 69, 23, 117, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 421,9 , 439,8 , 781,19 , 55,4 , 321,24 , 10935,61 , 10996,75 , 158,27 , 10935,61 , 10996,75 , 158,27 , 5726,36 , 5762,57 , 5819,16 , 5762,57 , 5762,57 , 5835,14 , 154,8 , 163,8 , {76,65,75}, 259,1 , 9265,21 , 4,4 , 36,5 , 2820,3 , 2820,3 , 0, 0, 7, 6, 7 }, // Lao/Lao/Laos + { 71, 7, 118, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 430,8 , 430,8 , 175,8 , 800,26 , 37,5 , 8,10 , 11071,65 , 11136,101 , 134,24 , 11237,65 , 11302,101 , 134,24 , 5849,21 , 5870,72 , 5942,14 , 5849,21 , 5956,72 , 5942,14 , 162,14 , 171,11 , {69,85,82}, 14,1 , 9286,23 , 13,5 , 4,0 , 2823,8 , 2831,7 , 2, 1, 1, 6, 7 }, // Latvian/Latin/Latvia + { 72, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 438,9 , 438,9 , 439,8 , 98,16 , 37,5 , 8,10 , 11403,48 , 11451,203 , 11654,24 , 11403,48 , 11451,203 , 11654,24 , 6028,28 , 6056,100 , 6156,14 , 6028,28 , 6056,100 , 6156,14 , 176,8 , 182,6 , {67,68,70}, 217,2 , 9309,23 , 13,5 , 4,0 , 2838,7 , 2845,29 , 2, 1, 1, 6, 7 }, // Lingala/Latin/CongoKinshasa + { 72, 7, 6, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 438,9 , 438,9 , 439,8 , 98,16 , 37,5 , 8,10 , 11403,48 , 11451,203 , 11654,24 , 11403,48 , 11451,203 , 11654,24 , 6028,28 , 6056,100 , 6156,14 , 6028,28 , 6056,100 , 6156,14 , 176,8 , 182,6 , {65,79,65}, 260,2 , 9332,23 , 13,5 , 4,0 , 2838,7 , 2874,6 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Angola + { 72, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 438,9 , 438,9 , 439,8 , 98,16 , 37,5 , 8,10 , 11403,48 , 11451,203 , 11654,24 , 11403,48 , 11451,203 , 11654,24 , 6028,28 , 6056,100 , 6156,14 , 6028,28 , 6056,100 , 6156,14 , 176,8 , 182,6 , {88,65,70}, 32,4 , 9355,23 , 13,5 , 4,0 , 2838,7 , 2880,26 , 0, 0, 1, 6, 7 }, // Lingala/Latin/CentralAfricanRepublic + { 72, 7, 50, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 438,9 , 438,9 , 439,8 , 98,16 , 37,5 , 8,10 , 11403,48 , 11451,203 , 11654,24 , 11403,48 , 11451,203 , 11654,24 , 6028,28 , 6056,100 , 6156,14 , 6028,28 , 6056,100 , 6156,14 , 176,8 , 182,6 , {88,65,70}, 32,4 , 9355,23 , 13,5 , 4,0 , 2838,7 , 2906,5 , 0, 0, 1, 6, 7 }, // Lingala/Latin/CongoBrazzaville + { 73, 7, 124, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 447,8 , 447,8 , 53,10 , 826,27 , 37,5 , 8,10 , 11678,70 , 11748,96 , 11844,24 , 11678,70 , 11868,98 , 11844,24 , 6170,21 , 6191,89 , 6280,14 , 6170,21 , 6191,89 , 6280,14 , 184,9 , 188,6 , {69,85,82}, 14,1 , 9378,30 , 13,5 , 4,0 , 2911,8 , 2919,7 , 2, 1, 1, 6, 7 }, // Lithuanian/Latin/Lithuania + { 74, 2, 127, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 117,7 , 0,6 , 853,7 , 80,18 , 37,5 , 8,10 , 11966,61 , 12027,85 , 12112,24 , 11966,61 , 12027,85 , 12112,24 , 6294,34 , 6328,54 , 1658,14 , 6294,34 , 6328,54 , 1658,14 , 193,10 , 194,8 , {77,75,68}, 262,3 , 9408,56 , 8,5 , 4,0 , 2926,10 , 2936,10 , 2, 1, 1, 6, 7 }, // Macedonian/Cyrillic/Macedonia + { 75, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 12136,48 , 12184,92 , 134,24 , 12136,48 , 12184,92 , 134,24 , 6382,34 , 6416,60 , 6476,14 , 6382,34 , 6416,60 , 6476,14 , 0,2 , 0,2 , {77,71,65}, 178,2 , 9464,13 , 4,4 , 4,0 , 2946,8 , 2954,12 , 0, 0, 1, 6, 7 }, // Malagasy/Latin/Madagascar + { 76, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,9 , 351,9 , 531,7 , 10,17 , 18,7 , 25,12 , 12276,48 , 12324,82 , 12406,24 , 12276,48 , 12324,82 , 12406,24 , 6490,28 , 6518,43 , 6561,14 , 6490,28 , 6518,43 , 6561,14 , 203,2 , 202,3 , {77,89,82}, 182,2 , 9477,39 , 4,4 , 4,0 , 2966,13 , 1250,8 , 2, 1, 1, 6, 7 }, // Malay/Latin/Malaysia + { 76, 1, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {77,89,82}, 182,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Malay/Arabic/Malaysia + { 76, 7, 32, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,9 , 351,9 , 531,7 , 860,12 , 18,7 , 25,12 , 12276,48 , 12324,82 , 12406,24 , 12276,48 , 12324,82 , 12406,24 , 6490,28 , 6518,43 , 6561,14 , 6490,28 , 6518,43 , 6561,14 , 203,2 , 202,3 , {66,78,68}, 6,1 , 9516,31 , 8,5 , 4,0 , 2966,13 , 2979,6 , 2, 1, 1, 6, 7 }, // Malay/Latin/Brunei + { 76, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,9 , 351,9 , 531,7 , 10,17 , 18,7 , 25,12 , 12276,48 , 12324,82 , 12406,24 , 12276,48 , 12324,82 , 12406,24 , 6490,28 , 6518,43 , 6561,14 , 6490,28 , 6518,43 , 6561,14 , 203,2 , 202,3 , {83,71,68}, 6,1 , 9547,37 , 4,4 , 4,0 , 2966,13 , 2985,9 , 2, 1, 7, 6, 7 }, // Malay/Latin/Singapore + { 77, 24, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 455,13 , 468,12 , 300,6 , 872,18 , 18,7 , 25,12 , 12430,62 , 12492,88 , 12580,31 , 12430,62 , 12492,88 , 12611,29 , 6575,41 , 6616,77 , 6693,22 , 6575,41 , 6715,76 , 6791,21 , 0,2 , 0,2 , {73,78,82}, 127,1 , 9584,40 , 4,4 , 4,0 , 2994,6 , 3000,6 , 2, 1, 7, 7, 7 }, // Malayalam/Malayalam/India + { 78, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 480,8 , 488,7 , 120,10 , 890,23 , 37,5 , 8,10 , 12640,48 , 12688,86 , 12774,36 , 12640,48 , 12688,86 , 12810,24 , 6812,28 , 6840,63 , 6903,21 , 6812,28 , 6840,63 , 6924,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 9624,27 , 4,4 , 4,0 , 3006,5 , 1258,5 , 2, 1, 7, 6, 7 }, // Maltese/Latin/Malta + { 79, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {78,90,68}, 265,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Maori/Latin/NewZealand + { 80, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 495,9 , 495,9 , 300,6 , 210,18 , 18,7 , 25,12 , 12834,66 , 12900,86 , 12986,32 , 12834,66 , 12900,86 , 12986,32 , 6938,32 , 6970,53 , 4309,19 , 6938,32 , 6970,53 , 4309,19 , 205,5 , 205,4 , {73,78,82}, 127,1 , 9651,43 , 4,4 , 4,0 , 3011,5 , 2621,4 , 2, 1, 7, 7, 7 }, // Marathi/Devanagari/India + { 82, 2, 143, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 913,29 , 37,5 , 8,10 , 13018,99 , 13117,189 , 158,27 , 13018,99 , 13117,189 , 158,27 , 7023,21 , 7044,43 , 5835,14 , 7023,21 , 7044,43 , 5835,14 , 210,2 , 209,2 , {77,78,84}, 268,1 , 9694,25 , 8,5 , 4,0 , 3016,6 , 3022,6 , 0, 0, 1, 6, 7 }, // Mongolian/Cyrillic/Mongolia + { 82, 8, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {67,78,89}, 269,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Mongolian/Mongolian/China + { 84, 13, 150, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 504,7 , 0,6 , 504,7 , 504,7 , 53,10 , 63,17 , 37,5 , 8,10 , 13306,85 , 13306,85 , 13391,27 , 13306,85 , 13418,85 , 13391,27 , 7087,33 , 7120,54 , 7174,18 , 7087,33 , 7120,54 , 7174,18 , 110,9 , 108,7 , {78,80,82}, 272,4 , 9719,49 , 8,5 , 4,0 , 3028,6 , 3034,5 , 2, 1, 7, 6, 7 }, // Nepali/Devanagari/Nepal + { 84, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 504,7 , 0,6 , 504,7 , 504,7 , 53,10 , 63,17 , 18,7 , 25,12 , 13306,85 , 13306,85 , 13391,27 , 13306,85 , 13418,85 , 13391,27 , 7087,33 , 7120,54 , 7174,18 , 7087,33 , 7120,54 , 7174,18 , 110,9 , 108,7 , {73,78,82}, 127,1 , 9768,49 , 8,5 , 4,0 , 3028,6 , 2621,4 , 2, 1, 7, 7, 7 }, // Nepali/Devanagari/India + { 85, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 204,8 , 204,8 , 942,10 , 491,17 , 159,5 , 164,10 , 5499,48 , 13503,83 , 134,24 , 5630,59 , 13503,83 , 134,24 , 2381,35 , 2316,51 , 2367,14 , 2381,35 , 2316,51 , 2367,14 , 85,4 , 83,4 , {78,79,75}, 198,2 , 9817,44 , 8,5 , 4,0 , 3039,12 , 3051,5 , 2, 1, 1, 6, 7 }, // NorwegianBokmal/Latin/Norway + { 85, 7, 203, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 204,8 , 204,8 , 942,10 , 491,17 , 159,5 , 164,10 , 5499,48 , 13503,83 , 134,24 , 5630,59 , 13503,83 , 134,24 , 2381,35 , 2316,51 , 2367,14 , 2381,35 , 2316,51 , 2367,14 , 85,4 , 83,4 , {78,79,75}, 198,2 , 9817,44 , 8,5 , 4,0 , 3039,12 , 3056,21 , 2, 1, 1, 6, 7 }, // NorwegianBokmal/Latin/SvalbardAndJanMayenIslands + { 86, 7, 74, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Occitan/Latin/France + { 87, 26, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 952,6 , 10,17 , 18,7 , 25,12 , 13586,86 , 13586,86 , 13672,32 , 13586,86 , 13586,86 , 13672,32 , 7192,33 , 7225,54 , 7279,18 , 7192,33 , 7225,54 , 7279,18 , 89,2 , 87,2 , {73,78,82}, 127,1 , 9861,11 , 8,5 , 4,0 , 3077,5 , 3082,4 , 2, 1, 7, 7, 7 }, // Oriya/Oriya/India + { 88, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 418,8 , 958,20 , 55,4 , 345,11 , 13704,68 , 13704,68 , 158,27 , 13704,68 , 13704,68 , 158,27 , 7297,49 , 7297,49 , 85,14 , 7297,49 , 7297,49 , 85,14 , 212,4 , 211,4 , {65,70,78}, 276,1 , 9872,13 , 13,5 , 4,0 , 3086,4 , 3090,9 , 0, 0, 6, 4, 5 }, // Pashto/Arabic/Afghanistan + { 89, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 511,7 , 511,7 , 518,8 , 526,7 , 418,8 , 98,16 , 55,4 , 345,11 , 13772,70 , 13772,70 , 13842,24 , 13866,74 , 13866,74 , 13842,24 , 7297,49 , 7297,49 , 7346,14 , 7297,49 , 7297,49 , 7346,14 , 216,9 , 215,8 , {73,82,82}, 277,4 , 9885,37 , 61,5 , 4,0 , 3099,5 , 3104,5 , 0, 0, 6, 5, 5 }, // Persian/Arabic/Iran + { 89, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 511,7 , 511,7 , 518,8 , 526,7 , 418,8 , 98,16 , 55,4 , 345,11 , 13772,70 , 13772,70 , 13940,24 , 13964,62 , 14026,68 , 13842,24 , 7297,49 , 7297,49 , 7346,14 , 7297,49 , 7297,49 , 7346,14 , 216,9 , 215,8 , {65,70,78}, 276,1 , 9922,55 , 61,5 , 4,0 , 3109,3 , 3090,9 , 0, 0, 6, 4, 5 }, // Persian/Arabic/Afghanistan + { 90, 7, 172, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 175,7 , 175,7 , 942,10 , 10,17 , 37,5 , 8,10 , 14094,48 , 14142,97 , 14239,24 , 14094,48 , 14263,99 , 14239,24 , 7360,34 , 7394,59 , 7453,14 , 7360,34 , 7394,59 , 7453,14 , 0,2 , 0,2 , {80,76,78}, 281,2 , 9977,77 , 13,5 , 4,0 , 3112,6 , 3118,6 , 2, 1, 1, 6, 7 }, // Polish/Latin/Poland + { 91, 7, 30, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7467,28 , 7495,79 , 7574,14 , 7467,28 , 7495,79 , 7574,14 , 0,2 , 0,2 , {66,82,76}, 283,2 , 10054,54 , 4,4 , 4,0 , 3124,19 , 3143,6 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Brazil + { 91, 7, 6, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {65,79,65}, 260,2 , 10108,54 , 13,5 , 4,0 , 3149,9 , 3158,6 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Angola + { 91, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {67,86,69}, 285,1 , 10162,69 , 13,5 , 4,0 , 3149,9 , 3164,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/CapeVerde + { 91, 7, 62, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {85,83,68}, 167,3 , 10231,81 , 13,5 , 4,0 , 3149,9 , 3174,11 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/EastTimor + { 91, 7, 66, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {88,65,70}, 32,4 , 10312,59 , 13,5 , 4,0 , 3149,9 , 3185,16 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/EquatorialGuinea + { 91, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {88,79,70}, 212,3 , 10371,62 , 13,5 , 4,0 , 3149,9 , 3201,12 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/GuineaBissau + { 91, 7, 125, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {69,85,82}, 14,1 , 10433,20 , 13,5 , 4,0 , 3149,9 , 3213,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Luxembourg + { 91, 7, 126, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 18,7 , 25,12 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {77,79,80}, 145,4 , 10453,53 , 13,5 , 4,0 , 3149,9 , 3223,19 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Macau + { 91, 7, 146, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {77,90,78}, 286,3 , 10506,72 , 13,5 , 4,0 , 3149,9 , 3242,10 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Mozambique + { 91, 7, 173, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {69,85,82}, 14,1 , 10433,20 , 13,5 , 4,0 , 3252,17 , 3269,8 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Portugal + { 91, 7, 185, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {83,84,68}, 289,2 , 10578,92 , 13,5 , 4,0 , 3149,9 , 3277,19 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/SaoTomeAndPrincipe + { 91, 7, 206, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 978,27 , 37,5 , 8,10 , 14362,48 , 14410,89 , 134,24 , 14362,48 , 14410,89 , 134,24 , 7588,49 , 7495,79 , 7574,14 , 7588,49 , 7495,79 , 7574,14 , 225,8 , 223,8 , {67,72,70}, 231,3 , 10670,45 , 13,5 , 4,0 , 3149,9 , 3296,5 , 2, 0, 1, 6, 7 }, // Portuguese/Latin/Switzerland + { 92, 4, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 533,9 , 533,9 , 300,6 , 10,17 , 18,7 , 25,12 , 14499,50 , 14549,68 , 14617,28 , 14499,50 , 14549,68 , 14617,28 , 7637,36 , 7673,57 , 7730,23 , 7637,36 , 7673,57 , 7730,23 , 233,6 , 231,6 , {73,78,82}, 127,1 , 10715,39 , 4,4 , 4,0 , 3301,6 , 3307,4 , 2, 1, 7, 7, 7 }, // Punjabi/Gurmukhi/India + { 92, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 80,18 , 18,7 , 25,12 , 14645,67 , 14645,67 , 158,27 , 14645,67 , 14645,67 , 158,27 , 7753,37 , 7753,37 , 85,14 , 7753,37 , 7753,37 , 85,14 , 0,2 , 0,2 , {80,75,82}, 291,1 , 10754,13 , 55,6 , 4,0 , 3311,6 , 3317,6 , 0, 0, 7, 6, 7 }, // Punjabi/Arabic/Pakistan + { 93, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 210,18 , 37,5 , 8,10 , 14712,48 , 14760,128 , 158,27 , 14712,48 , 14760,128 , 158,27 , 7790,28 , 7818,53 , 7871,14 , 7790,28 , 7818,53 , 7871,14 , 85,4 , 83,4 , {80,69,78}, 292,3 , 0,7 , 8,5 , 4,0 , 3323,8 , 3331,4 , 2, 1, 7, 6, 7 }, // Quechua/Latin/Peru + { 93, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 210,18 , 37,5 , 8,10 , 14712,48 , 14760,128 , 158,27 , 14712,48 , 14760,128 , 158,27 , 7790,28 , 7818,53 , 7871,14 , 7790,28 , 7818,53 , 7871,14 , 85,4 , 83,4 , {66,79,66}, 295,2 , 0,7 , 8,5 , 4,0 , 3323,8 , 3335,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Bolivia + { 93, 7, 63, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 210,18 , 37,5 , 8,10 , 14712,48 , 14760,128 , 158,27 , 14712,48 , 14760,128 , 158,27 , 7790,28 , 7818,53 , 7871,14 , 7790,28 , 7818,53 , 7871,14 , 85,4 , 83,4 , {85,83,68}, 6,1 , 0,7 , 8,5 , 4,0 , 3323,8 , 3342,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Ecuador + { 94, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 370,8 , 1005,28 , 37,5 , 8,10 , 14888,67 , 14955,92 , 15047,24 , 14888,67 , 14955,92 , 15047,24 , 7885,23 , 7908,56 , 7964,14 , 7885,23 , 7908,56 , 7964,14 , 89,2 , 237,2 , {67,72,70}, 231,3 , 10767,46 , 13,5 , 4,0 , 3349,9 , 3358,6 , 2, 0, 1, 6, 7 }, // Romansh/Latin/Switzerland + { 95, 7, 177, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 542,8 , 542,8 , 942,10 , 10,17 , 37,5 , 8,10 , 15071,60 , 15131,98 , 15229,24 , 15071,60 , 15131,98 , 15229,24 , 7978,34 , 8012,48 , 3068,14 , 7978,34 , 8012,48 , 3068,14 , 85,4 , 83,4 , {82,79,78}, 297,3 , 10813,57 , 13,5 , 4,0 , 3364,6 , 3370,7 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Romania + { 95, 7, 141, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 542,8 , 542,8 , 942,10 , 10,17 , 37,5 , 8,10 , 15071,60 , 15131,98 , 15229,24 , 15071,60 , 15131,98 , 15229,24 , 8060,28 , 8012,48 , 8088,16 , 8060,28 , 8012,48 , 8088,16 , 85,4 , 83,4 , {77,68,76}, 300,1 , 10870,69 , 13,5 , 4,0 , 3377,13 , 3390,17 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Moldova + { 96, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 117,7 , 117,7 , 175,8 , 348,22 , 55,4 , 59,9 , 15253,62 , 10650,80 , 10567,24 , 15315,62 , 15377,82 , 10567,24 , 8104,21 , 8125,62 , 8187,14 , 8104,21 , 8125,62 , 8104,21 , 239,2 , 239,2 , {82,85,66}, 129,1 , 10939,89 , 13,5 , 4,0 , 3407,7 , 3414,6 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Russia + { 96, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 117,7 , 117,7 , 175,8 , 348,22 , 55,4 , 59,9 , 15253,62 , 10650,80 , 10567,24 , 15315,62 , 15377,82 , 10567,24 , 8104,21 , 8125,62 , 8187,14 , 8104,21 , 8125,62 , 8104,21 , 239,2 , 239,2 , {66,89,82}, 138,2 , 11028,94 , 13,5 , 4,0 , 3407,7 , 485,8 , 0, 0, 1, 6, 7 }, // Russian/Cyrillic/Belarus + { 96, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 117,7 , 117,7 , 175,8 , 348,22 , 55,4 , 59,9 , 15253,62 , 10650,80 , 10567,24 , 15315,62 , 15377,82 , 10567,24 , 8104,21 , 8125,62 , 8187,14 , 8104,21 , 8125,62 , 8104,21 , 239,2 , 239,2 , {75,90,84}, 250,1 , 11122,83 , 13,5 , 4,0 , 3407,7 , 3420,9 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kazakhstan + { 96, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 117,7 , 117,7 , 175,8 , 348,22 , 55,4 , 59,9 , 15253,62 , 10650,80 , 10567,24 , 15315,62 , 15377,82 , 10567,24 , 8104,21 , 8125,62 , 8187,14 , 8104,21 , 8125,62 , 8104,21 , 239,2 , 239,2 , {75,71,83}, 251,3 , 11205,81 , 13,5 , 4,0 , 3407,7 , 3429,8 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kyrgyzstan + { 96, 2, 141, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 117,7 , 117,7 , 175,8 , 348,22 , 55,4 , 59,9 , 15253,62 , 10650,80 , 10567,24 , 15315,62 , 15377,82 , 10567,24 , 8104,21 , 8125,62 , 8187,14 , 8104,21 , 8125,62 , 8104,21 , 239,2 , 239,2 , {77,68,76}, 300,1 , 11286,79 , 13,5 , 4,0 , 3407,7 , 3437,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Moldova + { 96, 2, 222, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 117,7 , 117,7 , 175,8 , 348,22 , 37,5 , 8,10 , 15253,62 , 10650,80 , 10567,24 , 15315,62 , 15377,82 , 10567,24 , 8104,21 , 8125,62 , 8187,14 , 8104,21 , 8125,62 , 8104,21 , 239,2 , 239,2 , {85,65,72}, 301,1 , 11365,92 , 13,5 , 4,0 , 3407,7 , 3444,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Ukraine + { 98, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 15459,48 , 15507,91 , 15598,24 , 15459,48 , 15507,91 , 15598,24 , 8201,28 , 8229,66 , 8295,14 , 8201,28 , 8229,66 , 8295,14 , 241,2 , 241,2 , {88,65,70}, 32,4 , 11457,25 , 4,4 , 36,5 , 3451,5 , 3456,22 , 0, 0, 1, 6, 7 }, // Sango/Latin/CentralAfricanRepublic + { 99, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {73,78,82}, 127,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Sanskrit/Devanagari/India + { 100, 2, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 117,7 , 117,7 , 1033,7 , 1040,20 , 159,5 , 164,10 , 15622,48 , 15670,81 , 12112,24 , 15622,48 , 15670,81 , 12112,24 , 8309,28 , 8337,52 , 8389,14 , 8309,28 , 8337,52 , 8389,14 , 243,9 , 243,8 , {82,83,68}, 302,3 , 11482,58 , 13,5 , 4,0 , 3478,6 , 3484,6 , 0, 0, 1, 6, 7 }, // Serbian/Cyrillic/Serbia + { 100, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 175,7 , 175,7 , 1033,7 , 1040,20 , 37,5 , 8,10 , 15751,48 , 15799,81 , 15880,24 , 15751,48 , 15799,81 , 15880,24 , 8403,28 , 8431,54 , 2176,14 , 8403,28 , 8431,54 , 2176,14 , 252,9 , 251,8 , {66,65,77}, 152,2 , 11540,174 , 13,5 , 4,0 , 3490,6 , 614,19 , 2, 1, 1, 6, 7 }, // Serbian/Latin/BosniaAndHerzegowina + { 100, 7, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 175,7 , 175,7 , 1033,7 , 1040,20 , 159,5 , 164,10 , 15751,48 , 15799,81 , 15880,24 , 15751,48 , 15799,81 , 15880,24 , 8403,28 , 8431,54 , 2176,14 , 8403,28 , 8431,54 , 2176,14 , 252,9 , 251,8 , {69,85,82}, 14,1 , 11714,23 , 13,5 , 4,0 , 3490,6 , 3496,9 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Montenegro + { 100, 7, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 175,7 , 175,7 , 1033,7 , 1040,20 , 159,5 , 164,10 , 15751,48 , 15799,81 , 15880,24 , 15751,48 , 15799,81 , 15880,24 , 8403,28 , 8431,54 , 2176,14 , 8403,28 , 8431,54 , 2176,14 , 252,9 , 251,8 , {82,83,68}, 302,3 , 11737,58 , 13,5 , 4,0 , 3490,6 , 3505,6 , 0, 0, 1, 6, 7 }, // Serbian/Latin/Serbia + { 100, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 117,7 , 117,7 , 1033,7 , 1040,20 , 37,5 , 8,10 , 15622,48 , 15670,81 , 12112,24 , 15622,48 , 15670,81 , 12112,24 , 8309,28 , 8337,52 , 8389,14 , 8309,28 , 8337,52 , 8389,14 , 243,9 , 243,8 , {66,65,77}, 305,2 , 11795,174 , 13,5 , 4,0 , 3478,6 , 3511,19 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/BosniaAndHerzegowina + { 100, 2, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 117,7 , 117,7 , 1033,7 , 1040,20 , 159,5 , 164,10 , 15622,48 , 15670,81 , 12112,24 , 15622,48 , 15670,81 , 12112,24 , 8309,28 , 8337,52 , 8389,14 , 8309,28 , 8337,52 , 8389,14 , 243,9 , 243,8 , {69,85,82}, 14,1 , 11969,23 , 13,5 , 4,0 , 3478,6 , 3530,9 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Montenegro + { 100, 2, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 117,7 , 117,7 , 1033,7 , 1040,20 , 159,5 , 164,10 , 15622,48 , 15670,81 , 12112,24 , 15622,48 , 15670,81 , 12112,24 , 8309,28 , 8337,52 , 8389,14 , 8309,28 , 8337,52 , 8389,14 , 243,9 , 243,8 , {69,85,82}, 14,1 , 11969,23 , 13,5 , 4,0 , 3478,6 , 3539,6 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Kosovo + { 100, 7, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 175,7 , 175,7 , 1033,7 , 1040,20 , 159,5 , 164,10 , 15751,48 , 15799,81 , 15880,24 , 15751,48 , 15799,81 , 15880,24 , 8403,28 , 8431,54 , 2176,14 , 8403,28 , 8431,54 , 2176,14 , 252,9 , 251,8 , {69,85,82}, 14,1 , 11714,23 , 13,5 , 4,0 , 3490,6 , 3545,6 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Kosovo + { 101, 2, 81, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 550,9 , 550,9 , 175,8 , 1060,23 , 37,5 , 8,10 , 15904,63 , 15967,82 , 10567,24 , 16049,60 , 16109,86 , 10567,24 , 8485,28 , 8513,61 , 8574,14 , 8588,28 , 8616,61 , 8574,14 , 261,15 , 259,15 , {71,69,76}, 238,1 , 11992,17 , 8,5 , 4,0 , 3551,4 , 3555,11 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Georgia + { 101, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 550,9 , 550,9 , 175,8 , 1060,23 , 37,5 , 8,10 , 15904,63 , 15967,82 , 10567,24 , 16049,60 , 16109,86 , 10567,24 , 8485,28 , 8513,61 , 8574,14 , 8588,28 , 8616,61 , 8574,14 , 261,15 , 259,15 , {82,85,66}, 129,1 , 12009,17 , 8,5 , 4,0 , 3551,4 , 3566,6 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Russia + { 102, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Southern Sotho/Latin/SouthAfrica + { 103, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Tswana/Latin/SouthAfrica + { 104, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 18,7 , 25,12 , 16195,47 , 16242,100 , 16342,24 , 16195,47 , 16242,100 , 16342,24 , 8677,32 , 8709,55 , 8764,14 , 8677,32 , 8709,55 , 8764,14 , 0,2 , 0,2 , {85,83,68}, 167,3 , 12026,22 , 4,4 , 4,0 , 3572,8 , 1801,8 , 2, 1, 7, 6, 7 }, // Shona/Latin/Zimbabwe + { 105, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {80,75,82}, 184,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 7, 6, 7 }, // Sindhi/Arabic/Pakistan + { 106, 32, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 559,9 , 568,8 , 53,10 , 63,17 , 159,5 , 164,10 , 16366,59 , 16425,96 , 16521,32 , 16553,61 , 16425,96 , 16521,32 , 8778,39 , 8817,62 , 8879,19 , 8778,39 , 8817,62 , 8879,19 , 276,5 , 274,4 , {76,75,82}, 307,3 , 12048,58 , 4,4 , 4,0 , 3580,5 , 3585,11 , 2, 1, 1, 6, 7 }, // Sinhala/Sinhala/SriLanka + { 107, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Swati/Latin/SouthAfrica + { 108, 7, 191, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 197,7 , 576,7 , 114,6 , 544,18 , 55,4 , 59,9 , 16614,48 , 16662,82 , 15880,24 , 16614,48 , 16744,89 , 15880,24 , 8898,21 , 8919,52 , 8971,14 , 8898,21 , 8919,52 , 8971,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 12106,26 , 13,5 , 4,0 , 3596,10 , 3606,9 , 2, 1, 1, 6, 7 }, // Slovak/Latin/Slovakia + { 109, 7, 192, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 583,8 , 583,8 , 1083,9 , 1092,19 , 37,5 , 8,10 , 15751,48 , 16833,86 , 15880,24 , 16919,59 , 16833,86 , 15880,24 , 8985,28 , 9013,52 , 9065,14 , 9079,35 , 9013,52 , 9065,14 , 81,4 , 278,4 , {69,85,82}, 14,1 , 12132,28 , 13,5 , 4,0 , 3615,11 , 3626,9 , 2, 1, 1, 6, 7 }, // Slovenian/Latin/Slovenia + { 110, 7, 194, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1111,19 , 18,7 , 25,12 , 16978,48 , 17026,189 , 17215,24 , 16978,48 , 17026,189 , 17215,24 , 9114,28 , 9142,47 , 9189,14 , 9114,28 , 9142,47 , 9189,14 , 281,3 , 282,3 , {83,79,83}, 100,1 , 12160,22 , 4,4 , 4,0 , 3635,8 , 3643,10 , 0, 0, 1, 6, 7 }, // Somali/Latin/Somalia + { 110, 7, 59, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1111,19 , 18,7 , 25,12 , 16978,48 , 17026,189 , 17215,24 , 16978,48 , 17026,189 , 17215,24 , 9114,28 , 9142,47 , 9189,14 , 9114,28 , 9142,47 , 9189,14 , 281,3 , 282,3 , {68,74,70}, 43,3 , 12182,21 , 4,4 , 4,0 , 3635,8 , 3653,7 , 0, 0, 6, 6, 7 }, // Somali/Latin/Djibouti + { 110, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1111,19 , 18,7 , 25,12 , 16978,48 , 17026,189 , 17215,24 , 16978,48 , 17026,189 , 17215,24 , 9114,28 , 9142,47 , 9189,14 , 9114,28 , 9142,47 , 9189,14 , 281,3 , 282,3 , {69,84,66}, 0,2 , 12203,22 , 4,4 , 4,0 , 3635,8 , 3660,8 , 2, 1, 7, 6, 7 }, // Somali/Latin/Ethiopia + { 110, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1111,19 , 37,5 , 8,10 , 16978,48 , 17026,189 , 17215,24 , 16978,48 , 17026,189 , 17215,24 , 9114,28 , 9142,47 , 9189,14 , 9114,28 , 9142,47 , 9189,14 , 281,3 , 282,3 , {75,69,83}, 2,3 , 0,7 , 4,4 , 4,0 , 3635,8 , 3668,7 , 2, 1, 7, 6, 7 }, // Somali/Latin/Kenya + { 111, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 55,4 , 345,11 , 17239,61 , 17300,89 , 17389,24 , 17239,61 , 17300,89 , 17389,24 , 9203,35 , 9238,53 , 7871,14 , 9203,35 , 9238,53 , 7871,14 , 74,5 , 72,5 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 3675,17 , 2393,6 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Spain + { 111, 7, 10, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {65,82,83}, 6,1 , 12225,51 , 8,5 , 4,0 , 3692,7 , 3699,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Argentina + { 111, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {66,79,66}, 295,2 , 12276,35 , 4,4 , 4,0 , 3692,7 , 3335,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Bolivia + { 111, 7, 30, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {66,82,76}, 283,2 , 12311,52 , 4,4 , 4,0 , 3692,7 , 3143,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Brazil + { 111, 7, 43, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 370,8 , 978,27 , 37,5 , 8,10 , 17239,61 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {67,76,80}, 6,1 , 12363,45 , 4,4 , 36,5 , 3692,7 , 3708,5 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Chile + { 111, 7, 47, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 531,7 , 978,27 , 18,7 , 25,12 , 17239,61 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 9291,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {67,79,80}, 6,1 , 12408,54 , 8,5 , 4,0 , 3692,7 , 3713,8 , 0, 0, 7, 6, 7 }, // Spanish/Latin/Colombia + { 111, 7, 52, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {67,82,67}, 310,1 , 12462,67 , 4,4 , 4,0 , 3692,7 , 3721,10 , 0, 0, 1, 6, 7 }, // Spanish/Latin/CostaRica + { 111, 7, 55, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {67,85,80}, 6,1 , 12529,42 , 4,4 , 4,0 , 3692,7 , 3731,4 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Cuba + { 111, 7, 61, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 18,7 , 25,12 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {68,79,80}, 311,3 , 12571,54 , 4,4 , 66,6 , 3692,7 , 3735,20 , 2, 1, 7, 6, 7 }, // Spanish/Latin/DominicanRepublic + { 111, 7, 63, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {85,83,68}, 6,1 , 12625,70 , 4,4 , 36,5 , 3692,7 , 3342,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ecuador + { 111, 7, 65, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {85,83,68}, 6,1 , 12625,70 , 4,4 , 4,0 , 3692,7 , 3755,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/ElSalvador + { 111, 7, 66, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 55,4 , 345,11 , 17239,61 , 17300,89 , 17389,24 , 17239,61 , 17300,89 , 17389,24 , 9203,35 , 9238,53 , 7871,14 , 9203,35 , 9238,53 , 7871,14 , 74,5 , 72,5 , {88,65,70}, 32,4 , 12695,53 , 4,4 , 4,0 , 3692,7 , 3766,17 , 0, 0, 1, 6, 7 }, // Spanish/Latin/EquatorialGuinea + { 111, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 531,7 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {71,84,81}, 314,1 , 12748,30 , 18,5 , 4,0 , 3692,7 , 3783,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Guatemala + { 111, 7, 96, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 1130,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {72,78,76}, 300,1 , 12778,60 , 4,4 , 4,0 , 3692,7 , 3792,8 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Honduras + { 111, 7, 139, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 27,8 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17497,48 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 3068,14 , 85,4 , 83,4 , {77,88,78}, 6,1 , 12838,48 , 4,4 , 4,0 , 3800,17 , 3817,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Mexico + { 111, 7, 155, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {78,73,79}, 315,2 , 12886,69 , 4,4 , 4,0 , 3692,7 , 3823,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Nicaragua + { 111, 7, 166, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 1157,8 , 978,27 , 18,7 , 25,12 , 17413,60 , 17300,89 , 17389,24 , 17413,60 , 17300,89 , 17389,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {80,65,66}, 317,3 , 12955,54 , 4,4 , 4,0 , 3692,7 , 3832,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Panama + { 111, 7, 168, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17239,61 , 17300,89 , 17473,24 , 17239,61 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {80,89,71}, 320,3 , 13009,61 , 8,5 , 23,6 , 3692,7 , 3838,8 , 0, 0, 7, 6, 7 }, // Spanish/Latin/Paraguay + { 111, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 531,7 , 978,27 , 37,5 , 8,10 , 17545,60 , 17605,88 , 17473,24 , 17693,60 , 17753,88 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {80,69,78}, 292,3 , 13070,62 , 4,4 , 4,0 , 3692,7 , 3331,4 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Peru + { 111, 7, 170, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 18,7 , 25,12 , 17239,61 , 17300,89 , 17389,24 , 17239,61 , 17300,89 , 17389,24 , 9203,35 , 9238,53 , 7871,14 , 9203,35 , 9238,53 , 7871,14 , 74,5 , 72,5 , {80,72,80}, 187,1 , 13132,48 , 13,5 , 4,0 , 3692,7 , 3846,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Philippines + { 111, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 1157,8 , 978,27 , 18,7 , 25,12 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {85,83,68}, 6,1 , 12625,70 , 4,4 , 4,0 , 3692,7 , 1447,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/PuertoRico + { 111, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 18,7 , 25,12 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 12625,70 , 4,4 , 4,0 , 3692,7 , 3855,14 , 2, 1, 7, 6, 7 }, // Spanish/Latin/UnitedStates + { 111, 7, 227, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17545,60 , 17605,88 , 17473,24 , 17693,60 , 17753,88 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {85,89,85}, 6,1 , 13180,48 , 8,5 , 4,0 , 3692,7 , 3869,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Uruguay + { 111, 7, 231, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 18,7 , 25,12 , 17239,61 , 17300,89 , 17473,24 , 17239,61 , 17300,89 , 17389,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 74,5 , 72,5 , {86,69,70}, 323,3 , 13228,64 , 4,4 , 36,5 , 3692,7 , 3876,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Venezuela + { 111, 7, 238, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 55,4 , 345,11 , 17239,61 , 17300,89 , 17389,24 , 17239,61 , 17300,89 , 17389,24 , 9203,35 , 9238,53 , 7871,14 , 9203,35 , 9238,53 , 7871,14 , 74,5 , 72,5 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 3692,7 , 3885,8 , 2, 1, 1, 6, 7 }, // Spanish/Latin/CanaryIslands + { 111, 7, 246, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 37,5 , 8,10 , 17413,60 , 17300,89 , 17473,24 , 17413,60 , 17300,89 , 17473,24 , 9203,35 , 9238,53 , 3068,14 , 9203,35 , 9238,53 , 9291,14 , 85,4 , 83,4 , {0,0,0}, 0,0 , 13292,0 , 4,4 , 4,0 , 3893,23 , 3916,13 , 2, 1, 1, 6, 7 }, // Spanish/Latin/LatinAmericaAndTheCaribbean + { 111, 7, 250, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 978,27 , 55,4 , 345,11 , 17239,61 , 17300,89 , 17389,24 , 17239,61 , 17300,89 , 17389,24 , 9203,35 , 9238,53 , 7871,14 , 9203,35 , 9238,53 , 7871,14 , 74,5 , 72,5 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 3692,7 , 3929,15 , 2, 1, 1, 6, 7 }, // Spanish/Latin/CeutaAndMelilla + { 113, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 598,8 , 598,8 , 120,10 , 10,17 , 37,5 , 8,10 , 17841,48 , 17889,84 , 134,24 , 17841,48 , 17889,84 , 134,24 , 9305,60 , 9305,60 , 85,14 , 9305,60 , 9305,60 , 85,14 , 0,2 , 0,2 , {84,90,83}, 200,3 , 13292,67 , 4,4 , 4,0 , 3944,9 , 1626,8 , 0, 0, 1, 6, 7 }, // Swahili/Latin/Tanzania + { 113, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 598,8 , 598,8 , 439,8 , 98,16 , 37,5 , 8,10 , 17841,48 , 17889,84 , 17973,24 , 17997,48 , 18045,188 , 134,24 , 9305,60 , 9305,60 , 9365,14 , 9379,28 , 9407,93 , 85,14 , 284,10 , 285,10 , {67,68,70}, 217,2 , 13359,55 , 4,4 , 4,0 , 3953,18 , 3971,32 , 2, 1, 1, 6, 7 }, // Swahili/Latin/CongoKinshasa + { 113, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 598,8 , 598,8 , 120,10 , 10,17 , 37,5 , 8,10 , 17841,48 , 17889,84 , 134,24 , 17841,48 , 17889,84 , 134,24 , 9305,60 , 9305,60 , 85,14 , 9305,60 , 9305,60 , 85,14 , 0,2 , 0,2 , {75,69,83}, 2,3 , 13414,58 , 4,4 , 4,0 , 3944,9 , 1192,5 , 2, 1, 7, 6, 7 }, // Swahili/Latin/Kenya + { 113, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 598,8 , 598,8 , 120,10 , 10,17 , 37,5 , 8,10 , 17841,48 , 17889,84 , 134,24 , 17841,48 , 17889,84 , 134,24 , 9305,60 , 9305,60 , 85,14 , 9305,60 , 9305,60 , 85,14 , 0,2 , 0,2 , {85,71,88}, 205,3 , 13472,61 , 4,4 , 4,0 , 3944,9 , 1691,6 , 0, 0, 1, 6, 7 }, // Swahili/Latin/Uganda + { 114, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 606,9 , 606,9 , 53,10 , 98,16 , 37,5 , 356,16 , 18233,59 , 18292,86 , 134,24 , 18233,59 , 18292,86 , 134,24 , 9500,29 , 9529,50 , 2367,14 , 9500,29 , 9529,50 , 2367,14 , 294,2 , 295,2 , {83,69,75}, 198,2 , 13533,45 , 13,5 , 4,0 , 4003,7 , 4010,7 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Sweden + { 114, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 606,9 , 606,9 , 1165,10 , 98,16 , 37,5 , 356,16 , 18233,59 , 18292,86 , 134,24 , 18233,59 , 18292,86 , 134,24 , 9500,29 , 9529,50 , 2367,14 , 9500,29 , 9529,50 , 2367,14 , 294,2 , 295,2 , {69,85,82}, 14,1 , 8915,19 , 13,5 , 4,0 , 4003,7 , 1089,7 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Finland + { 114, 7, 248, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 606,9 , 606,9 , 53,10 , 98,16 , 37,5 , 356,16 , 18233,59 , 18292,86 , 134,24 , 18233,59 , 18292,86 , 134,24 , 9500,29 , 9529,50 , 2367,14 , 9500,29 , 9529,50 , 2367,14 , 294,2 , 295,2 , {69,85,82}, 14,1 , 8915,19 , 13,5 , 4,0 , 4003,7 , 4017,5 , 2, 1, 1, 6, 7 }, // Swedish/Latin/AlandIslands + { 116, 2, 209, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {84,74,83}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tajik/Cyrillic/Tajikistan + { 117, 27, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 615,13 , 615,13 , 300,6 , 210,18 , 301,7 , 372,12 , 18378,58 , 18436,86 , 18522,31 , 18378,58 , 18553,86 , 18522,31 , 9579,39 , 9618,49 , 9667,20 , 9579,39 , 9618,49 , 9667,20 , 296,8 , 297,8 , {73,78,82}, 127,1 , 13578,49 , 8,5 , 4,0 , 4022,5 , 4027,7 , 2, 1, 7, 7, 7 }, // Tamil/Tamil/India + { 117, 27, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 615,13 , 615,13 , 300,6 , 210,18 , 301,7 , 372,12 , 18378,58 , 18436,86 , 18522,31 , 18378,58 , 18553,86 , 18522,31 , 9579,39 , 9618,49 , 9667,20 , 9579,39 , 9618,49 , 9667,20 , 296,8 , 297,8 , {77,89,82}, 182,2 , 13627,61 , 8,5 , 4,0 , 4022,5 , 4034,7 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Malaysia + { 117, 27, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 615,13 , 615,13 , 300,6 , 210,18 , 301,7 , 372,12 , 18378,58 , 18436,86 , 18522,31 , 18378,58 , 18553,86 , 18522,31 , 9579,39 , 9618,49 , 9667,20 , 9579,39 , 9618,49 , 9667,20 , 296,8 , 297,8 , {83,71,68}, 6,1 , 13688,61 , 8,5 , 4,0 , 4022,5 , 4041,11 , 2, 1, 7, 6, 7 }, // Tamil/Tamil/Singapore + { 117, 27, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 615,13 , 615,13 , 300,6 , 210,18 , 37,5 , 8,10 , 18378,58 , 18436,86 , 18522,31 , 18378,58 , 18553,86 , 18522,31 , 9579,39 , 9618,49 , 9667,20 , 9579,39 , 9618,49 , 9667,20 , 296,8 , 297,8 , {76,75,82}, 326,3 , 13749,49 , 8,5 , 4,0 , 4022,5 , 4052,6 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/SriLanka + { 118, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {82,85,66}, 129,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tatar/Cyrillic/Russia + { 119, 28, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 628,11 , 628,11 , 370,8 , 1175,18 , 18,7 , 25,12 , 18639,66 , 18705,86 , 18791,31 , 18822,62 , 18705,86 , 18791,31 , 9687,32 , 9719,60 , 9779,18 , 9687,32 , 9719,60 , 9779,18 , 304,4 , 305,4 , {73,78,82}, 127,1 , 13798,26 , 4,4 , 4,0 , 4058,6 , 4064,9 , 2, 1, 7, 7, 7 }, // Telugu/Telugu/India + { 120, 30, 211, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 639,5 , 639,5 , 644,8 , 652,7 , 300,6 , 1193,19 , 37,5 , 384,28 , 18884,63 , 18947,98 , 18884,63 , 18884,63 , 18947,98 , 18884,63 , 9797,23 , 9820,68 , 9888,16 , 9797,23 , 9820,68 , 9888,16 , 308,10 , 309,10 , {84,72,66}, 329,3 , 13824,19 , 4,4 , 4,0 , 4073,3 , 4073,3 , 2, 1, 7, 6, 7 }, // Thai/Thai/Thailand + { 121, 31, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1212,23 , 18,7 , 25,12 , 2660,63 , 19045,159 , 158,27 , 2660,63 , 19204,147 , 158,27 , 9904,51 , 9955,79 , 10034,27 , 9904,51 , 9955,79 , 10034,27 , 318,7 , 319,8 , {67,78,89}, 332,1 , 13843,13 , 8,5 , 4,0 , 4076,8 , 4084,6 , 2, 1, 7, 6, 7 }, // Tibetan/Tibetan/China + { 121, 31, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1212,23 , 18,7 , 25,12 , 2660,63 , 19045,159 , 158,27 , 2660,63 , 19204,147 , 158,27 , 9904,51 , 9955,79 , 10034,27 , 9904,51 , 9955,79 , 10034,27 , 318,7 , 319,8 , {73,78,82}, 127,1 , 13856,19 , 8,5 , 4,0 , 4076,8 , 4090,7 , 2, 1, 7, 7, 7 }, // Tibetan/Tibetan/India + { 122, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1235,23 , 18,7 , 25,12 , 19351,46 , 19397,62 , 878,24 , 19351,46 , 19397,62 , 878,24 , 10061,29 , 10061,29 , 10090,14 , 10061,29 , 10061,29 , 10090,14 , 325,7 , 327,7 , {69,84,66}, 0,2 , 13875,16 , 4,4 , 4,0 , 4097,4 , 82,5 , 2, 1, 7, 6, 7 }, // Tigrinya/Ethiopic/Ethiopia + { 122, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1258,23 , 18,7 , 25,12 , 19459,46 , 19505,54 , 878,24 , 19459,46 , 19505,54 , 878,24 , 10104,29 , 10104,29 , 10090,14 , 10104,29 , 10104,29 , 10090,14 , 325,7 , 327,7 , {69,82,78}, 46,3 , 0,7 , 4,4 , 4,0 , 4097,4 , 4101,4 , 2, 1, 1, 6, 7 }, // Tigrinya/Ethiopic/Eritrea + { 123, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 659,8 , 659,8 , 659,8 , 659,8 , 300,6 , 98,16 , 18,7 , 25,12 , 19559,51 , 19610,87 , 19697,24 , 19559,51 , 19610,87 , 19697,24 , 10133,29 , 10162,60 , 10222,14 , 10133,29 , 10162,60 , 10222,14 , 0,2 , 0,2 , {84,79,80}, 203,2 , 13891,41 , 8,5 , 4,0 , 4105,13 , 1641,5 , 2, 1, 1, 6, 7 }, // Tongan/Latin/Tonga + { 124, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Tsonga/Latin/SouthAfrica + { 125, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 667,8 , 667,8 , 1281,9 , 1290,16 , 37,5 , 8,10 , 19721,48 , 19769,75 , 19844,24 , 19721,48 , 19769,75 , 19844,24 , 10236,28 , 10264,54 , 10318,14 , 10236,28 , 10264,54 , 10318,14 , 332,2 , 334,2 , {84,82,89}, 258,1 , 13932,40 , 13,5 , 4,0 , 4118,6 , 4124,7 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Turkey + { 125, 7, 56, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 667,8 , 667,8 , 1281,9 , 1290,16 , 18,7 , 25,12 , 19721,48 , 19769,75 , 19844,24 , 19721,48 , 19769,75 , 19844,24 , 10236,28 , 10264,54 , 10318,14 , 10236,28 , 10264,54 , 10318,14 , 332,2 , 334,2 , {69,85,82}, 14,1 , 8402,19 , 13,5 , 4,0 , 4118,6 , 4131,6 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Cyprus + { 126, 7, 218, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 675,8 , 675,8 , 942,10 , 1290,16 , 37,5 , 8,10 , 19868,51 , 19919,77 , 19996,24 , 19868,51 , 19919,77 , 19996,24 , 10332,21 , 10353,54 , 10407,14 , 10332,21 , 10353,54 , 10407,14 , 0,2 , 0,2 , {84,77,84}, 333,3 , 13972,49 , 13,5 , 4,0 , 4137,9 , 4146,12 , 2, 1, 1, 6, 7 }, // Turkmen/Latin/Turkmenistan + { 128, 1, 44, 46, 44, 59, 37, 48, 45, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 212,10 , 222,9 , 538,6 , 1306,18 , 18,7 , 25,12 , 20020,84 , 20020,84 , 158,27 , 20020,84 , 20020,84 , 158,27 , 10421,21 , 10442,55 , 10497,14 , 10421,21 , 10442,55 , 10497,14 , 334,12 , 336,12 , {67,78,89}, 141,1 , 14021,40 , 4,4 , 4,0 , 4158,8 , 4166,5 , 2, 1, 7, 6, 7 }, // Uighur/Arabic/China + { 129, 2, 222, 44, 160, 59, 37, 48, 45, 43, 1077, 171, 187, 8222, 8220, 0,6 , 0,6 , 150,7 , 150,7 , 175,8 , 1324,22 , 37,5 , 8,10 , 20104,48 , 20152,95 , 20247,24 , 20271,67 , 20338,87 , 20247,24 , 10511,21 , 10532,56 , 10588,14 , 10511,21 , 10532,56 , 10588,14 , 346,2 , 348,2 , {85,65,72}, 301,1 , 14061,49 , 13,5 , 4,0 , 4171,10 , 4181,7 , 2, 1, 1, 6, 7 }, // Ukrainian/Cyrillic/Ukraine + { 130, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 683,10 , 693,9 , 300,6 , 157,18 , 18,7 , 25,12 , 20425,68 , 20425,68 , 134,24 , 20425,68 , 20425,68 , 134,24 , 10602,39 , 10602,39 , 85,14 , 10602,39 , 10602,39 , 85,14 , 348,9 , 350,9 , {80,75,82}, 184,2 , 14110,49 , 8,5 , 4,0 , 4188,4 , 4192,7 , 0, 0, 7, 6, 7 }, // Urdu/Arabic/Pakistan + { 130, 1, 100, 46, 44, 59, 37, 1776, 45, 43, 1602, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 702,6 , 702,6 , 300,6 , 157,18 , 18,7 , 25,12 , 20425,68 , 20425,68 , 134,24 , 20425,68 , 20425,68 , 134,24 , 10602,39 , 10602,39 , 85,14 , 10602,39 , 10602,39 , 85,14 , 348,9 , 350,9 , {73,78,82}, 127,1 , 14159,42 , 8,5 , 4,0 , 4188,4 , 4199,5 , 2, 1, 7, 7, 7 }, // Urdu/Arabic/India + { 131, 7, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8217, 8216, 0,6 , 0,6 , 708,8 , 708,8 , 27,8 , 715,18 , 37,5 , 345,11 , 20493,52 , 20545,75 , 20620,24 , 20644,48 , 20692,75 , 20620,24 , 10641,21 , 10662,61 , 10723,14 , 10641,21 , 10662,61 , 10723,14 , 357,2 , 359,2 , {85,90,83}, 336,4 , 14201,58 , 8,5 , 4,0 , 4204,6 , 4210,11 , 0, 0, 1, 6, 7 }, // Uzbek/Latin/Uzbekistan + { 131, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 418,8 , 1346,33 , 55,4 , 345,11 , 20767,47 , 14026,68 , 158,27 , 20767,47 , 14026,68 , 158,27 , 10737,21 , 7297,49 , 85,14 , 10737,21 , 7297,49 , 85,14 , 0,2 , 0,2 , {65,70,78}, 276,1 , 14259,13 , 13,5 , 4,0 , 4221,6 , 3090,9 , 0, 0, 6, 4, 5 }, // Uzbek/Arabic/Afghanistan + { 131, 2, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 715,18 , 37,5 , 8,10 , 10439,48 , 20814,71 , 10567,24 , 10439,48 , 20814,71 , 10567,24 , 10758,28 , 10786,53 , 10839,14 , 10758,28 , 10786,53 , 10839,14 , 0,2 , 0,2 , {85,90,83}, 340,3 , 14272,49 , 8,5 , 4,0 , 4227,5 , 4232,10 , 0, 0, 1, 6, 7 }, // Uzbek/Cyrillic/Uzbekistan + { 132, 7, 232, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 716,8 , 716,8 , 120,10 , 1379,31 , 37,5 , 8,10 , 20885,75 , 20960,99 , 158,27 , 21059,75 , 21134,99 , 158,27 , 10853,33 , 10886,55 , 10941,21 , 10853,33 , 10886,55 , 10941,21 , 359,2 , 361,2 , {86,78,68}, 343,1 , 14321,33 , 8,5 , 4,0 , 4242,10 , 4252,8 , 0, 0, 1, 6, 7 }, // Vietnamese/Latin/Vietnam + { 134, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 10,17 , 37,5 , 8,10 , 21233,52 , 21285,87 , 21372,26 , 21398,59 , 21285,87 , 21372,26 , 10962,29 , 10991,77 , 11068,15 , 11083,30 , 10991,77 , 11068,15 , 0,2 , 0,2 , {71,66,80}, 125,1 , 14354,92 , 4,4 , 4,0 , 4260,7 , 4267,16 , 2, 1, 1, 6, 7 }, // Welsh/Latin/UnitedKingdom + { 135, 7, 187, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Wolof/Latin/Senegal + { 136, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Xhosa/Latin/SouthAfrica + { 138, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 18,7 , 25,12 , 21457,73 , 21530,121 , 158,27 , 21457,73 , 21530,121 , 158,27 , 11113,44 , 11157,69 , 85,14 , 11113,44 , 11157,69 , 85,14 , 361,5 , 363,5 , {78,71,78}, 186,1 , 14446,34 , 4,4 , 4,0 , 4283,10 , 4293,18 , 2, 1, 1, 6, 7 }, // Yoruba/Latin/Nigeria + { 138, 7, 23, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 18,7 , 25,12 , 21651,74 , 21725,134 , 158,27 , 21651,74 , 21725,134 , 158,27 , 11226,44 , 11270,69 , 85,14 , 11226,44 , 11270,69 , 85,14 , 366,5 , 368,5 , {88,79,70}, 212,3 , 14480,34 , 4,4 , 4,0 , 4283,10 , 4311,16 , 0, 0, 1, 6, 7 }, // Yoruba/Latin/Benin + { 140, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 724,9 , 733,10 , 538,6 , 35,18 , 18,7 , 25,12 , 21859,48 , 21907,91 , 134,24 , 21859,48 , 21907,91 , 21998,24 , 11339,28 , 11367,74 , 11441,14 , 11339,28 , 11367,74 , 11441,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 14514,67 , 4,4 , 4,0 , 4327,7 , 4334,14 , 2, 1, 7, 6, 7 }, // Zulu/Latin/SouthAfrica + { 141, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 204,8 , 204,8 , 942,10 , 491,17 , 159,5 , 412,16 , 5499,48 , 13503,83 , 134,24 , 22022,59 , 13503,83 , 134,24 , 11455,28 , 11483,51 , 2367,14 , 11534,28 , 11483,51 , 2367,14 , 371,9 , 373,11 , {78,79,75}, 198,2 , 14581,42 , 13,5 , 4,0 , 4348,7 , 4355,5 , 2, 1, 1, 6, 7 }, // NorwegianNynorsk/Latin/Norway + { 142, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8217, 0,6 , 0,6 , 175,7 , 175,7 , 1410,9 , 1040,20 , 37,5 , 8,10 , 4928,48 , 22081,83 , 15880,24 , 4928,48 , 22081,83 , 15880,24 , 2090,28 , 2118,58 , 2176,14 , 2090,28 , 2118,58 , 2190,14 , 380,11 , 384,7 , {66,65,77}, 152,2 , 14623,174 , 13,5 , 4,0 , 4360,8 , 614,19 , 2, 1, 1, 6, 7 }, // Bosnian/Latin/BosniaAndHerzegowina + { 142, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 117,7 , 117,7 , 1033,7 , 1040,20 , 37,5 , 8,10 , 15622,48 , 22164,83 , 12112,24 , 15622,48 , 22164,83 , 12112,24 , 11562,28 , 11590,54 , 8389,14 , 11562,28 , 11590,54 , 8389,14 , 243,9 , 391,7 , {66,65,77}, 305,2 , 14797,151 , 13,5 , 4,0 , 4368,8 , 3511,19 , 2, 1, 1, 6, 7 }, // Bosnian/Cyrillic/BosniaAndHerzegowina + { 143, 29, 131, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {77,86,82}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 5, 6, 7 }, // Divehi/Thaana/Maldives + { 144, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 599,17 , 37,5 , 8,10 , 22247,102 , 22349,140 , 158,27 , 22247,102 , 22349,140 , 158,27 , 11644,30 , 11674,57 , 85,14 , 11644,30 , 11674,57 , 85,14 , 85,4 , 83,4 , {71,66,80}, 125,1 , 0,7 , 4,4 , 4,0 , 4376,5 , 4381,12 , 2, 1, 1, 6, 7 }, // Manx/Latin/IsleOfMan + { 145, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 98,16 , 37,5 , 8,10 , 22489,46 , 22535,130 , 158,27 , 22489,46 , 22535,130 , 158,27 , 11731,28 , 11759,61 , 85,14 , 11731,28 , 11759,61 , 85,14 , 85,4 , 83,4 , {71,66,80}, 125,1 , 0,7 , 4,4 , 4,0 , 4393,8 , 4401,14 , 2, 1, 1, 6, 7 }, // Cornish/Latin/UnitedKingdom + { 146, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 707,8 , 715,18 , 18,7 , 25,12 , 22665,48 , 22713,192 , 158,27 , 22665,48 , 22713,192 , 158,27 , 11820,28 , 11848,49 , 11897,14 , 11820,28 , 11848,49 , 11897,14 , 391,2 , 398,2 , {71,72,83}, 175,3 , 14948,17 , 4,4 , 4,0 , 4415,4 , 4419,5 , 2, 1, 1, 6, 7 }, // Akan/Latin/Ghana + { 147, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 952,6 , 98,16 , 18,7 , 25,12 , 22905,87 , 22905,87 , 158,27 , 22905,87 , 22905,87 , 158,27 , 6938,32 , 11911,55 , 85,14 , 6938,32 , 11911,55 , 85,14 , 205,5 , 400,5 , {73,78,82}, 127,1 , 0,7 , 8,5 , 4,0 , 4424,6 , 2621,4 , 2, 1, 7, 7, 7 }, // Konkani/Devanagari/India + { 148, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {71,72,83}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Ga/Latin/Ghana + { 149, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 18,7 , 25,12 , 22992,48 , 23040,86 , 158,27 , 22992,48 , 23040,86 , 158,27 , 11966,29 , 11995,57 , 85,14 , 11966,29 , 11995,57 , 85,14 , 45,4 , 405,4 , {78,71,78}, 186,1 , 14965,12 , 4,4 , 4,0 , 4430,4 , 1342,7 , 2, 1, 1, 6, 7 }, // Igbo/Latin/Nigeria + { 150, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 23126,48 , 23174,189 , 23363,24 , 23126,48 , 23174,189 , 23363,24 , 12052,28 , 12080,74 , 12154,14 , 12052,28 , 12080,74 , 12154,14 , 393,9 , 409,7 , {75,69,83}, 2,3 , 14977,23 , 4,4 , 4,0 , 4434,7 , 1192,5 , 2, 1, 7, 6, 7 }, // Kamba/Latin/Kenya + { 151, 33, 103, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {73,81,68}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 6, 5, 6 }, // Syriac/Syriac/Iraq + { 152, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,82,78}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Blin/Ethiopic/Eritrea + { 153, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,84,66}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Geez/Ethiopic/Ethiopia + { 155, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,84,66}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Sidamo/Latin/Ethiopia + { 156, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {78,71,78}, 186,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Atsam/Latin/Nigeria + { 157, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,82,78}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tigre/Ethiopic/Eritrea + { 158, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {78,71,78}, 186,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Jju/Latin/Nigeria + { 159, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 257,7 , 257,7 , 27,8 , 1419,27 , 37,5 , 8,10 , 23387,48 , 23435,77 , 23512,24 , 23387,48 , 23435,77 , 23512,24 , 12168,28 , 12196,50 , 3068,14 , 12168,28 , 12196,50 , 3068,14 , 402,2 , 416,2 , {69,85,82}, 14,1 , 3120,20 , 8,5 , 4,0 , 4441,6 , 4447,6 , 2, 1, 1, 6, 7 }, // Friulian/Latin/Italy + { 160, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Venda/Latin/SouthAfrica + { 161, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 743,11 , 754,10 , 538,6 , 1446,23 , 428,12 , 440,17 , 23536,48 , 23584,87 , 23671,24 , 23536,48 , 23584,87 , 23671,24 , 12246,28 , 12274,44 , 12318,14 , 12246,28 , 12274,44 , 12318,14 , 404,3 , 418,5 , {71,72,83}, 175,3 , 15000,37 , 4,4 , 4,0 , 4453,6 , 4459,12 , 2, 1, 1, 6, 7 }, // Ewe/Latin/Ghana + { 161, 7, 212, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 743,11 , 754,10 , 538,6 , 1446,23 , 37,5 , 8,10 , 23536,48 , 23584,87 , 23671,24 , 23536,48 , 23584,87 , 23671,24 , 12246,28 , 12274,44 , 12318,14 , 12246,28 , 12274,44 , 12318,14 , 404,3 , 418,5 , {88,79,70}, 212,3 , 15037,106 , 4,4 , 4,0 , 4453,6 , 4471,11 , 0, 0, 1, 6, 7 }, // Ewe/Latin/Togo + { 162, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,84,66}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Walamo/Ethiopic/Ethiopia + { 163, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 300,6 , 10,17 , 18,7 , 25,12 , 23695,59 , 23754,95 , 158,27 , 23695,59 , 23754,95 , 158,27 , 12332,21 , 12353,57 , 85,14 , 12332,21 , 12353,57 , 85,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 0,7 , 4,4 , 4,0 , 4482,14 , 4496,19 , 2, 1, 7, 6, 7 }, // Hawaiian/Latin/UnitedStates + { 164, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {78,71,78}, 186,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tyap/Latin/Nigeria + { 165, 7, 129, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {77,87,75}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Nyanja/Latin/Malawi + { 166, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 764,9 , 773,8 , 538,6 , 35,18 , 18,7 , 25,12 , 23849,48 , 23897,88 , 23985,38 , 23849,48 , 23897,88 , 23849,48 , 12410,28 , 12438,55 , 12410,28 , 12410,28 , 12438,55 , 12410,28 , 0,2 , 0,2 , {80,72,80}, 187,1 , 15143,58 , 4,4 , 4,0 , 4515,8 , 4523,9 , 2, 1, 7, 6, 7 }, // Filipino/Latin/Philippines + { 167, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 272,9 , 272,9 , 175,8 , 544,18 , 37,5 , 8,10 , 7287,48 , 24023,86 , 134,24 , 7287,48 , 24023,86 , 134,24 , 12493,28 , 12521,63 , 3622,14 , 12493,28 , 12521,63 , 3622,14 , 95,5 , 423,4 , {67,72,70}, 231,3 , 15201,55 , 13,5 , 4,0 , 4532,16 , 4548,7 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Switzerland + { 167, 7, 74, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 272,9 , 272,9 , 175,8 , 544,18 , 37,5 , 8,10 , 7287,48 , 24023,86 , 134,24 , 7287,48 , 24023,86 , 134,24 , 12493,28 , 12521,63 , 3622,14 , 12493,28 , 12521,63 , 3622,14 , 95,5 , 423,4 , {69,85,82}, 14,1 , 8402,19 , 13,5 , 4,0 , 4532,16 , 4555,10 , 2, 1, 1, 6, 7 }, // Swiss German/Latin/France + { 167, 7, 123, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 272,9 , 272,9 , 175,8 , 544,18 , 37,5 , 8,10 , 7287,48 , 24023,86 , 134,24 , 7287,48 , 24023,86 , 134,24 , 12493,28 , 12521,63 , 3622,14 , 12493,28 , 12521,63 , 3622,14 , 95,5 , 423,4 , {67,72,70}, 231,3 , 15201,55 , 13,5 , 4,0 , 4532,16 , 4565,13 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Liechtenstein + { 168, 34, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 158,27 , 24109,38 , 158,27 , 158,27 , 24109,38 , 158,27 , 12584,21 , 12605,28 , 12633,14 , 12584,21 , 12605,28 , 12633,14 , 407,2 , 427,2 , {67,78,89}, 332,1 , 0,7 , 55,6 , 4,0 , 4578,3 , 4581,2 , 2, 1, 7, 6, 7 }, // Sichuan Yi/Yi/China + { 169, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {76,82,68}, 6,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Kpelle/Latin/Liberia + { 170, 7, 82, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Low German/Latin/Germany + { 171, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // South Ndebele/Latin/SouthAfrica + { 172, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Northern Sotho/Latin/SouthAfrica + { 173, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 231,8 , 231,8 , 53,10 , 63,17 , 37,5 , 8,10 , 24147,59 , 24206,145 , 24351,24 , 24147,59 , 24206,145 , 24351,24 , 12647,33 , 12680,75 , 12755,14 , 12647,33 , 12680,75 , 12755,14 , 409,11 , 429,13 , {78,79,75}, 198,2 , 15256,63 , 13,5 , 4,0 , 4583,15 , 4598,5 , 2, 1, 1, 6, 7 }, // Northern Sami/Latin/Norway + { 173, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 231,8 , 231,8 , 53,10 , 63,17 , 37,5 , 8,10 , 24375,85 , 24206,145 , 24351,24 , 24375,85 , 24206,145 , 24351,24 , 12647,33 , 12769,65 , 12834,14 , 12647,33 , 12769,65 , 12834,14 , 409,11 , 429,13 , {69,85,82}, 14,1 , 15319,23 , 13,5 , 4,0 , 4583,15 , 4603,6 , 2, 1, 1, 6, 7 }, // Northern Sami/Latin/Finland + { 173, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 231,8 , 231,8 , 53,10 , 63,17 , 37,5 , 8,10 , 24147,59 , 24206,145 , 24351,24 , 24147,59 , 24206,145 , 24351,24 , 12647,33 , 12680,75 , 12755,14 , 12647,33 , 12680,75 , 12755,14 , 409,11 , 429,13 , {83,69,75}, 198,2 , 15342,63 , 13,5 , 4,0 , 4583,15 , 4609,6 , 2, 1, 1, 6, 7 }, // Northern Sami/Latin/Sweden + { 174, 7, 208, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {84,87,68}, 344,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Taroko/Latin/Taiwan + { 175, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 24460,48 , 24508,88 , 24596,24 , 24460,48 , 24508,88 , 24596,24 , 12848,28 , 12876,62 , 12938,14 , 12848,28 , 12876,62 , 12938,14 , 420,6 , 442,3 , {75,69,83}, 2,3 , 15405,24 , 4,4 , 4,0 , 4615,8 , 1192,5 , 2, 1, 7, 6, 7 }, // Gusii/Latin/Kenya + { 176, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 24620,48 , 24668,221 , 24889,24 , 24620,48 , 24668,221 , 24889,24 , 12952,28 , 12980,105 , 13085,14 , 12952,28 , 12980,105 , 13085,14 , 426,10 , 445,10 , {75,69,83}, 2,3 , 15405,24 , 4,4 , 4,0 , 4623,7 , 1192,5 , 2, 1, 7, 6, 7 }, // Taita/Latin/Kenya + { 177, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 24913,48 , 24961,77 , 25038,24 , 24913,48 , 24961,77 , 25038,24 , 13099,28 , 13127,59 , 13186,14 , 13099,28 , 13127,59 , 13186,14 , 436,6 , 455,7 , {88,79,70}, 212,3 , 15429,26 , 13,5 , 4,0 , 4630,6 , 4636,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Senegal + { 177, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 24913,48 , 24961,77 , 25038,24 , 24913,48 , 24961,77 , 25038,24 , 13099,28 , 13127,59 , 13186,14 , 13099,28 , 13127,59 , 13186,14 , 436,6 , 455,7 , {88,65,70}, 32,4 , 15455,25 , 13,5 , 4,0 , 4630,6 , 4644,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Cameroon + { 177, 7, 91, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 24913,48 , 24961,77 , 25038,24 , 24913,48 , 24961,77 , 25038,24 , 13099,28 , 13127,59 , 13186,14 , 13099,28 , 13127,59 , 13186,14 , 436,6 , 455,7 , {71,78,70}, 223,2 , 0,7 , 13,5 , 4,0 , 4630,6 , 4652,4 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea + { 177, 7, 136, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 18,7 , 25,12 , 24913,48 , 24961,77 , 25038,24 , 24913,48 , 24961,77 , 25038,24 , 13099,28 , 13127,59 , 13186,14 , 13099,28 , 13127,59 , 13186,14 , 436,6 , 455,7 , {77,82,79}, 226,2 , 15480,22 , 13,5 , 4,0 , 4630,6 , 4656,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Mauritania + { 178, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 25062,48 , 25110,185 , 25295,24 , 25062,48 , 25110,185 , 25295,24 , 13200,28 , 13228,63 , 13291,14 , 13200,28 , 13228,63 , 13291,14 , 442,6 , 462,8 , {75,69,83}, 2,3 , 15502,23 , 4,4 , 4,0 , 4664,6 , 1192,5 , 2, 1, 7, 6, 7 }, // Kikuyu/Latin/Kenya + { 179, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 25319,48 , 25367,173 , 25540,24 , 25319,48 , 25367,173 , 25540,24 , 13305,28 , 13333,105 , 13438,14 , 13305,28 , 13333,105 , 13438,14 , 448,7 , 470,5 , {75,69,83}, 2,3 , 15525,25 , 4,4 , 4,0 , 4670,8 , 1192,5 , 2, 1, 7, 6, 7 }, // Samburu/Latin/Kenya + { 180, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 978,27 , 37,5 , 8,10 , 25564,48 , 25612,88 , 134,24 , 25564,48 , 25612,88 , 134,24 , 13452,28 , 13480,55 , 13535,14 , 13452,28 , 13480,55 , 13535,14 , 0,2 , 0,2 , {77,90,78}, 286,3 , 15550,28 , 0,4 , 4,0 , 4678,4 , 3242,10 , 2, 1, 7, 6, 7 }, // Sena/Latin/Mozambique + { 181, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 18,7 , 25,12 , 25700,52 , 25752,112 , 25864,24 , 25700,52 , 25752,112 , 25864,24 , 13549,28 , 13577,50 , 13627,14 , 13549,28 , 13577,50 , 13627,14 , 0,2 , 0,2 , {85,83,68}, 167,3 , 15578,24 , 4,4 , 4,0 , 4682,10 , 1801,8 , 2, 1, 7, 6, 7 }, // North Ndebele/Latin/Zimbabwe + { 182, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 25888,39 , 25927,194 , 26121,24 , 25888,39 , 25927,194 , 26121,24 , 13641,29 , 13670,65 , 13735,14 , 13641,29 , 13670,65 , 13735,14 , 455,8 , 475,7 , {84,90,83}, 200,3 , 15602,25 , 4,4 , 4,0 , 4692,9 , 1626,8 , 0, 0, 1, 6, 7 }, // Rombo/Latin/Tanzania + { 183, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 26145,48 , 26193,81 , 26274,24 , 26145,48 , 26193,81 , 26274,24 , 13749,30 , 13779,47 , 85,14 , 13749,30 , 13779,47 , 85,14 , 463,6 , 482,8 , {77,65,68}, 0,0 , 15627,21 , 0,4 , 4,0 , 4701,7 , 4708,6 , 2, 1, 6, 5, 6 }, // Tachelhit/Tifinagh/Morocco + { 183, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 26298,48 , 26346,81 , 26427,24 , 26298,48 , 26346,81 , 26427,24 , 13826,30 , 13856,48 , 85,14 , 13826,30 , 13856,48 , 85,14 , 469,6 , 490,8 , {77,65,68}, 0,0 , 15648,21 , 0,4 , 4,0 , 4714,10 , 4724,6 , 2, 1, 6, 5, 6 }, // Tachelhit/Latin/Morocco + { 184, 7, 3, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 18,7 , 25,12 , 26451,48 , 26499,84 , 26583,24 , 26451,48 , 26499,84 , 26583,24 , 13904,30 , 13934,51 , 13985,14 , 13904,30 , 13934,51 , 13985,14 , 475,7 , 498,9 , {68,90,68}, 210,2 , 15669,21 , 0,4 , 4,0 , 4730,9 , 4739,8 , 2, 1, 6, 5, 6 }, // Kabyle/Latin/Algeria + { 185, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 26607,48 , 26655,152 , 134,24 , 26607,48 , 26655,152 , 134,24 , 13999,28 , 14027,74 , 14101,14 , 13999,28 , 14027,74 , 14101,14 , 0,2 , 0,2 , {85,71,88}, 205,3 , 15690,26 , 4,4 , 4,0 , 4747,10 , 1691,6 , 0, 0, 1, 6, 7 }, // Nyankole/Latin/Uganda + { 186, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 26807,48 , 26855,254 , 27109,24 , 26807,48 , 26855,254 , 27109,24 , 14115,28 , 14143,82 , 14225,14 , 14115,28 , 14143,82 , 14225,14 , 482,7 , 507,7 , {84,90,83}, 200,3 , 15716,29 , 0,4 , 4,0 , 4757,6 , 4763,10 , 0, 0, 1, 6, 7 }, // Bena/Latin/Tanzania + { 187, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 17841,48 , 27133,87 , 134,24 , 17841,48 , 27133,87 , 134,24 , 14239,28 , 14267,62 , 14329,14 , 14239,28 , 14267,62 , 14329,14 , 489,5 , 514,9 , {84,90,83}, 200,3 , 15745,27 , 4,4 , 4,0 , 4773,8 , 1626,8 , 0, 0, 1, 6, 7 }, // Vunjo/Latin/Tanzania + { 188, 7, 132, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 27220,47 , 27267,92 , 27359,24 , 27220,47 , 27267,92 , 27359,24 , 14343,28 , 14371,44 , 14415,14 , 14343,28 , 14371,44 , 14415,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 15772,24 , 4,4 , 4,0 , 4781,9 , 2145,4 , 0, 0, 1, 6, 7 }, // Bambara/Latin/Mali + { 188, 75, 132, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Bambara/Nko/Mali + { 189, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 27383,48 , 27431,207 , 27638,24 , 27383,48 , 27431,207 , 27638,24 , 14429,28 , 14457,64 , 14521,14 , 14429,28 , 14457,64 , 14521,14 , 494,2 , 523,2 , {75,69,83}, 2,3 , 15405,24 , 4,4 , 4,0 , 4790,6 , 1192,5 , 2, 1, 7, 6, 7 }, // Embu/Latin/Kenya + { 190, 12, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 538,6 , 35,18 , 18,7 , 25,12 , 27662,36 , 27698,58 , 27756,24 , 27662,36 , 27698,58 , 27756,24 , 14535,28 , 14563,49 , 14612,14 , 14535,28 , 14563,49 , 14612,14 , 496,3 , 525,6 , {85,83,68}, 6,1 , 15796,19 , 4,4 , 4,0 , 4796,3 , 4799,4 , 2, 1, 7, 6, 7 }, // Cherokee/Cherokee/UnitedStates + { 191, 7, 137, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 27780,47 , 27827,68 , 27895,24 , 27780,47 , 27827,68 , 27895,24 , 14626,27 , 14653,48 , 14701,14 , 14626,27 , 14653,48 , 14701,14 , 0,2 , 0,2 , {77,85,82}, 184,2 , 15815,21 , 55,6 , 4,0 , 4803,14 , 4817,5 , 0, 0, 1, 6, 7 }, // Morisyen/Latin/Mauritius + { 192, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 17841,48 , 27919,264 , 134,24 , 17841,48 , 27919,264 , 134,24 , 14715,28 , 14743,133 , 13735,14 , 14715,28 , 14743,133 , 13735,14 , 499,4 , 531,5 , {84,90,83}, 200,3 , 15745,27 , 4,4 , 4,0 , 4822,10 , 1626,8 , 0, 0, 1, 6, 7 }, // Makonde/Latin/Tanzania + { 193, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 28183,83 , 28266,111 , 28377,24 , 28183,83 , 28266,111 , 28377,24 , 14876,36 , 14912,63 , 14975,14 , 14876,36 , 14912,63 , 14975,14 , 503,3 , 536,3 , {84,90,83}, 200,3 , 15836,29 , 55,6 , 4,0 , 4832,8 , 4840,9 , 0, 0, 1, 6, 7 }, // Langi/Latin/Tanzania + { 194, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 28401,48 , 28449,97 , 134,24 , 28401,48 , 28449,97 , 134,24 , 14989,28 , 15017,66 , 15083,14 , 14989,28 , 15017,66 , 15083,14 , 0,2 , 0,2 , {85,71,88}, 205,3 , 15865,26 , 0,4 , 4,0 , 4849,7 , 4856,7 , 0, 0, 1, 6, 7 }, // Ganda/Latin/Uganda + { 195, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 18,7 , 25,12 , 28546,48 , 28594,83 , 28677,24 , 28546,48 , 28594,83 , 28677,24 , 15097,80 , 15097,80 , 85,14 , 15097,80 , 15097,80 , 85,14 , 506,8 , 539,7 , {90,77,87}, 137,1 , 0,7 , 4,4 , 4,0 , 4863,9 , 1795,6 , 2, 1, 1, 6, 7 }, // Bemba/Latin/Zambia + { 196, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 175,7 , 175,7 , 439,8 , 1469,27 , 37,5 , 8,10 , 28701,48 , 28749,85 , 134,24 , 28701,48 , 28749,85 , 134,24 , 15177,28 , 15205,73 , 15278,14 , 15177,28 , 15205,73 , 15292,14 , 89,2 , 87,2 , {67,86,69}, 285,1 , 15891,43 , 13,5 , 4,0 , 4872,12 , 4884,10 , 2, 1, 1, 6, 7 }, // Kabuverdianu/Latin/CapeVerde + { 197, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 28834,48 , 28882,86 , 28968,24 , 28834,48 , 28882,86 , 28968,24 , 15306,28 , 15334,51 , 15385,14 , 15306,28 , 15334,51 , 15385,14 , 514,2 , 546,2 , {75,69,83}, 2,3 , 15405,24 , 4,4 , 4,0 , 4894,6 , 1192,5 , 2, 1, 7, 6, 7 }, // Meru/Latin/Kenya + { 198, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 28992,49 , 29041,121 , 29162,24 , 28992,49 , 29041,121 , 29162,24 , 15399,28 , 15427,53 , 15480,14 , 15399,28 , 15427,53 , 15480,14 , 516,6 , 548,10 , {75,69,83}, 2,3 , 15934,26 , 4,4 , 4,0 , 4900,8 , 4908,12 , 2, 1, 7, 6, 7 }, // Kalenjin/Latin/Kenya + { 199, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 18,7 , 25,12 , 0,48 , 29186,136 , 134,24 , 0,48 , 29186,136 , 134,24 , 15494,23 , 15517,92 , 15609,14 , 15494,23 , 15517,92 , 15609,14 , 522,7 , 558,5 , {78,65,68}, 6,1 , 15960,22 , 4,4 , 4,0 , 4920,13 , 4933,8 , 2, 1, 1, 6, 7 }, // Nama/Latin/Namibia + { 200, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 17841,48 , 27133,87 , 134,24 , 17841,48 , 27133,87 , 134,24 , 14239,28 , 14267,62 , 14329,14 , 14239,28 , 14267,62 , 14329,14 , 489,5 , 514,9 , {84,90,83}, 200,3 , 15745,27 , 4,4 , 4,0 , 4941,9 , 1626,8 , 0, 0, 1, 6, 7 }, // Machame/Latin/Tanzania + { 201, 7, 82, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 430,8 , 430,8 , 1496,10 , 1506,23 , 37,5 , 8,10 , 29322,59 , 29381,87 , 134,24 , 29468,48 , 29381,87 , 134,24 , 15623,28 , 15651,72 , 3622,14 , 15623,28 , 15651,72 , 3622,14 , 529,16 , 563,16 , {69,85,82}, 14,1 , 15982,11 , 13,5 , 4,0 , 4950,6 , 4956,11 , 2, 1, 1, 6, 7 }, // Colognian/Latin/Germany + { 202, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 29516,51 , 29567,132 , 158,27 , 29516,51 , 29567,132 , 158,27 , 14239,28 , 15723,58 , 13735,14 , 14239,28 , 15723,58 , 13735,14 , 545,9 , 579,6 , {75,69,83}, 2,3 , 15993,25 , 4,4 , 4,0 , 4967,3 , 1192,5 , 2, 1, 7, 6, 7 }, // Masai/Latin/Kenya + { 202, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 29516,51 , 29567,132 , 158,27 , 29516,51 , 29567,132 , 158,27 , 14239,28 , 15723,58 , 13735,14 , 14239,28 , 15723,58 , 13735,14 , 545,9 , 579,6 , {84,90,83}, 200,3 , 16018,28 , 4,4 , 4,0 , 4967,3 , 4970,8 , 0, 0, 1, 6, 7 }, // Masai/Latin/Tanzania + { 203, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 28401,48 , 28449,97 , 134,24 , 28401,48 , 28449,97 , 134,24 , 15781,35 , 15816,65 , 15881,14 , 15781,35 , 15816,65 , 15881,14 , 554,6 , 585,6 , {85,71,88}, 205,3 , 15865,26 , 13,5 , 4,0 , 4978,7 , 4856,7 , 0, 0, 1, 6, 7 }, // Soga/Latin/Uganda + { 204, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 29699,48 , 17889,84 , 134,24 , 29699,48 , 17889,84 , 134,24 , 15895,21 , 15916,75 , 85,14 , 15895,21 , 15916,75 , 85,14 , 85,4 , 83,4 , {75,69,83}, 2,3 , 16046,23 , 4,4 , 72,6 , 4985,7 , 1192,5 , 2, 1, 7, 6, 7 }, // Luyia/Latin/Kenya + { 205, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 29747,48 , 17889,84 , 134,24 , 29747,48 , 17889,84 , 134,24 , 15991,28 , 9305,60 , 14329,14 , 15991,28 , 9305,60 , 14329,14 , 560,9 , 591,8 , {84,90,83}, 200,3 , 16069,28 , 13,5 , 4,0 , 4992,6 , 4998,8 , 0, 0, 1, 6, 7 }, // Asu/Latin/Tanzania + { 206, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 29795,48 , 29843,94 , 29937,24 , 29795,48 , 29843,94 , 29937,24 , 16019,28 , 16047,69 , 16116,14 , 16019,28 , 16047,69 , 16116,14 , 569,9 , 599,6 , {85,71,88}, 205,3 , 16097,28 , 4,4 , 4,0 , 5006,6 , 1691,6 , 0, 0, 1, 6, 7 }, // Teso/Latin/Uganda + { 206, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 29795,48 , 29843,94 , 29937,24 , 29795,48 , 29843,94 , 29937,24 , 16019,28 , 16047,69 , 16116,14 , 16019,28 , 16047,69 , 16116,14 , 569,9 , 599,6 , {75,69,83}, 2,3 , 16125,27 , 4,4 , 4,0 , 5006,6 , 5012,5 , 2, 1, 7, 6, 7 }, // Teso/Latin/Kenya + { 207, 7, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,82,78}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Saho/Latin/Eritrea + { 208, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 29961,46 , 30007,88 , 30095,24 , 29961,46 , 30007,88 , 30095,24 , 16130,28 , 16158,53 , 16211,14 , 16130,28 , 16158,53 , 16211,14 , 578,6 , 605,6 , {88,79,70}, 212,3 , 16152,23 , 0,4 , 4,0 , 5017,11 , 5028,5 , 0, 0, 1, 6, 7 }, // Koyra Chiini/Latin/Mali + { 209, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 17841,48 , 27133,87 , 134,24 , 17841,48 , 27133,87 , 134,24 , 14239,28 , 14267,62 , 14329,14 , 14239,28 , 14267,62 , 14329,14 , 489,5 , 514,9 , {84,90,83}, 200,3 , 15745,27 , 0,4 , 4,0 , 5033,6 , 1626,8 , 0, 0, 1, 6, 7 }, // Rwa/Latin/Tanzania + { 210, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 30119,48 , 30167,186 , 30353,24 , 30119,48 , 30167,186 , 30353,24 , 16225,28 , 16253,69 , 16322,14 , 16225,28 , 16253,69 , 16322,14 , 584,2 , 611,2 , {75,69,83}, 2,3 , 16175,23 , 0,4 , 4,0 , 5039,6 , 1192,5 , 2, 1, 7, 6, 7 }, // Luo/Latin/Kenya + { 211, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 26607,48 , 26655,152 , 134,24 , 26607,48 , 26655,152 , 134,24 , 13999,28 , 14027,74 , 14101,14 , 13999,28 , 14027,74 , 14101,14 , 0,2 , 0,2 , {85,71,88}, 205,3 , 15690,26 , 4,4 , 4,0 , 5045,6 , 1691,6 , 0, 0, 1, 6, 7 }, // Chiga/Latin/Uganda + { 212, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 30377,48 , 30425,86 , 30511,24 , 30377,48 , 30425,86 , 30511,24 , 16336,28 , 16364,48 , 16412,14 , 16336,28 , 16364,48 , 16412,14 , 586,9 , 613,10 , {77,65,68}, 0,0 , 16198,22 , 13,5 , 4,0 , 5051,17 , 5068,6 , 2, 1, 6, 5, 6 }, // Central Morocco Tamazight/Latin/Morocco + { 213, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 29961,46 , 30007,88 , 30095,24 , 29961,46 , 30007,88 , 30095,24 , 16426,28 , 16454,54 , 16211,14 , 16426,28 , 16454,54 , 16211,14 , 578,6 , 605,6 , {88,79,70}, 212,3 , 16152,23 , 0,4 , 4,0 , 5074,15 , 5028,5 , 0, 0, 1, 6, 7 }, // Koyraboro Senni/Latin/Mali + { 214, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 17841,48 , 30535,84 , 134,24 , 17841,48 , 30535,84 , 134,24 , 16508,28 , 16536,63 , 16599,14 , 16508,28 , 16536,63 , 16599,14 , 595,5 , 623,8 , {84,90,83}, 200,3 , 16220,27 , 0,4 , 4,0 , 5089,9 , 1626,8 , 0, 0, 1, 6, 7 }, // Shambala/Latin/Tanzania + { 215, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 538,6 , 35,18 , 18,7 , 25,12 , 30619,88 , 30619,88 , 30707,31 , 30619,88 , 30619,88 , 30707,31 , 16613,33 , 16646,54 , 16700,19 , 16613,33 , 16646,54 , 16700,19 , 600,3 , 631,6 , {73,78,82}, 127,1 , 16247,10 , 8,5 , 4,0 , 5098,4 , 2621,4 , 2, 1, 7, 7, 7 }, // Bodo/Devanagari/India + { 218, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 30738,48 , 10650,80 , 158,27 , 30738,48 , 10650,80 , 158,27 , 16719,74 , 16719,74 , 85,14 , 16719,74 , 16719,74 , 85,14 , 0,2 , 0,2 , {82,85,66}, 129,1 , 16257,43 , 13,5 , 4,0 , 5102,7 , 5109,5 , 2, 1, 1, 6, 7 }, // Chechen/Cyrillic/Russia + { 219, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 781,8 , 781,8 , 1529,10 , 1539,23 , 37,5 , 8,10 , 30786,65 , 30851,117 , 30968,30 , 30786,65 , 30998,117 , 30968,30 , 16793,37 , 16830,68 , 10588,14 , 16793,37 , 16830,68 , 10588,14 , 0,2 , 0,2 , {82,85,66}, 129,1 , 16300,44 , 13,5 , 4,0 , 5114,19 , 5133,7 , 2, 1, 1, 6, 7 }, // Church/Cyrillic/Russia + { 220, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {82,85,66}, 129,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Chuvash/Cyrillic/Russia + { 230, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 31115,49 , 31164,99 , 31263,24 , 31115,49 , 31164,99 , 31263,24 , 16898,28 , 16926,50 , 16976,14 , 16898,28 , 16926,50 , 16976,14 , 603,5 , 637,6 , {67,68,70}, 217,2 , 16344,24 , 0,4 , 4,0 , 5140,8 , 5148,16 , 2, 1, 1, 6, 7 }, // LubaKatanga/Latin/CongoKinshasa + { 231, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 789,10 , 789,10 , 175,8 , 544,18 , 37,5 , 8,10 , 31287,48 , 31335,85 , 134,24 , 31420,59 , 31335,85 , 134,24 , 16990,28 , 17018,65 , 3622,14 , 17083,35 , 17018,65 , 3622,14 , 608,5 , 643,8 , {69,85,82}, 14,1 , 8402,19 , 13,5 , 4,0 , 5164,14 , 5178,10 , 2, 1, 1, 6, 7 }, // Luxembourgish/Latin/Luxembourg + { 236, 7, 21, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Walloon/Latin/Belgium + { 237, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 31479,48 , 31527,195 , 31722,24 , 31479,48 , 31527,195 , 31722,24 , 17118,28 , 17146,72 , 17218,14 , 17118,28 , 17146,72 , 17218,14 , 613,3 , 651,3 , {88,65,70}, 32,4 , 16368,21 , 0,4 , 4,0 , 5188,5 , 5193,7 , 0, 0, 1, 6, 7 }, // Aghem/Latin/Cameroon + { 238, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 31746,48 , 31794,90 , 31884,24 , 31746,48 , 31794,90 , 31884,24 , 17232,28 , 17260,70 , 17330,14 , 17232,28 , 17260,70 , 17330,14 , 616,10 , 654,9 , {88,65,70}, 32,4 , 16389,22 , 13,5 , 4,0 , 5200,5 , 5205,8 , 0, 0, 1, 6, 7 }, // Basaa/Latin/Cameroon + { 239, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 29961,46 , 30007,88 , 30095,24 , 29961,46 , 30007,88 , 30095,24 , 16426,28 , 17344,53 , 17397,14 , 16426,28 , 17344,53 , 17397,14 , 626,8 , 663,10 , {88,79,70}, 212,3 , 16152,23 , 0,4 , 4,0 , 5213,10 , 5223,5 , 0, 0, 1, 6, 7 }, // Zarma/Latin/Niger + { 240, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 31908,49 , 31957,99 , 32056,24 , 31908,49 , 31957,99 , 32056,24 , 17411,28 , 17439,45 , 17484,14 , 17411,28 , 17439,45 , 17484,14 , 634,5 , 673,6 , {88,65,70}, 32,4 , 0,7 , 13,5 , 4,0 , 5228,5 , 1942,8 , 0, 0, 1, 6, 7 }, // Duala/Latin/Cameroon + { 241, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 32080,36 , 32116,82 , 32198,24 , 32080,36 , 32116,82 , 32198,24 , 17498,28 , 17526,50 , 17576,14 , 17498,28 , 17526,50 , 17576,14 , 0,2 , 0,2 , {88,79,70}, 212,3 , 16411,23 , 13,5 , 4,0 , 5233,5 , 5238,7 , 0, 0, 1, 6, 7 }, // JolaFonyi/Latin/Senegal + { 242, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 32222,50 , 32272,141 , 32413,24 , 32222,50 , 32272,141 , 32413,24 , 17590,30 , 17620,85 , 17705,14 , 17590,30 , 17620,85 , 17705,14 , 639,7 , 679,9 , {88,65,70}, 32,4 , 16434,23 , 13,5 , 4,0 , 5245,6 , 5251,7 , 0, 0, 1, 6, 7 }, // Ewondo/Latin/Cameroon + { 243, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 32437,39 , 32476,191 , 158,27 , 32437,39 , 32476,191 , 158,27 , 17719,29 , 17748,45 , 17793,14 , 17719,29 , 17748,45 , 17793,14 , 646,6 , 688,7 , {88,65,70}, 32,4 , 16457,11 , 13,5 , 4,0 , 5258,5 , 5263,7 , 0, 0, 1, 6, 7 }, // Bafia/Latin/Cameroon + { 244, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 32667,48 , 32715,213 , 32928,24 , 32667,48 , 32715,213 , 32928,24 , 17807,28 , 17835,59 , 17894,14 , 17807,28 , 17835,59 , 17894,14 , 652,8 , 695,10 , {77,90,78}, 286,3 , 0,7 , 55,6 , 4,0 , 5270,5 , 5275,10 , 2, 1, 7, 6, 7 }, // MakhuwaMeetto/Latin/Mozambique + { 245, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 32952,48 , 33000,139 , 33139,24 , 32952,48 , 33000,139 , 33139,24 , 17908,28 , 17936,74 , 18010,14 , 17908,28 , 17936,74 , 18010,14 , 660,5 , 705,5 , {88,65,70}, 32,4 , 16468,17 , 4,4 , 4,0 , 5285,6 , 5291,7 , 0, 0, 1, 6, 7 }, // Mundang/Latin/Cameroon + { 246, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 33163,51 , 33214,143 , 158,27 , 33163,51 , 33214,143 , 158,27 , 18024,30 , 18054,89 , 18143,14 , 18024,30 , 18054,89 , 18143,14 , 665,4 , 710,4 , {88,65,70}, 32,4 , 16485,20 , 13,5 , 4,0 , 5298,6 , 5304,7 , 0, 0, 1, 6, 7 }, // Kwasio/Latin/Cameroon + { 247, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1562,9 , 98,16 , 18,7 , 457,12 , 33357,54 , 33411,96 , 33507,24 , 33357,54 , 33411,96 , 33507,24 , 18157,38 , 18195,79 , 18274,14 , 18157,38 , 18195,79 , 18274,14 , 669,2 , 714,2 , {83,83,80}, 125,1 , 0,7 , 4,4 , 4,0 , 5311,9 , 0,0 , 2, 1, 1, 6, 7 }, // Nuer/Latin/SouthSudan + { 248, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1571,6 , 1577,30 , 37,5 , 8,10 , 33531,75 , 33606,121 , 33727,24 , 33531,75 , 33606,121 , 33727,24 , 18288,21 , 18309,73 , 18382,14 , 18288,21 , 18309,73 , 18382,14 , 671,2 , 716,2 , {82,85,66}, 129,1 , 0,7 , 55,6 , 4,0 , 5320,9 , 5329,9 , 2, 1, 1, 6, 7 }, // Sakha/Cyrillic/Russia + { 249, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 37,5 , 8,10 , 33751,48 , 33799,117 , 158,27 , 33751,48 , 33799,117 , 158,27 , 18396,28 , 18424,60 , 18484,14 , 18396,28 , 18424,60 , 18484,14 , 673,9 , 718,9 , {84,90,83}, 200,3 , 16505,25 , 0,4 , 4,0 , 5338,9 , 5347,9 , 0, 0, 1, 6, 7 }, // Sangu/Latin/Tanzania + { 251, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 29961,46 , 30007,88 , 30095,24 , 29961,46 , 30007,88 , 30095,24 , 16426,28 , 16454,54 , 16211,14 , 16426,28 , 16454,54 , 16211,14 , 626,8 , 663,10 , {88,79,70}, 212,3 , 16152,23 , 0,4 , 4,0 , 5356,13 , 5223,5 , 0, 0, 1, 6, 7 }, // Tasawaq/Latin/Niger + { 252, 35, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 18,7 , 25,12 , 33916,50 , 33916,50 , 158,27 , 33916,50 , 33916,50 , 158,27 , 18498,30 , 18498,30 , 85,14 , 18498,30 , 18498,30 , 85,14 , 0,2 , 0,2 , {76,82,68}, 6,1 , 16530,15 , 4,4 , 4,0 , 5369,2 , 5371,4 , 2, 1, 1, 6, 7 }, // Vai/Vai/Liberia + { 252, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 120,10 , 10,17 , 18,7 , 25,12 , 33966,81 , 33966,81 , 158,27 , 33966,81 , 33966,81 , 158,27 , 18528,48 , 18528,48 , 85,14 , 18528,48 , 18528,48 , 85,14 , 0,2 , 0,2 , {76,82,68}, 6,1 , 16545,20 , 4,4 , 4,0 , 5375,3 , 5378,8 , 2, 1, 1, 6, 7 }, // Vai/Latin/Liberia + { 253, 7, 206, 44, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 272,9 , 272,9 , 53,10 , 544,18 , 37,5 , 8,10 , 34047,48 , 34095,99 , 34194,24 , 34047,48 , 34095,99 , 34194,24 , 18576,28 , 18604,53 , 18657,14 , 18576,28 , 18604,53 , 18657,14 , 0,2 , 0,2 , {67,72,70}, 0,0 , 0,7 , 55,6 , 4,0 , 5386,6 , 5392,6 , 2, 0, 1, 6, 7 }, // Walser/Latin/Switzerland + { 254, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 34218,51 , 34269,191 , 158,27 , 34218,51 , 34269,191 , 158,27 , 18671,21 , 18692,71 , 18763,14 , 18671,21 , 18692,71 , 18763,14 , 682,8 , 727,8 , {88,65,70}, 32,4 , 0,7 , 13,5 , 4,0 , 5398,6 , 5404,7 , 0, 0, 1, 6, 7 }, // Yangben/Latin/Cameroon + { 256, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 591,7 , 591,7 , 300,6 , 396,22 , 37,5 , 8,10 , 34460,48 , 34508,85 , 34593,24 , 34617,48 , 34665,117 , 34593,24 , 18777,28 , 18805,54 , 3345,14 , 18777,28 , 18805,54 , 3345,14 , 690,12 , 735,11 , {69,85,82}, 14,1 , 3120,20 , 13,5 , 4,0 , 5411,9 , 2393,6 , 2, 1, 1, 6, 7 }, // Asturian/Latin/Spain + { 257, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 799,11 , 799,11 , 810,16 , 826,9 , 53,10 , 715,18 , 37,5 , 8,10 , 34782,174 , 34782,174 , 158,27 , 34782,174 , 34782,174 , 158,27 , 18859,60 , 18859,60 , 18919,25 , 18859,60 , 18859,60 , 18919,25 , 702,8 , 746,13 , {88,65,70}, 32,4 , 16565,12 , 8,5 , 4,0 , 5420,5 , 5425,7 , 0, 0, 1, 6, 7 }, // Ngomba/Latin/Cameroon + { 258, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 1607,10 , 599,17 , 37,5 , 8,10 , 34956,102 , 34956,102 , 158,27 , 34956,102 , 34956,102 , 158,27 , 18944,54 , 18944,54 , 18998,21 , 18944,54 , 18944,54 , 18998,21 , 0,2 , 0,2 , {88,65,70}, 32,4 , 16577,16 , 55,6 , 4,0 , 5432,4 , 5436,7 , 0, 0, 1, 6, 7 }, // Kako/Latin/Cameroon + { 259, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 715,18 , 37,5 , 8,10 , 35058,137 , 35195,142 , 35337,36 , 35058,137 , 35195,142 , 35337,36 , 19019,49 , 19019,49 , 19068,21 , 19019,49 , 19019,49 , 19068,21 , 0,2 , 0,2 , {88,65,70}, 32,4 , 16593,12 , 8,5 , 4,0 , 5443,5 , 5448,7 , 0, 0, 1, 6, 7 }, // Meta/Latin/Cameroon + { 260, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1617,32 , 37,5 , 8,10 , 35373,165 , 35373,165 , 158,27 , 35373,165 , 35373,165 , 158,27 , 19089,111 , 19089,111 , 85,14 , 19089,111 , 19089,111 , 85,14 , 710,9 , 759,8 , {88,65,70}, 32,4 , 16605,16 , 8,5 , 4,0 , 5455,16 , 5471,7 , 0, 0, 1, 6, 7 }, // Ngiemboon/Latin/Cameroon + { 312, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {88,65,70}, 32,4 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Akoose/Latin/Cameroon + { 313, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 538,6 , 35,18 , 18,7 , 25,12 , 35538,180 , 35538,180 , 158,27 , 35538,180 , 35538,180 , 158,27 , 19200,87 , 19200,87 , 85,14 , 19200,87 , 19200,87 , 19287,14 , 0,2 , 0,2 , {85,83,68}, 6,1 , 0,7 , 55,6 , 4,0 , 5478,12 , 5490,22 , 2, 1, 7, 6, 7 }, // Lakota/Latin/UnitedStates + { 314, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 439,8 , 98,16 , 37,5 , 8,10 , 26145,48 , 26193,81 , 26274,24 , 26145,48 , 26193,81 , 26274,24 , 13749,30 , 19301,48 , 85,14 , 13749,30 , 19301,48 , 85,14 , 463,6 , 482,8 , {77,65,68}, 0,0 , 15627,21 , 0,4 , 4,0 , 5512,8 , 4708,6 , 2, 1, 6, 5, 6 }, // Standard Moroccan Tamazight/Tifinagh/Morocco + { 315, 7, 43, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {67,76,80}, 6,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Mapuche/Latin/Chile + { 316, 1, 103, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 35718,105 , 35718,105 , 158,27 , 35718,105 , 35718,105 , 158,27 , 19349,58 , 19349,58 , 19407,14 , 19349,58 , 19349,58 , 19407,14 , 0,2 , 0,2 , {73,81,68}, 0,0 , 16621,20 , 8,5 , 4,0 , 5520,14 , 5534,5 , 0, 0, 6, 5, 6 }, // Central Kurdish/Arabic/Iraq + { 316, 1, 102, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 35718,105 , 35718,105 , 158,27 , 35718,105 , 35718,105 , 158,27 , 19349,58 , 19349,58 , 19407,14 , 19349,58 , 19349,58 , 19407,14 , 0,2 , 0,2 , {73,82,82}, 0,0 , 16641,19 , 8,5 , 4,0 , 5520,14 , 5539,5 , 0, 0, 6, 5, 5 }, // Central Kurdish/Arabic/Iran + { 317, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 197,7 , 197,7 , 114,6 , 544,18 , 55,4 , 59,9 , 35823,48 , 35871,85 , 15880,24 , 35956,60 , 36016,93 , 15880,24 , 19421,28 , 19449,53 , 19502,14 , 19421,28 , 19449,53 , 19502,14 , 719,9 , 767,10 , {69,85,82}, 14,1 , 16660,27 , 13,5 , 4,0 , 5544,14 , 5558,6 , 2, 1, 1, 6, 7 }, // LowerSorbian/Latin/Germany + { 318, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 197,7 , 197,7 , 114,6 , 544,18 , 469,12 , 59,9 , 36109,48 , 36157,86 , 15880,24 , 36243,60 , 36303,93 , 15880,24 , 19516,28 , 19544,53 , 19597,14 , 19516,28 , 19544,53 , 19597,14 , 719,9 , 777,9 , {69,85,82}, 14,1 , 16687,29 , 13,5 , 4,0 , 5564,15 , 5579,6 , 2, 1, 1, 6, 7 }, // UpperSorbian/Latin/Germany + { 319, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {88,65,70}, 32,4 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Kenyang/Latin/Cameroon + { 320, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {67,65,68}, 247,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Mohawk/Latin/Canada + { 321, 75, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {71,78,70}, 223,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Nko/Nko/Guinea + { 323, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {71,84,81}, 314,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Kiche/Latin/Guatemala + { 324, 7, 205, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {83,69,75}, 198,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Southern Sami/Latin/Sweden + { 325, 7, 205, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {83,69,75}, 198,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Lule Sami/Latin/Sweden + { 326, 7, 73, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 36396,140 , 158,27 , 344,48 , 344,48 , 158,27 , 19611,21 , 19632,70 , 85,14 , 19611,21 , 19702,73 , 19775,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 16716,11 , 55,6 , 4,0 , 5585,11 , 5596,5 , 2, 1, 1, 6, 7 }, // Inari Sami/Latin/Finland + { 327, 7, 73, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Skolt Sami/Latin/Finland + { 328, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 344,48 , 344,48 , 158,27 , 344,48 , 344,48 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {65,85,68}, 347,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Warlpiri/Latin/Australia + { 346, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 13772,70 , 13772,70 , 158,27 , 13772,70 , 13772,70 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {73,82,82}, 349,3 , 16727,27 , 8,5 , 4,0 , 5601,7 , 3104,5 , 0, 0, 6, 5, 5 }, // Mazanderani/Arabic/Iran + { 349, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 36536,77 , 36536,77 , 158,27 , 36536,77 , 36536,77 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 5608,11 , 0,0 , 0, 0, 6, 5, 5 }, // Northern Luri/Arabic/Iran + { 349, 1, 103, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 36536,77 , 36536,77 , 158,27 , 36536,77 , 36536,77 , 158,27 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , {73,81,68}, 0,0 , 0,7 , 8,5 , 4,0 , 5608,11 , 0,0 , 0, 0, 6, 5, 6 }, // Northern Luri/Arabic/Iraq + { 357, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 182,5 , 182,5 , 835,5 , 835,5 , 418,8 , 447,14 , 174,6 , 191,13 , 4357,39 , 4357,39 , 158,27 , 4357,39 , 4357,39 , 158,27 , 2069,21 , 2027,28 , 2055,14 , 2069,21 , 2027,28 , 2055,14 , 79,2 , 77,2 , {72,75,68}, 142,3 , 16754,11 , 4,4 , 4,0 , 5619,2 , 568,14 , 2, 1, 7, 6, 7 }, // Cantonese/Traditional Han/HongKong + { 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 } // trailing 0s +}; + +static const ushort list_pattern_part_data[] = { +0x25, 0x31, 0x2c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x68, 0x65, +0x20, 0x25, 0x32, 0x25, 0x31, 0x1363, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x12a5, 0x1293, 0x20, 0x25, 0x32, 0x25, 0x31, +0x20, 0x12a5, 0x1293, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x648, 0x25, 0x32, 0x25, +0x31, 0x20, 0x648, 0x25, 0x32, 0x25, 0x31, 0x20, 0x587, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x259, 0x20, 0x25, 0x32, +0x25, 0x31, 0x20, 0x65, 0x74, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x98f, 0x9ac, 0x982, 0x20, 0x25, 0x32, 0x25, +0x31, 0x20, 0x98f, 0x9ac, 0x982, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xf51, 0xf44, 0xf0b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, +0x438, 0x20, 0x25, 0x32, 0x25, 0x31, 0x104a, 0x20, 0x25, 0x32, 0x25, 0x31, 0x104a, 0x20, 0x1014, 0x103e, 0x1004, 0x1037, 0x103a, 0x25, +0x32, 0x25, 0x31, 0x1014, 0x103e, 0x1004, 0x1037, 0x103a, 0x25, 0x32, 0x25, 0x31, 0x20, 0x456, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, +0x1793, 0x17b7, 0x1784, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x200b, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x20, +0x25, 0x32, 0x25, 0x31, 0x3001, 0x25, 0x32, 0x25, 0x31, 0x548c, 0x25, 0x32, 0x25, 0x31, 0x53ca, 0x25, 0x32, 0x25, 0x31, 0x20, +0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6f, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, +0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6a, 0x61, 0x20, 0x25, 0x32, 0x25, +0x31, 0x20, 0x65, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, +0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x10d3, 0x10d0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x6e, 0x64, 0x20, 0x25, +0x32, 0x25, 0x31, 0x20, 0x3ba, 0x3b1, 0x3b9, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x61, 0x6d, 0x6d, 0x61, 0x20, 0x25, +0x32, 0x25, 0x31, 0x20, 0xa85, 0xaa8, 0xac7, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x5d5, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, +0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xe9, 0x73, 0x20, 0x25, +0x32, 0x25, 0x31, 0x2c, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32, +0x25, 0x31, 0x2c, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, +0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x4d9, 0x43d, +0x435, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x430, 0x43d, 0x430, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbc0f, 0x20, 0x25, +0x32, 0x25, 0x31, 0x20, 0xec1, 0xea5, 0xeb0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, +0x20, 0x6d, 0x70, 0xe9, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x72, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x25, +0x32, 0x20, 0xd0e, 0xd28, 0xd4d, 0xd28, 0xd3f, 0xd35, 0x25, 0x31, 0x20, 0xd15, 0xd42, 0xd1f, 0xd3e, 0xd24, 0xd46, 0x20, 0x25, 0x32, +0x25, 0x31, 0x2c, 0x20, 0x75, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x906, 0x923, +0x93f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x200f, 0x20, 0x25, 0x32, 0x25, 0x31, +0x60c, 0x20, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xa05, 0xa24, 0xa47, 0x20, +0x25, 0x32, 0x25, 0x31, 0x20, 0x219, 0x69, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x4d5, 0x43c, 0x4d5, 0x20, 0x25, 0x32, 0x25, +0x31, 0x2c, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, +0xa0, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x79, 0x20, 0x25, 0x32, 0x25, 0x31, +0x20, 0x6e, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6f, 0x63, 0x68, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbae, 0xbb1, +0xbcd, 0xbb1, 0xbc1, 0xbae, 0xbcd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xc2e, 0xc30, 0xc3f, 0xc2f, 0xc41, 0x20, 0x25, 0x32, 0x25, +0x31, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, +0x31, 0x20, 0x6d, 0x6f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x77, 0x65, +0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x627, 0x648, 0x631, 0x20, +0x25, 0x32, 0x25, 0x32, 0x60c, 0x20, 0x25, 0x31, 0x25, 0x31, 0x20, 0x76, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, +0xe0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x65, 0x2d, 0x25, 0x32, 0x49, 0x2d, 0x25, 0x31, 0x20, 0x6e, 0x65, +0x2d, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x70, 0x6c, +0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x74, 0x20, 0x25, +0x32, 0x25, 0x31, 0x20, 0x438, 0x486, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x6e, 0x29, 0x20, 0x25, 0x32, 0x25, +0x31, 0x2c, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x1e3f, 0x62, 0x25b, 0x6e, 0x20, 0x14b, +0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x70, 0x254, 0x70, 0x20, 0x25, 0x32, 0x25, 0x31, 0x540c, 0x25, 0x32, + +}; + +static const ushort date_format_data[] = { +0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, +0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x2f, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, +0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2d, 0x4d, 0x4d, +0x2d, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, +0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, +0x64, 0x64, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x4d, 0x2e, 0x79, 0x79, +0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x2f, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x1363, 0x64, 0x20, 0x4d, 0x4d, +0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x200f, 0x2f, 0x4d, 0x200f, 0x2f, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, +0x64, 0x60c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x60c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x2e, 0x4d, 0x4d, +0x2e, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x569, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x64, +0x64, 0x64, 0x64, 0x2d, 0x4d, 0x2d, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, +0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2c, +0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, +0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2f, 0x4d, 0x4d, 0x2f, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0x28, 0x27, +0x65, 0x27, 0x29, 0x27, 0x6b, 0x6f, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, +0x64, 0x2f, 0x4d, 0x2f, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf63, 0xf7c, 0xf0b, +0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0xf5a, 0xf7a, 0xf66, 0xf0b, 0x64, 0x64, 0x64, 0x2e, 0x4d, 0x4d, +0x2e, 0x79, 0x79, 0x20, 0x27, 0x433, 0x27, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, +0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x433, 0x27, 0x2e, 0x64, 0x64, 0x2d, 0x4d, 0x4d, 0x2d, 0x79, 0x79, 0x64, 0x64, +0x64, 0x64, 0x104a, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, +0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, +0x79, 0x79, 0x2f, 0x4d, 0x2f, 0x64, 0x79, 0x79, 0x79, 0x79, 0x5e74, 0x4d, 0x6708, 0x64, 0x65e5, 0x64, 0x64, 0x64, 0x64, 0x64, +0x2f, 0x4d, 0x2f, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x5e74, 0x4d, 0x6708, 0x64, 0x65e5, 0x20, 0x64, 0x64, 0x64, +0x64, 0x64, 0x64, 0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2e, +0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x2e, 0x20, 0x4d, +0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x27, 0x64, 0x65, 0x6e, 0x27, 0x20, 0x64, +0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2f, 0x4d, 0x4d, 0x2f, 0x79, 0x79, 0x4d, 0x2f, +0x64, 0x2f, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, +0x79, 0x79, 0x64, 0x2e, 0x4d, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2d, 0x4d, 0x4d, 0x2d, 0x64, 0x64, 0x64, 0x64, +0x64, 0x64, 0x2c, 0x20, 0x64, 0x27, 0x6d, 0x68, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, +0x64, 0x64, 0x64, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, +0x2c, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, +0x20, 0x64, 0x20, 0x5d1, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x20, 0x4d, +0x4d, 0x2e, 0x20, 0x64, 0x64, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2e, 0x2c, +0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x436, 0x27, 0x2e, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, +0x4d, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x2f, 0x4d, 0x4d, 0x2f, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, +0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, +0x2d, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2d, 0x27, 0x436, 0x27, 0x2e, 0x79, 0x79, 0x2e, 0x20, +0x4d, 0x2e, 0x20, 0x64, 0x2e, 0x79, 0x79, 0x79, 0x79, 0xb144, 0x20, 0x4d, 0xc6d4, 0x20, 0x64, 0xc77c, 0x20, 0x64, 0x64, 0x64, +0x64, 0x64, 0x64, 0x64, 0x64, 0x20, 0xe97, 0xeb5, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, +0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x20, 0x27, 0x67, 0x61, 0x64, 0x61, 0x27, 0x20, 0x64, +0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x6d, 0x27, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, +0x20, 0x64, 0x20, 0x27, 0x64, 0x27, 0x2e, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2e, 0x4d, 0x2e, 0x79, 0x79, +0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x4d, 0x4d, +0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x74, +0x61, 0x27, 0x2019, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, +0x79, 0x79, 0x79, 0x20, 0x27, 0x43e, 0x43d, 0x44b, 0x27, 0x20, 0x4d, 0x4d, 0x20, 0x27, 0x441, 0x430, 0x440, 0x44b, 0x43d, 0x27, +0x20, 0x64, 0x64, 0x64, 0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2d, 0x4d, 0x2d, 0x79, 0x79, 0x64, 0x64, +0x64, 0x64, 0x20, 0x62f, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x62f, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, +0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27, +0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x69, 0x6c, 0x73, 0x27, 0x20, 0x64, 0x20, 0x27, +0x64, 0x61, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x4d, 0x2e, 0x79, 0x79, 0x2e, +0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, +0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, +0x430, 0x437, 0x27, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x64, +0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, +0x4d, 0x20, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x64, 0x20, 0x27, 0x64, +0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x4d, 0x4d, 0x2f, +0x64, 0x64, 0x2f, 0x79, 0x79, 0x64, 0x64, 0x2d, 0x4d, 0x4d, 0x2d, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2c, 0x20, 0x4d, 0x4d, +0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0xe17, 0xe35, 0xe48, +0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, +0x4d, 0xf60, 0xf72, 0xf0b, 0xf5a, 0xf7a, 0xf66, 0xf0b, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x1363, +0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x1218, 0x12d3, 0x120d, 0x1272, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, +0x64, 0x64, 0x1361, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x1218, 0x12d3, 0x120d, 0x1272, 0x20, 0x79, 0x79, 0x79, +0x79, 0x64, 0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, +0x79, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x60c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x60c, 0x20, +0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, +0x79, 0x20, 0x27, 0x440, 0x27, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x20, 0x646, 0x686, 0x6cc, 0x20, 0x6cc, 0x6cc, 0x644, 0x20, 0x64, +0x20, 0x646, 0x686, 0x6cc, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x20, 0x6a9, 0x648, 0x646, 0x6cc, 0x64, +0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x6e, 0x67, 0xe0, 0x79, 0x27, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, +0x27, 0x6e, 0x103, 0x6d, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79, 0x2e, 0x64, +0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x61, 0x6c, +0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, +0x6c, 0x69, 0x61, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, +0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x20, 0x4d, +0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64, 0xe4, 0x27, 0x20, 0x64, 0x2e, 0x20, +0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x4d, 0x4d, 0x2e, 0x64, 0x64, 0x64, +0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x43b, 0x27, 0x2e, 0x20, 0x79, 0x79, 0x79, +0x79, 0x2e, 0x64, 0x2f, 0x4d, 0x4d, 0x2f, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2f, 0x4d, 0x2f, 0x64, 0x79, 0x79, 0x79, +0x79, 0x20, 0x27, 0x441, 0x44b, 0x43b, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x43a, 0x4af, 0x43d, 0x44d, +0x27, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, +0x64, 0x20, 0x2c, 0x20, 0x27, 0x6c, 0x79, 0x25b, 0x27, 0x30c, 0x2bc, 0x20, 0x64, 0x20, 0x27, 0x6e, 0x61, 0x27, 0x20, 0x4d, +0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79 +}; + +static const ushort time_format_data[] = { +0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x68, 0x3a, +0x6d, 0x6d, 0x20, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x48, 0x48, 0x3a, +0x6d, 0x6d, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x2c, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x6d, 0x48, +0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x2c, 0x20, 0x74, 0x68, 0x2e, +0x6d, 0x6d, 0x2e, 0x20, 0x41, 0x50, 0x68, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x48, 0x48, +0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0xf46, 0xf74, 0xf0b, 0xf5a, 0xf7c, 0xf51, 0xf0b, 0x20, 0x68, 0x20, +0xf66, 0xf90, 0xf62, 0xf0b, 0xf58, 0xf0b, 0x20, 0x6d, 0x6d, 0x20, 0x41, 0x50, 0xf46, 0xf74, 0xf0b, 0xf5a, 0xf7c, 0xf51, 0xf0b, 0x20, +0x68, 0x20, 0xf66, 0xf90, 0xf62, 0xf0b, 0xf58, 0xf0b, 0x20, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x48, +0x48, 0x2e, 0x6d, 0x6d, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, +0x74, 0x20, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, +0x20, 0x5b, 0x74, 0x5d, 0x68, 0x2e, 0x6d, 0x6d, 0x20, 0x41, 0x50, 0x48, 0x2e, 0x6d, 0x6d, 0x48, 0x2e, 0x6d, 0x6d, 0x2e, +0x73, 0x73, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, +0x6d, 0x20, 0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20, 0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, 0x74, 0x48, 0x48, 0x2e, 0x6d, +0x6d, 0x3a, 0x73, 0x73, 0x20, 0x27, 0x68, 0x27, 0x20, 0x74, 0x68, 0x68, 0x3a, 0x6d, 0x6d, 0x20, 0x41, 0x50, 0x68, 0x68, +0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x48, 0x6642, 0x6d, 0x6d, 0x5206, 0x73, 0x73, 0x79d2, 0x20, +0x74, 0x41, 0x50, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x41, 0x50, 0x20, 0x68, 0xc2dc, 0x20, 0x6d, 0xbd84, 0x20, 0x73, 0xcd08, 0x20, +0x74, 0x48, 0x20, 0xec2, 0xea1, 0xe87, 0x20, 0x6d, 0x20, 0xe99, 0xeb2, 0xe97, 0xeb5, 0x20, 0x73, 0x73, 0x20, 0xea7, 0xeb4, 0xe99, +0xeb2, 0xe97, 0xeb5, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0x27, 0x6b, 0x6c, 0x27, +0x2e, 0x20, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x41, 0x50, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, +0x73, 0x73, 0x20, 0x74, 0x48, 0x20, 0xe19, 0xe32, 0xe2c, 0xe34, 0xe01, 0xe32, 0x20, 0x6d, 0x6d, 0x20, 0xe19, 0xe32, 0xe17, 0xe35, +0x20, 0x73, 0x73, 0x20, 0xe27, 0xe34, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x74, 0x27, 0x6b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x48, +0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x41, 0x50, 0x20, 0x27, 0x67, 0x61, 0x27, 0x20, 0x68, 0x3a, 0x6d, 0x6d, +0x41, 0x50, 0x20, 0x27, 0x67, 0x61, 0x27, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x74, 0x20, 0x68, +0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x48, 0x3a, 0x6d, 0x6d, 0x20, 0x27, 0x68, 0x6f, 0x64, 0x17a, 0x27, +0x2e +}; + +static const ushort months_data[] = { +0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, +0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x63, 0x74, 0x3b, +0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x63, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x79, 0x3b, 0x46, 0x65, 0x62, 0x72, +0x75, 0x61, 0x72, 0x79, 0x3b, 0x4d, 0x61, 0x72, 0x63, 0x68, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, +0x3b, 0x4a, 0x75, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6c, 0x79, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, +0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, +0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, +0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x31, 0x3b, +0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b, 0x38, 0x3b, 0x39, 0x3b, 0x31, 0x30, 0x3b, 0x31, +0x31, 0x3b, 0x31, 0x32, 0x3b, 0x41, 0x6d, 0x61, 0x3b, 0x47, 0x75, 0x72, 0x3b, 0x42, 0x69, 0x74, 0x3b, 0x45, 0x6c, 0x62, +0x3b, 0x43, 0x61, 0x6d, 0x3b, 0x57, 0x61, 0x78, 0x3b, 0x41, 0x64, 0x6f, 0x3b, 0x48, 0x61, 0x67, 0x3b, 0x46, 0x75, 0x6c, +0x3b, 0x4f, 0x6e, 0x6b, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x4d, 0x75, 0x64, 0x3b, 0x41, 0x6d, 0x61, 0x6a, 0x6a, 0x69, 0x69, +0x3b, 0x47, 0x75, 0x72, 0x61, 0x61, 0x6e, 0x64, 0x68, 0x61, 0x6c, 0x61, 0x3b, 0x42, 0x69, 0x74, 0x6f, 0x6f, 0x74, 0x65, +0x65, 0x73, 0x73, 0x61, 0x3b, 0x45, 0x6c, 0x62, 0x61, 0x3b, 0x43, 0x61, 0x61, 0x6d, 0x73, 0x61, 0x3b, 0x57, 0x61, 0x78, +0x61, 0x62, 0x61, 0x6a, 0x6a, 0x69, 0x69, 0x3b, 0x41, 0x64, 0x6f, 0x6f, 0x6c, 0x65, 0x65, 0x73, 0x73, 0x61, 0x3b, 0x48, +0x61, 0x67, 0x61, 0x79, 0x79, 0x61, 0x3b, 0x46, 0x75, 0x75, 0x6c, 0x62, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x6e, 0x6b, 0x6f, +0x6c, 0x6f, 0x6c, 0x65, 0x65, 0x73, 0x73, 0x61, 0x3b, 0x53, 0x61, 0x64, 0x61, 0x61, 0x73, 0x61, 0x3b, 0x4d, 0x75, 0x64, +0x64, 0x65, 0x65, 0x3b, 0x4d, 0x30, 0x31, 0x3b, 0x4d, 0x30, 0x32, 0x3b, 0x4d, 0x30, 0x33, 0x3b, 0x4d, 0x30, 0x34, 0x3b, +0x4d, 0x30, 0x35, 0x3b, 0x4d, 0x30, 0x36, 0x3b, 0x4d, 0x30, 0x37, 0x3b, 0x4d, 0x30, 0x38, 0x3b, 0x4d, 0x30, 0x39, 0x3b, +0x4d, 0x31, 0x30, 0x3b, 0x4d, 0x31, 0x31, 0x3b, 0x4d, 0x31, 0x32, 0x3b, 0x4a, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, +0x2e, 0x3b, 0x4d, 0x72, 0x74, 0x2e, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, +0x3b, 0x4a, 0x75, 0x6c, 0x2e, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, +0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x73, 0x2e, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x65, 0x3b, +0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x65, 0x3b, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x69, +0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x65, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x65, 0x3b, 0x41, 0x75, +0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, +0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, +0x65, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x53, 0x68, 0x6b, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x50, 0x72, 0x69, 0x3b, 0x4d, +0x61, 0x6a, 0x3b, 0x51, 0x65, 0x72, 0x3b, 0x4b, 0x6f, 0x72, 0x3b, 0x47, 0x73, 0x68, 0x3b, 0x53, 0x68, 0x74, 0x3b, 0x54, +0x65, 0x74, 0x3b, 0x4e, 0xeb, 0x6e, 0x3b, 0x44, 0x68, 0x6a, 0x3b, 0x4a, 0x61, 0x6e, 0x61, 0x72, 0x3b, 0x53, 0x68, 0x6b, +0x75, 0x72, 0x74, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x3b, 0x50, 0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x4d, 0x61, 0x6a, 0x3b, 0x51, +0x65, 0x72, 0x73, 0x68, 0x6f, 0x72, 0x3b, 0x4b, 0x6f, 0x72, 0x72, 0x69, 0x6b, 0x3b, 0x47, 0x75, 0x73, 0x68, 0x74, 0x3b, +0x53, 0x68, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x3b, 0x54, 0x65, 0x74, 0x6f, 0x72, 0x3b, 0x4e, 0xeb, 0x6e, 0x74, 0x6f, 0x72, +0x3b, 0x44, 0x68, 0x6a, 0x65, 0x74, 0x6f, 0x72, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, 0x4d, 0x3b, 0x51, +0x3b, 0x4b, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x61, 0x72, 0x3b, 0x73, +0x68, 0x6b, 0x75, 0x72, 0x74, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x70, 0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, +0x3b, 0x71, 0x65, 0x72, 0x73, 0x68, 0x6f, 0x72, 0x3b, 0x6b, 0x6f, 0x72, 0x72, 0x69, 0x6b, 0x3b, 0x67, 0x75, 0x73, 0x68, +0x74, 0x3b, 0x73, 0x68, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x3b, 0x74, 0x65, 0x74, 0x6f, 0x72, 0x3b, 0x6e, 0xeb, 0x6e, 0x74, +0x6f, 0x72, 0x3b, 0x64, 0x68, 0x6a, 0x65, 0x74, 0x6f, 0x72, 0x3b, 0x1303, 0x1295, 0x12e9, 0x3b, 0x134c, 0x1265, 0x1229, 0x3b, 0x121b, +0x122d, 0x127d, 0x3b, 0x12a4, 0x1355, 0x122a, 0x3b, 0x121c, 0x12ed, 0x3b, 0x1301, 0x1295, 0x3b, 0x1301, 0x120b, 0x12ed, 0x3b, 0x12a6, 0x1308, 0x1235, +0x3b, 0x1234, 0x1355, 0x1274, 0x3b, 0x12a6, 0x12ad, 0x1276, 0x3b, 0x1296, 0x126c, 0x121d, 0x3b, 0x12f2, 0x1234, 0x121d, 0x3b, 0x1303, 0x1295, 0x12e9, +0x12c8, 0x122a, 0x3b, 0x134c, 0x1265, 0x1229, 0x12c8, 0x122a, 0x3b, 0x121b, 0x122d, 0x127d, 0x3b, 0x12a4, 0x1355, 0x122a, 0x120d, 0x3b, 0x121c, 0x12ed, +0x3b, 0x1301, 0x1295, 0x3b, 0x1301, 0x120b, 0x12ed, 0x3b, 0x12a6, 0x1308, 0x1235, 0x1275, 0x3b, 0x1234, 0x1355, 0x1274, 0x121d, 0x1260, 0x122d, 0x3b, +0x12a6, 0x12ad, 0x1276, 0x1260, 0x122d, 0x3b, 0x1296, 0x126c, 0x121d, 0x1260, 0x122d, 0x3b, 0x12f2, 0x1234, 0x121d, 0x1260, 0x122d, 0x3b, 0x1303, 0x3b, +0x134c, 0x3b, 0x121b, 0x3b, 0x12a4, 0x3b, 0x121c, 0x3b, 0x1301, 0x3b, 0x1301, 0x3b, 0x12a6, 0x3b, 0x1234, 0x3b, 0x12a6, 0x3b, 0x1296, 0x3b, +0x12f2, 0x3b, 0x64a, 0x646, 0x627, 0x64a, 0x631, 0x3b, 0x641, 0x628, 0x631, 0x627, 0x64a, 0x631, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, +0x623, 0x628, 0x631, 0x64a, 0x644, 0x3b, 0x645, 0x627, 0x64a, 0x648, 0x3b, 0x64a, 0x648, 0x646, 0x64a, 0x648, 0x3b, 0x64a, 0x648, 0x644, +0x64a, 0x648, 0x3b, 0x623, 0x63a, 0x633, 0x637, 0x633, 0x3b, 0x633, 0x628, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x623, 0x643, 0x62a, 0x648, +0x628, 0x631, 0x3b, 0x646, 0x648, 0x641, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x64a, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x64a, 0x3b, 0x641, +0x3b, 0x645, 0x3b, 0x623, 0x3b, 0x648, 0x3b, 0x646, 0x3b, 0x644, 0x3b, 0x63a, 0x3b, 0x633, 0x3b, 0x643, 0x3b, 0x628, 0x3b, 0x62f, +0x3b, 0x62c, 0x627, 0x646, 0x641, 0x64a, 0x3b, 0x641, 0x64a, 0x641, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x623, 0x641, +0x631, 0x64a, 0x644, 0x3b, 0x645, 0x627, 0x64a, 0x3b, 0x62c, 0x648, 0x627, 0x646, 0x3b, 0x62c, 0x648, 0x64a, 0x644, 0x64a, 0x629, 0x3b, +0x623, 0x648, 0x62a, 0x3b, 0x633, 0x628, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x623, 0x643, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, +0x641, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x64a, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x623, 0x3b, +0x645, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x623, 0x3b, 0x633, 0x3b, 0x623, 0x3b, 0x646, 0x3b, 0x62f, 0x3b, 0x643, 0x627, 0x646, 0x648, +0x646, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x64a, 0x3b, 0x634, 0x628, 0x627, 0x637, 0x3b, 0x622, 0x630, 0x627, 0x631, 0x3b, 0x646, +0x64a, 0x633, 0x627, 0x646, 0x3b, 0x623, 0x64a, 0x627, 0x631, 0x3b, 0x62d, 0x632, 0x64a, 0x631, 0x627, 0x646, 0x3b, 0x62a, 0x645, 0x648, +0x632, 0x3b, 0x622, 0x628, 0x3b, 0x623, 0x64a, 0x644, 0x648, 0x644, 0x3b, 0x62a, 0x634, 0x631, 0x64a, 0x646, 0x20, 0x627, 0x644, 0x623, +0x648, 0x644, 0x3b, 0x62a, 0x634, 0x631, 0x64a, 0x646, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x64a, 0x3b, 0x643, 0x627, 0x646, 0x648, +0x646, 0x20, 0x627, 0x644, 0x623, 0x648, 0x644, 0x3b, 0x643, 0x3b, 0x634, 0x3b, 0x622, 0x3b, 0x646, 0x3b, 0x623, 0x3b, 0x62d, 0x3b, +0x62a, 0x3b, 0x622, 0x3b, 0x623, 0x3b, 0x62a, 0x3b, 0x62a, 0x3b, 0x643, 0x3b, 0x643, 0x627, 0x646, 0x648, 0x646, 0x20, 0x627, 0x644, +0x62b, 0x627, 0x646, 0x64a, 0x3b, 0x634, 0x628, 0x627, 0x637, 0x3b, 0x622, 0x630, 0x627, 0x631, 0x3b, 0x646, 0x64a, 0x633, 0x627, 0x646, +0x3b, 0x623, 0x64a, 0x627, 0x631, 0x3b, 0x62d, 0x632, 0x64a, 0x631, 0x627, 0x646, 0x3b, 0x62a, 0x645, 0x648, 0x632, 0x3b, 0x622, 0x628, +0x3b, 0x623, 0x64a, 0x644, 0x648, 0x644, 0x3b, 0x62a, 0x634, 0x631, 0x6cc, 0x646, 0x20, 0x627, 0x644, 0x623, 0x648, 0x644, 0x3b, 0x62a, +0x634, 0x631, 0x64a, 0x646, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x64a, 0x3b, 0x643, 0x627, 0x646, 0x648, 0x646, 0x20, 0x627, 0x644, +0x623, 0x648, 0x644, 0x3b, 0x64a, 0x646, 0x627, 0x64a, 0x631, 0x3b, 0x641, 0x628, 0x631, 0x627, 0x64a, 0x631, 0x3b, 0x645, 0x627, 0x631, +0x633, 0x3b, 0x625, 0x628, 0x631, 0x64a, 0x644, 0x3b, 0x645, 0x627, 0x64a, 0x648, 0x3b, 0x64a, 0x648, 0x646, 0x64a, 0x648, 0x3b, 0x64a, +0x648, 0x644, 0x64a, 0x648, 0x3b, 0x623, 0x63a, 0x634, 0x62a, 0x3b, 0x634, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x623, 0x643, 0x62a, 0x648, +0x628, 0x631, 0x3b, 0x646, 0x648, 0x641, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x62c, 0x645, 0x628, 0x631, 0x3b, 0x64a, 0x3b, 0x641, 0x3b, +0x645, 0x3b, 0x625, 0x3b, 0x648, 0x3b, 0x646, 0x3b, 0x644, 0x3b, 0x63a, 0x3b, 0x634, 0x3b, 0x643, 0x3b, 0x628, 0x3b, 0x62f, 0x3b, +0x64a, 0x646, 0x627, 0x64a, 0x631, 0x3b, 0x641, 0x628, 0x631, 0x627, 0x64a, 0x631, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x623, 0x628, +0x631, 0x64a, 0x644, 0x3b, 0x645, 0x627, 0x64a, 0x3b, 0x64a, 0x648, 0x646, 0x64a, 0x648, 0x3b, 0x64a, 0x648, 0x644, 0x64a, 0x648, 0x632, +0x3b, 0x63a, 0x634, 0x62a, 0x3b, 0x634, 0x62a, 0x646, 0x628, 0x631, 0x3b, 0x623, 0x643, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, +0x646, 0x628, 0x631, 0x3b, 0x62f, 0x62c, 0x646, 0x628, 0x631, 0x3b, 0x64a, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x623, 0x3b, 0x645, 0x3b, +0x646, 0x3b, 0x644, 0x3b, 0x63a, 0x3b, 0x634, 0x3b, 0x643, 0x3b, 0x628, 0x3b, 0x62f, 0x3b, 0x570, 0x576, 0x57e, 0x3b, 0x583, 0x57f, +0x57e, 0x3b, 0x574, 0x580, 0x57f, 0x3b, 0x561, 0x57a, 0x580, 0x3b, 0x574, 0x575, 0x57d, 0x3b, 0x570, 0x576, 0x57d, 0x3b, 0x570, 0x56c, +0x57d, 0x3b, 0x585, 0x563, 0x57d, 0x3b, 0x57d, 0x565, 0x57a, 0x3b, 0x570, 0x578, 0x56f, 0x3b, 0x576, 0x578, 0x575, 0x3b, 0x564, 0x565, +0x56f, 0x3b, 0x570, 0x578, 0x582, 0x576, 0x57e, 0x561, 0x580, 0x3b, 0x583, 0x565, 0x57f, 0x580, 0x57e, 0x561, 0x580, 0x3b, 0x574, 0x561, +0x580, 0x57f, 0x3b, 0x561, 0x57a, 0x580, 0x56b, 0x56c, 0x3b, 0x574, 0x561, 0x575, 0x56b, 0x57d, 0x3b, 0x570, 0x578, 0x582, 0x576, 0x56b, +0x57d, 0x3b, 0x570, 0x578, 0x582, 0x56c, 0x56b, 0x57d, 0x3b, 0x585, 0x563, 0x578, 0x57d, 0x57f, 0x578, 0x57d, 0x3b, 0x57d, 0x565, 0x57a, +0x57f, 0x565, 0x574, 0x562, 0x565, 0x580, 0x3b, 0x570, 0x578, 0x56f, 0x57f, 0x565, 0x574, 0x562, 0x565, 0x580, 0x3b, 0x576, 0x578, 0x575, +0x565, 0x574, 0x562, 0x565, 0x580, 0x3b, 0x564, 0x565, 0x56f, 0x57f, 0x565, 0x574, 0x562, 0x565, 0x580, 0x3b, 0x540, 0x3b, 0x553, 0x3b, +0x544, 0x3b, 0x531, 0x3b, 0x544, 0x3b, 0x540, 0x3b, 0x540, 0x3b, 0x555, 0x3b, 0x54d, 0x3b, 0x540, 0x3b, 0x546, 0x3b, 0x534, 0x3b, +0x570, 0x578, 0x582, 0x576, 0x57e, 0x561, 0x580, 0x56b, 0x3b, 0x583, 0x565, 0x57f, 0x580, 0x57e, 0x561, 0x580, 0x56b, 0x3b, 0x574, 0x561, +0x580, 0x57f, 0x56b, 0x3b, 0x561, 0x57a, 0x580, 0x56b, 0x56c, 0x56b, 0x3b, 0x574, 0x561, 0x575, 0x56b, 0x57d, 0x56b, 0x3b, 0x570, 0x578, +0x582, 0x576, 0x56b, 0x57d, 0x56b, 0x3b, 0x570, 0x578, 0x582, 0x56c, 0x56b, 0x57d, 0x56b, 0x3b, 0x585, 0x563, 0x578, 0x57d, 0x57f, 0x578, +0x57d, 0x56b, 0x3b, 0x57d, 0x565, 0x57a, 0x57f, 0x565, 0x574, 0x562, 0x565, 0x580, 0x56b, 0x3b, 0x570, 0x578, 0x56f, 0x57f, 0x565, 0x574, +0x562, 0x565, 0x580, 0x56b, 0x3b, 0x576, 0x578, 0x575, 0x565, 0x574, 0x562, 0x565, 0x580, 0x56b, 0x3b, 0x564, 0x565, 0x56f, 0x57f, 0x565, +0x574, 0x562, 0x565, 0x580, 0x56b, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, 0x3b, 0x9ab, 0x9c7, 0x9ac, 0x9cd, 0x9f0, 0x9c1, 0x3b, 0x9ae, 0x9be, +0x9f0, 0x9cd, 0x99a, 0x3b, 0x98f, 0x9aa, 0x9cd, 0x9f0, 0x9bf, 0x9b2, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, +0x9b2, 0x9be, 0x987, 0x3b, 0x986, 0x997, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, 0x99f, 0x3b, 0x985, 0x995, 0x9cd, 0x99f, 0x9cb, 0x3b, 0x9a8, +0x9ad, 0x9c7, 0x3b, 0x9a1, 0x9bf, 0x9b8, 0x9c7, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, 0x9f1, 0x9be, 0x9f0, 0x9c0, 0x3b, 0x9ab, 0x9c7, 0x9ac, +0x9cd, 0x9f0, 0x9c1, 0x9f1, 0x9be, 0x9f0, 0x9c0, 0x3b, 0x9ae, 0x9be, 0x9f0, 0x9cd, 0x99a, 0x3b, 0x98f, 0x9aa, 0x9cd, 0x9f0, 0x9bf, 0x9b2, +0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x9be, 0x987, 0x3b, 0x986, 0x997, 0x9b7, 0x9cd, 0x99f, 0x3b, +0x99b, 0x9c7, 0x9aa, 0x9cd, 0x9a4, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9f0, 0x3b, 0x985, 0x995, 0x9cd, 0x99f, 0x9cb, 0x9ac, 0x9f0, 0x3b, 0x9a8, +0x9f1, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9f0, 0x3b, 0x9a1, 0x9bf, 0x99a, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9f0, 0x3b, 0x79, 0x61, 0x6e, 0x3b, +0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x6e, 0x3b, +0x69, 0x79, 0x6c, 0x3b, 0x61, 0x76, 0x71, 0x3b, 0x73, 0x65, 0x6e, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x79, 0x3b, +0x64, 0x65, 0x6b, 0x3b, 0x59, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x4d, 0x61, +0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x130, 0x79, 0x75, 0x6e, 0x3b, 0x130, 0x79, +0x75, 0x6c, 0x3b, 0x41, 0x76, 0x71, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x6e, 0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x4f, +0x6b, 0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x4e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x44, 0x65, 0x6b, 0x61, 0x62, 0x72, +0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, +0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x75, 0x6e, 0x3b, 0x69, 0x79, 0x75, 0x6c, 0x3b, +0x61, 0x76, 0x71, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x6e, 0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x79, +0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x458, 0x430, +0x43d, 0x432, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, +0x435, 0x43b, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x458, 0x443, 0x43d, 0x3b, 0x438, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, +0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x458, 0x430, 0x431, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x458, 0x430, 0x431, 0x440, +0x3b, 0x43d, 0x43e, 0x458, 0x430, 0x431, 0x440, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0x55, 0x72, 0x74, 0x2e, 0x3b, +0x4f, 0x74, 0x73, 0x2e, 0x3b, 0x4d, 0x61, 0x72, 0x2e, 0x3b, 0x41, 0x70, 0x69, 0x2e, 0x3b, 0x4d, 0x61, 0x69, 0x2e, 0x3b, +0x45, 0x6b, 0x61, 0x2e, 0x3b, 0x55, 0x7a, 0x74, 0x2e, 0x3b, 0x41, 0x62, 0x75, 0x2e, 0x3b, 0x49, 0x72, 0x61, 0x2e, 0x3b, +0x55, 0x72, 0x72, 0x2e, 0x3b, 0x41, 0x7a, 0x61, 0x2e, 0x3b, 0x41, 0x62, 0x65, 0x2e, 0x3b, 0x55, 0x72, 0x74, 0x61, 0x72, +0x72, 0x69, 0x6c, 0x61, 0x3b, 0x4f, 0x74, 0x73, 0x61, 0x69, 0x6c, 0x61, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x78, 0x6f, 0x61, +0x3b, 0x41, 0x70, 0x69, 0x72, 0x69, 0x6c, 0x61, 0x3b, 0x4d, 0x61, 0x69, 0x61, 0x74, 0x7a, 0x61, 0x3b, 0x45, 0x6b, 0x61, +0x69, 0x6e, 0x61, 0x3b, 0x55, 0x7a, 0x74, 0x61, 0x69, 0x6c, 0x61, 0x3b, 0x41, 0x62, 0x75, 0x7a, 0x74, 0x75, 0x61, 0x3b, +0x49, 0x72, 0x61, 0x69, 0x6c, 0x61, 0x3b, 0x55, 0x72, 0x72, 0x69, 0x61, 0x3b, 0x41, 0x7a, 0x61, 0x72, 0x6f, 0x61, 0x3b, +0x41, 0x62, 0x65, 0x6e, 0x64, 0x75, 0x61, 0x3b, 0x55, 0x3b, 0x4f, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, +0x55, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x55, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x75, 0x72, 0x74, 0x2e, 0x3b, 0x6f, 0x74, 0x73, +0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x69, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x2e, 0x3b, 0x65, 0x6b, 0x61, +0x2e, 0x3b, 0x75, 0x7a, 0x74, 0x2e, 0x3b, 0x61, 0x62, 0x75, 0x2e, 0x3b, 0x69, 0x72, 0x61, 0x2e, 0x3b, 0x75, 0x72, 0x72, +0x2e, 0x3b, 0x61, 0x7a, 0x61, 0x2e, 0x3b, 0x61, 0x62, 0x65, 0x2e, 0x3b, 0x75, 0x72, 0x74, 0x61, 0x72, 0x72, 0x69, 0x6c, +0x61, 0x6b, 0x3b, 0x6f, 0x74, 0x73, 0x61, 0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x78, 0x6f, 0x61, 0x6b, +0x3b, 0x61, 0x70, 0x69, 0x72, 0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x6d, 0x61, 0x69, 0x61, 0x74, 0x7a, 0x61, 0x6b, 0x3b, 0x65, +0x6b, 0x61, 0x69, 0x6e, 0x61, 0x6b, 0x3b, 0x75, 0x7a, 0x74, 0x61, 0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x61, 0x62, 0x75, 0x7a, +0x74, 0x75, 0x61, 0x6b, 0x3b, 0x69, 0x72, 0x61, 0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x75, 0x72, 0x72, 0x69, 0x61, 0x6b, 0x3b, +0x61, 0x7a, 0x61, 0x72, 0x6f, 0x61, 0x6b, 0x3b, 0x61, 0x62, 0x65, 0x6e, 0x64, 0x75, 0x61, 0x6b, 0x3b, 0x99c, 0x9be, 0x9a8, +0x9c1, 0x9af, 0x9bc, 0x9be, 0x9b0, 0x9c0, 0x3b, 0x9ab, 0x9c7, 0x9ac, 0x9cd, 0x9b0, 0x9c1, 0x9af, 0x9bc, 0x9be, 0x9b0, 0x9c0, 0x3b, 0x9ae, +0x9be, 0x9b0, 0x9cd, 0x99a, 0x3b, 0x98f, 0x9aa, 0x9cd, 0x9b0, 0x9bf, 0x9b2, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, +0x9c1, 0x9b2, 0x9be, 0x987, 0x3b, 0x986, 0x997, 0x9b8, 0x9cd, 0x99f, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, 0x99f, 0x9c7, 0x9ae, 0x9cd, 0x9ac, +0x9b0, 0x3b, 0x985, 0x995, 0x9cd, 0x99f, 0x9cb, 0x9ac, 0x9b0, 0x3b, 0x9a8, 0x9ad, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x9a1, 0x9bf, +0x9b8, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x99c, 0x9be, 0x3b, 0x9ab, 0x9c7, 0x3b, 0x9ae, 0x9be, 0x3b, 0x98f, 0x3b, 0x9ae, 0x9c7, +0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x3b, 0x986, 0x3b, 0x9b8, 0x9c7, 0x3b, 0x985, 0x3b, 0x9a8, 0x3b, 0x9a1, 0x9bf, 0x3b, +0xf5f, 0xfb3, 0xf0b, 0xf21, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf22, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf23, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf24, 0x3b, +0xf5f, 0xfb3, 0xf0b, 0xf25, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf26, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf27, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf28, 0x3b, +0xf5f, 0xfb3, 0xf0b, 0xf29, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf21, 0xf20, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf21, 0xf21, 0x3b, 0xf5f, 0xfb3, 0xf0b, +0xf21, 0xf22, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xf44, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, +0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, +0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, +0xf54, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, +0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, +0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, +0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, +0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, +0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, +0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf21, 0x3b, 0xf22, 0x3b, 0xf23, 0x3b, +0xf24, 0x3b, 0xf25, 0x3b, 0xf26, 0x3b, 0xf27, 0x3b, 0xf28, 0x3b, 0xf29, 0x3b, 0xf21, 0xf20, 0x3b, 0xf21, 0xf21, 0x3b, 0xf21, 0xf22, +0x3b, 0xf21, 0x3b, 0xf22, 0x3b, 0xf23, 0x3b, 0xf24, 0x3b, 0xf25, 0x3b, 0xf26, 0x3b, 0xf27, 0x3b, 0xf28, 0x3b, 0xf29, 0x3b, 0xf21, +0xf20, 0x3b, 0xf21, 0xf21, 0x3b, 0x31, 0x32, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xf44, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf42, +0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, +0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, +0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, +0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, +0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, +0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, +0xf21, 0x3b, 0xf22, 0x3b, 0xf23, 0x3b, 0x34, 0x3b, 0xf25, 0x3b, 0xf26, 0x3b, 0xf27, 0x3b, 0xf28, 0x3b, 0x39, 0x3b, 0xf21, 0xf20, +0x3b, 0xf21, 0xf21, 0x3b, 0xf21, 0xf22, 0x3b, 0x47, 0x65, 0x6e, 0x2e, 0x3b, 0x43, 0x2bc, 0x68, 0x77, 0x65, 0x2e, 0x3b, 0x4d, +0x65, 0x75, 0x72, 0x2e, 0x3b, 0x45, 0x62, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x65, 0x3b, 0x4d, 0x65, 0x7a, 0x68, 0x2e, 0x3b, +0x47, 0x6f, 0x75, 0x65, 0x2e, 0x3b, 0x45, 0x6f, 0x73, 0x74, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x2e, 0x3b, 0x48, 0x65, 0x72, +0x65, 0x3b, 0x44, 0x75, 0x3b, 0x4b, 0x65, 0x72, 0x2e, 0x3b, 0x47, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x3b, 0x43, 0x2bc, 0x68, +0x77, 0x65, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x4d, 0x65, 0x75, 0x72, 0x7a, 0x68, 0x3b, 0x45, 0x62, 0x72, 0x65, 0x6c, 0x3b, +0x4d, 0x61, 0x65, 0x3b, 0x4d, 0x65, 0x7a, 0x68, 0x65, 0x76, 0x65, 0x6e, 0x3b, 0x47, 0x6f, 0x75, 0x65, 0x72, 0x65, 0x3b, +0x45, 0x6f, 0x73, 0x74, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x67, 0x6f, 0x6c, 0x6f, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x3b, 0x44, +0x75, 0x3b, 0x4b, 0x65, 0x72, 0x7a, 0x75, 0x3b, 0x30, 0x31, 0x3b, 0x30, 0x32, 0x3b, 0x30, 0x33, 0x3b, 0x30, 0x34, 0x3b, +0x30, 0x35, 0x3b, 0x30, 0x36, 0x3b, 0x30, 0x37, 0x3b, 0x30, 0x38, 0x3b, 0x30, 0x39, 0x3b, 0x31, 0x30, 0x3b, 0x31, 0x31, +0x3b, 0x31, 0x32, 0x3b, 0x47, 0x65, 0x6e, 0x2e, 0x3b, 0x43, 0x2bc, 0x68, 0x77, 0x65, 0x2e, 0x3b, 0x4d, 0x65, 0x75, 0x72, +0x2e, 0x3b, 0x45, 0x62, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x65, 0x3b, 0x4d, 0x65, 0x7a, 0x68, 0x2e, 0x3b, 0x47, 0x6f, 0x75, +0x65, 0x2e, 0x3b, 0x45, 0x6f, 0x73, 0x74, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x2e, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x3b, 0x44, +0x75, 0x3b, 0x4b, 0x7a, 0x75, 0x2e, 0x3b, 0x44f, 0x43d, 0x443, 0x3b, 0x444, 0x435, 0x432, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, +0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x44e, 0x43d, 0x438, 0x3b, 0x44e, 0x43b, 0x438, 0x3b, 0x430, 0x432, 0x433, 0x3b, +0x441, 0x435, 0x43f, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x435, 0x3b, 0x434, 0x435, 0x43a, 0x3b, 0x44f, 0x43d, 0x443, 0x430, +0x440, 0x438, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, +0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x44e, 0x43d, 0x438, 0x3b, 0x44e, 0x43b, 0x438, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, +0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x43c, 0x432, 0x440, 0x438, +0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x434, 0x435, 0x43a, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x44f, 0x3b, +0x444, 0x3b, 0x43c, 0x3b, 0x430, 0x3b, 0x43c, 0x3b, 0x44e, 0x3b, 0x44e, 0x3b, 0x430, 0x3b, 0x441, 0x3b, 0x43e, 0x3b, 0x43d, 0x3b, +0x434, 0x3b, 0x1007, 0x1014, 0x103a, 0x3b, 0x1016, 0x1031, 0x3b, 0x1019, 0x1010, 0x103a, 0x3b, 0x1027, 0x1015, 0x103c, 0x102e, 0x3b, 0x1019, 0x1031, +0x3b, 0x1007, 0x103d, 0x1014, 0x103a, 0x3b, 0x1007, 0x1030, 0x3b, 0x1029, 0x3b, 0x1005, 0x1000, 0x103a, 0x3b, 0x1021, 0x1031, 0x102c, 0x1000, 0x103a, +0x3b, 0x1014, 0x102d, 0x102f, 0x3b, 0x1012, 0x102e, 0x3b, 0x1007, 0x1014, 0x103a, 0x1014, 0x101d, 0x102b, 0x101b, 0x102e, 0x3b, 0x1016, 0x1031, 0x1016, +0x1031, 0x102c, 0x103a, 0x101d, 0x102b, 0x101b, 0x102e, 0x3b, 0x1019, 0x1010, 0x103a, 0x3b, 0x1027, 0x1015, 0x103c, 0x102e, 0x3b, 0x1019, 0x1031, 0x3b, +0x1007, 0x103d, 0x1014, 0x103a, 0x3b, 0x1007, 0x1030, 0x101c, 0x102d, 0x102f, 0x1004, 0x103a, 0x3b, 0x1029, 0x1002, 0x102f, 0x1010, 0x103a, 0x3b, 0x1005, +0x1000, 0x103a, 0x1010, 0x1004, 0x103a, 0x1018, 0x102c, 0x3b, 0x1021, 0x1031, 0x102c, 0x1000, 0x103a, 0x1010, 0x102d, 0x102f, 0x1018, 0x102c, 0x3b, 0x1014, +0x102d, 0x102f, 0x101d, 0x1004, 0x103a, 0x1018, 0x102c, 0x3b, 0x1012, 0x102e, 0x1007, 0x1004, 0x103a, 0x1018, 0x102c, 0x3b, 0x1007, 0x3b, 0x1016, 0x3b, +0x1019, 0x3b, 0x1027, 0x3b, 0x1019, 0x3b, 0x1007, 0x3b, 0x1007, 0x3b, 0x1029, 0x3b, 0x1005, 0x3b, 0x1021, 0x3b, 0x1014, 0x3b, 0x1012, 0x3b, +0x441, 0x442, 0x443, 0x3b, 0x43b, 0x44e, 0x442, 0x3b, 0x441, 0x430, 0x43a, 0x3b, 0x43a, 0x440, 0x430, 0x3b, 0x43c, 0x430, 0x439, 0x3b, +0x447, 0x44d, 0x440, 0x3b, 0x43b, 0x456, 0x43f, 0x3b, 0x436, 0x43d, 0x456, 0x3b, 0x432, 0x435, 0x440, 0x3b, 0x43a, 0x430, 0x441, 0x3b, +0x43b, 0x456, 0x441, 0x3b, 0x441, 0x43d, 0x435, 0x3b, 0x441, 0x442, 0x443, 0x434, 0x437, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x44e, 0x442, +0x44b, 0x3b, 0x441, 0x430, 0x43a, 0x430, 0x432, 0x456, 0x43a, 0x3b, 0x43a, 0x440, 0x430, 0x441, 0x430, 0x432, 0x456, 0x43a, 0x3b, 0x43c, +0x430, 0x439, 0x3b, 0x447, 0x44d, 0x440, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x456, 0x43f, 0x435, 0x43d, 0x44c, 0x3b, 0x436, 0x43d, +0x456, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x432, 0x435, 0x440, 0x430, 0x441, 0x435, 0x43d, 0x44c, 0x3b, 0x43a, 0x430, 0x441, 0x442, 0x440, +0x44b, 0x447, 0x43d, 0x456, 0x43a, 0x3b, 0x43b, 0x456, 0x441, 0x442, 0x430, 0x43f, 0x430, 0x434, 0x3b, 0x441, 0x43d, 0x435, 0x436, 0x430, +0x43d, 0x44c, 0x3b, 0x441, 0x3b, 0x43b, 0x3b, 0x441, 0x3b, 0x43a, 0x3b, 0x43c, 0x3b, 0x447, 0x3b, 0x43b, 0x3b, 0x436, 0x3b, 0x432, +0x3b, 0x43a, 0x3b, 0x43b, 0x3b, 0x441, 0x3b, 0x441, 0x442, 0x443, 0x3b, 0x43b, 0x44e, 0x442, 0x3b, 0x441, 0x430, 0x43a, 0x3b, 0x43a, +0x440, 0x430, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x447, 0x44d, 0x440, 0x3b, 0x43b, 0x456, 0x43f, 0x3b, 0x436, 0x43d, 0x456, 0x3b, 0x432, +0x435, 0x440, 0x3b, 0x43a, 0x430, 0x441, 0x3b, 0x43b, 0x456, 0x441, 0x3b, 0x441, 0x43d, 0x435, 0x3b, 0x441, 0x442, 0x443, 0x434, 0x437, +0x435, 0x43d, 0x44f, 0x3b, 0x43b, 0x44e, 0x442, 0x430, 0x433, 0x430, 0x3b, 0x441, 0x430, 0x43a, 0x430, 0x432, 0x456, 0x43a, 0x430, 0x3b, +0x43a, 0x440, 0x430, 0x441, 0x430, 0x432, 0x456, 0x43a, 0x430, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x447, 0x44d, 0x440, 0x432, 0x435, 0x43d, +0x44f, 0x3b, 0x43b, 0x456, 0x43f, 0x435, 0x43d, 0x44f, 0x3b, 0x436, 0x43d, 0x456, 0x45e, 0x43d, 0x44f, 0x3b, 0x432, 0x435, 0x440, 0x430, +0x441, 0x43d, 0x44f, 0x3b, 0x43a, 0x430, 0x441, 0x442, 0x440, 0x44b, 0x447, 0x43d, 0x456, 0x43a, 0x430, 0x3b, 0x43b, 0x456, 0x441, 0x442, +0x430, 0x43f, 0x430, 0x434, 0x430, 0x3b, 0x441, 0x43d, 0x435, 0x436, 0x43d, 0x44f, 0x3b, 0x1798, 0x1780, 0x179a, 0x17b6, 0x3b, 0x1780, 0x17bb, +0x1798, 0x17d2, 0x1797, 0x17c8, 0x3b, 0x1798, 0x17b8, 0x1793, 0x17b6, 0x3b, 0x1798, 0x17c1, 0x179f, 0x17b6, 0x3b, 0x17a7, 0x179f, 0x1797, 0x17b6, 0x3b, +0x1798, 0x17b7, 0x1790, 0x17bb, 0x1793, 0x17b6, 0x3b, 0x1780, 0x1780, 0x17d2, 0x1780, 0x178a, 0x17b6, 0x3b, 0x179f, 0x17b8, 0x17a0, 0x17b6, 0x3b, 0x1780, +0x1789, 0x17d2, 0x1789, 0x17b6, 0x3b, 0x178f, 0x17bb, 0x179b, 0x17b6, 0x3b, 0x179c, 0x17b7, 0x1785, 0x17d2, 0x1786, 0x17b7, 0x1780, 0x17b6, 0x3b, 0x1792, +0x17d2, 0x1793, 0x17bc, 0x3b, 0x67, 0x65, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x3b, +0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x67, 0x3b, 0x6a, 0x75, 0x6e, 0x79, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, +0x61, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, +0x65, 0x73, 0x2e, 0x3b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, +0xe7, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x67, 0x3b, 0x6a, 0x75, 0x6e, 0x79, 0x3b, 0x6a, 0x75, +0x6c, 0x69, 0x6f, 0x6c, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, +0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, 0x73, +0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x47, 0x4e, 0x3b, 0x46, 0x42, 0x3b, 0x4d, 0xc7, 0x3b, 0x41, 0x42, 0x3b, 0x4d, 0x47, +0x3b, 0x4a, 0x4e, 0x3b, 0x4a, 0x4c, 0x3b, 0x41, 0x47, 0x3b, 0x53, 0x54, 0x3b, 0x4f, 0x43, 0x3b, 0x4e, 0x56, 0x3b, 0x44, +0x53, 0x3b, 0x64, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x20, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, +0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x72, 0xe7, 0x3b, 0x64, 0x2019, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x64, 0x65, 0x20, +0x6d, 0x61, 0x69, 0x67, 0x3b, 0x64, 0x65, 0x20, 0x6a, 0x75, 0x6e, 0x79, 0x3b, 0x64, 0x65, 0x20, 0x6a, 0x75, 0x6c, 0x69, +0x6f, 0x6c, 0x3b, 0x64, 0x2019, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x3b, 0x64, 0x65, 0x20, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, +0x72, 0x65, 0x3b, 0x64, 0x2019, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, 0x20, 0x6e, 0x6f, 0x76, 0x65, +0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, 0x20, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x31, 0x6708, 0x3b, +0x32, 0x6708, 0x3b, 0x33, 0x6708, 0x3b, 0x34, 0x6708, 0x3b, 0x35, 0x6708, 0x3b, 0x36, 0x6708, 0x3b, 0x37, 0x6708, 0x3b, 0x38, 0x6708, +0x3b, 0x39, 0x6708, 0x3b, 0x31, 0x30, 0x6708, 0x3b, 0x31, 0x31, 0x6708, 0x3b, 0x31, 0x32, 0x6708, 0x3b, 0x4e00, 0x6708, 0x3b, 0x4e8c, +0x6708, 0x3b, 0x4e09, 0x6708, 0x3b, 0x56db, 0x6708, 0x3b, 0x4e94, 0x6708, 0x3b, 0x516d, 0x6708, 0x3b, 0x4e03, 0x6708, 0x3b, 0x516b, 0x6708, 0x3b, +0x4e5d, 0x6708, 0x3b, 0x5341, 0x6708, 0x3b, 0x5341, 0x4e00, 0x6708, 0x3b, 0x5341, 0x4e8c, 0x6708, 0x3b, 0x73, 0x69, 0x6a, 0x3b, 0x76, 0x65, +0x6c, 0x6a, 0x3b, 0x6f, 0x17e, 0x75, 0x3b, 0x74, 0x72, 0x61, 0x3b, 0x73, 0x76, 0x69, 0x3b, 0x6c, 0x69, 0x70, 0x3b, 0x73, +0x72, 0x70, 0x3b, 0x6b, 0x6f, 0x6c, 0x3b, 0x72, 0x75, 0x6a, 0x3b, 0x6c, 0x69, 0x73, 0x3b, 0x73, 0x74, 0x75, 0x3b, 0x70, +0x72, 0x6f, 0x3b, 0x73, 0x69, 0x6a, 0x65, 0x10d, 0x61, 0x6e, 0x6a, 0x3b, 0x76, 0x65, 0x6c, 0x6a, 0x61, 0x10d, 0x61, 0x3b, +0x6f, 0x17e, 0x75, 0x6a, 0x61, 0x6b, 0x3b, 0x74, 0x72, 0x61, 0x76, 0x61, 0x6e, 0x6a, 0x3b, 0x73, 0x76, 0x69, 0x62, 0x61, +0x6e, 0x6a, 0x3b, 0x6c, 0x69, 0x70, 0x61, 0x6e, 0x6a, 0x3b, 0x73, 0x72, 0x70, 0x61, 0x6e, 0x6a, 0x3b, 0x6b, 0x6f, 0x6c, +0x6f, 0x76, 0x6f, 0x7a, 0x3b, 0x72, 0x75, 0x6a, 0x61, 0x6e, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x3b, +0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x69, 0x3b, 0x70, 0x72, 0x6f, 0x73, 0x69, 0x6e, 0x61, 0x63, 0x3b, 0x31, 0x2e, 0x3b, +0x32, 0x2e, 0x3b, 0x33, 0x2e, 0x3b, 0x34, 0x2e, 0x3b, 0x35, 0x2e, 0x3b, 0x36, 0x2e, 0x3b, 0x37, 0x2e, 0x3b, 0x38, 0x2e, +0x3b, 0x39, 0x2e, 0x3b, 0x31, 0x30, 0x2e, 0x3b, 0x31, 0x31, 0x2e, 0x3b, 0x31, 0x32, 0x2e, 0x3b, 0x73, 0x69, 0x6a, 0x65, +0x10d, 0x6e, 0x6a, 0x61, 0x3b, 0x76, 0x65, 0x6c, 0x6a, 0x61, 0x10d, 0x65, 0x3b, 0x6f, 0x17e, 0x75, 0x6a, 0x6b, 0x61, 0x3b, +0x74, 0x72, 0x61, 0x76, 0x6e, 0x6a, 0x61, 0x3b, 0x73, 0x76, 0x69, 0x62, 0x6e, 0x6a, 0x61, 0x3b, 0x6c, 0x69, 0x70, 0x6e, +0x6a, 0x61, 0x3b, 0x73, 0x72, 0x70, 0x6e, 0x6a, 0x61, 0x3b, 0x6b, 0x6f, 0x6c, 0x6f, 0x76, 0x6f, 0x7a, 0x61, 0x3b, 0x72, +0x75, 0x6a, 0x6e, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x61, 0x3b, 0x73, 0x74, 0x75, 0x64, 0x65, +0x6e, 0x6f, 0x67, 0x61, 0x3b, 0x70, 0x72, 0x6f, 0x73, 0x69, 0x6e, 0x63, 0x61, 0x3b, 0x6c, 0x65, 0x64, 0x3b, 0xfa, 0x6e, +0x6f, 0x3b, 0x62, 0x159, 0x65, 0x3b, 0x64, 0x75, 0x62, 0x3b, 0x6b, 0x76, 0x11b, 0x3b, 0x10d, 0x76, 0x6e, 0x3b, 0x10d, 0x76, +0x63, 0x3b, 0x73, 0x72, 0x70, 0x3b, 0x7a, 0xe1, 0x159, 0x3b, 0x159, 0xed, 0x6a, 0x3b, 0x6c, 0x69, 0x73, 0x3b, 0x70, 0x72, +0x6f, 0x3b, 0x6c, 0x65, 0x64, 0x65, 0x6e, 0x3b, 0xfa, 0x6e, 0x6f, 0x72, 0x3b, 0x62, 0x159, 0x65, 0x7a, 0x65, 0x6e, 0x3b, +0x64, 0x75, 0x62, 0x65, 0x6e, 0x3b, 0x6b, 0x76, 0x11b, 0x74, 0x65, 0x6e, 0x3b, 0x10d, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x3b, +0x10d, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x65, 0x63, 0x3b, 0x73, 0x72, 0x70, 0x65, 0x6e, 0x3b, 0x7a, 0xe1, 0x159, 0xed, 0x3b, +0x159, 0xed, 0x6a, 0x65, 0x6e, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x3b, 0x70, 0x72, 0x6f, 0x73, 0x69, +0x6e, 0x65, 0x63, 0x3b, 0x6c, 0x65, 0x64, 0x6e, 0x61, 0x3b, 0xfa, 0x6e, 0x6f, 0x72, 0x61, 0x3b, 0x62, 0x159, 0x65, 0x7a, +0x6e, 0x61, 0x3b, 0x64, 0x75, 0x62, 0x6e, 0x61, 0x3b, 0x6b, 0x76, 0x11b, 0x74, 0x6e, 0x61, 0x3b, 0x10d, 0x65, 0x72, 0x76, +0x6e, 0x61, 0x3b, 0x10d, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x63, 0x65, 0x3b, 0x73, 0x72, 0x70, 0x6e, 0x61, 0x3b, 0x7a, 0xe1, +0x159, 0xed, 0x3b, 0x159, 0xed, 0x6a, 0x6e, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x75, 0x3b, 0x70, +0x72, 0x6f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, +0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, +0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, +0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, +0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, +0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, +0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, +0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, +0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, +0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, +0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x72, 0x74, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, +0x65, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, +0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, +0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x72, 0x74, +0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x65, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, +0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, +0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, +0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0x61, 0x72, 0x2e, +0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, 0x3b, 0x4a, 0x75, 0x6c, 0x2e, 0x3b, +0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, 0x2e, 0x3b, 0x4f, 0x63, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, +0x44, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x61, 0x6e, 0x3b, 0x76, 0x65, 0x65, 0x62, 0x72, 0x3b, 0x6d, 0xe4, 0x72, 0x74, +0x73, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6c, +0x69, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, +0x65, 0x74, 0x73, 0x3b, 0x6a, 0x61, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x76, 0x65, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, +0x3b, 0x6d, 0xe4, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, +0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, +0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, +0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x74, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x4d, +0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, +0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, +0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, +0x6f, 0x76, 0x3b, 0x64, 0x65, 0x73, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, +0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, +0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, +0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, +0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, +0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, +0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, +0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x74, 0x61, 0x6d, 0x6d, 0x69, 0x3b, 0x68, 0x65, 0x6c, 0x6d, 0x69, +0x3b, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x73, 0x3b, 0x68, 0x75, 0x68, 0x74, 0x69, 0x3b, 0x74, 0x6f, 0x75, 0x6b, 0x6f, 0x3b, +0x6b, 0x65, 0x73, 0xe4, 0x3b, 0x68, 0x65, 0x69, 0x6e, 0xe4, 0x3b, 0x65, 0x6c, 0x6f, 0x3b, 0x73, 0x79, 0x79, 0x73, 0x3b, +0x6c, 0x6f, 0x6b, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x72, 0x61, 0x73, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x3b, 0x74, 0x61, +0x6d, 0x6d, 0x69, 0x6b, 0x75, 0x75, 0x3b, 0x68, 0x65, 0x6c, 0x6d, 0x69, 0x6b, 0x75, 0x75, 0x3b, 0x6d, 0x61, 0x61, 0x6c, +0x69, 0x73, 0x6b, 0x75, 0x75, 0x3b, 0x68, 0x75, 0x68, 0x74, 0x69, 0x6b, 0x75, 0x75, 0x3b, 0x74, 0x6f, 0x75, 0x6b, 0x6f, +0x6b, 0x75, 0x75, 0x3b, 0x6b, 0x65, 0x73, 0xe4, 0x6b, 0x75, 0x75, 0x3b, 0x68, 0x65, 0x69, 0x6e, 0xe4, 0x6b, 0x75, 0x75, +0x3b, 0x65, 0x6c, 0x6f, 0x6b, 0x75, 0x75, 0x3b, 0x73, 0x79, 0x79, 0x73, 0x6b, 0x75, 0x75, 0x3b, 0x6c, 0x6f, 0x6b, 0x61, +0x6b, 0x75, 0x75, 0x3b, 0x6d, 0x61, 0x72, 0x72, 0x61, 0x73, 0x6b, 0x75, 0x75, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x6b, +0x75, 0x75, 0x3b, 0x54, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x48, 0x3b, 0x45, 0x3b, 0x53, +0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x74, 0x61, 0x6d, 0x6d, 0x69, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x68, 0x65, +0x6c, 0x6d, 0x69, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x73, 0x6b, 0x75, 0x75, 0x74, 0x61, +0x3b, 0x68, 0x75, 0x68, 0x74, 0x69, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x74, 0x6f, 0x75, 0x6b, 0x6f, 0x6b, 0x75, 0x75, +0x74, 0x61, 0x3b, 0x6b, 0x65, 0x73, 0xe4, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x68, 0x65, 0x69, 0x6e, 0xe4, 0x6b, 0x75, +0x75, 0x74, 0x61, 0x3b, 0x65, 0x6c, 0x6f, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x73, 0x79, 0x79, 0x73, 0x6b, 0x75, 0x75, +0x74, 0x61, 0x3b, 0x6c, 0x6f, 0x6b, 0x61, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x72, 0x61, 0x73, 0x6b, +0x75, 0x75, 0x74, 0x61, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x76, +0x2e, 0x3b, 0x66, 0xe9, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, +0x69, 0x3b, 0x6a, 0x75, 0x69, 0x6e, 0x3b, 0x6a, 0x75, 0x69, 0x6c, 0x2e, 0x3b, 0x61, 0x6f, 0xfb, 0x74, 0x3b, 0x73, 0x65, +0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0xe9, 0x63, 0x2e, 0x3b, 0x6a, +0x61, 0x6e, 0x76, 0x69, 0x65, 0x72, 0x3b, 0x66, 0xe9, 0x76, 0x72, 0x69, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, +0x61, 0x76, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x69, 0x6e, 0x3b, 0x6a, 0x75, 0x69, 0x6c, 0x6c, +0x65, 0x74, 0x3b, 0x61, 0x6f, 0xfb, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, +0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0xe9, 0x63, 0x65, 0x6d, +0x62, 0x72, 0x65, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0xe9, 0x76, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, +0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x69, 0x2e, 0x3b, 0x6a, 0x75, 0x69, 0x6c, 0x2e, 0x3b, 0x61, +0x6f, 0xfb, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, +0x64, 0xe9, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, +0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, +0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x73, 0x3b, 0x6a, 0x61, 0x6e, 0x6e, 0x65, 0x77, 0x61, +0x72, 0x69, 0x73, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x77, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x61, 0x72, 0x74, +0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x61, 0x69, 0x65, 0x3b, 0x6a, 0x75, 0x6e, 0x79, 0x3b, 0x6a, 0x75, +0x6c, 0x79, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x62, 0x65, +0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x69, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, +0x65, 0x73, 0x69, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x72, +0x74, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, +0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, +0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x46, 0x61, 0x6f, 0x69, 0x3b, 0x47, 0x65, 0x61, 0x72, 0x72, 0x3b, 0x4d, +0xe0, 0x72, 0x74, 0x3b, 0x47, 0x69, 0x62, 0x6c, 0x3b, 0x43, 0xe8, 0x69, 0x74, 0x3b, 0xd2, 0x67, 0x6d, 0x68, 0x3b, 0x49, +0x75, 0x63, 0x68, 0x3b, 0x4c, 0xf9, 0x6e, 0x61, 0x3b, 0x53, 0x75, 0x6c, 0x74, 0x3b, 0x44, 0xe0, 0x6d, 0x68, 0x3b, 0x53, +0x61, 0x6d, 0x68, 0x3b, 0x44, 0xf9, 0x62, 0x68, 0x3b, 0x41, 0x6d, 0x20, 0x46, 0x61, 0x6f, 0x69, 0x6c, 0x6c, 0x65, 0x61, +0x63, 0x68, 0x3b, 0x41, 0x6e, 0x20, 0x47, 0x65, 0x61, 0x72, 0x72, 0x61, 0x6e, 0x3b, 0x41, 0x6d, 0x20, 0x4d, 0xe0, 0x72, +0x74, 0x3b, 0x41, 0x6e, 0x20, 0x47, 0x69, 0x62, 0x6c, 0x65, 0x61, 0x6e, 0x3b, 0x41, 0x6e, 0x20, 0x43, 0xe8, 0x69, 0x74, +0x65, 0x61, 0x6e, 0x3b, 0x41, 0x6e, 0x20, 0x74, 0x2d, 0xd2, 0x67, 0x6d, 0x68, 0x69, 0x6f, 0x73, 0x3b, 0x41, 0x6e, 0x20, +0x74, 0x2d, 0x49, 0x75, 0x63, 0x68, 0x61, 0x72, 0x3b, 0x41, 0x6e, 0x20, 0x4c, 0xf9, 0x6e, 0x61, 0x73, 0x74, 0x61, 0x6c, +0x3b, 0x41, 0x6e, 0x20, 0x74, 0x2d, 0x53, 0x75, 0x6c, 0x74, 0x61, 0x69, 0x6e, 0x3b, 0x41, 0x6e, 0x20, 0x44, 0xe0, 0x6d, +0x68, 0x61, 0x69, 0x72, 0x3b, 0x41, 0x6e, 0x20, 0x74, 0x2d, 0x53, 0x61, 0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, 0x41, 0x6e, +0x20, 0x44, 0xf9, 0x62, 0x68, 0x6c, 0x61, 0x63, 0x68, 0x64, 0x3b, 0x46, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x43, +0x3b, 0xd2, 0x3b, 0x49, 0x3b, 0x4c, 0x3b, 0x53, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x44, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, +0x46, 0x68, 0x61, 0x6f, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x63, 0x68, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x47, 0x68, 0x65, +0x61, 0x72, 0x72, 0x61, 0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x4d, 0x68, 0xe0, 0x72, 0x74, 0x3b, 0x64, 0x68, 0x65, +0x6e, 0x20, 0x47, 0x68, 0x69, 0x62, 0x6c, 0x65, 0x61, 0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x43, 0x68, 0xe8, 0x69, +0x74, 0x65, 0x61, 0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0xd2, 0x67, 0x6d, 0x68, 0x69, 0x6f, 0x73, 0x3b, 0x64, 0x68, +0x65, 0x6e, 0x20, 0x49, 0x75, 0x63, 0x68, 0x61, 0x72, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x4c, 0xf9, 0x6e, 0x61, 0x73, +0x74, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x2d, 0x53, 0x75, 0x6c, 0x74, 0x61, 0x69, 0x6e, 0x3b, 0x64, +0x68, 0x65, 0x6e, 0x20, 0x44, 0xe0, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x2d, 0x53, +0x61, 0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x44, 0xf9, 0x62, 0x68, 0x6c, 0x61, 0x63, 0x68, +0x64, 0x3b, 0x58, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, +0x69, 0x3b, 0x58, 0x75, 0xf1, 0x3b, 0x58, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x75, +0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x63, 0x3b, 0x58, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x46, 0x65, +0x62, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, +0x61, 0x69, 0x6f, 0x3b, 0x58, 0x75, 0xf1, 0x6f, 0x3b, 0x58, 0x75, 0x6c, 0x6c, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, +0x6f, 0x3b, 0x53, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x4f, 0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b, 0x4e, +0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x44, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x58, 0x3b, 0x46, +0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x58, 0x3b, 0x58, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, +0x3b, 0x78, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x69, +0x3b, 0x78, 0x75, 0xf1, 0x3b, 0x78, 0x75, 0x6c, 0x3b, 0x61, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x6f, 0x75, 0x74, +0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x78, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, +0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, +0x69, 0x6f, 0x3b, 0x78, 0x75, 0xf1, 0x6f, 0x3b, 0x78, 0x75, 0x6c, 0x6c, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, +0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, +0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x10d8, 0x10d0, 0x10dc, 0x3b, +0x10d7, 0x10d4, 0x10d1, 0x3b, 0x10db, 0x10d0, 0x10e0, 0x3b, 0x10d0, 0x10de, 0x10e0, 0x3b, 0x10db, 0x10d0, 0x10d8, 0x3b, 0x10d8, 0x10d5, 0x10dc, 0x3b, +0x10d8, 0x10d5, 0x10da, 0x3b, 0x10d0, 0x10d2, 0x10d5, 0x3b, 0x10e1, 0x10d4, 0x10e5, 0x3b, 0x10dd, 0x10e5, 0x10e2, 0x3b, 0x10dc, 0x10dd, 0x10d4, 0x3b, +0x10d3, 0x10d4, 0x10d9, 0x3b, 0x10d8, 0x10d0, 0x10dc, 0x10d5, 0x10d0, 0x10e0, 0x10d8, 0x3b, 0x10d7, 0x10d4, 0x10d1, 0x10d4, 0x10e0, 0x10d5, 0x10d0, 0x10da, +0x10d8, 0x3b, 0x10db, 0x10d0, 0x10e0, 0x10e2, 0x10d8, 0x3b, 0x10d0, 0x10de, 0x10e0, 0x10d8, 0x10da, 0x10d8, 0x3b, 0x10db, 0x10d0, 0x10d8, 0x10e1, 0x10d8, +0x3b, 0x10d8, 0x10d5, 0x10dc, 0x10d8, 0x10e1, 0x10d8, 0x3b, 0x10d8, 0x10d5, 0x10da, 0x10d8, 0x10e1, 0x10d8, 0x3b, 0x10d0, 0x10d2, 0x10d5, 0x10d8, 0x10e1, +0x10e2, 0x10dd, 0x3b, 0x10e1, 0x10d4, 0x10e5, 0x10e2, 0x10d4, 0x10db, 0x10d1, 0x10d4, 0x10e0, 0x10d8, 0x3b, 0x10dd, 0x10e5, 0x10e2, 0x10dd, 0x10db, 0x10d1, +0x10d4, 0x10e0, 0x10d8, 0x3b, 0x10dc, 0x10dd, 0x10d4, 0x10db, 0x10d1, 0x10d4, 0x10e0, 0x10d8, 0x3b, 0x10d3, 0x10d4, 0x10d9, 0x10d4, 0x10db, 0x10d1, 0x10d4, +0x10e0, 0x10d8, 0x3b, 0x10d8, 0x3b, 0x10d7, 0x3b, 0x10db, 0x3b, 0x10d0, 0x3b, 0x10db, 0x3b, 0x10d8, 0x3b, 0x10d8, 0x3b, 0x10d0, 0x3b, 0x10e1, +0x3b, 0x10dd, 0x3b, 0x10dc, 0x3b, 0x10d3, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0xe4, 0x72, 0x3b, 0x41, +0x70, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, +0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, +0x72, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, +0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, +0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, +0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, +0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, +0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, +0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x4a, 0xe4, 0x6e, +0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0xe4, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, +0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, +0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x4a, 0xe4, 0x6e, 0x6e, 0x65, 0x72, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, +0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, +0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, +0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, +0x65, 0x7a, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0xe4, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, +0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, +0x69, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, +0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x399, 0x3b1, 0x3bd, 0x3b, 0x3a6, 0x3b5, 0x3b2, 0x3b, 0x39c, 0x3ac, 0x3c1, 0x3b, 0x391, +0x3c0, 0x3c1, 0x3b, 0x39c, 0x3ac, 0x3b9, 0x3b, 0x399, 0x3bf, 0x3cd, 0x3bd, 0x3b, 0x399, 0x3bf, 0x3cd, 0x3bb, 0x3b, 0x391, 0x3cd, 0x3b3, +0x3b, 0x3a3, 0x3b5, 0x3c0, 0x3b, 0x39f, 0x3ba, 0x3c4, 0x3b, 0x39d, 0x3bf, 0x3ad, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3b, 0x399, 0x3b1, 0x3bd, +0x3bf, 0x3c5, 0x3ac, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x3a6, 0x3b5, 0x3b2, 0x3c1, 0x3bf, 0x3c5, 0x3ac, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, +0x39c, 0x3ac, 0x3c1, 0x3c4, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x391, 0x3c0, 0x3c1, 0x3af, 0x3bb, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x39c, 0x3ac, 0x3b9, +0x3bf, 0x3c2, 0x3b, 0x399, 0x3bf, 0x3cd, 0x3bd, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x399, 0x3bf, 0x3cd, 0x3bb, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x391, +0x3cd, 0x3b3, 0x3bf, 0x3c5, 0x3c3, 0x3c4, 0x3bf, 0x3c2, 0x3b, 0x3a3, 0x3b5, 0x3c0, 0x3c4, 0x3ad, 0x3bc, 0x3b2, 0x3c1, 0x3b9, 0x3bf, 0x3c2, +0x3b, 0x39f, 0x3ba, 0x3c4, 0x3ce, 0x3b2, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x39d, 0x3bf, 0x3ad, 0x3bc, 0x3b2, 0x3c1, 0x3b9, 0x3bf, 0x3c2, +0x3b, 0x394, 0x3b5, 0x3ba, 0x3ad, 0x3bc, 0x3b2, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x399, 0x3b, 0x3a6, 0x3b, 0x39c, 0x3b, 0x391, 0x3b, +0x39c, 0x3b, 0x399, 0x3b, 0x399, 0x3b, 0x391, 0x3b, 0x3a3, 0x3b, 0x39f, 0x3b, 0x39d, 0x3b, 0x394, 0x3b, 0x399, 0x3b1, 0x3bd, 0x3b, +0x3a6, 0x3b5, 0x3b2, 0x3b, 0x39c, 0x3b1, 0x3c1, 0x3b, 0x391, 0x3c0, 0x3c1, 0x3b, 0x39c, 0x3b1, 0x390, 0x3b, 0x399, 0x3bf, 0x3c5, 0x3bd, +0x3b, 0x399, 0x3bf, 0x3c5, 0x3bb, 0x3b, 0x391, 0x3c5, 0x3b3, 0x3b, 0x3a3, 0x3b5, 0x3c0, 0x3b, 0x39f, 0x3ba, 0x3c4, 0x3b, 0x39d, 0x3bf, +0x3b5, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3b, 0x399, 0x3b1, 0x3bd, 0x3bf, 0x3c5, 0x3b1, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x3a6, 0x3b5, 0x3b2, +0x3c1, 0x3bf, 0x3c5, 0x3b1, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x39c, 0x3b1, 0x3c1, 0x3c4, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x391, 0x3c0, 0x3c1, +0x3b9, 0x3bb, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x39c, 0x3b1, 0x390, 0x3bf, 0x3c5, 0x3b, 0x399, 0x3bf, 0x3c5, 0x3bd, 0x3af, 0x3bf, 0x3c5, 0x3b, +0x399, 0x3bf, 0x3c5, 0x3bb, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x391, 0x3c5, 0x3b3, 0x3bf, 0x3cd, 0x3c3, 0x3c4, 0x3bf, 0x3c5, 0x3b, 0x3a3, 0x3b5, +0x3c0, 0x3c4, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x39f, 0x3ba, 0x3c4, 0x3c9, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, +0x39d, 0x3bf, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, +0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x6d, 0x61, +0x72, 0x74, 0x73, 0x69, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x3b, 0x6d, 0x61, 0x6a, 0x69, 0x3b, 0x6a, 0x75, 0x6e, +0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x69, 0x3b, 0x73, 0x65, 0x70, +0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x69, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x69, 0x3b, 0x6e, 0x6f, 0x76, +0x65, 0x6d, 0x62, 0x65, 0x72, 0x69, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x69, 0x3b, 0xa9c, 0xabe, 0xaa8, +0xacd, 0xaaf, 0xac1, 0x3b, 0xaab, 0xac7, 0xaac, 0xacd, 0xab0, 0xac1, 0x3b, 0xaae, 0xabe, 0xab0, 0xacd, 0xa9a, 0x3b, 0xa8f, 0xaaa, 0xacd, +0xab0, 0xabf, 0xab2, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, 0xaa8, 0x3b, 0xa9c, 0xac1, 0xab2, 0xabe, 0xa88, 0x3b, 0xa91, 0xa97, 0xab8, +0xacd, 0xa9f, 0x3b, 0xab8, 0xaaa, 0xacd, 0xa9f, 0xac7, 0x3b, 0xa91, 0xa95, 0xacd, 0xa9f, 0xacb, 0x3b, 0xaa8, 0xab5, 0xac7, 0x3b, 0xaa1, +0xabf, 0xab8, 0xac7, 0x3b, 0xa9c, 0xabe, 0xaa8, 0xacd, 0xaaf, 0xac1, 0xa86, 0xab0, 0xac0, 0x3b, 0xaab, 0xac7, 0xaac, 0xacd, 0xab0, 0xac1, +0xa86, 0xab0, 0xac0, 0x3b, 0xaae, 0xabe, 0xab0, 0xacd, 0xa9a, 0x3b, 0xa8f, 0xaaa, 0xacd, 0xab0, 0xabf, 0xab2, 0x3b, 0xaae, 0xac7, 0x3b, +0xa9c, 0xac2, 0xaa8, 0x3b, 0xa9c, 0xac1, 0xab2, 0xabe, 0xa88, 0x3b, 0xa91, 0xa97, 0xab8, 0xacd, 0xa9f, 0x3b, 0xab8, 0xaaa, 0xacd, 0xa9f, +0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xa91, 0xa95, 0xacd, 0xa9f, 0xacb, 0xaac, 0xab0, 0x3b, 0xaa8, 0xab5, 0xac7, 0xaae, 0xacd, 0xaac, +0xab0, 0x3b, 0xaa1, 0xabf, 0xab8, 0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xa9c, 0xabe, 0x3b, 0xaab, 0xac7, 0x3b, 0xaae, 0xabe, 0x3b, +0xa8f, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, 0x3b, 0xa9c, 0xac1, 0x3b, 0xa91, 0x3b, 0xab8, 0x3b, 0xa91, 0x3b, 0xaa8, 0x3b, 0xaa1, +0xabf, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x61, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x66, 0x69, 0x3b, 0x4d, 0x61, +0x79, 0x3b, 0x59, 0x75, 0x6e, 0x3b, 0x59, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x75, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x4f, 0x6b, +0x74, 0x3b, 0x4e, 0x75, 0x77, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x61, 0x69, 0x72, 0x75, 0x3b, 0x46, 0x61, +0x62, 0x75, 0x72, 0x61, 0x69, 0x72, 0x75, 0x3b, 0x4d, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x41, 0x66, 0x69, 0x72, 0x69, 0x6c, +0x75, 0x3b, 0x4d, 0x61, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6e, 0x69, 0x3b, 0x59, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, +0x73, 0x74, 0x61, 0x3b, 0x53, 0x61, 0x74, 0x75, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, +0x75, 0x77, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, +0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x5d9, +0x5e0, 0x5d5, 0x5f3, 0x3b, 0x5e4, 0x5d1, 0x5e8, 0x5f3, 0x3b, 0x5de, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5e4, 0x5e8, 0x5f3, 0x3b, 0x5de, 0x5d0, +0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d2, 0x5f3, 0x3b, 0x5e1, 0x5e4, 0x5d8, +0x5f3, 0x3b, 0x5d0, 0x5d5, 0x5e7, 0x5f3, 0x3b, 0x5e0, 0x5d5, 0x5d1, 0x5f3, 0x3b, 0x5d3, 0x5e6, 0x5de, 0x5f3, 0x3b, 0x5d9, 0x5e0, 0x5d5, +0x5d0, 0x5e8, 0x3b, 0x5e4, 0x5d1, 0x5e8, 0x5d5, 0x5d0, 0x5e8, 0x3b, 0x5de, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5e4, 0x5e8, 0x5d9, 0x5dc, 0x3b, +0x5de, 0x5d0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d2, 0x5d5, 0x5e1, 0x5d8, +0x3b, 0x5e1, 0x5e4, 0x5d8, 0x5de, 0x5d1, 0x5e8, 0x3b, 0x5d0, 0x5d5, 0x5e7, 0x5d8, 0x5d5, 0x5d1, 0x5e8, 0x3b, 0x5e0, 0x5d5, 0x5d1, 0x5de, +0x5d1, 0x5e8, 0x3b, 0x5d3, 0x5e6, 0x5de, 0x5d1, 0x5e8, 0x3b, 0x91c, 0x928, 0x970, 0x3b, 0x92b, 0x93c, 0x930, 0x970, 0x3b, 0x92e, 0x93e, +0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, 0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, +0x932, 0x970, 0x3b, 0x905, 0x917, 0x970, 0x3b, 0x938, 0x93f, 0x924, 0x970, 0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x970, 0x3b, 0x928, +0x935, 0x970, 0x3b, 0x926, 0x93f, 0x938, 0x970, 0x3b, 0x91c, 0x928, 0x935, 0x930, 0x940, 0x3b, 0x92b, 0x93c, 0x930, 0x935, 0x930, 0x940, +0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, 0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, +0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905, 0x917, 0x938, 0x94d, 0x924, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x92c, 0x930, 0x3b, +0x905, 0x915, 0x94d, 0x924, 0x942, 0x92c, 0x930, 0x3b, 0x928, 0x935, 0x902, 0x92c, 0x930, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x92c, 0x930, +0x3b, 0x91c, 0x3b, 0x92b, 0x93c, 0x3b, 0x92e, 0x93e, 0x3b, 0x905, 0x3b, 0x92e, 0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x905, +0x3b, 0x938, 0x93f, 0x3b, 0x905, 0x3b, 0x928, 0x3b, 0x926, 0x93f, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x72, +0x2e, 0x3b, 0x6d, 0xe1, 0x72, 0x63, 0x2e, 0x3b, 0xe1, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0xe1, 0x6a, 0x2e, 0x3b, 0x6a, 0xfa, +0x6e, 0x2e, 0x3b, 0x6a, 0xfa, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x7a, 0x65, 0x70, 0x74, 0x2e, 0x3b, +0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, +0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x3b, 0x6d, 0xe1, 0x72, 0x63, 0x69, 0x75, 0x73, 0x3b, 0xe1, 0x70, +0x72, 0x69, 0x6c, 0x69, 0x73, 0x3b, 0x6d, 0xe1, 0x6a, 0x75, 0x73, 0x3b, 0x6a, 0xfa, 0x6e, 0x69, 0x75, 0x73, 0x3b, 0x6a, +0xfa, 0x6c, 0x69, 0x75, 0x73, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x7a, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x7a, 0x65, 0x70, +0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, +0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0xc1, +0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x7a, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, +0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, +0xed, 0x3b, 0x6a, 0xfa, 0x6e, 0x2e, 0x3b, 0x6a, 0xfa, 0x6c, 0x2e, 0x3b, 0xe1, 0x67, 0xfa, 0x2e, 0x3b, 0x73, 0x65, 0x70, +0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0xf3, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, +0xfa, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0xfa, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, +0xed, 0x6c, 0x3b, 0x6d, 0x61, 0xed, 0x3b, 0x6a, 0xfa, 0x6e, 0xed, 0x3b, 0x6a, 0xfa, 0x6c, 0xed, 0x3b, 0xe1, 0x67, 0xfa, +0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, +0x3b, 0x6e, 0xf3, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, +0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0xc1, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, +0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, +0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, +0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, +0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x72, 0x65, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, +0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x75, +0x73, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, +0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x45, 0x61, +0x6e, 0x3b, 0x46, 0x65, 0x61, 0x62, 0x68, 0x3b, 0x4d, 0xe1, 0x72, 0x74, 0x61, 0x3b, 0x41, 0x69, 0x62, 0x3b, 0x42, 0x65, +0x61, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x74, 0x68, 0x3b, 0x49, 0xfa, 0x69, 0x6c, 0x3b, 0x4c, 0xfa, 0x6e, 0x3b, 0x4d, 0x46, +0xf3, 0x6d, 0x68, 0x3b, 0x44, 0x46, 0xf3, 0x6d, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x3b, 0x4e, 0x6f, 0x6c, 0x6c, 0x3b, +0x45, 0x61, 0x6e, 0xe1, 0x69, 0x72, 0x3b, 0x46, 0x65, 0x61, 0x62, 0x68, 0x72, 0x61, 0x3b, 0x4d, 0xe1, 0x72, 0x74, 0x61, +0x3b, 0x41, 0x69, 0x62, 0x72, 0x65, 0xe1, 0x6e, 0x3b, 0x42, 0x65, 0x61, 0x6c, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4d, +0x65, 0x69, 0x74, 0x68, 0x65, 0x61, 0x6d, 0x68, 0x3b, 0x49, 0xfa, 0x69, 0x6c, 0x3b, 0x4c, 0xfa, 0x6e, 0x61, 0x73, 0x61, +0x3b, 0x4d, 0x65, 0xe1, 0x6e, 0x20, 0x46, 0xf3, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x44, 0x65, 0x69, 0x72, 0x65, 0x61, +0x64, 0x68, 0x20, 0x46, 0xf3, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, 0x4e, +0x6f, 0x6c, 0x6c, 0x61, 0x69, 0x67, 0x3b, 0x45, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x42, 0x3b, 0x4d, 0x3b, 0x49, +0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x67, 0x65, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, +0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x67, 0x3b, 0x67, 0x69, 0x75, 0x3b, 0x6c, 0x75, 0x67, 0x3b, 0x61, +0x67, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x6f, 0x74, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x69, 0x63, 0x3b, 0x47, +0x65, 0x6e, 0x6e, 0x61, 0x69, 0x6f, 0x3b, 0x46, 0x65, 0x62, 0x62, 0x72, 0x61, 0x69, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x7a, +0x6f, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x65, 0x3b, 0x4d, 0x61, 0x67, 0x67, 0x69, 0x6f, 0x3b, 0x47, 0x69, 0x75, 0x67, +0x6e, 0x6f, 0x3b, 0x4c, 0x75, 0x67, 0x6c, 0x69, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, +0x74, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x4f, 0x74, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, +0x62, 0x72, 0x65, 0x3b, 0x44, 0x69, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x47, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, +0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x67, 0x65, 0x6e, +0x6e, 0x61, 0x69, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x62, 0x72, 0x61, 0x69, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, +0x61, 0x70, 0x72, 0x69, 0x6c, 0x65, 0x3b, 0x6d, 0x61, 0x67, 0x67, 0x69, 0x6f, 0x3b, 0x67, 0x69, 0x75, 0x67, 0x6e, 0x6f, +0x3b, 0x6c, 0x75, 0x67, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x65, +0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x74, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, +0x65, 0x3b, 0x64, 0x69, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0xc9c, 0xca8, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0x3b, +0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, +0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0x3b, 0xc85, 0xc95, 0xccd, +0xc9f, 0xccb, 0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0x3b, 0xc9c, 0xca8, 0xcb5, 0xcb0, 0xcbf, 0x3b, +0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, +0xcbf, 0xcb2, 0xccd, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, 0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0xcb8, +0xccd, 0xc9f, 0xccd, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb, +0xcac, 0xcb0, 0xccd, 0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, +0x3b, 0xc9c, 0x3b, 0xcab, 0xcc6, 0x3b, 0xcae, 0xcbe, 0x3b, 0xc8f, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0x3b, 0xc9c, 0xcc1, 0x3b, +0xc86, 0x3b, 0xcb8, 0xcc6, 0x3b, 0xc85, 0x3b, 0xca8, 0x3b, 0xca1, 0xcbf, 0x3b, 0x62c, 0x646, 0x624, 0x631, 0x6cc, 0x3b, 0x641, 0x631, +0x624, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x655, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x654, 0x3b, +0x62c, 0x648, 0x657, 0x646, 0x3b, 0x62c, 0x648, 0x657, 0x644, 0x627, 0x6cc, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a, +0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x657, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, +0x645, 0x628, 0x631, 0x3b, 0x62c, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x627, 0x3b, 0x645, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x627, 0x3b, +0x633, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x646, 0x3b, 0x49a, 0x430, 0x4a3, 0x2e, 0x3b, 0x410, 0x49b, 0x43f, 0x2e, 0x3b, 0x41d, 0x430, +0x443, 0x2e, 0x3b, 0x421, 0x4d9, 0x443, 0x2e, 0x3b, 0x41c, 0x430, 0x43c, 0x2e, 0x3b, 0x41c, 0x430, 0x443, 0x2e, 0x3b, 0x428, 0x456, +0x43b, 0x2e, 0x3b, 0x422, 0x430, 0x43c, 0x2e, 0x3b, 0x49a, 0x44b, 0x440, 0x2e, 0x3b, 0x49a, 0x430, 0x437, 0x2e, 0x3b, 0x49a, 0x430, +0x440, 0x2e, 0x3b, 0x416, 0x435, 0x43b, 0x2e, 0x3b, 0x49a, 0x430, 0x4a3, 0x442, 0x430, 0x440, 0x3b, 0x410, 0x49b, 0x43f, 0x430, 0x43d, +0x3b, 0x41d, 0x430, 0x443, 0x440, 0x44b, 0x437, 0x3b, 0x421, 0x4d9, 0x443, 0x456, 0x440, 0x3b, 0x41c, 0x430, 0x43c, 0x44b, 0x440, 0x3b, +0x41c, 0x430, 0x443, 0x441, 0x44b, 0x43c, 0x3b, 0x428, 0x456, 0x43b, 0x434, 0x435, 0x3b, 0x422, 0x430, 0x43c, 0x44b, 0x437, 0x3b, 0x49a, +0x44b, 0x440, 0x43a, 0x4af, 0x439, 0x435, 0x43a, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x43d, 0x3b, 0x49a, 0x430, 0x440, 0x430, 0x448, 0x430, +0x3b, 0x416, 0x435, 0x43b, 0x442, 0x43e, 0x49b, 0x441, 0x430, 0x43d, 0x3b, 0x49a, 0x3b, 0x410, 0x3b, 0x41d, 0x3b, 0x421, 0x3b, 0x41c, +0x3b, 0x41c, 0x3b, 0x428, 0x3b, 0x422, 0x3b, 0x49a, 0x3b, 0x49a, 0x3b, 0x49a, 0x3b, 0x416, 0x3b, 0x49b, 0x430, 0x4a3, 0x2e, 0x3b, +0x430, 0x49b, 0x43f, 0x2e, 0x3b, 0x43d, 0x430, 0x443, 0x2e, 0x3b, 0x441, 0x4d9, 0x443, 0x2e, 0x3b, 0x43c, 0x430, 0x43c, 0x2e, 0x3b, +0x43c, 0x430, 0x443, 0x2e, 0x3b, 0x448, 0x456, 0x43b, 0x2e, 0x3b, 0x442, 0x430, 0x43c, 0x2e, 0x3b, 0x49b, 0x44b, 0x440, 0x2e, 0x3b, +0x49b, 0x430, 0x437, 0x2e, 0x3b, 0x49b, 0x430, 0x440, 0x2e, 0x3b, 0x436, 0x435, 0x43b, 0x2e, 0x3b, 0x49b, 0x430, 0x4a3, 0x442, 0x430, +0x440, 0x3b, 0x430, 0x49b, 0x43f, 0x430, 0x43d, 0x3b, 0x43d, 0x430, 0x443, 0x440, 0x44b, 0x437, 0x3b, 0x441, 0x4d9, 0x443, 0x456, 0x440, +0x3b, 0x43c, 0x430, 0x43c, 0x44b, 0x440, 0x3b, 0x43c, 0x430, 0x443, 0x441, 0x44b, 0x43c, 0x3b, 0x448, 0x456, 0x43b, 0x434, 0x435, 0x3b, +0x442, 0x430, 0x43c, 0x44b, 0x437, 0x3b, 0x49b, 0x44b, 0x440, 0x43a, 0x4af, 0x439, 0x435, 0x43a, 0x3b, 0x49b, 0x430, 0x437, 0x430, 0x43d, +0x3b, 0x49b, 0x430, 0x440, 0x430, 0x448, 0x430, 0x3b, 0x436, 0x435, 0x43b, 0x442, 0x43e, 0x49b, 0x441, 0x430, 0x43d, 0x3b, 0x6d, 0x75, +0x74, 0x2e, 0x3b, 0x67, 0x61, 0x73, 0x2e, 0x3b, 0x77, 0x65, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x74, 0x2e, 0x3b, 0x67, 0x69, +0x63, 0x2e, 0x3b, 0x6b, 0x61, 0x6d, 0x2e, 0x3b, 0x6e, 0x79, 0x61, 0x2e, 0x3b, 0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x6e, 0x7a, +0x65, 0x2e, 0x3b, 0x75, 0x6b, 0x77, 0x2e, 0x3b, 0x75, 0x67, 0x75, 0x2e, 0x3b, 0x75, 0x6b, 0x75, 0x2e, 0x3b, 0x4d, 0x75, +0x74, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x3b, 0x47, 0x61, 0x73, 0x68, 0x79, 0x61, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x3b, 0x57, +0x65, 0x72, 0x75, 0x72, 0x77, 0x65, 0x3b, 0x4d, 0x61, 0x74, 0x61, 0x3b, 0x47, 0x69, 0x63, 0x75, 0x72, 0x61, 0x6e, 0x73, +0x69, 0x3b, 0x4b, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x3b, 0x4e, 0x79, 0x61, 0x6b, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x4b, 0x61, +0x6e, 0x61, 0x6d, 0x61, 0x3b, 0x4e, 0x7a, 0x65, 0x6c, 0x69, 0x3b, 0x55, 0x6b, 0x77, 0x61, 0x6b, 0x69, 0x72, 0x61, 0x3b, +0x55, 0x67, 0x75, 0x73, 0x68, 0x79, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x55, 0x6b, 0x75, 0x62, 0x6f, 0x7a, 0x61, 0x3b, 0x42f, +0x43d, 0x432, 0x3b, 0x424, 0x435, 0x432, 0x3b, 0x41c, 0x430, 0x440, 0x3b, 0x410, 0x43f, 0x440, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, +0x44e, 0x43d, 0x3b, 0x418, 0x44e, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x3b, 0x421, 0x435, 0x43d, 0x3b, 0x41e, 0x43a, 0x442, 0x3b, 0x41d, +0x43e, 0x44f, 0x3b, 0x414, 0x435, 0x43a, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, 0x43b, +0x44c, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, +0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x44f, +0x431, 0x440, 0x44c, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x414, +0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x42f, 0x3b, 0x424, 0x3b, 0x41c, 0x3b, 0x410, 0x3b, 0x41c, 0x3b, 0x418, 0x3b, 0x418, +0x3b, 0x410, 0x3b, 0x421, 0x3b, 0x41e, 0x3b, 0x41d, 0x3b, 0x414, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, +0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x2e, 0x3b, +0x438, 0x44e, 0x43b, 0x2e, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, +0x43d, 0x43e, 0x44f, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x444, 0x435, 0x432, +0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x439, +0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, +0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, +0x44c, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x31, 0xc6d4, 0x3b, 0x32, 0xc6d4, 0x3b, 0x33, 0xc6d4, 0x3b, 0x34, +0xc6d4, 0x3b, 0x35, 0xc6d4, 0x3b, 0x36, 0xc6d4, 0x3b, 0x37, 0xc6d4, 0x3b, 0x38, 0xc6d4, 0x3b, 0x39, 0xc6d4, 0x3b, 0x31, 0x30, 0xc6d4, +0x3b, 0x31, 0x31, 0xc6d4, 0x3b, 0x31, 0x32, 0xc6d4, 0x3b, 0x4d, 0x75, 0x74, 0x2e, 0x3b, 0x47, 0x61, 0x73, 0x2e, 0x3b, 0x57, +0x65, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x74, 0x2e, 0x3b, 0x47, 0x69, 0x63, 0x2e, 0x3b, 0x4b, 0x61, 0x6d, 0x2e, 0x3b, 0x4e, +0x79, 0x61, 0x2e, 0x3b, 0x4b, 0x61, 0x6e, 0x2e, 0x3b, 0x4e, 0x7a, 0x65, 0x2e, 0x3b, 0x55, 0x6b, 0x77, 0x2e, 0x3b, 0x55, +0x67, 0x75, 0x2e, 0x3b, 0x55, 0x6b, 0x75, 0x2e, 0x3b, 0x4e, 0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x52, 0x75, 0x68, 0x75, 0x68, +0x75, 0x6d, 0x61, 0x3b, 0x4e, 0x74, 0x77, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x3b, 0x4e, 0x64, 0x61, 0x6d, 0x75, 0x6b, +0x69, 0x7a, 0x61, 0x3b, 0x52, 0x75, 0x73, 0x61, 0x6d, 0x61, 0x3b, 0x52, 0x75, 0x68, 0x65, 0x73, 0x68, 0x69, 0x3b, 0x4d, +0x75, 0x6b, 0x61, 0x6b, 0x61, 0x72, 0x6f, 0x3b, 0x4e, 0x79, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x61, 0x72, 0x6f, 0x3b, 0x4e, +0x79, 0x61, 0x6b, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x47, 0x69, 0x74, 0x75, 0x67, 0x75, 0x74, 0x75, 0x3b, 0x4d, 0x75, 0x6e, +0x79, 0x6f, 0x6e, 0x79, 0x6f, 0x3b, 0x4b, 0x69, 0x67, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x3b, 0xea1, 0x2e, 0xe81, 0x2e, 0x3b, +0xe81, 0x2e, 0xe9e, 0x2e, 0x3b, 0xea1, 0x2e, 0xe99, 0x2e, 0x3b, 0xea1, 0x2e, 0xeaa, 0x2e, 0x3b, 0xe9e, 0x2e, 0xe9e, 0x2e, 0x3b, +0xea1, 0xeb4, 0x2e, 0xe96, 0x2e, 0x3b, 0xe81, 0x2e, 0xea5, 0x2e, 0x3b, 0xeaa, 0x2e, 0xeab, 0x2e, 0x3b, 0xe81, 0x2e, 0xe8d, 0x2e, +0x3b, 0xe95, 0x2e, 0xea5, 0x2e, 0x3b, 0xe9e, 0x2e, 0xe88, 0x2e, 0x3b, 0xe97, 0x2e, 0xea7, 0x2e, 0x3b, 0xea1, 0xeb1, 0xe87, 0xe81, +0xead, 0xe99, 0x3b, 0xe81, 0xeb8, 0xea1, 0xe9e, 0xeb2, 0x3b, 0xea1, 0xeb5, 0xe99, 0xeb2, 0x3b, 0xec0, 0xea1, 0xeaa, 0xeb2, 0x3b, 0xe9e, +0xeb6, 0xe94, 0xeaa, 0xeb0, 0xe9e, 0xeb2, 0x3b, 0xea1, 0xeb4, 0xe96, 0xeb8, 0xe99, 0xeb2, 0x3b, 0xe81, 0xecd, 0xea5, 0xeb0, 0xe81, 0xebb, +0xe94, 0x3b, 0xeaa, 0xeb4, 0xe87, 0xeab, 0xeb2, 0x3b, 0xe81, 0xeb1, 0xe99, 0xe8d, 0xeb2, 0x3b, 0xe95, 0xeb8, 0xea5, 0xeb2, 0x3b, 0xe9e, +0xeb0, 0xe88, 0xeb4, 0xe81, 0x3b, 0xe97, 0xeb1, 0xe99, 0xea7, 0xeb2, 0x3b, 0x4a, 0x61, 0x6e, 0x76, 0x2e, 0x3b, 0x46, 0x65, 0x62, +0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x69, 0x6a, 0x73, 0x3b, +0x4a, 0x16b, 0x6e, 0x2e, 0x3b, 0x4a, 0x16b, 0x6c, 0x2e, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x2e, +0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x63, 0x2e, 0x3b, 0x4a, 0x61, 0x6e, 0x76, +0x101, 0x72, 0x69, 0x73, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x101, 0x72, 0x69, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x73, +0x3b, 0x41, 0x70, 0x72, 0x12b, 0x6c, 0x69, 0x73, 0x3b, 0x4d, 0x61, 0x69, 0x6a, 0x73, 0x3b, 0x4a, 0x16b, 0x6e, 0x69, 0x6a, +0x73, 0x3b, 0x4a, 0x16b, 0x6c, 0x69, 0x6a, 0x73, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x73, 0x3b, 0x53, 0x65, 0x70, +0x74, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x4e, 0x6f, 0x76, +0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x44, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x6a, 0x61, 0x6e, +0x76, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, +0x6d, 0x61, 0x69, 0x6a, 0x73, 0x3b, 0x6a, 0x16b, 0x6e, 0x2e, 0x3b, 0x6a, 0x16b, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, +0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, +0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x101, 0x72, 0x69, 0x73, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x101, 0x72, 0x69, 0x73, +0x3b, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x12b, 0x6c, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x69, 0x6a, 0x73, +0x3b, 0x6a, 0x16b, 0x6e, 0x69, 0x6a, 0x73, 0x3b, 0x6a, 0x16b, 0x6c, 0x69, 0x6a, 0x73, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, +0x74, 0x73, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, +0x69, 0x73, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, +0x69, 0x73, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x62, 0x6c, 0x3b, 0x6d, 0x73, 0x69, 0x3b, 0x61, 0x70, 0x6c, 0x3b, 0x6d, +0x61, 0x69, 0x3b, 0x79, 0x75, 0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x61, 0x67, 0x74, 0x3b, 0x73, 0x74, 0x62, 0x3b, 0x254, +0x74, 0x62, 0x3b, 0x6e, 0x76, 0x62, 0x3b, 0x64, 0x73, 0x62, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, +0x79, 0x61, 0x6d, 0x62, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, +0xe9, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x73, 0xe1, 0x74, 0x6f, 0x3b, 0x73, 0xe1, +0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x6e, 0x65, 0x69, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, +0x61, 0x20, 0x6d, 0xed, 0x74, 0xe1, 0x6e, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x6f, +0x74, 0xf3, 0x62, 0xe1, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6e, 0x73, 0x61, 0x6d, 0x62, 0x6f, +0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x77, 0x61, 0x6d, 0x62, 0x65, 0x3b, 0x73, 0xe1, 0x6e, +0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6c, 0x69, 0x62, 0x77, 0x61, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, +0x20, 0x7a, 0xf3, 0x6d, 0x69, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, 0x69, 0x20, +0x6e, 0x61, 0x20, 0x6d, 0x254, 0x30c, 0x6b, 0x254, 0x301, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, +0xf3, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x79, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, +0x61, 0x3b, 0x6d, 0x3b, 0x79, 0x3b, 0x79, 0x3b, 0x61, 0x3b, 0x73, 0x3b, 0x254, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x73, 0x61, +0x75, 0x73, 0x2e, 0x3b, 0x76, 0x61, 0x73, 0x2e, 0x3b, 0x6b, 0x6f, 0x76, 0x2e, 0x3b, 0x62, 0x61, 0x6c, 0x2e, 0x3b, 0x67, +0x65, 0x67, 0x2e, 0x3b, 0x62, 0x69, 0x72, 0x17e, 0x2e, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x2e, 0x3b, 0x72, 0x75, 0x67, 0x70, +0x2e, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x2e, 0x3b, 0x73, 0x70, 0x61, 0x6c, 0x2e, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x2e, +0x3b, 0x67, 0x72, 0x75, 0x6f, 0x64, 0x2e, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x69, 0x73, 0x3b, 0x76, 0x61, 0x73, 0x61, 0x72, +0x69, 0x73, 0x3b, 0x6b, 0x6f, 0x76, 0x61, 0x73, 0x3b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x69, 0x73, 0x3b, 0x67, 0x65, +0x67, 0x75, 0x17e, 0x117, 0x3b, 0x62, 0x69, 0x72, 0x17e, 0x65, 0x6c, 0x69, 0x73, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x61, 0x3b, +0x72, 0x75, 0x67, 0x70, 0x6a, 0x16b, 0x74, 0x69, 0x73, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x117, 0x6a, 0x69, 0x73, 0x3b, 0x73, +0x70, 0x61, 0x6c, 0x69, 0x73, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x69, 0x74, 0x69, 0x73, 0x3b, 0x67, 0x72, 0x75, 0x6f, +0x64, 0x69, 0x73, 0x3b, 0x53, 0x3b, 0x56, 0x3b, 0x4b, 0x3b, 0x42, 0x3b, 0x47, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x52, 0x3b, +0x52, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x47, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x69, 0x6f, 0x3b, 0x76, 0x61, 0x73, 0x61, 0x72, +0x69, 0x6f, 0x3b, 0x6b, 0x6f, 0x76, 0x6f, 0x3b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x17e, 0x69, 0x6f, 0x3b, 0x67, 0x65, +0x67, 0x75, 0x17e, 0x117, 0x73, 0x3b, 0x62, 0x69, 0x72, 0x17e, 0x65, 0x6c, 0x69, 0x6f, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x6f, +0x73, 0x3b, 0x72, 0x75, 0x67, 0x70, 0x6a, 0x16b, 0x10d, 0x69, 0x6f, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x117, 0x6a, 0x6f, 0x3b, +0x73, 0x70, 0x61, 0x6c, 0x69, 0x6f, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x69, 0x10d, 0x69, 0x6f, 0x3b, 0x67, 0x72, 0x75, +0x6f, 0x64, 0x17e, 0x69, 0x6f, 0x3b, 0x458, 0x430, 0x43d, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, +0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x2e, 0x3b, 0x458, 0x443, 0x43b, 0x2e, 0x3b, +0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, +0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x443, +0x430, 0x440, 0x438, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, +0x443, 0x43d, 0x438, 0x3b, 0x458, 0x443, 0x43b, 0x438, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, +0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x432, +0x440, 0x438, 0x3b, 0x434, 0x435, 0x43a, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x458, 0x3b, 0x444, 0x3b, 0x43c, 0x3b, 0x430, 0x3b, +0x43c, 0x3b, 0x458, 0x3b, 0x458, 0x3b, 0x430, 0x3b, 0x441, 0x3b, 0x43e, 0x3b, 0x43d, 0x3b, 0x434, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, +0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x6f, 0x6e, 0x3b, +0x4a, 0x6f, 0x6c, 0x3b, 0x41, 0x6f, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, +0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x6f, 0x61, 0x72, 0x79, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x6f, 0x61, 0x72, 0x79, +0x3b, 0x4d, 0x61, 0x72, 0x74, 0x73, 0x61, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x79, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, +0x6f, 0x6e, 0x61, 0x3b, 0x4a, 0x6f, 0x6c, 0x61, 0x79, 0x3b, 0x41, 0x6f, 0x67, 0x6f, 0x73, 0x69, 0x74, 0x72, 0x61, 0x3b, +0x53, 0x65, 0x70, 0x74, 0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, 0x4e, 0x6f, +0x76, 0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, +0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, +0x4a, 0x75, 0x6c, 0x3b, 0x4f, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, +0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, +0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, +0x75, 0x6c, 0x61, 0x69, 0x3b, 0x4f, 0x67, 0x6f, 0x73, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, +0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x69, 0x73, +0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, +0x4f, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0xd1c, 0xd28, 0xd41, 0x3b, 0xd2b, 0xd46, 0xd2c, 0xd4d, 0xd30, 0xd41, +0x3b, 0xd2e, 0xd3e, 0xd7c, 0x3b, 0xd0f, 0xd2a, 0xd4d, 0xd30, 0xd3f, 0x3b, 0xd2e, 0xd47, 0xd2f, 0xd4d, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, +0xd1c, 0xd42, 0xd32, 0xd48, 0x3b, 0xd13, 0xd17, 0x3b, 0xd38, 0xd46, 0xd2a, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd02, 0x3b, 0xd12, 0xd15, 0xd4d, +0xd1f, 0xd4b, 0x3b, 0xd28, 0xd35, 0xd02, 0x3b, 0xd21, 0xd3f, 0xd38, 0xd02, 0x3b, 0xd1c, 0xd28, 0xd41, 0xd35, 0xd30, 0xd3f, 0x3b, 0xd2b, +0xd46, 0xd2c, 0xd4d, 0xd30, 0xd41, 0xd35, 0xd30, 0xd3f, 0x3b, 0xd2e, 0xd3e, 0xd7c, 0xd1a, 0xd4d, 0xd1a, 0xd4d, 0x3b, 0xd0f, 0xd2a, 0xd4d, +0xd30, 0xd3f, 0xd7d, 0x3b, 0xd2e, 0xd47, 0xd2f, 0xd4d, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0xd32, 0xd48, 0x3b, 0xd13, 0xd17, +0xd38, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd4d, 0x3b, 0xd38, 0xd46, 0xd2a, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd12, 0xd15, +0xd4d, 0x200c, 0xd1f, 0xd4b, 0xd2c, 0xd7c, 0x3b, 0xd28, 0xd35, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd21, 0xd3f, 0xd38, 0xd02, 0xd2c, 0xd7c, 0x3b, +0xd1c, 0x3b, 0xd2b, 0xd46, 0x3b, 0xd2e, 0xd3e, 0x3b, 0xd0f, 0x3b, 0xd2e, 0xd46, 0x3b, 0xd1c, 0xd42, 0x3b, 0xd1c, 0xd42, 0x3b, 0xd13, +0x3b, 0xd38, 0xd46, 0x3b, 0xd12, 0x3b, 0xd28, 0x3b, 0xd21, 0xd3f, 0x3b, 0xd1c, 0x3b, 0xd2b, 0x3b, 0xd2e, 0xd3e, 0x3b, 0xd0f, 0x3b, +0xd2e, 0xd46, 0x3b, 0xd1c, 0xd42, 0x3b, 0xd1c, 0xd42, 0x3b, 0xd13, 0x3b, 0xd38, 0x3b, 0xd12, 0x3b, 0xd28, 0x3b, 0xd21, 0xd3f, 0x3b, +0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x72, 0x61, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x6a, 0x3b, +0x120, 0x75, 0x6e, 0x3b, 0x4c, 0x75, 0x6c, 0x3b, 0x41, 0x77, 0x77, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x74, 0x74, 0x3b, +0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x10b, 0x3b, 0x4a, 0x61, 0x6e, 0x6e, 0x61, 0x72, 0x3b, 0x46, 0x72, 0x61, 0x72, 0x3b, +0x4d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x6a, 0x6a, 0x75, 0x3b, 0x120, 0x75, +0x6e, 0x6a, 0x75, 0x3b, 0x4c, 0x75, 0x6c, 0x6a, 0x75, 0x3b, 0x41, 0x77, 0x77, 0x69, 0x73, 0x73, 0x75, 0x3b, 0x53, 0x65, +0x74, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x4f, 0x74, 0x74, 0x75, 0x62, 0x72, 0x75, 0x3b, 0x4e, 0x6f, 0x76, 0x65, +0x6d, 0x62, 0x72, 0x75, 0x3b, 0x44, 0x69, 0x10b, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x4a, 0x6e, 0x3b, 0x46, 0x72, 0x3b, +0x4d, 0x7a, 0x3b, 0x41, 0x70, 0x3b, 0x4d, 0x6a, 0x3b, 0x120, 0x6e, 0x3b, 0x4c, 0x6a, 0x3b, 0x41, 0x77, 0x3b, 0x53, 0x74, +0x3b, 0x4f, 0x62, 0x3b, 0x4e, 0x76, 0x3b, 0x44, 0x10b, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, +0x120, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x3b, 0x92b, +0x947, 0x92c, 0x94d, 0x930, 0x941, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x93f, 0x3b, 0x92e, 0x947, +0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x948, 0x3b, 0x911, 0x917, 0x3b, 0x938, 0x92a, 0x94d, 0x91f, 0x947, 0x902, 0x3b, +0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x902, 0x3b, +0x91c, 0x93e, 0x928, 0x947, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x940, 0x3b, +0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x928, 0x3b, +0x91c, 0x941, 0x932, 0x948, 0x3b, 0x911, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x92a, 0x94d, 0x91f, 0x947, 0x902, 0x92c, 0x930, 0x3b, +0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x921, 0x93f, +0x938, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x93e, 0x3b, 0x92b, 0x947, 0x3b, 0x92e, 0x93e, 0x3b, 0x90f, 0x3b, 0x92e, 0x947, 0x3b, +0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x911, 0x3b, 0x938, 0x3b, 0x911, 0x3b, 0x928, 0x94b, 0x3b, 0x921, 0x93f, 0x3b, 0x31, 0x2d, +0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x32, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x33, 0x2d, 0x440, 0x20, 0x441, 0x430, +0x440, 0x3b, 0x34, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x35, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x36, 0x2d, +0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x37, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x38, 0x2d, 0x440, 0x20, 0x441, 0x430, +0x440, 0x3b, 0x39, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x30, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, +0x31, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x32, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x41d, 0x44d, 0x433, +0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x425, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, +0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x413, 0x443, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, +0x440, 0x3b, 0x414, 0x4e9, 0x440, 0x4e9, 0x432, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x422, 0x430, +0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x417, 0x443, 0x440, 0x433, 0x430, 0x434, 0x443, 0x433, +0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x414, 0x43e, 0x43b, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, +0x440, 0x3b, 0x41d, 0x430, 0x439, 0x43c, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x415, 0x441, 0x434, +0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, +0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, +0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, +0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x91c, 0x928, 0x935, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x905, 0x930, +0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, +0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x947, 0x92a, 0x94d, 0x91f, 0x947, +0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x92e, 0x94d, 0x92c, +0x930, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x967, 0x3b, 0x968, 0x3b, 0x969, 0x3b, 0x96a, 0x3b, 0x96b, +0x3b, 0x96c, 0x3b, 0x96d, 0x3b, 0x96e, 0x3b, 0x96f, 0x3b, 0x967, 0x966, 0x3b, 0x967, 0x967, 0x3b, 0x967, 0x968, 0x3b, 0x91c, 0x928, +0x935, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x905, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, +0x905, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, +0x905, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x947, 0x92a, 0x94d, 0x91f, 0x947, 0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d, +0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x92e, 0x94d, +0x92c, 0x930, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, +0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, +0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, +0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x73, +0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0xb1c, 0xb3e, 0xb28, 0xb41, 0xb06, 0xb30, 0xb40, 0x3b, 0xb2b, 0xb47, 0xb2c, 0xb43, 0xb06, 0xb30, +0xb40, 0x3b, 0xb2e, 0xb3e, 0xb30, 0xb4d, 0xb1a, 0xb4d, 0xb1a, 0x3b, 0xb05, 0xb2a, 0xb4d, 0xb30, 0xb47, 0xb32, 0x3b, 0xb2e, 0xb07, 0x3b, +0xb1c, 0xb41, 0xb28, 0x3b, 0xb1c, 0xb41, 0xb32, 0xb3e, 0xb07, 0x3b, 0xb05, 0xb17, 0xb37, 0xb4d, 0xb1f, 0x3b, 0xb38, 0xb47, 0xb2a, 0xb4d, +0xb1f, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb05, 0xb15, 0xb4d, 0xb1f, 0xb4b, 0xb2c, 0xb30, 0x3b, 0xb28, 0xb2d, 0xb47, 0xb2e, 0xb4d, +0xb2c, 0xb30, 0x3b, 0xb21, 0xb3f, 0xb38, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb1c, 0xb3e, 0x3b, 0xb2b, 0xb47, 0x3b, 0xb2e, 0xb3e, +0x3b, 0xb05, 0x3b, 0xb2e, 0xb07, 0x3b, 0xb1c, 0xb41, 0x3b, 0xb1c, 0xb41, 0x3b, 0xb05, 0x3b, 0xb38, 0xb47, 0x3b, 0xb05, 0x3b, 0xb28, +0x3b, 0xb21, 0xb3f, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, +0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, +0x3b, 0x627, 0x6ab, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, +0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x698, 0x627, 0x646, 0x648, 0x6cc, 0x647, 0x3b, 0x641, +0x648, 0x631, 0x6cc, 0x647, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x622, 0x648, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x647, 0x3b, 0x698, +0x648, 0x626, 0x646, 0x3b, 0x698, 0x648, 0x626, 0x6cc, 0x647, 0x3b, 0x627, 0x648, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x627, 0x645, 0x628, +0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x627, 0x645, 0x628, +0x631, 0x3b, 0x698, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x622, 0x3b, 0x645, 0x3b, 0x698, 0x3b, 0x698, 0x3b, 0x627, 0x3b, 0x633, 0x3b, +0x627, 0x3b, 0x646, 0x3b, 0x62f, 0x3b, 0x698, 0x627, 0x646, 0x648, 0x6cc, 0x647, 0x654, 0x3b, 0x641, 0x648, 0x631, 0x6cc, 0x647, 0x654, +0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x622, 0x648, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x647, 0x654, 0x3b, 0x698, 0x648, 0x626, 0x646, +0x3b, 0x698, 0x648, 0x626, 0x6cc, 0x647, 0x654, 0x3b, 0x627, 0x648, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x627, 0x645, 0x628, 0x631, 0x3b, +0x627, 0x6a9, 0x62a, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x627, 0x645, 0x628, 0x631, 0x3b, +0x62c, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x627, 0x3b, 0x645, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x627, 0x3b, +0x646, 0x3b, 0x62f, 0x3b, 0x62c, 0x646, 0x648, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, +0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x3b, 0x627, 0x6af, 0x633, +0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, +0x631, 0x3b, 0x62f, 0x633, 0x645, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, +0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, +0x627, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, +0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x73, 0x74, 0x79, 0x3b, 0x6c, 0x75, +0x74, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6b, 0x77, 0x69, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x63, 0x7a, 0x65, 0x3b, 0x6c, 0x69, +0x70, 0x3b, 0x73, 0x69, 0x65, 0x3b, 0x77, 0x72, 0x7a, 0x3b, 0x70, 0x61, 0x17a, 0x3b, 0x6c, 0x69, 0x73, 0x3b, 0x67, 0x72, +0x75, 0x3b, 0x73, 0x74, 0x79, 0x63, 0x7a, 0x65, 0x144, 0x3b, 0x6c, 0x75, 0x74, 0x79, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x65, +0x63, 0x3b, 0x6b, 0x77, 0x69, 0x65, 0x63, 0x69, 0x65, 0x144, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x63, 0x7a, 0x65, 0x72, 0x77, +0x69, 0x65, 0x63, 0x3b, 0x6c, 0x69, 0x70, 0x69, 0x65, 0x63, 0x3b, 0x73, 0x69, 0x65, 0x72, 0x70, 0x69, 0x65, 0x144, 0x3b, +0x77, 0x72, 0x7a, 0x65, 0x73, 0x69, 0x65, 0x144, 0x3b, 0x70, 0x61, 0x17a, 0x64, 0x7a, 0x69, 0x65, 0x72, 0x6e, 0x69, 0x6b, +0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x3b, 0x67, 0x72, 0x75, 0x64, 0x7a, 0x69, 0x65, 0x144, 0x3b, 0x73, +0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x63, 0x3b, 0x6c, 0x3b, 0x73, 0x3b, 0x77, 0x3b, 0x70, 0x3b, 0x6c, +0x3b, 0x67, 0x3b, 0x73, 0x74, 0x79, 0x63, 0x7a, 0x6e, 0x69, 0x61, 0x3b, 0x6c, 0x75, 0x74, 0x65, 0x67, 0x6f, 0x3b, 0x6d, +0x61, 0x72, 0x63, 0x61, 0x3b, 0x6b, 0x77, 0x69, 0x65, 0x74, 0x6e, 0x69, 0x61, 0x3b, 0x6d, 0x61, 0x6a, 0x61, 0x3b, 0x63, +0x7a, 0x65, 0x72, 0x77, 0x63, 0x61, 0x3b, 0x6c, 0x69, 0x70, 0x63, 0x61, 0x3b, 0x73, 0x69, 0x65, 0x72, 0x70, 0x6e, 0x69, +0x61, 0x3b, 0x77, 0x72, 0x7a, 0x65, 0x15b, 0x6e, 0x69, 0x61, 0x3b, 0x70, 0x61, 0x17a, 0x64, 0x7a, 0x69, 0x65, 0x72, 0x6e, +0x69, 0x6b, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x61, 0x3b, 0x67, 0x72, 0x75, 0x64, 0x6e, 0x69, +0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x62, 0x72, 0x3b, 0x6d, 0x61, +0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x6f, 0x75, +0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x7a, 0x3b, 0x6a, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x66, 0x65, +0x76, 0x65, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, +0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x68, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x68, 0x6f, 0x3b, 0x61, 0x67, 0x6f, +0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, +0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x64, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0xa1c, +0xa28, 0x3b, 0xa2b, 0xa3c, 0xa30, 0x3b, 0xa2e, 0xa3e, 0xa30, 0xa1a, 0x3b, 0xa05, 0xa2a, 0xa4d, 0xa30, 0xa48, 0x3b, 0xa2e, 0xa08, 0x3b, +0xa1c, 0xa42, 0xa28, 0x3b, 0xa1c, 0xa41, 0xa32, 0xa3e, 0x3b, 0xa05, 0xa17, 0x3b, 0xa38, 0xa24, 0xa70, 0x3b, 0xa05, 0xa15, 0xa24, 0xa42, +0x3b, 0xa28, 0xa35, 0xa70, 0x3b, 0xa26, 0xa38, 0xa70, 0x3b, 0xa1c, 0xa28, 0xa35, 0xa30, 0xa40, 0x3b, 0xa2b, 0xa3c, 0xa30, 0xa35, 0xa30, +0xa40, 0x3b, 0xa2e, 0xa3e, 0xa30, 0xa1a, 0x3b, 0xa05, 0xa2a, 0xa4d, 0xa30, 0xa48, 0xa32, 0x3b, 0xa2e, 0xa08, 0x3b, 0xa1c, 0xa42, 0xa28, +0x3b, 0xa1c, 0xa41, 0xa32, 0xa3e, 0xa08, 0x3b, 0xa05, 0xa17, 0xa38, 0xa24, 0x3b, 0xa38, 0xa24, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa05, 0xa15, +0xa24, 0xa42, 0xa2c, 0xa30, 0x3b, 0xa28, 0xa35, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa26, 0xa38, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa1c, 0x3b, 0xa2b, +0xa3c, 0x3b, 0xa2e, 0xa3e, 0x3b, 0xa05, 0x3b, 0xa2e, 0x3b, 0xa1c, 0xa42, 0x3b, 0xa1c, 0xa41, 0x3b, 0xa05, 0x3b, 0xa38, 0x3b, 0xa05, +0x3b, 0xa28, 0x3b, 0xa26, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, +0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x626, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x626, +0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, +0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x51, 0x75, 0x6c, 0x3b, 0x48, 0x61, 0x74, 0x3b, +0x50, 0x61, 0x75, 0x3b, 0x41, 0x79, 0x72, 0x3b, 0x41, 0x79, 0x6d, 0x3b, 0x49, 0x6e, 0x74, 0x3b, 0x41, 0x6e, 0x74, 0x3b, +0x51, 0x68, 0x61, 0x3b, 0x55, 0x6d, 0x61, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x41, 0x79, 0x61, 0x3b, 0x4b, 0x61, 0x70, 0x3b, +0x51, 0x75, 0x6c, 0x6c, 0x61, 0x20, 0x70, 0x75, 0x71, 0x75, 0x79, 0x3b, 0x48, 0x61, 0x74, 0x75, 0x6e, 0x20, 0x70, 0x75, +0x71, 0x75, 0x79, 0x3b, 0x50, 0x61, 0x75, 0x71, 0x61, 0x72, 0x20, 0x77, 0x61, 0x72, 0x61, 0x79, 0x3b, 0x41, 0x79, 0x72, +0x69, 0x77, 0x61, 0x3b, 0x41, 0x79, 0x6d, 0x75, 0x72, 0x61, 0x79, 0x3b, 0x49, 0x6e, 0x74, 0x69, 0x20, 0x72, 0x61, 0x79, +0x6d, 0x69, 0x3b, 0x41, 0x6e, 0x74, 0x61, 0x20, 0x53, 0x69, 0x74, 0x77, 0x61, 0x3b, 0x51, 0x68, 0x61, 0x70, 0x61, 0x71, +0x20, 0x53, 0x69, 0x74, 0x77, 0x61, 0x3b, 0x55, 0x6d, 0x61, 0x20, 0x72, 0x61, 0x79, 0x6d, 0x69, 0x3b, 0x4b, 0x61, 0x6e, +0x74, 0x61, 0x72, 0x61, 0x79, 0x3b, 0x41, 0x79, 0x61, 0x6d, 0x61, 0x72, 0x71, 0x2bc, 0x61, 0x3b, 0x4b, 0x61, 0x70, 0x61, +0x71, 0x20, 0x52, 0x61, 0x79, 0x6d, 0x69, 0x3b, 0x73, 0x63, 0x68, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x61, 0x76, 0x72, 0x2e, +0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x74, 0x67, 0x3b, 0x7a, 0x65, 0x72, 0x63, +0x6c, 0x2e, 0x3b, 0x66, 0x61, 0x6e, 0x2e, 0x3b, 0x61, 0x76, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x2e, 0x3b, +0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x73, 0x63, 0x68, 0x61, 0x6e, +0x65, 0x72, 0x3b, 0x66, 0x61, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x69, 0x67, +0x6c, 0x3b, 0x6d, 0x61, 0x74, 0x67, 0x3b, 0x7a, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x64, 0x75, 0x72, 0x3b, 0x66, 0x61, 0x6e, +0x61, 0x64, 0x75, 0x72, 0x3b, 0x61, 0x76, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, +0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, +0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x53, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x46, +0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x69, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, +0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x69, 0x75, 0x6e, 0x2e, 0x3b, +0x69, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, +0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x69, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x65, 0x3b, +0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x69, 0x65, 0x3b, 0x61, 0x70, 0x72, +0x69, 0x6c, 0x69, 0x65, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x69, 0x75, 0x6e, 0x69, 0x65, 0x3b, 0x69, 0x75, 0x6c, 0x69, 0x65, +0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x6f, +0x63, 0x74, 0x6f, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x6e, 0x6f, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x64, +0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x49, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, +0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, +0x432, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, +0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x43e, +0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, +0x444, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, +0x438, 0x44e, 0x43d, 0x2e, 0x3b, 0x438, 0x44e, 0x43b, 0x2e, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x2e, +0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, +0x430, 0x440, 0x44f, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44f, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x430, 0x3b, 0x430, 0x43f, +0x440, 0x435, 0x43b, 0x44f, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x438, 0x44e, 0x43d, 0x44f, 0x3b, 0x438, 0x44e, 0x43b, 0x44f, 0x3b, 0x430, +0x432, 0x433, 0x443, 0x441, 0x442, 0x430, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44f, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, +0x431, 0x440, 0x44f, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44f, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44f, 0x3b, 0x4e, +0x79, 0x65, 0x3b, 0x46, 0x75, 0x6c, 0x3b, 0x4d, 0x62, 0xe4, 0x3b, 0x4e, 0x67, 0x75, 0x3b, 0x42, 0xea, 0x6c, 0x3b, 0x46, +0xf6, 0x6e, 0x3b, 0x4c, 0x65, 0x6e, 0x3b, 0x4b, 0xfc, 0x6b, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x4e, 0x67, 0x62, 0x3b, 0x4e, +0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6b, 0x3b, 0x4e, 0x79, 0x65, 0x6e, 0x79, 0x65, 0x3b, 0x46, 0x75, 0x6c, 0x75, 0x6e, 0x64, +0xef, 0x67, 0x69, 0x3b, 0x4d, 0x62, 0xe4, 0x6e, 0x67, 0xfc, 0x3b, 0x4e, 0x67, 0x75, 0x62, 0xf9, 0x65, 0x3b, 0x42, 0xea, +0x6c, 0xe4, 0x77, 0xfc, 0x3b, 0x46, 0xf6, 0x6e, 0x64, 0x6f, 0x3b, 0x4c, 0x65, 0x6e, 0x67, 0x75, 0x61, 0x3b, 0x4b, 0xfc, +0x6b, 0xfc, 0x72, 0xfc, 0x3b, 0x4d, 0x76, 0x75, 0x6b, 0x61, 0x3b, 0x4e, 0x67, 0x62, 0x65, 0x72, 0x65, 0x72, 0x65, 0x3b, +0x4e, 0x61, 0x62, 0xe4, 0x6e, 0x64, 0xfc, 0x72, 0x75, 0x3b, 0x4b, 0x61, 0x6b, 0x61, 0x75, 0x6b, 0x61, 0x3b, 0x4e, 0x3b, +0x46, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x42, 0x3b, 0x46, 0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, +0x4b, 0x3b, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, +0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x3b, 0x43e, 0x43a, +0x442, 0x3b, 0x43d, 0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446, 0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x431, +0x440, 0x443, 0x430, 0x440, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x458, 0x3b, +0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, +0x43c, 0x431, 0x430, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x431, 0x430, 0x440, 0x3b, 0x43d, 0x43e, 0x432, 0x435, 0x43c, 0x431, 0x430, +0x440, 0x3b, 0x434, 0x435, 0x446, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, +0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, +0x76, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, +0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, +0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, +0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, +0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, +0x6a, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x61, 0x3b, 0x73, 0x3b, 0x6f, 0x3b, +0x6e, 0x3b, 0x64, 0x3b, 0x42f, 0x43d, 0x432, 0x2e, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x2e, +0x3b, 0x410, 0x43f, 0x440, 0x2e, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, +0x410, 0x432, 0x433, 0x2e, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x41e, 0x43a, 0x442, 0x2e, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, +0x2e, 0x3b, 0x414, 0x435, 0x43a, 0x2e, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, 0x43b, +0x44c, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x44a, 0x438, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x439, 0x3b, +0x418, 0x44e, 0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d, +0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x44c, +0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, +0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x44b, 0x3b, 0x438, 0x44e, 0x43d, 0x44b, 0x3b, 0x438, +0x44e, 0x43b, 0x44b, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, +0x43e, 0x44f, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44b, 0x3b, 0x444, 0x435, 0x432, 0x440, +0x430, 0x43b, 0x44b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x44a, 0x438, 0x439, 0x44b, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44b, 0x3b, +0x43c, 0x430, 0x439, 0x44b, 0x3b, 0x438, 0x44e, 0x43d, 0x44b, 0x3b, 0x438, 0x44e, 0x43b, 0x44b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, +0x442, 0x44b, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44b, 0x3b, +0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44b, 0x3b, 0x4e, 0x64, 0x69, 0x3b, 0x4b, +0x75, 0x6b, 0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x4b, 0x75, 0x62, 0x3b, 0x43, 0x68, 0x76, 0x3b, 0x43, 0x68, 0x6b, 0x3b, 0x43, +0x68, 0x67, 0x3b, 0x4e, 0x79, 0x61, 0x3b, 0x47, 0x75, 0x6e, 0x3b, 0x47, 0x75, 0x6d, 0x3b, 0x4d, 0x62, 0x3b, 0x5a, 0x76, +0x69, 0x3b, 0x4e, 0x64, 0x69, 0x72, 0x61, 0x3b, 0x4b, 0x75, 0x6b, 0x61, 0x64, 0x7a, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x75, +0x6d, 0x65, 0x3b, 0x4b, 0x75, 0x62, 0x76, 0x75, 0x6d, 0x62, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x76, 0x61, 0x62, 0x76, 0x75, +0x3b, 0x43, 0x68, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x6b, 0x75, 0x6e, 0x67, 0x75, 0x72, 0x75, 0x3b, +0x4e, 0x79, 0x61, 0x6d, 0x61, 0x76, 0x68, 0x75, 0x76, 0x68, 0x75, 0x3b, 0x47, 0x75, 0x6e, 0x79, 0x61, 0x6e, 0x61, 0x3b, +0x47, 0x75, 0x6d, 0x69, 0x67, 0x75, 0x72, 0x75, 0x3b, 0x4d, 0x62, 0x75, 0x64, 0x7a, 0x69, 0x3b, 0x5a, 0x76, 0x69, 0x74, +0x61, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x4e, 0x3b, 0x47, 0x3b, +0x47, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0xda2, 0xdb1, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x3b, 0xdb8, 0xdcf, 0xdbb, 0xdca, 0x3b, 0xd85, 0xdb4, +0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, +0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0x3b, 0xdc3, 0xdd0, 0xdb4, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0x3b, +0xdaf, 0xdd9, 0xdc3, 0xdd0, 0x3b, 0xda2, 0xdb1, 0xdc0, 0xdcf, 0xdbb, 0xdd2, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0xdbb, 0xdc0, 0xdcf, 0xdbb, 0xdd2, +0x3b, 0xdb8, 0xdcf, 0xdbb, 0xdca, 0xdad, 0xdd4, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, +0xdd2, 0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0xdc3, 0xdca, 0xdad, 0xdd4, 0x3b, +0xdc3, 0xdd0, 0xdb4, 0xdca, 0xdad, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0xdad, 0xddd, 0xdb6, 0xdbb, 0xdca, +0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, +0x3b, 0xda2, 0x3b, 0xdb4, 0xdd9, 0x3b, 0xdb8, 0xdcf, 0x3b, 0xd85, 0x3b, 0xdb8, 0xdd0, 0x3b, 0xda2, 0xdd6, 0x3b, 0xda2, 0xdd6, 0x3b, +0xd85, 0x3b, 0xdc3, 0xdd0, 0x3b, 0xd94, 0x3b, 0xdb1, 0xdd9, 0x3b, 0xdaf, 0xdd9, 0x3b, 0xda2, 0xdb1, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x3b, +0xdb8, 0xdcf, 0xdbb, 0xdca, 0xdad, 0xdd4, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, +0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0x3b, 0xdc3, 0xdd0, 0xdb4, 0xdca, 0x3b, +0xd94, 0xd9a, 0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, +0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0xe1, 0x6a, 0x3b, 0x6a, 0xfa, 0x6e, 0x3b, 0x6a, 0xfa, +0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, +0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x3b, 0x6d, 0x61, 0x72, +0x65, 0x63, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x3b, 0x6d, 0xe1, 0x6a, 0x3b, 0x6a, 0xfa, 0x6e, 0x3b, 0x6a, 0xfa, 0x6c, +0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, +0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, +0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x61, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x61, +0x3b, 0x6d, 0x61, 0x72, 0x63, 0x61, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x61, 0x3b, 0x6d, 0xe1, 0x6a, 0x61, 0x3b, 0x6a, +0xfa, 0x6e, 0x61, 0x3b, 0x6a, 0xfa, 0x6c, 0x61, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x70, +0x74, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x72, 0x61, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, +0x62, 0x72, 0x61, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, +0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x65, 0x63, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, +0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x3b, 0x61, 0x76, 0x67, 0x75, +0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, +0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, +0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, +0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x76, 0x67, 0x2e, 0x3b, 0x73, 0x65, +0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x4b, 0x6f, +0x62, 0x3b, 0x4c, 0x61, 0x62, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x41, 0x66, 0x72, 0x3b, 0x53, 0x68, 0x61, 0x3b, 0x4c, 0x69, +0x78, 0x3b, 0x54, 0x6f, 0x64, 0x3b, 0x53, 0x69, 0x64, 0x3b, 0x53, 0x61, 0x67, 0x3b, 0x54, 0x6f, 0x62, 0x3b, 0x4b, 0x49, +0x54, 0x3b, 0x4c, 0x49, 0x54, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4b, 0x6f, 0x6f, 0x62, 0x61, 0x61, 0x64, 0x3b, +0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x61, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, +0x61, 0x64, 0x64, 0x65, 0x78, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x41, 0x66, 0x72, 0x61, 0x61, +0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x68, 0x61, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, +0x61, 0x20, 0x4c, 0x69, 0x78, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x54, 0x6f, 0x64, 0x6f, 0x62, +0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x69, 0x64, 0x65, 0x65, 0x64, 0x61, 0x61, 0x64, 0x3b, +0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x61, 0x67, 0x61, 0x61, 0x6c, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, +0x61, 0x20, 0x54, 0x6f, 0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4b, 0x6f, 0x77, 0x20, +0x69, 0x79, 0x6f, 0x20, 0x54, 0x6f, 0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x61, +0x62, 0x61, 0x20, 0x69, 0x79, 0x6f, 0x20, 0x54, 0x6f, 0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x4b, 0x3b, 0x4c, 0x3b, 0x53, +0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4c, 0x3b, 0x65, +0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, +0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, +0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, +0x65, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, +0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, +0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, +0x3b, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, +0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x45, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, +0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, +0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, +0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x63, +0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, +0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x61, 0x3b, 0x73, 0x3b, 0x6f, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x65, 0x6e, 0x65, +0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x6a, 0x75, 0x6e, +0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x63, 0x74, 0x3b, 0x6e, 0x6f, 0x76, +0x3b, 0x64, 0x69, 0x63, 0x3b, 0x45, 0x6e, 0x65, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0x61, 0x72, 0x2e, 0x3b, +0x41, 0x62, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x79, 0x2e, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, 0x3b, 0x4a, 0x75, 0x6c, 0x2e, 0x3b, +0x41, 0x67, 0x6f, 0x2e, 0x3b, 0x53, 0x65, 0x74, 0x2e, 0x3b, 0x4f, 0x63, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, +0x44, 0x69, 0x63, 0x2e, 0x3b, 0x45, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x4d, +0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x6f, 0x3b, 0x4a, 0x75, 0x6e, 0x69, +0x6f, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x69, 0x65, +0x6d, 0x62, 0x72, 0x65, 0x3b, 0x4f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x4e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, +0x72, 0x65, 0x3b, 0x44, 0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, +0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, +0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, 0x63, +0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x66, +0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, +0x61, 0x79, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, +0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, +0x3b, 0x6e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, +0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, +0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, +0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, +0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x3b, 0x4d, +0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x69, +0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, +0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x6b, 0x3b, 0x70, 0x3b, 0x74, 0x3b, 0x69, +0x3b, 0x74, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x74, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x6b, 0x77, +0x3b, 0x6d, 0x70, 0x69, 0x3b, 0x6d, 0x74, 0x75, 0x3b, 0x6d, 0x69, 0x6e, 0x3b, 0x6d, 0x74, 0x6e, 0x3b, 0x6d, 0x73, 0x74, +0x3b, 0x6d, 0x73, 0x62, 0x3b, 0x6d, 0x75, 0x6e, 0x3b, 0x6d, 0x74, 0x73, 0x3b, 0x6d, 0x6b, 0x75, 0x3b, 0x6d, 0x6b, 0x6d, +0x3b, 0x6d, 0x6b, 0x62, 0x3b, 0x6d, 0x77, 0x65, 0x7a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x6b, 0x77, 0x61, 0x6e, 0x6a, 0x61, +0x3b, 0x6d, 0x77, 0x65, 0x7a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x6d, 0x77, 0x65, 0x7a, 0x69, +0x20, 0x79, 0x61, 0x20, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x6d, 0x77, 0x65, 0x7a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x69, 0x6e, +0x65, 0x3b, 0x6d, 0x77, 0x65, 0x7a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x6d, 0x77, 0x65, 0x7a, +0x69, 0x20, 0x79, 0x61, 0x20, 0x73, 0x69, 0x74, 0x61, 0x3b, 0x6d, 0x77, 0x65, 0x7a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x73, +0x61, 0x62, 0x61, 0x3b, 0x6d, 0x77, 0x65, 0x7a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x75, 0x6e, 0x61, 0x6e, 0x65, 0x3b, +0x6d, 0x77, 0x65, 0x7a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x74, 0x69, 0x73, 0x61, 0x3b, 0x6d, 0x77, 0x65, 0x7a, 0x69, 0x20, +0x79, 0x61, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x6d, 0x77, 0x65, 0x7a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x6b, 0x75, 0x6d, +0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x6f, 0x79, 0x61, 0x3b, 0x6d, 0x77, 0x65, 0x7a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x6b, +0x75, 0x6d, 0x69, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, +0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, +0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, +0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, +0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, +0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, +0x69, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, +0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0xb9c, 0xba9, +0x2e, 0x3b, 0xbaa, 0xbbf, 0xbaa, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbbe, 0xbb0, 0xbcd, 0x2e, 0x3b, 0xb8f, 0xbaa, 0xbcd, 0x2e, 0x3b, 0xbae, +0xbc7, 0x3b, 0xb9c, 0xbc2, 0xba9, 0xbcd, 0x3b, 0xb9c, 0xbc2, 0xbb2, 0xbc8, 0x3b, 0xb86, 0xb95, 0x2e, 0x3b, 0xb9a, 0xbc6, 0xbaa, 0xbcd, +0x2e, 0x3b, 0xb85, 0xb95, 0xbcd, 0x2e, 0x3b, 0xba8, 0xbb5, 0x2e, 0x3b, 0xb9f, 0xbbf, 0xb9a, 0x2e, 0x3b, 0xb9c, 0xba9, 0xbb5, 0xbb0, +0xbbf, 0x3b, 0xbaa, 0xbbf, 0xbaa, 0xbcd, 0xbb0, 0xbb5, 0xbb0, 0xbbf, 0x3b, 0xbae, 0xbbe, 0xbb0, 0xbcd, 0xb9a, 0xbcd, 0x3b, 0xb8f, 0xbaa, +0xbcd, 0xbb0, 0xbb2, 0xbcd, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0xba9, 0xbcd, 0x3b, 0xb9c, 0xbc2, 0xbb2, 0xbc8, 0x3b, 0xb86, 0xb95, +0xbb8, 0xbcd, 0xb9f, 0xbc1, 0x3b, 0xb9a, 0xbc6, 0xbaa, 0xbcd, 0xb9f, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb85, 0xb95, 0xbcd, 0xb9f, +0xbcb, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xba8, 0xbb5, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb9f, 0xbbf, 0xb9a, 0xbae, 0xbcd, 0xbaa, 0xbb0, +0xbcd, 0x3b, 0xb9c, 0x3b, 0xbaa, 0xbbf, 0x3b, 0xbae, 0xbbe, 0x3b, 0xb8f, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0x3b, 0xb9c, 0xbc2, +0x3b, 0xb86, 0x3b, 0xb9a, 0xbc6, 0x3b, 0xb85, 0x3b, 0xba8, 0x3b, 0xb9f, 0xbbf, 0x3b, 0xb9c, 0xba9, 0xbb5, 0xbb0, 0xbbf, 0x3b, 0xbaa, +0xbbf, 0xbaa, 0xbcd, 0xbb0, 0xbb5, 0xbb0, 0xbbf, 0x3b, 0xbae, 0xbbe, 0xbb0, 0xbcd, 0xb9a, 0xbcd, 0x3b, 0xb8f, 0xbaa, 0xbcd, 0xbb0, 0xbb2, +0xbcd, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0xba9, 0xbcd, 0x3b, 0xb9c, 0xbc2, 0xbb2, 0xbc8, 0x3b, 0xb86, 0xb95, 0xbb8, 0xbcd, 0xb9f, +0xbcd, 0x3b, 0xb9a, 0xbc6, 0xbaa, 0xbcd, 0xb9f, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb85, 0xb95, 0xbcd, 0xb9f, 0xbcb, 0xbaa, 0xbb0, +0xbcd, 0x3b, 0xba8, 0xbb5, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb9f, 0xbbf, 0xb9a, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xc1c, +0xc28, 0x3b, 0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30, 0x3b, 0xc2e, 0xc3e, 0xc30, 0xc4d, 0xc1a, 0xc3f, 0x3b, 0xc0f, 0xc2a, 0xc4d, 0xc30, 0xc3f, +0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0xc28, 0xc4d, 0x3b, 0xc1c, 0xc41, 0xc32, 0xc48, 0x3b, 0xc06, 0xc17, 0xc38, 0xc4d, 0xc1f, 0xc41, +0x3b, 0xc38, 0xc46, 0xc2a, 0xc4d, 0xc1f, 0xc46, 0xc02, 0x3b, 0xc05, 0xc15, 0xc4d, 0xc1f, 0xc4b, 0x3b, 0xc28, 0xc35, 0xc02, 0x3b, 0xc21, +0xc3f, 0xc38, 0xc46, 0xc02, 0x3b, 0xc1c, 0xc28, 0xc35, 0xc30, 0xc3f, 0x3b, 0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30, 0xc35, 0xc30, 0xc3f, 0x3b, +0xc2e, 0xc3e, 0xc30, 0xc4d, 0xc1a, 0xc3f, 0x3b, 0xc0f, 0xc2a, 0xc4d, 0xc30, 0xc3f, 0xc32, 0xc4d, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, +0xc28, 0xc4d, 0x3b, 0xc1c, 0xc41, 0xc32, 0xc48, 0x3b, 0xc06, 0xc17, 0xc38, 0xc4d, 0xc1f, 0xc41, 0x3b, 0xc38, 0xc46, 0xc2a, 0xc4d, 0xc1f, +0xc46, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc05, 0xc15, 0xc4d, 0xc1f, 0xc4b, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc28, 0xc35, 0xc02, 0xc2c, 0xc30, +0xc4d, 0x3b, 0xc21, 0xc3f, 0xc38, 0xc46, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc1c, 0x3b, 0xc2b, 0xc3f, 0x3b, 0xc2e, 0xc3e, 0x3b, 0xc0f, +0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0x3b, 0xc1c, 0xc41, 0x3b, 0xc06, 0x3b, 0xc38, 0xc46, 0x3b, 0xc05, 0x3b, 0xc28, 0x3b, 0xc21, +0xc3f, 0x3b, 0xc1c, 0xc28, 0x3b, 0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30, 0x3b, 0xc2e, 0xc3e, 0xc30, 0xc4d, 0xc1a, 0xc3f, 0x3b, 0xc0f, 0xc2a, +0xc4d, 0xc30, 0xc3f, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0xc28, 0xc4d, 0x3b, 0xc1c, 0xc41, 0xc32, 0xc48, 0x3b, 0xc06, 0xc17, 0x3b, +0xc38, 0xc46, 0xc2a, 0xc4d, 0xc1f, 0xc46, 0xc02, 0x3b, 0xc05, 0xc15, 0xc4d, 0xc1f, 0xc4b, 0x3b, 0xc28, 0xc35, 0xc02, 0x3b, 0xc21, 0xc3f, +0xc38, 0xc46, 0xc02, 0x3b, 0xe21, 0x2e, 0xe04, 0x2e, 0x3b, 0xe01, 0x2e, 0xe1e, 0x2e, 0x3b, 0xe21, 0xe35, 0x2e, 0xe04, 0x2e, 0x3b, +0xe40, 0xe21, 0x2e, 0xe22, 0x2e, 0x3b, 0xe1e, 0x2e, 0xe04, 0x2e, 0x3b, 0xe21, 0xe34, 0x2e, 0xe22, 0x2e, 0x3b, 0xe01, 0x2e, 0xe04, +0x2e, 0x3b, 0xe2a, 0x2e, 0xe04, 0x2e, 0x3b, 0xe01, 0x2e, 0xe22, 0x2e, 0x3b, 0xe15, 0x2e, 0xe04, 0x2e, 0x3b, 0xe1e, 0x2e, 0xe22, +0x2e, 0x3b, 0xe18, 0x2e, 0xe04, 0x2e, 0x3b, 0xe21, 0xe01, 0xe23, 0xe32, 0xe04, 0xe21, 0x3b, 0xe01, 0xe38, 0xe21, 0xe20, 0xe32, 0xe1e, +0xe31, 0xe19, 0xe18, 0xe4c, 0x3b, 0xe21, 0xe35, 0xe19, 0xe32, 0xe04, 0xe21, 0x3b, 0xe40, 0xe21, 0xe29, 0xe32, 0xe22, 0xe19, 0x3b, 0xe1e, +0xe24, 0xe29, 0xe20, 0xe32, 0xe04, 0xe21, 0x3b, 0xe21, 0xe34, 0xe16, 0xe38, 0xe19, 0xe32, 0xe22, 0xe19, 0x3b, 0xe01, 0xe23, 0xe01, 0xe0e, +0xe32, 0xe04, 0xe21, 0x3b, 0xe2a, 0xe34, 0xe07, 0xe2b, 0xe32, 0xe04, 0xe21, 0x3b, 0xe01, 0xe31, 0xe19, 0xe22, 0xe32, 0xe22, 0xe19, 0x3b, +0xe15, 0xe38, 0xe25, 0xe32, 0xe04, 0xe21, 0x3b, 0xe1e, 0xe24, 0xe28, 0xe08, 0xe34, 0xe01, 0xe32, 0xe22, 0xe19, 0x3b, 0xe18, 0xe31, 0xe19, +0xe27, 0xe32, 0xe04, 0xe21, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf44, 0xf0b, 0xf54, 0xf7c, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, +0xf56, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, +0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, +0xf63, 0xf94, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, +0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf62, 0xf92, +0xfb1, 0xf51, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, +0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, +0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, +0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf44, 0xf0b, 0xf54, 0xf7c, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, +0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0x3b, 0xf5f, +0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0x3b, +0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf51, 0xf74, +0xf53, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, +0xf56, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0x3b, 0xf5f, +0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, +0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0x3b, 0x1303, 0x1295, 0x12e9, 0x3b, 0x134c, 0x1265, 0x1229, 0x3b, 0x121b, +0x122d, 0x127d, 0x3b, 0x12a4, 0x1355, 0x1228, 0x3b, 0x121c, 0x12ed, 0x3b, 0x1301, 0x1295, 0x3b, 0x1301, 0x120b, 0x12ed, 0x3b, 0x12a6, 0x1308, 0x1235, +0x3b, 0x1234, 0x1355, 0x1274, 0x3b, 0x12a6, 0x12ad, 0x1270, 0x3b, 0x1296, 0x126c, 0x121d, 0x3b, 0x12f2, 0x1234, 0x121d, 0x3b, 0x1303, 0x1295, 0x12e9, +0x12c8, 0x122a, 0x3b, 0x134c, 0x1265, 0x1229, 0x12c8, 0x122a, 0x3b, 0x121b, 0x122d, 0x127d, 0x3b, 0x12a4, 0x1355, 0x1228, 0x120d, 0x3b, 0x121c, 0x12ed, +0x3b, 0x1301, 0x1295, 0x3b, 0x1301, 0x120b, 0x12ed, 0x3b, 0x12a6, 0x1308, 0x1235, 0x1275, 0x3b, 0x1234, 0x1355, 0x1274, 0x121d, 0x1260, 0x122d, 0x3b, +0x12a6, 0x12ad, 0x1270, 0x12cd, 0x1260, 0x122d, 0x3b, 0x1296, 0x126c, 0x121d, 0x1260, 0x122d, 0x3b, 0x12f2, 0x1234, 0x121d, 0x1260, 0x122d, 0x3b, 0x1325, +0x122a, 0x3b, 0x1208, 0x12ab, 0x1272, 0x3b, 0x1218, 0x130b, 0x1262, 0x3b, 0x121a, 0x12eb, 0x12dd, 0x3b, 0x130d, 0x1295, 0x1266, 0x3b, 0x1230, 0x1290, +0x3b, 0x1213, 0x121d, 0x1208, 0x3b, 0x1290, 0x1213, 0x1230, 0x3b, 0x1218, 0x1235, 0x12a8, 0x3b, 0x1325, 0x1245, 0x121d, 0x3b, 0x1215, 0x12f3, 0x122d, +0x3b, 0x1273, 0x1215, 0x1233, 0x3b, 0x1325, 0x122a, 0x3b, 0x1208, 0x12ab, 0x1272, 0x1275, 0x3b, 0x1218, 0x130b, 0x1262, 0x1275, 0x3b, 0x121a, 0x12eb, +0x12dd, 0x12eb, 0x3b, 0x130d, 0x1295, 0x1266, 0x1275, 0x3b, 0x1230, 0x1290, 0x3b, 0x1213, 0x121d, 0x1208, 0x3b, 0x1290, 0x1213, 0x1230, 0x3b, 0x1218, +0x1235, 0x12a8, 0x1228, 0x121d, 0x3b, 0x1325, 0x1245, 0x121d, 0x1272, 0x3b, 0x1215, 0x12f3, 0x122d, 0x3b, 0x1273, 0x1215, 0x1233, 0x1235, 0x3b, 0x53, +0x101, 0x6e, 0x3b, 0x46, 0x113, 0x70, 0x3b, 0x4d, 0x61, 0x2bb, 0x61, 0x3b, 0x2bb, 0x45, 0x70, 0x65, 0x3b, 0x4d, 0x113, 0x3b, +0x53, 0x75, 0x6e, 0x3b, 0x53, 0x69, 0x75, 0x3b, 0x2bb, 0x41, 0x6f, 0x6b, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x2bb, 0x4f, 0x6b, +0x61, 0x3b, 0x4e, 0x14d, 0x76, 0x3b, 0x54, 0x12b, 0x73, 0x3b, 0x53, 0x101, 0x6e, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x46, 0x113, +0x70, 0x75, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x2bb, 0x61, 0x73, 0x69, 0x3b, 0x2bb, 0x45, 0x70, 0x65, 0x6c, 0x65, 0x6c, +0x69, 0x3b, 0x4d, 0x113, 0x3b, 0x53, 0x75, 0x6e, 0x65, 0x3b, 0x53, 0x69, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x2bb, 0x41, 0x6f, +0x6b, 0x6f, 0x73, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x69, 0x74, 0x65, 0x6d, 0x61, 0x3b, 0x2bb, 0x4f, 0x6b, 0x61, 0x74, 0x6f, +0x70, 0x61, 0x3b, 0x4e, 0x14d, 0x76, 0x65, 0x6d, 0x61, 0x3b, 0x54, 0x12b, 0x73, 0x65, 0x6d, 0x61, 0x3b, 0x53, 0x3b, 0x46, +0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x54, +0x3b, 0x4f, 0x63, 0x61, 0x3b, 0x15e, 0x75, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4e, 0x69, 0x73, 0x3b, 0x4d, 0x61, 0x79, +0x3b, 0x48, 0x61, 0x7a, 0x3b, 0x54, 0x65, 0x6d, 0x3b, 0x41, 0x11f, 0x75, 0x3b, 0x45, 0x79, 0x6c, 0x3b, 0x45, 0x6b, 0x69, +0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x4f, 0x63, 0x61, 0x6b, 0x3b, 0x15e, 0x75, 0x62, 0x61, 0x74, 0x3b, +0x4d, 0x61, 0x72, 0x74, 0x3b, 0x4e, 0x69, 0x73, 0x61, 0x6e, 0x3b, 0x4d, 0x61, 0x79, 0x131, 0x73, 0x3b, 0x48, 0x61, 0x7a, +0x69, 0x72, 0x61, 0x6e, 0x3b, 0x54, 0x65, 0x6d, 0x6d, 0x75, 0x7a, 0x3b, 0x41, 0x11f, 0x75, 0x73, 0x74, 0x6f, 0x73, 0x3b, +0x45, 0x79, 0x6c, 0xfc, 0x6c, 0x3b, 0x45, 0x6b, 0x69, 0x6d, 0x3b, 0x4b, 0x61, 0x73, 0x131, 0x6d, 0x3b, 0x41, 0x72, 0x61, +0x6c, 0x131, 0x6b, 0x3b, 0x4f, 0x3b, 0x15e, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x41, 0x3b, +0x45, 0x3b, 0x45, 0x3b, 0x4b, 0x3b, 0x41, 0x3b, 0xfd, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x77, 0x3b, 0x6d, 0x61, 0x72, 0x74, +0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0xfd, 0x3b, 0x69, 0xfd, 0x75, 0x6e, 0x3b, 0x69, 0xfd, 0x75, 0x6c, 0x3b, 0x61, +0x77, 0x67, 0x3b, 0x73, 0x65, 0x6e, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0xfd, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0xfd, +0x61, 0x6e, 0x77, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x77, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, +0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0xfd, 0x3b, 0x69, 0xfd, 0x75, 0x6e, 0x3b, 0x69, 0xfd, 0x75, 0x6c, 0x3b, 0x61, 0x77, +0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x6e, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xfd, 0x61, 0x62, +0x72, 0x3b, 0x6e, 0x6f, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0xdd, 0x3b, 0x46, 0x3b, +0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, +0x64a, 0x627, 0x646, 0x6cb, 0x627, 0x631, 0x3b, 0x641, 0x6d0, 0x6cb, 0x631, 0x627, 0x644, 0x3b, 0x645, 0x627, 0x631, 0x62a, 0x3b, 0x626, +0x627, 0x67e, 0x631, 0x6d0, 0x644, 0x3b, 0x645, 0x627, 0x64a, 0x3b, 0x626, 0x649, 0x64a, 0x6c7, 0x646, 0x3b, 0x626, 0x649, 0x64a, 0x6c7, +0x644, 0x3b, 0x626, 0x627, 0x6cb, 0x63a, 0x6c7, 0x633, 0x62a, 0x3b, 0x633, 0x6d0, 0x646, 0x62a, 0x6d5, 0x628, 0x649, 0x631, 0x3b, 0x626, +0x6c6, 0x643, 0x62a, 0x6d5, 0x628, 0x649, 0x631, 0x3b, 0x646, 0x648, 0x64a, 0x627, 0x628, 0x649, 0x631, 0x3b, 0x62f, 0x6d0, 0x643, 0x627, +0x628, 0x649, 0x631, 0x3b, 0x421, 0x456, 0x447, 0x3b, 0x41b, 0x44e, 0x442, 0x3b, 0x411, 0x435, 0x440, 0x3b, 0x41a, 0x432, 0x456, 0x3b, +0x422, 0x440, 0x430, 0x3b, 0x427, 0x435, 0x440, 0x3b, 0x41b, 0x438, 0x43f, 0x3b, 0x421, 0x435, 0x440, 0x3b, 0x412, 0x435, 0x440, 0x3b, +0x416, 0x43e, 0x432, 0x3b, 0x41b, 0x438, 0x441, 0x3b, 0x413, 0x440, 0x443, 0x3b, 0x441, 0x456, 0x447, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, +0x44e, 0x442, 0x438, 0x439, 0x3b, 0x431, 0x435, 0x440, 0x435, 0x437, 0x435, 0x43d, 0x44c, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x435, 0x43d, +0x44c, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x438, +0x43f, 0x435, 0x43d, 0x44c, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x435, 0x43d, 0x44c, 0x3b, 0x432, 0x435, 0x440, 0x435, 0x441, 0x435, 0x43d, +0x44c, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x43e, 0x43f, 0x430, 0x434, 0x3b, 0x433, +0x440, 0x443, 0x434, 0x435, 0x43d, 0x44c, 0x3b, 0x421, 0x3b, 0x41b, 0x3b, 0x411, 0x3b, 0x41a, 0x3b, 0x422, 0x3b, 0x427, 0x3b, 0x41b, +0x3b, 0x421, 0x3b, 0x412, 0x3b, 0x416, 0x3b, 0x41b, 0x3b, 0x413, 0x3b, 0x441, 0x456, 0x447, 0x2e, 0x3b, 0x43b, 0x44e, 0x442, 0x2e, +0x3b, 0x431, 0x435, 0x440, 0x2e, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x2e, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x2e, 0x3b, 0x447, 0x435, +0x440, 0x432, 0x2e, 0x3b, 0x43b, 0x438, 0x43f, 0x2e, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x2e, 0x3b, 0x432, 0x435, 0x440, 0x2e, 0x3b, +0x436, 0x43e, 0x432, 0x442, 0x2e, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x2e, 0x3b, 0x433, 0x440, 0x443, 0x434, 0x2e, 0x3b, 0x441, 0x456, +0x447, 0x43d, 0x44f, 0x3b, 0x43b, 0x44e, 0x442, 0x43e, 0x433, 0x43e, 0x3b, 0x431, 0x435, 0x440, 0x435, 0x437, 0x43d, 0x44f, 0x3b, 0x43a, +0x432, 0x456, 0x442, 0x43d, 0x44f, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x43d, 0x44f, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x43d, 0x44f, 0x3b, +0x43b, 0x438, 0x43f, 0x43d, 0x44f, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x43d, 0x44f, 0x3b, 0x432, 0x435, 0x440, 0x435, 0x441, 0x43d, 0x44f, +0x3b, 0x436, 0x43e, 0x432, 0x442, 0x43d, 0x44f, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x43e, 0x43f, 0x430, 0x434, 0x430, 0x3b, 0x433, 0x440, +0x443, 0x434, 0x43d, 0x44f, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, +0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x626, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, +0x626, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, +0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x59, 0x61, 0x6e, 0x76, 0x3b, 0x46, 0x65, +0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x49, 0x79, 0x75, 0x6e, 0x3b, 0x49, +0x79, 0x75, 0x6c, 0x3b, 0x41, 0x76, 0x67, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x79, 0x61, +0x3b, 0x44, 0x65, 0x6b, 0x3b, 0x59, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x4d, +0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x49, 0x79, 0x75, 0x6e, 0x3b, 0x49, +0x79, 0x75, 0x6c, 0x3b, 0x41, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x6e, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x4f, +0x6b, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x4e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x44, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, +0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, +0x4e, 0x3b, 0x44, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, +0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x6e, 0x3b, 0x69, 0x79, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x6e, 0x3b, +0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x79, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x66, +0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0x79, +0x3b, 0x69, 0x79, 0x75, 0x6e, 0x3b, 0x69, 0x79, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, +0x6e, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, +0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x62c, 0x646, 0x648, 0x3b, 0x641, 0x628, 0x631, 0x3b, 0x645, 0x627, 0x631, 0x3b, 0x627, +0x67e, 0x631, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x3b, 0x627, 0x6af, 0x633, 0x3b, 0x633, 0x67e, +0x62a, 0x3b, 0x627, 0x6a9, 0x62a, 0x3b, 0x646, 0x648, 0x645, 0x3b, 0x62f, 0x633, 0x645, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x3b, +0x424, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x41c, 0x430, +0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x3b, 0x418, 0x44e, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d, +0x442, 0x44f, 0x431, 0x440, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x3b, 0x414, 0x435, +0x43a, 0x430, 0x431, 0x440, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x32, 0x3b, 0x54, 0x68, 0x67, +0x20, 0x33, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x34, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x35, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x36, +0x3b, 0x54, 0x68, 0x67, 0x20, 0x37, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x38, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x39, 0x3b, 0x54, +0x68, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x32, 0x3b, +0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x32, 0x3b, 0x54, 0x68, 0xe1, 0x6e, +0x67, 0x20, 0x33, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x34, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x35, 0x3b, +0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x36, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x37, 0x3b, 0x54, 0x68, 0xe1, 0x6e, +0x67, 0x20, 0x38, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x39, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x30, +0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x74, +0x68, 0x67, 0x20, 0x31, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x32, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x33, 0x3b, 0x74, 0x68, 0x67, +0x20, 0x34, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x35, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x36, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x37, +0x3b, 0x74, 0x68, 0x67, 0x20, 0x38, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x39, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x30, 0x3b, +0x74, 0x68, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, +0x31, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x32, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x33, 0x3b, 0x74, 0x68, +0xe1, 0x6e, 0x67, 0x20, 0x34, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x35, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, +0x36, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x37, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x38, 0x3b, 0x74, 0x68, +0xe1, 0x6e, 0x67, 0x20, 0x39, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, +0x20, 0x31, 0x31, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x49, 0x6f, 0x6e, 0x3b, 0x43, 0x68, 0x77, +0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x45, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4d, 0x65, 0x68, 0x3b, 0x47, 0x6f, 0x72, +0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, 0x79, 0x64, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x3b, +0x52, 0x68, 0x61, 0x67, 0x3b, 0x49, 0x6f, 0x6e, 0x61, 0x77, 0x72, 0x3b, 0x43, 0x68, 0x77, 0x65, 0x66, 0x72, 0x6f, 0x72, +0x3b, 0x4d, 0x61, 0x77, 0x72, 0x74, 0x68, 0x3b, 0x45, 0x62, 0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4d, +0x65, 0x68, 0x65, 0x66, 0x69, 0x6e, 0x3b, 0x47, 0x6f, 0x72, 0x66, 0x66, 0x65, 0x6e, 0x6e, 0x61, 0x66, 0x3b, 0x41, 0x77, +0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, 0x79, 0x64, 0x72, 0x65, 0x66, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x77, +0x65, 0x64, 0x64, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x66, 0x79, 0x72, 0x3b, 0x49, 0x3b, 0x43, 0x68, 0x3b, 0x4d, 0x3b, 0x45, +0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x52, 0x68, 0x3b, 0x49, 0x6f, +0x6e, 0x3b, 0x43, 0x68, 0x77, 0x65, 0x66, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x45, 0x62, 0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x4d, +0x61, 0x69, 0x3b, 0x4d, 0x65, 0x68, 0x3b, 0x47, 0x6f, 0x72, 0x66, 0x66, 0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, +0x64, 0x69, 0x3b, 0x48, 0x79, 0x64, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x3b, 0x1e62, 0x1eb9, 0x301, +0x72, 0x1eb9, 0x301, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, 0xe0, 0x3b, 0xcc, 0x67, 0x62, +0xe9, 0x3b, 0x1eb8, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x41, 0x67, 0x1eb9, 0x6d, 0x1ecd, +0x3b, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x1ecc, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x42, +0xe9, 0x6c, 0xfa, 0x3b, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x300, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1e62, 0x1eb9, 0x301, 0x72, 0x1eb9, 0x301, +0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, +0xe0, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1eb8, 0x300, 0x62, 0x69, 0x62, +0x69, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x41, 0x67, 0x1eb9, 0x6d, +0x1ecd, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x4f, 0x77, 0x65, 0x77, 0x65, +0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1ecc, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x42, 0xe9, 0x6c, 0xfa, +0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x300, 0x3b, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x25b, 0x301, 0x3b, 0xc8, +0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x190, 0x72, 0x25b, 0x300, 0x6e, 0xe0, 0x3b, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x190, 0x300, 0x62, +0x69, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x41, 0x67, 0x25b, 0x6d, 0x254, 0x3b, 0xd2, 0x67, 0xfa, 0x6e, +0x3b, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x186, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, 0x186, +0x300, 0x70, 0x25b, 0x300, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x25b, 0x301, 0x3b, 0x4f, 0x73, +0x68, 0xf9, 0x20, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x190, 0x72, 0x25b, 0x300, 0x6e, 0xe0, +0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x190, 0x300, 0x62, 0x69, +0x62, 0x69, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x41, +0x67, 0x25b, 0x6d, 0x254, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, +0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x186, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x4f, 0x73, +0x68, 0xf9, 0x20, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x186, 0x300, 0x70, 0x25b, 0x300, 0x3b, 0x4a, +0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x73, 0x3b, 0x45, 0x70, 0x68, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, +0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, +0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, +0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x73, 0x68, 0x69, 0x3b, 0x45, 0x70, 0x68, 0x72, 0x65, 0x6c, 0x69, 0x3b, +0x4d, 0x65, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x79, 0x69, 0x3b, 0x41, 0x67, 0x61, +0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x68, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x68, 0x6f, 0x62, +0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, +0x46, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, +0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, +0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x2e, +0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, +0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, +0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, +0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6f, 0x6b, +0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, +0x62, 0x61, 0x72, 0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x431, 0x440, 0x443, 0x430, 0x440, 0x3b, 0x43c, +0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x438, 0x3b, 0x458, +0x443, 0x43b, 0x438, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x431, 0x430, 0x440, +0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x431, 0x430, 0x440, 0x3b, 0x43d, 0x43e, 0x432, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x434, 0x435, +0x446, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x4a, 0x2d, 0x67, 0x75, 0x65, 0x72, 0x3b, 0x54, 0x2d, 0x61, 0x72, 0x72, 0x65, +0x65, 0x3b, 0x4d, 0x61, 0x79, 0x72, 0x6e, 0x74, 0x3b, 0x41, 0x76, 0x72, 0x72, 0x69, 0x6c, 0x3b, 0x42, 0x6f, 0x61, 0x6c, +0x64, 0x79, 0x6e, 0x3b, 0x4d, 0x2d, 0x73, 0x6f, 0x75, 0x72, 0x65, 0x65, 0x3b, 0x4a, 0x2d, 0x73, 0x6f, 0x75, 0x72, 0x65, +0x65, 0x3b, 0x4c, 0x75, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x79, 0x6e, 0x3b, 0x4d, 0x2d, 0x66, 0x6f, 0x75, 0x79, 0x69, 0x72, +0x3b, 0x4a, 0x2d, 0x66, 0x6f, 0x75, 0x79, 0x69, 0x72, 0x3b, 0x4d, 0x2d, 0x48, 0x6f, 0x75, 0x6e, 0x65, 0x79, 0x3b, 0x4d, +0x2d, 0x4e, 0x6f, 0x6c, 0x6c, 0x69, 0x63, 0x6b, 0x3b, 0x4a, 0x65, 0x72, 0x72, 0x65, 0x79, 0x2d, 0x67, 0x65, 0x75, 0x72, +0x65, 0x65, 0x3b, 0x54, 0x6f, 0x73, 0x68, 0x69, 0x61, 0x67, 0x68, 0x74, 0x2d, 0x61, 0x72, 0x72, 0x65, 0x65, 0x3b, 0x4d, +0x61, 0x79, 0x72, 0x6e, 0x74, 0x3b, 0x41, 0x76, 0x65, 0x72, 0x69, 0x6c, 0x3b, 0x42, 0x6f, 0x61, 0x6c, 0x64, 0x79, 0x6e, +0x3b, 0x4d, 0x65, 0x61, 0x6e, 0x2d, 0x73, 0x6f, 0x75, 0x72, 0x65, 0x65, 0x3b, 0x4a, 0x65, 0x72, 0x72, 0x65, 0x79, 0x2d, +0x73, 0x6f, 0x75, 0x72, 0x65, 0x65, 0x3b, 0x4c, 0x75, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x79, 0x6e, 0x3b, 0x4d, 0x65, 0x61, +0x6e, 0x2d, 0x66, 0x6f, 0x75, 0x79, 0x69, 0x72, 0x3b, 0x4a, 0x65, 0x72, 0x72, 0x65, 0x79, 0x2d, 0x66, 0x6f, 0x75, 0x79, +0x69, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x20, 0x48, 0x6f, 0x75, 0x6e, 0x65, 0x79, 0x3b, 0x4d, 0x65, 0x65, 0x20, 0x6e, 0x79, +0x20, 0x4e, 0x6f, 0x6c, 0x6c, 0x69, 0x63, 0x6b, 0x3b, 0x47, 0x65, 0x6e, 0x3b, 0x48, 0x77, 0x65, 0x3b, 0x4d, 0x65, 0x75, +0x3b, 0x45, 0x62, 0x72, 0x3b, 0x4d, 0x65, 0x3b, 0x4d, 0x65, 0x74, 0x3b, 0x47, 0x6f, 0x72, 0x3b, 0x45, 0x73, 0x74, 0x3b, +0x47, 0x77, 0x6e, 0x3b, 0x48, 0x65, 0x64, 0x3b, 0x44, 0x75, 0x3b, 0x4b, 0x65, 0x76, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x47, +0x65, 0x6e, 0x76, 0x65, 0x72, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x48, 0x77, 0x65, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x6d, 0x69, +0x73, 0x20, 0x4d, 0x65, 0x75, 0x72, 0x74, 0x68, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x45, 0x62, 0x72, 0x65, 0x6c, 0x3b, 0x6d, +0x69, 0x73, 0x20, 0x4d, 0x65, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x4d, 0x65, 0x74, 0x68, 0x65, 0x76, 0x65, 0x6e, 0x3b, 0x6d, +0x69, 0x73, 0x20, 0x47, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x45, 0x73, 0x74, +0x3b, 0x6d, 0x69, 0x73, 0x20, 0x47, 0x77, 0x79, 0x6e, 0x6e, 0x67, 0x61, 0x6c, 0x61, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x48, +0x65, 0x64, 0x72, 0x61, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x44, 0x75, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x4b, 0x65, 0x76, 0x61, +0x72, 0x64, 0x68, 0x75, 0x3b, 0x53, 0x2d, 0x186, 0x3b, 0x4b, 0x2d, 0x186, 0x3b, 0x45, 0x2d, 0x186, 0x3b, 0x45, 0x2d, 0x4f, +0x3b, 0x45, 0x2d, 0x4b, 0x3b, 0x4f, 0x2d, 0x41, 0x3b, 0x41, 0x2d, 0x4b, 0x3b, 0x44, 0x2d, 0x186, 0x3b, 0x46, 0x2d, 0x190, +0x3b, 0x186, 0x2d, 0x41, 0x3b, 0x186, 0x2d, 0x4f, 0x3b, 0x4d, 0x2d, 0x186, 0x3b, 0x53, 0x61, 0x6e, 0x64, 0x61, 0x2d, 0x186, +0x70, 0x25b, 0x70, 0x254, 0x6e, 0x3b, 0x4b, 0x77, 0x61, 0x6b, 0x77, 0x61, 0x72, 0x2d, 0x186, 0x67, 0x79, 0x65, 0x66, 0x75, +0x6f, 0x3b, 0x45, 0x62, 0x254, 0x77, 0x2d, 0x186, 0x62, 0x65, 0x6e, 0x65, 0x6d, 0x3b, 0x45, 0x62, 0x254, 0x62, 0x69, 0x72, +0x61, 0x2d, 0x4f, 0x66, 0x6f, 0x72, 0x69, 0x73, 0x75, 0x6f, 0x3b, 0x45, 0x73, 0x75, 0x73, 0x6f, 0x77, 0x20, 0x41, 0x6b, +0x65, 0x74, 0x73, 0x65, 0x61, 0x62, 0x61, 0x2d, 0x4b, 0x254, 0x74, 0x254, 0x6e, 0x69, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x62, +0x69, 0x72, 0x61, 0x64, 0x65, 0x2d, 0x41, 0x79, 0x25b, 0x77, 0x6f, 0x68, 0x6f, 0x6d, 0x75, 0x6d, 0x75, 0x3b, 0x41, 0x79, +0x25b, 0x77, 0x6f, 0x68, 0x6f, 0x2d, 0x4b, 0x69, 0x74, 0x61, 0x77, 0x6f, 0x6e, 0x73, 0x61, 0x3b, 0x44, 0x69, 0x66, 0x75, +0x75, 0x2d, 0x186, 0x73, 0x61, 0x6e, 0x64, 0x61, 0x61, 0x3b, 0x46, 0x61, 0x6e, 0x6b, 0x77, 0x61, 0x2d, 0x190, 0x62, 0x254, +0x3b, 0x186, 0x62, 0x25b, 0x73, 0x25b, 0x2d, 0x41, 0x68, 0x69, 0x6e, 0x69, 0x6d, 0x65, 0x3b, 0x186, 0x62, 0x65, 0x72, 0x25b, +0x66, 0x25b, 0x77, 0x2d, 0x4f, 0x62, 0x75, 0x62, 0x75, 0x6f, 0x3b, 0x4d, 0x75, 0x6d, 0x75, 0x2d, 0x186, 0x70, 0x25b, 0x6e, +0x69, 0x6d, 0x62, 0x61, 0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, +0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, +0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x948, 0x3b, 0x913, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x947, 0x92a, 0x94d, +0x91f, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x913, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, +0x902, 0x92c, 0x930, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x4a, 0x65, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, +0x4d, 0x61, 0x61, 0x3b, 0x45, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x75, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, +0x1ecc, 0x67, 0x1ecd, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x1ecc, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, +0x4a, 0x65, 0x6e, 0x1ee5, 0x77, 0x61, 0x72, 0x1ecb, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x1ee5, 0x77, 0x61, 0x72, 0x1ecb, 0x3b, 0x4d, +0x61, 0x61, 0x63, 0x68, 0x1ecb, 0x3b, 0x45, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x75, 0x6e, +0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x1ecb, 0x3b, 0x1ecc, 0x67, 0x1ecd, 0x1ecd, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, +0x62, 0x61, 0x3b, 0x1ecc, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, +0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4d, 0x62, 0x65, 0x3b, 0x4b, 0x65, 0x6c, 0x3b, 0x4b, 0x74, 0x169, 0x3b, 0x4b, 0x61, +0x6e, 0x3b, 0x4b, 0x74, 0x6e, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x4d, 0x6f, 0x6f, 0x3b, 0x4e, 0x79, 0x61, 0x3b, 0x4b, 0x6e, +0x64, 0x3b, 0x128, 0x6b, 0x75, 0x3b, 0x128, 0x6b, 0x6d, 0x3b, 0x128, 0x6b, 0x6c, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, +0x61, 0x20, 0x6d, 0x62, 0x65, 0x65, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x65, 0x6c, 0x129, 0x3b, +0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, +0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, +0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x74, 0x68, 0x61, 0x74, 0x169, +0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x75, 0x6f, 0x6e, 0x7a, 0x61, 0x3b, 0x4d, 0x77, 0x61, 0x69, +0x20, 0x77, 0x61, 0x20, 0x6e, 0x79, 0x61, 0x61, 0x6e, 0x79, 0x61, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, +0x6b, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x129, 0x6b, 0x75, 0x6d, 0x69, 0x3b, +0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x129, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x129, 0x6d, 0x77, +0x65, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x129, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x69, +0x6c, 0x129, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4b, +0x3b, 0x128, 0x3b, 0x128, 0x3b, 0x128, 0x3b, 0x5a, 0x65, 0x6e, 0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, +0x76, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x67, 0x3b, 0x4c, 0x75, 0x69, 0x3b, 0x41, 0x76, 0x6f, 0x3b, 0x53, +0x65, 0x74, 0x3b, 0x4f, 0x74, 0x75, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x63, 0x3b, 0x5a, 0x65, 0x6e, 0xe2, 0x72, +0x3b, 0x46, 0x65, 0x76, 0x72, 0xe2, 0x72, 0x3b, 0x4d, 0x61, 0x72, 0xe7, 0x3b, 0x41, 0x76, 0x72, 0xee, 0x6c, 0x3b, 0x4d, +0x61, 0x69, 0x3b, 0x4a, 0x75, 0x67, 0x6e, 0x3b, 0x4c, 0x75, 0x69, 0x3b, 0x41, 0x76, 0x6f, 0x73, 0x74, 0x3b, 0x53, 0x65, +0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x74, 0x75, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, +0x61, 0x72, 0x3b, 0x44, 0x69, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x5a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, +0x4d, 0x3b, 0x4a, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x64, 0x7a, 0x76, 0x3b, +0x64, 0x7a, 0x64, 0x3b, 0x74, 0x65, 0x64, 0x3b, 0x61, 0x66, 0x254, 0x3b, 0x64, 0x61, 0x6d, 0x3b, 0x6d, 0x61, 0x73, 0x3b, +0x73, 0x69, 0x61, 0x3b, 0x64, 0x65, 0x61, 0x3b, 0x61, 0x6e, 0x79, 0x3b, 0x6b, 0x65, 0x6c, 0x3b, 0x61, 0x64, 0x65, 0x3b, +0x64, 0x7a, 0x6d, 0x3b, 0x64, 0x7a, 0x6f, 0x76, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x64, 0x7a, 0x65, 0x3b, 0x74, 0x65, 0x64, +0x6f, 0x78, 0x65, 0x3b, 0x61, 0x66, 0x254, 0x66, 0x129, 0x65, 0x3b, 0x64, 0x61, 0x6d, 0x61, 0x3b, 0x6d, 0x61, 0x73, 0x61, +0x3b, 0x73, 0x69, 0x61, 0x6d, 0x6c, 0x254, 0x6d, 0x3b, 0x64, 0x65, 0x61, 0x73, 0x69, 0x61, 0x6d, 0x69, 0x6d, 0x65, 0x3b, +0x61, 0x6e, 0x79, 0x254, 0x6e, 0x79, 0x254, 0x3b, 0x6b, 0x65, 0x6c, 0x65, 0x3b, 0x61, 0x64, 0x65, 0x25b, 0x6d, 0x65, 0x6b, +0x70, 0x254, 0x78, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x6d, 0x65, 0x3b, 0x64, 0x3b, 0x64, 0x3b, 0x74, 0x3b, 0x61, 0x3b, 0x64, +0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x64, 0x3b, 0x61, 0x3b, 0x6b, 0x3b, 0x61, 0x3b, 0x64, 0x3b, 0x49, 0x61, 0x6e, 0x2e, 0x3b, +0x50, 0x65, 0x70, 0x2e, 0x3b, 0x4d, 0x61, 0x6c, 0x2e, 0x3b, 0x2bb, 0x41, 0x70, 0x2e, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x49, +0x75, 0x6e, 0x2e, 0x3b, 0x49, 0x75, 0x6c, 0x2e, 0x3b, 0x2bb, 0x41, 0x75, 0x2e, 0x3b, 0x4b, 0x65, 0x70, 0x2e, 0x3b, 0x2bb, +0x4f, 0x6b, 0x2e, 0x3b, 0x4e, 0x6f, 0x77, 0x2e, 0x3b, 0x4b, 0x65, 0x6b, 0x2e, 0x3b, 0x49, 0x61, 0x6e, 0x75, 0x61, 0x6c, +0x69, 0x3b, 0x50, 0x65, 0x70, 0x65, 0x6c, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x6b, 0x69, 0x3b, 0x2bb, +0x41, 0x70, 0x65, 0x6c, 0x69, 0x6c, 0x61, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x49, 0x75, 0x6e, 0x65, 0x3b, 0x49, 0x75, 0x6c, +0x61, 0x69, 0x3b, 0x2bb, 0x41, 0x75, 0x6b, 0x61, 0x6b, 0x65, 0x3b, 0x4b, 0x65, 0x70, 0x61, 0x6b, 0x65, 0x6d, 0x61, 0x70, +0x61, 0x3b, 0x2bb, 0x4f, 0x6b, 0x61, 0x6b, 0x6f, 0x70, 0x61, 0x3b, 0x4e, 0x6f, 0x77, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x3b, +0x4b, 0x65, 0x6b, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x3b, 0x45, 0x6e, 0x65, 0x3b, 0x50, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, +0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x48, 0x75, 0x6e, 0x3b, 0x48, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, +0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x62, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x45, 0x6e, 0x65, +0x72, 0x6f, 0x3b, 0x50, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x6f, 0x3b, 0x41, 0x62, 0x72, +0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x6f, 0x3b, 0x48, 0x75, 0x6e, 0x79, 0x6f, 0x3b, 0x48, 0x75, 0x6c, 0x79, 0x6f, 0x3b, +0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x4f, 0x6b, 0x74, +0x75, 0x62, 0x72, 0x65, 0x3b, 0x4e, 0x6f, 0x62, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x44, 0x69, 0x73, 0x79, 0x65, +0x6d, 0x62, 0x72, 0x65, 0x3b, 0x45, 0x3b, 0x50, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x75, 0x6e, 0x3b, 0x48, +0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x62, 0x3b, 0x44, +0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x4d, 0xe4, +0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, +0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x63, 0x68, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0xe4, 0x6d, 0x62, 0x65, +0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, +0x44, 0x65, 0x7a, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0xa2cd, 0xa1aa, 0x3b, 0xa44d, 0xa1aa, 0x3b, 0xa315, 0xa1aa, 0x3b, 0xa1d6, 0xa1aa, +0x3b, 0xa26c, 0xa1aa, 0x3b, 0xa0d8, 0xa1aa, 0x3b, 0xa3c3, 0xa1aa, 0x3b, 0xa246, 0xa1aa, 0x3b, 0xa22c, 0xa1aa, 0x3b, 0xa2b0, 0xa1aa, 0x3b, 0xa2b0, +0xa2aa, 0xa1aa, 0x3b, 0xa2b0, 0xa44b, 0xa1aa, 0x3b, 0x6f, 0x111, 0x111, 0x6a, 0x3b, 0x67, 0x75, 0x6f, 0x76, 0x3b, 0x6e, 0x6a, 0x75, +0x6b, 0x3b, 0x63, 0x75, 0x6f, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x3b, 0x67, 0x65, 0x61, 0x73, 0x3b, 0x73, 0x75, 0x6f, 0x69, +0x3b, 0x62, 0x6f, 0x72, 0x67, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x3b, 0x67, 0x6f, 0x6c, 0x67, 0x3b, 0x73, 0x6b, 0xe1, 0x62, +0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x3b, 0x6f, 0x111, 0x111, 0x61, 0x6a, 0x61, 0x67, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, +0x67, 0x75, 0x6f, 0x76, 0x76, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6e, 0x6a, 0x75, 0x6b, 0x10d, 0x61, 0x6d, 0xe1, +0x6e, 0x6e, 0x75, 0x3b, 0x63, 0x75, 0x6f, 0x14b, 0x6f, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x73, +0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x65, 0x61, 0x73, 0x73, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x73, +0x75, 0x6f, 0x69, 0x64, 0x6e, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x62, 0x6f, 0x72, 0x67, 0x65, 0x6d, 0xe1, 0x6e, +0x6e, 0x75, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x6f, 0x6c, 0x67, 0x67, 0x6f, +0x74, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x6d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6a, +0x75, 0x6f, 0x76, 0x6c, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x4f, 0x3b, 0x47, 0x3b, 0x4e, 0x3b, 0x43, 0x3b, 0x4d, +0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x10c, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x4a, 0x3b, 0x6f, 0x111, 0x111, 0x61, 0x6a, +0x61, 0x67, 0x65, 0x3b, 0x67, 0x75, 0x6f, 0x76, 0x76, 0x61, 0x3b, 0x6e, 0x6a, 0x75, 0x6b, 0x10d, 0x61, 0x3b, 0x63, 0x75, +0x6f, 0x14b, 0x6f, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x73, 0x65, 0x3b, 0x67, 0x65, 0x61, 0x73, 0x73, 0x65, 0x3b, 0x73, 0x75, +0x6f, 0x69, 0x64, 0x6e, 0x65, 0x3b, 0x62, 0x6f, 0x72, 0x67, 0x65, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x61, 0x3b, 0x67, 0x6f, +0x6c, 0x67, 0x67, 0x6f, 0x74, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x6d, 0x61, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x6c, 0x61, 0x3b, +0x43, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, +0x4a, 0x75, 0x6e, 0x3b, 0x43, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, +0x4e, 0x6f, 0x62, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x43, 0x68, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, +0x75, 0x72, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x69, 0x72, 0x69, 0x72, 0x69, 0x3b, +0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x43, 0x68, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x6f, 0x73, +0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x69, 0x74, 0x6f, 0x62, 0x61, 0x3b, +0x4e, 0x6f, 0x62, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x43, 0x3b, 0x46, 0x3b, +0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x43, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, +0x49, 0x6d, 0x62, 0x3b, 0x4b, 0x61, 0x77, 0x3b, 0x4b, 0x61, 0x64, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b, +0x4b, 0x61, 0x72, 0x3b, 0x4d, 0x66, 0x75, 0x3b, 0x57, 0x75, 0x6e, 0x3b, 0x49, 0x6b, 0x65, 0x3b, 0x49, 0x6b, 0x75, 0x3b, +0x49, 0x6d, 0x77, 0x3b, 0x49, 0x77, 0x69, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6d, +0x62, 0x69, 0x72, 0x69, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x77, 0x69, 0x3b, +0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x4d, 0x6f, 0x72, +0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, +0x61, 0x20, 0x6b, 0x61, 0x73, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, +0x61, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6d, +0x66, 0x75, 0x6e, 0x67, 0x61, 0x64, 0x65, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x77, 0x75, +0x6e, 0x79, 0x61, 0x6e, 0x79, 0x61, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x65, +0x6e, 0x64, 0x61, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, +0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x69, +0x6d, 0x77, 0x65, 0x72, 0x69, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, +0x69, 0x20, 0x6e, 0x61, 0x20, 0x69, 0x77, 0x69, 0x3b, 0x49, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, +0x3b, 0x4d, 0x3b, 0x57, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x73, 0x69, 0x69, 0x3b, 0x63, 0x6f, 0x6c, +0x3b, 0x6d, 0x62, 0x6f, 0x3b, 0x73, 0x65, 0x65, 0x3b, 0x64, 0x75, 0x75, 0x3b, 0x6b, 0x6f, 0x72, 0x3b, 0x6d, 0x6f, 0x72, +0x3b, 0x6a, 0x75, 0x6b, 0x3b, 0x73, 0x6c, 0x74, 0x3b, 0x79, 0x61, 0x72, 0x3b, 0x6a, 0x6f, 0x6c, 0x3b, 0x62, 0x6f, 0x77, +0x3b, 0x73, 0x69, 0x69, 0x6c, 0x6f, 0x3b, 0x63, 0x6f, 0x6c, 0x74, 0x65, 0x3b, 0x6d, 0x62, 0x6f, 0x6f, 0x79, 0x3b, 0x73, +0x65, 0x65, 0x257, 0x74, 0x6f, 0x3b, 0x64, 0x75, 0x75, 0x6a, 0x61, 0x6c, 0x3b, 0x6b, 0x6f, 0x72, 0x73, 0x65, 0x3b, 0x6d, +0x6f, 0x72, 0x73, 0x6f, 0x3b, 0x6a, 0x75, 0x6b, 0x6f, 0x3b, 0x73, 0x69, 0x69, 0x6c, 0x74, 0x6f, 0x3b, 0x79, 0x61, 0x72, +0x6b, 0x6f, 0x6d, 0x61, 0x61, 0x3b, 0x6a, 0x6f, 0x6c, 0x61, 0x6c, 0x3b, 0x62, 0x6f, 0x77, 0x74, 0x65, 0x3b, 0x73, 0x3b, +0x63, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x64, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x73, 0x3b, 0x79, 0x3b, 0x6a, 0x3b, +0x62, 0x3b, 0x4a, 0x45, 0x4e, 0x3b, 0x57, 0x4b, 0x52, 0x3b, 0x57, 0x47, 0x54, 0x3b, 0x57, 0x4b, 0x4e, 0x3b, 0x57, 0x54, +0x4e, 0x3b, 0x57, 0x54, 0x44, 0x3b, 0x57, 0x4d, 0x4a, 0x3b, 0x57, 0x4e, 0x4e, 0x3b, 0x57, 0x4b, 0x44, 0x3b, 0x57, 0x49, +0x4b, 0x3b, 0x57, 0x4d, 0x57, 0x3b, 0x44, 0x49, 0x54, 0x3b, 0x4e, 0x6a, 0x65, 0x6e, 0x75, 0x61, 0x72, 0x129, 0x3b, 0x4d, +0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x65, 0x72, 0x129, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, +0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, +0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, +0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, +0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x169, 0x67, 0x77, 0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, +0x65, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, +0x20, 0x6b, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, +0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, +0x169, 0x6d, 0x77, 0x65, 0x3b, 0x4e, 0x64, 0x69, 0x74, 0x68, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x4b, 0x3b, 0x47, +0x3b, 0x4b, 0x3b, 0x47, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x44, 0x3b, 0x4f, +0x62, 0x6f, 0x3b, 0x57, 0x61, 0x61, 0x3b, 0x4f, 0x6b, 0x75, 0x3b, 0x4f, 0x6e, 0x67, 0x3b, 0x49, 0x6d, 0x65, 0x3b, 0x49, +0x6c, 0x65, 0x3b, 0x53, 0x61, 0x70, 0x3b, 0x49, 0x73, 0x69, 0x3b, 0x53, 0x61, 0x61, 0x3b, 0x54, 0x6f, 0x6d, 0x3b, 0x54, +0x6f, 0x62, 0x3b, 0x54, 0x6f, 0x77, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x6f, 0x62, 0x6f, 0x3b, 0x4c, +0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x77, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, +0x20, 0x6f, 0x6b, 0x75, 0x6e, 0x69, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x6f, 0x6e, 0x67, 0x2019, 0x77, +0x61, 0x6e, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x69, 0x6d, 0x65, 0x74, 0x3b, 0x4c, 0x61, 0x70, 0x61, +0x20, 0x6c, 0x65, 0x20, 0x69, 0x6c, 0x65, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x73, 0x61, 0x70, 0x61, +0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x69, 0x65, 0x74, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, +0x6c, 0x65, 0x20, 0x73, 0x61, 0x61, 0x6c, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x6d, 0x6f, +0x6e, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x6f, 0x62, 0x6f, 0x3b, +0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x77, 0x61, 0x61, 0x72, 0x65, 0x3b, +0x4f, 0x3b, 0x57, 0x3b, 0x4f, 0x3b, 0x4f, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x54, 0x3b, +0x54, 0x3b, 0x54, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, +0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x74, 0x3b, +0x4f, 0x74, 0x75, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x63, 0x3b, 0x4a, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, 0x3b, +0x46, 0x65, 0x76, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x63, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, +0x3b, 0x4d, 0x61, 0x69, 0x6f, 0x3b, 0x4a, 0x75, 0x6e, 0x68, 0x6f, 0x3b, 0x4a, 0x75, 0x6c, 0x68, 0x6f, 0x3b, 0x41, 0x75, +0x67, 0x75, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x4f, 0x74, 0x75, 0x62, 0x72, +0x6f, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x44, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, +0x5a, 0x69, 0x62, 0x3b, 0x4e, 0x68, 0x6c, 0x6f, 0x3b, 0x4d, 0x62, 0x69, 0x3b, 0x4d, 0x61, 0x62, 0x3b, 0x4e, 0x6b, 0x77, +0x3b, 0x4e, 0x68, 0x6c, 0x61, 0x3b, 0x4e, 0x74, 0x75, 0x3b, 0x4e, 0x63, 0x77, 0x3b, 0x4d, 0x70, 0x61, 0x6e, 0x3b, 0x4d, +0x66, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x3b, 0x4d, 0x70, 0x61, 0x6c, 0x3b, 0x5a, 0x69, 0x62, 0x61, 0x6e, 0x64, 0x6c, 0x65, +0x6c, 0x61, 0x3b, 0x4e, 0x68, 0x6c, 0x6f, 0x6c, 0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4d, 0x62, 0x69, 0x6d, 0x62, 0x69, 0x74, +0x68, 0x6f, 0x3b, 0x4d, 0x61, 0x62, 0x61, 0x73, 0x61, 0x3b, 0x4e, 0x6b, 0x77, 0x65, 0x6e, 0x6b, 0x77, 0x65, 0x7a, 0x69, +0x3b, 0x4e, 0x68, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x3b, 0x4e, 0x74, 0x75, 0x6c, 0x69, 0x6b, 0x61, 0x7a, 0x69, +0x3b, 0x4e, 0x63, 0x77, 0x61, 0x62, 0x61, 0x6b, 0x61, 0x7a, 0x69, 0x3b, 0x4d, 0x70, 0x61, 0x6e, 0x64, 0x75, 0x6c, 0x61, +0x3b, 0x4d, 0x66, 0x75, 0x6d, 0x66, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x7a, 0x69, 0x3b, 0x4d, 0x70, 0x61, 0x6c, 0x61, 0x6b, +0x61, 0x7a, 0x69, 0x3b, 0x5a, 0x3b, 0x4e, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, +0x4d, 0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x31, 0x3b, 0x4d, 0x32, 0x3b, 0x4d, 0x33, 0x3b, 0x4d, 0x34, 0x3b, +0x4d, 0x35, 0x3b, 0x4d, 0x36, 0x3b, 0x4d, 0x37, 0x3b, 0x4d, 0x38, 0x3b, 0x4d, 0x39, 0x3b, 0x4d, 0x31, 0x30, 0x3b, 0x4d, +0x31, 0x31, 0x3b, 0x4d, 0x31, 0x32, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x77, 0x61, 0x6e, +0x7a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x77, +0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, +0x77, 0x61, 0x20, 0x6b, 0x61, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x74, 0x61, +0x6e, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x73, 0x69, 0x74, 0x61, 0x3b, 0x4d, 0x77, 0x65, +0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x73, 0x61, 0x62, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, +0x6e, 0x61, 0x6e, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x74, 0x69, 0x73, 0x61, 0x3b, 0x4d, +0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, +0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x6f, 0x6a, 0x61, 0x3b, 0x4d, 0x77, 0x65, +0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x62, 0x69, 0x6c, 0x69, +0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x49, +0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x2d49, 0x2d4f, 0x2d4f, 0x3b, 0x2d31, 0x2d55, 0x2d30, 0x3b, 0x2d4e, 0x2d30, 0x2d55, 0x3b, 0x2d49, 0x2d31, 0x2d54, +0x3b, 0x2d4e, 0x2d30, 0x2d62, 0x3b, 0x2d62, 0x2d53, 0x2d4f, 0x3b, 0x2d62, 0x2d53, 0x2d4d, 0x3b, 0x2d56, 0x2d53, 0x2d5b, 0x3b, 0x2d5b, 0x2d53, 0x2d5c, +0x3b, 0x2d3d, 0x2d5c, 0x2d53, 0x3b, 0x2d4f, 0x2d53, 0x2d61, 0x3b, 0x2d37, 0x2d53, 0x2d4a, 0x3b, 0x2d49, 0x2d4f, 0x2d4f, 0x2d30, 0x2d62, 0x2d54, 0x3b, +0x2d31, 0x2d55, 0x2d30, 0x2d62, 0x2d55, 0x3b, 0x2d4e, 0x2d30, 0x2d55, 0x2d5a, 0x3b, 0x2d49, 0x2d31, 0x2d54, 0x2d49, 0x2d54, 0x3b, 0x2d4e, 0x2d30, 0x2d62, +0x2d62, 0x2d53, 0x3b, 0x2d62, 0x2d53, 0x2d4f, 0x2d62, 0x2d53, 0x3b, 0x2d62, 0x2d53, 0x2d4d, 0x2d62, 0x2d53, 0x2d63, 0x3b, 0x2d56, 0x2d53, 0x2d5b, 0x2d5c, +0x3b, 0x2d5b, 0x2d53, 0x2d5c, 0x2d30, 0x2d4f, 0x2d31, 0x2d49, 0x2d54, 0x3b, 0x2d3d, 0x2d5c, 0x2d53, 0x2d31, 0x2d54, 0x3b, 0x2d4f, 0x2d53, 0x2d61, 0x2d30, +0x2d4f, 0x2d31, 0x2d49, 0x2d54, 0x3b, 0x2d37, 0x2d53, 0x2d4a, 0x2d30, 0x2d4f, 0x2d31, 0x2d49, 0x2d54, 0x3b, 0x2d49, 0x3b, 0x2d31, 0x3b, 0x2d4e, 0x3b, +0x2d49, 0x3b, 0x2d4e, 0x3b, 0x2d62, 0x3b, 0x2d62, 0x3b, 0x2d56, 0x3b, 0x2d5b, 0x3b, 0x2d3d, 0x3b, 0x2d4f, 0x3b, 0x2d37, 0x3b, 0x69, 0x6e, +0x6e, 0x3b, 0x62, 0x1e5b, 0x61, 0x3b, 0x6d, 0x61, 0x1e5b, 0x3b, 0x69, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x79, 0x75, +0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x263, 0x75, 0x63, 0x3b, 0x63, 0x75, 0x74, 0x3b, 0x6b, 0x74, 0x75, 0x3b, 0x6e, 0x75, +0x77, 0x3b, 0x64, 0x75, 0x6a, 0x3b, 0x69, 0x6e, 0x6e, 0x61, 0x79, 0x72, 0x3b, 0x62, 0x1e5b, 0x61, 0x79, 0x1e5b, 0x3b, 0x6d, +0x61, 0x1e5b, 0x1e63, 0x3b, 0x69, 0x62, 0x72, 0x69, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x79, 0x75, 0x3b, 0x79, 0x75, 0x6e, 0x79, +0x75, 0x3b, 0x79, 0x75, 0x6c, 0x79, 0x75, 0x7a, 0x3b, 0x263, 0x75, 0x63, 0x74, 0x3b, 0x63, 0x75, 0x74, 0x61, 0x6e, 0x62, +0x69, 0x72, 0x3b, 0x6b, 0x74, 0x75, 0x62, 0x72, 0x3b, 0x6e, 0x75, 0x77, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x64, 0x75, +0x6a, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x69, 0x3b, 0x62, 0x3b, 0x6d, 0x3b, 0x69, 0x3b, 0x6d, 0x3b, 0x79, 0x3b, 0x79, +0x3b, 0x263, 0x3b, 0x63, 0x3b, 0x6b, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x59, 0x65, 0x6e, 0x3b, 0x46, 0x75, 0x72, 0x3b, 0x4d, +0x65, 0x263, 0x3b, 0x59, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, 0x3b, 0x59, 0x75, 0x6c, 0x3b, 0x194, +0x75, 0x63, 0x3b, 0x43, 0x74, 0x65, 0x3b, 0x54, 0x75, 0x62, 0x3b, 0x4e, 0x75, 0x6e, 0x3b, 0x44, 0x75, 0x1e7, 0x3b, 0x59, +0x65, 0x6e, 0x6e, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x46, 0x75, 0x1e5b, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x263, 0x72, 0x65, 0x73, +0x3b, 0x59, 0x65, 0x62, 0x72, 0x69, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6e, 0x79, 0x75, 0x3b, +0x59, 0x75, 0x6c, 0x79, 0x75, 0x3b, 0x194, 0x75, 0x63, 0x74, 0x3b, 0x43, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x1e5b, 0x3b, 0x54, +0x75, 0x62, 0x65, 0x1e5b, 0x3b, 0x4e, 0x75, 0x6e, 0x65, 0x6d, 0x62, 0x65, 0x1e5b, 0x3b, 0x44, 0x75, 0x1e7, 0x65, 0x6d, 0x62, +0x65, 0x1e5b, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x194, 0x3b, 0x43, +0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4b, 0x42, 0x5a, 0x3b, 0x4b, 0x42, 0x52, 0x3b, 0x4b, 0x53, 0x54, 0x3b, 0x4b, +0x4b, 0x4e, 0x3b, 0x4b, 0x54, 0x4e, 0x3b, 0x4b, 0x4d, 0x4b, 0x3b, 0x4b, 0x4d, 0x53, 0x3b, 0x4b, 0x4d, 0x4e, 0x3b, 0x4b, +0x4d, 0x57, 0x3b, 0x4b, 0x4b, 0x4d, 0x3b, 0x4b, 0x4e, 0x4b, 0x3b, 0x4b, 0x4e, 0x42, 0x3b, 0x4f, 0x6b, 0x77, 0x6f, 0x6b, +0x75, 0x62, 0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4f, 0x6b, +0x77, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4f, +0x6b, 0x77, 0x61, 0x6b, 0x61, 0x74, 0x61, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, +0x67, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x6a, 0x75, 0x3b, 0x4f, 0x6b, 0x77, 0x61, +0x6d, 0x75, 0x6e, 0x61, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x77, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4f, +0x6b, 0x77, 0x61, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, +0x61, 0x20, 0x6b, 0x75, 0x6d, 0x77, 0x65, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, +0x20, 0x69, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x48, 0x75, 0x74, 0x3b, 0x56, 0x69, 0x6c, 0x3b, 0x44, 0x61, 0x74, 0x3b, 0x54, +0x61, 0x69, 0x3b, 0x48, 0x61, 0x6e, 0x3b, 0x53, 0x69, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4e, 0x61, 0x6e, 0x3b, 0x54, +0x69, 0x73, 0x3b, 0x4b, 0x75, 0x6d, 0x3b, 0x4b, 0x6d, 0x6a, 0x3b, 0x4b, 0x6d, 0x62, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, +0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x68, 0x75, 0x74, 0x61, 0x6c, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x6d, +0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x70, 0x61, 0x20, +0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, 0x64, 0x61, 0x74, 0x75, 0x3b, 0x70, 0x61, +0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, 0x74, 0x61, 0x69, 0x3b, 0x70, 0x61, +0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x70, +0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x73, 0x69, 0x74, 0x61, 0x3b, 0x70, 0x61, +0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x73, 0x61, 0x62, 0x61, 0x3b, 0x70, 0x61, 0x20, +0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x6e, 0x61, 0x6e, 0x65, 0x3b, 0x70, 0x61, 0x20, 0x6d, +0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x74, 0x69, 0x73, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, +0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, +0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x6f, 0x6a, 0x61, +0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, +0x6e, 0x61, 0x20, 0x6d, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x48, 0x3b, 0x56, 0x3b, 0x44, 0x3b, 0x54, 0x3b, 0x48, 0x3b, 0x53, +0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, +0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x72, 0x69, +0x6c, 0x79, 0x69, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x79, 0x61, 0x69, +0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, +0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, +0x7a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x77, 0x69, 0x3b, 0x6d, 0x25b, 0x3b, 0x7a, +0x75, 0x77, 0x3b, 0x7a, 0x75, 0x6c, 0x3b, 0x75, 0x74, 0x69, 0x3b, 0x73, 0x25b, 0x74, 0x3b, 0x254, 0x6b, 0x75, 0x3b, 0x6e, +0x6f, 0x77, 0x3b, 0x64, 0x65, 0x73, 0x3b, 0x7a, 0x61, 0x6e, 0x77, 0x75, 0x79, 0x65, 0x3b, 0x66, 0x65, 0x62, 0x75, 0x72, +0x75, 0x79, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x69, 0x73, 0x69, 0x3b, 0x61, 0x77, 0x69, 0x72, 0x69, 0x6c, 0x69, 0x3b, 0x6d, +0x25b, 0x3b, 0x7a, 0x75, 0x77, 0x25b, 0x6e, 0x3b, 0x7a, 0x75, 0x6c, 0x75, 0x79, 0x65, 0x3b, 0x75, 0x74, 0x69, 0x3b, 0x73, +0x25b, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x72, 0x75, 0x3b, 0x254, 0x6b, 0x75, 0x74, 0x254, 0x62, 0x75, 0x72, 0x75, 0x3b, 0x6e, +0x6f, 0x77, 0x61, 0x6e, 0x62, 0x75, 0x72, 0x75, 0x3b, 0x64, 0x65, 0x73, 0x61, 0x6e, 0x62, 0x75, 0x72, 0x75, 0x3b, 0x5a, +0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x5a, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x186, 0x3b, 0x4e, +0x3b, 0x44, 0x3b, 0x4d, 0x62, 0x65, 0x3b, 0x4b, 0x61, 0x69, 0x3b, 0x4b, 0x61, 0x74, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x47, +0x61, 0x74, 0x3b, 0x47, 0x61, 0x6e, 0x3b, 0x4d, 0x75, 0x67, 0x3b, 0x4b, 0x6e, 0x6e, 0x3b, 0x4b, 0x65, 0x6e, 0x3b, 0x49, +0x6b, 0x75, 0x3b, 0x49, 0x6d, 0x77, 0x3b, 0x49, 0x67, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, +0x6d, 0x62, 0x65, 0x72, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x129, 0x72, 0x69, +0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x68, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, +0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, +0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, +0x61, 0x6e, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x169, 0x67, 0x77, +0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x6e, 0x61, +0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, +0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, +0x69, 0x6b, 0x169, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x169, 0x6d, 0x77, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, +0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x4b, 0x61, 0x129, 0x72, 0x129, 0x3b, 0x4d, 0x3b, +0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x47, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x49, 0x3b, 0x49, 0x3b, +0x49, 0x3b, 0x13a4, 0x13c3, 0x3b, 0x13a7, 0x13a6, 0x3b, 0x13a0, 0x13c5, 0x3b, 0x13a7, 0x13ec, 0x3b, 0x13a0, 0x13c2, 0x3b, 0x13d5, 0x13ad, 0x3b, +0x13ab, 0x13f0, 0x3b, 0x13a6, 0x13b6, 0x3b, 0x13da, 0x13b5, 0x3b, 0x13da, 0x13c2, 0x3b, 0x13c5, 0x13d3, 0x3b, 0x13a5, 0x13cd, 0x3b, 0x13a4, 0x13c3, +0x13b8, 0x13d4, 0x13c5, 0x3b, 0x13a7, 0x13a6, 0x13b5, 0x3b, 0x13a0, 0x13c5, 0x13f1, 0x3b, 0x13a7, 0x13ec, 0x13c2, 0x3b, 0x13a0, 0x13c2, 0x13cd, 0x13ac, +0x13d8, 0x3b, 0x13d5, 0x13ad, 0x13b7, 0x13f1, 0x3b, 0x13ab, 0x13f0, 0x13c9, 0x13c2, 0x3b, 0x13a6, 0x13b6, 0x13c2, 0x3b, 0x13da, 0x13b5, 0x13cd, 0x13d7, +0x3b, 0x13da, 0x13c2, 0x13c5, 0x13d7, 0x3b, 0x13c5, 0x13d3, 0x13d5, 0x13c6, 0x3b, 0x13a5, 0x13cd, 0x13a9, 0x13f1, 0x3b, 0x13a4, 0x3b, 0x13a7, 0x3b, +0x13a0, 0x3b, 0x13a7, 0x3b, 0x13a0, 0x3b, 0x13d5, 0x3b, 0x13ab, 0x3b, 0x13a6, 0x3b, 0x13da, 0x3b, 0x13da, 0x3b, 0x13c5, 0x3b, 0x13a5, 0x3b, +0x7a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x76, 0x72, 0x3b, 0x6d, 0x65, 0x3b, 0x7a, +0x69, 0x6e, 0x3b, 0x7a, 0x69, 0x6c, 0x3b, 0x6f, 0x75, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, +0x6f, 0x76, 0x3b, 0x64, 0x65, 0x73, 0x3b, 0x7a, 0x61, 0x6e, 0x76, 0x69, 0x65, 0x3b, 0x66, 0x65, 0x76, 0x72, 0x69, 0x79, +0x65, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x65, 0x3b, 0x7a, 0x69, 0x6e, 0x3b, +0x7a, 0x69, 0x6c, 0x79, 0x65, 0x3b, 0x6f, 0x75, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x61, 0x6d, 0x3b, 0x6f, 0x6b, 0x74, +0x6f, 0x62, 0x3b, 0x6e, 0x6f, 0x76, 0x61, 0x6d, 0x3b, 0x64, 0x65, 0x73, 0x61, 0x6d, 0x3b, 0x7a, 0x3b, 0x66, 0x3b, 0x6d, +0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x7a, 0x3b, 0x7a, 0x3b, 0x6f, 0x3b, 0x73, 0x3b, 0x6f, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x4d, +0x77, 0x65, 0x64, 0x69, 0x20, 0x4e, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, +0x20, 0x50, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x54, 0x61, 0x74, 0x75, 0x3b, +0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x63, 0x68, 0x65, 0x63, 0x68, 0x69, 0x3b, 0x4d, 0x77, 0x65, +0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, +0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x55, 0x6d, 0x6f, 0x3b, 0x4d, 0x77, 0x65, 0x64, +0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4d, 0x69, 0x76, 0x69, 0x6c, +0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, +0x20, 0x4d, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, +0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4e, 0x63, 0x68, 0x65, 0x63, 0x68, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, +0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, +0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, +0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x55, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, +0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, +0x20, 0x4d, 0x3b, 0x46, 0xfa, 0x6e, 0x67, 0x61, 0x74, 0x268, 0x3b, 0x4e, 0x61, 0x61, 0x6e, 0x268, 0x3b, 0x4b, 0x65, 0x65, +0x6e, 0x64, 0x61, 0x3b, 0x49, 0x6b, 0xfa, 0x6d, 0x69, 0x3b, 0x49, 0x6e, 0x79, 0x61, 0x6d, 0x62, 0x61, 0x6c, 0x61, 0x3b, +0x49, 0x64, 0x77, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x4d, 0x289, 0x289, 0x6e, 0x63, 0x68, 0x268, 0x3b, 0x56, 0x268, 0x268, 0x72, +0x268, 0x3b, 0x53, 0x61, 0x61, 0x74, 0x289, 0x3b, 0x49, 0x6e, 0x79, 0x69, 0x3b, 0x53, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x53, +0x61, 0x73, 0x61, 0x74, 0x289, 0x3b, 0x4b, 0x289, 0x66, 0xfa, 0x6e, 0x67, 0x61, 0x74, 0x268, 0x3b, 0x4b, 0x289, 0x6e, 0x61, +0x61, 0x6e, 0x268, 0x3b, 0x4b, 0x289, 0x6b, 0x65, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4b, 0x77, 0x69, 0x69, 0x6b, 0x75, 0x6d, +0x69, 0x3b, 0x4b, 0x77, 0x69, 0x69, 0x6e, 0x79, 0x61, 0x6d, 0x62, 0xe1, 0x6c, 0x61, 0x3b, 0x4b, 0x77, 0x69, 0x69, 0x64, +0x77, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x4b, 0x289, 0x6d, 0x289, 0x289, 0x6e, 0x63, 0x68, 0x268, 0x3b, 0x4b, 0x289, 0x76, 0x268, +0x268, 0x72, 0x268, 0x3b, 0x4b, 0x289, 0x73, 0x61, 0x61, 0x74, 0x289, 0x3b, 0x4b, 0x77, 0x69, 0x69, 0x6e, 0x79, 0x69, 0x3b, +0x4b, 0x289, 0x73, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4b, 0x289, 0x73, 0x61, 0x73, 0x61, 0x74, 0x289, 0x3b, 0x46, 0x3b, 0x4e, +0x3b, 0x4b, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x53, +0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x75, 0x3b, 0x4d, 0x61, 0x61, +0x3b, 0x4a, 0x75, 0x75, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x75, 0x3b, 0x53, 0x65, 0x62, 0x3b, 0x4f, 0x6b, 0x69, +0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x77, 0x61, 0x6c, 0x69, 0x79, 0x6f, 0x3b, 0x46, +0x65, 0x62, 0x77, 0x61, 0x6c, 0x69, 0x79, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x69, 0x73, 0x69, 0x3b, 0x41, 0x70, 0x75, 0x6c, +0x69, 0x3b, 0x4d, 0x61, 0x61, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x61, 0x79, +0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x69, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x62, 0x75, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x61, +0x3b, 0x4f, 0x6b, 0x69, 0x74, 0x6f, 0x62, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, +0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x45, 0x70, +0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x4f, 0x67, 0x61, 0x3b, 0x53, 0x65, +0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, +0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x45, 0x70, 0x72, +0x65, 0x6f, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x4f, 0x67, +0x61, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, +0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, +0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, +0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, +0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x74, 0x75, +0x3b, 0x4e, 0x75, 0x76, 0x3b, 0x44, 0x69, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x65, 0x72, 0x75, 0x3b, 0x46, 0x65, 0x62, 0x72, +0x65, 0x72, 0x75, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x75, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x75, +0x3b, 0x4a, 0x75, 0x6e, 0x68, 0x75, 0x3b, 0x4a, 0x75, 0x6c, 0x68, 0x75, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x75, 0x3b, +0x53, 0x65, 0x74, 0x65, 0x6e, 0x62, 0x72, 0x75, 0x3b, 0x4f, 0x74, 0x75, 0x62, 0x72, 0x75, 0x3b, 0x4e, 0x75, 0x76, 0x65, +0x6e, 0x62, 0x72, 0x75, 0x3b, 0x44, 0x69, 0x7a, 0x65, 0x6e, 0x62, 0x72, 0x75, 0x3b, 0x4a, 0x41, 0x4e, 0x3b, 0x46, 0x45, +0x42, 0x3b, 0x4d, 0x41, 0x43, 0x3b, 0x128, 0x50, 0x55, 0x3b, 0x4d, 0x128, 0x128, 0x3b, 0x4e, 0x4a, 0x55, 0x3b, 0x4e, 0x4a, +0x52, 0x3b, 0x41, 0x47, 0x41, 0x3b, 0x53, 0x50, 0x54, 0x3b, 0x4f, 0x4b, 0x54, 0x3b, 0x4e, 0x4f, 0x56, 0x3b, 0x44, 0x45, +0x43, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x129, 0x3b, 0x46, 0x65, 0x62, 0x75, 0x72, 0x75, 0x61, 0x72, 0x129, 0x3b, +0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x128, 0x70, 0x75, 0x72, 0x169, 0x3b, 0x4d, 0x129, 0x129, 0x3b, 0x4e, 0x6a, 0x75, 0x6e, +0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x72, 0x61, 0x129, 0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, +0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x169, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, +0x44, 0x69, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x128, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, +0x4e, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4d, 0x75, 0x6c, 0x3b, 0x4e, 0x67, 0x61, 0x74, +0x3b, 0x54, 0x61, 0x61, 0x3b, 0x49, 0x77, 0x6f, 0x3b, 0x4d, 0x61, 0x6d, 0x3b, 0x50, 0x61, 0x61, 0x3b, 0x4e, 0x67, 0x65, +0x3b, 0x52, 0x6f, 0x6f, 0x3b, 0x42, 0x75, 0x72, 0x3b, 0x45, 0x70, 0x65, 0x3b, 0x4b, 0x70, 0x74, 0x3b, 0x4b, 0x70, 0x61, +0x3b, 0x4d, 0x75, 0x6c, 0x67, 0x75, 0x6c, 0x3b, 0x4e, 0x67, 0x2019, 0x61, 0x74, 0x79, 0x61, 0x61, 0x74, 0x6f, 0x3b, 0x4b, +0x69, 0x70, 0x74, 0x61, 0x61, 0x6d, 0x6f, 0x3b, 0x49, 0x77, 0x6f, 0x6f, 0x74, 0x6b, 0x75, 0x75, 0x74, 0x3b, 0x4d, 0x61, +0x6d, 0x75, 0x75, 0x74, 0x3b, 0x50, 0x61, 0x61, 0x67, 0x69, 0x3b, 0x4e, 0x67, 0x2019, 0x65, 0x69, 0x79, 0x65, 0x65, 0x74, +0x3b, 0x52, 0x6f, 0x6f, 0x70, 0x74, 0x75, 0x69, 0x3b, 0x42, 0x75, 0x72, 0x65, 0x65, 0x74, 0x3b, 0x45, 0x70, 0x65, 0x65, +0x73, 0x6f, 0x3b, 0x4b, 0x69, 0x70, 0x73, 0x75, 0x75, 0x6e, 0x64, 0x65, 0x20, 0x6e, 0x65, 0x20, 0x74, 0x61, 0x61, 0x69, +0x3b, 0x4b, 0x69, 0x70, 0x73, 0x75, 0x75, 0x6e, 0x64, 0x65, 0x20, 0x6e, 0x65, 0x62, 0x6f, 0x20, 0x61, 0x65, 0x6e, 0x67, +0x2019, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, 0x4e, 0x3b, 0x52, 0x3b, 0x42, 0x3b, +0x45, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x1c3, 0x4b, 0x68, 0x61, 0x6e, 0x6e, 0x69, 0x3b, 0x1c3, 0x4b, 0x68, 0x61, 0x6e, 0x1c0, +0x67, 0xf4, 0x61, 0x62, 0x3b, 0x1c0, 0x4b, 0x68, 0x75, 0x75, 0x1c1, 0x6b, 0x68, 0xe2, 0x62, 0x3b, 0x1c3, 0x48, 0xf4, 0x61, +0x1c2, 0x6b, 0x68, 0x61, 0x69, 0x62, 0x3b, 0x1c3, 0x4b, 0x68, 0x61, 0x69, 0x74, 0x73, 0xe2, 0x62, 0x3b, 0x47, 0x61, 0x6d, +0x61, 0x1c0, 0x61, 0x65, 0x62, 0x3b, 0x1c2, 0x4b, 0x68, 0x6f, 0x65, 0x73, 0x61, 0x6f, 0x62, 0x3b, 0x41, 0x6f, 0x1c1, 0x6b, +0x68, 0x75, 0x75, 0x6d, 0xfb, 0x1c1, 0x6b, 0x68, 0xe2, 0x62, 0x3b, 0x54, 0x61, 0x72, 0x61, 0x1c0, 0x6b, 0x68, 0x75, 0x75, +0x6d, 0xfb, 0x1c1, 0x6b, 0x68, 0xe2, 0x62, 0x3b, 0x1c2, 0x4e, 0xfb, 0x1c1, 0x6e, 0xe2, 0x69, 0x73, 0x65, 0x62, 0x3b, 0x1c0, +0x48, 0x6f, 0x6f, 0x1c2, 0x67, 0x61, 0x65, 0x62, 0x3b, 0x48, 0xf4, 0x61, 0x73, 0x6f, 0x72, 0x65, 0x1c1, 0x6b, 0x68, 0xe2, +0x62, 0x3b, 0x4a, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0xe4, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, 0x7a, 0x2e, 0x3b, 0x41, 0x70, 0x72, +0x2e, 0x3b, 0x4d, 0xe4, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, 0x3b, 0x4a, 0x75, 0x6c, 0x2e, 0x3b, 0x4f, 0x75, 0x6a, 0x2e, +0x3b, 0x53, 0xe4, 0x70, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, +0x3b, 0x4a, 0x61, 0x6e, 0x6e, 0x65, 0x77, 0x61, 0x3b, 0x46, 0xe4, 0x62, 0x72, 0x6f, 0x77, 0x61, 0x3b, 0x4d, 0xe4, 0xe4, +0x7a, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x6c, 0x3b, 0x4d, 0xe4, 0x69, 0x3b, 0x4a, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x4a, +0x75, 0x75, 0x6c, 0x69, 0x3b, 0x4f, 0x75, 0x6a, 0x6f, 0xdf, 0x3b, 0x53, 0x65, 0x70, 0x74, 0xe4, 0x6d, 0x62, 0x65, 0x72, +0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, +0x65, 0x7a, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0xe4, 0x62, 0x3b, 0x4d, 0xe4, 0x7a, 0x3b, +0x41, 0x70, 0x72, 0x3b, 0x4d, 0xe4, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x4f, 0x75, 0x6a, 0x3b, +0x53, 0xe4, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x44, 0x61, 0x6c, 0x3b, +0x41, 0x72, 0xe1, 0x3b, 0x186, 0x25b, 0x6e, 0x3b, 0x44, 0x6f, 0x79, 0x3b, 0x4c, 0xe9, 0x70, 0x3b, 0x52, 0x6f, 0x6b, 0x3b, +0x53, 0xe1, 0x73, 0x3b, 0x42, 0x254, 0x301, 0x72, 0x3b, 0x4b, 0xfa, 0x73, 0x3b, 0x47, 0xed, 0x73, 0x3b, 0x53, 0x68, 0x289, +0x301, 0x3b, 0x4e, 0x74, 0x289, 0x301, 0x3b, 0x4f, 0x6c, 0x61, 0x64, 0x61, 0x6c, 0x289, 0x301, 0x3b, 0x41, 0x72, 0xe1, 0x74, +0x3b, 0x186, 0x25b, 0x6e, 0x268, 0x301, 0x254, 0x268, 0x14b, 0x254, 0x6b, 0x3b, 0x4f, 0x6c, 0x6f, 0x64, 0x6f, 0x79, 0xed, 0xf3, +0x72, 0xed, 0xea, 0x20, 0x69, 0x6e, 0x6b, 0xf3, 0x6b, 0xfa, 0xe2, 0x3b, 0x4f, 0x6c, 0x6f, 0x69, 0x6c, 0xe9, 0x70, 0x16b, +0x6e, 0x79, 0x12b, 0x113, 0x20, 0x69, 0x6e, 0x6b, 0xf3, 0x6b, 0xfa, 0xe2, 0x3b, 0x4b, 0xfa, 0x6a, 0xfa, 0x254, 0x72, 0x254, +0x6b, 0x3b, 0x4d, 0xf3, 0x72, 0x75, 0x73, 0xe1, 0x73, 0x69, 0x6e, 0x3b, 0x186, 0x6c, 0x254, 0x301, 0x268, 0x301, 0x62, 0x254, +0x301, 0x72, 0xe1, 0x72, 0x25b, 0x3b, 0x4b, 0xfa, 0x73, 0x68, 0xee, 0x6e, 0x3b, 0x4f, 0x6c, 0x67, 0xed, 0x73, 0x61, 0x6e, +0x3b, 0x50, 0x289, 0x73, 0x68, 0x289, 0x301, 0x6b, 0x61, 0x3b, 0x4e, 0x74, 0x289, 0x301, 0x14b, 0x289, 0x301, 0x73, 0x3b, 0x4a, +0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, +0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, +0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, +0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, +0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x63, 0x3b, 0x52, 0x61, 0x72, 0x3b, 0x4d, +0x75, 0x6b, 0x3b, 0x4b, 0x77, 0x61, 0x3b, 0x44, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x6f, 0x64, 0x3b, 0x4a, +0x6f, 0x6c, 0x3b, 0x50, 0x65, 0x64, 0x3b, 0x53, 0x6f, 0x6b, 0x3b, 0x54, 0x69, 0x62, 0x3b, 0x4c, 0x61, 0x62, 0x3b, 0x50, +0x6f, 0x6f, 0x3b, 0x4f, 0x72, 0x61, 0x72, 0x61, 0x3b, 0x4f, 0x6d, 0x75, 0x6b, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x67, +0x2019, 0x3b, 0x4f, 0x64, 0x75, 0x6e, 0x67, 0x2019, 0x65, 0x6c, 0x3b, 0x4f, 0x6d, 0x61, 0x72, 0x75, 0x6b, 0x3b, 0x4f, 0x6d, +0x6f, 0x64, 0x6f, 0x6b, 0x2019, 0x6b, 0x69, 0x6e, 0x67, 0x2019, 0x6f, 0x6c, 0x3b, 0x4f, 0x6a, 0x6f, 0x6c, 0x61, 0x3b, 0x4f, +0x70, 0x65, 0x64, 0x65, 0x6c, 0x3b, 0x4f, 0x73, 0x6f, 0x6b, 0x6f, 0x73, 0x6f, 0x6b, 0x6f, 0x6d, 0x61, 0x3b, 0x4f, 0x74, +0x69, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x3b, 0x4f, 0x70, 0x6f, 0x6f, 0x3b, 0x52, 0x3b, 0x4d, +0x3b, 0x4b, 0x3b, 0x44, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x50, +0x3b, 0x17d, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x65, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x77, 0x69, 0x3b, 0x4d, 0x65, 0x3b, +0x17d, 0x75, 0x77, 0x3b, 0x17d, 0x75, 0x79, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0x65, 0x6b, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, +0x6f, 0x6f, 0x3b, 0x44, 0x65, 0x65, 0x3b, 0x17d, 0x61, 0x6e, 0x77, 0x69, 0x79, 0x65, 0x3b, 0x46, 0x65, 0x65, 0x77, 0x69, +0x72, 0x69, 0x79, 0x65, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x69, 0x3b, 0x41, 0x77, 0x69, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, +0x3b, 0x17d, 0x75, 0x77, 0x65, 0x14b, 0x3b, 0x17d, 0x75, 0x79, 0x79, 0x65, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0x65, 0x6b, 0x74, +0x61, 0x6e, 0x62, 0x75, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x75, 0x72, 0x3b, 0x4e, 0x6f, 0x6f, 0x77, 0x61, +0x6e, 0x62, 0x75, 0x72, 0x3b, 0x44, 0x65, 0x65, 0x73, 0x61, 0x6e, 0x62, 0x75, 0x72, 0x3b, 0x17d, 0x3b, 0x46, 0x3b, 0x4d, +0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x17d, 0x3b, 0x17d, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x44, +0x41, 0x43, 0x3b, 0x44, 0x41, 0x52, 0x3b, 0x44, 0x41, 0x44, 0x3b, 0x44, 0x41, 0x4e, 0x3b, 0x44, 0x41, 0x48, 0x3b, 0x44, +0x41, 0x55, 0x3b, 0x44, 0x41, 0x4f, 0x3b, 0x44, 0x41, 0x42, 0x3b, 0x44, 0x4f, 0x43, 0x3b, 0x44, 0x41, 0x50, 0x3b, 0x44, +0x47, 0x49, 0x3b, 0x44, 0x41, 0x47, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x63, 0x68, 0x69, 0x65, +0x6c, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x44, 0x77, 0x65, 0x20, +0x6d, 0x61, 0x72, 0x20, 0x41, 0x64, 0x65, 0x6b, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x6e, 0x67, +0x2019, 0x77, 0x65, 0x6e, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x62, 0x69, 0x63, 0x68, 0x3b, 0x44, +0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x75, 0x63, 0x68, 0x69, 0x65, 0x6c, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, +0x61, 0x72, 0x20, 0x41, 0x62, 0x69, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, +0x62, 0x6f, 0x72, 0x6f, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x4f, 0x63, 0x68, 0x69, 0x6b, 0x6f, 0x3b, +0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x70, 0x61, 0x72, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, +0x20, 0x67, 0x69, 0x20, 0x61, 0x63, 0x68, 0x69, 0x65, 0x6c, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, +0x70, 0x61, 0x72, 0x20, 0x67, 0x69, 0x20, 0x61, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x43, 0x3b, 0x52, 0x3b, 0x44, 0x3b, 0x4e, +0x3b, 0x42, 0x3b, 0x55, 0x3b, 0x42, 0x3b, 0x42, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x59, 0x65, 0x6e, +0x3b, 0x59, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x49, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, +0x3b, 0x59, 0x75, 0x6c, 0x3b, 0x194, 0x75, 0x63, 0x3b, 0x43, 0x75, 0x74, 0x3b, 0x4b, 0x1e6d, 0x75, 0x3b, 0x4e, 0x77, 0x61, +0x3b, 0x44, 0x75, 0x6a, 0x3b, 0x59, 0x65, 0x6e, 0x6e, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x59, 0x65, 0x62, 0x72, 0x61, 0x79, +0x65, 0x72, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x3b, 0x49, 0x62, 0x72, 0x69, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x79, 0x75, 0x3b, +0x59, 0x75, 0x6e, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6c, 0x79, 0x75, 0x7a, 0x3b, 0x194, 0x75, 0x63, 0x74, 0x3b, 0x43, 0x75, +0x74, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x4b, 0x1e6d, 0x75, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x77, 0x61, 0x6e, 0x62, 0x69, +0x72, 0x3b, 0x44, 0x75, 0x6a, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x4d, +0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x194, 0x3b, 0x43, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, +0x6c, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x6c, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, +0x6c, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, +0x41, 0x67, 0x6f, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, +0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x91c, +0x93e, 0x928, 0x941, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92e, +0x93e, 0x930, 0x94d, 0x938, 0x3b, 0x90f, 0x92b, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, +0x941, 0x932, 0x93e, 0x907, 0x3b, 0x906, 0x917, 0x938, 0x94d, 0x925, 0x3b, 0x938, 0x947, 0x92c, 0x925, 0x947, 0x91c, 0x94d, 0x92c, 0x93c, +0x930, 0x3b, 0x905, 0x916, 0x925, 0x92c, 0x930, 0x3b, 0x928, 0x92c, 0x947, 0x91c, 0x94d, 0x92c, 0x93c, 0x930, 0x3b, 0x926, 0x93f, 0x938, +0x947, 0x91c, 0x94d, 0x92c, 0x93c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, 0x947, 0x3b, 0x92e, 0x93e, 0x3b, 0x90f, 0x3b, 0x92e, 0x947, 0x3b, +0x91c, 0x941, 0x3b, 0x91c, 0x941, 0x3b, 0x906, 0x3b, 0x938, 0x947, 0x3b, 0x905, 0x3b, 0x928, 0x3b, 0x926, 0x93f, 0x3b, 0x44f, 0x43d, +0x432, 0x3b, 0x444, 0x435, 0x432, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, +0x43d, 0x3b, 0x438, 0x44e, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43d, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, +0x44f, 0x3b, 0x434, 0x435, 0x43a, 0x3b, 0x456, 0x486, 0x430, 0x2de9, 0x487, 0x3b, 0x444, 0x435, 0x2de1, 0x487, 0x3b, 0x43c, 0x430, 0x2dec, +0x487, 0x3b, 0x430, 0x486, 0x43f, 0x2dec, 0x487, 0x3b, 0x43c, 0x430, 0xa675, 0x3b, 0x456, 0x486, 0xa64b, 0x2de9, 0x487, 0x3b, 0x456, 0x486, +0xa64b, 0x2de7, 0x487, 0x3b, 0x430, 0x486, 0x301, 0x475, 0x2de2, 0x487, 0x3b, 0x441, 0x435, 0x2deb, 0x487, 0x3b, 0x47b, 0x486, 0x43a, 0x2dee, +0x3b, 0x43d, 0x43e, 0x435, 0x2de8, 0x3b, 0x434, 0x435, 0x2de6, 0x487, 0x3b, 0x456, 0x486, 0x430, 0x43d, 0x43d, 0xa64b, 0x430, 0x301, 0x440, +0x457, 0x439, 0x3b, 0x444, 0x435, 0x432, 0x440, 0xa64b, 0x430, 0x301, 0x440, 0x457, 0x439, 0x3b, 0x43c, 0x430, 0x301, 0x440, 0x442, 0x44a, +0x3b, 0x430, 0x486, 0x43f, 0x440, 0x456, 0x301, 0x43b, 0x43b, 0x457, 0x439, 0x3b, 0x43c, 0x430, 0x301, 0x457, 0x439, 0x3b, 0x456, 0x486, +0xa64b, 0x301, 0x43d, 0x457, 0x439, 0x3b, 0x456, 0x486, 0xa64b, 0x301, 0x43b, 0x457, 0x439, 0x3b, 0x430, 0x486, 0x301, 0x475, 0x433, 0xa64b, +0x441, 0x442, 0x44a, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x301, 0x43c, 0x432, 0x440, 0x457, 0x439, 0x3b, 0x47b, 0x486, 0x43a, 0x442, +0x461, 0x301, 0x432, 0x440, 0x457, 0x439, 0x3b, 0x43d, 0x43e, 0x435, 0x301, 0x43c, 0x432, 0x440, 0x457, 0x439, 0x3b, 0x434, 0x435, 0x43a, +0x435, 0x301, 0x43c, 0x432, 0x440, 0x457, 0x439, 0x3b, 0x406, 0x486, 0x3b, 0x424, 0x3b, 0x41c, 0x3b, 0x410, 0x486, 0x3b, 0x41c, 0x3b, +0x406, 0x486, 0x3b, 0x406, 0x486, 0x3b, 0x410, 0x486, 0x3b, 0x421, 0x3b, 0x47a, 0x486, 0x3b, 0x41d, 0x3b, 0x414, 0x3b, 0x456, 0x486, +0x430, 0x43d, 0x43d, 0xa64b, 0x430, 0x301, 0x440, 0x457, 0x430, 0x3b, 0x444, 0x435, 0x432, 0x440, 0xa64b, 0x430, 0x301, 0x440, 0x457, 0x430, +0x3b, 0x43c, 0x430, 0x301, 0x440, 0x442, 0x430, 0x3b, 0x430, 0x486, 0x43f, 0x440, 0x456, 0x301, 0x43b, 0x43b, 0x457, 0x430, 0x3b, 0x43c, +0x430, 0x301, 0x457, 0x430, 0x3b, 0x456, 0x486, 0xa64b, 0x301, 0x43d, 0x457, 0x430, 0x3b, 0x456, 0x486, 0xa64b, 0x301, 0x43b, 0x457, 0x430, +0x3b, 0x430, 0x486, 0x301, 0x475, 0x433, 0xa64b, 0x441, 0x442, 0x430, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x301, 0x43c, 0x432, 0x440, +0x457, 0x430, 0x3b, 0x47b, 0x486, 0x43a, 0x442, 0x461, 0x301, 0x432, 0x440, 0x457, 0x430, 0x3b, 0x43d, 0x43e, 0x435, 0x301, 0x43c, 0x432, +0x440, 0x457, 0x430, 0x3b, 0x434, 0x435, 0x43a, 0x435, 0x301, 0x43c, 0x432, 0x440, 0x457, 0x430, 0x3b, 0x43, 0x69, 0x6f, 0x3b, 0x4c, +0x75, 0x69, 0x3b, 0x4c, 0x75, 0x73, 0x3b, 0x4d, 0x75, 0x75, 0x3b, 0x4c, 0x75, 0x6d, 0x3b, 0x4c, 0x75, 0x66, 0x3b, 0x4b, +0x61, 0x62, 0x3b, 0x4c, 0x75, 0x73, 0x68, 0x3b, 0x4c, 0x75, 0x74, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b, +0x43, 0x69, 0x73, 0x3b, 0x43, 0x69, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0xf9, 0x69, 0x73, 0x68, 0x69, 0x3b, 0x4c, 0x75, +0x73, 0xf2, 0x6c, 0x6f, 0x3b, 0x4d, 0xf9, 0x75, 0x79, 0xe0, 0x3b, 0x4c, 0x75, 0x6d, 0xf9, 0x6e, 0x67, 0xf9, 0x6c, 0xf9, +0x3b, 0x4c, 0x75, 0x66, 0x75, 0x69, 0x6d, 0x69, 0x3b, 0x4b, 0x61, 0x62, 0xe0, 0x6c, 0xe0, 0x73, 0x68, 0xec, 0x70, 0xf9, +0x3b, 0x4c, 0xf9, 0x73, 0x68, 0xec, 0x6b, 0xe0, 0x3b, 0x4c, 0x75, 0x74, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x6f, 0x3b, 0x4c, +0x75, 0x6e, 0x67, 0xf9, 0x64, 0x69, 0x3b, 0x4b, 0x61, 0x73, 0x77, 0xe8, 0x6b, 0xe8, 0x73, 0xe8, 0x3b, 0x43, 0x69, 0x73, +0x77, 0xe0, 0x3b, 0x43, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x4c, 0x3b, 0x4c, +0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x43, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0xe4, 0x65, 0x3b, 0x41, +0x62, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, +0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, +0x72, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x4d, 0xe4, 0x65, 0x72, 0x7a, 0x3b, 0x41, 0x62, 0x72, 0xeb, +0x6c, 0x6c, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, +0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, +0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, +0x4a, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, 0x65, 0x2e, 0x3b, 0x41, 0x62, 0x72, 0x2e, 0x3b, +0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, +0x65, 0x70, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x6e, +0xf9, 0x6d, 0x3b, 0x6b, 0x268, 0x7a, 0x3b, 0x74, 0x268, 0x64, 0x3b, 0x74, 0x61, 0x61, 0x3b, 0x73, 0x65, 0x65, 0x3b, 0x6e, +0x7a, 0x75, 0x3b, 0x64, 0x75, 0x6d, 0x3b, 0x66, 0x254, 0x65, 0x3b, 0x64, 0x7a, 0x75, 0x3b, 0x6c, 0x254, 0x6d, 0x3b, 0x6b, +0x61, 0x61, 0x3b, 0x66, 0x77, 0x6f, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6e, 0xf9, 0x6d, 0x3b, 0x6e, +0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6b, 0x197, 0x300, 0x7a, 0xf9, 0x294, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, +0x254, 0x300, 0x74, 0x197, 0x300, 0x64, 0x289, 0x300, 0x67, 0x68, 0xe0, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, +0x74, 0x1ce, 0x61, 0x66, 0x289, 0x304, 0x67, 0x68, 0x101, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0xe8, 0x73, 0xe8, 0x65, +0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6e, 0x7a, 0xf9, 0x67, 0x68, 0xf2, 0x3b, 0x6e, 0x64, 0x7a, 0x254, +0x300, 0x14b, 0x254, 0x300, 0x64, 0xf9, 0x6d, 0x6c, 0x6f, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6b, 0x77, +0xee, 0x66, 0x254, 0x300, 0x65, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x74, 0x197, 0x300, 0x66, 0x289, 0x300, +0x67, 0x68, 0xe0, 0x64, 0x7a, 0x75, 0x67, 0x68, 0xf9, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x67, 0x68, +0x1d4, 0x75, 0x77, 0x65, 0x6c, 0x254, 0x300, 0x6d, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x63, 0x68, 0x77, +0x61, 0x294, 0xe0, 0x6b, 0x61, 0x61, 0x20, 0x77, 0x6f, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0xe8, 0x66, 0x77, 0xf2, +0x6f, 0x3b, 0x6e, 0x3b, 0x6b, 0x3b, 0x74, 0x3b, 0x74, 0x3b, 0x73, 0x3b, 0x7a, 0x3b, 0x6b, 0x3b, 0x66, 0x3b, 0x64, 0x3b, +0x6c, 0x3b, 0x63, 0x3b, 0x66, 0x3b, 0x6b, 0x254, 0x6e, 0x3b, 0x6d, 0x61, 0x63, 0x3b, 0x6d, 0x61, 0x74, 0x3b, 0x6d, 0x74, +0x6f, 0x3b, 0x6d, 0x70, 0x75, 0x3b, 0x68, 0x69, 0x6c, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x68, 0x69, 0x6b, 0x3b, 0x64, 0x69, +0x70, 0x3b, 0x62, 0x69, 0x6f, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x6c, 0x69, 0x253, 0x3b, 0x4b, 0x254, 0x6e, 0x64, 0x254, 0x14b, +0x3b, 0x4d, 0xe0, 0x63, 0x25b, 0x302, 0x6c, 0x3b, 0x4d, 0xe0, 0x74, 0xf9, 0x6d, 0x62, 0x3b, 0x4d, 0xe0, 0x74, 0x6f, 0x70, +0x3b, 0x4d, 0x300, 0x70, 0x75, 0x79, 0x25b, 0x3b, 0x48, 0xec, 0x6c, 0xf2, 0x6e, 0x64, 0x25b, 0x300, 0x3b, 0x4e, 0x6a, 0xe8, +0x62, 0xe0, 0x3b, 0x48, 0xec, 0x6b, 0x61, 0x14b, 0x3b, 0x44, 0xec, 0x70, 0x254, 0x300, 0x73, 0x3b, 0x42, 0xec, 0xf2, 0xf4, +0x6d, 0x3b, 0x4d, 0xe0, 0x79, 0x25b, 0x73, 0xe8, 0x70, 0x3b, 0x4c, 0xec, 0x62, 0x75, 0x79, 0x20, 0x6c, 0x69, 0x20, 0x144, +0x79, 0xe8, 0x65, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x68, 0x3b, 0x6e, 0x3b, 0x68, 0x3b, +0x64, 0x3b, 0x62, 0x3b, 0x6d, 0x3b, 0x6c, 0x3b, 0x64, 0x69, 0x3b, 0x14b, 0x67, 0x254, 0x6e, 0x3b, 0x73, 0x254, 0x14b, 0x3b, +0x64, 0x69, 0x253, 0x3b, 0x65, 0x6d, 0x69, 0x3b, 0x65, 0x73, 0x254, 0x3b, 0x6d, 0x61, 0x64, 0x3b, 0x64, 0x69, 0x14b, 0x3b, +0x6e, 0x79, 0x25b, 0x74, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x74, 0x69, 0x6e, 0x3b, 0x65, 0x6c, 0xe1, 0x3b, 0x64, 0x69, 0x6d, +0x254, 0x301, 0x64, 0x69, 0x3b, 0x14b, 0x67, 0x254, 0x6e, 0x64, 0x25b, 0x3b, 0x73, 0x254, 0x14b, 0x25b, 0x3b, 0x64, 0x69, 0x253, +0xe1, 0x253, 0xe1, 0x3b, 0x65, 0x6d, 0x69, 0x61, 0x73, 0x65, 0x6c, 0x65, 0x3b, 0x65, 0x73, 0x254, 0x70, 0x25b, 0x73, 0x254, +0x70, 0x25b, 0x3b, 0x6d, 0x61, 0x64, 0x69, 0x253, 0x25b, 0x301, 0x64, 0xed, 0x253, 0x25b, 0x301, 0x3b, 0x64, 0x69, 0x14b, 0x67, +0x69, 0x6e, 0x64, 0x69, 0x3b, 0x6e, 0x79, 0x25b, 0x74, 0x25b, 0x6b, 0x69, 0x3b, 0x6d, 0x61, 0x79, 0xe9, 0x73, 0x25b, 0x301, +0x3b, 0x74, 0x69, 0x6e, 0xed, 0x6e, 0xed, 0x3b, 0x65, 0x6c, 0xe1, 0x14b, 0x67, 0x25b, 0x301, 0x3b, 0x64, 0x3b, 0x14b, 0x3b, +0x73, 0x3b, 0x64, 0x3b, 0x65, 0x3b, 0x65, 0x3b, 0x6d, 0x3b, 0x64, 0x3b, 0x6e, 0x3b, 0x6d, 0x3b, 0x74, 0x3b, 0x65, 0x3b, +0x53, 0x61, 0x3b, 0x46, 0x65, 0x3b, 0x4d, 0x61, 0x3b, 0x41, 0x62, 0x3b, 0x4d, 0x65, 0x3b, 0x53, 0x75, 0x3b, 0x53, 0xfa, +0x3b, 0x55, 0x74, 0x3b, 0x53, 0x65, 0x3b, 0x4f, 0x6b, 0x3b, 0x4e, 0x6f, 0x3b, 0x44, 0x65, 0x3b, 0x53, 0x61, 0x6e, 0x76, +0x69, 0x65, 0x3b, 0x46, 0xe9, 0x62, 0x69, 0x72, 0x69, 0x65, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x3b, 0x41, 0x62, 0x75, 0x72, +0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x65, 0x14b, 0x3b, 0x53, 0xfa, 0x75, 0x79, 0x65, 0x65, 0x3b, 0x55, +0x74, 0x3b, 0x53, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, +0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x69, 0x73, 0x61, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x53, 0x3b, +0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, +0x44, 0x3b, 0x6e, 0x67, 0x6f, 0x3b, 0x6e, 0x67, 0x62, 0x3b, 0x6e, 0x67, 0x6c, 0x3b, 0x6e, 0x67, 0x6e, 0x3b, 0x6e, 0x67, +0x74, 0x3b, 0x6e, 0x67, 0x73, 0x3b, 0x6e, 0x67, 0x7a, 0x3b, 0x6e, 0x67, 0x6d, 0x3b, 0x6e, 0x67, 0x65, 0x3b, 0x6e, 0x67, +0x61, 0x3b, 0x6e, 0x67, 0x61, 0x64, 0x3b, 0x6e, 0x67, 0x61, 0x62, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x6f, 0x73, 0xfa, +0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x62, 0x25b, 0x30c, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x6c, 0xe1, 0x6c, 0x61, 0x3b, +0x6e, 0x67, 0x254, 0x6e, 0x20, 0x6e, 0x79, 0x69, 0x6e, 0x61, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x74, 0xe1, 0x6e, 0x61, +0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x73, 0x61, 0x6d, 0x259, 0x6e, 0x61, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x7a, 0x61, +0x6d, 0x67, 0x62, 0xe1, 0x6c, 0x61, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x6d, 0x77, 0x6f, 0x6d, 0x3b, 0x6e, 0x67, 0x254, +0x6e, 0x20, 0x65, 0x62, 0x75, 0x6c, 0xfa, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x61, 0x77, 0xf3, 0x6d, 0x3b, 0x6e, 0x67, +0x254, 0x6e, 0x20, 0x61, 0x77, 0xf3, 0x6d, 0x20, 0x61, 0x69, 0x20, 0x64, 0x7a, 0x69, 0xe1, 0x3b, 0x6e, 0x67, 0x254, 0x6e, +0x20, 0x61, 0x77, 0xf3, 0x6d, 0x20, 0x61, 0x69, 0x20, 0x62, 0x25b, 0x30c, 0x3b, 0x6f, 0x3b, 0x62, 0x3b, 0x6c, 0x3b, 0x6e, +0x3b, 0x74, 0x3b, 0x73, 0x3b, 0x7a, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, 0x61, 0x3b, 0x64, 0x3b, 0x62, 0x3b, 0x14b, 0x31, 0x3b, +0x14b, 0x32, 0x3b, 0x14b, 0x33, 0x3b, 0x14b, 0x34, 0x3b, 0x14b, 0x35, 0x3b, 0x14b, 0x36, 0x3b, 0x14b, 0x37, 0x3b, 0x14b, 0x38, +0x3b, 0x14b, 0x39, 0x3b, 0x14b, 0x31, 0x30, 0x3b, 0x14b, 0x31, 0x31, 0x3b, 0x14b, 0x31, 0x32, 0x3b, 0x14b, 0x77, 0xed, 0xed, +0x20, 0x61, 0x20, 0x6e, 0x74, 0x254, 0x301, 0x6e, 0x74, 0x254, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, +0x62, 0x25b, 0x301, 0x25b, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x72, 0xe1, 0xe1, 0x3b, 0x14b, 0x77, +0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x69, 0x6e, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, +0x74, 0xe1, 0x61, 0x6e, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x74, 0xe1, 0x61, 0x66, 0x254, 0x6b, +0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x74, 0xe1, 0x61, 0x62, 0x25b, 0x25b, 0x3b, 0x14b, 0x77, 0xed, +0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x74, 0xe1, 0x61, 0x72, 0x61, 0x61, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, +0x1dd, 0x20, 0x74, 0xe1, 0x61, 0x6e, 0x69, 0x6e, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x74, +0x25b, 0x6b, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x74, 0x25b, 0x6b, 0x20, 0x64, 0x69, 0x20, +0x62, 0x254, 0x301, 0x6b, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x74, 0x25b, 0x6b, 0x20, 0x64, +0x69, 0x20, 0x62, 0x25b, 0x301, 0x25b, 0x3b, 0x4b, 0x77, 0x61, 0x3b, 0x55, 0x6e, 0x61, 0x3b, 0x52, 0x61, 0x72, 0x3b, 0x43, +0x68, 0x65, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x4d, 0x6f, 0x63, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4e, 0x61, 0x6e, 0x3b, 0x54, +0x69, 0x73, 0x3b, 0x4b, 0x75, 0x6d, 0x3b, 0x4d, 0x6f, 0x6a, 0x3b, 0x59, 0x65, 0x6c, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, +0x20, 0x77, 0x6f, 0x20, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, +0x75, 0x6e, 0x61, 0x79, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, 0x6e, 0x65, +0x72, 0x61, 0x72, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, 0x6e, 0x65, 0x63, 0x68, 0x65, +0x73, 0x68, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, 0x6e, 0x65, 0x74, 0x68, 0x61, 0x6e, +0x75, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x75, 0x20, 0x6e, 0x61, 0x20, +0x6d, 0x6f, 0x63, 0x68, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x73, 0x61, 0x62, 0x61, 0x3b, +0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6e, 0x61, 0x6e, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, +0x77, 0x6f, 0x20, 0x74, 0x69, 0x73, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6b, 0x75, 0x6d, +0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, +0x6f, 0x6a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, +0x20, 0x79, 0x65, 0x6c, 0x2019, 0x6c, 0x69, 0x3b, 0x4b, 0x3b, 0x55, 0x3b, 0x52, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, +0x53, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x46, 0x4c, 0x4f, 0x3b, 0x43, 0x4c, 0x41, 0x3b, +0x43, 0x4b, 0x49, 0x3b, 0x46, 0x4d, 0x46, 0x3b, 0x4d, 0x41, 0x44, 0x3b, 0x4d, 0x42, 0x49, 0x3b, 0x4d, 0x4c, 0x49, 0x3b, +0x4d, 0x41, 0x4d, 0x3b, 0x46, 0x44, 0x45, 0x3b, 0x46, 0x4d, 0x55, 0x3b, 0x46, 0x47, 0x57, 0x3b, 0x46, 0x59, 0x55, 0x3b, +0x46, 0x129, 0x69, 0x20, 0x4c, 0x6f, 0x6f, 0x3b, 0x43, 0x6f, 0x6b, 0x63, 0x77, 0x61, 0x6b, 0x6c, 0x61, 0x14b, 0x6e, 0x65, +0x3b, 0x43, 0x6f, 0x6b, 0x63, 0x77, 0x61, 0x6b, 0x6c, 0x69, 0x69, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x4d, 0x61, 0x72, 0x66, +0x6f, 0x6f, 0x3b, 0x4d, 0x61, 0x64, 0x1dd, 0x1dd, 0x75, 0x75, 0x74, 0x1dd, 0x62, 0x69, 0x6a, 0x61, 0x14b, 0x3b, 0x4d, 0x61, +0x6d, 0x1dd, 0x14b, 0x67, 0x77, 0xe3, 0x61, 0x66, 0x61, 0x68, 0x62, 0x69, 0x69, 0x3b, 0x4d, 0x61, 0x6d, 0x1dd, 0x14b, 0x67, +0x77, 0xe3, 0x61, 0x6c, 0x69, 0x69, 0x3b, 0x4d, 0x61, 0x64, 0x1dd, 0x6d, 0x62, 0x69, 0x69, 0x3b, 0x46, 0x129, 0x69, 0x20, +0x44, 0x1dd, 0x253, 0x6c, 0x69, 0x69, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x4d, 0x75, 0x6e, 0x64, 0x61, 0x14b, 0x3b, 0x46, 0x129, +0x69, 0x20, 0x47, 0x77, 0x61, 0x68, 0x6c, 0x6c, 0x65, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x59, 0x75, 0x72, 0x75, 0x3b, 0x4f, +0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x46, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x55, 0x3b, 0x57, +0x3b, 0x59, 0x3b, 0x6e, 0x67, 0x31, 0x3b, 0x6e, 0x67, 0x32, 0x3b, 0x6e, 0x67, 0x33, 0x3b, 0x6e, 0x67, 0x34, 0x3b, 0x6e, +0x67, 0x35, 0x3b, 0x6e, 0x67, 0x36, 0x3b, 0x6e, 0x67, 0x37, 0x3b, 0x6e, 0x67, 0x38, 0x3b, 0x6e, 0x67, 0x39, 0x3b, 0x6e, +0x67, 0x31, 0x30, 0x3b, 0x6e, 0x67, 0x31, 0x31, 0x3b, 0x6b, 0x72, 0x69, 0x73, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, +0x6d, 0x61, 0x74, 0xe1, 0x68, 0x72, 0x61, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x6d, 0x62, 0x61, 0x3b, 0x6e, +0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x6c, 0x61, 0x6c, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x6e, 0x61, 0x3b, +0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x74, 0x61, 0x6e, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x74, 0x75, +0xf3, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x68, 0x25b, 0x6d, 0x62, 0x75, 0x25b, 0x72, 0xed, 0x3b, 0x6e, 0x67, 0x77, +0x25b, 0x6e, 0x20, 0x6c, 0x254, 0x6d, 0x62, 0x69, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x72, 0x25b, 0x62, 0x76, 0x75, +0xe2, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x77, 0x75, 0x6d, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x77, 0x75, +0x6d, 0x20, 0x6e, 0x61, 0x76, 0x1d4, 0x72, 0x3b, 0x6b, 0x72, 0xed, 0x73, 0x69, 0x6d, 0x69, 0x6e, 0x3b, 0x54, 0x69, 0x6f, +0x70, 0x3b, 0x50, 0x25b, 0x74, 0x3b, 0x44, 0x75, 0x254, 0x331, 0x254, 0x331, 0x3b, 0x47, 0x75, 0x61, 0x6b, 0x3b, 0x44, 0x75, +0xe4, 0x3b, 0x4b, 0x6f, 0x72, 0x3b, 0x50, 0x61, 0x79, 0x3b, 0x54, 0x68, 0x6f, 0x6f, 0x3b, 0x54, 0x25b, 0x25b, 0x3b, 0x4c, +0x61, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x54, 0x69, 0x64, 0x3b, 0x54, 0x69, 0x6f, 0x70, 0x20, 0x74, 0x68, 0x61, 0x72, +0x20, 0x70, 0x25b, 0x74, 0x3b, 0x50, 0x25b, 0x74, 0x3b, 0x44, 0x75, 0x254, 0x331, 0x254, 0x331, 0x14b, 0x3b, 0x47, 0x75, 0x61, +0x6b, 0x3b, 0x44, 0x75, 0xe4, 0x74, 0x3b, 0x4b, 0x6f, 0x72, 0x6e, 0x79, 0x6f, 0x6f, 0x74, 0x3b, 0x50, 0x61, 0x79, 0x20, +0x79, 0x69, 0x65, 0x331, 0x74, 0x6e, 0x69, 0x3b, 0x54, 0x68, 0x6f, 0x331, 0x6f, 0x331, 0x72, 0x3b, 0x54, 0x25b, 0x25b, 0x72, +0x3b, 0x4c, 0x61, 0x61, 0x74, 0x68, 0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x54, 0x69, 0x6f, 0x331, 0x70, 0x20, 0x69, 0x6e, 0x20, +0x64, 0x69, 0x331, 0x69, 0x331, 0x74, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x4b, 0x3b, 0x50, +0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x422, 0x43e, 0x445, 0x441, 0x3b, 0x41e, 0x43b, 0x443, 0x43d, +0x3b, 0x41a, 0x43b, 0x43d, 0x5f, 0x442, 0x442, 0x440, 0x3b, 0x41c, 0x443, 0x441, 0x5f, 0x443, 0x441, 0x442, 0x3b, 0x42b, 0x430, 0x43c, +0x5f, 0x439, 0x43d, 0x3b, 0x411, 0x44d, 0x441, 0x5f, 0x439, 0x43d, 0x3b, 0x41e, 0x442, 0x5f, 0x439, 0x43d, 0x3b, 0x410, 0x442, 0x440, +0x434, 0x44c, 0x5f, 0x439, 0x43d, 0x3b, 0x411, 0x43b, 0x495, 0x43d, 0x5f, 0x439, 0x43d, 0x3b, 0x410, 0x43b, 0x442, 0x3b, 0x421, 0x44d, +0x442, 0x3b, 0x410, 0x445, 0x441, 0x3b, 0x422, 0x43e, 0x445, 0x441, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x3b, 0x41e, 0x43b, 0x443, 0x43d, +0x43d, 0x44c, 0x443, 0x3b, 0x41a, 0x443, 0x43b, 0x443, 0x43d, 0x20, 0x442, 0x443, 0x442, 0x430, 0x440, 0x3b, 0x41c, 0x443, 0x443, 0x441, +0x20, 0x443, 0x441, 0x442, 0x430, 0x440, 0x3b, 0x42b, 0x430, 0x43c, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x411, 0x44d, 0x441, 0x20, +0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x41e, 0x442, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x410, 0x442, 0x44b, 0x440, 0x434, 0x44c, 0x44b, +0x445, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x411, 0x430, 0x43b, 0x430, 0x495, 0x430, 0x43d, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, +0x410, 0x43b, 0x442, 0x44b, 0x43d, 0x43d, 0x44c, 0x44b, 0x3b, 0x421, 0x44d, 0x442, 0x438, 0x43d, 0x43d, 0x44c, 0x438, 0x3b, 0x410, 0x445, +0x441, 0x44b, 0x43d, 0x43d, 0x44c, 0x44b, 0x3b, 0x422, 0x3b, 0x41e, 0x3b, 0x41a, 0x3b, 0x41c, 0x3b, 0x42b, 0x3b, 0x411, 0x3b, 0x41e, +0x3b, 0x410, 0x3b, 0x411, 0x3b, 0x410, 0x3b, 0x421, 0x3b, 0x410, 0x3b, 0x4d, 0x75, 0x70, 0x3b, 0x4d, 0x77, 0x69, 0x3b, 0x4d, +0x73, 0x68, 0x3b, 0x4d, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x67, 0x3b, 0x4d, 0x75, 0x6a, 0x3b, 0x4d, 0x73, 0x70, 0x3b, 0x4d, +0x70, 0x67, 0x3b, 0x4d, 0x79, 0x65, 0x3b, 0x4d, 0x6f, 0x6b, 0x3b, 0x4d, 0x75, 0x73, 0x3b, 0x4d, 0x75, 0x68, 0x3b, 0x4d, +0x75, 0x70, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x77, 0x61, 0x3b, 0x4d, 0x77, 0x69, 0x74, 0x6f, 0x70, 0x65, 0x3b, +0x4d, 0x75, 0x73, 0x68, 0x65, 0x6e, 0x64, 0x65, 0x3b, 0x4d, 0x75, 0x6e, 0x79, 0x69, 0x3b, 0x4d, 0x75, 0x73, 0x68, 0x65, +0x6e, 0x64, 0x65, 0x20, 0x4d, 0x61, 0x67, 0x61, 0x6c, 0x69, 0x3b, 0x4d, 0x75, 0x6a, 0x69, 0x6d, 0x62, 0x69, 0x3b, 0x4d, +0x75, 0x73, 0x68, 0x69, 0x70, 0x65, 0x70, 0x6f, 0x3b, 0x4d, 0x75, 0x70, 0x75, 0x67, 0x75, 0x74, 0x6f, 0x3b, 0x4d, 0x75, +0x6e, 0x79, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x4d, 0x6f, 0x6b, 0x68, 0x75, 0x3b, 0x4d, 0x75, 0x73, 0x6f, 0x6e, 0x67, 0x61, +0x6e, 0x64, 0x65, 0x6d, 0x62, 0x77, 0x65, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0xa5a8, 0xa56a, 0xa583, 0x20, +0xa51e, 0xa56e, 0x3b, 0xa552, 0xa561, 0xa59d, 0xa595, 0x3b, 0xa57e, 0xa5ba, 0x3b, 0xa5a2, 0xa595, 0x3b, 0xa591, 0xa571, 0x3b, 0x36, 0x3b, 0x37, +0x3b, 0xa5db, 0xa515, 0x3b, 0xa562, 0xa54c, 0x3b, 0xa56d, 0xa583, 0x3b, 0xa51e, 0xa60b, 0xa554, 0xa57f, 0x20, 0xa578, 0xa583, 0xa5cf, 0x3b, 0xa5a8, +0xa56a, 0xa571, 0x20, 0xa5cf, 0xa56e, 0x3b, 0x6c, 0x75, 0x75, 0x6b, 0x61, 0x6f, 0x20, 0x6b, 0x65, 0x6d, 0xe3, 0x3b, 0x253, 0x61, +0x6e, 0x64, 0x61, 0x253, 0x75, 0x3b, 0x76, 0x254, 0x254, 0x3b, 0x66, 0x75, 0x6c, 0x75, 0x3b, 0x67, 0x6f, 0x6f, 0x3b, 0x36, +0x3b, 0x37, 0x3b, 0x6b, 0x254, 0x6e, 0x64, 0x65, 0x3b, 0x73, 0x61, 0x61, 0x68, 0x3b, 0x67, 0x61, 0x6c, 0x6f, 0x3b, 0x6b, +0x65, 0x6e, 0x70, 0x6b, 0x61, 0x74, 0x6f, 0x20, 0x253, 0x6f, 0x6c, 0x6f, 0x6c, 0x254, 0x3b, 0x6c, 0x75, 0x75, 0x6b, 0x61, +0x6f, 0x20, 0x6c, 0x254, 0x6d, 0x61, 0x3b, 0x4a, 0x65, 0x6e, 0x3b, 0x48, 0x6f, 0x72, 0x3b, 0x4d, 0xe4, 0x72, 0x3b, 0x41, +0x62, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x42, 0x72, 0xe1, 0x3b, 0x48, 0x65, 0x69, 0x3b, 0xd6, 0x69, 0x67, 0x3b, 0x48, +0x65, 0x72, 0x3b, 0x57, 0xed, 0x6d, 0x3b, 0x57, 0x69, 0x6e, 0x3b, 0x43, 0x68, 0x72, 0x3b, 0x4a, 0x65, 0x6e, 0x6e, 0x65, +0x72, 0x3b, 0x48, 0x6f, 0x72, 0x6e, 0x69, 0x67, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x65, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, +0x6c, 0x65, 0x3b, 0x4d, 0x65, 0x69, 0x6a, 0x65, 0x3b, 0x42, 0x72, 0xe1, 0x10d, 0x65, 0x74, 0x3b, 0x48, 0x65, 0x69, 0x77, +0x65, 0x74, 0x3b, 0xd6, 0x69, 0x67, 0x161, 0x74, 0x65, 0x3b, 0x48, 0x65, 0x72, 0x62, 0x161, 0x74, 0x6d, 0xe1, 0x6e, 0x65, +0x74, 0x3b, 0x57, 0xed, 0x6d, 0xe1, 0x6e, 0x65, 0x74, 0x3b, 0x57, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0xe1, 0x6e, 0x65, +0x74, 0x3b, 0x43, 0x68, 0x72, 0x69, 0x161, 0x74, 0x6d, 0xe1, 0x6e, 0x65, 0x74, 0x3b, 0x4a, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, +0x41, 0x3b, 0x4d, 0x3b, 0x42, 0x3b, 0x48, 0x3b, 0xd6, 0x3b, 0x48, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x43, 0x3b, 0x6f, 0x2e, +0x31, 0x3b, 0x6f, 0x2e, 0x32, 0x3b, 0x6f, 0x2e, 0x33, 0x3b, 0x6f, 0x2e, 0x34, 0x3b, 0x6f, 0x2e, 0x35, 0x3b, 0x6f, 0x2e, +0x36, 0x3b, 0x6f, 0x2e, 0x37, 0x3b, 0x6f, 0x2e, 0x38, 0x3b, 0x6f, 0x2e, 0x39, 0x3b, 0x6f, 0x2e, 0x31, 0x30, 0x3b, 0x6f, +0x2e, 0x31, 0x31, 0x3b, 0x6f, 0x2e, 0x31, 0x32, 0x3b, 0x70, 0x69, 0x6b, 0xed, 0x74, 0xed, 0x6b, 0xed, 0x74, 0x69, 0x65, +0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0xed, 0x20, 0xfa, 0x20, 0x6b, 0x75, 0x74, 0xfa, 0x61, 0x6e, 0x3b, 0x73, 0x69, 0x25b, 0x79, +0x25b, 0x301, 0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x6e, 0x64, 0xed, 0x25b, 0x3b, 0x254, 0x6e, +0x73, 0xfa, 0x6d, 0x62, 0x254, 0x6c, 0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x74, 0xe1, 0x74, +0xfa, 0x25b, 0x3b, 0x6d, 0x65, 0x73, 0x69, 0x14b, 0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe9, 0x6e, +0x69, 0x65, 0x3b, 0x65, 0x6e, 0x73, 0x69, 0x6c, 0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x74, +0xe1, 0x6e, 0x75, 0x25b, 0x3b, 0x254, 0x73, 0x254, 0x6e, 0x3b, 0x65, 0x66, 0x75, 0x74, 0x65, 0x3b, 0x70, 0x69, 0x73, 0x75, +0x79, 0xfa, 0x3b, 0x69, 0x6d, 0x25b, 0x14b, 0x20, 0x69, 0x20, 0x70, 0x75, 0x254, 0x73, 0x3b, 0x69, 0x6d, 0x25b, 0x14b, 0x20, +0x69, 0x20, 0x70, 0x75, 0x74, 0xfa, 0x6b, 0x2c, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x74, 0xed, 0x25b, +0x3b, 0x6d, 0x61, 0x6b, 0x61, 0x6e, 0x64, 0x69, 0x6b, 0x25b, 0x3b, 0x70, 0x69, 0x6c, 0x254, 0x6e, 0x64, 0x254, 0x301, 0x3b, +0x58, 0x69, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, +0x58, 0x75, 0x6e, 0x3b, 0x58, 0x6e, 0x74, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x63, 0x68, 0x3b, +0x50, 0x61, 0x79, 0x3b, 0x41, 0x76, 0x69, 0x3b, 0x78, 0x69, 0x6e, 0x65, 0x72, 0x75, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, +0x72, 0x75, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x75, 0x3b, +0x78, 0x75, 0x6e, 0x75, 0x3b, 0x78, 0x75, 0x6e, 0x65, 0x74, 0x75, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x75, 0x3b, 0x73, +0x65, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x68, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x70, 0x61, 0x79, +0x61, 0x72, 0x65, 0x73, 0x3b, 0x61, 0x76, 0x69, 0x65, 0x6e, 0x74, 0x75, 0x3b, 0x58, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, +0x3b, 0x4d, 0x3b, 0x58, 0x3b, 0x58, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x78, 0x69, 0x6e, +0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x78, 0x75, 0x6e, +0x3b, 0x78, 0x6e, 0x74, 0x3b, 0x61, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x6f, 0x63, 0x68, 0x3b, 0x70, 0x61, 0x79, +0x3b, 0x61, 0x76, 0x69, 0x3b, 0x64, 0x65, 0x20, 0x78, 0x69, 0x6e, 0x65, 0x72, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x66, 0x65, +0x62, 0x72, 0x65, 0x72, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x64, 0x2019, 0x61, 0x62, 0x72, +0x69, 0x6c, 0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x78, 0x75, 0x6e, 0x75, 0x3b, 0x64, +0x65, 0x20, 0x78, 0x75, 0x6e, 0x65, 0x74, 0x75, 0x3b, 0x64, 0x2019, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x75, 0x3b, 0x64, 0x65, +0x20, 0x73, 0x65, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x2019, 0x6f, 0x63, 0x68, 0x6f, 0x62, 0x72, 0x65, +0x3b, 0x64, 0x65, 0x20, 0x70, 0x61, 0x79, 0x61, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x2019, 0x61, 0x76, 0x69, 0x65, 0x6e, 0x74, +0x75, 0x3b, 0x4e, 0x64, 0x75, 0x14b, 0x6d, 0x62, 0x69, 0x20, 0x53, 0x61, 0x14b, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, +0x50, 0x25b, 0x301, 0x70, 0xe1, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, 0x74, 0xe1, 0x74, 0x3b, 0x50, +0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, 0x6e, 0x25b, 0x301, 0x6b, 0x77, 0x61, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, +0x20, 0x50, 0x61, 0x74, 0x61, 0x61, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, 0x6e, 0x25b, 0x301, 0x6e, +0x74, 0xfa, 0x6b, 0xfa, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x53, 0x61, 0x61, 0x6d, 0x62, 0xe1, 0x3b, 0x50, 0x25b, +0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, 0x6e, 0x25b, 0x301, 0x66, 0x254, 0x6d, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, +0x50, 0x25b, 0x301, 0x6e, 0x25b, 0x301, 0x70, 0x66, 0xfa, 0xa78b, 0xfa, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x4e, 0x25b, +0x67, 0x25b, 0x301, 0x6d, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x4e, 0x74, 0x73, 0x254, 0x30c, 0x70, 0x6d, 0x254, 0x301, +0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x4e, 0x74, 0x73, 0x254, 0x30c, 0x70, 0x70, 0xe1, 0x3b, 0x70, 0x61, 0x6d, 0x62, +0x61, 0x3b, 0x77, 0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x6d, 0x62, 0x69, 0x79, 0x254, 0x20, 0x6d, 0x25b, 0x6e, 0x64, 0x6f, 0x14b, +0x67, 0x254, 0x3b, 0x4e, 0x79, 0x254, 0x6c, 0x254, 0x6d, 0x62, 0x254, 0x14b, 0x67, 0x254, 0x3b, 0x4d, 0x254, 0x6e, 0x254, 0x20, +0x14b, 0x67, 0x62, 0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4e, 0x79, 0x61, 0x14b, 0x67, 0x77, 0x25b, 0x20, 0x14b, 0x67, 0x62, 0x61, +0x6e, 0x6a, 0x61, 0x3b, 0x6b, 0x75, 0x14b, 0x67, 0x77, 0x25b, 0x3b, 0x66, 0x25b, 0x3b, 0x6e, 0x6a, 0x61, 0x70, 0x69, 0x3b, +0x6e, 0x79, 0x75, 0x6b, 0x75, 0x6c, 0x3b, 0x31, 0x31, 0x3b, 0x253, 0x75, 0x6c, 0x253, 0x75, 0x73, 0x25b, 0x3b, 0x6d, 0x62, +0x65, 0x67, 0x74, 0x75, 0x67, 0x3b, 0x69, 0x6d, 0x65, 0x67, 0x20, 0xe0, 0x62, 0xf9, 0x62, 0xec, 0x3b, 0x69, 0x6d, 0x65, +0x67, 0x20, 0x6d, 0x62, 0x259, 0x14b, 0x63, 0x68, 0x75, 0x62, 0x69, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6e, 0x67, 0x77, +0x259, 0x300, 0x74, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x66, 0x6f, 0x67, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x69, 0x63, +0x68, 0x69, 0x69, 0x62, 0x254, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0xe0, 0x64, 0xf9, 0x6d, 0x62, 0x259, 0x300, 0x14b, +0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x69, 0x63, 0x68, 0x69, 0x6b, 0x61, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, 0x75, +0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x74, 0xe8, 0x73, 0x69, 0x2bc, 0x65, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x7a, +0xf2, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, 0x72, 0x69, 0x7a, 0x6d, 0x65, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, +0x6d, 0x62, 0x65, 0x67, 0x74, 0x75, 0x67, 0x3b, 0x69, 0x6d, 0x65, 0x67, 0x20, 0xe0, 0x62, 0xf9, 0x62, 0xec, 0x3b, 0x69, +0x6d, 0x65, 0x67, 0x20, 0x6d, 0x62, 0x259, 0x14b, 0x63, 0x68, 0x75, 0x62, 0x69, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6e, +0x67, 0x77, 0x259, 0x300, 0x74, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x66, 0x6f, 0x67, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, +0x69, 0x63, 0x68, 0x69, 0x69, 0x62, 0x254, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0xe0, 0x64, 0xf9, 0x6d, 0x62, 0x259, +0x300, 0x14b, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x69, 0x63, 0x68, 0x69, 0x6b, 0x61, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, +0x6b, 0x75, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x74, 0xe8, 0x73, 0x69, 0x2bc, 0x65, 0x3b, 0x69, 0x6d, 0x259, 0x67, +0x20, 0x7a, 0xf2, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, 0x72, 0x69, 0x7a, 0x6d, 0x65, 0x64, 0x3b, 0x4d, 0x31, 0x3b, +0x41, 0x32, 0x3b, 0x4d, 0x33, 0x3b, 0x4e, 0x34, 0x3b, 0x46, 0x35, 0x3b, 0x49, 0x36, 0x3b, 0x41, 0x37, 0x3b, 0x49, 0x38, +0x3b, 0x4b, 0x39, 0x3b, 0x31, 0x30, 0x3b, 0x31, 0x31, 0x3b, 0x31, 0x32, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x74, 0x73, 0x65, +0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0xf9, 0x6d, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6b, 0xe0, 0x67, 0x20, 0x6e, 0x67, +0x77, 0xf3, 0x14b, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6c, 0x65, 0x70, 0x79, 0xe8, 0x20, 0x73, 0x68, 0xfa, 0x6d, 0x3b, 0x73, +0x61, 0x14b, 0x20, 0x63, 0xff, 0xf3, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x63, 0xff, 0xf3, +0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6e, 0x6a, 0xff, 0x6f, 0x6c, 0xe1, 0x2bc, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x74, 0x79, 0x25b, +0x300, 0x62, 0x20, 0x74, 0x79, 0x25b, 0x300, 0x62, 0x20, 0x6d, 0x62, 0x289, 0x300, 0x14b, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6d, +0x62, 0x289, 0x300, 0x14b, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6e, 0x67, 0x77, 0x254, 0x300, 0x2bc, 0x20, 0x6d, 0x62, 0xff, 0x25b, +0x3b, 0x73, 0x61, 0x14b, 0x20, 0x74, 0xe0, 0x14b, 0x61, 0x20, 0x74, 0x73, 0x65, 0x74, 0x73, 0xe1, 0x2bc, 0x3b, 0x73, 0x61, +0x14b, 0x20, 0x6d, 0x65, 0x6a, 0x77, 0x6f, 0x14b, 0xf3, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6c, 0xf9, 0x6d, 0x3b, 0x57, 0x69, +0xf3, 0x74, 0x68, 0x65, 0x21f, 0x69, 0x6b, 0x61, 0x20, 0x57, 0xed, 0x3b, 0x54, 0x68, 0x69, 0x79, 0xf3, 0x21f, 0x65, 0x79, +0x75, 0x14b, 0x6b, 0x61, 0x20, 0x57, 0xed, 0x3b, 0x49, 0x161, 0x74, 0xe1, 0x77, 0x69, 0x10d, 0x68, 0x61, 0x79, 0x61, 0x7a, +0x61, 0x14b, 0x20, 0x57, 0xed, 0x3b, 0x50, 0x21f, 0x65, 0x17e, 0xed, 0x74, 0x21f, 0x6f, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, +0x61, 0x14b, 0x77, 0xe1, 0x70, 0x65, 0x74, 0x21f, 0x6f, 0x20, 0x57, 0xed, 0x3b, 0x57, 0xed, 0x70, 0x61, 0x7a, 0x75, 0x6b, +0x21f, 0x61, 0x2d, 0x77, 0x61, 0x161, 0x74, 0xe9, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, 0x61, 0x14b, 0x70, 0x21f, 0xe1, 0x73, +0x61, 0x70, 0x61, 0x20, 0x57, 0xed, 0x3b, 0x57, 0x61, 0x73, 0xfa, 0x74, 0x21f, 0x75, 0x14b, 0x20, 0x57, 0xed, 0x3b, 0x10c, +0x68, 0x61, 0x14b, 0x77, 0xe1, 0x70, 0x65, 0x1e7, 0x69, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, 0x61, 0x14b, 0x77, 0xe1, 0x70, +0x65, 0x2d, 0x6b, 0x61, 0x73, 0x6e, 0xe1, 0x20, 0x57, 0xed, 0x3b, 0x57, 0x61, 0x6e, 0xed, 0x79, 0x65, 0x74, 0x75, 0x20, +0x57, 0xed, 0x3b, 0x54, 0x21f, 0x61, 0x68, 0xe9, 0x6b, 0x61, 0x70, 0x161, 0x75, 0x14b, 0x20, 0x57, 0xed, 0x3b, 0x6a9, 0x627, +0x646, 0x648, 0x648, 0x646, 0x6cc, 0x20, 0x62f, 0x648, 0x648, 0x6d5, 0x645, 0x3b, 0x634, 0x648, 0x628, 0x627, 0x62a, 0x3b, 0x626, 0x627, +0x632, 0x627, 0x631, 0x3b, 0x646, 0x6cc, 0x633, 0x627, 0x646, 0x3b, 0x626, 0x627, 0x6cc, 0x627, 0x631, 0x3b, 0x62d, 0x648, 0x632, 0x6d5, +0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x62a, 0x6d5, 0x645, 0x648, 0x648, 0x632, 0x3b, 0x626, 0x627, 0x628, 0x3b, 0x626, 0x6d5, 0x6cc, 0x644, +0x648, 0x648, 0x644, 0x3b, 0x62a, 0x634, 0x631, 0x6cc, 0x646, 0x6cc, 0x20, 0x6cc, 0x6d5, 0x6a9, 0x6d5, 0x645, 0x3b, 0x62a, 0x634, 0x631, +0x6cc, 0x646, 0x6cc, 0x20, 0x62f, 0x648, 0x648, 0x6d5, 0x645, 0x3b, 0x6a9, 0x627, 0x646, 0x648, 0x646, 0x6cc, 0x20, 0x6cc, 0x6d5, 0x6a9, +0x6d5, 0x645, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x11b, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, +0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, +0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x77, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, +0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x11b, 0x72, 0x63, 0x3b, 0x61, 0x70, 0x72, 0x79, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, +0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x3b, +0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, +0x77, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, +0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x11b, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x2e, +0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x77, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, +0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x77, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, +0x61, 0x72, 0x61, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x61, 0x3b, 0x6d, 0x11b, 0x72, 0x63, 0x61, 0x3b, 0x61, +0x70, 0x72, 0x79, 0x6c, 0x61, 0x3b, 0x6d, 0x61, 0x6a, 0x61, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x61, 0x3b, 0x6a, 0x75, +0x6c, 0x69, 0x6a, 0x61, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, +0x72, 0x61, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, 0x6e, 0x6f, 0x77, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, +0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x11b, 0x72, +0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x65, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, +0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x77, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, +0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x11b, 0x72, 0x63, 0x3b, 0x61, 0x70, 0x72, +0x79, 0x6c, 0x3b, 0x6d, 0x65, 0x6a, 0x61, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x3b, +0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, +0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x77, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, +0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x11b, 0x72, 0x2e, 0x3b, 0x61, 0x70, +0x72, 0x2e, 0x3b, 0x6d, 0x65, 0x6a, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x77, +0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x77, 0x2e, 0x3b, 0x64, 0x65, +0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x61, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x61, 0x3b, +0x6d, 0x11b, 0x72, 0x63, 0x61, 0x3b, 0x61, 0x70, 0x72, 0x79, 0x6c, 0x61, 0x3b, 0x6d, 0x65, 0x6a, 0x65, 0x3b, 0x6a, 0x75, +0x6e, 0x69, 0x6a, 0x61, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x61, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, +0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, 0x6e, 0x6f, +0x77, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x75, 0x111, 0x111, 0xe2, +0x69, 0x76, 0x65, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x6b, 0x75, 0x6f, 0x76, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, +0x6e, 0x6a, 0x75, 0x68, 0x10d, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x63, 0x75, 0xe1, 0x14b, 0x75, 0x69, 0x6d, 0xe1, +0xe1, 0x6e, 0x75, 0x3b, 0x76, 0x79, 0x65, 0x73, 0x69, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x6b, 0x65, 0x73, 0x69, 0x6d, +0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x73, 0x79, 0x65, 0x69, 0x6e, 0x69, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x70, 0x6f, 0x72, +0x67, 0x65, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x10d, 0x6f, 0x68, 0x10d, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x72, +0x6f, 0x6f, 0x76, 0x76, 0xe2, 0x64, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x73, 0x6b, 0x61, 0x6d, 0x6d, 0xe2, 0x6d, 0xe1, +0xe1, 0x6e, 0x75, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x6c, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x62c, 0x627, 0x646, 0x6a4, +0x6cc, 0x6d5, 0x3b, 0x641, 0x626, 0x6a4, 0x631, 0x6cc, 0x6d5, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x622, 0x6a4, 0x631, 0x6cc, 0x644, +0x3b, 0x645, 0x626, 0x6cc, 0x3b, 0x62c, 0x648, 0x659, 0x623, 0x646, 0x3b, 0x62c, 0x648, 0x659, 0x644, 0x627, 0x3b, 0x622, 0x6af, 0x648, +0x633, 0x62a, 0x3b, 0x633, 0x626, 0x67e, 0x62a, 0x627, 0x645, 0x631, 0x3b, 0x626, 0x648, 0x6a9, 0x62a, 0x648, 0x6a4, 0x631, 0x3b, 0x646, +0x648, 0x6a4, 0x627, 0x645, 0x631, 0x3b, 0x62f, 0x626, 0x633, 0x627, 0x645, 0x631, 0x3b +}; + +static const ushort days_data[] = { +0x53, 0x75, 0x6e, 0x3b, 0x4d, 0x6f, 0x6e, 0x3b, 0x54, 0x75, 0x65, 0x3b, 0x57, 0x65, 0x64, 0x3b, 0x54, 0x68, 0x75, 0x3b, +0x46, 0x72, 0x69, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x53, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x3b, 0x4d, 0x6f, 0x6e, 0x64, 0x61, +0x79, 0x3b, 0x54, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x3b, 0x57, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x3b, +0x54, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x3b, 0x46, 0x72, 0x69, 0x64, 0x61, 0x79, 0x3b, 0x53, 0x61, 0x74, 0x75, +0x72, 0x64, 0x61, 0x79, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x57, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x53, 0x3b, 0x37, +0x3b, 0x31, 0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x44, 0x69, 0x6c, 0x3b, 0x57, 0x69, 0x78, +0x3b, 0x51, 0x69, 0x62, 0x3b, 0x52, 0x6f, 0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x69, 0x6d, 0x3b, 0x53, 0x61, 0x6e, +0x3b, 0x44, 0x69, 0x6c, 0x62, 0x61, 0x74, 0x61, 0x3b, 0x57, 0x69, 0x69, 0x78, 0x61, 0x74, 0x61, 0x3b, 0x51, 0x69, 0x62, +0x78, 0x61, 0x74, 0x61, 0x3b, 0x52, 0x6f, 0x6f, 0x62, 0x69, 0x69, 0x3b, 0x4b, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, +0x4a, 0x69, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x53, 0x61, 0x6e, 0x62, 0x61, 0x74, 0x61, 0x3b, 0x53, 0x6f, 0x2e, 0x3b, +0x4d, 0x61, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x57, 0x6f, 0x2e, 0x3b, 0x44, 0x6f, 0x2e, 0x3b, 0x56, 0x72, 0x2e, 0x3b, +0x53, 0x61, 0x2e, 0x3b, 0x53, 0x6f, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x4d, 0x61, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x44, +0x69, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x57, 0x6f, 0x65, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x44, 0x6f, 0x6e, 0x64, +0x65, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x56, 0x72, 0x79, 0x64, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x74, 0x65, 0x72, 0x64, 0x61, +0x67, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x44, 0x69, 0x65, 0x3b, +0x48, 0xeb, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0xeb, 0x72, 0x3b, 0x45, 0x6e, 0x6a, 0x3b, 0x50, 0x72, 0x65, 0x3b, +0x53, 0x68, 0x74, 0x3b, 0x45, 0x20, 0x64, 0x69, 0x65, 0x6c, 0x3b, 0x45, 0x20, 0x68, 0xeb, 0x6e, 0xeb, 0x3b, 0x45, 0x20, +0x6d, 0x61, 0x72, 0x74, 0xeb, 0x3b, 0x45, 0x20, 0x6d, 0xeb, 0x72, 0x6b, 0x75, 0x72, 0xeb, 0x3b, 0x45, 0x20, 0x65, 0x6e, +0x6a, 0x74, 0x65, 0x3b, 0x45, 0x20, 0x70, 0x72, 0x65, 0x6d, 0x74, 0x65, 0x3b, 0x45, 0x20, 0x73, 0x68, 0x74, 0x75, 0x6e, +0xeb, 0x3b, 0x44, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x65, 0x20, 0x64, 0x69, +0x65, 0x6c, 0x3b, 0x65, 0x20, 0x68, 0xeb, 0x6e, 0xeb, 0x3b, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x74, 0xeb, 0x3b, 0x65, 0x20, +0x6d, 0xeb, 0x72, 0x6b, 0x75, 0x72, 0xeb, 0x3b, 0x65, 0x20, 0x65, 0x6e, 0x6a, 0x74, 0x65, 0x3b, 0x65, 0x20, 0x70, 0x72, +0x65, 0x6d, 0x74, 0x65, 0x3b, 0x65, 0x20, 0x73, 0x68, 0x74, 0x75, 0x6e, 0xeb, 0x3b, 0x12a5, 0x1211, 0x12f5, 0x3b, 0x1230, 0x129e, +0x3b, 0x121b, 0x12ad, 0x1230, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1210, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1265, 0x3b, 0x1245, 0x12f3, 0x121c, +0x3b, 0x12a5, 0x1211, 0x12f5, 0x3b, 0x1230, 0x129e, 0x3b, 0x121b, 0x12ad, 0x1230, 0x129e, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1210, 0x1219, 0x1235, +0x3b, 0x12d3, 0x122d, 0x1265, 0x3b, 0x1245, 0x12f3, 0x121c, 0x3b, 0x12a5, 0x3b, 0x1230, 0x3b, 0x121b, 0x3b, 0x1228, 0x3b, 0x1210, 0x3b, 0x12d3, +0x3b, 0x1245, 0x3b, 0x627, 0x644, 0x623, 0x62d, 0x62f, 0x3b, 0x627, 0x644, 0x627, 0x62b, 0x646, 0x64a, 0x646, 0x3b, 0x627, 0x644, 0x62b, +0x644, 0x627, 0x62b, 0x627, 0x621, 0x3b, 0x627, 0x644, 0x623, 0x631, 0x628, 0x639, 0x627, 0x621, 0x3b, 0x627, 0x644, 0x62e, 0x645, 0x64a, +0x633, 0x3b, 0x627, 0x644, 0x62c, 0x645, 0x639, 0x629, 0x3b, 0x627, 0x644, 0x633, 0x628, 0x62a, 0x3b, 0x62d, 0x3b, 0x646, 0x3b, 0x62b, +0x3b, 0x631, 0x3b, 0x62e, 0x3b, 0x62c, 0x3b, 0x633, 0x3b, 0x56f, 0x56b, 0x580, 0x3b, 0x565, 0x580, 0x56f, 0x3b, 0x565, 0x580, 0x584, +0x3b, 0x579, 0x580, 0x584, 0x3b, 0x570, 0x576, 0x563, 0x3b, 0x578, 0x582, 0x580, 0x3b, 0x577, 0x562, 0x569, 0x3b, 0x56f, 0x56b, 0x580, +0x561, 0x56f, 0x56b, 0x3b, 0x565, 0x580, 0x56f, 0x578, 0x582, 0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x565, 0x580, 0x565, 0x584, 0x577, +0x561, 0x562, 0x569, 0x56b, 0x3b, 0x579, 0x578, 0x580, 0x565, 0x584, 0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x570, 0x56b, 0x576, 0x563, +0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x578, 0x582, 0x580, 0x562, 0x561, 0x569, 0x3b, 0x577, 0x561, 0x562, 0x561, 0x569, 0x3b, 0x53f, +0x580, 0x3b, 0x535, 0x56f, 0x3b, 0x535, 0x580, 0x3b, 0x549, 0x580, 0x3b, 0x540, 0x563, 0x3b, 0x548, 0x582, 0x3b, 0x547, 0x562, 0x3b, +0x53f, 0x3b, 0x535, 0x3b, 0x535, 0x3b, 0x549, 0x3b, 0x540, 0x3b, 0x548, 0x582, 0x3b, 0x547, 0x3b, 0x9f0, 0x9ac, 0x9bf, 0x3b, 0x9b8, +0x9cb, 0x9ae, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b7, 0x9cd, 0x9aa, 0x9a4, +0x9bf, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9f0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x3b, 0x9a6, 0x9c7, 0x993, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9b8, +0x9cb, 0x9ae, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x9ac, 0x9be, +0x9f0, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b7, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9f0, 0x9ac, +0x9be, 0x9f0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x42, 0x2e, 0x3b, 0x42, 0x2e, 0x45, 0x2e, 0x3b, 0xc7, 0x2e, +0x41, 0x2e, 0x3b, 0xc7, 0x2e, 0x3b, 0x43, 0x2e, 0x41, 0x2e, 0x3b, 0x43, 0x2e, 0x3b, 0x15e, 0x2e, 0x3b, 0x62, 0x61, 0x7a, +0x61, 0x72, 0x3b, 0x62, 0x61, 0x7a, 0x61, 0x72, 0x20, 0x65, 0x72, 0x74, 0x259, 0x73, 0x69, 0x3b, 0xe7, 0x259, 0x72, 0x15f, +0x259, 0x6e, 0x62, 0x259, 0x20, 0x61, 0x78, 0x15f, 0x61, 0x6d, 0x131, 0x3b, 0xe7, 0x259, 0x72, 0x15f, 0x259, 0x6e, 0x62, 0x259, +0x3b, 0x63, 0xfc, 0x6d, 0x259, 0x20, 0x61, 0x78, 0x15f, 0x61, 0x6d, 0x131, 0x3b, 0x63, 0xfc, 0x6d, 0x259, 0x3b, 0x15f, 0x259, +0x6e, 0x62, 0x259, 0x3b, 0x431, 0x430, 0x437, 0x430, 0x440, 0x3b, 0x431, 0x430, 0x437, 0x430, 0x440, 0x20, 0x435, 0x440, 0x442, 0x4d9, +0x441, 0x438, 0x3b, 0x447, 0x4d9, 0x440, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x20, 0x430, 0x445, 0x448, 0x430, 0x43c, 0x44b, 0x3b, 0x447, +0x4d9, 0x440, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x3b, 0x4b9, 0x4af, 0x43c, 0x4d9, 0x20, 0x430, 0x445, 0x448, 0x430, 0x43c, 0x44b, 0x3b, +0x4b9, 0x4af, 0x43c, 0x4d9, 0x3b, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x3b, 0x49, 0x67, 0x2e, 0x3b, 0x41, 0x6c, 0x2e, 0x3b, 0x41, +0x72, 0x2e, 0x3b, 0x41, 0x7a, 0x2e, 0x3b, 0x4f, 0x67, 0x2e, 0x3b, 0x4f, 0x72, 0x2e, 0x3b, 0x4c, 0x72, 0x2e, 0x3b, 0x49, +0x67, 0x61, 0x6e, 0x64, 0x65, 0x61, 0x3b, 0x41, 0x73, 0x74, 0x65, 0x6c, 0x65, 0x68, 0x65, 0x6e, 0x61, 0x3b, 0x41, 0x73, +0x74, 0x65, 0x61, 0x72, 0x74, 0x65, 0x61, 0x3b, 0x41, 0x73, 0x74, 0x65, 0x61, 0x7a, 0x6b, 0x65, 0x6e, 0x61, 0x3b, 0x4f, +0x73, 0x74, 0x65, 0x67, 0x75, 0x6e, 0x61, 0x3b, 0x4f, 0x73, 0x74, 0x69, 0x72, 0x61, 0x6c, 0x61, 0x3b, 0x4c, 0x61, 0x72, +0x75, 0x6e, 0x62, 0x61, 0x74, 0x61, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x4f, 0x3b, 0x4f, 0x3b, 0x4c, +0x3b, 0x69, 0x67, 0x2e, 0x3b, 0x61, 0x6c, 0x2e, 0x3b, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x7a, 0x2e, 0x3b, 0x6f, 0x67, 0x2e, +0x3b, 0x6f, 0x72, 0x2e, 0x3b, 0x6c, 0x72, 0x2e, 0x3b, 0x69, 0x67, 0x61, 0x6e, 0x64, 0x65, 0x61, 0x3b, 0x61, 0x73, 0x74, +0x65, 0x6c, 0x65, 0x68, 0x65, 0x6e, 0x61, 0x3b, 0x61, 0x73, 0x74, 0x65, 0x61, 0x72, 0x74, 0x65, 0x61, 0x3b, 0x61, 0x73, +0x74, 0x65, 0x61, 0x7a, 0x6b, 0x65, 0x6e, 0x61, 0x3b, 0x6f, 0x73, 0x74, 0x65, 0x67, 0x75, 0x6e, 0x61, 0x3b, 0x6f, 0x73, +0x74, 0x69, 0x72, 0x61, 0x6c, 0x61, 0x3b, 0x6c, 0x61, 0x72, 0x75, 0x6e, 0x62, 0x61, 0x74, 0x61, 0x3b, 0x9b0, 0x9ac, 0x9bf, +0x3b, 0x9b8, 0x9cb, 0x9ae, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b8, 0x9cd, +0x9aa, 0x9a4, 0x9bf, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9b0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x3b, 0x9b0, 0x9ac, 0x9bf, 0x9ac, 0x9be, 0x9b0, +0x3b, 0x9b8, 0x9cb, 0x9ae, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ac, 0x9c1, 0x9a7, +0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b7, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, +0x9b0, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b0, 0x3b, 0x9b8, 0x9cb, 0x3b, 0x9ae, 0x3b, 0x9ac, +0x9c1, 0x3b, 0x9ac, 0x9c3, 0x3b, 0x9b6, 0x9c1, 0x3b, 0x9b6, 0x3b, 0x9b0, 0x9ac, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b8, 0x9cb, 0x9ae, +0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x9ac, 0x9be, 0x9b0, 0x3b, +0x9ac, 0x9c3, 0x9b9, 0x9b8, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9b0, 0x9ac, 0x9be, 0x9b0, +0x3b, 0x9b6, 0x9a8, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf62, 0xf0b, 0x3b, 0xf63, 0xfb7, 0xf42, +0xf0b, 0x3b, 0xf55, 0xf74, 0xf62, 0xf0b, 0x3b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0x3b, 0xf49, 0xf72, +0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf58, 0xf72, 0xf42, 0xf0b, +0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, +0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf42, +0xf5f, 0xf60, 0xf0b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, +0x3b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0xf62, 0x3b, 0xf63, 0xfb7, 0xf42, 0x3b, 0xf55, 0xf74, 0xf62, 0x3b, 0xf66, 0xf44, 0xfb6, 0x3b, +0xf66, 0xfa4, 0xf7a, 0xf53, 0x3b, 0xf49, 0xf72, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x65, 0x75, 0x2e, +0x3b, 0x4d, 0x65, 0x72, 0x2e, 0x3b, 0x59, 0x61, 0x6f, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x2e, 0x3b, 0x53, 0x61, 0x64, 0x2e, +0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x65, 0x75, 0x72, 0x7a, 0x68, 0x3b, 0x4d, 0x65, 0x72, 0x63, +0x2bc, 0x68, 0x65, 0x72, 0x3b, 0x59, 0x61, 0x6f, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x53, 0x61, 0x64, +0x6f, 0x72, 0x6e, 0x3b, 0x53, 0x75, 0x3b, 0x4c, 0x3b, 0x4d, 0x7a, 0x3b, 0x4d, 0x63, 0x3b, 0x59, 0x3b, 0x47, 0x3b, 0x53, +0x61, 0x3b, 0x43d, 0x434, 0x3b, 0x43f, 0x43d, 0x3b, 0x432, 0x442, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x442, 0x3b, 0x43f, 0x442, 0x3b, +0x441, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x44f, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x43d, 0x438, 0x43a, +0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440, 0x44f, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x44a, +0x440, 0x442, 0x44a, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x44a, 0x43a, 0x3b, 0x441, 0x44a, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x3b, +0x43f, 0x3b, 0x432, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441, 0x3b, 0x1010, 0x1014, 0x1004, 0x103a, 0x1039, 0x1002, 0x1014, 0x103d, +0x1031, 0x3b, 0x1010, 0x1014, 0x1004, 0x103a, 0x1039, 0x101c, 0x102c, 0x3b, 0x1021, 0x1004, 0x103a, 0x1039, 0x1002, 0x102b, 0x3b, 0x1017, 0x102f, 0x1012, +0x1039, 0x1013, 0x101f, 0x1030, 0x1038, 0x3b, 0x1000, 0x103c, 0x102c, 0x101e, 0x1015, 0x1010, 0x1031, 0x1038, 0x3b, 0x101e, 0x1031, 0x102c, 0x1000, 0x103c, +0x102c, 0x3b, 0x1005, 0x1014, 0x1031, 0x3b, 0x1010, 0x3b, 0x1010, 0x3b, 0x1021, 0x3b, 0x1017, 0x3b, 0x1000, 0x3b, 0x101e, 0x3b, 0x1005, 0x3b, +0x43d, 0x434, 0x3b, 0x43f, 0x43d, 0x3b, 0x430, 0x45e, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x446, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, +0x3b, 0x43d, 0x44f, 0x434, 0x437, 0x435, 0x43b, 0x44f, 0x3b, 0x43f, 0x430, 0x43d, 0x44f, 0x434, 0x437, 0x435, 0x43b, 0x430, 0x43a, 0x3b, +0x430, 0x45e, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x435, 0x440, 0x430, 0x434, 0x430, 0x3b, 0x447, 0x430, 0x446, 0x432, 0x435, +0x440, 0x3b, 0x43f, 0x44f, 0x442, 0x43d, 0x456, 0x446, 0x430, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x3b, 0x43f, +0x3b, 0x430, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441, 0x3b, 0x17a2, 0x17b6, 0x1791, 0x17b7, 0x178f, 0x17d2, 0x1799, 0x3b, 0x1785, +0x17d0, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782, 0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792, 0x3b, 0x1796, 0x17d2, 0x179a, 0x17a0, +0x179f, 0x17d2, 0x1794, 0x178f, 0x17b7, 0x17cd, 0x3b, 0x179f, 0x17bb, 0x1780, 0x17d2, 0x179a, 0x3b, 0x179f, 0x17c5, 0x179a, 0x17cd, 0x3b, 0x17a2, 0x17b6, +0x3b, 0x1785, 0x3b, 0x17a2, 0x3b, 0x1796, 0x17bb, 0x3b, 0x1796, 0x17d2, 0x179a, 0x3b, 0x179f, 0x17bb, 0x3b, 0x179f, 0x3b, 0x64, 0x67, 0x2e, +0x3b, 0x64, 0x6c, 0x2e, 0x3b, 0x64, 0x74, 0x2e, 0x3b, 0x64, 0x63, 0x2e, 0x3b, 0x64, 0x6a, 0x2e, 0x3b, 0x64, 0x76, 0x2e, +0x3b, 0x64, 0x73, 0x2e, 0x3b, 0x64, 0x69, 0x75, 0x6d, 0x65, 0x6e, 0x67, 0x65, 0x3b, 0x64, 0x69, 0x6c, 0x6c, 0x75, 0x6e, +0x73, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x64, 0x69, 0x6d, 0x65, 0x63, 0x72, 0x65, 0x73, 0x3b, 0x64, +0x69, 0x6a, 0x6f, 0x75, 0x73, 0x3b, 0x64, 0x69, 0x76, 0x65, 0x6e, 0x64, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x73, 0x73, +0x61, 0x62, 0x74, 0x65, 0x3b, 0x64, 0x67, 0x3b, 0x64, 0x6c, 0x3b, 0x64, 0x74, 0x3b, 0x64, 0x63, 0x3b, 0x64, 0x6a, 0x3b, +0x64, 0x76, 0x3b, 0x64, 0x73, 0x3b, 0x5468, 0x65e5, 0x3b, 0x5468, 0x4e00, 0x3b, 0x5468, 0x4e8c, 0x3b, 0x5468, 0x4e09, 0x3b, 0x5468, 0x56db, +0x3b, 0x5468, 0x4e94, 0x3b, 0x5468, 0x516d, 0x3b, 0x661f, 0x671f, 0x65e5, 0x3b, 0x661f, 0x671f, 0x4e00, 0x3b, 0x661f, 0x671f, 0x4e8c, 0x3b, 0x661f, +0x671f, 0x4e09, 0x3b, 0x661f, 0x671f, 0x56db, 0x3b, 0x661f, 0x671f, 0x4e94, 0x3b, 0x661f, 0x671f, 0x516d, 0x3b, 0x65e5, 0x3b, 0x4e00, 0x3b, 0x4e8c, +0x3b, 0x4e09, 0x3b, 0x56db, 0x3b, 0x4e94, 0x3b, 0x516d, 0x3b, 0x9031, 0x65e5, 0x3b, 0x9031, 0x4e00, 0x3b, 0x9031, 0x4e8c, 0x3b, 0x9031, 0x4e09, +0x3b, 0x9031, 0x56db, 0x3b, 0x9031, 0x4e94, 0x3b, 0x9031, 0x516d, 0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, +0x6f, 0x3b, 0x73, 0x72, 0x69, 0x3b, 0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, +0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, +0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x69, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, +0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, +0x75, 0x3b, 0x73, 0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x4e, 0x3b, 0x50, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x10c, 0x3b, +0x50, 0x3b, 0x53, 0x3b, 0x6e, 0x65, 0x3b, 0x70, 0x6f, 0x3b, 0xfa, 0x74, 0x3b, 0x73, 0x74, 0x3b, 0x10d, 0x74, 0x3b, 0x70, +0xe1, 0x3b, 0x73, 0x6f, 0x3b, 0x6e, 0x65, 0x64, 0x11b, 0x6c, 0x65, 0x3b, 0x70, 0x6f, 0x6e, 0x64, 0x11b, 0x6c, 0xed, 0x3b, +0xfa, 0x74, 0x65, 0x72, 0xfd, 0x3b, 0x73, 0x74, 0x159, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x74, 0x76, 0x72, 0x74, 0x65, 0x6b, +0x3b, 0x70, 0xe1, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x4e, 0x3b, 0x50, 0x3b, 0xda, 0x3b, +0x53, 0x3b, 0x10c, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x73, 0xf8, 0x6e, 0x3b, 0x6d, 0x61, 0x6e, 0x3b, 0x74, 0x69, 0x72, 0x3b, +0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0xf8, 0x72, 0x3b, 0x73, 0xf8, 0x6e, 0x64, +0x61, 0x67, 0x3b, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x69, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, +0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, +0x6c, 0xf8, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4f, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x4c, +0x3b, 0x73, 0xf8, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x6e, 0x2e, 0x3b, 0x74, 0x69, 0x72, 0x2e, 0x3b, 0x6f, 0x6e, 0x73, 0x2e, +0x3b, 0x74, 0x6f, 0x72, 0x2e, 0x3b, 0x66, 0x72, 0x65, 0x2e, 0x3b, 0x6c, 0xf8, 0x72, 0x2e, 0x3b, 0x7a, 0x6f, 0x3b, 0x6d, +0x61, 0x3b, 0x64, 0x69, 0x3b, 0x77, 0x6f, 0x3b, 0x64, 0x6f, 0x3b, 0x76, 0x72, 0x3b, 0x7a, 0x61, 0x3b, 0x7a, 0x6f, 0x6e, +0x64, 0x61, 0x67, 0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x64, 0x69, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, +0x77, 0x6f, 0x65, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x64, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x76, +0x72, 0x69, 0x6a, 0x64, 0x61, 0x67, 0x3b, 0x7a, 0x61, 0x74, 0x65, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x5a, 0x3b, 0x4d, 0x3b, +0x44, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x56, 0x3b, 0x5a, 0x3b, 0x53, 0x75, 0x6e, 0x2e, 0x3b, 0x4d, 0x6f, 0x6e, 0x2e, 0x3b, +0x54, 0x75, 0x65, 0x2e, 0x3b, 0x57, 0x65, 0x64, 0x2e, 0x3b, 0x54, 0x68, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x69, 0x2e, 0x3b, +0x53, 0x61, 0x74, 0x2e, 0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0x2e, 0x3b, 0x54, 0x75, 0x2e, 0x3b, 0x57, 0x2e, 0x3b, 0x54, +0x68, 0x2e, 0x3b, 0x46, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x50, 0x3b, 0x45, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, +0x52, 0x3b, 0x4c, 0x3b, 0x70, 0xfc, 0x68, 0x61, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x65, 0x73, 0x6d, 0x61, 0x73, 0x70, 0xe4, +0x65, 0x76, 0x3b, 0x74, 0x65, 0x69, 0x73, 0x69, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x6b, 0x6f, 0x6c, 0x6d, 0x61, 0x70, 0xe4, +0x65, 0x76, 0x3b, 0x6e, 0x65, 0x6c, 0x6a, 0x61, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x72, 0x65, 0x65, 0x64, 0x65, 0x3b, 0x6c, +0x61, 0x75, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x73, 0x75, 0x6e, 0x3b, 0x6d, 0xe1, 0x6e, 0x3b, 0x74, 0xfd, 0x73, 0x3b, 0x6d, +0x69, 0x6b, 0x3b, 0x68, 0xf3, 0x73, 0x3b, 0x66, 0x72, 0xed, 0x3b, 0x6c, 0x65, 0x79, 0x3b, 0x73, 0x75, 0x6e, 0x6e, 0x75, +0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d, 0xe1, 0x6e, 0x61, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x74, 0xfd, 0x73, 0x64, +0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d, 0x69, 0x6b, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x68, 0xf3, 0x73, 0x64, 0x61, +0x67, 0x75, 0x72, 0x3b, 0x66, 0x72, 0xed, 0x67, 0x67, 0x6a, 0x61, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6c, 0x65, 0x79, +0x67, 0x61, 0x72, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x46, +0x3b, 0x4c, 0x3b, 0x73, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0xe1, 0x6e, 0x2e, 0x3b, 0x74, 0xfd, 0x73, 0x2e, 0x3b, 0x6d, 0x69, +0x6b, 0x2e, 0x3b, 0x68, 0xf3, 0x73, 0x2e, 0x3b, 0x66, 0x72, 0xed, 0x2e, 0x3b, 0x6c, 0x65, 0x79, 0x2e, 0x3b, 0x73, 0x75, +0x3b, 0x6d, 0x61, 0x3b, 0x74, 0x69, 0x3b, 0x6b, 0x65, 0x3b, 0x74, 0x6f, 0x3b, 0x70, 0x65, 0x3b, 0x6c, 0x61, 0x3b, 0x73, +0x75, 0x6e, 0x6e, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x74, +0x69, 0x69, 0x73, 0x74, 0x61, 0x69, 0x3b, 0x6b, 0x65, 0x73, 0x6b, 0x69, 0x76, 0x69, 0x69, 0x6b, 0x6b, 0x6f, 0x3b, 0x74, +0x6f, 0x72, 0x73, 0x74, 0x61, 0x69, 0x3b, 0x70, 0x65, 0x72, 0x6a, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x6c, 0x61, 0x75, +0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x4c, 0x3b, +0x73, 0x75, 0x6e, 0x6e, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x61, 0x6e, 0x74, 0x61, +0x69, 0x6e, 0x61, 0x3b, 0x74, 0x69, 0x69, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x6b, 0x65, 0x73, 0x6b, 0x69, 0x76, +0x69, 0x69, 0x6b, 0x6b, 0x6f, 0x6e, 0x61, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x70, 0x65, +0x72, 0x6a, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x6c, 0x61, 0x75, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, +0x3b, 0x64, 0x69, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x65, 0x72, 0x2e, +0x3b, 0x6a, 0x65, 0x75, 0x2e, 0x3b, 0x76, 0x65, 0x6e, 0x2e, 0x3b, 0x73, 0x61, 0x6d, 0x2e, 0x3b, 0x64, 0x69, 0x6d, 0x61, +0x6e, 0x63, 0x68, 0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, +0x63, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x6a, 0x65, 0x75, 0x64, 0x69, 0x3b, 0x76, 0x65, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x69, +0x3b, 0x73, 0x61, 0x6d, 0x65, 0x64, 0x69, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, +0x53, 0x3b, 0x73, 0x69, 0x3b, 0x6d, 0x6f, 0x3b, 0x74, 0x69, 0x3b, 0x77, 0x6f, 0x3b, 0x74, 0x6f, 0x3b, 0x66, 0x72, 0x3b, +0x73, 0x6f, 0x3b, 0x73, 0x6e, 0x65, 0x69, 0x6e, 0x3b, 0x6d, 0x6f, 0x61, 0x6e, 0x64, 0x65, 0x69, 0x3b, 0x74, 0x69, 0x69, +0x73, 0x64, 0x65, 0x69, 0x3b, 0x77, 0x6f, 0x61, 0x6e, 0x73, 0x64, 0x65, 0x69, 0x3b, 0x74, 0x6f, 0x6e, 0x67, 0x65, 0x72, +0x73, 0x64, 0x65, 0x69, 0x3b, 0x66, 0x72, 0x65, 0x65, 0x64, 0x3b, 0x73, 0x6e, 0x65, 0x6f, 0x6e, 0x3b, 0x44, 0x69, 0x44, +0x3b, 0x44, 0x69, 0x4c, 0x3b, 0x44, 0x69, 0x4d, 0x3b, 0x44, 0x69, 0x43, 0x3b, 0x44, 0x69, 0x61, 0x3b, 0x44, 0x69, 0x68, +0x3b, 0x44, 0x69, 0x53, 0x3b, 0x44, 0x69, 0x44, 0xf2, 0x6d, 0x68, 0x6e, 0x61, 0x69, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x4c, +0x75, 0x61, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x4d, 0xe0, 0x69, 0x72, 0x74, 0x3b, 0x44, 0x69, 0x43, 0x69, 0x61, 0x64, 0x61, +0x69, 0x6e, 0x3b, 0x44, 0x69, 0x61, 0x72, 0x44, 0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x68, 0x41, 0x6f, 0x69, 0x6e, +0x65, 0x3b, 0x44, 0x69, 0x53, 0x61, 0x74, 0x68, 0x61, 0x69, 0x72, 0x6e, 0x65, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, +0x43, 0x3b, 0x41, 0x3b, 0x48, 0x3b, 0x53, 0x3b, 0x44, 0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, +0x4d, 0xe9, 0x72, 0x3b, 0x58, 0x6f, 0x76, 0x3b, 0x56, 0x65, 0x6e, 0x3b, 0x53, 0xe1, 0x62, 0x3b, 0x44, 0x6f, 0x6d, 0x69, +0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0xe9, 0x72, 0x63, +0x6f, 0x72, 0x65, 0x73, 0x3b, 0x58, 0x6f, 0x76, 0x65, 0x73, 0x3b, 0x56, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, 0x53, 0xe1, +0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x58, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x64, +0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0xe9, 0x72, 0x3b, 0x78, 0x6f, 0x76, 0x3b, +0x76, 0x65, 0x6e, 0x3b, 0x73, 0xe1, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x73, +0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d, 0xe9, 0x72, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x3b, 0x78, 0x6f, 0x76, +0x65, 0x73, 0x3b, 0x76, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x10d9, 0x10d5, 0x10d8, +0x3b, 0x10dd, 0x10e0, 0x10e8, 0x3b, 0x10e1, 0x10d0, 0x10db, 0x3b, 0x10dd, 0x10d7, 0x10ee, 0x3b, 0x10ee, 0x10e3, 0x10d7, 0x3b, 0x10de, 0x10d0, 0x10e0, +0x3b, 0x10e8, 0x10d0, 0x10d1, 0x3b, 0x10d9, 0x10d5, 0x10d8, 0x10e0, 0x10d0, 0x3b, 0x10dd, 0x10e0, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, +0x10e1, 0x10d0, 0x10db, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10dd, 0x10d7, 0x10ee, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, +0x10ee, 0x10e3, 0x10d7, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10de, 0x10d0, 0x10e0, 0x10d0, 0x10e1, 0x10d9, 0x10d4, 0x10d5, 0x10d8, 0x3b, +0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10d9, 0x3b, 0x10dd, 0x3b, 0x10e1, 0x3b, 0x10dd, 0x3b, 0x10ee, 0x3b, 0x10de, 0x3b, 0x10e8, +0x3b, 0x53, 0x6f, 0x3b, 0x4d, 0x6f, 0x3b, 0x44, 0x69, 0x3b, 0x4d, 0x69, 0x3b, 0x44, 0x6f, 0x3b, 0x46, 0x72, 0x3b, 0x53, +0x61, 0x3b, 0x53, 0x6f, 0x6e, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x6f, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x44, 0x69, 0x65, +0x6e, 0x73, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65, +0x72, 0x73, 0x74, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x69, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x74, 0x61, +0x67, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x53, 0x3b, 0x53, 0x6f, 0x2e, 0x3b, +0x4d, 0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x6f, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, +0x53, 0x61, 0x2e, 0x3b, 0x39a, 0x3c5, 0x3c1, 0x3b, 0x394, 0x3b5, 0x3c5, 0x3b, 0x3a4, 0x3c1, 0x3af, 0x3b, 0x3a4, 0x3b5, 0x3c4, 0x3b, +0x3a0, 0x3ad, 0x3bc, 0x3b, 0x3a0, 0x3b1, 0x3c1, 0x3b, 0x3a3, 0x3ac, 0x3b2, 0x3b, 0x39a, 0x3c5, 0x3c1, 0x3b9, 0x3b1, 0x3ba, 0x3ae, 0x3b, +0x394, 0x3b5, 0x3c5, 0x3c4, 0x3ad, 0x3c1, 0x3b1, 0x3b, 0x3a4, 0x3c1, 0x3af, 0x3c4, 0x3b7, 0x3b, 0x3a4, 0x3b5, 0x3c4, 0x3ac, 0x3c1, 0x3c4, +0x3b7, 0x3b, 0x3a0, 0x3ad, 0x3bc, 0x3c0, 0x3c4, 0x3b7, 0x3b, 0x3a0, 0x3b1, 0x3c1, 0x3b1, 0x3c3, 0x3ba, 0x3b5, 0x3c5, 0x3ae, 0x3b, 0x3a3, +0x3ac, 0x3b2, 0x3b2, 0x3b1, 0x3c4, 0x3bf, 0x3b, 0x39a, 0x3b, 0x394, 0x3b, 0x3a4, 0x3b, 0x3a4, 0x3b, 0x3a0, 0x3b, 0x3a0, 0x3b, 0x3a3, +0x3b, 0x73, 0x61, 0x62, 0x3b, 0x61, 0x74, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x70, 0x69, 0x6e, 0x3b, 0x73, 0x69, 0x73, +0x3b, 0x74, 0x61, 0x6c, 0x3b, 0x61, 0x72, 0x66, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x61, 0x74, 0x3b, 0x61, 0x74, 0x61, 0x61, +0x73, 0x69, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x6d, 0x61, 0x72, 0x6c, 0x75, 0x6e, 0x6e, 0x67, 0x6f, +0x72, 0x6e, 0x65, 0x71, 0x3b, 0x70, 0x69, 0x6e, 0x67, 0x61, 0x73, 0x75, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, +0x3b, 0x73, 0x69, 0x73, 0x61, 0x6d, 0x61, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x74, 0x61, 0x6c, 0x6c, +0x69, 0x6d, 0x61, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x61, 0x72, 0x66, 0x69, 0x6e, 0x69, 0x6e, 0x6e, +0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x41, +0x3b, 0xab0, 0xab5, 0xabf, 0x3b, 0xab8, 0xacb, 0xaae, 0x3b, 0xaae, 0xa82, 0xa97, 0xab3, 0x3b, 0xaac, 0xac1, 0xaa7, 0x3b, 0xa97, 0xac1, +0xab0, 0xac1, 0x3b, 0xab6, 0xac1, 0xa95, 0xacd, 0xab0, 0x3b, 0xab6, 0xaa8, 0xabf, 0x3b, 0xab0, 0xab5, 0xabf, 0xab5, 0xabe, 0xab0, 0x3b, +0xab8, 0xacb, 0xaae, 0xab5, 0xabe, 0xab0, 0x3b, 0xaae, 0xa82, 0xa97, 0xab3, 0xab5, 0xabe, 0xab0, 0x3b, 0xaac, 0xac1, 0xaa7, 0xab5, 0xabe, +0xab0, 0x3b, 0xa97, 0xac1, 0xab0, 0xac1, 0xab5, 0xabe, 0xab0, 0x3b, 0xab6, 0xac1, 0xa95, 0xacd, 0xab0, 0xab5, 0xabe, 0xab0, 0x3b, 0xab6, +0xaa8, 0xabf, 0xab5, 0xabe, 0xab0, 0x3b, 0xab0, 0x3b, 0xab8, 0xacb, 0x3b, 0xaae, 0xa82, 0x3b, 0xaac, 0xac1, 0x3b, 0xa97, 0xac1, 0x3b, +0xab6, 0xac1, 0x3b, 0xab6, 0x3b, 0x4c, 0x68, 0x3b, 0x4c, 0x69, 0x3b, 0x54, 0x61, 0x3b, 0x4c, 0x72, 0x3b, 0x41, 0x6c, 0x3b, +0x4a, 0x75, 0x3b, 0x41, 0x73, 0x3b, 0x4c, 0x61, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x4c, 0x69, 0x74, 0x69, 0x6e, 0x69, 0x6e, +0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x4c, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, +0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x6d, 0x61, 0x2bc, 0x61, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x61, 0x72, 0x3b, 0x4c, 0x3b, +0x4c, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d0, 0x5f3, 0x3b, 0x5d9, +0x5d5, 0x5dd, 0x20, 0x5d1, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d2, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d3, 0x5f3, 0x3b, +0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d4, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d5, 0x5f3, 0x3b, 0x5e9, 0x5d1, 0x5ea, 0x3b, 0x5d9, 0x5d5, +0x5dd, 0x20, 0x5e8, 0x5d0, 0x5e9, 0x5d5, 0x5df, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, +0x5e9, 0x5dc, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, +0x5d7, 0x5de, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, +0x5d1, 0x5ea, 0x3b, 0x5d0, 0x5f3, 0x3b, 0x5d1, 0x5f3, 0x3b, 0x5d2, 0x5f3, 0x3b, 0x5d3, 0x5f3, 0x3b, 0x5d4, 0x5f3, 0x3b, 0x5d5, 0x5f3, +0x3b, 0x5e9, 0x5f3, 0x3b, 0x930, 0x935, 0x93f, 0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x927, +0x3b, 0x917, 0x941, 0x930, 0x941, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x3b, 0x930, 0x935, 0x93f, 0x935, +0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x935, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x941, +0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e, +0x930, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x930, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, +0x917, 0x941, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x3b, 0x56, 0x3b, 0x48, 0x3b, 0x4b, 0x3b, 0x53, 0x7a, 0x65, 0x3b, 0x43, 0x73, +0x3b, 0x50, 0x3b, 0x53, 0x7a, 0x6f, 0x3b, 0x76, 0x61, 0x73, 0xe1, 0x72, 0x6e, 0x61, 0x70, 0x3b, 0x68, 0xe9, 0x74, 0x66, +0x151, 0x3b, 0x6b, 0x65, 0x64, 0x64, 0x3b, 0x73, 0x7a, 0x65, 0x72, 0x64, 0x61, 0x3b, 0x63, 0x73, 0xfc, 0x74, 0xf6, 0x72, +0x74, 0xf6, 0x6b, 0x3b, 0x70, 0xe9, 0x6e, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x7a, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x3b, 0x56, +0x3b, 0x48, 0x3b, 0x4b, 0x3b, 0x53, 0x7a, 0x3b, 0x43, 0x73, 0x3b, 0x50, 0x3b, 0x53, 0x7a, 0x3b, 0x73, 0x75, 0x6e, 0x2e, +0x3b, 0x6d, 0xe1, 0x6e, 0x2e, 0x3b, 0xfe, 0x72, 0x69, 0x2e, 0x3b, 0x6d, 0x69, 0xf0, 0x2e, 0x3b, 0x66, 0x69, 0x6d, 0x2e, +0x3b, 0x66, 0xf6, 0x73, 0x2e, 0x3b, 0x6c, 0x61, 0x75, 0x2e, 0x3b, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x64, 0x61, 0x67, 0x75, +0x72, 0x3b, 0x6d, 0xe1, 0x6e, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0xfe, 0x72, 0x69, 0xf0, 0x6a, 0x75, 0x64, 0x61, +0x67, 0x75, 0x72, 0x3b, 0x6d, 0x69, 0xf0, 0x76, 0x69, 0x6b, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x66, 0x69, 0x6d, +0x6d, 0x74, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x66, 0xf6, 0x73, 0x74, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, +0x6c, 0x61, 0x75, 0x67, 0x61, 0x72, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0xde, 0x3b, 0x4d, 0x3b, +0x46, 0x3b, 0x46, 0x3b, 0x4c, 0x3b, 0x4d, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x3b, 0x52, 0x61, +0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4d, 0x69, 0x6e, 0x67, 0x67, 0x75, +0x3b, 0x53, 0x65, 0x6e, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75, 0x3b, 0x4b, +0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x3b, 0x4d, 0x3b, 0x53, +0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x44, 0x6f, 0x6d, 0x68, 0x3b, 0x4c, 0x75, 0x61, 0x6e, +0x3b, 0x4d, 0xe1, 0x69, 0x72, 0x74, 0x3b, 0x43, 0xe9, 0x61, 0x64, 0x3b, 0x44, 0xe9, 0x61, 0x72, 0x3b, 0x41, 0x6f, 0x69, +0x6e, 0x65, 0x3b, 0x53, 0x61, 0x74, 0x68, 0x3b, 0x44, 0xe9, 0x20, 0x44, 0x6f, 0x6d, 0x68, 0x6e, 0x61, 0x69, 0x67, 0x68, +0x3b, 0x44, 0xe9, 0x20, 0x4c, 0x75, 0x61, 0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x20, 0x4d, 0xe1, 0x69, 0x72, 0x74, 0x3b, 0x44, +0xe9, 0x20, 0x43, 0xe9, 0x61, 0x64, 0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x61, 0x72, 0x64, 0x61, 0x6f, 0x69, 0x6e, +0x3b, 0x44, 0xe9, 0x20, 0x68, 0x41, 0x6f, 0x69, 0x6e, 0x65, 0x3b, 0x44, 0xe9, 0x20, 0x53, 0x61, 0x74, 0x68, 0x61, 0x69, +0x72, 0x6e, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x44, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, +0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x67, 0x69, 0x6f, 0x3b, 0x76, 0x65, 0x6e, +0x3b, 0x73, 0x61, 0x62, 0x3b, 0x44, 0x6f, 0x6d, 0x65, 0x6e, 0x69, 0x63, 0x61, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x64, 0xec, +0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x64, 0xec, 0x3b, 0x4d, 0x65, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x64, 0xec, 0x3b, 0x47, +0x69, 0x6f, 0x76, 0x65, 0x64, 0xec, 0x3b, 0x56, 0x65, 0x6e, 0x65, 0x72, 0x64, 0xec, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x74, +0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x65, +0x6e, 0x69, 0x63, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x64, 0xec, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x64, 0xec, 0x3b, +0x6d, 0x65, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x64, 0xec, 0x3b, 0x67, 0x69, 0x6f, 0x76, 0x65, 0x64, 0xec, 0x3b, 0x76, 0x65, +0x6e, 0x65, 0x72, 0x64, 0xec, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x65e5, 0x3b, 0x6708, 0x3b, 0x706b, 0x3b, 0x6c34, +0x3b, 0x6728, 0x3b, 0x91d1, 0x3b, 0x571f, 0x3b, 0x65e5, 0x66dc, 0x65e5, 0x3b, 0x6708, 0x66dc, 0x65e5, 0x3b, 0x706b, 0x66dc, 0x65e5, 0x3b, 0x6c34, +0x66dc, 0x65e5, 0x3b, 0x6728, 0x66dc, 0x65e5, 0x3b, 0x91d1, 0x66dc, 0x65e5, 0x3b, 0x571f, 0x66dc, 0x65e5, 0x3b, 0xcad, 0xcbe, 0xca8, 0xcc1, 0x3b, +0xcb8, 0xccb, 0xcae, 0x3b, 0xcae, 0xc82, 0xc97, 0xcb3, 0x3b, 0xcac, 0xcc1, 0xca7, 0x3b, 0xc97, 0xcc1, 0xcb0, 0xcc1, 0x3b, 0xcb6, 0xcc1, +0xc95, 0xccd, 0xcb0, 0x3b, 0xcb6, 0xca8, 0xcbf, 0x3b, 0xcad, 0xcbe, 0xca8, 0xcc1, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb8, 0xccb, 0xcae, 0xcb5, +0xcbe, 0xcb0, 0x3b, 0xcae, 0xc82, 0xc97, 0xcb3, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcac, 0xcc1, 0xca7, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xc97, 0xcc1, +0xcb0, 0xcc1, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb6, 0xcc1, 0xc95, 0xccd, 0xcb0, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb6, 0xca8, 0xcbf, 0xcb5, 0xcbe, +0xcb0, 0x3b, 0xcad, 0xcbe, 0x3b, 0xcb8, 0xccb, 0x3b, 0xcae, 0xc82, 0x3b, 0xcac, 0xcc1, 0x3b, 0xc97, 0xcc1, 0x3b, 0xcb6, 0xcc1, 0x3b, +0xcb6, 0x3b, 0x622, 0x62a, 0x6be, 0x648, 0x627, 0x631, 0x3b, 0x698, 0x654, 0x646, 0x65b, 0x62f, 0x655, 0x631, 0x648, 0x627, 0x631, 0x3b, +0x628, 0x648, 0x65a, 0x645, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x648, 0x62f, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x631, 0x65b, 0x66e, 0x6ea, +0x633, 0x648, 0x627, 0x631, 0x3b, 0x62c, 0x64f, 0x645, 0x6c1, 0x3b, 0x628, 0x679, 0x648, 0x627, 0x631, 0x3b, 0x627, 0x64e, 0x62a, 0x6be, +0x648, 0x627, 0x631, 0x3b, 0x698, 0x654, 0x646, 0x65b, 0x62f, 0x631, 0x655, 0x631, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x648, 0x65a, 0x645, +0x648, 0x627, 0x631, 0x3b, 0x628, 0x648, 0x62f, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x631, 0x65b, 0x66e, 0x6ea, 0x633, 0x648, 0x627, 0x631, +0x3b, 0x62c, 0x64f, 0x645, 0x6c1, 0x3b, 0x628, 0x679, 0x648, 0x627, 0x631, 0x3b, 0x627, 0x3b, 0x698, 0x3b, 0x628, 0x3b, 0x628, 0x3b, +0x628, 0x3b, 0x62c, 0x3b, 0x628, 0x3b, 0x416, 0x441, 0x3b, 0x414, 0x441, 0x3b, 0x421, 0x441, 0x3b, 0x421, 0x440, 0x3b, 0x411, 0x441, +0x3b, 0x416, 0x43c, 0x3b, 0x421, 0x431, 0x3b, 0x416, 0x435, 0x43a, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x414, 0x4af, 0x439, 0x441, +0x435, 0x43d, 0x431, 0x456, 0x3b, 0x421, 0x435, 0x439, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x421, 0x4d9, 0x440, 0x441, 0x435, 0x43d, +0x431, 0x456, 0x3b, 0x411, 0x435, 0x439, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x416, 0x4b1, 0x43c, 0x430, 0x3b, 0x421, 0x435, 0x43d, +0x431, 0x456, 0x3b, 0x416, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x421, 0x3b, 0x411, 0x3b, 0x416, 0x3b, 0x421, 0x3b, 0x436, 0x435, 0x43a, +0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x434, 0x4af, 0x439, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x441, 0x435, 0x439, 0x441, 0x435, +0x43d, 0x431, 0x456, 0x3b, 0x441, 0x4d9, 0x440, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x431, 0x435, 0x439, 0x441, 0x435, 0x43d, 0x431, +0x456, 0x3b, 0x436, 0x4b1, 0x43c, 0x430, 0x3b, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x63, 0x79, 0x75, 0x2e, 0x3b, 0x6d, 0x62, +0x65, 0x2e, 0x3b, 0x6b, 0x61, 0x62, 0x2e, 0x3b, 0x67, 0x74, 0x75, 0x2e, 0x3b, 0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x67, 0x6e, +0x75, 0x2e, 0x3b, 0x67, 0x6e, 0x64, 0x2e, 0x3b, 0x4b, 0x75, 0x20, 0x63, 0x79, 0x75, 0x6d, 0x77, 0x65, 0x72, 0x75, 0x3b, +0x4b, 0x75, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x62, 0x69, +0x72, 0x69, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, +0x6b, 0x61, 0x6e, 0x65, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x75, 0x77, +0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x75, 0x3b, 0x436, 0x435, 0x43a, 0x2e, 0x3b, 0x434, 0x4af, 0x439, +0x2e, 0x3b, 0x448, 0x435, 0x439, 0x448, 0x2e, 0x3b, 0x448, 0x430, 0x440, 0x448, 0x2e, 0x3b, 0x431, 0x435, 0x439, 0x448, 0x2e, 0x3b, +0x436, 0x443, 0x43c, 0x430, 0x3b, 0x438, 0x448, 0x43c, 0x2e, 0x3b, 0x436, 0x435, 0x43a, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x434, +0x4af, 0x439, 0x448, 0x4e9, 0x43c, 0x431, 0x4af, 0x3b, 0x448, 0x435, 0x439, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x448, 0x430, 0x440, +0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x431, 0x435, 0x439, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, +0x438, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x416, 0x3b, 0x414, 0x3b, 0x428, 0x3b, 0x428, 0x3b, 0x411, 0x3b, 0x416, 0x3b, 0x418, +0x3b, 0xc77c, 0x3b, 0xc6d4, 0x3b, 0xd654, 0x3b, 0xc218, 0x3b, 0xbaa9, 0x3b, 0xae08, 0x3b, 0xd1a0, 0x3b, 0xc77c, 0xc694, 0xc77c, 0x3b, 0xc6d4, +0xc694, 0xc77c, 0x3b, 0xd654, 0xc694, 0xc77c, 0x3b, 0xc218, 0xc694, 0xc77c, 0x3b, 0xbaa9, 0xc694, 0xc77c, 0x3b, 0xae08, 0xc694, 0xc77c, 0x3b, 0xd1a0, +0xc694, 0xc77c, 0x3b, 0x63, 0x75, 0x2e, 0x3b, 0x6d, 0x62, 0x65, 0x2e, 0x3b, 0x6b, 0x61, 0x62, 0x2e, 0x3b, 0x67, 0x74, 0x75, +0x2e, 0x3b, 0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x67, 0x6e, 0x75, 0x2e, 0x3b, 0x67, 0x6e, 0x64, 0x2e, 0x3b, 0x4b, 0x75, 0x20, +0x77, 0x2019, 0x69, 0x6e, 0x64, 0x77, 0x69, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x3b, +0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, +0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x65, 0x3b, 0x4b, 0x75, 0x20, +0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, +0x6e, 0x64, 0x61, 0x74, 0x75, 0x3b, 0xead, 0xeb2, 0xe97, 0xeb4, 0xe94, 0x3b, 0xe88, 0xeb1, 0xe99, 0x3b, 0xead, 0xeb1, 0xe87, 0xe84, +0xeb2, 0xe99, 0x3b, 0xe9e, 0xeb8, 0xe94, 0x3b, 0xe9e, 0xeb0, 0xeab, 0xeb1, 0xe94, 0x3b, 0xeaa, 0xeb8, 0xe81, 0x3b, 0xec0, 0xeaa, 0xebb, +0xeb2, 0x3b, 0xea7, 0xeb1, 0xe99, 0xead, 0xeb2, 0xe97, 0xeb4, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xe88, 0xeb1, 0xe99, 0x3b, 0xea7, 0xeb1, +0xe99, 0xead, 0xeb1, 0xe87, 0xe84, 0xeb2, 0xe99, 0x3b, 0xea7, 0xeb1, 0xe99, 0xe9e, 0xeb8, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xe9e, 0xeb0, +0xeab, 0xeb1, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xeaa, 0xeb8, 0xe81, 0x3b, 0xea7, 0xeb1, 0xe99, 0xec0, 0xeaa, 0xebb, 0xeb2, 0x3b, 0xead, +0x3b, 0xe88, 0x3b, 0xead, 0x3b, 0xe9e, 0x3b, 0xe9e, 0xeab, 0x3b, 0xeaa, 0xeb8, 0x3b, 0xeaa, 0x3b, 0x31, 0x3b, 0x32, 0x3b, 0x33, +0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b, 0x53, 0x76, 0x3b, 0x50, 0x72, 0x3b, 0x4f, 0x74, 0x3b, 0x54, 0x72, +0x3b, 0x43, 0x65, 0x3b, 0x50, 0x6b, 0x3b, 0x53, 0x65, 0x3b, 0x53, 0x76, 0x113, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, +0x50, 0x69, 0x72, 0x6d, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x4f, 0x74, 0x72, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x54, +0x72, 0x65, 0x161, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x43, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, +0x3b, 0x50, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x53, 0x65, 0x73, 0x74, 0x64, 0x69, 0x65, 0x6e, +0x61, 0x3b, 0x53, 0x3b, 0x50, 0x3b, 0x4f, 0x3b, 0x54, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x73, 0x76, 0x113, 0x74, +0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x70, 0x69, 0x72, 0x6d, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x6f, 0x74, 0x72, 0x64, +0x69, 0x65, 0x6e, 0x61, 0x3b, 0x74, 0x72, 0x65, 0x161, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x63, 0x65, 0x74, 0x75, 0x72, +0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x70, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x73, 0x65, +0x73, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x65, 0x79, 0x65, 0x3b, 0x79, 0x62, 0x6f, 0x3b, 0x6d, 0x62, 0x6c, 0x3b, +0x6d, 0x73, 0x74, 0x3b, 0x6d, 0x69, 0x6e, 0x3b, 0x6d, 0x74, 0x6e, 0x3b, 0x6d, 0x70, 0x73, 0x3b, 0x65, 0x79, 0x65, 0x6e, +0x67, 0x61, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x79, 0x61, 0x6d, 0x62, 0x6f, 0x3b, +0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x6d, 0x6f, +0x6b, 0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x6d, 0xed, 0x73, 0xe1, 0x74, 0x6f, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, +0x6c, 0x254, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x6e, 0xe9, 0x69, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x79, +0x61, 0x20, 0x6d, 0xed, 0x74, 0xe1, 0x6e, 0x6f, 0x3b, 0x6d, 0x70, 0x254, 0x301, 0x73, 0x254, 0x3b, 0x65, 0x3b, 0x79, 0x3b, +0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x70, 0x3b, 0x73, 0x6b, 0x3b, 0x70, 0x72, 0x3b, 0x61, 0x6e, 0x3b, 0x74, +0x72, 0x3b, 0x6b, 0x74, 0x3b, 0x70, 0x6e, 0x3b, 0x161, 0x74, 0x3b, 0x73, 0x65, 0x6b, 0x6d, 0x61, 0x64, 0x69, 0x65, 0x6e, +0x69, 0x73, 0x3b, 0x70, 0x69, 0x72, 0x6d, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x61, 0x6e, 0x74, 0x72, 0x61, +0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x74, 0x72, 0x65, 0x10d, 0x69, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, +0x6b, 0x65, 0x74, 0x76, 0x69, 0x72, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x70, 0x65, 0x6e, 0x6b, 0x74, +0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x161, 0x65, 0x161, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, +0x53, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x160, 0x3b, 0x43d, 0x435, 0x434, 0x2e, 0x3b, 0x43f, +0x43e, 0x43d, 0x2e, 0x3b, 0x432, 0x442, 0x2e, 0x3b, 0x441, 0x440, 0x435, 0x2e, 0x3b, 0x447, 0x435, 0x442, 0x2e, 0x3b, 0x43f, 0x435, +0x442, 0x2e, 0x3b, 0x441, 0x430, 0x431, 0x2e, 0x3b, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, +0x435, 0x43b, 0x43d, 0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x3b, +0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x43e, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x43e, 0x43a, 0x3b, 0x441, 0x430, 0x431, 0x43e, 0x442, +0x430, 0x3b, 0x41, 0x6c, 0x61, 0x68, 0x3b, 0x41, 0x6c, 0x61, 0x74, 0x73, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x41, 0x6c, 0x61, +0x72, 0x3b, 0x41, 0x6c, 0x61, 0x6b, 0x3b, 0x5a, 0x6f, 0x6d, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x3b, 0x41, 0x6c, 0x61, 0x68, +0x61, 0x64, 0x79, 0x3b, 0x41, 0x6c, 0x61, 0x74, 0x73, 0x69, 0x6e, 0x61, 0x69, 0x6e, 0x79, 0x3b, 0x54, 0x61, 0x6c, 0x61, +0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x6f, 0x62, 0x69, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x6b, 0x61, 0x6d, 0x69, 0x73, +0x79, 0x3b, 0x5a, 0x6f, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x6f, 0x74, 0x73, 0x79, 0x3b, 0x41, 0x3b, 0x41, 0x3b, +0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x5a, 0x3b, 0x41, 0x3b, 0x41, 0x68, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x3b, 0x53, 0x65, +0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b, 0x4b, 0x68, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x41, 0x68, +0x61, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75, +0x3b, 0x4b, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, +0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0xd1e, 0xd3e, 0xd2f, 0xd7c, 0x3b, +0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15, 0xd7e, 0x3b, 0xd1a, 0xd4a, 0xd35, 0xd4d, 0xd35, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd7b, 0x3b, 0xd35, 0xd4d, +0xd2f, 0xd3e, 0xd34, 0xd02, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0x3b, 0xd36, 0xd28, 0xd3f, 0x3b, 0xd1e, 0xd3e, 0xd2f, 0xd31, +0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15, 0xd33, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1a, 0xd4a, +0xd35, 0xd4d, 0xd35, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd28, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, +0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, +0x200c, 0xd1a, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1e, 0xd3e, 0x3b, 0xd24, 0xd3f, 0x3b, 0xd1a, +0xd4a, 0x3b, 0xd2c, 0xd41, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0x3b, 0xd35, 0xd46, 0x3b, 0xd36, 0x3b, 0xd1e, 0xd3e, 0xd2f, 0xd31, 0xd3e, +0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15, 0xd33, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1a, 0xd4a, 0xd35, +0xd4d, 0xd35, 0xd3e, 0xd34, 0xd4d, 0xd1a, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd28, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd4d, 0xd2f, +0xd3e, 0xd34, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, +0x3b, 0xd36, 0xd28, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1e, 0x3b, 0xd24, 0xd3f, 0x3b, 0xd1a, 0xd4a, 0x3b, 0xd2c, +0xd41, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0x3b, 0xd35, 0xd46, 0x3b, 0xd36, 0x3b, 0x126, 0x61, 0x64, 0x3b, 0x54, 0x6e, 0x65, 0x3b, +0x54, 0x6c, 0x69, 0x3b, 0x45, 0x72, 0x62, 0x3b, 0x126, 0x61, 0x6d, 0x3b, 0x120, 0x69, 0x6d, 0x3b, 0x53, 0x69, 0x62, 0x3b, +0x49, 0x6c, 0x2d, 0x126, 0x61, 0x64, 0x64, 0x3b, 0x49, 0x74, 0x2d, 0x54, 0x6e, 0x65, 0x6a, 0x6e, 0x3b, 0x49, 0x74, 0x2d, +0x54, 0x6c, 0x69, 0x65, 0x74, 0x61, 0x3b, 0x4c, 0x2d, 0x45, 0x72, 0x62, 0x67, 0x127, 0x61, 0x3b, 0x49, 0x6c, 0x2d, 0x126, +0x61, 0x6d, 0x69, 0x73, 0x3b, 0x49, 0x6c, 0x2d, 0x120, 0x69, 0x6d, 0x67, 0x127, 0x61, 0x3b, 0x49, 0x73, 0x2d, 0x53, 0x69, +0x62, 0x74, 0x3b, 0x126, 0x64, 0x3b, 0x54, 0x6e, 0x3b, 0x54, 0x6c, 0x3b, 0x45, 0x72, 0x3b, 0x126, 0x6d, 0x3b, 0x120, 0x6d, +0x3b, 0x53, 0x62, 0x3b, 0x126, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x45, 0x3b, 0x126, 0x3b, 0x120, 0x3b, 0x53, 0x3b, 0x930, 0x935, +0x93f, 0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x3b, +0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x3b, 0x930, 0x935, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, +0x935, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, +0x941, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x935, +0x93e, 0x930, 0x3b, 0x41d, 0x44f, 0x3b, 0x414, 0x430, 0x3b, 0x41c, 0x44f, 0x3b, 0x41b, 0x445, 0x3b, 0x41f, 0x4af, 0x3b, 0x411, 0x430, +0x3b, 0x411, 0x44f, 0x3b, 0x43d, 0x44f, 0x43c, 0x3b, 0x434, 0x430, 0x432, 0x430, 0x430, 0x3b, 0x43c, 0x44f, 0x433, 0x43c, 0x430, 0x440, +0x3b, 0x43b, 0x445, 0x430, 0x433, 0x432, 0x430, 0x3b, 0x43f, 0x4af, 0x440, 0x44d, 0x432, 0x3b, 0x431, 0x430, 0x430, 0x441, 0x430, 0x43d, +0x3b, 0x431, 0x44f, 0x43c, 0x431, 0x430, 0x3b, 0x906, 0x907, 0x924, 0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x919, 0x94d, 0x917, 0x932, +0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x92c, 0x93f, 0x939, 0x940, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x3b, +0x906, 0x907, 0x924, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x919, 0x94d, 0x917, 0x932, 0x92c, +0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x939, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x941, +0x915, 0x94d, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, +0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x3b, 0xb30, 0xb2c, 0xb3f, 0x3b, 0xb38, 0xb4b, 0xb2e, 0x3b, +0xb2e, 0xb19, 0xb4d, 0xb17, 0xb33, 0x3b, 0xb2c, 0xb41, 0xb27, 0x3b, 0xb17, 0xb41, 0xb30, 0xb41, 0x3b, 0xb36, 0xb41, 0xb15, 0xb4d, 0xb30, +0x3b, 0xb36, 0xb28, 0xb3f, 0x3b, 0xb30, 0xb2c, 0xb3f, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb38, 0xb4b, 0xb2e, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb2e, +0xb19, 0xb4d, 0xb17, 0xb33, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb2c, 0xb41, 0xb27, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb17, 0xb41, 0xb30, 0xb41, 0xb2c, +0xb3e, 0xb30, 0x3b, 0xb36, 0xb41, 0xb15, 0xb4d, 0xb30, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb36, 0xb28, 0xb3f, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb30, +0x3b, 0xb38, 0xb4b, 0x3b, 0xb2e, 0x3b, 0xb2c, 0xb41, 0x3b, 0xb17, 0xb41, 0x3b, 0xb36, 0xb41, 0x3b, 0xb36, 0x3b, 0x6cc, 0x6a9, 0x634, +0x646, 0x628, 0x647, 0x3b, 0x62f, 0x648, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x633, 0x647, 0x200c, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x686, +0x647, 0x627, 0x631, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x67e, 0x646, 0x62c, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x62c, 0x645, 0x639, 0x647, +0x3b, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x62c, 0x3b, 0x634, 0x3b, +0x6e, 0x69, 0x65, 0x64, 0x7a, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e, 0x3b, 0x77, 0x74, 0x2e, 0x3b, 0x15b, 0x72, 0x2e, 0x3b, +0x63, 0x7a, 0x77, 0x2e, 0x3b, 0x70, 0x74, 0x2e, 0x3b, 0x73, 0x6f, 0x62, 0x2e, 0x3b, 0x6e, 0x69, 0x65, 0x64, 0x7a, 0x69, +0x65, 0x6c, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x69, 0x65, 0x64, 0x7a, 0x69, 0x61, 0x142, 0x65, 0x6b, 0x3b, 0x77, 0x74, 0x6f, +0x72, 0x65, 0x6b, 0x3b, 0x15b, 0x72, 0x6f, 0x64, 0x61, 0x3b, 0x63, 0x7a, 0x77, 0x61, 0x72, 0x74, 0x65, 0x6b, 0x3b, 0x70, +0x69, 0x105, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x4e, 0x3b, 0x50, 0x3b, 0x57, 0x3b, 0x15a, +0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x73, 0x65, 0x67, 0x3b, 0x74, 0x65, 0x72, 0x3b, 0x71, +0x75, 0x61, 0x3b, 0x71, 0x75, 0x69, 0x3b, 0x73, 0x65, 0x78, 0x3b, 0x73, 0xe1, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, +0x67, 0x6f, 0x3b, 0x73, 0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x74, 0x65, 0x72, +0xe7, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, +0x61, 0x3b, 0x71, 0x75, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0x65, 0x78, 0x74, 0x61, +0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x54, 0x3b, +0x51, 0x3b, 0x51, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x67, 0x75, +0x6e, 0x64, 0x61, 0x3b, 0x74, 0x65, 0x72, 0xe7, 0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x3b, 0x71, 0x75, 0x69, +0x6e, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x78, 0x74, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0xa10, 0xa24, 0x3b, +0xa38, 0xa4b, 0xa2e, 0x3b, 0xa2e, 0xa70, 0xa17, 0xa32, 0x3b, 0xa2c, 0xa41, 0xa71, 0xa27, 0x3b, 0xa35, 0xa40, 0xa30, 0x3b, 0xa38, 0xa3c, +0xa41, 0xa71, 0xa15, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa28, 0xa3f, 0xa71, 0xa1a, 0xa30, 0x3b, 0xa10, 0xa24, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, +0xa4b, 0xa2e, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa2e, 0xa70, 0xa17, 0xa32, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa2c, 0xa41, 0xa71, 0xa27, 0xa35, 0xa3e, +0xa30, 0x3b, 0xa35, 0xa40, 0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0xa15, 0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, +0xa3c, 0xa28, 0xa3f, 0xa71, 0xa1a, 0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa10, 0x3b, 0xa38, 0xa4b, 0x3b, 0xa2e, 0xa70, 0x3b, 0xa2c, 0xa41, +0xa71, 0x3b, 0xa35, 0xa40, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0x3b, 0xa38, 0xa3c, 0x3b, 0x627, 0x62a, 0x648, 0x627, 0x631, 0x3b, 0x67e, +0x6cc, 0x631, 0x3b, 0x645, 0x646, 0x6af, 0x644, 0x3b, 0x628, 0x64f, 0x62f, 0x6be, 0x3b, 0x62c, 0x645, 0x639, 0x631, 0x627, 0x62a, 0x3b, +0x62c, 0x645, 0x639, 0x6c1, 0x3b, 0x6c1, 0x641, 0x62a, 0x6c1, 0x3b, 0x44, 0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, +0x72, 0x3b, 0x4d, 0x69, 0xe9, 0x3b, 0x4a, 0x75, 0x65, 0x3b, 0x56, 0x69, 0x65, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x44, 0x6f, +0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, +0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x4a, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x56, 0x69, 0x65, 0x72, +0x6e, 0x65, 0x73, 0x3b, 0x53, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x58, 0x3b, 0x4a, +0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x64, 0x75, 0x3b, 0x67, 0x6c, 0x69, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x65, 0x3b, 0x67, 0x69, +0x65, 0x3b, 0x76, 0x65, 0x3b, 0x73, 0x6f, 0x3b, 0x64, 0x75, 0x6d, 0x65, 0x6e, 0x67, 0x69, 0x61, 0x3b, 0x67, 0x6c, 0x69, +0x6e, 0x64, 0x65, 0x73, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x73, 0x65, 0x6d, 0x6e, 0x61, +0x3b, 0x67, 0x69, 0x65, 0x76, 0x67, 0x69, 0x61, 0x3b, 0x76, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x64, 0x69, 0x3b, 0x73, 0x6f, +0x6e, 0x64, 0x61, 0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x64, 0x75, +0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x69, 0x65, 0x2e, 0x3b, 0x6a, 0x6f, +0x69, 0x3b, 0x76, 0x69, 0x6e, 0x2e, 0x3b, 0x73, 0xe2, 0x6d, 0x2e, 0x3b, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x103, +0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x21b, 0x69, 0x3b, 0x6d, 0x69, 0x65, 0x72, 0x63, 0x75, 0x72, 0x69, +0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x65, 0x72, 0x69, 0x3b, 0x73, 0xe2, 0x6d, 0x62, 0x103, 0x74, 0x103, 0x3b, +0x44, 0x75, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x65, 0x3b, 0x4a, 0x6f, 0x69, 0x3b, +0x56, 0x69, 0x6e, 0x3b, 0x53, 0xe2, 0x6d, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x61, 0x3b, 0x4d, 0x69, 0x3b, 0x4a, 0x3b, +0x56, 0x3b, 0x53, 0x3b, 0x432, 0x441, 0x3b, 0x43f, 0x43d, 0x3b, 0x432, 0x442, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x442, 0x3b, 0x43f, +0x442, 0x3b, 0x441, 0x431, 0x3b, 0x432, 0x43e, 0x441, 0x43a, 0x440, 0x435, 0x441, 0x435, 0x43d, 0x44c, 0x435, 0x3b, 0x43f, 0x43e, 0x43d, +0x435, 0x434, 0x435, 0x43b, 0x44c, 0x43d, 0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440, 0x435, +0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x433, 0x3b, 0x43f, 0x44f, 0x442, 0x43d, 0x438, 0x446, 0x430, 0x3b, 0x441, +0x443, 0x431, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x412, 0x3b, 0x41f, 0x3b, 0x412, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x421, +0x3b, 0x42, 0x6b, 0x31, 0x3b, 0x42, 0x6b, 0x32, 0x3b, 0x42, 0x6b, 0x33, 0x3b, 0x42, 0x6b, 0x34, 0x3b, 0x42, 0x6b, 0x35, +0x3b, 0x4c, 0xe2, 0x70, 0x3b, 0x4c, 0xe2, 0x79, 0x3b, 0x42, 0x69, 0x6b, 0x75, 0x61, 0x2d, 0xf4, 0x6b, 0x6f, 0x3b, 0x42, +0xef, 0x6b, 0x75, 0x61, 0x2d, 0xfb, 0x73, 0x65, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x70, 0x74, 0xe2, 0x3b, 0x42, +0xef, 0x6b, 0x75, 0x61, 0x2d, 0x75, 0x73, 0xef, 0xf6, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x6f, 0x6b, 0xfc, 0x3b, +0x4c, 0xe2, 0x70, 0xf4, 0x73, 0xf6, 0x3b, 0x4c, 0xe2, 0x79, 0x65, 0x6e, 0x67, 0x61, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x54, +0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x59, 0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x43e, +0x3b, 0x441, 0x440, 0x435, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, 0x43d, 0x435, 0x434, +0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, +0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, +0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x3b, 0x43f, 0x3b, 0x443, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, +0x3b, 0x441, 0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x65, 0x3b, 0x10d, +0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, +0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x65, +0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75, +0x62, 0x6f, 0x74, 0x61, 0x3b, 0x425, 0x446, 0x431, 0x3b, 0x41a, 0x440, 0x441, 0x3b, 0x414, 0x446, 0x433, 0x3b, 0x4d4, 0x440, 0x442, +0x3b, 0x426, 0x43f, 0x440, 0x3b, 0x41c, 0x440, 0x431, 0x3b, 0x421, 0x431, 0x442, 0x3b, 0x425, 0x443, 0x44b, 0x446, 0x430, 0x443, 0x431, +0x43e, 0x43d, 0x3b, 0x41a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x414, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, +0x4d4, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x426, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, 0x4d5, 0x43c, 0x3b, 0x41c, 0x430, +0x439, 0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x421, 0x430, 0x431, 0x430, 0x442, 0x3b, 0x425, 0x3b, 0x41a, 0x3b, 0x414, 0x3b, +0x4d4, 0x3b, 0x426, 0x3b, 0x41c, 0x3b, 0x421, 0x3b, 0x445, 0x446, 0x431, 0x3b, 0x43a, 0x440, 0x441, 0x3b, 0x434, 0x446, 0x433, 0x3b, +0x4d5, 0x440, 0x442, 0x3b, 0x446, 0x43f, 0x440, 0x3b, 0x43c, 0x440, 0x431, 0x3b, 0x441, 0x431, 0x442, 0x3b, 0x445, 0x443, 0x44b, 0x446, +0x430, 0x443, 0x431, 0x43e, 0x43d, 0x3b, 0x43a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x434, 0x44b, 0x446, 0x446, +0x4d5, 0x433, 0x3b, 0x4d5, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x446, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, 0x4d5, 0x43c, +0x3b, 0x43c, 0x430, 0x439, 0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x441, 0x430, 0x431, 0x430, 0x442, 0x3b, 0x53, 0x76, 0x6f, +0x3b, 0x4d, 0x75, 0x76, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x3b, 0x43, 0x68, 0x69, 0x6e, 0x3b, +0x43, 0x68, 0x69, 0x73, 0x3b, 0x4d, 0x75, 0x67, 0x3b, 0x53, 0x76, 0x6f, 0x6e, 0x64, 0x6f, 0x3b, 0x4d, 0x75, 0x76, 0x68, +0x75, 0x72, 0x6f, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, +0x43, 0x68, 0x69, 0x6e, 0x61, 0x3b, 0x43, 0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x75, 0x67, 0x6f, 0x76, +0x65, 0x72, 0x61, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x4d, 0x3b, 0xd89, 0xdbb, +0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0x3b, 0xdb6, 0xdaf, 0xdcf, 0xdaf, 0xdcf, 0x3b, +0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0x3b, 0xd89, 0xdbb, 0xdd2, +0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0xdbb, 0xdd4, 0xdc0, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, +0xdaf, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0xdb4, 0xdad, 0xdd2, 0xdb1, 0xdca, 0xdaf, 0xdcf, 0x3b, +0xdc3, 0xdd2, 0xd9a, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0xdc3, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xd89, +0x3b, 0xdc3, 0x3b, 0xd85, 0x3b, 0xdb6, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0x3b, 0xdc3, 0xdd2, 0x3b, 0xdc3, 0xdd9, 0x3b, 0x6e, 0x65, +0x3b, 0x70, 0x6f, 0x3b, 0x75, 0x74, 0x3b, 0x73, 0x74, 0x3b, 0x161, 0x74, 0x3b, 0x70, 0x69, 0x3b, 0x73, 0x6f, 0x3b, 0x6e, +0x65, 0x64, 0x65, 0x13e, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x6c, 0x6f, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x6f, +0x6b, 0x3b, 0x73, 0x74, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74, 0x76, 0x72, 0x74, 0x6f, 0x6b, 0x3b, 0x70, 0x69, 0x61, +0x74, 0x6f, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x75, 0x3b, 0x73, 0x3b, 0x161, +0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x74, 0x6f, 0x72, 0x3b, 0x73, 0x72, 0x65, +0x3b, 0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x6f, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, +0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x65, 0x6b, 0x3b, 0x74, 0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x73, 0x72, +0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x72, 0x74, 0x65, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, +0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x74, 0x3b, 0x73, 0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, +0x65, 0x64, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e, 0x3b, 0x74, 0x6f, 0x72, 0x2e, 0x3b, 0x73, 0x72, 0x65, 0x2e, 0x3b, 0x10d, +0x65, 0x74, 0x2e, 0x3b, 0x70, 0x65, 0x74, 0x2e, 0x3b, 0x73, 0x6f, 0x62, 0x2e, 0x3b, 0x41, 0x78, 0x64, 0x3b, 0x49, 0x73, +0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x41, 0x72, 0x62, 0x3b, 0x4b, 0x68, 0x61, 0x3b, 0x4a, 0x69, 0x6d, 0x3b, 0x53, 0x61, +0x62, 0x3b, 0x41, 0x78, 0x61, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x69, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x61, 0x64, +0x6f, 0x3b, 0x41, 0x72, 0x62, 0x61, 0x63, 0x6f, 0x3b, 0x4b, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x3b, 0x4a, 0x69, 0x6d, +0x63, 0x6f, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x69, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x4b, 0x3b, 0x4a, +0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x69, +0xe9, 0x2e, 0x3b, 0x6a, 0x75, 0x65, 0x2e, 0x3b, 0x76, 0x69, 0x65, 0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x3b, 0x64, 0x6f, +0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d, +0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x6a, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, 0x72, +0x6e, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6a, +0x3b, 0x76, 0x3b, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, +0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, +0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, +0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x79, 0x3b, 0x6b, 0x3b, 0x70, 0x3b, 0x74, 0x3b, 0x69, 0x3b, 0x74, 0x3b, 0x73, 0x3b, 0x79, +0x65, 0x6e, 0x3b, 0x6b, 0x77, 0x61, 0x3b, 0x70, 0x69, 0x6c, 0x3b, 0x74, 0x61, 0x74, 0x3b, 0x69, 0x6e, 0x65, 0x3b, 0x74, +0x61, 0x6e, 0x3b, 0x73, 0x69, 0x74, 0x3b, 0x73, 0x69, 0x6b, 0x75, 0x20, 0x79, 0x61, 0x20, 0x79, 0x65, 0x6e, 0x67, 0x61, +0x3b, 0x73, 0x69, 0x6b, 0x75, 0x20, 0x79, 0x61, 0x20, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x73, 0x69, 0x6b, 0x75, +0x20, 0x79, 0x61, 0x20, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x73, 0x69, 0x6b, 0x75, 0x20, 0x79, 0x61, 0x20, 0x74, 0x61, 0x74, +0x75, 0x3b, 0x73, 0x69, 0x6b, 0x75, 0x20, 0x79, 0x61, 0x20, 0x69, 0x6e, 0x65, 0x3b, 0x73, 0x69, 0x6b, 0x75, 0x20, 0x79, +0x61, 0x20, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x73, 0x69, 0x6b, 0x75, 0x20, 0x79, 0x61, 0x20, 0x73, 0x69, 0x74, 0x61, 0x3b, +0x73, 0xf6, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e, 0x3b, 0x74, 0x69, 0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x73, +0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0xf6, 0x72, 0x3b, 0x73, 0xf6, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0xe5, 0x6e, 0x64, +0x61, 0x67, 0x3b, 0x74, 0x69, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, +0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0xf6, 0x72, 0x64, 0x61, 0x67, 0x3b, 0xb9e, +0xbbe, 0xbaf, 0xbbf, 0x2e, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0x2e, 0x3b, 0xb9a, 0xbc6, 0xbb5, 0xbcd, 0x2e, 0x3b, 0xbaa, 0xbc1, 0xba4, +0x2e, 0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, 0x2e, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, 0x2e, 0x3b, 0xb9a, 0xba9, 0xbbf, 0x3b, 0xb9e, 0xbbe, +0xbaf, 0xbbf, 0xbb1, 0xbc1, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xb9a, 0xbc6, 0xbb5, 0xbcd, 0xbb5, 0xbbe, 0xbaf, +0xbcd, 0x3b, 0xbaa, 0xbc1, 0xba4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, 0xbb4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, +0xbb3, 0xbbf, 0x3b, 0xb9a, 0xba9, 0xbbf, 0x3b, 0xb9e, 0xbbe, 0x3b, 0xba4, 0xbbf, 0x3b, 0xb9a, 0xbc6, 0x3b, 0xbaa, 0xbc1, 0x3b, 0xbb5, +0xbbf, 0x3b, 0xbb5, 0xbc6, 0x3b, 0xb9a, 0x3b, 0xc06, 0xc26, 0xc3f, 0x3b, 0xc38, 0xc4b, 0xc2e, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0x3b, +0xc2c, 0xc41, 0xc27, 0x3b, 0xc17, 0xc41, 0xc30, 0xc41, 0x3b, 0xc36, 0xc41, 0xc15, 0xc4d, 0xc30, 0x3b, 0xc36, 0xc28, 0xc3f, 0x3b, 0xc06, +0xc26, 0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc38, 0xc4b, 0xc2e, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0xc35, +0xc3e, 0xc30, 0xc02, 0x3b, 0xc2c, 0xc41, 0xc27, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc17, 0xc41, 0xc30, 0xc41, 0xc35, 0xc3e, 0xc30, 0xc02, +0x3b, 0xc36, 0xc41, 0xc15, 0xc4d, 0xc30, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc28, 0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc06, +0x3b, 0xc38, 0xc4b, 0x3b, 0xc2e, 0x3b, 0xc2c, 0xc41, 0x3b, 0xc17, 0xc41, 0x3b, 0xc36, 0xc41, 0x3b, 0xc36, 0x3b, 0xe2d, 0xe32, 0x2e, +0x3b, 0xe08, 0x2e, 0x3b, 0xe2d, 0x2e, 0x3b, 0xe1e, 0x2e, 0x3b, 0xe1e, 0xe24, 0x2e, 0x3b, 0xe28, 0x2e, 0x3b, 0xe2a, 0x2e, 0x3b, +0xe27, 0xe31, 0xe19, 0xe2d, 0xe32, 0xe17, 0xe34, 0xe15, 0xe22, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe08, 0xe31, 0xe19, 0xe17, 0xe23, 0xe4c, +0x3b, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe31, 0xe07, 0xe04, 0xe32, 0xe23, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe38, 0xe18, 0x3b, 0xe27, 0xe31, +0xe19, 0xe1e, 0xe24, 0xe2b, 0xe31, 0xe2a, 0xe1a, 0xe14, 0xe35, 0x3b, 0xe27, 0xe31, 0xe19, 0xe28, 0xe38, 0xe01, 0xe23, 0xe4c, 0x3b, 0xe27, +0xe31, 0xe19, 0xe40, 0xe2a, 0xe32, 0xe23, 0xe4c, 0x3b, 0xe2d, 0xe32, 0x3b, 0xe08, 0x3b, 0xe2d, 0x3b, 0xe1e, 0x3b, 0xe1e, 0xe24, 0x3b, +0xe28, 0x3b, 0xe2a, 0x3b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf42, 0xf0b, +0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, +0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf49, +0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf58, +0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, +0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, +0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf49, 0xf72, 0x3b, 0xf5f, 0xfb3, 0x3b, +0xf58, 0xf72, 0xf42, 0x3b, 0xf63, 0xfb7, 0xf42, 0x3b, 0xf55, 0xf74, 0xf62, 0x3b, 0xf66, 0xf44, 0xf66, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, +0x3b, 0x1230, 0x1295, 0x1260, 0x1275, 0x3b, 0x1230, 0x1291, 0x12ed, 0x3b, 0x1220, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1283, 0x1219, +0x1235, 0x3b, 0x12d3, 0x122d, 0x1262, 0x3b, 0x1240, 0x12f3, 0x121d, 0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1220, 0x3b, 0x1228, 0x3b, 0x1283, 0x3b, +0x12d3, 0x3b, 0x1240, 0x3b, 0x1230, 0x1295, 0x1260, 0x1275, 0x3b, 0x1230, 0x1291, 0x12ed, 0x3b, 0x1230, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261, 0x12d5, +0x3b, 0x1213, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1262, 0x3b, 0x1240, 0x12f3, 0x121d, 0x3b, 0x53, 0x101, 0x70, 0x3b, 0x4d, 0x14d, 0x6e, +0x3b, 0x54, 0x16b, 0x73, 0x3b, 0x50, 0x75, 0x6c, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x3b, 0x46, 0x61, 0x6c, 0x3b, 0x54, 0x6f, +0x6b, 0x3b, 0x53, 0x101, 0x70, 0x61, 0x74, 0x65, 0x3b, 0x4d, 0x14d, 0x6e, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x16b, 0x73, 0x69, +0x74, 0x65, 0x3b, 0x50, 0x75, 0x6c, 0x65, 0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x70, 0x75, 0x6c, 0x65, +0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x46, 0x61, 0x6c, 0x61, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x6f, 0x6b, 0x6f, 0x6e, 0x61, 0x6b, +0x69, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x54, 0x3b, 0x50, 0x61, 0x7a, 0x3b, +0x50, 0x7a, 0x74, 0x3b, 0x53, 0x61, 0x6c, 0x3b, 0xc7, 0x61, 0x72, 0x3b, 0x50, 0x65, 0x72, 0x3b, 0x43, 0x75, 0x6d, 0x3b, +0x43, 0x6d, 0x74, 0x3b, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x3b, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, +0x53, 0x61, 0x6c, 0x131, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x50, 0x65, 0x72, 0x15f, 0x65, 0x6d, +0x62, 0x65, 0x3b, 0x43, 0x75, 0x6d, 0x61, 0x3b, 0x43, 0x75, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, 0x50, 0x3b, +0x50, 0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0xfd, 0x62, 0x3b, 0x64, 0x62, 0x3b, 0x73, 0x62, +0x3b, 0xe7, 0x62, 0x3b, 0x70, 0x62, 0x3b, 0x61, 0x6e, 0x3b, 0x15f, 0x62, 0x3b, 0xfd, 0x65, 0x6b, 0x15f, 0x65, 0x6e, 0x62, +0x65, 0x3b, 0x64, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x73, 0x69, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xe7, 0x61, +0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x70, 0x65, 0x6e, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x61, 0x6e, 0x6e, 0x61, +0x3b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xdd, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x15e, +0x3b, 0x64a, 0x6d5, 0x3b, 0x62f, 0x6c8, 0x3b, 0x633, 0x6d5, 0x3b, 0x686, 0x627, 0x3b, 0x67e, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x3b, 0x634, +0x6d5, 0x3b, 0x64a, 0x6d5, 0x643, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62f, 0x6c8, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x633, +0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x686, 0x627, 0x631, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x67e, 0x6d5, 0x64a, +0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x645, 0x6d5, 0x3b, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x64a, 0x3b, 0x62f, +0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x62c, 0x3b, 0x634, 0x3b, 0x41d, 0x434, 0x3b, 0x41f, 0x43d, 0x3b, 0x412, 0x442, 0x3b, +0x421, 0x440, 0x3b, 0x427, 0x442, 0x3b, 0x41f, 0x442, 0x3b, 0x421, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x44f, 0x3b, 0x43f, +0x43e, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x43e, 0x43a, 0x3b, 0x432, 0x456, 0x432, 0x442, 0x43e, 0x440, 0x43e, 0x43a, 0x3b, 0x441, 0x435, +0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x3b, 0x43f, 0x2bc, 0x44f, 0x442, 0x43d, 0x438, 0x446, 0x44f, +0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x41d, 0x3b, 0x41f, 0x3b, 0x412, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, +0x421, 0x3b, 0x627, 0x62a, 0x648, 0x627, 0x631, 0x3b, 0x633, 0x648, 0x645, 0x648, 0x627, 0x631, 0x3b, 0x645, 0x646, 0x6af, 0x644, 0x3b, +0x628, 0x62f, 0x6be, 0x3b, 0x62c, 0x645, 0x639, 0x631, 0x627, 0x62a, 0x3b, 0x62c, 0x645, 0x639, 0x6c1, 0x3b, 0x6c1, 0x641, 0x62a, 0x6c1, +0x3b, 0x59, 0x61, 0x3b, 0x44, 0x75, 0x3b, 0x53, 0x65, 0x3b, 0x43, 0x68, 0x3b, 0x50, 0x61, 0x3b, 0x4a, 0x75, 0x3b, 0x53, +0x68, 0x3b, 0x79, 0x61, 0x6b, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x64, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, +0x3b, 0x73, 0x65, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x63, 0x68, 0x6f, 0x72, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, +0x3b, 0x70, 0x61, 0x79, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x68, 0x61, 0x6e, +0x62, 0x61, 0x3b, 0x59, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x6cc, 0x2e, 0x3b, +0x62f, 0x2e, 0x3b, 0x633, 0x2e, 0x3b, 0x686, 0x2e, 0x3b, 0x67e, 0x2e, 0x3b, 0x62c, 0x2e, 0x3b, 0x634, 0x2e, 0x3b, 0x42f, 0x43a, +0x448, 0x3b, 0x414, 0x443, 0x448, 0x3b, 0x421, 0x435, 0x448, 0x3b, 0x427, 0x43e, 0x440, 0x3b, 0x41f, 0x430, 0x439, 0x3b, 0x416, 0x443, +0x43c, 0x3b, 0x428, 0x430, 0x43d, 0x3b, 0x44f, 0x43a, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x434, 0x443, 0x448, 0x430, 0x43d, 0x431, +0x430, 0x3b, 0x441, 0x435, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x447, 0x43e, 0x440, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x43f, +0x430, 0x439, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x42f, +0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x416, 0x3b, 0x428, 0x3b, 0x43, 0x4e, 0x3b, 0x54, 0x68, 0x20, 0x32, +0x3b, 0x54, 0x68, 0x20, 0x33, 0x3b, 0x54, 0x68, 0x20, 0x34, 0x3b, 0x54, 0x68, 0x20, 0x35, 0x3b, 0x54, 0x68, 0x20, 0x36, +0x3b, 0x54, 0x68, 0x20, 0x37, 0x3b, 0x43, 0x68, 0x1ee7, 0x20, 0x4e, 0x68, 0x1ead, 0x74, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x48, +0x61, 0x69, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x61, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x54, 0x1b0, 0x3b, 0x54, 0x68, 0x1ee9, +0x20, 0x4e, 0x103, 0x6d, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x53, 0xe1, 0x75, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x1ea3, 0x79, +0x3b, 0x43, 0x4e, 0x3b, 0x54, 0x32, 0x3b, 0x54, 0x33, 0x3b, 0x54, 0x34, 0x3b, 0x54, 0x35, 0x3b, 0x54, 0x36, 0x3b, 0x54, +0x37, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d, 0x65, 0x72, 0x3b, 0x49, +0x61, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x53, 0x75, 0x6c, 0x3b, +0x44, 0x79, 0x64, 0x64, 0x20, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x61, 0x77, 0x72, 0x74, +0x68, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x65, 0x72, 0x63, 0x68, 0x65, 0x72, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, +0x49, 0x61, 0x75, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x44, 0x79, 0x64, 0x64, +0x20, 0x53, 0x61, 0x64, 0x77, 0x72, 0x6e, 0x3b, 0x53, 0x3b, 0x4c, 0x6c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x47, +0x3b, 0x53, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d, 0x65, 0x72, 0x3b, +0x49, 0x61, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, +0xe9, 0x3b, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, +0x301, 0x62, 0x1ecd, 0x3b, 0x1eb8, 0x74, 0xec, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x3b, 0x1ecc, 0x6a, 0x1ecd, +0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, +0x20, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, +0x62, 0x1ecd, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x1eb8, 0x74, 0xec, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xc0, 0x62, 0xe1, +0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73, 0x25b, 0x301, 0x67, +0x75, 0x6e, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x190, 0x74, 0xec, +0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, +0x186, 0x6a, 0x254, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75, +0x6e, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x186, 0x6a, 0x254, 0x301, +0x20, 0x190, 0x74, 0xec, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0x3b, 0x53, +0x6f, 0x6e, 0x3b, 0x4d, 0x73, 0x6f, 0x3b, 0x42, 0x69, 0x6c, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, +0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x71, 0x3b, 0x49, 0x53, 0x6f, 0x6e, 0x74, 0x6f, 0x3b, 0x55, 0x4d, 0x73, 0x6f, 0x6d, 0x62, +0x75, 0x6c, 0x75, 0x6b, 0x6f, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x55, 0x4c, 0x77, +0x65, 0x73, 0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x55, +0x4c, 0x77, 0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x55, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, +0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x42, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x73, 0xf8, 0x6e, 0x3b, 0x6d, +0xe5, 0x6e, 0x3b, 0x74, 0x79, 0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, +0x61, 0x75, 0x3b, 0x73, 0xf8, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x79, 0x73, +0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, +0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0x61, 0x75, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x73, 0xf8, 0x2e, 0x3b, 0x6d, 0xe5, +0x2e, 0x3b, 0x74, 0x79, 0x2e, 0x3b, 0x6f, 0x6e, 0x2e, 0x3b, 0x74, 0x6f, 0x2e, 0x3b, 0x66, 0x72, 0x2e, 0x3b, 0x6c, 0x61, +0x2e, 0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x438, 0x3b, 0x447, 0x435, +0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, +0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, 0x458, 0x435, 0x434, +0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431, +0x43e, 0x442, 0x430, 0x3b, 0x4a, 0x65, 0x64, 0x3b, 0x4a, 0x65, 0x6c, 0x3b, 0x4a, 0x65, 0x6d, 0x3b, 0x4a, 0x65, 0x72, 0x63, +0x3b, 0x4a, 0x65, 0x72, 0x64, 0x3b, 0x4a, 0x65, 0x68, 0x3b, 0x4a, 0x65, 0x73, 0x3b, 0x4a, 0x65, 0x64, 0x6f, 0x6f, 0x6e, +0x65, 0x65, 0x3b, 0x4a, 0x65, 0x6c, 0x68, 0x65, 0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x6d, 0x61, 0x79, 0x72, 0x74, 0x3b, 0x4a, +0x65, 0x72, 0x63, 0x65, 0x61, 0x6e, 0x3b, 0x4a, 0x65, 0x72, 0x64, 0x65, 0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x68, 0x65, 0x69, +0x6e, 0x65, 0x79, 0x3b, 0x4a, 0x65, 0x73, 0x61, 0x72, 0x6e, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, +0x74, 0x68, 0x3b, 0x4d, 0x68, 0x72, 0x3b, 0x59, 0x6f, 0x77, 0x3b, 0x47, 0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x64, +0x79, 0x20, 0x53, 0x75, 0x6c, 0x3b, 0x64, 0x79, 0x20, 0x4c, 0x75, 0x6e, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x75, 0x72, +0x74, 0x68, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x72, 0x68, 0x65, 0x72, 0x3b, 0x64, 0x79, 0x20, 0x59, 0x6f, 0x77, 0x3b, +0x64, 0x79, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x64, 0x79, 0x20, 0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e, 0x3b, +0x4b, 0x77, 0x65, 0x3b, 0x44, 0x77, 0x6f, 0x3b, 0x42, 0x65, 0x6e, 0x3b, 0x57, 0x75, 0x6b, 0x3b, 0x59, 0x61, 0x77, 0x3b, +0x46, 0x69, 0x61, 0x3b, 0x4d, 0x65, 0x6d, 0x3b, 0x4b, 0x77, 0x65, 0x73, 0x69, 0x64, 0x61, 0x3b, 0x44, 0x77, 0x6f, 0x77, +0x64, 0x61, 0x3b, 0x42, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x3b, 0x57, 0x75, 0x6b, 0x75, 0x64, 0x61, 0x3b, 0x59, 0x61, 0x77, +0x64, 0x61, 0x3b, 0x46, 0x69, 0x64, 0x61, 0x3b, 0x4d, 0x65, 0x6d, 0x65, 0x6e, 0x65, 0x64, 0x61, 0x3b, 0x4b, 0x3b, 0x44, +0x3b, 0x42, 0x3b, 0x57, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x906, 0x926, 0x93f, 0x924, 0x94d, 0x92f, 0x935, 0x93e, 0x930, +0x3b, 0x938, 0x94b, 0x92e, 0x935, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, +0x930, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e, 0x930, 0x3b, 0x936, +0x928, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x1ee4, 0x6b, 0x61, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x3b, 0x54, 0x69, 0x75, 0x3b, 0x57, 0x65, +0x6e, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x3b, 0x46, 0x72, 0x61, 0x1ecb, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x4d, 0x62, 0x1ecd, 0x73, 0x1ecb, +0x20, 0x1ee4, 0x6b, 0x61, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x64, 0x65, 0x3b, 0x54, 0x69, 0x75, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x57, +0x65, 0x6e, 0x65, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x46, 0x72, 0x61, 0x1ecb, +0x64, 0x65, 0x65, 0x3b, 0x53, 0x61, 0x74, 0x1ecd, 0x64, 0x65, 0x65, 0x3b, 0x57, 0x6b, 0x79, 0x3b, 0x57, 0x6b, 0x77, 0x3b, +0x57, 0x6b, 0x6c, 0x3b, 0x57, 0x74, 0x169, 0x3b, 0x57, 0x6b, 0x6e, 0x3b, 0x57, 0x74, 0x6e, 0x3b, 0x57, 0x74, 0x68, 0x3b, +0x57, 0x61, 0x20, 0x6b, 0x79, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x77, 0x61, 0x6d, 0x62, 0x129, 0x6c, +0x129, 0x6c, 0x79, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x65, 0x6c, 0x129, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, +0x74, 0x169, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x6e, 0x6f, +0x3b, 0x57, 0x61, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x74, 0x68, 0x61, 0x74, 0x169, 0x3b, 0x59, 0x3b, 0x57, 0x3b, 0x45, 0x3b, +0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, +0x6d, 0x69, 0x65, 0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x65, +0x6e, 0x69, 0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x61, 0x72, 0x73, 0x3b, 0x6d, 0x69, +0x65, 0x72, 0x63, 0x75, 0x73, 0x3b, 0x6a, 0x6f, 0x69, 0x62, 0x65, 0x3b, 0x76, 0x69, 0x6e, 0x61, 0x72, 0x73, 0x3b, 0x73, +0x61, 0x62, 0x69, 0x64, 0x65, 0x3b, 0x6b, 0x254, 0x73, 0x3b, 0x64, 0x7a, 0x6f, 0x3b, 0x62, 0x6c, 0x61, 0x3b, 0x6b, 0x75, +0x256, 0x3b, 0x79, 0x61, 0x77, 0x3b, 0x66, 0x69, 0x256, 0x3b, 0x6d, 0x65, 0x6d, 0x3b, 0x6b, 0x254, 0x73, 0x69, 0x256, 0x61, +0x3b, 0x64, 0x7a, 0x6f, 0x256, 0x61, 0x3b, 0x62, 0x6c, 0x61, 0x256, 0x61, 0x3b, 0x6b, 0x75, 0x256, 0x61, 0x3b, 0x79, 0x61, +0x77, 0x6f, 0x256, 0x61, 0x3b, 0x66, 0x69, 0x256, 0x61, 0x3b, 0x6d, 0x65, 0x6d, 0x6c, 0x65, 0x256, 0x61, 0x3b, 0x6b, 0x3b, +0x64, 0x3b, 0x62, 0x3b, 0x6b, 0x3b, 0x79, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x4c, 0x50, 0x3b, 0x50, 0x31, 0x3b, 0x50, 0x32, +0x3b, 0x50, 0x33, 0x3b, 0x50, 0x34, 0x3b, 0x50, 0x35, 0x3b, 0x50, 0x36, 0x3b, 0x4c, 0x101, 0x70, 0x75, 0x6c, 0x65, 0x3b, +0x50, 0x6f, 0x2bb, 0x61, 0x6b, 0x61, 0x68, 0x69, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x75, 0x61, 0x3b, 0x50, 0x6f, 0x2bb, +0x61, 0x6b, 0x6f, 0x6c, 0x75, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x68, 0x101, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x69, 0x6d, +0x61, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6f, 0x6e, 0x6f, 0x3b, 0x4c, 0x69, 0x6e, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, +0x72, 0x3b, 0x4d, 0x69, 0x79, 0x3b, 0x48, 0x75, 0x77, 0x3b, 0x42, 0x69, 0x79, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4c, 0x69, +0x6e, 0x67, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, +0x79, 0x65, 0x72, 0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b, 0x48, 0x75, 0x77, 0x65, 0x62, 0x65, 0x73, 0x3b, 0x42, 0x69, 0x79, +0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0xe4, 0x2e, +0x3b, 0x5a, 0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, +0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0xe4, 0xe4, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x5a, 0x69, 0x69, +0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, 0x63, 0x68, 0x3b, 0x44, 0x75, 0x6e, 0x73, +0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x46, 0x72, 0x69, 0x69, 0x74, 0x69, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68, +0x74, 0x69, 0x67, 0x3b, 0xa46d, 0xa18f, 0x3b, 0xa18f, 0xa2cd, 0x3b, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa315, 0x3b, 0xa18f, 0xa1d6, 0x3b, 0xa18f, +0xa26c, 0x3b, 0xa18f, 0xa0d8, 0x3b, 0xa46d, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa282, 0xa2cd, 0x3b, 0xa18f, 0xa282, 0xa44d, 0x3b, 0xa18f, 0xa282, 0xa315, +0x3b, 0xa18f, 0xa282, 0xa1d6, 0x3b, 0xa18f, 0xa282, 0xa26c, 0x3b, 0xa18f, 0xa282, 0xa0d8, 0x3b, 0xa18f, 0x3b, 0xa2cd, 0x3b, 0xa44d, 0x3b, 0xa315, +0x3b, 0xa1d6, 0x3b, 0xa26c, 0x3b, 0xa0d8, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x3b, 0x6d, 0x61, 0x14b, +0x3b, 0x67, 0x61, 0x73, 0x6b, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x3b, 0x6c, 0xe1, 0x76, 0x3b, +0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0xe1, 0x72, 0x67, +0x61, 0x3b, 0x6d, 0x61, 0x14b, 0x14b, 0x65, 0x62, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, +0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61, 0x73, 0x64, 0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, +0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x61, 0x72, 0x64, 0x61, 0x74, 0x3b, 0x53, 0x3b, 0x56, 0x3b, 0x4d, +0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x61, 0x65, 0x6a, 0x6c, 0x65, 0x67, 0x65, 0x3b, 0x6d, 0xe5, 0x61, +0x6e, 0x74, 0x61, 0x3b, 0x64, 0xe4, 0x6a, 0x73, 0x74, 0x61, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x65, 0x76, 0x61, 0x68, 0x6b, +0x6f, 0x65, 0x3b, 0x64, 0xe5, 0x61, 0x72, 0x73, 0x74, 0x61, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x68, +0x6b, 0x65, 0x3b, 0x6c, 0x61, 0x61, 0x76, 0x61, 0x64, 0x61, 0x68, 0x6b, 0x65, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, +0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x43, 0x70, 0x72, 0x3b, 0x43, 0x74, 0x74, 0x3b, 0x43, 0x6d, 0x6e, 0x3b, +0x43, 0x6d, 0x74, 0x3b, 0x41, 0x72, 0x73, 0x3b, 0x49, 0x63, 0x6d, 0x3b, 0x45, 0x73, 0x74, 0x3b, 0x43, 0x68, 0x75, 0x6d, +0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x6f, 0x3b, 0x43, 0x68, 0x75, 0x6d, +0x61, 0x69, 0x6e, 0x65, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, +0x73, 0x69, 0x3b, 0x49, 0x63, 0x68, 0x75, 0x6d, 0x61, 0x3b, 0x45, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x43, 0x3b, +0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x45, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x4a, 0x69, 0x6d, 0x3b, +0x4b, 0x61, 0x77, 0x3b, 0x4b, 0x61, 0x64, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x4e, 0x67, 0x75, 0x3b, +0x49, 0x74, 0x75, 0x6b, 0x75, 0x20, 0x6a, 0x61, 0x20, 0x6a, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, +0x75, 0x6b, 0x61, 0x20, 0x6a, 0x69, 0x6d, 0x77, 0x65, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, +0x20, 0x6b, 0x61, 0x77, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x64, 0x61, 0x64, +0x75, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x61, +0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x73, 0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x69, 0x66, 0x75, 0x6c, 0x61, 0x20, 0x6e, +0x67, 0x75, 0x77, 0x6f, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x64, +0x65, 0x77, 0x3b, 0x61, 0x61, 0x253, 0x3b, 0x6d, 0x61, 0x77, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x6e, 0x61, 0x61, 0x3b, 0x6d, +0x77, 0x64, 0x3b, 0x68, 0x62, 0x69, 0x3b, 0x64, 0x65, 0x77, 0x6f, 0x3b, 0x61, 0x61, 0x253, 0x6e, 0x64, 0x65, 0x3b, 0x6d, +0x61, 0x77, 0x62, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x6a, 0x65, 0x73, 0x6c, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x61, +0x61, 0x73, 0x61, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x6d, 0x61, 0x77, 0x6e, 0x64, 0x65, 0x3b, 0x68, 0x6f, 0x6f, 0x72, 0x65, +0x2d, 0x62, 0x69, 0x69, 0x72, 0x3b, 0x64, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x6e, 0x3b, 0x6e, 0x3b, 0x6d, 0x3b, 0x68, 0x3b, +0x4b, 0x4d, 0x41, 0x3b, 0x4e, 0x54, 0x54, 0x3b, 0x4e, 0x4d, 0x4e, 0x3b, 0x4e, 0x4d, 0x54, 0x3b, 0x41, 0x52, 0x54, 0x3b, +0x4e, 0x4d, 0x41, 0x3b, 0x4e, 0x4d, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, +0x74, 0x61, 0x74, 0x169, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, +0x61, 0x6e, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x74, 0x68, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, +0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, +0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x72, 0x65, 0x3b, 0x4b, 0x75, 0x6e, 0x3b, 0x4f, 0x6e, 0x67, 0x3b, 0x49, 0x6e, 0x65, +0x3b, 0x49, 0x6c, 0x65, 0x3b, 0x53, 0x61, 0x70, 0x3b, 0x4b, 0x77, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, +0x65, 0x65, 0x20, 0x61, 0x72, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x75, 0x6e, +0x69, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6f, 0x6e, 0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, +0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x69, 0x6e, 0x65, 0x74, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, +0x74, 0x20, 0x65, 0x65, 0x20, 0x69, 0x6c, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x73, +0x61, 0x70, 0x61, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x77, 0x65, 0x3b, 0x41, 0x3b, +0x4b, 0x3b, 0x4f, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x44, 0x69, 0x6d, 0x3b, 0x50, 0x6f, 0x73, 0x3b, +0x50, 0x69, 0x72, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x4e, 0x61, 0x69, 0x3b, 0x53, 0x68, 0x61, 0x3b, 0x53, 0x61, 0x62, 0x3b, +0x44, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x6f, 0x73, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x70, +0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x69, 0x3b, 0x43, +0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x53, 0x61, 0x62, 0x75, 0x64, 0x75, 0x3b, 0x44, 0x3b, 0x50, 0x3b, 0x43, +0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x53, 0x69, 0x62, +0x3b, 0x53, 0x69, 0x74, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x53, 0x69, 0x68, 0x3b, 0x4d, 0x67, 0x71, 0x3b, 0x53, 0x6f, 0x6e, +0x74, 0x6f, 0x3b, 0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x53, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x53, 0x69, 0x74, 0x68, +0x61, 0x74, 0x68, 0x75, 0x3b, 0x53, 0x69, 0x6e, 0x65, 0x3b, 0x53, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67, +0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4d, +0x3b, 0x49, 0x6a, 0x70, 0x3b, 0x49, 0x6a, 0x74, 0x3b, 0x49, 0x6a, 0x6e, 0x3b, 0x49, 0x6a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, +0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, +0x49, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x49, +0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, +0x75, 0x6d, 0x61, 0x61, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, +0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b, 0x31, 0x3b, 0x2d30, 0x2d59, 0x2d30, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x3b, 0x2d30, 0x2d59, 0x2d49, +0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x3b, 0x2d30, +0x2d59, 0x2d30, 0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, +0x2d3d, 0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, +0x2d49, 0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x3b, 0x61, 0x73, 0x61, 0x3b, 0x61, 0x79, 0x6e, 0x3b, 0x61, 0x73, 0x69, 0x3b, 0x61, 0x6b, +0x1e5b, 0x3b, 0x61, 0x6b, 0x77, 0x3b, 0x61, 0x73, 0x69, 0x6d, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, 0x3b, 0x61, 0x73, 0x61, 0x6d, +0x61, 0x73, 0x3b, 0x61, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x6b, 0x1e5b, 0x61, +0x73, 0x3b, 0x61, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, +0x79, 0x61, 0x73, 0x3b, 0x59, 0x61, 0x6e, 0x3b, 0x53, 0x61, 0x6e, 0x3b, 0x4b, 0x72, 0x61, 0x1e0d, 0x3b, 0x4b, 0x75, 0x1e93, +0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x1e0d, 0x69, 0x73, 0x3b, 0x53, 0x61, 0x79, 0x3b, 0x59, 0x61, 0x6e, 0x61, 0x73, 0x73, +0x3b, 0x53, 0x61, 0x6e, 0x61, 0x73, 0x73, 0x3b, 0x4b, 0x72, 0x61, 0x1e0d, 0x61, 0x73, 0x73, 0x3b, 0x4b, 0x75, 0x1e93, 0x61, +0x73, 0x73, 0x3b, 0x53, 0x61, 0x6d, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x1e0d, 0x69, 0x73, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, +0x79, 0x61, 0x73, 0x73, 0x3b, 0x59, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, +0x41, 0x4e, 0x3b, 0x4f, 0x52, 0x4b, 0x3b, 0x4f, 0x4b, 0x42, 0x3b, 0x4f, 0x4b, 0x53, 0x3b, 0x4f, 0x4b, 0x4e, 0x3b, 0x4f, +0x4b, 0x54, 0x3b, 0x4f, 0x4d, 0x4b, 0x3b, 0x53, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x4f, 0x72, 0x77, 0x6f, 0x6b, 0x75, 0x62, +0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4f, 0x72, 0x77, 0x61, +0x6b, 0x61, 0x73, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x72, 0x77, +0x61, 0x6b, 0x61, 0x74, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, +0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x52, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x4d, 0x75, 0x6c, 0x3b, 0x56, +0x69, 0x6c, 0x3b, 0x48, 0x69, 0x76, 0x3b, 0x48, 0x69, 0x64, 0x3b, 0x48, 0x69, 0x74, 0x3b, 0x48, 0x69, 0x68, 0x3b, 0x4c, +0x65, 0x6d, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61, +0x68, 0x75, 0x76, 0x69, 0x6c, 0x75, 0x68, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x70, +0x61, 0x20, 0x68, 0x69, 0x64, 0x61, 0x74, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x74, 0x61, 0x79, 0x69, 0x3b, 0x70, +0x61, 0x20, 0x68, 0x69, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61, 0x68, 0x75, 0x6c, 0x65, 0x6d, +0x62, 0x65, 0x6c, 0x61, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x57, 0x3b, 0x4a, 0x3b, 0x4a, +0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, +0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6d, +0x61, 0x74, 0x61, 0x74, 0x75, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, +0x61, 0x6e, 0x75, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, +0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, +0x3b, 0x4a, 0x3b, 0x6b, 0x61, 0x72, 0x3b, 0x6e, 0x74, 0x25b, 0x3b, 0x74, 0x61, 0x72, 0x3b, 0x61, 0x72, 0x61, 0x3b, 0x61, +0x6c, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x3b, 0x73, 0x69, 0x62, 0x3b, 0x6b, 0x61, 0x72, 0x69, 0x3b, 0x6e, 0x74, 0x25b, 0x6e, +0x25b, 0x3b, 0x74, 0x61, 0x72, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x6d, 0x69, +0x73, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x54, +0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x4b, 0x6d, 0x61, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x49, 0x6e, 0x65, +0x3b, 0x54, 0x61, 0x6e, 0x3b, 0x41, 0x72, 0x6d, 0x3b, 0x4d, 0x61, 0x61, 0x3b, 0x4e, 0x4d, 0x4d, 0x3b, 0x4b, 0x69, 0x75, +0x6d, 0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, +0x6e, 0x65, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x74, 0x68, +0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4e, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x69, +0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13c9, +0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5, 0x13c1, 0x3b, 0x13e6, 0x13a2, 0x13c1, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x3b, 0x13e7, 0x13be, 0x13a9, 0x3b, 0x13c8, +0x13d5, 0x13be, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, +0x13b5, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13e6, 0x13a2, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13e7, 0x13be, 0x13a9, +0x13b6, 0x13cd, 0x13d7, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c8, 0x13d5, 0x13be, 0x3b, 0x13c6, 0x3b, 0x13c9, 0x3b, 0x13d4, 0x3b, 0x13e6, 0x3b, +0x13c5, 0x3b, 0x13e7, 0x3b, 0x13a4, 0x3b, 0x64, 0x69, 0x6d, 0x3b, 0x6c, 0x69, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, +0x72, 0x3b, 0x7a, 0x65, 0x3b, 0x76, 0x61, 0x6e, 0x3b, 0x73, 0x61, 0x6d, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x6e, 0x73, 0x3b, +0x6c, 0x69, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x6b, 0x72, 0x65, 0x64, 0x69, +0x3b, 0x7a, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x61, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x6d, 0x64, 0x69, +0x3b, 0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x7a, 0x3b, 0x76, 0x3b, 0x73, 0x3b, 0x4c, 0x6c, 0x32, 0x3b, 0x4c, +0x6c, 0x33, 0x3b, 0x4c, 0x6c, 0x34, 0x3b, 0x4c, 0x6c, 0x35, 0x3b, 0x4c, 0x6c, 0x36, 0x3b, 0x4c, 0x6c, 0x37, 0x3b, 0x4c, +0x6c, 0x31, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x69, +0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, +0x6c, 0x79, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x63, 0x68, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, +0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, +0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x6c, 0x69, 0x6e, 0x6a, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, +0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x76, 0x69, 0x6c, 0x69, +0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x69, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x3b, 0x50, 0xed, 0x69, 0x6c, +0x69, 0x3b, 0x54, 0xe1, 0x61, 0x74, 0x75, 0x3b, 0xcd, 0x6e, 0x65, 0x3b, 0x54, 0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, +0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4d, 0xf3, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x69, 0x72, +0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0xed, 0x6e, 0x65, 0x3b, 0x4a, +0x75, 0x6d, 0x61, 0x74, 0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x61, 0x6d, 0xed, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, +0x75, 0x6d, 0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, 0x6f, 0x73, 0x69, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x45, +0x3b, 0x4f, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x42, 0x61, 0x6c, 0x3b, 0x4c, 0x77, 0x32, +0x3b, 0x4c, 0x77, 0x33, 0x3b, 0x4c, 0x77, 0x34, 0x3b, 0x4c, 0x77, 0x35, 0x3b, 0x4c, 0x77, 0x36, 0x3b, 0x53, 0x61, 0x62, +0x62, 0x69, 0x69, 0x74, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x62, 0x69, +0x72, 0x69, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x6e, 0x61, +0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, +0x67, 0x61, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x50, 0x61, 0x20, +0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x6d, 0x6f, 0x3b, 0x50, 0x61, +0x6c, 0x69, 0x63, 0x68, 0x69, 0x62, 0x75, 0x6c, 0x69, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x74, 0x61, 0x74, +0x75, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x73, +0x61, 0x6e, 0x6f, 0x3b, 0x50, 0x61, 0x63, 0x68, 0x69, 0x62, 0x65, 0x6c, 0x75, 0x73, 0x68, 0x69, 0x3b, 0x64, 0x75, 0x6d, +0x3b, 0x73, 0x69, 0x67, 0x3b, 0x74, 0x65, 0x72, 0x3b, 0x6b, 0x75, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x3b, 0x73, 0x65, 0x73, +0x3b, 0x73, 0x61, 0x62, 0x3b, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x73, 0x69, 0x67, 0x75, 0x6e, 0x64, 0x61, +0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x74, 0x65, 0x72, 0x73, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x75, 0x61, +0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, +0x73, 0x65, 0x73, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x64, 0x75, 0x3b, 0x64, 0x3b, +0x73, 0x3b, 0x74, 0x3b, 0x6b, 0x3b, 0x6b, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, +0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4b, 0x49, 0x55, 0x3b, 0x4d, 0x52, 0x41, 0x3b, 0x57, 0x41, 0x49, 0x3b, 0x57, 0x45, +0x54, 0x3b, 0x57, 0x45, 0x4e, 0x3b, 0x57, 0x54, 0x4e, 0x3b, 0x4a, 0x55, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, +0x3b, 0x4d, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x6f, 0x3b, 0x57, 0x61, 0x69, 0x72, 0x69, 0x3b, 0x57, 0x65, 0x74, 0x68, +0x61, 0x74, 0x75, 0x3b, 0x57, 0x65, 0x6e, 0x61, 0x3b, 0x57, 0x65, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, +0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x4a, 0x3b, 0x4b, +0x74, 0x73, 0x3b, 0x4b, 0x6f, 0x74, 0x3b, 0x4b, 0x6f, 0x6f, 0x3b, 0x4b, 0x6f, 0x73, 0x3b, 0x4b, 0x6f, 0x61, 0x3b, 0x4b, +0x6f, 0x6d, 0x3b, 0x4b, 0x6f, 0x6c, 0x3b, 0x4b, 0x6f, 0x74, 0x69, 0x73, 0x61, 0x70, 0x3b, 0x4b, 0x6f, 0x74, 0x61, 0x61, +0x69, 0x3b, 0x4b, 0x6f, 0x61, 0x65, 0x6e, 0x67, 0x2019, 0x3b, 0x4b, 0x6f, 0x73, 0x6f, 0x6d, 0x6f, 0x6b, 0x3b, 0x4b, 0x6f, +0x61, 0x6e, 0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4b, 0x6f, 0x6d, 0x75, 0x75, 0x74, 0x3b, 0x4b, 0x6f, 0x6c, 0x6f, 0x3b, +0x54, 0x3b, 0x54, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x61, +0x3b, 0x44, 0x65, 0x3b, 0x57, 0x75, 0x3b, 0x44, 0x6f, 0x3b, 0x46, 0x72, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x53, 0x6f, 0x6e, +0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x6e, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, +0x3b, 0x44, 0x65, 0x6e, 0x73, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x57, 0x75, 0x6e, 0x73, 0x74, 0x61, +0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, +0x73, 0x3b, 0x46, 0x72, 0x61, 0x69, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x74, 0x65, 0x72, +0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x46, +0x3b, 0x41, 0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x65, 0x2e, 0x3b, 0x44, +0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, +0x3b, 0x4d, 0x6f, 0x6f, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x6e, 0x6e, 0x73, 0x64, 0x61, 0x61, 0x63, +0x68, 0x3b, 0x4d, 0x65, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x64, 0x61, 0x61, +0x63, 0x68, 0x3b, 0x46, 0x72, 0x69, 0x69, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x64, 0x61, 0x61, +0x63, 0x68, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x6c, 0xed, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x74, 0x75, +0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x6e, 0x254, 0x3b, 0x41, 0x6c, 0x61, +0xe1, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, 0x73, 0x69, +0x3b, 0x53, 0x61, 0x62, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x3b, 0x4b, 0x75, 0x62, 0x69, 0x3b, 0x4b, 0x75, 0x73, 0x61, +0x3b, 0x4b, 0x75, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x74, 0x61, 0x3b, 0x4d, 0x75, 0x6b, 0x61, 0x3b, 0x53, 0x61, 0x62, 0x69, +0x69, 0x74, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x69, 0x6c, 0x69, +0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x6e, 0x61, 0x3b, 0x4f, +0x6c, 0x6f, 0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, +0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x42, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x4a, 0x32, 0x3b, 0x4a, 0x33, +0x3b, 0x4a, 0x34, 0x3b, 0x4a, 0x35, 0x3b, 0x41, 0x6c, 0x3b, 0x49, 0x6a, 0x3b, 0x4a, 0x31, 0x3b, 0x4a, 0x75, 0x6d, 0x61, +0x70, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, +0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77, 0x61, 0x20, +0x4b, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x61, 0x74, 0x61, 0x6e, +0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, +0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a, +0x75, 0x6d, 0x3b, 0x42, 0x61, 0x72, 0x3b, 0x41, 0x61, 0x72, 0x3b, 0x55, 0x6e, 0x69, 0x3b, 0x55, 0x6e, 0x67, 0x3b, 0x4b, +0x61, 0x6e, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x65, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x4e, 0x61, 0x6b, +0x61, 0x65, 0x62, 0x61, 0x72, 0x61, 0x73, 0x61, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x4e, 0x61, 0x6b, +0x61, 0x75, 0x6e, 0x69, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x75, 0x6e, 0x67, 0x2019, 0x6f, 0x6e, 0x3b, 0x4e, 0x61, 0x6b, 0x61, +0x6b, 0x61, 0x6e, 0x79, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x73, 0x61, 0x62, 0x69, 0x74, 0x69, 0x3b, 0x4a, 0x3b, 0x42, 0x3b, +0x41, 0x3b, 0x55, 0x3b, 0x55, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x41, 0x74, 0x69, 0x3b, 0x41, 0x74, +0x61, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x6a, 0x3b, 0x41, 0x73, 0x73, 0x3b, 0x41, 0x6c, +0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, +0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c, 0x6a, 0x75, +0x6d, 0x61, 0x3b, 0x41, 0x73, 0x73, 0x61, 0x62, 0x64, 0x75, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4c, +0x3b, 0x4c, 0x3b, 0x53, 0x3b, 0x4a, 0x4d, 0x50, 0x3b, 0x57, 0x55, 0x54, 0x3b, 0x54, 0x41, 0x52, 0x3b, 0x54, 0x41, 0x44, +0x3b, 0x54, 0x41, 0x4e, 0x3b, 0x54, 0x41, 0x42, 0x3b, 0x4e, 0x47, 0x53, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, +0x3b, 0x57, 0x75, 0x6f, 0x6b, 0x20, 0x54, 0x69, 0x63, 0x68, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x72, 0x69, 0x79, +0x6f, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x64, 0x65, 0x6b, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x6e, 0x67, +0x2019, 0x77, 0x65, 0x6e, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x62, 0x69, 0x63, 0x68, 0x3b, 0x4e, 0x67, 0x65, 0x73, +0x6f, 0x3b, 0x4a, 0x3b, 0x57, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x41, 0x73, 0x61, 0x3b, +0x41, 0x79, 0x6e, 0x3b, 0x41, 0x73, 0x6e, 0x3b, 0x41, 0x6b, 0x72, 0x3b, 0x41, 0x6b, 0x77, 0x3b, 0x41, 0x73, 0x6d, 0x3b, +0x41, 0x73, 0x1e0d, 0x3b, 0x41, 0x73, 0x61, 0x6d, 0x61, 0x73, 0x3b, 0x41, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, +0x6e, 0x61, 0x73, 0x3b, 0x41, 0x6b, 0x72, 0x61, 0x73, 0x3b, 0x41, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x6d, +0x77, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x1e0d, 0x79, 0x61, 0x73, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, +0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x41, 0x74, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, 0x41, 0x6c, +0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x7a, 0x3b, 0x41, 0x73, 0x69, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, +0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, +0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c, 0x7a, 0x75, 0x6d, 0x61, +0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6d, 0x6e, 0x3b, +0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, +0x61, 0x70, 0x69, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, +0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, +0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x32, +0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x31, 0x3b, 0x930, 0x92c, 0x93f, 0x3b, 0x938, 0x92e, 0x3b, +0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x926, 0x3b, 0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, +0x3b, 0x938, 0x941, 0x928, 0x93f, 0x3b, 0x930, 0x92c, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, +0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x926, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x92c, +0x93e, 0x930, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, +0x930, 0x3b, 0x938, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x938, 0x941, 0x3b, 0x938, 0x941, 0x3b, 0x43a, +0x4c0, 0x438, 0x440, 0x430, 0x43d, 0x430, 0x43d, 0x20, 0x434, 0x435, 0x3b, 0x43e, 0x440, 0x448, 0x43e, 0x442, 0x430, 0x43d, 0x20, 0x434, +0x435, 0x3b, 0x448, 0x438, 0x43d, 0x430, 0x440, 0x438, 0x43d, 0x20, 0x434, 0x435, 0x3b, 0x43a, 0x445, 0x430, 0x430, 0x440, 0x438, 0x43d, +0x20, 0x434, 0x435, 0x3b, 0x435, 0x430, 0x440, 0x438, 0x43d, 0x20, 0x434, 0x435, 0x3b, 0x43f, 0x4c0, 0x435, 0x440, 0x430, 0x441, 0x43a, +0x430, 0x43d, 0x20, 0x434, 0x435, 0x3b, 0x448, 0x43e, 0x442, 0x20, 0x434, 0x435, 0x3b, 0x43d, 0x434, 0x2de7, 0x487, 0x467, 0x3b, 0x43f, +0x43d, 0x2de3, 0x435, 0x3b, 0x432, 0x442, 0x43e, 0x2dec, 0x487, 0x3b, 0x441, 0x440, 0x2de3, 0x435, 0x3b, 0x447, 0x435, 0x2de6, 0x487, 0x3b, +0x43f, 0x467, 0x2de6, 0x487, 0x3b, 0x441, 0xa64b, 0x2de0, 0x487, 0x3b, 0x43d, 0x435, 0x434, 0x463, 0x301, 0x43b, 0x467, 0x3b, 0x43f, 0x43e, +0x43d, 0x435, 0x434, 0x463, 0x301, 0x43b, 0x44c, 0x43d, 0x438, 0x43a, 0x44a, 0x3b, 0x432, 0x442, 0x43e, 0x301, 0x440, 0x43d, 0x438, 0x43a, +0x44a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x300, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x442, 0x43e, 0x301, 0x43a, 0x44a, +0x3b, 0x43f, 0x467, 0x442, 0x43e, 0x301, 0x43a, 0x44a, 0x3b, 0x441, 0xa64b, 0x431, 0x431, 0x461, 0x301, 0x442, 0x430, 0x3b, 0x4c, 0x75, +0x6d, 0x3b, 0x4e, 0x6b, 0x6f, 0x3b, 0x4e, 0x64, 0x79, 0x3b, 0x4e, 0x64, 0x67, 0x3b, 0x4e, 0x6a, 0x77, 0x3b, 0x4e, 0x67, +0x76, 0x3b, 0x4c, 0x75, 0x62, 0x3b, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x4e, 0x6b, 0x6f, 0x64, 0x79, 0x61, +0x3b, 0x4e, 0x64, 0xe0, 0x61, 0x79, 0xe0, 0x3b, 0x4e, 0x64, 0x61, 0x6e, 0x67, 0xf9, 0x3b, 0x4e, 0x6a, 0xf2, 0x77, 0x61, +0x3b, 0x4e, 0x67, 0xf2, 0x76, 0x79, 0x61, 0x3b, 0x4c, 0x75, 0x62, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x4c, 0x3b, 0x4e, 0x3b, +0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4c, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0xe9, 0x69, 0x3b, 0x44, 0xeb, +0x6e, 0x3b, 0x4d, 0xeb, 0x74, 0x3b, 0x44, 0x6f, 0x6e, 0x3b, 0x46, 0x72, 0x65, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x6f, +0x6e, 0x6e, 0x64, 0x65, 0x67, 0x3b, 0x4d, 0xe9, 0x69, 0x6e, 0x64, 0x65, 0x67, 0x3b, 0x44, 0xeb, 0x6e, 0x73, 0x63, 0x68, +0x64, 0x65, 0x67, 0x3b, 0x4d, 0xeb, 0x74, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65, 0x73, 0x63, +0x68, 0x64, 0x65, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x69, 0x64, 0x65, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68, 0x64, +0x65, 0x67, 0x3b, 0x53, 0x6f, 0x6e, 0x2e, 0x3b, 0x4d, 0xe9, 0x69, 0x2e, 0x3b, 0x44, 0xeb, 0x6e, 0x2e, 0x3b, 0x4d, 0xeb, +0x74, 0x2e, 0x3b, 0x44, 0x6f, 0x6e, 0x2e, 0x3b, 0x46, 0x72, 0x65, 0x2e, 0x3b, 0x53, 0x61, 0x6d, 0x2e, 0x3b, 0x6e, 0x74, +0x73, 0x3b, 0x6b, 0x70, 0x61, 0x3b, 0x67, 0x68, 0x254, 0x3b, 0x74, 0x254, 0x6d, 0x3b, 0x75, 0x6d, 0x65, 0x3b, 0x67, 0x68, +0x268, 0x3b, 0x64, 0x7a, 0x6b, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x6e, 0x74, 0x73, 0x268, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, +0x6b, 0x70, 0xe0, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67, 0x68, 0x254, 0x65, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x74, +0x254, 0x300, 0x6d, 0x6c, 0xf2, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x6d, 0xe8, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67, +0x68, 0x268, 0x302, 0x6d, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x6e, 0x64, 0x7a, 0x268, 0x6b, 0x254, 0x294, 0x254, 0x3b, 0x6e, 0x3b, +0x6b, 0x3b, 0x67, 0x3b, 0x74, 0x3b, 0x75, 0x3b, 0x67, 0x3b, 0x64, 0x3b, 0x6e, 0x254, 0x79, 0x3b, 0x6e, 0x6a, 0x61, 0x3b, +0x75, 0x75, 0x6d, 0x3b, 0x14b, 0x67, 0x65, 0x3b, 0x6d, 0x62, 0x254, 0x3b, 0x6b, 0x254, 0x254, 0x3b, 0x6a, 0x6f, 0x6e, 0x3b, +0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e, 0x254, 0x302, 0x79, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e, 0x6a, 0x61, 0x14b, 0x67, +0x75, 0x6d, 0x62, 0x61, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0xfb, 0x6d, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x14b, 0x67, +0xea, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6d, 0x62, 0x254, 0x6b, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6b, 0x254, 0x254, +0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6a, 0xf4, 0x6e, 0x3b, 0x6e, 0x3b, 0x6e, 0x3b, 0x75, 0x3b, 0x14b, 0x3b, 0x6d, 0x3b, +0x6b, 0x3b, 0x6a, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, +0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, +0x73, 0x69, 0x3b, 0x41, 0x6c, 0x7a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x3b, 0x48, 0x3b, 0x54, +0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x53, 0x3b, 0xe9, 0x74, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0x3b, 0x6b, +0x77, 0x61, 0x3b, 0x6d, 0x75, 0x6b, 0x3b, 0x14b, 0x67, 0x69, 0x3b, 0x257, 0xf3, 0x6e, 0x3b, 0x65, 0x73, 0x61, 0x3b, 0xe9, +0x74, 0x69, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x6b, 0x77, 0x61, 0x73, 0xfa, 0x3b, 0x6d, 0x75, 0x6b, 0x254, 0x301, +0x73, 0xfa, 0x3b, 0x14b, 0x67, 0x69, 0x73, 0xfa, 0x3b, 0x257, 0xf3, 0x6e, 0x25b, 0x73, 0xfa, 0x3b, 0x65, 0x73, 0x61, 0x253, +0x61, 0x73, 0xfa, 0x3b, 0x65, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x14b, 0x3b, 0x257, 0x3b, 0x65, 0x3b, 0x44, 0x69, +0x6d, 0x3b, 0x54, 0x65, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x41, 0x72, +0x6a, 0x3b, 0x53, 0x69, 0x62, 0x3b, 0x44, 0x69, 0x6d, 0x61, 0x73, 0x3b, 0x54, 0x65, 0x6e, 0x65, 0x14b, 0x3b, 0x54, 0x61, +0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x79, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x73, 0x61, +0x79, 0x3b, 0x41, 0x72, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x53, 0x69, 0x62, 0x69, 0x74, 0x69, 0x3b, 0x44, 0x3b, 0x54, 0x3b, +0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x3b, +0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d, 0x6e, 0x3b, 0x66, 0xfa, 0x6c, 0x3b, 0x73, 0xe9, 0x72, 0x3b, +0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, +0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x62, 0x25b, 0x30c, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, +0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6c, 0x25b, 0x301, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, +0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6e, 0x79, 0x69, 0x3b, 0x66, 0xfa, 0x6c, 0x61, 0x64, 0xe9, 0x3b, 0x73, 0xe9, +0x72, 0x61, 0x64, 0xe9, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x66, 0x3b, 0x73, 0x3b, 0x73, +0x254, 0x301, 0x6e, 0x3b, 0x6c, 0x1dd, 0x6e, 0x3b, 0x6d, 0x61, 0x61, 0x3b, 0x6d, 0x25b, 0x6b, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x3b, +0x6a, 0xfa, 0x6d, 0x3b, 0x73, 0x61, 0x6d, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x1dd, 0x3b, 0x6c, 0x1dd, 0x6e, 0x64, 0xed, +0x3b, 0x6d, 0x61, 0x61, 0x64, 0xed, 0x3b, 0x6d, 0x25b, 0x6b, 0x72, 0x25b, 0x64, 0xed, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x64, 0xed, +0x3b, 0x6a, 0xfa, 0x6d, 0x62, 0xe1, 0x3b, 0x73, 0x61, 0x6d, 0x64, 0xed, 0x3b, 0x73, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, +0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, +0x74, 0x6e, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x74, +0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, +0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, +0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x53, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, +0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0x43, 0x79, 0x61, 0x3b, 0x43, 0x6c, 0x61, 0x3b, 0x43, 0x7a, 0x69, 0x3b, +0x43, 0x6b, 0x6f, 0x3b, 0x43, 0x6b, 0x61, 0x3b, 0x43, 0x67, 0x61, 0x3b, 0x43, 0x7a, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x2019, +0x79, 0x61, 0x6b, 0x6b, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x6c, 0x61, 0x61, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x7a, +0x79, 0x69, 0x69, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x6b, 0x6f, 0x6c, 0x6c, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x6b, +0x61, 0x6c, 0x64, 0x1dd, 0x253, 0x6c, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x67, 0x61, 0x69, 0x73, 0x75, 0x75, 0x3b, 0x43, +0x6f, 0x6d, 0x7a, 0x79, 0x65, 0x253, 0x73, 0x75, 0x75, 0x3b, 0x59, 0x3b, 0x4c, 0x3b, 0x5a, 0x3b, 0x4f, 0x3b, 0x41, 0x3b, +0x47, 0x3b, 0x45, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, +0x6c, 0x3b, 0x73, 0x6d, 0x6e, 0x3b, 0x6d, 0x62, 0x73, 0x3b, 0x73, 0x61, 0x73, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, +0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, +0x6d, 0xe1, 0x62, 0x61, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6c, +0x61, 0x6c, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6e, 0x61, 0x3b, +0x6d, 0x61, 0x62, 0xe1, 0x67, 0xe1, 0x20, 0x6d, 0xe1, 0x20, 0x73, 0x75, 0x6b, 0x75, 0x6c, 0x3b, 0x73, 0xe1, 0x73, 0x61, +0x64, 0x69, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x43, 0xe4, 0x14b, +0x3b, 0x4a, 0x69, 0x65, 0x63, 0x3b, 0x52, 0x25b, 0x77, 0x3b, 0x44, 0x69, 0x254, 0x331, 0x6b, 0x3b, 0x14a, 0x75, 0x61, 0x61, +0x6e, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x3b, 0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x3b, 0x43, 0xe4, 0x14b, 0x20, 0x6b, +0x75, 0x254, 0x74, 0x68, 0x3b, 0x4a, 0x69, 0x65, 0x63, 0x20, 0x6c, 0x61, 0x331, 0x74, 0x3b, 0x52, 0x25b, 0x77, 0x20, 0x6c, +0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, 0x69, 0x254, 0x331, 0x6b, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x14a, 0x75, 0x61, +0x61, 0x6e, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x20, 0x6c, 0xe4, 0x74, 0x6e, +0x69, 0x3b, 0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x43, 0x3b, 0x4a, 0x3b, 0x52, 0x3b, +0x44, 0x3b, 0x14a, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x411, 0x441, 0x3b, 0x411, 0x43d, 0x3b, 0x41e, 0x43f, 0x3b, 0x421, 0x44d, 0x3b, +0x427, 0x43f, 0x3b, 0x411, 0x44d, 0x3b, 0x421, 0x431, 0x3b, 0x411, 0x430, 0x441, 0x43a, 0x44b, 0x4bb, 0x44b, 0x430, 0x43d, 0x43d, 0x44c, +0x430, 0x3b, 0x411, 0x44d, 0x43d, 0x438, 0x434, 0x438, 0x44d, 0x43b, 0x438, 0x43d, 0x43d, 0x44c, 0x438, 0x43a, 0x3b, 0x41e, 0x43f, 0x442, +0x443, 0x43e, 0x440, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x43a, 0x3b, 0x421, 0x44d, 0x440, 0x44d, 0x434, 0x44d, 0x3b, 0x427, 0x44d, 0x43f, +0x43f, 0x438, 0x44d, 0x440, 0x3b, 0x411, 0x44d, 0x44d, 0x442, 0x438, 0x4a5, 0x441, 0x44d, 0x3b, 0x421, 0x443, 0x431, 0x443, 0x43e, 0x442, +0x430, 0x3b, 0x411, 0x3b, 0x411, 0x3b, 0x41e, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x411, 0x3b, 0x421, 0x3b, 0x4d, 0x75, 0x6c, 0x3b, +0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, +0x4a, 0x6d, 0x6f, 0x3b, 0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, +0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, +0x61, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, +0x6f, 0x73, 0x69, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0xa55e, 0xa54c, +0xa535, 0x3b, 0xa5f3, 0xa5e1, 0xa609, 0x3b, 0xa55a, 0xa55e, 0xa55a, 0x3b, 0xa549, 0xa55e, 0xa552, 0x3b, 0xa549, 0xa524, 0xa546, 0xa562, 0x3b, 0xa549, +0xa524, 0xa540, 0xa56e, 0x3b, 0xa53b, 0xa52c, 0xa533, 0x3b, 0x6c, 0x61, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x74, 0x25b, 0x25b, 0x6e, 0x25b, +0x25b, 0x3b, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x62, 0x61, 0x3b, 0x61, 0x69, 0x6d, 0x69, 0x73, +0x61, 0x3b, 0x61, 0x69, 0x6a, 0x69, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x253, 0x69, 0x74, 0x69, 0x3b, 0x53, 0x75, 0x6e, 0x3b, +0x4d, 0xe4, 0x6e, 0x3b, 0x5a, 0x69, 0x161, 0x3b, 0x4d, 0x69, 0x74, 0x3b, 0x46, 0x72, 0xf3, 0x3b, 0x46, 0x72, 0x69, 0x3b, +0x53, 0x61, 0x6d, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0xe4, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x5a, +0x69, 0x161, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, 0x10d, 0x3b, 0x46, 0x72, 0xf3, 0x6e, 0x74, 0x61, +0x67, 0x3b, 0x46, 0x72, 0x69, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x161, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x3b, 0x4d, +0x3b, 0x5a, 0x3b, 0x4d, 0x3b, 0x46, 0x3b, 0x46, 0x3b, 0x53, 0x3b, 0x73, 0x64, 0x3b, 0x6d, 0x64, 0x3b, 0x6d, 0x77, 0x3b, +0x65, 0x74, 0x3b, 0x6b, 0x6c, 0x3b, 0x66, 0x6c, 0x3b, 0x73, 0x73, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x25b, 0x3b, +0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, 0x3b, 0x6d, 0x75, 0xe1, 0x6e, 0x79, 0xe1, 0x14b, 0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, +0x3b, 0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70, 0xed, 0xe1, 0x70, 0x25b, 0x3b, 0x6b, 0xfa, 0x70, 0xe9, 0x6c, 0x69, 0x6d, 0x65, +0x74, 0xfa, 0x6b, 0x70, 0x69, 0x61, 0x70, 0x25b, 0x3b, 0x66, 0x65, 0x6c, 0xe9, 0x74, 0x65, 0x3b, 0x73, 0xe9, 0x73, 0x65, +0x6c, 0xe9, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, 0x6b, 0x3b, 0x66, 0x3b, 0x73, 0x3b, 0x64, 0x6f, 0x6d, +0x3b, 0x6c, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0xe9, 0x3b, 0x78, 0x75, 0x65, 0x3b, 0x76, 0x69, 0x65, +0x3b, 0x73, 0xe1, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x6c, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x3b, +0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d, 0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x78, 0x75, 0x65, +0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x3b, 0x53, +0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0xc1, 0x70, 0x74, 0x61, 0x20, 0x4d, 0x254, +0x301, 0x6e, 0x64, 0x69, 0x3b, 0x57, 0x25b, 0x301, 0x6e, 0x25b, 0x73, 0x25b, 0x64, 0x25b, 0x3b, 0x54, 0x254, 0x301, 0x73, 0x25b, +0x64, 0x25b, 0x3b, 0x46, 0x25b, 0x6c, 0xe2, 0x79, 0x25b, 0x64, 0x25b, 0x3b, 0x53, 0xe1, 0x73, 0x69, 0x64, 0x25b, 0x3b, 0x53, +0x254, 0x301, 0x3b, 0x4d, 0x254, 0x301, 0x3b, 0xc1, 0x4d, 0x3b, 0x57, 0x25b, 0x301, 0x3b, 0x54, 0x254, 0x301, 0x3b, 0x46, 0x25b, +0x3b, 0x53, 0xe1, 0x3b, 0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, +0x69, 0x3b, 0x6d, 0x25b, 0x72, 0x6b, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b, 0x79, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x61, 0x14b, +0x64, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b, 0x6d, 0x254, 0x6e, 0x254, 0x20, 0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b, 0x73, 0x6f, +0x3b, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x25b, 0x3b, 0x79, 0x65, 0x3b, 0x76, 0x61, 0x3b, 0x6d, 0x73, 0x3b, 0x41, +0x6e, 0x65, 0x67, 0x20, 0x31, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x32, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x33, 0x3b, +0x41, 0x6e, 0x65, 0x67, 0x20, 0x34, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x35, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x36, +0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x37, 0x3b, 0x41, 0x31, 0x3b, 0x41, 0x32, 0x3b, 0x41, 0x33, 0x3b, 0x41, 0x34, 0x3b, +0x41, 0x35, 0x3b, 0x41, 0x36, 0x3b, 0x41, 0x37, 0x3b, 0x6c, 0x79, 0x25b, 0x2bc, 0x25b, 0x301, 0x20, 0x73, 0x1e85, 0xed, 0x14b, +0x74, 0xe8, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301, 0x254, 0x6e, +0x74, 0xe8, 0x20, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x74, 0x73, 0xe8, 0x74, 0x73, 0x25b, +0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301, 0x254, 0x6e, 0x74, 0xe8, 0x20, 0x74, 0x73, +0x65, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6d, 0xe0, +0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0xe0, 0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, +0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x77, 0x61, 0x6b, 0x21f, 0x61, 0x14b, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x77, +0x61, 0x14b, 0x17e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x6e, 0x75, 0x14b, 0x70, 0x61, 0x3b, 0x41, 0x14b, 0x70, +0xe9, 0x74, 0x75, 0x79, 0x61, 0x6d, 0x6e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x74, 0x6f, 0x70, 0x61, 0x3b, +0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x7a, 0x61, 0x70, 0x74, 0x61, 0x14b, 0x3b, 0x4f, 0x77, 0xe1, 0x14b, 0x67, 0x79, 0x75, +0x17e, 0x61, 0x17e, 0x61, 0x70, 0x69, 0x3b, 0x41, 0x3b, 0x57, 0x3b, 0x4e, 0x3b, 0x59, 0x3b, 0x54, 0x3b, 0x5a, 0x3b, 0x4f, +0x3b, 0x2d30, 0x2d59, 0x2d30, 0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, 0x2d59, +0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, +0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x3b, 0x6cc, 0x6d5, 0x6a9, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x62f, 0x648, +0x648, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x633, 0x6ce, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x686, 0x648, 0x627, 0x631, 0x634, +0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x67e, 0x6ce, 0x646, 0x62c, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x6be, 0x6d5, 0x6cc, 0x646, 0x6cc, +0x3b, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x6be, 0x3b, 0x634, +0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x61, 0x142, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x73, 0x74, 0x77, +0x3b, 0x70, 0x11b, 0x74, 0x3b, 0x73, 0x6f, 0x62, 0x3b, 0x6e, 0x6a, 0x65, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, +0x6a, 0x65, 0x17a, 0x65, 0x6c, 0x65, 0x3b, 0x77, 0x61, 0x142, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, 0x6f, 0x64, +0x61, 0x3b, 0x73, 0x74, 0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, 0x70, 0x11b, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, +0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, +0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x75, 0x74, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x161, 0x74, 0x77, 0x3b, 0x70, 0x6a, 0x61, 0x3b, +0x73, 0x6f, 0x62, 0x3b, 0x6e, 0x6a, 0x65, 0x64, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, 0x64, 0x17a, 0x65, 0x6c, +0x61, 0x3b, 0x77, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74, 0x77, 0xf3, +0x72, 0x74, 0x6b, 0x3b, 0x70, 0x6a, 0x61, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, +0x3b, 0x77, 0x3b, 0x73, 0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x70, 0x61, 0x3b, 0x76, 0x75, 0x3b, 0x6d, 0x61, 0x3b, +0x6b, 0x6f, 0x3b, 0x74, 0x75, 0x3b, 0x76, 0xe1, 0x3b, 0x6c, 0xe1, 0x3b, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x69, 0x76, +0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x72, 0x67, +0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b, 0x6f, 0x6b, 0x6b, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72, 0xe2, 0x73, 0x74, 0xe2, 0x68, +0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70, 0x70, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64, 0xe2, +0x68, 0x3b, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x61, +0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b, 0x6f, +0x68, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72, 0xe2, 0x73, 0x74, 0x75, 0x76, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70, 0x70, +0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64, 0x75, 0x76, 0x3b, 0x50, 0x3b, 0x56, 0x3b, 0x4d, +0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x56, 0x3b, 0x4c, 0x3b +}; + +static const ushort am_data[] = { +0x41, 0x4d, 0x57, 0x44, 0x76, 0x6d, 0x2e, 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x64, 0x69, 0x74, 0x65, 0x73, 0x1325, 0x12cb, +0x1275, 0x635, 0x9aa, 0x9c2, 0x9f0, 0x9cd, 0x9ac, 0x9be, 0x9b9, 0x9cd, 0x9a3, 0x9aa, 0x9c2, 0x9b0, 0x9cd, 0x9ac, 0x9be, 0x9b9, 0x9cd, 0x9a3, +0xf66, 0xf94, 0xf0b, 0xf46, 0xf0b, 0x41, 0x2e, 0x4d, 0x2e, 0x43f, 0x440, 0x2e, 0x43e, 0x431, 0x2e, 0x1014, 0x1036, 0x1014, 0x1000, 0x103a, +0x434, 0x430, 0x20, 0x43f, 0x430, 0x45e, 0x434, 0x43d, 0x44f, 0x1796, 0x17d2, 0x179a, 0x17b9, 0x1780, 0x61, 0x2e, 0x20, 0x6d, 0x2e, 0x4e0a, +0x5348, 0x64, 0x6f, 0x70, 0x2e, 0x61, 0x2e, 0x6d, 0x2e, 0x61, 0x6d, 0x61, 0x70, 0x2e, 0x6d, 0x76, 0x6f, 0x72, 0x6d, 0x2e, +0x3c0, 0x2e, 0x3bc, 0x2e, 0x5dc, 0x5e4, 0x5e0, 0x5d4, 0x5f4, 0x5e6, 0x92a, 0x942, 0x930, 0x94d, 0x935, 0x93e, 0x939, 0x94d, 0x928, 0x64, +0x65, 0x2e, 0x66, 0x2e, 0x68, 0x2e, 0x5348, 0x524d, 0xcaa, 0xcc2, 0xcb0, 0xccd, 0xcb5, 0xcbe, 0xcb9, 0xccd, 0xca8, 0x442, 0x430, 0x4a3, +0x493, 0x44b, 0x442, 0x430, 0x4a3, 0x43a, 0x44b, 0xc624, 0xc804, 0x5a, 0x2e, 0x4d, 0x55, 0x2e, 0xe81, 0xec8, 0xead, 0xe99, 0xe97, 0xec8, +0xebd, 0xe87, 0x70, 0x72, 0x69, 0x65, 0x6b, 0x161, 0x70, 0x75, 0x73, 0x64, 0x69, 0x65, 0x6e, 0x101, 0x6e, 0x74, 0x254, 0x301, +0x6e, 0x67, 0x254, 0x301, 0x70, 0x72, 0x69, 0x65, 0x161, 0x70, 0x69, 0x65, 0x74, 0x43f, 0x440, 0x435, 0x442, 0x43f, 0x43b, 0x430, +0x434, 0x43d, 0x435, 0x50, 0x47, 0x92e, 0x2e, 0x92a, 0x942, 0x2e, 0x4ae, 0x4e8, 0x63a, 0x2e, 0x645, 0x2e, 0x642, 0x628, 0x644, 0x200c, +0x627, 0x632, 0x638, 0x647, 0x631, 0x64, 0x61, 0x20, 0x6d, 0x61, 0x6e, 0x68, 0xe3, 0xa2a, 0xa42, 0x2e, 0xa26, 0xa41, 0x2e, 0x414, +0x41f, 0x4e, 0x44, 0x43f, 0x440, 0x435, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x70, 0x72, 0x65, 0x20, 0x70, 0x6f, 0x64, 0x6e, +0x65, 0x4d5, 0x43c, 0x431, 0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x440, 0x430, 0x437, 0x43c, 0x4d5, 0xdb4, 0xdd9, 0x2e, 0xdc0, +0x2e, 0x73, 0x6e, 0x2e, 0x79, 0x61, 0x20, 0x61, 0x73, 0x75, 0x62, 0x75, 0x79, 0x69, 0x66, 0x6d, 0xbae, 0xbc1, 0xbb1, 0xbcd, +0xbaa, 0xb95, 0xbb2, 0xbcd, 0x5b, 0x41, 0x4d, 0x5d, 0xe01, 0xe48, 0xe2d, 0xe19, 0xe40, 0xe17, 0xe35, 0xe48, 0xe22, 0xe07, 0xf66, 0xf94, +0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x1295, 0x1309, 0x1206, 0x20, 0x1230, 0x12d3, 0x1270, 0xd6, 0xd6, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646, +0x20, 0x628, 0x6c7, 0x631, 0x6c7, 0x646, 0x434, 0x43f, 0x642, 0x628, 0x644, 0x20, 0x62f, 0x648, 0x67e, 0x6c1, 0x631, 0x54, 0x4f, 0x53, +0x41, 0xc0, 0xe1, 0x72, 0x1ecd, 0x300, 0xc0, 0xe1, 0x72, 0x254, 0x300, 0x66, 0x6f, 0x72, 0x6d, 0x69, 0x64, 0x64, 0x61, 0x67, +0x70, 0x72, 0x69, 0x6a, 0x65, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x41, 0x4e, 0x128, 0x79, 0x61, 0x6b, 0x77, 0x61, 0x6b, +0x79, 0x61, 0x61, 0x2e, 0x14b, 0x64, 0x69, 0xa3b8, 0xa111, 0x69, 0x111, 0x69, 0x74, 0x62, 0x65, 0x61, 0x69, 0x76, 0x65, 0x74, +0x4d, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x4c, 0x75, 0x6d, 0x61, 0x20, 0x6c, 0x77, 0x61, 0x20, 0x4b, 0x73, 0x75, 0x62, 0x61, +0x6b, 0x61, 0x4b, 0x69, 0x72, 0x6f, 0x6b, 0x6f, 0x54, 0x65, 0x73, 0x69, 0x72, 0x61, 0x6e, 0x6b, 0x61, 0x6e, 0x67, 0x2019, +0x61, 0x6d, 0x61, 0x2d5c, 0x2d49, 0x2d3c, 0x2d30, 0x2d61, 0x2d5c, 0x74, 0x69, 0x66, 0x61, 0x77, 0x74, 0x6e, 0x20, 0x74, 0x75, 0x66, +0x61, 0x74, 0x70, 0x61, 0x6d, 0x69, 0x6c, 0x61, 0x75, 0x75, 0x74, 0x75, 0x6b, 0x6f, 0x4b, 0x49, 0x13cc, 0x13be, 0x13b4, 0x4d, +0x75, 0x68, 0x69, 0x54, 0x4f, 0x4f, 0x75, 0x6c, 0x75, 0x63, 0x68, 0x65, 0x6c, 0x6f, 0x52, 0x168, 0x6b, 0x61, 0x72, 0x6f, +0x6f, 0x6e, 0x1c1, 0x67, 0x6f, 0x61, 0x67, 0x61, 0x73, 0x55, 0x68, 0x72, 0x20, 0x76, 0xf6, 0x72, 0x6d, 0x69, 0x64, 0x64, +0x61, 0x61, 0x63, 0x68, 0x73, 0x190, 0x6e, 0x6b, 0x61, 0x6b, 0x25b, 0x6e, 0x79, 0xe1, 0x4d, 0x75, 0x6e, 0x6b, 0x79, 0x6f, +0x69, 0x63, 0x68, 0x65, 0x68, 0x65, 0x61, 0x76, 0x6f, 0x54, 0x61, 0x70, 0x61, 0x72, 0x61, 0x63, 0x68, 0x75, 0x41, 0x64, +0x64, 0x75, 0x68, 0x61, 0x4f, 0x44, 0x5a, 0x64, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x61, 0x6c, 0x6d, 0x61, 0x6b, 0x65, 0x6f, +0x92b, 0x941, 0x902, 0x44, 0x69, 0x6e, 0x64, 0x61, 0x6d, 0x6f, 0x69, 0x65, 0x73, 0x61, 0x2e, 0x67, 0x49, 0x20, 0x62, 0x69, +0x6b, 0x25b, 0x302, 0x67, 0x6c, 0xe0, 0x53, 0x75, 0x62, 0x62, 0x61, 0x61, 0x68, 0x69, 0x69, 0x64, 0x69, 0x253, 0x61, 0x6b, +0xed, 0x6b, 0xed, 0x72, 0xed, 0x67, 0x73, 0xe1, 0x72, 0xfa, 0x77, 0xe1, 0x77, 0x69, 0x63, 0x68, 0x69, 0x73, 0x68, 0x75, +0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6d, 0x61, 0x6e, 0xe1, 0x52, 0x57, 0x42d, 0x418, 0x4c, 0x77, 0x61, 0x6d, 0x69, 0x6c, 0x61, +0x77, 0x75, 0x6b, 0x69, 0x25b, 0x6d, 0x25b, 0x301, 0x25b, 0x6d, 0x64, 0x65, 0x20, 0x6c, 0x61, 0x20, 0x6d, 0x61, 0xf1, 0x61, +0x6e, 0x61, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62, 0x61, 0x2bc, 0xe1, 0x6d, 0x62, 0x61, 0x2bc, 0x64, +0x6f, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x61 +}; + +static const ushort pm_data[] = { +0x50, 0x4d, 0x57, 0x42, 0x6e, 0x6d, 0x2e, 0x65, 0x20, 0x70, 0x61, 0x73, 0x64, 0x69, 0x74, 0x65, 0x73, 0x12a8, 0x1230, 0x12d3, +0x1275, 0x645, 0x985, 0x9aa, 0x9f0, 0x9be, 0x9b9, 0x9cd, 0x9a3, 0x985, 0x9aa, 0x9b0, 0x9be, 0x9b9, 0x9cd, 0x9a3, 0xf55, 0xfb1, 0xf72, 0xf0b, +0xf46, 0xf0b, 0x47, 0x2e, 0x4d, 0x2e, 0x441, 0x43b, 0x2e, 0x43e, 0x431, 0x2e, 0x100a, 0x1014, 0x1031, 0x43f, 0x430, 0x441, 0x43b, 0x44f, +0x20, 0x43f, 0x430, 0x45e, 0x434, 0x43d, 0x44f, 0x179b, 0x17d2, 0x1784, 0x17b6, 0x1785, 0x70, 0x2e, 0x20, 0x6d, 0x2e, 0x4e0b, 0x5348, 0x6f, +0x64, 0x70, 0x2e, 0x70, 0x2e, 0x6d, 0x2e, 0x70, 0x6d, 0x69, 0x70, 0x2e, 0x66, 0x6e, 0x61, 0x63, 0x68, 0x6d, 0x2e, 0x3bc, +0x2e, 0x3bc, 0x2e, 0x5d0, 0x5d7, 0x5d4, 0x5f4, 0x5e6, 0x905, 0x92a, 0x930, 0x93e, 0x939, 0x94d, 0x928, 0x64, 0x75, 0x2e, 0x65, 0x2e, +0x68, 0x2e, 0x5348, 0x5f8c, 0xc85, 0xcaa, 0xcb0, 0xcbe, 0xcb9, 0xccd, 0xca8, 0x442, 0x4af, 0x441, 0x43a, 0x456, 0x2f, 0x43a, 0x435, 0x448, +0x43a, 0x456, 0x442, 0x4af, 0x448, 0x442, 0x4e9, 0x43d, 0x20, 0x43a, 0x438, 0x439, 0x438, 0x43d, 0x43a, 0x438, 0xc624, 0xd6c4, 0x5a, 0x2e, +0x4d, 0x57, 0x2e, 0xeab, 0xebc, 0xeb1, 0xe87, 0xe97, 0xec8, 0xebd, 0xe87, 0x70, 0x113, 0x63, 0x70, 0x75, 0x73, 0x64, 0x69, 0x65, +0x6e, 0x101, 0x6d, 0x70, 0xf3, 0x6b, 0x77, 0x61, 0x70, 0x6f, 0x70, 0x69, 0x65, 0x74, 0x43f, 0x43e, 0x43f, 0x43b, 0x430, 0x434, +0x43d, 0x435, 0x50, 0x54, 0x47, 0x92e, 0x2e, 0x909, 0x2e, 0x4ae, 0x425, 0x63a, 0x2e, 0x648, 0x2e, 0x628, 0x639, 0x62f, 0x627, 0x632, +0x638, 0x647, 0x631, 0x64, 0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65, 0xa2c, 0xa3e, 0x2e, 0xa26, 0xa41, 0x2e, 0x73, 0x6d, 0x41f, +0x41f, 0x4c, 0x4b, 0x43f, 0x43e, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x70, 0x6f, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x4d5, +0x43c, 0x431, 0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x444, 0x4d5, 0x441, 0x442, 0x4d5, 0xdb4, 0x2e, 0xdc0, 0x2e, 0x70, 0x6f, +0x70, 0x2e, 0x67, 0x6e, 0x2e, 0x79, 0x61, 0x20, 0x6d, 0x75, 0x63, 0x68, 0x61, 0x6e, 0x61, 0x65, 0x6d, 0xbaa, 0xbbf, 0xbb1, +0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, 0x5b, 0x50, 0x4d, 0x5d, 0xe2b, 0xe25, 0xe31, 0xe07, 0xe40, 0xe17, 0xe35, 0xe48, 0xe22, 0xe07, 0xf55, +0xfb1, 0xf72, 0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x12f5, 0x1215, 0x122d, 0x20, 0x1230, 0x12d3, 0x1275, 0xd6, 0x53, 0x686, 0x6c8, 0x634, 0x62a, +0x649, 0x646, 0x20, 0x643, 0x6d0, 0x64a, 0x649, 0x646, 0x43f, 0x43f, 0x628, 0x639, 0x62f, 0x20, 0x62f, 0x648, 0x67e, 0x6c1, 0x631, 0x54, +0x4b, 0x43, 0x48, 0x1ecc, 0x300, 0x73, 0xe1, 0x6e, 0x186, 0x300, 0x73, 0xe1, 0x6e, 0x65, 0x74, 0x74, 0x65, 0x72, 0x6d, 0x69, +0x64, 0x64, 0x61, 0x67, 0x70, 0x6f, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x43f, 0x43e, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x45, 0x57, +0x92e, 0x2e, 0x928, 0x902, 0x2e, 0x50, 0x2e, 0x4d, 0x2e, 0x128, 0x79, 0x61, 0x77, 0x129, 0x6f, 0x6f, 0x70, 0x2e, 0x263, 0x65, +0x74, 0x72, 0x254, 0x6e, 0x61, 0x6d, 0x2e, 0xa06f, 0xa2d2, 0x65, 0x61, 0x68, 0x6b, 0x65, 0x74, 0x62, 0x65, 0x61, 0x69, 0x76, +0x65, 0x74, 0x4d, 0x6f, 0x67, 0x6c, 0x75, 0x6d, 0x61, 0x20, 0x6c, 0x77, 0x61, 0x20, 0x70, 0x6b, 0x69, 0x6b, 0x69, 0x69, +0x257, 0x65, 0x48, 0x77, 0x61, 0x129, 0x2d, 0x69, 0x6e, 0x129, 0x54, 0x65, 0x69, 0x70, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x6f, +0x74, 0x6f, 0x2d5c, 0x2d30, 0x2d37, 0x2d33, 0x2d33, 0x2d6f, 0x2d30, 0x2d5c, 0x74, 0x61, 0x64, 0x67, 0x67, 0x2b7, 0x61, 0x74, 0x6e, 0x20, +0x74, 0x6d, 0x65, 0x64, 0x64, 0x69, 0x74, 0x70, 0x61, 0x6d, 0x75, 0x6e, 0x79, 0x69, 0x6b, 0x79, 0x69, 0x75, 0x6b, 0x6f, +0x6e, 0x79, 0x69, 0x55, 0x54, 0x13d2, 0x13af, 0x13f1, 0x13a2, 0x13d7, 0x13e2, 0x43, 0x68, 0x69, 0x6c, 0x6f, 0x4d, 0x55, 0x55, 0x61, +0x6b, 0x61, 0x73, 0x75, 0x62, 0x61, 0x168, 0x47, 0x6b, 0x6f, 0x6f, 0x73, 0x6b, 0x6f, 0x6c, 0x69, 0x6e, 0x79, 0x1c3, 0x75, +0x69, 0x61, 0x73, 0x55, 0x68, 0x72, 0x20, 0x6e, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x73, 0x190, +0x6e, 0x64, 0xe1, 0x6d, 0xe2, 0x45, 0x69, 0x67, 0x75, 0x6c, 0x6f, 0x69, 0x63, 0x68, 0x61, 0x6d, 0x74, 0x68, 0x69, 0x45, +0x62, 0x6f, 0x6e, 0x67, 0x69, 0x41, 0x6c, 0x75, 0x75, 0x6c, 0x61, 0x4f, 0x54, 0x1e0c, 0x65, 0x66, 0x66, 0x69, 0x72, 0x20, +0x61, 0x7a, 0x61, 0x6e, 0x79, 0x69, 0x61, 0x67, 0x68, 0x75, 0x6f, 0x92c, 0x947, 0x932, 0x93e, 0x938, 0x947, 0x44, 0x69, 0x6c, +0x6f, 0x6c, 0x6f, 0x6e, 0x6f, 0x6d, 0xeb, 0x74, 0x74, 0x65, 0x73, 0x61, 0x2e, 0x6b, 0x49, 0x20, 0x253, 0x75, 0x67, 0x61, +0x6a, 0x254, 0x70, 0x5a, 0x61, 0x61, 0x72, 0x69, 0x6b, 0x61, 0x79, 0x20, 0x62, 0x65, 0x62, 0x79, 0xe1, 0x6d, 0x75, 0x6e, +0x67, 0x259, 0x67, 0xf3, 0x67, 0x259, 0x6c, 0x65, 0x63, 0x25b, 0x25b, 0x301, 0x6e, 0x6b, 0x6f, 0x6d, 0x63, 0x68, 0x6f, 0x63, +0x68, 0x69, 0x6c, 0x2019, 0x6c, 0x6c, 0x69, 0x6c, 0x6c, 0x69, 0x6b, 0x75, 0x67, 0xfa, 0x54, 0x14a, 0x42d, 0x41a, 0x50, 0x61, +0x73, 0x68, 0x61, 0x6d, 0x69, 0x68, 0x65, 0x6b, 0x69, 0x73, 0x25b, 0x301, 0x6e, 0x64, 0x25b, 0x64, 0x65, 0x20, 0x6c, 0x61, +0x20, 0x74, 0x61, 0x72, 0x64, 0x69, 0x14b, 0x6b, 0x61, 0x20, 0x6d, 0x62, 0x254, 0x301, 0x74, 0x20, 0x6e, 0x6a, 0x69, 0x6e, +0x63, 0x77, 0xf2, 0x6e, 0x7a, 0xe9, 0x6d, 0x77, 0xf3, 0x74, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x61, 0x70, 0x6f, 0x70, +0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x75 +}; + +static const ushort currency_symbol_data[] = { +0x42, 0x72, 0x4b, 0x73, 0x68, 0x52, 0x24, 0x4c, 0x65, 0x6b, 0xeb, 0x64, 0x65, 0x6e, 0x20ac, 0x1265, 0x122d, 0x62c, 0x2e, 0x645, +0x2e, 0x200f, 0x62f, 0x2e, 0x62c, 0x2e, 0x200f, 0x62f, 0x2e, 0x628, 0x2e, 0x200f, 0x46, 0x43, 0x46, 0x41, 0x641, 0x2e, 0x62c, 0x2e, +0x642, 0x2e, 0x200f, 0x46, 0x64, 0x6a, 0x4e, 0x66, 0x6b, 0x62f, 0x2e, 0x639, 0x2e, 0x200f, 0x20aa, 0x62f, 0x2e, 0x623, 0x2e, 0x200f, +0x62f, 0x2e, 0x643, 0x2e, 0x200f, 0x644, 0x2e, 0x644, 0x2e, 0x200f, 0x62f, 0x2e, 0x644, 0x2e, 0x200f, 0x623, 0x2e, 0x645, 0x2e, 0x200f, +0x62f, 0x2e, 0x645, 0x2e, 0x200f, 0x631, 0x2e, 0x639, 0x2e, 0x200f, 0x631, 0x2e, 0x642, 0x2e, 0x200f, 0x631, 0x2e, 0x633, 0x2e, 0x200f, +0x53, 0x62c, 0x2e, 0x633, 0x2e, 0x644, 0x2e, 0x633, 0x2e, 0x200f, 0x62f, 0x2e, 0x62a, 0x2e, 0x200f, 0x62f, 0x2e, 0x625, 0x2e, 0x200f, +0x631, 0x2e, 0x64a, 0x2e, 0x200f, 0xa3, 0x58f, 0x20b9, 0x20bc, 0x20bd, 0x9f3, 0x4e, 0x75, 0x2e, 0x43b, 0x432, 0x2e, 0x4b, 0x440, 0x2e, +0x17db, 0xffe5, 0x48, 0x4b, 0x24, 0x4d, 0x4f, 0x50, 0x24, 0x48, 0x52, 0x4b, 0x4b, 0x4d, 0x4b, 0x10d, 0x6b, 0x72, 0x2e, 0x41, +0x66, 0x6c, 0x2e, 0x4e, 0x41, 0x66, 0x2e, 0x55, 0x53, 0x24, 0x50, 0x46, 0x42, 0x75, 0x44, 0x47, 0x48, 0x20b5, 0x41, 0x72, +0x4d, 0x4b, 0x52, 0x4d, 0x52, 0x73, 0x20a6, 0x20b1, 0x52, 0x46, 0x57, 0x53, 0x24, 0x53, 0x52, 0x4c, 0x65, 0x45, 0x6b, 0x72, +0x54, 0x53, 0x68, 0x54, 0x24, 0x55, 0x53, 0x68, 0x56, 0x54, 0x44, 0x41, 0x43, 0x46, 0x41, 0x43, 0x46, 0x46, 0x43, 0x46, +0x43, 0x46, 0x50, 0x46, 0x47, 0x47, 0x55, 0x4d, 0x4d, 0x41, 0x44, 0x43, 0x48, 0x46, 0x4c, 0x53, 0x44, 0x54, 0x20be, 0x20b2, +0x46, 0x74, 0x49, 0x53, 0x4b, 0x52, 0x70, 0x43, 0x41, 0x24, 0x20b8, 0x441, 0x43e, 0x43c, 0x20a9, 0x4b, 0x50, 0x57, 0x20ba, 0x20ad, +0x4b, 0x7a, 0x434, 0x435, 0x43d, 0x4e, 0x5a, 0x24, 0x20ae, 0x43, 0x4e, 0xa5, 0x928, 0x947, 0x930, 0x942, 0x60b, 0x631, 0x6cc, 0x627, +0x644, 0x7a, 0x142, 0x52, 0x24, 0x200b, 0x4d, 0x54, 0x6e, 0x44, 0x62, 0x631, 0x53, 0x2f, 0x2e, 0x42, 0x73, 0x52, 0x4f, 0x4e, +0x4c, 0x20b4, 0x52, 0x53, 0x44, 0x41a, 0x41c, 0xdbb, 0xdd4, 0x2e, 0x20a1, 0x52, 0x44, 0x24, 0x51, 0x43, 0x24, 0x42, 0x2f, 0x2e, +0x47, 0x73, 0x2e, 0x42, 0x73, 0x2e, 0x52, 0x73, 0x2e, 0x54, 0x48, 0x42, 0xa5, 0x54, 0x4d, 0x54, 0x73, 0x6f, 0x2bb, 0x6d, +0x441, 0x45e, 0x43c, 0x20ab, 0x4e, 0x54, 0x24, 0x41, 0x24, 0x49, 0x52, 0x52 +}; + +static const ushort currency_display_name_data[] = { +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x74, 0x6f, 0x6f, 0x70, 0x68, 0x69, 0x79, 0x61, 0x61, 0x20, 0x42, 0x69, +0x72, 0x72, 0x69, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x75, 0x69, 0x64, 0x2d, 0x41, 0x66, 0x72, 0x69, +0x6b, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x75, 0x69, 0x64, 0x2d, 0x41, 0x66, +0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x75, 0x69, +0x64, 0x2d, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x3b, 0x4e, 0x61, +0x6d, 0x69, 0x62, 0x69, 0x65, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, +0x62, 0x69, 0x65, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, +0x62, 0x69, 0x65, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x4c, 0x65, 0x6b, 0x75, 0x20, 0x73, 0x68, +0x71, 0x69, 0x70, 0x74, 0x61, 0x72, 0x3b, 0x3b, 0x6c, 0x65, 0x6b, 0x20, 0x73, 0x68, 0x71, 0x69, 0x70, 0x74, 0x61, 0x72, +0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x65, 0x6b, 0xeb, 0x20, 0x73, 0x68, 0x71, 0x69, 0x70, 0x74, 0x61, 0x72, 0x3b, 0x44, 0x65, +0x6e, 0x61, 0x72, 0x69, 0x20, 0x6d, 0x61, 0x71, 0x65, 0x64, 0x6f, 0x6e, 0x61, 0x73, 0x3b, 0x3b, 0x64, 0x65, 0x6e, 0x61, +0x72, 0x20, 0x6d, 0x61, 0x71, 0x65, 0x64, 0x6f, 0x6e, 0x61, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x65, 0x6e, 0x61, 0x72, +0xeb, 0x20, 0x6d, 0x61, 0x71, 0x65, 0x64, 0x6f, 0x6e, 0x61, 0x73, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x6a, 0x61, 0x3b, 0x3b, +0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x12e8, 0x12a2, 0x1275, 0x12ee, 0x1335, 0x12eb, 0x20, +0x1265, 0x122d, 0x3b, 0x3b, 0x12e8, 0x12a2, 0x1275, 0x12ee, 0x1335, 0x12eb, 0x20, 0x1265, 0x122d, 0x3b, 0x3b, 0x3b, 0x3b, 0x12e8, 0x12a2, 0x1275, +0x12ee, 0x1335, 0x12eb, 0x20, 0x1265, 0x122d, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, +0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, +0x647, 0x627, 0x646, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x627, 0x646, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x627, 0x62a, 0x20, 0x645, 0x635, +0x631, 0x64a, 0x629, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x64b, 0x627, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x64b, 0x627, 0x3b, 0x62c, 0x646, +0x64a, 0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, +0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, +0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x627, 0x646, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, +0x64a, 0x627, 0x646, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x629, 0x3b, +0x62f, 0x64a, 0x646, 0x627, 0x631, 0x64b, 0x627, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x64b, 0x627, 0x3b, 0x62f, 0x64a, 0x646, +0x627, 0x631, 0x20, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, +0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, +0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, +0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x629, 0x3b, 0x62f, 0x64a, +0x646, 0x627, 0x631, 0x64b, 0x627, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x64b, 0x627, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, +0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x648, 0x633, 0x637, 0x20, 0x623, 0x641, 0x631, +0x64a, 0x642, 0x64a, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x648, 0x633, 0x637, 0x20, 0x623, 0x641, 0x631, 0x64a, 0x642, 0x64a, 0x3b, +0x641, 0x631, 0x646, 0x643, 0x20, 0x648, 0x633, 0x637, 0x20, 0x623, 0x641, 0x631, 0x64a, 0x642, 0x64a, 0x3b, 0x641, 0x631, 0x646, 0x643, +0x20, 0x648, 0x633, 0x637, 0x20, 0x623, 0x641, 0x631, 0x64a, 0x642, 0x64a, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x648, 0x633, 0x637, +0x20, 0x623, 0x641, 0x631, 0x64a, 0x642, 0x64a, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x648, 0x633, 0x637, 0x20, 0x623, 0x641, 0x631, +0x64a, 0x642, 0x64a, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x648, 0x633, 0x637, 0x20, 0x623, 0x641, 0x631, 0x64a, 0x642, 0x64a, 0x3b, +0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x632, 0x631, 0x20, 0x627, 0x644, 0x642, 0x645, 0x631, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, +0x62c, 0x632, 0x631, 0x20, 0x627, 0x644, 0x642, 0x645, 0x631, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x632, 0x631, 0x20, 0x627, +0x644, 0x642, 0x645, 0x631, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x632, 0x631, 0x20, 0x627, 0x644, 0x642, 0x645, 0x631, 0x3b, +0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x632, 0x631, 0x20, 0x627, 0x644, 0x642, 0x645, 0x631, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, +0x62c, 0x632, 0x631, 0x20, 0x627, 0x644, 0x642, 0x645, 0x631, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x632, 0x631, 0x20, 0x627, +0x644, 0x642, 0x645, 0x631, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, 0x3b, 0x641, 0x631, 0x646, +0x643, 0x20, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, +0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x64a, +0x628, 0x648, 0x62a, 0x64a, 0x3b, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, 0x3b, 0x641, 0x631, 0x646, +0x643, 0x20, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, 0x3b, 0x646, 0x627, 0x643, 0x641, 0x627, 0x20, 0x623, 0x631, 0x64a, 0x62a, 0x631, +0x64a, 0x3b, 0x646, 0x627, 0x643, 0x641, 0x627, 0x20, 0x623, 0x631, 0x64a, 0x62a, 0x631, 0x64a, 0x3b, 0x646, 0x627, 0x643, 0x641, 0x627, +0x20, 0x623, 0x631, 0x64a, 0x62a, 0x631, 0x64a, 0x3b, 0x646, 0x627, 0x643, 0x641, 0x627, 0x20, 0x623, 0x631, 0x64a, 0x62a, 0x631, 0x64a, +0x3b, 0x646, 0x627, 0x643, 0x641, 0x627, 0x20, 0x623, 0x631, 0x64a, 0x62a, 0x631, 0x64a, 0x3b, 0x646, 0x627, 0x643, 0x641, 0x627, 0x20, +0x623, 0x631, 0x64a, 0x62a, 0x631, 0x64a, 0x3b, 0x646, 0x627, 0x643, 0x641, 0x627, 0x20, 0x623, 0x631, 0x64a, 0x62a, 0x631, 0x64a, 0x3b, +0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, +0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, +0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x639, 0x631, 0x627, 0x642, +0x64a, 0x629, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x64b, 0x627, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x64b, 0x627, 0x3b, 0x62f, +0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x3b, 0x634, 0x64a, 0x643, 0x644, 0x20, 0x625, 0x633, 0x631, 0x627, +0x626, 0x64a, 0x644, 0x64a, 0x20, 0x62c, 0x62f, 0x64a, 0x62f, 0x3b, 0x634, 0x64a, 0x643, 0x644, 0x20, 0x625, 0x633, 0x631, 0x627, 0x626, +0x64a, 0x644, 0x64a, 0x20, 0x62c, 0x62f, 0x64a, 0x62f, 0x3b, 0x634, 0x64a, 0x643, 0x644, 0x20, 0x625, 0x633, 0x631, 0x627, 0x626, 0x64a, +0x644, 0x64a, 0x20, 0x62c, 0x62f, 0x64a, 0x62f, 0x3b, 0x634, 0x64a, 0x643, 0x644, 0x20, 0x625, 0x633, 0x631, 0x627, 0x626, 0x64a, 0x644, +0x64a, 0x20, 0x62c, 0x62f, 0x64a, 0x62f, 0x3b, 0x634, 0x64a, 0x643, 0x644, 0x20, 0x625, 0x633, 0x631, 0x627, 0x626, 0x64a, 0x644, 0x64a, +0x20, 0x62c, 0x62f, 0x64a, 0x62f, 0x3b, 0x634, 0x64a, 0x643, 0x644, 0x20, 0x625, 0x633, 0x631, 0x627, 0x626, 0x64a, 0x644, 0x64a, 0x20, +0x62c, 0x62f, 0x64a, 0x62f, 0x3b, 0x634, 0x64a, 0x643, 0x644, 0x20, 0x625, 0x633, 0x631, 0x627, 0x626, 0x64a, 0x644, 0x64a, 0x20, 0x62c, +0x62f, 0x64a, 0x62f, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, +0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, +0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x627, 0x62a, 0x20, +0x623, 0x631, 0x62f, 0x646, 0x64a, 0x629, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x64b, 0x627, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, +0x64b, 0x627, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, +0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, +0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, +0x62a, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x629, 0x3b, 0x62f, 0x64a, +0x646, 0x627, 0x631, 0x64b, 0x627, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x64b, 0x627, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, +0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, +0x64a, 0x647, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, +0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x629, 0x20, 0x644, +0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, +0x64a, 0x647, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, +0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, +0x628, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x627, 0x646, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x627, 0x646, 0x3b, 0x62f, 0x64a, +0x646, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x629, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x64b, 0x627, 0x20, +0x644, 0x64a, 0x628, 0x64a, 0x64b, 0x627, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x3b, 0x623, 0x648, +0x642, 0x64a, 0x629, 0x20, 0x645, 0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646, 0x64a, 0x629, 0x3b, 0x623, 0x648, 0x642, 0x64a, 0x629, 0x20, +0x645, 0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646, 0x64a, 0x629, 0x3b, 0x623, 0x648, 0x642, 0x64a, 0x629, 0x20, 0x645, 0x648, 0x631, 0x64a, +0x62a, 0x627, 0x646, 0x64a, 0x629, 0x3b, 0x623, 0x648, 0x642, 0x64a, 0x629, 0x20, 0x645, 0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646, 0x64a, +0x629, 0x3b, 0x623, 0x648, 0x642, 0x64a, 0x629, 0x20, 0x645, 0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646, 0x64a, 0x629, 0x3b, 0x623, 0x648, +0x642, 0x64a, 0x629, 0x20, 0x645, 0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646, 0x64a, 0x629, 0x3b, 0x623, 0x648, 0x642, 0x64a, 0x629, 0x20, +0x645, 0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646, 0x64a, 0x629, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, +0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, +0x628, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x627, 0x646, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x627, 0x646, 0x3b, 0x62f, 0x631, +0x627, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x629, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x64b, 0x627, 0x20, 0x645, 0x63a, +0x631, 0x628, 0x64a, 0x64b, 0x627, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x3b, 0x631, 0x64a, 0x627, +0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, +0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, +0x3b, 0x631, 0x64a, 0x627, 0x644, 0x627, 0x62a, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x629, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x627, +0x64b, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x64b, 0x627, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, +0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, +0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, +0x3b, 0x631, 0x64a, 0x627, 0x644, 0x627, 0x62a, 0x20, 0x642, 0x637, 0x631, 0x64a, 0x629, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x627, 0x64b, +0x20, 0x642, 0x637, 0x631, 0x64a, 0x64b, 0x627, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642, 0x637, 0x631, 0x64a, 0x3b, 0x631, 0x64a, +0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, +0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, +0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x627, 0x62a, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x629, 0x3b, 0x631, 0x64a, 0x627, 0x644, +0x627, 0x64b, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x64b, 0x627, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, +0x64a, 0x3b, 0x634, 0x644, 0x646, 0x20, 0x635, 0x648, 0x645, 0x627, 0x644, 0x64a, 0x3b, 0x634, 0x644, 0x646, 0x20, 0x635, 0x648, 0x645, +0x627, 0x644, 0x64a, 0x3b, 0x634, 0x644, 0x646, 0x20, 0x635, 0x648, 0x645, 0x627, 0x644, 0x64a, 0x3b, 0x634, 0x644, 0x646, 0x20, 0x635, +0x648, 0x645, 0x627, 0x644, 0x64a, 0x3b, 0x634, 0x644, 0x646, 0x20, 0x635, 0x648, 0x645, 0x627, 0x644, 0x64a, 0x3b, 0x634, 0x644, 0x646, +0x20, 0x635, 0x648, 0x645, 0x627, 0x644, 0x64a, 0x3b, 0x634, 0x644, 0x646, 0x20, 0x635, 0x648, 0x645, 0x627, 0x644, 0x64a, 0x3b, 0x62c, +0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x62f, 0x627, +0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, +0x633, 0x648, 0x62f, 0x627, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x627, 0x62a, 0x20, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x64a, +0x629, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x64b, 0x627, 0x20, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x64a, 0x64b, 0x627, 0x3b, 0x62c, 0x646, +0x64a, 0x647, 0x20, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x64a, 0x3b, 0x644, 0x64a, 0x631, 0x629, 0x20, 0x633, 0x648, 0x631, 0x64a, 0x629, +0x3b, 0x644, 0x64a, 0x631, 0x629, 0x20, 0x633, 0x648, 0x631, 0x64a, 0x629, 0x3b, 0x644, 0x64a, 0x631, 0x629, 0x20, 0x633, 0x648, 0x631, +0x64a, 0x629, 0x3b, 0x644, 0x64a, 0x631, 0x629, 0x20, 0x633, 0x648, 0x631, 0x64a, 0x629, 0x3b, 0x644, 0x64a, 0x631, 0x627, 0x62a, 0x20, +0x633, 0x648, 0x631, 0x64a, 0x629, 0x3b, 0x644, 0x64a, 0x631, 0x629, 0x20, 0x633, 0x648, 0x631, 0x64a, 0x629, 0x3b, 0x644, 0x64a, 0x631, +0x629, 0x20, 0x633, 0x648, 0x631, 0x64a, 0x629, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62a, 0x648, 0x646, 0x633, 0x64a, 0x3b, +0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62a, 0x648, 0x646, 0x633, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62a, 0x648, +0x646, 0x633, 0x64a, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x627, 0x646, 0x20, 0x62a, 0x648, 0x646, 0x633, 0x64a, 0x627, 0x646, 0x3b, +0x62f, 0x64a, 0x646, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x62a, 0x648, 0x646, 0x633, 0x64a, 0x629, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, +0x64b, 0x627, 0x20, 0x62a, 0x648, 0x646, 0x633, 0x64a, 0x64b, 0x627, 0x3b, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62a, 0x648, 0x646, +0x633, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x625, 0x645, 0x627, 0x631, 0x627, 0x62a, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, +0x20, 0x625, 0x645, 0x627, 0x631, 0x627, 0x62a, 0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x625, 0x645, 0x627, 0x631, 0x627, 0x62a, +0x64a, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x625, 0x645, 0x627, 0x631, 0x627, 0x62a, 0x64a, 0x3b, 0x62f, 0x631, 0x627, 0x647, 0x645, +0x20, 0x625, 0x645, 0x627, 0x631, 0x627, 0x62a, 0x64a, 0x629, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x64b, 0x627, 0x20, 0x625, 0x645, 0x627, +0x631, 0x627, 0x62a, 0x64a, 0x64b, 0x627, 0x3b, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x625, 0x645, 0x627, 0x631, 0x627, 0x62a, 0x64a, 0x3b, +0x631, 0x64a, 0x627, 0x644, 0x20, 0x64a, 0x645, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x64a, 0x645, 0x646, 0x64a, 0x3b, +0x631, 0x64a, 0x627, 0x644, 0x20, 0x64a, 0x645, 0x646, 0x64a, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x64a, 0x645, 0x646, 0x64a, 0x3b, +0x631, 0x64a, 0x627, 0x644, 0x627, 0x62a, 0x20, 0x64a, 0x645, 0x646, 0x64a, 0x629, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x627, 0x64b, 0x20, +0x64a, 0x645, 0x646, 0x64a, 0x64b, 0x627, 0x3b, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x64a, 0x645, 0x646, 0x64a, 0x3b, 0x62c, 0x646, 0x64a, +0x647, 0x20, 0x62c, 0x646, 0x648, 0x628, 0x20, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, +0x62c, 0x646, 0x648, 0x628, 0x20, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x62c, 0x646, +0x648, 0x628, 0x20, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x627, 0x646, 0x20, 0x62c, 0x646, +0x648, 0x628, 0x20, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x627, 0x62a, 0x20, 0x62c, 0x646, +0x648, 0x628, 0x20, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x64b, 0x627, 0x20, 0x62c, 0x646, +0x648, 0x628, 0x20, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x3b, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x62c, 0x646, 0x648, 0x628, +0x20, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x3b, 0x540, 0x561, 0x575, 0x56f, 0x561, 0x56f, 0x561, 0x576, 0x20, 0x564, 0x580, +0x561, 0x574, 0x3b, 0x3b, 0x540, 0x561, 0x575, 0x56f, 0x561, 0x56f, 0x561, 0x576, 0x20, 0x564, 0x580, 0x561, 0x574, 0x3b, 0x3b, 0x3b, +0x3b, 0x540, 0x561, 0x575, 0x56f, 0x561, 0x56f, 0x561, 0x576, 0x20, 0x564, 0x580, 0x561, 0x574, 0x3b, 0x41, 0x7a, 0x259, 0x72, 0x62, +0x61, 0x79, 0x63, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x6e, 0x61, 0x74, 0x131, 0x3b, 0x3b, 0x41, 0x7a, 0x259, 0x72, 0x62, 0x61, +0x79, 0x63, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x74, 0x131, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x7a, 0x259, 0x72, 0x62, +0x61, 0x79, 0x63, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x74, 0x131, 0x3b, 0x43c, 0x430, 0x43d, 0x430, 0x442, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x61, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, +0x65, 0x75, 0x72, 0x6f, 0x3b, 0x9ac, 0x9be, 0x982, 0x9b2, 0x9be, 0x9a6, 0x9c7, 0x9b6, 0x9c0, 0x20, 0x99f, 0x9be, 0x995, 0x9be, 0x3b, +0x3b, 0x9ac, 0x9be, 0x982, 0x9b2, 0x9be, 0x9a6, 0x9c7, 0x9b6, 0x9c0, 0x20, 0x99f, 0x9be, 0x995, 0x9be, 0x3b, 0x3b, 0x3b, 0x3b, 0x9ac, +0x9be, 0x982, 0x9b2, 0x9be, 0x9a6, 0x9c7, 0x9b6, 0x9c0, 0x20, 0x99f, 0x9be, 0x995, 0x9be, 0x3b, 0x9ad, 0x9be, 0x9b0, 0x9a4, 0x9c0, 0x9af, +0x9bc, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9bf, 0x3b, 0x3b, 0x9ad, 0x9be, 0x9b0, 0x9a4, 0x9c0, 0x9af, 0x9bc, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9bf, +0x3b, 0x3b, 0x3b, 0x3b, 0x9ad, 0x9be, 0x9b0, 0x9a4, 0x9c0, 0x9af, 0x9bc, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9bf, 0x3b, 0xf51, 0xf44, 0xf74, +0xf63, 0xf0b, 0xf40, 0xfb2, 0xf58, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, +0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x61, 0x20, 0x65, 0x75, 0x72, 0x6f, 0x69, +0x6f, 0xf9, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x411, 0x44a, 0x43b, 0x433, 0x430, 0x440, 0x441, 0x43a, 0x438, 0x20, 0x43b, 0x435, +0x432, 0x3b, 0x3b, 0x431, 0x44a, 0x43b, 0x433, 0x430, 0x440, 0x441, 0x43a, 0x438, 0x20, 0x43b, 0x435, 0x432, 0x3b, 0x3b, 0x3b, 0x3b, +0x431, 0x44a, 0x43b, 0x433, 0x430, 0x440, 0x441, 0x43a, 0x438, 0x20, 0x43b, 0x435, 0x432, 0x430, 0x3b, 0x1019, 0x103c, 0x1014, 0x103a, 0x1019, +0x102c, 0x1000, 0x103b, 0x1015, 0x103a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x1019, 0x103c, 0x1014, 0x103a, 0x1019, 0x102c, 0x1000, 0x103b, 0x1015, +0x103a, 0x3b, 0x431, 0x435, 0x43b, 0x430, 0x440, 0x443, 0x441, 0x43a, 0x456, 0x20, 0x440, 0x443, 0x431, 0x435, 0x43b, 0x44c, 0x3b, 0x3b, +0x431, 0x435, 0x43b, 0x430, 0x440, 0x443, 0x441, 0x43a, 0x456, 0x20, 0x440, 0x443, 0x431, 0x435, 0x43b, 0x44c, 0x3b, 0x3b, 0x431, 0x435, +0x43b, 0x430, 0x440, 0x443, 0x441, 0x43a, 0x456, 0x44f, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x456, 0x3b, 0x431, 0x435, 0x43b, 0x430, 0x440, +0x443, 0x441, 0x43a, 0x456, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x451, 0x45e, 0x3b, 0x431, 0x435, 0x43b, 0x430, 0x440, 0x443, 0x441, +0x43a, 0x430, 0x433, 0x430, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x179a, 0x17c0, 0x179b, 0x200b, 0x1780, 0x1798, 0x17d2, 0x1796, 0x17bb, +0x1787, 0x17b6, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x179a, 0x17c0, 0x179b, 0x200b, 0x1780, 0x1798, 0x17d2, 0x1796, 0x17bb, 0x1787, 0x17b6, 0x3b, +0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x73, 0x3b, +0x4eba, 0x6c11, 0x5e01, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4eba, 0x6c11, 0x5e01, 0x3b, 0x6e2f, 0x5143, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x6e2f, 0x5143, 0x3b, 0x6fb3, 0x95e8, 0x5143, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x6fb3, 0x95e8, 0x5143, 0x3b, 0x65b0, 0x52a0, 0x5761, +0x5143, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x65b0, 0x52a0, 0x5761, 0x5143, 0x3b, 0x6fb3, 0x9580, 0x5143, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x6fb3, 0x9580, 0x5143, 0x3b, 0x65b0, 0x53f0, 0x5e63, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x65b0, 0x53f0, 0x5e63, 0x3b, 0x68, 0x72, +0x76, 0x61, 0x74, 0x73, 0x6b, 0x61, 0x20, 0x6b, 0x75, 0x6e, 0x61, 0x3b, 0x3b, 0x68, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, +0x61, 0x20, 0x6b, 0x75, 0x6e, 0x61, 0x3b, 0x3b, 0x68, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x75, 0x6e, +0x65, 0x3b, 0x3b, 0x68, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, 0x69, 0x68, 0x20, 0x6b, 0x75, 0x6e, 0x61, 0x3b, 0x6b, 0x6f, +0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, 0x6b, +0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, +0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x3b, +0x3b, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x69, 0x68, 0x20, 0x6d, 0x61, 0x72, 0x61, +0x6b, 0x61, 0x3b, 0x10d, 0x65, 0x73, 0x6b, 0xe1, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x6e, 0x61, 0x3b, 0x3b, 0x10d, 0x65, 0x73, +0x6b, 0xe1, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x6e, 0x61, 0x3b, 0x3b, 0x10d, 0x65, 0x73, 0x6b, 0xe9, 0x20, 0x6b, 0x6f, 0x72, +0x75, 0x6e, 0x79, 0x3b, 0x10d, 0x65, 0x73, 0x6b, 0xe9, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x6e, 0x79, 0x3b, 0x10d, 0x65, 0x73, +0x6b, 0xfd, 0x63, 0x68, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x6e, 0x3b, 0x44, 0x61, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, +0x6e, 0x65, 0x3b, 0x3b, 0x44, 0x61, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, +0x61, 0x6e, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, +0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x41, 0x72, 0x75, 0x62, 0x61, 0x61, 0x6e, 0x73, +0x65, 0x20, 0x67, 0x75, 0x6c, 0x64, 0x65, 0x6e, 0x3b, 0x3b, 0x41, 0x72, 0x75, 0x62, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, +0x67, 0x75, 0x6c, 0x64, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x72, 0x75, 0x62, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, +0x67, 0x75, 0x6c, 0x64, 0x65, 0x6e, 0x3b, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x2d, 0x41, 0x6e, +0x74, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x67, 0x75, 0x6c, 0x64, 0x65, 0x6e, 0x3b, 0x3b, 0x4e, +0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x2d, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x61, 0x6e, +0x73, 0x65, 0x20, 0x67, 0x75, 0x6c, 0x64, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, +0x6e, 0x64, 0x73, 0x2d, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x67, 0x75, 0x6c, +0x64, 0x65, 0x6e, 0x3b, 0x53, 0x75, 0x72, 0x69, 0x6e, 0x61, 0x61, 0x6d, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, +0x72, 0x3b, 0x3b, 0x53, 0x75, 0x72, 0x69, 0x6e, 0x61, 0x61, 0x6d, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x75, 0x72, 0x69, 0x6e, 0x61, 0x61, 0x6d, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, +0x72, 0x3b, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x3b, 0x3b, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, +0x61, 0x72, 0x3b, 0x55, 0x53, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x64, 0x6f, 0x6c, +0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x45, 0x61, +0x73, 0x74, 0x20, 0x43, 0x61, 0x72, 0x69, 0x62, 0x62, 0x65, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, +0x3b, 0x45, 0x61, 0x73, 0x74, 0x20, 0x43, 0x61, 0x72, 0x69, 0x62, 0x62, 0x65, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, +0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x61, 0x73, 0x74, 0x20, 0x43, 0x61, 0x72, 0x69, 0x62, 0x62, 0x65, 0x61, 0x6e, +0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x6e, 0x20, +0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x6e, 0x20, 0x64, +0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x6e, 0x20, +0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, +0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x73, 0x3b, 0x42, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, +0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x42, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, +0x3b, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x42, +0x61, 0x72, 0x62, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, +0x61, 0x72, 0x62, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x42, 0x65, 0x6c, +0x69, 0x7a, 0x65, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x64, +0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, +0x61, 0x72, 0x73, 0x3b, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, +0x3b, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, +0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x42, 0x6f, 0x74, +0x73, 0x77, 0x61, 0x6e, 0x61, 0x6e, 0x20, 0x50, 0x75, 0x6c, 0x61, 0x3b, 0x3b, 0x42, 0x6f, 0x74, 0x73, 0x77, 0x61, 0x6e, +0x61, 0x6e, 0x20, 0x70, 0x75, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x6f, 0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x6e, +0x20, 0x70, 0x75, 0x6c, 0x61, 0x73, 0x3b, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x46, 0x72, 0x61, +0x6e, 0x63, 0x3b, 0x3b, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, +0x3b, 0x3b, 0x3b, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x3b, +0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x43, 0x46, 0x41, 0x20, +0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, +0x61, 0x6e, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x65, 0x6e, 0x74, +0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, +0x63, 0x73, 0x3b, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, +0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, +0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x43, 0x61, 0x79, 0x6d, +0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x43, +0x61, 0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, +0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x44, +0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x64, +0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61, 0x6e, 0x64, +0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x44, 0x61, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x4b, 0x72, 0x6f, 0x6e, +0x65, 0x3b, 0x3b, 0x44, 0x61, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, +0x61, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, 0x61, +0x6e, 0x20, 0x4e, 0x61, 0x6b, 0x66, 0x61, 0x3b, 0x3b, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, 0x61, 0x6e, 0x20, 0x6e, 0x61, +0x6b, 0x66, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, 0x61, 0x6e, 0x20, 0x6e, 0x61, 0x6b, 0x66, +0x61, 0x73, 0x3b, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, +0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, 0x6c, 0x61, +0x6e, 0x64, 0x73, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, +0x64, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x46, 0x69, 0x6a, +0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x46, 0x69, 0x6a, 0x69, 0x61, 0x6e, 0x20, 0x64, +0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x69, 0x6a, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, +0x61, 0x72, 0x73, 0x3b, 0x55, 0x4b, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x55, 0x4b, 0x20, 0x70, 0x6f, 0x75, +0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x4b, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x47, 0x61, 0x6d, 0x62, +0x69, 0x61, 0x6e, 0x20, 0x44, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x3b, 0x3b, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, +0x64, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x61, +0x6c, 0x61, 0x73, 0x69, 0x73, 0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x69, 0x61, 0x6e, 0x20, 0x43, 0x65, 0x64, 0x69, 0x3b, +0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x69, 0x61, 0x6e, 0x20, 0x63, 0x65, 0x64, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x47, 0x68, +0x61, 0x6e, 0x61, 0x69, 0x61, 0x6e, 0x20, 0x63, 0x65, 0x64, 0x69, 0x73, 0x3b, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, +0x61, 0x72, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x20, +0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x20, 0x70, +0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65, 0x73, 0x65, 0x20, 0x44, 0x6f, 0x6c, 0x6c, +0x61, 0x72, 0x3b, 0x3b, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x3b, 0x3b, 0x3b, 0x3b, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x73, 0x3b, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, +0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, +0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x49, 0x6e, +0x64, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x72, +0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, +0x73, 0x3b, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x69, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x53, 0x68, 0x65, 0x71, 0x65, 0x6c, +0x3b, 0x3b, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x69, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x73, 0x68, 0x65, 0x71, 0x65, 0x6c, +0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x69, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x73, 0x68, 0x65, 0x71, +0x65, 0x6c, 0x73, 0x3b, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, +0x3b, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, +0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x4b, 0x65, 0x6e, +0x79, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x6e, +0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x6e, 0x20, +0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, +0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, +0x63, 0x61, 0x6e, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x3b, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, +0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, +0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, +0x61, 0x72, 0x73, 0x3b, 0x4d, 0x61, 0x63, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x61, 0x74, 0x61, 0x63, 0x61, 0x3b, +0x3b, 0x4d, 0x61, 0x63, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x61, 0x63, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, +0x4d, 0x61, 0x63, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x61, 0x63, 0x61, 0x73, 0x3b, 0x4d, 0x61, 0x6c, +0x61, 0x67, 0x61, 0x73, 0x79, 0x20, 0x41, 0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, +0x73, 0x79, 0x20, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, +0x79, 0x20, 0x61, 0x72, 0x69, 0x61, 0x72, 0x69, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x61, 0x6e, 0x20, +0x4b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x61, 0x6e, 0x20, 0x6b, 0x77, 0x61, +0x63, 0x68, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x61, 0x6e, 0x20, 0x6b, 0x77, 0x61, 0x63, +0x68, 0x61, 0x73, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x69, 0x6e, 0x67, 0x67, 0x69, +0x74, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x69, 0x6e, 0x67, 0x67, 0x69, 0x74, +0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x69, 0x6e, 0x67, 0x67, 0x69, +0x74, 0x73, 0x3b, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, +0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, +0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x73, 0x3b, 0x4e, 0x61, 0x6d, 0x69, +0x62, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, +0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x6e, +0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x4e, 0x61, +0x69, 0x72, 0x61, 0x3b, 0x3b, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x6e, 0x61, 0x69, 0x72, 0x61, 0x3b, +0x3b, 0x3b, 0x3b, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x6e, 0x61, 0x69, 0x72, 0x61, 0x73, 0x3b, 0x50, +0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x69, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x50, 0x61, 0x6b, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x69, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x6b, 0x69, 0x73, +0x74, 0x61, 0x6e, 0x69, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x73, 0x3b, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, +0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x4b, 0x69, 0x6e, 0x61, 0x3b, 0x3b, 0x50, 0x61, 0x70, 0x75, +0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x6b, 0x69, 0x6e, 0x61, 0x3b, 0x3b, +0x3b, 0x3b, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x6e, 0x20, +0x6b, 0x69, 0x6e, 0x61, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x50, 0x65, 0x73, 0x6f, +0x3b, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x65, 0x73, 0x6f, 0x3b, 0x3b, 0x3b, +0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x3b, 0x52, 0x77, +0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x52, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x6e, +0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x66, 0x72, +0x61, 0x6e, 0x63, 0x73, 0x3b, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x6e, 0x20, 0x54, 0x61, 0x6c, 0x61, 0x3b, 0x3b, 0x53, 0x61, +0x6d, 0x6f, 0x61, 0x6e, 0x20, 0x74, 0x61, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x6e, 0x20, +0x74, 0x61, 0x6c, 0x61, 0x3b, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, 0x52, 0x75, 0x70, +0x65, 0x65, 0x3b, 0x3b, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, 0x72, 0x75, 0x70, 0x65, +0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, 0x72, 0x75, 0x70, +0x65, 0x65, 0x73, 0x3b, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x4c, +0x65, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x61, 0x6e, +0x20, 0x6c, 0x65, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, +0x6e, 0x65, 0x61, 0x6e, 0x20, 0x6c, 0x65, 0x6f, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, +0x65, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x20, +0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x20, +0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, +0x6e, 0x64, 0x73, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, +0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, +0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x73, 0x3b, 0x53, 0x74, 0x2e, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, +0x53, 0x74, 0x2e, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, +0x53, 0x74, 0x2e, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x53, 0x75, +0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, +0x73, 0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, +0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x4c, 0x69, 0x6c, 0x61, 0x6e, 0x67, +0x65, 0x6e, 0x69, 0x3b, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x6c, 0x69, 0x6c, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x69, +0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x69, +0x3b, 0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, 0x20, 0x4b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x53, 0x77, 0x65, 0x64, +0x69, 0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, +0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, 0x3b, 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, +0x3b, 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x69, 0x73, +0x73, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20, 0x53, +0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20, 0x73, +0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, +0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x50, 0x61, +0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x2bb, 0x61, 0x6e, 0x67, +0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x3b, +0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x44, 0x6f, +0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, +0x61, 0x67, 0x6f, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, +0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, +0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x55, 0x67, +0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x67, +0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x42, 0x72, 0x69, 0x74, +0x69, 0x73, 0x68, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x70, +0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x70, 0x6f, 0x75, 0x6e, +0x64, 0x73, 0x3b, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, 0x56, 0x61, 0x74, 0x75, 0x3b, 0x3b, 0x56, 0x61, 0x6e, +0x75, 0x61, 0x74, 0x75, 0x20, 0x76, 0x61, 0x74, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, +0x20, 0x76, 0x61, 0x74, 0x75, 0x73, 0x3b, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, +0x61, 0x3b, 0x3b, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x6b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x3b, +0x3b, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x6b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x73, 0x3b, 0x53, 0x6f, 0x75, +0x74, 0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x53, +0x6f, 0x75, 0x74, 0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, +0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x6f, +0x75, 0x6e, 0x64, 0x73, 0x3b, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x41, 0x6e, 0x74, +0x69, 0x6c, 0x6c, 0x65, 0x61, 0x6e, 0x20, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x3b, 0x3b, 0x4e, 0x65, 0x74, 0x68, +0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x6e, 0x20, 0x67, 0x75, +0x69, 0x6c, 0x64, 0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, +0x20, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x6e, 0x20, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x3b, +0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x74, 0x3b, +0x64, 0x6f, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0x64, 0x6f, 0x6e, 0x73, 0x6b, 0x20, 0x6b, +0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x61, 0x6e, 0x73, 0x6b, 0x61, 0x72, 0x20, 0x6b, 0x72, 0xf3, 0x6e, +0x75, 0x72, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, +0x6f, 0x61, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x61, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x64, +0x69, 0x6e, 0x61, 0x72, 0x20, 0x61, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x69, 0x6e, +0x61, 0x72, 0x73, 0x20, 0x61, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, +0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, +0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, +0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x62, +0x75, 0x72, 0x75, 0x6e, 0x64, 0x61, 0x69, 0x73, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x62, 0x75, 0x72, 0x75, +0x6e, 0x64, 0x61, 0x69, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x62, 0x75, 0x72, 0x75, +0x6e, 0x64, 0x61, 0x69, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, +0x43, 0x29, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, +0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, +0x29, 0x3b, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x64, +0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x6f, +0x6c, 0x6c, 0x61, 0x72, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, +0x63, 0x20, 0x63, 0x6f, 0x6d, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, +0x6d, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x63, 0x6f, 0x6d, +0x6f, 0x72, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, +0x69, 0x73, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x69, 0x73, 0x3b, +0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x69, 0x73, 0x3b, +0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x64, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x66, 0x72, +0x61, 0x6e, 0x63, 0x20, 0x64, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, +0x61, 0x6e, 0x63, 0x73, 0x20, 0x64, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, +0x6e, 0x63, 0x20, 0x43, 0x46, 0x50, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x50, 0x3b, 0x3b, 0x3b, +0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x43, 0x46, 0x50, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x67, 0x75, +0x69, 0x6e, 0xe9, 0x65, 0x6e, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x67, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x6e, +0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x67, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x6e, 0x73, 0x3b, +0x67, 0x6f, 0x75, 0x72, 0x64, 0x65, 0x20, 0x68, 0x61, 0xef, 0x74, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x67, 0x6f, +0x75, 0x72, 0x64, 0x65, 0x20, 0x68, 0x61, 0xef, 0x74, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x6f, +0x75, 0x72, 0x64, 0x65, 0x73, 0x20, 0x68, 0x61, 0xef, 0x74, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x3b, 0x61, 0x72, 0x69, +0x61, 0x72, 0x79, 0x20, 0x6d, 0x61, 0x6c, 0x67, 0x61, 0x63, 0x68, 0x65, 0x3b, 0x3b, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, +0x20, 0x6d, 0x61, 0x6c, 0x67, 0x61, 0x63, 0x68, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x73, +0x20, 0x6d, 0x61, 0x6c, 0x67, 0x61, 0x63, 0x68, 0x65, 0x73, 0x3b, 0x6f, 0x75, 0x67, 0x75, 0x69, 0x79, 0x61, 0x20, 0x6d, +0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x6f, 0x75, 0x67, 0x75, 0x69, 0x79, 0x61, 0x20, +0x6d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x6f, 0x75, 0x67, 0x75, 0x69, +0x79, 0x61, 0x73, 0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x72, 0x6f, 0x75, +0x70, 0x69, 0x65, 0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x72, 0x6f, 0x75, +0x70, 0x69, 0x65, 0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, +0x6f, 0x75, 0x70, 0x69, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x3b, +0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x20, 0x6d, 0x61, 0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e, 0x3b, 0x3b, 0x64, 0x69, 0x72, +0x68, 0x61, 0x6d, 0x20, 0x6d, 0x61, 0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x69, 0x72, 0x68, +0x61, 0x6d, 0x73, 0x20, 0x6d, 0x61, 0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, +0x72, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x69, 0x73, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x72, 0x77, 0x61, 0x6e, +0x64, 0x61, 0x69, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x72, 0x77, 0x61, 0x6e, 0x64, +0x61, 0x69, 0x73, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x20, 0x64, 0x65, 0x73, 0x20, 0x53, 0x65, 0x79, 0x63, 0x68, +0x65, 0x6c, 0x6c, 0x65, 0x73, 0x3b, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x20, 0x64, 0x65, 0x73, 0x20, 0x53, 0x65, +0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x73, 0x20, +0x64, 0x65, 0x73, 0x20, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, +0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, +0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x73, 0x3b, +0x6c, 0x69, 0x76, 0x72, 0x65, 0x20, 0x73, 0x79, 0x72, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x6c, 0x69, 0x76, 0x72, +0x65, 0x20, 0x73, 0x79, 0x72, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x69, 0x76, 0x72, 0x65, 0x73, +0x20, 0x73, 0x79, 0x72, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x74, 0x75, 0x6e, +0x69, 0x73, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x74, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, +0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x73, 0x20, 0x74, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x6e, +0x73, 0x3b, 0x76, 0x61, 0x74, 0x75, 0x20, 0x76, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x61, 0x6e, 0x3b, 0x3b, 0x76, 0x61, +0x74, 0x75, 0x20, 0x76, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x61, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x76, 0x61, 0x74, 0x75, +0x73, 0x20, 0x76, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x61, 0x6e, 0x73, 0x3b, 0x50, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, +0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68, 0x3b, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, +0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e, +0x61, 0x63, 0x68, 0x3b, 0x70, 0x75, 0x69, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x68, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, +0x68, 0x3b, 0x3b, 0x70, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68, 0x3b, 0x10e5, +0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, 0x20, 0x10da, 0x10d0, 0x10e0, 0x10d8, 0x3b, 0x3b, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, +0x20, 0x10da, 0x10d0, 0x10e0, 0x10d8, 0x3b, 0x3b, 0x3b, 0x3b, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, 0x20, 0x10da, 0x10d0, 0x10e0, +0x10d8, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, +0x3b, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x3b, 0x3b, +0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, +0x3b, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x3b, 0x395, +0x3c5, 0x3c1, 0x3ce, 0x3b, 0x3b, 0x3b5, 0x3c5, 0x3c1, 0x3ce, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b5, 0x3c5, 0x3c1, 0x3ce, 0x3b, 0x64, 0x61, +0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x69, 0x6d, 0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x3b, 0x64, +0x61, 0x6e, 0x73, 0x6b, 0x69, 0x6e, 0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, +0x64, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x69, 0x6d, 0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x3b, +0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf, 0x20, 0xab0, 0xac2, 0xaaa, 0xabf, 0xaaf, 0xabe, 0x3b, 0x3b, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, +0xaaf, 0x20, 0xab0, 0xac2, 0xaaa, 0xabf, 0xaaf, 0xabe, 0x3b, 0x3b, 0x3b, 0x3b, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf, 0x20, 0xab0, +0xac2, 0xaaa, 0xabf, 0xaaf, 0xabe, 0x3b, 0x4e, 0x61, 0x69, 0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x75, +0x257, 0x69, 0x6e, 0x20, 0x53, 0x65, 0x66, 0x61, 0x20, 0x6e, 0x61, 0x20, 0x41, 0x66, 0x69, 0x72, 0x6b, 0x61, 0x20, 0x54, +0x61, 0x20, 0x59, 0x61, 0x6d, 0x6d, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5e9, 0x5f4, 0x5d7, 0x3b, 0x3b, 0x5e9, +0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, +0x5d9, 0x5dd, 0x3b, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, +0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, +0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, +0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x90f, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, +0x69, 0x6e, 0x74, 0x3b, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b, 0x3b, +0x3b, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b, 0xed, 0x73, 0x6c, 0x65, +0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, +0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x72, 0x20, 0x6b, 0x72, +0xf3, 0x6e, 0x75, 0x72, 0x3b, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, +0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, +0x73, 0x69, 0x61, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, +0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, +0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, +0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76, +0x69, 0x7a, 0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x20, 0x73, 0x76, +0x69, 0x7a, 0x7a, 0x65, 0x72, 0x69, 0x3b, 0x65e5, 0x672c, 0x5186, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5186, 0x3b, 0xcad, 0xcbe, +0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf, 0x3b, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, +0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf, 0x3b, 0x3b, 0x3b, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, +0xcbe, 0xcaf, 0xcbf, 0xc97, 0xcb3, 0xcc1, 0x3b, 0x6c1, 0x650, 0x646, 0x62f, 0x64f, 0x633, 0x62a, 0x672, 0x646, 0x6cd, 0x20, 0x631, 0x6c4, +0x67e, 0x64e, 0x6d2, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, +0x442, 0x435, 0x4a3, 0x433, 0x435, 0x441, 0x456, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, +0x435, 0x4a3, 0x433, 0x435, 0x441, 0x456, 0x3b, 0x3b, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, +0x442, 0x435, 0x4a3, 0x433, 0x435, 0x441, 0x456, 0x3b, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, +0x43e, 0x43c, 0x443, 0x3b, 0x3b, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, +0x3b, 0x3b, 0x3b, 0x3b, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, +0xb300, 0xd55c, 0xbbfc, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0x20, 0xc6d0, 0x3b, 0xc870, +0xc120, 0x20, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0x20, 0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0xc870, 0xc120, 0x20, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0x20, 0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x49, 0x66, +0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x72, 0x79, 0x2019, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xea5, 0xeb2, 0xea7, 0x20, 0xe81, 0xeb5, 0xe9a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xea5, 0xeb2, +0xea7, 0x20, 0xe81, 0xeb5, 0xe9a, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x65, 0x69, 0x72, 0x6f, +0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, +0x4b, 0x6f, 0x6e, 0x67, 0xf3, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x79, +0x61, 0x20, 0x41, 0x6e, 0x67, 0xf3, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x6c, 0xe1, 0x6e, +0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, +0x72, 0x61, 0x73, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x73, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x69, 0x3b, 0x65, 0x75, +0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x173, 0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, +0x435, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, +0x430, 0x440, 0x3b, 0x3b, 0x3b, 0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, +0x430, 0x440, 0x438, 0x3b, 0x41, 0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x69, 0x6e, +0x67, 0x67, 0x69, 0x74, 0x20, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, +0x69, 0x6e, 0x67, 0x67, 0x69, 0x74, 0x20, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x3b, 0x44, 0x6f, 0x6c, 0x61, +0x72, 0x20, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, +0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, +0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, +0x75, 0x72, 0x61, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b, 0x3b, 0xd07, 0xd28, 0xd4d, +0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b, 0x3b, 0x3b, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, +0xd30, 0xd42, 0xd2a, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x77, 0x72, 0x6f, +0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, +0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, +0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x947, 0x3b, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, +0x3b, 0x3b, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x3b, 0x3b, 0x3b, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x928, +0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x3b, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, +0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x3b, 0x3b, 0x3b, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, +0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, +0x92f, 0x93e, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x3b, +0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x6e, 0x6f, 0x72, +0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x6b, 0x72, +0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, +0x3b, 0xb1f, 0xb19, 0xb15, 0xb3e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cd, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x3b, 0x631, 0x6cc, 0x627, +0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x3b, 0x3b, 0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, +0x646, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x3b, +0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x3b, 0x3b, 0x3b, +0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x7a, 0x142, 0x6f, +0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x3b, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, +0x73, 0x6b, 0x69, 0x3b, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x65, 0x3b, 0x7a, +0x142, 0x6f, 0x74, 0x79, 0x63, 0x68, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x63, 0x68, 0x3b, 0x7a, 0x142, 0x6f, 0x74, +0x65, 0x67, 0x6f, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x65, 0x67, 0x6f, 0x3b, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, +0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, +0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x65, 0x61, 0x69, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, +0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x73, 0x3b, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, +0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, +0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, +0x73, 0x3b, 0x45, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, +0x6e, 0x6f, 0x3b, 0x3b, 0x45, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, +0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x73, 0x20, 0x63, 0x61, 0x62, 0x6f, +0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x44, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x73, +0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x3b, 0x44, 0xf3, 0x6c, +0x61, 0x72, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, +0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0xf3, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, +0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, +0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, +0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, +0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, +0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, +0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, +0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x45, +0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x73, 0x3b, 0x50, 0x61, 0x74, 0x61, 0x63, 0x61, 0x20, +0x64, 0x65, 0x20, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x3b, 0x3b, 0x50, 0x61, 0x74, 0x61, 0x63, 0x61, 0x20, 0x64, 0x65, 0x20, +0x4d, 0x61, 0x63, 0x61, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x74, 0x61, 0x63, 0x61, 0x73, 0x20, 0x64, 0x65, 0x20, +0x4d, 0x61, 0x63, 0x61, 0x75, 0x3b, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0x6f, 0xe7, +0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x3b, 0x3b, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x20, +0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61, +0x6c, 0x65, 0x73, 0x20, 0x64, 0x65, 0x20, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x3b, 0x44, 0x6f, +0x62, 0x72, 0x61, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, +0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x3b, 0x44, 0x6f, 0x62, 0x72, 0x61, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, +0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, +0x44, 0x6f, 0x62, 0x72, 0x61, 0x73, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, +0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x75, 0xed, +0xe7, 0x6f, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, +0x46, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x73, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, +0x20, 0xa30, 0xa41, 0xa2a, 0xa07, 0xa06, 0x3b, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa07, 0xa06, 0x3b, +0x3b, 0x3b, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa0f, 0x3b, 0x631, 0x648, 0x67e, 0x626, 0x6cc, 0x6c1, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, +0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, +0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x72, 0x6f, 0x6d, +0xe2, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x73, 0x63, 0x3b, +0x3b, 0x6c, 0x65, 0x69, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, +0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, +0x65, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, +0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, +0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x420, +0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x440, 0x43e, 0x441, +0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, +0x439, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, +0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x435, 0x439, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x43e, 0x433, +0x43e, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x411, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, +0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, +0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, +0x431, 0x43b, 0x44f, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, +0x435, 0x439, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x440, 0x443, 0x431, 0x43b, +0x44f, 0x3b, 0x41a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x3b, 0x43a, +0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x3b, 0x43a, 0x430, 0x437, 0x430, +0x445, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, +0x445, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x442, +0x435, 0x43d, 0x433, 0x435, 0x3b, 0x41a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x3b, +0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x43a, 0x438, 0x440, +0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x441, 0x43e, 0x43c, 0x430, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, +0x43a, 0x438, 0x445, 0x20, 0x441, 0x43e, 0x43c, 0x430, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x43e, 0x433, 0x43e, +0x20, 0x441, 0x43e, 0x43c, 0x430, 0x3b, 0x41c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, +0x3b, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, 0x3b, 0x3b, 0x43c, 0x43e, +0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x43b, 0x435, 0x44f, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, +0x43a, 0x438, 0x445, 0x20, 0x43b, 0x435, 0x435, 0x432, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x43e, 0x433, 0x43e, +0x20, 0x43b, 0x435, 0x44f, 0x3b, 0x423, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, +0x43d, 0x430, 0x3b, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, +0x430, 0x3b, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x438, 0x435, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44b, +0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x433, 0x440, 0x438, 0x432, 0x435, 0x43d, 0x3b, 0x443, +0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x43e, 0x439, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44b, 0x3b, 0x66, 0x61, 0x72, +0xe2, 0x6e, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x421, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, +0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x430, 0x20, 0x434, 0x438, 0x43d, +0x430, 0x440, 0x430, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, +0x42, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, +0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, +0x61, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, +0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, +0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65, 0x72, 0x63, 0x65, +0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x65, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, +0x65, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65, +0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x69, 0x68, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, +0x62, 0x69, 0x6c, 0x6e, 0x69, 0x68, 0x20, 0x6d, 0x61, 0x72, 0x61, 0x6b, 0x61, 0x3b, 0x45, 0x76, 0x72, 0x6f, 0x3b, 0x3b, +0x65, 0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x53, 0x72, 0x70, +0x73, 0x6b, 0x69, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x3b, 0x3b, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x20, 0x64, 0x69, +0x6e, 0x61, 0x72, 0x3b, 0x3b, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x61, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x61, 0x3b, 0x3b, +0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x68, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x61, 0x3b, 0x411, 0x43e, 0x441, 0x430, 0x43d, +0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, +0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, +0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, +0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, +0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, +0x43a, 0x435, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, +0x43a, 0x65, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, +0x432, 0x430, 0x447, 0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, +0x445, 0x20, 0x43c, 0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x415, 0x432, 0x440, 0x43e, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x43e, 0x3b, +0x3b, 0x435, 0x432, 0x440, 0x430, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x430, 0x3b, 0x41b, 0x430, 0x440, 0x3b, 0x3b, 0x43b, 0x430, 0x440, +0x3b, 0x3b, 0x3b, 0x3b, 0x43b, 0x430, 0x440, 0x44b, 0x3b, 0x421, 0x43e, 0x43c, 0x3b, 0x3b, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x3b, +0x3b, 0x441, 0x43e, 0x43c, 0x44b, 0x3b, 0x44, 0x6f, 0x72, 0x61, 0x20, 0x72, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b, +0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, +0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, +0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, 0x3b, 0x3b, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, +0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, +0x72, 0xe1, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x3b, 0x65, 0x75, 0x72, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, +0x72, 0x6f, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x65, 0x76, 0x72, 0x69, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x76, 0x3b, +0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x20, 0x73, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x20, 0x4a, 0x61, 0x62, 0x62, 0x75, 0x75, 0x74, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x42, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x62, 0x69, 0x79, 0x61, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x3b, +0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, +0x65, 0x73, 0x6f, 0x73, 0x20, 0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x73, 0x3b, 0x62, 0x6f, 0x6c, 0x69, +0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, +0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, +0x69, 0x6c, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0xf1, +0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x65, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0xf1, +0x6f, 0x73, 0x3b, 0x50, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, +0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x63, +0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, +0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x6f, +0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x6f, +0x73, 0x3b, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63, 0x65, 0x6e, 0x73, +0x65, 0x3b, 0x3b, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63, 0x65, 0x6e, +0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x6e, 0x65, 0x73, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, +0x72, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, +0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, +0x6f, 0x73, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x64, 0x6f, 0x6d, 0x69, +0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, +0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, +0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e, 0x69, +0x64, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, +0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x20, 0x65, +0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, +0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, +0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, +0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x71, 0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x3b, 0x3b, 0x71, 0x75, 0x65, +0x74, 0x7a, 0x61, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b, 0x71, 0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x65, 0x73, 0x3b, 0x6c, 0x65, +0x6d, 0x70, 0x69, 0x72, 0x61, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x6c, 0x65, 0x6d, +0x70, 0x69, 0x72, 0x61, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x65, +0x6d, 0x70, 0x69, 0x72, 0x61, 0x73, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x70, 0x65, +0x73, 0x6f, 0x20, 0x6d, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x6d, 0x65, +0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x6d, 0x65, 0x78, 0x69, +0x63, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72, 0x61, +0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, 0x61, +0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x73, +0x20, 0x6e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, +0x61, 0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x20, 0x70, +0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x73, 0x20, 0x70, +0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61, 0x72, +0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61, 0x72, 0x61, +0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x65, 0x73, 0x20, 0x70, +0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, 0x3b, 0x6e, 0x75, 0x65, 0x76, 0x6f, 0x20, 0x73, 0x6f, 0x6c, 0x20, +0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x6e, 0x75, 0x65, 0x76, 0x6f, 0x20, 0x73, 0x6f, 0x6c, 0x20, 0x70, +0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x6e, 0x75, 0x65, 0x76, 0x6f, 0x73, 0x20, 0x73, 0x6f, 0x6c, +0x65, 0x73, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x66, 0x69, 0x6c, +0x69, 0x70, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, +0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x73, 0x3b, +0x70, 0x65, 0x73, 0x6f, 0x20, 0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, +0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x75, 0x72, +0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x76, 0x65, 0x6e, 0x65, +0x7a, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x76, 0x65, 0x6e, 0x65, +0x7a, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x65, 0x73, 0x20, +0x76, 0x65, 0x6e, 0x65, 0x7a, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, +0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, +0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, +0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x7a, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x46, +0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x3b, 0x66, 0x61, 0x72, +0x61, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x61, 0x72, +0x61, 0x6e, 0x67, 0x61, 0x20, 0x7a, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, +0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, +0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, +0x67, 0x69, 0x20, 0x7a, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, +0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, +0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, +0x67, 0x69, 0x20, 0x7a, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, +0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, +0x3b, 0x3b, 0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, 0x3b, 0xb87, 0xba8, +0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, +0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, +0xbbe, 0xbaf, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, +0xb95, 0xbbf, 0xb9f, 0xbcd, 0x3b, 0x3b, 0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, +0xbbf, 0xb9f, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, +0xb95, 0xbbf, 0xb9f, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, +0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0x3b, 0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, +0xbbe, 0xbb2, 0xbb0, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, +0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, +0xbaf, 0xbcd, 0x3b, 0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0x3b, +0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xc30, 0xc42, +0xc2a, 0xc3e, 0xc2f, 0xc3f, 0x3b, 0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc3f, 0x3b, 0x3b, 0x3b, 0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, +0xc2f, 0xc32, 0xc41, 0x3b, 0xe1a, 0xe32, 0xe17, 0xe44, 0xe17, 0xe22, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xe1a, 0xe32, 0xe17, 0xe44, +0xe17, 0xe22, 0x3b, 0xf61, 0xf74, 0xf0b, 0xf68, 0xf53, 0xf0b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xf62, 0xf92, 0xfb1, 0xf0b, +0xf42, 0xf62, 0xf0b, 0xf66, 0xf92, 0xf7c, 0xf62, 0xf0b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x12e8, 0x12a2, 0x1275, 0x12ee, 0x1335, +0x12eb, 0x20, 0x1265, 0x122d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x66, +0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, +0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x4c, 0x69, 0x72, +0x61, 0x73, 0x131, 0x3b, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x6c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x3b, 0x3b, 0x3b, +0x54, 0xfc, 0x72, 0x6b, 0x20, 0x6c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, +0x6d, 0x61, 0x6e, 0x61, 0x74, 0x79, 0x3b, 0x3b, 0x74, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, +0x74, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x74, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x74, 0x79, +0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, +0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b, 0x3b, 0x3b, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, +0x3b, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x3b, 0x3b, +0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x3b, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x435, +0x43d, 0x44c, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, +0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, +0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x628, +0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, +0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6d2, +0x3b, 0x4f, 0x2bb, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2bb, 0x6d, 0x69, 0x3b, 0x3b, +0x4f, 0x2bb, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2bb, 0x6d, 0x69, 0x3b, 0x3b, 0x3b, +0x3b, 0x4f, 0x2bb, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2bb, 0x6d, 0x69, 0x3b, 0x627, +0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, +0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, +0x45e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, +0x3b, 0x110, 0x1ed3, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x110, 0x1ed3, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x3b, 0x50, 0x75, 0x6e, 0x74, 0x20, 0x50, +0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, +0x62, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x62, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, +0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, +0x68, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, +0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x4e, 0x61, 0x69, 0x72, 0x61, 0x20, 0x74, 0x69, 0x20, 0x4f, 0x72, 0xed, 0x6c, 0x1eb9, +0x301, 0xe8, 0x64, 0x65, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x46, 0x61, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x20, 0x74, 0x69, 0x20, 0x4f, 0x72, 0xed, 0x6c, 0x25b, 0x301, 0xe8, 0x64, 0x65, +0x20, 0x42, 0x49, 0x4b, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, +0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, +0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, +0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, +0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, +0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, +0x65, 0x72, 0x3b, 0x42, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x48, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, +0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, +0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65, 0x72, 0x63, 0x65, +0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, +0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65, +0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x65, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, +0x69, 0x6c, 0x6e, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, +0x2d, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x69, 0x68, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, +0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x69, 0x68, 0x20, 0x6d, 0x61, 0x72, 0x61, 0x6b, 0x61, 0x3b, 0x41a, 0x43e, 0x43d, +0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, +0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, +0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, +0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, +0x43a, 0x435, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, +0x43a, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, +0x430, 0x447, 0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, +0x20, 0x43c, 0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x53, 0x69, 0x64, 0x69, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x1ecb, 0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, +0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, +0x256, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x3b, 0x263, 0x65, 0x74, +0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, +0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, +0x20, 0x61, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, +0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, +0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, +0x41, 0x4f, 0x3b, 0x50, 0x69, 0x73, 0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, +0x3b, 0x3b, 0x70, 0x69, 0x73, 0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x3b, +0x3b, 0x3b, 0x3b, 0x70, 0x69, 0x73, 0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, +0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x3b, 0x53, +0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, +0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x6e, 0x6f, 0x72, 0x67, +0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, +0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, +0x6f, 0x3b, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x65, +0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, +0x6f, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x72, 0x75, +0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, +0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, +0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, +0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x75, 0x20, 0x53, 0x65, 0x65, 0x66, +0x61, 0x61, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x62, 0x75, 0x75, 0x257, +0x69, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x55, 0x67, 0x69, 0x79, 0x79, 0x61, 0x20, 0x4d, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x43, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x6a, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x65, 0x6c, 0x20, 0x4b, 0x65, +0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x65, +0x20, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, +0x6c, 0x61, 0x20, 0x79, 0x61, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x6c, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x68, 0x65, 0x6c, 0x65, 0x72, 0x69, 0x20, 0x73, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x2d30, 0x2d37, 0x2d54, 0x2d49, 0x2d4e, 0x20, 0x2d4f, 0x20, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, 0x2d49, +0x2d31, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x61, 0x64, 0x72, 0x69, 0x6d, 0x20, 0x6e, 0x20, 0x6c, 0x6d, 0x263, 0x72, +0x69, 0x62, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x41, 0x7a, 0x7a, 0x61, +0x79, 0x72, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x73, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, +0x79, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, +0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x48, 0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, +0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x65, 0x66, 0x61, 0x20, 0x46, 0x72, 0x61, +0x14b, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x13a4, 0x13c3, 0x13cd, 0x13d7, +0x3b, 0x3b, 0x13a4, 0x13c3, 0x13cd, 0x13d7, 0x3b, 0x3b, 0x3b, 0x3b, 0x13e7, 0x13c3, 0x13cd, 0x13d7, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, +0x20, 0x6d, 0x6f, 0x72, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, +0xed, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed, 0x61, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x79, 0x61, 0x20, 0x59, 0x75, 0x67, +0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6b, 0x75, 0x64, 0x75, 0x20, 0x4b, 0x61, 0x62, +0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6b, 0x75, 0x64, 0x75, +0x20, 0x4b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, +0x69, 0x74, 0x61, 0x62, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x72, 0x6f, 0x70, 0x69, 0x79, 0x69, +0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x72, +0x6f, 0x70, 0x69, 0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x72, 0x69, 0x6e, 0x6a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, +0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, +0x20, 0x54, 0x61, 0x6e, 0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6e, 0x67, +0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, +0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x46, 0x41, 0x20, 0x46, 0x72, 0x61, 0x14b, +0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, +0x67, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x65, +0x72, 0x68, 0x65, 0x6d, 0x20, 0x55, 0x6d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x930, 0x93e, 0x902, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x420, 0x43e, 0x441, +0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, +0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x44c, 0x43c, 0x430, 0x448, 0x3b, +0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x439, 0x441, 0x43a, 0x457, 0x439, 0x20, 0x440, 0xa64b, 0x301, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x439, 0x441, 0x43a, 0x430, 0x433, 0x461, 0x20, 0x440, 0xa64b, 0x431, +0x43b, 0x467, 0x300, 0x3b, 0x4e, 0x66, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, +0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x46, 0x41, 0x20, 0x46, 0xe0, 0x6c, 0xe2, 0x14b, 0x20, 0x42, 0x45, +0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x1ce, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, +0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x65, 0x65, 0x66, 0x61, 0x20, 0x79, 0x61, 0x74, +0x69, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x259, 0x6c, 0xe1, 0x14b, 0x20, +0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0xe1, +0x14b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x6f, 0x6c, 0x61, 0x69, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x68, 0x65, 0x6c, 0x61, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, +0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x20, 0xa55c, 0xa55e, 0xa54c, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c, 0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x20, 0x44, 0x61, 0x6c, 0x61, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x25b, 0x6c, 0xe2, 0x14b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, +0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x72, 0xe8, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x65, 0x6c, 0xe1, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x62f, 0x6cc, 0x646, 0x627, 0x631, 0x6cc, 0x20, 0x639, 0x6ce, 0x631, 0x627, 0x642, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x695, 0x6cc, 0x627, 0x6b5, 0x6cc, 0x20, 0x626, 0x6ce, 0x631, 0x627, 0x646, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, +0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, +0x72, 0x61, 0x6a, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x77, 0x3b, 0x65, 0x75, 0x72, 0x6f, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x3b, 0x6e2f, 0x5e63, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x6e2f, 0x5e63, 0x3b +}; + +static const ushort currency_format_data[] = { +0x25, 0x31, 0x25, 0x32, 0x25, 0x32, 0x25, 0x31, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x25, 0x31, 0xa0, 0x25, 0x32, 0x25, 0x32, +0x25, 0x31, 0x4b, 0x25, 0x32, 0xa0, 0x2d, 0x25, 0x31, 0x28, 0x25, 0x31, 0xa0, 0x25, 0x32, 0x29, 0x25, 0x32, 0x2d, 0x25, +0x31, 0x25, 0x31, 0xa0, 0x6d, 0x6e, 0xa0, 0x25, 0x32, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x2d, 0x25, 0x32, 0xa0, 0x25, 0x31, +0x4b, 0x200e, 0x25, 0x32, 0x25, 0x31, 0x28, 0x25, 0x32, 0x25, 0x31, 0x29, 0x25, 0x32, 0x2d, 0xa0, 0x25, 0x31 +}; +static const ushort endonyms_data[] = { +0x4f, 0x72, 0x6f, 0x6d, 0x6f, 0x6f, 0x49, 0x74, 0x6f, 0x6f, 0x70, 0x68, 0x69, 0x79, 0x61, 0x61, 0x4b, 0x65, 0x65, 0x6e, +0x69, 0x79, 0x61, 0x61, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x53, 0x75, 0x69, 0x64, 0x2d, 0x41, 0x66, +0x72, 0x69, 0x6b, 0x61, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0xeb, 0x73, 0x68, 0x71, 0x69, 0x70, 0x53, 0x68, 0x71, 0x69, +0x70, 0xeb, 0x72, 0x69, 0x4d, 0x61, 0x71, 0x65, 0x64, 0x6f, 0x6e, 0x69, 0x4b, 0x6f, 0x73, 0x6f, 0x76, 0xeb, 0x12a0, 0x121b, +0x122d, 0x129b, 0x12a2, 0x1275, 0x12ee, 0x1335, 0x12eb, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x645, 0x635, 0x631, 0x627, 0x644, 0x62c, +0x632, 0x627, 0x626, 0x631, 0x627, 0x644, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x62a, 0x634, 0x627, 0x62f, 0x62c, 0x632, 0x631, 0x20, 0x627, +0x644, 0x642, 0x645, 0x631, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, 0x625, 0x631, 0x64a, 0x62a, 0x631, 0x64a, 0x627, 0x627, 0x644, 0x639, +0x631, 0x627, 0x642, 0x625, 0x633, 0x631, 0x627, 0x626, 0x64a, 0x644, 0x627, 0x644, 0x623, 0x631, 0x62f, 0x646, 0x627, 0x644, 0x643, 0x648, +0x64a, 0x62a, 0x644, 0x628, 0x646, 0x627, 0x646, 0x644, 0x64a, 0x628, 0x64a, 0x627, 0x645, 0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646, 0x64a, +0x627, 0x627, 0x644, 0x645, 0x63a, 0x631, 0x628, 0x639, 0x64f, 0x645, 0x627, 0x646, 0x627, 0x644, 0x623, 0x631, 0x627, 0x636, 0x64a, 0x20, +0x627, 0x644, 0x641, 0x644, 0x633, 0x637, 0x64a, 0x646, 0x64a, 0x629, 0x642, 0x637, 0x631, 0x627, 0x644, 0x645, 0x645, 0x644, 0x643, 0x629, +0x20, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x629, 0x627, 0x644, 0x635, +0x648, 0x645, 0x627, 0x644, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x633, 0x648, 0x631, 0x64a, 0x627, 0x62a, 0x648, 0x646, 0x633, +0x627, 0x644, 0x625, 0x645, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x645, +0x62a, 0x62d, 0x62f, 0x629, 0x627, 0x644, 0x635, 0x62d, 0x631, 0x627, 0x621, 0x20, 0x627, 0x644, 0x63a, 0x631, 0x628, 0x64a, 0x629, 0x627, +0x644, 0x64a, 0x645, 0x646, 0x62c, 0x646, 0x648, 0x628, 0x20, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x570, 0x561, 0x575, 0x565, +0x580, 0x565, 0x576, 0x540, 0x561, 0x575, 0x561, 0x57d, 0x57f, 0x561, 0x576, 0x985, 0x9b8, 0x9ae, 0x9c0, 0x9af, 0x9bc, 0x9be, 0x9ad, 0x9be, +0x9f0, 0x9a4, 0x61, 0x7a, 0x259, 0x72, 0x62, 0x61, 0x79, 0x63, 0x61, 0x6e, 0x20, 0x64, 0x69, 0x6c, 0x69, 0x41, 0x7a, 0x259, +0x72, 0x62, 0x61, 0x79, 0x63, 0x61, 0x6e, 0x430, 0x437, 0x4d9, 0x440, 0x431, 0x430, 0x458, 0x4b9, 0x430, 0x43d, 0x20, 0x434, 0x438, +0x43b, 0x438, 0x410, 0x437, 0x4d9, 0x440, 0x431, 0x430, 0x458, 0x4b9, 0x430, 0x43d, 0x65, 0x75, 0x73, 0x6b, 0x61, 0x72, 0x61, 0x45, +0x73, 0x70, 0x61, 0x69, 0x6e, 0x69, 0x61, 0x9ac, 0x9be, 0x982, 0x9b2, 0x9be, 0x9ac, 0x9be, 0x982, 0x9b2, 0x9be, 0x9a6, 0x9c7, 0x9b6, +0x9ad, 0x9be, 0x9b0, 0x9a4, 0xf62, 0xfab, 0xf7c, 0xf44, 0xf0b, 0xf41, 0xf60, 0xf56, 0xfb2, 0xf74, 0xf42, 0x62, 0x72, 0x65, 0x7a, 0x68, +0x6f, 0x6e, 0x65, 0x67, 0x46, 0x72, 0x61, 0xf1, 0x73, 0x431, 0x44a, 0x43b, 0x433, 0x430, 0x440, 0x441, 0x43a, 0x438, 0x411, 0x44a, +0x43b, 0x433, 0x430, 0x440, 0x438, 0x44f, 0x1017, 0x1019, 0x102c, 0x1019, 0x103c, 0x1014, 0x103a, 0x1019, 0x102c, 0x431, 0x435, 0x43b, 0x430, 0x440, +0x443, 0x441, 0x43a, 0x430, 0x44f, 0x411, 0x435, 0x43b, 0x430, 0x440, 0x443, 0x441, 0x44c, 0x1781, 0x17d2, 0x1798, 0x17c2, 0x179a, 0x1780, 0x1798, +0x17d2, 0x1796, 0x17bb, 0x1787, 0x17b6, 0x63, 0x61, 0x74, 0x61, 0x6c, 0xe0, 0x45, 0x73, 0x70, 0x61, 0x6e, 0x79, 0x61, 0x41, 0x6e, +0x64, 0x6f, 0x72, 0x72, 0x61, 0x46, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x49, 0x74, 0xe0, 0x6c, 0x69, 0x61, 0x7b80, 0x4f53, 0x4e2d, +0x6587, 0x4e2d, 0x56fd, 0x4e2d, 0x56fd, 0x9999, 0x6e2f, 0x7279, 0x522b, 0x884c, 0x653f, 0x533a, 0x4e2d, 0x56fd, 0x6fb3, 0x95e8, 0x7279, 0x522b, 0x884c, 0x653f, +0x533a, 0x65b0, 0x52a0, 0x5761, 0x7e41, 0x9ad4, 0x4e2d, 0x6587, 0x4e2d, 0x83ef, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x570b, 0x9999, 0x6e2f, 0x7279, 0x5225, 0x884c, +0x653f, 0x5340, 0x4e2d, 0x83ef, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x570b, 0x6fb3, 0x9580, 0x7279, 0x5225, 0x884c, 0x653f, 0x5340, 0x53f0, 0x7063, 0x68, 0x72, +0x76, 0x61, 0x74, 0x73, 0x6b, 0x69, 0x48, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, 0x61, 0x42, 0x6f, 0x73, 0x6e, 0x61, 0x20, +0x69, 0x20, 0x48, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x69, 0x6e, 0x61, 0x10d, 0x65, 0x161, 0x74, 0x69, 0x6e, 0x61, +0x10c, 0x65, 0x73, 0x6b, 0xe1, 0x20, 0x72, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x6b, 0x61, 0x64, 0x61, 0x6e, 0x73, 0x6b, +0x44, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x47, 0x72, 0xf8, 0x6e, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x65, 0x64, 0x65, 0x72, +0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x41, 0x72, 0x75, 0x62, 0x61, 0x56, +0x6c, 0x61, 0x61, 0x6d, 0x73, 0x42, 0x65, 0x6c, 0x67, 0x69, 0xeb, 0x43, 0x75, 0x72, 0x61, 0xe7, 0x61, 0x6f, 0x53, 0x75, +0x72, 0x69, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x72, 0x69, 0x62, 0x69, 0x73, 0x63, 0x68, 0x20, 0x4e, 0x65, 0x64, 0x65, +0x72, 0x6c, 0x61, 0x6e, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, +0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x6e, 0x20, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x41, 0x6e, 0x67, 0x75, 0x69, 0x6c, 0x6c, 0x61, 0x41, 0x6e, 0x74, 0x69, 0x67, +0x75, 0x61, 0x20, 0x26, 0x20, 0x42, 0x61, 0x72, 0x62, 0x75, 0x64, 0x61, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, +0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x41, +0x75, 0x73, 0x74, 0x72, 0x69, 0x61, 0x42, 0x61, 0x68, 0x61, 0x6d, 0x61, 0x73, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x6f, +0x73, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x75, 0x6d, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, +0x61, 0x42, 0x6f, 0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x49, 0x6e, 0x64, +0x69, 0x61, 0x6e, 0x20, 0x4f, 0x63, 0x65, 0x61, 0x6e, 0x20, 0x54, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, +0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x6f, 0x6e, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, +0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x61, 0x43, 0x61, 0x79, 0x6d, +0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d, 0x61, 0x73, 0x20, +0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x43, 0x6f, 0x63, 0x6f, 0x73, 0x20, 0x28, 0x4b, 0x65, 0x65, 0x6c, 0x69, 0x6e, 0x67, +0x29, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x43, 0x6f, 0x6f, 0x6b, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, +0x73, 0x43, 0x79, 0x70, 0x72, 0x75, 0x73, 0x44, 0x65, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, +0x63, 0x61, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, 0x61, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, +0x6c, 0x61, 0x6e, 0x64, 0x73, 0x46, 0x69, 0x6a, 0x69, 0x46, 0x69, 0x6e, 0x6c, 0x61, 0x6e, 0x64, 0x47, 0x75, 0x65, 0x72, +0x6e, 0x73, 0x65, 0x79, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x47, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x79, 0x47, 0x68, 0x61, +0x6e, 0x61, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x47, 0x75, +0x61, 0x6d, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x53, 0x41, +0x52, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x49, 0x72, 0x65, 0x6c, 0x61, 0x6e, 0x64, 0x49, +0x73, 0x72, 0x61, 0x65, 0x6c, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x4b, 0x69, 0x72, +0x69, 0x62, 0x61, 0x74, 0x69, 0x4c, 0x65, 0x73, 0x6f, 0x74, 0x68, 0x6f, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x4d, +0x61, 0x63, 0x61, 0x75, 0x20, 0x53, 0x41, 0x52, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x4d, 0x61, 0x64, 0x61, 0x67, 0x61, +0x73, 0x63, 0x61, 0x72, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x4d, 0x61, +0x6c, 0x74, 0x61, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x6c, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4d, +0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x75, 0x73, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x4d, 0x6f, +0x6e, 0x74, 0x73, 0x65, 0x72, 0x72, 0x61, 0x74, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x4e, 0x61, 0x75, 0x72, 0x75, +0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61, +0x6e, 0x64, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x4e, 0x69, 0x75, 0x65, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b, +0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69, +0x61, 0x6e, 0x61, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x50, 0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x50, +0x61, 0x6c, 0x61, 0x75, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, +0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x73, 0x50, 0x69, 0x74, 0x63, 0x61, 0x69, 0x72, 0x6e, 0x20, +0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x50, 0x75, 0x65, 0x72, 0x74, 0x6f, 0x20, 0x52, 0x69, 0x63, 0x6f, 0x52, 0x77, +0x61, 0x6e, 0x64, 0x61, 0x53, 0x74, 0x2e, 0x20, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x20, 0x26, 0x20, 0x4e, 0x65, 0x76, 0x69, +0x73, 0x53, 0x74, 0x2e, 0x20, 0x4c, 0x75, 0x63, 0x69, 0x61, 0x53, 0x74, 0x2e, 0x20, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, +0x74, 0x20, 0x26, 0x20, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x53, +0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, +0x65, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x61, 0x53, 0x6f, +0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, +0x66, 0x72, 0x69, 0x63, 0x61, 0x53, 0x74, 0x2e, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x53, 0x75, 0x64, 0x61, 0x6e, +0x53, 0x77, 0x61, 0x7a, 0x69, 0x6c, 0x61, 0x6e, 0x64, 0x53, 0x77, 0x65, 0x64, 0x65, 0x6e, 0x53, 0x77, 0x69, 0x74, 0x7a, +0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x54, 0x6f, 0x6b, 0x65, 0x6c, 0x61, +0x75, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, +0x61, 0x67, 0x6f, 0x54, 0x75, 0x72, 0x6b, 0x73, 0x20, 0x26, 0x20, 0x43, 0x61, 0x69, 0x63, 0x6f, 0x73, 0x20, 0x49, 0x73, +0x6c, 0x61, 0x6e, 0x64, 0x73, 0x54, 0x75, 0x76, 0x61, 0x6c, 0x75, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x42, 0x72, 0x69, +0x74, 0x69, 0x73, 0x68, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x4b, +0x69, 0x6e, 0x67, 0x64, 0x6f, 0x6d, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x4f, 0x75, 0x74, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x20, +0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, +0x68, 0x20, 0x56, 0x69, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x55, 0x2e, 0x53, 0x2e, +0x20, 0x56, 0x69, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x5a, 0x61, 0x6d, 0x62, 0x69, +0x61, 0x5a, 0x69, 0x6d, 0x62, 0x61, 0x62, 0x77, 0x65, 0x44, 0x69, 0x65, 0x67, 0x6f, 0x20, 0x47, 0x61, 0x72, 0x63, 0x69, +0x61, 0x49, 0x73, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x61, 0x6e, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x53, 0x6f, +0x75, 0x74, 0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x53, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, +0x6e, 0x65, 0x65, 0x73, 0x74, 0x69, 0x45, 0x65, 0x73, 0x74, 0x69, 0x66, 0xf8, 0x72, 0x6f, 0x79, 0x73, 0x6b, 0x74, 0x46, +0xf8, 0x72, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x75, 0x6f, 0x6d, 0x69, 0x53, 0x75, 0x6f, 0x6d, 0x69, 0x66, 0x72, 0x61, 0x6e, +0xe7, 0x61, 0x69, 0x73, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x42, 0x65, 0x6c, +0x67, 0x69, 0x71, 0x75, 0x65, 0x42, 0xe9, 0x6e, 0x69, 0x6e, 0x42, 0x75, 0x72, 0x6b, 0x69, 0x6e, 0x61, 0x20, 0x46, 0x61, +0x73, 0x6f, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x20, 0x63, +0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x52, 0xe9, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x71, 0x75, 0x65, 0x20, 0x63, 0x65, +0x6e, 0x74, 0x72, 0x61, 0x66, 0x72, 0x69, 0x63, 0x61, 0x69, 0x6e, 0x65, 0x54, 0x63, 0x68, 0x61, 0x64, 0x43, 0x6f, 0x6d, +0x6f, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, 0x61, 0x43, 0x6f, +0x6e, 0x67, 0x6f, 0x2d, 0x42, 0x72, 0x61, 0x7a, 0x7a, 0x61, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x43, 0xf4, 0x74, 0x65, 0x20, +0x64, 0x2019, 0x49, 0x76, 0x6f, 0x69, 0x72, 0x65, 0x44, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x47, 0x75, 0x69, 0x6e, +0xe9, 0x65, 0x20, 0xe9, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x65, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x65, +0x20, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x79, 0x6e, 0xe9, 0x73, 0x69, 0x65, 0x20, +0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x47, 0x61, 0x62, 0x6f, 0x6e, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, +0x6f, 0x75, 0x70, 0x65, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x48, 0x61, 0xef, 0x74, 0x69, 0x4c, 0x75, 0x78, 0x65, 0x6d, +0x62, 0x6f, 0x75, 0x72, 0x67, 0x4d, 0x61, 0x6c, 0x69, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x4d, +0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x79, 0x6f, +0x74, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x4d, 0x61, 0x72, 0x6f, 0x63, 0x4e, 0x6f, 0x75, 0x76, 0x65, 0x6c, +0x6c, 0x65, 0x2d, 0x43, 0x61, 0x6c, 0xe9, 0x64, 0x6f, 0x6e, 0x69, 0x65, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x4c, 0x61, 0x20, +0x52, 0xe9, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x53, 0xe9, 0x6e, 0xe9, 0x67, 0x61, 0x6c, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, +0x50, 0x69, 0x65, 0x72, 0x72, 0x65, 0x2d, 0x65, 0x74, 0x2d, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x6f, 0x6e, 0x66, 0x72, +0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, +0x79, 0x72, 0x69, 0x65, 0x54, 0x6f, 0x67, 0x6f, 0x54, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x69, +0x73, 0x2d, 0x65, 0x74, 0x2d, 0x46, 0x75, 0x74, 0x75, 0x6e, 0x61, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x42, 0x61, 0x72, +0x74, 0x68, 0xe9, 0x6c, 0x65, 0x6d, 0x79, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x57, +0x65, 0x73, 0x74, 0x2d, 0x46, 0x72, 0x79, 0x73, 0x6b, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0xe2, 0x6e, 0x47, 0xe0, 0x69, +0x64, 0x68, 0x6c, 0x69, 0x67, 0x41, 0x6e, 0x20, 0x52, 0xec, 0x6f, 0x67, 0x68, 0x61, 0x63, 0x68, 0x64, 0x20, 0x41, 0x6f, +0x6e, 0x61, 0x69, 0x63, 0x68, 0x74, 0x65, 0x67, 0x61, 0x6c, 0x65, 0x67, 0x6f, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0x10e5, +0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, 0x10e1, 0x10d0, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10d5, 0x10d4, 0x10da, 0x10dd, 0x44, 0x65, 0x75, 0x74, +0x73, 0x63, 0x68, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0xd6, 0x73, 0x74, 0x65, 0x72, 0x72, +0x65, 0x69, 0x63, 0x68, 0x69, 0x73, 0x63, 0x68, 0x65, 0x73, 0x20, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0xd6, 0x73, +0x74, 0x65, 0x72, 0x72, 0x65, 0x69, 0x63, 0x68, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x65, 0x6e, 0x4c, 0x69, 0x65, 0x63, 0x68, +0x74, 0x65, 0x6e, 0x73, 0x74, 0x65, 0x69, 0x6e, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, 0x72, 0x67, 0x53, 0x63, 0x68, +0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x48, 0x6f, 0x63, 0x68, 0x64, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x53, 0x63, +0x68, 0x77, 0x65, 0x69, 0x7a, 0x395, 0x3bb, 0x3bb, 0x3b7, 0x3bd, 0x3b9, 0x3ba, 0x3ac, 0x395, 0x3bb, 0x3bb, 0x3ac, 0x3b4, 0x3b1, 0x39a, +0x3cd, 0x3c0, 0x3c1, 0x3bf, 0x3c2, 0x6b, 0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x75, 0x74, 0x4b, 0x61, 0x6c, 0x61, +0x61, 0x6c, 0x6c, 0x69, 0x74, 0x20, 0x4e, 0x75, 0x6e, 0x61, 0x61, 0x74, 0xa97, 0xac1, 0xa9c, 0xab0, 0xabe, 0xaa4, 0xac0, 0xaad, +0xabe, 0xab0, 0xaa4, 0x48, 0x61, 0x75, 0x73, 0x61, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x47, 0x61, 0x6e, 0x61, +0x4e, 0x69, 0x6a, 0x61, 0x72, 0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea, 0x5d9, 0x5e9, 0x5e8, 0x5d0, 0x5dc, 0x939, 0x93f, 0x928, 0x94d, 0x926, +0x940, 0x92d, 0x93e, 0x930, 0x924, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x4d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x6f, 0x72, 0x73, +0x7a, 0xe1, 0x67, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0xcd, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x64, +0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x47, 0x61, 0x65, 0x69, 0x6c, 0x67, 0x65, 0xc9, 0x69, 0x72, 0x65, 0x69, 0x74, 0x61, +0x6c, 0x69, 0x61, 0x6e, 0x6f, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x53, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x6e, +0x6f, 0x53, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x61, 0x65e5, 0x672c, 0x8a9e, 0x65e5, 0x672c, 0xc95, 0xca8, 0xccd, 0xca8, 0xca1, 0xcad, +0xcbe, 0xcb0, 0xca4, 0x6a9, 0x672, 0x634, 0x64f, 0x631, 0x6c1, 0x650, 0x646, 0x65b, 0x62f, 0x648, 0x633, 0x62a, 0x627, 0x646, 0x49b, 0x430, +0x437, 0x430, 0x49b, 0x20, 0x442, 0x456, 0x43b, 0x456, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x4b, 0x69, 0x6e, +0x79, 0x61, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x43a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x447, 0x430, 0x41a, 0x44b, 0x440, 0x433, +0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0xd55c, 0xad6d, 0xc5b4, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0xc870, 0xc120, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0xc778, +0xbbfc, 0xacf5, 0xd654, 0xad6d, 0x49, 0x6b, 0x69, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, +0xea5, 0xeb2, 0xea7, 0x6c, 0x61, 0x74, 0x76, 0x69, 0x65, 0x161, 0x75, 0x4c, 0x61, 0x74, 0x76, 0x69, 0x6a, 0x61, 0x6c, 0x69, +0x6e, 0x67, 0xe1, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x69, 0x62, 0x69, 0x6b, 0x69, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6b, 0x72, +0x61, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0xf3, 0x41, 0x6e, 0x67, 0xf3, 0x6c, 0x61, +0x52, 0x65, 0x70, 0x69, 0x62, 0x69, 0x6b, 0x69, 0x20, 0x79, 0x61, 0x20, 0x41, 0x66, 0x72, 0xed, 0x6b, 0x61, 0x20, 0x79, +0x61, 0x20, 0x4b, 0xe1, 0x74, 0x69, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x69, 0x65, 0x74, 0x75, 0x76, 0x69, 0x173, 0x4c, +0x69, 0x65, 0x74, 0x75, 0x76, 0x61, 0x43c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x41c, 0x430, 0x43a, 0x435, +0x434, 0x43e, 0x43d, 0x438, 0x458, 0x430, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x4d, 0x61, 0x64, 0x61, 0x67, 0x61, +0x73, 0x69, 0x6b, 0x61, 0x72, 0x61, 0x42, 0x61, 0x68, 0x61, 0x73, 0x61, 0x20, 0x4d, 0x65, 0x6c, 0x61, 0x79, 0x75, 0x42, +0x72, 0x75, 0x6e, 0x65, 0x69, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0xd2e, 0xd32, 0xd2f, 0xd3e, 0xd33, 0xd02, +0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0x4d, 0x61, 0x6c, 0x74, 0x69, 0x92e, 0x930, 0x93e, 0x920, 0x940, 0x43c, 0x43e, 0x43d, 0x433, +0x43e, 0x43b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x6e, +0x6f, 0x72, 0x73, 0x6b, 0x20, 0x62, 0x6f, 0x6b, 0x6d, 0xe5, 0x6c, 0x4e, 0x6f, 0x72, 0x67, 0x65, 0x53, 0x76, 0x61, 0x6c, +0x62, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x67, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x79, 0x65, 0x6e, 0xb13, 0xb21, 0xb3c, +0xb3f, 0xb06, 0xb2d, 0xb3e, 0xb30, 0xb24, 0x67e, 0x69a, 0x62a, 0x648, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x641, +0x627, 0x631, 0x633, 0x6cc, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x62f, 0x631, 0x6cc, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x50, 0x6f, +0x6c, 0x73, 0x6b, 0x61, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x20, 0x64, 0x6f, 0x20, 0x42, 0x72, 0x61, +0x73, 0x69, 0x6c, 0x42, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x41, 0x6e, +0x67, 0x6f, 0x6c, 0x61, 0x43, 0x61, 0x62, 0x6f, 0x20, 0x56, 0x65, 0x72, 0x64, 0x65, 0x54, 0x69, 0x6d, 0x6f, 0x72, 0x2d, +0x4c, 0x65, 0x73, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x20, 0x45, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, +0x6c, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x2d, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, +0x72, 0x67, 0x6f, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x2c, 0x20, 0x52, 0x41, 0x45, 0x20, 0x64, 0x61, 0x20, 0x43, 0x68, 0x69, +0x6e, 0x61, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, +0x73, 0x20, 0x65, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x75, 0x50, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x61, 0x6c, 0x53, 0xe3, 0x6f, +0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x53, 0x75, 0xed, 0xe7, +0x61, 0xa2a, 0xa70, 0xa1c, 0xa3e, 0xa2c, 0xa40, 0xa2d, 0xa3e, 0xa30, 0xa24, 0x67e, 0x646, 0x62c, 0x627, 0x628, 0x6cc, 0x67e, 0x6a9, 0x633, +0x62a, 0x627, 0x646, 0x52, 0x75, 0x6e, 0x61, 0x73, 0x69, 0x6d, 0x69, 0x50, 0x65, 0x72, 0xfa, 0x42, 0x6f, 0x6c, 0x69, 0x76, +0x69, 0x61, 0x45, 0x63, 0x75, 0x61, 0x64, 0x6f, 0x72, 0x72, 0x75, 0x6d, 0x61, 0x6e, 0x74, 0x73, 0x63, 0x68, 0x53, 0x76, +0x69, 0x7a, 0x72, 0x61, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x103, 0x52, 0x6f, 0x6d, 0xe2, 0x6e, 0x69, 0x61, 0x6d, 0x6f, 0x6c, +0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x61, 0x73, 0x63, 0x103, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, +0x4d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x61, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x44f, +0x41a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x442, 0x430, 0x43d, 0x41a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x438, 0x44f, 0x41c, 0x43e, 0x43b, +0x434, 0x43e, 0x432, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x430, 0x53, 0xe4, 0x6e, 0x67, 0xf6, 0x4b, 0xf6, 0x64, 0xf6, +0x72, 0xf6, 0x73, 0xea, 0x73, 0x65, 0x20, 0x74, 0xee, 0x20, 0x42, 0xea, 0x61, 0x66, 0x72, 0xee, 0x6b, 0x61, 0x441, 0x440, +0x43f, 0x441, 0x43a, 0x438, 0x421, 0x440, 0x431, 0x438, 0x458, 0x430, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x43, 0x72, 0x6e, 0x61, +0x20, 0x47, 0x6f, 0x72, 0x61, 0x53, 0x72, 0x62, 0x69, 0x6a, 0x61, 0x411, 0x43e, 0x441, 0x43d, 0x430, 0x20, 0x438, 0x20, 0x425, +0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x438, 0x43d, 0x430, 0x426, 0x440, 0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x41a, +0x43e, 0x441, 0x43e, 0x432, 0x43e, 0x4b, 0x6f, 0x73, 0x6f, 0x76, 0x6f, 0x438, 0x440, 0x43e, 0x43d, 0x413, 0x443, 0x44b, 0x440, 0x434, +0x437, 0x44b, 0x441, 0x442, 0x43e, 0x43d, 0x423, 0x4d5, 0x440, 0x4d5, 0x441, 0x435, 0x63, 0x68, 0x69, 0x53, 0x68, 0x6f, 0x6e, 0x61, +0xdc3, 0xdd2, 0xd82, 0xdc4, 0xdbd, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0xdc0, 0x73, 0x6c, 0x6f, 0x76, +0x65, 0x6e, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x6f, 0x73, 0x6c, 0x6f, 0x76, 0x65, +0x6e, 0x161, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x6a, 0x61, 0x53, 0x6f, 0x6f, 0x6d, 0x61, +0x61, 0x6c, 0x69, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, +0x49, 0x74, 0x6f, 0x6f, 0x62, 0x69, 0x79, 0x61, 0x4b, 0x69, 0x69, 0x6e, 0x69, 0x79, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, +0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x41, +0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x43, 0x68, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, +0x61, 0x43, 0x6f, 0x73, 0x74, 0x61, 0x20, 0x52, 0x69, 0x63, 0x61, 0x43, 0x75, 0x62, 0x61, 0x52, 0x65, 0x70, 0xfa, 0x62, +0x6c, 0x69, 0x63, 0x61, 0x20, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x61, 0x45, 0x6c, 0x20, 0x53, 0x61, +0x6c, 0x76, 0x61, 0x64, 0x6f, 0x72, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x20, 0x45, 0x63, 0x75, 0x61, 0x74, 0x6f, 0x72, +0x69, 0x61, 0x6c, 0x47, 0x75, 0x61, 0x74, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x48, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x61, 0x73, +0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0xe9, 0x78, 0x69, 0x63, 0x6f, 0x4d, 0xe9, 0x78, +0x69, 0x63, 0x6f, 0x4e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x50, 0x61, 0x6e, 0x61, 0x6d, 0xe1, 0x50, 0x61, +0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x45, 0x73, 0x74, 0x61, 0x64, +0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x55, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x56, 0x65, 0x6e, 0x65, +0x7a, 0x75, 0x65, 0x6c, 0x61, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x61, 0x73, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, +0x20, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x6f, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x4c, 0x61, 0x74, 0x69, +0x6e, 0x6f, 0x61, 0x6d, 0xe9, 0x72, 0x69, 0x63, 0x61, 0x43, 0x65, 0x75, 0x74, 0x61, 0x20, 0x79, 0x20, 0x4d, 0x65, 0x6c, +0x69, 0x6c, 0x6c, 0x61, 0x4b, 0x69, 0x73, 0x77, 0x61, 0x68, 0x69, 0x6c, 0x69, 0x4b, 0x69, 0x73, 0x77, 0x61, 0x68, 0x69, +0x6c, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x4a, 0x61, 0x6d, 0x68, 0x75, 0x72, 0x69, 0x20, 0x79, +0x61, 0x20, 0x4b, 0x69, 0x64, 0x65, 0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x73, 0x69, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, +0x6e, 0x67, 0x6f, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x53, 0x76, 0x65, 0x72, 0x69, 0x67, 0x65, 0xc5, 0x6c, 0x61, +0x6e, 0x64, 0xba4, 0xbae, 0xbbf, 0xbb4, 0xbcd, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0xbbe, 0xbae, 0xbb2, 0xbc7, 0xb9a, 0xbbf, 0xbaf, +0xbbe, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0xc24, 0xc46, +0xc32, 0xc41, 0xc17, 0xc41, 0xc2d, 0xc3e, 0xc30, 0xc24, 0x20, 0xc26, 0xc47, 0xc36, 0xc02, 0xe44, 0xe17, 0xe22, 0xf56, 0xf7c, 0xf51, 0xf0b, +0xf66, 0xf90, 0xf51, 0xf0b, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf53, 0xf42, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b, 0x1275, 0x130d, 0x122d, +0x129b, 0x12a4, 0x122d, 0x1275, 0x122b, 0x6c, 0x65, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0xfc, +0x72, 0x6b, 0xe7, 0x65, 0x54, 0xfc, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x4b, 0x131, 0x62, 0x72, 0x131, 0x73, 0x74, 0xfc, 0x72, +0x6b, 0x6d, 0x65, 0x6e, 0xe7, 0x65, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x626, 0x6c7, +0x64a, 0x63a, 0x6c7, 0x631, 0x686, 0x6d5, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, +0x430, 0x423, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x430, 0x627, 0x631, 0x62f, 0x648, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x628, +0x6be, 0x627, 0x631, 0x62a, 0x6f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x4f, 0x2bb, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, +0x6e, 0x627, 0x648, 0x632, 0x628, 0x6cc, 0x6a9, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, +0x43e, 0x43d, 0x54, 0x69, 0x1ebf, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, +0x43, 0x79, 0x6d, 0x72, 0x61, 0x65, 0x67, 0x59, 0x20, 0x44, 0x65, 0x79, 0x72, 0x6e, 0x61, 0x73, 0x20, 0x55, 0x6e, 0x65, +0x64, 0x69, 0x67, 0xc8, 0x64, 0xe8, 0x20, 0x59, 0x6f, 0x72, 0xf9, 0x62, 0xe1, 0x4f, 0x72, 0xed, 0x6c, 0x1eb9, 0x301, 0xe8, +0x64, 0x65, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x4f, 0x72, 0xed, 0x6c, 0x25b, 0x301, 0xe8, 0x64, 0x65, +0x20, 0x42, 0x25b, 0x300, 0x6e, 0x25b, 0x300, 0x69, 0x73, 0x69, 0x5a, 0x75, 0x6c, 0x75, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, +0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x79, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x4e, 0x6f, 0x72, 0x65, 0x67, +0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x69, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x438, 0x47, 0x61, 0x65, 0x6c, +0x67, 0x45, 0x6c, 0x6c, 0x61, 0x6e, 0x20, 0x56, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x77, 0x65, +0x6b, 0x52, 0x79, 0x77, 0x76, 0x61, 0x6e, 0x65, 0x74, 0x68, 0x20, 0x55, 0x6e, 0x79, 0x73, 0x41, 0x6b, 0x61, 0x6e, 0x47, +0x61, 0x61, 0x6e, 0x61, 0x915, 0x94b, 0x902, 0x915, 0x923, 0x940, 0x49, 0x67, 0x62, 0x6f, 0x4b, 0x69, 0x6b, 0x61, 0x6d, 0x62, +0x61, 0x66, 0x75, 0x72, 0x6c, 0x61, 0x6e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x65, 0x45, 0x28b, 0x65, 0x67, 0x62, 0x65, 0x47, +0x68, 0x61, 0x6e, 0x61, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65, 0x54, 0x6f, 0x67, 0x6f, 0x20, 0x6e, 0x75, 0x74, 0x6f, +0x6d, 0x65, 0x2bb, 0x14c, 0x6c, 0x65, 0x6c, 0x6f, 0x20, 0x48, 0x61, 0x77, 0x61, 0x69, 0x2bb, 0x69, 0x2bb, 0x41, 0x6d, 0x65, +0x6c, 0x69, 0x6b, 0x61, 0x20, 0x48, 0x75, 0x69, 0x20, 0x50, 0x16b, 0x20, 0x2bb, 0x49, 0x61, 0x46, 0x69, 0x6c, 0x69, 0x70, +0x69, 0x6e, 0x6f, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, +0x72, 0x74, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x46, 0x72, 0x61, 0x6e, 0x6b, +0x72, 0x69, 0x69, 0x63, 0x68, 0x4c, 0x69, 0xe4, 0x63, 0x68, 0x74, 0x65, 0x73, 0x63, 0x68, 0x74, 0xe4, 0x69, 0xa188, 0xa320, +0xa259, 0xa34f, 0xa1e9, 0x64, 0x61, 0x76, 0x76, 0x69, 0x73, 0xe1, 0x6d, 0x65, 0x67, 0x69, 0x65, 0x6c, 0x6c, 0x61, 0x4e, 0x6f, +0x72, 0x67, 0x61, 0x53, 0x75, 0x6f, 0x70, 0x6d, 0x61, 0x52, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x45, 0x6b, 0x65, 0x67, 0x75, +0x73, 0x69, 0x69, 0x4b, 0x69, 0x74, 0x61, 0x69, 0x74, 0x61, 0x50, 0x75, 0x6c, 0x61, 0x61, 0x72, 0x53, 0x65, 0x6e, 0x65, +0x67, 0x61, 0x61, 0x6c, 0x4b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x75, 0x6e, 0x47, 0x69, 0x6e, 0x65, 0x4d, 0x75, 0x72, 0x69, +0x74, 0x61, 0x6e, 0x69, 0x47, 0x69, 0x6b, 0x75, 0x79, 0x75, 0x4b, 0x69, 0x73, 0x61, 0x6d, 0x70, 0x75, 0x72, 0x73, 0x65, +0x6e, 0x61, 0x69, 0x73, 0x69, 0x4e, 0x64, 0x65, 0x62, 0x65, 0x6c, 0x65, 0x4b, 0x69, 0x68, 0x6f, 0x72, 0x6f, 0x6d, 0x62, +0x6f, 0x2d5c, 0x2d30, 0x2d5b, 0x2d4d, 0x2d43, 0x2d49, 0x2d5c, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, 0x2d49, 0x2d31, 0x54, 0x61, 0x73, 0x68, 0x65, 0x6c, +0x1e25, 0x69, 0x79, 0x74, 0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62, 0x54, 0x61, 0x71, 0x62, 0x61, 0x79, 0x6c, 0x69, 0x74, 0x4c, +0x65, 0x7a, 0x7a, 0x61, 0x79, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x79, 0x61, 0x6e, 0x6b, 0x6f, 0x72, 0x65, 0x48, 0x69, 0x62, +0x65, 0x6e, 0x61, 0x48, 0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x4b, 0x79, 0x69, 0x76, 0x75, 0x6e, 0x6a, +0x6f, 0x62, 0x61, 0x6d, 0x61, 0x6e, 0x61, 0x6b, 0x61, 0x6e, 0x4b, 0x129, 0x65, 0x6d, 0x62, 0x75, 0x13e3, 0x13b3, 0x13a9, 0x13a0, +0x13b9, 0x13f0, 0x13df, 0x6b, 0x72, 0x65, 0x6f, 0x6c, 0x20, 0x6d, 0x6f, 0x72, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x4d, 0x6f, 0x72, +0x69, 0x73, 0x43, 0x68, 0x69, 0x6d, 0x61, 0x6b, 0x6f, 0x6e, 0x64, 0x65, 0x4b, 0x268, 0x6c, 0x61, 0x61, 0x6e, 0x67, 0x69, +0x54, 0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed, 0x61, 0x4c, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x59, 0x75, 0x67, 0x61, +0x6e, 0x64, 0x61, 0x49, 0x63, 0x68, 0x69, 0x62, 0x65, 0x6d, 0x62, 0x61, 0x6b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, +0x69, 0x61, 0x6e, 0x75, 0x4b, 0x61, 0x62, 0x75, 0x20, 0x56, 0x65, 0x72, 0x64, 0x69, 0x4b, 0x129, 0x6d, 0x129, 0x72, 0x169, +0x4b, 0x61, 0x6c, 0x65, 0x6e, 0x6a, 0x69, 0x6e, 0x45, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, +0x4b, 0x68, 0x6f, 0x65, 0x6b, 0x68, 0x6f, 0x65, 0x67, 0x6f, 0x77, 0x61, 0x62, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, +0x62, 0x4b, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x61, 0x6d, 0x65, 0x4b, 0xf6, 0x6c, 0x73, 0x63, 0x68, 0x44, 0x6f, 0xfc, 0x74, +0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x4d, 0x61, 0x61, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x61, 0x4f, 0x6c, +0x75, 0x73, 0x6f, 0x67, 0x61, 0x4c, 0x75, 0x6c, 0x75, 0x68, 0x69, 0x61, 0x4b, 0x69, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, +0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x4b, 0x69, 0x74, 0x65, 0x73, 0x6f, 0x4b, 0x65, 0x6e, 0x69, 0x61, 0x4b, 0x6f, 0x79, +0x72, 0x61, 0x20, 0x63, 0x69, 0x69, 0x6e, 0x69, 0x4d, 0x61, 0x61, 0x6c, 0x69, 0x4b, 0x69, 0x72, 0x75, 0x77, 0x61, 0x44, +0x68, 0x6f, 0x6c, 0x75, 0x6f, 0x52, 0x75, 0x6b, 0x69, 0x67, 0x61, 0x54, 0x61, 0x6d, 0x61, 0x7a, 0x69, 0x263, 0x74, 0x20, +0x6e, 0x20, 0x6c, 0x61, 0x1e6d, 0x6c, 0x61, 0x1e63, 0x4d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x4b, 0x6f, 0x79, 0x72, 0x61, 0x62, +0x6f, 0x72, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0x4b, 0x69, 0x73, 0x68, 0x61, 0x6d, 0x62, 0x61, 0x61, 0x92c, 0x921, +0x93c, 0x94b, 0x43d, 0x43e, 0x445, 0x447, 0x438, 0x439, 0x43d, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x446, 0x435, 0x440, 0x43a, 0x43e, 0x432, +0x43d, 0x43e, 0x441, 0x43b, 0x43e, 0x432, 0x435, 0x301, 0x43d, 0x441, 0x43a, 0x457, 0x439, 0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x430, +0x54, 0x73, 0x68, 0x69, 0x6c, 0x75, 0x62, 0x61, 0x44, 0x69, 0x74, 0x75, 0x6e, 0x67, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, +0x6f, 0x6e, 0x67, 0x75, 0x4c, 0xeb, 0x74, 0x7a, 0x65, 0x62, 0x75, 0x65, 0x72, 0x67, 0x65, 0x73, 0x63, 0x68, 0x4c, 0xeb, +0x74, 0x7a, 0x65, 0x62, 0x75, 0x65, 0x72, 0x67, 0x41, 0x67, 0x68, 0x65, 0x6d, 0x4b, 0xe0, 0x6d, 0xe0, 0x6c, 0xfb, 0x14b, +0x181, 0xe0, 0x73, 0xe0, 0x61, 0x4b, 0xe0, 0x6d, 0x25b, 0x300, 0x72, 0xfb, 0x6e, 0x5a, 0x61, 0x72, 0x6d, 0x61, 0x63, 0x69, +0x69, 0x6e, 0x65, 0x4e, 0x69, 0x17e, 0x65, 0x72, 0x64, 0x75, 0xe1, 0x6c, 0xe1, 0x6a, 0x6f, 0x6f, 0x6c, 0x61, 0x53, 0x65, +0x6e, 0x65, 0x67, 0x61, 0x6c, 0x65, 0x77, 0x6f, 0x6e, 0x64, 0x6f, 0x4b, 0x61, 0x6d, 0x259, 0x72, 0xfa, 0x6e, 0x72, 0x69, +0x6b, 0x70, 0x61, 0x6b, 0x61, 0x6d, 0x25b, 0x72, 0xfa, 0x6e, 0x4d, 0x61, 0x6b, 0x75, 0x61, 0x55, 0x6d, 0x6f, 0x7a, 0x61, +0x6d, 0x62, 0x69, 0x6b, 0x69, 0x4d, 0x55, 0x4e, 0x44, 0x41, 0x14a, 0x6b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x14b, 0x4b, 0x77, +0x61, 0x73, 0x69, 0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x6e, 0x54, 0x68, 0x6f, 0x6b, 0x20, 0x4e, 0x61, 0x74, 0x68, +0x441, 0x430, 0x445, 0x430, 0x20, 0x442, 0x44b, 0x43b, 0x430, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x49, 0x73, +0x68, 0x69, 0x73, 0x61, 0x6e, 0x67, 0x75, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x54, 0x61, 0x73, 0x61, +0x77, 0x61, 0x71, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0xa559, 0xa524, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x56, 0x61, 0x69, 0x4c, 0x61, +0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x57, 0x61, 0x6c, 0x73, 0x65, 0x72, 0x53, 0x63, 0x68, 0x77, 0x69, 0x7a, 0x6e, 0x75, +0x61, 0x73, 0x75, 0x65, 0x4b, 0x65, 0x6d, 0x65, 0x6c, 0xfa, 0x6e, 0x61, 0x73, 0x74, 0x75, 0x72, 0x69, 0x61, 0x6e, 0x75, +0x4e, 0x64, 0x61, 0xa78c, 0x61, 0x4b, 0x61, 0x6d, 0x25b, 0x6c, 0xfb, 0x6e, 0x6b, 0x61, 0x6b, 0x254, 0x4b, 0x61, 0x6d, 0x25b, +0x72, 0x75, 0x6e, 0x6d, 0x65, 0x74, 0x61, 0x2bc, 0x4b, 0x61, 0x6d, 0x61, 0x6c, 0x75, 0x6e, 0x53, 0x68, 0x77, 0xf3, 0x14b, +0xf2, 0x20, 0x6e, 0x67, 0x69, 0x65, 0x6d, 0x62, 0x254, 0x254, 0x6e, 0x4b, 0xe0, 0x6d, 0x61, 0x6c, 0xfb, 0x6d, 0x4c, 0x61, +0x6b, 0x21f, 0xf3, 0x6c, 0x2bc, 0x69, 0x79, 0x61, 0x70, 0x69, 0x4d, 0xed, 0x6c, 0x61, 0x68, 0x61, 0x14b, 0x73, 0x6b, 0x61, +0x20, 0x54, 0x21f, 0x61, 0x6d, 0xe1, 0x6b, 0x21f, 0x6f, 0x10d, 0x68, 0x65, 0x2d5c, 0x2d30, 0x2d4e, 0x2d30, 0x2d63, 0x2d49, 0x2d56, 0x2d5c, +0x6a9, 0x648, 0x631, 0x62f, 0x6cc, 0x6cc, 0x20, 0x646, 0x627, 0x648, 0x6d5, 0x646, 0x62f, 0x6cc, 0x639, 0x6ce, 0x631, 0x627, 0x642, 0x626, +0x6ce, 0x631, 0x627, 0x646, 0x64, 0x6f, 0x6c, 0x6e, 0x6f, 0x73, 0x65, 0x72, 0x62, 0x161, 0x107, 0x69, 0x6e, 0x61, 0x4e, 0x69, +0x6d, 0x73, 0x6b, 0x61, 0x68, 0x6f, 0x72, 0x6e, 0x6a, 0x6f, 0x73, 0x65, 0x72, 0x62, 0x161, 0x107, 0x69, 0x6e, 0x61, 0x4e, +0x11b, 0x6d, 0x73, 0x6b, 0x61, 0x61, 0x6e, 0x61, 0x72, 0xe2, 0x161, 0x6b, 0x69, 0x65, 0x6c, 0xe2, 0x53, 0x75, 0x6f, 0x6d, +0xe2, 0x645, 0x627, 0x632, 0x631, 0x648, 0x646, 0x6cc, 0x644, 0x6ca, 0x631, 0x6cc, 0x20, 0x634, 0x648, 0x645, 0x627, 0x644, 0x6cc, 0x7cb5, +0x8a9e +}; + +static const char language_name_list[] = +"Default\0" +"C\0" +"Abkhazian\0" +"Oromo\0" +"Afar\0" +"Afrikaans\0" +"Albanian\0" +"Amharic\0" +"Arabic\0" +"Armenian\0" +"Assamese\0" +"Aymara\0" +"Azerbaijani\0" +"Bashkir\0" +"Basque\0" +"Bengali\0" +"Dzongkha\0" +"Bihari\0" +"Bislama\0" +"Breton\0" +"Bulgarian\0" +"Burmese\0" +"Belarusian\0" +"Khmer\0" +"Catalan\0" +"Chinese\0" +"Corsican\0" +"Croatian\0" +"Czech\0" +"Danish\0" +"Dutch\0" +"English\0" +"Esperanto\0" +"Estonian\0" +"Faroese\0" +"Fijian\0" +"Finnish\0" +"French\0" +"Western Frisian\0" +"Gaelic\0" +"Galician\0" +"Georgian\0" +"German\0" +"Greek\0" +"Greenlandic\0" +"Guarani\0" +"Gujarati\0" +"Hausa\0" +"Hebrew\0" +"Hindi\0" +"Hungarian\0" +"Icelandic\0" +"Indonesian\0" +"Interlingua\0" +"Interlingue\0" +"Inuktitut\0" +"Inupiak\0" +"Irish\0" +"Italian\0" +"Japanese\0" +"Javanese\0" +"Kannada\0" +"Kashmiri\0" +"Kazakh\0" +"Kinyarwanda\0" +"Kirghiz\0" +"Korean\0" +"Kurdish\0" +"Rundi\0" +"Lao\0" +"Latin\0" +"Latvian\0" +"Lingala\0" +"Lithuanian\0" +"Macedonian\0" +"Malagasy\0" +"Malay\0" +"Malayalam\0" +"Maltese\0" +"Maori\0" +"Marathi\0" +"Marshallese\0" +"Mongolian\0" +"Nauru\0" +"Nepali\0" +"NorwegianBokmal\0" +"Occitan\0" +"Oriya\0" +"Pashto\0" +"Persian\0" +"Polish\0" +"Portuguese\0" +"Punjabi\0" +"Quechua\0" +"Romansh\0" +"Romanian\0" +"Russian\0" +"Samoan\0" +"Sango\0" +"Sanskrit\0" +"Serbian\0" +"Ossetic\0" +"Southern Sotho\0" +"Tswana\0" +"Shona\0" +"Sindhi\0" +"Sinhala\0" +"Swati\0" +"Slovak\0" +"Slovenian\0" +"Somali\0" +"Spanish\0" +"Sundanese\0" +"Swahili\0" +"Swedish\0" +"Sardinian\0" +"Tajik\0" +"Tamil\0" +"Tatar\0" +"Telugu\0" +"Thai\0" +"Tibetan\0" +"Tigrinya\0" +"Tongan\0" +"Tsonga\0" +"Turkish\0" +"Turkmen\0" +"Tahitian\0" +"Uighur\0" +"Ukrainian\0" +"Urdu\0" +"Uzbek\0" +"Vietnamese\0" +"Volapuk\0" +"Welsh\0" +"Wolof\0" +"Xhosa\0" +"Yiddish\0" +"Yoruba\0" +"Zhuang\0" +"Zulu\0" +"NorwegianNynorsk\0" +"Bosnian\0" +"Divehi\0" +"Manx\0" +"Cornish\0" +"Akan\0" +"Konkani\0" +"Ga\0" +"Igbo\0" +"Kamba\0" +"Syriac\0" +"Blin\0" +"Geez\0" +"Koro\0" +"Sidamo\0" +"Atsam\0" +"Tigre\0" +"Jju\0" +"Friulian\0" +"Venda\0" +"Ewe\0" +"Walamo\0" +"Hawaiian\0" +"Tyap\0" +"Nyanja\0" +"Filipino\0" +"Swiss German\0" +"Sichuan Yi\0" +"Kpelle\0" +"Low German\0" +"South Ndebele\0" +"Northern Sotho\0" +"Northern Sami\0" +"Taroko\0" +"Gusii\0" +"Taita\0" +"Fulah\0" +"Kikuyu\0" +"Samburu\0" +"Sena\0" +"North Ndebele\0" +"Rombo\0" +"Tachelhit\0" +"Kabyle\0" +"Nyankole\0" +"Bena\0" +"Vunjo\0" +"Bambara\0" +"Embu\0" +"Cherokee\0" +"Morisyen\0" +"Makonde\0" +"Langi\0" +"Ganda\0" +"Bemba\0" +"Kabuverdianu\0" +"Meru\0" +"Kalenjin\0" +"Nama\0" +"Machame\0" +"Colognian\0" +"Masai\0" +"Soga\0" +"Luyia\0" +"Asu\0" +"Teso\0" +"Saho\0" +"Koyra Chiini\0" +"Rwa\0" +"Luo\0" +"Chiga\0" +"Central Morocco Tamazight\0" +"Koyraboro Senni\0" +"Shambala\0" +"Bodo\0" +"Avaric\0" +"Chamorro\0" +"Chechen\0" +"Church\0" +"Chuvash\0" +"Cree\0" +"Haitian\0" +"Herero\0" +"Hiri Motu\0" +"Kanuri\0" +"Komi\0" +"Kongo\0" +"Kwanyama\0" +"Limburgish\0" +"LubaKatanga\0" +"Luxembourgish\0" +"Navaho\0" +"Ndonga\0" +"Ojibwa\0" +"Pali\0" +"Walloon\0" +"Aghem\0" +"Basaa\0" +"Zarma\0" +"Duala\0" +"JolaFonyi\0" +"Ewondo\0" +"Bafia\0" +"MakhuwaMeetto\0" +"Mundang\0" +"Kwasio\0" +"Nuer\0" +"Sakha\0" +"Sangu\0" +"Congo Swahili\0" +"Tasawaq\0" +"Vai\0" +"Walser\0" +"Yangben\0" +"Avestan\0" +"Asturian\0" +"Ngomba\0" +"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" +"Akoose\0" +"Lakota\0" +"Standard Moroccan Tamazight\0" +"Mapuche\0" +"Central Kurdish\0" +"LowerSorbian\0" +"UpperSorbian\0" +"Kenyang\0" +"Mohawk\0" +"Nko\0" +"Prussian\0" +"Kiche\0" +"Southern Sami\0" +"Lule Sami\0" +"Inari Sami\0" +"Skolt Sami\0" +"Warlpiri\0" +"Manichaean Middle Persian\0" +"Mende\0" +"Ancient North Arabian\0" +"Linear A\0" +"Hmong Njua\0" +"Ho\0" +"Lezghian\0" +"Bassa\0" +"Mono\0" +"Tedim Chin\0" +"Maithili\0" +"Ahom\0" +"American Sign Language\0" +"Ardhamagadhi Prakrit\0" +"Bhojpuri\0" +"Hieroglyphic Luwian\0" +"Literary Chinese\0" +"Mazanderani\0" +"Mru\0" +"Newari\0" +"Northern Luri\0" +"Palauan\0" +"Papiamento\0" +"Saraiki\0" +"Tokelau\0" +"Tok Pisin\0" +"Tuvalu\0" +"UncodedLanguages\0" +"Cantonese\0" +"Osage\0" +"Tangut\0" +; + +static const quint16 language_name_index[] = { + 0, // AnyLanguage + 8, // C + 10, // Abkhazian + 20, // Oromo + 26, // Afar + 31, // Afrikaans + 41, // Albanian + 50, // Amharic + 58, // Arabic + 65, // Armenian + 74, // Assamese + 83, // Aymara + 90, // Azerbaijani + 102, // Bashkir + 110, // Basque + 117, // Bengali + 125, // Dzongkha + 134, // Bihari + 141, // Bislama + 149, // Breton + 156, // Bulgarian + 166, // Burmese + 174, // Belarusian + 185, // Khmer + 191, // Catalan + 199, // Chinese + 207, // Corsican + 216, // Croatian + 225, // Czech + 231, // Danish + 238, // Dutch + 244, // English + 252, // Esperanto + 262, // Estonian + 271, // Faroese + 279, // Fijian + 286, // Finnish + 294, // French + 301, // Western Frisian + 317, // Gaelic + 324, // Galician + 333, // Georgian + 342, // German + 349, // Greek + 355, // Greenlandic + 367, // Guarani + 375, // Gujarati + 384, // Hausa + 390, // Hebrew + 397, // Hindi + 403, // Hungarian + 413, // Icelandic + 423, // Indonesian + 434, // Interlingua + 446, // Interlingue + 458, // Inuktitut + 468, // Inupiak + 476, // Irish + 482, // Italian + 490, // Japanese + 499, // Javanese + 508, // Kannada + 516, // Kashmiri + 525, // Kazakh + 532, // Kinyarwanda + 544, // Kirghiz + 552, // Korean + 559, // Kurdish + 567, // Rundi + 573, // Lao + 577, // Latin + 583, // Latvian + 591, // Lingala + 599, // Lithuanian + 610, // Macedonian + 621, // Malagasy + 630, // Malay + 636, // Malayalam + 646, // Maltese + 654, // Maori + 660, // Marathi + 668, // Marshallese + 680, // Mongolian + 690, // Nauru + 696, // Nepali + 703, // NorwegianBokmal + 719, // Occitan + 727, // Oriya + 733, // Pashto + 740, // Persian + 748, // Polish + 755, // Portuguese + 766, // Punjabi + 774, // Quechua + 782, // Romansh + 790, // Romanian + 799, // Russian + 807, // Samoan + 814, // Sango + 820, // Sanskrit + 829, // Serbian + 837, // Ossetic + 845, // Southern Sotho + 860, // Tswana + 867, // Shona + 873, // Sindhi + 880, // Sinhala + 888, // Swati + 894, // Slovak + 901, // Slovenian + 911, // Somali + 918, // Spanish + 926, // Sundanese + 936, // Swahili + 944, // Swedish + 952, // Sardinian + 962, // Tajik + 968, // Tamil + 974, // Tatar + 980, // Telugu + 987, // Thai + 992, // Tibetan + 1000, // Tigrinya + 1009, // Tongan + 1016, // Tsonga + 1023, // Turkish + 1031, // Turkmen + 1039, // Tahitian + 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 + 2527, // Akoose + 2534, // Lakota + 2541, // Standard Moroccan Tamazight + 2569, // Mapuche + 2577, // Central Kurdish + 2593, // LowerSorbian + 2606, // UpperSorbian + 2619, // Kenyang + 2627, // Mohawk + 2634, // Nko + 2638, // Prussian + 2647, // Kiche + 2653, // Southern Sami + 2667, // Lule Sami + 2677, // Inari Sami + 2688, // Skolt Sami + 2699, // Warlpiri + 2708, // Manichaean Middle Persian + 2734, // Mende + 2740, // Ancient North Arabian + 2762, // Linear A + 2771, // Hmong Njua + 2782, // Ho + 2785, // Lezghian + 2794, // Bassa + 2800, // Mono + 2805, // Tedim Chin + 2816, // Maithili + 2825, // Ahom + 2830, // American Sign Language + 2853, // Ardhamagadhi Prakrit + 2874, // Bhojpuri + 2883, // Hieroglyphic Luwian + 2903, // Literary Chinese + 2920, // Mazanderani + 2932, // Mru + 2936, // Newari + 2943, // Northern Luri + 2957, // Palauan + 2965, // Papiamento + 2976, // Saraiki + 2984, // Tokelau + 2992, // Tok Pisin + 3002, // Tuvalu + 3009, // UncodedLanguages + 3026, // Cantonese + 3036, // Osage + 3042, // Tangut +}; + +static const char script_name_list[] = +"Default\0" +"Arabic\0" +"Cyrillic\0" +"Deseret\0" +"Gurmukhi\0" +"Simplified Han\0" +"Traditional Han\0" +"Latin\0" +"Mongolian\0" +"Tifinagh\0" +"Armenian\0" +"Bengali\0" +"Cherokee\0" +"Devanagari\0" +"Ethiopic\0" +"Georgian\0" +"Greek\0" +"Gujarati\0" +"Hebrew\0" +"Japanese\0" +"Khmer\0" +"Kannada\0" +"Korean\0" +"Lao\0" +"Malayalam\0" +"Myanmar\0" +"Oriya\0" +"Tamil\0" +"Telugu\0" +"Thaana\0" +"Thai\0" +"Tibetan\0" +"Sinhala\0" +"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" +"Braille\0" +"Hiragana\0" +"Caucasian Albanian\0" +"Bassa Vah\0" +"Duployan\0" +"Elbasan\0" +"Grantha\0" +"Pahawh Hmong\0" +"Khojki\0" +"Linear A\0" +"Mahajani\0" +"Manichaean\0" +"Mende Kikakui\0" +"Modi\0" +"Mro\0" +"Old North Arabian\0" +"Nabataean\0" +"Palmyrene\0" +"Pau Cin Hau\0" +"Old Permic\0" +"Psalter Pahlavi\0" +"Siddham\0" +"Khudawadi\0" +"Tirhuta\0" +"Varang Kshiti\0" +"Ahom\0" +"Anatolian Hieroglyphs\0" +"Hatran\0" +"Multani\0" +"Old Hungarian\0" +"SignWriting\0" +"Adlam\0" +"Bhaiksuki\0" +"Marchen\0" +"Newa\0" +"Osage\0" +"Tangut\0" +"Han with Bopomofo\0" +"Jamo\0" +; + +static const quint16 script_name_index[] = { + 0, // AnyScript + 8, // Arabic + 15, // Cyrillic + 24, // Deseret + 32, // Gurmukhi + 41, // Simplified Han + 56, // Traditional Han + 72, // Latin + 78, // Mongolian + 88, // Tifinagh + 97, // Armenian + 106, // Bengali + 114, // Cherokee + 123, // Devanagari + 134, // Ethiopic + 143, // Georgian + 152, // Greek + 158, // Gujarati + 167, // Hebrew + 174, // Japanese + 183, // Khmer + 189, // Kannada + 197, // Korean + 204, // Lao + 208, // Malayalam + 218, // Myanmar + 226, // Oriya + 232, // Tamil + 238, // Telugu + 245, // Thaana + 252, // Thai + 257, // Tibetan + 265, // Sinhala + 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 + 930, // Braille + 938, // Hiragana + 947, // Caucasian Albanian + 966, // Bassa Vah + 976, // Duployan + 985, // Elbasan + 993, // Grantha + 1001, // Pahawh Hmong + 1014, // Khojki + 1021, // Linear A + 1030, // Mahajani + 1039, // Manichaean + 1050, // Mende Kikakui + 1064, // Modi + 1069, // Mro + 1073, // Old North Arabian + 1091, // Nabataean + 1101, // Palmyrene + 1111, // Pau Cin Hau + 1123, // Old Permic + 1134, // Psalter Pahlavi + 1150, // Siddham + 1158, // Khudawadi + 1168, // Tirhuta + 1176, // Varang Kshiti + 1190, // Ahom + 1195, // Anatolian Hieroglyphs + 1217, // Hatran + 1224, // Multani + 1232, // Old Hungarian + 1246, // SignWriting + 1258, // Adlam + 1264, // Bhaiksuki + 1274, // Marchen + 1282, // Newa + 1287, // Osage + 1293, // Tangut + 1300, // Han with Bopomofo + 1318, // Jamo +}; + +static const char country_name_list[] = +"Default\0" +"Afghanistan\0" +"Albania\0" +"Algeria\0" +"AmericanSamoa\0" +"Andorra\0" +"Angola\0" +"Anguilla\0" +"Antarctica\0" +"AntiguaAndBarbuda\0" +"Argentina\0" +"Armenia\0" +"Aruba\0" +"Australia\0" +"Austria\0" +"Azerbaijan\0" +"Bahamas\0" +"Bahrain\0" +"Bangladesh\0" +"Barbados\0" +"Belarus\0" +"Belgium\0" +"Belize\0" +"Benin\0" +"Bermuda\0" +"Bhutan\0" +"Bolivia\0" +"BosniaAndHerzegowina\0" +"Botswana\0" +"BouvetIsland\0" +"Brazil\0" +"BritishIndianOceanTerritory\0" +"Brunei\0" +"Bulgaria\0" +"BurkinaFaso\0" +"Burundi\0" +"Cambodia\0" +"Cameroon\0" +"Canada\0" +"CapeVerde\0" +"CaymanIslands\0" +"CentralAfricanRepublic\0" +"Chad\0" +"Chile\0" +"China\0" +"ChristmasIsland\0" +"CocosIslands\0" +"Colombia\0" +"Comoros\0" +"CongoKinshasa\0" +"CongoBrazzaville\0" +"CookIslands\0" +"CostaRica\0" +"IvoryCoast\0" +"Croatia\0" +"Cuba\0" +"Cyprus\0" +"CzechRepublic\0" +"Denmark\0" +"Djibouti\0" +"Dominica\0" +"DominicanRepublic\0" +"EastTimor\0" +"Ecuador\0" +"Egypt\0" +"ElSalvador\0" +"EquatorialGuinea\0" +"Eritrea\0" +"Estonia\0" +"Ethiopia\0" +"FalklandIslands\0" +"FaroeIslands\0" +"Fiji\0" +"Finland\0" +"France\0" +"Guernsey\0" +"FrenchGuiana\0" +"FrenchPolynesia\0" +"FrenchSouthernTerritories\0" +"Gabon\0" +"Gambia\0" +"Georgia\0" +"Germany\0" +"Ghana\0" +"Gibraltar\0" +"Greece\0" +"Greenland\0" +"Grenada\0" +"Guadeloupe\0" +"Guam\0" +"Guatemala\0" +"Guinea\0" +"GuineaBissau\0" +"Guyana\0" +"Haiti\0" +"HeardAndMcDonaldIslands\0" +"Honduras\0" +"HongKong\0" +"Hungary\0" +"Iceland\0" +"India\0" +"Indonesia\0" +"Iran\0" +"Iraq\0" +"Ireland\0" +"Israel\0" +"Italy\0" +"Jamaica\0" +"Japan\0" +"Jordan\0" +"Kazakhstan\0" +"Kenya\0" +"Kiribati\0" +"NorthKorea\0" +"SouthKorea\0" +"Kuwait\0" +"Kyrgyzstan\0" +"Laos\0" +"Latvia\0" +"Lebanon\0" +"Lesotho\0" +"Liberia\0" +"Libya\0" +"Liechtenstein\0" +"Lithuania\0" +"Luxembourg\0" +"Macau\0" +"Macedonia\0" +"Madagascar\0" +"Malawi\0" +"Malaysia\0" +"Maldives\0" +"Mali\0" +"Malta\0" +"MarshallIslands\0" +"Martinique\0" +"Mauritania\0" +"Mauritius\0" +"Mayotte\0" +"Mexico\0" +"Micronesia\0" +"Moldova\0" +"Monaco\0" +"Mongolia\0" +"Montserrat\0" +"Morocco\0" +"Mozambique\0" +"Myanmar\0" +"Namibia\0" +"Nauru\0" +"Nepal\0" +"Netherlands\0" +"CuraSao\0" +"NewCaledonia\0" +"NewZealand\0" +"Nicaragua\0" +"Niger\0" +"Nigeria\0" +"Niue\0" +"NorfolkIsland\0" +"NorthernMarianaIslands\0" +"Norway\0" +"Oman\0" +"Pakistan\0" +"Palau\0" +"PalestinianTerritories\0" +"Panama\0" +"PapuaNewGuinea\0" +"Paraguay\0" +"Peru\0" +"Philippines\0" +"Pitcairn\0" +"Poland\0" +"Portugal\0" +"PuertoRico\0" +"Qatar\0" +"Reunion\0" +"Romania\0" +"Russia\0" +"Rwanda\0" +"SaintKittsAndNevis\0" +"SaintLucia\0" +"SaintVincentAndTheGrenadines\0" +"Samoa\0" +"SanMarino\0" +"SaoTomeAndPrincipe\0" +"SaudiArabia\0" +"Senegal\0" +"Seychelles\0" +"SierraLeone\0" +"Singapore\0" +"Slovakia\0" +"Slovenia\0" +"SolomonIslands\0" +"Somalia\0" +"SouthAfrica\0" +"SouthGeorgiaAndTheSouthSandwichIslands\0" +"Spain\0" +"SriLanka\0" +"SaintHelena\0" +"SaintPierreAndMiquelon\0" +"Sudan\0" +"Suriname\0" +"SvalbardAndJanMayenIslands\0" +"Swaziland\0" +"Sweden\0" +"Switzerland\0" +"Syria\0" +"Taiwan\0" +"Tajikistan\0" +"Tanzania\0" +"Thailand\0" +"Togo\0" +"Tokelau\0" +"Tonga\0" +"TrinidadAndTobago\0" +"Tunisia\0" +"Turkey\0" +"Turkmenistan\0" +"TurksAndCaicosIslands\0" +"Tuvalu\0" +"Uganda\0" +"Ukraine\0" +"UnitedArabEmirates\0" +"UnitedKingdom\0" +"UnitedStates\0" +"UnitedStatesMinorOutlyingIslands\0" +"Uruguay\0" +"Uzbekistan\0" +"Vanuatu\0" +"VaticanCityState\0" +"Venezuela\0" +"Vietnam\0" +"BritishVirginIslands\0" +"UnitedStatesVirginIslands\0" +"WallisAndFutunaIslands\0" +"WesternSahara\0" +"Yemen\0" +"CanaryIslands\0" +"Zambia\0" +"Zimbabwe\0" +"ClippertonIsland\0" +"Montenegro\0" +"Serbia\0" +"Saint Barthelemy\0" +"Saint Martin\0" +"LatinAmericaAndTheCaribbean\0" +"AscensionIsland\0" +"AlandIslands\0" +"DiegoGarcia\0" +"CeutaAndMelilla\0" +"IsleOfMan\0" +"Jersey\0" +"TristanDaCunha\0" +"SouthSudan\0" +"Bonaire\0" +"SintMaarten\0" +"Kosovo\0" +"European Union\0" +"Outlying Oceania\0" +; + +static const quint16 country_name_index[] = { + 0, // AnyCountry + 8, // Afghanistan + 20, // Albania + 28, // Algeria + 36, // AmericanSamoa + 50, // Andorra + 58, // Angola + 65, // Anguilla + 74, // Antarctica + 85, // AntiguaAndBarbuda + 103, // Argentina + 113, // Armenia + 121, // Aruba + 127, // Australia + 137, // Austria + 145, // Azerbaijan + 156, // Bahamas + 164, // Bahrain + 172, // Bangladesh + 183, // Barbados + 192, // Belarus + 200, // Belgium + 208, // Belize + 215, // Benin + 221, // Bermuda + 229, // Bhutan + 236, // Bolivia + 244, // BosniaAndHerzegowina + 265, // Botswana + 274, // BouvetIsland + 287, // Brazil + 294, // BritishIndianOceanTerritory + 322, // Brunei + 329, // Bulgaria + 338, // BurkinaFaso + 350, // Burundi + 358, // Cambodia + 367, // Cameroon + 376, // Canada + 383, // CapeVerde + 393, // CaymanIslands + 407, // CentralAfricanRepublic + 430, // Chad + 435, // Chile + 441, // China + 447, // ChristmasIsland + 463, // CocosIslands + 476, // Colombia + 485, // Comoros + 493, // CongoKinshasa + 507, // CongoBrazzaville + 524, // CookIslands + 536, // CostaRica + 546, // IvoryCoast + 557, // Croatia + 565, // Cuba + 570, // Cyprus + 577, // CzechRepublic + 591, // Denmark + 599, // Djibouti + 608, // Dominica + 617, // DominicanRepublic + 635, // EastTimor + 645, // Ecuador + 653, // Egypt + 659, // ElSalvador + 670, // EquatorialGuinea + 687, // Eritrea + 695, // Estonia + 703, // Ethiopia + 712, // FalklandIslands + 728, // FaroeIslands + 741, // Fiji + 746, // Finland + 754, // France + 761, // Guernsey + 770, // FrenchGuiana + 783, // FrenchPolynesia + 799, // FrenchSouthernTerritories + 825, // Gabon + 831, // Gambia + 838, // Georgia + 846, // Germany + 854, // Ghana + 860, // Gibraltar + 870, // Greece + 877, // Greenland + 887, // Grenada + 895, // Guadeloupe + 906, // Guam + 911, // Guatemala + 921, // Guinea + 928, // GuineaBissau + 941, // Guyana + 948, // Haiti + 954, // HeardAndMcDonaldIslands + 978, // Honduras + 987, // HongKong + 996, // Hungary + 1004, // Iceland + 1012, // India + 1018, // Indonesia + 1028, // Iran + 1033, // Iraq + 1038, // Ireland + 1046, // Israel + 1053, // Italy + 1059, // Jamaica + 1067, // Japan + 1073, // Jordan + 1080, // Kazakhstan + 1091, // Kenya + 1097, // Kiribati + 1106, // NorthKorea + 1117, // SouthKorea + 1128, // Kuwait + 1135, // Kyrgyzstan + 1146, // Laos + 1151, // Latvia + 1158, // Lebanon + 1166, // Lesotho + 1174, // Liberia + 1182, // Libya + 1188, // Liechtenstein + 1202, // Lithuania + 1212, // Luxembourg + 1223, // Macau + 1229, // Macedonia + 1239, // Madagascar + 1250, // Malawi + 1257, // Malaysia + 1266, // Maldives + 1275, // Mali + 1280, // Malta + 1286, // MarshallIslands + 1302, // Martinique + 1313, // Mauritania + 1324, // Mauritius + 1334, // Mayotte + 1342, // Mexico + 1349, // Micronesia + 1360, // Moldova + 1368, // Monaco + 1375, // Mongolia + 1384, // Montserrat + 1395, // Morocco + 1403, // Mozambique + 1414, // Myanmar + 1422, // Namibia + 1430, // Nauru + 1436, // Nepal + 1442, // Netherlands + 1454, // CuraSao + 1462, // NewCaledonia + 1475, // NewZealand + 1486, // Nicaragua + 1496, // Niger + 1502, // Nigeria + 1510, // Niue + 1515, // NorfolkIsland + 1529, // NorthernMarianaIslands + 1552, // Norway + 1559, // Oman + 1564, // Pakistan + 1573, // Palau + 1579, // PalestinianTerritories + 1602, // Panama + 1609, // PapuaNewGuinea + 1624, // Paraguay + 1633, // Peru + 1638, // Philippines + 1650, // Pitcairn + 1659, // Poland + 1666, // Portugal + 1675, // PuertoRico + 1686, // Qatar + 1692, // Reunion + 1700, // Romania + 1708, // Russia + 1715, // Rwanda + 1722, // SaintKittsAndNevis + 1741, // SaintLucia + 1752, // SaintVincentAndTheGrenadines + 1781, // Samoa + 1787, // SanMarino + 1797, // SaoTomeAndPrincipe + 1816, // SaudiArabia + 1828, // Senegal + 1836, // Seychelles + 1847, // SierraLeone + 1859, // Singapore + 1869, // Slovakia + 1878, // Slovenia + 1887, // SolomonIslands + 1902, // Somalia + 1910, // SouthAfrica + 1922, // SouthGeorgiaAndTheSouthSandwichIslands + 1961, // Spain + 1967, // SriLanka + 1976, // SaintHelena + 1988, // SaintPierreAndMiquelon + 2011, // Sudan + 2017, // Suriname + 2026, // SvalbardAndJanMayenIslands + 2053, // Swaziland + 2063, // Sweden + 2070, // Switzerland + 2082, // Syria + 2088, // Taiwan + 2095, // Tajikistan + 2106, // Tanzania + 2115, // Thailand + 2124, // Togo + 2129, // Tokelau + 2137, // Tonga + 2143, // TrinidadAndTobago + 2161, // Tunisia + 2169, // Turkey + 2176, // Turkmenistan + 2189, // TurksAndCaicosIslands + 2211, // Tuvalu + 2218, // Uganda + 2225, // Ukraine + 2233, // UnitedArabEmirates + 2252, // UnitedKingdom + 2266, // UnitedStates + 2279, // UnitedStatesMinorOutlyingIslands + 2312, // Uruguay + 2320, // Uzbekistan + 2331, // Vanuatu + 2339, // VaticanCityState + 2356, // Venezuela + 2366, // Vietnam + 2374, // BritishVirginIslands + 2395, // UnitedStatesVirginIslands + 2421, // WallisAndFutunaIslands + 2444, // WesternSahara + 2458, // Yemen + 2464, // CanaryIslands + 2478, // Zambia + 2485, // Zimbabwe + 2494, // ClippertonIsland + 2511, // Montenegro + 2522, // Serbia + 2529, // Saint Barthelemy + 2546, // Saint Martin + 2559, // LatinAmericaAndTheCaribbean + 2587, // AscensionIsland + 2603, // AlandIslands + 2616, // DiegoGarcia + 2628, // CeutaAndMelilla + 2644, // IsleOfMan + 2654, // Jersey + 2661, // TristanDaCunha + 2676, // SouthSudan + 2687, // Bonaire + 2695, // SintMaarten + 2707, // Kosovo + 2714, // European Union + 2729, // Outlying Oceania +}; + +static const unsigned char language_code_list[] = +" \0" // AnyLanguage +" \0" // C +"ab\0" // Abkhazian +"om\0" // Oromo +"aa\0" // Afar +"af\0" // Afrikaans +"sq\0" // Albanian +"am\0" // Amharic +"ar\0" // Arabic +"hy\0" // Armenian +"as\0" // Assamese +"ay\0" // Aymara +"az\0" // Azerbaijani +"ba\0" // Bashkir +"eu\0" // Basque +"bn\0" // Bengali +"dz\0" // Dzongkha +"bh\0" // Bihari +"bi\0" // Bislama +"br\0" // Breton +"bg\0" // Bulgarian +"my\0" // Burmese +"be\0" // Belarusian +"km\0" // Khmer +"ca\0" // Catalan +"zh\0" // Chinese +"co\0" // Corsican +"hr\0" // Croatian +"cs\0" // Czech +"da\0" // Danish +"nl\0" // Dutch +"en\0" // English +"eo\0" // Esperanto +"et\0" // Estonian +"fo\0" // Faroese +"fj\0" // Fijian +"fi\0" // Finnish +"fr\0" // French +"fy\0" // Western Frisian +"gd\0" // Gaelic +"gl\0" // Galician +"ka\0" // Georgian +"de\0" // German +"el\0" // Greek +"kl\0" // Greenlandic +"gn\0" // Guarani +"gu\0" // Gujarati +"ha\0" // Hausa +"he\0" // Hebrew +"hi\0" // Hindi +"hu\0" // Hungarian +"is\0" // Icelandic +"id\0" // Indonesian +"ia\0" // Interlingua +"ie\0" // Interlingue +"iu\0" // Inuktitut +"ik\0" // Inupiak +"ga\0" // Irish +"it\0" // Italian +"ja\0" // Japanese +"jv\0" // Javanese +"kn\0" // Kannada +"ks\0" // Kashmiri +"kk\0" // Kazakh +"rw\0" // Kinyarwanda +"ky\0" // Kirghiz +"ko\0" // Korean +"ku\0" // Kurdish +"rn\0" // Rundi +"lo\0" // Lao +"la\0" // Latin +"lv\0" // Latvian +"ln\0" // Lingala +"lt\0" // Lithuanian +"mk\0" // Macedonian +"mg\0" // Malagasy +"ms\0" // Malay +"ml\0" // Malayalam +"mt\0" // Maltese +"mi\0" // Maori +"mr\0" // Marathi +"mh\0" // Marshallese +"mn\0" // Mongolian +"na\0" // Nauru +"ne\0" // Nepali +"nb\0" // NorwegianBokmal +"oc\0" // Occitan +"or\0" // Oriya +"ps\0" // Pashto +"fa\0" // Persian +"pl\0" // Polish +"pt\0" // Portuguese +"pa\0" // Punjabi +"qu\0" // Quechua +"rm\0" // Romansh +"ro\0" // Romanian +"ru\0" // Russian +"sm\0" // Samoan +"sg\0" // Sango +"sa\0" // Sanskrit +"sr\0" // Serbian +"os\0" // Ossetic +"st\0" // Southern Sotho +"tn\0" // Tswana +"sn\0" // Shona +"sd\0" // Sindhi +"si\0" // Sinhala +"ss\0" // Swati +"sk\0" // Slovak +"sl\0" // Slovenian +"so\0" // Somali +"es\0" // Spanish +"su\0" // Sundanese +"sw\0" // Swahili +"sv\0" // Swedish +"sc\0" // Sardinian +"tg\0" // Tajik +"ta\0" // Tamil +"tt\0" // Tatar +"te\0" // Telugu +"th\0" // Thai +"bo\0" // Tibetan +"ti\0" // Tigrinya +"to\0" // Tongan +"ts\0" // Tsonga +"tr\0" // Turkish +"tk\0" // Turkmen +"ty\0" // Tahitian +"ug\0" // Uighur +"uk\0" // Ukrainian +"ur\0" // Urdu +"uz\0" // Uzbek +"vi\0" // Vietnamese +"vo\0" // Volapuk +"cy\0" // Welsh +"wo\0" // Wolof +"xh\0" // Xhosa +"yi\0" // Yiddish +"yo\0" // Yoruba +"za\0" // Zhuang +"zu\0" // Zulu +"nn\0" // NorwegianNynorsk +"bs\0" // Bosnian +"dv\0" // Divehi +"gv\0" // Manx +"kw\0" // Cornish +"ak\0" // Akan +"kok" // Konkani +"gaa" // Ga +"ig\0" // Igbo +"kam" // Kamba +"syr" // Syriac +"byn" // Blin +"gez" // Geez +"kfo" // Koro +"sid" // Sidamo +"cch" // Atsam +"tig" // Tigre +"kaj" // Jju +"fur" // Friulian +"ve\0" // Venda +"ee\0" // Ewe +"wal" // Walamo +"haw" // Hawaiian +"kcg" // Tyap +"ny\0" // Nyanja +"fil" // Filipino +"gsw" // Swiss German +"ii\0" // Sichuan Yi +"kpe" // Kpelle +"nds" // Low German +"nr\0" // South Ndebele +"nso" // Northern Sotho +"se\0" // Northern Sami +"trv" // Taroko +"guz" // Gusii +"dav" // Taita +"ff\0" // Fulah +"ki\0" // Kikuyu +"saq" // Samburu +"seh" // Sena +"nd\0" // North Ndebele +"rof" // Rombo +"shi" // Tachelhit +"kab" // Kabyle +"nyn" // Nyankole +"bez" // Bena +"vun" // Vunjo +"bm\0" // Bambara +"ebu" // Embu +"chr" // Cherokee +"mfe" // Morisyen +"kde" // Makonde +"lag" // Langi +"lg\0" // Ganda +"bem" // Bemba +"kea" // Kabuverdianu +"mer" // Meru +"kln" // Kalenjin +"naq" // Nama +"jmc" // Machame +"ksh" // Colognian +"mas" // Masai +"xog" // Soga +"luy" // Luyia +"asa" // Asu +"teo" // Teso +"ssy" // Saho +"khq" // Koyra Chiini +"rwk" // Rwa +"luo" // Luo +"cgg" // Chiga +"tzm" // Central Morocco Tamazight +"ses" // Koyraboro Senni +"ksb" // Shambala +"brx" // Bodo +"av\0" // Avaric +"ch\0" // Chamorro +"ce\0" // Chechen +"cu\0" // Church +"cv\0" // Chuvash +"cr\0" // Cree +"ht\0" // Haitian +"hz\0" // Herero +"ho\0" // Hiri Motu +"kr\0" // Kanuri +"kv\0" // Komi +"kg\0" // Kongo +"kj\0" // Kwanyama +"li\0" // Limburgish +"lu\0" // LubaKatanga +"lb\0" // Luxembourgish +"nv\0" // Navaho +"ng\0" // Ndonga +"oj\0" // Ojibwa +"pi\0" // Pali +"wa\0" // Walloon +"agq" // Aghem +"bas" // Basaa +"dje" // Zarma +"dua" // Duala +"dyo" // JolaFonyi +"ewo" // Ewondo +"ksf" // Bafia +"mgh" // MakhuwaMeetto +"mua" // Mundang +"nmg" // Kwasio +"nus" // Nuer +"sah" // Sakha +"sbp" // Sangu +"swc" // Congo Swahili +"twq" // Tasawaq +"vai" // Vai +"wae" // Walser +"yav" // Yangben +"ae\0" // Avestan +"ast" // Asturian +"jgo" // Ngomba +"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 +"bss" // Akoose +"lkt" // Lakota +"zgh" // Standard Moroccan Tamazight +"arn" // Mapuche +"ckb" // Central Kurdish +"dsb" // LowerSorbian +"hsb" // UpperSorbian +"ken" // Kenyang +"moh" // Mohawk +"nqo" // Nko +"prg" // Prussian +"quc" // Kiche +"sma" // Southern Sami +"smj" // Lule Sami +"smn" // Inari Sami +"sms" // Skolt Sami +"wbp" // Warlpiri +"xmn" // Manichaean Middle Persian +"men" // Mende +"xna" // Ancient North Arabian +"lab" // Linear A +"hnj" // Hmong Njua +"hoc" // Ho +"lez" // Lezghian +"bsq" // Bassa +"mru" // Mono +"ctd" // Tedim Chin +"mai" // Maithili +"aho" // Ahom +"ase" // American Sign Language +"pka" // Ardhamagadhi Prakrit +"bho" // Bhojpuri +"hlu" // Hieroglyphic Luwian +"lzh" // Literary Chinese +"mzn" // Mazanderani +"mro" // Mru +"new" // Newari +"lrc" // Northern Luri +"pau" // Palauan +"pap" // Papiamento +"skr" // Saraiki +"tkl" // Tokelau +"tpi" // Tok Pisin +"tvl" // Tuvalu +"mis" // UncodedLanguages +"yue" // Cantonese +"osa" // Osage +"txg" // Tangut +; + +static const unsigned char script_code_list[] = +"Zzzz" // AnyScript +"Arab" // Arabic +"Cyrl" // Cyrillic +"Dsrt" // Deseret +"Guru" // Gurmukhi +"Hans" // Simplified Han +"Hant" // Traditional Han +"Latn" // Latin +"Mong" // Mongolian +"Tfng" // Tifinagh +"Armn" // Armenian +"Beng" // Bengali +"Cher" // Cherokee +"Deva" // Devanagari +"Ethi" // Ethiopic +"Geor" // Georgian +"Grek" // Greek +"Gujr" // Gujarati +"Hebr" // Hebrew +"Jpan" // Japanese +"Khmr" // Khmer +"Knda" // Kannada +"Kore" // Korean +"Laoo" // Lao +"Mlym" // Malayalam +"Mymr" // Myanmar +"Orya" // Oriya +"Taml" // Tamil +"Telu" // Telugu +"Thaa" // Thaana +"Thai" // Thai +"Tibt" // Tibetan +"Sinh" // Sinhala +"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 +"Brai" // Braille +"Hira" // Hiragana +"Aghb" // Caucasian Albanian +"Bass" // Bassa Vah +"Dupl" // Duployan +"Elba" // Elbasan +"Gran" // Grantha +"Hmng" // Pahawh Hmong +"Khoj" // Khojki +"Lina" // Linear A +"Mahj" // Mahajani +"Mani" // Manichaean +"Mend" // Mende Kikakui +"Modi" // Modi +"Mroo" // Mro +"Narb" // Old North Arabian +"Nbat" // Nabataean +"Palm" // Palmyrene +"Pauc" // Pau Cin Hau +"Perm" // Old Permic +"Phlp" // Psalter Pahlavi +"Sidd" // Siddham +"Sind" // Khudawadi +"Tirh" // Tirhuta +"Wara" // Varang Kshiti +"Ahom" // Ahom +"Hluw" // Anatolian Hieroglyphs +"Hatr" // Hatran +"Mult" // Multani +"Hung" // Old Hungarian +"Sgnw" // SignWriting +"Adlm" // Adlam +"Bhks" // Bhaiksuki +"Marc" // Marchen +"Newa" // Newa +"Osge" // Osage +"Tang" // Tangut +"Hanb" // Han with Bopomofo +"Jamo" // Jamo +; +static const unsigned char country_code_list[] = +"ZZ\0" // AnyCountry +"AF\0" // Afghanistan +"AL\0" // Albania +"DZ\0" // Algeria +"AS\0" // AmericanSamoa +"AD\0" // Andorra +"AO\0" // Angola +"AI\0" // Anguilla +"AQ\0" // Antarctica +"AG\0" // AntiguaAndBarbuda +"AR\0" // Argentina +"AM\0" // Armenia +"AW\0" // Aruba +"AU\0" // Australia +"AT\0" // Austria +"AZ\0" // Azerbaijan +"BS\0" // Bahamas +"BH\0" // Bahrain +"BD\0" // Bangladesh +"BB\0" // Barbados +"BY\0" // Belarus +"BE\0" // Belgium +"BZ\0" // Belize +"BJ\0" // Benin +"BM\0" // Bermuda +"BT\0" // Bhutan +"BO\0" // Bolivia +"BA\0" // BosniaAndHerzegowina +"BW\0" // Botswana +"BV\0" // BouvetIsland +"BR\0" // Brazil +"IO\0" // BritishIndianOceanTerritory +"BN\0" // Brunei +"BG\0" // Bulgaria +"BF\0" // BurkinaFaso +"BI\0" // Burundi +"KH\0" // Cambodia +"CM\0" // Cameroon +"CA\0" // Canada +"CV\0" // CapeVerde +"KY\0" // CaymanIslands +"CF\0" // CentralAfricanRepublic +"TD\0" // Chad +"CL\0" // Chile +"CN\0" // China +"CX\0" // ChristmasIsland +"CC\0" // CocosIslands +"CO\0" // Colombia +"KM\0" // Comoros +"CD\0" // CongoKinshasa +"CG\0" // CongoBrazzaville +"CK\0" // CookIslands +"CR\0" // CostaRica +"CI\0" // IvoryCoast +"HR\0" // Croatia +"CU\0" // Cuba +"CY\0" // Cyprus +"CZ\0" // CzechRepublic +"DK\0" // Denmark +"DJ\0" // Djibouti +"DM\0" // Dominica +"DO\0" // DominicanRepublic +"TL\0" // EastTimor +"EC\0" // Ecuador +"EG\0" // Egypt +"SV\0" // ElSalvador +"GQ\0" // EquatorialGuinea +"ER\0" // Eritrea +"EE\0" // Estonia +"ET\0" // Ethiopia +"FK\0" // FalklandIslands +"FO\0" // FaroeIslands +"FJ\0" // Fiji +"FI\0" // Finland +"FR\0" // France +"GG\0" // Guernsey +"GF\0" // FrenchGuiana +"PF\0" // FrenchPolynesia +"TF\0" // FrenchSouthernTerritories +"GA\0" // Gabon +"GM\0" // Gambia +"GE\0" // Georgia +"DE\0" // Germany +"GH\0" // Ghana +"GI\0" // Gibraltar +"GR\0" // Greece +"GL\0" // Greenland +"GD\0" // Grenada +"GP\0" // Guadeloupe +"GU\0" // Guam +"GT\0" // Guatemala +"GN\0" // Guinea +"GW\0" // GuineaBissau +"GY\0" // Guyana +"HT\0" // Haiti +"HM\0" // HeardAndMcDonaldIslands +"HN\0" // Honduras +"HK\0" // HongKong +"HU\0" // Hungary +"IS\0" // Iceland +"IN\0" // India +"ID\0" // Indonesia +"IR\0" // Iran +"IQ\0" // Iraq +"IE\0" // Ireland +"IL\0" // Israel +"IT\0" // Italy +"JM\0" // Jamaica +"JP\0" // Japan +"JO\0" // Jordan +"KZ\0" // Kazakhstan +"KE\0" // Kenya +"KI\0" // Kiribati +"KP\0" // NorthKorea +"KR\0" // SouthKorea +"KW\0" // Kuwait +"KG\0" // Kyrgyzstan +"LA\0" // Laos +"LV\0" // Latvia +"LB\0" // Lebanon +"LS\0" // Lesotho +"LR\0" // Liberia +"LY\0" // Libya +"LI\0" // Liechtenstein +"LT\0" // Lithuania +"LU\0" // Luxembourg +"MO\0" // Macau +"MK\0" // Macedonia +"MG\0" // Madagascar +"MW\0" // Malawi +"MY\0" // Malaysia +"MV\0" // Maldives +"ML\0" // Mali +"MT\0" // Malta +"MH\0" // MarshallIslands +"MQ\0" // Martinique +"MR\0" // Mauritania +"MU\0" // Mauritius +"YT\0" // Mayotte +"MX\0" // Mexico +"FM\0" // Micronesia +"MD\0" // Moldova +"MC\0" // Monaco +"MN\0" // Mongolia +"MS\0" // Montserrat +"MA\0" // Morocco +"MZ\0" // Mozambique +"MM\0" // Myanmar +"NA\0" // Namibia +"NR\0" // Nauru +"NP\0" // Nepal +"NL\0" // Netherlands +"CW\0" // CuraSao +"NC\0" // NewCaledonia +"NZ\0" // NewZealand +"NI\0" // Nicaragua +"NE\0" // Niger +"NG\0" // Nigeria +"NU\0" // Niue +"NF\0" // NorfolkIsland +"MP\0" // NorthernMarianaIslands +"NO\0" // Norway +"OM\0" // Oman +"PK\0" // Pakistan +"PW\0" // Palau +"PS\0" // PalestinianTerritories +"PA\0" // Panama +"PG\0" // PapuaNewGuinea +"PY\0" // Paraguay +"PE\0" // Peru +"PH\0" // Philippines +"PN\0" // Pitcairn +"PL\0" // Poland +"PT\0" // Portugal +"PR\0" // PuertoRico +"QA\0" // Qatar +"RE\0" // Reunion +"RO\0" // Romania +"RU\0" // Russia +"RW\0" // Rwanda +"KN\0" // SaintKittsAndNevis +"LC\0" // SaintLucia +"VC\0" // SaintVincentAndTheGrenadines +"WS\0" // Samoa +"SM\0" // SanMarino +"ST\0" // SaoTomeAndPrincipe +"SA\0" // SaudiArabia +"SN\0" // Senegal +"SC\0" // Seychelles +"SL\0" // SierraLeone +"SG\0" // Singapore +"SK\0" // Slovakia +"SI\0" // Slovenia +"SB\0" // SolomonIslands +"SO\0" // Somalia +"ZA\0" // SouthAfrica +"GS\0" // SouthGeorgiaAndTheSouthSandwichIslands +"ES\0" // Spain +"LK\0" // SriLanka +"SH\0" // SaintHelena +"PM\0" // SaintPierreAndMiquelon +"SD\0" // Sudan +"SR\0" // Suriname +"SJ\0" // SvalbardAndJanMayenIslands +"SZ\0" // Swaziland +"SE\0" // Sweden +"CH\0" // Switzerland +"SY\0" // Syria +"TW\0" // Taiwan +"TJ\0" // Tajikistan +"TZ\0" // Tanzania +"TH\0" // Thailand +"TG\0" // Togo +"TK\0" // Tokelau +"TO\0" // Tonga +"TT\0" // TrinidadAndTobago +"TN\0" // Tunisia +"TR\0" // Turkey +"TM\0" // Turkmenistan +"TC\0" // TurksAndCaicosIslands +"TV\0" // Tuvalu +"UG\0" // Uganda +"UA\0" // Ukraine +"AE\0" // UnitedArabEmirates +"GB\0" // UnitedKingdom +"US\0" // UnitedStates +"UM\0" // UnitedStatesMinorOutlyingIslands +"UY\0" // Uruguay +"UZ\0" // Uzbekistan +"VU\0" // Vanuatu +"VA\0" // VaticanCityState +"VE\0" // Venezuela +"VN\0" // Vietnam +"VG\0" // BritishVirginIslands +"VI\0" // UnitedStatesVirginIslands +"WF\0" // WallisAndFutunaIslands +"EH\0" // WesternSahara +"YE\0" // Yemen +"IC\0" // CanaryIslands +"ZM\0" // Zambia +"ZW\0" // Zimbabwe +"CP\0" // ClippertonIsland +"ME\0" // Montenegro +"RS\0" // Serbia +"BL\0" // Saint Barthelemy +"MF\0" // Saint Martin +"419" // LatinAmericaAndTheCaribbean +"AC\0" // AscensionIsland +"AX\0" // AlandIslands +"DG\0" // DiegoGarcia +"EA\0" // CeutaAndMelilla +"IM\0" // IsleOfMan +"JE\0" // Jersey +"TA\0" // TristanDaCunha +"SS\0" // SouthSudan +"BQ\0" // Bonaire +"SX\0" // SintMaarten +"XK\0" // Kosovo +"EU\0" // European Union +"QO\0" // Outlying Oceania +; + +// GENERATED PART ENDS HERE + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlocale_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlocale_p.h new file mode 100644 index 000000000..f7adb021b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlocale_p.h @@ -0,0 +1,465 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCALE_P_H +#define QLOCALE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qstring.h" +#include "QtCore/qvarlengtharray.h" +#include "QtCore/qvariant.h" +#include "QtCore/qnumeric.h" + +#include "qlocale.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SYSTEMLOCALE +class Q_CORE_EXPORT QSystemLocale +{ +public: + QSystemLocale(); + virtual ~QSystemLocale(); + + struct CurrencyToStringArgument + { + CurrencyToStringArgument() { } + CurrencyToStringArgument(const QVariant &v, const QString &s) + : value(v), symbol(s) { } + QVariant value; + QString symbol; + }; + + enum QueryType { + LanguageId, // uint + CountryId, // uint + DecimalPoint, // QString + GroupSeparator, // QString + ZeroDigit, // QString + NegativeSign, // QString + DateFormatLong, // QString + DateFormatShort, // QString + TimeFormatLong, // QString + TimeFormatShort, // QString + DayNameLong, // QString, in: int + DayNameShort, // QString, in: int + MonthNameLong, // QString, in: int + MonthNameShort, // QString, in: int + DateToStringLong, // QString, in: QDate + DateToStringShort, // QString in: QDate + TimeToStringLong, // QString in: QTime + TimeToStringShort, // QString in: QTime + DateTimeFormatLong, // QString + DateTimeFormatShort, // QString + DateTimeToStringLong, // QString in: QDateTime + DateTimeToStringShort, // QString in: QDateTime + MeasurementSystem, // uint + PositiveSign, // QString + AMText, // QString + PMText, // QString + FirstDayOfWeek, // Qt::DayOfWeek + Weekdays, // QList + CurrencySymbol, // QString in: CurrencyToStringArgument + CurrencyToString, // QString in: qlonglong, qulonglong or double + UILanguages, // QStringList + StringToStandardQuotation, // QString in: QStringRef to quote + StringToAlternateQuotation, // QString in: QStringRef to quote + ScriptId, // uint + ListToSeparatedString, // QString + LocaleChanged, // system locale changed + NativeLanguageName, // QString + NativeCountryName, // QString + StandaloneMonthNameLong, // QString, in: int + StandaloneMonthNameShort // QString, in: int + }; + virtual QVariant query(QueryType type, QVariant in) const; + virtual QLocale fallbackUiLocale() const; + +private: + QSystemLocale(bool); + friend class QSystemLocaleSingleton; +}; +Q_DECLARE_TYPEINFO(QSystemLocale::QueryType, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(QSystemLocale::CurrencyToStringArgument, Q_MOVABLE_TYPE); +#endif + +#if QT_CONFIG(icu) +namespace QIcu { + QString toUpper(const QByteArray &localeId, const QString &str, bool *ok); + QString toLower(const QByteArray &localeId, const QString &str, bool *ok); +} +#endif + + +struct QLocaleId +{ + // bypass constructors + static inline QLocaleId fromIds(ushort language, ushort script, ushort country) + { + const QLocaleId localeId = { language, script, country }; + return localeId; + } + + inline bool operator==(QLocaleId other) const + { return language_id == other.language_id && script_id == other.script_id && country_id == other.country_id; } + inline bool operator!=(QLocaleId other) const + { return !operator==(other); } + + QLocaleId withLikelySubtagsAdded() const; + QLocaleId withLikelySubtagsRemoved() const; + + QByteArray name(char separator = '-') const; + + ushort language_id, script_id, country_id; +}; +Q_DECLARE_TYPEINFO(QLocaleId, Q_PRIMITIVE_TYPE); + +struct QLocaleData +{ +public: + static const QLocaleData *findLocaleData(QLocale::Language language, + QLocale::Script script, + QLocale::Country country); + static const QLocaleData *c(); + + // Maximum number of significant digits needed to represent a double. + // We cannot use std::numeric_limits here without constexpr. + static const int DoubleMantissaBits = 53; + static const int Log10_2_100000 = 30103; // log10(2) * 100000 + // same as C++11 std::numeric_limits::max_digits10 + static const int DoubleMaxSignificant = (DoubleMantissaBits * Log10_2_100000) / 100000 + 2; + + // Maximum number of digits before decimal point to represent a double + // Same as std::numeric_limits::max_exponent10 + 1 + static const int DoubleMaxDigitsBeforeDecimal = 309; + + enum DoubleForm { + DFExponent = 0, + DFDecimal, + DFSignificantDigits, + _DFMax = DFSignificantDigits + }; + + enum Flags { + NoFlags = 0, + AddTrailingZeroes = 0x01, + ZeroPadded = 0x02, + LeftAdjusted = 0x04, + BlankBeforePositive = 0x08, + AlwaysShowSign = 0x10, + ThousandsGroup = 0x20, + CapitalEorX = 0x40, + + ShowBase = 0x80, + UppercaseBase = 0x100, + ZeroPadExponent = 0x200, + ForcePoint = 0x400 + }; + + enum NumberMode { IntegerMode, DoubleStandardMode, DoubleScientificMode }; + + typedef QVarLengthArray CharBuff; + + static QString doubleToString(const QChar zero, const QChar plus, + const QChar minus, const QChar exponent, + const QChar group, const QChar decimal, + double d, int precision, + DoubleForm form, + int width, unsigned flags); + static QString longLongToString(const QChar zero, const QChar group, + const QChar plus, const QChar minus, + qint64 l, int precision, int base, + int width, unsigned flags); + static QString unsLongLongToString(const QChar zero, const QChar group, + const QChar plus, + quint64 l, int precision, + int base, int width, + unsigned flags); + + QString doubleToString(double d, + int precision = -1, + DoubleForm form = DFSignificantDigits, + int width = -1, + unsigned flags = NoFlags) const; + QString longLongToString(qint64 l, int precision = -1, + int base = 10, + int width = -1, + unsigned flags = NoFlags) const; + QString unsLongLongToString(quint64 l, int precision = -1, + int base = 10, + int width = -1, + unsigned flags = NoFlags) const; + + // this function is meant to be called with the result of stringToDouble or bytearrayToDouble + static float convertDoubleToFloat(double d, bool *ok) + { + if (qIsInf(d)) + return float(d); + if (std::fabs(d) > std::numeric_limits::max()) { + if (ok != 0) + *ok = false; + return 0.0f; + } + return float(d); + } + + double stringToDouble(const QChar *begin, int len, bool *ok, + QLocale::NumberOptions number_options) const; + qint64 stringToLongLong(const QChar *begin, int len, int base, bool *ok, + QLocale::NumberOptions number_options) const; + quint64 stringToUnsLongLong(const QChar *begin, int len, int base, bool *ok, + QLocale::NumberOptions number_options) const; + + // these functions are used in QIntValidator (QtGui) + Q_CORE_EXPORT static double bytearrayToDouble(const char *num, bool *ok, bool *overflow = 0); + Q_CORE_EXPORT static qint64 bytearrayToLongLong(const char *num, int base, bool *ok, bool *overflow = 0); + Q_CORE_EXPORT static quint64 bytearrayToUnsLongLong(const char *num, int base, bool *ok); + + bool numberToCLocale(const QChar *str, int len, QLocale::NumberOptions number_options, + CharBuff *result) const; + inline char digitToCLocale(QChar c) const; + + // this function is used in QIntValidator (QtGui) + Q_CORE_EXPORT bool validateChars( + const QString &str, NumberMode numMode, QByteArray *buff, int decDigits = -1, + QLocale::NumberOptions number_options = QLocale::DefaultNumberOptions) const; + +public: + quint16 m_language_id, m_script_id, m_country_id; + + quint16 m_decimal, m_group, m_list, m_percent, m_zero, m_minus, m_plus, m_exponential; + quint16 m_quotation_start, m_quotation_end; + quint16 m_alternate_quotation_start, m_alternate_quotation_end; + + quint16 m_list_pattern_part_start_idx, m_list_pattern_part_start_size; + quint16 m_list_pattern_part_mid_idx, m_list_pattern_part_mid_size; + quint16 m_list_pattern_part_end_idx, m_list_pattern_part_end_size; + quint16 m_list_pattern_part_two_idx, m_list_pattern_part_two_size; + quint16 m_short_date_format_idx, m_short_date_format_size; + quint16 m_long_date_format_idx, m_long_date_format_size; + quint16 m_short_time_format_idx, m_short_time_format_size; + quint16 m_long_time_format_idx, m_long_time_format_size; + quint16 m_standalone_short_month_names_idx, m_standalone_short_month_names_size; + quint16 m_standalone_long_month_names_idx, m_standalone_long_month_names_size; + quint16 m_standalone_narrow_month_names_idx, m_standalone_narrow_month_names_size; + quint16 m_short_month_names_idx, m_short_month_names_size; + quint16 m_long_month_names_idx, m_long_month_names_size; + quint16 m_narrow_month_names_idx, m_narrow_month_names_size; + quint16 m_standalone_short_day_names_idx, m_standalone_short_day_names_size; + quint16 m_standalone_long_day_names_idx, m_standalone_long_day_names_size; + quint16 m_standalone_narrow_day_names_idx, m_standalone_narrow_day_names_size; + quint16 m_short_day_names_idx, m_short_day_names_size; + quint16 m_long_day_names_idx, m_long_day_names_size; + quint16 m_narrow_day_names_idx, m_narrow_day_names_size; + quint16 m_am_idx, m_am_size; + quint16 m_pm_idx, m_pm_size; + char m_currency_iso_code[3]; + quint16 m_currency_symbol_idx, m_currency_symbol_size; + quint16 m_currency_display_name_idx, m_currency_display_name_size; + quint8 m_currency_format_idx, m_currency_format_size; + quint8 m_currency_negative_format_idx, m_currency_negative_format_size; + quint16 m_language_endonym_idx, m_language_endonym_size; + quint16 m_country_endonym_idx, m_country_endonym_size; + quint16 m_currency_digits : 2; + quint16 m_currency_rounding : 3; + quint16 m_first_day_of_week : 3; + quint16 m_weekend_start : 3; + quint16 m_weekend_end : 3; +}; + +class Q_CORE_EXPORT QLocalePrivate +{ +public: + static QLocalePrivate *create( + const QLocaleData *data, + QLocale::NumberOptions numberOptions = QLocale::DefaultNumberOptions) + { + QLocalePrivate *retval = new QLocalePrivate; + retval->m_data = data; + retval->ref.store(0); + retval->m_numberOptions = numberOptions; + return retval; + } + + static QLocalePrivate *get(QLocale &l) { return l.d; } + static const QLocalePrivate *get(const QLocale &l) { return l.d; } + + QChar decimal() const { return QChar(m_data->m_decimal); } + QChar group() const { return QChar(m_data->m_group); } + QChar list() const { return QChar(m_data->m_list); } + QChar percent() const { return QChar(m_data->m_percent); } + QChar zero() const { return QChar(m_data->m_zero); } + QChar plus() const { return QChar(m_data->m_plus); } + QChar minus() const { return QChar(m_data->m_minus); } + QChar exponential() const { return QChar(m_data->m_exponential); } + + quint16 languageId() const { return m_data->m_language_id; } + quint16 countryId() const { return m_data->m_country_id; } + + QByteArray bcp47Name(char separator = '-') 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 QChar *code, int len) Q_DECL_NOTHROW; + static QLocale::Language codeToLanguage(const QString &code) Q_DECL_NOTHROW { return codeToLanguage(code.data(), code.size()); } + static QLocale::Language codeToLanguage(const QStringRef &code) Q_DECL_NOTHROW { return codeToLanguage(code.data(), code.size()); } + static QLocale::Script codeToScript(const QChar *code, int len) Q_DECL_NOTHROW; + static QLocale::Script codeToScript(const QString &code) Q_DECL_NOTHROW { return codeToScript(code.data(), code.size()); } + static QLocale::Script codeToScript(const QStringRef &code) Q_DECL_NOTHROW { return codeToScript(code.data(), code.size()); } + static QLocale::Country codeToCountry(const QChar *code, int len) Q_DECL_NOTHROW; + static QLocale::Country codeToCountry(const QString &code) Q_DECL_NOTHROW { return codeToCountry(code.data(), code.size()); } + static QLocale::Country codeToCountry(const QStringRef &code) Q_DECL_NOTHROW { return codeToCountry(code.data(), code.size()); } + static void getLangAndCountry(const QString &name, QLocale::Language &lang, + QLocale::Script &script, QLocale::Country &cntry); + + QLocale::MeasurementSystem measurementSystem() const; + + static void updateSystemPrivate(); + + QString dateTimeToString(const QString &format, const QDateTime &datetime, + const QDate &dateOnly, const QTime &timeOnly, + const QLocale *q) const; + + const QLocaleData *m_data; + QBasicAtomicInt ref; + QLocale::NumberOptions m_numberOptions; +}; + +template <> +inline QLocalePrivate *QSharedDataPointer::clone() +{ + // cannot use QLocalePrivate's copy constructor + // since it is deleted in C++11 + return QLocalePrivate::create(d->m_data, d->m_numberOptions); +} + +inline char QLocaleData::digitToCLocale(QChar in) const +{ + const ushort tenUnicode = m_zero + 10; + + if (in.unicode() >= m_zero && in.unicode() < tenUnicode) + return '0' + in.unicode() - m_zero; + + if (in.unicode() >= '0' && in.unicode() <= '9') + return in.toLatin1(); + + if (in == m_plus || in == QLatin1Char('+')) + return '+'; + + if (in == m_minus || in == QLatin1Char('-') || in == QChar(0x2212)) + return '-'; + + if (in == m_decimal) + return '.'; + + if (in == m_group) + return ','; + + if (in == m_exponential || in == QChar::toUpper(m_exponential)) + return 'e'; + + // In several languages group() is the char 0xA0, which looks like a space. + // People use a regular space instead of it and complain it doesn't work. + if (m_group == 0xA0 && in.unicode() == ' ') + return ','; + + return 0; +} + +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); + +enum { AsciiSpaceMask = (1 << (' ' - 1)) | + (1 << ('\t' - 1)) | // 9: HT - horizontal tab + (1 << ('\n' - 1)) | // 10: LF - line feed + (1 << ('\v' - 1)) | // 11: VT - vertical tab + (1 << ('\f' - 1)) | // 12: FF - form feed + (1 << ('\r' - 1)) }; // 13: CR - carriage return +Q_DECL_CONSTEXPR inline bool ascii_isspace(uchar c) +{ + return c >= 1U && c <= 32U && (uint(AsciiSpaceMask) >> uint(c - 1)) & 1U; +} + +#if defined(Q_COMPILER_CONSTEXPR) +Q_STATIC_ASSERT(ascii_isspace(' ')); +Q_STATIC_ASSERT(ascii_isspace('\t')); +Q_STATIC_ASSERT(ascii_isspace('\n')); +Q_STATIC_ASSERT(ascii_isspace('\v')); +Q_STATIC_ASSERT(ascii_isspace('\f')); +Q_STATIC_ASSERT(ascii_isspace('\r')); +Q_STATIC_ASSERT(!ascii_isspace('\0')); +Q_STATIC_ASSERT(!ascii_isspace('\a')); +Q_STATIC_ASSERT(!ascii_isspace('a')); +Q_STATIC_ASSERT(!ascii_isspace('\177')); +Q_STATIC_ASSERT(!ascii_isspace(uchar('\200'))); +Q_STATIC_ASSERT(!ascii_isspace(uchar('\xA0'))); +Q_STATIC_ASSERT(!ascii_isspace(uchar('\377'))); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QStringRef) +Q_DECLARE_METATYPE(QList) +#ifndef QT_NO_SYSTEMLOCALE +Q_DECLARE_METATYPE(QSystemLocale::CurrencyToStringArgument) +#endif + +#endif // QLOCALE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlocale_tools_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlocale_tools_p.h new file mode 100644 index 000000000..6133f67ad --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlocale_tools_p.h @@ -0,0 +1,124 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCALE_TOOLS_P_H +#define QLOCALE_TOOLS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include "qlocale_p.h" +#include "qstring.h" + +#if !defined(QT_QLOCALE_NEEDS_VOLATILE) +# if defined(Q_CC_GNU) +# if __GNUC__ == 4 +# define QT_QLOCALE_NEEDS_VOLATILE +# elif defined(Q_OS_WIN) +# define QT_QLOCALE_NEEDS_VOLATILE +# endif +# endif +#endif + +#if defined(QT_QLOCALE_NEEDS_VOLATILE) +# define NEEDS_VOLATILE volatile +#else +# define NEEDS_VOLATILE +#endif + +QT_BEGIN_NAMESPACE + +enum TrailingJunkMode { + TrailingJunkProhibited, + TrailingJunkAllowed +}; + +double asciiToDouble(const char *num, int numLen, bool &ok, int &processed, + TrailingJunkMode trailingJunkMode = TrailingJunkProhibited); +void doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, char *buf, int bufSize, + bool &sign, int &length, int &decpt); + +QString qulltoa(qulonglong l, int base, const QChar _zero); +QString qlltoa(qlonglong l, int base, const QChar zero); +Q_CORE_EXPORT QString qdtoa(qreal d, int *decpt, int *sign); + +enum PrecisionMode { + PMDecimalDigits = 0x01, + PMSignificantDigits = 0x02, + PMChopTrailingZeros = 0x03 +}; + +QString &decimalForm(QChar zero, QChar decimal, QChar group, + QString &digits, int decpt, int precision, + PrecisionMode pm, + bool always_show_decpt, + bool thousands_group); +QString &exponentForm(QChar zero, QChar decimal, QChar exponential, + QChar group, QChar plus, QChar minus, + QString &digits, int decpt, int precision, + PrecisionMode pm, + bool always_show_decpt, + bool leading_zero_in_exponent); + +inline bool isZero(double d) +{ + uchar *ch = (uchar *)&d; + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) { + return !(ch[0] & 0x7F || ch[1] || ch[2] || ch[3] || ch[4] || ch[5] || ch[6] || ch[7]); + } else { + return !(ch[7] & 0x7F || ch[6] || ch[5] || ch[4] || ch[3] || ch[2] || ch[1] || ch[0]); + } +} + +Q_CORE_EXPORT double qstrtod(const char *s00, char const **se, bool *ok); +Q_CORE_EXPORT double qstrntod(const char *s00, int len, char const **se, bool *ok); +qlonglong qstrtoll(const char *nptr, const char **endptr, int base, bool *ok); +qulonglong qstrtoull(const char *nptr, const char **endptr, int base, bool *ok); + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlockfile_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlockfile_p.h new file mode 100644 index 000000000..86a606ec0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qlockfile_p.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2013 David Faure +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCKFILE_P_H +#define QLOCKFILE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#ifdef Q_OS_WIN +#include +#endif + +QT_BEGIN_NAMESPACE + +class QLockFilePrivate +{ +public: + QLockFilePrivate(const QString &fn) + : fileName(fn), +#ifdef Q_OS_WIN + fileHandle(INVALID_HANDLE_VALUE), +#else + fileHandle(-1), +#endif + staleLockTime(30 * 1000), // 30 seconds + lockError(QLockFile::NoError), + isLocked(false) + { + } + QLockFile::LockError tryLock_sys(); + bool removeStaleLock(); + bool getLockInfo(qint64 *pid, QString *hostname, QString *appname) const; + // Returns \c 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; + // used in dbusmenu + Q_CORE_EXPORT static QString processNameByPid(qint64 pid); + +#ifdef Q_OS_UNIX + static int checkFcntlWorksAfterFlock(const QString &fn); +#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/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qloggingregistry_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qloggingregistry_p.h new file mode 100644 index 000000000..12a1f166b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qloggingregistry_p.h @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOGGINGREGISTRY_P_H +#define QLOGGINGREGISTRY_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include + +class tst_QLoggingRegistry; + +QT_BEGIN_NAMESPACE + +class Q_AUTOTEST_EXPORT QLoggingRule +{ +public: + QLoggingRule(); + QLoggingRule(const QStringRef &pattern, bool enabled); + int pass(const QString &categoryName, QtMsgType type) const; + + enum PatternFlag { + FullText = 0x1, + LeftFilter = 0x2, + RightFilter = 0x4, + MidFilter = LeftFilter | RightFilter + }; + Q_DECLARE_FLAGS(PatternFlags, PatternFlag) + + QString category; + int messageType; + PatternFlags flags; + bool enabled; + +private: + void parse(const QStringRef &pattern); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QLoggingRule::PatternFlags) +Q_DECLARE_TYPEINFO(QLoggingRule, Q_MOVABLE_TYPE); + +class Q_AUTOTEST_EXPORT QLoggingSettingsParser +{ +public: + void setImplicitRulesSection(bool inRulesSection) { m_inRulesSection = inRulesSection; } + + void setContent(const QString &content); + void setContent(QTextStream &stream); + + QVector rules() const { return _rules; } + +private: + void parseNextLine(QStringRef line); + +private: + bool m_inRulesSection = false; + QVector _rules; +}; + +class Q_AUTOTEST_EXPORT QLoggingRegistry +{ +public: + QLoggingRegistry(); + + void initializeRules(); + + void registerCategory(QLoggingCategory *category, QtMsgType enableForLevel); + void unregisterCategory(QLoggingCategory *category); + + void setApiRules(const QString &content); + + QLoggingCategory::CategoryFilter + installFilter(QLoggingCategory::CategoryFilter filter); + + static QLoggingRegistry *instance(); + +private: + void updateRules(); + + static void defaultCategoryFilter(QLoggingCategory *category); + + enum RuleSet { + // sorted by order in which defaultCategoryFilter considers them: + QtConfigRules, + ConfigRules, + ApiRules, + EnvironmentRules, + + NumRuleSets + }; + + QMutex registryMutex; + + // protected by mutex: + QVector ruleSets[NumRuleSets]; + QHash categories; + QLoggingCategory::CategoryFilter categoryFilter; + + friend class ::tst_QLoggingRegistry; +}; + +QT_END_NAMESPACE + +#endif // QLOGGINGREGISTRY_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmachparser_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmachparser_p.h new file mode 100644 index 000000000..3884c9279 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmachparser_p.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMACHPARSER_P_H +#define QMACHPARSER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_REQUIRE_CONFIG(library); + +#if defined(Q_OF_MACH_O) + +QT_BEGIN_NAMESPACE + +class QString; +class QLibraryPrivate; + +class Q_AUTOTEST_EXPORT QMachOParser +{ +public: + enum { QtMetaDataSection, NoQtSection, NotSuitable }; + static int parse(const char *m_s, ulong fdlen, const QString &library, QString *errorString, long *pos, ulong *sectionlen); +}; + +QT_END_NAMESPACE + +#endif // defined(Q_OF_ELF) && defined(Q_CC_GNU) + +#endif // QMACHPARSER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetaobject_moc_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetaobject_moc_p.h new file mode 100644 index 000000000..ad258acfc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetaobject_moc_p.h @@ -0,0 +1,219 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#if !defined(QMETAOBJECT_P_H) && !defined(UTILS_H) +# error "Include qmetaobject_p.h (or moc's utils.h) before including this file." +#endif + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +// This function is shared with moc.cpp. This file should be included where needed. +static QByteArray normalizeTypeInternal(const char *t, const char *e, bool fixScope = false, bool adjustConst = true) +{ + int len = e - t; + /* + Convert 'char const *' into 'const char *'. Start at index 1, + not 0, because 'const char *' is already OK. + */ + QByteArray constbuf; + for (int i = 1; i < len; i++) { + if ( t[i] == 'c' + && strncmp(t + i + 1, "onst", 4) == 0 + && (i + 5 >= len || !is_ident_char(t[i + 5])) + && !is_ident_char(t[i-1]) + ) { + constbuf = QByteArray(t, len); + if (is_space(t[i-1])) + constbuf.remove(i-1, 6); + else + constbuf.remove(i, 5); + constbuf.prepend("const "); + t = constbuf.data(); + e = constbuf.data() + constbuf.length(); + break; + } + /* + We mustn't convert 'char * const *' into 'const char **' + and we must beware of 'Bar'. + */ + if (t[i] == '&' || t[i] == '*' ||t[i] == '<') + break; + } + if (adjustConst && e > t + 6 && strncmp("const ", t, 6) == 0) { + if (*(e-1) == '&') { // treat const reference as value + t += 6; + --e; + } else if (is_ident_char(*(e-1)) || *(e-1) == '>') { // treat const value as value + t += 6; + } + } + QByteArray result; + result.reserve(len); + +#if 1 + // consume initial 'const ' + if (strncmp("const ", t, 6) == 0) { + t+= 6; + result += "const "; + } +#endif + + // some type substitutions for 'unsigned x' + if (strncmp("unsigned", t, 8) == 0) { + // make sure "unsigned" is an isolated word before making substitutions + if (!t[8] || !is_ident_char(t[8])) { + if (strncmp(" int", t+8, 4) == 0) { + t += 8+4; + result += "uint"; + } else if (strncmp(" long", t+8, 5) == 0) { + if ((strlen(t + 8 + 5) < 4 || strncmp(t + 8 + 5, " int", 4) != 0) // preserve '[unsigned] long int' + && (strlen(t + 8 + 5) < 5 || strncmp(t + 8 + 5, " long", 5) != 0) // preserve '[unsigned] long long' + ) { + t += 8+5; + result += "ulong"; + } + } else if (strncmp(" short", t+8, 6) != 0 // preserve unsigned short + && strncmp(" char", t+8, 5) != 0) { // preserve unsigned char + // treat rest (unsigned) as uint + t += 8; + result += "uint"; + } + } + } else { + // discard 'struct', 'class', and 'enum'; they are optional + // and we don't want them in the normalized signature + struct { + const char *keyword; + int len; + } optional[] = { + { "struct ", 7 }, + { "class ", 6 }, + { "enum ", 5 }, + { 0, 0 } + }; + int i = 0; + do { + if (strncmp(optional[i].keyword, t, optional[i].len) == 0) { + t += optional[i].len; + break; + } + } while (optional[++i].keyword != 0); + } + + bool star = false; + while (t != e) { + char c = *t++; + if (fixScope && c == ':' && *t == ':' ) { + ++t; + c = *t++; + int i = result.size() - 1; + while (i >= 0 && is_ident_char(result.at(i))) + --i; + result.resize(i + 1); + } + star = star || c == '*'; + result += c; + if (c == '<') { + //template recursion + const char* tt = t; + int templdepth = 1; + int scopeDepth = 0; + while (t != e) { + c = *t++; + if (c == '{' || c == '(' || c == '[') + ++scopeDepth; + if (c == '}' || c == ')' || c == ']') + --scopeDepth; + if (scopeDepth == 0) { + if (c == '<') + ++templdepth; + if (c == '>') + --templdepth; + if (templdepth == 0 || (templdepth == 1 && c == ',')) { + result += normalizeTypeInternal(tt, t-1, fixScope, false); + result += c; + if (templdepth == 0) { + if (*t == '>') + result += ' '; // avoid >> + break; + } + tt = t; + } + } + } + } + + // cv qualifers can appear after the type as well + if (!is_ident_char(c) && t != e && (e - t >= 5 && strncmp("const", t, 5) == 0) + && (e - t == 5 || !is_ident_char(t[5]))) { + t += 5; + while (t != e && is_space(*t)) + ++t; + if (adjustConst && t != e && *t == '&') { + // treat const ref as value + ++t; + } else if (adjustConst && !star) { + // treat const as value + } else if (!star) { + // move const to the front (but not if const comes after a *) + result.prepend("const "); + } else { + // keep const after a * + result += "const"; + } + } + } + + return result; +} + +QT_END_NAMESPACE diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetaobject_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetaobject_p.h new file mode 100644 index 000000000..e247c4870 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetaobject_p.h @@ -0,0 +1,269 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2014 Olivier Goffart +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMETAOBJECT_P_H +#define QMETAOBJECT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of moc. This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// + +#include +#include +#ifndef QT_NO_QOBJECT +#include // For QObjectPrivate::Connection +#endif +#include + +QT_BEGIN_NAMESPACE + +enum PropertyFlags { + Invalid = 0x00000000, + Readable = 0x00000001, + Writable = 0x00000002, + Resettable = 0x00000004, + EnumOrFlag = 0x00000008, + StdCppSet = 0x00000100, +// Override = 0x00000200, + Constant = 0x00000400, + Final = 0x00000800, + Designable = 0x00001000, + ResolveDesignable = 0x00002000, + Scriptable = 0x00004000, + ResolveScriptable = 0x00008000, + Stored = 0x00010000, + ResolveStored = 0x00020000, + Editable = 0x00040000, + ResolveEditable = 0x00080000, + User = 0x00100000, + ResolveUser = 0x00200000, + Notify = 0x00400000, + Revisioned = 0x00800000 +}; + +enum MethodFlags { + AccessPrivate = 0x00, + AccessProtected = 0x01, + AccessPublic = 0x02, + AccessMask = 0x03, //mask + + MethodMethod = 0x00, + MethodSignal = 0x04, + MethodSlot = 0x08, + MethodConstructor = 0x0c, + MethodTypeMask = 0x0c, + + MethodCompatibility = 0x10, + MethodCloned = 0x20, + MethodScriptable = 0x40, + MethodRevisioned = 0x80 +}; + +enum MetaObjectFlags { + DynamicMetaObject = 0x01, + RequiresVariantMetaObject = 0x02, + PropertyAccessInStaticMetaCall = 0x04 // since Qt 5.5, property code is in the static metacall +}; + +enum MetaDataFlags { + IsUnresolvedType = 0x80000000, + TypeNameIndexMask = 0x7FFFFFFF +}; + +enum EnumFlags { + EnumIsFlag = 0x1, + EnumIsScoped = 0x2 +}; + +extern int qMetaTypeTypeInternal(const char *); + +class QArgumentType +{ +public: + QArgumentType(int type) + : _type(type) + {} + QArgumentType(const QByteArray &name) + : _type(qMetaTypeTypeInternal(name.constData())), _name(name) + {} + QArgumentType() + : _type(0) + {} + int type() const + { return _type; } + QByteArray name() const + { + if (_type && _name.isEmpty()) + const_cast(this)->_name = QMetaType::typeName(_type); + return _name; + } + bool operator==(const QArgumentType &other) const + { + if (_type && other._type) + return _type == other._type; + else + return name() == other.name(); + } + bool operator!=(const QArgumentType &other) const + { + if (_type && other._type) + return _type != other._type; + else + return name() != other.name(); + } + +private: + int _type; + QByteArray _name; +}; +Q_DECLARE_TYPEINFO(QArgumentType, Q_MOVABLE_TYPE); + +typedef QVarLengthArray QArgumentTypeArray; + +class QMetaMethodPrivate; +class QMutex; + +struct QMetaObjectPrivate +{ + // revision 7 is Qt 5.0 everything lower is not supported + enum { OutputRevision = 7 }; // Used by moc, qmetaobjectbuilder and qdbus + + int revision; + int className; + int classInfoCount, classInfoData; + int methodCount, methodData; + int propertyCount, propertyData; + int enumeratorCount, enumeratorData; + int constructorCount, constructorData; + int flags; + int signalCount; + + static inline const QMetaObjectPrivate *get(const QMetaObject *metaobject) + { return reinterpret_cast(metaobject->d.data); } + + static int originalClone(const QMetaObject *obj, int local_method_index); + + static QByteArray decodeMethodSignature(const char *signature, + QArgumentTypeArray &types); + static int indexOfSignalRelative(const QMetaObject **baseObject, + const QByteArray &name, int argc, + const QArgumentType *types); + static int indexOfSlotRelative(const QMetaObject **m, + const QByteArray &name, int argc, + const QArgumentType *types); + static int indexOfSignal(const QMetaObject *m, const QByteArray &name, + int argc, const QArgumentType *types); + static int indexOfSlot(const QMetaObject *m, const QByteArray &name, + int argc, const QArgumentType *types); + static int indexOfMethod(const QMetaObject *m, const QByteArray &name, + int argc, const QArgumentType *types); + static int indexOfConstructor(const QMetaObject *m, const QByteArray &name, + int argc, const QArgumentType *types); + Q_CORE_EXPORT static QMetaMethod signal(const QMetaObject *m, int signal_index); + Q_CORE_EXPORT static int signalOffset(const QMetaObject *m); + Q_CORE_EXPORT static int absoluteSignalCount(const QMetaObject *m); + Q_CORE_EXPORT static int signalIndex(const QMetaMethod &m); + static bool checkConnectArgs(int signalArgc, const QArgumentType *signalTypes, + int methodArgc, const QArgumentType *methodTypes); + static bool checkConnectArgs(const QMetaMethodPrivate *signal, + const QMetaMethodPrivate *method); + + static QList parameterTypeNamesFromSignature(const char *signature); + +#ifndef QT_NO_QOBJECT + //defined in qobject.cpp + enum DisconnectType { DisconnectAll, DisconnectOne }; + static void memberIndexes(const QObject *obj, const QMetaMethod &member, + int *signalIndex, int *methodIndex); + static QObjectPrivate::Connection *connect(const QObject *sender, int signal_index, + const QMetaObject *smeta, + const QObject *receiver, int method_index_relative, + const QMetaObject *rmeta = 0, + int type = 0, int *types = 0); + static bool disconnect(const QObject *sender, int signal_index, + const QMetaObject *smeta, + const QObject *receiver, int method_index, void **slot, + DisconnectType = DisconnectAll); + static inline bool disconnectHelper(QObjectPrivate::Connection *c, + const QObject *receiver, int method_index, void **slot, + QMutex *senderMutex, DisconnectType = DisconnectAll); +#endif +}; + +// For meta-object generators + +enum { MetaObjectPrivateFieldCount = sizeof(QMetaObjectPrivate) / sizeof(int) }; + +#ifndef UTILS_H +// mirrored in moc's utils.h +static inline bool is_ident_char(char s) +{ + return ((s >= 'a' && s <= 'z') + || (s >= 'A' && s <= 'Z') + || (s >= '0' && s <= '9') + || s == '_' + ); +} + +static inline bool is_space(char s) +{ + return (s == ' ' || s == '\t'); +} +#endif + +/* + This function is shared with moc.cpp. The implementation lives in qmetaobject_moc_p.h, which + should be included where needed. The declaration here is not used to avoid warnings from + the compiler about unused functions. + +static QByteArray normalizeTypeInternal(const char *t, const char *e, bool fixScope = false, bool adjustConst = true); +*/ + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetaobjectbuilder_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetaobjectbuilder_p.h new file mode 100644 index 000000000..144595330 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetaobjectbuilder_p.h @@ -0,0 +1,345 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMETAOBJECTBUILDER_P_H +#define QMETAOBJECTBUILDER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of moc. This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include + + +QT_BEGIN_NAMESPACE + +class QMetaObjectBuilderPrivate; +class QMetaMethodBuilder; +class QMetaMethodBuilderPrivate; +class QMetaPropertyBuilder; +class QMetaPropertyBuilderPrivate; +class QMetaEnumBuilder; +class QMetaEnumBuilderPrivate; + +class Q_CORE_EXPORT QMetaObjectBuilder +{ +public: + enum AddMember + { + ClassName = 0x00000001, + SuperClass = 0x00000002, + Methods = 0x00000004, + Signals = 0x00000008, + Slots = 0x00000010, + Constructors = 0x00000020, + Properties = 0x00000040, + Enumerators = 0x00000080, + ClassInfos = 0x00000100, + RelatedMetaObjects = 0x00000200, + StaticMetacall = 0x00000400, + PublicMethods = 0x00000800, + ProtectedMethods = 0x00001000, + PrivateMethods = 0x00002000, + AllMembers = 0x7FFFFFFF, + AllPrimaryMembers = 0x7FFFFBFC + }; + Q_DECLARE_FLAGS(AddMembers, AddMember) + + enum MetaObjectFlag { + DynamicMetaObject = 0x01 + }; + Q_DECLARE_FLAGS(MetaObjectFlags, MetaObjectFlag) + + QMetaObjectBuilder(); + explicit QMetaObjectBuilder(const QMetaObject *prototype, QMetaObjectBuilder::AddMembers members = AllMembers); + virtual ~QMetaObjectBuilder(); + + QByteArray className() const; + void setClassName(const QByteArray& name); + + const QMetaObject *superClass() const; + void setSuperClass(const QMetaObject *meta); + + MetaObjectFlags flags() const; + void setFlags(MetaObjectFlags); + + int methodCount() const; + int constructorCount() const; + int propertyCount() const; + int enumeratorCount() const; + int classInfoCount() const; + int relatedMetaObjectCount() const; + + QMetaMethodBuilder addMethod(const QByteArray& signature); + QMetaMethodBuilder addMethod(const QByteArray& signature, const QByteArray& returnType); + QMetaMethodBuilder addMethod(const QMetaMethod& prototype); + + QMetaMethodBuilder addSlot(const QByteArray& signature); + QMetaMethodBuilder addSignal(const QByteArray& signature); + + QMetaMethodBuilder addConstructor(const QByteArray& signature); + QMetaMethodBuilder addConstructor(const QMetaMethod& prototype); + + QMetaPropertyBuilder addProperty(const QByteArray& name, const QByteArray& type, int notifierId=-1); + QMetaPropertyBuilder addProperty(const QMetaProperty& prototype); + + QMetaEnumBuilder addEnumerator(const QByteArray& name); + QMetaEnumBuilder addEnumerator(const QMetaEnum& prototype); + + int addClassInfo(const QByteArray& name, const QByteArray& value); + + int addRelatedMetaObject(const QMetaObject *meta); + + void addMetaObject(const QMetaObject *prototype, QMetaObjectBuilder::AddMembers members = AllMembers); + + QMetaMethodBuilder method(int index) const; + QMetaMethodBuilder constructor(int index) const; + QMetaPropertyBuilder property(int index) const; + QMetaEnumBuilder enumerator(int index) const; + const QMetaObject *relatedMetaObject(int index) const; + + QByteArray classInfoName(int index) const; + QByteArray classInfoValue(int index) const; + + void removeMethod(int index); + void removeConstructor(int index); + void removeProperty(int index); + void removeEnumerator(int index); + void removeClassInfo(int index); + void removeRelatedMetaObject(int index); + + int indexOfMethod(const QByteArray& signature); + int indexOfSignal(const QByteArray& signature); + int indexOfSlot(const QByteArray& signature); + int indexOfConstructor(const QByteArray& signature); + int indexOfProperty(const QByteArray& name); + int indexOfEnumerator(const QByteArray& name); + int indexOfClassInfo(const QByteArray& name); + + typedef void (*StaticMetacallFunction)(QObject *, QMetaObject::Call, int, void **); + + QMetaObjectBuilder::StaticMetacallFunction staticMetacallFunction() const; + void setStaticMetacallFunction(QMetaObjectBuilder::StaticMetacallFunction value); + + QMetaObject *toMetaObject() const; + QByteArray toRelocatableData(bool * = 0) const; + static void fromRelocatableData(QMetaObject *, const QMetaObject *, const QByteArray &); + +#ifndef QT_NO_DATASTREAM + void serialize(QDataStream& stream) const; + void deserialize + (QDataStream& stream, + const QMap& references); +#endif + +private: + Q_DISABLE_COPY(QMetaObjectBuilder) + + QMetaObjectBuilderPrivate *d; + + friend class QMetaMethodBuilder; + friend class QMetaPropertyBuilder; + friend class QMetaEnumBuilder; +}; + +class Q_CORE_EXPORT QMetaMethodBuilder +{ +public: + QMetaMethodBuilder() : _mobj(0), _index(0) {} + + int index() const; + + QMetaMethod::MethodType methodType() const; + QByteArray signature() const; + + QByteArray returnType() const; + void setReturnType(const QByteArray& value); + + QList parameterTypes() const; + QList parameterNames() const; + void setParameterNames(const QList& value); + + QByteArray tag() const; + void setTag(const QByteArray& value); + + QMetaMethod::Access access() const; + void setAccess(QMetaMethod::Access value); + + int attributes() const; + void setAttributes(int value); + + int revision() const; + void setRevision(int revision); + +private: + const QMetaObjectBuilder *_mobj; + int _index; + + friend class QMetaObjectBuilder; + friend class QMetaPropertyBuilder; + + QMetaMethodBuilder(const QMetaObjectBuilder *mobj, int index) + : _mobj(mobj), _index(index) {} + + QMetaMethodBuilderPrivate *d_func() const; +}; + +class Q_CORE_EXPORT QMetaPropertyBuilder +{ +public: + QMetaPropertyBuilder() : _mobj(0), _index(0) {} + + int index() const { return _index; } + + QByteArray name() const; + QByteArray type() const; + + bool hasNotifySignal() const; + QMetaMethodBuilder notifySignal() const; + void setNotifySignal(const QMetaMethodBuilder& value); + void removeNotifySignal(); + + bool isReadable() const; + bool isWritable() const; + bool isResettable() const; + bool isDesignable() const; + bool isScriptable() const; + bool isStored() const; + bool isEditable() const; + bool isUser() const; + bool hasStdCppSet() const; + bool isEnumOrFlag() const; + bool isConstant() const; + bool isFinal() const; + + void setReadable(bool value); + void setWritable(bool value); + void setResettable(bool value); + void setDesignable(bool value); + void setScriptable(bool value); + void setStored(bool value); + void setEditable(bool value); + void setUser(bool value); + void setStdCppSet(bool value); + void setEnumOrFlag(bool value); + void setConstant(bool value); + void setFinal(bool value); + + int revision() const; + void setRevision(int revision); + +private: + const QMetaObjectBuilder *_mobj; + int _index; + + friend class QMetaObjectBuilder; + + QMetaPropertyBuilder(const QMetaObjectBuilder *mobj, int index) + : _mobj(mobj), _index(index) {} + + QMetaPropertyBuilderPrivate *d_func() const; +}; + +class Q_CORE_EXPORT QMetaEnumBuilder +{ +public: + QMetaEnumBuilder() : _mobj(0), _index(0) {} + + int index() const { return _index; } + + QByteArray name() const; + + bool isFlag() const; + void setIsFlag(bool value); + + int keyCount() const; + QByteArray key(int index) const; + int value(int index) const; + + int addKey(const QByteArray& name, int value); + void removeKey(int index); + +private: + const QMetaObjectBuilder *_mobj; + int _index; + + friend class QMetaObjectBuilder; + + QMetaEnumBuilder(const QMetaObjectBuilder *mobj, int index) + : _mobj(mobj), _index(index) {} + + QMetaEnumBuilderPrivate *d_func() const; +}; + +class Q_CORE_EXPORT QMetaStringTable +{ +public: + explicit QMetaStringTable(const QByteArray &className); + + int enter(const QByteArray &value); + + static int preferredAlignment(); + int blobSize() const; + void writeBlob(char *out) const; + +private: + typedef QHash Entries; // string --> index mapping + Entries m_entries; + int m_index; + QByteArray m_className; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QMetaObjectBuilder::AddMembers) +Q_DECLARE_OPERATORS_FOR_FLAGS(QMetaObjectBuilder::MetaObjectFlags) + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetatype_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetatype_p.h new file mode 100644 index 000000000..6f1334d08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetatype_p.h @@ -0,0 +1,253 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMETATYPE_P_H +#define QMETATYPE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qmetatype.h" + +QT_BEGIN_NAMESPACE + +namespace QModulesPrivate { +enum Names { Core, Gui, Widgets, Unknown, ModulesCount /* ModulesCount has to be at the end */ }; + +static inline int moduleForType(const uint typeId) +{ + if (typeId <= QMetaType::LastCoreType) + return Core; + if (typeId >= QMetaType::FirstGuiType && typeId <= QMetaType::LastGuiType) + return Gui; + if (typeId >= QMetaType::FirstWidgetsType && typeId <= QMetaType::LastWidgetsType) + return Widgets; + return Unknown; +} + +template +class QTypeModuleInfo +{ +public: + enum Module { + IsCore = false, + IsWidget = false, + IsGui = false, + IsUnknown = true + }; +}; + +#define QT_ASSIGN_TYPE_TO_MODULE(TYPE, MODULE) \ +template<> \ +class QTypeModuleInfo \ +{ \ +public: \ + enum Module { \ + IsCore = (((MODULE) == (QModulesPrivate::Core))), \ + IsWidget = (((MODULE) == (QModulesPrivate::Widgets))), \ + IsGui = (((MODULE) == (QModulesPrivate::Gui))), \ + IsUnknown = !(IsCore || IsWidget || IsGui) \ + }; \ + static inline int module() { return MODULE; } \ + Q_STATIC_ASSERT((IsUnknown && !(IsCore || IsWidget || IsGui)) \ + || (IsCore && !(IsUnknown || IsWidget || IsGui)) \ + || (IsWidget && !(IsUnknown || IsCore || IsGui)) \ + || (IsGui && !(IsUnknown || IsCore || IsWidget))); \ +}; + + +#define QT_DECLARE_CORE_MODULE_TYPES_ITER(TypeName, TypeId, Name) \ + QT_ASSIGN_TYPE_TO_MODULE(Name, QModulesPrivate::Core); +#define QT_DECLARE_GUI_MODULE_TYPES_ITER(TypeName, TypeId, Name) \ + QT_ASSIGN_TYPE_TO_MODULE(Name, QModulesPrivate::Gui); +#define QT_DECLARE_WIDGETS_MODULE_TYPES_ITER(TypeName, TypeId, Name) \ + QT_ASSIGN_TYPE_TO_MODULE(Name, QModulesPrivate::Widgets); + +QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(QT_DECLARE_CORE_MODULE_TYPES_ITER) +QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(QT_DECLARE_CORE_MODULE_TYPES_ITER) +QT_FOR_EACH_STATIC_CORE_CLASS(QT_DECLARE_CORE_MODULE_TYPES_ITER) +QT_FOR_EACH_STATIC_CORE_POINTER(QT_DECLARE_CORE_MODULE_TYPES_ITER) +QT_FOR_EACH_STATIC_CORE_TEMPLATE(QT_DECLARE_CORE_MODULE_TYPES_ITER) +QT_FOR_EACH_STATIC_GUI_CLASS(QT_DECLARE_GUI_MODULE_TYPES_ITER) +QT_FOR_EACH_STATIC_WIDGETS_CLASS(QT_DECLARE_WIDGETS_MODULE_TYPES_ITER) +} // namespace QModulesPrivate + +#undef QT_DECLARE_CORE_MODULE_TYPES_ITER +#undef QT_DECLARE_GUI_MODULE_TYPES_ITER +#undef QT_DECLARE_WIDGETS_MODULE_TYPES_ITER + +class QMetaTypeInterface +{ +public: + QMetaType::SaveOperator saveOp; + QMetaType::LoadOperator loadOp; + QMetaType::Constructor constructor; + QMetaType::Destructor destructor; + int size; + QMetaType::TypeFlags::Int flags; + const QMetaObject *metaObject; +}; + +#ifndef QT_NO_DATASTREAM +# define QT_METATYPE_INTERFACE_INIT_DATASTREAM_IMPL(Type) \ + /*saveOp*/(QtMetaTypePrivate::QMetaTypeFunctionHelper::IsAvailable>::Save), \ + /*loadOp*/(QtMetaTypePrivate::QMetaTypeFunctionHelper::IsAvailable>::Load), +# define QT_METATYPE_INTERFACE_INIT_EMPTY_DATASTREAM_IMPL(Type) \ + /*saveOp*/ 0, \ + /*loadOp*/ 0, +#else +# define QT_METATYPE_INTERFACE_INIT_EMPTY_DATASTREAM_IMPL(Type) \ + /*saveOp*/ 0, \ + /*loadOp*/ 0, +# define QT_METATYPE_INTERFACE_INIT_DATASTREAM_IMPL(Type) \ + QT_METATYPE_INTERFACE_INIT_EMPTY_DATASTREAM_IMPL(Type) +#endif + +#ifndef QT_BOOTSTRAPPED +#define METAOBJECT_DELEGATE(Type) (QtPrivate::MetaObjectForType::value()) +#else +#define METAOBJECT_DELEGATE(Type) 0 +#endif + +#define QT_METATYPE_INTERFACE_INIT_IMPL(Type, DATASTREAM_DELEGATE) \ +{ \ + DATASTREAM_DELEGATE(Type) \ + /*constructor*/(QtMetaTypePrivate::QMetaTypeFunctionHelper::IsAvailable>::Construct), \ + /*destructor*/(QtMetaTypePrivate::QMetaTypeFunctionHelper::IsAvailable>::Destruct), \ + /*size*/(QTypeInfo::sizeOf), \ + /*flags*/QtPrivate::QMetaTypeTypeFlags::Flags, \ + /*metaObject*/METAOBJECT_DELEGATE(Type) \ +} + + +/* These QT_METATYPE_INTERFACE_INIT* macros are used to initialize QMetaTypeInterface instance. + + - QT_METATYPE_INTERFACE_INIT(Type) -> It takes Type argument and creates all necessary wrapper functions for the Type, + it detects if QT_NO_DATASTREAM was defined. Probably it is the macro that you want to use. + + - QT_METATYPE_INTERFACE_INIT_EMPTY() -> It initializes an empty QMetaTypeInterface instance. + + - QT_METATYPE_INTERFACE_INIT_NO_DATASTREAM(Type) -> Temporary workaround for missing auto-detection of data stream + operators. It creates same instance as QT_METATYPE_INTERFACE_INIT(Type) but with null stream operators callbacks. + */ +#define QT_METATYPE_INTERFACE_INIT(Type) QT_METATYPE_INTERFACE_INIT_IMPL(Type, QT_METATYPE_INTERFACE_INIT_DATASTREAM_IMPL) +#define QT_METATYPE_INTERFACE_INIT_NO_DATASTREAM(Type) QT_METATYPE_INTERFACE_INIT_IMPL(Type, QT_METATYPE_INTERFACE_INIT_EMPTY_DATASTREAM_IMPL) +#define QT_METATYPE_INTERFACE_INIT_EMPTY() \ +{ \ + QT_METATYPE_INTERFACE_INIT_EMPTY_DATASTREAM_IMPL(void) \ + /*constructor*/ 0, \ + /*destructor*/ 0, \ + /*size*/ 0, \ + /*flags*/ 0, \ + /*metaObject*/ 0 \ +} + +namespace QtMetaTypePrivate { +template +struct TypeDefinition { + static const bool IsAvailable = true; +}; + +// Ignore these types, as incomplete +#ifdef QT_BOOTSTRAPPED +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#ifdef QT_NO_GEOM_VARIANT +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#ifdef QT_NO_REGEXP +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#if defined(QT_BOOTSTRAPPED) || defined(QT_NO_REGULAREXPRESSION) +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#ifdef QT_NO_SHORTCUT +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#ifdef QT_NO_CURSOR +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#ifdef QT_NO_MATRIX4X4 +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#ifdef QT_NO_VECTOR2D +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#ifdef QT_NO_VECTOR3D +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#ifdef QT_NO_VECTOR4D +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#ifdef QT_NO_QUATERNION +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +#ifdef QT_NO_ICON +template<> struct TypeDefinition { static const bool IsAvailable = false; }; +#endif +} //namespace QtMetaTypePrivate + +QT_END_NAMESPACE + +#endif // QMETATYPE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetatypeswitcher_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetatypeswitcher_p.h new file mode 100644 index 000000000..154fb8ab7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmetatypeswitcher_p.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMETATYPESWITCHER_P_H +#define QMETATYPESWITCHER_P_H + +#include "qmetatype.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. +// + +QT_BEGIN_NAMESPACE + +class QMetaTypeSwitcher { +public: + class NotBuiltinType; // type is not a built-in type, but it may be a custom type or an unknown type + class UnknownType; // type not known to QMetaType system + template + static ReturnType switcher(DelegateObject &logic, int type, const void *data); +}; + + +#define QT_METATYPE_SWICHER_CASE(TypeName, TypeId, Name)\ + case QMetaType::TypeName: return logic.delegate(static_cast(data)); + +template +ReturnType QMetaTypeSwitcher::switcher(DelegateObject &logic, int type, const void *data) +{ + switch (QMetaType::Type(type)) { + QT_FOR_EACH_STATIC_TYPE(QT_METATYPE_SWICHER_CASE) + + case QMetaType::UnknownType: + return logic.delegate(static_cast(data)); + default: + if (type < QMetaType::User) + return logic.delegate(static_cast(data)); + return logic.delegate(static_cast(data)); + } +} + +#undef QT_METATYPE_SWICHER_CASE + +QT_END_NAMESPACE + +#endif // QMETATYPESWITCHER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimedatabase_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimedatabase_p.h new file mode 100644 index 000000000..3f63f5f10 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimedatabase_p.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2015 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author David Faure +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMIMEDATABASE_P_H +#define QMIMEDATABASE_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 "qmimetype.h" + +#ifndef QT_NO_MIMETYPE + +#include "qmimetype_p.h" +#include "qmimeglobpattern_p.h" + +#include + +QT_BEGIN_NAMESPACE + +class QIODevice; +class QMimeDatabase; +class QMimeProviderBase; + +class QMimeDatabasePrivate +{ +public: + Q_DISABLE_COPY(QMimeDatabasePrivate) + + QMimeDatabasePrivate(); + ~QMimeDatabasePrivate(); + + static QMimeDatabasePrivate *instance(); + + QMimeProviderBase *provider(); + void setProvider(QMimeProviderBase *theProvider); + + inline QString defaultMimeType() const { return m_defaultMimeType; } + + bool inherits(const QString &mime, const QString &parent); + + QList allMimeTypes(); + + + QMimeType mimeTypeForName(const QString &nameOrAlias); + QMimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device, int *priorityPtr); + QMimeType findByData(const QByteArray &data, int *priorityPtr); + QStringList mimeTypeForFileName(const QString &fileName); + + mutable QMimeProviderBase *m_provider; + const QString m_defaultMimeType; + QMutex mutex; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE +#endif // QMIMEDATABASE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimeglobpattern_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimeglobpattern_p.h new file mode 100644 index 000000000..21332e71b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimeglobpattern_p.h @@ -0,0 +1,166 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMIMEGLOBPATTERN_P_H +#define QMIMEGLOBPATTERN_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 + +#ifndef QT_NO_MIMETYPE + +#include +#include + +QT_BEGIN_NAMESPACE + +struct QMimeGlobMatchResult +{ + QMimeGlobMatchResult() + : m_weight(0), m_matchingPatternLength(0) + {} + + void addMatch(const QString &mimeType, int weight, const QString &pattern); + + QStringList m_matchingMimeTypes; // only those with highest weight + QStringList m_allMatchingMimeTypes; + int m_weight; + int m_matchingPatternLength; + QString m_foundSuffix; +}; + +class QMimeGlobPattern +{ +public: + static const unsigned MaxWeight = 100; + static const unsigned DefaultWeight = 50; + static const unsigned MinWeight = 1; + + explicit QMimeGlobPattern(const QString &thePattern, const QString &theMimeType, unsigned theWeight = DefaultWeight, Qt::CaseSensitivity s = Qt::CaseInsensitive) : + m_pattern(s == Qt::CaseInsensitive ? thePattern.toLower() : thePattern), + m_mimeType(theMimeType), m_weight(theWeight), m_caseSensitivity(s) + { + } + + void swap(QMimeGlobPattern &other) Q_DECL_NOTHROW + { + qSwap(m_pattern, other.m_pattern); + qSwap(m_mimeType, other.m_mimeType); + qSwap(m_weight, other.m_weight); + qSwap(m_caseSensitivity, other.m_caseSensitivity); + } + + bool matchFileName(const QString &filename) const; + + inline const QString &pattern() const { return m_pattern; } + inline unsigned weight() const { return m_weight; } + inline const QString &mimeType() const { return m_mimeType; } + inline bool isCaseSensitive() const { return m_caseSensitivity == Qt::CaseSensitive; } + +private: + QString m_pattern; + QString m_mimeType; + int m_weight; + Qt::CaseSensitivity m_caseSensitivity; +}; +Q_DECLARE_SHARED(QMimeGlobPattern) + +class QMimeGlobPatternList : public QList +{ +public: + bool hasPattern(const QString &mimeType, const QString &pattern) const + { + const_iterator it = begin(); + const const_iterator myend = end(); + for (; it != myend; ++it) + if ((*it).pattern() == pattern && (*it).mimeType() == mimeType) + return true; + return false; + } + + /*! + "noglobs" is very rare occurrence, so it's ok if it's slow + */ + void removeMimeType(const QString &mimeType) + { + auto isMimeTypeEqual = [&mimeType](const QMimeGlobPattern &pattern) { + return pattern.mimeType() == mimeType; + }; + erase(std::remove_if(begin(), end(), isMimeTypeEqual), end()); + } + + void match(QMimeGlobMatchResult &result, const QString &fileName) const; +}; + +/*! + Result of the globs parsing, as data structures ready for efficient MIME type matching. + This contains: + 1) a map of fast regular patterns (e.g. *.txt is stored as "txt" in a qhash's key) + 2) a linear list of high-weight globs + 3) a linear list of low-weight globs + */ +class QMimeAllGlobPatterns +{ +public: + typedef QHash PatternsMap; // MIME type -> patterns + + void addGlob(const QMimeGlobPattern &glob); + void removeMimeType(const QString &mimeType); + QMimeGlobMatchResult matchingGlobs(const QString &fileName) const; + void clear(); + + PatternsMap m_fastPatterns; // example: "doc" -> "application/msword", "text/plain" + QMimeGlobPatternList m_highWeightGlobs; + QMimeGlobPatternList m_lowWeightGlobs; // <= 50, including the non-fast 50 patterns +}; + +QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE +#endif // QMIMEGLOBPATTERN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimemagicrule_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimemagicrule_p.h new file mode 100644 index 000000000..0c6c1dbcd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimemagicrule_p.h @@ -0,0 +1,129 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMIMEMAGICRULE_P_H +#define QMIMEMAGICRULE_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 + +#ifndef QT_NO_MIMETYPE + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QMimeMagicRule +{ +public: + enum Type { Invalid = 0, String, Host16, Host32, Big16, Big32, Little16, Little32, Byte }; + + QMimeMagicRule(const QString &typeStr, const QByteArray &value, const QString &offsets, + const QByteArray &mask, QString *errorString); + + void swap(QMimeMagicRule &other) Q_DECL_NOTHROW + { + qSwap(m_type, other.m_type); + qSwap(m_value, other.m_value); + qSwap(m_startPos, other.m_startPos); + qSwap(m_endPos, other.m_endPos); + qSwap(m_mask, other.m_mask); + qSwap(m_pattern, other.m_pattern); + qSwap(m_number, other.m_number); + qSwap(m_numberMask, other.m_numberMask); + qSwap(m_matchFunction, other.m_matchFunction); + } + + bool operator==(const QMimeMagicRule &other) const; + + Type type() const { return m_type; } + QByteArray value() const { return m_value; } + int startPos() const { return m_startPos; } + int endPos() const { return m_endPos; } + QByteArray mask() const; + + bool isValid() const { return m_matchFunction != Q_NULLPTR; } + + bool matches(const QByteArray &data) const; + + QList m_subMatches; + + static Type type(const QByteArray &type); + static QByteArray typeName(Type type); + + static bool matchSubstring(const char *dataPtr, int dataSize, int rangeStart, int rangeLength, int valueLength, const char *valueData, const char *mask); + +private: + Type m_type; + QByteArray m_value; + int m_startPos; + int m_endPos; + QByteArray m_mask; + + QByteArray m_pattern; + quint32 m_number; + quint32 m_numberMask; + + typedef bool (QMimeMagicRule::*MatchFunction)(const QByteArray &data) const; + MatchFunction m_matchFunction; + +private: + // match functions + bool matchString(const QByteArray &data) const; + template + bool matchNumber(const QByteArray &data) const; +}; +Q_DECLARE_SHARED(QMimeMagicRule) + +QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE +#endif // QMIMEMAGICRULE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimemagicrulematcher_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimemagicrulematcher_p.h new file mode 100644 index 000000000..5e3d5306c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimemagicrulematcher_p.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMIMEMAGICRULEMATCHER_P_H +#define QMIMEMAGICRULEMATCHER_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 "qmimemagicrule_p.h" + +#ifndef QT_NO_MIMETYPE + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QMimeMagicRuleMatcher +{ +public: + explicit QMimeMagicRuleMatcher(const QString &mime, unsigned priority = 65535); + + void swap(QMimeMagicRuleMatcher &other) Q_DECL_NOTHROW + { + qSwap(m_list, other.m_list); + qSwap(m_priority, other.m_priority); + qSwap(m_mimetype, other.m_mimetype); + } + + bool operator==(const QMimeMagicRuleMatcher &other) const; + + void addRule(const QMimeMagicRule &rule); + void addRules(const QList &rules); + QList magicRules() const; + + bool matches(const QByteArray &data) const; + + unsigned priority() const; + + QString mimetype() const { return m_mimetype; } + +private: + QList m_list; + unsigned m_priority; + QString m_mimetype; +}; +Q_DECLARE_SHARED(QMimeMagicRuleMatcher) + +QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE +#endif // QMIMEMAGICRULEMATCHER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimeprovider_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimeprovider_p.h new file mode 100644 index 000000000..f410e6226 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimeprovider_p.h @@ -0,0 +1,185 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2015 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author David Faure +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMIMEPROVIDER_P_H +#define QMIMEPROVIDER_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 "qmimedatabase_p.h" + +#ifndef QT_NO_MIMETYPE + +#include "qmimeglobpattern_p.h" +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QMimeMagicRuleMatcher; + +class QMimeProviderBase +{ +public: + QMimeProviderBase(QMimeDatabasePrivate *db); + virtual ~QMimeProviderBase() {} + + virtual bool isValid() = 0; + virtual QMimeType mimeTypeForName(const QString &name) = 0; + virtual QMimeGlobMatchResult findByFileName(const QString &fileName) = 0; + virtual QStringList parents(const QString &mime) = 0; + virtual QString resolveAlias(const QString &name) = 0; + virtual QStringList listAliases(const QString &name) = 0; + virtual QMimeType findByMagic(const QByteArray &data, int *accuracyPtr) = 0; + virtual QList allMimeTypes() = 0; + virtual void loadMimeTypePrivate(QMimeTypePrivate &) {} + virtual void loadIcon(QMimeTypePrivate &) {} + virtual void loadGenericIcon(QMimeTypePrivate &) {} + + QMimeDatabasePrivate *m_db; +protected: + bool shouldCheck(); + QElapsedTimer m_lastCheck; +}; + +/* + Parses the files 'mime.cache' and 'types' on demand + */ +class QMimeBinaryProvider : public QMimeProviderBase +{ +public: + QMimeBinaryProvider(QMimeDatabasePrivate *db); + virtual ~QMimeBinaryProvider(); + + virtual bool isValid() Q_DECL_OVERRIDE; + virtual QMimeType mimeTypeForName(const QString &name) Q_DECL_OVERRIDE; + virtual QMimeGlobMatchResult findByFileName(const QString &fileName) Q_DECL_OVERRIDE; + virtual QStringList parents(const QString &mime) Q_DECL_OVERRIDE; + virtual QString resolveAlias(const QString &name) Q_DECL_OVERRIDE; + virtual QStringList listAliases(const QString &name) Q_DECL_OVERRIDE; + virtual QMimeType findByMagic(const QByteArray &data, int *accuracyPtr) Q_DECL_OVERRIDE; + virtual QList allMimeTypes() Q_DECL_OVERRIDE; + virtual void loadMimeTypePrivate(QMimeTypePrivate &) Q_DECL_OVERRIDE; + virtual void loadIcon(QMimeTypePrivate &) Q_DECL_OVERRIDE; + virtual void loadGenericIcon(QMimeTypePrivate &) Q_DECL_OVERRIDE; + +private: + struct CacheFile; + + void matchGlobList(QMimeGlobMatchResult &result, CacheFile *cacheFile, int offset, const QString &fileName); + bool matchSuffixTree(QMimeGlobMatchResult &result, CacheFile *cacheFile, int numEntries, int firstOffset, const QString &fileName, int charPos, bool caseSensitiveCheck); + bool matchMagicRule(CacheFile *cacheFile, int numMatchlets, int firstOffset, const QByteArray &data); + QString iconForMime(CacheFile *cacheFile, int posListOffset, const QByteArray &inputMime); + void loadMimeTypeList(); + void checkCache(); + + class CacheFileList : public QList + { + public: + CacheFile *findCacheFile(const QString &fileName) const; + bool checkCacheChanged(); + }; + CacheFileList m_cacheFiles; + QStringList m_cacheFileNames; + QSet m_mimetypeNames; + bool m_mimetypeListLoaded; +}; + +/* + Parses the raw XML files (slower) + */ +class QMimeXMLProvider : public QMimeProviderBase +{ +public: + QMimeXMLProvider(QMimeDatabasePrivate *db); + ~QMimeXMLProvider(); + + virtual bool isValid() Q_DECL_OVERRIDE; + virtual QMimeType mimeTypeForName(const QString &name) Q_DECL_OVERRIDE; + virtual QMimeGlobMatchResult findByFileName(const QString &fileName) Q_DECL_OVERRIDE; + virtual QStringList parents(const QString &mime) Q_DECL_OVERRIDE; + virtual QString resolveAlias(const QString &name) Q_DECL_OVERRIDE; + virtual QStringList listAliases(const QString &name) Q_DECL_OVERRIDE; + virtual QMimeType findByMagic(const QByteArray &data, int *accuracyPtr) Q_DECL_OVERRIDE; + virtual QList allMimeTypes() Q_DECL_OVERRIDE; + + bool load(const QString &fileName, QString *errorMessage); + + // Called by the mimetype xml parser + void addMimeType(const QMimeType &mt); + void addGlobPattern(const QMimeGlobPattern &glob); + void addParent(const QString &child, const QString &parent); + void addAlias(const QString &alias, const QString &name); + void addMagicMatcher(const QMimeMagicRuleMatcher &matcher); + +private: + void ensureLoaded(); + void load(const QString &fileName); + + bool m_loaded; + + typedef QHash NameMimeTypeMap; + NameMimeTypeMap m_nameMimeTypeMap; + + typedef QHash AliasHash; + AliasHash m_aliases; + + typedef QHash ParentsHash; + ParentsHash m_parents; + QMimeAllGlobPatterns m_mimeTypeGlobs; + + QList m_magicMatchers; + QStringList m_allFiles; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE +#endif // QMIMEPROVIDER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimetype_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimetype_p.h new file mode 100644 index 000000000..b0bfad2f6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimetype_p.h @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMIMETYPE_P_H +#define QMIMETYPE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qmimetype.h" + +#ifndef QT_NO_MIMETYPE + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_AUTOTEST_EXPORT QMimeTypePrivate : public QSharedData +{ +public: + typedef QHash LocaleHash; + + QMimeTypePrivate(); + explicit QMimeTypePrivate(const QMimeType &other); + + void clear(); + + void addGlobPattern(const QString &pattern); + + bool loaded; // QSharedData leaves a 4 byte gap, so don't put 8 byte members first + QString name; + LocaleHash localeComments; + QString genericIconName; + QString iconName; + QStringList globPatterns; +}; + +QT_END_NAMESPACE + +#define QMIMETYPE_BUILDER \ + QT_BEGIN_NAMESPACE \ + static QMimeType buildQMimeType ( \ + const QString &name, \ + const QString &genericIconName, \ + const QString &iconName, \ + const QStringList &globPatterns \ + ) \ + { \ + QMimeTypePrivate qMimeTypeData; \ + qMimeTypeData.name = name; \ + qMimeTypeData.genericIconName = genericIconName; \ + qMimeTypeData.iconName = iconName; \ + qMimeTypeData.globPatterns = globPatterns; \ + return QMimeType(qMimeTypeData); \ + } \ + QT_END_NAMESPACE + +#ifdef Q_COMPILER_RVALUE_REFS +#define QMIMETYPE_BUILDER_FROM_RVALUE_REFS \ + QT_BEGIN_NAMESPACE \ + static QMimeType buildQMimeType ( \ + QString &&name, \ + QString &&genericIconName, \ + QString &&iconName, \ + QStringList &&globPatterns \ + ) \ + { \ + QMimeTypePrivate qMimeTypeData; \ + qMimeTypeData.name = std::move(name); \ + qMimeTypeData.genericIconName = std::move(genericIconName); \ + qMimeTypeData.iconName = std::move(iconName); \ + qMimeTypeData.globPatterns = std::move(globPatterns); \ + return QMimeType(qMimeTypeData); \ + } \ + QT_END_NAMESPACE +#endif + +#endif // QT_NO_MIMETYPE +#endif // QMIMETYPE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimetypeparser_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimetypeparser_p.h new file mode 100644 index 000000000..0ce39e701 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmimetypeparser_p.h @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QMIMETYPEPARSER_P_H +#define QMIMETYPEPARSER_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 "qmimedatabase_p.h" + +#ifndef QT_NO_MIMETYPE + +#include "qmimeprovider_p.h" + +QT_BEGIN_NAMESPACE + +class QIODevice; + +class QMimeTypeParserBase +{ + Q_DISABLE_COPY(QMimeTypeParserBase) + +public: + QMimeTypeParserBase() {} + virtual ~QMimeTypeParserBase() {} + + bool parse(QIODevice *dev, const QString &fileName, QString *errorMessage); + + static bool parseNumber(const QStringRef &n, int *target, QString *errorMessage); + +protected: + virtual bool process(const QMimeType &t, QString *errorMessage) = 0; + virtual bool process(const QMimeGlobPattern &t, QString *errorMessage) = 0; + virtual void processParent(const QString &child, const QString &parent) = 0; + virtual void processAlias(const QString &alias, const QString &name) = 0; + virtual void processMagicMatcher(const QMimeMagicRuleMatcher &matcher) = 0; + +private: + enum ParseState { + ParseBeginning, + ParseMimeInfo, + ParseMimeType, + ParseComment, + ParseGenericIcon, + ParseIcon, + ParseGlobPattern, + ParseSubClass, + ParseAlias, + ParseMagic, + ParseMagicMatchRule, + ParseOtherMimeTypeSubTag, + ParseError + }; + + static ParseState nextState(ParseState currentState, const QStringRef &startElement); +}; + + +class QMimeTypeParser : public QMimeTypeParserBase +{ +public: + explicit QMimeTypeParser(QMimeXMLProvider &provider) : m_provider(provider) {} + +protected: + inline bool process(const QMimeType &t, QString *) override + { m_provider.addMimeType(t); return true; } + + inline bool process(const QMimeGlobPattern &glob, QString *) override + { m_provider.addGlobPattern(glob); return true; } + + inline void processParent(const QString &child, const QString &parent) override + { m_provider.addParent(child, parent); } + + inline void processAlias(const QString &alias, const QString &name) override + { m_provider.addAlias(alias, name); } + + inline void processMagicMatcher(const QMimeMagicRuleMatcher &matcher) override + { m_provider.addMagicMatcher(matcher); } + +private: + QMimeXMLProvider &m_provider; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE +#endif // MIMETYPEPARSER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmutex_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmutex_p.h new file mode 100644 index 000000000..4e6f522a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmutex_p.h @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Copyright (C) 2012 Olivier Goffart +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMUTEX_P_H +#define QMUTEX_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qmutex.cpp, qmutex_unix.cpp, and qmutex_win.cpp. This header +// file may change from version to version without notice, or even be +// removed. +// +// We mean it. +// + +#include +#include +#include +#include + +#if defined(Q_OS_MAC) +# include +#elif defined(Q_OS_LINUX) && !defined(QT_LINUXBASE) +// use Linux mutexes everywhere except for LSB builds +# define QT_LINUX_FUTEX +#elif defined(Q_OS_UNIX) +# if _POSIX_VERSION-0 >= 200112L || _XOPEN_VERSION-0 >= 600 +# include +# define QT_UNIX_SEMAPHORE +# endif +#endif + +struct timespec; + +QT_BEGIN_NAMESPACE + +class QMutexData +{ +public: + bool recursive; + QMutexData(QMutex::RecursionMode mode = QMutex::NonRecursive) + : recursive(mode == QMutex::Recursive) {} +}; + +#if !defined(QT_LINUX_FUTEX) +class QMutexPrivate : public QMutexData +{ +public: + ~QMutexPrivate(); + QMutexPrivate(); + + bool wait(int timeout = -1); + void wakeUp() Q_DECL_NOTHROW; + + // Control the lifetime of the privates + QAtomicInt refCount; + int id; + + bool ref() { + Q_ASSERT(refCount.load() >= 0); + int c; + do { + c = refCount.load(); + if (c == 0) + return false; + } while (!refCount.testAndSetRelaxed(c, c + 1)); + Q_ASSERT(refCount.load() >= 0); + return true; + } + void deref() { + Q_ASSERT(refCount.load() >= 0); + if (!refCount.deref()) + release(); + Q_ASSERT(refCount.load() >= 0); + } + void release(); + static QMutexPrivate *allocate(); + + QAtomicInt waiters; // Number of threads waiting on this mutex. (may be offset by -BigNumber) + QAtomicInt possiblyUnlocked; /* Boolean indicating that a timed wait timed out. + When it is true, a reference is held. + It is there to avoid a race that happens if unlock happens right + when the mutex is unlocked. + */ + enum { BigNumber = 0x100000 }; //Must be bigger than the possible number of waiters (number of threads) + void derefWaiters(int value) Q_DECL_NOTHROW; + + //platform specific stuff +#if defined(Q_OS_MAC) + semaphore_t mach_semaphore; +#elif defined(QT_UNIX_SEMAPHORE) + sem_t semaphore; +#elif defined(Q_OS_UNIX) + bool wakeup; + pthread_mutex_t mutex; + pthread_cond_t cond; +#elif defined(Q_OS_WIN) + Qt::HANDLE event; +#endif +}; +#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/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmutexpool_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmutexpool_p.h new file mode 100644 index 000000000..58d853b0e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qmutexpool_p.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMUTEXPOOL_P_H +#define QMUTEXPOOL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qatomic.h" +#include "QtCore/qmutex.h" +#include "QtCore/qvarlengtharray.h" + +#ifndef QT_NO_THREAD + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QMutexPool +{ +public: + explicit QMutexPool(QMutex::RecursionMode recursionMode = QMutex::NonRecursive, int size = 131); + ~QMutexPool(); + + inline QMutex *get(const void *address) { + int index = uint(quintptr(address)) % mutexes.count(); + QMutex *m = mutexes[index].load(); + if (m) + return m; + else + return createMutex(index); + } + static QMutexPool *instance(); + static QMutex *globalInstanceGet(const void *address); + +private: + QMutex *createMutex(int index); + QVarLengthArray, 131> mutexes; + QMutex::RecursionMode recursionMode; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_THREAD + +#endif // QMUTEXPOOL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qnoncontiguousbytedevice_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qnoncontiguousbytedevice_p.h new file mode 100644 index 000000000..bb0b53383 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qnoncontiguousbytedevice_p.h @@ -0,0 +1,195 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNONCONTIGUOUSBYTEDEVICE_P_H +#define QNONCONTIGUOUSBYTEDEVICE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include "private/qringbuffer_p.h" + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QNonContiguousByteDevice : public QObject +{ + Q_OBJECT +public: + virtual const char* readPointer(qint64 maximumLength, qint64 &len) = 0; + virtual bool advanceReadPointer(qint64 amount) = 0; + virtual bool atEnd() const = 0; + virtual qint64 pos() const { return -1; } + virtual bool reset() = 0; + virtual qint64 size() const = 0; + + virtual ~QNonContiguousByteDevice(); + +protected: + QNonContiguousByteDevice(); + + +Q_SIGNALS: + void readyRead(); + void readProgress(qint64 current, qint64 total); +}; + +class Q_CORE_EXPORT QNonContiguousByteDeviceFactory +{ +public: + static QNonContiguousByteDevice* create(QIODevice *device); + static QSharedPointer createShared(QIODevice *device); + + static QNonContiguousByteDevice* create(QByteArray *byteArray); + static QSharedPointer createShared(QByteArray *byteArray); + + static QNonContiguousByteDevice* create(QSharedPointer ringBuffer); + static QSharedPointer createShared(QSharedPointer ringBuffer); + + static QIODevice* wrap(QNonContiguousByteDevice* byteDevice); +}; + +// the actual implementations +// + +class QNonContiguousByteDeviceByteArrayImpl : public QNonContiguousByteDevice +{ +public: + QNonContiguousByteDeviceByteArrayImpl(QByteArray *ba); + ~QNonContiguousByteDeviceByteArrayImpl(); + const char* readPointer(qint64 maximumLength, qint64 &len) Q_DECL_OVERRIDE; + bool advanceReadPointer(qint64 amount) Q_DECL_OVERRIDE; + bool atEnd() const Q_DECL_OVERRIDE; + bool reset() Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; + qint64 pos() const Q_DECL_OVERRIDE; +protected: + QByteArray* byteArray; + qint64 currentPosition; +}; + +class QNonContiguousByteDeviceRingBufferImpl : public QNonContiguousByteDevice +{ +public: + QNonContiguousByteDeviceRingBufferImpl(QSharedPointer rb); + ~QNonContiguousByteDeviceRingBufferImpl(); + const char* readPointer(qint64 maximumLength, qint64 &len) Q_DECL_OVERRIDE; + bool advanceReadPointer(qint64 amount) Q_DECL_OVERRIDE; + bool atEnd() const Q_DECL_OVERRIDE; + bool reset() Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; + qint64 pos() const Q_DECL_OVERRIDE; +protected: + QSharedPointer ringBuffer; + qint64 currentPosition; +}; + + +class QNonContiguousByteDeviceIoDeviceImpl : public QNonContiguousByteDevice +{ + Q_OBJECT +public: + QNonContiguousByteDeviceIoDeviceImpl(QIODevice *d); + ~QNonContiguousByteDeviceIoDeviceImpl(); + const char* readPointer(qint64 maximumLength, qint64 &len) Q_DECL_OVERRIDE; + bool advanceReadPointer(qint64 amount) Q_DECL_OVERRIDE; + bool atEnd() const Q_DECL_OVERRIDE; + bool reset() Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; + qint64 pos() const Q_DECL_OVERRIDE; +protected: + QIODevice* device; + QByteArray* currentReadBuffer; + qint64 currentReadBufferSize; + qint64 currentReadBufferAmount; + qint64 currentReadBufferPosition; + qint64 totalAdvancements; + bool eof; + qint64 initialPosition; +}; + +class QNonContiguousByteDeviceBufferImpl : public QNonContiguousByteDevice +{ + Q_OBJECT +public: + QNonContiguousByteDeviceBufferImpl(QBuffer *b); + ~QNonContiguousByteDeviceBufferImpl(); + const char* readPointer(qint64 maximumLength, qint64 &len) Q_DECL_OVERRIDE; + bool advanceReadPointer(qint64 amount) Q_DECL_OVERRIDE; + bool atEnd() const Q_DECL_OVERRIDE; + bool reset() Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; +protected: + QBuffer* buffer; + QByteArray byteArray; + QNonContiguousByteDeviceByteArrayImpl* arrayImpl; +}; + +// ... and the reverse thing +class QByteDeviceWrappingIoDevice : public QIODevice +{ +public: + QByteDeviceWrappingIoDevice (QNonContiguousByteDevice *bd); + ~QByteDeviceWrappingIoDevice (); + virtual bool isSequential () const Q_DECL_OVERRIDE; + virtual bool atEnd () const Q_DECL_OVERRIDE; + virtual bool reset () Q_DECL_OVERRIDE; + virtual qint64 size () const Q_DECL_OVERRIDE; +protected: + virtual qint64 readData ( char * data, qint64 maxSize ) Q_DECL_OVERRIDE; + virtual qint64 writeData ( const char * data, qint64 maxSize ) Q_DECL_OVERRIDE; + + QNonContiguousByteDevice *byteDevice; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qnumeric_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qnumeric_p.h new file mode 100644 index 000000000..229167550 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qnumeric_p.h @@ -0,0 +1,363 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNUMERIC_P_H +#define QNUMERIC_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/private/qglobal_p.h" +#include +#include + +#if defined(Q_CC_MSVC) +# include +#elif defined(Q_CC_INTEL) +# include // for _addcarry_u +#endif + +#if defined(Q_CC_MSVC) +#include +#endif + +#if !defined(Q_CC_MSVC) && (defined(Q_OS_QNX) || defined(Q_CC_INTEL)) +# include +# ifdef isnan +# define QT_MATH_H_DEFINES_MACROS +QT_BEGIN_NAMESPACE +namespace qnumeric_std_wrapper { +// the 'using namespace std' below is cases where the stdlib already put the math.h functions in the std namespace and undefined the macros. +static inline bool math_h_isnan(double d) { using namespace std; return isnan(d); } +static inline bool math_h_isinf(double d) { using namespace std; return isinf(d); } +static inline bool math_h_isfinite(double d) { using namespace std; return isfinite(d); } +static inline bool math_h_isnan(float f) { using namespace std; return isnan(f); } +static inline bool math_h_isinf(float f) { using namespace std; return isinf(f); } +static inline bool math_h_isfinite(float f) { using namespace std; return isfinite(f); } +} +QT_END_NAMESPACE +// These macros from math.h conflict with the real functions in the std namespace. +# undef signbit +# undef isnan +# undef isinf +# undef isfinite +# endif // defined(isnan) +#endif + +QT_BEGIN_NAMESPACE + +namespace qnumeric_std_wrapper { +#if defined(QT_MATH_H_DEFINES_MACROS) +# undef QT_MATH_H_DEFINES_MACROS +static inline bool isnan(double d) { return math_h_isnan(d); } +static inline bool isinf(double d) { return math_h_isinf(d); } +static inline bool isfinite(double d) { return math_h_isfinite(d); } +static inline bool isnan(float f) { return math_h_isnan(f); } +static inline bool isinf(float f) { return math_h_isinf(f); } +static inline bool isfinite(float f) { return math_h_isfinite(f); } +#else +static inline bool isnan(double d) { return std::isnan(d); } +static inline bool isinf(double d) { return std::isinf(d); } +static inline bool isfinite(double d) { return std::isfinite(d); } +static inline bool isnan(float f) { return std::isnan(f); } +static inline bool isinf(float f) { return std::isinf(f); } +static inline bool isfinite(float f) { return std::isfinite(f); } +#endif +} + +Q_DECL_CONSTEXPR static inline double qt_inf() Q_DECL_NOEXCEPT +{ + Q_STATIC_ASSERT_X(std::numeric_limits::has_infinity, + "platform has no definition for infinity for type double"); + return std::numeric_limits::infinity(); +} + +// Signaling NaN +Q_DECL_CONSTEXPR static inline double qt_snan() Q_DECL_NOEXCEPT +{ + Q_STATIC_ASSERT_X(std::numeric_limits::has_signaling_NaN, + "platform has no definition for signaling NaN for type double"); + return std::numeric_limits::signaling_NaN(); +} + +// Quiet NaN +Q_DECL_CONSTEXPR static inline double qt_qnan() Q_DECL_NOEXCEPT +{ + Q_STATIC_ASSERT_X(std::numeric_limits::has_quiet_NaN, + "platform has no definition for quiet NaN for type double"); + return std::numeric_limits::quiet_NaN(); +} + +static inline bool qt_is_inf(double d) +{ + return qnumeric_std_wrapper::isinf(d); +} + +static inline bool qt_is_nan(double d) +{ + return qnumeric_std_wrapper::isnan(d); +} + +static inline bool qt_is_finite(double d) +{ + return qnumeric_std_wrapper::isfinite(d); +} + +static inline bool qt_is_inf(float f) +{ + return qnumeric_std_wrapper::isinf(f); +} + +static inline bool qt_is_nan(float f) +{ + return qnumeric_std_wrapper::isnan(f); +} + +static inline bool qt_is_finite(float f) +{ + return qnumeric_std_wrapper::isfinite(f); +} + +// +// Unsigned overflow math +// +namespace { +template inline typename std::enable_if::value, bool>::type +add_overflow(T v1, T v2, T *r) +{ + // unsigned additions are well-defined + *r = v1 + v2; + return v1 > T(v1 + v2); +} + +template inline typename std::enable_if::value, bool>::type +mul_overflow(T v1, T v2, T *r) +{ + // use the next biggest type + // Note: for 64-bit systems where __int128 isn't supported, this will cause an error. + // A fallback is present below. + typedef typename QIntegerForSize::Unsigned Larger; + Larger lr = Larger(v1) * Larger(v2); + *r = T(lr); + return lr > std::numeric_limits::max(); +} + +#if defined(__SIZEOF_INT128__) +# define HAVE_MUL64_OVERFLOW +#endif + +// GCC 5 and Clang have builtins to detect overflows +#if (defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 500) || QT_HAS_BUILTIN(__builtin_uadd_overflow) +template <> inline bool add_overflow(unsigned v1, unsigned v2, unsigned *r) +{ return __builtin_uadd_overflow(v1, v2, r); } +#endif +#if (defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 500) || QT_HAS_BUILTIN(__builtin_uaddl_overflow) +template <> inline bool add_overflow(unsigned long v1, unsigned long v2, unsigned long *r) +{ return __builtin_uaddl_overflow(v1, v2, r); } +#endif +#if (defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 500) || QT_HAS_BUILTIN(__builtin_uaddll_overflow) +template <> inline bool add_overflow(unsigned long long v1, unsigned long long v2, unsigned long long *r) +{ return __builtin_uaddll_overflow(v1, v2, r); } +#endif + +#if (defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 500) || QT_HAS_BUILTIN(__builtin_umul_overflow) +template <> inline bool mul_overflow(unsigned v1, unsigned v2, unsigned *r) +{ return __builtin_umul_overflow(v1, v2, r); } +#endif +#if (defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 500) || QT_HAS_BUILTIN(__builtin_umull_overflow) +template <> inline bool mul_overflow(unsigned long v1, unsigned long v2, unsigned long *r) +{ return __builtin_umull_overflow(v1, v2, r); } +#endif +#if (defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 500) || QT_HAS_BUILTIN(__builtin_umulll_overflow) +template <> inline bool mul_overflow(unsigned long long v1, unsigned long long v2, unsigned long long *r) +{ return __builtin_umulll_overflow(v1, v2, r); } +# define HAVE_MUL64_OVERFLOW +#endif + +#if ((defined(Q_CC_MSVC) && _MSC_VER >= 1800) || defined(Q_CC_INTEL)) && defined(Q_PROCESSOR_X86) && !QT_HAS_BUILTIN(__builtin_uadd_overflow) +template <> inline bool add_overflow(unsigned v1, unsigned v2, unsigned *r) +{ return _addcarry_u32(0, v1, v2, r); } +# ifdef Q_CC_MSVC // longs are 32-bit +template <> inline bool add_overflow(unsigned long v1, unsigned long v2, unsigned long *r) +{ return _addcarry_u32(0, v1, v2, reinterpret_cast(r)); } +# endif +#endif +#if ((defined(Q_CC_MSVC) && _MSC_VER >= 1800) || defined(Q_CC_INTEL)) && defined(Q_PROCESSOR_X86_64) && !QT_HAS_BUILTIN(__builtin_uadd_overflow) +template <> inline bool add_overflow(quint64 v1, quint64 v2, quint64 *r) +{ return _addcarry_u64(0, v1, v2, reinterpret_cast(r)); } +# ifndef Q_CC_MSVC // longs are 64-bit +template <> inline bool add_overflow(unsigned long v1, unsigned long v2, unsigned long *r) +{ return _addcarry_u64(0, v1, v2, reinterpret_cast(r)); } +# endif +#endif + +#if defined(Q_CC_MSVC) && (defined(Q_PROCESSOR_X86_64) || defined(Q_PROCESSOR_IA64)) && !QT_HAS_BUILTIN(__builtin_uadd_overflow) +#pragma intrinsic(_umul128) +template <> inline bool mul_overflow(quint64 v1, quint64 v2, quint64 *r) +{ + // use 128-bit multiplication with the _umul128 intrinsic + // https://msdn.microsoft.com/en-us/library/3dayytw9.aspx + quint64 high; + *r = _umul128(v1, v2, &high); + return high; +} +# define HAVE_MUL64_OVERFLOW +#endif + +#if !defined(HAVE_MUL64_OVERFLOW) && defined(__LP64__) +// no 128-bit multiplication, we need to figure out with a slow division +template <> inline bool mul_overflow(quint64 v1, quint64 v2, quint64 *r) +{ + if (v2 && v1 > std::numeric_limits::max() / v2) + return true; + *r = v1 * v2; + return false; +} +template <> inline bool mul_overflow(unsigned long v1, unsigned long v2, unsigned long *r) +{ + return mul_overflow(v1, v2, reinterpret_cast(r)); +} +#else +# undef HAVE_MUL64_OVERFLOW +#endif + +// +// Signed overflow math +// +// In C++, signed overflow math is Undefined Behavior. However, many CPUs do implement some way to +// check for overflow. Some compilers expose intrinsics to use this functionality. If the no +// intrinsic is exposed, overflow checking can be done by widening the result type and "manually" +// checking for overflow. Or, alternatively, by using inline assembly to use the CPU features. +// +// Only int overflow checking is implemented, because it's the only one used. +#if (defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 500) || QT_HAS_BUILTIN(__builtin_sadd_overflow) +inline bool add_overflow(int v1, int v2, int *r) +{ return __builtin_sadd_overflow(v1, v2, r); } +#elif defined(Q_CC_GNU) && defined(Q_PROCESSOR_X86) +inline bool add_overflow(int v1, int v2, int *r) +{ + quint8 overflow = 0; + int res = v1; + + asm ("addl %2, %1\n" + "seto %0" + : "=q" (overflow), "=r" (res) + : "r" (v2), "1" (res) + : "cc" + ); + *r = res; + return overflow; +} +#else +inline bool add_overflow(int v1, int v2, int *r) +{ + qint64 t = qint64(v1) + v2; + *r = static_cast(t); + return t > std::numeric_limits::max() || t < std::numeric_limits::min(); +} +#endif + +#if (defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 500) || QT_HAS_BUILTIN(__builtin_ssub_overflow) +inline bool sub_overflow(int v1, int v2, int *r) +{ return __builtin_ssub_overflow(v1, v2, r); } +#elif defined(Q_CC_GNU) && defined(Q_PROCESSOR_X86) +inline bool sub_overflow(int v1, int v2, int *r) +{ + quint8 overflow = 0; + int res = v1; + + asm ("subl %2, %1\n" + "seto %0" + : "=q" (overflow), "=r" (res) + : "r" (v2), "1" (res) + : "cc" + ); + *r = res; + return overflow; +} +#else +inline bool sub_overflow(int v1, int v2, int *r) +{ + qint64 t = qint64(v1) - v2; + *r = static_cast(t); + return t > std::numeric_limits::max() || t < std::numeric_limits::min(); +} +#endif + +#if (defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 500) || QT_HAS_BUILTIN(__builtin_smul_overflow) +inline bool mul_overflow(int v1, int v2, int *r) +{ return __builtin_smul_overflow(v1, v2, r); } +#elif defined(Q_CC_GNU) && defined(Q_PROCESSOR_X86) +inline bool mul_overflow(int v1, int v2, int *r) +{ + quint8 overflow = 0; + int res = v1; + + asm ("imul %2, %1\n" + "seto %0" + : "=q" (overflow), "=r" (res) + : "r" (v2), "1" (res) + : "cc" + ); + *r = res; + return overflow; +} +#else +inline bool mul_overflow(int v1, int v2, int *r) +{ + qint64 t = qint64(v1) * v2; + *r = static_cast(t); + return t > std::numeric_limits::max() || t < std::numeric_limits::min(); +} +#endif + +} + +QT_END_NAMESPACE + +#endif // QNUMERIC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qobject_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qobject_p.h new file mode 100644 index 000000000..7b9253ac6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qobject_p.h @@ -0,0 +1,443 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2013 Olivier Goffart +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOBJECT_P_H +#define QOBJECT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qobject.h" +#include "QtCore/qpointer.h" +#include "QtCore/qsharedpointer.h" +#include "QtCore/qcoreevent.h" +#include "QtCore/qlist.h" +#include "QtCore/qvector.h" +#include "QtCore/qvariant.h" +#include "QtCore/qreadwritelock.h" + +QT_BEGIN_NAMESPACE + +class QVariant; +class QThreadData; +class QObjectConnectionListVector; +namespace QtSharedPointer { struct ExternalRefCountData; } + +/* for Qt Test */ +struct QSignalSpyCallbackSet +{ + typedef void (*BeginCallback)(QObject *caller, int signal_or_method_index, void **argv); + typedef void (*EndCallback)(QObject *caller, int signal_or_method_index); + BeginCallback signal_begin_callback, + slot_begin_callback; + EndCallback signal_end_callback, + slot_end_callback; +}; +void Q_CORE_EXPORT qt_register_signal_spy_callbacks(const QSignalSpyCallbackSet &callback_set); + +extern QSignalSpyCallbackSet Q_CORE_EXPORT qt_signal_spy_callback_set; + +enum { QObjectPrivateVersion = QT_VERSION }; + +class Q_CORE_EXPORT QAbstractDeclarativeData +{ +public: + static void (*destroyed)(QAbstractDeclarativeData *, QObject *); + static void (*destroyed_qml1)(QAbstractDeclarativeData *, QObject *); + static void (*parentChanged)(QAbstractDeclarativeData *, QObject *, QObject *); + static void (*signalEmitted)(QAbstractDeclarativeData *, QObject *, int, void **); + static int (*receivers)(QAbstractDeclarativeData *, const QObject *, int); + static bool (*isSignalConnected)(QAbstractDeclarativeData *, const QObject *, int); + static void (*setWidgetParent)(QObject *, QObject *); // Used by the QML engine to specify parents for widgets. Set by QtWidgets. +}; + +// This is an implementation of QAbstractDeclarativeData that is identical with +// the implementation in QtDeclarative and QtQml for the first bit +struct QAbstractDeclarativeDataImpl : public QAbstractDeclarativeData +{ + quint32 ownedByQml1:1; + quint32 unused: 31; +}; + +class Q_CORE_EXPORT QObjectPrivate : public QObjectData +{ + Q_DECLARE_PUBLIC(QObject) + +public: + struct ExtraData + { + ExtraData() {} + #ifndef QT_NO_USERDATA + QVector userData; + #endif + QList propertyNames; + QVector propertyValues; + QVector runningTimers; + QList > eventFilters; + QString objectName; + }; + + typedef void (*StaticMetaCallFunction)(QObject *, QMetaObject::Call, int, void **); + struct Connection + { + QObject *sender; + QObject *receiver; + union { + StaticMetaCallFunction callFunction; + QtPrivate::QSlotObjectBase *slotObj; + }; + // The next pointer for the singly-linked ConnectionList + Connection *nextConnectionList; + //senders linked list + Connection *next; + Connection **prev; + QAtomicPointer argumentTypes; + QAtomicInt ref_; + ushort method_offset; + ushort method_relative; + uint signal_index : 27; // In signal range (see QObjectPrivate::signalIndex()) + ushort connectionType : 3; // 0 == auto, 1 == direct, 2 == queued, 4 == blocking + ushort isSlotObject : 1; + ushort ownArgumentTypes : 1; + Connection() : nextConnectionList(0), ref_(2), ownArgumentTypes(true) { + //ref_ is 2 for the use in the internal lists, and for the use in QMetaObject::Connection + } + ~Connection(); + int method() const { Q_ASSERT(!isSlotObject); return method_offset + method_relative; } + void ref() { ref_.ref(); } + void deref() { + if (!ref_.deref()) { + Q_ASSERT(!receiver); + delete this; + } + } + }; + // ConnectionList is a singly-linked list + struct ConnectionList { + ConnectionList() : first(0), last(0) {} + Connection *first; + Connection *last; + }; + + struct Sender + { + QObject *sender; + int signal; + int ref; + }; + + + QObjectPrivate(int version = QObjectPrivateVersion); + virtual ~QObjectPrivate(); + void deleteChildren(); + + void setParent_helper(QObject *); + void moveToThread_helper(); + void setThreadData_helper(QThreadData *currentData, QThreadData *targetData); + void _q_reregisterTimers(void *pointer); + + bool isSender(const QObject *receiver, const char *signal) const; + QObjectList receiverList(const char *signal) const; + QObjectList senderList() const; + + void addConnection(int signal, Connection *c); + void cleanConnectionLists(); + + static inline Sender *setCurrentSender(QObject *receiver, + Sender *sender); + static inline void resetCurrentSender(QObject *receiver, + Sender *currentSender, + Sender *previousSender); + + static QObjectPrivate *get(QObject *o) { + return o->d_func(); + } + static const QObjectPrivate *get(const QObject *o) { return o->d_func(); } + + int signalIndex(const char *signalName, const QMetaObject **meta = 0) const; + inline bool isSignalConnected(uint signalIdx, bool checkDeclarative = true) const; + inline bool isDeclarativeSignalConnected(uint signalIdx) const; + + // To allow abitrary objects to call connectNotify()/disconnectNotify() without making + // the API public in QObject. This is used by QQmlNotifierEndpoint. + inline void connectNotify(const QMetaMethod &signal); + inline void disconnectNotify(const QMetaMethod &signal); + + template + static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, + const typename QtPrivate::FunctionPointer::Object *receiverPrivate, Func2 slot, + Qt::ConnectionType type = Qt::AutoConnection); + + template + static inline bool disconnect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, + const typename QtPrivate::FunctionPointer::Object *receiverPrivate, Func2 slot); + + static QMetaObject::Connection connectImpl(const QObject *sender, int signal_index, + const QObject *receiver, void **slot, + QtPrivate::QSlotObjectBase *slotObj, Qt::ConnectionType type, + const int *types, const QMetaObject *senderMetaObject); + static QMetaObject::Connection connect(const QObject *sender, int signal_index, QtPrivate::QSlotObjectBase *slotObj, Qt::ConnectionType type); + static bool disconnect(const QObject *sender, int signal_index, void **slot); +public: + ExtraData *extraData; // extra data set by the user + QThreadData *threadData; // id of the thread that owns the object + + QObjectConnectionListVector *connectionLists; + + Connection *senders; // linked list of connections connected to this object + Sender *currentSender; // object currently activating the object + mutable quint32 connectedSignals[2]; + + union { + QObject *currentChildBeingDeleted; + QAbstractDeclarativeData *declarativeData; //extra data used by the declarative module + }; + + // these objects are all used to indicate that a QObject was deleted + // plus QPointer, which keeps a separate list + QAtomicPointer sharedRefcount; +}; + + +/*! \internal + + Returns \c true if the signal with index \a signal_index from object \a sender is connected. + Signals with indices above a certain range are always considered connected (see connectedSignals + in QObjectPrivate). + + \a signal_index must be the index returned by QObjectPrivate::signalIndex; +*/ +inline bool QObjectPrivate::isSignalConnected(uint signal_index, bool checkDeclarative) const +{ + return signal_index >= sizeof(connectedSignals) * 8 + || (connectedSignals[signal_index >> 5] & (1 << (signal_index & 0x1f)) + || (checkDeclarative && isDeclarativeSignalConnected(signal_index))); +} + +inline bool QObjectPrivate::isDeclarativeSignalConnected(uint signal_index) const +{ + return declarativeData && QAbstractDeclarativeData::isSignalConnected + && QAbstractDeclarativeData::isSignalConnected(declarativeData, q_func(), signal_index); +} + +inline QObjectPrivate::Sender *QObjectPrivate::setCurrentSender(QObject *receiver, + Sender *sender) +{ + Sender *previousSender = receiver->d_func()->currentSender; + receiver->d_func()->currentSender = sender; + return previousSender; +} + +inline void QObjectPrivate::resetCurrentSender(QObject *receiver, + Sender *currentSender, + Sender *previousSender) +{ + // ref is set to zero when this object is deleted during the metacall + if (currentSender->ref == 1) + receiver->d_func()->currentSender = previousSender; + // if we've recursed, we need to tell the caller about the objects deletion + if (previousSender) + previousSender->ref = currentSender->ref; +} + +inline void QObjectPrivate::connectNotify(const QMetaMethod &signal) +{ + q_ptr->connectNotify(signal); +} + +inline void QObjectPrivate::disconnectNotify(const QMetaMethod &signal) +{ + q_ptr->disconnectNotify(signal); +} + +namespace QtPrivate { +template class QPrivateSlotObject : public QSlotObjectBase +{ + typedef QtPrivate::FunctionPointer FuncType; + Func function; + static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) + { + switch (which) { + case Destroy: + delete static_cast(this_); + break; + case Call: + FuncType::template call(static_cast(this_)->function, + static_cast(QObjectPrivate::get(r)), a); + break; + case Compare: + *ret = *reinterpret_cast(a) == static_cast(this_)->function; + break; + case NumOperations: ; + } + } +public: + explicit QPrivateSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {} +}; +} //namespace QtPrivate + +template +inline QMetaObject::Connection QObjectPrivate::connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, + const typename QtPrivate::FunctionPointer::Object *receiverPrivate, Func2 slot, + Qt::ConnectionType type) +{ + typedef QtPrivate::FunctionPointer SignalType; + typedef QtPrivate::FunctionPointer SlotType; + Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro::Value, + "No Q_OBJECT in the class with the signal"); + + //compilation error if the arguments does not match. + Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount), + "The slot requires more arguments than the signal provides."); + Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments::value), + "Signal and slot arguments are not compatible."); + Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible::value), + "Return type of the slot is not compatible with the return type of the signal."); + + const int *types = 0; + if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) + types = QtPrivate::ConnectionTypes::types(); + + return QObject::connectImpl(sender, reinterpret_cast(&signal), + receiverPrivate->q_ptr, reinterpret_cast(&slot), + new QtPrivate::QPrivateSlotObject::Value, + typename SignalType::ReturnType>(slot), + type, types, &SignalType::Object::staticMetaObject); +} + +template +bool QObjectPrivate::disconnect(const typename QtPrivate::FunctionPointer< Func1 >::Object* sender, Func1 signal, + const typename QtPrivate::FunctionPointer< Func2 >::Object* receiverPrivate, Func2 slot) +{ + typedef QtPrivate::FunctionPointer SignalType; + typedef QtPrivate::FunctionPointer SlotType; + Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro::Value, + "No Q_OBJECT in the class with the signal"); + //compilation error if the arguments does not match. + Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments::value), + "Signal and slot arguments are not compatible."); + return QObject::disconnectImpl(sender, reinterpret_cast(&signal), + receiverPrivate->q_ptr, reinterpret_cast(&slot), + &SignalType::Object::staticMetaObject); +} + +Q_DECLARE_TYPEINFO(QObjectPrivate::Connection, Q_MOVABLE_TYPE); +Q_DECLARE_TYPEINFO(QObjectPrivate::Sender, Q_MOVABLE_TYPE); + +class QSemaphore; +class Q_CORE_EXPORT QMetaCallEvent : public QEvent +{ +public: + QMetaCallEvent(ushort method_offset, ushort method_relative, QObjectPrivate::StaticMetaCallFunction callFunction , const QObject *sender, int signalId, + int nargs = 0, int *types = 0, void **args = 0, QSemaphore *semaphore = 0); + /*! \internal + \a signalId is in the signal index range (see QObjectPrivate::signalIndex()). + */ + QMetaCallEvent(QtPrivate::QSlotObjectBase *slotObj, const QObject *sender, int signalId, + int nargs = 0, int *types = 0, void **args = 0, QSemaphore *semaphore = 0); + + ~QMetaCallEvent(); + + inline int id() const { return method_offset_ + method_relative_; } + inline const QObject *sender() const { return sender_; } + inline int signalId() const { return signalId_; } + inline void **args() const { return args_; } + + virtual void placeMetaCall(QObject *object); + +private: + QtPrivate::QSlotObjectBase *slotObj_; + const QObject *sender_; + int signalId_; + int nargs_; + int *types_; + void **args_; + QSemaphore *semaphore_; + QObjectPrivate::StaticMetaCallFunction callFunction_; + ushort method_offset_; + ushort method_relative_; +}; + +class QBoolBlocker +{ + Q_DISABLE_COPY(QBoolBlocker) +public: + explicit inline QBoolBlocker(bool &b, bool value=true):block(b), reset(b){block = value;} + inline ~QBoolBlocker(){block = reset; } +private: + bool █ + bool reset; +}; + +void Q_CORE_EXPORT qDeleteInEventHandler(QObject *o); + +struct QAbstractDynamicMetaObject; +struct Q_CORE_EXPORT QDynamicMetaObjectData +{ + virtual ~QDynamicMetaObjectData(); + virtual void objectDestroyed(QObject *) { delete this; } + + virtual QAbstractDynamicMetaObject *toDynamicMetaObject(QObject *) = 0; + virtual int metaCall(QObject *, QMetaObject::Call, int _id, void **) = 0; +}; + +struct Q_CORE_EXPORT QAbstractDynamicMetaObject : public QDynamicMetaObjectData, public QMetaObject +{ + ~QAbstractDynamicMetaObject(); + + virtual QAbstractDynamicMetaObject *toDynamicMetaObject(QObject *) Q_DECL_OVERRIDE { return this; } + virtual int createProperty(const char *, const char *) { return -1; } + virtual int metaCall(QObject *, QMetaObject::Call c, int _id, void **a) Q_DECL_OVERRIDE + { return metaCall(c, _id, a); } + virtual int metaCall(QMetaObject::Call, int _id, void **) { return _id; } // Compat overload +}; + +QT_END_NAMESPACE + +#endif // QOBJECT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qoperatingsystemversion_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qoperatingsystemversion_p.h new file mode 100644 index 000000000..77f19d27c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qoperatingsystemversion_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPERATINGSYSTEMVERSION_P_H +#define QOPERATINGSYSTEMVERSION_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 "qoperatingsystemversion.h" + +QT_BEGIN_NAMESPACE + +static inline QOperatingSystemVersion::OSType currentType() +{ +#if defined(Q_OS_WIN) + return QOperatingSystemVersion::Windows; +#elif defined(Q_OS_MACOS) + return QOperatingSystemVersion::MacOS; +#elif defined(Q_OS_IOS) + return QOperatingSystemVersion::IOS; +#elif defined(Q_OS_TVOS) + return QOperatingSystemVersion::TvOS; +#elif defined(Q_OS_WATCHOS) + return QOperatingSystemVersion::WatchOS; +#elif defined(Q_OS_ANDROID) + return QOperatingSystemVersion::Android; +#else + return QOperatingSystemVersion::Unknown; +#endif +} + +QT_END_NAMESPACE + +#endif // QOPERATINGSYSTEMVERSION_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qoperatingsystemversion_win_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qoperatingsystemversion_win_p.h new file mode 100644 index 000000000..446bd286f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qoperatingsystemversion_win_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPERATINGSYSTEMVERSION_WIN_P_H +#define QOPERATINGSYSTEMVERSION_WIN_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +OSVERSIONINFOEX qWindowsVersionInfo(); + +QT_END_NAMESPACE + +#endif // QOPERATINGSYSTEMVERSION_WIN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qorderedmutexlocker_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qorderedmutexlocker_p.h new file mode 100644 index 000000000..ded102d32 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qorderedmutexlocker_p.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QORDEREDMUTEXLOCKER_P_H +#define QORDEREDMUTEXLOCKER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +/* + Locks 2 mutexes in a defined order, avoiding a recursive lock if + we're trying to lock the same mutex twice. +*/ +class QOrderedMutexLocker +{ +public: + QOrderedMutexLocker(QMutex *m1, QMutex *m2) + : mtx1((m1 == m2) ? m1 : (std::less()(m1, m2) ? m1 : m2)), + mtx2((m1 == m2) ? 0 : (std::less()(m1, m2) ? m2 : m1)), + locked(false) + { + relock(); + } + ~QOrderedMutexLocker() + { + unlock(); + } + + void relock() + { + if (!locked) { + if (mtx1) mtx1->lock(); + if (mtx2) mtx2->lock(); + locked = true; + } + } + + void unlock() + { + if (locked) { + if (mtx2) mtx2->unlock(); + if (mtx1) mtx1->unlock(); + locked = false; + } + } + + static bool relock(QMutex *mtx1, QMutex *mtx2) + { + // mtx1 is already locked, mtx2 not... do we need to unlock and relock? + if (mtx1 == mtx2) + return false; + if (std::less()(mtx1, mtx2)) { + mtx2->lock(); + return true; + } + if (!mtx2->tryLock()) { + mtx1->unlock(); + mtx2->lock(); + mtx1->lock(); + } + return true; + } + +private: + QMutex *mtx1, *mtx2; + bool locked; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qparallelanimationgroup_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qparallelanimationgroup_p.h new file mode 100644 index 000000000..069ba8e51 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qparallelanimationgroup_p.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPARALLELANIMATIONGROUP_P_H +#define QPARALLELANIMATIONGROUP_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 "qparallelanimationgroup.h" +#include "private/qanimationgroup_p.h" +#include + +#ifndef QT_NO_ANIMATION + +QT_BEGIN_NAMESPACE + +class QParallelAnimationGroupPrivate : public QAnimationGroupPrivate +{ + Q_DECLARE_PUBLIC(QParallelAnimationGroup) +public: + QParallelAnimationGroupPrivate() + : lastLoop(0), lastCurrentTime(0) + { + } + + QHash uncontrolledFinishTime; + int lastLoop; + int lastCurrentTime; + + bool shouldAnimationStart(QAbstractAnimation *animation, bool startIfAtEnd) const; + void applyGroupState(QAbstractAnimation *animation); + bool isUncontrolledAnimationFinished(QAbstractAnimation *anim) const; + void connectUncontrolledAnimations(); + void disconnectUncontrolledAnimations(); + + void animationRemoved(int index, QAbstractAnimation *) Q_DECL_OVERRIDE; + + // private slot + void _q_uncontrolledAnimationFinished(); +}; + +QT_END_NAMESPACE + +#endif //QT_NO_ANIMATION + +#endif //QPARALLELANIMATIONGROUP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qpodlist_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qpodlist_p.h new file mode 100644 index 000000000..95990e0bb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qpodlist_p.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPODLIST_P_H +#define QPODLIST_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + + +template +class QPodList : public QVarLengthArray +{ + using QVarLengthArray::s; + using QVarLengthArray::a; + using QVarLengthArray::ptr; + using QVarLengthArray::realloc; +public: + inline explicit QPodList(int size = 0) + : QVarLengthArray(size) + {} + + inline void insert(int idx, const T &t) + { + const int sz = s++; + if (s == a) + realloc(s, s << 1); + ::memmove(ptr + idx + 1, ptr + idx, (sz - idx) * sizeof(T)); + ptr[idx] = t; + } + + inline void removeAll(const T &t) + { + int i = 0; + for (int j = 0; j < s; ++j) { + if (ptr[j] != t) + ptr[i++] = ptr[j]; + } + s = i; + } + + inline void removeAt(int idx) + { + Q_ASSERT(idx >= 0 && idx < s); + ::memmove(ptr + idx, ptr + idx + 1, (s - idx - 1) * sizeof(T)); + --s; + } + + inline T takeFirst() + { + Q_ASSERT(s > 0); + T tmp = ptr[0]; + removeAt(0); + return tmp; + } +}; + +QT_END_NAMESPACE + +#endif // QPODLIST_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qpoll_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qpoll_p.h new file mode 100644 index 000000000..cb6ad82ae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qpoll_p.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPOLL_P_H +#define QPOLL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt code on Unix. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +#ifdef QT_NO_NATIVE_POLL + +#include +#include + +struct pollfd { + int fd; + short events, revents; +}; + +typedef unsigned long int nfds_t; + +#define POLLIN 0x001 +#define POLLPRI 0x002 +#define POLLOUT 0x004 +#define POLLERR 0x008 +#define POLLHUP 0x010 +#define POLLNVAL 0x020 +#define POLLRDNORM 0x040 +#define POLLRDBAND 0x080 +#define POLLWRNORM 0x100 +#define POLLWRBAND 0x200 + +#endif // QT_NO_NATIVE_POLL + +QT_END_NAMESPACE + +#endif // QPOLL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsattribute_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsattribute_p.h new file mode 100644 index 000000000..035756e00 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsattribute_p.h @@ -0,0 +1,139 @@ +/**************************************************************************** + ** + ** Copyright (C) 2013 BlackBerry Limited. All rights reserved. + ** Contact: https://www.qt.io/licensing/ + ** + ** 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 The Qt Company. For licensing terms + ** and conditions see https://www.qt.io/terms-conditions. For further + ** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU Lesser General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU Lesser + ** General Public License version 3 as published by the Free Software + ** Foundation and appearing in the file LICENSE.LGPL3 included in the + ** packaging of this file. Please review the following information to + ** ensure the GNU Lesser General Public License version 3 requirements + ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU + ** General Public License version 2.0 or (at your option) the GNU General + ** Public license version 3 or any later version approved by the KDE Free + ** Qt Foundation. The licenses are as published by the Free Software + ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 + ** included in the packaging of this file. Please review the following + ** information to ensure the GNU General Public License requirements will + ** be met: https://www.gnu.org/licenses/gpl-2.0.html and + ** https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ + +#ifndef QPPSATTRIBUTE_P_H +#define QPPSATTRIBUTE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QPpsAttributePrivate; +class QPpsAttribute; + +typedef QList QPpsAttributeList; +typedef QMap QPpsAttributeMap; + +class Q_CORE_EXPORT QPpsAttribute +{ +public: + + enum Type { + None = 0, + Number = 1, + Bool = 2, + String = 3, + Array = 4, + Object = 5 + }; + + enum Flag { + Incomplete = 0x01, + Deleted = 0x02, + Created = 0x04, + Truncated = 0x08, + Purged = 0x10 + }; + Q_DECLARE_FLAGS(Flags, Flag) + + QPpsAttribute(); + QPpsAttribute(const QPpsAttribute &other); + ~QPpsAttribute(); + + QPpsAttribute &operator=(const QPpsAttribute &other); + bool operator==(const QPpsAttribute &other) const; + bool operator!=(const QPpsAttribute &other) const; + +#ifdef Q_COMPILER_RVALUE_REFS + QPpsAttribute(QPpsAttribute &&other); + QPpsAttribute &operator=(QPpsAttribute &&other); +#endif + + bool isValid() const; + Type type() const; + QPpsAttribute::Flags flags() const; + + bool isNumber() const; + bool isBool() const; + bool isString() const; + bool isArray() const; + bool isObject() const; + + double toDouble() const; + qlonglong toLongLong() const; + int toInt() const; + bool toBool() const; + QString toString() const; + QPpsAttributeList toList() const; + QPpsAttributeMap toMap() const; + QVariant toVariant() const; + +private: + QSharedDataPointer d; + friend class QPpsAttributePrivate; +}; + +inline bool QPpsAttribute::operator!=(const QPpsAttribute &other) const +{ + return !(*this == other); +} + +Q_CORE_EXPORT QDebug operator<<(QDebug dbg, const QPpsAttribute &attribute); + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QPpsAttributeList) +Q_DECLARE_METATYPE(QPpsAttributeMap) + +#endif // QPPSATTRIBUTE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsattributeprivate_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsattributeprivate_p.h new file mode 100644 index 000000000..6166447ef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsattributeprivate_p.h @@ -0,0 +1,89 @@ +/**************************************************************************** + ** + ** Copyright (C) 2013 BlackBerry Limited. All rights reserved. + ** Contact: https://www.qt.io/licensing/ + ** + ** 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 The Qt Company. For licensing terms + ** and conditions see https://www.qt.io/terms-conditions. For further + ** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU Lesser General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU Lesser + ** General Public License version 3 as published by the Free Software + ** Foundation and appearing in the file LICENSE.LGPL3 included in the + ** packaging of this file. Please review the following information to + ** ensure the GNU Lesser General Public License version 3 requirements + ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU + ** General Public License version 2.0 or (at your option) the GNU General + ** Public license version 3 or any later version approved by the KDE Free + ** Qt Foundation. The licenses are as published by the Free Software + ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 + ** included in the packaging of this file. Please review the following + ** information to ensure the GNU General Public License requirements will + ** be met: https://www.gnu.org/licenses/gpl-2.0.html and + ** https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ + +#ifndef QPPSATTRIBUTEPRIVATE_P_H +#define QPPSATTRIBUTEPRIVATE_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 "qppsattribute_p.h" + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QPpsAttributePrivate : public QSharedData +{ +public: + QPpsAttributePrivate(); + + static QPpsAttribute createPpsAttribute(double value, QPpsAttribute::Flags flags); + static QPpsAttribute createPpsAttribute(long long value, QPpsAttribute::Flags flags); + static QPpsAttribute createPpsAttribute(int value, QPpsAttribute::Flags flags); + static QPpsAttribute createPpsAttribute(bool value, QPpsAttribute::Flags flags); + static QPpsAttribute createPpsAttribute(const QString &value, QPpsAttribute::Flags flags); + static QPpsAttribute createPpsAttribute(const QPpsAttributeList &value, + QPpsAttribute::Flags flags); + static QPpsAttribute createPpsAttribute(const QPpsAttributeMap &value, + QPpsAttribute::Flags flags); + +private: + friend class QPpsAttribute; + + QVariant data; + QPpsAttribute::Type type; + QPpsAttribute::Flags flags; +}; + +QT_END_NAMESPACE + +#endif // QPPSATTRIBUTEPRIVATE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsobject_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsobject_p.h new file mode 100644 index 000000000..c7b99c8e4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsobject_p.h @@ -0,0 +1,127 @@ +/**************************************************************************** + ** + ** Copyright (C) 2013 BlackBerry Limited. All rights reserved. + ** Contact: https://www.qt.io/licensing/ + ** + ** 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 The Qt Company. For licensing terms + ** and conditions see https://www.qt.io/terms-conditions. For further + ** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU Lesser General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU Lesser + ** General Public License version 3 as published by the Free Software + ** Foundation and appearing in the file LICENSE.LGPL3 included in the + ** packaging of this file. Please review the following information to + ** ensure the GNU Lesser General Public License version 3 requirements + ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU + ** General Public License version 2.0 or (at your option) the GNU General + ** Public license version 3 or any later version approved by the KDE Free + ** Qt Foundation. The licenses are as published by the Free Software + ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 + ** included in the packaging of this file. Please review the following + ** information to ensure the GNU General Public License requirements will + ** be met: https://www.gnu.org/licenses/gpl-2.0.html and + ** https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ + +#ifndef QPPSOBJECT_P_H +#define QPPSOBJECT_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 "qppsattribute_p.h" + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QPpsObjectPrivate; + +class Q_CORE_EXPORT QPpsObject : public QObject +{ + Q_OBJECT + +public: + enum OpenMode { + Publish = 1, + Subscribe = 2, + PublishSubscribe = Publish | Subscribe, + Create = 4, + DeleteContents = 8 + }; + Q_DECLARE_FLAGS(OpenModes, OpenMode) + + explicit QPpsObject(const QString &path, QObject *parent = 0); + virtual ~QPpsObject(); + + int error() const; + QString errorString() const; + + bool isReadyReadEnabled() const; + bool isBlocking() const; + bool setBlocking(bool enable); + bool isOpen() const; + + bool open(QPpsObject::OpenModes mode = QPpsObject::PublishSubscribe); + bool close(); + bool remove(); + + QByteArray read(bool *ok = 0); + bool write(const QByteArray &byteArray); + + int writeMessage(const QString &msg, const QVariantMap &dat); + int writeMessage(const QString &msg, const QString &id, const QVariantMap &dat); + + static QVariantMap decode(const QByteArray &rawData, bool *ok = 0); + static QPpsAttributeMap decodeWithFlags(const QByteArray &rawData, bool *ok = 0); + static QPpsAttributeMap decodeWithFlags(const QByteArray &rawData, + QPpsAttribute *objectAttribute, bool *ok = 0); + + static QByteArray encode(const QVariantMap &ppsData, bool *ok = 0); + static QByteArray encodeMessage(const QString &msg, const QVariantMap &dat, bool *ok = 0); + static QByteArray encodeMessage(const QString &msg, const QString &id, const QVariantMap &dat, + bool *ok = 0); + + static int sendMessage(const QString &path, const QString &message); + static int sendMessage(const QString &path, const QVariantMap &message); + static int sendMessage(const QString &path, const QString &msg, const QVariantMap &dat); + static int sendMessage(const QString &path, const QByteArray &ppsData); + +public Q_SLOTS: + void setReadyReadEnabled(bool enable); + +Q_SIGNALS: + void readyRead(); + +private: + Q_DECLARE_PRIVATE(QPpsObject) + Q_DISABLE_COPY(QPpsObject) +}; + +QT_END_NAMESPACE + +#endif // QPPSOBJECT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsobjectprivate_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsobjectprivate_p.h new file mode 100644 index 000000000..dae44e360 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qppsobjectprivate_p.h @@ -0,0 +1,128 @@ +/**************************************************************************** + ** + ** Copyright (C) 2013 BlackBerry Limited. All rights reserved. + ** Contact: https://www.qt.io/licensing/ + ** + ** 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 The Qt Company. For licensing terms + ** and conditions see https://www.qt.io/terms-conditions. For further + ** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU Lesser General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU Lesser + ** General Public License version 3 as published by the Free Software + ** Foundation and appearing in the file LICENSE.LGPL3 included in the + ** packaging of this file. Please review the following information to + ** ensure the GNU Lesser General Public License version 3 requirements + ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU + ** General Public License version 2.0 or (at your option) the GNU General + ** Public license version 3 or any later version approved by the KDE Free + ** Qt Foundation. The licenses are as published by the Free Software + ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 + ** included in the packaging of this file. Please review the following + ** information to ensure the GNU General Public License requirements will + ** be met: https://www.gnu.org/licenses/gpl-2.0.html and + ** https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ + +#ifndef QPPSOBJECTPRIVATE_P_H_ +#define QPPSOBJECTPRIVATE_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 "qppsattribute_p.h" + +#include +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class QSocketNotifier; + +class QPpsObjectPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QPpsObject) +public: + explicit QPpsObjectPrivate(const QString &path); + + static QPpsAttributeMap decode(const QByteArray &rawData, bool *ok); + static QByteArray encode(const QVariantMap &ppsData, bool *ok); + + static QVariantMap variantMapFromPpsAttributeMap(const QPpsAttributeMap &data); + + QSocketNotifier *notifier; + QString path; + mutable int error; + int fd; + bool readyReadEnabled; + +private: + static QPpsAttribute::Flags readFlags(pps_decoder_t *decoder); + static QPpsAttribute decodeString(pps_decoder_t *decoder); + static QPpsAttribute decodeNumber(pps_decoder_t *decoder); + static QPpsAttribute decodeBool(pps_decoder_t *decoder); + static QPpsAttribute decodeData(pps_decoder_t *decoder); + static QPpsAttributeList decodeArray(pps_decoder_t *decoder, bool *ok); + static QPpsAttributeMap decodeObject(pps_decoder_t *decoder, bool *ok); + static bool decoderPush(pps_decoder_t *decoder, const char *name = 0); + static bool decoderPop(pps_decoder_t *decoder); + + template + static QPpsAttribute decodeNestedData(T (*decodeFunction)(pps_decoder_t *, bool *), + pps_decoder_t *decoder); + + static void encodeData(pps_encoder_t *encoder, const char *name, + const QVariant &data, bool *ok); + static void encodeArray(pps_encoder_t *encoder, const QVariantList &data, bool *ok); + static void encodeObject(pps_encoder_t *encoder, const QVariantMap &data, bool *ok); + + static QVariant variantFromPpsAttribute(const QPpsAttribute &attribute); +}; + +inline bool QPpsObjectPrivate::decoderPush(pps_decoder_t *decoder, const char *name) +{ + pps_decoder_error_t error = pps_decoder_push(decoder, name); + if (error != PPS_DECODER_OK) { + qWarning("QPpsObjectPrivate::decodeData: pps_decoder_push failed"); + return false; + } + return true; +} + +inline bool QPpsObjectPrivate::decoderPop(pps_decoder_t *decoder) +{ + pps_decoder_error_t error = pps_decoder_pop(decoder); + if (error != PPS_DECODER_OK) { + qWarning("QPpsObjectPrivate::decodeData: pps_decoder_pop failed"); + return false; + } + return true; +} + +QT_END_NAMESPACE + +#endif /* QPPSOBJECTPRIVATE_P_H_ */ diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qprocess_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qprocess_p.h new file mode 100644 index 000000000..c5abf7b76 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qprocess_p.h @@ -0,0 +1,393 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPROCESS_P_H +#define QPROCESS_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/qprocess.h" +#include "QtCore/qstringlist.h" +#include "QtCore/qhash.h" +#include "QtCore/qmap.h" +#include "QtCore/qshareddata.h" +#include "private/qiodevice_p.h" + +QT_REQUIRE_CONFIG(processenvironment); + +#ifdef Q_OS_UNIX +#include +#endif + +#ifdef Q_OS_WIN +#include "QtCore/qt_windows.h" +typedef HANDLE Q_PIPE; +#define INVALID_Q_PIPE INVALID_HANDLE_VALUE +#else +typedef int Q_PIPE; +#define INVALID_Q_PIPE -1 +#endif + +QT_BEGIN_NAMESPACE + +class QSocketNotifier; +class QWindowsPipeReader; +class QWindowsPipeWriter; +class QWinEventNotifier; +class QTimer; + +#ifdef Q_OS_WIN +class QProcEnvKey : public QString +{ +public: + QProcEnvKey() {} + explicit QProcEnvKey(const QString &other) : QString(other) {} + QProcEnvKey(const QProcEnvKey &other) : QString(other) {} + bool operator==(const QProcEnvKey &other) const { return !compare(other, Qt::CaseInsensitive); } +}; + +inline bool operator<(const QProcEnvKey &a, const QProcEnvKey &b) +{ + // On windows use case-insensitive ordering because that is how Windows needs the environment + // block sorted (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682009(v=vs.85).aspx) + return a.compare(b, Qt::CaseInsensitive) < 0; +} + +Q_DECLARE_TYPEINFO(QProcEnvKey, Q_MOVABLE_TYPE); + +typedef QString QProcEnvValue; +#else +using QProcEnvKey = QByteArray; + +class QProcEnvValue +{ +public: + QProcEnvValue() {} + QProcEnvValue(const QProcEnvValue &other) { *this = other; } + explicit QProcEnvValue(const QString &value) : stringValue(value) {} + explicit QProcEnvValue(const QByteArray &value) : byteValue(value) {} + bool operator==(const QProcEnvValue &other) const + { + return byteValue.isEmpty() && other.byteValue.isEmpty() + ? stringValue == other.stringValue + : bytes() == other.bytes(); + } + QByteArray bytes() const + { + if (byteValue.isEmpty() && !stringValue.isEmpty()) + byteValue = stringValue.toLocal8Bit(); + return byteValue; + } + QString string() const + { + if (stringValue.isEmpty() && !byteValue.isEmpty()) + stringValue = QString::fromLocal8Bit(byteValue); + return stringValue; + } + + mutable QByteArray byteValue; + mutable QString stringValue; +}; +Q_DECLARE_TYPEINFO(QProcEnvValue, Q_MOVABLE_TYPE); +#endif + +class QProcessEnvironmentPrivate: public QSharedData +{ +public: + typedef QProcEnvKey Key; + typedef QProcEnvValue Value; +#ifdef Q_OS_WIN + inline Key prepareName(const QString &name) const { return Key(name); } + inline QString nameToString(const Key &name) const { return name; } + inline Value prepareValue(const QString &value) const { return value; } + inline QString valueToString(const Value &value) const { return value; } + struct MutexLocker { + MutexLocker(const QProcessEnvironmentPrivate *) {} + }; + struct OrderedMutexLocker { + OrderedMutexLocker(const QProcessEnvironmentPrivate *, + const QProcessEnvironmentPrivate *) {} + }; +#else + inline Key prepareName(const QString &name) const + { + Key &ent = nameMap[name]; + if (ent.isEmpty()) + ent = name.toLocal8Bit(); + return ent; + } + inline QString nameToString(const Key &name) const + { + const QString sname = QString::fromLocal8Bit(name); + nameMap[sname] = name; + return sname; + } + inline Value prepareValue(const QString &value) const { return Value(value); } + inline QString valueToString(const Value &value) const { return value.string(); } + + struct MutexLocker : public QMutexLocker + { + MutexLocker(const QProcessEnvironmentPrivate *d) : QMutexLocker(&d->mutex) {} + }; + struct OrderedMutexLocker : public QOrderedMutexLocker + { + OrderedMutexLocker(const QProcessEnvironmentPrivate *d1, + const QProcessEnvironmentPrivate *d2) : + QOrderedMutexLocker(&d1->mutex, &d2->mutex) + {} + }; + + QProcessEnvironmentPrivate() : QSharedData() {} + QProcessEnvironmentPrivate(const QProcessEnvironmentPrivate &other) : + QSharedData() + { + // This being locked ensures that the functions that only assign + // d pointers don't need explicit locking. + // We don't need to lock our own mutex, as this object is new and + // consequently not shared. For the same reason, non-const methods + // do not need a lock, as they detach objects (however, we need to + // ensure that they really detach before using prepareName()). + MutexLocker locker(&other); + vars = other.vars; + nameMap = other.nameMap; + // We need to detach our members, so that our mutex can protect them. + // As we are being detached, they likely would be detached a moment later anyway. + vars.detach(); + nameMap.detach(); + } +#endif + + using Map = QMap; + Map vars; + +#ifdef Q_OS_UNIX + typedef QHash NameHash; + mutable NameHash nameMap; + + mutable QMutex mutex; +#endif + + static QProcessEnvironment fromList(const QStringList &list); + QStringList toList() const; + QStringList keys() const; + void insert(const QProcessEnvironmentPrivate &other); +}; + +template<> Q_INLINE_TEMPLATE void QSharedDataPointer::detach() +{ + if (d && d->ref.load() == 1) + return; + QProcessEnvironmentPrivate *x = (d ? new QProcessEnvironmentPrivate(*d) + : new QProcessEnvironmentPrivate); + x->ref.ref(); + if (d && !d->ref.deref()) + delete d; + d = x; +} + +#if QT_CONFIG(process) + +class QProcessPrivate : public QIODevicePrivate +{ +public: + Q_DECLARE_PUBLIC(QProcess) + + struct Channel { + enum ProcessChannelType { + Normal = 0, + PipeSource = 1, + PipeSink = 2, + Redirect = 3 + // if you add "= 4" here, increase the number of bits below + }; + + Channel() : process(0), notifier(0), type(Normal), closed(false), append(false) + { + pipe[0] = INVALID_Q_PIPE; + pipe[1] = INVALID_Q_PIPE; +#ifdef Q_OS_WIN + reader = 0; +#endif + } + + void clear(); + + Channel &operator=(const QString &fileName) + { + clear(); + file = fileName; + type = fileName.isEmpty() ? Normal : Redirect; + return *this; + } + + void pipeTo(QProcessPrivate *other) + { + clear(); + process = other; + type = PipeSource; + } + + void pipeFrom(QProcessPrivate *other) + { + clear(); + process = other; + type = PipeSink; + } + + QString file; + QProcessPrivate *process; + QSocketNotifier *notifier; +#ifdef Q_OS_WIN + union { + QWindowsPipeReader *reader; + QWindowsPipeWriter *writer; + }; +#endif + Q_PIPE pipe[2]; + + unsigned type : 2; + bool closed : 1; + bool append : 1; + }; + + QProcessPrivate(); + virtual ~QProcessPrivate(); + + // private slots + bool _q_canReadStandardOutput(); + bool _q_canReadStandardError(); + bool _q_canWrite(); + bool _q_startupNotification(); + bool _q_processDied(); + + QProcess::ProcessChannelMode processChannelMode; + QProcess::InputChannelMode inputChannelMode; + QProcess::ProcessError processError; + QProcess::ProcessState processState; + QString workingDirectory; + Q_PID pid; + int sequenceNumber; + + bool dying; + bool emittedReadyRead; + bool emittedBytesWritten; + + Channel stdinChannel; + Channel stdoutChannel; + Channel stderrChannel; + bool openChannel(Channel &channel); + void closeChannel(Channel *channel); + void closeWriteChannel(); + bool tryReadFromChannel(Channel *channel); // obviously, only stdout and stderr + + QString program; + QStringList arguments; +#if defined(Q_OS_WIN) + QString nativeArguments; + QProcess::CreateProcessArgumentModifier modifyCreateProcessArgs; +#endif + QProcessEnvironment environment; + + Q_PIPE childStartedPipe[2]; + void destroyPipe(Q_PIPE pipe[2]); + + QSocketNotifier *startupSocketNotifier; + QSocketNotifier *deathNotifier; + + int forkfd; + +#ifdef Q_OS_WIN + QTimer *stdinWriteTrigger; + QWinEventNotifier *processFinishedNotifier; +#endif + + void start(QIODevice::OpenMode mode); + void startProcess(); +#if defined(Q_OS_UNIX) + void execChild(const char *workingDirectory, char **path, char **argv, char **envp); +#endif + bool processStarted(QString *errorMessage = Q_NULLPTR); + void terminateProcess(); + void killProcess(); + void findExitCode(); +#ifdef Q_OS_UNIX + bool waitForDeadChild(); +#endif +#ifdef Q_OS_WIN + bool drainOutputPipes(); + void flushPipeWriter(); + qint64 pipeWriterBytesToWrite() const; +#endif + + static bool startDetached(const QString &program, const QStringList &arguments, const QString &workingDirectory = QString(), + qint64 *pid = 0); + + int exitCode; + QProcess::ExitStatus exitStatus; + bool crashed; + + bool waitForStarted(int msecs = 30000); + bool waitForReadyRead(int msecs = 30000); + bool waitForBytesWritten(int msecs = 30000); + bool waitForFinished(int msecs = 30000); + + qint64 bytesAvailableInChannel(const Channel *channel) const; + qint64 readFromChannel(const Channel *channel, char *data, qint64 maxlen); + bool writeToStdin(); + + void cleanup(); + void setError(QProcess::ProcessError error, const QString &description = QString()); + void setErrorAndEmit(QProcess::ProcessError error, const QString &description = QString()); +}; + +#endif // QT_CONFIG(process) + +QT_END_NAMESPACE + +#endif // QPROCESS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qpropertyanimation_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qpropertyanimation_p.h new file mode 100644 index 000000000..cfb1f247e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qpropertyanimation_p.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPROPERTYANIMATION_P_H +#define QPROPERTYANIMATION_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 "qpropertyanimation.h" + +#include "private/qvariantanimation_p.h" + +#ifndef QT_NO_ANIMATION + +QT_BEGIN_NAMESPACE + +class QPropertyAnimationPrivate : public QVariantAnimationPrivate +{ + Q_DECLARE_PUBLIC(QPropertyAnimation) +public: + QPropertyAnimationPrivate() + : targetValue(0), propertyType(0), propertyIndex(-1) + { + } + + QPointer target; + //we use targetValue to be able to unregister the target from the global hash + QObject *targetValue; + + //for the QProperty + int propertyType; + int propertyIndex; + + QByteArray propertyName; + void updateProperty(const QVariant &); + void updateMetaProperty(); +}; + +QT_END_NAMESPACE + +#endif //QT_NO_ANIMATION + +#endif //QPROPERTYANIMATION_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qreadwritelock_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qreadwritelock_p.h new file mode 100644 index 000000000..04dd45a2e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qreadwritelock_p.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Olivier Goffart +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QREADWRITELOCK_P_H +#define QREADWRITELOCK_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 implementation. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#ifndef QT_NO_THREAD + +QT_BEGIN_NAMESPACE + +class QReadWriteLockPrivate +{ +public: + QReadWriteLockPrivate(bool isRecursive = false) + : readerCount(0), writerCount(0), waitingReaders(0), waitingWriters(0), + recursive(isRecursive), id(0), currentWriter(nullptr) {} + + QMutex mutex; + QWaitCondition writerCond; + QWaitCondition readerCond; + int readerCount; + int writerCount; + int waitingReaders; + int waitingWriters; + const bool recursive; + + //Called with the mutex locked + bool lockForWrite(int timeout); + bool lockForRead(int timeout); + void unlock(); + + //memory management + int id; + void release(); + static QReadWriteLockPrivate *allocate(); + + // Recusive mutex handling + Qt::HANDLE currentWriter; + QHash currentReaders; + + // called with the mutex unlocked + bool recursiveLockForWrite(int timeout); + bool recursiveLockForRead(int timeout); + void recursiveUnlock(); + +}; + +QT_END_NAMESPACE + +#endif // QT_NO_THREAD + +#endif // QREADWRITELOCK_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qresource_iterator_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qresource_iterator_p.h new file mode 100644 index 000000000..6a4e21586 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qresource_iterator_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRESOURCE_ITERATOR_P_H +#define QRESOURCE_ITERATOR_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 "qabstractfileengine_p.h" +#include "qdir.h" + +QT_BEGIN_NAMESPACE + +class QResourceFileEngineIteratorPrivate; +class QResourceFileEngineIterator : public QAbstractFileEngineIterator +{ +public: + QResourceFileEngineIterator(QDir::Filters filters, const QStringList &filterNames); + ~QResourceFileEngineIterator(); + + QString next() Q_DECL_OVERRIDE; + bool hasNext() const Q_DECL_OVERRIDE; + + QString currentFileName() const Q_DECL_OVERRIDE; + +private: + mutable QStringList entries; + mutable int index; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qresource_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qresource_p.h new file mode 100644 index 000000000..e08ba64d2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qresource_p.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRESOURCE_P_H +#define QRESOURCE_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 "qabstractfileengine_p.h" + +QT_BEGIN_NAMESPACE + +class QResourceFileEnginePrivate; +class QResourceFileEngine : public QAbstractFileEngine +{ +private: + Q_DECLARE_PRIVATE(QResourceFileEngine) +public: + explicit QResourceFileEngine(const QString &path); + ~QResourceFileEngine(); + + virtual void setFileName(const QString &file) Q_DECL_OVERRIDE; + + virtual bool open(QIODevice::OpenMode flags) Q_DECL_OVERRIDE ; + virtual bool close() Q_DECL_OVERRIDE; + virtual bool flush() Q_DECL_OVERRIDE; + virtual qint64 size() const Q_DECL_OVERRIDE; + virtual qint64 pos() const Q_DECL_OVERRIDE; + virtual bool atEnd() const; + virtual bool seek(qint64) Q_DECL_OVERRIDE; + virtual qint64 read(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + virtual qint64 write(const char *data, qint64 len) Q_DECL_OVERRIDE; + + virtual bool remove() Q_DECL_OVERRIDE; + virtual bool copy(const QString &newName) Q_DECL_OVERRIDE; + virtual bool rename(const QString &newName) Q_DECL_OVERRIDE; + virtual bool link(const QString &newName) Q_DECL_OVERRIDE; + + virtual bool isSequential() const Q_DECL_OVERRIDE; + + virtual bool isRelativePath() const Q_DECL_OVERRIDE; + + virtual bool mkdir(const QString &dirName, bool createParentDirectories) const Q_DECL_OVERRIDE; + virtual bool rmdir(const QString &dirName, bool recurseParentDirectories) const Q_DECL_OVERRIDE; + + virtual bool setSize(qint64 size) Q_DECL_OVERRIDE; + + virtual QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const Q_DECL_OVERRIDE; + + virtual bool caseSensitive() const Q_DECL_OVERRIDE; + + virtual FileFlags fileFlags(FileFlags type) const Q_DECL_OVERRIDE; + + virtual bool setPermissions(uint perms) Q_DECL_OVERRIDE; + + virtual QString fileName(QAbstractFileEngine::FileName file) const Q_DECL_OVERRIDE; + + virtual uint ownerId(FileOwner) const Q_DECL_OVERRIDE; + virtual QString owner(FileOwner) const Q_DECL_OVERRIDE; + + virtual QDateTime fileTime(FileTime time) const Q_DECL_OVERRIDE; + + virtual Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) Q_DECL_OVERRIDE; + virtual Iterator *endEntryList() Q_DECL_OVERRIDE; + + bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0) Q_DECL_OVERRIDE; + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif // QRESOURCE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qringbuffer_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qringbuffer_p.h new file mode 100644 index 000000000..325b71f26 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qringbuffer_p.h @@ -0,0 +1,164 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRINGBUFFER_P_H +#define QRINGBUFFER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QRINGBUFFER_CHUNKSIZE +#define QRINGBUFFER_CHUNKSIZE 4096 +#endif + +class QRingBuffer +{ +public: + explicit inline QRingBuffer(int growth = QRINGBUFFER_CHUNKSIZE) : + head(0), tail(0), tailBuffer(0), basicBlockSize(growth), bufferSize(0) { } + + inline void setChunkSize(int size) { + basicBlockSize = size; + } + + inline int chunkSize() const { + return basicBlockSize; + } + + inline qint64 nextDataBlockSize() const { + return (tailBuffer == 0 ? tail : buffers.first().size()) - head; + } + + inline const char *readPointer() const { + return bufferSize == 0 ? Q_NULLPTR : (buffers.first().constData() + head); + } + + Q_CORE_EXPORT const char *readPointerAtPosition(qint64 pos, qint64 &length) const; + Q_CORE_EXPORT void free(qint64 bytes); + Q_CORE_EXPORT char *reserve(qint64 bytes); + Q_CORE_EXPORT char *reserveFront(qint64 bytes); + + inline void truncate(qint64 pos) { + if (pos < size()) + chop(size() - pos); + } + + Q_CORE_EXPORT void chop(qint64 bytes); + + inline bool isEmpty() const { + return bufferSize == 0; + } + + inline int getChar() { + if (isEmpty()) + return -1; + char c = *readPointer(); + free(1); + return int(uchar(c)); + } + + inline void putChar(char c) { + char *ptr = reserve(1); + *ptr = c; + } + + void ungetChar(char c) + { + if (head > 0) { + --head; + buffers.first()[head] = c; + ++bufferSize; + } else { + char *ptr = reserveFront(1); + *ptr = c; + } + } + + + inline qint64 size() const { + return bufferSize; + } + + Q_CORE_EXPORT void clear(); + inline qint64 indexOf(char c) const { return indexOf(c, size()); } + Q_CORE_EXPORT qint64 indexOf(char c, qint64 maxLength, qint64 pos = 0) const; + Q_CORE_EXPORT qint64 read(char *data, qint64 maxLength); + Q_CORE_EXPORT QByteArray read(); + Q_CORE_EXPORT qint64 peek(char *data, qint64 maxLength, qint64 pos = 0) const; + Q_CORE_EXPORT void append(const char *data, qint64 size); + Q_CORE_EXPORT void append(const QByteArray &qba); + + inline qint64 skip(qint64 length) { + qint64 bytesToSkip = qMin(length, bufferSize); + + free(bytesToSkip); + return bytesToSkip; + } + + Q_CORE_EXPORT qint64 readLine(char *data, qint64 maxLength); + + inline bool canReadLine() const { + return indexOf('\n') >= 0; + } + +private: + QList buffers; + int head, tail; + int tailBuffer; // always buffers.size() - 1 + int basicBlockSize; + qint64 bufferSize; +}; + +QT_END_NAMESPACE + +#endif // QRINGBUFFER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsavefile_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsavefile_p.h new file mode 100644 index 000000000..3f81df9ae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsavefile_p.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2013 David Faure +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSAVEFILE_P_H +#define QSAVEFILE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#ifndef QT_NO_TEMPORARYFILE + +#include "private/qfiledevice_p.h" + +QT_BEGIN_NAMESPACE + +class QSaveFilePrivate : public QFileDevicePrivate +{ + Q_DECLARE_PUBLIC(QSaveFile) + +protected: + QSaveFilePrivate(); + ~QSaveFilePrivate(); + + QString fileName; + QString finalFileName; // fileName with symbolic links resolved + + QFileDevice::FileError writeError; + + bool useTemporaryFile; + bool directWriteFallback; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_TEMPORARYFILE + +#endif // QSAVEFILE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qscopedpointer_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qscopedpointer_p.h new file mode 100644 index 000000000..c1c44e769 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qscopedpointer_p.h @@ -0,0 +1,148 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include + +#ifndef QSCOPEDPOINTER_P_H +#define QSCOPEDPOINTER_P_H + +#include "QtCore/qscopedpointer.h" + +QT_BEGIN_NAMESPACE + + +/* Internal helper class - exposes the data through data_ptr (legacy from QShared). + Required for some internal Qt classes, do not use otherwise. */ +template > +class QCustomScopedPointer : public QScopedPointer +{ +public: + explicit inline QCustomScopedPointer(T *p = 0) + : QScopedPointer(p) + { + } + + inline T *&data_ptr() + { + return this->d; + } + + inline bool operator==(const QCustomScopedPointer &other) const + { + return this->d == other.d; + } + + inline bool operator!=(const QCustomScopedPointer &other) const + { + return this->d != other.d; + } + +private: + Q_DISABLE_COPY(QCustomScopedPointer) +}; + +/* Internal helper class - a handler for QShared* classes, to be used in QCustomScopedPointer */ +template +class QScopedPointerSharedDeleter +{ +public: + static inline void cleanup(T *d) + { + if (d && !d->ref.deref()) + delete d; + } +}; + +/* Internal. + This class is basically a scoped pointer pointing to a ref-counted object + */ +template +class QScopedSharedPointer : public QCustomScopedPointer > +{ +public: + explicit inline QScopedSharedPointer(T *p = 0) + : QCustomScopedPointer >(p) + { + } + + inline void detach() + { + qAtomicDetach(this->d); + } + + inline void assign(T *other) + { + if (this->d == other) + return; + if (other) + other->ref.ref(); + T *oldD = this->d; + this->d = other; + QScopedPointerSharedDeleter::cleanup(oldD); + } + + inline bool operator==(const QScopedSharedPointer &other) const + { + return this->d == other.d; + } + + inline bool operator!=(const QScopedSharedPointer &other) const + { + return this->d != other.d; + } + +private: + Q_DISABLE_COPY(QScopedSharedPointer) +}; + + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsequentialanimationgroup_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsequentialanimationgroup_p.h new file mode 100644 index 000000000..1b07e1330 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsequentialanimationgroup_p.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSEQUENTIALANIMATIONGROUP_P_H +#define QSEQUENTIALANIMATIONGROUP_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 "qsequentialanimationgroup.h" +#include "private/qanimationgroup_p.h" + +#ifndef QT_NO_ANIMATION + +QT_BEGIN_NAMESPACE + +class QSequentialAnimationGroupPrivate : public QAnimationGroupPrivate +{ + Q_DECLARE_PUBLIC(QSequentialAnimationGroup) +public: + QSequentialAnimationGroupPrivate() + : currentAnimation(0), currentAnimationIndex(-1), lastLoop(0) + { } + + + struct AnimationIndex + { + AnimationIndex() : index(0), timeOffset(0) {} + // index points to the animation at timeOffset, skipping 0 duration animations. + // Note that the index semantic is slightly different depending on the direction. + int index; // the index of the animation in timeOffset + int timeOffset; // time offset when the animation at index starts. + }; + + int animationActualTotalDuration(int index) const; + AnimationIndex indexForCurrentTime() const; + + void setCurrentAnimation(int index, bool intermediate = false); + void activateCurrentAnimation(bool intermediate = false); + + void animationInsertedAt(int index) Q_DECL_OVERRIDE; + void animationRemoved(int index, QAbstractAnimation *anim) Q_DECL_OVERRIDE; + + bool atEnd() const; + + QAbstractAnimation *currentAnimation; + int currentAnimationIndex; + + // this is the actual duration of uncontrolled animations + // it helps seeking and even going forward + QVector actualDuration; + + void restart(); + int lastLoop; + + // handle time changes + void rewindForwards(const AnimationIndex &newAnimationIndex); + void advanceForwards(const AnimationIndex &newAnimationIndex); + + // private slot + void _q_uncontrolledAnimationFinished(); +}; + +QT_END_NAMESPACE + +#endif //QT_NO_ANIMATION + +#endif //QSEQUENTIALANIMATIONGROUP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsettings_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsettings_p.h new file mode 100644 index 000000000..639605d8c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsettings_p.h @@ -0,0 +1,301 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSETTINGS_P_H +#define QSETTINGS_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/qdatetime.h" +#include "QtCore/qmap.h" +#include "QtCore/qmutex.h" +#include "QtCore/qiodevice.h" +#include "QtCore/qstack.h" +#include "QtCore/qstringlist.h" +#ifndef QT_NO_QOBJECT +#include "private/qobject_p.h" +#endif +#include "private/qscopedpointer_p.h" + +QT_BEGIN_NAMESPACE + +#ifndef Q_OS_WIN +#define QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER +#endif + +#if defined(Q_OS_WINRT) +#define QT_QTSETTINGS_FORGET_ORIGINAL_KEY_ORDER +#endif + +// used in testing framework +#define QSETTINGS_P_H_VERSION 3 + +#ifdef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER +static const Qt::CaseSensitivity IniCaseSensitivity = Qt::CaseSensitive; + +class QSettingsKey : public QString +{ +public: + inline QSettingsKey(const QString &key, Qt::CaseSensitivity cs, int /* position */ = -1) + : QString(key) { Q_ASSERT(cs == Qt::CaseSensitive); Q_UNUSED(cs); } + + inline QString originalCaseKey() const { return *this; } + inline int originalKeyPosition() const { return -1; } +}; +#else +static const Qt::CaseSensitivity IniCaseSensitivity = Qt::CaseInsensitive; + +class QSettingsKey : public QString +{ +public: + inline QSettingsKey(const QString &key, Qt::CaseSensitivity cs, int position = -1) + : QString(key), theOriginalKey(key), theOriginalKeyPosition(position) + { + if (cs == Qt::CaseInsensitive) + QString::operator=(toLower()); + } + + inline QString originalCaseKey() const { return theOriginalKey; } + inline int originalKeyPosition() const { return theOriginalKeyPosition; } + +private: + QString theOriginalKey; + int theOriginalKeyPosition; +}; +#endif + +typedef QMap UnparsedSettingsMap; +typedef QMap ParsedSettingsMap; + +class QSettingsGroup +{ +public: + inline QSettingsGroup() + : num(-1), maxNum(-1) {} + inline QSettingsGroup(const QString &s) + : str(s), num(-1), maxNum(-1) {} + inline QSettingsGroup(const QString &s, bool guessArraySize) + : str(s), num(0), maxNum(guessArraySize ? 0 : -1) {} + + inline QString name() const { return str; } + inline QString toString() const; + inline bool isArray() const { return num != -1; } + inline int arraySizeGuess() const { return maxNum; } + inline void setArrayIndex(int i) + { num = i + 1; if (maxNum != -1 && num > maxNum) maxNum = num; } + + QString str; + int num; + int maxNum; +}; +Q_DECLARE_TYPEINFO(QSettingsGroup, Q_MOVABLE_TYPE); + +inline QString QSettingsGroup::toString() const +{ + QString result; + result = str; + if (num > 0) { + result += QLatin1Char('/'); + result += QString::number(num); + } + return result; +} + +class Q_AUTOTEST_EXPORT QConfFile +{ +public: + ~QConfFile(); + + ParsedSettingsMap mergedKeyMap() const; + bool isWritable() const; + + static QConfFile *fromName(const QString &name, bool _userPerms); + static void clearCache(); + + QString name; + QDateTime timeStamp; + qint64 size; + UnparsedSettingsMap unparsedIniSections; + ParsedSettingsMap originalKeys; + ParsedSettingsMap addedKeys; + ParsedSettingsMap removedKeys; + QAtomicInt ref; + QMutex mutex; + bool userPerms; + +private: +#ifdef Q_DISABLE_COPY + QConfFile(const QConfFile &); + QConfFile &operator=(const QConfFile &); +#endif + QConfFile(const QString &name, bool _userPerms); + + friend class QConfFile_createsItself; // silences compiler warning +}; + +class Q_AUTOTEST_EXPORT QSettingsPrivate +#ifndef QT_NO_QOBJECT + : public QObjectPrivate +#endif +{ +#ifdef QT_NO_QOBJECT + QSettings *q_ptr; +#endif + Q_DECLARE_PUBLIC(QSettings) + +public: + QSettingsPrivate(QSettings::Format format); + QSettingsPrivate(QSettings::Format format, QSettings::Scope scope, + const QString &organization, const QString &application); + virtual ~QSettingsPrivate(); + + virtual void remove(const QString &key) = 0; + virtual void set(const QString &key, const QVariant &value) = 0; + virtual bool get(const QString &key, QVariant *value) const = 0; + + enum ChildSpec { AllKeys, ChildKeys, ChildGroups }; + virtual QStringList children(const QString &prefix, ChildSpec spec) const = 0; + + virtual void clear() = 0; + virtual void sync() = 0; + virtual void flush() = 0; + virtual bool isWritable() const = 0; + virtual QString fileName() const = 0; + + QString actualKey(const QString &key) const; + void beginGroupOrArray(const QSettingsGroup &group); + void setStatus(QSettings::Status status) const; + void requestUpdate(); + void update(); + + static QString normalizedKey(const QString &key); + static QSettingsPrivate *create(QSettings::Format format, QSettings::Scope scope, + const QString &organization, const QString &application); + static QSettingsPrivate *create(const QString &fileName, QSettings::Format format); + + static void processChild(QStringRef key, ChildSpec spec, QStringList &result); + + // Variant streaming functions + static QStringList variantListToStringList(const QVariantList &l); + static QVariant stringListToVariantList(const QStringList &l); + + // parser functions + static QString variantToString(const QVariant &v); + static QVariant stringToVariant(const QString &s); + static void iniEscapedKey(const QString &key, QByteArray &result); + static bool iniUnescapedKey(const QByteArray &key, int from, int to, QString &result); + static void iniEscapedString(const QString &str, QByteArray &result, QTextCodec *codec); + static void iniEscapedStringList(const QStringList &strs, QByteArray &result, QTextCodec *codec); + static bool iniUnescapedStringList(const QByteArray &str, int from, int to, + QString &stringResult, QStringList &stringListResult, + QTextCodec *codec); + static QStringList splitArgs(const QString &s, int idx); + + QSettings::Format format; + QSettings::Scope scope; + QString organizationName; + QString applicationName; + QTextCodec *iniCodec; + +protected: + QStack groupStack; + QString groupPrefix; + bool fallbacks; + bool pendingChanges; + mutable QSettings::Status status; +}; + +class QConfFileSettingsPrivate : public QSettingsPrivate +{ +public: + QConfFileSettingsPrivate(QSettings::Format format, QSettings::Scope scope, + const QString &organization, const QString &application); + QConfFileSettingsPrivate(const QString &fileName, QSettings::Format format); + ~QConfFileSettingsPrivate(); + + void remove(const QString &key) Q_DECL_OVERRIDE; + void set(const QString &key, const QVariant &value) Q_DECL_OVERRIDE; + bool get(const QString &key, QVariant *value) const Q_DECL_OVERRIDE; + + QStringList children(const QString &prefix, ChildSpec spec) const Q_DECL_OVERRIDE; + + void clear() Q_DECL_OVERRIDE; + void sync() Q_DECL_OVERRIDE; + void flush() Q_DECL_OVERRIDE; + bool isWritable() const Q_DECL_OVERRIDE; + QString fileName() const Q_DECL_OVERRIDE; + + bool readIniFile(const QByteArray &data, UnparsedSettingsMap *unparsedIniSections); + static bool readIniSection(const QSettingsKey §ion, const QByteArray &data, + ParsedSettingsMap *settingsMap, QTextCodec *codec); + static bool readIniLine(const QByteArray &data, int &dataPos, int &lineStart, int &lineLen, + int &equalsPos); + +private: + void initFormat(); + void initAccess(); + void syncConfFile(QConfFile *confFile); + bool writeIniFile(QIODevice &device, const ParsedSettingsMap &map); +#ifdef Q_OS_MAC + bool readPlistFile(const QByteArray &data, ParsedSettingsMap *map) const; + bool writePlistFile(QIODevice &file, const ParsedSettingsMap &map) const; +#endif + void ensureAllSectionsParsed(QConfFile *confFile) const; + void ensureSectionParsed(QConfFile *confFile, const QSettingsKey &key) const; + + QVector confFiles; + QSettings::ReadFunc readFunc; + QSettings::WriteFunc writeFunc; + QString extension; + Qt::CaseSensitivity caseSensitivity; + int nextPosition; +}; + +QT_END_NAMESPACE + +#endif // QSETTINGS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsharedmemory_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsharedmemory_p.h new file mode 100644 index 000000000..95fe0d108 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsharedmemory_p.h @@ -0,0 +1,172 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSHAREDMEMORY_P_H +#define QSHAREDMEMORY_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 "qsharedmemory.h" + +#include + +#ifdef QT_NO_SHAREDMEMORY +# ifndef QT_NO_SYSTEMSEMAPHORE +namespace QSharedMemoryPrivate +{ + int createUnixKeyFile(const QString &fileName); + QString makePlatformSafeKey(const QString &key, + const QString &prefix = QLatin1String("qipc_sharedmemory_")); +} +#endif +#else + +#include "qsystemsemaphore.h" +#include "private/qobject_p.h" + +#if !defined(Q_OS_WIN) && !defined(Q_OS_ANDROID) && !defined(Q_OS_INTEGRITY) +# include +#endif + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SYSTEMSEMAPHORE +/*! + Helper class + */ +class QSharedMemoryLocker +{ + +public: + inline QSharedMemoryLocker(QSharedMemory *sharedMemory) : q_sm(sharedMemory) + { + Q_ASSERT(q_sm); + } + + inline ~QSharedMemoryLocker() + { + if (q_sm) + q_sm->unlock(); + } + + inline bool lock() + { + if (q_sm && q_sm->lock()) + return true; + q_sm = 0; + return false; + } + +private: + QSharedMemory *q_sm; +}; +#endif // QT_NO_SYSTEMSEMAPHORE + +class Q_AUTOTEST_EXPORT QSharedMemoryPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QSharedMemory) + +public: + QSharedMemoryPrivate(); + + void *memory; + int size; + QString key; + QString nativeKey; + QSharedMemory::SharedMemoryError error; + QString errorString; +#ifndef QT_NO_SYSTEMSEMAPHORE + QSystemSemaphore systemSemaphore; + bool lockedByMe; +#endif + + static int createUnixKeyFile(const QString &fileName); + static QString makePlatformSafeKey(const QString &key, + const QString &prefix = QLatin1String("qipc_sharedmemory_")); +#ifdef Q_OS_WIN + Qt::HANDLE handle(); +#elif defined(QT_POSIX_IPC) + int handle(); +#else + key_t handle(); +#endif + bool initKey(); + bool cleanHandle(); + bool create(int size); + bool attach(QSharedMemory::AccessMode mode); + bool detach(); + + void setErrorString(QLatin1String function); + +#ifndef QT_NO_SYSTEMSEMAPHORE + bool tryLocker(QSharedMemoryLocker *locker, const QString &function) { + if (!locker->lock()) { + errorString = QSharedMemory::tr("%1: unable to lock").arg(function); + error = QSharedMemory::LockError; + return false; + } + return true; + } +#endif // QT_NO_SYSTEMSEMAPHORE + +private: +#ifdef Q_OS_WIN + Qt::HANDLE hand; +#elif defined(QT_POSIX_IPC) + int hand; +#else + key_t unix_key; +#endif +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SHAREDMEMORY + +#endif // QSHAREDMEMORY_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsignaleventgenerator_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsignaleventgenerator_p.h new file mode 100644 index 000000000..271f6317b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsignaleventgenerator_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIGNALEVENTGENERATOR_P_H +#define QSIGNALEVENTGENERATOR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QStateMachine; + +class QSignalEventGenerator : public QObject +{ + Q_OBJECT_FAKE +public: + QSignalEventGenerator(QStateMachine *parent); + +private: +// slots + void execute(void **_a); + +private: + Q_DISABLE_COPY(QSignalEventGenerator) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsignaltransition_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsignaltransition_p.h new file mode 100644 index 000000000..f270a5be4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsignaltransition_p.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIGNALTRANSITION_P_H +#define QSIGNALTRANSITION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qabstracttransition_p.h" + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QSignalTransition; +class QSignalTransitionPrivate : public QAbstractTransitionPrivate +{ + Q_DECLARE_PUBLIC(QSignalTransition) +public: + QSignalTransitionPrivate(); + + static QSignalTransitionPrivate *get(QSignalTransition *q) + { return q->d_func(); } + + void unregister(); + void maybeRegister(); + + virtual void callOnTransition(QEvent *e) Q_DECL_OVERRIDE; + + const QObject *sender; + QByteArray signal; + int signalIndex; + int originalSignalIndex; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsimd_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsimd_p.h new file mode 100644 index 000000000..05f118a9e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsimd_p.h @@ -0,0 +1,522 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIMD_P_H +#define QSIMD_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +/* + * qt_module_config.prf defines the QT_COMPILER_SUPPORTS_XXX macros. + * They mean the compiler supports the necessary flags and the headers + * for the x86 and ARM intrinsics: + * - GCC: the -mXXX or march=YYY flag is necessary before #include + * up to 4.8; GCC >= 4.9 can include unconditionally + * - Intel CC: #include can happen unconditionally + * - MSVC: #include can happen unconditionally + * - RVCT: ??? + * + * We will try to include all headers possible under this configuration. + * + * MSVC does not define __SSE2__ & family, so we will define them. MSVC 2013 & + * up do define __AVX__ if the -arch:AVX option is passed on the command-line. + * + * Supported XXX are: + * Flag | Arch | GCC | Intel CC | MSVC | + * ARM_NEON | ARM | I & C | None | ? | + * SSE2 | x86 | I & C | I & C | I & C | + * SSE3 | x86 | I & C | I & C | I only | + * SSSE3 | x86 | I & C | I & C | I only | + * SSE4_1 | x86 | I & C | I & C | I only | + * SSE4_2 | x86 | I & C | I & C | I only | + * AVX | x86 | I & C | I & C | I & C | + * AVX2 | x86 | I & C | I & C | I only | + * AVX512xx | x86 | I & C | I & C | I only | + * I = intrinsics; C = code generation + * + * Code can use the following constructs to determine compiler support & status: + * - #ifdef __XXX__ (e.g: #ifdef __AVX__ or #ifdef __ARM_NEON__) + * If this test passes, then the compiler is already generating code for that + * given sub-architecture. The intrinsics for that sub-architecture are + * #included and can be used without restriction or runtime check. + * + * - #if QT_COMPILER_SUPPORTS(XXX) + * If this test passes, then the compiler is able to generate code for that + * given sub-architecture in another translation unit, given the right set of + * flags. Use of the intrinsics is not guaranteed. This is useful with + * runtime detection (see below). + * + * - #if QT_COMPILER_SUPPORTS_HERE(XXX) + * If this test passes, then the compiler is able to generate code for that + * given sub-architecture in this translation unit, even if it is not doing + * that now (it might be). Individual functions may be tagged with + * QT_FUNCTION_TARGET(XXX) to cause the compiler to generate code for that + * sub-arch. Only inside such functions is the use of the intrisics + * guaranteed to work. This is useful with runtime detection (see below). + * + * Runtime detection of a CPU sub-architecture can be done with the + * qCpuHasFeature(XXX) function. There are two strategies for generating + * optimized code like that: + * + * 1) place the optimized code in a different translation unit (C or assembly + * sources) and pass the correct flags to the compiler to enable support. Those + * sources must not include qglobal.h, which means they cannot include this + * file either. The dispatcher function would look like this: + * + * void foo() + * { + * #if QT_COMPILER_SUPPORTS(XXX) + * if (qCpuHasFeature(XXX)) { + * foo_optimized_xxx(); + * return; + * } + * #endif + * foo_plain(); + * } + * + * 2) place the optimized code in a function tagged with QT_FUNCTION_TARGET and + * surrounded by #if QT_COMPILER_SUPPORTS_HERE(XXX). That code can freely use + * other Qt code. The dispatcher function would look like this: + * + * void foo() + * { + * #if QT_COMPILER_SUPPORTS_HERE(XXX) + * if (qCpuHasFeature(XXX)) { + * foo_optimized_xxx(); + * return; + * } + * #endif + * foo_plain(); + * } + */ + +#if defined(__MINGW64_VERSION_MAJOR) || defined(Q_CC_MSVC) +#include +#endif + +#define QT_COMPILER_SUPPORTS(x) (QT_COMPILER_SUPPORTS_ ## x - 0) + +#if defined(Q_PROCESSOR_ARM) +# define QT_COMPILER_SUPPORTS_HERE(x) (__ARM_FEATURE_ ## x) +# if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 600 + /* GCC requires attributes for a function */ +# define QT_FUNCTION_TARGET(x) __attribute__((__target__(QT_FUNCTION_TARGET_STRING_ ## x))) +# else +# define QT_FUNCTION_TARGET(x) +# endif +# if !defined(__ARM_FEATURE_NEON) && defined(__ARM_NEON__) +# define __ARM_FEATURE_NEON // also support QT_COMPILER_SUPPORTS_HERE(NEON) +# endif +#elif defined(Q_PROCESSOR_MIPS) +# define QT_COMPILER_SUPPORTS_HERE(x) (__ ## x ## __) +# define QT_FUNCTION_TARGET(x) +# if !defined(__MIPS_DSP__) && defined(__mips_dsp) && defined(Q_PROCESSOR_MIPS_32) +# define __MIPS_DSP__ +# endif +# if !defined(__MIPS_DSPR2__) && defined(__mips_dspr2) && defined(Q_PROCESSOR_MIPS_32) +# define __MIPS_DSPR2__ +# endif +#elif (defined(Q_CC_INTEL) || defined(Q_CC_MSVC) \ + || (defined(Q_CC_GNU) && !defined(Q_CC_CLANG) && Q_CC_GNU >= 409) \ + || (defined(Q_CC_CLANG) && Q_CC_CLANG >= 308)) \ + && !defined(QT_BOOTSTRAPPED) +# define QT_COMPILER_SUPPORTS_SIMD_ALWAYS +# define QT_COMPILER_SUPPORTS_HERE(x) ((__ ## x ## __) || QT_COMPILER_SUPPORTS(x)) +# if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) + /* GCC requires attributes for a function */ +# define QT_FUNCTION_TARGET(x) __attribute__((__target__(QT_FUNCTION_TARGET_STRING_ ## x))) +# else +# define QT_FUNCTION_TARGET(x) +# endif +#else +# define QT_COMPILER_SUPPORTS_HERE(x) (__ ## x ## __) +# define QT_FUNCTION_TARGET(x) +#endif + +#if defined(Q_CC_MSVC) && (defined(_M_AVX) || defined(__AVX__)) +// Visual Studio defines __AVX__ when /arch:AVX is passed, but not the earlier macros +// See: https://msdn.microsoft.com/en-us/library/b0084kay.aspx +// SSE2 is handled by _M_IX86_FP below +# define __SSE3__ 1 +# define __SSSE3__ 1 +// no Intel CPU supports SSE4a, so don't define it +# define __SSE4_1__ 1 +# define __SSE4_2__ 1 +# ifndef __AVX__ +# define __AVX__ 1 +# endif +#endif + +// SSE intrinsics +#if defined(__SSE2__) || (defined(QT_COMPILER_SUPPORTS_SSE2) && defined(QT_COMPILER_SUPPORTS_SIMD_ALWAYS)) +#if defined(QT_LINUXBASE) +/// this is an evil hack - the posix_memalign declaration in LSB +/// is wrong - see http://bugs.linuxbase.org/show_bug.cgi?id=2431 +# define posix_memalign _lsb_hack_posix_memalign +# include +# undef posix_memalign +#else +# include +#endif +#if defined(Q_CC_MSVC) && (defined(_M_X64) || _M_IX86_FP >= 2) +# define __SSE__ 1 +# define __SSE2__ 1 +#endif +#endif + +// SSE3 intrinsics +#if defined(__SSE3__) || (defined(QT_COMPILER_SUPPORTS_SSE3) && defined(QT_COMPILER_SUPPORTS_SIMD_ALWAYS)) +#include +#endif + +// SSSE3 intrinsics +#if defined(__SSSE3__) || (defined(QT_COMPILER_SUPPORTS_SSSE3) && defined(QT_COMPILER_SUPPORTS_SIMD_ALWAYS)) +#include +#endif + +// SSE4.1 intrinsics +#if defined(__SSE4_1__) || (defined(QT_COMPILER_SUPPORTS_SSE4_1) && defined(QT_COMPILER_SUPPORTS_SIMD_ALWAYS)) +#include +#endif + +// SSE4.2 intrinsics +#if defined(__SSE4_2__) || (defined(QT_COMPILER_SUPPORTS_SSE4_2) && defined(QT_COMPILER_SUPPORTS_SIMD_ALWAYS)) +#include + +# if defined(__SSE4_2__) && defined(QT_COMPILER_SUPPORTS_SIMD_ALWAYS) && (defined(Q_CC_INTEL) || defined(Q_CC_MSVC)) +// POPCNT instructions: +// All processors that support SSE4.2 support POPCNT +// (but neither MSVC nor the Intel compiler define this macro) +# define __POPCNT__ 1 +# endif +#endif + +// AVX intrinsics +#if defined(__AVX__) || (defined(QT_COMPILER_SUPPORTS_AVX) && defined(QT_COMPILER_SUPPORTS_SIMD_ALWAYS)) +// immintrin.h is the ultimate header, we don't need anything else after this +#include + +# if defined(__AVX__) && defined(QT_COMPILER_SUPPORTS_SIMD_ALWAYS) && (defined(Q_CC_INTEL) || defined(Q_CC_MSVC)) +// AES, PCLMULQDQ instructions: +// All processors that support AVX support AES, PCLMULQDQ +// (but neither MSVC nor the Intel compiler define these macros) +# define __AES__ 1 +# define __PCLMUL__ 1 +# endif + +# if defined(__AVX2__) && defined(QT_COMPILER_SUPPORTS_SIMD_ALWAYS) && (defined(Q_CC_INTEL) || defined(Q_CC_MSVC)) +// F16C & RDRAND instructions: +// All processors that support AVX2 support F16C & RDRAND: +// (but neither MSVC nor the Intel compiler define these macros) +# define __F16C__ 1 +# define __RDRND__ 1 +# endif +#endif + +#if defined(__AES__) || defined(__PCLMUL__) +# include +#endif + +#define QT_FUNCTION_TARGET_STRING_SSE2 "sse2" +#define QT_FUNCTION_TARGET_STRING_SSE3 "sse3" +#define QT_FUNCTION_TARGET_STRING_SSSE3 "ssse3" +#define QT_FUNCTION_TARGET_STRING_SSE4_1 "sse4.1" +#define QT_FUNCTION_TARGET_STRING_SSE4_2 "sse4.2" +#define QT_FUNCTION_TARGET_STRING_AVX "avx" +#define QT_FUNCTION_TARGET_STRING_AVX2 "avx2" +#define QT_FUNCTION_TARGET_STRING_AVX512F "avx512f" +#define QT_FUNCTION_TARGET_STRING_AVX512CD "avx512cd" +#define QT_FUNCTION_TARGET_STRING_AVX512ER "avx512er" +#define QT_FUNCTION_TARGET_STRING_AVX512PF "avx512pf" +#define QT_FUNCTION_TARGET_STRING_AVX512BW "avx512bw" +#define QT_FUNCTION_TARGET_STRING_AVX512DQ "avx512dq" +#define QT_FUNCTION_TARGET_STRING_AVX512VL "avx512vl" +#define QT_FUNCTION_TARGET_STRING_AVX512IFMA "avx512ifma" +#define QT_FUNCTION_TARGET_STRING_AVX512VBMI "avx512vbmi" + +#define QT_FUNCTION_TARGET_STRING_AES "aes,sse4.2" +#define QT_FUNCTION_TARGET_STRING_PCLMUL "pclmul,sse4.2" +#define QT_FUNCTION_TARGET_STRING_POPCNT "popcnt" +#define QT_FUNCTION_TARGET_STRING_F16C "f16c,avx" +#define QT_FUNCTION_TARGET_STRING_RDRAND "rdrnd" +#define QT_FUNCTION_TARGET_STRING_BMI "bmi" +#define QT_FUNCTION_TARGET_STRING_BMI2 "bmi2" +#define QT_FUNCTION_TARGET_STRING_RDSEED "rdseed" +#define QT_FUNCTION_TARGET_STRING_SHA "sha" + +// other x86 intrinsics +#if defined(Q_PROCESSOR_X86) && ((defined(Q_CC_GNU) && (Q_CC_GNU >= 404)) \ + || (defined(Q_CC_CLANG) && (Q_CC_CLANG >= 208)) \ + || defined(Q_CC_INTEL)) +# define QT_COMPILER_SUPPORTS_X86INTRIN +# ifdef Q_CC_INTEL +// The Intel compiler has no -- all intrinsics are in ; +# include +# else +// GCC 4.4 and Clang 2.8 added a few more intrinsics there +# include +# endif +#endif + +// Clang compiler fix, see http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20160222/151168.html +// This should be tweaked with an "upper version" of clang once we know which release fixes the +// issue. At that point we can rely on __ARM_FEATURE_CRC32 again. +#if defined(Q_CC_CLANG) && defined(Q_OS_DARWIN) && defined (__ARM_FEATURE_CRC32) +# undef __ARM_FEATURE_CRC32 +#endif + +// NEON intrinsics +// note: as of GCC 4.9, does not support function targets for ARM +#if defined(__ARM_NEON) || defined(__ARM_NEON__) +#include +#define QT_FUNCTION_TARGET_STRING_NEON "+neon" // unused: gcc doesn't support function targets on non-aarch64, and on Aarch64 NEON is always available. +#ifndef __ARM_NEON__ +// __ARM_NEON__ is not defined on AArch64, but we need it in our NEON detection. +#define __ARM_NEON__ +#endif +#endif +// AArch64/ARM64 +#if defined(Q_PROCESSOR_ARM_V8) && defined(__ARM_FEATURE_CRC32) +#if defined(Q_PROCESSOR_ARM_64) +// only available on aarch64 +#define QT_FUNCTION_TARGET_STRING_CRC32 "+crc" +#endif +# include +#endif + +#undef QT_COMPILER_SUPPORTS_SIMD_ALWAYS + +QT_BEGIN_NAMESPACE + + +enum CPUFeatures { +#if defined(Q_PROCESSOR_ARM) + CpuFeatureNEON = 0, + CpuFeatureARM_NEON = CpuFeatureNEON, + CpuFeatureCRC32 = 1, +#elif defined(Q_PROCESSOR_MIPS) + CpuFeatureDSP = 0, + CpuFeatureDSPR2 = 1, +#elif defined(Q_PROCESSOR_X86) + // The order of the flags is jumbled so it matches most closely the bits in CPUID + // Out of order: + CpuFeatureSSE2 = 1, // uses the bit for PCLMULQDQ + // in level 1, ECX + CpuFeatureSSE3 = (0 + 0), + CpuFeatureSSSE3 = (0 + 9), + CpuFeatureSSE4_1 = (0 + 19), + CpuFeatureSSE4_2 = (0 + 20), + CpuFeatureMOVBE = (0 + 22), + CpuFeaturePOPCNT = (0 + 23), + CpuFeatureAES = (0 + 25), + CpuFeatureAVX = (0 + 28), + CpuFeatureF16C = (0 + 29), + CpuFeatureRDRAND = (0 + 30), + // 31 is always zero and we've used it for the QSimdInitialized + + // in level 7, leaf 0, EBX + CpuFeatureBMI = (32 + 3), + CpuFeatureHLE = (32 + 4), + CpuFeatureAVX2 = (32 + 5), + CpuFeatureBMI2 = (32 + 8), + CpuFeatureRTM = (32 + 11), + CpuFeatureAVX512F = (32 + 16), + CpuFeatureAVX512DQ = (32 + 17), + CpuFeatureRDSEED = (32 + 18), + CpuFeatureAVX512IFMA = (32 + 21), + CpuFeatureAVX512PF = (32 + 26), + CpuFeatureAVX512ER = (32 + 27), + CpuFeatureAVX512CD = (32 + 28), + CpuFeatureSHA = (32 + 29), + CpuFeatureAVX512BW = (32 + 30), + CpuFeatureAVX512VL = (32 + 31), + + // in level 7, leaf 0, ECX (out of order, for now) + CpuFeatureAVX512VBMI = 2, // uses the bit for DTES64 +#endif + + // used only to indicate that the CPU detection was initialised + QSimdInitialized = 0x80000000 +}; + +static const quint64 qCompilerCpuFeatures = 0 +#if defined __SHA__ + | (Q_UINT64_C(1) << CpuFeatureSHA) +#endif +#if defined __AES__ + | (Q_UINT64_C(1) << CpuFeatureAES) +#endif +#if defined __RTM__ + | (Q_UINT64_C(1) << CpuFeatureRTM) +#endif +#ifdef __RDRND__ + | (Q_UINT64_C(1) << CpuFeatureRDRAND) +#endif +#ifdef __RDSEED__ + | (Q_UINT64_C(1) << CpuFeatureRDSEED) +#endif +#if defined __BMI__ + | (Q_UINT64_C(1) << CpuFeatureBMI) +#endif +#if defined __BMI2__ + | (Q_UINT64_C(1) << CpuFeatureBMI2) +#endif +#if defined __F16C__ + | (Q_UINT64_C(1) << CpuFeatureF16C) +#endif +#if defined __POPCNT__ + | (Q_UINT64_C(1) << CpuFeaturePOPCNT) +#endif +#if defined __MOVBE__ // GCC and Clang don't seem to define this + | (Q_UINT64_C(1) << CpuFeatureMOVBE) +#endif +#if defined __AVX512F__ + | (Q_UINT64_C(1) << CpuFeatureAVX512F) +#endif +#if defined __AVX512CD__ + | (Q_UINT64_C(1) << CpuFeatureAVX512CD) +#endif +#if defined __AVX512ER__ + | (Q_UINT64_C(1) << CpuFeatureAVX512ER) +#endif +#if defined __AVX512PF__ + | (Q_UINT64_C(1) << CpuFeatureAVX512PF) +#endif +#if defined __AVX512BW__ + | (Q_UINT64_C(1) << CpuFeatureAVX512BW) +#endif +#if defined __AVX512DQ__ + | (Q_UINT64_C(1) << CpuFeatureAVX512DQ) +#endif +#if defined __AVX512VL__ + | (Q_UINT64_C(1) << CpuFeatureAVX512VL) +#endif +#if defined __AVX512IFMA__ + | (Q_UINT64_C(1) << CpuFeatureAVX512IFMA) +#endif +#if defined __AVX512VBMI__ + | (Q_UINT64_C(1) << CpuFeatureAVX512VBMI) +#endif +#if defined __AVX2__ + | (Q_UINT64_C(1) << CpuFeatureAVX2) +#endif +#if defined __AVX__ + | (Q_UINT64_C(1) << CpuFeatureAVX) +#endif +#if defined __SSE4_2__ + | (Q_UINT64_C(1) << CpuFeatureSSE4_2) +#endif +#if defined __SSE4_1__ + | (Q_UINT64_C(1) << CpuFeatureSSE4_1) +#endif +#if defined __SSSE3__ + | (Q_UINT64_C(1) << CpuFeatureSSSE3) +#endif +#if defined __SSE3__ + | (Q_UINT64_C(1) << CpuFeatureSSE3) +#endif +#if defined __SSE2__ + | (Q_UINT64_C(1) << CpuFeatureSSE2) +#endif +#if defined __ARM_NEON__ + | (Q_UINT64_C(1) << CpuFeatureNEON) +#endif +#if defined __ARM_FEATURE_CRC32 + | (Q_UINT64_C(1) << CpuFeatureCRC32) +#endif +#if defined __mips_dsp + | (Q_UINT64_C(1) << CpuFeatureDSP) +#endif +#if defined __mips_dspr2 + | (Q_UINT64_C(1) << CpuFeatureDSPR2) +#endif + ; + +#ifdef Q_ATOMIC_INT64_IS_SUPPORTED +extern Q_CORE_EXPORT QBasicAtomicInteger qt_cpu_features[1]; +#else +extern Q_CORE_EXPORT QBasicAtomicInteger qt_cpu_features[2]; +#endif +Q_CORE_EXPORT void qDetectCpuFeatures(); + +static inline quint64 qCpuFeatures() +{ + quint64 features = qt_cpu_features[0].load(); +#ifndef Q_ATOMIC_INT64_IS_SUPPORTED + features |= quint64(qt_cpu_features[1].load()) << 32; +#endif + if (Q_UNLIKELY(features == 0)) { + qDetectCpuFeatures(); + features = qt_cpu_features[0].load(); +#ifndef Q_ATOMIC_INT64_IS_SUPPORTED + features |= quint64(qt_cpu_features[1].load()) << 32; +#endif + Q_ASSUME(features != 0); + } + return features; +} + +#define qCpuHasFeature(feature) ((qCompilerCpuFeatures & (Q_UINT64_C(1) << CpuFeature ## feature)) \ + || (qCpuFeatures() & (Q_UINT64_C(1) << CpuFeature ## feature))) + +#define ALIGNMENT_PROLOGUE_16BYTES(ptr, i, length) \ + for (; i < static_cast(qMin(static_cast(length), ((4 - ((reinterpret_cast(ptr) >> 2) & 0x3)) & 0x3))); ++i) + +#define ALIGNMENT_PROLOGUE_32BYTES(ptr, i, length) \ + for (; i < static_cast(qMin(static_cast(length), ((8 - ((reinterpret_cast(ptr) >> 2) & 0x7)) & 0x7))); ++i) + +#define SIMD_EPILOGUE(i, length, max) \ + for (int _i = 0; _i < max && i < length; ++i, ++_i) + +QT_END_NAMESPACE + +#endif // QSIMD_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsimplecodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsimplecodec_p.h new file mode 100644 index 000000000..188c3f3cb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsimplecodec_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIMPLECODEC_P_H +#define QSIMPLECODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qtextcodec.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_TEXTCODEC + +template class QAtomicPointer; + +class QSimpleTextCodec: public QTextCodec +{ +public: + enum { numSimpleCodecs = 30 }; + explicit QSimpleTextCodec(int); + ~QSimpleTextCodec(); + + QString convertToUnicode(const char *, int, ConverterState *) const override; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override; + + QByteArray name() const override; + QList aliases() const override; + int mibEnum() const override; + +private: + int forwardIndex; + mutable QAtomicPointer reverseMap; +}; + +#endif // QT_NO_TEXTCODEC + +QT_END_NAMESPACE + +#endif // QSIMPLECODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsjiscodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsjiscodec_p.h new file mode 100644 index 000000000..7dfa6f7fe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsjiscodec_p.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Most of the code here was originally written by Serika Kurusugawa +// a.k.a. Junji Takagi, and is included in Qt with the author's permission, +// and the grateful thanks of the Qt team. + +/* + * Copyright (C) 1999 Serika Kurusugawa, All rights reserved. + * + * 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 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 REGENTS 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 QSJISCODEC_P_H +#define QSJISCODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qjpunicode_p.h" +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_BIG_CODECS + +class QSjisCodec : public QTextCodec { +public: + static QByteArray _name(); + static QList _aliases(); + static int _mibEnum(); + + QByteArray name() const { return _name(); } + QList aliases() const { return _aliases(); } + int mibEnum() const { return _mibEnum(); } + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; + + QSjisCodec(); + ~QSjisCodec(); + +protected: + const QJpUnicodeConv *conv; +}; + +#endif // QT_NO_BIG_CODECS + +QT_END_NAMESPACE + +#endif // QSJISCODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstate_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstate_p.h new file mode 100644 index 000000000..7fb40392e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstate_p.h @@ -0,0 +1,127 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTATE_P_H +#define QSTATE_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 "qstate.h" +#include "private/qabstractstate_p.h" + +#include +#include +#include +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_PROPERTIES + +struct QPropertyAssignment +{ + QPropertyAssignment() + : object(0), explicitlySet(true) {} + QPropertyAssignment(QObject *o, const QByteArray &n, + const QVariant &v, bool es = true) + : object(o), propertyName(n), value(v), explicitlySet(es) + {} + + bool objectDeleted() const { return !object; } + void write() const { Q_ASSERT(object != 0); object->setProperty(propertyName, value); } + bool hasTarget(QObject *o, const QByteArray &pn) const + { return object == o && propertyName == pn; } + + QPointer object; + QByteArray propertyName; + QVariant value; + bool explicitlySet; // false means the property is being restored to its old value +}; +Q_DECLARE_TYPEINFO(QPropertyAssignment, Q_MOVABLE_TYPE); + +#endif // QT_NO_PROPERTIES + +class QAbstractTransition; +class QHistoryState; + +class QState; +class Q_CORE_EXPORT QStatePrivate : public QAbstractStatePrivate +{ + Q_DECLARE_PUBLIC(QState) +public: + QStatePrivate(); + ~QStatePrivate(); + + static QStatePrivate *get(QState *q) { return q ? q->d_func() : 0; } + static const QStatePrivate *get(const QState *q) { return q? q->d_func() : 0; } + + QList childStates() const; + QList historyStates() const; + QList transitions() const; + + void emitFinished(); + void emitPropertiesAssigned(); + + QAbstractState *errorState; + QAbstractState *initialState; + QState::ChildMode childMode; + mutable bool childStatesListNeedsRefresh; + mutable bool transitionsListNeedsRefresh; + mutable QList childStatesList; + mutable QList transitionsList; + +#ifndef QT_NO_PROPERTIES + QVector propertyAssignments; +#endif +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstatemachine_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstatemachine_p.h new file mode 100644 index 000000000..c28b16230 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstatemachine_p.h @@ -0,0 +1,337 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTATEMACHINE_P_H +#define QSTATEMACHINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qstate_p.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QEvent; +#if QT_CONFIG(qeventtransition) +class QEventTransition; +#endif +class QSignalEventGenerator; +class QSignalTransition; +class QAbstractState; +class QAbstractTransition; +class QFinalState; +class QHistoryState; +class QState; + +#if QT_CONFIG(animation) +class QAbstractAnimation; +#endif + +struct CalculationCache; +class QStateMachine; +class Q_CORE_EXPORT QStateMachinePrivate : public QStatePrivate +{ + Q_DECLARE_PUBLIC(QStateMachine) +public: + enum State { + NotRunning, + Starting, + Running + }; + enum EventProcessingMode { + DirectProcessing, + QueuedProcessing + }; + enum StopProcessingReason { + EventQueueEmpty, + Finished, + Stopped + }; + + QStateMachinePrivate(); + ~QStateMachinePrivate(); + + static QStateMachinePrivate *get(QStateMachine *q) + { return q ? q->d_func() : 0; } + + QState *findLCA(const QList &states, bool onlyCompound = false) const; + QState *findLCCA(const QList &states) const; + + static bool transitionStateEntryLessThan(QAbstractTransition *t1, QAbstractTransition *t2); + static bool stateEntryLessThan(QAbstractState *s1, QAbstractState *s2); + static bool stateExitLessThan(QAbstractState *s1, QAbstractState *s2); + + QAbstractState *findErrorState(QAbstractState *context); + void setError(QStateMachine::Error error, QAbstractState *currentContext); + + // private slots + void _q_start(); + void _q_process(); +#if QT_CONFIG(animation) + void _q_animationFinished(); +#endif + void _q_startDelayedEventTimer(int id, int delay); + void _q_killDelayedEventTimer(int id, int timerId); + + QState *rootState() const; + + void clearHistory(); + QAbstractTransition *createInitialTransition() const; + + void removeConflictingTransitions(QList &enabledTransitions, CalculationCache *cache); + void microstep(QEvent *event, const QList &transitionList, CalculationCache *cache); + QList selectTransitions(QEvent *event, CalculationCache *cache); + virtual void noMicrostep(); + virtual void processedPendingEvents(bool didChange); + virtual void beginMacrostep(); + virtual void endMacrostep(bool didChange); + virtual void exitInterpreter(); + virtual void exitStates(QEvent *event, const QList &statesToExit_sorted, + const QHash > &assignmentsForEnteredStates); + QList computeExitSet(const QList &enabledTransitions, CalculationCache *cache); + QSet computeExitSet_Unordered(const QList &enabledTransitions, CalculationCache *cache); + QSet computeExitSet_Unordered(QAbstractTransition *t, CalculationCache *cache); + void executeTransitionContent(QEvent *event, const QList &transitionList); + virtual void enterStates(QEvent *event, const QList &exitedStates_sorted, + const QList &statesToEnter_sorted, + const QSet &statesForDefaultEntry, + QHash > &propertyAssignmentsForState +#if QT_CONFIG(animation) + , const QList &selectedAnimations +#endif + ); + QList computeEntrySet(const QList &enabledTransitions, + QSet &statesForDefaultEntry, CalculationCache *cache); + QAbstractState *getTransitionDomain(QAbstractTransition *t, + const QList &effectiveTargetStates, + CalculationCache *cache) const; + void addDescendantStatesToEnter(QAbstractState *state, + QSet &statesToEnter, + QSet &statesForDefaultEntry); + void addAncestorStatesToEnter(QAbstractState *s, QAbstractState *ancestor, + QSet &statesToEnter, + QSet &statesForDefaultEntry); + + static QState *toStandardState(QAbstractState *state); + static const QState *toStandardState(const QAbstractState *state); + static QFinalState *toFinalState(QAbstractState *state); + static QHistoryState *toHistoryState(QAbstractState *state); + + bool isInFinalState(QAbstractState *s) const; + static bool isFinal(const QAbstractState *s); + static bool isParallel(const QAbstractState *s); + bool isCompound(const QAbstractState *s) const; + bool isAtomic(const QAbstractState *s) const; + + void goToState(QAbstractState *targetState); + + void registerTransitions(QAbstractState *state); + void maybeRegisterTransition(QAbstractTransition *transition); + void registerTransition(QAbstractTransition *transition); + void maybeRegisterSignalTransition(QSignalTransition *transition); + void registerSignalTransition(QSignalTransition *transition); + void unregisterSignalTransition(QSignalTransition *transition); + void registerMultiThreadedSignalTransitions(); +#if QT_CONFIG(qeventtransition) + void maybeRegisterEventTransition(QEventTransition *transition); + void registerEventTransition(QEventTransition *transition); + void unregisterEventTransition(QEventTransition *transition); + void handleFilteredEvent(QObject *watched, QEvent *event); +#endif + void unregisterTransition(QAbstractTransition *transition); + void unregisterAllTransitions(); + void handleTransitionSignal(QObject *sender, int signalIndex, + void **args); + + void postInternalEvent(QEvent *e); + void postExternalEvent(QEvent *e); + QEvent *dequeueInternalEvent(); + QEvent *dequeueExternalEvent(); + bool isInternalEventQueueEmpty(); + bool isExternalEventQueueEmpty(); + void processEvents(EventProcessingMode processingMode); + void cancelAllDelayedEvents(); + + virtual void emitStateFinished(QState *forState, QFinalState *guiltyState); + virtual void startupHook(); + +#ifndef QT_NO_PROPERTIES + class RestorableId { + QPointer guard; + QObject *obj; + QByteArray prop; + // two overloads because friends can't have default arguments + friend uint qHash(const RestorableId &key, uint seed) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(std::declval()))) + { return qHash(qMakePair(key.obj, key.prop), seed); } + friend uint qHash(const RestorableId &key) Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(key, 0U))) + { return qHash(key, 0U); } + friend bool operator==(const RestorableId &lhs, const RestorableId &rhs) Q_DECL_NOTHROW + { return lhs.obj == rhs.obj && lhs.prop == rhs.prop; } + friend bool operator!=(const RestorableId &lhs, const RestorableId &rhs) Q_DECL_NOTHROW + { return !operator==(lhs, rhs); } + public: + explicit RestorableId(QObject *o, QByteArray p) Q_DECL_NOTHROW : guard(o), obj(o), prop(qMove(p)) {} + QObject *object() const Q_DECL_NOTHROW { return guard; } + QByteArray propertyName() const Q_DECL_NOTHROW { return prop; } + }; + QHash > registeredRestorablesForState; + bool hasRestorable(QAbstractState *state, QObject *object, const QByteArray &propertyName) const; + QVariant savedValueForRestorable(const QList &exitedStates_sorted, + QObject *object, const QByteArray &propertyName) const; + void registerRestorable(QAbstractState *state, QObject *object, const QByteArray &propertyName, + const QVariant &value); + void unregisterRestorables(const QList &states, QObject *object, + const QByteArray &propertyName); + QVector restorablesToPropertyList(const QHash &restorables) const; + QHash computePendingRestorables(const QList &statesToExit_sorted) const; + QHash > computePropertyAssignments( + const QList &statesToEnter_sorted, + QHash &pendingRestorables) const; +#endif + + State state; + bool processing; + bool processingScheduled; + bool stop; + StopProcessingReason stopProcessingReason; + QSet configuration; + QList internalEventQueue; + QList externalEventQueue; + QMutex internalEventMutex; + QMutex externalEventMutex; + + QStateMachine::Error error; + QState::RestorePolicy globalRestorePolicy; + + QString errorString; + QSet pendingErrorStates; + QSet pendingErrorStatesForDefaultEntry; + +#if QT_CONFIG(animation) + bool animated; + + struct InitializeAnimationResult { + QList handledAnimations; + QList localResetEndValues; + + void swap(InitializeAnimationResult &other) Q_DECL_NOTHROW + { + qSwap(handledAnimations, other.handledAnimations); + qSwap(localResetEndValues, other.localResetEndValues); + } + }; + + InitializeAnimationResult + initializeAnimation(QAbstractAnimation *abstractAnimation, + const QPropertyAssignment &prop); + + QHash > animationsForState; + QHash propertyForAnimation; + QHash stateForAnimation; + QSet resetAnimationEndValues; + + QList defaultAnimations; + QMultiHash defaultAnimationsForSource; + QMultiHash defaultAnimationsForTarget; + + QList selectAnimations(const QList &transitionList) const; + void terminateActiveAnimations(QAbstractState *state, + const QHash > &assignmentsForEnteredStates); + void initializeAnimations(QAbstractState *state, const QList &selectedAnimations, + const QList &exitedStates_sorted, + QHash > &assignmentsForEnteredStates); +#endif // QT_NO_ANIMATION + + QSignalEventGenerator *signalEventGenerator; + + QHash > connections; + QMutex connectionsMutex; +#if QT_CONFIG(qeventtransition) + QHash > qobjectEvents; +#endif + QFreeList delayedEventIdFreeList; + struct DelayedEvent { + QEvent *event; + int timerId; + DelayedEvent(QEvent *e, int tid) + : event(e), timerId(tid) {} + DelayedEvent() + : event(0), timerId(0) {} + }; + QHash delayedEvents; + QHash timerIdToDelayedEventId; + QMutex delayedEventsMutex; + + typedef QEvent* (*f_cloneEvent)(QEvent*); + struct Handler { + f_cloneEvent cloneEvent; + }; + + static const Handler *handler; +}; +#if QT_CONFIG(animation) +Q_DECLARE_SHARED(QStateMachinePrivate::InitializeAnimationResult) +#endif + +Q_CORE_EXPORT const QStateMachinePrivate::Handler *qcoreStateMachineHandler(); + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstorageinfo_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstorageinfo_p.h new file mode 100644 index 000000000..ec5bb785e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstorageinfo_p.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Ivan Komissarov +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTORAGEINFO_P_H +#define QSTORAGEINFO_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qstorageinfo.h" + +QT_BEGIN_NAMESPACE + +class QStorageInfoPrivate : public QSharedData +{ +public: + inline QStorageInfoPrivate() : QSharedData(), + bytesTotal(-1), bytesFree(-1), bytesAvailable(-1), blockSize(-1), + readOnly(false), ready(false), valid(false) + {} + + void initRootPath(); + void doStat(); + + static QList mountedVolumes(); + static QStorageInfo root(); + +protected: +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) + void retrieveVolumeInfo(); + void retrieveDiskFreeSpace(); +#elif defined(Q_OS_MAC) + void retrievePosixInfo(); + void retrieveUrlProperties(bool initRootPath = false); + void retrieveLabel(); +#elif defined(Q_OS_UNIX) + void retrieveVolumeInfo(); +#endif + +public: + QString rootPath; + QByteArray device; + QByteArray subvolume; + QByteArray fileSystemType; + QString name; + + qint64 bytesTotal; + qint64 bytesFree; + qint64 bytesAvailable; + int blockSize; + + bool readOnly; + bool ready; + bool valid; +}; + +QT_END_NAMESPACE + +#endif // QSTORAGEINFO_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstringalgorithms_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstringalgorithms_p.h new file mode 100644 index 000000000..c5470bc7a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstringalgorithms_p.h @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTRINGALGORITHMS_P_H +#define QSTRINGALGORITHMS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include "qstring.h" +#include "qlocale_p.h" // for ascii_isspace + +QT_BEGIN_NAMESPACE + +template struct QStringAlgorithms +{ + typedef typename StringType::value_type Char; + typedef typename StringType::size_type size_type; + typedef typename std::remove_cv::type NakedStringType; + static const bool isConst = std::is_const::value; + + static inline bool isSpace(char ch) { return ascii_isspace(ch); } + static inline bool isSpace(QChar ch) { return ch.isSpace(); } + + // Surrogate pairs are not handled in either of the functions below. That is + // not a problem because there are no space characters (Zs, Zl, Zp) outside the + // Basic Multilingual Plane. + + static inline StringType trimmed_helper_inplace(NakedStringType &str, const Char *begin, const Char *end) + { + // in-place trimming: + Char *data = const_cast(str.cbegin()); + if (begin != data) + memmove(data, begin, (end - begin) * sizeof(Char)); + str.resize(end - begin); + return qMove(str); + } + + static inline StringType trimmed_helper_inplace(const NakedStringType &, const Char *, const Char *) + { + // can't happen + Q_UNREACHABLE(); + return StringType(); + } + + static inline void trimmed_helper_positions(const Char *&begin, const Char *&end) + { + // skip white space from start + while (begin < end && isSpace(*begin)) + begin++; + // skip white space from end + if (begin < end) { + while (begin < end && isSpace(end[-1])) + end--; + } + } + + static inline StringType trimmed_helper(StringType &str) + { + const Char *begin = str.cbegin(); + const Char *end = str.cend(); + trimmed_helper_positions(begin, end); + + if (begin == str.cbegin() && end == str.cend()) + return str; + if (!isConst && str.isDetached()) + return trimmed_helper_inplace(str, begin, end); + return StringType(begin, end - begin); + } + + static inline StringType simplified_helper(StringType &str) + { + if (str.isEmpty()) + return str; + const Char *src = str.cbegin(); + const Char *end = str.cend(); + NakedStringType result = isConst || !str.isDetached() ? + StringType(str.size(), Qt::Uninitialized) : + qMove(str); + + Char *dst = const_cast(result.cbegin()); + Char *ptr = dst; + bool unmodified = true; + forever { + while (src != end && isSpace(*src)) + ++src; + while (src != end && !isSpace(*src)) + *ptr++ = *src++; + if (src == end) + break; + if (*src != QChar::Space) + unmodified = false; + *ptr++ = QChar::Space; + } + if (ptr != dst && ptr[-1] == QChar::Space) + --ptr; + + int newlen = ptr - dst; + if (isConst && newlen == str.size() && unmodified) { + // nothing happened, return the original + return str; + } + result.resize(newlen); + return result; + } +}; + +QT_END_NAMESPACE + +#endif // QSTRINGALGORITHMS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstringiterator_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstringiterator_p.h new file mode 100644 index 000000000..7cf59ae42 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qstringiterator_p.h @@ -0,0 +1,255 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTRINGITERATOR_H +#define QSTRINGITERATOR_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QStringIterator +{ + QString::const_iterator i, pos, e; + +public: + inline explicit QStringIterator(const QString &string) + : i(string.constBegin()), + pos(string.constBegin()), + e(string.constEnd()) + { + } + + inline explicit QStringIterator(const QChar *begin, const QChar *end) + : i(begin), + pos(begin), + e(end) + { + } + + inline explicit QStringIterator(const QChar *begin, int idx, const QChar *end) + : i(begin), + pos(begin + idx), + e(end) + { + } + + inline QString::const_iterator position() const + { + return pos; + } + + inline int index() const + { + return pos - i; + } + + inline void setPosition(QString::const_iterator position) + { + Q_ASSERT_X(i <= position && position <= e, Q_FUNC_INFO, "position out of bounds"); + pos = position; + } + + // forward iteration + + inline bool hasNext() const + { + return pos < e; + } + + inline void advance() + { + Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item"); + + if (Q_UNLIKELY((pos++)->isHighSurrogate())) { + if (Q_LIKELY(pos != e && pos->isLowSurrogate())) + ++pos; + } + } + + inline void advanceUnchecked() + { + Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item"); + + if (Q_UNLIKELY((pos++)->isHighSurrogate())) + ++pos; + } + + inline uint peekNextUnchecked() const + { + Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item"); + + if (Q_UNLIKELY(pos->isHighSurrogate())) + return QChar::surrogateToUcs4(pos[0], pos[1]); + + return pos->unicode(); + } + + inline uint peekNext(uint invalidAs = QChar::ReplacementCharacter) const + { + Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item"); + + if (Q_UNLIKELY(pos->isSurrogate())) { + if (Q_LIKELY(pos->isHighSurrogate())) { + const QChar *low = pos + 1; + if (Q_LIKELY(low != e && low->isLowSurrogate())) + return QChar::surrogateToUcs4(*pos, *low); + } + return invalidAs; + } + + return pos->unicode(); + } + + inline uint nextUnchecked() + { + Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item"); + + const QChar cur = *pos++; + if (Q_UNLIKELY(cur.isHighSurrogate())) + return QChar::surrogateToUcs4(cur, *pos++); + return cur.unicode(); + } + + inline uint next(uint invalidAs = QChar::ReplacementCharacter) + { + Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item"); + + const QChar uc = *pos++; + if (Q_UNLIKELY(uc.isSurrogate())) { + if (Q_LIKELY(uc.isHighSurrogate() && pos < e && pos->isLowSurrogate())) + return QChar::surrogateToUcs4(uc, *pos++); + return invalidAs; + } + + return uc.unicode(); + } + + // backwards iteration + + inline bool hasPrevious() const + { + return pos > i; + } + + inline void recede() + { + Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item"); + + if (Q_UNLIKELY((--pos)->isLowSurrogate())) { + const QChar *high = pos - 1; + if (Q_LIKELY(high != i - 1 && high->isHighSurrogate())) + --pos; + } + } + + inline void recedeUnchecked() + { + Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item"); + + if (Q_UNLIKELY((--pos)->isLowSurrogate())) + --pos; + } + + inline uint peekPreviousUnchecked() const + { + Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item"); + + if (Q_UNLIKELY(pos[-1].isLowSurrogate())) + return QChar::surrogateToUcs4(pos[-2], pos[-1]); + return pos[-1].unicode(); + } + + inline uint peekPrevious(uint invalidAs = QChar::ReplacementCharacter) const + { + Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item"); + + if (Q_UNLIKELY(pos[-1].isSurrogate())) { + if (Q_LIKELY(pos[-1].isLowSurrogate())) { + const QChar *high = pos - 2; + if (Q_LIKELY(high != i - 1 && high->isHighSurrogate())) + return QChar::surrogateToUcs4(*high, pos[-1]); + } + return invalidAs; + } + + return pos[-1].unicode(); + } + + inline uint previousUnchecked() + { + Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item"); + + const QChar cur = *--pos; + if (Q_UNLIKELY(cur.isLowSurrogate())) + return QChar::surrogateToUcs4(*--pos, cur); + return cur.unicode(); + } + + inline uint previous(uint invalidAs = QChar::ReplacementCharacter) + { + Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item"); + + const QChar uc = *--pos; + if (Q_UNLIKELY(uc.isSurrogate())) { + if (Q_LIKELY(uc.isLowSurrogate() && pos > i && pos[-1].isHighSurrogate())) + return QChar::surrogateToUcs4(*--pos, uc); + return invalidAs; + } + + return uc.unicode(); + } +}; + +QT_END_NAMESPACE + +#endif // QSTRINGITERATOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsystemerror_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsystemerror_p.h new file mode 100644 index 000000000..1d8c253f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsystemerror_p.h @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSYSTEMERROR_P_H +#define QSYSTEMERROR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QSystemError +{ +public: + enum ErrorScope + { + NoError, + StandardLibraryError, + NativeError + }; + + inline QSystemError(int error, ErrorScope scope); + inline QSystemError(); + + inline QString toString() const; + inline ErrorScope scope() const; + inline int error() const; + + static QString string(ErrorScope errorScope, int errorCode); + static QString stdString(int errorCode = -1); +#ifdef Q_OS_WIN + static QString windowsString(int errorCode = -1); +#endif + + //data members + int errorCode; + ErrorScope errorScope; +}; + +QSystemError::QSystemError(int error, QSystemError::ErrorScope scope) +: errorCode(error), errorScope(scope) +{ + +} + +QSystemError::QSystemError() +: errorCode(0), errorScope(NoError) +{ + +} + +QString QSystemError::toString() const +{ + return string(errorScope, errorCode); +} + +QSystemError::ErrorScope QSystemError::scope() const +{ + return errorScope; +} + +int QSystemError::error() const +{ + return errorCode; +} + +QT_END_NAMESPACE + +#endif // QSYSTEMERROR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsystemlibrary_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsystemlibrary_p.h new file mode 100644 index 000000000..4e093c0b7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsystemlibrary_p.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSYSTEMLIBRARY_P_H +#define QSYSTEMLIBRARY_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 +#ifdef Q_OS_WIN +# include +# include + +QT_BEGIN_NAMESPACE + +class QSystemLibrary +{ +public: + explicit QSystemLibrary(const QString &libraryName) + { + m_libraryName = libraryName; + m_handle = 0; + m_didLoad = false; + } + + explicit QSystemLibrary(const wchar_t *libraryName) + { + m_libraryName = QString::fromWCharArray(libraryName); + m_handle = 0; + m_didLoad = false; + } + + bool load(bool onlySystemDirectory = true) + { + m_handle = load((const wchar_t *)m_libraryName.utf16(), onlySystemDirectory); + m_didLoad = true; + return (m_handle != 0); + } + + bool isLoaded() + { + return (m_handle != 0); + } + + QFunctionPointer resolve(const char *symbol) + { + if (!m_didLoad) + load(); + if (!m_handle) + return 0; + return QFunctionPointer(GetProcAddress(m_handle, symbol)); + } + + static QFunctionPointer resolve(const QString &libraryName, const char *symbol) + { + return QSystemLibrary(libraryName).resolve(symbol); + } + + static Q_CORE_EXPORT HINSTANCE load(const wchar_t *lpFileName, bool onlySystemDirectory = true); +private: + HINSTANCE m_handle; + QString m_libraryName; + bool m_didLoad; +}; + +QT_END_NAMESPACE + +#endif //Q_OS_WIN + +#endif //QSYSTEMLIBRARY_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsystemsemaphore_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsystemsemaphore_p.h new file mode 100644 index 000000000..3b55d8027 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qsystemsemaphore_p.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSYSTEMSEMAPHORE_P_H +#define QSYSTEMSEMAPHORE_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 "qsystemsemaphore.h" + +#ifndef QT_NO_SYSTEMSEMAPHORE + +#include "qsharedmemory_p.h" +#include +#ifdef QT_POSIX_IPC +# include +#endif + +QT_BEGIN_NAMESPACE + +class QSystemSemaphorePrivate +{ + +public: + QSystemSemaphorePrivate(); + + QString makeKeyFileName() + { + return QSharedMemoryPrivate::makePlatformSafeKey(key, QLatin1String("qipc_systemsem_")); + } + + inline void setError(QSystemSemaphore::SystemSemaphoreError e, const QString &message) + { error = e; errorString = message; } + inline void clearError() + { setError(QSystemSemaphore::NoError, QString()); } + +#ifdef Q_OS_WIN + Qt::HANDLE handle(QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); + void setErrorString(const QString &function); +#elif defined(QT_POSIX_IPC) + bool handle(QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); + void setErrorString(const QString &function); +#else + key_t handle(QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); + void setErrorString(const QString &function); +#endif + void cleanHandle(); + bool modifySemaphore(int count); + + QString key; + QString fileName; + int initialValue; +#ifdef Q_OS_WIN + Qt::HANDLE semaphore; + Qt::HANDLE semaphoreLock; +#elif defined(QT_POSIX_IPC) + sem_t *semaphore; + bool createdSemaphore; +#else + key_t unix_key; + int semaphore; + bool createdFile; + bool createdSemaphore; +#endif + QString errorString; + QSystemSemaphore::SystemSemaphoreError error; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SYSTEMSEMAPHORE + +#endif // QSYSTEMSEMAPHORE_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qt_pch.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qt_pch.h new file mode 100644 index 000000000..b3b526342 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qt_pch.h @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* + * This is a precompiled header file for use in Xcode / Mac GCC / + * GCC >= 3.4 / VC to greatly speed the building of Qt. It may also be + * of use to people developing their own project, but it is probably + * better to define your own header. Use of this header is currently + * UNSUPPORTED. + */ + + +#if defined __cplusplus +// for rand_s, _CRT_RAND_S must be #defined before #including stdlib.h. +// put it at the beginning so some indirect inclusion doesn't break it +#ifndef _CRT_RAND_S +#define _CRT_RAND_S +#endif +#include +#include +#ifdef Q_OS_WIN +# define _POSIX_ +# include +# undef _POSIX_ +#endif +#include +#include +#include /* All moc genereated code has this include */ +#include +#include +#include +#include +#include +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtcore-config_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtcore-config_p.h new file mode 100644 index 000000000..bb6702fea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtcore-config_p.h @@ -0,0 +1,16 @@ +#define QT_FEATURE_clock_gettime -1 +#define QT_FEATURE_datetimeparser 1 +#define QT_FEATURE_dlopen -1 +#define QT_FEATURE_doubleconversion 1 +#define QT_FEATURE_glib -1 +#define QT_FEATURE_gnu_libiconv -1 +#define QT_FEATURE_icu -1 +#define QT_FEATURE_posix_libiconv -1 +#define QT_FEATURE_iconv -1 +#define QT_FEATURE_inotify -1 +#define QT_FEATURE_journald -1 +#define QT_FEATURE_sha3_fast 1 +#define QT_FEATURE_slog2 -1 +#define QT_FEATURE_syslog -1 +#define QT_FEATURE_system_doubleconversion -1 +#define QT_FEATURE_system_pcre2 -1 diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtemporaryfile_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtemporaryfile_p.h new file mode 100644 index 000000000..7f365f0e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtemporaryfile_p.h @@ -0,0 +1,121 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEMPORARYFILE_P_H +#define QTEMPORARYFILE_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 + +#ifndef QT_NO_TEMPORARYFILE + +#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(); + explicit QTemporaryFilePrivate(const QString &templateNameIn); + ~QTemporaryFilePrivate(); + + QAbstractFileEngine *engine() const override; + void resetFileEngine() const; + + bool autoRemove = true; + QString templateName = defaultTemplateName(); + + static QString defaultTemplateName(); + + friend class QLockFilePrivate; +}; + +class QTemporaryFileEngine : public QFSFileEngine +{ + Q_DECLARE_PRIVATE(QFSFileEngine) +public: + void initialize(const QString &file, quint32 mode, bool nameIsTemplate = true) + { + Q_D(QFSFileEngine); + Q_ASSERT(!isReallyOpen()); + fileMode = mode; + filePathIsTemplate = filePathWasTemplate = nameIsTemplate; + d->fileEntry = QFileSystemEntry(file); + + if (!filePathIsTemplate) + QFSFileEngine::setFileName(file); + } + ~QTemporaryFileEngine(); + + bool isReallyOpen() const; + void setFileName(const QString &file) override; + void setFileTemplate(const QString &fileTemplate); + + bool open(QIODevice::OpenMode flags) override; + bool remove() override; + bool rename(const QString &newName) override; + bool renameOverwrite(const QString &newName) override; + bool close() override; + + quint32 fileMode; + bool filePathIsTemplate; + bool filePathWasTemplate; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_TEMPORARYFILE + +#endif /* QTEMPORARYFILE_P_H */ + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtextcodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtextcodec_p.h new file mode 100644 index 000000000..f3c2d090c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtextcodec_p.h @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTCODEC_P_H +#define QTEXTCODEC_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 QTextCodec class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qtextcodec.h" +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_TEXTCODEC + +#if defined(Q_OS_MAC) || defined(Q_OS_ANDROID) || defined(Q_OS_QNX) +#define QT_LOCALE_IS_UTF8 +#endif + +typedef void (*QTextCodecStateFreeFunction)(QTextCodec::ConverterState*); + +struct QTextCodecUnalignedPointer +{ + static inline QTextCodecStateFreeFunction decode(const uint *src) + { + quintptr data; + memcpy(&data, src, sizeof(data)); + return reinterpret_cast(data); + } + static inline void encode(uint *dst, QTextCodecStateFreeFunction fn) + { + quintptr data = reinterpret_cast(fn); + memcpy(dst, &data, sizeof(data)); + } +}; + +bool qTextCodecNameMatch(const char *a, const char *b); + +#else + +class QTextCodec +{ +public: + enum ConversionFlag { + DefaultConversion, + ConvertInvalidToNull = 0x80000000, + IgnoreHeader = 0x1, + FreeFunction = 0x2 + }; + Q_DECLARE_FLAGS(ConversionFlags, ConversionFlag) + + struct ConverterState { + ConverterState(ConversionFlags f = DefaultConversion) + : flags(f), remainingChars(0), invalidChars(0), d(0) { state_data[0] = state_data[1] = state_data[2] = 0; } + ~ConverterState() { } + ConversionFlags flags; + int remainingChars; + int invalidChars; + uint state_data[3]; + void *d; + private: + Q_DISABLE_COPY(ConverterState) + }; +}; + +#endif //QT_NO_TEXTCODEC + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtextstream_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtextstream_p.h new file mode 100644 index 000000000..a642beddc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtextstream_p.h @@ -0,0 +1,200 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 +#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: + // streaming parameters + class Params + { + public: + void reset(); + + int realNumberPrecision; + int integerBase; + int fieldWidth; + QChar padChar; + QTextStream::FieldAlignment fieldAlignment; + QTextStream::RealNumberNotation realNumberNotation; + QTextStream::NumberFlags numberFlags; + }; + + QTextStreamPrivate(QTextStream *q_ptr); + ~QTextStreamPrivate(); + void reset(); + + // device + QIODevice *device; +#ifndef QT_NO_QOBJECT + QDeviceClosedNotifier deviceClosedNotifier; +#endif + + // string + QString *string; + int stringOffset; + QIODevice::OpenMode stringOpenMode; + +#ifndef QT_NO_TEXTCODEC + // codec + QTextCodec *codec; + QTextCodec::ConverterState readConverterState; + QTextCodec::ConverterState writeConverterState; + QTextCodec::ConverterState *readConverterSavedState; +#endif + + QString writeBuffer; + QString readBuffer; + int readBufferOffset; + int readConverterSavedStateOffset; //the offset between readBufferStartDevicePos and that start of the buffer + qint64 readBufferStartDevicePos; + + Params params; + + // status + QTextStream::Status status; + QLocale locale; + QTextStream *q_ptr; + + int lastTokenSize; + bool deleteDevice; +#ifndef QT_NO_TEXTCODEC + 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(); + + // 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) { write(data.begin(), data.length()); } + inline void write(QChar ch); + void write(const QChar *data, int len); + void write(QLatin1String data); + void writePadding(int len); + inline void putString(const QString &ch, bool number = false) { putString(ch.constData(), ch.length(), number); } + void putString(const QChar *data, int len, bool number = false); + void putString(QLatin1String data, bool number = false); + inline void putChar(QChar ch); + void putNumber(qulonglong number, bool negative); + + struct PaddingResult { + int left, right; + }; + PaddingResult padding(int len) const; + + // buffers + bool fillReadBuffer(qint64 maxBytes = -1); + void resetReadBuffer(); + void flushWriteBuffer(); +}; + +QT_END_NAMESPACE + +#endif // QTEXTSTREAM_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qthread_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qthread_p.h new file mode 100644 index 000000000..885b4c0c1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qthread_p.h @@ -0,0 +1,325 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTHREAD_P_H +#define QTHREAD_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 "qplatformdefs.h" +#include "QtCore/qthread.h" +#include "QtCore/qmutex.h" +#include "QtCore/qstack.h" +#include "QtCore/qwaitcondition.h" +#include "QtCore/qmap.h" +#include "QtCore/qcoreapplication.h" +#include "private/qobject_p.h" + +#include + +#ifdef Q_OS_WINRT +namespace ABI { + namespace Windows { + namespace Foundation { + struct IAsyncAction; + } + } +} +#endif // Q_OS_WINRT + +QT_BEGIN_NAMESPACE + +class QAbstractEventDispatcher; +class QEventLoop; + +class QPostEvent +{ +public: + QObject *receiver; + QEvent *event; + int priority; + inline QPostEvent() + : receiver(0), event(0), priority(0) + { } + inline QPostEvent(QObject *r, QEvent *e, int p) + : receiver(r), event(e), priority(p) + { } +}; +Q_DECLARE_TYPEINFO(QPostEvent, Q_MOVABLE_TYPE); + +inline bool operator<(const QPostEvent &first, const QPostEvent &second) +{ + return first.priority > second.priority; +} + +// This class holds the list of posted events. +// The list has to be kept sorted by priority +class QPostEventList : public QVector +{ +public: + // recursion == recursion count for sendPostedEvents() + int recursion; + + // sendOffset == the current event to start sending + int startOffset; + // insertionOffset == set by sendPostedEvents to tell postEvent() where to start insertions + int insertionOffset; + + QMutex mutex; + + inline QPostEventList() + : QVector(), recursion(0), startOffset(0), insertionOffset(0) + { } + + void addEvent(const QPostEvent &ev) { + int priority = ev.priority; + if (isEmpty() || + constLast().priority >= priority || + insertionOffset >= size()) { + // optimization: we can simply append if the last event in + // the queue has higher or equal priority + append(ev); + } else { + // insert event in descending priority order, using upper + // bound for a given priority (to ensure proper ordering + // of events with the same priority) + QPostEventList::iterator at = std::upper_bound(begin() + insertionOffset, end(), ev); + insert(at, ev); + } + } +private: + //hides because they do not keep that list sorted. addEvent must be used + using QVector::append; + using QVector::insert; +}; + +#ifndef QT_NO_THREAD + +class Q_CORE_EXPORT QDaemonThread : public QThread +{ +public: + QDaemonThread(QObject *parent = 0); + ~QDaemonThread(); +}; + +class QThreadPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QThread) + +public: + QThreadPrivate(QThreadData *d = 0); + ~QThreadPrivate(); + + void setPriority(QThread::Priority prio); + + mutable QMutex mutex; + QAtomicInt quitLockRef; + + bool running; + bool finished; + bool isInFinish; //when in QThreadPrivate::finish + bool interruptionRequested; + + bool exited; + int returnCode; + + uint stackSize; + QThread::Priority priority; + + static QThread *threadForId(int id); + +#ifdef Q_OS_UNIX + QWaitCondition thread_done; + + static void *start(void *arg); + static void finish(void *); + +#endif // Q_OS_UNIX + +#ifdef Q_OS_WIN + static unsigned int __stdcall start(void *); + static void finish(void *, bool lockAnyway=true); + + Qt::HANDLE handle; + unsigned int id; + int waiters; + bool terminationEnabled, terminatePending; +#endif // Q_OS_WIN + QThreadData *data; + + static void createEventDispatcher(QThreadData *data); + + void ref() + { + quitLockRef.ref(); + } + + void deref() + { + if (!quitLockRef.deref() && running) { + QCoreApplication::instance()->postEvent(q_ptr, new QEvent(QEvent::Quit)); + } + } +}; + +#else // QT_NO_THREAD + +class QThreadPrivate : public QObjectPrivate +{ +public: + QThreadPrivate(QThreadData *d = 0) : data(d ? d : new QThreadData) {} + ~QThreadPrivate() { delete data; } + + QThreadData *data; + + static void setCurrentThread(QThread*) {} + static QThread *threadForId(int) { return QThread::currentThread(); } + static void createEventDispatcher(QThreadData *data); + + void ref() {} + void deref() {} + + Q_DECLARE_PUBLIC(QThread) +}; + +#endif // QT_NO_THREAD + +class QThreadData +{ +public: + QThreadData(int initialRefCount = 1); + ~QThreadData(); + + static Q_AUTOTEST_EXPORT QThreadData *current(bool createIfNecessary = true); + static void clearCurrentThreadData(); + static QThreadData *get2(QThread *thread) + { Q_ASSERT_X(thread != 0, "QThread", "internal error"); return thread->d_func()->data; } + + + void ref(); + void deref(); + inline bool hasEventDispatcher() const + { return eventDispatcher.load() != 0; } + + bool canWaitLocked() + { + QMutexLocker locker(&postEventList.mutex); + return canWait; + } + + // This class provides per-thread (by way of being a QThreadData + // member) storage for qFlagLocation() + class FlaggedDebugSignatures + { + static const uint Count = 2; + + uint idx; + const char* locations[Count]; + + public: + FlaggedDebugSignatures() : idx(0) + { std::fill_n(locations, Count, static_cast(0)); } + + void store(const char* method) + { locations[idx++ % Count] = method; } + + bool contains(const char *method) const + { return std::find(locations, locations + Count, method) != locations + Count; } + }; + +private: + QAtomicInt _ref; + +public: + int loopLevel; + int scopeLevel; + + QStack eventLoops; + QPostEventList postEventList; + QAtomicPointer thread; + QAtomicPointer threadId; + QAtomicPointer eventDispatcher; + QVector tls; + FlaggedDebugSignatures flaggedSignatures; + + bool quitNow; + bool canWait; + bool isAdopted; + bool requiresCoreApplication; +}; + +class QScopedScopeLevelCounter +{ + QThreadData *threadData; +public: + inline QScopedScopeLevelCounter(QThreadData *threadData) + : threadData(threadData) + { ++threadData->scopeLevel; } + inline ~QScopedScopeLevelCounter() + { --threadData->scopeLevel; } +}; + +// thread wrapper for the main() thread +class QAdoptedThread : public QThread +{ + Q_DECLARE_PRIVATE(QThread) + +public: + QAdoptedThread(QThreadData *data = 0); + ~QAdoptedThread(); + void init(); + +private: + void run() Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif // QTHREAD_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qthreadpool_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qthreadpool_p.h new file mode 100644 index 000000000..18b89bbba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qthreadpool_p.h @@ -0,0 +1,186 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTHREADPOOL_P_H +#define QTHREADPOOL_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/qmutex.h" +#include "QtCore/qwaitcondition.h" +#include "QtCore/qset.h" +#include "QtCore/qqueue.h" +#include "private/qobject_p.h" + +#ifndef QT_NO_THREAD + +QT_BEGIN_NAMESPACE + +class QueuePage { +public: + enum { + MaxPageSize = 256 + }; + + QueuePage(QRunnable *runnable, int pri) + : m_priority(pri) + { + push(runnable); + } + + bool isFull() { + return m_lastIndex >= MaxPageSize - 1; + } + + bool isFinished() { + return m_firstIndex > m_lastIndex; + } + + void push(QRunnable *runnable) { + Q_ASSERT(runnable != nullptr); + Q_ASSERT(!isFull()); + m_lastIndex += 1; + m_entries[m_lastIndex] = runnable; + } + + void skipToNextOrEnd() { + while (!isFinished() && m_entries[m_firstIndex] == nullptr) { + m_firstIndex += 1; + } + } + + QRunnable *first() { + Q_ASSERT(!isFinished()); + QRunnable *runnable = m_entries[m_firstIndex]; + Q_ASSERT(runnable); + return runnable; + } + + QRunnable *pop() { + Q_ASSERT(!isFinished()); + QRunnable *runnable = first(); + Q_ASSERT(runnable); + + // clear the entry although this should not be necessary + m_entries[m_firstIndex] = nullptr; + m_firstIndex += 1; + + // make sure the next runnable returned by first() is not a nullptr + skipToNextOrEnd(); + + return runnable; + } + + bool tryTake(QRunnable *runnable) { + Q_ASSERT(!isFinished()); + for (int i = m_firstIndex; i <= m_lastIndex; i++) { + if (m_entries[i] == runnable) { + m_entries[i] = nullptr; + if (i == m_firstIndex) { + // make sure first() does not return a nullptr + skipToNextOrEnd(); + } + return true; + } + } + return false; + } + + int priority() const { + return m_priority; + } + +private: + int m_priority = 0; + int m_firstIndex = 0; + int m_lastIndex = -1; + QRunnable *m_entries[MaxPageSize]; +}; + +class QThreadPoolThread; +class Q_CORE_EXPORT QThreadPoolPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QThreadPool) + friend class QThreadPoolThread; + +public: + QThreadPoolPrivate(); + + bool tryStart(QRunnable *task); + void enqueueTask(QRunnable *task, int priority = 0); + int activeThreadCount() const; + + void tryToStartMoreThreads(); + bool tooManyThreadsActive() const; + + void startThread(QRunnable *runnable = 0); + void reset(); + bool waitForDone(int msecs); + void clear(); + void stealAndRunRunnable(QRunnable *runnable); + void deletePageIfFinished(QueuePage *page); + + mutable QMutex mutex; + QList allThreads; + QQueue waitingThreads; + QQueue expiredThreads; + QVector queue; + QWaitCondition noActiveThreads; + + bool isExiting; + int expiryTimeout; + int maxThreadCount; + int reservedThreads; + int activeThreads; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_THREAD +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtimerinfo_unix_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtimerinfo_unix_p.h new file mode 100644 index 000000000..7bd6f16ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtimerinfo_unix_p.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTIMERINFO_UNIX_P_H +#define QTIMERINFO_UNIX_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 + +// #define QTIMERINFO_DEBUG + +#include "qabstracteventdispatcher.h" + +#include // struct timeval + +QT_BEGIN_NAMESPACE + +// internal timer info +struct QTimerInfo { + int id; // - timer identifier + int interval; // - timer interval in milliseconds + Qt::TimerType timerType; // - timer type + timespec timeout; // - when to actually fire + QObject *obj; // - object to receive event + QTimerInfo **activateRef; // - ref from activateTimers + +#ifdef QTIMERINFO_DEBUG + timeval expected; // when timer is expected to fire + float cumulativeError; + uint count; +#endif +}; + +class Q_CORE_EXPORT QTimerInfoList : public QList +{ +#if ((_POSIX_MONOTONIC_CLOCK-0 <= 0) && !defined(Q_OS_MAC)) || defined(QT_BOOTSTRAPPED) + timespec previousTime; + clock_t previousTicks; + int ticksPerSecond; + int msPerTick; + + bool timeChanged(timespec *delta); + void timerRepair(const timespec &); +#endif + + // state variables used by activateTimers() + QTimerInfo *firstTimerInfo; + +public: + QTimerInfoList(); + + timespec currentTime; + timespec updateCurrentTime(); + + // must call updateCurrentTime() first! + void repairTimersIfNeeded(); + + bool timerWait(timespec &); + void timerInsert(QTimerInfo *); + + int timerRemainingTime(int timerId); + + void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object); + bool unregisterTimer(int timerId); + bool unregisterTimers(QObject *object); + QList registeredTimers(QObject *object) const; + + int activateTimers(); +}; + +QT_END_NAMESPACE + +#endif // QTIMERINFO_UNIX_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtimezoneprivate_data_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtimezoneprivate_data_p.h new file mode 100644 index 000000000..6bbcb0e2c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtimezoneprivate_data_p.h @@ -0,0 +1,1153 @@ +/**************************************************************************** +** +** Copyright (C) 2013 John Layt +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QTIMEZONEPRIVATE_DATA_P_H +#define QTIMEZONEPRIVATE_DATA_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +/* + Windows Zone ID support, included in default base class build so can be used on all platforms, + e.g. an app running on Linux may need to communicate with a Windows Outlook server. These + tables can also be used to look-up Region Codes and UTC Offsets on platforms that don't directly + support them., e.g. Mac does not support availableTimeZones() filtering by region or offset. + + Another data table is provided for generic UTC+00:00 format time zones to be used as a + fall-back if no system time zones are available (QT_NO_SYSTEMLOCALE is set) or for QDateTimes + with a QT:Spec of OffsetFromUTC + + These tables are automatically adapted from the CLDR supplemental/windowsZones.xml data file + using a script in qtbase/util/local_database. Please do not edit this data directly. In the + future if ICU is made a hard dependency then the ICU resource can be used directly and this + table removed +*/ + +struct QZoneData { + quint16 windowsIdKey; // Windows ID Key + quint16 country; // Country of IANA ID's, AnyCountry means No Country + quint16 ianaIdIndex; // All IANA ID's for the Windows ID and Country, space separated +}; + +struct QWindowsData { + quint16 windowsIdKey; // Windows ID Key + quint16 windowsIdIndex; // Windows ID Literal + quint16 ianaIdIndex; // Default IANA ID for the Windows ID + qint32 offsetFromUtc; // Standard Time Offset from UTC, used for quick look-ups +}; + +struct QUtcData { + quint16 ianaIdIndex; // IANA ID's + qint32 offsetFromUtc; // Offset form UTC is seconds +}; + +/* + COPYRIGHT AND PERMISSION NOTICE + + Copyright © 1991-2012 Unicode, Inc. All rights reserved. Distributed under + the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of the Unicode data files and any associated documentation (the "Data + Files") or Unicode software and any associated documentation (the "Software") + to deal in the Data Files or Software without restriction, including without + limitation the rights to use, copy, modify, merge, publish, distribute, and/or + sell copies of the Data Files or Software, and to permit persons to whom the + Data Files or Software are furnished to do so, provided that (a) the above + copyright notice(s) and this permission notice appear with all copies of the + Data Files or Software, (b) both the above copyright notice(s) and this + permission notice appear in associated documentation, and (c) there is clear + notice in each modified Data File or in the Software as well as in the + documentation associated with the Data File(s) or Software that the data or + software has been modified. +*/ + +// GENERATED PART STARTS HERE + +/* + This part of the file was generated on 2016-03-19 from the + Common Locale Data Repository v29 supplemental/windowsZones.xml file $Revision: 12348 $ + + http://www.unicode.org/cldr/ + + Do not change this data, only generate it using cldr2qtimezone.py. +*/ + +// Windows ID Key, Country Enum, IANA ID Index +static const QZoneData zoneDataTable[] = { + { 22, 57, 0 }, // Central Europe Standard Time / CzechRepublic + { 69, 139, 14 }, // Pacific Standard Time / Mexico + { 53, 188, 51 }, // Mauritius Standard Time / Seychelles + { 50, 122, 63 }, // Libya Standard Time / Libya + { 79, 38, 78 }, // SA Western Standard Time / Canada + { 83, 35, 99 }, // South Africa Standard Time / Burundi + { 102, 205, 116 }, // W. Europe Standard Time / Sweden + { 89, 213, 133 }, // Tonga Standard Time / Tokelau + { 77, 76, 149 }, // SA Eastern Standard Time / FrenchGuiana + { 79, 215, 165 }, // SA Western Standard Time / TrinidadAndTobago + { 69, 38, 187 }, // Pacific Standard Time / Canada + { 97, 0, 239 }, // UTC+12 / AnyCountry + { 19, 65, 250 }, // Central America Standard Time / ElSalvador + { 82, 101, 270 }, // Singapore Standard Time / Indonesia + { 37, 248, 284 }, // FLE Standard Time / AlandIslands + { 16, 0, 301 }, // Cape Verde Standard Time / AnyCountry + { 97, 220, 311 }, // UTC+12 / Tuvalu + { 79, 182, 328 }, // SA Western Standard Time / SaintVincentAndTheGrenadines + { 83, 179, 347 }, // South Africa Standard Time / Rwanda + { 102, 125, 361 }, // W. Europe Standard Time / Luxembourg + { 41, 34, 379 }, // Greenwich Standard Time / BurkinaFaso + { 20, 116, 398 }, // Central Asia Standard Time / Kyrgyzstan + { 101, 216, 411 }, // W. Central Africa Standard Time / Tunisia + { 101, 79, 424 }, // W. Central Africa Standard Time / Gabon + { 19, 96, 442 }, // Central America Standard Time / Honduras + { 81, 36, 462 }, // SE Asia Standard Time / Cambodia + { 82, 170, 478 }, // Singapore Standard Time / Philippines + { 101, 41, 490 }, // W. Central Africa Standard Time / CentralAfricanRepublic + { 5, 103, 504 }, // Arabic Standard Time / Iraq + { 72, 21, 517 }, // Romance Standard Time / Belgium + { 74, 178, 533 }, // Russia Time Zone 10 / Russia + { 20, 44, 552 }, // Central Asia Standard Time / China + { 3, 17, 564 }, // Arab Standard Time / Bahrain + { 88, 62, 577 }, // Tokyo Standard Time / EastTimor + { 37, 68, 587 }, // FLE Standard Time / Estonia + { 41, 136, 602 }, // Greenwich Standard Time / Mauritania + { 83, 49, 620 }, // South Africa Standard Time / CongoKinshasa + { 72, 74, 638 }, // Romance Standard Time / France + { 35, 178, 651 }, // Ekaterinburg Standard Time / Russia + { 32, 16, 670 }, // Eastern Standard Time / Bahamas + { 94, 30, 685 }, // UTC-02 / Brazil + { 12, 30, 701 }, // Bahia Standard Time / Brazil + { 82, 0, 715 }, // Singapore Standard Time / AnyCountry + { 29, 201, 725 }, // E. Africa Standard Time / Sudan + { 24, 229, 741 }, // Central Pacific Standard Time / Vanuatu + { 55, 227, 755 }, // Montevideo Standard Time / Uruguay + { 79, 233, 774 }, // SA Western Standard Time / BritishVirginIslands + { 29, 221, 790 }, // E. Africa Standard Time / Uganda + { 101, 6, 805 }, // W. Central Africa Standard Time / Angola + { 68, 141, 819 }, // E. Europe Standard Time / Moldova + { 51, 112, 835 }, // Line Islands Standard Time / Kiribati + { 89, 0, 854 }, // Tonga Standard Time / AnyCountry + { 79, 61, 865 }, // SA Western Standard Time / DominicanRepublic + { 39, 75, 887 }, // GMT Standard Time / Guernsey + { 37, 222, 903 }, // FLE Standard Time / Ukraine + { 83, 28, 949 }, // South Africa Standard Time / Botswana + { 82, 130, 965 }, // Singapore Standard Time / Malaysia + { 95, 4, 996 }, // UTC-11 / AmericanSamoa + { 41, 189, 1014 }, // Greenwich Standard Time / SierraLeone + { 29, 194, 1030 }, // E. Africa Standard Time / Somalia + { 94, 196, 1047 }, // UTC-02 / SouthGeorgiaAndTheSouthSandwichIslands + { 96, 0, 1070 }, // UTC / AnyCountry + { 101, 37, 1078 }, // W. Central Africa Standard Time / Cameroon + { 13, 25, 1092 }, // Bangladesh Standard Time / Bhutan + { 102, 151, 1105 }, // W. Europe Standard Time / Netherlands + { 37, 118, 1122 }, // FLE Standard Time / Latvia + { 29, 48, 1134 }, // E. Africa Standard Time / Comoros + { 60, 178, 1148 }, // N. Central Asia Standard Time / Russia + { 81, 117, 1175 }, // SE Asia Standard Time / Laos + { 22, 242, 1190 }, // Central Europe Standard Time / Montenegro + { 37, 33, 1207 }, // FLE Standard Time / Bulgaria + { 11, 173, 1220 }, // Azores Standard Time / Portugal + { 97, 149, 1236 }, // UTC+12 / Nauru + { 83, 146, 1250 }, // South Africa Standard Time / Mozambique + { 102, 82, 1264 }, // W. Europe Standard Time / Germany + { 79, 255, 1294 }, // SA Western Standard Time / Bonaire + { 24, 153, 1313 }, // Central Pacific Standard Time / NewCaledonia + { 45, 102, 1328 }, // Iran Standard Time / Iran + { 13, 18, 1340 }, // Bangladesh Standard Time / Bangladesh + { 69, 225, 1351 }, // Pacific Standard Time / UnitedStates + { 102, 142, 1371 }, // W. Europe Standard Time / Monaco + { 29, 128, 1385 }, // E. Africa Standard Time / Madagascar + { 65, 178, 1405 }, // North Asia East Standard Time / Russia + { 20, 8, 1418 }, // Central Asia Standard Time / Antarctica + { 22, 2, 1436 }, // Central Europe Standard Time / Albania + { 79, 87, 1450 }, // SA Western Standard Time / Grenada + { 81, 0, 1466 }, // SE Asia Standard Time / AnyCountry + { 39, 173, 1476 }, // GMT Standard Time / Portugal + { 103, 228, 1507 }, // West Asia Standard Time / Uzbekistan + { 58, 139, 1536 }, // Mountain Standard Time / Mexico + { 83, 129, 1552 }, // South Africa Standard Time / Malawi + { 78, 107, 1568 }, // SA Pacific Standard Time / Jamaica + { 41, 91, 1584 }, // Greenwich Standard Time / Guinea + { 101, 49, 1599 }, // W. Central Africa Standard Time / CongoKinshasa + { 43, 226, 1615 }, // Hawaiian Standard Time / UnitedStatesMinorOutlyingIslands + { 77, 8, 1632 }, // SA Eastern Standard Time / Antarctica + { 97, 235, 1651 }, // UTC+12 / WallisAndFutunaIslands + { 81, 232, 1666 }, // SE Asia Standard Time / Vietnam + { 34, 64, 1678 }, // Egypt Standard Time / Egypt + { 102, 106, 1691 }, // W. Europe Standard Time / Italy + { 79, 256, 1703 }, // SA Western Standard Time / SintMaarten + { 59, 147, 1725 }, // Myanmar Standard Time / Myanmar + { 78, 166, 1738 }, // SA Pacific Standard Time / Panama + { 56, 236, 1753 }, // Morocco Standard Time / WesternSahara + { 24, 193, 1769 }, // Central Pacific Standard Time / SolomonIslands + { 48, 178, 1789 }, // Kaliningrad Standard Time / Russia + { 47, 109, 1808 }, // Jordan Standard Time / Jordan + { 42, 177, 1819 }, // GTB Standard Time / Romania + { 41, 92, 1836 }, // Greenwich Standard Time / GuineaBissau + { 102, 184, 1850 }, // W. Europe Standard Time / SanMarino + { 103, 209, 1868 }, // West Asia Standard Time / Tajikistan + { 75, 178, 1882 }, // Russia Time Zone 11 / Russia + { 101, 157, 1909 }, // W. Central Africa Standard Time / Nigeria + { 79, 152, 1922 }, // SA Western Standard Time / CuraSao + { 57, 139, 1938 }, // Mountain Standard Time (Mexico) / Mexico + { 4, 162, 1973 }, // Arabian Standard Time / Oman + { 78, 169, 1985 }, // SA Pacific Standard Time / Peru + { 102, 206, 1998 }, // W. Europe Standard Time / Switzerland + { 41, 99, 2012 }, // Greenwich Standard Time / Iceland + { 33, 139, 2031 }, // Eastern Standard Time (Mexico) / Mexico + { 58, 225, 2046 }, // Mountain Standard Time / UnitedStates + { 100, 8, 2075 }, // W. Australia Standard Time / Antarctica + { 79, 30, 2092 }, // SA Western Standard Time / Brazil + { 101, 23, 2145 }, // W. Central Africa Standard Time / Benin + { 78, 43, 2163 }, // SA Pacific Standard Time / Chile + { 104, 0, 2178 }, // West Pacific Standard Time / AnyCountry + { 79, 181, 2189 }, // SA Western Standard Time / SaintLucia + { 27, 126, 2206 }, // China Standard Time / Macau + { 101, 66, 2217 }, // W. Central Africa Standard Time / EquatorialGuinea + { 43, 51, 2231 }, // Hawaiian Standard Time / CookIslands + { 41, 80, 2249 }, // Greenwich Standard Time / Gambia + { 51, 0, 2263 }, // Line Islands Standard Time / AnyCountry + { 52, 178, 2274 }, // Magadan Standard Time / Russia + { 22, 191, 2287 }, // Central Europe Standard Time / Slovakia + { 102, 5, 2305 }, // W. Europe Standard Time / Andorra + { 81, 211, 2320 }, // SE Asia Standard Time / Thailand + { 103, 0, 2333 }, // West Asia Standard Time / AnyCountry + { 24, 167, 2343 }, // Central Pacific Standard Time / PapuaNewGuinea + { 102, 230, 2364 }, // W. Europe Standard Time / VaticanCityState + { 58, 38, 2379 }, // Mountain Standard Time / Canada + { 77, 202, 2453 }, // SA Eastern Standard Time / Suriname + { 9, 13, 2472 }, // AUS Eastern Standard Time / Australia + { 29, 210, 2509 }, // E. Africa Standard Time / Tanzania + { 58, 0, 2530 }, // Mountain Standard Time / AnyCountry + { 83, 120, 2538 }, // South Africa Standard Time / Lesotho + { 97, 134, 2552 }, // UTC+12 / MarshallIslands + { 29, 111, 2585 }, // E. Africa Standard Time / Kenya + { 103, 218, 2600 }, // West Asia Standard Time / Turkmenistan + { 27, 97, 2614 }, // China Standard Time / HongKong + { 29, 0, 2629 }, // E. Africa Standard Time / AnyCountry + { 19, 22, 2639 }, // Central America Standard Time / Belize + { 31, 30, 2654 }, // E. South America Standard Time / Brazil + { 72, 197, 2672 }, // Romance Standard Time / Spain + { 81, 101, 2699 }, // SE Asia Standard Time / Indonesia + { 88, 0, 2727 }, // Tokyo Standard Time / AnyCountry + { 2, 225, 2737 }, // Alaskan Standard Time / UnitedStates + { 72, 58, 2832 }, // Romance Standard Time / Denmark + { 63, 8, 2850 }, // New Zealand Standard Time / Antarctica + { 3, 175, 2869 }, // Arab Standard Time / Qatar + { 79, 245, 2880 }, // SA Western Standard Time / Saint Martin + { 79, 19, 2896 }, // SA Western Standard Time / Barbados + { 97, 226, 2913 }, // UTC+12 / UnitedStatesMinorOutlyingIslands + { 37, 73, 2926 }, // FLE Standard Time / Finland + { 29, 138, 2942 }, // E. Africa Standard Time / Mayotte + { 39, 71, 2957 }, // GMT Standard Time / FaroeIslands + { 78, 38, 2973 }, // SA Pacific Standard Time / Canada + { 43, 0, 2995 }, // Hawaiian Standard Time / AnyCountry + { 23, 27, 3006 }, // Central European Standard Time / BosniaAndHerzegowina + { 38, 81, 3022 }, // Georgian Standard Time / Georgia + { 95, 0, 3035 }, // UTC-11 / AnyCountry + { 24, 13, 3046 }, // Central Pacific Standard Time / Australia + { 104, 167, 3067 }, // West Pacific Standard Time / PapuaNewGuinea + { 71, 168, 3088 }, // Paraguay Standard Time / Paraguay + { 43, 77, 3105 }, // Hawaiian Standard Time / FrenchPolynesia + { 41, 212, 3120 }, // Greenwich Standard Time / Togo + { 39, 197, 3132 }, // GMT Standard Time / Spain + { 83, 195, 3148 }, // South Africa Standard Time / SouthAfrica + { 18, 13, 3168 }, // Cen. Australia Standard Time / Australia + { 104, 160, 3209 }, // West Pacific Standard Time / NorthernMarianaIslands + { 77, 70, 3224 }, // SA Eastern Standard Time / FalklandIslands + { 42, 56, 3241 }, // GTB Standard Time / Cyprus + { 4, 223, 3254 }, // Arabian Standard Time / UnitedArabEmirates + { 103, 78, 3265 }, // West Asia Standard Time / FrenchSouthernTerritories + { 101, 42, 3282 }, // W. Central Africa Standard Time / Chad + { 23, 127, 3298 }, // Central European Standard Time / Macedonia + { 3, 237, 3312 }, // Arab Standard Time / Yemen + { 80, 183, 3322 }, // Samoa Standard Time / Samoa + { 43, 225, 3335 }, // Hawaiian Standard Time / UnitedStates + { 28, 0, 3352 }, // Dateline Standard Time / AnyCountry + { 93, 139, 3363 }, // US Mountain Standard Time / Mexico + { 64, 38, 3382 }, // Newfoundland Standard Time / Canada + { 63, 154, 3399 }, // New Zealand Standard Time / NewZealand + { 76, 178, 3416 }, // Russian Standard Time / Russia + { 82, 190, 3465 }, // Singapore Standard Time / Singapore + { 1, 1, 3480 }, // Afghanistan Standard Time / Afghanistan + { 102, 133, 3491 }, // W. Europe Standard Time / Malta + { 79, 12, 3504 }, // SA Western Standard Time / Aruba + { 25, 139, 3518 }, // Central Standard Time (Mexico) / Mexico + { 39, 251, 3594 }, // GMT Standard Time / IsleOfMan + { 102, 123, 3613 }, // W. Europe Standard Time / Liechtenstein + { 77, 30, 3626 }, // SA Eastern Standard Time / Brazil + { 49, 114, 3723 }, // Korea Standard Time / SouthKorea + { 79, 88, 3734 }, // SA Western Standard Time / Guadeloupe + { 94, 0, 3753 }, // UTC-02 / AnyCountry + { 59, 46, 3763 }, // Myanmar Standard Time / CocosIslands + { 102, 203, 3776 }, // W. Europe Standard Time / SvalbardAndJanMayenIslands + { 29, 69, 3796 }, // E. Africa Standard Time / Ethiopia + { 73, 178, 3815 }, // Russia Time Zone 3 / Russia + { 83, 240, 3829 }, // South Africa Standard Time / Zimbabwe + { 100, 13, 3843 }, // W. Australia Standard Time / Australia + { 101, 0, 3859 }, // W. Central Africa Standard Time / AnyCountry + { 32, 55, 3869 }, // Eastern Standard Time / Cuba + { 56, 145, 3884 }, // Morocco Standard Time / Morocco + { 17, 11, 3902 }, // Caucasus Standard Time / Armenia + { 7, 24, 3915 }, // Atlantic Standard Time / Bermuda + { 86, 208, 3932 }, // Taipei Standard Time / Taiwan + { 20, 0, 3944 }, // Central Asia Standard Time / AnyCountry + { 40, 86, 3954 }, // Greenland Standard Time / Greenland + { 23, 172, 3970 }, // Central European Standard Time / Poland + { 89, 214, 3984 }, // Tonga Standard Time / Tonga + { 20, 110, 4002 }, // Central Asia Standard Time / Kazakhstan + { 81, 8, 4029 }, // SE Asia Standard Time / Antarctica + { 54, 119, 4046 }, // Middle East Standard Time / Lebanon + { 19, 90, 4058 }, // Central America Standard Time / Guatemala + { 70, 163, 4076 }, // Pakistan Standard Time / Pakistan + { 41, 83, 4089 }, // Greenwich Standard Time / Ghana + { 79, 174, 4102 }, // SA Western Standard Time / PuertoRico + { 79, 26, 4122 }, // SA Western Standard Time / Bolivia + { 32, 225, 4137 }, // Eastern Standard Time / UnitedStates + { 85, 207, 4294 }, // Syria Standard Time / Syria + { 97, 112, 4308 }, // UTC+12 / Kiribati + { 79, 0, 4323 }, // SA Western Standard Time / AnyCountry + { 78, 47, 4333 }, // SA Pacific Standard Time / Colombia + { 16, 39, 4348 }, // Cape Verde Standard Time / CapeVerde + { 8, 13, 4368 }, // AUS Central Standard Time / Australia + { 106, 113, 4385 }, // North Korea Standard Time / NorthKorea + { 10, 15, 4400 }, // Azerbaijan Standard Time / Azerbaijan + { 102, 84, 4410 }, // W. Europe Standard Time / Gibraltar + { 46, 105, 4427 }, // Israel Standard Time / Israel + { 22, 192, 4442 }, // Central Europe Standard Time / Slovenia + { 24, 159, 4459 }, // Central Pacific Standard Time / NorfolkIsland + { 82, 32, 4475 }, // Singapore Standard Time / Brunei + { 101, 50, 4487 }, // W. Central Africa Standard Time / CongoBrazzaville + { 62, 150, 4506 }, // Nepal Standard Time / Nepal + { 44, 100, 4520 }, // India Standard Time / India + { 79, 9, 4534 }, // SA Western Standard Time / AntiguaAndBarbuda + { 39, 252, 4550 }, // GMT Standard Time / Jersey + { 79, 144, 4564 }, // SA Western Standard Time / Montserrat + { 93, 0, 4583 }, // US Mountain Standard Time / AnyCountry + { 79, 93, 4593 }, // SA Western Standard Time / Guyana + { 41, 187, 4608 }, // Greenwich Standard Time / Senegal + { 102, 161, 4621 }, // W. Europe Standard Time / Norway + { 42, 85, 4633 }, // GTB Standard Time / Greece + { 3, 115, 4647 }, // Arab Standard Time / Kuwait + { 24, 140, 4659 }, // Central Pacific Standard Time / Micronesia + { 19, 52, 4689 }, // Central America Standard Time / CostaRica + { 79, 60, 4708 }, // SA Western Standard Time / Dominica + { 83, 204, 4725 }, // South Africa Standard Time / Swaziland + { 79, 135, 4740 }, // SA Western Standard Time / Martinique + { 53, 176, 4759 }, // Mauritius Standard Time / Reunion + { 19, 0, 4774 }, // Central America Standard Time / AnyCountry + { 90, 217, 4784 }, // Turkey Standard Time / Turkey + { 66, 178, 4800 }, // North Asia Standard Time / Russia + { 41, 53, 4835 }, // Greenwich Standard Time / IvoryCoast + { 78, 30, 4850 }, // SA Pacific Standard Time / Brazil + { 26, 0, 4886 }, // Central Standard Time / AnyCountry + { 93, 225, 4894 }, // US Mountain Standard Time / UnitedStates + { 15, 38, 4910 }, // Canada Central Standard Time / Canada + { 78, 0, 4947 }, // SA Pacific Standard Time / AnyCountry + { 103, 8, 4957 }, // West Asia Standard Time / Antarctica + { 103, 131, 4975 }, // West Asia Standard Time / Maldives + { 22, 243, 4991 }, // Central Europe Standard Time / Serbia + { 29, 67, 5007 }, // E. Africa Standard Time / Eritrea + { 93, 38, 5021 }, // US Mountain Standard Time / Canada + { 22, 98, 5078 }, // Central Europe Standard Time / Hungary + { 61, 148, 5094 }, // Namibia Standard Time / Namibia + { 88, 101, 5110 }, // Tokyo Standard Time / Indonesia + { 30, 13, 5124 }, // E. Australia Standard Time / Australia + { 4, 0, 5162 }, // Arabian Standard Time / AnyCountry + { 98, 231, 5172 }, // Venezuela Standard Time / Venezuela + { 29, 8, 5188 }, // E. Africa Standard Time / Antarctica + { 23, 54, 5205 }, // Central European Standard Time / Croatia + { 6, 10, 5219 }, // Argentina Standard Time / Argentina + { 67, 8, 5492 }, // Pacific SA Standard Time / Antarctica + { 32, 38, 5510 }, // Eastern Standard Time / Canada + { 41, 132, 5615 }, // Greenwich Standard Time / Mali + { 3, 186, 5629 }, // Arab Standard Time / SaudiArabia + { 104, 140, 5641 }, // West Pacific Standard Time / Micronesia + { 88, 108, 5654 }, // Tokyo Standard Time / Japan + { 89, 112, 5665 }, // Tonga Standard Time / Kiribati + { 39, 224, 5683 }, // GMT Standard Time / UnitedKingdom + { 92, 225, 5697 }, // US Eastern Standard Time / UnitedStates + { 84, 198, 5764 }, // Sri Lanka Standard Time / SriLanka + { 26, 38, 5777 }, // Central Standard Time / Canada + { 29, 59, 5852 }, // E. Africa Standard Time / Djibouti + { 7, 38, 5868 }, // Atlantic Standard Time / Canada + { 41, 185, 5936 }, // Greenwich Standard Time / SaoTomeAndPrincipe + { 79, 234, 5952 }, // SA Western Standard Time / UnitedStatesVirginIslands + { 83, 239, 5970 }, // South Africa Standard Time / Zambia + { 32, 94, 5984 }, // Eastern Standard Time / Haiti + { 101, 156, 6007 }, // W. Central Africa Standard Time / Niger + { 77, 0, 6021 }, // SA Eastern Standard Time / AnyCountry + { 101, 3, 6031 }, // W. Central Africa Standard Time / Algeria + { 78, 63, 6046 }, // SA Pacific Standard Time / Ecuador + { 20, 31, 6064 }, // Central Asia Standard Time / BritishIndianOceanTerritory + { 27, 44, 6078 }, // China Standard Time / China + { 21, 30, 6092 }, // Central Brazilian Standard Time / Brazil + { 95, 226, 6128 }, // UTC-11 / UnitedStatesMinorOutlyingIslands + { 32, 0, 6143 }, // Eastern Standard Time / AnyCountry + { 81, 45, 6151 }, // SE Asia Standard Time / ChristmasIsland + { 19, 63, 6168 }, // Central America Standard Time / Ecuador + { 79, 7, 6186 }, // SA Western Standard Time / Anguilla + { 78, 40, 6203 }, // SA Pacific Standard Time / CaymanIslands + { 79, 180, 6218 }, // SA Western Standard Time / SaintKittsAndNevis + { 67, 43, 6235 }, // Pacific SA Standard Time / Chile + { 88, 164, 6252 }, // Tokyo Standard Time / Palau + { 105, 178, 6266 }, // Yakutsk Standard Time / Russia + { 37, 124, 6304 }, // FLE Standard Time / Lithuania + { 41, 121, 6319 }, // Greenwich Standard Time / Liberia + { 104, 89, 6335 }, // West Pacific Standard Time / Guam + { 96, 86, 6348 }, // UTC / Greenland + { 36, 72, 6369 }, // Fiji Standard Time / Fiji + { 19, 155, 6382 }, // Central America Standard Time / Nicaragua + { 11, 86, 6398 }, // Azores Standard Time / Greenland + { 79, 244, 6419 }, // SA Western Standard Time / Saint Barthelemy + { 69, 0, 6441 }, // Pacific Standard Time / AnyCountry + { 79, 219, 6449 }, // SA Western Standard Time / TurksAndCaicosIslands + { 103, 110, 6468 }, // West Asia Standard Time / Kazakhstan + { 26, 225, 6501 }, // Central Standard Time / UnitedStates + { 26, 139, 6669 }, // Central Standard Time / Mexico + { 7, 86, 6687 }, // Atlantic Standard Time / Greenland + { 24, 0, 6701 }, // Central Pacific Standard Time / AnyCountry + { 41, 199, 6712 }, // Greenwich Standard Time / SaintHelena + { 95, 158, 6731 }, // UTC-11 / Niue + { 53, 137, 6744 }, // Mauritius Standard Time / Mauritius + { 91, 143, 6761 }, // Ulaanbaatar Standard Time / Mongolia + { 83, 0, 6794 }, // South Africa Standard Time / AnyCountry + { 14, 20, 6804 }, // Belarus Standard Time / Belarus + { 29, 254, 6817 }, // E. Africa Standard Time / SouthSudan + { 87, 13, 6829 }, // Tasmania Standard Time / Australia + { 99, 178, 6863 }, // Vladivostok Standard Time / Russia + { 104, 8, 6908 }, // West Pacific Standard Time / Antarctica + { 39, 104, 6934 }, // GMT Standard Time / Ireland + { 102, 14, 6948 }, // W. Europe Standard Time / Austria + { 0, 0, 0 } // Trailing zeroes +}; + +// Windows ID Key, Windows ID Index, IANA ID Index, UTC Offset +static const QWindowsData windowsDataTable[] = { + { 1, 0, 3480, 16200 }, // Afghanistan Standard Time + { 2, 26, 6962,-32400 }, // Alaskan Standard Time + { 3, 48, 5629, 10800 }, // Arab Standard Time + { 4, 67, 3254, 14400 }, // Arabian Standard Time + { 5, 89, 504, 10800 }, // Arabic Standard Time + { 6, 110, 6980,-10800 }, // Argentina Standard Time + { 7, 134, 7001,-14400 }, // Atlantic Standard Time + { 8, 157, 4368, 34200 }, // AUS Central Standard Time + { 9, 183, 7017, 36000 }, // AUS Eastern Standard Time + { 10, 209, 4400, 14400 }, // Azerbaijan Standard Time + { 11, 234, 1220, -3600 }, // Azores Standard Time + { 12, 255, 701,-10800 }, // Bahia Standard Time + { 13, 275, 1340, 21600 }, // Bangladesh Standard Time + { 14, 300, 6804, 10800 }, // Belarus Standard Time + { 15, 322, 7034,-21600 }, // Canada Central Standard Time + { 16, 351, 4348, -3600 }, // Cape Verde Standard Time + { 17, 376, 3902, 14400 }, // Caucasus Standard Time + { 18, 399, 7049, 34200 }, // Cen. Australia Standard Time + { 19, 428, 4058,-21600 }, // Central America Standard Time + { 20, 458, 7068, 21600 }, // Central Asia Standard Time + { 21, 485, 7080,-14400 }, // Central Brazilian Standard Time + { 22, 517, 5078, 3600 }, // Central Europe Standard Time + { 23, 546, 3970, 3600 }, // Central European Standard Time + { 24, 577, 1769, 39600 }, // Central Pacific Standard Time + { 25, 607, 7095,-21600 }, // Central Standard Time (Mexico) + { 26, 638, 7115,-21600 }, // Central Standard Time + { 27, 660, 6078, 28800 }, // China Standard Time + { 28, 680, 3352,-43200 }, // Dateline Standard Time + { 29, 703, 2585, 10800 }, // E. Africa Standard Time + { 30, 727, 7131, 36000 }, // E. Australia Standard Time + { 31, 754, 2654,-10800 }, // E. South America Standard Time + { 32, 785, 7150,-18000 }, // Eastern Standard Time + { 33, 807, 2031,-18000 }, // Eastern Standard Time (Mexico) + { 34, 838, 1678, 7200 }, // Egypt Standard Time + { 35, 858, 651, 18000 }, // Ekaterinburg Standard Time + { 36, 885, 6369, 43200 }, // Fiji Standard Time + { 37, 904, 7167, 7200 }, // FLE Standard Time + { 38, 922, 3022, 14400 }, // Georgian Standard Time + { 39, 945, 5683, 0 }, // GMT Standard Time + { 40, 963, 3954,-10800 }, // Greenland Standard Time + { 41, 987, 2012, 0 }, // Greenwich Standard Time + { 42, 1011, 1819, 7200 }, // GTB Standard Time + { 43, 1029, 3335,-36000 }, // Hawaiian Standard Time + { 44, 1052, 4520, 19800 }, // India Standard Time + { 45, 1072, 1328, 12600 }, // Iran Standard Time + { 46, 1091, 4427, 7200 }, // Israel Standard Time + { 47, 1112, 1808, 7200 }, // Jordan Standard Time + { 48, 1133, 1789, 7200 }, // Kaliningrad Standard Time + { 49, 1159, 3723, 32400 }, // Korea Standard Time + { 50, 1179, 63, 7200 }, // Libya Standard Time + { 51, 1199, 835, 50400 }, // Line Islands Standard Time + { 52, 1226, 2274, 36000 }, // Magadan Standard Time + { 53, 1248, 6744, 14400 }, // Mauritius Standard Time + { 54, 1272, 4046, 7200 }, // Middle East Standard Time + { 55, 1298, 755,-10800 }, // Montevideo Standard Time + { 56, 1323, 3884, 0 }, // Morocco Standard Time + { 57, 1345, 7179,-25200 }, // Mountain Standard Time (Mexico) + { 58, 1377, 7197,-25200 }, // Mountain Standard Time + { 59, 1400, 1725, 23400 }, // Myanmar Standard Time + { 60, 1422, 7212, 21600 }, // N. Central Asia Standard Time + { 61, 1452, 5094, 3600 }, // Namibia Standard Time + { 62, 1474, 4506, 20700 }, // Nepal Standard Time + { 63, 1494, 3399, 43200 }, // New Zealand Standard Time + { 64, 1520, 3382,-12600 }, // Newfoundland Standard Time + { 65, 1547, 1405, 28800 }, // North Asia East Standard Time + { 66, 1577, 7229, 25200 }, // North Asia Standard Time + { 67, 1602, 6235,-10800 }, // Pacific SA Standard Time + { 68, 1627, 819, 7200 }, // E. Europe Standard Time + { 69, 1651, 1351,-28800 }, // Pacific Standard Time + { 70, 1673, 4076, 18000 }, // Pakistan Standard Time + { 71, 1696, 3088,-14400 }, // Paraguay Standard Time + { 72, 1719, 638, 3600 }, // Romance Standard Time + { 73, 1741, 3815, 14400 }, // Russia Time Zone 3 + { 74, 1760, 533, 39600 }, // Russia Time Zone 10 + { 75, 1780, 7246, 43200 }, // Russia Time Zone 11 + { 76, 1800, 7261, 10800 }, // Russian Standard Time + { 77, 1822, 149,-10800 }, // SA Eastern Standard Time + { 78, 1847, 4333,-18000 }, // SA Pacific Standard Time + { 79, 1872, 4122,-14400 }, // SA Western Standard Time + { 80, 1897, 3322, 46800 }, // Samoa Standard Time + { 81, 1917, 2320, 25200 }, // SE Asia Standard Time + { 82, 1939, 3465, 28800 }, // Singapore Standard Time + { 83, 1963, 3148, 7200 }, // South Africa Standard Time + { 84, 1990, 5764, 19800 }, // Sri Lanka Standard Time + { 85, 2014, 4294, 7200 }, // Syria Standard Time + { 86, 2034, 3932, 28800 }, // Taipei Standard Time + { 87, 2055, 7275, 36000 }, // Tasmania Standard Time + { 88, 2078, 5654, 32400 }, // Tokyo Standard Time + { 89, 2098, 3984, 46800 }, // Tonga Standard Time + { 90, 2118, 4784, 7200 }, // Turkey Standard Time + { 91, 2139, 7292, 28800 }, // Ulaanbaatar Standard Time + { 92, 2165, 7309,-18000 }, // US Eastern Standard Time + { 93, 2190, 4894,-25200 }, // US Mountain Standard Time + { 94, 2216, 3753, -7200 }, // UTC-02 + { 95, 2223, 3035,-39600 }, // UTC-11 + { 96, 2230, 1070, 0 }, // UTC + { 97, 2234, 239, 43200 }, // UTC+12 + { 98, 2241, 5172,-16200 }, // Venezuela Standard Time + { 99, 2265, 7330, 36000 }, // Vladivostok Standard Time + { 100, 2291, 3843, 28800 }, // W. Australia Standard Time + { 101, 2318, 1909, 3600 }, // W. Central Africa Standard Time + { 102, 2350, 7347, 3600 }, // W. Europe Standard Time + { 103, 2374, 7361, 18000 }, // West Asia Standard Time + { 104, 2398, 3067, 36000 }, // West Pacific Standard Time + { 105, 2425, 7375, 32400 }, // Yakutsk Standard Time + { 106, 2447, 4385, 30600 }, // North Korea Standard Time + { 0, 0, 0, 0 } // Trailing zeroes +}; + +// IANA ID Index, UTC Offset +static const QUtcData utcDataTable[] = { + { 7388, 0 }, // UTC + { 7392,-50400 }, // UTC-14:00 + { 7402,-46800 }, // UTC-13:00 + { 7412,-43200 }, // UTC-12:00 + { 7422,-39600 }, // UTC-11:00 + { 7432,-36000 }, // UTC-10:00 + { 7442,-32400 }, // UTC-09:00 + { 7452,-28800 }, // UTC-08:00 + { 7462,-25200 }, // UTC-07:00 + { 7472,-21600 }, // UTC-06:00 + { 7482,-18000 }, // UTC-05:00 + { 7492,-16200 }, // UTC-04:30 + { 7502,-14400 }, // UTC-04:00 + { 7512,-12600 }, // UTC-03:30 + { 7522,-10800 }, // UTC-03:00 + { 7532, -7200 }, // UTC-02:00 + { 7542, -3600 }, // UTC-01:00 + { 7552, 0 }, // UTC-00:00 + { 7562, 0 }, // UTC+00:00 + { 7572, 3600 }, // UTC+01:00 + { 7582, 7200 }, // UTC+02:00 + { 7592, 10800 }, // UTC+03:00 + { 7602, 12600 }, // UTC+03:30 + { 7612, 14400 }, // UTC+04:00 + { 7622, 16200 }, // UTC+04:30 + { 7632, 18000 }, // UTC+05:00 + { 7642, 19800 }, // UTC+05:30 + { 7652, 20700 }, // UTC+05:45 + { 7662, 21600 }, // UTC+06:00 + { 7672, 23400 }, // UTC+06:30 + { 7682, 25200 }, // UTC+07:00 + { 7692, 28800 }, // UTC+08:00 + { 7702, 32400 }, // UTC+09:00 + { 7712, 34200 }, // UTC+09:30 + { 7722, 36000 }, // UTC+10:00 + { 7732, 39600 }, // UTC+11:00 + { 7742, 43200 }, // UTC+12:00 + { 7752, 46800 }, // UTC+13:00 + { 7762, 50400 }, // UTC+14:00 + { 7772, 30600 }, // UTC+08:30 + { 0, 0 } // Trailing zeroes +}; + +static const char windowsIdData[] = { +0x41, 0x66, 0x67, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, +0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x41, 0x6c, 0x61, 0x73, 0x6b, 0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, +0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x41, 0x72, 0x61, 0x62, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, +0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x41, 0x72, 0x61, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, +0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x41, 0x72, 0x61, 0x62, 0x69, 0x63, 0x20, 0x53, 0x74, 0x61, 0x6e, +0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x20, +0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, +0x69, 0x63, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x41, 0x55, 0x53, +0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, +0x6d, 0x65, 0x0, 0x41, 0x55, 0x53, 0x20, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, +0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x41, 0x7a, 0x65, 0x72, 0x62, 0x61, 0x69, 0x6a, 0x61, 0x6e, 0x20, +0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x41, 0x7a, 0x6f, 0x72, 0x65, 0x73, +0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x42, 0x61, 0x68, 0x69, 0x61, +0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x42, 0x61, 0x6e, 0x67, 0x6c, +0x61, 0x64, 0x65, 0x73, 0x68, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, +0x42, 0x65, 0x6c, 0x61, 0x72, 0x75, 0x73, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, +0x65, 0x0, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x61, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x53, 0x74, 0x61, +0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x43, 0x61, 0x70, 0x65, 0x20, 0x56, 0x65, 0x72, 0x64, +0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x43, 0x61, 0x75, 0x63, +0x61, 0x73, 0x75, 0x73, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x43, +0x65, 0x6e, 0x2e, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, +0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x43, 0x65, +0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x73, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, +0x54, 0x69, 0x6d, 0x65, 0x0, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x42, 0x72, 0x61, 0x7a, 0x69, 0x6c, 0x69, +0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x43, 0x65, 0x6e, +0x74, 0x72, 0x61, 0x6c, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, +0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, +0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x43, 0x65, 0x6e, +0x74, 0x72, 0x61, 0x6c, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, +0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, +0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x28, 0x4d, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x29, 0x0, 0x43, 0x65, +0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, +0x43, 0x68, 0x69, 0x6e, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, +0x44, 0x61, 0x74, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, +0x6d, 0x65, 0x0, 0x45, 0x2e, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, +0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x45, 0x2e, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x20, +0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x45, 0x2e, 0x20, 0x53, 0x6f, 0x75, +0x74, 0x68, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, +0x54, 0x69, 0x6d, 0x65, 0x0, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, +0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, +0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x28, 0x4d, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x29, 0x0, 0x45, 0x67, +0x79, 0x70, 0x74, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x45, 0x6b, +0x61, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, +0x54, 0x69, 0x6d, 0x65, 0x0, 0x46, 0x69, 0x6a, 0x69, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, +0x69, 0x6d, 0x65, 0x0, 0x46, 0x4c, 0x45, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, +0x65, 0x0, 0x47, 0x65, 0x6f, 0x72, 0x67, 0x69, 0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, +0x54, 0x69, 0x6d, 0x65, 0x0, 0x47, 0x4d, 0x54, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, +0x6d, 0x65, 0x0, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, +0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x77, 0x69, 0x63, 0x68, 0x20, 0x53, 0x74, 0x61, +0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x47, 0x54, 0x42, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, +0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x48, 0x61, 0x77, 0x61, 0x69, 0x69, 0x61, 0x6e, 0x20, 0x53, 0x74, +0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x20, 0x53, 0x74, +0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x49, 0x72, 0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, +0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x20, 0x53, 0x74, +0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4a, 0x6f, 0x72, 0x64, 0x61, 0x6e, 0x20, 0x53, +0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4b, 0x61, 0x6c, 0x69, 0x6e, 0x69, 0x6e, +0x67, 0x72, 0x61, 0x64, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4b, +0x6f, 0x72, 0x65, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4c, +0x69, 0x62, 0x79, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4c, +0x69, 0x6e, 0x65, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, +0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4d, 0x61, 0x67, 0x61, 0x64, 0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, +0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x75, 0x73, 0x20, 0x53, 0x74, +0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x20, 0x45, +0x61, 0x73, 0x74, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4d, 0x6f, +0x6e, 0x74, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, +0x6d, 0x65, 0x0, 0x4d, 0x6f, 0x72, 0x6f, 0x63, 0x63, 0x6f, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, +0x54, 0x69, 0x6d, 0x65, 0x0, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, +0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x28, 0x4d, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x29, 0x0, 0x4d, 0x6f, 0x75, +0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, +0x4d, 0x79, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, +0x65, 0x0, 0x4e, 0x2e, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x73, 0x69, 0x61, 0x20, 0x53, 0x74, +0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x20, +0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4e, 0x65, 0x70, 0x61, 0x6c, 0x20, +0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, +0x61, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, +0x4e, 0x65, 0x77, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, +0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x20, 0x41, 0x73, 0x69, 0x61, 0x20, 0x45, 0x61, +0x73, 0x74, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4e, 0x6f, 0x72, +0x74, 0x68, 0x20, 0x41, 0x73, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, +0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x53, 0x41, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, +0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x45, 0x2e, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x20, 0x53, 0x74, 0x61, +0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x53, +0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x50, 0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x50, 0x61, 0x72, 0x61, +0x67, 0x75, 0x61, 0x79, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x52, +0x6f, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, +0x0, 0x52, 0x75, 0x73, 0x73, 0x69, 0x61, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x5a, 0x6f, 0x6e, 0x65, 0x20, 0x33, 0x0, +0x52, 0x75, 0x73, 0x73, 0x69, 0x61, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x5a, 0x6f, 0x6e, 0x65, 0x20, 0x31, 0x30, 0x0, +0x52, 0x75, 0x73, 0x73, 0x69, 0x61, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x5a, 0x6f, 0x6e, 0x65, 0x20, 0x31, 0x31, 0x0, +0x52, 0x75, 0x73, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, +0x65, 0x0, 0x53, 0x41, 0x20, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, +0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x41, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x53, 0x74, +0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x41, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, +0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x61, 0x6d, +0x6f, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x45, 0x20, +0x41, 0x73, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, +0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, +0x6d, 0x65, 0x0, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, +0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x72, 0x69, 0x20, 0x4c, 0x61, 0x6e, 0x6b, 0x61, 0x20, +0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x79, 0x72, 0x69, 0x61, 0x20, +0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x61, 0x69, 0x70, 0x65, 0x69, +0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x61, 0x73, 0x6d, 0x61, +0x6e, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x6f, +0x6b, 0x79, 0x6f, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x6f, +0x6e, 0x67, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x75, +0x72, 0x6b, 0x65, 0x79, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x55, +0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, +0x54, 0x69, 0x6d, 0x65, 0x0, 0x55, 0x53, 0x20, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, +0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x55, 0x53, 0x20, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, +0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x55, 0x54, 0x43, 0x2d, +0x30, 0x32, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x31, 0x0, 0x55, 0x54, 0x43, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x32, +0x0, 0x56, 0x65, 0x6e, 0x65, 0x7a, 0x75, 0x65, 0x6c, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, +0x54, 0x69, 0x6d, 0x65, 0x0, 0x56, 0x6c, 0x61, 0x64, 0x69, 0x76, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x20, 0x53, 0x74, 0x61, +0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x2e, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, +0x6c, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x2e, +0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, +0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x2e, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x20, +0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x65, 0x73, 0x74, 0x20, 0x41, +0x73, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x65, +0x73, 0x74, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, +0x54, 0x69, 0x6d, 0x65, 0x0, 0x59, 0x61, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, +0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x20, 0x4b, 0x6f, 0x72, 0x65, 0x61, 0x20, 0x53, +0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0 +}; + +static const char ianaIdData[] = { +0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x72, 0x61, 0x67, 0x75, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x54, 0x69, 0x6a, 0x75, 0x61, 0x6e, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, +0x6e, 0x74, 0x61, 0x5f, 0x49, 0x73, 0x61, 0x62, 0x65, 0x6c, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, +0x68, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x72, 0x69, 0x70, 0x6f, 0x6c, 0x69, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x63, 0x2d, 0x53, 0x61, 0x62, 0x6c, 0x6f, 0x6e, 0x0, 0x41, +0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x6a, 0x75, 0x6d, 0x62, 0x75, 0x72, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, +0x70, 0x65, 0x2f, 0x53, 0x74, 0x6f, 0x63, 0x6b, 0x68, 0x6f, 0x6c, 0x6d, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, +0x2f, 0x46, 0x61, 0x6b, 0x61, 0x6f, 0x66, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x79, +0x65, 0x6e, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x66, +0x5f, 0x53, 0x70, 0x61, 0x69, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x56, 0x61, 0x6e, 0x63, 0x6f, +0x75, 0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x20, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6f, 0x72, 0x73, 0x65, 0x0, 0x45, +0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x32, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x6c, +0x5f, 0x53, 0x61, 0x6c, 0x76, 0x61, 0x64, 0x6f, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6b, 0x61, 0x73, +0x73, 0x61, 0x72, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x65, 0x68, 0x61, 0x6d, 0x6e, +0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, +0x75, 0x6e, 0x61, 0x66, 0x75, 0x74, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x56, +0x69, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x69, 0x67, 0x61, 0x6c, 0x69, +0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x6f, 0x75, 0x72, 0x67, 0x0, 0x41, +0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x75, 0x61, 0x67, 0x61, 0x64, 0x6f, 0x75, 0x67, 0x6f, 0x75, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x68, 0x6b, 0x65, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x75, +0x6e, 0x69, 0x73, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x69, 0x62, 0x72, 0x65, 0x76, 0x69, 0x6c, 0x6c, +0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x65, 0x67, 0x75, 0x63, 0x69, 0x67, 0x61, 0x6c, 0x70, +0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x68, 0x6e, 0x6f, 0x6d, 0x5f, 0x50, 0x65, 0x6e, 0x68, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x69, 0x6c, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6e, +0x67, 0x75, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x67, 0x68, 0x64, 0x61, 0x64, 0x0, 0x45, 0x75, 0x72, +0x6f, 0x70, 0x65, 0x2f, 0x42, 0x72, 0x75, 0x73, 0x73, 0x65, 0x6c, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x72, +0x65, 0x64, 0x6e, 0x65, 0x6b, 0x6f, 0x6c, 0x79, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x72, 0x75, +0x6d, 0x71, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x68, 0x72, 0x61, 0x69, 0x6e, 0x0, 0x41, 0x73, 0x69, +0x61, 0x2f, 0x44, 0x69, 0x6c, 0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x54, 0x61, 0x6c, 0x6c, 0x69, 0x6e, +0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x75, 0x61, 0x6b, 0x63, 0x68, 0x6f, 0x74, 0x74, 0x0, +0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x62, 0x75, 0x6d, 0x62, 0x61, 0x73, 0x68, 0x69, 0x0, 0x45, 0x75, +0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x61, 0x72, 0x69, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x65, 0x6b, 0x61, +0x74, 0x65, 0x72, 0x69, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x61, +0x73, 0x73, 0x61, 0x75, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x6f, 0x6e, 0x68, 0x61, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x68, 0x69, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, +0x4d, 0x54, 0x2d, 0x38, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x68, 0x61, 0x72, 0x74, 0x6f, 0x75, 0x6d, +0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x66, 0x61, 0x74, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x54, 0x6f, 0x72, 0x74, 0x6f, 0x6c, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x61, 0x6d, +0x70, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x61, 0x6e, 0x64, 0x61, 0x0, 0x45, +0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, 0x68, 0x69, 0x73, 0x69, 0x6e, 0x61, 0x75, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, +0x69, 0x63, 0x2f, 0x4b, 0x69, 0x72, 0x69, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, +0x54, 0x2d, 0x31, 0x33, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x6f, 0x5f, 0x44, +0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x75, 0x65, 0x72, 0x6e, 0x73, +0x65, 0x79, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x69, 0x65, 0x76, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, +0x65, 0x2f, 0x55, 0x7a, 0x68, 0x67, 0x6f, 0x72, 0x6f, 0x64, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, +0x70, 0x6f, 0x72, 0x6f, 0x7a, 0x68, 0x79, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x61, 0x62, 0x6f, +0x72, 0x6f, 0x6e, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, 0x61, 0x6c, 0x61, 0x5f, 0x4c, 0x75, 0x6d, 0x70, +0x75, 0x72, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x0, 0x50, 0x61, 0x63, 0x69, +0x66, 0x69, 0x63, 0x2f, 0x50, 0x61, 0x67, 0x6f, 0x5f, 0x50, 0x61, 0x67, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x46, 0x72, 0x65, 0x65, 0x74, 0x6f, 0x77, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x67, +0x61, 0x64, 0x69, 0x73, 0x68, 0x75, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x53, 0x6f, 0x75, 0x74, +0x68, 0x5f, 0x47, 0x65, 0x6f, 0x72, 0x67, 0x69, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x0, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6f, 0x75, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x68, 0x69, +0x6d, 0x70, 0x68, 0x75, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, +0x6d, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x69, 0x67, 0x61, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, +0x2f, 0x43, 0x6f, 0x6d, 0x6f, 0x72, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x73, 0x69, 0x62, +0x69, 0x72, 0x73, 0x6b, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4f, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, +0x56, 0x69, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6e, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x6f, 0x64, +0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6f, 0x66, 0x69, 0x61, 0x0, +0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x41, 0x7a, 0x6f, 0x72, 0x65, 0x73, 0x0, 0x50, 0x61, 0x63, 0x69, +0x66, 0x69, 0x63, 0x2f, 0x4e, 0x61, 0x75, 0x72, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x70, +0x75, 0x74, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x20, 0x45, 0x75, +0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x65, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x4b, 0x72, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x69, 0x6a, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, +0x2f, 0x4e, 0x6f, 0x75, 0x6d, 0x65, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x65, 0x68, 0x72, 0x61, 0x6e, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x68, 0x61, 0x6b, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, +0x6f, 0x73, 0x5f, 0x41, 0x6e, 0x67, 0x65, 0x6c, 0x65, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, +0x6e, 0x61, 0x63, 0x6f, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x41, 0x6e, 0x74, 0x61, 0x6e, 0x61, 0x6e, 0x61, +0x72, 0x69, 0x76, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x49, 0x72, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x0, 0x41, 0x6e, +0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x56, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x0, 0x45, 0x75, 0x72, 0x6f, +0x70, 0x65, 0x2f, 0x54, 0x69, 0x72, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, +0x65, 0x6e, 0x61, 0x64, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x37, 0x0, 0x45, 0x75, 0x72, 0x6f, +0x70, 0x65, 0x2f, 0x4c, 0x69, 0x73, 0x62, 0x6f, 0x6e, 0x20, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x4d, +0x61, 0x64, 0x65, 0x69, 0x72, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x73, 0x68, 0x6b, 0x65, 0x6e, 0x74, +0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x6e, 0x64, 0x0, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4f, 0x6a, 0x69, 0x6e, 0x61, 0x67, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, +0x6c, 0x61, 0x6e, 0x74, 0x79, 0x72, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x61, 0x6d, 0x61, +0x69, 0x63, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x6e, 0x61, 0x6b, 0x72, 0x79, 0x0, 0x41, +0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, +0x69, 0x63, 0x2f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x74, 0x6f, 0x6e, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, +0x63, 0x61, 0x2f, 0x52, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x57, +0x61, 0x6c, 0x6c, 0x69, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x69, 0x67, 0x6f, 0x6e, 0x0, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x69, 0x72, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x6f, +0x6d, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x50, 0x72, 0x69, +0x6e, 0x63, 0x65, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x52, 0x61, 0x6e, 0x67, 0x6f, 0x6f, 0x6e, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x61, 0x6d, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x45, 0x6c, 0x5f, 0x41, 0x61, 0x69, 0x75, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x75, 0x61, +0x64, 0x61, 0x6c, 0x63, 0x61, 0x6e, 0x61, 0x6c, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x61, 0x6c, 0x69, +0x6e, 0x69, 0x6e, 0x67, 0x72, 0x61, 0x64, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6d, 0x6d, 0x61, 0x6e, 0x0, 0x45, +0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x63, 0x68, 0x61, 0x72, 0x65, 0x73, 0x74, 0x0, 0x41, 0x66, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x6e, +0x5f, 0x4d, 0x61, 0x72, 0x69, 0x6e, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, +0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, 0x20, 0x41, 0x73, 0x69, +0x61, 0x2f, 0x41, 0x6e, 0x61, 0x64, 0x79, 0x72, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x67, 0x6f, +0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x75, 0x72, 0x61, 0x63, 0x61, 0x6f, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x7a, 0x61, 0x74, 0x6c, 0x61, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x75, +0x73, 0x63, 0x61, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x69, 0x6d, 0x61, 0x0, 0x45, 0x75, +0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x75, 0x72, 0x69, 0x63, 0x68, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, +0x2f, 0x52, 0x65, 0x79, 0x6b, 0x6a, 0x61, 0x76, 0x69, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, +0x61, 0x6e, 0x63, 0x75, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x6e, 0x76, 0x65, 0x72, +0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x69, 0x73, 0x65, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, +0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x73, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x4d, 0x61, 0x6e, 0x61, 0x75, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x61, 0x5f, 0x56, +0x69, 0x73, 0x74, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x5f, 0x56, +0x65, 0x6c, 0x68, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x2d, 0x4e, 0x6f, +0x76, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x0, 0x45, 0x74, +0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x30, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, +0x4c, 0x75, 0x63, 0x69, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x0, 0x41, 0x66, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x6c, 0x61, 0x62, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x52, +0x61, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6e, 0x6a, +0x75, 0x6c, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x34, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, +0x61, 0x67, 0x61, 0x64, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x72, 0x61, 0x74, 0x69, 0x73, +0x6c, 0x61, 0x76, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x6e, 0x64, 0x6f, 0x72, 0x72, 0x61, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, +0x2d, 0x35, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x42, 0x6f, 0x75, 0x67, 0x61, 0x69, 0x6e, 0x76, 0x69, +0x6c, 0x6c, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x0, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x64, 0x6d, 0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x42, 0x61, 0x79, 0x20, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x75, 0x76, 0x69, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6b, 0x6e, 0x69, 0x66, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x72, 0x69, 0x62, 0x6f, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, +0x61, 0x2f, 0x53, 0x79, 0x64, 0x6e, 0x65, 0x79, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4d, +0x65, 0x6c, 0x62, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x72, 0x5f, +0x65, 0x73, 0x5f, 0x53, 0x61, 0x6c, 0x61, 0x61, 0x6d, 0x0, 0x4d, 0x53, 0x54, 0x37, 0x4d, 0x44, 0x54, 0x0, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x73, 0x65, 0x72, 0x75, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, +0x4d, 0x61, 0x6a, 0x75, 0x72, 0x6f, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4b, 0x77, 0x61, 0x6a, 0x61, +0x6c, 0x65, 0x69, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x61, 0x69, 0x72, 0x6f, 0x62, 0x69, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x73, 0x68, 0x67, 0x61, 0x62, 0x61, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, +0x6f, 0x6e, 0x67, 0x5f, 0x4b, 0x6f, 0x6e, 0x67, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x33, 0x0, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x50, 0x61, 0x75, 0x6c, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, +0x61, 0x64, 0x72, 0x69, 0x64, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x65, 0x75, 0x74, 0x61, 0x0, 0x41, +0x73, 0x69, 0x61, 0x2f, 0x4a, 0x61, 0x6b, 0x61, 0x72, 0x74, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x6f, 0x6e, +0x74, 0x69, 0x61, 0x6e, 0x61, 0x6b, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x39, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x4a, 0x75, 0x6e, 0x65, 0x61, 0x75, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, +0x74, 0x6c, 0x61, 0x6b, 0x61, 0x74, 0x6c, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x6d, +0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x69, 0x74, 0x6b, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x59, 0x61, 0x6b, 0x75, 0x74, 0x61, 0x74, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, +0x6f, 0x70, 0x65, 0x6e, 0x68, 0x61, 0x67, 0x65, 0x6e, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, +0x2f, 0x4d, 0x63, 0x4d, 0x75, 0x72, 0x64, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51, 0x61, 0x74, 0x61, 0x72, 0x0, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x67, 0x6f, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x6f, 0x73, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, +0x2f, 0x57, 0x61, 0x6b, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x48, 0x65, 0x6c, 0x73, 0x69, 0x6e, 0x6b, +0x69, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x79, 0x6f, 0x74, 0x74, 0x65, 0x0, 0x41, 0x74, 0x6c, +0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x46, 0x61, 0x65, 0x72, 0x6f, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x43, 0x6f, 0x72, 0x61, 0x6c, 0x5f, 0x48, 0x61, 0x72, 0x62, 0x6f, 0x75, 0x72, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, +0x4d, 0x54, 0x2b, 0x31, 0x30, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x72, 0x61, 0x6a, 0x65, 0x76, +0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x62, 0x69, 0x6c, 0x69, 0x73, 0x69, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, +0x4d, 0x54, 0x2b, 0x31, 0x31, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x63, +0x71, 0x75, 0x61, 0x72, 0x69, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, +0x4d, 0x6f, 0x72, 0x65, 0x73, 0x62, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x75, 0x6e, +0x63, 0x69, 0x6f, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x61, 0x68, 0x69, 0x74, 0x69, 0x0, +0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x6d, 0x65, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, +0x2f, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x6f, 0x68, 0x61, 0x6e, +0x6e, 0x65, 0x73, 0x62, 0x75, 0x72, 0x67, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x41, 0x64, +0x65, 0x6c, 0x61, 0x69, 0x64, 0x65, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x6f, +0x6b, 0x65, 0x6e, 0x5f, 0x48, 0x69, 0x6c, 0x6c, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x53, 0x61, 0x69, +0x70, 0x61, 0x6e, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x53, 0x74, 0x61, 0x6e, 0x6c, 0x65, 0x79, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x69, 0x63, 0x6f, 0x73, 0x69, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, +0x75, 0x62, 0x61, 0x69, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4b, 0x65, 0x72, 0x67, 0x75, 0x65, 0x6c, 0x65, +0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x64, 0x6a, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x0, 0x45, 0x75, +0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6b, 0x6f, 0x70, 0x6a, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x64, 0x65, +0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x70, 0x69, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, +0x69, 0x63, 0x2f, 0x48, 0x6f, 0x6e, 0x6f, 0x6c, 0x75, 0x6c, 0x75, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, +0x31, 0x32, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x69, 0x6c, 0x6c, +0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x0, 0x50, +0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x75, 0x63, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x0, 0x45, 0x75, 0x72, 0x6f, +0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x69, 0x6d, +0x66, 0x65, 0x72, 0x6f, 0x70, 0x6f, 0x6c, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x6f, 0x6c, 0x67, 0x6f, +0x67, 0x72, 0x61, 0x64, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x62, 0x75, 0x6c, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, +0x6c, 0x74, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x75, 0x62, 0x61, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x5f, 0x43, 0x69, 0x74, 0x79, 0x20, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x68, 0x69, 0x61, 0x5f, 0x42, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x73, +0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x72, 0x69, 0x64, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x65, 0x79, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, +0x2f, 0x49, 0x73, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x4d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, +0x56, 0x61, 0x64, 0x75, 0x7a, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x6f, 0x72, 0x74, 0x61, 0x6c, +0x65, 0x7a, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x61, 0x67, 0x75, 0x61, 0x69, 0x6e, +0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x65, 0x69, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, +0x65, 0x63, 0x69, 0x66, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x72, +0x65, 0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x65, 0x6f, 0x75, 0x6c, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f, 0x75, 0x70, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, +0x2b, 0x32, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, 0x6f, 0x63, 0x6f, 0x73, 0x0, 0x41, 0x72, 0x63, 0x74, +0x69, 0x63, 0x2f, 0x4c, 0x6f, 0x6e, 0x67, 0x79, 0x65, 0x61, 0x72, 0x62, 0x79, 0x65, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x41, 0x64, 0x64, 0x69, 0x73, 0x5f, 0x41, 0x62, 0x61, 0x62, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, +0x65, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x72, 0x61, +0x72, 0x65, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x50, 0x65, 0x72, 0x74, 0x68, 0x0, 0x45, +0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x76, +0x61, 0x6e, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x73, 0x61, 0x62, 0x6c, 0x61, 0x6e, 0x63, +0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x65, 0x72, 0x65, 0x76, 0x61, 0x6e, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, +0x74, 0x69, 0x63, 0x2f, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x69, +0x70, 0x65, 0x69, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x36, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x47, 0x6f, 0x64, 0x74, 0x68, 0x61, 0x62, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x57, 0x61, 0x72, +0x73, 0x61, 0x77, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x74, 0x61, 0x70, +0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6c, 0x6d, 0x61, 0x74, 0x79, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51, +0x79, 0x7a, 0x79, 0x6c, 0x6f, 0x72, 0x64, 0x61, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, +0x44, 0x61, 0x76, 0x69, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x65, 0x69, 0x72, 0x75, 0x74, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x74, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, +0x2f, 0x4b, 0x61, 0x72, 0x61, 0x63, 0x68, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x63, 0x63, 0x72, +0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x65, 0x72, 0x74, 0x6f, 0x5f, 0x52, 0x69, 0x63, +0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x5f, 0x50, 0x61, 0x7a, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x59, 0x6f, 0x72, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x44, 0x65, 0x74, 0x72, 0x6f, 0x69, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, +0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x50, 0x65, 0x74, 0x65, 0x72, 0x73, 0x62, 0x75, 0x72, 0x67, 0x20, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x6e, +0x65, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x57, +0x69, 0x6e, 0x61, 0x6d, 0x61, 0x63, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x65, 0x6e, 0x74, 0x75, +0x63, 0x6b, 0x79, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x69, 0x63, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x75, 0x69, 0x73, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, +0x61, 0x6d, 0x61, 0x73, 0x63, 0x75, 0x73, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x61, 0x72, 0x61, +0x77, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x34, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x42, 0x6f, 0x67, 0x6f, 0x74, 0x61, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x61, 0x70, +0x65, 0x5f, 0x56, 0x65, 0x72, 0x64, 0x65, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x44, 0x61, +0x72, 0x77, 0x69, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x79, 0x6f, 0x6e, 0x67, 0x79, 0x61, 0x6e, 0x67, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x6b, 0x75, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x69, 0x62, +0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x65, 0x72, 0x75, 0x73, 0x61, 0x6c, 0x65, +0x6d, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x6a, 0x75, 0x62, 0x6c, 0x6a, 0x61, 0x6e, 0x61, 0x0, 0x50, +0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, +0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x72, 0x61, 0x7a, 0x7a, 0x61, +0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x74, 0x6d, 0x61, 0x6e, 0x64, 0x75, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x74, 0x74, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x41, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4a, 0x65, 0x72, +0x73, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x72, +0x61, 0x74, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x37, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x6b, 0x61, 0x72, +0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4f, 0x73, 0x6c, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, +0x41, 0x74, 0x68, 0x65, 0x6e, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, 0x77, 0x61, 0x69, 0x74, 0x0, 0x50, +0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x6f, 0x6e, 0x61, 0x70, 0x65, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, +0x63, 0x2f, 0x4b, 0x6f, 0x73, 0x72, 0x61, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x73, +0x74, 0x61, 0x5f, 0x52, 0x69, 0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6f, 0x6d, 0x69, +0x6e, 0x69, 0x63, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x62, 0x61, 0x62, 0x61, 0x6e, 0x65, 0x0, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x0, 0x49, +0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x52, 0x65, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, +0x54, 0x2b, 0x36, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x73, 0x6e, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x20, 0x41, 0x73, 0x69, +0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x6b, 0x75, 0x7a, 0x6e, 0x65, 0x74, 0x73, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x41, 0x62, 0x69, 0x64, 0x6a, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x69, +0x6f, 0x5f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x69, 0x72, +0x75, 0x6e, 0x65, 0x70, 0x65, 0x0, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x50, 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, +0x67, 0x69, 0x6e, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x43, +0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x35, 0x0, 0x41, 0x6e, 0x74, +0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, +0x6e, 0x2f, 0x4d, 0x61, 0x6c, 0x64, 0x69, 0x76, 0x65, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x65, +0x6c, 0x67, 0x72, 0x61, 0x64, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x6d, 0x65, 0x72, 0x61, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x5f, 0x43, 0x72, 0x65, 0x65, +0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x6f, 0x72, 0x74, 0x5f, 0x4e, 0x65, 0x6c, 0x73, 0x6f, 0x6e, 0x0, 0x45, 0x75, +0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x64, 0x61, 0x70, 0x65, 0x73, 0x74, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x57, 0x69, 0x6e, 0x64, 0x68, 0x6f, 0x65, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x61, 0x79, 0x61, 0x70, +0x75, 0x72, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x69, 0x73, 0x62, 0x61, +0x6e, 0x65, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4c, 0x69, 0x6e, 0x64, 0x65, 0x6d, 0x61, +0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x34, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x43, 0x61, 0x72, 0x61, 0x63, 0x61, 0x73, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x53, +0x79, 0x6f, 0x77, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, 0x67, 0x72, 0x65, 0x62, 0x0, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x65, 0x6e, 0x6f, 0x73, 0x5f, 0x41, 0x69, 0x72, 0x65, 0x73, 0x20, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x4c, 0x61, +0x5f, 0x52, 0x69, 0x6f, 0x6a, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, +0x74, 0x69, 0x6e, 0x61, 0x2f, 0x52, 0x69, 0x6f, 0x5f, 0x47, 0x61, 0x6c, 0x6c, 0x65, 0x67, 0x6f, 0x73, 0x20, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x53, 0x61, 0x6c, 0x74, +0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, +0x53, 0x61, 0x6e, 0x5f, 0x4a, 0x75, 0x61, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, +0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x5f, 0x4c, 0x75, 0x69, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x54, 0x75, 0x63, 0x75, 0x6d, 0x61, +0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, +0x55, 0x73, 0x68, 0x75, 0x61, 0x69, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x74, 0x61, +0x6d, 0x61, 0x72, 0x63, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x62, +0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x75, 0x6a, 0x75, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x6e, 0x64, 0x6f, 0x7a, 0x61, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, +0x63, 0x61, 0x2f, 0x50, 0x61, 0x6c, 0x6d, 0x65, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, +0x72, 0x6f, 0x6e, 0x74, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x71, 0x61, 0x6c, 0x75, 0x69, +0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x69, 0x70, 0x69, 0x67, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x67, 0x6e, 0x69, 0x72, 0x74, 0x75, 0x6e, 0x67, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x54, 0x68, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x42, 0x61, 0x79, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x42, 0x61, 0x6d, 0x61, 0x6b, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x52, 0x69, 0x79, 0x61, 0x64, 0x68, +0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x72, 0x75, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, +0x6f, 0x6b, 0x79, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x6e, 0x64, 0x65, 0x72, 0x62, 0x75, +0x72, 0x79, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x6f, 0x6e, 0x64, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x20, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x65, 0x6e, 0x67, +0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x65, +0x76, 0x61, 0x79, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x6f, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x6e, 0x69, 0x70, 0x65, 0x67, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x52, 0x61, 0x69, 0x6e, 0x79, 0x5f, 0x52, 0x69, 0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x5f, 0x49, 0x6e, 0x6c, 0x65, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, +0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x6c, 0x69, +0x66, 0x61, 0x78, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x42, 0x61, +0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x6f, 0x6f, 0x73, 0x65, 0x5f, 0x42, 0x61, 0x79, 0x20, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x63, 0x74, 0x6f, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x54, 0x6f, 0x6d, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x53, 0x74, 0x5f, 0x54, 0x68, 0x6f, 0x6d, 0x61, 0x73, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x73, +0x61, 0x6b, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x2d, 0x61, 0x75, 0x2d, +0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x69, 0x61, 0x6d, 0x65, 0x79, +0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x33, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6c, +0x67, 0x69, 0x65, 0x72, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x79, 0x61, 0x71, +0x75, 0x69, 0x6c, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, 0x68, 0x61, 0x67, 0x6f, 0x73, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x53, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x43, 0x75, 0x69, 0x61, 0x62, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6d, 0x70, 0x6f, +0x5f, 0x47, 0x72, 0x61, 0x6e, 0x64, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x69, 0x64, 0x77, +0x61, 0x79, 0x0, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, 0x68, +0x72, 0x69, 0x73, 0x74, 0x6d, 0x61, 0x73, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x61, 0x6c, 0x61, +0x70, 0x61, 0x67, 0x6f, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x67, 0x75, 0x69, 0x6c, +0x6c, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x67, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, +0x50, 0x61, 0x6c, 0x61, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x61, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x20, 0x41, +0x73, 0x69, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x74, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x68, 0x61, 0x6e, 0x64, +0x79, 0x67, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x69, 0x6c, 0x6e, 0x69, 0x75, 0x73, 0x0, 0x41, +0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x72, 0x6f, 0x76, 0x69, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, +0x69, 0x63, 0x2f, 0x47, 0x75, 0x61, 0x6d, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x6e, 0x6d, +0x61, 0x72, 0x6b, 0x73, 0x68, 0x61, 0x76, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, 0x69, 0x6a, +0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x75, 0x61, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x62, 0x79, 0x73, 0x75, 0x6e, 0x64, 0x0, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x42, 0x61, 0x72, 0x74, 0x68, 0x65, 0x6c, 0x65, 0x6d, 0x79, +0x0, 0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x61, +0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4f, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x41, 0x71, 0x74, 0x61, 0x75, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x71, 0x74, 0x6f, 0x62, 0x65, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x63, 0x61, 0x67, 0x6f, 0x20, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x4b, 0x6e, 0x6f, 0x78, 0x20, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x54, 0x65, 0x6c, 0x6c, 0x5f, 0x43, +0x69, 0x74, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x65, +0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, +0x74, 0x61, 0x2f, 0x42, 0x65, 0x75, 0x6c, 0x61, 0x68, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, +0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x4e, +0x65, 0x77, 0x5f, 0x53, 0x61, 0x6c, 0x65, 0x6d, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x74, +0x61, 0x6d, 0x6f, 0x72, 0x6f, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x68, 0x75, 0x6c, 0x65, +0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x31, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, +0x2f, 0x53, 0x74, 0x5f, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, +0x69, 0x75, 0x65, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x75, 0x73, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x20, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x43, 0x68, 0x6f, 0x69, 0x62, 0x61, 0x6c, 0x73, 0x61, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, +0x54, 0x2d, 0x32, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x69, 0x6e, 0x73, 0x6b, 0x0, 0x41, 0x66, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4a, 0x75, 0x62, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x48, +0x6f, 0x62, 0x61, 0x72, 0x74, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x43, 0x75, 0x72, 0x72, +0x69, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x6c, 0x61, 0x64, 0x69, 0x76, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x20, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x6b, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, +0x73, 0x74, 0x2d, 0x4e, 0x65, 0x72, 0x61, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x44, +0x75, 0x6d, 0x6f, 0x6e, 0x74, 0x44, 0x55, 0x72, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, +0x2f, 0x44, 0x75, 0x62, 0x6c, 0x69, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x69, 0x65, 0x6e, 0x6e, +0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x0, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x65, 0x6e, 0x6f, 0x73, 0x5f, 0x41, 0x69, 0x72, 0x65, 0x73, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x6c, 0x69, 0x66, 0x61, 0x78, 0x0, 0x41, 0x75, 0x73, +0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x53, 0x79, 0x64, 0x6e, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x52, 0x65, 0x67, 0x69, 0x6e, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x41, +0x64, 0x65, 0x6c, 0x61, 0x69, 0x64, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6c, 0x6d, 0x61, 0x74, 0x79, 0x0, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x75, 0x69, 0x61, 0x62, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x4d, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x5f, 0x43, 0x69, 0x74, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x63, 0x61, 0x67, 0x6f, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, +0x2f, 0x42, 0x72, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x65, +0x77, 0x5f, 0x59, 0x6f, 0x72, 0x6b, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x69, 0x65, 0x76, 0x0, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, +0x6f, 0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x73, 0x6e, 0x6f, +0x79, 0x61, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, +0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, +0x61, 0x6c, 0x69, 0x61, 0x2f, 0x48, 0x6f, 0x62, 0x61, 0x72, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x6c, 0x61, +0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, +0x69, 0x61, 0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x6c, 0x61, 0x64, 0x69, +0x76, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x65, 0x72, 0x6c, 0x69, 0x6e, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x73, 0x68, 0x6b, 0x65, 0x6e, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, +0x59, 0x61, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x0, 0x55, 0x54, 0x43, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x34, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x32, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x31, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x30, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x39, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x38, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x37, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x36, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x35, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x34, 0x3a, 0x33, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x34, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x33, 0x3a, 0x33, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x33, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x32, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x31, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x30, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x31, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x33, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x33, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x34, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x34, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a, 0x33, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x35, 0x3a, 0x34, +0x35, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x36, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x36, 0x3a, 0x33, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x37, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x38, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x39, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x39, 0x3a, 0x33, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x30, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x31, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x32, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x33, 0x3a, 0x30, +0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x34, 0x3a, 0x30, 0x30, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x30, 0x38, 0x3a, 0x33, +0x30, 0x0 +}; +// GENERATED PART ENDS HERE + +QT_END_NAMESPACE + +#endif // QTIMEZONEPRIVATE_DATA_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtimezoneprivate_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtimezoneprivate_p.h new file mode 100644 index 000000000..74b79dce1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtimezoneprivate_p.h @@ -0,0 +1,490 @@ +/**************************************************************************** +** +** Copyright (C) 2013 John Layt +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QTIMEZONEPRIVATE_P_H +#define QTIMEZONEPRIVATE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include "qtimezone.h" +#include "qlocale_p.h" +#include "qvector.h" + +#if QT_CONFIG(icu) +#include +#endif + +#ifdef Q_OS_DARWIN +Q_FORWARD_DECLARE_OBJC_CLASS(NSTimeZone); +#endif // Q_OS_DARWIN + +#ifdef Q_OS_WIN +#include +#endif // Q_OS_WIN + +#ifdef Q_OS_ANDROID +#include +#endif + +QT_BEGIN_NAMESPACE + +class Q_AUTOTEST_EXPORT QTimeZonePrivate : public QSharedData +{ +public: + //Version of QTimeZone::OffsetData struct using msecs for efficiency + struct Data { + QString abbreviation; + qint64 atMSecsSinceEpoch; + int offsetFromUtc; + int standardTimeOffset; + int daylightTimeOffset; + }; + typedef QVector DataList; + + // Create null time zone + QTimeZonePrivate(); + QTimeZonePrivate(const QTimeZonePrivate &other); + virtual ~QTimeZonePrivate(); + + virtual QTimeZonePrivate *clone() const; + + bool operator==(const QTimeZonePrivate &other) const; + bool operator!=(const QTimeZonePrivate &other) const; + + bool isValid() const; + + QByteArray id() const; + virtual QLocale::Country country() const; + virtual QString comment() const; + + virtual QString displayName(qint64 atMSecsSinceEpoch, + QTimeZone::NameType nameType, + const QLocale &locale) const; + virtual QString displayName(QTimeZone::TimeType timeType, + QTimeZone::NameType nameType, + const QLocale &locale) const; + virtual QString abbreviation(qint64 atMSecsSinceEpoch) const; + + virtual int offsetFromUtc(qint64 atMSecsSinceEpoch) const; + virtual int standardTimeOffset(qint64 atMSecsSinceEpoch) const; + virtual int daylightTimeOffset(qint64 atMSecsSinceEpoch) const; + + virtual bool hasDaylightTime() const; + virtual bool isDaylightTime(qint64 atMSecsSinceEpoch) const; + + virtual Data data(qint64 forMSecsSinceEpoch) const; + Data dataForLocalTime(qint64 forLocalMSecs, int hint) const; + + virtual bool hasTransitions() const; + virtual Data nextTransition(qint64 afterMSecsSinceEpoch) const; + virtual Data previousTransition(qint64 beforeMSecsSinceEpoch) const; + DataList transitions(qint64 fromMSecsSinceEpoch, qint64 toMSecsSinceEpoch) const; + + virtual QByteArray systemTimeZoneId() const; + + virtual QList availableTimeZoneIds() const; + virtual QList availableTimeZoneIds(QLocale::Country country) const; + virtual QList availableTimeZoneIds(int utcOffset) const; + + virtual void serialize(QDataStream &ds) const; + + // Static Utility Methods + static inline qint64 maxMSecs() { return std::numeric_limits::max(); } + static inline qint64 minMSecs() { return std::numeric_limits::min() + 1; } + static inline qint64 invalidMSecs() { return std::numeric_limits::min(); } + static inline qint64 invalidSeconds() { return std::numeric_limits::min(); } + static Data invalidData(); + static QTimeZone::OffsetData invalidOffsetData(); + static QTimeZone::OffsetData toOffsetData(const Data &data); + static bool isValidId(const QByteArray &ianaId); + static QString isoOffsetFormat(int offsetFromUtc); + + static QByteArray ianaIdToWindowsId(const QByteArray &ianaId); + static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId); + static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId, + QLocale::Country country); + static QList windowsIdToIanaIds(const QByteArray &windowsId); + static QList windowsIdToIanaIds(const QByteArray &windowsId, + QLocale::Country country); + + // returns "UTC" QString and QByteArray + Q_REQUIRED_RESULT static inline QString utcQString() + { + return QStringLiteral("UTC"); + } + + Q_REQUIRED_RESULT static inline QByteArray utcQByteArray() + { + return QByteArrayLiteral("UTC"); + } + +protected: + QByteArray m_id; +}; +Q_DECLARE_TYPEINFO(QTimeZonePrivate::Data, Q_MOVABLE_TYPE); + +template<> QTimeZonePrivate *QSharedDataPointer::clone(); + +class Q_AUTOTEST_EXPORT QUtcTimeZonePrivate Q_DECL_FINAL : public QTimeZonePrivate +{ +public: + // Create default UTC time zone + QUtcTimeZonePrivate(); + // Create named time zone + QUtcTimeZonePrivate(const QByteArray &utcId); + // Create offset from UTC + QUtcTimeZonePrivate(int offsetSeconds); + // Create custom offset from UTC + QUtcTimeZonePrivate(const QByteArray &zoneId, int offsetSeconds, const QString &name, + const QString &abbreviation, QLocale::Country country, + const QString &comment); + QUtcTimeZonePrivate(const QUtcTimeZonePrivate &other); + virtual ~QUtcTimeZonePrivate(); + + QUtcTimeZonePrivate *clone() const override; + + Data data(qint64 forMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + QLocale::Country country() const Q_DECL_OVERRIDE; + QString comment() const Q_DECL_OVERRIDE; + + QString displayName(QTimeZone::TimeType timeType, + QTimeZone::NameType nameType, + const QLocale &locale) const Q_DECL_OVERRIDE; + QString abbreviation(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + int standardTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int daylightTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + QByteArray systemTimeZoneId() const Q_DECL_OVERRIDE; + + QList availableTimeZoneIds() const Q_DECL_OVERRIDE; + QList availableTimeZoneIds(QLocale::Country country) const Q_DECL_OVERRIDE; + QList availableTimeZoneIds(int utcOffset) const Q_DECL_OVERRIDE; + + void serialize(QDataStream &ds) const Q_DECL_OVERRIDE; + +private: + void init(const QByteArray &zoneId); + void init(const QByteArray &zoneId, int offsetSeconds, const QString &name, + const QString &abbreviation, QLocale::Country country, + const QString &comment); + + QString m_name; + QString m_abbreviation; + QString m_comment; + QLocale::Country m_country; + int m_offsetFromUtc; +}; + +#if QT_CONFIG(icu) +class Q_AUTOTEST_EXPORT QIcuTimeZonePrivate Q_DECL_FINAL : public QTimeZonePrivate +{ +public: + // Create default time zone + QIcuTimeZonePrivate(); + // Create named time zone + QIcuTimeZonePrivate(const QByteArray &ianaId); + QIcuTimeZonePrivate(const QIcuTimeZonePrivate &other); + ~QIcuTimeZonePrivate(); + + QIcuTimeZonePrivate *clone() const override; + + QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType, + const QLocale &locale) const Q_DECL_OVERRIDE; + QString abbreviation(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + int offsetFromUtc(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int standardTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int daylightTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + bool hasDaylightTime() const Q_DECL_OVERRIDE; + bool isDaylightTime(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + Data data(qint64 forMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + bool hasTransitions() const Q_DECL_OVERRIDE; + Data nextTransition(qint64 afterMSecsSinceEpoch) const Q_DECL_OVERRIDE; + Data previousTransition(qint64 beforeMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + QByteArray systemTimeZoneId() const Q_DECL_OVERRIDE; + + QList availableTimeZoneIds() const Q_DECL_OVERRIDE; + QList availableTimeZoneIds(QLocale::Country country) const Q_DECL_OVERRIDE; + QList availableTimeZoneIds(int offsetFromUtc) const Q_DECL_OVERRIDE; + +private: + void init(const QByteArray &ianaId); + + UCalendar *m_ucal; +}; +#endif + +#if defined Q_OS_UNIX && !defined Q_OS_MAC && !defined Q_OS_ANDROID +struct QTzTransitionTime +{ + qint64 atMSecsSinceEpoch; + quint8 ruleIndex; +}; +Q_DECLARE_TYPEINFO(QTzTransitionTime, Q_PRIMITIVE_TYPE); +struct QTzTransitionRule +{ + int stdOffset; + int dstOffset; + quint8 abbreviationIndex; +}; +Q_DECLARE_TYPEINFO(QTzTransitionRule, Q_PRIMITIVE_TYPE); +Q_DECL_CONSTEXPR inline bool operator==(const QTzTransitionRule &lhs, const QTzTransitionRule &rhs) Q_DECL_NOTHROW +{ return lhs.stdOffset == rhs.stdOffset && lhs.dstOffset == rhs.dstOffset && lhs.abbreviationIndex == rhs.abbreviationIndex; } +Q_DECL_CONSTEXPR inline bool operator!=(const QTzTransitionRule &lhs, const QTzTransitionRule &rhs) Q_DECL_NOTHROW +{ return !operator==(lhs, rhs); } + +class Q_AUTOTEST_EXPORT QTzTimeZonePrivate Q_DECL_FINAL : public QTimeZonePrivate +{ + QTzTimeZonePrivate(const QTzTimeZonePrivate &) = default; +public: + // Create default time zone + QTzTimeZonePrivate(); + // Create named time zone + QTzTimeZonePrivate(const QByteArray &ianaId); + ~QTzTimeZonePrivate(); + + QTzTimeZonePrivate *clone() const override; + + QLocale::Country country() const Q_DECL_OVERRIDE; + QString comment() const Q_DECL_OVERRIDE; + + QString displayName(qint64 atMSecsSinceEpoch, + QTimeZone::NameType nameType, + const QLocale &locale) const Q_DECL_OVERRIDE; + QString displayName(QTimeZone::TimeType timeType, + QTimeZone::NameType nameType, + const QLocale &locale) const Q_DECL_OVERRIDE; + QString abbreviation(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + int offsetFromUtc(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int standardTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int daylightTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + bool hasDaylightTime() const Q_DECL_OVERRIDE; + bool isDaylightTime(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + Data data(qint64 forMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + bool hasTransitions() const Q_DECL_OVERRIDE; + Data nextTransition(qint64 afterMSecsSinceEpoch) const Q_DECL_OVERRIDE; + Data previousTransition(qint64 beforeMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + QByteArray systemTimeZoneId() const Q_DECL_OVERRIDE; + + QList availableTimeZoneIds() const Q_DECL_OVERRIDE; + QList availableTimeZoneIds(QLocale::Country country) const Q_DECL_OVERRIDE; + +private: + void init(const QByteArray &ianaId); + + Data dataForTzTransition(QTzTransitionTime tran) const; + QVector m_tranTimes; + QVector m_tranRules; + QList m_abbreviations; +#if QT_CONFIG(icu) + mutable QSharedDataPointer m_icu; +#endif + QByteArray m_posixRule; +}; +#endif // Q_OS_UNIX + +#ifdef Q_OS_MAC +class Q_AUTOTEST_EXPORT QMacTimeZonePrivate Q_DECL_FINAL : public QTimeZonePrivate +{ +public: + // Create default time zone + QMacTimeZonePrivate(); + // Create named time zone + QMacTimeZonePrivate(const QByteArray &ianaId); + QMacTimeZonePrivate(const QMacTimeZonePrivate &other); + ~QMacTimeZonePrivate(); + + QMacTimeZonePrivate *clone() const override; + + QString comment() const Q_DECL_OVERRIDE; + + QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType, + const QLocale &locale) const Q_DECL_OVERRIDE; + QString abbreviation(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + int offsetFromUtc(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int standardTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int daylightTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + bool hasDaylightTime() const Q_DECL_OVERRIDE; + bool isDaylightTime(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + Data data(qint64 forMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + bool hasTransitions() const Q_DECL_OVERRIDE; + Data nextTransition(qint64 afterMSecsSinceEpoch) const Q_DECL_OVERRIDE; + Data previousTransition(qint64 beforeMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + QByteArray systemTimeZoneId() const Q_DECL_OVERRIDE; + + QList availableTimeZoneIds() const Q_DECL_OVERRIDE; + + NSTimeZone *nsTimeZone() const; + +private: + void init(const QByteArray &zoneId); + + NSTimeZone *m_nstz; +}; +#endif // Q_OS_MAC + +#ifdef Q_OS_WIN +class Q_AUTOTEST_EXPORT QWinTimeZonePrivate Q_DECL_FINAL : public QTimeZonePrivate +{ +public: + struct QWinTransitionRule { + int startYear; + int standardTimeBias; + int daylightTimeBias; + SYSTEMTIME standardTimeRule; + SYSTEMTIME daylightTimeRule; + }; + + // Create default time zone + QWinTimeZonePrivate(); + // Create named time zone + QWinTimeZonePrivate(const QByteArray &ianaId); + QWinTimeZonePrivate(const QWinTimeZonePrivate &other); + ~QWinTimeZonePrivate(); + + QWinTimeZonePrivate *clone() const override; + + QString comment() const Q_DECL_OVERRIDE; + + QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType, + const QLocale &locale) const Q_DECL_OVERRIDE; + QString abbreviation(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + int offsetFromUtc(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int standardTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int daylightTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + bool hasDaylightTime() const Q_DECL_OVERRIDE; + bool isDaylightTime(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + Data data(qint64 forMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + bool hasTransitions() const Q_DECL_OVERRIDE; + Data nextTransition(qint64 afterMSecsSinceEpoch) const Q_DECL_OVERRIDE; + Data previousTransition(qint64 beforeMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + QByteArray systemTimeZoneId() const Q_DECL_OVERRIDE; + + QList availableTimeZoneIds() const Q_DECL_OVERRIDE; + +private: + void init(const QByteArray &ianaId); + QWinTransitionRule ruleForYear(int year) const; + QTimeZonePrivate::Data ruleToData(const QWinTransitionRule &rule, qint64 atMSecsSinceEpoch, + QTimeZone::TimeType type) const; + + QByteArray m_windowsId; + QString m_displayName; + QString m_standardName; + QString m_daylightName; + QList m_tranRules; +}; +#endif // Q_OS_WIN + +#ifdef Q_OS_ANDROID +class QAndroidTimeZonePrivate Q_DECL_FINAL : public QTimeZonePrivate +{ +public: + // Create default time zone + QAndroidTimeZonePrivate(); + // Create named time zone + QAndroidTimeZonePrivate(const QByteArray &ianaId); + QAndroidTimeZonePrivate(const QAndroidTimeZonePrivate &other); + ~QAndroidTimeZonePrivate(); + + QAndroidTimeZonePrivate *clone() const override; + + QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType, + const QLocale &locale) const Q_DECL_OVERRIDE; + QString abbreviation(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + int offsetFromUtc(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int standardTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + int daylightTimeOffset(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + bool hasDaylightTime() const Q_DECL_OVERRIDE; + bool isDaylightTime(qint64 atMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + Data data(qint64 forMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + bool hasTransitions() const Q_DECL_OVERRIDE; + Data nextTransition(qint64 afterMSecsSinceEpoch) const Q_DECL_OVERRIDE; + Data previousTransition(qint64 beforeMSecsSinceEpoch) const Q_DECL_OVERRIDE; + + QByteArray systemTimeZoneId() const Q_DECL_OVERRIDE; + + QList availableTimeZoneIds() const Q_DECL_OVERRIDE; + +private: + void init(const QByteArray &zoneId); + + QJNIObjectPrivate androidTimeZone; + +}; +#endif // Q_OS_ANDROID + +QT_END_NAMESPACE + +#endif // QTIMEZONEPRIVATE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtldurl_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtldurl_p.h new file mode 100644 index 000000000..4636f1887 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtldurl_p.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTLDURL_P_H +#define QTLDURL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qDecodeDataUrl. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qurl.h" +#include "QtCore/qstring.h" + +QT_REQUIRE_CONFIG(topleveldomain); + +QT_BEGIN_NAMESPACE + +Q_CORE_EXPORT QString qTopLevelDomain(const QString &domain); +Q_CORE_EXPORT bool qIsEffectiveTLD(const QStringRef &domain); +inline bool qIsEffectiveTLD(const QString &domain) +{ + return qIsEffectiveTLD(QStringRef(&domain)); +} + +QT_END_NAMESPACE + +#endif // QDATAURL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtools_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtools_p.h new file mode 100644 index 000000000..17d2ab852 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtools_p.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTOOLS_P_H +#define QTOOLS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "QtCore/private/qglobal_p.h" +#include + +QT_BEGIN_NAMESPACE + +namespace QtMiscUtils { +Q_DECL_CONSTEXPR inline char toHexUpper(uint value) Q_DECL_NOTHROW +{ + return "0123456789ABCDEF"[value & 0xF]; +} + +Q_DECL_CONSTEXPR inline char toHexLower(uint value) Q_DECL_NOTHROW +{ + return "0123456789abcdef"[value & 0xF]; +} + +Q_DECL_CONSTEXPR inline int fromHex(uint c) Q_DECL_NOTHROW +{ + return ((c >= '0') && (c <= '9')) ? int(c - '0') : + ((c >= 'A') && (c <= 'F')) ? int(c - 'A' + 10) : + ((c >= 'a') && (c <= 'f')) ? int(c - 'a' + 10) : + /* otherwise */ -1; +} + +Q_DECL_CONSTEXPR inline char toOct(uint value) Q_DECL_NOTHROW +{ + return '0' + char(value & 0x7); +} + +Q_DECL_CONSTEXPR inline int fromOct(uint c) Q_DECL_NOTHROW +{ + return ((c >= '0') && (c <= '7')) ? int(c - '0') : -1; +} +} + +// We typically need an extra bit for qNextPowerOfTwo when determining the next allocation size. +enum { + MaxAllocSize = INT_MAX +}; + +struct CalculateGrowingBlockSizeResult { + size_t size; + size_t elementCount; +}; + +// implemented in qbytearray.cpp +size_t Q_CORE_EXPORT Q_DECL_CONST_FUNCTION +qCalculateBlockSize(size_t elementCount, size_t elementSize, size_t headerSize = 0) Q_DECL_NOTHROW; +CalculateGrowingBlockSizeResult Q_CORE_EXPORT Q_DECL_CONST_FUNCTION +qCalculateGrowingBlockSize(size_t elementCount, size_t elementSize, size_t headerSize = 0) Q_DECL_NOTHROW ; + +QT_END_NAMESPACE + +#endif // QTOOLS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtranslator_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtranslator_p.h new file mode 100644 index 000000000..e148637ac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtranslator_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTRANSLATOR_P_H +#define QTRANSLATOR_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 translation tools. This header file may change from version +// to version without notice, or even be removed. +// +// We mean it. +// + +#include + +enum { + Q_EQ = 0x01, + Q_LT = 0x02, + Q_LEQ = 0x03, + Q_BETWEEN = 0x04, + + Q_NOT = 0x08, + Q_MOD_10 = 0x10, + Q_MOD_100 = 0x20, + Q_LEAD_1000 = 0x40, + + Q_AND = 0xFD, + Q_OR = 0xFE, + Q_NEWRULE = 0xFF, + + Q_OP_MASK = 0x07, + + Q_NEQ = Q_NOT | Q_EQ, + Q_GT = Q_NOT | Q_LEQ, + Q_GEQ = Q_NOT | Q_LT, + Q_NOT_BETWEEN = Q_NOT | Q_BETWEEN +}; + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtsciicodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtsciicodec_p.h new file mode 100644 index 000000000..68ab01f7b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qtsciicodec_p.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Most of the code here was originally written by Hans Petter Bieker, +// and is included in Qt with the author's permission, and the grateful +// thanks of the Qt team. + +/* + * Copyright (C) 2000 Hans Petter Bieker. All rights reserved. + * + * 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 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 REGENTS 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 QTSCIICODEC_P_H +#define QTSCIICODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qtextcodec.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_CODECS + +class QTsciiCodec : public QTextCodec { +public: + ~QTsciiCodec(); + + QByteArray name() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; + + QString convertToUnicode(const char *, int, ConverterState *) const Q_DECL_OVERRIDE; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const Q_DECL_OVERRIDE; +}; + +#endif // QT_NO_CODECS + +QT_END_NAMESPACE + +#endif // QTSCIICODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qunicodetables_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qunicodetables_p.h new file mode 100644 index 000000000..be2f44f0c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qunicodetables_p.h @@ -0,0 +1,210 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* This file is autogenerated from the Unicode 8.0 database. Do not edit */ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#ifndef QUNICODETABLES_P_H +#define QUNICODETABLES_P_H + +#include + +#include + +QT_BEGIN_NAMESPACE + +#define UNICODE_DATA_VERSION QChar::Unicode_8_0 + +namespace QUnicodeTables { + +struct Properties { + ushort category : 8; /* 5 used */ + ushort direction : 8; /* 5 used */ + ushort combiningClass : 8; + ushort joining : 3; + signed short digitValue : 5; + signed short mirrorDiff : 16; + ushort lowerCaseSpecial : 1; + signed short lowerCaseDiff : 15; + ushort upperCaseSpecial : 1; + signed short upperCaseDiff : 15; + ushort titleCaseSpecial : 1; + signed short titleCaseDiff : 15; + ushort caseFoldSpecial : 1; + signed short caseFoldDiff : 15; + ushort unicodeVersion : 8; /* 5 used */ + ushort nfQuickCheck : 8; + ushort graphemeBreakClass : 4; /* 4 used */ + ushort wordBreakClass : 4; /* 4 used */ + ushort sentenceBreakClass : 8; /* 4 used */ + ushort lineBreakClass : 8; /* 6 used */ + ushort script : 8; +}; + +Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4) Q_DECL_NOTHROW; +Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2) Q_DECL_NOTHROW; + +struct LowercaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->lowerCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->lowerCaseSpecial; } +}; + +struct UppercaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->upperCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->upperCaseSpecial; } +}; + +struct TitlecaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->titleCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->titleCaseSpecial; } +}; + +struct CasefoldTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->caseFoldDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->caseFoldSpecial; } +}; + +enum GraphemeBreakClass { + GraphemeBreak_Other, + GraphemeBreak_CR, + GraphemeBreak_LF, + GraphemeBreak_Control, + GraphemeBreak_Extend, + GraphemeBreak_RegionalIndicator, + GraphemeBreak_Prepend, + GraphemeBreak_SpacingMark, + GraphemeBreak_L, + GraphemeBreak_V, + GraphemeBreak_T, + GraphemeBreak_LV, + GraphemeBreak_LVT +}; + +enum WordBreakClass { + WordBreak_Other, + WordBreak_CR, + WordBreak_LF, + WordBreak_Newline, + WordBreak_Extend, + WordBreak_RegionalIndicator, + WordBreak_Katakana, + WordBreak_HebrewLetter, + WordBreak_ALetter, + WordBreak_SingleQuote, + WordBreak_DoubleQuote, + WordBreak_MidNumLet, + WordBreak_MidLetter, + WordBreak_MidNum, + WordBreak_Numeric, + WordBreak_ExtendNumLet +}; + +enum SentenceBreakClass { + SentenceBreak_Other, + SentenceBreak_CR, + SentenceBreak_LF, + SentenceBreak_Sep, + SentenceBreak_Extend, + SentenceBreak_Sp, + SentenceBreak_Lower, + SentenceBreak_Upper, + SentenceBreak_OLetter, + SentenceBreak_Numeric, + SentenceBreak_ATerm, + SentenceBreak_SContinue, + SentenceBreak_STerm, + SentenceBreak_Close +}; + +// see http://www.unicode.org/reports/tr14/tr14-30.html +// we don't use the XX and AI classes and map them to AL instead. +enum LineBreakClass { + LineBreak_OP, LineBreak_CL, LineBreak_CP, LineBreak_QU, LineBreak_GL, + LineBreak_NS, LineBreak_EX, LineBreak_SY, LineBreak_IS, LineBreak_PR, + LineBreak_PO, LineBreak_NU, LineBreak_AL, LineBreak_HL, LineBreak_ID, + LineBreak_IN, LineBreak_HY, LineBreak_BA, LineBreak_BB, LineBreak_B2, + LineBreak_ZW, LineBreak_CM, LineBreak_WJ, LineBreak_H2, LineBreak_H3, + LineBreak_JL, LineBreak_JV, LineBreak_JT, LineBreak_RI, LineBreak_CB, + LineBreak_SA, LineBreak_SG, LineBreak_SP, LineBreak_CR, LineBreak_LF, + LineBreak_BK +}; + +Q_CORE_EXPORT GraphemeBreakClass QT_FASTCALL graphemeBreakClass(uint ucs4) Q_DECL_NOTHROW; +inline GraphemeBreakClass graphemeBreakClass(QChar ch) Q_DECL_NOTHROW +{ return graphemeBreakClass(ch.unicode()); } + +Q_CORE_EXPORT WordBreakClass QT_FASTCALL wordBreakClass(uint ucs4) Q_DECL_NOTHROW; +inline WordBreakClass wordBreakClass(QChar ch) Q_DECL_NOTHROW +{ return wordBreakClass(ch.unicode()); } + +Q_CORE_EXPORT SentenceBreakClass QT_FASTCALL sentenceBreakClass(uint ucs4) Q_DECL_NOTHROW; +inline SentenceBreakClass sentenceBreakClass(QChar ch) Q_DECL_NOTHROW +{ return sentenceBreakClass(ch.unicode()); } + +Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4) Q_DECL_NOTHROW; +inline LineBreakClass lineBreakClass(QChar ch) Q_DECL_NOTHROW +{ return lineBreakClass(ch.unicode()); } + +} // namespace QUnicodeTables + +QT_END_NAMESPACE + +#endif // QUNICODETABLES_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qunicodetools_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qunicodetools_p.h new file mode 100644 index 000000000..5e2d56a22 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qunicodetools_p.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUNICODETOOLS_P_H +#define QUNICODETOOLS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +struct QCharAttributes +{ + uchar graphemeBoundary : 1; + uchar wordBreak : 1; + uchar sentenceBoundary : 1; + uchar lineBreak : 1; + uchar whiteSpace : 1; + uchar wordStart : 1; + uchar wordEnd : 1; + uchar mandatoryBreak : 1; +}; +Q_DECLARE_TYPEINFO(QCharAttributes, Q_PRIMITIVE_TYPE); + +namespace QUnicodeTools { + +// ### temporary +struct ScriptItem +{ + int position; + int script; +}; + +} // namespace QUnicodeTools +Q_DECLARE_TYPEINFO(QUnicodeTools::ScriptItem, Q_PRIMITIVE_TYPE); +namespace QUnicodeTools { + +enum CharAttributeOption { + GraphemeBreaks = 0x01, + WordBreaks = 0x02, + SentenceBreaks = 0x04, + LineBreaks = 0x08, + WhiteSpaces = 0x10, + DefaultOptionsCompat = GraphemeBreaks | LineBreaks | WhiteSpaces, // ### remove + + DontClearAttributes = 0x1000 +}; +Q_DECLARE_FLAGS(CharAttributeOptions, CharAttributeOption) + +// attributes buffer has to have a length of string length + 1 +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 + +#endif // QUNICODETOOLS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qurl_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qurl_p.h new file mode 100644 index 000000000..cb88cac35 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qurl_p.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QURL_P_H +#define QURL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience of +// qurl*.cpp This header file may change from version to version without +// notice, or even be removed. +// +// We mean it. +// + +#include +#include "qurl.h" + +QT_BEGIN_NAMESPACE + +// in qurlrecode.cpp +extern Q_AUTOTEST_EXPORT int qt_urlRecode(QString &appendTo, const QChar *begin, const QChar *end, + QUrl::ComponentFormattingOptions encoding, const ushort *tableModifications = 0); + +// in qurlidna.cpp +enum AceLeadingDot { AllowLeadingDot, ForbidLeadingDot }; +enum AceOperation { ToAceOnly, NormalizeAce }; +extern QString qt_ACE_do(const QString &domain, AceOperation op, AceLeadingDot dot); +extern Q_AUTOTEST_EXPORT void qt_nameprep(QString *source, int from); +extern Q_AUTOTEST_EXPORT bool qt_check_std3rules(const QChar *uc, int len); +extern Q_AUTOTEST_EXPORT void qt_punycodeEncoder(const QChar *s, int ucLength, QString *output); +extern Q_AUTOTEST_EXPORT QString qt_punycodeDecoder(const QString &pc); +extern Q_AUTOTEST_EXPORT QString qt_urlRecodeByteArray(const QByteArray &ba); + +QT_END_NAMESPACE + +#endif // QURL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qurltlds_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qurltlds_p.h new file mode 100644 index 000000000..4d21b608f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qurltlds_p.h @@ -0,0 +1,13761 @@ +// Version: MPL 1.1/GPL 2.0/LGPL 2.1 +// +// The contents of this file are subject to the Mozilla Public License Version +// 1.1 (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// http://www.mozilla.org/MPL/ +// +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the +// License. +// +// The Original Code is the Public Suffix List. +// +// The Initial Developer of the Original Code is +// Jo Hermans . +// Portions created by the Initial Developer are Copyright (C) 2007 +// the Initial Developer. All Rights Reserved. +// +// Contributor(s): +// Ruben Arakelyan +// Gervase Markham +// Pamela Greene +// David Triendl +// Jothan Frakes +// The kind representatives of many TLD registries +// +// Alternatively, the contents of this file may be used under the terms of +// either the GNU General Public License Version 2 or later (the "GPL"), or +// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +// in which case the provisions of the GPL or the LGPL are applicable instead +// of those above. If you wish to allow use of your version of this file only +// under the terms of either the GPL or the LGPL, and not to allow others to +// use your version of this file under the terms of the MPL, indicate your +// decision by deleting the provisions above and replace them with the notice +// and other provisions required by the GPL or the LGPL. If you do not delete +// the provisions above, a recipient may use your version of this file under +// the terms of any one of the MPL, the GPL or the LGPL. +// + +#ifndef QURLTLD_P_H +#define QURLTLD_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 Network Access and Core framework. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +// note to maintainer: +// this file should be updated before each release -> +// for instructions see the program at +// util/corelib/qurl-generateTLDs + +static const quint16 tldCount = 8419; +static const quint32 tldIndices[] = { +0, +0, +14, +14, +14, +14, +43, +43, +43, +61, +73, +73, +73, +73, +115, +122, +141, +150, +165, +193, +210, +210, +228, +228, +248, +248, +261, +277, +277, +277, +287, +287, +296, +330, +345, +345, +345, +345, +345, +381, +381, +381, +381, +381, +395, +405, +418, +418, +438, +448, +448, +448, +472, +472, +472, +477, +489, +496, +496, +514, +542, +554, +554, +578, +578, +578, +597, +597, +597, +627, +627, +627, +655, +655, +663, +676, +691, +691, +691, +697, +704, +711, +738, +754, +788, +825, +830, +837, +849, +849, +856, +909, +927, +952, +952, +959, +1005, +1032, +1052, +1059, +1059, +1066, +1142, +1149, +1174, +1174, +1174, +1181, +1191, +1214, +1245, +1252, +1273, +1317, +1338, +1338, +1338, +1368, +1375, +1401, +1408, +1408, +1408, +1415, +1445, +1468, +1468, +1468, +1468, +1468, +1486, +1506, +1512, +1519, +1539, +1546, +1569, +1577, +1577, +1584, +1584, +1591, +1609, +1647, +1668, +1675, +1703, +1710, +1710, +1717, +1729, +1729, +1742, +1762, +1762, +1762, +1813, +1841, +1841, +1841, +1841, +1848, +1872, +1890, +1925, +1949, +1965, +1976, +1987, +2002, +2002, +2002, +2002, +2029, +2044, +2092, +2118, +2123, +2123, +2149, +2161, +2167, +2174, +2181, +2217, +2230, +2255, +2255, +2262, +2262, +2269, +2298, +2319, +2319, +2338, +2338, +2338, +2379, +2379, +2386, +2386, +2393, +2420, +2435, +2451, +2477, +2477, +2512, +2538, +2544, +2598, +2598, +2598, +2598, +2598, +2598, +2604, +2604, +2644, +2657, +2686, +2717, +2717, +2724, +2740, +2747, +2759, +2777, +2787, +2796, +2796, +2796, +2803, +2803, +2820, +2827, +2827, +2834, +2850, +2850, +2864, +2903, +2910, +2917, +2924, +2931, +2938, +2977, +2977, +2999, +2999, +3006, +3026, +3026, +3056, +3077, +3084, +3102, +3118, +3123, +3156, +3163, +3212, +3226, +3243, +3274, +3281, +3295, +3313, +3318, +3318, +3331, +3345, +3386, +3404, +3437, +3451, +3458, +3492, +3523, +3533, +3540, +3585, +3645, +3652, +3659, +3699, +3725, +3734, +3759, +3807, +3842, +3870, +3896, +3910, +3924, +3924, +3924, +3959, +3959, +3972, +3988, +3988, +3993, +4060, +4092, +4099, +4099, +4106, +4119, +4119, +4147, +4147, +4147, +4171, +4178, +4178, +4178, +4178, +4197, +4204, +4243, +4243, +4250, +4257, +4264, +4271, +4271, +4278, +4290, +4302, +4302, +4302, +4302, +4302, +4329, +4348, +4380, +4394, +4394, +4401, +4408, +4425, +4459, +4506, +4513, +4513, +4520, +4520, +4527, +4540, +4573, +4592, +4599, +4647, +4654, +4675, +4686, +4693, +4737, +4806, +4806, +4822, +4859, +4865, +4872, +4894, +4901, +4923, +4975, +4989, +5036, +5036, +5050, +5067, +5073, +5073, +5080, +5130, +5147, +5154, +5161, +5168, +5175, +5182, +5182, +5196, +5210, +5224, +5239, +5259, +5300, +5345, +5359, +5359, +5397, +5436, +5474, +5513, +5530, +5537, +5537, +5544, +5551, +5563, +5577, +5590, +5595, +5601, +5623, +5643, +5680, +5706, +5730, +5737, +5754, +5761, +5785, +5797, +5804, +5816, +5816, +5828, +5855, +5869, +5892, +5892, +5914, +5935, +5935, +5942, +5963, +5981, +5981, +5988, +6002, +6019, +6030, +6047, +6047, +6054, +6099, +6099, +6121, +6167, +6183, +6190, +6219, +6226, +6240, +6247, +6254, +6299, +6327, +6407, +6434, +6441, +6471, +6485, +6505, +6513, +6513, +6513, +6546, +6558, +6558, +6558, +6565, +6575, +6585, +6592, +6611, +6619, +6619, +6626, +6645, +6645, +6665, +6672, +6689, +6689, +6689, +6723, +6730, +6737, +6756, +6799, +6827, +6834, +6841, +6841, +6869, +6876, +6876, +6883, +6890, +6955, +6962, +6962, +6982, +7010, +7027, +7034, +7034, +7059, +7099, +7122, +7122, +7122, +7127, +7134, +7134, +7134, +7161, +7161, +7194, +7194, +7194, +7194, +7234, +7234, +7234, +7234, +7234, +7241, +7253, +7260, +7288, +7308, +7315, +7329, +7338, +7363, +7387, +7397, +7397, +7397, +7414, +7432, +7458, +7465, +7465, +7484, +7495, +7495, +7512, +7537, +7554, +7554, +7561, +7575, +7589, +7594, +7613, +7627, +7650, +7667, +7684, +7691, +7716, +7716, +7728, +7757, +7769, +7799, +7806, +7806, +7823, +7830, +7837, +7837, +7844, +7865, +7865, +7865, +7881, +7888, +7894, +7934, +7966, +7966, +7966, +8007, +8042, +8042, +8061, +8091, +8105, +8105, +8105, +8105, +8105, +8105, +8105, +8136, +8156, +8156, +8162, +8168, +8168, +8188, +8195, +8195, +8195, +8195, +8195, +8244, +8244, +8257, +8257, +8257, +8277, +8322, +8329, +8356, +8356, +8367, +8367, +8381, +8423, +8429, +8459, +8478, +8497, +8505, +8512, +8512, +8512, +8517, +8524, +8524, +8524, +8524, +8524, +8524, +8524, +8531, +8536, +8551, +8574, +8574, +8581, +8588, +8602, +8635, +8645, +8674, +8688, +8688, +8699, +8723, +8723, +8723, +8736, +8736, +8745, +8786, +8786, +8786, +8805, +8833, +8849, +8863, +8863, +8876, +8876, +8876, +8876, +8876, +8876, +8876, +8901, +8901, +8929, +8940, +8947, +8957, +8969, +8969, +8969, +9023, +9030, +9041, +9041, +9041, +9068, +9102, +9138, +9138, +9155, +9180, +9180, +9180, +9180, +9180, +9208, +9208, +9232, +9232, +9248, +9274, +9281, +9281, +9311, +9318, +9353, +9353, +9353, +9366, +9372, +9372, +9407, +9414, +9426, +9443, +9468, +9468, +9468, +9468, +9484, +9484, +9501, +9529, +9568, +9568, +9606, +9620, +9652, +9675, +9714, +9724, +9736, +9756, +9770, +9806, +9815, +9820, +9831, +9831, +9831, +9846, +9846, +9846, +9846, +9846, +9846, +9846, +9846, +9846, +9861, +9861, +9861, +9861, +9868, +9878, +9900, +9915, +9915, +9925, +9925, +9925, +9946, +9946, +9964, +9977, +9995, +9995, +9995, +9995, +9995, +9995, +9995, +9995, +10020, +10028, +10041, +10041, +10059, +10059, +10064, +10076, +10076, +10076, +10081, +10106, +10130, +10148, +10148, +10155, +10155, +10184, +10184, +10223, +10239, +10239, +10247, +10247, +10254, +10285, +10285, +10297, +10309, +10332, +10332, +10332, +10338, +10338, +10338, +10338, +10349, +10379, +10379, +10379, +10379, +10379, +10386, +10386, +10386, +10386, +10386, +10386, +10386, +10386, +10391, +10391, +10409, +10409, +10429, +10429, +10429, +10429, +10467, +10467, +10467, +10483, +10506, +10549, +10549, +10556, +10577, +10577, +10588, +10616, +10616, +10654, +10654, +10654, +10666, +10677, +10677, +10692, +10692, +10726, +10743, +10755, +10817, +10841, +10850, +10866, +10877, +10887, +10914, +10950, +10950, +11015, +11051, +11069, +11069, +11078, +11122, +11165, +11165, +11177, +11177, +11177, +11177, +11215, +11221, +11253, +11253, +11253, +11253, +11253, +11267, +11284, +11309, +11316, +11328, +11336, +11373, +11408, +11427, +11427, +11443, +11443, +11450, +11450, +11472, +11472, +11487, +11494, +11494, +11504, +11504, +11520, +11539, +11539, +11579, +11598, +11608, +11608, +11628, +11645, +11680, +11680, +11680, +11709, +11715, +11715, +11715, +11749, +11766, +11766, +11766, +11766, +11781, +11791, +11805, +11825, +11833, +11863, +11863, +11863, +11863, +11876, +11883, +11891, +11903, +11914, +11966, +11966, +11966, +11966, +11980, +11980, +11980, +11987, +12000, +12000, +12017, +12049, +12049, +12049, +12059, +12059, +12059, +12080, +12106, +12123, +12123, +12123, +12137, +12137, +12174, +12180, +12215, +12215, +12251, +12261, +12268, +12268, +12293, +12314, +12314, +12356, +12369, +12390, +12390, +12404, +12404, +12445, +12465, +12505, +12528, +12548, +12554, +12560, +12581, +12597, +12597, +12604, +12636, +12642, +12649, +12649, +12677, +12677, +12705, +12705, +12718, +12718, +12735, +12735, +12793, +12793, +12793, +12798, +12825, +12837, +12837, +12846, +12855, +12865, +12865, +12873, +12882, +12888, +12894, +12894, +12901, +12933, +12960, +12960, +12996, +12996, +12996, +12996, +12996, +13019, +13019, +13063, +13063, +13063, +13063, +13078, +13110, +13124, +13124, +13124, +13131, +13167, +13178, +13178, +13198, +13198, +13198, +13198, +13198, +13214, +13214, +13214, +13214, +13247, +13247, +13262, +13267, +13302, +13302, +13332, +13345, +13355, +13368, +13368, +13380, +13380, +13380, +13412, +13412, +13418, +13433, +13462, +13462, +13525, +13579, +13610, +13610, +13631, +13631, +13647, +13657, +13657, +13657, +13664, +13672, +13677, +13732, +13755, +13778, +13784, +13790, +13870, +13891, +13900, +13919, +13933, +13933, +13981, +13993, +14005, +14005, +14012, +14012, +14019, +14060, +14067, +14067, +14067, +14067, +14067, +14087, +14100, +14100, +14111, +14111, +14123, +14123, +14123, +14153, +14153, +14162, +14162, +14181, +14181, +14181, +14187, +14187, +14193, +14209, +14227, +14227, +14227, +14242, +14242, +14253, +14265, +14265, +14273, +14280, +14280, +14288, +14322, +14327, +14327, +14327, +14333, +14340, +14362, +14362, +14391, +14415, +14415, +14423, +14423, +14423, +14431, +14442, +14442, +14461, +14489, +14489, +14499, +14520, +14520, +14536, +14536, +14551, +14572, +14572, +14572, +14572, +14572, +14592, +14638, +14638, +14677, +14683, +14683, +14702, +14702, +14708, +14724, +14738, +14738, +14743, +14754, +14767, +14767, +14793, +14809, +14827, +14832, +14832, +14832, +14846, +14863, +14902, +14902, +14902, +14910, +14946, +14946, +14957, +14971, +15001, +15011, +15011, +15030, +15042, +15070, +15070, +15099, +15118, +15137, +15150, +15150, +15177, +15210, +15210, +15210, +15234, +15259, +15278, +15286, +15286, +15335, +15361, +15361, +15361, +15375, +15401, +15401, +15443, +15443, +15466, +15466, +15530, +15545, +15565, +15618, +15629, +15629, +15645, +15649, +15671, +15671, +15681, +15681, +15692, +15700, +15700, +15700, +15700, +15712, +15761, +15769, +15769, +15769, +15769, +15779, +15785, +15793, +15793, +15793, +15811, +15826, +15826, +15826, +15854, +15854, +15866, +15878, +15900, +15900, +15900, +15900, +15900, +15900, +15909, +15926, +15926, +15950, +15956, +15956, +15962, +15971, +16000, +16023, +16023, +16043, +16064, +16071, +16075, +16093, +16099, +16099, +16115, +16121, +16121, +16121, +16121, +16121, +16137, +16162, +16175, +16175, +16238, +16238, +16238, +16277, +16277, +16282, +16289, +16305, +16328, +16328, +16328, +16332, +16332, +16332, +16361, +16361, +16384, +16384, +16391, +16391, +16391, +16391, +16428, +16464, +16491, +16491, +16498, +16522, +16585, +16602, +16608, +16643, +16653, +16670, +16670, +16670, +16679, +16679, +16695, +16695, +16695, +16719, +16738, +16761, +16761, +16761, +16793, +16801, +16821, +16840, +16878, +16919, +16941, +16941, +16966, +16966, +16966, +16966, +16983, +17003, +17015, +17025, +17037, +17045, +17045, +17072, +17072, +17072, +17072, +17088, +17088, +17095, +17095, +17114, +17145, +17164, +17209, +17258, +17258, +17278, +17278, +17314, +17314, +17329, +17329, +17338, +17354, +17354, +17372, +17393, +17393, +17410, +17419, +17426, +17439, +17456, +17456, +17488, +17529, +17529, +17529, +17546, +17596, +17604, +17604, +17616, +17638, +17638, +17638, +17638, +17663, +17671, +17702, +17749, +17756, +17756, +17756, +17756, +17756, +17756, +17778, +17784, +17784, +17784, +17799, +17814, +17814, +17814, +17824, +17824, +17835, +17835, +17851, +17871, +17896, +17913, +17919, +17919, +17919, +17937, +17937, +17951, +17951, +17951, +17980, +17980, +18017, +18017, +18052, +18052, +18052, +18052, +18079, +18083, +18083, +18092, +18092, +18114, +18124, +18132, +18132, +18132, +18159, +18175, +18175, +18186, +18238, +18269, +18269, +18284, +18284, +18299, +18299, +18317, +18317, +18343, +18343, +18343, +18343, +18361, +18361, +18367, +18374, +18380, +18380, +18394, +18406, +18439, +18439, +18455, +18455, +18472, +18497, +18513, +18517, +18537, +18537, +18543, +18543, +18559, +18559, +18559, +18559, +18603, +18622, +18629, +18634, +18648, +18653, +18678, +18678, +18699, +18715, +18727, +18731, +18731, +18775, +18775, +18804, +18825, +18843, +18847, +18865, +18874, +18902, +18902, +18912, +18912, +18912, +18912, +18912, +18944, +18944, +18993, +19008, +19008, +19020, +19055, +19075, +19075, +19098, +19098, +19098, +19120, +19120, +19120, +19120, +19120, +19139, +19144, +19153, +19182, +19182, +19188, +19196, +19196, +19276, +19276, +19276, +19287, +19287, +19287, +19314, +19314, +19335, +19335, +19335, +19349, +19378, +19378, +19378, +19397, +19397, +19422, +19453, +19453, +19453, +19467, +19467, +19467, +19525, +19564, +19573, +19573, +19592, +19592, +19613, +19640, +19644, +19644, +19660, +19660, +19660, +19660, +19666, +19673, +19689, +19715, +19715, +19725, +19736, +19748, +19782, +19793, +19793, +19793, +19793, +19797, +19807, +19807, +19812, +19832, +19832, +19875, +19875, +19875, +19875, +19903, +19916, +19953, +19953, +19953, +19966, +20006, +20014, +20026, +20026, +20042, +20042, +20053, +20089, +20112, +20112, +20182, +20191, +20231, +20246, +20266, +20284, +20289, +20289, +20289, +20289, +20289, +20289, +20305, +20333, +20336, +20339, +20362, +20365, +20385, +20404, +20420, +20427, +20427, +20435, +20438, +20443, +20451, +20451, +20482, +20521, +20524, +20550, +20592, +20595, +20617, +20623, +20626, +20632, +20632, +20679, +20682, +20682, +20695, +20695, +20717, +20733, +20752, +20758, +20770, +20784, +20803, +20835, +20854, +20861, +20861, +20871, +20874, +20890, +20909, +20930, +20930, +20933, +20977, +20977, +20983, +20986, +21014, +21033, +21046, +21052, +21061, +21077, +21080, +21113, +21132, +21146, +21146, +21146, +21158, +21162, +21165, +21186, +21189, +21189, +21195, +21205, +21209, +21209, +21247, +21247, +21268, +21279, +21287, +21308, +21361, +21388, +21413, +21419, +21419, +21419, +21426, +21426, +21442, +21442, +21472, +21489, +21504, +21529, +21542, +21548, +21560, +21573, +21586, +21606, +21632, +21639, +21646, +21655, +21676, +21701, +21704, +21707, +21718, +21721, +21724, +21743, +21786, +21806, +21810, +21820, +21837, +21844, +21847, +21858, +21880, +21880, +21894, +21897, +21897, +21897, +21909, +21912, +21912, +21936, +21965, +22005, +22005, +22005, +22015, +22015, +22015, +22018, +22045, +22048, +22069, +22075, +22078, +22099, +22122, +22125, +22148, +22171, +22198, +22208, +22219, +22219, +22219, +22225, +22225, +22235, +22271, +22281, +22281, +22281, +22281, +22281, +22321, +22340, +22343, +22347, +22358, +22358, +22389, +22407, +22432, +22435, +22462, +22484, +22487, +22493, +22510, +22523, +22523, +22544, +22544, +22557, +22563, +22573, +22576, +22576, +22595, +22595, +22634, +22634, +22637, +22663, +22674, +22702, +22720, +22749, +22768, +22806, +22809, +22809, +22846, +22849, +22862, +22865, +22868, +22902, +22908, +22911, +22926, +22946, +22952, +22958, +22971, +22974, +22986, +22989, +22989, +22999, +23018, +23043, +23057, +23057, +23057, +23070, +23084, +23093, +23121, +23139, +23149, +23149, +23149, +23152, +23168, +23168, +23209, +23229, +23246, +23246, +23287, +23287, +23297, +23297, +23317, +23337, +23351, +23385, +23392, +23397, +23432, +23444, +23447, +23450, +23450, +23461, +23484, +23487, +23503, +23523, +23523, +23523, +23549, +23549, +23557, +23557, +23572, +23586, +23605, +23613, +23625, +23642, +23642, +23642, +23653, +23666, +23674, +23697, +23702, +23733, +23757, +23782, +23794, +23794, +23794, +23813, +23822, +23831, +23855, +23871, +23877, +23880, +23899, +23899, +23905, +23908, +23911, +23914, +23917, +23937, +23967, +23991, +23994, +23994, +24013, +24016, +24019, +24063, +24066, +24072, +24075, +24115, +24140, +24153, +24156, +24167, +24170, +24190, +24202, +24202, +24205, +24215, +24215, +24228, +24238, +24265, +24271, +24285, +24302, +24305, +24329, +24339, +24402, +24402, +24402, +24402, +24431, +24438, +24444, +24444, +24452, +24465, +24484, +24484, +24501, +24504, +24543, +24543, +24543, +24546, +24574, +24574, +24608, +24608, +24608, +24614, +24625, +24628, +24628, +24628, +24628, +24628, +24640, +24640, +24648, +24648, +24648, +24701, +24701, +24713, +24749, +24749, +24749, +24764, +24764, +24788, +24798, +24834, +24834, +24834, +24855, +24898, +24907, +24907, +24907, +24955, +24965, +24971, +24993, +25004, +25004, +25015, +25053, +25064, +25064, +25064, +25074, +25084, +25100, +25100, +25112, +25131, +25178, +25181, +25181, +25188, +25194, +25194, +25200, +25204, +25231, +25249, +25252, +25287, +25324, +25348, +25372, +25408, +25408, +25426, +25448, +25464, +25467, +25486, +25519, +25519, +25537, +25548, +25573, +25573, +25587, +25587, +25615, +25615, +25636, +25651, +25651, +25651, +25668, +25668, +25674, +25674, +25680, +25680, +25701, +25707, +25713, +25713, +25730, +25730, +25730, +25779, +25791, +25815, +25815, +25840, +25859, +25859, +25859, +25885, +25903, +25903, +25926, +25935, +25952, +25952, +25965, +25977, +26003, +26015, +26029, +26029, +26043, +26059, +26059, +26059, +26059, +26086, +26121, +26133, +26133, +26153, +26162, +26162, +26195, +26195, +26219, +26219, +26251, +26251, +26272, +26277, +26287, +26287, +26325, +26338, +26338, +26396, +26396, +26412, +26442, +26462, +26527, +26551, +26557, +26564, +26564, +26581, +26581, +26603, +26603, +26603, +26621, +26621, +26648, +26657, +26664, +26664, +26694, +26694, +26694, +26694, +26700, +26700, +26721, +26721, +26734, +26815, +26832, +26843, +26860, +26860, +26875, +26881, +26894, +26916, +26916, +26916, +26916, +26923, +26923, +26945, +26961, +26978, +27000, +27020, +27020, +27039, +27081, +27111, +27131, +27141, +27141, +27147, +27158, +27176, +27194, +27194, +27194, +27206, +27206, +27243, +27263, +27278, +27278, +27278, +27282, +27322, +27322, +27322, +27338, +27338, +27338, +27353, +27353, +27374, +27374, +27396, +27414, +27420, +27435, +27435, +27444, +27485, +27485, +27485, +27489, +27506, +27516, +27522, +27532, +27532, +27532, +27566, +27572, +27582, +27605, +27622, +27648, +27664, +27686, +27686, +27686, +27692, +27692, +27711, +27711, +27725, +27732, +27744, +27769, +27783, +27802, +27833, +27839, +27839, +27845, +27867, +27884, +27924, +27943, +27958, +27958, +27993, +27999, +28016, +28016, +28045, +28045, +28064, +28064, +28064, +28091, +28091, +28091, +28122, +28122, +28144, +28150, +28167, +28175, +28201, +28201, +28201, +28215, +28219, +28233, +28233, +28238, +28264, +28280, +28295, +28295, +28301, +28301, +28307, +28307, +28307, +28318, +28345, +28371, +28371, +28371, +28384, +28403, +28403, +28408, +28412, +28416, +28428, +28442, +28469, +28469, +28495, +28495, +28500, +28511, +28529, +28551, +28551, +28551, +28551, +28565, +28565, +28565, +28597, +28602, +28602, +28602, +28618, +28618, +28647, +28653, +28653, +28653, +28653, +28663, +28663, +28663, +28677, +28692, +28706, +28734, +28744, +28806, +28806, +28806, +28817, +28838, +28849, +28872, +28872, +28872, +28878, +28878, +28914, +28914, +28935, +28946, +28978, +28978, +28978, +28984, +28984, +28984, +28990, +29021, +29043, +29049, +29049, +29049, +29062, +29097, +29097, +29104, +29112, +29138, +29138, +29138, +29148, +29192, +29192, +29198, +29198, +29198, +29198, +29204, +29210, +29220, +29247, +29257, +29278, +29296, +29328, +29335, +29335, +29353, +29353, +29353, +29360, +29382, +29412, +29429, +29454, +29460, +29460, +29460, +29460, +29498, +29522, +29522, +29537, +29537, +29537, +29537, +29537, +29546, +29546, +29546, +29553, +29570, +29587, +29587, +29587, +29608, +29635, +29682, +29682, +29698, +29721, +29735, +29735, +29752, +29752, +29752, +29752, +29781, +29802, +29802, +29809, +29809, +29816, +29822, +29822, +29840, +29840, +29855, +29866, +29866, +29882, +29882, +29888, +29888, +29888, +29894, +29910, +29946, +29953, +29963, +29963, +29963, +29975, +29990, +30010, +30065, +30083, +30106, +30106, +30106, +30106, +30106, +30106, +30137, +30150, +30150, +30180, +30180, +30201, +30220, +30239, +30239, +30245, +30265, +30280, +30280, +30289, +30320, +30329, +30329, +30346, +30359, +30359, +30359, +30377, +30377, +30390, +30396, +30411, +30462, +30472, +30472, +30500, +30500, +30513, +30513, +30513, +30513, +30520, +30531, +30538, +30549, +30573, +30584, +30584, +30584, +30600, +30600, +30600, +30623, +30623, +30637, +30651, +30670, +30687, +30687, +30687, +30687, +30701, +30701, +30740, +30740, +30740, +30768, +30799, +30809, +30809, +30809, +30809, +30826, +30859, +30859, +30873, +30873, +30877, +30932, +30932, +30932, +30942, +30968, +30987, +30993, +30993, +30993, +31025, +31025, +31025, +31025, +31042, +31051, +31095, +31095, +31110, +31115, +31115, +31115, +31132, +31145, +31145, +31145, +31156, +31194, +31227, +31266, +31266, +31285, +31285, +31322, +31336, +31365, +31384, +31401, +31438, +31446, +31453, +31453, +31465, +31477, +31509, +31534, +31534, +31543, +31570, +31590, +31608, +31627, +31634, +31653, +31658, +31665, +31679, +31701, +31720, +31727, +31727, +31740, +31745, +31759, +31759, +31773, +31788, +31788, +31794, +31807, +31807, +31815, +31821, +31863, +31870, +31870, +31906, +31906, +31913, +31913, +31913, +31928, +31950, +31987, +32023, +32063, +32124, +32124, +32138, +32161, +32168, +32168, +32168, +32212, +32212, +32243, +32250, +32268, +32283, +32287, +32307, +32307, +32307, +32307, +32324, +32324, +32366, +32366, +32384, +32384, +32405, +32424, +32447, +32447, +32488, +32505, +32505, +32544, +32563, +32563, +32582, +32589, +32609, +32609, +32640, +32651, +32651, +32658, +32699, +32699, +32708, +32726, +32763, +32783, +32815, +32815, +32815, +32822, +32822, +32822, +32828, +32828, +32828, +32852, +32872, +32872, +32882, +32907, +32929, +32975, +33013, +33043, +33060, +33067, +33067, +33077, +33084, +33084, +33090, +33090, +33104, +33117, +33117, +33117, +33133, +33143, +33152, +33162, +33167, +33177, +33184, +33192, +33192, +33202, +33242, +33242, +33242, +33242, +33249, +33249, +33255, +33260, +33260, +33295, +33314, +33314, +33314, +33314, +33314, +33321, +33325, +33325, +33359, +33359, +33359, +33369, +33389, +33396, +33410, +33414, +33439, +33460, +33473, +33491, +33567, +33581, +33581, +33598, +33598, +33652, +33669, +33669, +33694, +33694, +33694, +33694, +33715, +33715, +33715, +33729, +33759, +33759, +33789, +33793, +33823, +33848, +33855, +33855, +33929, +33936, +33954, +33954, +33954, +33954, +33961, +33965, +33985, +33985, +33992, +33992, +34006, +34033, +34049, +34076, +34091, +34116, +34146, +34146, +34166, +34166, +34182, +34187, +34187, +34187, +34187, +34204, +34218, +34240, +34280, +34287, +34306, +34306, +34351, +34358, +34379, +34379, +34379, +34397, +34404, +34465, +34475, +34480, +34490, +34513, +34542, +34542, +34580, +34600, +34600, +34605, +34605, +34615, +34615, +34632, +34632, +34671, +34697, +34697, +34697, +34718, +34718, +34718, +34718, +34718, +34718, +34725, +34739, +34739, +34739, +34755, +34755, +34784, +34784, +34784, +34791, +34807, +34814, +34830, +34848, +34848, +34848, +34885, +34895, +34895, +34913, +34913, +34941, +34951, +34951, +34958, +34958, +34978, +34995, +35001, +35008, +35020, +35020, +35026, +35033, +35065, +35094, +35141, +35141, +35148, +35173, +35203, +35203, +35223, +35230, +35258, +35292, +35312, +35350, +35368, +35405, +35421, +35427, +35427, +35427, +35427, +35434, +35434, +35446, +35446, +35451, +35466, +35495, +35495, +35528, +35533, +35533, +35548, +35569, +35585, +35585, +35592, +35643, +35662, +35680, +35691, +35691, +35691, +35702, +35711, +35718, +35718, +35738, +35779, +35787, +35787, +35837, +35863, +35887, +35898, +35910, +35910, +35922, +35941, +35964, +35964, +35964, +35990, +36000, +36017, +36025, +36025, +36033, +36063, +36063, +36063, +36076, +36092, +36102, +36102, +36133, +36133, +36133, +36139, +36139, +36139, +36139, +36182, +36205, +36235, +36256, +36268, +36300, +36300, +36300, +36300, +36300, +36308, +36327, +36331, +36368, +36368, +36368, +36380, +36380, +36425, +36444, +36444, +36444, +36456, +36507, +36541, +36554, +36614, +36614, +36614, +36626, +36626, +36626, +36650, +36650, +36664, +36668, +36685, +36694, +36694, +36694, +36715, +36715, +36730, +36750, +36766, +36766, +36766, +36792, +36807, +36807, +36807, +36819, +36819, +36842, +36880, +36898, +36905, +36918, +36918, +36931, +36931, +36937, +36937, +36969, +36974, +36974, +37012, +37019, +37061, +37061, +37061, +37078, +37116, +37116, +37116, +37125, +37125, +37135, +37135, +37164, +37186, +37198, +37222, +37226, +37234, +37234, +37250, +37250, +37250, +37275, +37289, +37289, +37289, +37327, +37357, +37357, +37364, +37391, +37391, +37391, +37409, +37409, +37417, +37443, +37474, +37474, +37530, +37540, +37550, +37571, +37571, +37571, +37600, +37621, +37621, +37621, +37642, +37642, +37648, +37669, +37669, +37724, +37724, +37737, +37737, +37737, +37765, +37765, +37765, +37777, +37801, +37813, +37813, +37813, +37826, +37826, +37846, +37883, +37914, +37932, +37932, +37944, +37952, +37971, +37978, +37978, +38002, +38002, +38002, +38031, +38047, +38073, +38073, +38088, +38099, +38099, +38099, +38123, +38123, +38123, +38135, +38159, +38159, +38166, +38166, +38166, +38166, +38209, +38216, +38235, +38252, +38259, +38269, +38269, +38282, +38301, +38313, +38358, +38358, +38358, +38369, +38369, +38385, +38414, +38421, +38451, +38458, +38473, +38491, +38498, +38527, +38534, +38559, +38564, +38571, +38595, +38622, +38628, +38649, +38656, +38671, +38678, +38682, +38706, +38718, +38718, +38738, +38796, +38796, +38796, +38796, +38815, +38822, +38834, +38853, +38853, +38885, +38897, +38940, +38971, +38978, +38998, +39042, +39054, +39054, +39085, +39092, +39109, +39146, +39165, +39177, +39177, +39196, +39212, +39247, +39247, +39267, +39279, +39295, +39319, +39319, +39330, +39330, +39342, +39354, +39354, +39364, +39364, +39401, +39420, +39441, +39453, +39475, +39485, +39485, +39517, +39553, +39553, +39553, +39558, +39593, +39600, +39621, +39648, +39682, +39697, +39704, +39716, +39743, +39750, +39757, +39757, +39774, +39781, +39788, +39818, +39854, +39861, +39861, +39868, +39893, +39900, +39907, +39913, +39913, +39913, +39920, +39932, +39959, +39971, +39971, +39998, +40013, +40013, +40042, +40042, +40054, +40061, +40061, +40065, +40083, +40118, +40118, +40127, +40137, +40171, +40198, +40227, +40242, +40269, +40276, +40276, +40283, +40290, +40315, +40321, +40344, +40344, +40355, +40375, +40375, +40375, +40386, +40408, +40431, +40453, +40469, +40505, +40515, +40524, +40555, +40594, +40612, +40625, +40642, +40662, +40662, +40692, +40705, +40712, +40727, +40740, +40747, +40770, +40803, +40807, +40807, +40807, +40832, +40843, +40850, +40857, +40940, +40958, +40958, +40958, +40958, +40989, +40989, +41005, +41014, +41034, +41041, +41063, +41070, +41070, +41102, +41102, +41109, +41116, +41122, +41146, +41180, +41180, +41203, +41203, +41210, +41217, +41217, +41234, +41248, +41265, +41279, +41302, +41327, +41337, +41347, +41347, +41355, +41364, +41370, +41388, +41388, +41399, +41399, +41412, +41412, +41424, +41424, +41424, +41424, +41428, +41441, +41441, +41441, +41453, +41460, +41478, +41484, +41484, +41534, +41571, +41571, +41578, +41590, +41607, +41614, +41621, +41621, +41636, +41642, +41642, +41660, +41667, +41712, +41732, +41732, +41751, +41758, +41758, +41774, +41774, +41783, +41792, +41849, +41856, +41856, +41856, +41869, +41869, +41869, +41869, +41879, +41879, +41885, +41891, +41891, +41903, +41913, +41934, +41951, +41985, +41985, +42013, +42035, +42069, +42114, +42144, +42151, +42181, +42221, +42241, +42241, +42248, +42248, +42283, +42290, +42340, +42340, +42340, +42352, +42352, +42352, +42403, +42403, +42435, +42435, +42446, +42453, +42460, +42477, +42477, +42496, +42496, +42512, +42526, +42538, +42563, +42563, +42570, +42570, +42570, +42619, +42636, +42657, +42657, +42657, +42657, +42657, +42657, +42657, +42657, +42657, +42665, +42672, +42697, +42715, +42734, +42734, +42734, +42751, +42782, +42782, +42805, +42826, +42856, +42856, +42869, +42869, +42879, +42895, +42895, +42909, +42922, +42940, +42940, +42940, +42944, +42944, +42954, +42954, +42984, +43000, +43018, +43018, +43038, +43049, +43049, +43069, +43069, +43069, +43069, +43117, +43134, +43203, +43203, +43203, +43218, +43218, +43238, +43270, +43289, +43302, +43302, +43354, +43354, +43360, +43360, +43360, +43360, +43360, +43360, +43386, +43393, +43407, +43427, +43434, +43434, +43452, +43458, +43458, +43469, +43484, +43491, +43491, +43491, +43508, +43553, +43560, +43569, +43569, +43569, +43586, +43586, +43623, +43639, +43639, +43639, +43661, +43661, +43682, +43682, +43700, +43700, +43700, +43700, +43700, +43706, +43721, +43721, +43736, +43742, +43748, +43748, +43748, +43759, +43759, +43769, +43769, +43778, +43809, +43824, +43828, +43828, +43828, +43834, +43877, +43884, +43884, +43895, +43895, +43909, +43954, +43954, +43954, +43961, +43961, +43961, +43961, +43961, +43985, +44003, +44003, +44009, +44021, +44053, +44053, +44081, +44081, +44081, +44081, +44102, +44137, +44158, +44167, +44167, +44179, +44179, +44179, +44185, +44204, +44204, +44204, +44223, +44246, +44246, +44260, +44271, +44289, +44289, +44289, +44289, +44306, +44329, +44344, +44365, +44388, +44388, +44414, +44414, +44414, +44434, +44457, +44457, +44468, +44468, +44481, +44496, +44505, +44505, +44518, +44518, +44531, +44531, +44562, +44570, +44582, +44582, +44603, +44629, +44629, +44629, +44649, +44649, +44649, +44649, +44649, +44649, +44662, +44662, +44677, +44677, +44705, +44719, +44733, +44733, +44750, +44754, +44754, +44754, +44789, +44811, +44827, +44840, +44840, +44875, +44875, +44875, +44885, +44894, +44915, +44923, +44929, +44929, +44929, +44945, +44945, +44945, +44964, +44964, +45001, +45010, +45020, +45020, +45020, +45020, +45020, +45030, +45052, +45068, +45068, +45101, +45143, +45147, +45166, +45210, +45247, +45267, +45267, +45267, +45276, +45319, +45323, +45323, +45323, +45323, +45323, +45323, +45323, +45323, +45323, +45334, +45334, +45352, +45371, +45371, +45383, +45392, +45410, +45410, +45424, +45434, +45447, +45454, +45454, +45454, +45472, +45472, +45472, +45483, +45483, +45494, +45503, +45503, +45519, +45541, +45541, +45541, +45566, +45578, +45578, +45578, +45635, +45664, +45684, +45722, +45722, +45733, +45733, +45733, +45742, +45742, +45769, +45794, +45803, +45811, +45824, +45831, +45854, +45866, +45872, +45872, +45872, +45891, +45908, +45908, +45922, +45922, +45922, +45938, +45945, +45945, +45945, +45967, +45973, +45997, +46019, +46025, +46038, +46038, +46057, +46057, +46074, +46074, +46083, +46083, +46088, +46115, +46145, +46151, +46157, +46170, +46178, +46178, +46190, +46211, +46211, +46224, +46235, +46235, +46235, +46235, +46235, +46242, +46263, +46263, +46263, +46263, +46275, +46296, +46296, +46310, +46310, +46310, +46325, +46325, +46325, +46325, +46325, +46332, +46332, +46364, +46364, +46364, +46364, +46364, +46381, +46381, +46381, +46418, +46418, +46418, +46453, +46478, +46521, +46527, +46527, +46527, +46527, +46527, +46527, +46563, +46613, +46613, +46613, +46643, +46682, +46682, +46682, +46682, +46682, +46719, +46719, +46740, +46740, +46753, +46774, +46793, +46797, +46811, +46811, +46821, +46856, +46866, +46879, +46890, +46890, +46897, +46897, +46897, +46897, +46897, +46904, +46904, +46921, +46921, +46921, +46921, +46948, +46948, +46948, +46970, +46970, +46970, +46986, +46986, +47006, +47006, +47020, +47020, +47036, +47046, +47061, +47061, +47070, +47070, +47085, +47085, +47106, +47144, +47161, +47171, +47181, +47181, +47218, +47218, +47218, +47238, +47238, +47248, +47253, +47257, +47262, +47284, +47297, +47297, +47297, +47317, +47334, +47334, +47334, +47369, +47375, +47397, +47465, +47465, +47480, +47489, +47502, +47520, +47520, +47526, +47570, +47583, +47583, +47591, +47612, +47668, +47715, +47715, +47715, +47715, +47715, +47715, +47725, +47742, +47742, +47742, +47742, +47742, +47742, +47742, +47773, +47773, +47798, +47821, +47878, +47878, +47878, +47878, +47878, +47885, +47892, +47892, +47910, +47955, +47973, +48000, +48010, +48035, +48047, +48067, +48079, +48079, +48088, +48114, +48128, +48150, +48175, +48193, +48204, +48216, +48234, +48234, +48251, +48270, +48310, +48319, +48319, +48319, +48337, +48337, +48344, +48344, +48344, +48350, +48350, +48382, +48382, +48382, +48382, +48402, +48409, +48409, +48422, +48437, +48453, +48453, +48453, +48471, +48471, +48471, +48471, +48477, +48477, +48505, +48512, +48512, +48539, +48539, +48580, +48602, +48602, +48615, +48630, +48630, +48649, +48649, +48649, +48672, +48690, +48690, +48697, +48753, +48753, +48804, +48804, +48804, +48804, +48804, +48804, +48810, +48826, +48837, +48837, +48837, +48845, +48866, +48866, +48894, +48894, +48904, +48909, +48909, +48921, +48921, +48921, +48931, +48949, +48963, +48963, +49002, +49019, +49038, +49038, +49038, +49047, +49054, +49063, +49083, +49102, +49119, +49133, +49133, +49174, +49235, +49235, +49235, +49235, +49235, +49235, +49268, +49268, +49286, +49305, +49320, +49320, +49320, +49320, +49320, +49320, +49320, +49326, +49366, +49386, +49394, +49427, +49447, +49447, +49447, +49468, +49468, +49468, +49494, +49494, +49494, +49504, +49504, +49504, +49504, +49524, +49532, +49558, +49558, +49558, +49572, +49582, +49582, +49597, +49617, +49625, +49638, +49638, +49638, +49645, +49645, +49651, +49651, +49651, +49651, +49651, +49651, +49651, +49651, +49673, +49673, +49673, +49736, +49736, +49743, +49748, +49748, +49748, +49791, +49819, +49837, +49837, +49855, +49867, +49905, +49927, +49927, +49959, +49972, +49978, +49993, +49993, +49993, +50001, +50001, +50001, +50034, +50044, +50050, +50050, +50069, +50069, +50076, +50076, +50105, +50120, +50120, +50127, +50150, +50156, +50178, +50193, +50193, +50209, +50219, +50245, +50266, +50306, +50306, +50306, +50318, +50360, +50406, +50414, +50426, +50426, +50450, +50458, +50465, +50465, +50495, +50495, +50508, +50508, +50513, +50513, +50513, +50531, +50541, +50556, +50556, +50556, +50556, +50556, +50581, +50631, +50631, +50640, +50656, +50662, +50662, +50673, +50694, +50694, +50694, +50694, +50694, +50718, +50718, +50742, +50763, +50817, +50827, +50827, +50842, +50861, +50861, +50867, +50867, +50899, +50899, +50899, +50899, +50899, +50923, +50923, +50923, +50972, +50984, +51009, +51009, +51009, +51030, +51030, +51030, +51030, +51030, +51051, +51051, +51051, +51051, +51060, +51060, +51069, +51090, +51140, +51140, +51160, +51174, +51188, +51209, +51216, +51222, +51222, +51222, +51229, +51245, +51263, +51263, +51263, +51273, +51273, +51273, +51288, +51316, +51316, +51334, +51334, +51334, +51334, +51351, +51351, +51351, +51351, +51351, +51351, +51351, +51351, +51366, +51366, +51376, +51399, +51399, +51427, +51476, +51483, +51483, +51483, +51499, +51499, +51499, +51529, +51542, +51576, +51576, +51576, +51576, +51588, +51605, +51630, +51654, +51654, +51675, +51675, +51704, +51704, +51704, +51710, +51710, +51710, +51729, +51729, +51729, +51741, +51753, +51774, +51787, +51802, +51812, +51816, +51816, +51832, +51846, +51846, +51846, +51846, +51853, +51853, +51853, +51881, +51881, +51889, +51889, +51889, +51909, +51913, +51913, +51913, +51932, +51965, +51965, +51981, +51989, +52030, +52050, +52078, +52082, +52092, +52092, +52097, +52122, +52122, +52122, +52140, +52161, +52161, +52174, +52198, +52198, +52198, +52198, +52241, +52249, +52249, +52259, +52259, +52265, +52280, +52280, +52280, +52280, +52280, +52308, +52308, +52320, +52320, +52320, +52336, +52336, +52350, +52358, +52358, +52358, +52384, +52394, +52394, +52394, +52424, +52431, +52431, +52440, +52447, +52452, +52452, +52460, +52460, +52488, +52510, +52530, +52548, +52556, +52576, +52576, +52593, +52664, +52664, +52672, +52676, +52682, +52682, +52692, +52714, +52714, +52742, +52742, +52746, +52762, +52762, +52803, +52810, +52810, +52810, +52810, +52810, +52828, +52835, +52845, +52859, +52869, +52880, +52880, +52880, +52906, +52906, +52922, +52929, +52929, +52957, +52967, +52967, +52967, +52967, +52967, +52996, +53025, +53029, +53036, +53065, +53065, +53065, +53065, +53088, +53102, +53102, +53102, +53110, +53118, +53144, +53144, +53184, +53212, +53212, +53237, +53247, +53247, +53276, +53276, +53288, +53298, +53298, +53298, +53306, +53306, +53306, +53321, +53321, +53341, +53360, +53360, +53360, +53360, +53360, +53408, +53428, +53441, +53474, +53474, +53481, +53516, +53558, +53603, +53603, +53603, +53603, +53611, +53618, +53638, +53638, +53638, +53657, +53683, +53698, +53714, +53714, +53718, +53718, +53732, +53744, +53744, +53752, +53758, +53793, +53793, +53816, +53816, +53825, +53855, +53855, +53884, +53884, +53890, +53890, +53935, +53935, +53935, +53939, +53939, +53939, +53949, +53961, +53961, +53967, +53967, +53967, +53967, +53984, +53992, +54002, +54002, +54013, +54029, +54048, +54048, +54061, +54107, +54107, +54142, +54142, +54153, +54153, +54170, +54180, +54233, +54233, +54246, +54246, +54246, +54246, +54246, +54250, +54250, +54260, +54260, +54277, +54284, +54302, +54325, +54352, +54352, +54366, +54394, +54394, +54400, +54421, +54421, +54421, +54426, +54426, +54426, +54434, +54434, +54434, +54452, +54452, +54460, +54484, +54484, +54484, +54489, +54511, +54535, +54547, +54562, +54562, +54584, +54612, +54620, +54637, +54637, +54637, +54645, +54655, +54661, +54680, +54680, +54690, +54710, +54714, +54714, +54714, +54750, +54762, +54762, +54762, +54781, +54803, +54813, +54813, +54813, +54818, +54818, +54831, +54849, +54865, +54893, +54893, +54893, +54893, +54893, +54907, +54907, +54907, +54907, +54907, +54911, +54911, +54911, +54931, +54931, +54931, +54945, +54945, +54956, +54956, +54956, +54956, +54960, +54994, +54994, +55000, +55018, +55034, +55040, +55050, +55066, +55066, +55066, +55066, +55084, +55084, +55103, +55110, +55110, +55110, +55110, +55129, +55129, +55135, +55154, +55154, +55179, +55179, +55192, +55208, +55218, +55226, +55226, +55240, +55261, +55281, +55292, +55313, +55331, +55351, +55388, +55388, +55434, +55456, +55476, +55476, +55476, +55494, +55494, +55510, +55510, +55526, +55526, +55538, +55554, +55554, +55564, +55564, +55573, +55573, +55623, +55653, +55678, +55697, +55707, +55707, +55707, +55725, +55725, +55741, +55741, +55756, +55810, +55823, +55823, +55823, +55848, +55848, +55865, +55865, +55874, +55899, +55899, +55905, +55919, +55932, +55960, +55993, +56010, +56071, +56083, +56083, +56100, +56115, +56115, +56115, +56133, +56140, +56140, +56159, +56174, +56189, +56189, +56237, +56237, +56252, +56268, +56268, +56268, +56285, +56294, +56328, +56328, +56334, +56334, +56334, +56351, +56371, +56381, +56409, +56441, +56441, +56477, +56477, +56477, +56477, +56481, +56481, +56491, +56491, +56491, +56491, +56491, +56517, +56517, +56517, +56517, +56556, +56572, +56572, +56621, +56634, +56634, +56669, +56679, +56679, +56688, +56705, +56711, +56733, +56733, +56740, +56744, +56744, +56752, +56752, +56752, +56764, +56792, +56806, +56810, +56810, +56830, +56850, +56850, +56858, +56881, +56881, +56906, +56906, +56906, +56906, +56944, +56957, +56961, +56988, +56988, +56988, +57012, +57018, +57043, +57052, +57066, +57077, +57114, +57114, +57134, +57134, +57134, +57173, +57182, +57182, +57205, +57205, +57205, +57225, +57245, +57245, +57259, +57259, +57259, +57292, +57351, +57355, +57365, +57370, +57393, +57419, +57435, +57444, +57444, +57449, +57449, +57468, +57468, +57474, +57491, +57517, +57538, +57556, +57556, +57560, +57578, +57578, +57592, +57601, +57601, +57601, +57601, +57619, +57629, +57647, +57647, +57647, +57681, +57681, +57687, +57693, +57726, +57726, +57733, +57775, +57775, +57775, +57787, +57805, +57819, +57848, +57848, +57848, +57867, +57886, +57913, +57942, +57949, +57977, +58024, +58067, +58075, +58082, +58082, +58099, +58121, +58134, +58141, +58141, +58166, +58174, +58193, +58200, +58207, +58221, +58231, +58236, +58236, +58244, +58251, +58258, +58258, +58297, +58346, +58353, +58376, +58376, +58391, +58413, +58424, +58439, +58446, +58470, +58480, +58487, +58494, +58494, +58506, +58521, +58528, +58542, +58549, +58549, +58549, +58562, +58569, +58584, +58596, +58596, +58639, +58639, +58639, +58646, +58652, +58652, +58652, +58662, +58678, +58678, +58678, +58686, +58724, +58747, +58752, +58776, +58799, +58817, +58817, +58817, +58825, +58840, +58840, +58887, +58893, +58893, +58906, +58926, +58944, +58944, +58993, +58993, +59003, +59039, +59058, +59075, +59115, +59132, +59146, +59153, +59200, +59210, +59214, +59229, +59233, +59245, +59245, +59284, +59300, +59317, +59324, +59344, +59364, +59364, +59364, +59387, +59423, +59435, +59435, +59435, +59435, +59435, +59442, +59442, +59470, +59491, +59505, +59512, +59535, +59542, +59542, +59572, +59600, +59623, +59636, +59643, +59681, +59703, +59736, +59753, +59758, +59773, +59773, +59773, +59795, +59822, +59849, +59862, +59877, +59877, +59901, +59943, +59943, +59965, +59965, +59965, +59994, +60005, +60027, +60027, +60077, +60098, +60114, +60121, +60146, +60163, +60170, +60194, +60205, +60205, +60231, +60236, +60236, +60236, +60250, +60277, +60293, +60315, +60338, +60401, +60401, +60401, +60408, +60425, +60425, +60432, +60451, +60458, +60465, +60498, +60505, +60527, +60534, +60541, +60558, +60586, +60606, +60606, +60606, +60639, +60672, +60701, +60738, +60755, +60769, +60796, +60803, +60882, +60889, +60896, +60919, +60926, +60939, +60943, +61009, +61064, +61064, +61064, +61075, +61097, +61117, +61117, +61117, +61124, +61124, +61124, +61192, +61202, +61209, +61213, +61213, +61220, +61258, +61298, +61298, +61298, +61320, +61334, +61361, +61380, +61407, +61429, +61467, +61481, +61488, +61520, +61527, +61578, +61592, +61606, +61606, +61606, +61614, +61619, +61626, +61633, +61690, +61697, +61713, +61726, +61726, +61760, +61771, +61810, +61828, +61854, +61875, +61875, +61875, +61892, +61914, +61931, +61941, +61964, +61964, +61997, +62004, +62019, +62026, +62033, +62047, +62087, +62094, +62110, +62136, +62162, +62199, +62214, +62227, +62254, +62270, +62276, +62304, +62321, +62321, +62326, +62346, +62372, +62372, +62385, +62385, +62405, +62412, +62426, +62446, +62460, +62467, +62500, +62517, +62517, +62551, +62564, +62571, +62578, +62591, +62591, +62605, +62632, +62655, +62655, +62679, +62700, +62700, +62721, +62729, +62745, +62766, +62766, +62780, +62792, +62809, +62809, +62831, +62841, +62855, +62855, +62886, +62900, +62900, +62920, +62929, +62929, +62942, +62970, +63013, +63031, +63031, +63058, +63065, +63072, +63090, +63113, +63113, +63113, +63118, +63118, +63122, +63122, +63138, +63138, +63172, +63200, +63223, +63232, +63271, +63271, +63271, +63276, +63276, +63283, +63302, +63309, +63340, +63340, +63340, +63360, +63383, +63383, +63403, +63433, +63440, +63447, +63447, +63482, +63482, +63482, +63488, +63495, +63510, +63517, +63524, +63541, +63569, +63569, +63597, +63647, +63664, +63675, +63688, +63695, +63725, +63744, +63766, +63773, +63773, +63789, +63809, +63809, +63826, +63833, +63838, +63838, +63845, +63852, +63881, +63894, +63908, +63935, +63952, +63966, +63973, +63995, +63995, +63995, +64009, +64028, +64051, +64078, +64117, +64117, +64117, +64132, +64170, +64170, +64170, +64180, +64235, +64235, +64276, +64304, +64323, +64323, +64330, +64348, +64348, +64348, +64355, +64379, +64379, +64379, +64392, +64392, +64398, +64413, +64420, +64420, +64433, +64440, +64460, +64467, +64505, +64526, +64563, +64575, +64588, +64593, +64610, +64621, +64621, +64621, +64621, +64639, +64667, +64667, +64667, +64667, +64667, +64673, +64686, +64715, +64723, +64723, +64723, +64723, +64762, +64762, +64762, +64771, +64771, +64788, +64788, +64805, +64812, +64819, +64826, +64849, +64849, +64874, +64888, +64888, +64892, +64892, +64899, +64899, +64899, +64906, +64906, +64920, +64970, +64980, +65026, +65053, +65053, +65053, +65060, +65116, +65123, +65134, +65140, +65168, +65175, +65209, +65231, +65238, +65245, +65257, +65264, +65264, +65270, +65277, +65277, +65299, +65340, +65371, +65371, +65371, +65371, +65371, +65371, +65371, +65371, +65394, +65394, +65401, +65401, +65414, +65445, +65459, +65482, +65491, +65491, +65491, +65498, +65533, +65533, +65562, +65595, +65612, +65628, +65635, +65635, +65635, +65642, +65652, +65666, +65666, +65678, +65678, +65691, +65711, +65711, +65726, +65746, +65753, +65753, +65753, +65765, +65765, +65776, +65800, +65818, +65818, +65830, +65837, +65837, +65855, +65855, +65872, +65903, +65934, +65934, +65946, +65946, +65964, +65969, +65977, +65987, +66007, +66013, +66013, +66027, +66027, +66043, +66060, +66067, +66067, +66067, +66072, +66089, +66108, +66132, +66146, +66165, +66165, +66182, +66210, +66223, +66223, +66223, +66233, +66240, +66258, +66275, +66285, +66304, +66304, +66304, +66304, +66304, +66304, +66304, +66304, +66304, +66310, +66327, +66327, +66327, +66355, +66355, +66373, +66407, +66416, +66433, +66433, +66445, +66458, +66458, +66458, +66470, +66476, +66476, +66486, +66495, +66495, +66526, +66526, +66551, +66582, +66589, +66589, +66589, +66616, +66632, +66632, +66647, +66667, +66667, +66673, +66673, +66673, +66700, +66700, +66731, +66746, +66746, +66762, +66762, +66762, +66784, +66794, +66794, +66805, +66811, +66818, +66818, +66852, +66888, +66888, +66888, +66910, +66920, +66920, +66920, +66920, +66920, +66931, +66938, +66954, +66971, +66996, +66996, +67014, +67014, +67014, +67028, +67057, +67057, +67057, +67057, +67063, +67096, +67111, +67133, +67143, +67153, +67153, +67175, +67175, +67175, +67190, +67209, +67209, +67214, +67248, +67267, +67287, +67294, +67316, +67316, +67316, +67316, +67316, +67316, +67316, +67316, +67349, +67373, +67416, +67443, +67443, +67447, +67461, +67461, +67470, +67496, +67505, +67505, +67505, +67523, +67557, +67557, +67581, +67581, +67598, +67622, +67667, +67686, +67686, +67704, +67704, +67723, +67729, +67729, +67743, +67743, +67743, +67751, +67751, +67751, +67769, +67800, +67842, +67842, +67842, +67842, +67842, +67842, +67868, +67868, +67892, +67917, +67936, +67956, +67956, +67963, +67984, +68027, +68054, +68066, +68066, +68084, +68084, +68084, +68092, +68102, +68140, +68140, +68192, +68208, +68215, +68248, +68298, +68298, +68298, +68321, +68349, +68376, +68376, +68394, +68394, +68433, +68465, +68465, +68472, +68492, +68505, +68505, +68505, +68505, +68505, +68564, +68578, +68607, +68637, +68647, +68647, +68673, +68681, +68686, +68699, +68712, +68742, +68754, +68754, +68760, +68765, +68792, +68792, +68792, +68812, +68818, +68887, +68904, +68916, +68925, +68933, +68959, +68984, +69000, +69016, +69022, +69070, +69115, +69115, +69115, +69120, +69140, +69140, +69140, +69157, +69173, +69210, +69243, +69243, +69290, +69290, +69290, +69290, +69296, +69296, +69296, +69296, +69308, +69308, +69319, +69319, +69332, +69332, +69332, +69332, +69341, +69341, +69363, +69384, +69394, +69394, +69421, +69421, +69421, +69453, +69474, +69510, +69527, +69558, +69567, +69567, +69590, +69590, +69597, +69597, +69597, +69660, +69675, +69706, +69706, +69720, +69720, +69720, +69760, +69771, +69771, +69771, +69777, +69777, +69777, +69802, +69802, +69802, +69813, +69813, +69813, +69884, +69890, +69890, +69910, +69910, +69910, +69910, +69910, +69948, +69965, +69982, +69992, +70010, +70035, +70047, +70047, +70047, +70080, +70104, +70140, +70174, +70174, +70174, +70174, +70174, +70196, +70223, +70247, +70254, +70265, +70265, +70265, +70275, +70275, +70282, +70298, +70298, +70305, +70305, +70319, +70327, +70347, +70347, +70347, +70374, +70374, +70374, +70374, +70391, +70391, +70391, +70391, +70391, +70391, +70425, +70432, +70432, +70432, +70448, +70448, +70448, +70459, +70481, +70515, +70528, +70560, +70560, +70560, +70574, +70574, +70591, +70591, +70612, +70612, +70646, +70650, +70661, +70666, +70666, +70670, +70674, +70688, +70732, +70748, +70748, +70771, +70776, +70776, +70788, +70802, +70806, +70830, +70861, +70870, +70904, +70914, +70922, +70961, +70987, +71006, +71006, +71025, +71048, +71075, +71115, +71143, +71176, +71210, +71210, +71269, +71278, +71278, +71306, +71306, +71326, +71326, +71343, +71360, +71360, +71369, +71374, +71392, +71414, +71414, +71414, +71419, +71429, +71434, +71452, +71474, +71474, +71493, +71493, +71493, +71539, +71539, +71539, +71561, +71569, +71569, +71593, +71593, +71603, +71610, +71625, +71625, +71631, +71631, +71650, +71682, +71682, +71692, +71710, +71710, +71720, +71743, +71743, +71743, +71789, +71789, +71821, +71839, +71859, +71864, +71875, +71875, +71881, +71881, +71881, +71893, +71913, +71913, +71930, +71938, +71948, +71948, +71953, +71967, +72000, +72000, +72013, +72024, +72024, +72024, +72024, +72036, +72053, +72053, +72053, +72068, +72068, +72068, +72090, +72101, +72109, +72109, +72109, +72109, +72109, +72109, +72109, +72133, +72148, +72148, +72165, +72165, +72165, +72165, +72165, +72182, +72182, +72182, +72189, +72211, +72211, +72219, +72219, +72219, +72219, +72266, +72280, +72311, +72311, +72311, +72311, +72321, +72336, +72343, +72349, +72349, +72363, +72363, +72373, +72373, +72385, +72385, +72401, +72429, +72449, +72468, +72506, +72510, +72510, +72510, +72524, +72534, +72534, +72534, +72590, +72611, +72648, +72659, +72659, +72671, +72683, +72700, +72700, +72700, +72727, +72727, +72727, +72727, +72727, +72774, +72774, +72807, +72807, +72818, +72853, +72866, +72874, +72874, +72885, +72895, +72905, +72920, +72943, +72943, +72943, +72943, +72950, +72950, +72950, +72971, +73000, +73039, +73061, +73061, +73115, +73119, +73125, +73162, +73176, +73176, +73192, +73204, +73204, +73204, +73219, +73231, +73231, +73249, +73266, +73277, +73277, +73294, +73304, +73339, +73355, +73355, +73355, +73360, +73360, +73360, +73360, +73360, +73360, +73390, +73390, +73390, +73405, +73441, +73441, +73447, +73462, +73476, +73476, +73476, +73509, +73509, +73519, +73519, +73519, +73539, +73539, +73555, +73555, +73555, +73555, +73562, +73562, +73615, +73638, +73655, +73655, +73718, +73718, +73718, +73724, +73746, +73759, +73784, +73784, +73784, +73789, +73789, +73789, +73789, +73794, +73815, +73829, +73829, +73859, +73859, +73863, +73863, +73879, +73894, +73894, +73894, +73894, +73894, +73894, +73900, +73908, +73908, +73908, +73915, +73934, +73945, +73965, +73965, +73965, +73965, +73965, +73978, +73996, +73996, +74010, +74029, +74029, +74029, +74029, +74036, +74036, +74036, +74036, +74058, +74058, +74077, +74090, +74131, +74164, +74164, +74193, +74207, +74207, +74207, +74220, +74220, +74240, +74240, +74240, +74240, +74240, +74255, +74270, +74288, +74288, +74305, +74305, +74305, +74305, +74305, +74318, +74328, +74352, +74352, +74352, +74365, +74374, +74395, +74395, +74395, +74395, +74404, +74417, +74431, +74431, +74431, +74450, +74456, +74456, +74456, +74473, +74492, +74492, +74510, +74529, +74542, +74542, +74558, +74558, +74577, +74585, +74590, +74590, +74590, +74590, +74605, +74621, +74640, +74640, +74640, +74640, +74671, +74671, +74690, +74699, +74705, +74721, +74766, +74766, +74790, +74801, +74801, +74801, +74801, +74801, +74801, +74810, +74838, +74838, +74838, +74838, +74870, +74890, +74896, +74900, +74900, +74900, +74916, +74942, +74953, +74953, +74959, +74959, +74970, +74995, +74995, +75011, +75026, +75039, +75039, +75039, +75073, +75080, +75091, +75091, +75100, +75118, +75118, +75155, +75170, +75187, +75207, +75207, +75207, +75207, +75219, +75241, +75241, +75241, +75241, +75241, +75247, +75297, +75297, +75302, +75302, +75310, +75321, +75346, +75354, +75354, +75382, +75382, +75382, +75431, +75455, +75464, +75464, +75480, +75487, +75503, +75524, +75524, +75524, +75524, +75534, +75544, +75570, +75591, +75627, +75627, +75627, +75627, +75627, +75642, +75665, +75674, +75690, +75690, +75715, +75720, +75730, +75730, +75730, +75730, +75746, +75758, +75771, +75780, +75813, +75813, +75823, +75833, +75837, +75853, +75863, +75863, +75868, +75868, +75884, +75884, +75934, +75934, +75934, +75971, +75971, +75993, +76008, +76008, +76008, +76029, +76045, +76060, +76085, +76103, +76109, +76135, +76135, +76135, +76155, +76155, +76155, +76196, +76202, +76218, +76228, +76228, +76244, +76244, +76251, +76269, +76274, +76299, +76309, +76309, +76309, +76309, +76309, +76309, +76309, +76348, +76348, +76348, +76370, +76370, +76377, +76384, +76415, +76451, +76480, +76480, +76480, +76509, +76556, +76575, +76605, +76605, +76615, +76615, +76615, +76621, +76621, +76645, +76645, +76645, +76692, +76709, +76709, +76719, +76743, +76743, +76743, +76743, +76766, +76773, +76773, +76773, +76784, +76791, +76791, +76791, +76818, +76818, +76818, +76824, +76824, +76824, +76824, +76834, +76850, +76877, +76877, +76889, +76889, +76889, +76889, +76889, +76903, +76909, +76909, +76909, +76909, +76936, +76936, +76936, +76949, +76949, +76949, +76955, +76955, +76976, +76991, +77016, +77016, +77016, +77016, +77016, +77026, +77026, +77026, +77042, +77067, +77098, +77098, +77098, +77098, +77107, +77107, +77107, +77107, +77123, +77123, +77123, +77156, +77168, +77187, +77204, +77213, +77225, +77247, +77247, +77247, +77258, +77302, +77302, +77302, +77302, +77312, +77318, +77318, +77335, +77362, +77379, +77389, +77402, +77413, +77444, +77444, +77444, +77461, +77491, +77491, +77529, +77538, +77543, +77543, +77563, +77576, +77582, +77604, +77604, +77633, +77640, +77675, +77675, +77675, +77675, +77691, +77691, +77695, +77695, +77707, +77707, +77707, +77722, +77722, +77722, +77742, +77742, +77742, +77742, +77742, +77742, +77742, +77742, +77742, +77742, +77742, +77742, +77752, +77752, +77757, +77769, +77808, +77822, +77822, +77832, +77845, +77845, +77845, +77862, +77862, +77868, +77868, +77868, +77868, +77888, +77904, +77972, +77972, +77988, +78004, +78030, +78064, +78069, +78069, +78069, +78087, +78098, +78116, +78153, +78153, +78164, +78164, +78173, +78191, +78219, +78243, +78253, +78253, +78273, +78281, +78289, +78305, +78349, +78356, +78369, +78384, +78402, +78402, +78422, +78422, +78422, +78439, +78456, +78456, +78492, +78502, +78502, +78512, +78522, +78554, +78587, +78598, +78614, +78614, +78614, +78619, +78619, +78626, +78626, +78663, +78670, +78670, +78681, +78681, +78681, +78681, +78689, +78689, +78708, +78724, +78724, +78724, +78724, +78724, +78774, +78774, +78786, +78786, +78815, +78834, +78846, +78846, +78846, +78846, +78846, +78870, +78905, +78913, +78931, +78931, +78949, +78968, +78974, +78974, +78981, +78981, +78981, +78981, +78981, +78985, +79014, +79024, +79024, +79030, +79030, +79049, +79053, +79073, +79077, +79085, +79085, +79085, +79085, +79098, +79098, +79122, +79122, +79122, +79122, +79122, +79144, +79144, +79151, +79151, +79151, +79158, +79158, +79174, +79205, +79205, +79215, +79215, +79215, +79215, +79228, +79246, +79246, +79246, +79267, +79312, +79312, +79336, +79354, +79384, +79384, +79391, +79391, +79412, +79427, +79427, +79427, +79447, +79447, +79453, +79485, +79513, +79513, +79527, +79527, +79533, +79533, +79555, +79565, +79580, +79595, +79603, +79603, +79603, +79628, +79641, +79641, +79682, +79691, +79751, +79751, +79751, +79759, +79803, +79803, +79803, +79803, +79865, +79865, +79922, +79937, +79948, +79993, +79993, +79993, +80005, +80012, +80035, +80035, +80035, +80048, +80063, +80080, +80100, +80100, +80107, +80114, +80114, +80114, +80140, +80140, +80167, +80167, +80177, +80187, +80194, +80194, +80194, +80194, +80206, +80224, +80224, +80233, +80233, +80240, +80253, +80270, +80308, +80330, +80367, +80383, +80391, +80391, +80413, +80413, +80413, +80427, +80427, +80427, +80462, +80462, +80462, +80469, +80489, +80503, +80526, +80550, +80550, +80564, +80564, +80564, +80564, +80571, +80583, +80583, +80583, +80583, +80583, +80612, +80612, +80612, +80624, +80624, +80642, +80652, +80652, +80664, +80686, +80699, +80699, +80736, +80736, +80748, +80748, +80786, +80786, +80802, +80802, +80802, +80802, +80815, +80846, +80846, +80846, +80864, +80904, +80914, +80935, +80962, +80962, +80962, +80962, +80975, +80984, +81035, +81035, +81035, +81035, +81060, +81081, +81120, +81135, +81152, +81165, +81171, +81171, +81171, +81171, +81180, +81204, +81221, +81221, +81221, +81276, +81276, +81292, +81292, +81335, +81354, +81364, +81372, +81372, +81372, +81382, +81389, +81400, +81439, +81451, +81477, +81477, +81509, +81530, +81530, +81537, +81537, +81537, +81548, +81548, +81563, +81598, +81612, +81619, +81624, +81641, +81666, +81666, +81689, +81689, +81702, +81702, +81707, +81726, +81754, +81770, +81797, +81797, +81837, +81837, +81857, +81862, +81894, +81908, +81908, +81908, +81908, +81908, +81908, +81922, +81956, +81956, +81977, +82016, +82016, +82037, +82065, +82065, +82103, +82103, +82103, +82103, +82103, +82103, +82120, +82120, +82133, +82133, +82150, +82175, +82175, +82182, +82202, +82217, +82233, +82233, +82233, +82247, +82247, +82273, +82273, +82279, +82285, +82310, +82310, +82310, +82342, +82342, +82359, +82381, +82400, +82400, +82410, +82441, +82441, +82441, +82448, +82467, +82476, +82476, +82476, +82476, +82507, +82528, +82550, +82554, +82559, +82619, +82660, +82660, +82691, +82734, +82769, +82811, +82811, +82811, +82836, +82857, +82863, +82863, +82880, +82880, +82880, +82892, +82906, +82906, +82919, +82943, +82964, +82995, +82995, +82995, +83048, +83059, +83059, +83070, +83079, +83099, +83113, +83113, +83148, +83148, +83164, +83196, +83201, +83215, +83215, +83229, +83229, +83229, +83229, +83244, +83244, +83244, +83257, +83261, +83261, +83303, +83324, +83334, +83343, +83380, +83396, +83396, +83419, +83419, +83419, +83419, +83419, +83419, +83419, +83427, +83427, +83433, +83433, +83449, +83449, +83449, +83470, +83480, +83501, +83501, +83514, +83514, +83524, +83545, +83545, +83561, +83561, +83577, +83577, +83577, +83577, +83594, +83594, +83609, +83635, +83635, +83648, +83648, +83696, +83714, +83714, +83744, +83744, +83770, +83770, +83776, +83816, +83823, +83842, +83864, +83864, +83864, +83875, +83879, +83879, +83879, +83883, +83883, +83883, +83883, +83883, +83896, +83916, +83916, +83935, +83935, +83935, +83951, +83951, +83951, +83951, +83951, +83951, +83971, +83989, +84017, +84054, +84079, +84079, +84079, +84089, +84095, +84121, +84129, +84139, +84157, +84192, +84211, +84265, +84282, +84296, +84313, +84325, +84345, +84345, +84357, +84379, +84379, +84400, +84434, +84452, +84457, +84468, +84497, +84497, +84511, +84511, +84533, +84533, +84539, +84539, +84577, +84592, +84604, +84628, +84628, +84628, +84628, +84638, +84638, +84653, +84676, +84682, +84731, +84752, +84766, +84766, +84774, +84815, +84854, +84873, +84889, +84908, +84908, +84924, +84971, +84971, +84971, +84971, +84971, +84971, +84971, +84971, +84971, +84999, +85024, +85024, +85024, +85059, +85068, +85074, +85081, +85103, +85126, +85126, +85126, +85148, +85169, +85179, +85179, +85179, +85190, +85202, +85216, +85229, +85229, +85229, +85229, +85229, +85235, +85242, +85287, +85294, +85294, +85294, +85294, +85300, +85300, +85300, +85300, +85315, +85333, +85356, +85356, +85394, +85394, +85434, +85434, +85444, +85444, +85444, +85451, +85451, +85457, +85464, +85464, +85464, +85471, +85471, +85484, +85484, +85491, +85510, +85510, +85510, +85510, +85522, +85522, +85553, +85595, +85603, +85614, +85633, +85633, +85662, +85662, +85670, +85700, +85720, +85742, +85754, +85754, +85754, +85776, +85788, +85850, +85856, +85856, +85887, +85912, +85953, +85964, +85964, +85995, +85995, +85995, +85995, +86004, +86016, +86016, +86033, +86066, +86066, +86073, +86083, +86083, +86090, +86096, +86109, +86121, +86121, +86132, +86132, +86145, +86145, +86145, +86145, +86178, +86191, +86216, +86230, +86257, +86270, +86281, +86299, +86312, +86323, +86323, +86363, +86383, +86383, +86383, +86422, +86427, +86427, +86427, +86445, +86445, +86451, +86477, +86494, +86520, +86520, +86527, +86534, +86547, +86558, +86576, +86601, +86601, +86607, +86615, +86615, +86638, +86656, +86664, +86664, +86695, +86695, +86701, +86701, +86736, +86741, +86741, +86741, +86761, +86799, +86812, +86832, +86853, +86891, +86929, +86929, +86955, +86996, +86996, +86996, +87009, +87009, +87016, +87029, +87029, +87029, +87029, +87073, +87084, +87135, +87157, +87165, +87182, +87191, +87208, +87208, +87225, +87235, +87235, +87257, +87265, +87281, +87286, +87286, +87299, +87299, +87319, +87319, +87333, +87344, +87371, +87385, +87385, +87417, +87417, +87443, +87450, +87460, +87460, +87477, +87495, +87520, +87520, +87520, +87544, +87544, +87544, +87557, +87583, +87583, +87583, +87583, +87600, +87635, +87635, +87670, +87670, +87670, +87670, +87670, +87683, +87690, +87690, +87733, +87753, +87768, +87805, +87805, +87827, +87859, +87873, +87873, +87901, +87912, +87912, +87934, +87943, +87952, +87979, +87995, +87995, +88008, +88008, +88008, +88017, +88027, +88037, +88037, +88037, +88066, +88098, +88098, +88105, +88133, +88133, +88144, +88187, +88207, +88207, +88242, +88242, +88254, +88254, +88284, +88324, +88344, +88344, +88356, +88356, +88356, +88356, +88356, +88362, +88382, +88401, +88431, +88431, +88437, +88447, +88467, +88499, +88499, +88499, +88514, +88526, +88526, +88526, +88526, +88526, +88565, +88565, +88589, +88594, +88594, +88594, +88610, +88638, +88651, +88681, +88710, +88717, +88717, +88717, +88750, +88750, +88757, +88810, +88810, +88825, +88849, +88883, +88903, +88903, +88935, +88941, +88941, +88961, +88980, +89018, +89018, +89039, +89039, +89045, +89061, +89071, +89071, +89071, +89071, +89085, +89085, +89102, +89132, +89141, +89165, +89199, +89214, +89243, +89243, +89249, +89249, +89249, +89255, +89273, +89273, +89290, +89290, +89308, +89308, +89308, +89325, +89330, +89355, +89355, +89373, +89390, +89408, +89408, +89408, +89443, +89443, +89443, +89457, +89457, +89457, +89457, +89457, +89471, +89477, +89477, +89477, +89477, +89495, +89495, +89509, +89534, +89534, +89558, +89558, +89567, +89594, +89630, +89630, +89649, +89649, +89649, +89667, +89678, +89678, +89678, +89692, +89720, +89740, +89755, +89766, +89785, +89796, +89796, +89814, +89814, +89821, +89848, +89848, +89869, +89885, +89885, +89900, +89900, +89900, +89900, +89908, +89942, +89956, +89964, +89964, +89964, +89983, +90010, +90010, +90040, +90040, +90046, +90066, +90074, +90074, +90084, +90084, +90096, +90096, +90141, +90149, +90156, +90156, +90156, +90166, +90176, +90242, +90260, +90276, +90276, +90276, +90276, +90290, +90305, +90305, +90305, +90325, +90333, +90333, +90346, +90346, +90378, +90378, +90386, +90397, +90438, +90438, +90438, +90461, +90477, +90520, +90528, +90535, +90568, +90589, +90589, +90608, +90608, +90629, +90663, +90673, +90673, +90673, +90681, +90681, +90715, +90724, +90735, +90735, +90735, +90755, +90782, +90787, +90787, +90805, +90805, +90825, +90855, +90867, +90907, +90926, +90937, +90958, +90958, +90983, +90983, +91033, +91048, +91065, +91082, +91082, +91082, +91086, +91114, +91133, +91166, +91166, +91185, +91185, +91226, +91226, +91238, +91238, +91238, +91245, +91258, +91270, +91270, +91288, +91295, +91295, +91295, +91303, +91311, +91342, +91357, +91376, +91383, +91383, +91383, +91383, +91383, +91390, +91397, +91397, +91397, +91397, +91438, +91455, +91463, +91504, +91504, +91511, +91538, +91557, +91575, +91583, +91590, +91611, +91622, +91622, +91647, +91657, +91664, +91677, +91677, +91704, +91704, +91712, +91712, +91730, +91739, +91758, +91758, +91770, +91810, +91810, +91810, +91810, +91810, +91831, +91841, +91841, +91841, +91864, +91864, +91864, +91864, +91864, +91864, +91903, +91925, +91945, +91945, +91970, +91970, +91970, +91970, +91970, +92003, +92003, +92036, +92056, +92056, +92076, +92076, +92110, +92110, +92133, +92143, +92155, +92155, +92155, +92155, +92175, +92175, +92201, +92201, +92201, +92201, +92231, +92231, +92249, +92263, +92263, +92295, +92321, +92335, +92356, +92375, +92375, +92384, +92384, +92384, +92394, +92394, +92423, +92423, +92439, +92451, +92463, +92463, +92504, +92504, +92504, +92504, +92516, +92532, +92532, +92532, +92553, +92566, +92572, +92572, +92572, +92581, +92597, +92597, +92618, +92647, +92654, +92654, +92654, +92661, +92661, +92672, +92672, +92708, +92713, +92730, +92730, +92730, +92730, +92730, +92765, +92765, +92785, +92785, +92793, +92793, +92793, +92830, +92830, +92857, +92857, +92876, +92885, +92885, +92885, +92885, +92885, +92903, +92903, +92936, +92936, +92936, +92946, +92975, +92999, +93037, +93049, +93049, +93056, +93073, +93098, +93098, +93138, +93182, +93189, +93189, +93241, +93290, +93331, +93364, +93364, +93364, +93402, +93415, +93426, +93434, +93458, +93475, +93475, +93484, +93484, +93501, +93501, +93501, +93512, +93524, +93531, +93554, +93567, +93581, +93594, +93594, +93617, +93617, +93627, +93636, +93643, +93643, +93643, +93643, +93687, +93687, +93687, +93687, +93687, +93687, +93687, +93687, +93687, +93687, +93695, +93695, +93736, +93747, +93754, +93770, +93789, +93801, +93811, +93811, +93821, +93835, +93835, +93885, +93903, +93916, +93916, +93916, +93926, +93935, +93935, +93951, +93958, +93969, +93969, +93969, +93981, +93993, +94006, +94060, +94060, +94074, +94090, +94090, +94129, +94157, +94171, +94171, +94207, +94220, +94220, +94249, +94260, +94304, +94304, +94304, +94304, +94315, +94323, +94345, +94362, +94362, +94362, +94373, +94373, +94380, +94380, +94399, +94410, +94410, +94410, +94415, +94415, +94449, +94449, +94449, +94449, +94449, +94468, +94474, +94483, +94483, +94534, +94534, +94534, +94541, +94562, +94562, +94569, +94581, +94605, +94605, +94605, +94605, +94612, +94612, +94652, +94658, +94673, +94702, +94748, +94800, +94832, +94832, +94867, +94867, +94874, +94874, +94881, +94903, +94903, +94927, +94935, +94957, +94957, +94974, +95012, +95025, +95025, +95060, +95065, +95074, +95092, +95092, +95125, +95125, +95137, +95137, +95165, +95214, +95231, +95231, +95231, +95231, +95248, +95248, +95248, +95248, +95261, +95261, +95300, +95315, +95361, +95373, +95392, +95429, +95443, +95443, +95443, +95454, +95473, +95509, +95509, +95552, +95552, +95552, +95577, +95600, +95600, +95637, +95644, +95672, +95672, +95672, +95689, +95689, +95757, +95797, +95797, +95797, +95797, +95815, +95815, +95832, +95847, +95847, +95857, +95870, +95870, +95889, +95889, +95919, +95934, +95944, +95944, +95944, +95981, +95994, +96005, +96005, +96022, +96042, +96042, +96047, +96047, +96047, +96057, +96065, +96065, +96078, +96078, +96078, +96078, +96111, +96111, +96118, +96143, +96163, +96163, +96182, +96188, +96194, +96194, +96214, +96214, +96221, +96231, +96231, +96231, +96240, +96252, +96252, +96263, +96263, +96263, +96276, +96302, +96302, +96309, +96309, +96323, +96351, +96351, +96351, +96378, +96385, +96398, +96421, +96430, +96430, +96430, +96430, +96430, +96446, +96446, +96446, +96456, +96478, +96478, +96489, +96501, +96512, +96522, +96537, +96558, +96558, +96598, +96615, +96624, +96624, +96640, +96661, +96677, +96686, +96686, +96686, +96701, +96701, +96701, +96701, +96701, +96723, +96733, +96733, +96733, +96754, +96761, +96761, +96782, +96812, +96827, +96833, +96838, +96838, +96859, +96859, +96880, +96880, +96896, +96896, +96923, +96923, +96923, +96923, +96932, +96932, +96956, +96982, +97012, +97038, +97038, +97059, +97059, +97101, +97107, +97123, +97123, +97123, +97123, +97157, +97185, +97215, +97241, +97253, +97253, +97253, +97284, +97295, +97305, +97305, +97305, +97312, +97322, +97341, +97341, +97341, +97341, +97350, +97350, +97391, +97391, +97391, +97421, +97446, +97457, +97457, +97457, +97475, +97481, +97489, +97499, +97508, +97508, +97542, +97558, +97558, +97581, +97581, +97596, +97637, +97637, +97637, +97637, +97637, +97684, +97720, +97720, +97738, +97738, +97738, +97744, +97744, +97744, +97750, +97750, +97803, +97803, +97827, +97852, +97878, +97885, +97927, +97933, +97933, +97947, +97957, +98014, +98014, +98049, +98049, +98066, +98066, +98089, +98089, +98105, +98123, +98130, +98140, +98158, +98196, +98196, +98196, +98237, +98237, +98265, +98292, +98292, +98292, +98299, +98317, +98317, +98317, +98334, +98355, +98365, +98422, +98422, +98464, +98470, +98470, +98477, +98499, +98517, +98538, +98550, +98568, +98568, +98585, +98591, +98615}; + +static const char *tldData[] = { +"sosa.chiba.jp\0" +"!city.sendai.jp\0pixolino.com\0" +"minano.saitama.jp\0" +"ralingen.no\0" +"s3.dualstack.ap-southeast-1.amazonaws.com\0" +"emp.br\0" +"okinawa.okinawa.jp\0" +"kochi.jp\0" +"florida.museum\0" +"katsuragi.nara.jp\0mielec.pl\0" +"vet.br\0solund.no\0" +"dyndns-server.com\0" +"macapa.br\0lib.oh.us\0" +"is-a-cpa.com\0" +"hikone.shiga.jp\0" +"k12.as.us\0" +"yombo.me\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" +"carrier.museum\0" +"iwanai.hokkaido.jp\0skedsmokorset.no\0" +"hazu.aichi.jp\0" +"royken.no\0" +"paris.eu.org\0" +"okuizumo.shimane.jp\0" +"sk.eu.org\0" +"madrid.museum\0cd.eu.org\0" +"v.bg\0" +"vapor.cloud\0" +"sjc.br\0" +"takaoka.toyama.jp\0" +"tv.na\0eidsberg.no\0k12.id.us\0" +"balashov.su\0" +"misato.miyagi.jp\0\xe9\xa4\x90\xe5\x8e\x85\0" +"kokubunji.tokyo.jp\0" +"s3.eu-central-1.amazonaws.com\0" +"tsu.mie.jp\0cambridge.museum\0" +"booking\0" +"kviteseid.no\0" +"suita.osaka.jp\0" +"oz.au\0" +"za.org\0" +"com.ac\0" +"caxias.br\0nisshin.aichi.jp\0" +"dev.static.land\0" +"com.af\0*.advisor.ws\0is-a-guru.com\0" +"com.ag\0kusu.oita.jp\0honjo.saitama.jp\0" +"plus\0" +"com.ai\0" +"bridgestone\0" +"com.al\0" +"act.edu.au\0shimonita.gunma.jp\0kaminoyama.yamagata.jp\0" +"servehalflife.com\0" +"bialystok.pl\0selfip.info\0" +"com.ba\0" +"com.ar\0com.bb\0harima.hyogo.jp\0ebiz.tw\0chintai\0" +"toba.mie.jp\0ciscofreak.com\0" +"x.se\0redirectme.net\0" +"com.au\0" +"com.aw\0" +"com.bh\0sydney.museum\0virtuel.museum\0gs.nt.no\0amli.no\0\xd9\x85\xd8\xb5\xd8\xb1\0\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0alt.za\0" +"com.bi\0" +"com.az\0ppg.br\0loginto.me\0" +"com.bm\0" +"dst.mi.us\0" +"com.bo\0dyndns-work.com\0" +"davvesiida.no\0starostwo.gov.pl\0" +"us.com\0" +"com.br\0bilbao.museum\0" +"com.bs\0troms\xc3\xb8.no\0wales\0ru.eu.org\0se.eu.org\0" +"com.bt\0austin.museum\0" +"agriculture.museum\0loab\xc3\xa1t.no\0" +"tjmaxx\0" +"com.by\0com.ci\0sardinia.it\0" +"com.bz\0" +"com.cm\0" +"com.cn\0bo.telemark.no\0lviv.ua\0" +"com.co\0kanzaki.saga.jp\0" +"tamano.okayama.jp\0" +"com.cu\0vegas\0com.de\0" +"kr.ua\0" +"com.cw\0" +"\xd2\x9b\xd0\xb0\xd0\xb7\0fiat\0lasalle\0" +"com.cy\0" +"andriabarlettatrani.it\0" +"genting\0" +"com.dm\0" +"com.do\0" +"hinohara.tokyo.jp\0" +"tomobe.ibaraki.jp\0tv.sd\0exchange\0vote\0" +"yn.cn\0sakai.fukui.jp\0" +"com.ec\0" +"bl.it\0matsubushi.saitama.jp\0" +"com.ee\0" +"com.eg\0" +"enterprises\0" +"com.dz\0pl.ua\0" +"rahkkeravju.no\0voto\0" +"joso.ibaraki.jp\0matsuda.kanagawa.jp\0cc.gu.us\0works\0" +"sciencecenters.museum\0world\0" +"com.es\0" +"com.et\0*.ex.ortsinfo.at\0" +"shika.ishikawa.jp\0" +"gorlice.pl\0shacknet.nu\0dagestan.ru\0" +"matsuno.ehime.jp\0nowruz\0" +"meguro.tokyo.jp\0" +"podhale.pl\0" +"mantova.it\0" +"stor-elvdal.no\0" +"pueblo.bo\0tv.tr\0logoip.com\0" +"operaunite.com\0" +"miasa.nagano.jp\0holt\xc3\xa5len.no\0is-a-bruinsfan.org\0" +"com.fr\0shiiba.miyazaki.jp\0" +"fido\0" +"com.ge\0nanbu.yamanashi.jp\0" +"dagestan.su\0" +"tv.tz\0" +"com.gh\0" +"com.gi\0" +"brumunddal.no\0githubusercontent.com\0" +"a\xc3\xa9roport.ci\0" +"com.gl\0tadotsu.kagawa.jp\0" +"com.gn\0" +"com.gp\0" +"stateofdelaware.museum\0lease\0" +"com.gr\0misugi.mie.jp\0" +"com.gt\0lans.museum\0" +"watch-and-clock.museum\0kaufen\0selfip.com\0" +"com.gy\0" +"com.hk\0" +"katowice.pl\0point2this.com\0" +"ogata.akita.jp\0" +"com.hn\0trana.no\0" +"hagebostad.no\0krager\xc3\xb8.no\0" +"s3-website.us-east-2.amazonaws.com\0" +"com.hr\0ne.jp\0hida.gifu.jp\0" +"ro.im\0" +"com.ht\0dell-ogliastra.it\0tokorozawa.saitama.jp\0bayern\0" +"ro.it\0" +"exchange.aero\0ddr.museum\0\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0" +"com.im\0tt.im\0" +"chosei.chiba.jp\0serveirc.com\0" +"com.io\0soeda.fukuoka.jp\0cya.gg\0" +"com.iq\0" +"bato.tochigi.jp\0" +"com.is\0" +"ud.it\0ne.kr\0" +"lancashire.museum\0" +"jogasz.hu\0" +"naklo.pl\0" +"sakura\0" +"!city.sapporo.jp\0" +"mol.it\0" +"com.jo\0" +"settlers.museum\0" +"org.ac\0rogers\0" +"kurate.fukuoka.jp\0psp.gov.pl\0lib.la.us\0" +"org.ae\0" +"org.af\0" +"org.ag\0" +"com.kg\0" +"org.ai\0" +"dellogliastra.it\0fussa.tokyo.jp\0com.ki\0" +"skydiving.aero\0org.al\0" +"com.km\0" +"kamisato.saitama.jp\0" +"org.ba\0com.kp\0hammarfeasta.no\0" +"org.ar\0org.bb\0com.la\0" +"com.lb\0" +"com.lc\0mypep.link\0" +"org.au\0rovno.ua\0" +"*.bd\0" +"mg.gov.br\0koto.tokyo.jp\0sanok.pl\0" +"org.bh\0" +"org.bi\0yokoshibahikari.chiba.jp\0southwest.museum\0" +"org.az\0com.ky\0" +"com.kz\0afjord.no\0" +"com.lk\0americanantiques.museum\0" +"org.bm\0" +"wolterskluwer\0" +"org.bo\0wroclaw.pl\0" +"*.bn\0" +"org.br\0bj.cn\0" +"org.bs\0com.lr\0" +"org.bt\0tarumizu.kagoshima.jp\0productions\0" +"ozora.hokkaido.jp\0" +"shirako.chiba.jp\0heritage.museum\0" +"org.bw\0com.lv\0" +"com.mg\0" +"org.ci\0norddal.no\0iveco\0sp.leg.br\0" +"org.bz\0com.ly\0karmoy.no\0alsace\0" +"\xe9\xab\x98\xe7\x9f\xa5.jp\0" +"com.mk\0" +"t.bg\0*.ck\0hyogo.jp\0com.ml\0mosj\xc3\xb8""en.no\0\xe6\x96\xb0\xe9\x97\xbb\0" +"org.cn\0trentino-s-tirol.it\0catanzaro.it\0sobetsu.hokkaido.jp\0" +"org.co\0" +"com.mo\0" +"nakama.fukuoka.jp\0nakagusuku.okinawa.jp\0" +"mad.museum\0com.na\0staples\0" +"zagan.pl\0" +"com.ms\0cincinnati.museum\0" +"org.cu\0hashimoto.wakayama.jp\0com.mt\0flesberg.no\0" +"gd.cn\0nishihara.kumamoto.jp\0com.mu\0" +"org.cw\0com.mv\0com.nf\0no.com\0" +"uda.nara.jp\0com.mw\0com.ng\0" +"org.cy\0com.mx\0" +"com.my\0com.ni\0" +"org.dm\0ssl.origin.cdn77-secure.org\0" +"org.do\0phone\0" +"nogi.tochigi.jp\0" +"film\0" +"org.ec\0kujukuri.chiba.jp\0georgia.museum\0com.nr\0cloudcontrolled.com\0" +"ap-south-1.elasticbeanstalk.com\0" +"org.ee\0" +"org.eg\0" +"salem.museum\0" +"org.dz\0ne.pw\0webspace.rocks\0" +"utazas.hu\0mein-vigor.de\0" +"com.om\0" +"jessheim.no\0com.pa\0" +"org.es\0" +"*.er\0org.et\0minoh.osaka.jp\0levanger.no\0" +"com.pe\0" +"com.pf\0" +"yachts\0" +"com.ph\0" +"grp.lk\0" +"*.fj\0com.pk\0" +"*.fk\0com.pl\0" +"anthropology.museum\0com.qa\0" +"com.pr\0from-in.com\0" +"nuoro.it\0montreal.museum\0com.ps\0" +"org.ge\0com.pt\0" +"org.gg\0" +"org.gh\0" +"org.gi\0myvnc.com\0" +"com.py\0s3-eu-west-1.amazonaws.com\0" +"koganei.tokyo.jp\0missile.museum\0apps.fbsbx.com\0" +"org.gl\0" +"org.gn\0" +"org.gp\0" +"is-slick.com\0" +"org.gr\0salzburg.museum\0sytes.net\0" +"okayama.okayama.jp\0" +"org.gt\0" +"yotsukaido.chiba.jp\0higashimatsushima.miyagi.jp\0" +"com.re\0" +"*.gu\0kamo.niigata.jp\0" +"askvoll.no\0" +"org.gy\0" +"takayama.gunma.jp\0yoita.niigata.jp\0gs.va.no\0" +"org.hk\0ragusa.it\0imakane.hokkaido.jp\0chikusei.ibaraki.jp\0myphotos.cc\0" +"imizu.toyama.jp\0" +"org.hn\0tadaoka.osaka.jp\0s\xc3\xb8rreisa.no\0" +"money\0" +"com.ro\0" +"soundandvision.museum\0" +"com.sa\0" +"fukui.fukui.jp\0com.sb\0" +"org.ht\0kuriyama.hokkaido.jp\0maibara.shiga.jp\0com.sc\0" +"org.hu\0com.sd\0" +"soma.fukushima.jp\0tomi.nagano.jp\0com.se\0com.ru\0" +"com.rw\0com.sg\0" +"com.sh\0accenture\0" +"ne.ug\0" +"org.il\0" +"org.im\0inazawa.aichi.jp\0soni.nara.jp\0com.sl\0ne.tz\0" +"org.in\0hisamitsu\0" +"com.sn\0" +"com.so\0" +"org.iq\0" +"org.ir\0" +"org.is\0" +"org.je\0com.st\0" +"intl.tn\0ne.us\0" +"nom.ad\0com.sv\0" +"arte.bo\0nom.ae\0" +"embetsu.hokkaido.jp\0" +"nom.ag\0higashitsuno.kochi.jp\0com.sy\0fire\0" +"oizumi.gunma.jp\0nakagawa.tokushima.jp\0com.tj\0" +"cam.it\0nom.ai\0" +"motoyama.kochi.jp\0com.tm\0tel.tr\0jetzt\0" +"*.jm\0org.jo\0com.tn\0servebbs.net\0nom.al\0" +"com.to\0us-west-1.elasticbeanstalk.com\0" +"kawachinagano.osaka.jp\0vestre-toten.no\0" +"com.ua\0twmail.cc\0" +"com.tr\0" +"com.tt\0" +"nyc.mn\0" +"*.ke\0org.kg\0" +"com.tw\0com.ug\0" +"org.ki\0photo\0" +"*.kh\0" +"boats\0" +"trentinoalto-adige.it\0" +"org.km\0leka.no\0fish\0" +"asaminami.hiroshima.jp\0org.kn\0eid.no\0" +"sakae.chiba.jp\0wsa.gov.pl\0" +"itako.ibaraki.jp\0org.kp\0" +"org.la\0" +"\xe5\xae\xae\xe5\xb4\x8e.jp\0org.lb\0" +"org.lc\0" +"monzaebrianza.it\0com.vc\0" +"hemsedal.no\0" +"com.ve\0" +"from-co.net\0" +"*.kw\0org.ky\0" +"ms.it\0org.kz\0com.uy\0com.vi\0" +"org.lk\0com.uz\0" +"nsw.au\0diet\0ptplus.fit\0" +"pistoia.it\0wi.us\0town\0" +"pvt.ge\0com.vn\0nom.cl\0" +"org.ma\0" +"nom.co\0org.lr\0travel\0" +"org.ls\0forsand.no\0" +"org.me\0" +"org.lv\0com.vu\0" +"org.mg\0ch.eu.org\0" +"vicenza.it\0" +"milano.it\0org.ly\0" +"org.mk\0" +"savona.it\0org.ml\0nuernberg.museum\0muos\xc3\xa1t.no\0" +"rm.it\0org.mn\0cc.va.us\0" +"valleaosta.it\0*.mm\0org.mo\0varoy.no\0immobilien\0" +"research.museum\0" +"org.na\0" +"r\xc3\xb8mskog.no\0futuremailing.at\0" +"org.ms\0" +"org.mt\0com.ws\0" +"org.mu\0" +"org.mv\0" +"org.mw\0org.ng\0eu-west-2.elasticbeanstalk.com\0" +"tr.it\0ms.kr\0org.mx\0cc.wv.us\0" +"vald-aosta.it\0sakura.chiba.jp\0fukumitsu.toyama.jp\0american.museum\0org.my\0org.ni\0" +"fujimino.saitama.jp\0org.mz\0" +"kep.tr\0" +"manno.kagawa.jp\0tamaki.mie.jp\0" +"balestrand.no\0" +"matsumoto.nagano.jp\0" +"eng.pro\0" +"teramo.it\0*.np\0org.nr\0skoczow.pl\0" +"toys\0uk.net\0" +"nom.es\0" +"lib.ks.us\0" +"miyagi.jp\0" +"red.sv\0" +"notteroy.no\0org.nz\0" +"lanxess\0" +"org.om\0" +"yomitan.okinawa.jp\0" +"fuel.aero\0termez.su\0" +"org.pa\0" +"homegoods\0moscow\0" +"nom.fr\0sekikawa.niigata.jp\0org.pe\0" +"org.pf\0" +"nom.gd\0" +"glas.museum\0org.ph\0" +"cultural.museum\0\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0*.pg\0" +"directory\0virtueeldomein.nl\0" +"org.pk\0" +"org.pl\0" +"castle.museum\0org.pn\0com.zm\0" +"nom.gl\0" +"org.qa\0" +"org.pr\0" +"kyowa.akita.jp\0shirahama.wakayama.jp\0org.ps\0abudhabi\0from-de.com\0" +"org.pt\0" +"cymru\0vaporcloud.io\0" +"miyazaki.miyazaki.jp\0nom.gt\0" +"sakai.ibaraki.jp\0" +"org.py\0" +"misato.saitama.jp\0mattel\0" +"kuchinotsu.nagasaki.jp\0jerusalem.museum\0" +"contemporaryart.museum\0" +"r.bg\0" +"nom.hn\0" +"kitagata.saga.jp\0gaular.no\0" +"iwamizawa.hokkaido.jp\0gotdns.com\0" +"otake.hiroshima.jp\0kawaguchi.saitama.jp\0" +"org.ro\0" +"room\0nom.im\0" +"org.sa\0" +"trentinoaltoadige.it\0org.sb\0" +"tr.no\0org.rs\0org.sc\0" +"org.sd\0" +"org.se\0org.ru\0" +"boutique\0" +"yashio.saitama.jp\0org.sg\0" +"karikatur.museum\0org.sh\0" +"k12.nj.us\0" +"tromso.no\0org.sl\0" +"keisen.fukuoka.jp\0" +"tsuyama.okayama.jp\0org.sn\0" +"org.so\0" +"urausu.hokkaido.jp\0" +"boxfuse.io\0" +"org.st\0police.uk\0" +"uri.arpa\0muroto.kochi.jp\0" +"trento.it\0org.sv\0" +"fot.br\0" +"sld.do\0org.sy\0" +"org.sz\0org.tj\0" +"t.se\0" +"educational.museum\0" +"fie.ee\0org.tm\0" +"kouhoku.saga.jp\0org.tn\0" +"org.to\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0" +"nom.km\0\xe5\x95\x86\xe6\xa5\xad.tw\0" +"org.ua\0" +"abira.hokkaido.jp\0org.tr\0" +"org.tt\0wang\0" +"belluno.it\0habikino.osaka.jp\0" +"homeftp.org\0" +"org.tw\0org.ug\0az.us\0at.eu.org\0" +"orange\0" +"date.hokkaido.jp\0" +"org.uk\0" +"nom.li\0" +"idv.hk\0" +"kakamigahara.gifu.jp\0" +"haga.tochigi.jp\0" +"org.vc\0" +"we.bs\0" +"akaiwa.okayama.jp\0rockart.museum\0org.ve\0" +"botany.museum\0a.prod.fastly.net\0" +"\xe7\xbe\xa4\xe9\xa6\xac.jp\0kamimine.saga.jp\0org.uy\0org.vi\0" +"nom.mg\0imageandsound.museum\0org.uz\0" +"kuroishi.aomori.jp\0" +"denmark.museum\0mus.mi.us\0cyou\0" +"org.vn\0nom.mk\0" +"fuchu.toyama.jp\0org.vu\0statoil\0" +"nom.nc\0\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa6\xa4\0" +"nc.tr\0" +"xz.cn\0" +"mortgage\0nalchik.ru\0" +"nom.ni\0" +"tozawa.yamagata.jp\0yuza.yamagata.jp\0press.museum\0" +"org.ws\0volvo\0" +"contemporary.museum\0" +"sakata.yamagata.jp\0lindesnes.no\0blogsite.xyz\0" +"nom.nu\0" +"sakyo.kyoto.jp\0ms.us\0nc.us\0" +"nalchik.su\0" +"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0" +"s3.dualstack.ap-northeast-1.amazonaws.com\0" +"fr.it\0" +"hiranai.aomori.jp\0bjark\xc3\xb8y.no\0" +"furano.hokkaido.jp\0" +"agr.br\0juif.museum\0" +"sula.no\0" +"nom.pa\0" +"*.ye\0" +"nom.pe\0" +"nom.pl\0" +"dish\0" +"org.za\0myds.me\0" +"bibai.hokkaido.jp\0pohl\0" +"nom.qa\0" +"k12.ec\0" +"aioi.hyogo.jp\0" +"indianapolis.museum\0steinkjer.no\0" +"lib.al.us\0" +"tanabe.kyoto.jp\0ostroleka.pl\0" +"\xed\x95\x9c\xea\xb5\xad\0nom.pw\0" +"vinnica.ua\0" +"na.it\0froland.no\0org.zm\0" +"shiftedit.io\0" +"forde.no\0" +"niteroi.br\0sakado.saitama.jp\0from-al.com\0" +"takatsuki.osaka.jp\0" +"moseushi.hokkaido.jp\0org.zw\0" +"czest.pl\0nom.re\0" +"pmn.it\0\xe9\xa6\x99\xe6\xb8\xaf\0" +"force.museum\0" +"anan.tokushima.jp\0nom.ro\0" +"iruma.saitama.jp\0kvitsoy.no\0" +"medecin.km\0" +"nom.rs\0" +"rovigo.it\0" +"from-ga.com\0" +"tp.it\0presse.km\0amber.museum\0comcast\0workisboring.com\0" +"nom.si\0" +"dyndns.biz\0" +"\xc3\xb8rland.no\0lancia\0property\0" +"history.museum\0nord-odal.no\0shell\0" +"biz.bb\0gemological.museum\0\xc3\xa5snes.no\0" +"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0biz.at\0" +"\xe4\xba\xac\xe9\x83\xbd.jp\0shiso.hyogo.jp\0" +"biz.az\0kitayama.wakayama.jp\0" +"freesite.host\0df.leg.br\0" +"nago.okinawa.jp\0" +"naroy.no\0cruise\0firestone\0" +"nom.tm\0" +"kyowa.hokkaido.jp\0york.museum\0" +"africa\0" +"ome.tokyo.jp\0tananger.no\0lib.mn.us\0" +"ostrowiec.pl\0" +"delta\0" +"tochio.niigata.jp\0presse.ml\0nom.ug\0" +"\xe5\xbe\xae\xe5\x8d\x9a\0" +"netlify.com\0" +"chiyoda.tokyo.jp\0" +"k12.il\0kamogawa.chiba.jp\0" +"susaki.kochi.jp\0" +"vix.br\0k12.ct.us\0" +"panama.museum\0game-host.org\0" +"kitakata.miyazaki.jp\0\xc3\xa5""fjord.no\0nom.vc\0" +"ono.hyogo.jp\0himi.toyama.jp\0lib.sd.us\0" +"eti.br\0biz.cy\0" +"oregon.museum\0newholland\0nom.vg\0" +"sld.pa\0zgora.pl\0biz.dk\0" +"airline.aero\0fujiidera.osaka.jp\0nom.uy\0" +"marche.it\0" +"rawa-maz.pl\0" +"anamizu.ishikawa.jp\0" +"gs.bu.no\0bike\0" +"nt.edu.au\0kadoma.osaka.jp\0is.gov.pl\0" +"bryne.no\0" +"p.bg\0" +"s\xc3\xa1l\xc3\xa1t.no\0" +"culture.museum\0" +"vestv\xc3\xa5g\xc3\xb8y.no\0" +"biz.et\0" +"\xc3\xa1lt\xc3\xa1.no\0" +"\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0" +"betainabox.com\0" +"to.leg.br\0" +"kakegawa.shizuoka.jp\0" +"author.aero\0homes\0" +"mytuleap.com\0" +"shimoichi.nara.jp\0" +"katsuura.chiba.jp\0kosher\0" +"fitness\0" +"mo.cn\0idv.tw\0" +"mizusawa.iwate.jp\0" +"r.se\0" +"tingvoll.no\0" +"bing\0" +"hatsukaichi.hiroshima.jp\0" +"shitara.aichi.jp\0nom.za\0" +"sugito.saitama.jp\0" +"\xd0\xba\xd0\xbe\xd0\xbc\0" +"nakano.tokyo.jp\0rakkestad.no\0" +"shizuoka.jp\0photography\0myfusion.cloud\0" +"gotpantheon.com\0" +"aaa.pro\0" +"quebec\0" +"shikatsu.aichi.jp\0baths.museum\0" +"grimstad.no\0" +"biz.id\0porn\0" +"aizubange.fukushima.jp\0" +"mopar\0" +"aremark.no\0" +"judygarland.museum\0r\xc3\xa5holt.no\0" +"ven.it\0" +"post\0" +"choyo.kumamoto.jp\0" +"av.it\0lifeinsurance\0" +"mobi.gp\0s3-ca-central-1.amazonaws.com\0" +"kuki.saitama.jp\0" +"global.prod.fastly.net\0" +"media.aero\0kayabe.hokkaido.jp\0\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0" +"biz.ki\0" +"kobierzyce.pl\0intuit\0" +"shimane.jp\0" +"tsubame.niigata.jp\0baseball\0" +"adachi.tokyo.jp\0donostia.museum\0guide\0" +"ashgabad.su\0" +"lezajsk.pl\0" +"vipsinaapp.com\0" +"au.eu.org\0be.eu.org\0*.triton.zone\0" +"iijima.nagano.jp\0" +"farm.museum\0" +"media.hu\0toki.gifu.jp\0s3-website-ap-southeast-2.amazonaws.com\0" +"suisse.museum\0aejrie.no\0" +"cc.ky.us\0" +"uki.kumamoto.jp\0" +"iveland.no\0" +"osasco.br\0" +"\xc3\xa5mli.no\0sund.no\0marine.ru\0" +"friuli-veneziagiulia.it\0b\xc3\xa1jddar.no\0" +"assedic.fr\0guovdageaidnu.no\0s3.dualstack.eu-west-3.amazonaws.com\0" +"kisarazu.chiba.jp\0is-a-democrat.com\0" +"maebashi.gunma.jp\0" +"turin.it\0" +"chiryu.aichi.jp\0kuji.iwate.jp\0""1password.com\0" +"emergency.aero\0higashimatsuyama.saitama.jp\0" +"salvador.br\0" +"friulivgiulia.it\0szczytno.pl\0brussels\0" +"mo.it\0" +"horonobe.hokkaido.jp\0bukhara.su\0" +"biz.mv\0london\0" +"biz.mw\0ddnss.org\0" +"museumcenter.museum\0safe\0" +"biz.ni\0" +"ot.it\0pd.it\0" +"contact\0" +"columbia.museum\0softbank\0blogdns.org\0" +"omachi.saga.jp\0earth\0dnsupdater.de\0" +"association.museum\0" +"\xe5\x98\x89\xe9\x87\x8c\xe5\xa4\xa7\xe9\x85\x92\xe5\xba\x97\0" +"biz.nr\0" +"ri.it\0k12.tr\0uconnect\0" +"ina.saitama.jp\0" +"vgs.no\0" +"lib.ga.us\0" +"chino.nagano.jp\0" +"atsuma.hokkaido.jp\0" +"tn.it\0kannami.shizuoka.jp\0online.museum\0" +"trentino-aadige.it\0" +"fjaler.no\0" +"kasukabe.saitama.jp\0" +"fukudomi.saga.jp\0" +"asuke.aichi.jp\0is-a-republican.com\0" +"nakagawa.nagano.jp\0bg.eu.org\0" +"vs.it\0" +"takamatsu.kagawa.jp\0biz.pk\0k12.vi\0" +"\xc3\xb8rsta.no\0biz.pl\0" +"sabae.fukui.jp\0" +"meldal.no\0" +"biz.pr\0\xd5\xb0\xd5\xa1\xd5\xb5\0" +"school.na\0horten.no\0" +"website\0" +"\xe7\xa6\x8f\xe4\xba\x95.jp\0bandai.fukushima.jp\0" +"definima.net\0" +"fhs.no\0" +"coupons\0" +"cechire.com\0" +"gjemnes.no\0" +"kamagaya.chiba.jp\0gokase.miyazaki.jp\0ritto.shiga.jp\0" +"far.br\0sec.ps\0" +"jaguar\0" +"thruhere.net\0" +"iiyama.nagano.jp\0" +"consultant.aero\0chonan.chiba.jp\0" +"school.nz\0" +"kadogawa.miyazaki.jp\0" +"nishinoomote.kagoshima.jp\0" +"ibara.okayama.jp\0" +"landes.museum\0" +"n.bg\0dreamhosters.com\0hobby-site.org\0" +"e4.cz\0" +"s3-website-eu-west-1.amazonaws.com\0" +"koryo.nara.jp\0minamiizu.shizuoka.jp\0" +"k12.il.us\0" +"safety\0" +"yakumo.shimane.jp\0comsec\0" +"shirosato.ibaraki.jp\0" +"londrina.br\0nakagawa.hokkaido.jp\0media.pl\0" +"servebbs.org\0" +"inf.br\0palace.museum\0" +"babia-gora.pl\0" +"beiarn.no\0\xc3\xa1k\xc5\x8boluokta.no\0nord-aurdal.no\0" +"pb.ao\0pharmacy\0sale\0" +"takaharu.miyazaki.jp\0timekeeping.museum\0" +"medecin.fr\0biz.tj\0loan\0" +"ishikawa.okinawa.jp\0" +"honda\0" +"or.at\0" +"gushikami.okinawa.jp\0" +"izu.shizuoka.jp\0" +"biz.ua\0" +"or.bi\0kamiichi.toyama.jp\0biz.tr\0" +"jx.cn\0" +"biz.tt\0" +"inf.cu\0trapani.it\0goldpoint\0" +"abu.yamaguchi.jp\0vologda.su\0" +"meiwa.mie.jp\0" +"av.tr\0camdvr.org\0" +"barlettatraniandria.it\0mobara.chiba.jp\0haboro.hokkaido.jp\0" +"p.se\0" +"or.ci\0mishima.fukushima.jp\0" +"homeftp.net\0" +"gs.nl.no\0" +"helsinki\0" +"hr.eu.org\0" +"latrobe\0" +"football\0" +"or.cr\0" +"wa.au\0" +"biz.vn\0" +"isleofman.museum\0\xd9\x85\xd9\x88\xd8\xa8\xd8\xa7\xd9\x8a\xd9\x84\xd9\x8a\0" +"niyodogawa.kochi.jp\0datsun\0" +"s3-website.ap-south-1.amazonaws.com\0" +"onagawa.miyagi.jp\0flir\0" +"fuso.aichi.jp\0tsuruoka.yamagata.jp\0gs.sf.no\0" +"jewelry.museum\0" +"aurskog-holand.no\0isteingeek.de\0" +"mydissent.net\0" +"lawyer\0" +"higashi.okinawa.jp\0transport.museum\0" +"nrw.museum\0" +"shimizu.hokkaido.jp\0" +"s\xc3\xb8ndre-land.no\0" +"barsy.online\0firewall-gateway.de\0" +"at.it\0flora.no\0" +"sapo\0" +"daiwa.hiroshima.jp\0kashima.saga.jp\0" +"brescia.it\0schule\0is-leet.com\0" +"mus.br\0seven\0" +"presse.ci\0" +"council.aero\0" +"augustow.pl\0" +"cooperativa.bo\0eu.meteorapp.com\0" +"mo.us\0" +"melhus.no\0loft\0" +"yamatotakada.nara.jp\0fashion\0" +"pesaro-urbino.it\0namikata.ehime.jp\0santafe.museum\0serveftp.net\0" +"california.museum\0nuremberg.museum\0writesthisblog.com\0" +"kagoshima.jp\0taiji.wakayama.jp\0" +"hachirogata.akita.jp\0" +"sandnessjoen.no\0" +"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0" +"biz.zm\0" +"gouv.fr\0" +"sarl\0" +"accident-investigation.aero\0can.museum\0divtasvuodna.no\0" +"prd.fr\0is-a-doctor.com\0" +"shinanomachi.nagano.jp\0" +"ri.us\0" +"nowtv\0" +"verona.it\0nasu.tochigi.jp\0\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0s3.dualstack.eu-central-1.amazonaws.com\0" +"mj\xc3\xb8ndalen.no\0credit\0" +"slask.pl\0" +"bnr.la\0appspot.com\0" +"meteorapp.com\0" +"hirono.iwate.jp\0nanbu.tottori.jp\0simple-url.com\0" +"redumbrella\0" +"or.id\0tn.us\0" +"mod.gi\0" +"villas\0" +"\xe6\x95\x99\xe8\x82\xb2.hk\0taketomi.okinawa.jp\0webhop.biz\0" +"off.ai\0" +"lebesby.no\0lesja.no\0" +"trainer.aero\0" +"harstad.no\0" +"or.it\0hs.kr\0" +"presse.fr\0gouv.ht\0vercelli.it\0" +"infiniti\0" +"saigawa.fukuoka.jp\0" +"rg.it\0" +"or.jp\0" +"mymailer.com.tw\0" +"sasayama.hyogo.jp\0" +"bo.nordland.no\0" +"boehringer\0" +"skiptvet.no\0" +"berg.no\0" +"\xe6\x94\xbf\xe5\xba\x9c\0" +"gouv.bj\0" +"sayama.saitama.jp\0cadaques.museum\0" +"save\0" +"or.kr\0" +"inf.mk\0" +"kaminokawa.tochigi.jp\0" +"kamikawa.hokkaido.jp\0academy\0" +"ovre-eiker.no\0lib.ky.us\0" +"domains\0" +"gouv.ci\0" +"pilot.aero\0" +"koori.fukushima.jp\0" +"kadena.okinawa.jp\0tysnes.no\0" +"luster.no\0" +"prd.km\0kautokeino.no\0" +"dyndns-pics.com\0" +"*.futurecms.at\0" +"estate.museum\0select\0" +"mobi.tt\0from-fl.com\0" +"nyuzen.toyama.jp\0komvux.se\0dyndns-at-work.com\0" +"historical.museum\0watchandclock.museum\0" +"or.na\0" +"perugia.it\0mobi.tz\0" +"or.mu\0" +"sowa.ibaraki.jp\0" +"ikoma.nara.jp\0" +"saxo\0" +"apartments\0" +"kraanghke.no\0" +"hiraizumi.iwate.jp\0prd.mg\0" +"yosemite.museum\0" +"mima.tokushima.jp\0" +"l.bg\0" +"moonscale.net\0" +"nakano.nagano.jp\0" +"kiho.mie.jp\0tsuru.yamanashi.jp\0stat.no\0" +"forsale\0" +"crew.aero\0tsurugi.ishikawa.jp\0bd.se\0" +"kherson.ua\0" +"krodsherad.no\0" +"ind.br\0vestby.no\0bible\0online\0" +"venice.it\0" +"tenei.fukushima.jp\0" +"wakayama.jp\0" +"ama.aichi.jp\0""3utilities.com\0" +"\xe0\xb8\xad\xe0\xb8\x87\xe0\xb8\x84\xe0\xb9\x8c\xe0\xb8\x81\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"career\0dvrcam.info\0" +"omitama.ibaraki.jp\0" +"s\xc3\xb8r-odal.no\0" +"kui.hiroshima.jp\0k12.md.us\0" +"clinton.museum\0ask\xc3\xb8y.no\0pila.pl\0" +"avocat.fr\0basilicata.it\0" +"scienceandhistory.museum\0" +"kotoura.tottori.jp\0" +"taxi.br\0" +"kolobrzeg.pl\0s3-fips-us-gov-west-1.amazonaws.com\0" +"onomichi.hiroshima.jp\0aaa\0" +"\xd0\xbc\xd0\xba\xd0\xb4\0zappos\0" +"mihara.hiroshima.jp\0or.pw\0" +"jobs\0aisho.shiga.jp\0kawanishi.yamagata.jp\0" +"kuzumaki.iwate.jp\0n.se\0" +"lombardia.it\0asahi.mie.jp\0s3.dualstack.ap-south-1.amazonaws.com\0" +"detroit.museum\0" +"iitate.fukushima.jp\0" +"pasadena.museum\0s3.dualstack.us-east-1.amazonaws.com\0" +"leirvik.no\0" +"aoste.it\0\xe5\x85\xab\xe5\x8d\xa6\0" +"abb\0" +"misaki.okayama.jp\0abc\0" +"cuiaba.br\0" +"wif.gov.pl\0" +"mobi.na\0" +"orkanger.no\0" +"uwajima.ehime.jp\0higashimurayama.tokyo.jp\0rocher\0" +"mobi.ng\0" +"morena.br\0" +"tj.cn\0" +"ferrari\0" +"rzeszow.pl\0inf.ua\0" +"castres.museum\0" +"matsuzaki.shizuoka.jp\0kh.ua\0" +"sinaapp.com\0" +"blackfriday\0" +"cc.ca.us\0aco\0barsy.bg\0" +"askim.no\0" +"m\xc3\xa5s\xc3\xb8y.no\0or.th\0" +"marylhurst.museum\0edeka\0" +"ar.it\0" +"sling\0" +"halsa.no\0" +"ind.gt\0kawanabe.kagoshima.jp\0" +"minamidaito.okinawa.jp\0" +"munakata.fukuoka.jp\0" +"kitadaito.okinawa.jp\0" +"gos.pk\0" +"ads\0" +"pittsburgh.museum\0" +"or.ug\0" +"laspezia.it\0aeg\0" +"or.tz\0" +"\xd0\xbc\xd0\xbe\xd0\xbd\0barsy.de\0" +"naustdal.no\0fastlylb.net\0" +"myddns.rocks\0" +"windmill.museum\0or.us\0us-west-2.elasticbeanstalk.com\0ba.leg.br\0" +"yamagata.ibaraki.jp\0is-a-candidate.org\0" +"love\0" +"ind.in\0" +"ogawa.nagano.jp\0" +"yokkaichi.mie.jp\0skype\0" +"afl\0" +"svn-repos.de\0diskstation.org\0" +"stjohn.museum\0cc.nj.us\0" +"\xe5\x95\x86\xe5\x9f\x8e\0" +"isshiki.aichi.jp\0hatogaya.saitama.jp\0" +"airtraffic.aero\0akkeshi.hokkaido.jp\0" +"sakae.nagano.jp\0gniezno.pl\0" +"www.ro\0" +"nature.museum\0il.eu.org\0" +"mizumaki.fukuoka.jp\0kitahiroshima.hokkaido.jp\0courses\0barsy.eu\0" +"nakagyo.kyoto.jp\0" +"wa.us\0" +"miyota.nagano.jp\0akishima.tokyo.jp\0" +"\xe5\xa4\xa7\xe5\x88\x86.jp\0" +"is-a-painter.com\0" +"cc.sd.us\0" +"koga.ibaraki.jp\0" +"hareid.no\0omasvuotna.no\0" +"\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0" +"pa.gov.br\0cyber.museum\0" +"re.it\0rexroth\0home-webserver.de\0" +"lancome\0" +"stpetersburg.museum\0" +"delmenhorst.museum\0" +"\xe9\xa6\x99\xe5\xb7\x9d.jp\0vacations\0is-a-musician.com\0" +"yakage.okayama.jp\0fbxos.fr\0servehttp.com\0" +"\xe7\x8f\xa0\xe5\xae\x9d\0cloudfront.net\0" +"aig\0bentley\0pimienta.org\0" +"belem.br\0aure.no\0" +"hu.eu.org\0ie.eu.org\0" +"stjordal.no\0" +"rj.leg.br\0" +"eidsvoll.no\0" +"tinn.no\0" +"s3.us-east-2.amazonaws.com\0" +"kameyama.mie.jp\0" +"vuelos\0" +"warszawa.pl\0\xe8\xb4\xad\xe7\x89\xa9\0" +"freight.aero\0tainai.niigata.jp\0" +"pb.gov.br\0galsa.no\0" +"kawakami.nagano.jp\0nichinan.tottori.jp\0re.kr\0" +"recreation.aero\0yasu.shiga.jp\0aogashima.tokyo.jp\0" +"minobu.yamanashi.jp\0" +"lib.mt.us\0lib.nd.us\0sweetpepper.org\0" +"geology.museum\0" +"barsy.in\0" +"production.aero\0" +"us-4.evennode.com\0" +"rankoshi.hokkaido.jp\0" +"its.me\0lib.pa.us\0" +"haram.no\0" +"abr.it\0" +"ando.nara.jp\0" +"eisenbahn.museum\0" +"frei.no\0v\xc3\xa5gan.no\0is-a-geek.com\0" +"arai.shizuoka.jp\0tranoy.no\0condos\0\xe5\x85\xac\xe5\x8f\xb8\0" +"\xd0\xb1\xd0\xb3\0engineering\0" +"etc.br\0gobo.wakayama.jp\0n\xc3\xa5\xc3\xa5mesjevuemie.no\0dance\0" +"gouv.rw\0" +"karasjok.no\0" +"skjak.no\0consulado.st\0" +"gouv.sn\0is-a-patsfan.org\0" +"winners\0" +"j.bg\0\xe5\xae\xae\xe5\x9f\x8e.jp\0mito.ibaraki.jp\0" +"trentino-sudtirol.it\0wildlife.museum\0warmia.pl\0" +"nagoya\0" +"bel.tr\0zaporizhzhe.ua\0" +"fj.cn\0" +"handa.aichi.jp\0" +"england.museum\0" +"am.leg.br\0" +"ibestad.no\0" +"workshop.museum\0" +"shimoda.shizuoka.jp\0" +"adult.ht\0hannan.osaka.jp\0" +"hiraya.nagano.jp\0" +"osaka\0" +"sunndal.no\0eu.org\0" +"isla.pr\0legal\0" +"massa-carrara.it\0from-nh.com\0" +"amami.kagoshima.jp\0juedisches.museum\0" +"on.ca\0tosa.kochi.jp\0game-server.cc\0" +"frontier\0us-3.evennode.com\0" +"anz\0" +"l.se\0aol\0" +"odessa.ua\0blogdns.net\0" +"naples.it\0" +"holiday\0" +"vic.gov.au\0shingu.hyogo.jp\0" +"sannan.hyogo.jp\0" +"ostroda.pl\0" +"safety.aero\0\xe7\xbd\x91\xe7\xb5\xa1.hk\0walbrzych.pl\0pagefrontapp.com\0" +"vlaanderen.museum\0\xc3\xa5s.no\0ar.us\0" +"kosei.shiga.jp\0" +"lajolla.museum\0" +"capebreton.museum\0" +"fukushima.hokkaido.jp\0app\0" +"tohma.hokkaido.jp\0" +"sx.cn\0" +"ind.tn\0" +"tmall\0" +"tono.iwate.jp\0" +"from-ar.com\0" +"fl.us\0l-o-g-i-n.de\0taifun-dns.de\0" +"\xe0\xb4\xad\xe0\xb4\xbe\xe0\xb4\xb0\xe0\xb4\xa4\xe0\xb4\x82\0" +"hakuba.nagano.jp\0" +"akabira.hokkaido.jp\0\xd0\xb5\xd1\x8e\0" +"bar\0from-ia.com\0" +"bbc\0" +"gotemba.shizuoka.jp\0" +"ia.us\0" +"mk.ua\0dynv6.net\0" +"ap.it\0ashibetsu.hokkaido.jp\0m\xc3\xa1latvuopmi.no\0" +"kazimierz-dolny.pl\0" +"\xe3\x82\xb3\xe3\x83\xa0\0" +"prod\0" +"meeres.museum\0" +"prof\0" +"empresa.bo\0tuxfamily.org\0" +"riik.ee\0art\0bbt\0weir\0" +"sumida.tokyo.jp\0" +"calabria.it\0" +"bcg\0" +"search\0is-an-engineer.com\0us-2.evennode.com\0" +"miyazaki.jp\0is-into-cars.com\0" +"gr.eu.org\0ufcfan.org\0" +"tsuno.miyazaki.jp\0" +"bcn\0" +"is-a-designer.com\0" +"cc.in.us\0" +"eniwa.hokkaido.jp\0ap.leg.br\0" +"pulawy.pl\0" +"saito.miyazaki.jp\0county.museum\0" +"kawamata.fukushima.jp\0arida.wakayama.jp\0cc.ks.us\0" +"googlecode.com\0" +"r.cdn77.net\0" +"choshi.chiba.jp\0gouv.km\0os\xc3\xb8yro.no\0" +"magazine.aero\0beats\0" +"genkai.saga.jp\0watches\0" +"youth.museum\0cc.nh.us\0" +"tochigi.tochigi.jp\0" +"scor\0" +"luroy.no\0" +"minamitane.kagoshima.jp\0scot\0" +"mi.it\0" +"saga.jp\0" +"chikuhoku.nagano.jp\0eu-central-1.elasticbeanstalk.com\0aktyubinsk.su\0ybo.science\0" +"ecn.br\0bet\0" +"furudono.fukushima.jp\0blog\0" +"yonezawa.yamagata.jp\0" +"is-a-geek.org\0" +"gouv.ml\0firewall-gateway.net\0" +"bifuka.hokkaido.jp\0" +"rc.it\0yurihonjo.akita.jp\0" +"bod\xc3\xb8.no\0dyn.home-webserver.de\0" +"ueno.gunma.jp\0" +"mutsu.aomori.jp\0us-1.evennode.com\0synology-diskstation.de\0" +"tobishima.aichi.jp\0is-a-bookkeeper.com\0" +"memorial\0" +"tomari.hokkaido.jp\0" +"fukui.jp\0mill.museum\0" +"fortmissoula.museum\0toyota\0" +"axa\0" +"swidnica.pl\0aws\0" +"apple\0" +"leg.br\0" +"sells-for-u.com\0" +"virginia.museum\0f\xc3\xb8rde.no\0" +"pi.gov.br\0" +"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0" +"doomdns.com\0" +"profesional.bo\0wajima.ishikawa.jp\0" +"kwp.gov.pl\0" +"bid\0" +"\xe5\xa4\xa9\xe4\xb8\xbb\xe6\x95\x99\0" +"maif\0" +"aca.pro\0from-nv.com\0" +"ichinomiya.aichi.jp\0tamayu.shimane.jp\0tube\0" +"rr.leg.br\0ilovecollege.info\0" +"cuneo.it\0bio\0" +"wakkanai.hokkaido.jp\0missoula.museum\0" +"inabe.mie.jp\0" +"andriatranibarletta.it\0futurehosting.at\0" +"flowers\0" +"from-ut.com\0" +"school.za\0build\0" +"biz\0latino\0" +"narashino.chiba.jp\0omigawa.chiba.jp\0" +"\xe0\xb9\x80\xe0\xb8\x99\xe0\xb9\x87\xe0\xb8\x95.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"brandywinevalley.museum\0discovery.museum\0finnoy.no\0dyndns-at-home.com\0" +"guardian\0" +"\xe5\xaf\x8c\xe5\xb1\xb1.jp\0sakawa.kochi.jp\0freebox-os.fr\0" +"marburg.museum\0" +"*.magentosite.cloud\0" +"miyama.fukuoka.jp\0" +"h.bg\0" +"katano.osaka.jp\0" +"fineart.museum\0serveftp.org\0" +"ac\0" +"ad\0" +"ae\0rs.leg.br\0sc.leg.br\0" +"af\0" +"ag\0uruma.okinawa.jp\0" +"recife.br\0catering\0" +"ai\0uji.kyoto.jp\0" +"\xe5\x8f\xb0\xe6\xb9\xbe\0" +"al\0blue\0" +"am\0" +"\xd1\x80\xd1\x84\0" +"ao\0rsvp\0" +"aq\0ba\0is-lost.org\0myeffect.net\0" +"ar\0bb\0noboribetsu.hokkaido.jp\0romsa.no\0" +"as\0" +"at\0izumizaki.fukushima.jp\0" +"au\0qld.edu.au\0be\0shell.museum\0scrysec.com\0" +"bf\0" +"aw\0bg\0kihoku.ehime.jp\0" +"ax\0bh\0" +"bi\0" +"az\0bj\0" +"nishimera.miyazaki.jp\0space.museum\0oppegard.no\0" +"bm\0" +"bo\0dyr\xc3\xb8y.no\0" +"ca\0luxury\0v-info.info\0" +"br\0hita.oita.jp\0" +"bs\0cc\0hoylandet.no\0" +"bt\0cd\0" +"avellino.it\0" +"bv\0cf\0bolt.hu\0" +"bw\0cg\0porsgrunn.no\0" +"ch\0tamamura.gunma.jp\0boomla.net\0" +"by\0ci\0yamanashi.jp\0" +"bz\0bms\0" +"cl\0dep.no\0" +"cm\0" +"cn\0aosta.it\0bmw\0" +"journalist.aero\0co\0" +"shakotan.hokkaido.jp\0" +"cr\0" +"childrensgarden.museum\0philately.museum\0bnl\0" +"cu\0de\0" +"cv\0" +"fst.br\0cw\0hasuda.saitama.jp\0" +"cx\0miyako.iwate.jp\0" +"cy\0tec.mi.us\0" +"cz\0dj\0" +"dk\0gifts\0" +"de.us\0k12.ut.us\0" +"dm\0" +"yanagawa.fukuoka.jp\0vestvagoy.no\0" +"do\0national.museum\0" +"iamallama.com\0" +"ec\0ehime.jp\0" +"bom\0" +"ee\0" +"boo\0is-very-good.org\0" +"eg\0" +"mi.th\0" +"pvh.br\0dz\0" +"bot\0" +"artgallery.museum\0illustration.museum\0" +"uryu.hokkaido.jp\0box\0" +"toscana.it\0" +"hosting\0" +"wazuka.kyoto.jp\0host\0" +"pe.gov.br\0es\0s3-website.ap-northeast-2.amazonaws.com\0" +"et\0bergbau.museum\0parti.se\0" +"eu\0is-a-photographer.com\0" +"an.it\0" +"fi\0cab\0" +"osaki.miyagi.jp\0" +"research.aero\0fm\0lillesand.no\0" +"*.sendai.jp\0jprs\0" +"fo\0nordkapp.no\0" +"cs.it\0shinagawa.tokyo.jp\0" +"ga\0\xe6\x9d\xb1\xe4\xba\xac.jp\0" +"fr\0gb\0" +"bar.pro\0cal\0" +"gd\0mi.us\0cam\0" +"ge\0rn.leg.br\0" +"gf\0fujimi.nagano.jp\0" +"gg\0uslivinghistory.museum\0" +"gh\0cba\0" +"gi\0car\0" +"cc.il.us\0" +"cat\0kamioka.akita.jp\0" +"gl\0milan.it\0zachpomor.pl\0" +"gm\0" +"gn\0" +"art.museum\0" +"gp\0" +"gq\0" +"gr\0dyndns-home.com\0" +"gs\0takanezawa.tochigi.jp\0nanyo.yamagata.jp\0" +"gt\0krym.ua\0cc.la.us\0" +"cbn\0" +"hopto.org\0" +"gw\0myasustor.com\0" +"\xe5\xae\xb6\xe9\x9b\xbb\0" +"gy\0" +"cbs\0sydney\0" +"hk\0shiojiri.nagano.jp\0" +"hm\0creditcard\0" +"hn\0" +"brasilia.me\0" +"hr\0" +"ht\0id\0versailles.museum\0" +"hu\0ie\0drangedal.no\0ro.leg.br\0" +"seiyo.ehime.jp\0chiyoda.gunma.jp\0toshiba\0" +"bloomberg\0" +"il\0" +"im\0lib.as.us\0*.platform.sh\0" +"in\0" +"io\0automotive.museum\0" +"koeln\0" +"iq\0" +"ir\0ikeda.hokkaido.jp\0" +"is\0\xe6\xa0\x83\xe6\x9c\xa8.jp\0vard\xc3\xb8.no\0" +"it\0" +"je\0stj\xc3\xb8rdalshalsen.no\0" +"north.museum\0fitjar.no\0" +"kusatsu.gunma.jp\0no-ip.org\0" +"1kapp.com\0" +"ceb\0cn.com\0" +"ra.it\0" +"mypets.ws\0" +"arq.br\0jo\0malopolska.pl\0podzone.net\0" +"jp\0racing\0" +"abeno.osaka.jp\0does-it.net\0servep2p.com\0" +"sv.it\0skien.no\0ceo\0" +"kg\0" +"cfa\0" +"ki\0alibaba\0" +"sakura.tochigi.jp\0cfd\0redstone\0" +"shikama.miyagi.jp\0" +"km\0engerdal.no\0pa.gov.pl\0" +"kn\0" +"saitama.jp\0forgot.her.name\0" +"kp\0gs.svalbard.no\0buy\0" +"la\0" +"kr\0lb\0" +"miyama.mie.jp\0lc\0" +"servebbs.com\0" +"rennesoy.no\0selje.no\0" +"agrigento.it\0" +"ky\0li\0" +"kz\0\xd0\xbe\xd1\x80\xd0\xb3\0" +"lk\0" +"numata.hokkaido.jp\0" +"yasaka.nagano.jp\0hm.no\0lib.nh.us\0azure\0" +"ma\0" +"ina.ibaraki.jp\0lr\0kitchen\0" +"ls\0mc\0seat\0" +"aridagawa.wakayama.jp\0lt\0md\0" +"lu\0me\0bloxcms.com\0" +"lv\0ushistory.museum\0services\0" +"kokonoe.oita.jp\0mg\0" +"mh\0arts.museum\0lahppi.no\0marnardal.no\0" +"ly\0" +"miyako.fukuoka.jp\0mk\0memorial.museum\0" +"ml\0" +"kmpsp.gov.pl\0" +"mn\0" +"mo\0" +"val-daosta.it\0ookuwa.nagano.jp\0mp\0" +"mq\0na\0" +"mr\0" +"ms\0nc\0graphics\0" +"mt\0lenvik.no\0blanco\0" +"mu\0ne\0" +"mv\0nf\0" +"mw\0ng\0madrid\0" +"mx\0" +"my\0ni\0today\0" +"mz\0" +"nl\0bbs.tr\0" +"cq.cn\0ol.no\0bir.ru\0" +"f.bg\0nobeoka.miyazaki.jp\0" +"no\0sko.gov.pl\0" +"\xe9\x9d\x92\xe6\xa3\xae.jp\0nr\0" +"moscow.museum\0" +"software\0" +"funahashi.toyama.jp\0nu\0food\0" +"unusualperson.com\0" +"lib.vt.us\0" +"nz\0" +"*.statics.cloud\0" +"trani-andria-barletta.it\0om\0\xe0\xac\xad\xe0\xac\xbe\xe0\xac\xb0\xe0\xac\xa4\0" +"surgeonshall.museum\0" +"bzh\0xs4all.space\0" +"hk.cn\0pa\0s3-ap-southeast-2.amazonaws.com\0" +"pr.gov.br\0" +"urbino-pesaro.it\0pe\0" +"pf\0publishproxy.com\0" +"bialowieza.pl\0" +"ph\0s3-us-gov-west-1.amazonaws.com\0" +"\xe5\x85\xac\xe7\x9b\x8a\0" +"seek\0" +"toyo.kochi.jp\0tonsberg.no\0pk\0fh.se\0" +"sveio.no\0pl\0" +"pm\0" +"pn\0" +"press.aero\0" +"qa\0k12.ny.us\0my-wan.de\0" +"pr\0" +"gratangen.no\0ps\0" +"suzu.ishikawa.jp\0pt\0" +"matsumoto.kagoshima.jp\0pw\0" +"py\0h.se\0" +"valledaosta.it\0" +"chuo.osaka.jp\0" +"iwafune.tochigi.jp\0" +"capital\0" +"konyvelo.hu\0" +"nikko.tochigi.jp\0" +"kharkiv.ua\0" +"hiroshima.jp\0" +"re\0ford\0" +"cymru.museum\0bievat.no\0" +"docs\0" +"ginan.gifu.jp\0kozow.com\0iki.fi\0" +"uozu.toyama.jp\0saarland\0" +"ohira.tochigi.jp\0hitachi\0" +"myfritz.net\0" +"geometre-expert.fr\0" +"ro\0dc.us\0" +"tolga.no\0" +"dovre.no\0m\xc3\xa5lselv.no\0sa\0" +"sb\0is-saved.org\0" +"rs\0sc\0" +"sd\0" +"gifu.gifu.jp\0ru\0se\0" +"rw\0sg\0" +"sh\0" +"si\0" +"sj\0" +"sk\0" +"sl\0azure-mobile.net\0" +"sm\0*.compute.amazonaws.com.cn\0" +"holmestrand.no\0sn\0trust\0" +"so\0" +"alaska.museum\0ruhr\0" +"sr\0" +"tc\0" +"st\0td\0from-wy.com\0cust.testing.thingdust.io\0" +"su\0" +"sv\0tf\0" +"tg\0" +"wakasa.fukui.jp\0fosnes.no\0sx\0th\0godaddy\0" +"al.it\0numata.gunma.jp\0sy\0" +"tmp.br\0sz\0tj\0" +"tk\0" +"tl\0gallery\0" +"tm\0" +"hamatama.saga.jp\0tn\0" +"smola.no\0to\0" +"ua\0" +"tr\0anquan\0" +"com\0tt\0store\0" +"se.leg.br\0" +"hamada.shimane.jp\0tv\0mango\0" +"tw\0ug\0" +"exeter.museum\0" +"matta-varjjat.no\0" +"tz\0" +"nichinan.miyazaki.jp\0uk\0" +"statefarm\0" +"odate.akita.jp\0pramerica\0s3-website.ca-central-1.amazonaws.com\0" +"genoa.it\0asahi.ibaraki.jp\0va\0" +"sic.it\0" +"us\0vc\0" +"ve\0doha\0" +"mino.gifu.jp\0" +"mihama.chiba.jp\0vg\0" +"ski.museum\0uy\0vi\0" +"uz\0" +"bharti\0dad\0estate\0mysecuritycamera.net\0" +"vn\0" +"carrara-massa.it\0uber.space\0" +"nishio.aichi.jp\0cc.mt.us\0cc.nd.us\0" +"irish\0" +"assn.lk\0vu\0" +"wf\0" +"lu.it\0me.it\0" +"publ.pt\0" +"yamada.fukuoka.jp\0morioka.iwate.jp\0day\0is-a-geek.net\0" +"flight.aero\0" +"obama.nagasaki.jp\0malatvuopmi.no\0ws\0" +"saku.nagano.jp\0" +"museumvereniging.museum\0" +"\xe7\x9f\xb3\xe5\xb7\x9d.jp\0" +"kyoto.jp\0crs\0csc\0yandex\0dnsdojo.com\0" +"kunneppu.hokkaido.jp\0" +"nanporo.hokkaido.jp\0\xe0\xb8\x97\xe0\xb8\xab\xe0\xb8\xb2\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"rygge.no\0" +"takasaki.gunma.jp\0paderborn.museum\0dynalias.net\0" +"fr.eu.org\0" +"al.no\0" +"museet.museum\0gran.no\0" +"liguria.it\0" +"tysv\xc3\xa6r.no\0" +"*.platformsh.site\0wellbeingzone.co.uk\0" +"revista.bo\0" +"aomori.jp\0" +"lib.id.us\0" +"my-firewall.org\0" +"svalbard.no\0" +"kitaakita.akita.jp\0" +"vi.it\0sasebo.nagasaki.jp\0imari.saga.jp\0aero.tt\0" +"yt\0" +"fvg.it\0" +"co.ae\0" +"co.ag\0" +"dds\0" +"civilization.museum\0fet.no\0" +"kanuma.tochigi.jp\0" +"zm\0" +"ikata.ehime.jp\0takarazuka.hyogo.jp\0" +"alessandria.it\0bellevue.museum\0lupin\0" +"oga.akita.jp\0gloppen.no\0" +"co.ao\0tagami.niigata.jp\0" +"higashisumiyoshi.osaka.jp\0lib.nj.us\0" +"co.bb\0wuoz.gov.pl\0" +"oxford.museum\0aero.mv\0" +"co.at\0voagat.no\0" +"zw\0" +"ugim.gov.pl\0co.krd\0" +"soka.saitama.jp\0americana.museum\0" +"co.bi\0protonet.io\0" +"ferrara.it\0" +"vennesla.no\0dev\0yokohama\0" +"kizu.kyoto.jp\0" +"tonami.toyama.jp\0l\xc3\xa6rdal.no\0" +"co.ca\0resindevice.io\0" +"better-than.tv\0" +"yaese.okinawa.jp\0" +"co.bw\0" +"co.ci\0" +"fukagawa.hokkaido.jp\0" +"co.cl\0" +"co.cm\0" +"d.bg\0porsangu.no\0" +"co.cr\0kosai.shizuoka.jp\0minami-alps.yamanashi.jp\0" +"getmyip.com\0" +"bahn.museum\0from-or.com\0" +"bsb.br\0kamigori.hyogo.jp\0" +"caa.aero\0\xe5\xb2\xa1\xe5\xb1\xb1.jp\0" +"indianmarket.museum\0co.cz\0" +"film.museum\0co.dk\0" +"higashinaruse.akita.jp\0" +"konin.pl\0" +"takayama.gifu.jp\0" +"dhl\0plumbing\0" +"hi.cn\0st.no\0" +"hikari.yamaguchi.jp\0watch\0" +"sorreisa.no\0" +"se.net\0ru.net\0" +"!city.kobe.jp\0" +"kerryproperties\0" +"qld.gov.au\0ozu.kumamoto.jp\0" +"fujikawa.shizuoka.jp\0konskowola.pl\0" +"mydrobo.com\0" +"zao.miyagi.jp\0audio\0" +"*.sch.uk\0" +"ogasawara.tokyo.jp\0servegame.com\0" +"association.aero\0ar.com\0" +"\xe6\xb2\x96\xe7\xb8\x84.jp\0obanazawa.yamagata.jp\0" +"yamanouchi.nagano.jp\0" +"f.se\0" +"po.gov.pl\0" +"honjo.akita.jp\0military.museum\0\xe5\x8f\xb0\xe7\x81\xa3\0" +"gs.mr.no\0diy\0" +"nx.cn\0abashiri.hokkaido.jp\0zama.kanagawa.jp\0canada.museum\0" +"airguard.museum\0" +"siracusa.it\0tendo.yamagata.jp\0" +"ac.gov.br\0\xe5\xb3\xb6\xe6\xa0\xb9.jp\0" +"tecnologia.bo\0rokunohe.aomori.jp\0volkenkunde.museum\0wodzislaw.pl\0" +"campidanomedio.it\0al.us\0" +"co.gg\0" +"makeup\0" +"cranbrook.museum\0" +"co.gl\0ikaruga.nara.jp\0" +"okayama.jp\0spb.ru\0" +"s3-eu-west-3.amazonaws.com\0" +"gs.rl.no\0" +"\xe5\x9c\xa8\xe7\xba\xbf\0" +"tokigawa.saitama.jp\0sn\xc3\xa5sa.no\0" +"co.gy\0" +"ketrzyn.pl\0fbx-os.fr\0" +"ide.kyoto.jp\0" +"ascolipiceno.it\0wassamu.hokkaido.jp\0okutama.tokyo.jp\0farmstead.museum\0associates\0" +"sirdal.no\0spb.su\0" +"goiania.br\0" +"ham-radio-op.net\0" +"gateway.museum\0" +"co.id\0" +"co.hu\0sar.it\0" +"takagi.nagano.jp\0bofa\0" +"airbus\0" +"co.il\0is-a-lawyer.com\0" +"co.im\0\xe8\x8c\xa8\xe5\x9f\x8e.jp\0" +"co.in\0h\xc3\xa1pmir.no\0" +"mulhouse.museum\0me.tz\0" +"os.hedmark.no\0me.uk\0" +"trading.aero\0co.ir\0" +"kudamatsu.yamaguchi.jp\0gok.pk\0podlasie.pl\0" +"co.it\0vibo-valentia.it\0\xe5\xa8\xb1\xe4\xb9\x90\0" +"co.je\0g\xc3\xa1ivuotna.no\0" +"ce.leg.br\0" +"me.us\0" +"ulm.museum\0" +"koebenhavn.museum\0" +"gs.oslo.no\0studio\0" +"piacenza.it\0" +"co.jp\0mitoyo.kagawa.jp\0nabari.mie.jp\0" +"casino.hu\0\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0" +"brussel.museum\0" +"dnp\0" +"yonago.tottori.jp\0johana.toyama.jp\0sexy\0" +"kaho.fukuoka.jp\0" +"dog\0webhop.org\0" +"shintoku.hokkaido.jp\0" +"tomigusuku.okinawa.jp\0" +"setagaya.tokyo.jp\0" +"co.kr\0" +"agrar.hu\0co.lc\0" +"somna.no\0" +"cloudcontrolapp.com\0fedorainfracloud.org\0" +"dot\0" +"eiheiji.fukui.jp\0" +"habmer.no\0" +"mc.it\0" +"\xe4\xb8\xaa\xe4\xba\xba.hk\0" +"taishi.osaka.jp\0akrehamn.no\0vi.us\0" +"co.ma\0" +"no-ip.net\0" +"co.ls\0beauxarts.museum\0" +"nagano.nagano.jp\0" +"takahagi.ibaraki.jp\0co.me\0" +"kisosaki.mie.jp\0" +"koga.fukuoka.jp\0co.mg\0" +"horse\0" +"northwesternmutual\0" +"kita.osaka.jp\0" +"hermes\0" +"podzone.org\0" +"gangwon.kr\0co.na\0sandvik\0" +"kira.aichi.jp\0" +"kaisei.kanagawa.jp\0" +"from-mi.com\0is-a-therapist.com\0" +"co.mu\0" +"co.mw\0" +"pors\xc3\xa1\xc5\x8bgu.no\0auspost\0" +"co.ni\0eat\0qc.com\0" +"sr.it\0nahari.kochi.jp\0moma.museum\0co.mz\0" +"kotohira.kagawa.jp\0" +"monza.it\0co.nl\0" +"historichouses.museum\0blogsite.org\0" +"co.no\0" +"nagawa.nagano.jp\0" +"rebun.hokkaido.jp\0lyngdal.no\0" +"marketing\0tunk.org\0" +"horology.museum\0r\xc3\xb8yken.no\0" +"geisei.kochi.jp\0balat.no\0co.nz\0" +"koshimizu.hokkaido.jp\0" +"co.om\0" +"noheji.aomori.jp\0" +"ferrero\0" +"riobranco.br\0\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0" +"swiebodzin.pl\0" +"eco\0" +"hjelmeland.no\0" +"ltda\0" +"rieti.it\0secure\0stockholm\0" +"minami.kyoto.jp\0" +"synology-ds.de\0" +"co.pl\0" +"co.pn\0" +"laquila.it\0" +"freebox-os.com\0nerdpol.ovh\0" +"building.museum\0s\xc3\xb8gne.no\0" +"saga.saga.jp\0" +"ah.cn\0tos.it\0co.pw\0" +"bond\0" +"edu\0" +"dtv\0" +"from-ca.com\0" +"kita.kyoto.jp\0" +"salud.bo\0inami.wakayama.jp\0" +"scienceandindustry.museum\0" +"b.bg\0" +"bygland.no\0" +"miura.kanagawa.jp\0" +"\xe5\x85\xac\xe5\x8f\xb8.cn\0oirm.gov.pl\0" +"pyatigorsk.ru\0" +"okawa.fukuoka.jp\0railway.museum\0" +"b.br\0" +"steigen.no\0book\0" +"\xe5\x85\xac\xe5\x8f\xb8.hk\0mikasa.hokkaido.jp\0" +"co.rs\0" +"co.rw\0dvr\0" +"snillfjord.no\0" +"bearalvahki.no\0" +"med.br\0durban\0" +"iwakuni.yamaguchi.jp\0ens.tn\0" +"us.eu.org\0" +"tas.au\0jl.cn\0kumejima.okinawa.jp\0davvenj\xc3\xa1rga.no\0togliatti.su\0" +"wolomin.pl\0" +"sciencecenter.museum\0" +"co.st\0game\0" +"livorno.it\0ishikawa.jp\0" +"co.th\0" +"higashiizumo.shimane.jp\0co.sz\0co.tj\0" +"kawatana.nagasaki.jp\0" +"d.se\0co.tm\0" +"of.by\0\xe0\xb8\xa8\xe0\xb8\xb6\xe0\xb8\x81\xe0\xb8\xa9\xe0\xb8\xb2.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"co.ua\0" +"co.tt\0" +"sorocaba.br\0tsuwano.shimane.jp\0" +"karasuyama.tochigi.jp\0" +"co.ug\0" +"co.tz\0sanofi\0" +"oceanographic.museum\0co.uk\0organic\0" +"med.ec\0" +"country\0" +"med.ee\0showa.fukushima.jp\0" +"alfaromeo\0" +"trentino-altoadige.it\0ohira.miyagi.jp\0co.us\0" +"co.ve\0" +"co.vi\0" +"co.uz\0" +"mw.gov.pl\0" +"wiih.gov.pl\0withgoogle.com\0" +"k12.wy.us\0" +"kamikitayama.nara.jp\0" +"suginami.tokyo.jp\0" +"sakaki.nagano.jp\0diskstation.me\0" +"idf.il\0" +"monticello.museum\0" +"\xd1\x80\xd1\x83\xd1\x81\0" +"hamura.tokyo.jp\0hi.us\0" +"naka.hiroshima.jp\0langevag.no\0" +"is-a-teacher.com\0" +"mo-i-rana.no\0stargard.pl\0" +"xj.cn\0" +"jor.br\0kaizuka.osaka.jp\0homelinux.com\0" +"tydal.no\0diskstation.eu\0" +"veterinaire.km\0" +"cc.ga.us\0" +"adm.br\0" +"kusatsu.shiga.jp\0" +"inuyama.aichi.jp\0" +"fuefuki.yamanashi.jp\0" +"dnsalias.com\0nh-serv.co.uk\0" +"ms.gov.br\0freiburg.museum\0couchpotatofries.org\0" +"yame.fukuoka.jp\0" +"al.gov.br\0labor.museum\0" +"oh.us\0exposed\0" +"okazaki.aichi.jp\0" +"aomori.aomori.jp\0berlevag.no\0" +"mysecuritycamera.org\0" +"med.ht\0" +"\xe5\x98\x89\xe9\x87\x8c\0" +"co.za\0" +"otobe.hokkaido.jp\0" +"nesna.no\0movie\0" +"troitsk.su\0" +"knowsitall.info\0" +"lilly\0" +"co.zm\0" +"tajiri.osaka.jp\0" +"sande.m\xc3\xb8re-og-romsdal.no\0hsbc\0icbc\0" +"hol.no\0" +"mt.gov.br\0" +"from-me.org\0" +"bindal.no\0wien\0" +"namegata.ibaraki.jp\0" +"veterinaire.fr\0co.zw\0ca-central-1.elasticbeanstalk.com\0" +"eu-4.evennode.com\0" +"yamanashi.yamanashi.jp\0" +"yasugi.shimane.jp\0bremanger.no\0" +"blogspot.com\0" +"vads\xc3\xb8.no\0is-a-celticsfan.org\0" +"futtsu.chiba.jp\0free\0" +"namie.fukushima.jp\0" +"yamato.kumamoto.jp\0" +"ah.no\0" +"kunigami.okinawa.jp\0" +"froya.no\0nexus\0" +"mytis.ru\0" +"sp.it\0urbinopesaro.it\0cc.vt.us\0" +"clan.rip\0" +"matsudo.chiba.jp\0" +"isa-geek.org\0" +"toyonaka.osaka.jp\0" +"serveftp.com\0" +"ve.it\0" +"scientist.aero\0" +"kijo.miyazaki.jp\0kakinoki.shimane.jp\0dallas.museum\0" +"\xc3\xa5rdal.no\0" +"neustar\0homesecuritymac.com\0" +"h\xc3\xb8yanger.no\0" +"hiphop\0" +"med.ly\0fan\0" +"bhz.br\0" +"eurovision\0" +"go.leg.br\0barsy.support\0" +"onyourside\0" +"misaki.osaka.jp\0" +"hitachinaka.ibaraki.jp\0" +"oshu.iwate.jp\0" +"servegame.org\0" +"nishitosa.kochi.jp\0" +"utah.museum\0kddi\0" +"joyo.kyoto.jp\0" +"benevento.it\0hotmail\0eu-3.evennode.com\0" +"kazuno.akita.jp\0no-ip.co.uk\0" +"karuizawa.nagano.jp\0legnica.pl\0" +"analytics\0" +"westfalen.museum\0" +"ravenna.it\0shimokawa.hokkaido.jp\0" +"of.no\0finance\0" +"esq\0" +"yachimata.chiba.jp\0fujikawaguchiko.yamanashi.jp\0med.om\0" +"bamble.no\0" +"bihoro.hokkaido.jp\0med.pa\0" +"katsuyama.fukui.jp\0" +"poker\0" +"satsumasendai.kagoshima.jp\0wiki\0" +"mil.ac\0shangrila\0" +"busan.kr\0" +"mil.ae\0services.aero\0!city.nagoya.jp\0med.pl\0" +"res.aero\0he.cn\0" +"gbiz\0" +"akagi.shimane.jp\0" +"mil.al\0nt.au\0" +"aurland.no\0" +"agro.bo\0tromsa.no\0solutions\0es.eu.org\0" +"mil.ba\0hakone.kanagawa.jp\0nis.za\0" +"mil.ar\0kuju.oita.jp\0hidaka.wakayama.jp\0" +"civilaviation.aero\0" +"kamakura.kanagawa.jp\0recipes\0schwarz\0" +"k12.ok.us\0eus\0" +"nt.ca\0higashiyoshino.nara.jp\0" +"cim.br\0eun.eg\0meet\0" +"mil.az\0\xe6\x84\x9b\xe7\x9f\xa5.jp\0" +"edogawa.tokyo.jp\0is-with-theband.com\0" +"panerai\0" +"garden\0" +"mil.bo\0b.se\0" +"mazowsze.pl\0" +"tanagura.fukushima.jp\0k12.pr.us\0" +"mil.br\0kyotango.kyoto.jp\0" +"budapest\0" +"poa.br\0ota.tokyo.jp\0\xd1\x81\xd1\x80\xd0\xb1\0" +"lakas.hu\0agdenes.no\0" +"eu-2.evennode.com\0" +"sekigahara.gifu.jp\0" +"mil.by\0" +"egersund.no\0med.sa\0" +"wine\0" +"mil.cl\0" +"cng.br\0med.sd\0" +"mil.cn\0davvenjarga.no\0" +"mil.co\0pruszkow.pl\0" +"laz.it\0" +"dynalias.org\0" +"shaw\0" +"assisi.museum\0" +"j\xc3\xb8rpeland.no\0" +"kochi.kochi.jp\0" +"sn.cn\0" +"gliding.aero\0" +"theater\0" +"epost\0" +"mo\xc3\xa5reke.no\0siellak.no\0homesecuritypc.com\0" +"mil.do\0" +"minamiashigara.kanagawa.jp\0gs.tm.no\0" +"mil.ec\0" +"olbiatempio.it\0" +"mil.eg\0cookingchannel\0" +"shimosuwa.nagano.jp\0omiya.saitama.jp\0" +"otari.nagano.jp\0audnedaln.no\0hughes\0" +"s3-website-ap-northeast-1.amazonaws.com\0" +"def.br\0nayoro.hokkaido.jp\0schweiz.museum\0mykolaiv.ua\0bauhaus\0" +"on-the-web.tv\0" +"guernsey.museum\0gb.net\0" +"sex.hu\0" +"takazaki.miyazaki.jp\0makinohara.shizuoka.jp\0" +"yamanobe.yamagata.jp\0drobak.no\0" +"coffee\0" +"nagai.yamagata.jp\0" +"zoology.museum\0" +"fit\0" +"forum.hu\0nationwide\0" +"pomorze.pl\0ma.us\0" +"kiyosato.hokkaido.jp\0beeldengeluid.museum\0" +"iwaizumi.iwate.jp\0" +"rendalen.no\0cc.id.us\0" +"trd.br\0\xc3\xa5lesund.no\0" +"mil.ge\0iz.hr\0snaase.no\0" +"nv.us\0eu-1.evennode.com\0fantasyleague.cc\0" +"mil.gh\0novara.it\0" +"genova.it\0app.os.stg.fedoraproject.org\0" +"izumisano.osaka.jp\0" +"mihama.wakayama.jp\0" +"udi.br\0" +"architecture.museum\0" +"ono.fukui.jp\0kitagawa.kochi.jp\0" +"bajddar.no\0" +"mil.gt\0" +"ishinomaki.miyagi.jp\0toyota.yamaguchi.jp\0" +"cc.mn.us\0" +"dyndns-office.com\0" +"s3.dualstack.eu-west-1.amazonaws.com\0" +"sa.edu.au\0cog.mi.us\0" +"kunisaki.oita.jp\0textile.museum\0" +"mil.hn\0" +"lo.it\0" +"mil.id\0soo.kagoshima.jp\0" +"carboniaiglesias.it\0" +"rindal.no\0" +"musashimurayama.tokyo.jp\0" +"noto.ishikawa.jp\0cafe\0" +"niki.hokkaido.jp\0\xc3\xa5krehamn.no\0\xd8\xb3\xd9\x88\xd8\xaf\xd8\xa7\xd9\x86\0meme\0" +"hokuryu.hokkaido.jp\0skodje.no\0cologne\0" +"tamakawa.fukushima.jp\0beep.pl\0" +"fly\0""1password.eu\0" +"mil.in\0" +"lib.ct.us\0" +"mil.iq\0" +"drive\0" +"noda.iwate.jp\0" +"isa-geek.com\0" +"\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0" +"sigdal.no\0" +"hobol.no\0" +"allfinanz\0" +"shia\0" +"aquila.it\0" +"mil.jo\0" +"mine.nu\0" +"lierne.no\0" +"nakatsugawa.gifu.jp\0est-a-la-maison.com\0" +"mil.kg\0" +"vc.it\0" +"menu\0" +"horokanai.hokkaido.jp\0khakassia.su\0" +"ribeirao.br\0mil.km\0" +"mil.kr\0" +"foo\0" +"niikappu.hokkaido.jp\0money.museum\0" +"larvik.no\0" +"niigata.jp\0agric.za\0" +"mil.kz\0" +"ina.nagano.jp\0" +"fox\0" +"higashiagatsuma.gunma.jp\0" +"k12.ak.us\0consulting\0" +"*.sapporo.jp\0" +"azurewebsites.net\0" +"hokkaido.jp\0arboretum.museum\0from-md.com\0chirurgiens-dentistes-en-france.fr\0" +"ostrowwlkp.pl\0" +"niimi.okayama.jp\0" +"nagahama.shiga.jp\0mil.lv\0nativeamerican.museum\0sex.pl\0" +"torino.it\0mil.mg\0" +"firm.ht\0oarai.ibaraki.jp\0" +"9.bg\0berkeley.museum\0" +"gal\0fi.eu.org\0" +"\xe5\xb2\xa9\xe6\x89\x8b.jp\0shunan.yamaguchi.jp\0" +"firm.in\0ishikawa.fukushima.jp\0" +"gap\0" +"\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0homelinux.net\0" +"mil.mv\0nt.no\0from-ri.com\0" +"mil.ng\0" +"asakawa.fukushima.jp\0mil.my\0mil.ni\0""1password.ca\0*.compute-1.amazonaws.com\0" +"mil.mz\0" +"fukusaki.hyogo.jp\0" +"mil.no\0" +"frl\0" +"kouzushima.tokyo.jp\0" +"dental\0" +"go.dyndns.org\0" +"kawakita.ishikawa.jp\0us.na\0" +"baseball.museum\0" +"gs.fm.no\0expert\0webhop.net\0" +"ambulance.aero\0" +"gs.cn\0mil.nz\0cloudns.pro\0" +"enebakk.no\0\xe3\x83\x95\xe3\x82\xa1\xe3\x83\x83\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0" +"fauske.no\0\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"nagara.chiba.jp\0" +"call\0" +"firm.co\0cityeats\0" +"res.in\0mil.pe\0" +"v\xc3\xa1rgg\xc3\xa1t.no\0security\0" +"ontario.museum\0telekommunikation.museum\0" +"mil.ph\0" +"mitou.yamaguchi.jp\0" +"stalbans.museum\0\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x90\xe0\xb8\x9a\xe0\xb8\xb2\xe0\xb8\xa5.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"mil.pl\0" +"fujishiro.ibaraki.jp\0" +"firm.dk\0gitlab.io\0" +"mil.qa\0" +"samegawa.fukushima.jp\0gdn\0s3-website.eu-west-3.amazonaws.com\0" +"fujixerox\0" +"camp\0" +"gea\0linde\0" +"obu.aichi.jp\0ck.ua\0ftr\0" +"hichiso.gifu.jp\0t3l3p0rt.net\0" +"chigasaki.kanagawa.jp\0salat.no\0mil.py\0" +"kumano.hiroshima.jp\0" +"shop\0" +"k12.sc.us\0" +"hanyu.saitama.jp\0" +"fun\0dyndns-ip.com\0dvrdns.org\0byen.site\0" +"sauherad.no\0sorum.no\0show\0" +"nt.ro\0servequake.com\0" +"psi.br\0" +"kvinnherad.no\0" +"yokote.akita.jp\0" +"ecologia.bo\0newmexico.museum\0" +"mil.ru\0" +"digital\0network\0" +"mil.rw\0" +"mil.sh\0cc.as.us\0" +"sites.static.land\0" +"saitama.saitama.jp\0gu.us\0blogspot.vn\0" +"mc.eu.org\0" +"portlligat.museum\0" +"lig.it\0nakayama.yamagata.jp\0" +"mel\xc3\xb8y.no\0" +"mil.st\0" +"salangen.no\0whoswho\0" +"teaches-yoga.com\0" +"od.ua\0" +"mil.sy\0" +"mil.tj\0luxe\0" +"ci.it\0" +"mil.tm\0" +"ad.jp\0tottori.tottori.jp\0piaget\0" +"utsunomiya.tochigi.jp\0mil.to\0" +"kawanishi.hyogo.jp\0bruxelles.museum\0sorfold.no\0" +"mil.tr\0" +"rotorcraft.aero\0lubin.pl\0" +"iwama.ibaraki.jp\0porsanger.no\0" +"en.it\0living.museum\0" +"mil.tw\0" +"cherkasy.ua\0internet-dns.de\0" +"hamaroy.no\0care\0static-access.net\0" +"yoro.gifu.jp\0mil.tz\0" +"shimonoseki.yamaguchi.jp\0depot.museum\0" +"shibata.miyagi.jp\0" +"coloradoplateau.museum\0fyi\0lt.eu.org\0" +"shisui.chiba.jp\0" +"sucks\0" +"mil.vc\0" +"mil.ve\0casa\0" +"cars\0" +"giessen.museum\0" +"port.fr\0store.nf\0mil.uy\0case\0" +"hioki.kagoshima.jp\0suzuka.mie.jp\0" +"cash\0" +"trustee.museum\0" +"funagata.yamagata.jp\0" +"lea\xc5\x8bgaviika.no\0" +"qsl.br\0" +"finearts.museum\0muenster.museum\0blogspot.re\0js.org\0" +"hemnes.no\0cc.pa.us\0" +"tanohata.iwate.jp\0" +"nesseby.no\0" +"agrinet.tn\0" +"hotel.tz\0" +"aramco\0" +"agro.pl\0blogspot.ro\0" +"in-addr.arpa\0wakasa.tottori.jp\0\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0" +"moss.no\0" +"ninomiya.kanagawa.jp\0is-a-liberal.com\0blogspot.rs\0" +"folkebibl.no\0\xd8\xa7\xd8\xa8\xd9\x88\xd8\xb8\xd8\xa8\xd9\x8a\0" +"blogspot.ru\0blogspot.se\0" +"lind\xc3\xa5s.no\0" +"blogspot.sg\0" +"blogspot.si\0" +"shingu.wakayama.jp\0" +"gle\0\xe5\xb9\xbf\xe4\xb8\x9c\0blogspot.sk\0" +"movimiento.bo\0blogspot.sn\0" +"aseral.no\0" +"niihama.ehime.jp\0" +"theatre\0" +"odda.no\0" +"halloffame.museum\0blogspot.td\0" +"stavanger.no\0" +"karatsu.saga.jp\0" +"lib.il.us\0" +"uchinada.ishikawa.jp\0myftp.org\0" +"va.it\0" +"yamato.fukushima.jp\0science.museum\0express\0" +"hidaka.kochi.jp\0mil.za\0" +"tomisato.chiba.jp\0olayangroup\0" +"arao.kumamoto.jp\0gmo\0" +"zhytomyr.ua\0" +"lacaixa\0blogspot.tw\0blogspot.ug\0" +"firm.ve\0" +"hirado.nagasaki.jp\0" +"gmx\0" +"notaires.km\0steiermark.museum\0mil.zm\0" +"blogspot.mr\0" +"union.aero\0ab.ca\0ryugasaki.ibaraki.jp\0warman\0" +"kommunalforbund.se\0" +"blogspot.mx\0" +"mil.zw\0s3-ap-northeast-1.amazonaws.com\0blogspot.my\0" +"nakatombetsu.hokkaido.jp\0radoy.no\0" +"kv\xc3\xa6""fjord.no\0" +"izumi.kagoshima.jp\0tome.miyagi.jp\0theworkpc.com\0blogspot.nl\0" +"blogspot.no\0" +"7.bg\0toyohashi.aichi.jp\0" +"\xc3\xa1laheadju.no\0" +"goo\0" +"gop\0homelink.one\0" +"jpmorgan\0" +"australia.museum\0got\0" +"gov\0cieszyn.pl\0" +"riodejaneiro.museum\0" +"zaporizhzhia.ua\0" +"ena.gifu.jp\0hammerfest.no\0" +"wada.nagano.jp\0" +"blogspot.pe\0" +"tokushima.tokushima.jp\0" +"transporte.bo\0austevoll.no\0int.eu.org\0" +"hidaka.saitama.jp\0" +"nissan\0" +"house\0swatch\0" +"udono.mie.jp\0" +"ha.cn\0" +"hirokawa.fukuoka.jp\0blogspot.qa\0" +"ieee\0" +"iyo.ehime.jp\0alaheadju.no\0blogspot.pt\0" +"nissay\0" +"kishiwada.osaka.jp\0laakesvuemie.no\0\xd1\x83\xd0\xba\xd1\x80\0" +"va.no\0silk\0vista\0" +"store.ve\0dyndns-blog.com\0lima-city.de\0" +"hotel.lk\0" +"k12.mo.us\0" +"kamoenai.hokkaido.jp\0realtor\0" +"teshikaga.hokkaido.jp\0" +"blogspot.is\0" +"cloudns.org\0blogspot.it\0" +"hbo\0" +"firm.ro\0" +"daisen.akita.jp\0" +"kuromatsunai.hokkaido.jp\0" +"zlg.br\0\xeb\x8b\xb7\xec\xbb\xb4\0" +"*.kawasaki.jp\0lewismiller.museum\0sina\0" +"mugi.tokushima.jp\0blogspot.jp\0" +"\xe5\x95\x86\xe5\xba\x97\0" +"kamisu.ibaraki.jp\0ulsan.kr\0" +"ogawara.miyagi.jp\0" +"enna.it\0" +"\xe3\x82\xaf\xe3\x83\xa9\xe3\x82\xa6\xe3\x83\x89\0lima-city.at\0" +"aquarium.museum\0trolley.museum\0" +"creation.museum\0public.museum\0ushuaia.museum\0swiftcover\0" +"gotdns.ch\0" +"gamvik.no\0" +"surgery\0isa-geek.net\0" +"inagawa.hyogo.jp\0blogspot.kr\0" +"nishihara.okinawa.jp\0" +"honbetsu.hokkaido.jp\0" +"omega\0" +"lukow.pl\0blogspot.li\0" +"ninohe.iwate.jp\0hachijo.tokyo.jp\0naturalhistory.museum\0" +"lima-city.ch\0" +"group.aero\0onojo.fukuoka.jp\0" +"ipifony.net\0" +"blogspot.lt\0blogspot.md\0" +"blogspot.lu\0" +"ozu.ehime.jp\0" +"togakushi.nagano.jp\0" +"aerobatic.aero\0enonic.io\0blogspot.mk\0" +"suzaka.nagano.jp\0health.museum\0" +"firm.nf\0lyngen.no\0" +"from-tn.com\0" +"citadel\0" +"her\xc3\xb8y.nordland.no\0" +"circle\0" +"voss.no\0store.ro\0\xe6\x9c\xba\xe6\x9e\x84\0" +"hotel.hu\0hirono.fukushima.jp\0" +"channelsdvr.net\0" +"blogspot.fi\0nsupdate.info\0" +"kami.miyagi.jp\0" +"grajewo.pl\0" +"valley.museum\0mk.eu.org\0" +"blogspot.fr\0" +"yamanakako.yamanashi.jp\0" +"gsm.pl\0" +"database.museum\0embaixada.st\0store.st\0aarp\0" +"edu.ac\0" +"mashiko.tochigi.jp\0" +"is-very-nice.org\0" +"edu.af\0" +"wegrow.pl\0" +"godo.gifu.jp\0" +"agematsu.nagano.jp\0" +"blogspot.gr\0" +"edu.al\0shoes\0s3-ap-southeast-1.amazonaws.com\0" +"nextdirect\0" +"edu.ba\0vefsn.no\0" +"edu.ar\0edu.bb\0chofu.tokyo.jp\0" +"hof.no\0" +"\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0cbre\0blogspot.hk\0" +"edu.au\0" +"skaun.no\0va.us\0" +"hirara.okinawa.jp\0" +"edu.bh\0" +"edu.bi\0kaneyama.fukushima.jp\0" +"edu.az\0" +"samnanger.no\0blogspot.hr\0" +"site\0" +"edu.bm\0" +"blogspot.hu\0blogspot.ie\0" +"groundhandling.aero\0edu.bo\0" +"wv.us\0" +"farmequipment.museum\0" +"edu.br\0" +"edu.bs\0youtube\0" +"edu.bt\0" +"hiv\0" +"caserta.it\0pu.it\0futbol\0" +"blogspot.in\0" +"edu.ci\0my-router.de\0" +"edu.bz\0fujisato.akita.jp\0granvin.no\0blogspot.ba\0mypsx.net\0" +"edu.cn\0blogspot.be\0" +"edu.co\0" +"blogspot.bg\0" +"tsukuba.ibaraki.jp\0" +"mishima.shizuoka.jp\0blogspot.bj\0" +"sardegna.it\0" +"amusement.aero\0edu.cu\0kozagawa.wakayama.jp\0" +"\xe6\x94\xbf\xe5\xba\x9c.hk\0izumozaki.niigata.jp\0" +"edu.cw\0" +"lu.eu.org\0me.eu.org\0" +"nishiaizu.fukushima.jp\0namerikawa.toyama.jp\0" +"blogspot.ca\0" +"erimo.hokkaido.jp\0dscloud.mobi\0" +"edu.dm\0" +"togura.nagano.jp\0" +"edu.do\0trieste.it\0abbott\0blogspot.cf\0" +"marugame.kagawa.jp\0" +"blogspot.ch\0" +"edu.ec\0como.it\0hkt\0" +"ditchyourip.com\0" +"edu.ee\0wake.okayama.jp\0blogspot.cl\0" +"edu.eg\0randaberg.no\0" +"wios.gov.pl\0" +"ha.no\0lib.md.us\0" +"edu.dz\0ogano.saitama.jp\0" +"gorizia.it\0" +"blogspot.de\0" +"blogspot.cv\0" +"powiat.pl\0" +"edu.es\0heroy.nordland.no\0blogspot.cz\0" +"edu.et\0blogspot.dk\0" +"biratori.hokkaido.jp\0" +"moskenes.no\0" +"tsukigata.hokkaido.jp\0" +"lv.eu.org\0" +"val-d-aosta.it\0jewishart.museum\0" +"fujioka.gunma.jp\0schoenbrunn.museum\0" +"5.bg\0" +"sassari.it\0cloud.fedoraproject.org\0" +"us.org\0" +"trentinosud-tirol.it\0" +"her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0" +"yonaguni.okinawa.jp\0homelinux.org\0" +"aoki.nagano.jp\0" +"edu.ge\0" +"it.ao\0fedex\0" +"kariwa.niigata.jp\0sauda.no\0" +"edu.gh\0" +"edu.gi\0" +"nomi.ishikawa.jp\0" +"edu.gl\0" +"\xe5\xa4\xa7\xe6\x8b\xbf\0" +"edu.gn\0higashiyamato.tokyo.jp\0" +"mihara.kochi.jp\0washingtondc.museum\0" +"edu.gp\0" +"edu.gr\0" +"kumatori.osaka.jp\0\xe9\x80\x9a\xe8\xb2\xa9\0" +"edu.gt\0" +"imb.br\0" +"go.ci\0" +"edu.gy\0" +"my-vigor.de\0" +"airport.aero\0edu.hk\0rnu.tn\0" +"troandin.no\0" +"edu.hn\0murakami.niigata.jp\0" +"*.nom.br\0go.cr\0" +"equipment.aero\0durham.museum\0" +"coop.ht\0hot\0" +"edu.ht\0" +"how\0" +"endofinternet.net\0" +"b\xc3\xb8.nordland.no\0here-for-more.info\0" +"stcgroup\0" +"k12.ne.us\0" +"shimotsuke.tochigi.jp\0pinb.gov.pl\0" +"scrapper-site.net\0ddnss.de\0" +"edu.in\0sciencehistory.museum\0" +"motosu.gifu.jp\0" +"s3-us-west-1.amazonaws.com\0" +"edu.iq\0" +"edu.is\0" +"edu.it\0" +"aguni.okinawa.jp\0philips\0" +"qc.ca\0" +"sherbrooke.museum\0able\0" +"bnpparibas\0" +"shimizu.shizuoka.jp\0" +"ivanovo.su\0" +"palmas.br\0blogspot.ae\0" +"edu.jo\0histoire.museum\0" +"coastaldefence.museum\0" +"coop.br\0rnrt.tn\0" +"inawashiro.fukushima.jp\0kids.museum\0" +"\xe5\xb2\x90\xe9\x98\x9c.jp\0" +"hopto.me\0" +"\xe6\x84\x9b\xe5\xaa\x9b.jp\0r\xc3\xb8st.no\0blogspot.al\0" +"mallorca.museum\0farsund.no\0blogspot.am\0" +"edu.kg\0and.museum\0" +"basel.museum\0" +"edu.ki\0k12.tn.us\0" +"tsubata.ishikawa.jp\0" +"gojome.akita.jp\0ris\xc3\xb8r.no\0ibm\0" +"sh.cn\0edu.km\0" +"edu.kn\0" +"aga.niigata.jp\0" +"edu.kp\0study\0" +"edu.la\0" +"edu.lb\0liaison\0wedding\0" +"edu.lc\0aviation.museum\0k12.wa.us\0" +"ice\0" +"\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0rhcloud.com\0" +"pup.gov.pl\0" +"edu.ky\0" +"edu.kz\0" +"anpachi.gifu.jp\0kitakami.iwate.jp\0edu.lk\0grandrapids.museum\0b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0edu.krd\0" +"takata.fukuoka.jp\0" +"sandiego.museum\0\xd9\x83\xd8\xa7\xd8\xab\xd9\x88\xd9\x84\xd9\x8a\xd9\x83\0" +"edu.lr\0bargains\0" +"cc.ct.us\0" +"city.hu\0icu\0de.cool\0" +"edu.me\0" +"taketa.oita.jp\0edu.lv\0" +"edu.mg\0" +"chirurgiens-dentistes.fr\0edu.ly\0" +"edu.mk\0" +"edu.ml\0" +"ce.it\0" +"ukiha.fukuoka.jp\0edu.mn\0" +"osakikamijima.hiroshima.jp\0edu.mo\0" +"maintenance.aero\0go.id\0" +"edu.ms\0" +"edu.mt\0" +"ltd.co.im\0edu.mv\0" +"edu.mw\0edu.ng\0" +"edu.mx\0kr.eu.org\0" +"edu.my\0edu.ni\0" +"edu.mz\0l\xc3\xb8ten.no\0kyoto\0" +"minamiyamashiro.kyoto.jp\0" +"padova.it\0" +"andebu.no\0" +"i234.me\0" +"store.bb\0" +"go.it\0" +"bolivia.bo\0edu.nr\0" +"*.0emm.com\0" +"flynnhub.com\0" +"oji.nara.jp\0" +"ifm\0" +"go.jp\0edu.om\0" +"creditunion\0" +"edu.pa\0" +"is-very-sweet.org\0" +"zippo\0" +"li.it\0yoichi.hokkaido.jp\0warabi.saitama.jp\0edu.pe\0" +"nagasaki.jp\0settlement.museum\0edu.pf\0" +"edu.ph\0" +"blogdns.com\0" +"flynnhosting.net\0" +"edu.pk\0" +"edu.pl\0" +"edu.pn\0compare\0" +"go.kr\0" +"n\xc3\xa6r\xc3\xb8y.no\0edu.qa\0" +"edu.pr\0" +"chikugo.fukuoka.jp\0and\xc3\xb8y.no\0zarow.pl\0edu.ps\0" +"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0edu.pt\0" +"nishiazai.shiga.jp\0" +"webcam\0" +"edu.py\0store.dk\0" +"bardu.no\0" +"\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\0" +"ichikawa.hyogo.jp\0marker.no\0fund\0*.compute.amazonaws.com\0" +"ntr.br\0" +"la-spezia.it\0" +"landrover\0" +"smart\0" +"bu.no\0" +"from-mn.com\0" +"microsoft\0" +"yukuhashi.fukuoka.jp\0" +"notaires.fr\0gent\0" +"toyooka.hyogo.jp\0traeumtgerade.de\0" +"birthplace.museum\0es.leg.br\0" +"judaica.museum\0edu.sa\0" +"indiana.museum\0edu.sb\0lamborghini\0" +"tanabe.wakayama.jp\0edu.rs\0edu.sc\0casacam.net\0" +"barcelona.museum\0edu.sd\0amfam\0" +"edu.ru\0" +"oirase.aomori.jp\0email\0\xe6\x97\xb6\xe5\xb0\x9a\0" +"loten.no\0sn\xc3\xa5""ase.no\0edu.rw\0edu.sg\0canon\0" +"wajiki.tokushima.jp\0" +"global\0" +"nonoichi.ishikawa.jp\0edu.sl\0ath.cx\0" +"eng.br\0" +"fortal.br\0ambulance.museum\0edu.sn\0forgot.his.name\0" +"psse.gov.pl\0" +"takehara.hiroshima.jp\0kamitonda.wakayama.jp\0edu.st\0" +"edu.sv\0app.os.fedoraproject.org\0" +"arendal.no\0" +"edu.sy\0" +"edu.tj\0" +"toyoake.aichi.jp\0" +"edu.tm\0from-va.com\0" +"jampa.br\0edu.to\0" +"beppu.oita.jp\0" +"3.bg\0edu.ua\0" +"tonaki.okinawa.jp\0edu.tr\0" +"edu.tt\0" +"shibukawa.gunma.jp\0asahi.yamagata.jp\0edu.tw\0duck\0" +"wanouchi.gifu.jp\0" +"kunitomi.miyazaki.jp\0" +"company\0" +"edu.vc\0" +"showa.yamanashi.jp\0go.pw\0" +"edu.ve\0syno-ds.de\0" +"beskidy.pl\0careers\0" +"raholt.no\0edu.uy\0" +"mail.pl\0przeworsk.pl\0k12.ia.us\0" +"s\xc3\xb8r-fron.no\0mazury.pl\0" +"bjerkreim.no\0politie\0" +"rns.tn\0edu.vn\0*.alces.network\0" +"jorpeland.no\0" +"sm\xc3\xb8la.no\0" +"columbus.museum\0" +"edu.vu\0george\0" +"gs.hl.no\0ing\0" +"fujisawa.iwate.jp\0" +"ink\0" +"\xe5\xbe\xb3\xe5\xb3\xb6.jp\0" +"elblag.pl\0k12.ms.us\0k12.nc.us\0" +"nl.ca\0hadsel.no\0" +"kasamatsu.gifu.jp\0" +"asakuchi.okayama.jp\0" +"int\0edu.ws\0" +"fuchu.tokyo.jp\0skin\0" +"isesaki.gunma.jp\0higashiyodogawa.osaka.jp\0lamer\0" +"vestre-slidre.no\0" +"aisai.aichi.jp\0shiranuka.hokkaido.jp\0nose.osaka.jp\0space-to-rent.com\0" +"bas.it\0hamburg\0" +"kagamino.okayama.jp\0" +"iizuna.nagano.jp\0leangaviika.no\0" +"doshi.yamanashi.jp\0" +"leirfjord.no\0" +"go.th\0s3-website-us-west-1.amazonaws.com\0no-ip.info\0" +"go.tj\0" +"kumamoto.jp\0indian.museum\0" +"\xe4\xbd\x9b\xe5\xb1\xb1\0" +"gamo.shiga.jp\0" +"psc.br\0wales.museum\0" +"edu.za\0" +"hakui.ishikawa.jp\0" +"go.ug\0" +"dnshome.de\0" +"go.tz\0ericsson\0" +"cri.br\0" +"nankoku.kochi.jp\0" +"taki.mie.jp\0kitagawa.miyazaki.jp\0trogstad.no\0" +"edu.zm\0" +"tgory.pl\0" +"asaka.saitama.jp\0" +"wiw.gov.pl\0\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0is-a-hunter.com\0" +"nikaho.akita.jp\0" +"higashine.yamagata.jp\0" +"hayashima.okayama.jp\0" +"copenhagen.museum\0" +"bs.it\0" +"messina.it\0jcb\0" +"arkhangelsk.su\0" +"ky.us\0" +"chase\0" +"ciencia.bo\0" +"myftp.biz\0" +"giske.no\0" +"costume.museum\0cable-modem.org\0" +"suwa.nagano.jp\0" +"jcp\0" +"epson\0" +"b\xc3\xa1hccavuotna.no\0coop.tt\0ist\0mangyshlak.su\0" +"repair\0" +"viterbo.it\0" +"family.museum\0" +"hamatonbetsu.hokkaido.jp\0cruises\0synology.me\0" +"juegos\0" +"perso.ht\0birdart.museum\0" +"trafficplex.cloud\0" +"lipsy\0" +"coop.mv\0itv\0" +"kodaira.tokyo.jp\0coop.mw\0taipei\0" +"cc.ok.us\0ae.org\0for-the.biz\0" +"oi.kanagawa.jp\0cisco\0" +"sande.more-og-romsdal.no\0\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0" +"ishikari.hokkaido.jp\0" +"padua.it\0" +"cody.museum\0" +"lg.jp\0" +"sango.nara.jp\0adac\0" +"atsugi.kanagawa.jp\0" +"fujinomiya.shizuoka.jp\0" +"n\xc3\xb8tter\xc3\xb8y.no\0" +"nsw.edu.au\0" +"verbania.it\0cc.na\0" +"noshiro.akita.jp\0" +"matsuyama.ehime.jp\0iwc\0" +"oto.fukuoka.jp\0" +"yanaizu.fukushima.jp\0" +"kashiwazaki.niigata.jp\0" +"kakuda.miyagi.jp\0klepp.no\0" +"fukuroi.shizuoka.jp\0" +"oum.gov.pl\0definima.io\0" +"tottori.jp\0" +"arna.no\0duns\0" +"quicksytes.com\0" +"computer\0" +"temp-dns.com\0" +"ballangen.no\0" +"dyndns-web.com\0is-an-actor.com\0" +"coop.py\0" +"progressive\0" +"shintomi.miyazaki.jp\0" +"ogi.saga.jp\0namdalseid.no\0" +"chichibu.saitama.jp\0" +"bydgoszcz.pl\0" +"mansion.museum\0" +"ichinomiya.chiba.jp\0wanggou\0" +"1337.pictures\0" +"otsu.shiga.jp\0" +"filatelia.museum\0" +"jio\0" +"kunstsammlung.museum\0spjelkavik.no\0" +"shiriuchi.hokkaido.jp\0" +"cargo.aero\0dvag\0" +"1.bg\0jeju.kr\0" +"higashiizu.shizuoka.jp\0playstation\0" +"\xe4\xb8\x89\xe9\x87\x8d.jp\0" +"telecity\0" +"beta.bounty-full.com\0" +"coop.km\0" +"nl.no\0" +"kasuga.hyogo.jp\0" +"is-a-nascarfan.com\0" +"rauma.no\0homeoffice.gov.uk\0no-ip.biz\0" +"brand.se\0" +"lib.ut.us\0" +"oppdal.no\0" +"joinville.br\0ilawa.pl\0" +"starachowice.pl\0" +"iwata.shizuoka.jp\0chtr.k12.ma.us\0" +"sci.eg\0bungotakada.oita.jp\0sf.no\0clothing\0" +"jlc\0" +"ginowan.okinawa.jp\0" +"living\0s3.dualstack.eu-west-2.amazonaws.com\0" +"brussels.museum\0nord-fron.no\0komatsu\0" +"preservation.museum\0" +"kepno.pl\0" +"macerata.it\0nishiawakura.okayama.jp\0design\0" +"jll\0" +"restaurant\0" +"woodside\0\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0" +"kashiwara.osaka.jp\0" +"badaddja.no\0" +"clinique\0" +"tsuiki.fukuoka.jp\0" +"hangout\0cc.ua\0" +"arezzo.it\0" +"sampa.br\0jmp\0" +"cri.nz\0" +"fin.ec\0gausdal.no\0" +"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0" +"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0" +"jnj\0mini\0" +"delaware.museum\0" +"culturalcenter.museum\0" +"higashishirakawa.gifu.jp\0" +"filegear.me\0" +"sd.cn\0vao.it\0privatizehealthinsurance.net\0myfirewall.org\0" +"mint\0devices.resinstaging.io\0" +"schlesisches.museum\0" +"chuo.chiba.jp\0nishiokoppe.hokkaido.jp\0" +"adygeya.su\0" +"asker.no\0" +"olawa.pl\0office-on-the.net\0" +"fyresdal.no\0lapy.pl\0ggee\0" +"cc.ak.us\0" +"tana.no\0" +"paris.museum\0" +"hu.com\0" +"aurskog-h\xc3\xb8land.no\0jot\0" +"from-wv.com\0" +"lg.ua\0" +"lincoln.museum\0joy\0" +"minokamo.gifu.jp\0" +"travelchannel\0" +"toyota.aichi.jp\0" +"shouji\0" +"fujikawa.yamanashi.jp\0" +"ca.it\0" +"shichikashuku.miyagi.jp\0" +"tomakomai.hokkaido.jp\0" +"baidu\0" +"turystyka.pl\0" +"m\xc3\xa1tta-v\xc3\xa1rjjat.no\0" +"nieruchomosci.pl\0" +"diamonds\0" +"yoga\0" +"mifune.kumamoto.jp\0pioneer\0" +"kawakami.nara.jp\0\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0" +"tunes\0" +"rv.ua\0" +"cloudns.info\0" +"law.pro\0" +"from-hi.com\0" +"adygeya.ru\0webhop.me\0" +"journal.aero\0" +"gliwice.pl\0" +"gru.br\0" +"bonn.museum\0cc.md.us\0" +"motorcycles\0" +"minamata.kumamoto.jp\0" +"vindafjord.no\0" +"le.it\0cc.ny.us\0" +"not.br\0" +"aparecida.br\0kitaaiki.nagano.jp\0" +"buzen.fukuoka.jp\0" +"yamashina.kyoto.jp\0endofinternet.org\0" +"s3-website.eu-west-2.amazonaws.com\0" +"sp.gov.br\0bananarepublic\0" +"po.it\0nagasaki.nagasaki.jp\0asahi.toyama.jp\0" +"ca.na\0" +"lucerne.museum\0cloud.metacentrum.cz\0" +"itami.hyogo.jp\0taishi.hyogo.jp\0yoshimi.saitama.jp\0" +"artsandcrafts.museum\0bomlo.no\0" +"yoshida.shizuoka.jp\0chungbuk.kr\0\xeb\x8b\xb7\xeb\x84\xb7\0" +"traniandriabarletta.it\0pfizer\0nov.ru\0" +"omotego.fukushima.jp\0" +"cloudns.club\0" +"miyoshi.hiroshima.jp\0" +"evje-og-hornnes.no\0" +"kfh\0" +"ullensvang.no\0" +"sandoy.no\0" +"iida.nagano.jp\0kumagaya.saitama.jp\0" +"miasta.pl\0" +"\xe9\x9b\xbb\xe8\xa8\x8a\xe7\x9b\x88\xe7\xa7\x91\0" +"dyndns.org\0" +"nov.su\0" +"\xe7\x82\xb9\xe7\x9c\x8b\0" +"community.museum\0" +"ed.ao\0perso.sn\0from-az.net\0" +"air-surveillance.aero\0" +"fidelity\0\xe4\xb8\xad\xe4\xbf\xa1\0" +"localhistory.museum\0" +"catering.aero\0" +"yoshino.nara.jp\0" +"so.gov.pl\0" +"valleeaoste.it\0" +"perso.tn\0" +"hara.nagano.jp\0" +"mysecuritycamera.com\0" +"toho.fukuoka.jp\0kia\0is-into-anime.com\0" +"hekinan.aichi.jp\0" +"honeywell\0" +"maceio.br\0" +"ed.ci\0us-east-2.elasticbeanstalk.com\0" +"futaba.fukushima.jp\0" +"siljan.no\0" +"y.bg\0" +"kim\0" +"cern\0" +"ed.cr\0otsuki.kochi.jp\0" +"trust.museum\0" +"trentino-a-adige.it\0" +"shiki.saitama.jp\0" +"amsterdam\0cust.disrec.thingdust.io\0" +"lotte\0" +"gmina.pl\0cloudapp.net\0" +"emilia-romagna.it\0urakawa.hokkaido.jp\0s3-eu-central-1.amazonaws.com\0" +"mitake.gifu.jp\0" +"reliance\0" +"songdalen.no\0" +"moriyama.shiga.jp\0" +"citic\0" +"hisayama.fukuoka.jp\0hanamaki.iwate.jp\0lotto\0" +"field.museum\0" +"szex.hu\0" +"issmarterthanyou.com\0" +"kawahara.tottori.jp\0oystre-slidre.no\0travelersinsurance\0" +"friuli-vegiulia.it\0sanjo.niigata.jp\0cuisinella\0" +"alvdal.no\0" +"urawa.saitama.jp\0" +"yamaga.kumamoto.jp\0dyn-ip24.de\0" +"sannohe.aomori.jp\0vision\0" +"sakaiminato.tottori.jp\0" +"unnan.shimane.jp\0s3.dualstack.ca-central-1.amazonaws.com\0" +"pro.az\0" +"teo.br\0" +"zushi.kanagawa.jp\0" +"batsfjord.no\0ca.us\0k12.tx.us\0is-a-techie.com\0" +"ebina.kanagawa.jp\0" +"passenger-association.aero\0" +"\xe5\x8d\x83\xe8\x91\x89.jp\0" +"pro.br\0sellsyourhome.org\0" +"unj\xc3\xa1rga.no\0" +"grosseto.it\0juniper\0" +"barclaycard\0" +"navoi.su\0" +"ibaraki.osaka.jp\0lundbeck\0" +"vantaa.museum\0" +"nedre-eiker.no\0fin.tn\0" +"fed.us\0boots\0sandcats.io\0" +"tw.cn\0lavangen.no\0" +"mup.gov.pl\0" +"nowaruda.pl\0" +"otaru.hokkaido.jp\0" +"is-an-artist.com\0" +"hitachi.ibaraki.jp\0" +"tachiarai.fukuoka.jp\0matsubara.osaka.jp\0" +"gs.vf.no\0" +"savannahga.museum\0" +"pro.cy\0" +"za.bz\0" +"s3-ap-northeast-2.amazonaws.com\0" +"bo.it\0oyodo.nara.jp\0" +"pro.ec\0" +"essex.museum\0" +"bristol.museum\0" +"fr\xc3\xa6na.no\0gallo\0" +"kanonji.kagawa.jp\0" +"glade\0" +"kumano.mie.jp\0nj.us\0support\0" +"tur.ar\0" +"whaling.museum\0tokyo\0yahoo\0" +"kembuchi.hokkaido.jp\0localhost.daplie.me\0" +"alpha-myqnapcloud.com\0" +"jus.br\0ed.jp\0" +"kpn\0mitsubishi\0" +"bern.museum\0\xe8\xb0\xb7\xe6\xad\x8c\0" +"yamatokoriyama.nara.jp\0" +"luxembourg.museum\0" +"tur.br\0" +"emiliaromagna.it\0ashoro.hokkaido.jp\0otofuke.hokkaido.jp\0" +"sd.us\0s3-website-sa-east-1.amazonaws.com\0jp.eu.org\0" +"lc.it\0" +"kiyosu.aichi.jp\0" +"karm\xc3\xb8y.no\0" +"krd\0lat\0" +"etajima.hiroshima.jp\0" +"nasushiobara.tochigi.jp\0law\0" +"sr.gov.pl\0" +"buzz\0" +"bill.museum\0" +"\xe3\x82\xb9\xe3\x83\x88\xe3\x82\xa2\0" +"friuliv-giulia.it\0" +"church\0realty\0" +"kanegasaki.iwate.jp\0kimino.wakayama.jp\0" +"iheya.okinawa.jp\0" +"chikuho.fukuoka.jp\0" +"rivne.ua\0" +"pro.ht\0" +"*.s5y.io\0" +"amakusa.kumamoto.jp\0" +"saroma.hokkaido.jp\0" +"mesaverde.museum\0" +"kv\xc3\xa6nangen.no\0" +"assabu.hokkaido.jp\0heguri.nara.jp\0reg.dk\0" +"higashikagura.hokkaido.jp\0moroyama.saitama.jp\0bronnoysund.no\0" +"tempioolbia.it\0sel.no\0cloud.goog\0" +"shiroishi.saga.jp\0" +"freetls.fastly.net\0" +"kawaue.gifu.jp\0" +"in.na\0" +"yusuhara.kochi.jp\0notogawa.shiga.jp\0lds\0" +"mashiki.kumamoto.jp\0" +"info.ht\0" +"info.hu\0*.kobe.jp\0oharu.aichi.jp\0" +"kushima.miyazaki.jp\0" +"cesenaforli.it\0in.ni\0" +"tokashiki.okinawa.jp\0kiwi\0" +"lib.ny.us\0" +"kanoya.kagoshima.jp\0" +"info.et\0" +"inatsuki.fukuoka.jp\0mx.na\0" +"toei.aichi.jp\0" +"lib.pr.us\0" +"readmyblog.org\0" +"l\xc3\xa4ns.museum\0fla.no\0" +"auction\0" +"alstahaug.no\0" +"nic.in\0" +"ed.pw\0" +"bugatti\0xen.prgmr.com\0" +"w.bg\0experts-comptables.fr\0musashino.tokyo.jp\0is-a-caterer.com\0" +"family\0" +"aero\0" +"colonialwilliamsburg.museum\0buyshouses.net\0" +"pro.na\0klodzko.pl\0\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0" +"minakami.gunma.jp\0" +"ug.gov.pl\0info.cx\0" +"engine.aero\0" +"takanabe.miyazaki.jp\0pro.mv\0panasonic\0" +"praxi\0myqnapcloud.com\0" +"sncf\0s3-sa-east-1.amazonaws.com\0" +"kunst.museum\0" +"games\0" +"vossevangen.no\0" +"info.ec\0" +"hitachiomiya.ibaraki.jp\0turek.pl\0" +"k12.nm.us\0" +"nf.ca\0" +"stjordalshalsen.no\0" +"fnd.br\0" +"\xe5\x9f\xbc\xe7\x8e\x89.jp\0is-a-anarchist.com\0" +"miyake.nara.jp\0" +"pro.om\0" +"info.bb\0sue.fukuoka.jp\0" +"in.rs\0" +"info.at\0servepics.com\0" +"info.au\0ltd.cy\0" +"naha.okinawa.jp\0" +"dgca.aero\0" +"botanicgarden.museum\0y.se\0" +"info.az\0ddnsgeek.com\0" +"itayanagi.aomori.jp\0mashike.hokkaido.jp\0" +"upow.gov.pl\0" +"info.bo\0""2000.hu\0barrell-of-knowledge.info\0" +"honjyo.akita.jp\0fuji.shizuoka.jp\0\xe0\xb2\xad\xe0\xb2\xbe\xe0\xb2\xb0\xe0\xb2\xa4\0" +"xfinity\0" +"merseine.nu\0" +"nakanojo.gunma.jp\0bingo\0" +"shiksha\0" +"pro.pr\0" +"in.th\0amica\0opencraft.hosting\0" +"naval.museum\0" +"work\0" +"info.co\0k12.wi.us\0" +"orkdal.no\0" +"osaka.jp\0in.ua\0" +"eidfjord.no\0\xc3\xb8ygarden.no\0" +"nirasaki.yamanashi.jp\0divttasvuotna.no\0malbork.pl\0" +"games.hu\0" +"pharmacy.museum\0" +"ks.ua\0" +"torsken.no\0" +"est-mon-blogueur.com\0" +"masuda.shimane.jp\0in.us\0" +"ltd.gi\0starnberg.museum\0" +"frogn.no\0navuotna.no\0" +"tamba.hyogo.jp\0unjarga.no\0international\0hasura-app.io\0" +"\xe6\x95\x8e\xe8\x82\xb2.hk\0" +"kawagoe.mie.jp\0" +"schokoladen.museum\0" +"ks.us\0" +"conference.aero\0is-a-knight.org\0" +"from-ms.com\0from-nc.com\0" +"aibetsu.hokkaido.jp\0nh.us\0adult\0on-web.fr\0ltd.hk\0" +"winb.gov.pl\0" +"amagasaki.hyogo.jp\0sb.ua\0" +"bahccavuotna.no\0ollo\0" +"df.gov.br\0erotika.hu\0" +"marriott\0" +"shopping\0" +"pro.tt\0chernivtsi.ua\0" +"est-le-patron.com\0is-a-student.com\0net-freaks.com\0" +"oshima.tokyo.jp\0lol\0" +"cards\0monster\0" +"realestate.pl\0" +"mombetsu.hokkaido.jp\0" +"xperia\0" +"glass\0" +"nat.tn\0" +"sor-varanger.no\0" +"kamijima.ehime.jp\0" +"mosvik.no\0" +"sokndal.no\0lpl\0" +"s3-external-1.amazonaws.com\0" +"trentinoaadige.it\0" +"\xe5\xa4\xa7\xe9\x98\xaa.jp\0pro.vn\0" +"\xc3\xb8vre-eiker.no\0" +"zapto.org\0" +"rio.br\0nic.tj\0gift\0man\0" +"kiyama.saga.jp\0cc.ut.us\0map\0" +"homebuilt.aero\0ooshika.nagano.jp\0dr.na\0cheap\0mba\0" +"energy\0" +"mihama.aichi.jp\0" +"\xe5\x80\x8b\xe4\xba\xba.hk\0ltd.lk\0bounceme.net\0" +"familyds.com\0" +"midori.chiba.jp\0vikna.no\0cc.wy.us\0" +"kiwa.mie.jp\0" +"to.gov.br\0nhs.uk\0" +"balsan.it\0isumi.chiba.jp\0" +"modelling.aero\0loppa.no\0" +"kppsp.gov.pl\0fishing\0" +"unzen.nagasaki.jp\0ybo.review\0" +"swiss\0" +"nagaoka.niigata.jp\0" +"time.museum\0" +"static.land\0" +"takahata.yamagata.jp\0" +"tr\xc3\xb8gstad.no\0" +"western.museum\0" +"lib.ok.us\0" +"ltd\0" +"americanexpress\0" +"engineer.aero\0" +"bmd.br\0" +"nishiarita.saga.jp\0commbank\0" +"vaga.no\0" +"musica.ar\0k12.co.us\0" +"med\0" +"kaita.hiroshima.jp\0" +"matsushige.tokushima.jp\0democrat\0" +"b\xc3\xb8.telemark.no\0" +"desa.id\0" +"project.museum\0sciencesnaturelles.museum\0" +"itoigawa.niigata.jp\0" +"chihayaakasaka.osaka.jp\0men\0" +"meo\0" +"musica.bo\0" +"u.bg\0" +"annaka.gunma.jp\0radom.pl\0" +"\xe7\xb6\xb2\xe8\xb7\xaf.tw\0info.ve\0" +"hurdal.no\0basketball\0" +"karaganda.su\0" +"hitra.no\0is-a-green.com\0" +"slg.br\0kamikawa.saitama.jp\0minato.tokyo.jp\0" +"info.vn\0" +"oksnes.no\0" +"green\0" +"otoyo.kochi.jp\0" +"jab.br\0kharkov.ua\0is.eu.org\0" +"notodden.no\0" +"mihama.fukui.jp\0" +"cinema.museum\0" +"sumy.ua\0" +"\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0scrapping.cc\0" +"k12.or.us\0" +"sumoto.hyogo.jp\0servebeer.com\0" +"bostik\0" +"no-ip.ca\0" +"srv.br\0" +"w.se\0" +"info.tn\0" +"sanfrancisco.museum\0med.pro\0" +"dr.tr\0dyndns-mail.com\0" +"info.tr\0from-tx.com\0" +"taku.saga.jp\0chat\0" +"info.tt\0" +"hakusan.ishikawa.jp\0" +"yaita.tochigi.jp\0" +"aizumisato.fukushima.jp\0namsos.no\0s3.eu-west-3.amazonaws.com\0it.eu.org\0" +"info.tz\0" +"mil\0" +"style\0" +"travel.pl\0" +"student.aero\0lighting\0" +"gosen.niigata.jp\0suwalki.pl\0" +"mit\0" +"iki.nagasaki.jp\0" +"awaji.hyogo.jp\0clock.museum\0vegarshei.no\0" +"ggf.br\0" +"exhibition.museum\0" +"ltd.ua\0" +"baidar.no\0" +"info.ro\0dubai\0" +"deatnu.no\0" +"g\xc3\xa1ls\xc3\xa1.no\0" +"nanae.hokkaido.jp\0info.sd\0" +"\xe6\xbb\x8b\xe8\xb3\x80.jp\0il.us\0" +"ltd.uk\0" +"symantec\0verm\xc3\xb6gensberatung\0" +"latina.it\0" +"takatori.nara.jp\0dnsdojo.org\0" +"charter.aero\0averoy.no\0la.us\0" +"mlb\0" +"pub.sa\0" +"\xe0\xb8\x98\xe0\xb8\xb8\xe0\xb8\xa3\xe0\xb8\x81\xe0\xb8\xb4\xe0\xb8\x88.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"vibovalentia.it\0hzc.io\0" +"toon.ehime.jp\0" +"info.pk\0" +"info.pl\0" +"chocolate.museum\0everbank\0" +"ip6.arpa\0sondrio.it\0zara\0on-aptible.com\0" +"ge.it\0maniwa.okayama.jp\0mma\0" +"yamaguchi.jp\0info.pr\0mls\0" +"matera.it\0" +"fukuyama.hiroshima.jp\0target\0" +"noticias.bo\0" +"in.eu.org\0" +"bodo.no\0" +"even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0" +"koka.shiga.jp\0place\0" +"info.na\0dscloud.me\0" +"info.mv\0info.nf\0lebork.pl\0travel.tt\0from-ny.net\0" +"kibichuo.okayama.jp\0" +"eigersund.no\0" +"showa.gunma.jp\0info.ni\0lib.ak.us\0" +"boston\0" +"rec.br\0lillehammer.no\0grocery\0sohu\0" +"aeroclub.aero\0shirakawa.gifu.jp\0rollag.no\0" +"mt.it\0tako.chiba.jp\0nakasatsunai.hokkaido.jp\0" +"info.nr\0" +"taa.it\0" +"hinode.tokyo.jp\0moe\0" +"okegawa.saitama.jp\0" +"asn.au\0pi.it\0chrysler\0moi\0" +"rec.co\0bokn.no\0" +"fundacio.museum\0" +"mom\0" +"b\xc3\xa5tsfjord.no\0" +"contractors\0" +"info.la\0" +"rn.it\0" +"higashikawa.hokkaido.jp\0midsund.no\0" +"kumenan.okayama.jp\0mov\0" +"bjugn.no\0" +"yoshioka.gunma.jp\0webhop.info\0" +"newhampshire.museum\0goodyear\0" +"ts.it\0" +"kashihara.nara.jp\0weatherchannel\0spacekit.io\0" +"nab\0" +"gov.nc.tr\0" +"tank.museum\0" +"oy.lc\0" +"tksat.bo\0shop.ht\0" +"shop.hu\0" +"education\0" +"jolster.no\0" +"nba\0wedeploy.sh\0" +"ichikai.tochigi.jp\0" +"gorge.museum\0" +"nosegawa.nara.jp\0kurobe.toyama.jp\0from-ma.com\0" +"ikeda.fukui.jp\0hanawa.fukushima.jp\0" +"kafjord.no\0" +"oiso.kanagawa.jp\0" +"k12.ar.us\0" +"naturalhistorymuseum.museum\0tatamotors\0accesscam.org\0" +"gyeongbuk.kr\0" +"msd\0" +"k12.de.us\0" +"oyama.tochigi.jp\0" +"soccer\0" +"info.ki\0lib.sc.us\0" +"yatsushiro.kumamoto.jp\0" +"ogimi.okinawa.jp\0tr\xc3\xa6na.no\0" +"\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0" +"midori.gunma.jp\0song\0gr.com\0" +"gc.ca\0" +"higashi.fukushima.jp\0" +"s.bg\0" +"channel\0" +"kurume.fukuoka.jp\0" +"tiffany\0" +"tynset.no\0lib.wy.us\0mtn\0" +"sony\0" +"humanities.museum\0mtr\0" +"!city.kitakyushu.jp\0nec\0" +"bplaced.com\0" +"is-a-nurse.com\0" +"osoyro.no\0dyndns.info\0" +"mimata.miyazaki.jp\0tychy.pl\0" +"grue.no\0" +"urayasu.chiba.jp\0" +"lincoln\0" +"k12.ma.us\0" +"nb.ca\0" +"takamori.nagano.jp\0" +"halden.no\0" +"encyclopedic.museum\0" +"net\0" +"educator.aero\0torahime.shiga.jp\0new\0" +"honefoss.no\0" +"marumori.miyagi.jp\0" +"takahama.aichi.jp\0nfl\0" +"meland.no\0" +"u.se\0" +"tara.saga.jp\0" +"kawara.fukuoka.jp\0" +"dp.ua\0scjohnson\0" +"hanno.saitama.jp\0tcm.museum\0" +"software.aero\0" +"ngo\0" +"tateshina.nagano.jp\0" +"*.transurl.be\0" +"uzs.gov.pl\0" +"nhk\0" +"federation.aero\0xihuan\0karacol.su\0" +"black\0" +"ayase.kanagawa.jp\0" +"asahi.nagano.jp\0" +"yk.ca\0" +"\xe7\xbd\x91\xe7\xbb\x9c.cn\0" +"\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0" +"takasago.hyogo.jp\0" +"takasu.hokkaido.jp\0" +"\xe4\xb8\x96\xe7\x95\x8c\0" +"mitsuke.niigata.jp\0" +"bi.it\0" +"dali.museum\0rec.nf\0" +"pri.ee\0hachioji.tokyo.jp\0" +"fukushima.jp\0" +"toda.saitama.jp\0" +"yodobashi\0" +"clubmed\0" +"asn.lv\0reisen\0" +"kurashiki.okayama.jp\0" +"minami.tokushima.jp\0" +"saltdal.no\0" +"raisa.no\0mt.us\0nd.us\0" +"shioya.tochigi.jp\0" +"yoshinogari.saga.jp\0" +"shinshiro.aichi.jp\0futsu.nagasaki.jp\0" +"fredrikstad.no\0chernihiv.ua\0dnipropetrovsk.ua\0" +"cal.it\0abiko.chiba.jp\0" +"vardo.no\0*.awdev.ca\0" +"oketo.hokkaido.jp\0" +"is-very-bad.org\0" +"yatomi.aichi.jp\0" +"wedeploy.me\0" +"ann-arbor.mi.us\0" +"crimea.ua\0" +"roros.no\0" +"higashihiroshima.hiroshima.jp\0bosch\0*.transurl.eu\0" +"wa.edu.au\0iglesiascarbonia.it\0" +"monza-e-della-brianza.it\0" +"\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\xe0\xa4\xae\xe0\xa5\x8d\0" +"suldal.no\0" +"yaizu.shizuoka.jp\0" +"mitane.akita.jp\0" +"aerodrome.aero\0" +"minami.fukuoka.jp\0ohda.shimane.jp\0williamsburg.museum\0" +"storfjord.no\0" +"zuerich\0myhome-server.de\0" +"isa.kagoshima.jp\0" +"mckinsey\0" +"andria-barletta-trani.it\0" +"pg.it\0" +"hino.tokyo.jp\0" +"leasing.aero\0" +"\xe7\xbd\x91\xe7\xbb\x9c.hk\0kawanishi.nara.jp\0" +"toyosato.shiga.jp\0convent.museum\0" +"izumo.shimane.jp\0" +"government.aero\0tatebayashi.gunma.jp\0tado.mie.jp\0gets-it.net\0" +"holtalen.no\0" +"kashiwa.chiba.jp\0" +"kanna.gunma.jp\0" +"saintlouis.museum\0" +"rec.ro\0" +"chikujo.fukuoka.jp\0" +"anan.nagano.jp\0" +"tomika.gifu.jp\0" +"shonai.fukuoka.jp\0losangeles.museum\0gjerstad.no\0" +"groks-the.info\0" +"kariya.aichi.jp\0" +"otaki.saitama.jp\0" +"firmdale\0" +"naie.hokkaido.jp\0kameoka.kyoto.jp\0" +"vv.it\0" +"omuta.fukuoka.jp\0" +"odawara.kanagawa.jp\0" +"grozny.su\0" +"minamiaiki.nagano.jp\0c66.me\0" +"opole.pl\0abbvie\0barclays\0monash\0" +"shimofusa.chiba.jp\0geelvinck.museum\0" +"now\0" +"lib.mo.us\0" +"b\xc3\xb8mlo.no\0backplaneapp.io\0" +"carbonia-iglesias.it\0chikuma.nagano.jp\0" +"yamada.iwate.jp\0" +"miyoshi.tokushima.jp\0home.dyndns.org\0nfshost.com\0" +"for-our.info\0" +"design.aero\0ibaraki.jp\0skierv\xc3\xa1.no\0" +"k12.dc.us\0" +"gs.aa.no\0" +"karumai.iwate.jp\0" +"mr.no\0" +"shirataka.yamagata.jp\0" +"rec.ve\0" +"nra\0" +"shriram\0" +"rzgw.gov.pl\0" +"lib.tn.us\0is-a-rockstar.com\0" +"q.bg\0sport.hu\0" +"obi\0" +"chikuzen.fukuoka.jp\0" +"kunimi.fukushima.jp\0" +"info.zm\0" +"overhalla.no\0grozny.ru\0" +"yusui.kagoshima.jp\0rl.no\0" +"hitachiota.ibaraki.jp\0naumburg.museum\0" +"kvinesdal.no\0" +"nrw\0" +"jewish.museum\0\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0" +"minamiuonuma.niigata.jp\0" +"tools\0" +"itabashi.tokyo.jp\0viking\0" +"grong.no\0" +"brasil.museum\0" +"republican\0" +"misawa.aomori.jp\0arteducation.museum\0" +"mp.br\0anthro.museum\0" +"namegawa.saitama.jp\0east-kazakhstan.su\0" +"grainger\0" +"music.museum\0museum.tt\0" +"pe.ca\0*.transurl.nl\0" +"oshino.yamanashi.jp\0" +"l\xc3\xb8renskog.no\0" +"ba.gov.br\0shiroi.chiba.jp\0fhv.se\0" +"shishikui.tokushima.jp\0s.se\0s3.cn-north-1.amazonaws.com.cn\0" +"ntt\0" +"k12.ri.us\0" +"vana\0" +"sakahogi.gifu.jp\0dn.ua\0" +"kitanakagusuku.okinawa.jp\0" +"sciences.museum\0" +"asnes.no\0" +"spot\0" +"tsukui.kanagawa.jp\0" +"ikano\0" +"review\0ma.leg.br\0" +"rifu.miyagi.jp\0vpnplus.to\0" +"osakasayama.osaka.jp\0" +"\xc3\xb8ystre-slidre.no\0" +"off\0" +"hikawa.shimane.jp\0" +"\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0" +"is-by.us\0" +"manchester.museum\0" +"\xe7\x86\x8a\xe6\x9c\xac.jp\0" +"tonosho.kagawa.jp\0" +"ureshino.mie.jp\0motobu.okinawa.jp\0" +"km.ua\0" +"click\0" +"gov.ac\0sande.vestfold.no\0shop.ro\0" +"gov.ae\0" +"gov.af\0from-mt.com\0from-nd.com\0bryansk.su\0" +"dnsdojo.net\0" +"kamaishi.iwate.jp\0" +"miki.hyogo.jp\0" +"gov.al\0floripa.br\0properties\0" +"bg.it\0neues.museum\0" +"nakijin.okinawa.jp\0" +"gov.ba\0aizumi.tokushima.jp\0" +"gov.ar\0gov.bb\0oe.yamagata.jp\0" +"gov.as\0" +"blog.bo\0asti.it\0wedeploy.io\0" +"gov.au\0zentsuji.kagawa.jp\0is-a-libertarian.com\0" +"gov.bf\0posts-and-telecommunications.museum\0" +"blog.br\0" +"gov.bh\0" +"gov.az\0kaluga.su\0" +"rj.gov.br\0from-wi.com\0" +"shima.mie.jp\0" +"gov.bm\0" +"fukuchiyama.kyoto.jp\0nyc\0" +"shop.pl\0" +"yamamoto.miyagi.jp\0" +"gov.br\0" +"gov.bs\0" +"gov.bt\0gov.cd\0" +"pt.eu.org\0" +"xbox\0" +"frogans\0" +"gov.by\0" +"gov.bz\0" +"gov.cl\0terni.it\0computerhistory.museum\0" +"gov.cm\0oamishirasato.chiba.jp\0tawaramoto.nara.jp\0" +"gov.cn\0" +"gov.co\0presidio.museum\0" +"dyn.cosidns.de\0" +"hiratsuka.kanagawa.jp\0" +"karlsoy.no\0" +"yaotsu.gifu.jp\0" +"gov.cu\0" +"nationalheritage.museum\0" +"flor\xc3\xb8.no\0" +"gov.cx\0" +"gov.cy\0" +"uppo.gov.pl\0" +"konan.shiga.jp\0" +"gov.dm\0" +"fylkesbibl.no\0" +"gov.do\0" +"br\xc3\xb8nn\xc3\xb8y.no\0" +"gov.ec\0" +"asago.hyogo.jp\0" +"gov.ee\0citi\0" +"gov.eg\0brindisi.it\0\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0bplaced.net\0" +"gov.dz\0" +"pe.it\0" +"\xe7\xb5\x84\xe7\xbb\x87.hk\0" +"nes.buskerud.no\0" +"kvam.no\0" +"sumita.iwate.jp\0heimatunduhren.museum\0" +"gov.et\0khmelnytskyi.ua\0" +"city\0" +"prato.it\0sondre-land.no\0" +"chizu.tottori.jp\0trade\0" +"oguni.yamagata.jp\0" +"windows\0" +"shiwa.iwate.jp\0" +"am.gov.br\0catania.it\0nishinomiya.hyogo.jp\0aigo\0" +"to.it\0" +"ftpaccess.cc\0" +"akita.jp\0square7.de\0" +"is-an-actress.com\0" +"gov.ge\0\xe7\xbd\x91\xe5\x9d\x80\0us-gov-west-1.elasticbeanstalk.com\0" +"museum.mv\0" +"gov.gh\0kuroiso.tochigi.jp\0museum.mw\0" +"gov.gi\0vt.it\0pe.kr\0" +"newspaper.museum\0" +"saves-the-whales.com\0customer.enonic.io\0" +"myshopblocks.com\0" +"mining.museum\0" +"gov.gn\0" +"tokuyama.yamaguchi.jp\0loseyourip.com\0ybo.trade\0" +"museum.no\0" +"one\0" +"gov.gr\0etne.no\0" +"ong\0" +"ternopil.ua\0" +"obira.hokkaido.jp\0kanazawa.ishikawa.jp\0" +"yawata.kyoto.jp\0" +"state.museum\0onl\0" +"gov.gy\0" +"is-a-landscaper.com\0" +"gov.hk\0texas.museum\0" +"berlev\xc3\xa5g.no\0museum.om\0" +"kinokawa.wakayama.jp\0likescandy.com\0" +"k\xc3\xa5""fjord.no\0" +"gov.ie\0" +"healthcare\0wellbeingzone.eu\0" +"auto.pl\0neat-url.com\0" +"louvre.museum\0" +"gub.uy\0" +"club.aero\0ooo\0\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0" +"gov.il\0" +"gov.in\0oceanographique.museum\0" +"championship.aero\0iris.arpa\0" +"tranibarlettaandria.it\0" +"id.au\0gov.iq\0" +"gov.ir\0" +"gov.is\0kitagata.gifu.jp\0android\0intel\0" +"gov.it\0taito.tokyo.jp\0" +"towada.aomori.jp\0imdb\0square7.ch\0" +"h\xc3\xa5.no\0logoip.de\0" +"o.bg\0" +"british.museum\0" +"karpacz.pl\0avocat.pro\0" +"takayama.nagano.jp\0walmart\0" +"crotone.it\0nesoddtangen.no\0" +"gaivuotna.no\0" +"gov.jo\0oldnavy\0" +"varese.it\0usarts.museum\0" +"takamori.kumamoto.jp\0wakayama.wakayama.jp\0" +"koriyama.fukushima.jp\0" +"gov.kg\0slattum.no\0folldal.no\0" +"r\xc3\xb8""d\xc3\xb8y.no\0" +"gov.ki\0kerrylogistics\0" +"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0bunkyo.tokyo.jp\0is-a-linux-user.org\0" +"minamimaki.nagano.jp\0" +"iwate.jp\0gov.km\0" +"gov.kn\0" +"saskatchewan.museum\0talk\0" +"gov.kp\0k12.me.us\0" +"gov.la\0" +"gov.lb\0k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0" +"gov.lc\0org\0" +"nakaniikawa.toyama.jp\0pay\0" +"mobi\0" +"gov.ky\0hk.com\0" +"gov.kz\0outsystemscloud.com\0" +"shiga.jp\0gov.lk\0" +"boleslawiec.pl\0\xe6\xb8\xb8\xe6\x88\x8f\0" +"rikuzentakata.iwate.jp\0" +"ap.gov.br\0shibuya.tokyo.jp\0chuo.yamanashi.jp\0v\xc3\xa5ler.hedmark.no\0" +"gov.ma\0" +"gov.lr\0\xe7\xb5\x84\xe7\xb9\x94.tw\0" +"gov.lt\0" +"gov.me\0physio\0qpon\0" +"gov.lv\0" +"gov.mg\0" +"bozen.it\0napoli.it\0lebtimnetz.de\0" +"gov.ly\0" +"shimokitayama.nara.jp\0" +"gov.mk\0" +"gov.ml\0" +"daigo.ibaraki.jp\0" +"olbia-tempio.it\0gov.mn\0moda\0" +"gov.mo\0steam.museum\0" +"ohtawara.tochigi.jp\0gov.mr\0press\0" +"sera.hiroshima.jp\0gov.ms\0nome.pt\0" +"hirakata.osaka.jp\0stavern.no\0" +"iwaki.fukushima.jp\0gov.mu\0\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0" +"gov.mv\0verdal.no\0" +"gov.mw\0gov.ng\0" +"net.ac\0ap.gov.pl\0k12.va.us\0" +"gov.my\0" +"net.ae\0tokamachi.niigata.jp\0medizinhistorisches.museum\0gov.mz\0czeladz.pl\0if.ua\0" +"net.af\0" +"net.ag\0" +"seranishi.hiroshima.jp\0" +"net.ai\0" +"hyllestad.no\0" +"ott\0" +"net.al\0monzabrianza.it\0tsubetsu.hokkaido.jp\0g\xc3\xa1\xc5\x8bgaviika.no\0tushu\0" +"gov.nr\0ga.us\0s3.dualstack.ap-southeast-2.amazonaws.com\0" +"piw.gov.pl\0" +"net.ba\0ueda.nagano.jp\0" +"net.ar\0net.bb\0tm.cy\0" +"net.au\0" +"net.bh\0takinoue.hokkaido.jp\0children.museum\0gov.om\0s3.amazonaws.com\0" +"sa.gov.au\0" +"net.az\0" +"pet\0" +"net.bm\0" +"fujieda.shizuoka.jp\0plantation.museum\0" +"net.bo\0\xe9\x95\xb7\xe9\x87\x8e.jp\0mikawa.yamagata.jp\0ovh\0" +"net.br\0inzai.chiba.jp\0" +"net.bs\0gov.ph\0" +"net.bt\0rybnik.pl\0\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0" +"komagane.nagano.jp\0" +"friuli-ve-giulia.it\0gov.pk\0" +"cz.it\0masoy.no\0gov.pl\0" +"minamifurano.hokkaido.jp\0otsuka\0ubank\0" +"net.ci\0gov.pn\0" +"net.bz\0" +"valle-d-aosta.it\0sibenik.museum\0" +"gov.qa\0" +"net.cm\0kitashiobara.fukushima.jp\0gov.pr\0dyn-vpn.de\0" +"net.cn\0gov.ps\0" +"net.co\0gov.pt\0" +"avianca\0" +"open\0" +"gov.py\0" +"net.cu\0" +"friuli-venezia-giulia.it\0shinjo.yamagata.jp\0\xe5\xa4\xa7\xe4\xbc\x97\xe6\xb1\xbd\xe8\xbd\xa6\0" +"net.cw\0" +"masaki.ehime.jp\0" +"net.cy\0id.ir\0" +"tm.fr\0minamioguni.kumamoto.jp\0phd\0" +"tran\xc3\xb8y.no\0" +"net.dm\0komono.mie.jp\0television.museum\0" +"motorcycle.museum\0" +"net.do\0fuettertdasnetz.de\0" +"matsushima.miyagi.jp\0" +"net.ec\0ybo.party\0" +"faith\0is-a-soxfan.org\0" +"cc.nm.us\0spiegel\0" +"rr.gov.br\0" +"net.eg\0soja.okayama.jp\0" +"tateyama.toyama.jp\0rsc.cdn77.org\0" +"net.dz\0" +"pid\0draydns.de\0" +"gov.sa\0" +"gov.sb\0" +"gov.rs\0gov.sc\0" +"mn.it\0tokyo.jp\0gulen.no\0gov.sd\0cc.pr.us\0" +"gov.ru\0" +"stufftoread.com\0" +"skjervoy.no\0gov.rw\0gov.sg\0" +"ouda.nara.jp\0gov.sh\0vt.us\0" +"net.et\0neyagawa.osaka.jp\0principe.st\0" +"pin\0debian.net\0" +"blogsyte.com\0" +"obihiro.hokkaido.jp\0gov.sl\0" +"komaki.aichi.jp\0" +"pc.it\0" +"suifu.ibaraki.jp\0biev\xc3\xa1t.no\0" +"niiza.saitama.jp\0" +"immo\0" +"tm.hu\0tama.tokyo.jp\0" +"gov.st\0hyatt\0feste-ip.net\0" +"pordenone.it\0" +"wloclawek.pl\0gov.sx\0" +"gov.sy\0" +"net.ge\0gov.tj\0" +"rs.gov.br\0sc.gov.br\0" +"net.gg\0gov.tl\0" +"gov.tm\0" +"harvestcelebration.museum\0gov.tn\0" +"s\xc3\xb8mna.no\0gov.to\0" +"net.gl\0oshima.yamaguchi.jp\0gov.ua\0" +"id.lv\0gov.tr\0" +"net.gn\0" +"gov.tt\0" +"net.gp\0id.ly\0" +"net.gr\0gov.tw\0" +"s3-eu-west-2.amazonaws.com\0" +"net.gt\0kanmaki.nara.jp\0" +"gov.uk\0servesarcasm.com\0" +"forlicesena.it\0vr.it\0" +"lel.br\0net.gy\0alipay\0" +"film.hu\0" +"net.hk\0chiba.jp\0" +"yamakita.kanagawa.jp\0" +"net.hn\0gov.vc\0" +"from-oh.com\0" +"gov.ve\0barcelona\0" +"utashinai.hokkaido.jp\0" +"loabat.no\0" +"net.ht\0net.id\0" +"tm.km\0lib.ms.us\0lib.nc.us\0raid\0" +"quebec.museum\0" +"hole.no\0gov.vn\0gmbh\0" +"daegu.kr\0" +"net.il\0final\0" +"bc.ca\0net.im\0ami.ibaraki.jp\0" +"net.in\0tsuruta.aomori.jp\0zoological.museum\0" +"fhsk.se\0fhapp.xyz\0" +"boavista.br\0net.iq\0guitars\0" +"net.ir\0" +"net.is\0" +"kamikawa.hyogo.jp\0" +"net.je\0nantan.kyoto.jp\0" +"taxi\0" +"pnc\0" +"tm.mc\0giize.com\0" +"fetsund.no\0ing.pa\0gov.ws\0broadway\0" +"net.jo\0air.museum\0melbourne\0" +"yamada.toyama.jp\0tm.mg\0" +"lutsk.ua\0" +"fm.br\0tjome.no\0nikolaev.ua\0from-dc.com\0" +"m.bg\0" +"net.kg\0" +"hadano.kanagawa.jp\0" +"net.ki\0" +"yoka.hyogo.jp\0idrett.no\0insure\0" +"katsushika.tokyo.jp\0" +"net.kn\0bounty-full.com\0" +"shiroishi.miyagi.jp\0" +"tamatsukuri.ibaraki.jp\0net.la\0" +"net.lb\0" +"net.lc\0" +"moka.tochigi.jp\0dynamisches-dns.de\0" +"tm.no\0" +"net.ky\0" +"net.kz\0ivgu.no\0" +"net.lk\0" +"gov.za\0" +"sandnessj\xc3\xb8""en.no\0" +"s3.ap-south-1.amazonaws.com\0" +"aosta-valley.it\0\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0" +"shinyoshitomi.fukuoka.jp\0net.ma\0pc.pl\0williamhill\0" +"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0net.lr\0" +"isernia.it\0" +"frosinone.it\0" +"net.me\0" +"rn.gov.br\0net.lv\0kwpsp.gov.pl\0" +"shiogama.miyagi.jp\0" +"s\xc3\xb8r-aurdal.no\0gov.zm\0" +"net.ly\0" +"net.mk\0kutno.pl\0" +"net.ml\0dnsalias.net\0" +"valer.ostfold.no\0" +"net.mo\0" +"o.se\0" +"gov.zw\0" +"net.ms\0" +"net.mt\0manx.museum\0lur\xc3\xb8y.no\0" +"net.mu\0tm.pl\0" +"net.mv\0net.nf\0" +"net.mw\0net.ng\0sells-it.net\0" +"net.mx\0mg.leg.br\0" +"net.my\0net.ni\0" +"net.mz\0" +"trentinosued-tirol.it\0" +"cnt.br\0alstom\0" +"photography.museum\0" +"bungoono.oita.jp\0smile\0" +"mochizuki.nagano.jp\0norton\0" +"net.nr\0s3.ap-northeast-2.amazonaws.com\0" +"geekgalaxy.com\0" +"ro.gov.br\0jan-mayen.no\0pro\0telefonica\0" +"institute\0" +"yokaichiba.chiba.jp\0miyashiro.saitama.jp\0net.nz\0chanel\0" +"annefrank.museum\0franziskaner.museum\0pru\0" +"info\0yono.saitama.jp\0net.om\0" +"arakawa.saitama.jp\0" +"caseih\0" +"net.pa\0management\0" +"claims\0" +"stuttgart.museum\0net.pe\0" +"net.ph\0tm.ro\0" +"id.us\0" +"gifu.jp\0net.pk\0" +"net.pl\0" +"net.pn\0tm.se\0" +"\xd8\xb9\xd8\xb1\xd8\xa8\0" +"haibara.shizuoka.jp\0" +"net.qa\0" +"azumino.nagano.jp\0sarpsborg.no\0net.pr\0" +"hizen.saga.jp\0net.ps\0" +"net.pt\0s3.ca-central-1.amazonaws.com\0" +"oristano.it\0" +"stathelle.no\0" +"moto\0" +"ruovat.no\0za.com\0" +"net.py\0pub\0" +"technology.museum\0" +"otoineppu.hokkaido.jp\0mn.us\0" +"rocks\0" +"fm.it\0isa.us\0" +"nango.fukushima.jp\0lifestyle\0" +"lund.no\0" +"oyamazaki.kyoto.jp\0kawajima.saitama.jp\0" +"vadso.no\0" +"gotsu.shimane.jp\0" +"\xe7\xb5\x84\xe7\xb9\x94.hk\0net.sa\0" +"net.sb\0" +"net.sc\0" +"net.sd\0" +"antiques.museum\0net.ru\0" +"finn\xc3\xb8y.no\0net.rw\0net.sg\0" +"net.sh\0\xec\x82\xbc\xec\x84\xb1\0" +"pwc\0" +"net.sl\0" +"net.so\0" +"kawai.nara.jp\0" +"minamiminowa.nagano.jp\0muika.niigata.jp\0lanbib.se\0" +"al.eu.org\0" +"yoshida.saitama.jp\0net.st\0farmers\0from-vt.com\0" +"pisa.it\0yamato.kanagawa.jp\0" +"net.th\0" +"minamisanriku.miyagi.jp\0net.sy\0is-a-personaltrainer.com\0" +"net.tj\0" +"technology\0" +"pa.it\0" +"trentinosuedtirol.it\0net.tm\0" +"net.tn\0" +"avoues.fr\0ogose.saitama.jp\0net.to\0" +"chikushino.fukuoka.jp\0" +"net.ua\0" +"net.tr\0" +"witd.gov.pl\0" +"net.tt\0" +"kg.kr\0" +"net.tw\0" +"railroad.museum\0toray\0" +"yura.wakayama.jp\0page\0hosting-cluster.nl\0" +"hjartdal.no\0net.uk\0cloudns.biz\0" +"computer.museum\0net.vc\0" +"net.ve\0" +"stj\xc3\xb8rdal.no\0" +"ringerike.no\0akdn\0scholarships\0" +"net.uy\0net.vi\0" +"miho.ibaraki.jp\0net.uz\0" +"orsta.no\0" +"net.vn\0" +"taranto.it\0fm.no\0sortland.no\0lixil\0" +, + +"kazo.saitama.jp\0applinzi.com\0" +"aeroport.fr\0schmidt\0\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0" +"v\xc3\xa5g\xc3\xa5.no\0\xe5\x95\x86\xe6\xa0\x87\0" +"oita.jp\0markets\0" +"net.vu\0" +"broker\0" +"lib.ne.us\0" +"univ.sn\0tm.za\0" +"from-la.net\0" +"ora.gunma.jp\0" +"k12.az.us\0\xe3\x82\xbb\xe3\x83\xbc\xe3\x83\xab\0" +"\xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\0" +"ichiba.tokushima.jp\0" +"net.ws\0" +"contagem.br\0" +"vlaanderen\0" +"donetsk.ua\0\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0" +"ichihara.chiba.jp\0" +"dsmynas.org\0" +"\xe8\x87\xba\xe7\x81\xa3\0" +"trentinostirol.it\0" +"hanggliding.aero\0" +"ekloges.cy\0insurance\0daplie.me\0" +"ryokami.saitama.jp\0\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0" +"usa.oita.jp\0" +"ashiya.fukuoka.jp\0" +"k.bg\0" +"storage\0" +"mandal.no\0" +"inashiki.ibaraki.jp\0" +"weber\0" +"arita.saga.jp\0" +"krokstadelva.no\0" +"lib.wa.us\0net.za\0" +"walter\0" +"zero\0" +"maizuru.kyoto.jp\0" +"kumakogen.ehime.jp\0" +"tsurugashima.saitama.jp\0" +"torino.museum\0" +"environment.museum\0" +"usculture.museum\0" +"shichinohe.aomori.jp\0net.zm\0" +"ohi.fukui.jp\0" +"k12.mi.us\0" +"iwi.nz\0" +"serveexchange.com\0" +"a.ssl.fastly.net\0" +"dd-dns.de\0" +"se.gov.br\0\xda\x80\xd8\xa7\xd8\xb1\xd8\xaa\0" +"rodeo\0" +"botanical.museum\0" +"kawaminami.miyazaki.jp\0m.se\0" +"tsumagoi.gunma.jp\0" +"barrel-of-knowledge.info\0nodum.co\0" +"feedback\0" +"kasahara.gifu.jp\0" +"calvinklein\0" +"gives\0voting\0" +"roma.museum\0" +"as.us\0" +"nagano.jp\0" +"capetown\0" +"agents.aero\0furukawa.miyagi.jp\0" +"h\xc3\xb8nefoss.no\0from-nm.com\0" +"kiyokawa.kanagawa.jp\0muosat.no\0" +"natura\0" +"higashiura.aichi.jp\0gallup\0" +"lcube-server.de\0" +"alwaysdata.net\0" +"cci.fr\0versicherung\0" +"gripe\0" +"kahoku.yamagata.jp\0jobs.tt\0" +"jamison.museum\0dunlop\0nodum.io\0" +"insurance.aero\0" +"jelenia-gora.pl\0" +"sukagawa.fukushima.jp\0" +"\xe9\x95\xb7\xe5\xb4\x8e.jp\0" +"rennebu.no\0" +"rugby\0" +"pol.dz\0" +"aq.it\0ba.it\0kitakata.fukushima.jp\0" +"\xe9\x9d\x99\xe5\xb2\xa1.jp\0nachikatsuura.wakayama.jp\0" +"iselect\0kicks-ass.net\0" +"strand.no\0" +"svelvik.no\0" +"inc.hk\0" +"kunohe.iwate.jp\0" +"show.aero\0adv.br\0" +"oslo.no\0map.fastlylb.net\0" +"unazuki.toyama.jp\0" +"leitungsen.de\0" +"takahashi.okayama.jp\0origins\0" +"pa.us\0" +"asso.fr\0nerima.tokyo.jp\0volyn.ua\0" +"station.museum\0" +"kawanehon.shizuoka.jp\0" +"lima.zone\0" +"sa.gov.pl\0" +"asahikawa.hokkaido.jp\0" +"googleapis.com\0" +"ancona.it\0fermo.it\0" +"pars\0" +"hongo.hiroshima.jp\0sakai.osaka.jp\0" +"asso.gp\0dr\xc3\xb8""bak.no\0" +"red\0ownprovider.com\0" +"tec.ve\0" +"decorativearts.museum\0" +"akune.kagoshima.jp\0ren\0jambyl.su\0" +"kagami.kochi.jp\0dentist\0" +"oki.fukuoka.jp\0oyabe.toyama.jp\0accountants\0" +"tobetsu.hokkaido.jp\0clinic\0" +"qvc\0" +"eco.br\0pol.ht\0" +"gunma.jp\0" +"asso.ht\0naamesjevuemie.no\0" +"cc.sc.us\0" +"toride.ibaraki.jp\0" +"artdeco.museum\0wielun.pl\0training\0" +"makurazaki.kagoshima.jp\0" +"aip.ee\0kl\xc3\xa6""bu.no\0" +"club.tw\0khmelnitskiy.ua\0" +"kakogawa.hyogo.jp\0ebino.miyazaki.jp\0cc.tx.us\0" +"systems\0cupcake.is\0" +"art.br\0nhlfan.net\0" +"palmsprings.museum\0" +"forex\0" +"airforce\0star\0" +"asso.bj\0" +"university.museum\0" +"shizuoka.shizuoka.jp\0lib.ia.us\0" +"chita.aichi.jp\0ryuoh.shiga.jp\0coal.museum\0" +"is-a-financialadvisor.com\0" +"usdecorativearts.museum\0" +"valle.no\0groks-this.info\0" +"asso.ci\0sogndal.no\0" +"chiropractic.museum\0" +"\xe7\xbd\x91\xe7\xab\x99\0" +"shibecha.hokkaido.jp\0" +"maryland.museum\0natuurwetenschappen.museum\0" +"art.do\0yonabaru.okinawa.jp\0" +"vanylven.no\0" +"kure.hiroshima.jp\0" +"jpn.com\0" +"pl.eu.org\0" +"taiwa.miyagi.jp\0other.nf\0apps.lair.io\0" +"siena.it\0gyokuto.kumamoto.jp\0americanart.museum\0ril\0" +"art.dz\0lecco.it\0" +"\xe4\xb8\xad\xe5\x9b\xbd\0" +"shikaoi.hokkaido.jp\0rio\0realm.cz\0" +"wiki.bo\0otama.fukushima.jp\0yamagata.nagano.jp\0rip\0" +"wiki.br\0holdings\0solar\0" +"tsukumi.oita.jp\0inder\xc3\xb8y.no\0" +"campidano-medio.it\0hyundai\0" +"okinawa.jp\0est.pr\0" +"itano.tokushima.jp\0north-kazakhstan.su\0" +"tohnosho.chiba.jp\0serveblog.net\0" +"\xe4\xb8\xad\xe5\x9c\x8b\0" +"asso.dz\0kalmykia.su\0" +"lorenskog.no\0" +"kamitsue.oita.jp\0s3.dualstack.ap-northeast-2.amazonaws.com\0" +"i.bg\0supplies\0" +"nakamichi.yamanashi.jp\0dodge\0" +"matsue.shimane.jp\0from-ok.com\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0" +"sukumo.kochi.jp\0k12.gu.us\0" +"drud.io\0" +"kpmg\0" +"rennes\xc3\xb8y.no\0" +"r\xc3\xa6lingen.no\0" +"molise.it\0kikonai.hokkaido.jp\0" +"lombardy.it\0" +"fi.cr\0" +"club\0" +"erotica.hu\0uchiko.ehime.jp\0" +"hatoyama.saitama.jp\0" +"hn.cn\0" +"botanicalgarden.museum\0ap-southeast-2.elasticbeanstalk.com\0gdynia.pl\0" +"astronomy.museum\0" +"mordovia.su\0" +"vagan.no\0" +"tuva.su\0" +"komatsushima.tokushima.jp\0" +"square.museum\0sandnes.no\0" +"miyazu.kyoto.jp\0" +"dyndns-free.com\0" +"js.cn\0" +"ce.gov.br\0ibigawa.gifu.jp\0uenohara.yamanashi.jp\0" +"funabashi.chiba.jp\0okoppe.hokkaido.jp\0olayan\0" +"name\0" +"art.ht\0andasuolo.no\0" +"plurinacional.bo\0" +"inami.toyama.jp\0" +"owani.aomori.jp\0matsuura.nagasaki.jp\0" +"takikawa.hokkaido.jp\0kalmykia.ru\0" +"nishikawa.yamagata.jp\0salvadordali.museum\0k.se\0" +"cv.ua\0" +"from-il.com\0" +"grondar.za\0" +"balsfjord.no\0" +"klabu.no\0" +"openair.museum\0adv.mz\0" +"portal.museum\0events\0" +"gen.mi.us\0" +"gotdns.org\0lima-city.rocks\0" +"naka.ibaraki.jp\0yahaba.iwate.jp\0" +"bergamo.it\0aquarelle\0" +"farmers.museum\0maserati\0mordovia.ru\0" +"tsuruga.fukui.jp\0" +"utazu.kagawa.jp\0kin.okinawa.jp\0" +"verisign\0" +"tokai.aichi.jp\0osen.no\0" +"joburg\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0friulive-giulia.it\0lucania.it\0narvik.no\0vinnytsia.ua\0" +"gallery.museum\0" +"historisches.museum\0extraspace\0" +"mihama.mie.jp\0" +"nishiwaki.hyogo.jp\0gangaviika.no\0tienda\0" +"schaeffler\0" +"ao.it\0" +"toga.toyama.jp\0s\xc3\xb8rum.no\0" +"gleeze.com\0" +"kamiamakusa.kumamoto.jp\0gop.pk\0isa-hockeynut.com\0cust.dev.thingdust.io\0" +"ct.it\0" +"hashikami.aomori.jp\0" +"hyuga.miyazaki.jp\0wallonie.museum\0sap\0" +"dielddanuorri.no\0" +"skj\xc3\xa5k.no\0pol.tr\0" +"fi.it\0sas\0" +"is-into-games.com\0" +"\xe1\x83\x92\xe1\x83\x94\0dyndns-remote.com\0" +"broker.aero\0" +"nagareyama.chiba.jp\0askoy.no\0sbi\0" +"monza-brianza.it\0msk.ru\0" +"kashima.ibaraki.jp\0koza.wakayama.jp\0" +"bushey.museum\0ally\0cancerresearch\0" +"oseto.nagasaki.jp\0sca\0" +"nes.akershus.no\0giving\0scb\0" +"taka.hyogo.jp\0vn.ua\0sbs\0" +"maison\0" +"potenza.it\0" +"s\xc3\xa1lat.no\0" +"msk.su\0" +"stalowa-wola.pl\0" +"agency\0" +"saiki.oita.jp\0" +"science\0" +"kainan.tokushima.jp\0" +"mukawa.hokkaido.jp\0roan.no\0" +"komoro.nagano.jp\0" +"achi.nagano.jp\0moriguchi.osaka.jp\0" +"art.pl\0" +"figueres.museum\0" +"jeonbuk.kr\0" +"olecko.pl\0from-pr.com\0" +"watari.miyagi.jp\0stuff-4-sale.org\0" +"dnsalias.org\0" +"kiryu.gunma.jp\0frankfurt.museum\0" +"ullensaker.no\0" +"t\xc3\xb8nsberg.no\0run\0" +"murayama.yamagata.jp\0" +"politica.bo\0sarufutsu.hokkaido.jp\0" +"ses\0" +"georgia.su\0" +"pccw\0" +"sew\0" +"sex\0" +"sandefjord.no\0" +"katori.chiba.jp\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0cistron.nl\0" +"doesntexist.com\0" +"toshima.tokyo.jp\0forum\0" +"gold\0" +"golf\0de.com\0" +"herokuapp.com\0" +"sfr\0" +"hattfjelldal.no\0netbank\0" +"newyork.museum\0i.ng\0africa.com\0" +"rwe\0team\0" +"meiwa.gunma.jp\0eating-organic.net\0" +"\xe6\x96\xb0\xe6\xbd\x9f.jp\0" +"asso.re\0" +"higashiomi.shiga.jp\0fam.pk\0*.stolos.io\0" +"navy\0is-into-cartoons.com\0" +"kitami.hokkaido.jp\0" +"hasami.nagasaki.jp\0" +"umaji.kochi.jp\0drud.us\0" +"meraker.no\0firebaseapp.com\0" +"am.br\0higashiosaka.osaka.jp\0from-ct.com\0" +"l\xc3\xa1hppi.no\0snoasa.no\0art.sn\0" +"flog.br\0kanan.osaka.jp\0lib.or.us\0" +"chippubetsu.hokkaido.jp\0malvik.no\0" +"tagawa.fukuoka.jp\0pippu.hokkaido.jp\0nanjo.okinawa.jp\0total\0" +"lomza.pl\0" +"hofu.yamaguchi.jp\0k12.ca.us\0" +"knightpoint.systems\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0" +"esp.br\0homesense\0" +"modum.no\0" +"tech\0" +"hagi.yamaguchi.jp\0" +"varggat.no\0foundation\0" +"i.ph\0" +"lib.tx.us\0" +"g.bg\0" +"kasama.ibaraki.jp\0" +"kimobetsu.hokkaido.jp\0" +"fukuchi.fukuoka.jp\0" +"kamo.kyoto.jp\0kiso.nagano.jp\0evenes.no\0nsn.us\0" +"goog\0stackspace.space\0" +"vlog.br\0" +"bale.museum\0certmgr.org\0" +"beardu.no\0" +"pictet\0" +"h\xc3\xa6gebostad.no\0" +"hl.cn\0" +"satosho.okayama.jp\0" +"historyofscience.museum\0fl\xc3\xa5.no\0" +"frontdoor\0" +"iizuka.fukuoka.jp\0" +"richardli\0" +"nadex\0b.ssl.fastly.net\0" +"tosashimizu.kochi.jp\0toyama.toyama.jp\0asso.nc\0" +"happou.akita.jp\0ikeda.nagano.jp\0" +"veg\xc3\xa5rshei.no\0ski\0" +"lodingen.no\0vega.no\0" +"amex\0" +"nyc.museum\0" +"paris\0" +"narviika.no\0" +"fudai.iwate.jp\0i.se\0" +"yuu.yamaguchi.jp\0" +"kids.us\0" +"kuokgroup\0" +"land\0" +"chieti.it\0sky\0" +"yamatsuri.fukushima.jp\0lardal.no\0" +"hepforge.org\0" +"bielawa.pl\0" +"zakopane.pl\0" +"ogori.fukuoka.jp\0" +"konan.aichi.jp\0" +"ct.us\0k12.vi.us\0prime\0" +"treviso.it\0" +"amot.no\0" +"akiruno.tokyo.jp\0abo.pa\0" +"ostre-toten.no\0" +"childrens.museum\0" +"valer.hedmark.no\0" +"emerck\0" +"akita.akita.jp\0uy.com\0" +"audible\0" +"jinsekikogen.hiroshima.jp\0social\0kicks-ass.org\0" +"hawaii.museum\0" +"cn-north-1.eb.amazonaws.com.cn\0" +"no.eu.org\0" +"izumi.osaka.jp\0" +"gon.pk\0" +"cr.it\0" +"viking.museum\0" +"frosta.no\0" +"dsmynas.net\0" +"sennan.osaka.jp\0" +"miners.museum\0cdn77-ssl.net\0" +"fg.it\0gildesk\xc3\xa5l.no\0" +"shimamoto.osaka.jp\0" +"yawara.ibaraki.jp\0ichinoseki.iwate.jp\0" +"soy\0" +"bieszczady.pl\0" +"orland.no\0" +"onjuku.chiba.jp\0yazu.tottori.jp\0asso.km\0olkusz.pl\0crown\0" +"fjell.no\0skanland.no\0" +"go.gov.br\0friuliveneziagiulia.it\0tab\0" +"jfk.museum\0" +"trader.aero\0" +"eaton.mi.us\0" +"education.museum\0" +"fukaya.saitama.jp\0cc.ne.us\0" +"yokoze.saitama.jp\0hirogawa.wakayama.jp\0jewelry\0" +"sanuki.kagawa.jp\0\xc4\x8d\xc3\xa1hcesuolo.no\0" +"h\xc3\xa1""bmer.no\0" +"morimachi.shizuoka.jp\0spydeberg.no\0" +"\xe9\xa6\x99\xe6\xa0\xbc\xe9\x87\x8c\xe6\x8b\x89\0" +"asso.mc\0" +"tax\0viajes\0" +"lib.ar.us\0" +"slupsk.pl\0" +"okawa.kochi.jp\0" +"fuchu.hiroshima.jp\0srl\0" +"dupont\0" +"lib.co.us\0\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0" +"selbu.no\0srt\0cloudaccess.net\0" +"yugawa.fukushima.jp\0lexus\0yolasite.com\0" +"nozawaonsen.nagano.jp\0" +"iglesias-carbonia.it\0mutsuzawa.chiba.jp\0odesa.ua\0kred\0" +"tci\0" +"ricoh\0" +"s3.dualstack.us-east-2.amazonaws.com\0" +"school.museum\0" +"kyonan.chiba.jp\0" +"investments\0" +"te.it\0cc.wi.us\0" +"news.hu\0stc\0" +"h\xc3\xa1mm\xc3\xa1rfeasta.no\0" +"omachi.nagano.jp\0" +"lavagis.no\0" +"minowa.nagano.jp\0" +"lerdal.no\0" +"tdk\0eu-west-3.elasticbeanstalk.com\0" +"shoo.okayama.jp\0" +"read\0" +"kurogi.fukuoka.jp\0tashkent.su\0" +"kongsvinger.no\0" +"bio.br\0shimane.shimane.jp\0nz.eu.org\0" +"hl.no\0" +"\xc3\xb8rskog.no\0tel\0" +"tarnobrzeg.pl\0" +"santacruz.museum\0ski.no\0dynu.net\0" +"e164.arpa\0" +"yawatahama.ehime.jp\0" +"kawaba.gunma.jp\0" +"camera\0" +"britishcolumbia.museum\0ringsaker.no\0stage.nodeart.io\0" +"biei.hokkaido.jp\0parts\0" +"yachiyo.chiba.jp\0" +"tomiya.miyagi.jp\0theater.museum\0royrvik.no\0securitytactics.com\0" +"party\0" +"\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa4\0tires\0" +"chernigov.ua\0" +"tokai.ibaraki.jp\0rost.no\0" +"e.bg\0" +"surf\0" +"salerno.it\0\xe9\xb3\xa5\xe5\x8f\x96.jp\0" +"circus.museum\0" +"v\xc3\xa6r\xc3\xb8y.no\0deals\0ddnsking.com\0" +"thd\0" +"hoteles\0tickets\0" +"bitballoon.com\0" +"gz.cn\0" +"rome.it\0" +"sos.pl\0" +"ebetsu.hokkaido.jp\0" +"palermo.it\0" +"gyeongnam.kr\0uk.com\0" +"vevelstad.no\0" +"reggiocalabria.it\0" +"conf.au\0md.ci\0" +"dazaifu.fukuoka.jp\0" +"active\0" +"machida.tokyo.jp\0g.se\0" +"omaha.museum\0nokia\0" +"rackmaze.com\0" +"nagi.okayama.jp\0oygarden.no\0cr.ua\0kr.com\0" +"iwakura.aichi.jp\0kozaki.chiba.jp\0" +"date.fukushima.jp\0defense.tn\0" +"tarui.gifu.jp\0" +"miami\0oracle\0" +"bjarkoy.no\0samsclub\0" +"kanra.gunma.jp\0" +"tjx\0nflfan.org\0" +"teva\0\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0" +"furniture.museum\0" +"otago.museum\0" +"utsira.no\0" +"ethnology.museum\0gol.no\0" +"remotewd.com\0" +"istanbul\0" +"town.museum\0gs.tr.no\0" +"cc.az.us\0" +"control.aero\0" +"freeboxos.com\0" +"misato.wakayama.jp\0" +"lv.ua\0" +"echizen.fukui.jp\0" +"kawasaki.miyagi.jp\0" +"motegi.tochigi.jp\0" +"kamikoani.akita.jp\0" +"lplfinancial\0" +"pantheonsite.io\0" +"\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0dynvpn.de\0" +"weather\0" +"reit\0" +"americanfamily\0" +"*.kitakyushu.jp\0" +"kainan.wakayama.jp\0" +"aircraft.aero\0fe.it\0skierva.no\0" +"freemasonry.museum\0" +"hdfcbank\0" +"ok.us\0" +"usgarden.museum\0" +"yabuki.fukushima.jp\0te.ua\0is-a-socialist.com\0" +"modena.it\0ouchi.saga.jp\0" +"barreau.bj\0" +"discover\0" +"dyroy.no\0sk\xc3\xa5nland.no\0uz.ua\0" +"yabu.hyogo.jp\0cc.ms.us\0cc.nc.us\0" +"sasaguri.fukuoka.jp\0" +"autos\0" +"top\0" +"loyalist.museum\0" +"sosnowiec.pl\0for-some.biz\0" +"mywire.org\0" +"lt.it\0" +"b\xc3\xa1l\xc3\xa1t.no\0" +"ujiie.tochigi.jp\0banamex\0" +"toyone.aichi.jp\0" +"zt.ua\0ddns.net\0" +"hockey\0tirol\0" +"gonohe.aomori.jp\0fortworth.museum\0" +"per.la\0" +"eidskog.no\0" +"4lima.de\0" +"himeshima.oita.jp\0" +"s3.dualstack.sa-east-1.amazonaws.com\0" +"mitsue.nara.jp\0" +"itakura.gunma.jp\0" +"shiraoka.saitama.jp\0" +"kustanai.ru\0" +"kirkenes.no\0community\0" +"ss.it\0" +"kawai.iwate.jp\0s3-website-us-east-1.amazonaws.com\0" +"java\0" +"ismaili\0" +"golffan.us\0" +"cesena-forli.it\0donna.no\0" +"college\0" +"pescara.it\0rent\0kustanai.su\0" +"tahara.aichi.jp\0akashi.hyogo.jp\0semine.miyagi.jp\0" +"hachinohe.aomori.jp\0ubs\0" +"4lima.at\0" +"trv\0from-mo.com\0" +"per.nf\0" +"valle-daosta.it\0" +"shijonawate.osaka.jp\0" +"cyon.site\0" +"lib.nm.us\0" +"\xc3\xb8stre-toten.no\0lancaster\0" +"*.kunden.ortsinfo.at\0" +"yasuda.kochi.jp\0togitsu.nagasaki.jp\0" +"ariake.saga.jp\0" +"boldlygoingnowhere.org\0" +"4lima.ch\0" +"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0" +"tsukiyono.gunma.jp\0archi\0" +"hair\0" +"financial\0" +"civilwar.museum\0" +"from-sc.com\0" +"media.museum\0" +"aichi.jp\0" +"seirou.niigata.jp\0ama.shimane.jp\0" +"cyon.link\0" +"k12.fl.us\0" +"tui\0" +"misconfused.org\0" +"\xe7\xbb\x84\xe7\xbb\x87.hk\0" +"c.bg\0" +"blogspot.com.cy\0" +"shimotsuma.ibaraki.jp\0kofu.yamanashi.jp\0pa.leg.br\0" +"toyokawa.aichi.jp\0kawazu.shizuoka.jp\0" +"lib.wi.us\0dray-dns.de\0" +"seaport.museum\0" +"cahcesuolo.no\0hu.net\0" +"blogspot.com.ee\0" +"k12.in.us\0cool\0" +"tokke.no\0blogspot.com.eg\0" +"shingu.fukuoka.jp\0" +"og.ao\0" +"gx.cn\0coop\0afamilycompany\0" +"slz.br\0wlocl.pl\0tvs\0" +"k12.la.us\0*.compute.estate\0dontexist.net\0" +"mb.ca\0" +"blogspot.com.ar\0" +"trysil.no\0" +"blogspot.com.au\0" +"ngo.lk\0" +"naturbruksgymn.se\0" +"rest\0" +"k12.oh.us\0user.party.eus\0" +"pb.leg.br\0" +"gj\xc3\xb8vik.no\0e.se\0per.sg\0blogspot.com.br\0" +"casadelamoneda.museum\0" +"2ix.at\0" +"lefrak\0" +"kiwi.nz\0mutual\0blogspot.com.by\0" +"rikubetsu.hokkaido.jp\0casino\0gda.pl\0" +"center.museum\0virtual.museum\0" +"\xc3\xa5l.no\0ak.us\0in-the-band.net\0" +"kushimoto.wakayama.jp\0ardal.no\0blogspot.com.co\0" +"midatlantic.museum\0" +"sicily.it\0dev-myqnapcloud.com\0" +"mt.eu.org\0" +"tours\0" +"gose.nara.jp\0incheon.kr\0" +"ashiya.hyogo.jp\0rochester.museum\0\xe6\x94\xbf\xe5\x8a\xa1\0""2ix.ch\0" +"bando.ibaraki.jp\0" +"bergen.no\0" +"nara.nara.jp\0malselv.no\0" +"haugesund.no\0hob\xc3\xb8l.no\0" +"dealer\0" +"olsztyn.pl\0" +"2ix.de\0" +"s3-us-east-2.amazonaws.com\0" +"lt.ua\0" +"reklam.hu\0" +"blogspot.com.es\0" +"nagato.yamaguchi.jp\0ngo.ph\0" +"abkhazia.su\0" +"mymediapc.net\0" +"cn.it\0" +"md.us\0is-an-accountant.com\0" +"git-repos.de\0" +"fc.it\0" +"airtel\0likes-pie.com\0" +"ikawa.akita.jp\0" +"chattanooga.museum\0ny.us\0" +"gjovik.no\0" +"helsinki.museum\0" +"fujiyoshida.yamanashi.jp\0" +"spreadbetting\0cloudaccess.host\0" +"fedje.no\0" +"ito.shizuoka.jp\0" +"*.nagoya.jp\0samukawa.kanagawa.jp\0" +"economia.bo\0" +"v\xc3\xa5ler.\xc3\xb8stfold.no\0" +"yorii.saitama.jp\0" +"acct.pro\0" +"mb.it\0es.kr\0" +"tabayama.yamanashi.jp\0" +"inderoy.no\0" +"tsuga.tochigi.jp\0uno\0servecounterstrike.com\0" +"kagawa.jp\0" +"og.it\0" +"caltanissetta.it\0" +"tondabayashi.osaka.jp\0c.la\0" +"ube.yamaguchi.jp\0" +"lib.dc.us\0" +"tosu.saga.jp\0" +"kaszuby.pl\0" +"tokushima.jp\0sola.no\0stada\0uol\0" +"tatsuno.hyogo.jp\0" +"tagajo.miyagi.jp\0oppeg\xc3\xa5rd.no\0" +"ono.fukushima.jp\0scotland.museum\0fage\0" +"jgora.pl\0" +"mtpc\0" +"nagatoro.saitama.jp\0" +"cloudns.asia\0" +"ta.it\0" +"izunokuni.shizuoka.jp\0" +"hamamatsu.shizuoka.jp\0vik.no\0" +"photos\0" +"firenze.it\0interactive.museum\0haus\0" +"kiyose.tokyo.jp\0" +"ups\0" +"kanagawa.jp\0" +"tajimi.gifu.jp\0" +"huissier-justice.fr\0" +"foggia.it\0" +"fail\0" +"dscloud.biz\0" +"geek.nz\0sa-east-1.elasticbeanstalk.com\0" +"seto.aichi.jp\0" +"lowicz.pl\0" +"aki.kochi.jp\0" +"fedorapeople.org\0" +"gv.ao\0" +"isahaya.nagasaki.jp\0" +"gv.at\0my.eu.org\0" +"ota.gunma.jp\0cooking\0us-east-1.elasticbeanstalk.com\0blogspot.com.mt\0" +"bearalv\xc3\xa1hki.no\0" +"blogspot.com.ng\0" +"leclerc\0xenapponazure.com\0" +"shimamaki.hokkaido.jp\0sor-fron.no\0" +"a.bg\0" +"cheltenham.museum\0" +"war.museum\0" +"ichinohe.iwate.jp\0" +"budejju.no\0dlugoleka.pl\0homeunix.net\0" +"fuossko.no\0" +"aland.fi\0" +"iwanuma.miyagi.jp\0" +"center\0is-a-hard-worker.com\0" +"chuo.fukuoka.jp\0conf.lv\0" +"mielno.pl\0" +"shimada.shizuoka.jp\0" +"cartier\0" +"limited\0" +"ngo.za\0ventures\0" +"roma.it\0ap-southeast-1.elasticbeanstalk.com\0" +"url.tw\0" +"\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0" +"asahi.chiba.jp\0" +"yuzawa.niigata.jp\0" +"hanamigawa.chiba.jp\0" +"kommune.no\0vf.no\0" +"giehtavuoatna.no\0" +"web.bo\0ladbrokes\0sells-for-less.com\0" +"pi.leg.br\0" +"k12.nv.us\0" +"nu.ca\0vet\0" +"boston.museum\0vestnes.no\0plo.ps\0" +"miyawaka.fukuoka.jp\0sykkylven.no\0" +"armenia.su\0" +"blogspot.com.tr\0" +"c.se\0" +"\xe4\xbf\xa1\xe6\x81\xaf\0" +"koshigaya.saitama.jp\0cn.ua\0christmas\0" +"web.co\0" +"kragero.no\0" +"test.tj\0" +"unicom\0c.cdn77.org\0" +"dyndns-wiki.com\0" +"nagaokakyo.kyoto.jp\0uonuma.niigata.jp\0nissedal.no\0" +"web.do\0fans\0" +"shobara.hiroshima.jp\0pisz.pl\0" +"okuma.fukushima.jp\0" +"from-ks.com\0" +"uw.gov.pl\0tkmaxx\0sa.com\0" +"gamagori.aichi.jp\0rodoy.no\0flights\0" +"samsung\0" +"oguni.kumamoto.jp\0" +"eastafrica.museum\0" +"\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0cloud\0" +"coach\0" +"\xe7\xbd\x91\xe7\xbb\x9c\0" +"vig\0" +"ako.hyogo.jp\0aso.kumamoto.jp\0" +"nl.eu.org\0" +"ag.it\0" +"entertainment.aero\0" +"vin\0" +"hapmir.no\0dynns.com\0" +"vip\0" +"test.ru\0" +"cl.it\0eu.com\0" +"movistar\0tele.amune.org\0" +"\xd0\xba\xd0\xb0\xd1\x82\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xba\0br.com\0" +"\xd0\xb1\xd0\xb5\xd0\xbb\0" +"dating\0" +"kashiba.nara.jp\0" +"archaeological.museum\0bykle.no\0" +"rad\xc3\xb8y.no\0" +"agakhan\0farm\0" +"joetsu.niigata.jp\0" +"skole.museum\0yamaxun\0" +"microlight.aero\0kani.gifu.jp\0blogspot.com.uy\0" +"us-east-1.amazonaws.com\0" +"urasoe.okinawa.jp\0" +"assassination.museum\0cc.mo.us\0" +"web.id\0" +"minamiawaji.hyogo.jp\0" +"medical.museum\0" +"muni.il\0pokrovsk.su\0" +"vodka\0" +"pesarourbino.it\0fribourg.museum\0" +"stranda.no\0is-certified.com\0" +"\xc3\xa5mot.no\0fast\0" +"zp.ua\0" +"communications.museum\0" +"tj\xc3\xb8me.no\0" +"nu.it\0cc.ri.us\0" +"society.museum\0" +"goip.de\0" +"knx-server.net\0lib.de.us\0" +"tjeldsund.no\0" +"ichikawamisato.yamanashi.jp\0nordreisa.no\0" +"urn.arpa\0" +"pz.it\0okaya.nagano.jp\0\xc3\xa5seral.no\0lier.no\0cc.tn.us\0pe.leg.br\0" +"noip.us\0" +"bestbuy\0ap-northeast-2.elasticbeanstalk.com\0" +"yuasa.wakayama.jp\0rissa.no\0s3-website-us-west-2.amazonaws.com\0" +"so.it\0ikeda.osaka.jp\0koya.wakayama.jp\0cipriani\0\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0" +"ic.gov.pl\0itau\0" +"moareke.no\0" +"ato.br\0takashima.shiga.jp\0ivano-frankivsk.ua\0" +"\xc3\xa5lg\xc3\xa5rd.no\0" +"elk.pl\0" +"*.elb.amazonaws.com.cn\0" +"chambagri.fr\0" +"norfolk.museum\0" +"kasugai.aichi.jp\0" +"\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0ng.eu.org\0" +"\xe4\xbc\x81\xe4\xb8\x9a\0" +"web.lk\0" +"pvt.k12.ma.us\0rightathome\0" +"otaki.chiba.jp\0asso.eu.org\0" +"\xe7\xbb\x84\xe7\xb9\x94.hk\0" +"lib.ma.us\0" +"imamat\0" +"tree.museum\0" +"hikimi.shimane.jp\0" +"lecce.it\0" +"market\0" +"rackmaze.net\0" +"iide.yamagata.jp\0" +"toyako.hokkaido.jp\0aikawa.kanagawa.jp\0" +"christiansburg.museum\0" +"sado.niigata.jp\0jondal.no\0prudential\0" +"tenkawa.nara.jp\0" +"singles\0" +"ainan.ehime.jp\0web.nf\0" +"web.ni\0author\0" +"imabari.ehime.jp\0\xe8\x81\x94\xe9\x80\x9a\0storj.farm\0" +"e12.ve\0" +"civilisation.museum\0" +"karate.museum\0" +"sagamihara.kanagawa.jp\0" +"kamishihoro.hokkaido.jp\0" +"karasjohka.no\0" +"stream\0" +"from-ky.com\0" +"trentino-sud-tirol.it\0\xe7\xbd\x91\xe5\xba\x97\0" +"ingatlan.hu\0" +"cartoonart.museum\0" +"recht.pro\0" +"doomdns.org\0" +"alpha.bounty-full.com\0" +"freeboxos.fr\0" +"chitose.hokkaido.jp\0web.pk\0szkola.pl\0" +"homedns.org\0" +"morotsuka.miyazaki.jp\0kristiansund.no\0" +"usui.fukuoka.jp\0" +"suedtirol.it\0" +"ns.ca\0axis.museum\0pubol.museum\0" +"ln.cn\0szczecin.pl\0" +"misato.akita.jp\0snasa.no\0vladikavkaz.ru\0" +"lindas.no\0" +"chesapeakebay.museum\0" +"logistics.aero\0jdf.br\0a.se\0" +"industria.bo\0" +"radio.br\0" +"fukuoka.jp\0ushiku.ibaraki.jp\0zamami.okinawa.jp\0wed\0" +"natal.br\0observer\0in.net\0" +"nishikata.tochigi.jp\0" +"izena.okinawa.jp\0custom.metacentrum.cz\0" +"vladikavkaz.su\0" +"ogawa.ibaraki.jp\0" +"mjondalen.no\0" +"qh.cn\0" +"partners\0" +"yakumo.hokkaido.jp\0lego\0" +"kaga.ishikawa.jp\0" +"express.aero\0aizuwakamatsu.fukushima.jp\0atlanta.museum\0" +"tiaa\0net.eu.org\0" +"miyoshi.aichi.jp\0yuki.ibaraki.jp\0equipment\0" +"hidaka.hokkaido.jp\0" +"algard.no\0" +"mex.com\0" +"github.io\0" +"\xe5\xb7\xa5\xe8\xa1\x8c\0" +"obninsk.su\0" +"historicalsociety.museum\0parliament.nz\0" +"linz.museum\0" +"communication.museum\0erni\0" +"takko.aomori.jp\0doesntexist.org\0" +"omihachiman.shiga.jp\0" +"web.tj\0" +"sdn.gov.pl\0" +"for-better.biz\0" +"trani-barletta-andria.it\0pr.leg.br\0" +"wzmiuw.gov.pl\0" +"web.tr\0" +"news\0" +"is-very-evil.org\0" +"andria-trani-barletta.it\0" +"bz.it\0natori.miyagi.jp\0" +"\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0" +"baby\0" +"bmoattachments.org\0" +"haebaru.okinawa.jp\0esurance\0" +"obuse.nagano.jp\0" +"chuo.tokyo.jp\0familyds.net\0" +"es.gov.br\0plc.co.im\0naganohara.gunma.jp\0" +"tas.gov.au\0ulvik.no\0" +"next\0" +"yashiro.hyogo.jp\0web.ve\0noip.me\0" +"muko.kyoto.jp\0" +"elburg.museum\0" +"takino.hyogo.jp\0omi.nagano.jp\0win\0" +"shizukuishi.iwate.jp\0" +"friulivenezia-giulia.it\0land-4-sale.us\0" +"aknoluokta.no\0kinder\0" +"muenchen.museum\0potager.org\0" +"taira.toyama.jp\0paroch.k12.ma.us\0visa\0" +"jefferson.museum\0" +"uhren.museum\0" +"cc.or.us\0trading\0" +"toyoura.hokkaido.jp\0data\0" +"museum\0" +"alto-adige.it\0ut.us\0" +"lib.az.us\0date\0" +"\xe4\xbd\x90\xe8\xb3\x80.jp\0space\0" +"dontexist.org\0" +"polkowice.pl\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0" +"nikon\0" +"wy.us\0" +"air-traffic-control.aero\0" +"michigan.museum\0b\xc3\xa1hcavuotna.no\0" +"shingo.aomori.jp\0" +"global.ssl.fastly.net\0" +"yachiyo.ibaraki.jp\0" +"b\xc3\xa6rum.no\0" +"shimodate.ibaraki.jp\0um.gov.pl\0" +"voyage\0" +"parma.it\0pgfog.com\0" +"cc.wa.us\0" +"ac.ae\0yasuoka.nagano.jp\0web.za\0" +"furubira.hokkaido.jp\0" +"trentino-suedtirol.it\0" +"wme\0" +"viva\0" +"umi.fukuoka.jp\0ofunato.iwate.jp\0hayakawa.yamanashi.jp\0dabur\0" +"patria.bo\0vb.it\0toyono.osaka.jp\0pictures\0" +"s\xc3\xb8rfold.no\0sklep.pl\0kalisz.pl\0" +"nishiizu.shizuoka.jp\0mmafan.biz\0pgafan.net\0" +"togo.aichi.jp\0is-not-certified.com\0" +"kudoyama.wakayama.jp\0livinghistory.museum\0" +"shinkamigoto.nagasaki.jp\0" +"ac.at\0hobby-site.com\0" +"ac.be\0" +"blockbuster\0vivo\0" +"from-sd.com\0" +"sayo.hyogo.jp\0" +"glass.museum\0" +"philadelphiaarea.museum\0" +"yoshikawa.saitama.jp\0" +"hakodate.hokkaido.jp\0k12.al.us\0" +"dinosaur.museum\0russia.museum\0pagespeedmobilizer.com\0" +"tourism.tn\0" +"\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0" +"business\0" +"kosuge.yamanashi.jp\0" +"ac.ci\0tula.su\0" +"oishida.yamagata.jp\0handson.museum\0" +"sano.tochigi.jp\0" +"ac.cn\0onga.fukuoka.jp\0lib.ri.us\0" +"8.bg\0" +"sevastopol.ua\0" +"ac.cr\0athleta\0" +"aostavalley.it\0" +"ac.cy\0kindle\0" +"wow\0" +"niigata.niigata.jp\0us.gov.pl\0homeunix.org\0" +"taishin.fukushima.jp\0" +"k12.ga.us\0" +"barum.no\0" +"hdfc\0endoftheinternet.org\0karelia.su\0" +"tone.ibaraki.jp\0" +"trentino-alto-adige.it\0" +"alta.no\0" +"hb.cn\0" +"dyndns.ddnss.de\0" +"hemne.no\0nittedal.no\0" +"k12.ks.us\0" +"kouyama.kagoshima.jp\0" +"skjerv\xc3\xb8y.no\0" +"dyndns.tv\0" +"kvalsund.no\0builders\0" +"jeonnam.kr\0jeep\0" +"withyoutube.com\0" +"miyada.nagano.jp\0" +"pharmaciens.km\0" +"usuki.oita.jp\0iraq.museum\0" +"krasnodar.su\0" +"narusawa.yamanashi.jp\0celtic.museum\0tysfjord.no\0" +"seihi.nagasaki.jp\0" +"accident-prevention.aero\0band\0" +"hornindal.no\0is-found.org\0" +"ac.gn\0" +"misasa.tottori.jp\0foodnetwork\0tr.eu.org\0" +"doctor\0" +"sk.ca\0bank\0qa2.com\0" +"comunica\xc3\xa7\xc3\xb5""es.museum\0" +"modalen.no\0" +"wtc\0" +"wtf\0" +"plaza.museum\0" +"ogaki.gifu.jp\0quest\0" +"cricket\0protection\0" +"ac.id\0dyndns.ws\0" +"cc.ar.us\0selfip.net\0" +"ginoza.okinawa.jp\0" +"ac.il\0bronnoy.no\0\xc3\xb8ksnes.no\0" +"ac.im\0komatsu.ishikawa.jp\0mosjoen.no\0" +"ac.in\0sodegaura.chiba.jp\0" +"nombre.bo\0" +"ac.ir\0" +"sumoto.kumamoto.jp\0hotels\0" +"nysa.pl\0" +"wa.gov.au\0" +"tsugaru.aomori.jp\0" +"gob.ar\0abc.br\0b\xc3\xa1id\xc3\xa1r.no\0hamar.no\0" +"muncie.museum\0arab\0" +"matsukawa.nagano.jp\0tarama.okinawa.jp\0topology.museum\0" +"toya.hokkaido.jp\0" +"design.museum\0" +"zj.cn\0saotome.st\0" +"oster\xc3\xb8y.no\0" +"ch.it\0cc.fl.us\0tips\0" +"ac.jp\0radio\0" +"health-carereform.com\0" +"shibetsu.hokkaido.jp\0" +"gob.bo\0vaksdal.no\0washtenaw.mi.us\0" +"friulivegiulia.it\0" +"rich\0" +"tas.edu.au\0" +"plants.museum\0cc.ia.us\0group\0" +"keymachine.de\0" +"aid.pl\0map.fastly.net\0" +"sm.ua\0" +"\xd8\xa7\xd9\x84\xd8\xb9\xd9\x84\xd9\x8a\xd8\xa7\xd9\x86\0is-a-cubicle-slave.com\0" +"gob.cl\0fujitsu\0" +"gr.it\0ac.kr\0" +"feira.br\0coldwar.museum\0" +"ac.leg.br\0" +"kanie.aichi.jp\0" +"toyama.jp\0stadt.museum\0" +"ac.lk\0" +"navigation.aero\0!city.kawasaki.jp\0newport.museum\0" +"garden.museum\0\xe7\xa7\xbb\xe5\x8a\xa8\0" +"arts.co\0gr.jp\0" +"ddns.me\0" +"miyakonojo.miyazaki.jp\0ac.ma\0aarborte.no\0" +"kagamiishi.fukushima.jp\0iwate.iwate.jp\0" +"higashi.fukuoka.jp\0" +"gob.do\0stord.no\0" +"ine.kyoto.jp\0ac.me\0" +"valled-aosta.it\0" +"gob.ec\0s3-ap-south-1.amazonaws.com\0from-wa.com\0" +"sanda.hyogo.jp\0stryn.no\0xin\0" +"heroy.more-og-romsdal.no\0" +"ac.mu\0pomorskie.pl\0weibo\0dnsfor.me\0" +"\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0" +"ac.mw\0" +"gob.es\0" +"mansions.museum\0ac.ni\0" +"pv.it\0ac.mz\0lugansk.ua\0" +"is-a-conservative.com\0" +"atm.pl\0dynathome.net\0" +"hasvik.no\0" +"tourism.pl\0" +"campinas.br\0" +"sweden.museum\0" +"appchizi.com\0" +"ac.nz\0" +"gen.in\0" +"kikuchi.kumamoto.jp\0industries\0is-a-chef.org\0" +"gratis\0" +"ac.pa\0" +"omi.niigata.jp\0" +"shari.hokkaido.jp\0" +"higashikurume.tokyo.jp\0" +"gob.gt\0monmouth.museum\0sologne.museum\0" +"honai.ehime.jp\0koge.tottori.jp\0allstate\0" +"lib.me.us\0" +"vic.au\0" +"ac.pr\0" +"gob.hn\0" +"dni.us\0" +"langev\xc3\xa5g.no\0" +"report\0" +"katashina.gunma.jp\0" +"nesodden.no\0" +"tsunan.niigata.jp\0servemp3.com\0" +"6.bg\0sicilia.it\0d\xc3\xb8nna.no\0konsulat.gov.pl\0" +"prof.pr\0" +"bplaced.de\0" +"saikai.nagasaki.jp\0" +"sagae.yamagata.jp\0poltava.ua\0" +"wroc.pl\0" +"florence.it\0ranzan.saitama.jp\0" +"shiraoi.hokkaido.jp\0" +"sakuragawa.ibaraki.jp\0" +"is-gone.com\0" +"monzaedellabrianza.it\0" +"wskr.gov.pl\0" +"hembygdsforbund.museum\0at-band-camp.net\0is-an-entertainer.com\0" +"ac.rs\0" +"lucca.it\0ac.ru\0ac.se\0lib.va.us\0" +"naturhistorisches.museum\0" +"atami.shizuoka.jp\0bedzin.pl\0ac.rw\0degree\0" +"spy.museum\0" +"chungnam.kr\0mragowo.pl\0abogado\0" +"molde.no\0" +"griw.gov.pl\0" +"r\xc3\xa1hkker\xc3\xa1vju.no\0" +"yamagata.gifu.jp\0onna.okinawa.jp\0" +"mormon\0" +"k12.ky.us\0" +"tra.kp\0" +"ac.th\0" +"trondheim.no\0" +"ac.sz\0ac.tj\0" +"q-a.eu.org\0" +"yao.osaka.jp\0" +"reggio-calabria.it\0is-a-chef.com\0" +"ddnsfree.com\0" +"*.yokohama.jp\0\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0" +"namsskogan.no\0" +"togane.chiba.jp\0alesund.no\0" +"gen.nz\0ac.ug\0" +"drammen.no\0" +"embroidery.museum\0" +"ac.tz\0\xe6\x9b\xb8\xe7\xb1\x8d\0" +"ac.uk\0lgbt\0" +"nakadomari.aomori.jp\0ohkura.yamagata.jp\0" +"muroran.hokkaido.jp\0" +"rimini.it\0yokawa.hyogo.jp\0flatanger.no\0" +"guge\0" +"vic.edu.au\0g12.br\0" +"video\0" +"venezia.it\0damnserver.com\0" +"is-a-blogger.com\0" +"webhosting.be\0from-nj.com\0" +"rep.kp\0" +"gob.mx\0" +"gob.ni\0ac.vn\0" +"romskog.no\0" +"itoman.okinawa.jp\0" +"silk.museum\0media\0ryukyu\0" +"pizza\0" +"arts.ve\0" +"trentino-sued-tirol.it\0" +"kyotamba.kyoto.jp\0" +"name.hr\0" +"kamifurano.hokkaido.jp\0""12hp.de\0" +"loans\0" +"kimitsu.chiba.jp\0dclk\0bashkiria.ru\0" +"army\0" +"law.za\0freeddns.org\0" +"umbria.it\0naruto.tokushima.jp\0kyiv.ua\0" +"koeln.museum\0" +"trentinosudtirol.it\0" +"parliament.cy\0gob.pa\0" +"southcarolina.museum\0cc.de.us\0rentals\0" +"mediocampidano.it\0*.elb.amazonaws.com\0" +"name.et\0usa.museum\0gob.pe\0" +"bus.museum\0crafts.museum\0egyptian.museum\0" +"bashkiria.su\0" +"gob.pk\0" +"oita.oita.jp\0" +"nagasu.kumamoto.jp\0sener\0cloudfunctions.net\0" +"works.aero\0" +"arpa\0sanagochi.tokushima.jp\0belau.pw\0chernovtsy.ua\0" +"nakatane.kagoshima.jp\0" +"12hp.at\0" +"bizen.okayama.jp\0" +"seoul.kr\0" +"br\xc3\xb8nn\xc3\xb8ysund.no\0" +"arakawa.tokyo.jp\0" +"uk.eu.org\0" +"carraramassa.it\0ac.za\0" +"florist\0" +"undersea.museum\0" +"pics\0" +"seki.gifu.jp\0" +"kutchan.hokkaido.jp\0" +"sebastopol.ua\0" +"capitalone\0" +"lazio.it\0hakata.fukuoka.jp\0" +"ac.zm\0""12hp.ch\0" +"name.cy\0cpa.pro\0gen.tr\0cc.mi.us\0" +"kosaka.akita.jp\0zp.gov.pl\0" +"aju.br\0" +"verran.no\0" +"otsuchi.iwate.jp\0" +"tsushima.aichi.jp\0" +"numazu.shizuoka.jp\0ac.zw\0" +"vallee-aoste.it\0rana.no\0" +"name.eg\0help\0" +"!city.yokohama.jp\0arts.ro\0" +"newjersey.museum\0" +"no.it\0yorkshire.museum\0vladimir.su\0" +"medio-campidano.it\0nebraska.museum\0" +"zgorzelec.pl\0" +"gob.sv\0" +"pt.it\0kurotaki.nara.jp\0est-a-la-masion.com\0" +"valdaosta.it\0\xe6\xbe\xb3\xe9\x96\x80\0" +"shinjo.nara.jp\0" +"name.az\0miharu.fukushima.jp\0hospital\0" +"sayama.osaka.jp\0aa.no\0" +"toyotomi.hokkaido.jp\0sk\xc3\xa1nit.no\0" +"ikeda.gifu.jp\0" +"trentino.it\0kyuragi.saga.jp\0" +"si.it\0asda\0" +"maritimo.museum\0bv.nl\0" +"greta.fr\0" +"xxx\0arte\0" +"s3.eu-west-2.amazonaws.com\0" +"mibu.tochigi.jp\0" +"codespot.com\0" +"meloy.no\0" +"\xe7\xa7\x8b\xe7\x94\xb0.jp\0" +"ms.leg.br\0" +"planetarium.museum\0al.leg.br\0" +"abruzzo.it\0kaneyama.yamagata.jp\0" +"gob.ve\0" +"\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0read-books.org\0" +"xyz\0nym.by\0" +"higashichichibu.saitama.jp\0catholic\0nym.bz\0" +"minamiboso.chiba.jp\0" +"barletta-trani-andria.it\0r\xc3\xa1isa.no\0" +"vladimir.ru\0" +"ise.mie.jp\0arts.nf\0realestate\0" +"higashikagawa.kagawa.jp\0kristiansand.no\0" +"pavia.it\0bbva\0salon\0" +"hoyanger.no\0" +"codes\0" +"tabuse.yamaguchi.jp\0" +"esashi.hokkaido.jp\0" +"joboji.iwate.jp\0h\xc3\xb8ylandet.no\0" +"tatar\0" +"mt.leg.br\0" +"4.bg\0bahcavuotna.no\0" +"aogaki.hyogo.jp\0settsu.osaka.jp\0" +"nishi.osaka.jp\0" +"from-pa.com\0" +"ibaraki.ibaraki.jp\0kitamoto.saitama.jp\0" +"campobasso.it\0furniture\0" +"here\0" +"nanto.toyama.jp\0" +"komae.tokyo.jp\0familyds.org\0" +"dynalias.com\0" +"kushiro.hokkaido.jp\0poznan.pl\0" +"kitaura.miyazaki.jp\0\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0" +"lib.ee\0" +"hirosaki.aomori.jp\0modern.museum\0" +"waw.pl\0" +"isehara.kanagawa.jp\0goto.nagasaki.jp\0barsyonline.com\0" +"health.nz\0guru\0" +"rishirifuji.hokkaido.jp\0" +"bolzano.it\0sor-aurdal.no\0volda.no\0" +"kami.kochi.jp\0promo\0" +"asia\0foundation.museum\0ustka.pl\0" +"ws.na\0" +"bologna.it\0gs.hm.no\0" +"imperia.it\0fusa.no\0" +"merckmsd\0reviews\0firewall-gateway.com\0" +"press.cy\0j\xc3\xb8lster.no\0" +"globo\0" +"uto.kumamoto.jp\0" +"k12.mn.us\0" +"\xe6\xbe\xb3\xe9\x97\xa8\0nym.gr\0" +"minamiise.mie.jp\0" +"delivery\0elasticbeanstalk.com\0" +"r\xc3\xa5""de.no\0" +"ballooning.aero\0priv.hu\0" +"nationalfirearms.museum\0k12.pa.us\0" +"tselinograd.su\0" +"koto.shiga.jp\0kr\xc3\xb8""dsherad.no\0" +"nm.cn\0" +"dy.fi\0" +"ayagawa.kagawa.jp\0" +"dynamic-dns.info\0" +"gs.ol.no\0ping\0you\0" +"goshiki.hyogo.jp\0" +"pink\0" +"kamisunagawa.hokkaido.jp\0" +"nogata.fukuoka.jp\0" +"artcenter.museum\0" +"omura.nagasaki.jp\0" +"kai.yamanashi.jp\0usantiques.museum\0" +"luzern.museum\0" +"kuwana.mie.jp\0" +"rehab\0" +"kasuga.fukuoka.jp\0" +"pilots.museum\0" +"ino.kochi.jp\0square7.net\0" +"herad.no\0blogspot.co.at\0" +"bradesco\0" +"friuli-vgiulia.it\0spdns.eu\0" +"act.au\0iwatsuki.saitama.jp\0cc.dc.us\0" +"kinko.kagoshima.jp\0" +"tatsuno.nagano.jp\0" +"sand\xc3\xb8y.no\0" +"masfjorden.no\0" +"bt.it\0myactivedirectory.com\0" +"\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0nym.la\0" +"baghdad.museum\0" +"seljord.no\0" +"archaeology.museum\0" +"natural.bo\0" +"isen.kagoshima.jp\0" +"nym.li\0" +"santabarbara.museum\0nym.kz\0" +"kamiizumi.saitama.jp\0" +"minato.osaka.jp\0" +"puglia.it\0nico\0" +"nara.jp\0" +"alabama.museum\0gjerdrum.no\0nym.lt\0" +"nym.lu\0nym.me\0" +"priv.at\0" +"birkenes.no\0""4u.com\0" +"ishigaki.okinawa.jp\0virgin\0" +"fujisawa.kanagawa.jp\0ngrok.io\0" +"is.it\0" +"intelligence.museum\0" +"name.vn\0" +"health.vn\0" +"uzhgorod.ua\0" +"yokosuka.kanagawa.jp\0murata.miyagi.jp\0taobao\0" +"from.hr\0" +"nym.mx\0" +"travelers\0" +"\xe7\xae\x87\xe4\xba\xba.hk\0" +"tokoname.aichi.jp\0graz.museum\0stockholm.museum\0nordre-land.no\0yun\0" +"shinjo.okayama.jp\0" +"ninja\0statebank\0" +"kr\xc3\xa5""anghke.no\0" +"kasai.hyogo.jp\0" +"nakagawa.fukuoka.jp\0" +"temasek\0" +"gucci\0nym.nz\0" +"pr.it\0nakamura.kochi.jp\0name.tj\0" +"!www.ck\0" +"dyndns1.de\0" +"\xce\xb5\xce\xbb\0ap-northeast-1.elasticbeanstalk.com\0" +"science-fiction.museum\0" +"suli.hu\0name.tr\0" +"mer\xc3\xa5ker.no\0r\xc3\xb8ros.no\0is-a-chef.net\0nym.pe\0" +"name.tt\0" +"mie.jp\0" +"environmentalconservation.museum\0" +"kikugawa.shizuoka.jp\0" +"miyoshi.saitama.jp\0" +"sogne.no\0dsmynas.com\0" +"anjo.aichi.jp\0mincom.tn\0ee.eu.org\0" +"edunet.tn\0" +"bari.it\0" +"murmansk.su\0collegefan.org\0nym.pt\0" +"spdns.de\0" +"leksvik.no\0" +"nesset.no\0stokke.no\0" +"workinggroup.aero\0\xc3\xb8yer.no\0" +"deal\0" +"deporte.bo\0tattoo\0" +"skanit.no\0lib.mi.us\0" +"sakegawa.yamagata.jp\0grane.no\0" +"medicina.bo\0" +"labour.museum\0edu.eu.org\0blogspot.co.id\0" +"izumiotsu.osaka.jp\0" +"tuscany.it\0" +"l\xc3\xb8""dingen.no\0starhub\0" +"shinshinotsu.hokkaido.jp\0" +"nishikatsura.yamanashi.jp\0paleo.museum\0selfip.org\0" +"blogspot.co.il\0" +"francaise.museum\0" +"nore-og-uvdal.no\0" +"zip\0" +"video.hu\0*.quipelements.com\0" +"naoshima.kagawa.jp\0" +"obama.fukui.jp\0hiroo.hokkaido.jp\0" +"2.bg\0surrey.museum\0" +"valle-aosta.it\0baltimore.museum\0deloitte\0" +"jaworzno.pl\0" +"nym.sk\0" +"kongsberg.no\0" +"frog.museum\0" +"*.cryptonomic.net\0" +"\xd9\x82\xd8\xb7\xd8\xb1\0" +"name.qa\0" +"name.pr\0" +"int.ar\0academia.bo\0nike\0nym.su\0" +"service.gov.uk\0" +"toyotsu.fukuoka.jp\0" +"nym.sx\0" +"int.az\0" +"mat.br\0" +"int.bo\0rel.ht\0svizzera.museum\0cloudns.eu\0" +"udine.it\0name.na\0" +"vang.no\0" +"kahoku.ishikawa.jp\0katsuragi.wakayama.jp\0" +"nym.tw\0" +"kasaoka.okayama.jp\0name.mv\0" +"name.ng\0opoczno.pl\0" +"taiki.hokkaido.jp\0" +"name.my\0" +"int.ci\0" +"yamagata.yamagata.jp\0" +"twmail.net\0" +"ichikawa.chiba.jp\0office\0" +"k12.mt.us\0" +"int.co\0" +"austrheim.no\0" +"pp.az\0hellas.museum\0cbg.ru\0" +"oyer.no\0" +"komforb.se\0\xe6\x85\x88\xe5\x96\x84\0" +"barefoot\0" +"tachikawa.tokyo.jp\0" +"surnadal.no\0" +"shinichi.hiroshima.jp\0moriya.ibaraki.jp\0" +"nakanoto.ishikawa.jp\0" +"tysvar.no\0" +"naturalsciences.museum\0" +"kasumigaura.ibaraki.jp\0corvette.museum\0" +"academy.museum\0google\0" +"philadelphia.museum\0" +"sakurai.nara.jp\0aukra.no\0" +"broadcast.museum\0gs.jan-mayen.no\0" +"marshalls\0cust.prod.thingdust.io\0" +"hokuto.yamanashi.jp\0" +"gs.st.no\0cloudns.in\0" +"nishi.fukuoka.jp\0name.mk\0showtime\0" +"cc.al.us\0hb.cldmail.ru\0" +"gdansk.pl\0" +"uvic.museum\0" +"macys\0jdevcloud.com\0" +"berlin.museum\0evenassi.no\0" +"mitaka.tokyo.jp\0ru.com\0se.com\0" +"takahama.fukui.jp\0" +"dontexist.com\0" +"shikokuchuo.ehime.jp\0cloudns.cc\0" +"name.jo\0tateyama.chiba.jp\0" +"kota.aichi.jp\0" +"br.it\0cb.it\0floro.no\0" +"coupon\0from-ne.com\0" +"press.se\0" +"vagsoy.no\0" +"watarai.mie.jp\0worse-than.tv\0" +"massacarrara.it\0" +"sor-odal.no\0" +"limanowa.pl\0" +"owariasahi.aichi.jp\0phoenix.museum\0nm.us\0" +"zhitomir.ua\0" +"narita.chiba.jp\0" +"matsumae.hokkaido.jp\0" +"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0" +"pr.us\0" +"engineer\0" +"lidl\0pointto.us\0" +"indigena.bo\0cc.me.us\0" +"tenri.nara.jp\0burghof.museum\0" +"jp.net\0" +"int.is\0" +"skedsmo.no\0" +"ogliastra.it\0himeji.hyogo.jp\0rel.pl\0" +"dell\0" +"minnesota.museum\0" +"otsuki.yamanashi.jp\0flekkefjord.no\0" +"uchihara.ibaraki.jp\0" +"mycd.eu\0" +"asmatart.museum\0life\0webredirect.org\0" +"misato.shimane.jp\0sopot.pl\0" +"game.tw\0\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0" +"risor.no\0" +"yahiko.niigata.jp\0" +"odo.br\0int.la\0is-a-bulls-fan.com\0" +"lunner.no\0" +"lodi.it\0nishigo.fukushima.jp\0" +"cc.vi.us\0blogspot.co.uk\0" +"nemuro.hokkaido.jp\0shimoji.okinawa.jp\0" +"piedmont.it\0" +"tennis\0" +"int.lk\0lib.gu.us\0" +"jur.pro\0*.cns.joyent.com\0" +"nanao.ishikawa.jp\0kunstunddesign.museum\0" +"sch.ae\0xerox\0eu-west-1.elasticbeanstalk.com\0" +"now.sh\0" +"paragliding.aero\0okagaki.fukuoka.jp\0yamazoe.nara.jp\0" +"susono.shizuoka.jp\0iwade.wakayama.jp\0r\xc3\xb8yrvik.no\0" +"shimogo.fukushima.jp\0yufu.oita.jp\0soc.lk\0" +"kagoshima.kagoshima.jp\0lib.in.us\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0duckdns.org\0penza.su\0" +"construction\0" +"etnedal.no\0" +"priv.pl\0" +"pug.it\0amsterdam.museum\0" +"\xe5\xb1\xb1\xe6\xa2\xa8.jp\0locker\0" +"press.ma\0" +"wakuya.miyagi.jp\0" +"mlbfan.org\0" +"gyeonggi.kr\0" +"int.mv\0" +"mizuho.tokyo.jp\0int.mw\0" +"for-more.biz\0" +"plc.ly\0int.ni\0" +"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0" +"fukushima.fukushima.jp\0" +"krakow.pl\0" +"dedyn.io\0" +"school\0" +"0.bg\0taiki.mie.jp\0goodhands\0stuff-4-sale.us\0" +"priv.no\0" +"chrome\0zone\0kurgan.su\0serveminecraft.net\0" +"university\0" +"\xe9\xa3\x9f\xe5\x93\x81\0" +"sandvikcoromant\0" +"kyotanabe.kyoto.jp\0" +"berlin\0like\0" +"\xe5\xb1\xb1\xe5\xbd\xa2.jp\0" +"z.bg\0audi\0" +"azerbaijan.su\0" +"s3-website-ap-southeast-1.amazonaws.com\0cn.eu.org\0" +"verm\xc3\xb6gensberater\0" +"leikanger.no\0" +"\xe5\x85\xb5\xe5\xba\xab.jp\0" +"andoy.no\0" +"epilepsy.museum\0" +"int.pt\0" +"desi\0locus\0" +"satx.museum\0" +"iron.museum\0" +"n\xc3\xa1vuotna.no\0" +"nanmoku.gunma.jp\0nakai.kanagawa.jp\0kunitachi.tokyo.jp\0" +"bauern.museum\0" +"tempio-olbia.it\0" +"dolls.museum\0osteroy.no\0blogspot.co.ke\0" +"uscountryestate.museum\0beer\0" +"tobe.ehime.jp\0" +"priv.me\0browsersafetymark.io\0za.net\0" +"hiji.oita.jp\0" +"campania.it\0seiro.niigata.jp\0" +"homeip.net\0" +"democracia.bo\0tsushima.nagasaki.jp\0ipiranga\0" +"cloudns.us\0" +"brother\0" +"parachuting.aero\0limo\0" +"oumu.hokkaido.jp\0" +"gjesdal.no\0" +"int.ru\0" +"int.rw\0wmflabs.org\0" +"vistaprint\0" +"link\0" +"koshu.yamanashi.jp\0tvedestrand.no\0" +"friuli-v-giulia.it\0" +"sc.cn\0" +"lenug.su\0" +"the.br\0aya.miyazaki.jp\0hino.tottori.jp\0chimkent.su\0" +"\xe6\x89\x8b\xe6\x9c\xba\0" +"kita.tokyo.jp\0int.tj\0" +"mobile\0" +"pp.se\0pp.ru\0" +"sch.id\0semboku.akita.jp\0" +"\xd7\xa7\xd7\x95\xd7\x9d\0" +"corporation.museum\0int.tt\0onthewifi.com\0" +"kv.ua\0" +"swinoujscie.pl\0" +"trentinos-tirol.it\0fresenius\0" +"kounosu.saitama.jp\0elvendrell.museum\0exnet.su\0" +"shikabe.hokkaido.jp\0fuoisku.no\0cc.co.us\0from-id.com\0" +"kumamoto.kumamoto.jp\0kartuzy.pl\0" +"repbody.aero\0sch.ir\0tsuno.kochi.jp\0" +"qld.au\0" +"mobily\0" +"os.hordaland.no\0aetna\0" +"kitahata.saga.jp\0direct\0" +"kiev.ua\0" +"int.ve\0blogspot.co.nz\0" +"tomioka.gunma.jp\0" +"kawagoe.saitama.jp\0*.sensiosite.cloud\0" +"sch.jo\0pp.ua\0" +"katagami.akita.jp\0plc.uk\0cy.eu.org\0" +"hgtv\0" +"cc.hi.us\0" +"tochigi.jp\0int.vn\0" +"kumiyama.kyoto.jp\0badajoz.museum\0" +"umig.gov.pl\0" +"chijiwa.nagasaki.jp\0caravan\0" +"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0flakstad.no\0" +"lom.it\0spdns.org\0" +"agano.niigata.jp\0" +"broke-it.net\0" +"mar.it\0satte.saitama.jp\0village.museum\0" +"is-a-llama.com\0" +"certification.aero\0ayabe.kyoto.jp\0poivron.org\0" +"hokksund.no\0" +"ujitawara.kyoto.jp\0" +"my.id\0nishinoshima.shimane.jp\0sch.lk\0" +"niepce.museum\0" +"vaapste.no\0" +"hokuto.hokkaido.jp\0" +"ojiya.niigata.jp\0cc.oh.us\0cz.eu.org\0" +"esan.hokkaido.jp\0daejeon.kr\0pacific.museum\0" +"\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0kerryhotels\0" +"minamiechizen.fukui.jp\0" +"sch.ly\0artanddesign.museum\0orskog.no\0" +"\xe6\x89\x8b\xe8\xa1\xa8\0" +"ogawa.saitama.jp\0gwangju.kr\0" +"myoko.niigata.jp\0" +"yugawara.kanagawa.jp\0glogow.pl\0lib.ca.us\0s3-us-west-2.amazonaws.com\0" +"piemonte.it\0trentinoa-adige.it\0cleaning\0" +"pn.it\0yamagata.jp\0" +"sch.ng\0tranby.no\0" +"chicago.museum\0" +"hvaler.no\0" +"nannestad.no\0" +"uchinomi.kagawa.jp\0" +"shinjuku.tokyo.jp\0reise\0sharp\0" +"inagi.tokyo.jp\0" +"dk.eu.org\0" +"saka.hiroshima.jp\0oregontrail.museum\0" +"dyn.ddnss.de\0" +"accountant\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0" +"hasama.oita.jp\0play\0" +"live\0" +"passagens\0" +"okinawa\0" +"kvanangen.no\0" +"reggioemilia.it\0matsusaka.mie.jp\0" +"lom.no\0" +"maritime.museum\0targi.pl\0" +"gildeskal.no\0hk.org\0" +"shinonsen.hyogo.jp\0" +"gmail\0" +"sc.kr\0" +"is-an-anarchist.com\0" +"sch.qa\0" +"lib.nv.us\0" +"hurum.no\0" +"cagliari.it\0" +"stordal.no\0" +"touch.museum\0" +"tozsde.hu\0servehumour.com\0" +"beauty\0" +"kirovograd.ua\0" +"ma.gov.br\0midtre-gauldal.no\0" +"ikusaka.nagano.jp\0gs.ah.no\0" +"nid.io\0" +"drayddns.com\0" +"cloudns.pw\0hashbang.sh\0" +"turen.tn\0" +"portland.museum\0" +"lib.vi.us\0" +"x.bg\0sch.sa\0de.eu.org\0" +"ringebu.no\0" +"kvits\xc3\xb8y.no\0" +"aver\xc3\xb8y.no\0" +"m\xc4\x81ori.nz\0" +"seika.kyoto.jp\0" +"townnews-staging.com\0" +"kobayashi.miyazaki.jp\0resistance.museum\0" +"s\xc3\xb8r-varanger.no\0" +"discount\0" +"shinto.gunma.jp\0" +"higashiyama.kyoto.jp\0" +"hashima.gifu.jp\0" +"vanguard\0" +"saijo.ehime.jp\0" +"fr\xc3\xb8ya.no\0abarth\0best\0" +"k12.nh.us\0" +"sunagawa.hokkaido.jp\0" +"eu.int\0" +"tsuchiura.ibaraki.jp\0" +"omaezaki.shizuoka.jp\0sejny.pl\0" +"blogspot.co.za\0" +"sa.au\0" +"auto\0" +"elverum.no\0fairwinds\0" +"umb.it\0ochi.kochi.jp\0" +"tv.bb\0veneto.it\0" +"okinoshima.shimane.jp\0z.se\0" +"gs.of.no\0" +"\xe7\xa6\x8f\xe5\xb3\xb6.jp\0prochowice.pl\0" +"shonai.yamagata.jp\0supply\0" +"ashikaga.tochigi.jp\0stange.no\0" +"gujo.gifu.jp\0bible.museum\0" +"tv.bo\0dyn-o-saur.com\0" +"forli-cesena.it\0mizunami.gifu.jp\0frana.no\0" +"tv.br\0" +"govt.nz\0metlife\0" +"takatsuki.shiga.jp\0wpdevcloud.com\0" +"sa.cr\0\xe5\xa5\x88\xe8\x89\xaf.jp\0kopervik.no\0" +"historisch.museum\0nyny.museum\0" +"k12.vt.us\0is-uberleet.com\0" +"jevnaker.no\0" +"vda.it\0larsson.museum\0maori.nz\0" +"cremona.it\0" +"barsy.net\0" +"emr.it\0" +"\xe5\xba\x83\xe5\xb3\xb6.jp\0" +"ass.km\0v\xc3\xa5gs\xc3\xb8y.no\0" +"etisalat\0" +"noda.chiba.jp\0dominic.ua\0flickr\0sochi.su\0" +"oguchi.aichi.jp\0herokussl.com\0" +"kasuya.fukuoka.jp\0\xd9\x83\xd9\x88\xd9\x85\0" +"cosenza.it\0" +"yalta.ua\0download\0" +"bn.it\0" +"rade.no\0" +"ro.eu.org\0" +"bytom.pl\0" +"onion\0rmit\0homeunix.com\0ybo.faith\0" +"flanders.museum\0" +"london.museum\0\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0" +"hamburg.museum\0" +"altoadige.it\0house.museum\0dnsiskinky.com\0" +"collection.museum\0countryestate.museum\0netflix\0" +"shirakawa.fukushima.jp\0cherkassy.ua\0" +"dnepropetrovsk.ua\0" +"sc.ug\0" +"sc.tz\0" +"pharmacien.fr\0brunel.museum\0\xe5\x81\xa5\xe5\xba\xb7\0router.management\0" +"finland.museum\0demon.nl\0" +"im.it\0cc.ma.us\0\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0" +"rishiri.hokkaido.jp\0actor\0" +"health\0" +"hirata.fukushima.jp\0daito.osaka.jp\0sch.zm\0" +"sc.us\0" +"my-gateway.de\0" +"ca.eu.org\0" +"moriyoshi.akita.jp\0s3-website.eu-central-1.amazonaws.com\0" +"kr.it\0setouchi.okayama.jp\0cc.nv.us\0" +"nagiso.nagano.jp\0" +"ascoli-piceno.it\0tx.us\0" +"otaki.nagano.jp\0" +"journalism.museum\0" +"\xe9\x9b\x86\xe5\x9b\xa2\0" +"biella.it\0" +"fujimi.saitama.jp\0" +"consulting.aero\0kvafjord.no\0ooguy.com\0" +"shimabara.nagasaki.jp\0yatsuka.shimane.jp\0" +"sakuho.nagano.jp\0twmail.org\0" +"shibata.niigata.jp\0corsica\0" +"gb.com\0" +"takaishi.osaka.jp\0" +"eastcoast.museum\0" +"lib.fl.us\0volkswagen\0" +"si.eu.org\0" +"kisofukushima.nagano.jp\0\xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0co.com\0selfip.biz\0" +"trentino-stirol.it\0mamurogawa.yamagata.jp\0" +"sa.it\0" +"suzuki\0" +"tv.im\0is-a-player.com\0" +"entomology.museum\0" +"lib.hi.us\0istmein.de\0" +"from-ak.com\0" +"time.no\0homedepot\0" +"reggio-emilia.it\0" +"tv.it\0" +"\xd9\xbe\xd8\xa7\xd9\x83\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0attorney\0" +}; + +static const quint16 tldChunkCount = 2; +static const quint32 tldChunks[] = {65533, 98615}; + +QT_END_NAMESPACE + +#endif // QURLTLD_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qutfcodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qutfcodec_p.h new file mode 100644 index 000000000..152fe174c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qutfcodec_p.h @@ -0,0 +1,391 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUTFCODEC_P_H +#define QUTFCODEC_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/qtextcodec.h" +#include "private/qtextcodec_p.h" + +QT_BEGIN_NAMESPACE + +struct QUtf8BaseTraits +{ + static const bool isTrusted = false; + static const bool allowNonCharacters = true; + static const bool skipAsciiHandling = false; + static const int Error = -1; + static const int EndOfString = -2; + + static bool isValidCharacter(uint u) + { return int(u) >= 0; } + + static void appendByte(uchar *&ptr, uchar b) + { *ptr++ = b; } + + static uchar peekByte(const uchar *ptr, int n = 0) + { return ptr[n]; } + + static qptrdiff availableBytes(const uchar *ptr, const uchar *end) + { return end - ptr; } + + static void advanceByte(const uchar *&ptr, int n = 1) + { ptr += n; } + + static void appendUtf16(ushort *&ptr, ushort uc) + { *ptr++ = uc; } + + static void appendUcs4(ushort *&ptr, uint uc) + { + appendUtf16(ptr, QChar::highSurrogate(uc)); + appendUtf16(ptr, QChar::lowSurrogate(uc)); + } + + static ushort peekUtf16(const ushort *ptr, int n = 0) + { return ptr[n]; } + + static qptrdiff availableUtf16(const ushort *ptr, const ushort *end) + { return end - ptr; } + + static void advanceUtf16(const ushort *&ptr, int n = 1) + { ptr += n; } + + // it's possible to output to UCS-4 too + static void appendUtf16(uint *&ptr, ushort uc) + { *ptr++ = uc; } + + static void appendUcs4(uint *&ptr, uint uc) + { *ptr++ = uc; } +}; + +struct QUtf8BaseTraitsNoAscii : public QUtf8BaseTraits +{ + static const bool skipAsciiHandling = true; +}; + +namespace QUtf8Functions +{ + /// returns 0 on success; errors can only happen if \a u is a surrogate: + /// Error if \a u is a low surrogate; + /// if \a u is a high surrogate, Error if the next isn't a low one, + /// EndOfString if we run into the end of the string. + template inline + int toUtf8(ushort u, OutputPtr &dst, InputPtr &src, InputPtr end) + { + if (!Traits::skipAsciiHandling && u < 0x80) { + // U+0000 to U+007F (US-ASCII) - one byte + Traits::appendByte(dst, uchar(u)); + return 0; + } else if (u < 0x0800) { + // U+0080 to U+07FF - two bytes + // first of two bytes + Traits::appendByte(dst, 0xc0 | uchar(u >> 6)); + } else { + if (!QChar::isSurrogate(u)) { + // U+0800 to U+FFFF (except U+D800-U+DFFF) - three bytes + if (!Traits::allowNonCharacters && QChar::isNonCharacter(u)) + return Traits::Error; + + // first of three bytes + Traits::appendByte(dst, 0xe0 | uchar(u >> 12)); + } else { + // U+10000 to U+10FFFF - four bytes + // need to get one extra codepoint + if (Traits::availableUtf16(src, end) == 0) + return Traits::EndOfString; + + ushort low = Traits::peekUtf16(src); + if (!QChar::isHighSurrogate(u)) + return Traits::Error; + if (!QChar::isLowSurrogate(low)) + return Traits::Error; + + Traits::advanceUtf16(src); + uint ucs4 = QChar::surrogateToUcs4(u, low); + + if (!Traits::allowNonCharacters && QChar::isNonCharacter(ucs4)) + return Traits::Error; + + // first byte + Traits::appendByte(dst, 0xf0 | (uchar(ucs4 >> 18) & 0xf)); + + // second of four bytes + Traits::appendByte(dst, 0x80 | (uchar(ucs4 >> 12) & 0x3f)); + + // for the rest of the bytes + u = ushort(ucs4); + } + + // second to last byte + Traits::appendByte(dst, 0x80 | (uchar(u >> 6) & 0x3f)); + } + + // last byte + Traits::appendByte(dst, 0x80 | (u & 0x3f)); + return 0; + } + + inline bool isContinuationByte(uchar b) + { + return (b & 0xc0) == 0x80; + } + + /// returns the number of characters consumed (including \a b) in case of success; + /// returns negative in case of error: Traits::Error or Traits::EndOfString + template inline + int fromUtf8(uchar b, OutputPtr &dst, InputPtr &src, InputPtr end) + { + int charsNeeded; + uint min_uc; + uint uc; + + if (!Traits::skipAsciiHandling && b < 0x80) { + // US-ASCII + Traits::appendUtf16(dst, b); + return 1; + } + + if (!Traits::isTrusted && Q_UNLIKELY(b <= 0xC1)) { + // an UTF-8 first character must be at least 0xC0 + // however, all 0xC0 and 0xC1 first bytes can only produce overlong sequences + return Traits::Error; + } else if (b < 0xe0) { + charsNeeded = 2; + min_uc = 0x80; + uc = b & 0x1f; + } else if (b < 0xf0) { + charsNeeded = 3; + min_uc = 0x800; + uc = b & 0x0f; + } else if (b < 0xf5) { + charsNeeded = 4; + min_uc = 0x10000; + uc = b & 0x07; + } else { + // the last Unicode character is U+10FFFF + // it's encoded in UTF-8 as "\xF4\x8F\xBF\xBF" + // therefore, a byte higher than 0xF4 is not the UTF-8 first byte + return Traits::Error; + } + + int bytesAvailable = Traits::availableBytes(src, end); + if (Q_UNLIKELY(bytesAvailable < charsNeeded - 1)) { + // it's possible that we have an error instead of just unfinished bytes + if (bytesAvailable > 0 && !isContinuationByte(Traits::peekByte(src, 0))) + return Traits::Error; + if (bytesAvailable > 1 && !isContinuationByte(Traits::peekByte(src, 1))) + return Traits::Error; + return Traits::EndOfString; + } + + // first continuation character + b = Traits::peekByte(src, 0); + if (!isContinuationByte(b)) + return Traits::Error; + uc <<= 6; + uc |= b & 0x3f; + + if (charsNeeded > 2) { + // second continuation character + b = Traits::peekByte(src, 1); + if (!isContinuationByte(b)) + return Traits::Error; + uc <<= 6; + uc |= b & 0x3f; + + if (charsNeeded > 3) { + // third continuation character + b = Traits::peekByte(src, 2); + if (!isContinuationByte(b)) + return Traits::Error; + uc <<= 6; + uc |= b & 0x3f; + } + } + + // we've decoded something; safety-check it + if (!Traits::isTrusted) { + if (uc < min_uc) + return Traits::Error; + if (QChar::isSurrogate(uc) || uc > QChar::LastValidCodePoint) + return Traits::Error; + if (!Traits::allowNonCharacters && QChar::isNonCharacter(uc)) + return Traits::Error; + } + + // write the UTF-16 sequence + if (!QChar::requiresSurrogates(uc)) { + // UTF-8 decoded and no surrogates are required + // detach if necessary + Traits::appendUtf16(dst, ushort(uc)); + } else { + // UTF-8 decoded to something that requires a surrogate pair + Traits::appendUcs4(dst, uc); + } + + Traits::advanceByte(src, charsNeeded - 1); + return charsNeeded; + } +} + +enum DataEndianness +{ + DetectEndianness, + BigEndianness, + LittleEndianness +}; + +struct QUtf8 +{ + static QChar *convertToUnicode(QChar *, const char *, int) Q_DECL_NOTHROW; + static QString convertToUnicode(const char *, int); + static QString convertToUnicode(const char *, int, QTextCodec::ConverterState *); + static QByteArray convertFromUnicode(const QChar *, int); + static QByteArray convertFromUnicode(const QChar *, int, QTextCodec::ConverterState *); +}; + +struct QUtf16 +{ + static QString convertToUnicode(const char *, int, QTextCodec::ConverterState *, DataEndianness = DetectEndianness); + static QByteArray convertFromUnicode(const QChar *, int, QTextCodec::ConverterState *, DataEndianness = DetectEndianness); +}; + +struct QUtf32 +{ + static QString convertToUnicode(const char *, int, QTextCodec::ConverterState *, DataEndianness = DetectEndianness); + static QByteArray convertFromUnicode(const QChar *, int, QTextCodec::ConverterState *, DataEndianness = DetectEndianness); +}; + +#ifndef QT_NO_TEXTCODEC + +class QUtf8Codec : public QTextCodec { +public: + ~QUtf8Codec(); + + QByteArray name() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; + + QString convertToUnicode(const char *, int, ConverterState *) const Q_DECL_OVERRIDE; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const Q_DECL_OVERRIDE; + void convertToUnicode(QString *target, const char *, int, ConverterState *) const; +}; + +class QUtf16Codec : public QTextCodec { +protected: +public: + QUtf16Codec() { e = DetectEndianness; } + ~QUtf16Codec(); + + QByteArray name() const Q_DECL_OVERRIDE; + QList aliases() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; + + QString convertToUnicode(const char *, int, ConverterState *) const Q_DECL_OVERRIDE; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const Q_DECL_OVERRIDE; + +protected: + DataEndianness e; +}; + +class QUtf16BECodec : public QUtf16Codec { +public: + QUtf16BECodec() : QUtf16Codec() { e = BigEndianness; } + QByteArray name() const Q_DECL_OVERRIDE; + QList aliases() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; +}; + +class QUtf16LECodec : public QUtf16Codec { +public: + QUtf16LECodec() : QUtf16Codec() { e = LittleEndianness; } + QByteArray name() const Q_DECL_OVERRIDE; + QList aliases() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; +}; + +class QUtf32Codec : public QTextCodec { +public: + QUtf32Codec() { e = DetectEndianness; } + ~QUtf32Codec(); + + QByteArray name() const Q_DECL_OVERRIDE; + QList aliases() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; + + QString convertToUnicode(const char *, int, ConverterState *) const Q_DECL_OVERRIDE; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const Q_DECL_OVERRIDE; + +protected: + DataEndianness e; +}; + +class QUtf32BECodec : public QUtf32Codec { +public: + QUtf32BECodec() : QUtf32Codec() { e = BigEndianness; } + QByteArray name() const Q_DECL_OVERRIDE; + QList aliases() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; +}; + +class QUtf32LECodec : public QUtf32Codec { +public: + QUtf32LECodec() : QUtf32Codec() { e = LittleEndianness; } + QByteArray name() const Q_DECL_OVERRIDE; + QList aliases() const Q_DECL_OVERRIDE; + int mibEnum() const Q_DECL_OVERRIDE; +}; + + +#endif // QT_NO_TEXTCODEC + +QT_END_NAMESPACE + +#endif // QUTFCODEC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qvariant_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qvariant_p.h new file mode 100644 index 000000000..487949431 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qvariant_p.h @@ -0,0 +1,496 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVARIANT_P_H +#define QVARIANT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include + +#include "qmetatypeswitcher_p.h" + +QT_BEGIN_NAMESPACE + +template +struct QVariantIntegrator +{ + static const bool CanUseInternalSpace = sizeof(T) <= sizeof(QVariant::Private::Data) + && ((QTypeInfoQuery::isRelocatable) || std::is_enum::value); + typedef std::integral_constant CanUseInternalSpace_t; +}; +Q_STATIC_ASSERT(QVariantIntegrator::CanUseInternalSpace); +Q_STATIC_ASSERT(QVariantIntegrator::CanUseInternalSpace); +Q_STATIC_ASSERT(QVariantIntegrator::CanUseInternalSpace); + +#ifdef Q_CC_SUN // Sun CC picks the wrong overload, so introduce awful hack + +// takes a type, returns the internal void* pointer cast +// to a pointer of the input type +template +inline T *v_cast(const QVariant::Private *nd, T * = 0) +{ + QVariant::Private *d = const_cast(nd); + return !QVariantIntegrator::CanUseInternalSpace + ? static_cast(d->data.shared->ptr) + : static_cast(static_cast(&d->data.c)); +} + +#else // every other compiler in this world + +template +inline const T *v_cast(const QVariant::Private *d, T * = 0) +{ + return !QVariantIntegrator::CanUseInternalSpace + ? static_cast(d->data.shared->ptr) + : static_cast(static_cast(&d->data.c)); +} + +template +inline T *v_cast(QVariant::Private *d, T * = 0) +{ + return !QVariantIntegrator::CanUseInternalSpace + ? static_cast(d->data.shared->ptr) + : static_cast(static_cast(&d->data.c)); +} + +#endif + + +//a simple template that avoids to allocate 2 memory chunks when creating a QVariant +template class QVariantPrivateSharedEx : public QVariant::PrivateShared +{ +public: + QVariantPrivateSharedEx() : QVariant::PrivateShared(&m_t), m_t() { } + QVariantPrivateSharedEx(const T&t) : QVariant::PrivateShared(&m_t), m_t(t) { } + +private: + T m_t; +}; + +template +inline void v_construct_helper(QVariant::Private *x, const T &t, std::true_type) +{ + new (&x->data) T(t); + x->is_shared = false; +} + +template +inline void v_construct_helper(QVariant::Private *x, const T &t, std::false_type) +{ + x->data.shared = new QVariantPrivateSharedEx(t); + x->is_shared = true; +} + +template +inline void v_construct_helper(QVariant::Private *x, std::true_type) +{ + new (&x->data) T(); + x->is_shared = false; +} + +template +inline void v_construct_helper(QVariant::Private *x, std::false_type) +{ + x->data.shared = new QVariantPrivateSharedEx; + x->is_shared = true; +} + +template +inline void v_construct(QVariant::Private *x, const T &t) +{ + // dispatch + v_construct_helper(x, t, typename QVariantIntegrator::CanUseInternalSpace_t()); +} + +// constructs a new variant if copy is 0, otherwise copy-constructs +template +inline void v_construct(QVariant::Private *x, const void *copy, T * = 0) +{ + if (copy) + v_construct(x, *static_cast(copy)); + else + v_construct_helper(x, typename QVariantIntegrator::CanUseInternalSpace_t()); +} + +// deletes the internal structures +template +inline void v_clear(QVariant::Private *d, T* = 0) +{ + + if (!QVariantIntegrator::CanUseInternalSpace) { + //now we need to cast + //because QVariant::PrivateShared doesn't have a virtual destructor + delete static_cast*>(d->data.shared); + } else { + v_cast(d)->~T(); + } + +} + +template +struct PrimitiveIsNull +{ +public: + static bool isNull(const QVariant::Private *d) + { + return d->is_null; + } +}; + +template <> +struct PrimitiveIsNull +{ +public: + static bool isNull(const QVariant::Private *) + { + return true; + } +}; + +template +class QVariantComparator { + template::IsAccepted> + struct FilteredComparator { + static bool compare(const QVariant::Private *a, const QVariant::Private *b) + { + return *v_cast(a) == *v_cast(b); + } + }; + template + struct FilteredComparator { + static bool compare(const QVariant::Private *, const QVariant::Private *) + { + // It is not possible to construct a QVariant containing not fully defined type + Q_ASSERT(false); + return false; + } + }; +public: + QVariantComparator(const QVariant::Private *a, const QVariant::Private *b) + : m_a(a), m_b(b) + { + Q_ASSERT(a->type == b->type); + } + + template + bool delegate(const T*) + { + return FilteredComparator::compare(m_a, m_b); + } + + bool delegate(const void*) { Q_ASSERT(false); return true; } + bool delegate(const QMetaTypeSwitcher::UnknownType*) + { + return true; // for historical reason invalid variant == invalid variant + } + bool delegate(const QMetaTypeSwitcher::NotBuiltinType*) { return false; } +protected: + const QVariant::Private *m_a; + const QVariant::Private *m_b; +}; + + +Q_CORE_EXPORT const QVariant::Handler *qcoreVariantHandler(); + +template +class QVariantIsNull +{ + /// \internal + /// This class checks if a type T has method called isNull. Result is kept in the Value property + /// TODO Can we somehow generalize it? A macro version? + template + class HasIsNullMethod { + struct Yes { char unused[1]; }; + struct No { char unused[2]; }; + Q_STATIC_ASSERT(sizeof(Yes) != sizeof(No)); + + template static decltype(static_cast(0)->isNull(), Yes()) test(int); + template static No test(...); + public: + static const bool Value = (sizeof(test(0)) == sizeof(Yes)); + }; + + // TODO This part should go to autotests during HasIsNullMethod generalization. + Q_STATIC_ASSERT(!HasIsNullMethod::Value); + struct SelfTest1 { bool isNull() const; }; + Q_STATIC_ASSERT(HasIsNullMethod::Value); + struct SelfTest2 {}; + Q_STATIC_ASSERT(!HasIsNullMethod::Value); + struct SelfTest3 : public SelfTest1 {}; + Q_STATIC_ASSERT(HasIsNullMethod::Value); + struct SelfTestFinal1 Q_DECL_FINAL { bool isNull() const; }; + Q_STATIC_ASSERT(HasIsNullMethod::Value); + struct SelfTestFinal2 Q_DECL_FINAL {}; + Q_STATIC_ASSERT(!HasIsNullMethod::Value); + struct SelfTestFinal3 Q_DECL_FINAL : public SelfTest1 {}; + Q_STATIC_ASSERT(HasIsNullMethod::Value); + + template::Value> + struct CallFilteredIsNull + { + static bool isNull(const QVariant::Private *d) + { + return v_cast(d)->isNull(); + } + }; + template + struct CallFilteredIsNull + { + static bool isNull(const QVariant::Private *d) + { + return PrimitiveIsNull::isNull(d); + } + }; + + template::IsAccepted> + struct CallIsNull + { + static bool isNull(const QVariant::Private *d) + { + return CallFilteredIsNull::isNull(d); + } + }; + template + struct CallIsNull + { + static bool isNull(const QVariant::Private *d) + { + return CallFilteredIsNull::isNull(d); + } + }; + +public: + QVariantIsNull(const QVariant::Private *d) + : m_d(d) + {} + template + bool delegate(const T*) + { + return CallIsNull::isNull(m_d); + } + // we need that as sizof(void) is undefined and it is needed in HasIsNullMethod + bool delegate(const void *) { Q_ASSERT(false); return m_d->is_null; } + bool delegate(const QMetaTypeSwitcher::UnknownType *) { return m_d->is_null; } + bool delegate(const QMetaTypeSwitcher::NotBuiltinType *) + { + // QVariantIsNull is used only for built-in types + Q_ASSERT(false); + return m_d->is_null; + } +protected: + const QVariant::Private *m_d; +}; + +template +class QVariantConstructor +{ + template::IsAccepted> + struct FilteredConstructor { + FilteredConstructor(const QVariantConstructor &tc) + { + v_construct(tc.m_x, tc.m_copy); + tc.m_x->is_null = !tc.m_copy; + } + }; + template + struct FilteredConstructor { + FilteredConstructor(const QVariantConstructor &tc) + { + // ignore types that lives outside of the current library + tc.m_x->type = QVariant::Invalid; + } + }; +public: + QVariantConstructor(QVariant::Private *x, const void *copy) + : m_x(x) + , m_copy(copy) + {} + + template + void delegate(const T*) + { + FilteredConstructor(*this); + } + + void delegate(const QMetaTypeSwitcher::NotBuiltinType*) + { + // QVariantConstructor is used only for built-in types. + Q_ASSERT(false); + } + + void delegate(const void*) + { + qWarning("Trying to create a QVariant instance of QMetaType::Void type, an invalid QVariant will be constructed instead"); + m_x->type = QMetaType::UnknownType; + m_x->is_shared = false; + m_x->is_null = !m_copy; + } + + void delegate(const QMetaTypeSwitcher::UnknownType*) + { + if (m_x->type != QMetaType::UnknownType) { + qWarning("Trying to construct an instance of an invalid type, type id: %i", m_x->type); + m_x->type = QMetaType::UnknownType; + } + m_x->is_shared = false; + m_x->is_null = !m_copy; + } +private: + QVariant::Private *m_x; + const void *m_copy; +}; + +template +class QVariantDestructor +{ + template::IsAccepted> + struct FilteredDestructor { + FilteredDestructor(QVariant::Private *d) + { + v_clear(d); + } + }; + template + struct FilteredDestructor { + FilteredDestructor(QVariant::Private *) + { + // It is not possible to create not accepted type + Q_ASSERT(false); + } + }; + +public: + QVariantDestructor(QVariant::Private *d) + : m_d(d) + {} + ~QVariantDestructor() + { + m_d->type = QVariant::Invalid; + m_d->is_null = true; + m_d->is_shared = false; + } + + template + void delegate(const T*) + { + FilteredDestructor cleaner(m_d); + } + + void delegate(const QMetaTypeSwitcher::NotBuiltinType*) + { + // QVariantDestructor class is used only for a built-in type + Q_ASSERT(false); + } + // Ignore nonconstructible type + void delegate(const QMetaTypeSwitcher::UnknownType*) {} + void delegate(const void*) { Q_ASSERT(false); } +private: + QVariant::Private *m_d; +}; + +namespace QVariantPrivate { +Q_CORE_EXPORT void registerHandler(const int /* Modules::Names */ name, const QVariant::Handler *handler); +} + +#if !defined(QT_NO_DEBUG_STREAM) +template +class QVariantDebugStream +{ + template::IsAccepted> + struct Filtered { + Filtered(QDebug dbg, QVariant::Private *d) + { + dbg.nospace() << *v_cast(d); + } + }; + template + struct Filtered { + Filtered(QDebug /* dbg */, QVariant::Private *) + { + // It is not possible to construct not acccepted type, QVariantConstructor creates an invalid variant for them + Q_ASSERT(false); + } + }; + +public: + QVariantDebugStream(QDebug dbg, QVariant::Private *d) + : m_debugStream(dbg) + , m_d(d) + {} + + template + void delegate(const T*) + { + Filtered streamIt(m_debugStream, m_d); + Q_UNUSED(streamIt); + } + + void delegate(const QMetaTypeSwitcher::NotBuiltinType*) + { + // QVariantDebugStream class is used only for a built-in type + Q_ASSERT(false); + } + void delegate(const QMetaTypeSwitcher::UnknownType*) + { + m_debugStream.nospace() << "QVariant::Invalid"; + } + void delegate(const void*) { Q_ASSERT(false); } +private: + QDebug m_debugStream; + QVariant::Private *m_d; +}; +#endif + +QT_END_NAMESPACE + +#endif // QVARIANT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qvariantanimation_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qvariantanimation_p.h new file mode 100644 index 000000000..37318a533 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qvariantanimation_p.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVARIANTANIMATION_P_H +#define QVARIANTANIMATION_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 "qvariantanimation.h" +#include +#include +#include + +#include "private/qabstractanimation_p.h" + +#ifndef QT_NO_ANIMATION + +QT_BEGIN_NAMESPACE + +class QVariantAnimationPrivate : public QAbstractAnimationPrivate +{ + Q_DECLARE_PUBLIC(QVariantAnimation) +public: + + QVariantAnimationPrivate(); + + static QVariantAnimationPrivate *get(QVariantAnimation *q) + { + return q->d_func(); + } + + void setDefaultStartEndValue(const QVariant &value); + + + QVariant currentValue; + QVariant defaultStartEndValue; + + //this is used to keep track of the KeyValue interval in which we currently are + struct + { + QVariantAnimation::KeyValue start, end; + } currentInterval; + + QEasingCurve easing; + int duration; + QVariantAnimation::KeyValues keyValues; + QVariantAnimation::Interpolator interpolator; + + void setCurrentValueForProgress(const qreal progress); + void recalculateCurrentInterval(bool force=false); + void setValueAt(qreal, const QVariant &); + QVariant valueAt(qreal step) const; + void convertValues(int t); + + void updateInterpolator(); + + //XXX this is needed by dui + static Q_CORE_EXPORT QVariantAnimation::Interpolator getInterpolator(int interpolationType); +}; + +//this should make the interpolation faster +template inline T _q_interpolate(const T &f, const T &t, qreal progress) +{ + return T(f + (t - f) * progress); +} + +template inline QVariant _q_interpolateVariant(const T &from, const T &to, qreal progress) +{ + return _q_interpolate(from, to, progress); +} + + +QT_END_NAMESPACE + +#endif //QT_NO_ANIMATION + +#endif //QVARIANTANIMATION_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwindowscodec_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwindowscodec_p.h new file mode 100644 index 000000000..2fd3c3537 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwindowscodec_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSCODEC_P_H +#define QWINDOWSCODEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qtextcodec.h" + +QT_BEGIN_NAMESPACE + +class QWindowsLocalCodec: public QTextCodec +{ +public: + QWindowsLocalCodec(); + ~QWindowsLocalCodec(); + + QString convertToUnicode(const char *, int, ConverterState *) const; + QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const; + QString convertToUnicodeCharByChar(const char *chars, int length, ConverterState *state) const; + + QByteArray name() const; + int mibEnum() const; + +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwindowspipereader_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwindowspipereader_p.h new file mode 100644 index 000000000..e52aa4c33 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwindowspipereader_p.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSPIPEREADER_P_H +#define QWINDOWSPIPEREADER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QWindowsPipeReader : public QObject +{ + Q_OBJECT +public: + explicit QWindowsPipeReader(QObject *parent = 0); + ~QWindowsPipeReader(); + + void setHandle(HANDLE hPipeReadEnd); + void startAsyncRead(); + void stop(); + + void setMaxReadBufferSize(qint64 size) { readBufferMaxSize = size; } + qint64 maxReadBufferSize() const { return readBufferMaxSize; } + + bool isPipeClosed() const { return pipeBroken; } + qint64 bytesAvailable() const; + qint64 read(char *data, qint64 maxlen); + bool canReadLine() const; + bool waitForReadyRead(int msecs); + bool waitForPipeClosed(int msecs); + + bool isReadOperationActive() const { return readSequenceStarted; } + +Q_SIGNALS: + void winError(ulong, const QString &); + void readyRead(); + void pipeClosed(); + void _q_queueReadyRead(QPrivateSignal); + +private: + static void CALLBACK readFileCompleted(DWORD errorCode, DWORD numberOfBytesTransfered, + OVERLAPPED *overlappedBase); + void notified(DWORD errorCode, DWORD numberOfBytesRead); + DWORD checkPipeState(); + bool waitForNotification(int timeout); + void emitPendingReadyRead(); + + class Overlapped : public OVERLAPPED + { + Q_DISABLE_COPY(Overlapped) + public: + explicit Overlapped(QWindowsPipeReader *reader); + void clear(); + QWindowsPipeReader *pipeReader; + }; + + HANDLE handle; + Overlapped *overlapped; + qint64 readBufferMaxSize; + QRingBuffer readBuffer; + qint64 actualReadBufferSize; + bool stopped; + bool readSequenceStarted; + bool notifiedCalled; + bool pipeBroken; + bool readyReadPending; + bool inReadyRead; +}; + +QT_END_NAMESPACE + +#endif // QWINDOWSPIPEREADER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwindowspipewriter_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwindowspipewriter_p.h new file mode 100644 index 000000000..c8252e2a4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwindowspipewriter_p.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSPIPEWRITER_P_H +#define QWINDOWSPIPEWRITER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#define SLEEPMIN 10 +#define SLEEPMAX 500 + +class QIncrementalSleepTimer +{ + +public: + QIncrementalSleepTimer(int msecs) + : totalTimeOut(msecs) + , nextSleep(qMin(SLEEPMIN, totalTimeOut)) + { + if (totalTimeOut == -1) + nextSleep = SLEEPMIN; + timer.start(); + } + + int nextSleepTime() + { + int tmp = nextSleep; + nextSleep = qMin(nextSleep * 2, qMin(SLEEPMAX, timeLeft())); + return tmp; + } + + int timeLeft() const + { + if (totalTimeOut == -1) + return SLEEPMAX; + return qMax(int(totalTimeOut - timer.elapsed()), 0); + } + + bool hasTimedOut() const + { + if (totalTimeOut == -1) + return false; + return timer.elapsed() >= totalTimeOut; + } + + void resetIncrements() + { + nextSleep = qMin(SLEEPMIN, timeLeft()); + } + +private: + QElapsedTimer timer; + int totalTimeOut; + int nextSleep; +}; + +class Q_CORE_EXPORT QWindowsPipeWriter : public QObject +{ + Q_OBJECT +public: + explicit QWindowsPipeWriter(HANDLE pipeWriteEnd, QObject *parent = 0); + ~QWindowsPipeWriter(); + + bool write(const QByteArray &ba); + void stop(); + bool waitForWrite(int msecs); + bool isWriteOperationActive() const { return writeSequenceStarted; } + qint64 bytesToWrite() const; + +Q_SIGNALS: + void canWrite(); + void bytesWritten(qint64 bytes); + void _q_queueBytesWritten(QPrivateSignal); + +private: + static void CALLBACK writeFileCompleted(DWORD errorCode, DWORD numberOfBytesTransfered, + OVERLAPPED *overlappedBase); + void notified(DWORD errorCode, DWORD numberOfBytesWritten); + bool waitForNotification(int timeout); + void emitPendingBytesWrittenValue(); + + class Overlapped : public OVERLAPPED + { + Q_DISABLE_COPY(Overlapped) + public: + explicit Overlapped(QWindowsPipeWriter *pipeWriter); + void clear(); + + QWindowsPipeWriter *pipeWriter; + }; + + HANDLE handle; + Overlapped *overlapped; + QByteArray buffer; + qint64 numberOfBytesToWrite; + qint64 pendingBytesWrittenValue; + bool stopped; + bool writeSequenceStarted; + bool notifiedCalled; + bool bytesWrittenPending; + bool inBytesWritten; +}; + +QT_END_NAMESPACE + +#endif // QWINDOWSPIPEWRITER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwinoverlappedionotifier_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwinoverlappedionotifier_p.h new file mode 100644 index 000000000..276a1d861 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qwinoverlappedionotifier_p.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINOVERLAPPEDIONOTIFIER_P_H +#define QWINOVERLAPPEDIONOTIFIER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +typedef struct _OVERLAPPED OVERLAPPED; + +QT_BEGIN_NAMESPACE + +class QWinOverlappedIoNotifierPrivate; + +class Q_CORE_EXPORT QWinOverlappedIoNotifier : public QObject +{ + Q_OBJECT + Q_DISABLE_COPY(QWinOverlappedIoNotifier) + Q_DECLARE_PRIVATE(QWinOverlappedIoNotifier) + Q_PRIVATE_SLOT(d_func(), void _q_notified()) + friend class QWinIoCompletionPort; +public: + QWinOverlappedIoNotifier(QObject *parent = 0); + ~QWinOverlappedIoNotifier(); + + void setHandle(Qt::HANDLE h); + Qt::HANDLE handle() const; + + void setEnabled(bool enabled); + OVERLAPPED *waitForAnyNotified(int msecs); + bool waitForNotified(int msecs, OVERLAPPED *overlapped); + +Q_SIGNALS: + void notified(quint32 numberOfBytes, quint32 errorCode, OVERLAPPED *overlapped); +#if !defined(Q_QDOC) + void _q_notify(); +#endif +}; + +QT_END_NAMESPACE + +#endif // QWINOVERLAPPEDIONOTIFIER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qxmlstream_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qxmlstream_p.h new file mode 100644 index 000000000..9ef95c1fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qxmlstream_p.h @@ -0,0 +1,1965 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +// This file was generated by qlalr - DO NOT EDIT! +#ifndef QXMLSTREAM_P_H +#define QXMLSTREAM_P_H + +#if defined(ERROR) +# undef ERROR +#endif + +class QXmlStreamReader_Table +{ +public: + enum VariousConstants { + EOF_SYMBOL = 0, + AMPERSAND = 5, + ANY = 41, + ATTLIST = 31, + BANG = 25, + CDATA = 47, + CDATA_START = 28, + COLON = 17, + COMMA = 19, + DASH = 20, + DBLQUOTE = 8, + DIGIT = 27, + DOCTYPE = 29, + DOT = 23, + ELEMENT = 30, + EMPTY = 40, + ENTITIES = 51, + ENTITY = 32, + ENTITY_DONE = 45, + EQ = 14, + ERROR = 43, + FIXED = 39, + HASH = 6, + ID = 48, + IDREF = 49, + IDREFS = 50, + IMPLIED = 38, + LANGLE = 3, + LBRACK = 9, + LETTER = 26, + LPAREN = 11, + NDATA = 36, + NMTOKEN = 52, + NMTOKENS = 53, + NOTATION = 33, + NOTOKEN = 1, + PARSE_ENTITY = 44, + PCDATA = 42, + PERCENT = 15, + PIPE = 13, + PLUS = 21, + PUBLIC = 35, + QUESTIONMARK = 24, + QUOTE = 7, + RANGLE = 4, + RBRACK = 10, + REQUIRED = 37, + RPAREN = 12, + SEMICOLON = 18, + SHIFT_THERE = 56, + SLASH = 16, + SPACE = 2, + STAR = 22, + SYSTEM = 34, + UNRESOLVED_ENTITY = 46, + VERSION = 55, + XML = 54, + + ACCEPT_STATE = 416, + RULE_COUNT = 270, + STATE_COUNT = 427, + TERMINAL_COUNT = 57, + NON_TERMINAL_COUNT = 84, + + GOTO_INDEX_OFFSET = 427, + GOTO_INFO_OFFSET = 1017, + GOTO_CHECK_OFFSET = 1017 + }; + + static const char *const spell []; + static const short lhs []; + static const short rhs []; + static const short goto_default []; + static const short action_default []; + static const short action_index []; + static const short action_info []; + static const short action_check []; + + static inline int nt_action (int state, int nt) + { + const int yyn = action_index [GOTO_INDEX_OFFSET + state] + nt; + if (yyn < 0 || action_check [GOTO_CHECK_OFFSET + yyn] != nt) + return goto_default [nt]; + + return action_info [GOTO_INFO_OFFSET + yyn]; + } + + static inline int t_action (int state, int token) + { + const int yyn = action_index [state] + token; + + if (yyn < 0 || action_check [yyn] != token) + return - action_default [state]; + + return action_info [yyn]; + } +}; + + +const char *const QXmlStreamReader_Table::spell [] = { + "end of file", 0, " ", "<", ">", "&", "#", "\'", "\"", "[", + "]", "(", ")", "|", "=", "%", "/", ":", ";", ",", + "-", "+", "*", ".", "?", "!", "[a-zA-Z]", "[0-9]", "[CDATA[", "DOCTYPE", + "ELEMENT", "ATTLIST", "ENTITY", "NOTATION", "SYSTEM", "PUBLIC", "NDATA", "REQUIRED", "IMPLIED", "FIXED", + "EMPTY", "ANY", "PCDATA", 0, 0, 0, 0, "CDATA", "ID", "IDREF", + "IDREFS", "ENTITIES", "NMTOKEN", "NMTOKENS", " class QXmlStreamSimpleStack { + T *data; + int tos, cap; +public: + inline QXmlStreamSimpleStack():data(0), tos(-1), cap(0){} + inline ~QXmlStreamSimpleStack(){ if (data) free(data); } + + inline void reserve(int extraCapacity) { + if (tos + extraCapacity + 1 > cap) { + cap = qMax(tos + extraCapacity + 1, cap << 1 ); + data = reinterpret_cast(realloc(data, cap * sizeof(T))); + Q_CHECK_PTR(data); + } + } + + inline T &push() { reserve(1); return data[++tos]; } + inline T &rawPush() { return data[++tos]; } + inline const T &top() const { return data[tos]; } + inline T &top() { return data[tos]; } + inline T &pop() { return data[tos--]; } + inline T &operator[](int index) { return data[index]; } + inline const T &at(int index) const { return data[index]; } + inline int size() const { return tos + 1; } + inline void resize(int s) { tos = s - 1; } + inline bool isEmpty() const { return tos < 0; } + inline void clear() { tos = -1; } +}; + + +class QXmlStream +{ + Q_DECLARE_TR_FUNCTIONS(QXmlStream) +}; + +class QXmlStreamPrivateTagStack { +public: + struct NamespaceDeclaration + { + QStringRef prefix; + QStringRef namespaceUri; + }; + + struct Tag + { + QStringRef name; + QStringRef qualifiedName; + NamespaceDeclaration namespaceDeclaration; + int tagStackStringStorageSize; + int namespaceDeclarationsSize; + }; + + + QXmlStreamPrivateTagStack(); + QXmlStreamSimpleStack namespaceDeclarations; + QString tagStackStringStorage; + int tagStackStringStorageSize; + int initialTagStackStringStorageSize; + bool tagsDone; + + inline QStringRef addToStringStorage(const QStringRef &s) { + int pos = tagStackStringStorageSize; + int sz = s.size(); + if (pos != tagStackStringStorage.size()) + tagStackStringStorage.resize(pos); + tagStackStringStorage.insert(pos, s.unicode(), sz); + tagStackStringStorageSize += sz; + return QStringRef(&tagStackStringStorage, pos, sz); + } + inline QStringRef addToStringStorage(const QString &s) { + int pos = tagStackStringStorageSize; + int sz = s.size(); + if (pos != tagStackStringStorage.size()) + tagStackStringStorage.resize(pos); + tagStackStringStorage.insert(pos, s.unicode(), sz); + tagStackStringStorageSize += sz; + return QStringRef(&tagStackStringStorage, pos, sz); + } + + QXmlStreamSimpleStack tagStack; + + + inline Tag &tagStack_pop() { + Tag& tag = tagStack.pop(); + tagStackStringStorageSize = tag.tagStackStringStorageSize; + namespaceDeclarations.resize(tag.namespaceDeclarationsSize); + tagsDone = tagStack.isEmpty(); + return tag; + } + inline Tag &tagStack_push() { + Tag &tag = tagStack.push(); + tag.tagStackStringStorageSize = tagStackStringStorageSize; + tag.namespaceDeclarationsSize = namespaceDeclarations.size(); + return tag; + } +}; + + +class QXmlStreamEntityResolver; +#ifndef QT_NO_XMLSTREAMREADER +class QXmlStreamReaderPrivate : public QXmlStreamReader_Table, public QXmlStreamPrivateTagStack{ + QXmlStreamReader *q_ptr; + Q_DECLARE_PUBLIC(QXmlStreamReader) +public: + QXmlStreamReaderPrivate(QXmlStreamReader *q); + ~QXmlStreamReaderPrivate(); + void init(); + + QByteArray rawReadBuffer; + QByteArray dataBuffer; + uchar firstByte; + qint64 nbytesread; + QString readBuffer; + int readBufferPos; + QXmlStreamSimpleStack putStack; + struct Entity { + Entity(const QString& str = QString()) + :value(str), external(false), unparsed(false), literal(false), + hasBeenParsed(false), isCurrentlyReferenced(false){} + static inline Entity createLiteral(const QString &entity) + { Entity result(entity); result.literal = result.hasBeenParsed = true; return result; } + QString value; + uint external : 1; + uint unparsed : 1; + uint literal : 1; + uint hasBeenParsed : 1; + uint isCurrentlyReferenced : 1; + }; + QHash entityHash; + QHash parameterEntityHash; + QXmlStreamSimpleStackentityReferenceStack; + inline bool referenceEntity(Entity &entity) { + if (entity.isCurrentlyReferenced) { + raiseWellFormedError(QXmlStream::tr("Recursive entity detected.")); + return false; + } + entity.isCurrentlyReferenced = true; + entityReferenceStack.push() = &entity; + injectToken(ENTITY_DONE); + return true; + } + + + QIODevice *device; + bool deleteDevice; +#ifndef QT_NO_TEXTCODEC + QTextCodec *codec; + QTextDecoder *decoder; +#endif + bool atEnd; + + /*! + \sa setType() + */ + QXmlStreamReader::TokenType type; + QXmlStreamReader::Error error; + QString errorString; + QString unresolvedEntity; + + qint64 lineNumber, lastLineStart, characterOffset; + + + void write(const QString &); + void write(const char *); + + + QXmlStreamAttributes attributes; + QStringRef namespaceForPrefix(const QStringRef &prefix); + void resolveTag(); + void resolvePublicNamespaces(); + void resolveDtd(); + uint resolveCharRef(int symbolIndex); + bool checkStartDocument(); + void startDocument(); + void parseError(); + void checkPublicLiteral(const QStringRef &publicId); + + bool scanDtd; + QStringRef lastAttributeValue; + bool lastAttributeIsCData; + struct DtdAttribute { + QStringRef tagName; + QStringRef attributeQualifiedName; + QStringRef attributePrefix; + QStringRef attributeName; + QStringRef defaultValue; + bool isCDATA; + bool isNamespaceAttribute; + }; + QXmlStreamSimpleStack dtdAttributes; + struct NotationDeclaration { + QStringRef name; + QStringRef publicId; + QStringRef systemId; + }; + QXmlStreamSimpleStack notationDeclarations; + QXmlStreamNotationDeclarations publicNotationDeclarations; + QXmlStreamNamespaceDeclarations publicNamespaceDeclarations; + + struct EntityDeclaration { + QStringRef name; + QStringRef notationName; + QStringRef publicId; + QStringRef systemId; + QStringRef value; + bool parameter; + bool external; + inline void clear() { + name.clear(); + notationName.clear(); + publicId.clear(); + systemId.clear(); + value.clear(); + parameter = external = false; + } + }; + QXmlStreamSimpleStack entityDeclarations; + QXmlStreamEntityDeclarations publicEntityDeclarations; + + QStringRef text; + + QStringRef prefix, namespaceUri, qualifiedName, name; + QStringRef processingInstructionTarget, processingInstructionData; + QStringRef dtdName, dtdPublicId, dtdSystemId; + QStringRef documentVersion, documentEncoding; + uint isEmptyElement : 1; + uint isWhitespace : 1; + uint isCDATA : 1; + uint standalone : 1; + uint hasCheckedStartDocument : 1; + uint normalizeLiterals : 1; + uint hasSeenTag : 1; + uint inParseEntity : 1; + uint referenceToUnparsedEntityDetected : 1; + uint referenceToParameterEntityDetected : 1; + uint hasExternalDtdSubset : 1; + uint lockEncoding : 1; + uint namespaceProcessing : 1; + + int resumeReduction; + void resume(int rule); + + inline bool entitiesMustBeDeclared() const { + return (!inParseEntity + && (standalone + || (!referenceToUnparsedEntityDetected + && !referenceToParameterEntityDetected // Errata 13 as of 2006-04-25 + && !hasExternalDtdSubset))); + } + + // qlalr parser + int tos; + int stack_size; + struct Value { + int pos; + int len; + int prefix; + ushort c; + }; + + Value *sym_stack; + int *state_stack; + inline void reallocateStack(); + inline Value &sym(int index) const + { return sym_stack[tos + index - 1]; } + QString textBuffer; + inline void clearTextBuffer() { + if (!scanDtd) { + textBuffer.resize(0); + textBuffer.reserve(256); + } + } + struct Attribute { + Value key; + Value value; + }; + QXmlStreamSimpleStack attributeStack; + + inline QStringRef symString(int index) { + const Value &symbol = sym(index); + return QStringRef(&textBuffer, symbol.pos + symbol.prefix, symbol.len - symbol.prefix); + } + inline QStringRef symName(int index) { + const Value &symbol = sym(index); + return QStringRef(&textBuffer, symbol.pos, symbol.len); + } + inline QStringRef symString(int index, int offset) { + const Value &symbol = sym(index); + return QStringRef(&textBuffer, symbol.pos + symbol.prefix + offset, symbol.len - symbol.prefix - offset); + } + inline QStringRef symPrefix(int index) { + const Value &symbol = sym(index); + if (symbol.prefix) + return QStringRef(&textBuffer, symbol.pos, symbol.prefix - 1); + return QStringRef(); + } + inline QStringRef symString(const Value &symbol) { + return QStringRef(&textBuffer, symbol.pos + symbol.prefix, symbol.len - symbol.prefix); + } + inline QStringRef symName(const Value &symbol) { + return QStringRef(&textBuffer, symbol.pos, symbol.len); + } + inline QStringRef symPrefix(const Value &symbol) { + if (symbol.prefix) + return QStringRef(&textBuffer, symbol.pos, symbol.prefix - 1); + return QStringRef(); + } + + inline void clearSym() { Value &val = sym(1); val.pos = textBuffer.size(); val.len = 0; } + + + short token; + uint token_char; + + uint filterCarriageReturn(); + inline uint getChar(); + inline uint peekChar(); + inline void putChar(uint c) { putStack.push() = c; } + inline void putChar(QChar c) { putStack.push() = c.unicode(); } + void putString(const QString &s, int from = 0); + void putStringLiteral(const QString &s); + void putReplacement(const QString &s); + void putReplacementInAttributeValue(const QString &s); + uint getChar_helper(); + + bool scanUntil(const char *str, short tokenToInject = -1); + bool scanString(const char *str, short tokenToInject, bool requireSpace = true); + inline void injectToken(ushort tokenToInject) { + putChar(int(tokenToInject) << 16); + } + + QString resolveUndeclaredEntity(const QString &name); + void parseEntity(const QString &value); + QXmlStreamReaderPrivate *entityParser; + + bool scanAfterLangleBang(); + bool scanPublicOrSystem(); + bool scanNData(); + bool scanAfterDefaultDecl(); + bool scanAttType(); + + + // scan optimization functions. Not strictly necessary but LALR is + // not very well suited for scanning fast + int fastScanLiteralContent(); + int fastScanSpace(); + int fastScanContentCharList(); + int fastScanName(int *prefix = 0); + inline int fastScanNMTOKEN(); + + + bool parse(); + inline void consumeRule(int); + + void raiseError(QXmlStreamReader::Error error, const QString& message = QString()); + void raiseWellFormedError(const QString &message); + + QXmlStreamEntityResolver *entityResolver; + +private: + /*! \internal + Never assign to variable type directly. Instead use this function. + + This prevents errors from being ignored. + */ + inline void setType(const QXmlStreamReader::TokenType t) + { + if(type != QXmlStreamReader::Invalid) + type = t; + } +}; + +bool QXmlStreamReaderPrivate::parse() +{ + // cleanup currently reported token + + switch (type) { + case QXmlStreamReader::StartElement: + name.clear(); + prefix.clear(); + qualifiedName.clear(); + namespaceUri.clear(); + publicNamespaceDeclarations.clear(); + attributes.clear(); + if (isEmptyElement) { + setType(QXmlStreamReader::EndElement); + Tag &tag = tagStack_pop(); + namespaceUri = tag.namespaceDeclaration.namespaceUri; + name = tag.name; + qualifiedName = tag.qualifiedName; + isEmptyElement = false; + return true; + } + clearTextBuffer(); + break; + case QXmlStreamReader::EndElement: + name.clear(); + prefix.clear(); + qualifiedName.clear(); + namespaceUri.clear(); + clearTextBuffer(); + break; + case QXmlStreamReader::DTD: + publicNotationDeclarations.clear(); + publicEntityDeclarations.clear(); + dtdName.clear(); + dtdPublicId.clear(); + dtdSystemId.clear(); + Q_FALLTHROUGH(); + case QXmlStreamReader::Comment: + case QXmlStreamReader::Characters: + isCDATA = false; + isWhitespace = true; + text.clear(); + clearTextBuffer(); + break; + case QXmlStreamReader::EntityReference: + text.clear(); + name.clear(); + clearTextBuffer(); + break; + case QXmlStreamReader::ProcessingInstruction: + processingInstructionTarget.clear(); + processingInstructionData.clear(); + clearTextBuffer(); + break; + case QXmlStreamReader::NoToken: + case QXmlStreamReader::Invalid: + break; + case QXmlStreamReader::StartDocument: + lockEncoding = true; + documentVersion.clear(); + documentEncoding.clear(); +#ifndef QT_NO_TEXTCODEC + if (decoder && decoder->hasFailure()) { + raiseWellFormedError(QXmlStream::tr("Encountered incorrectly encoded content.")); + readBuffer.clear(); + return false; + } +#endif + Q_FALLTHROUGH(); + default: + clearTextBuffer(); + ; + } + + setType(QXmlStreamReader::NoToken); + + + // the main parse loop + int act, r; + + if (resumeReduction) { + act = state_stack[tos-1]; + r = resumeReduction; + resumeReduction = 0; + goto ResumeReduction; + } + + act = state_stack[tos]; + + forever { + if (token == -1 && - TERMINAL_COUNT != action_index[act]) { + uint cu = getChar(); + token = NOTOKEN; + token_char = cu == ~0U ? cu : ushort(cu); + if ((cu != ~0U) && (cu & 0xff0000)) { + token = cu >> 16; + } else switch (token_char) { + case 0xfffe: + case 0xffff: + token = ERROR; + break; + case '\r': + token = SPACE; + if (cu == '\r') { + if ((token_char = filterCarriageReturn())) { + ++lineNumber; + lastLineStart = characterOffset + readBufferPos; + break; + } + } else { + break; + } + Q_FALLTHROUGH(); + case ~0U: { + token = EOF_SYMBOL; + if (!tagsDone && !inParseEntity) { + int a = t_action(act, token); + if (a < 0) { + raiseError(QXmlStreamReader::PrematureEndOfDocumentError); + return false; + } + } + + } break; + case '\n': + ++lineNumber; + lastLineStart = characterOffset + readBufferPos; + Q_FALLTHROUGH(); + case ' ': + case '\t': + token = SPACE; + break; + case '&': + token = AMPERSAND; + break; + case '#': + token = HASH; + break; + case '\'': + token = QUOTE; + break; + case '\"': + token = DBLQUOTE; + break; + case '<': + token = LANGLE; + break; + case '>': + token = RANGLE; + break; + case '[': + token = LBRACK; + break; + case ']': + token = RBRACK; + break; + case '(': + token = LPAREN; + break; + case ')': + token = RPAREN; + break; + case '|': + token = PIPE; + break; + case '=': + token = EQ; + break; + case '%': + token = PERCENT; + break; + case '/': + token = SLASH; + break; + case ':': + token = COLON; + break; + case ';': + token = SEMICOLON; + break; + case ',': + token = COMMA; + break; + case '-': + token = DASH; + break; + case '+': + token = PLUS; + break; + case '*': + token = STAR; + break; + case '.': + token = DOT; + break; + case '?': + token = QUESTIONMARK; + break; + case '!': + token = BANG; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + token = DIGIT; + break; + default: + if (cu < 0x20) + token = NOTOKEN; + else + token = LETTER; + break; + } + } + + act = t_action (act, token); + if (act == ACCEPT_STATE) { + // reset the parser in case someone resumes (process instructions can follow a valid document) + tos = 0; + state_stack[tos++] = 0; + state_stack[tos] = 0; + return true; + } else if (act > 0) { + if (++tos == stack_size-1) + reallocateStack(); + + Value &val = sym_stack[tos]; + val.c = token_char; + val.pos = textBuffer.size(); + val.prefix = 0; + val.len = 1; + if (token_char) + textBuffer += QChar(token_char); + + state_stack[tos] = act; + token = -1; + + + } else if (act < 0) { + r = - act - 1; + +#if defined (QLALR_DEBUG) + int ridx = rule_index[r]; + printf ("%3d) %s ::=", r + 1, spell[rule_info[ridx]]); + ++ridx; + for (int i = ridx; i < ridx + rhs[r]; ++i) { + int symbol = rule_info[i]; + if (const char *name = spell[symbol]) + printf (" %s", name); + else + printf (" #%d", symbol); + } + printf ("\n"); +#endif + + tos -= rhs[r]; + act = state_stack[tos++]; + ResumeReduction: + switch (r) { + + case 0: + setType(QXmlStreamReader::EndDocument); + break; + + case 1: + if (type != QXmlStreamReader::Invalid) { + if (hasSeenTag || inParseEntity) { + setType(QXmlStreamReader::EndDocument); + } else { + raiseError(QXmlStreamReader::NotWellFormedError, QXmlStream::tr("Start tag expected.")); + // reset the parser + tos = 0; + state_stack[tos++] = 0; + state_stack[tos] = 0; + return false; + } + } + break; + + case 10: + entityReferenceStack.pop()->isCurrentlyReferenced = false; + clearSym(); + break; + + case 11: + if (!scanString(spell[VERSION], VERSION, false) && atEnd) { + resume(11); + return false; + } + break; + + case 12: + setType(QXmlStreamReader::StartDocument); + documentVersion = symString(6); + startDocument(); + break; + + case 13: + hasExternalDtdSubset = true; + dtdSystemId = symString(2); + break; + + case 14: + checkPublicLiteral(symString(2)); + dtdPublicId = symString(2); + dtdSystemId = symString(4); + hasExternalDtdSubset = true; + break; + + case 16: + if (!scanPublicOrSystem() && atEnd) { + resume(16); + return false; + } + dtdName = symString(3); + break; + + case 17: + case 18: + dtdName = symString(3); + Q_FALLTHROUGH(); + + case 19: + case 20: + setType(QXmlStreamReader::DTD); + text = &textBuffer; + break; + + case 21: + scanDtd = true; + break; + + case 22: + scanDtd = false; + break; + + case 37: + if (!scanString(spell[EMPTY], EMPTY, false) + && !scanString(spell[ANY], ANY, false) + && atEnd) { + resume(37); + return false; + } + break; + + case 43: + if (!scanString(spell[PCDATA], PCDATA, false) && atEnd) { + resume(43); + return false; + } + break; + + case 68: { + lastAttributeIsCData = true; + } break; + + case 78: + if (!scanAfterDefaultDecl() && atEnd) { + resume(78); + return false; + } + break; + + case 83: + sym(1) = sym(2); + lastAttributeValue.clear(); + lastAttributeIsCData = false; + if (!scanAttType() && atEnd) { + resume(83); + return false; + } + break; + + case 84: { + DtdAttribute &dtdAttribute = dtdAttributes.push(); + dtdAttribute.tagName.clear(); + dtdAttribute.isCDATA = lastAttributeIsCData; + dtdAttribute.attributePrefix = addToStringStorage(symPrefix(1)); + dtdAttribute.attributeName = addToStringStorage(symString(1)); + dtdAttribute.attributeQualifiedName = addToStringStorage(symName(1)); + dtdAttribute.isNamespaceAttribute = (dtdAttribute.attributePrefix == QLatin1String("xmlns") + || (dtdAttribute.attributePrefix.isEmpty() + && dtdAttribute.attributeName == QLatin1String("xmlns"))); + if (lastAttributeValue.isNull()) { + dtdAttribute.defaultValue.clear(); + } else { + if (dtdAttribute.isCDATA) + dtdAttribute.defaultValue = addToStringStorage(lastAttributeValue); + else + dtdAttribute.defaultValue = addToStringStorage(lastAttributeValue.toString().simplified()); + + } + } break; + + case 88: { + if (referenceToUnparsedEntityDetected && !standalone) + break; + int n = dtdAttributes.size(); + QStringRef tagName = addToStringStorage(symName(3)); + while (n--) { + DtdAttribute &dtdAttribute = dtdAttributes[n]; + if (!dtdAttribute.tagName.isNull()) + break; + dtdAttribute.tagName = tagName; + for (int i = 0; i < n; ++i) { + if ((dtdAttributes[i].tagName.isNull() || dtdAttributes[i].tagName == tagName) + && dtdAttributes[i].attributeQualifiedName == dtdAttribute.attributeQualifiedName) { + dtdAttribute.attributeQualifiedName.clear(); // redefined, delete it + break; + } + } + } + } break; + + case 89: { + if (!scanPublicOrSystem() && atEnd) { + resume(89); + return false; + } + EntityDeclaration &entityDeclaration = entityDeclarations.push(); + entityDeclaration.clear(); + entityDeclaration.name = symString(3); + } break; + + case 90: { + if (!scanPublicOrSystem() && atEnd) { + resume(90); + return false; + } + EntityDeclaration &entityDeclaration = entityDeclarations.push(); + entityDeclaration.clear(); + entityDeclaration.name = symString(5); + entityDeclaration.parameter = true; + } break; + + case 91: { + if (!scanNData() && atEnd) { + resume(91); + return false; + } + EntityDeclaration &entityDeclaration = entityDeclarations.top(); + entityDeclaration.systemId = symString(3); + entityDeclaration.external = true; + } break; + + case 92: { + if (!scanNData() && atEnd) { + resume(92); + return false; + } + EntityDeclaration &entityDeclaration = entityDeclarations.top(); + checkPublicLiteral((entityDeclaration.publicId = symString(3))); + entityDeclaration.systemId = symString(5); + entityDeclaration.external = true; + } break; + + case 93: { + EntityDeclaration &entityDeclaration = entityDeclarations.top(); + entityDeclaration.notationName = symString(3); + if (entityDeclaration.parameter) + raiseWellFormedError(QXmlStream::tr("NDATA in parameter entity declaration.")); + } + Q_FALLTHROUGH(); + + case 94: + case 95: { + if (referenceToUnparsedEntityDetected && !standalone) { + entityDeclarations.pop(); + break; + } + EntityDeclaration &entityDeclaration = entityDeclarations.top(); + if (!entityDeclaration.external) + entityDeclaration.value = symString(2); + QString entityName = entityDeclaration.name.toString(); + QHash &hash = entityDeclaration.parameter ? parameterEntityHash : entityHash; + if (!hash.contains(entityName)) { + Entity entity(entityDeclaration.value.toString()); + entity.unparsed = (!entityDeclaration.notationName.isNull()); + entity.external = entityDeclaration.external; + hash.insert(entityName, entity); + } + } break; + + case 96: { + setType(QXmlStreamReader::ProcessingInstruction); + int pos = sym(4).pos + sym(4).len; + processingInstructionTarget = symString(3); + if (scanUntil("?>")) { + processingInstructionData = QStringRef(&textBuffer, pos, textBuffer.size() - pos - 2); + const QString piTarget(processingInstructionTarget.toString()); + if (!piTarget.compare(QLatin1String("xml"), Qt::CaseInsensitive)) { + raiseWellFormedError(QXmlStream::tr("XML declaration not at start of document.")); + } + else if(!QXmlUtils::isNCName(piTarget)) + raiseWellFormedError(QXmlStream::tr("%1 is an invalid processing instruction name.").arg(piTarget)); + } else if (type != QXmlStreamReader::Invalid){ + resume(96); + return false; + } + } break; + + case 97: + setType(QXmlStreamReader::ProcessingInstruction); + processingInstructionTarget = symString(3); + if (!processingInstructionTarget.toString().compare(QLatin1String("xml"), Qt::CaseInsensitive)) + raiseWellFormedError(QXmlStream::tr("Invalid processing instruction name.")); + break; + + case 98: + if (!scanAfterLangleBang() && atEnd) { + resume(98); + return false; + } + break; + + case 99: + if (!scanUntil("--")) { + resume(99); + return false; + } + break; + + case 100: { + setType(QXmlStreamReader::Comment); + int pos = sym(1).pos + 4; + text = QStringRef(&textBuffer, pos, textBuffer.size() - pos - 3); + } break; + + case 101: { + setType(QXmlStreamReader::Characters); + isCDATA = true; + isWhitespace = false; + int pos = sym(2).pos; + if (scanUntil("]]>", -1)) { + text = QStringRef(&textBuffer, pos, textBuffer.size() - pos - 3); + } else { + resume(101); + return false; + } + } break; + + case 102: { + if (!scanPublicOrSystem() && atEnd) { + resume(102); + return false; + } + NotationDeclaration ¬ationDeclaration = notationDeclarations.push(); + notationDeclaration.name = symString(3); + } break; + + case 103: { + NotationDeclaration ¬ationDeclaration = notationDeclarations.top(); + notationDeclaration.systemId = symString(3); + notationDeclaration.publicId.clear(); + } break; + + case 104: { + NotationDeclaration ¬ationDeclaration = notationDeclarations.top(); + notationDeclaration.systemId.clear(); + checkPublicLiteral((notationDeclaration.publicId = symString(3))); + } break; + + case 105: { + NotationDeclaration ¬ationDeclaration = notationDeclarations.top(); + checkPublicLiteral((notationDeclaration.publicId = symString(3))); + notationDeclaration.systemId = symString(5); + } break; + + case 129: + isWhitespace = false; + Q_FALLTHROUGH(); + + case 130: + sym(1).len += fastScanContentCharList(); + if (atEnd && !inParseEntity) { + resume(130); + return false; + } + break; + + case 139: + if (!textBuffer.isEmpty()) { + setType(QXmlStreamReader::Characters); + text = &textBuffer; + } + break; + + case 140: + case 141: + clearSym(); + break; + + case 142: + case 143: + sym(1) = sym(2); + break; + + case 144: + case 145: + case 146: + case 147: + sym(1).len += sym(2).len; + break; + + case 173: + if (normalizeLiterals) + textBuffer.data()[textBuffer.size()-1] = QLatin1Char(' '); + break; + + case 174: + sym(1).len += fastScanLiteralContent(); + if (atEnd) { + resume(174); + return false; + } + break; + + case 175: { + if (!QXmlUtils::isPublicID(symString(1).toString())) { + raiseWellFormedError(QXmlStream::tr("%1 is an invalid PUBLIC identifier.").arg(symString(1).toString())); + resume(175); + return false; + } + } break; + + case 176: + case 177: + clearSym(); + break; + + case 178: + case 179: + sym(1) = sym(2); + break; + + case 180: + case 181: + case 182: + case 183: + sym(1).len += sym(2).len; + break; + + case 213: + case 214: + clearSym(); + break; + + case 215: + case 216: + sym(1) = sym(2); + lastAttributeValue = symString(1); + break; + + case 217: + case 218: + case 219: + case 220: + sym(1).len += sym(2).len; + break; + + case 229: { + QStringRef prefix = symPrefix(1); + if (prefix.isEmpty() && symString(1) == QLatin1String("xmlns") && namespaceProcessing) { + NamespaceDeclaration &namespaceDeclaration = namespaceDeclarations.push(); + namespaceDeclaration.prefix.clear(); + + const QStringRef ns(symString(5)); + if(ns == QLatin1String("http://www.w3.org/2000/xmlns/") || + ns == QLatin1String("http://www.w3.org/XML/1998/namespace")) + raiseWellFormedError(QXmlStream::tr("Illegal namespace declaration.")); + else + namespaceDeclaration.namespaceUri = addToStringStorage(ns); + } else { + Attribute &attribute = attributeStack.push(); + attribute.key = sym(1); + attribute.value = sym(5); + + QStringRef attributeQualifiedName = symName(1); + bool normalize = false; + for (int a = 0; a < dtdAttributes.size(); ++a) { + DtdAttribute &dtdAttribute = dtdAttributes[a]; + if (!dtdAttribute.isCDATA + && dtdAttribute.tagName == qualifiedName + && dtdAttribute.attributeQualifiedName == attributeQualifiedName + ) { + normalize = true; + break; + } + } + if (normalize) { + // normalize attribute value (simplify and trim) + int pos = textBuffer.size(); + int n = 0; + bool wasSpace = true; + for (int i = 0; i < attribute.value.len; ++i) { + QChar c = textBuffer.at(attribute.value.pos + i); + if (c.unicode() == ' ') { + if (wasSpace) + continue; + wasSpace = true; + } else { + wasSpace = false; + } + textBuffer += textBuffer.at(attribute.value.pos + i); + ++n; + } + if (wasSpace) + while (n && textBuffer.at(pos + n - 1).unicode() == ' ') + --n; + attribute.value.pos = pos; + attribute.value.len = n; + } + if (prefix == QLatin1String("xmlns") && namespaceProcessing) { + NamespaceDeclaration &namespaceDeclaration = namespaceDeclarations.push(); + QStringRef namespacePrefix = symString(attribute.key); + QStringRef namespaceUri = symString(attribute.value); + attributeStack.pop(); + if (((namespacePrefix == QLatin1String("xml")) + ^ (namespaceUri == QLatin1String("http://www.w3.org/XML/1998/namespace"))) + || namespaceUri == QLatin1String("http://www.w3.org/2000/xmlns/") + || namespaceUri.isEmpty() + || namespacePrefix == QLatin1String("xmlns")) + raiseWellFormedError(QXmlStream::tr("Illegal namespace declaration.")); + + namespaceDeclaration.prefix = addToStringStorage(namespacePrefix); + namespaceDeclaration.namespaceUri = addToStringStorage(namespaceUri); + } + } + } break; + + case 235: { + normalizeLiterals = true; + Tag &tag = tagStack_push(); + prefix = tag.namespaceDeclaration.prefix = addToStringStorage(symPrefix(2)); + name = tag.name = addToStringStorage(symString(2)); + qualifiedName = tag.qualifiedName = addToStringStorage(symName(2)); + if ((!prefix.isEmpty() && !QXmlUtils::isNCName(prefix)) || !QXmlUtils::isNCName(name)) + raiseWellFormedError(QXmlStream::tr("Invalid XML name.")); + } break; + + case 236: + isEmptyElement = true; + Q_FALLTHROUGH(); + + case 237: + setType(QXmlStreamReader::StartElement); + resolveTag(); + if (tagStack.size() == 1 && hasSeenTag && !inParseEntity) + raiseWellFormedError(QXmlStream::tr("Extra content at end of document.")); + hasSeenTag = true; + break; + + case 238: { + setType(QXmlStreamReader::EndElement); + Tag &tag = tagStack_pop(); + + namespaceUri = tag.namespaceDeclaration.namespaceUri; + name = tag.name; + qualifiedName = tag.qualifiedName; + if (qualifiedName != symName(3)) + raiseWellFormedError(QXmlStream::tr("Opening and ending tag mismatch.")); + } break; + + case 239: + if (entitiesMustBeDeclared()) { + raiseWellFormedError(QXmlStream::tr("Entity '%1' not declared.").arg(unresolvedEntity)); + break; + } + setType(QXmlStreamReader::EntityReference); + name = &unresolvedEntity; + break; + + case 240: { + sym(1).len += sym(2).len + 1; + QString reference = symString(2).toString(); + if (entityHash.contains(reference)) { + Entity &entity = entityHash[reference]; + if (entity.unparsed) { + raiseWellFormedError(QXmlStream::tr("Reference to unparsed entity '%1'.").arg(reference)); + } else { + if (!entity.hasBeenParsed) { + parseEntity(entity.value); + entity.hasBeenParsed = true; + } + if (entity.literal) + putStringLiteral(entity.value); + else if (referenceEntity(entity)) + putReplacement(entity.value); + textBuffer.chop(2 + sym(2).len); + clearSym(); + } + break; + } + + if (entityResolver) { + QString replacementText = resolveUndeclaredEntity(reference); + if (!replacementText.isNull()) { + putReplacement(replacementText); + textBuffer.chop(2 + sym(2).len); + clearSym(); + break; + } + } + + injectToken(UNRESOLVED_ENTITY); + unresolvedEntity = symString(2).toString(); + textBuffer.chop(2 + sym(2).len); + clearSym(); + + } break; + + case 241: { + sym(1).len += sym(2).len + 1; + QString reference = symString(2).toString(); + if (parameterEntityHash.contains(reference)) { + referenceToParameterEntityDetected = true; + Entity &entity = parameterEntityHash[reference]; + if (entity.unparsed || entity.external) { + referenceToUnparsedEntityDetected = true; + } else { + if (referenceEntity(entity)) + putString(entity.value); + textBuffer.chop(2 + sym(2).len); + clearSym(); + } + } else if (entitiesMustBeDeclared()) { + raiseWellFormedError(QXmlStream::tr("Entity '%1' not declared.").arg(symString(2).toString())); + } + } break; + + case 242: + sym(1).len += sym(2).len + 1; + break; + + case 243: { + sym(1).len += sym(2).len + 1; + QString reference = symString(2).toString(); + if (entityHash.contains(reference)) { + Entity &entity = entityHash[reference]; + if (entity.unparsed || entity.value.isNull()) { + raiseWellFormedError(QXmlStream::tr("Reference to external entity '%1' in attribute value.").arg(reference)); + break; + } + if (!entity.hasBeenParsed) { + parseEntity(entity.value); + entity.hasBeenParsed = true; + } + if (entity.literal) + putStringLiteral(entity.value); + else if (referenceEntity(entity)) + putReplacementInAttributeValue(entity.value); + textBuffer.chop(2 + sym(2).len); + clearSym(); + break; + } + + if (entityResolver) { + QString replacementText = resolveUndeclaredEntity(reference); + if (!replacementText.isNull()) { + putReplacement(replacementText); + textBuffer.chop(2 + sym(2).len); + clearSym(); + break; + } + } + if (entitiesMustBeDeclared()) { + raiseWellFormedError(QXmlStream::tr("Entity '%1' not declared.").arg(reference)); + } + } break; + + case 244: { + if (uint s = resolveCharRef(3)) { + if (s >= 0xffff) + putStringLiteral(QString::fromUcs4(&s, 1)); + else + putChar((LETTER << 16) | s); + + textBuffer.chop(3 + sym(3).len); + clearSym(); + } else { + raiseWellFormedError(QXmlStream::tr("Invalid character reference.")); + } + } break; + + case 247: + case 248: + sym(1).len += sym(2).len; + break; + + case 259: + sym(1).len += fastScanSpace(); + if (atEnd) { + resume(259); + return false; + } + break; + + case 262: { + sym(1).len += fastScanName(&sym(1).prefix); + if (atEnd) { + resume(262); + return false; + } + } break; + + case 263: + sym(1).len += fastScanName(); + if (atEnd) { + resume(263); + return false; + } + break; + + case 264: + case 265: + case 266: + case 267: + case 268: + sym(1).len += fastScanNMTOKEN(); + if (atEnd) { + resume(268); + return false; + } + + break; + + default: + ; + } // switch + act = state_stack[tos] = nt_action (act, lhs[r] - TERMINAL_COUNT); + if (type != QXmlStreamReader::NoToken) + return true; + } else { + parseError(); + break; + } + } + return false; +} +#endif //QT_NO_XMLSTREAMREADER.xml + + +#endif // QXMLSTREAM_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qxmlutils_p.h b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qxmlutils_p.h new file mode 100644 index 000000000..6db347b3e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/5.9.4/QtCore/private/qxmlutils_p.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QXMLUTILS_P_H +#define QXMLUTILS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QString; +class QChar; +class QXmlCharRange; + +/*! + \internal + \short This class contains helper functions related to XML, for validating character classes, + productions in the XML specification, and so on. + */ +class Q_CORE_EXPORT QXmlUtils +{ +public: + static bool isEncName(const QString &encName); + static bool isChar(const QChar c); + static bool isNameChar(const QChar c); + static bool isLetter(const QChar c); + static bool isNCName(const QStringRef &ncName); + static inline bool isNCName(const QString &ncName) { return isNCName(QStringRef(&ncName)); } + static bool isPublicID(const QString &candidate); + +private: + typedef const QXmlCharRange *RangeIter; + static bool rangeContains(RangeIter begin, RangeIter end, const QChar c); + static bool isBaseChar(const QChar c); + static bool isDigit(const QChar c); + static bool isExtender(const QChar c); + static bool isIdeographic(const QChar c); + static bool isCombiningChar(const QChar c); +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractAnimation b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractAnimation new file mode 100644 index 000000000..6ab4d26a6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractAnimation @@ -0,0 +1 @@ +#include "qabstractanimation.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractEventDispatcher b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractEventDispatcher new file mode 100644 index 000000000..5315e76d8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractEventDispatcher @@ -0,0 +1 @@ +#include "qabstracteventdispatcher.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractItemModel b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractItemModel new file mode 100644 index 000000000..e3aaad49d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractItemModel @@ -0,0 +1 @@ +#include "qabstractitemmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractListModel b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractListModel new file mode 100644 index 000000000..e3aaad49d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractListModel @@ -0,0 +1 @@ +#include "qabstractitemmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractNativeEventFilter b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractNativeEventFilter new file mode 100644 index 000000000..db5739f4b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractNativeEventFilter @@ -0,0 +1 @@ +#include "qabstractnativeeventfilter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractProxyModel b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractProxyModel new file mode 100644 index 000000000..dc22b6dc4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractProxyModel @@ -0,0 +1 @@ +#include "qabstractproxymodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractState b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractState new file mode 100644 index 000000000..547fdec13 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractState @@ -0,0 +1 @@ +#include "qabstractstate.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractTableModel b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractTableModel new file mode 100644 index 000000000..e3aaad49d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractTableModel @@ -0,0 +1 @@ +#include "qabstractitemmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractTransition b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractTransition new file mode 100644 index 000000000..63635d630 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAbstractTransition @@ -0,0 +1 @@ +#include "qabstracttransition.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAnimationDriver b/qrenderdoc/3rdparty/qt/include/QtCore/QAnimationDriver new file mode 100644 index 000000000..6ab4d26a6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAnimationDriver @@ -0,0 +1 @@ +#include "qabstractanimation.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAnimationGroup b/qrenderdoc/3rdparty/qt/include/QtCore/QAnimationGroup new file mode 100644 index 000000000..fb385cbe4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAnimationGroup @@ -0,0 +1 @@ +#include "qanimationgroup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QArgument b/qrenderdoc/3rdparty/qt/include/QtCore/QArgument new file mode 100644 index 000000000..7670d03b1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QArgument @@ -0,0 +1 @@ +#include "qobjectdefs.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QArrayData b/qrenderdoc/3rdparty/qt/include/QtCore/QArrayData new file mode 100644 index 000000000..42ac83f88 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QArrayData @@ -0,0 +1 @@ +#include "qarraydata.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QArrayDataPointer b/qrenderdoc/3rdparty/qt/include/QtCore/QArrayDataPointer new file mode 100644 index 000000000..1495b4303 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QArrayDataPointer @@ -0,0 +1 @@ +#include "qarraydatapointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QArrayDataPointerRef b/qrenderdoc/3rdparty/qt/include/QtCore/QArrayDataPointerRef new file mode 100644 index 000000000..42ac83f88 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QArrayDataPointerRef @@ -0,0 +1 @@ +#include "qarraydata.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAssociativeIterable b/qrenderdoc/3rdparty/qt/include/QtCore/QAssociativeIterable new file mode 100644 index 000000000..f9c5160b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAssociativeIterable @@ -0,0 +1 @@ +#include "qvariant.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAtomicInt b/qrenderdoc/3rdparty/qt/include/QtCore/QAtomicInt new file mode 100644 index 000000000..c60b5e3dd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAtomicInt @@ -0,0 +1 @@ +#include "qatomic.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAtomicInteger b/qrenderdoc/3rdparty/qt/include/QtCore/QAtomicInteger new file mode 100644 index 000000000..c60b5e3dd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAtomicInteger @@ -0,0 +1 @@ +#include "qatomic.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QAtomicPointer b/qrenderdoc/3rdparty/qt/include/QtCore/QAtomicPointer new file mode 100644 index 000000000..c60b5e3dd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QAtomicPointer @@ -0,0 +1 @@ +#include "qatomic.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QBasicMutex b/qrenderdoc/3rdparty/qt/include/QtCore/QBasicMutex new file mode 100644 index 000000000..474ff36ac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QBasicMutex @@ -0,0 +1 @@ +#include "qmutex.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QBasicTimer b/qrenderdoc/3rdparty/qt/include/QtCore/QBasicTimer new file mode 100644 index 000000000..469c28b5c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QBasicTimer @@ -0,0 +1 @@ +#include "qbasictimer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QBitArray b/qrenderdoc/3rdparty/qt/include/QtCore/QBitArray new file mode 100644 index 000000000..73d833c59 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QBitArray @@ -0,0 +1 @@ +#include "qbitarray.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QBitRef b/qrenderdoc/3rdparty/qt/include/QtCore/QBitRef new file mode 100644 index 000000000..73d833c59 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QBitRef @@ -0,0 +1 @@ +#include "qbitarray.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QBuffer b/qrenderdoc/3rdparty/qt/include/QtCore/QBuffer new file mode 100644 index 000000000..2f1c95a70 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QBuffer @@ -0,0 +1 @@ +#include "qbuffer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QByteArray b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArray new file mode 100644 index 000000000..2f17cb4f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArray @@ -0,0 +1 @@ +#include "qbytearray.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayData b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayData new file mode 100644 index 000000000..7670d03b1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayData @@ -0,0 +1 @@ +#include "qobjectdefs.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayDataPtr b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayDataPtr new file mode 100644 index 000000000..2f17cb4f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayDataPtr @@ -0,0 +1 @@ +#include "qbytearray.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayList b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayList new file mode 100644 index 000000000..552ceb601 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayList @@ -0,0 +1 @@ +#include "qbytearraylist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayListIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayListIterator new file mode 100644 index 000000000..552ceb601 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayListIterator @@ -0,0 +1 @@ +#include "qbytearraylist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayMatcher b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayMatcher new file mode 100644 index 000000000..3099f0667 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QByteArrayMatcher @@ -0,0 +1 @@ +#include "qbytearraymatcher.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QByteRef b/qrenderdoc/3rdparty/qt/include/QtCore/QByteRef new file mode 100644 index 000000000..2f17cb4f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QByteRef @@ -0,0 +1 @@ +#include "qbytearray.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QCache b/qrenderdoc/3rdparty/qt/include/QtCore/QCache new file mode 100644 index 000000000..d98c7ab20 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QCache @@ -0,0 +1 @@ +#include "qcache.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QChar b/qrenderdoc/3rdparty/qt/include/QtCore/QChar new file mode 100644 index 000000000..4db2cc810 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QChar @@ -0,0 +1 @@ +#include "qchar.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QCharRef b/qrenderdoc/3rdparty/qt/include/QtCore/QCharRef new file mode 100644 index 000000000..e654378fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QCharRef @@ -0,0 +1 @@ +#include "qstring.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QChildEvent b/qrenderdoc/3rdparty/qt/include/QtCore/QChildEvent new file mode 100644 index 000000000..4973661b4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QChildEvent @@ -0,0 +1 @@ +#include "qcoreevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QCollator b/qrenderdoc/3rdparty/qt/include/QtCore/QCollator new file mode 100644 index 000000000..422c2200d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QCollator @@ -0,0 +1 @@ +#include "qcollator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QCollatorSortKey b/qrenderdoc/3rdparty/qt/include/QtCore/QCollatorSortKey new file mode 100644 index 000000000..422c2200d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QCollatorSortKey @@ -0,0 +1 @@ +#include "qcollator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QCommandLineOption b/qrenderdoc/3rdparty/qt/include/QtCore/QCommandLineOption new file mode 100644 index 000000000..c49da1919 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QCommandLineOption @@ -0,0 +1 @@ +#include "qcommandlineoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QCommandLineParser b/qrenderdoc/3rdparty/qt/include/QtCore/QCommandLineParser new file mode 100644 index 000000000..2550ef8d3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QCommandLineParser @@ -0,0 +1 @@ +#include "qcommandlineparser.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QConstOverload b/qrenderdoc/3rdparty/qt/include/QtCore/QConstOverload new file mode 100644 index 000000000..fce4ed884 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QConstOverload @@ -0,0 +1 @@ +#include "qglobal.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QContiguousCache b/qrenderdoc/3rdparty/qt/include/QtCore/QContiguousCache new file mode 100644 index 000000000..81d23e1fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QContiguousCache @@ -0,0 +1 @@ +#include "qcontiguouscache.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QContiguousCacheData b/qrenderdoc/3rdparty/qt/include/QtCore/QContiguousCacheData new file mode 100644 index 000000000..81d23e1fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QContiguousCacheData @@ -0,0 +1 @@ +#include "qcontiguouscache.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QContiguousCacheTypedData b/qrenderdoc/3rdparty/qt/include/QtCore/QContiguousCacheTypedData new file mode 100644 index 000000000..81d23e1fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QContiguousCacheTypedData @@ -0,0 +1 @@ +#include "qcontiguouscache.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QCoreApplication b/qrenderdoc/3rdparty/qt/include/QtCore/QCoreApplication new file mode 100644 index 000000000..6e3497e8e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QCoreApplication @@ -0,0 +1 @@ +#include "qcoreapplication.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QCryptographicHash b/qrenderdoc/3rdparty/qt/include/QtCore/QCryptographicHash new file mode 100644 index 000000000..78cf164cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QCryptographicHash @@ -0,0 +1 @@ +#include "qcryptographichash.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QDataStream b/qrenderdoc/3rdparty/qt/include/QtCore/QDataStream new file mode 100644 index 000000000..44cc709e0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QDataStream @@ -0,0 +1 @@ +#include "qdatastream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QDate b/qrenderdoc/3rdparty/qt/include/QtCore/QDate new file mode 100644 index 000000000..dab9d714b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QDate @@ -0,0 +1 @@ +#include "qdatetime.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QDateTime b/qrenderdoc/3rdparty/qt/include/QtCore/QDateTime new file mode 100644 index 000000000..dab9d714b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QDateTime @@ -0,0 +1 @@ +#include "qdatetime.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QDeadlineTimer b/qrenderdoc/3rdparty/qt/include/QtCore/QDeadlineTimer new file mode 100644 index 000000000..63d21e8f4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QDeadlineTimer @@ -0,0 +1 @@ +#include "qdeadlinetimer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QDebug b/qrenderdoc/3rdparty/qt/include/QtCore/QDebug new file mode 100644 index 000000000..0a4db8494 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QDebug @@ -0,0 +1 @@ +#include "qdebug.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QDebugStateSaver b/qrenderdoc/3rdparty/qt/include/QtCore/QDebugStateSaver new file mode 100644 index 000000000..0a4db8494 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QDebugStateSaver @@ -0,0 +1 @@ +#include "qdebug.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QDeferredDeleteEvent b/qrenderdoc/3rdparty/qt/include/QtCore/QDeferredDeleteEvent new file mode 100644 index 000000000..4973661b4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QDeferredDeleteEvent @@ -0,0 +1 @@ +#include "qcoreevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QDir b/qrenderdoc/3rdparty/qt/include/QtCore/QDir new file mode 100644 index 000000000..7abbc9e7e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QDir @@ -0,0 +1 @@ +#include "qdir.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QDirIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QDirIterator new file mode 100644 index 000000000..da500d5e4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QDirIterator @@ -0,0 +1 @@ +#include "qdiriterator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QDynamicPropertyChangeEvent b/qrenderdoc/3rdparty/qt/include/QtCore/QDynamicPropertyChangeEvent new file mode 100644 index 000000000..4973661b4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QDynamicPropertyChangeEvent @@ -0,0 +1 @@ +#include "qcoreevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QEasingCurve b/qrenderdoc/3rdparty/qt/include/QtCore/QEasingCurve new file mode 100644 index 000000000..e6fa88eaa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QEasingCurve @@ -0,0 +1 @@ +#include "qeasingcurve.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QElapsedTimer b/qrenderdoc/3rdparty/qt/include/QtCore/QElapsedTimer new file mode 100644 index 000000000..cc853cd60 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QElapsedTimer @@ -0,0 +1 @@ +#include "qelapsedtimer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QEnableSharedFromThis b/qrenderdoc/3rdparty/qt/include/QtCore/QEnableSharedFromThis new file mode 100644 index 000000000..5dea7ad50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QEnableSharedFromThis @@ -0,0 +1 @@ +#include "qsharedpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QEvent b/qrenderdoc/3rdparty/qt/include/QtCore/QEvent new file mode 100644 index 000000000..4973661b4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QEvent @@ -0,0 +1 @@ +#include "qcoreevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QEventLoop b/qrenderdoc/3rdparty/qt/include/QtCore/QEventLoop new file mode 100644 index 000000000..e18d32e55 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QEventLoop @@ -0,0 +1 @@ +#include "qeventloop.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QEventLoopLocker b/qrenderdoc/3rdparty/qt/include/QtCore/QEventLoopLocker new file mode 100644 index 000000000..e18d32e55 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QEventLoopLocker @@ -0,0 +1 @@ +#include "qeventloop.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QEventTransition b/qrenderdoc/3rdparty/qt/include/QtCore/QEventTransition new file mode 100644 index 000000000..df9701ddd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QEventTransition @@ -0,0 +1 @@ +#include "qeventtransition.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QException b/qrenderdoc/3rdparty/qt/include/QtCore/QException new file mode 100644 index 000000000..e3f23bf35 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QException @@ -0,0 +1 @@ +#include "qexception.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QExplicitlySharedDataPointer b/qrenderdoc/3rdparty/qt/include/QtCore/QExplicitlySharedDataPointer new file mode 100644 index 000000000..551f0f906 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QExplicitlySharedDataPointer @@ -0,0 +1 @@ +#include "qshareddata.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFactoryInterface b/qrenderdoc/3rdparty/qt/include/QtCore/QFactoryInterface new file mode 100644 index 000000000..cbd96b43a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFactoryInterface @@ -0,0 +1 @@ +#include "qfactoryinterface.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFile b/qrenderdoc/3rdparty/qt/include/QtCore/QFile new file mode 100644 index 000000000..ebbb3dbf5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFile @@ -0,0 +1 @@ +#include "qfile.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFileDevice b/qrenderdoc/3rdparty/qt/include/QtCore/QFileDevice new file mode 100644 index 000000000..ab69dedbc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFileDevice @@ -0,0 +1 @@ +#include "qfiledevice.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFileInfo b/qrenderdoc/3rdparty/qt/include/QtCore/QFileInfo new file mode 100644 index 000000000..f4acd0bed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFileInfo @@ -0,0 +1 @@ +#include "qfileinfo.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFileInfoList b/qrenderdoc/3rdparty/qt/include/QtCore/QFileInfoList new file mode 100644 index 000000000..f4acd0bed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFileInfoList @@ -0,0 +1 @@ +#include "qfileinfo.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFileSelector b/qrenderdoc/3rdparty/qt/include/QtCore/QFileSelector new file mode 100644 index 000000000..7c8366d3f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFileSelector @@ -0,0 +1 @@ +#include "qfileselector.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFileSystemWatcher b/qrenderdoc/3rdparty/qt/include/QtCore/QFileSystemWatcher new file mode 100644 index 000000000..ae7bf2edd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFileSystemWatcher @@ -0,0 +1 @@ +#include "qfilesystemwatcher.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFinalState b/qrenderdoc/3rdparty/qt/include/QtCore/QFinalState new file mode 100644 index 000000000..ed5cae2db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFinalState @@ -0,0 +1 @@ +#include "qfinalstate.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFlag b/qrenderdoc/3rdparty/qt/include/QtCore/QFlag new file mode 100644 index 000000000..673c79bc8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFlag @@ -0,0 +1 @@ +#include "qflags.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFlags b/qrenderdoc/3rdparty/qt/include/QtCore/QFlags new file mode 100644 index 000000000..673c79bc8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFlags @@ -0,0 +1 @@ +#include "qflags.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFloat16 b/qrenderdoc/3rdparty/qt/include/QtCore/QFloat16 new file mode 100644 index 000000000..94a148ccd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFloat16 @@ -0,0 +1 @@ +#include "qfloat16.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFunctionPointer b/qrenderdoc/3rdparty/qt/include/QtCore/QFunctionPointer new file mode 100644 index 000000000..fce4ed884 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFunctionPointer @@ -0,0 +1 @@ +#include "qglobal.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFuture b/qrenderdoc/3rdparty/qt/include/QtCore/QFuture new file mode 100644 index 000000000..a3de907a0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFuture @@ -0,0 +1 @@ +#include "qfuture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFutureInterface b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureInterface new file mode 100644 index 000000000..db5e8f164 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureInterface @@ -0,0 +1 @@ +#include "qfutureinterface.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFutureInterfaceBase b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureInterfaceBase new file mode 100644 index 000000000..db5e8f164 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureInterfaceBase @@ -0,0 +1 @@ +#include "qfutureinterface.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFutureIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureIterator new file mode 100644 index 000000000..a3de907a0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureIterator @@ -0,0 +1 @@ +#include "qfuture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFutureSynchronizer b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureSynchronizer new file mode 100644 index 000000000..2dda5d245 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureSynchronizer @@ -0,0 +1 @@ +#include "qfuturesynchronizer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFutureWatcher b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureWatcher new file mode 100644 index 000000000..699f89b31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureWatcher @@ -0,0 +1 @@ +#include "qfuturewatcher.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QFutureWatcherBase b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureWatcherBase new file mode 100644 index 000000000..699f89b31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QFutureWatcherBase @@ -0,0 +1 @@ +#include "qfuturewatcher.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QGenericArgument b/qrenderdoc/3rdparty/qt/include/QtCore/QGenericArgument new file mode 100644 index 000000000..7670d03b1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QGenericArgument @@ -0,0 +1 @@ +#include "qobjectdefs.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QGenericReturnArgument b/qrenderdoc/3rdparty/qt/include/QtCore/QGenericReturnArgument new file mode 100644 index 000000000..7670d03b1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QGenericReturnArgument @@ -0,0 +1 @@ +#include "qobjectdefs.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QGlobalStatic b/qrenderdoc/3rdparty/qt/include/QtCore/QGlobalStatic new file mode 100644 index 000000000..dcfcec610 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QGlobalStatic @@ -0,0 +1 @@ +#include "qglobalstatic.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QHash b/qrenderdoc/3rdparty/qt/include/QtCore/QHash new file mode 100644 index 000000000..bc8754eef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QHash @@ -0,0 +1 @@ +#include "qhash.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QHashData b/qrenderdoc/3rdparty/qt/include/QtCore/QHashData new file mode 100644 index 000000000..bc8754eef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QHashData @@ -0,0 +1 @@ +#include "qhash.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QHashDummyValue b/qrenderdoc/3rdparty/qt/include/QtCore/QHashDummyValue new file mode 100644 index 000000000..bc8754eef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QHashDummyValue @@ -0,0 +1 @@ +#include "qhash.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QHashFunctions b/qrenderdoc/3rdparty/qt/include/QtCore/QHashFunctions new file mode 100644 index 000000000..2281414b9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QHashFunctions @@ -0,0 +1 @@ +#include "qhashfunctions.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QHashIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QHashIterator new file mode 100644 index 000000000..bc8754eef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QHashIterator @@ -0,0 +1 @@ +#include "qhash.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QHashNode b/qrenderdoc/3rdparty/qt/include/QtCore/QHashNode new file mode 100644 index 000000000..bc8754eef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QHashNode @@ -0,0 +1 @@ +#include "qhash.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QHistoryState b/qrenderdoc/3rdparty/qt/include/QtCore/QHistoryState new file mode 100644 index 000000000..a8b4d852c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QHistoryState @@ -0,0 +1 @@ +#include "qhistorystate.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QIODevice b/qrenderdoc/3rdparty/qt/include/QtCore/QIODevice new file mode 100644 index 000000000..4cf919ad3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QIODevice @@ -0,0 +1 @@ +#include "qiodevice.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QIdentityProxyModel b/qrenderdoc/3rdparty/qt/include/QtCore/QIdentityProxyModel new file mode 100644 index 000000000..aa3b9b31a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QIdentityProxyModel @@ -0,0 +1 @@ +#include "qidentityproxymodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QIncompatibleFlag b/qrenderdoc/3rdparty/qt/include/QtCore/QIncompatibleFlag new file mode 100644 index 000000000..673c79bc8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QIncompatibleFlag @@ -0,0 +1 @@ +#include "qflags.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QIntegerForSize b/qrenderdoc/3rdparty/qt/include/QtCore/QIntegerForSize new file mode 100644 index 000000000..fce4ed884 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QIntegerForSize @@ -0,0 +1 @@ +#include "qglobal.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QInternal b/qrenderdoc/3rdparty/qt/include/QtCore/QInternal new file mode 100644 index 000000000..66a536970 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QInternal @@ -0,0 +1 @@ +#include "qnamespace.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QItemSelection b/qrenderdoc/3rdparty/qt/include/QtCore/QItemSelection new file mode 100644 index 000000000..88094aadf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QItemSelection @@ -0,0 +1 @@ +#include "qitemselectionmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QItemSelectionModel b/qrenderdoc/3rdparty/qt/include/QtCore/QItemSelectionModel new file mode 100644 index 000000000..88094aadf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QItemSelectionModel @@ -0,0 +1 @@ +#include "qitemselectionmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QItemSelectionRange b/qrenderdoc/3rdparty/qt/include/QtCore/QItemSelectionRange new file mode 100644 index 000000000..88094aadf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QItemSelectionRange @@ -0,0 +1 @@ +#include "qitemselectionmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QJsonArray b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonArray new file mode 100644 index 000000000..75d32fbfe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonArray @@ -0,0 +1 @@ +#include "qjsonarray.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QJsonDocument b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonDocument new file mode 100644 index 000000000..97253beeb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonDocument @@ -0,0 +1 @@ +#include "qjsondocument.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QJsonObject b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonObject new file mode 100644 index 000000000..48069b5bd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonObject @@ -0,0 +1 @@ +#include "qjsonobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QJsonParseError b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonParseError new file mode 100644 index 000000000..97253beeb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonParseError @@ -0,0 +1 @@ +#include "qjsondocument.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValue b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValue new file mode 100644 index 000000000..14079ad81 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValue @@ -0,0 +1 @@ +#include "qjsonvalue.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValuePtr b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValuePtr new file mode 100644 index 000000000..14079ad81 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValuePtr @@ -0,0 +1 @@ +#include "qjsonvalue.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValueRef b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValueRef new file mode 100644 index 000000000..14079ad81 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValueRef @@ -0,0 +1 @@ +#include "qjsonvalue.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValueRefPtr b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValueRefPtr new file mode 100644 index 000000000..14079ad81 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QJsonValueRefPtr @@ -0,0 +1 @@ +#include "qjsonvalue.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLatin1Char b/qrenderdoc/3rdparty/qt/include/QtCore/QLatin1Char new file mode 100644 index 000000000..4db2cc810 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLatin1Char @@ -0,0 +1 @@ +#include "qchar.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLatin1Literal b/qrenderdoc/3rdparty/qt/include/QtCore/QLatin1Literal new file mode 100644 index 000000000..e654378fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLatin1Literal @@ -0,0 +1 @@ +#include "qstring.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLatin1String b/qrenderdoc/3rdparty/qt/include/QtCore/QLatin1String new file mode 100644 index 000000000..e654378fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLatin1String @@ -0,0 +1 @@ +#include "qstring.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLibrary b/qrenderdoc/3rdparty/qt/include/QtCore/QLibrary new file mode 100644 index 000000000..096466fd5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLibrary @@ -0,0 +1 @@ +#include "qlibrary.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLibraryInfo b/qrenderdoc/3rdparty/qt/include/QtCore/QLibraryInfo new file mode 100644 index 000000000..21aeaa2e2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLibraryInfo @@ -0,0 +1 @@ +#include "qlibraryinfo.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLine b/qrenderdoc/3rdparty/qt/include/QtCore/QLine new file mode 100644 index 000000000..211197687 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLine @@ -0,0 +1 @@ +#include "qline.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLineF b/qrenderdoc/3rdparty/qt/include/QtCore/QLineF new file mode 100644 index 000000000..211197687 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLineF @@ -0,0 +1 @@ +#include "qline.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedList b/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedList new file mode 100644 index 000000000..bf905e73d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedList @@ -0,0 +1 @@ +#include "qlinkedlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedListData b/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedListData new file mode 100644 index 000000000..bf905e73d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedListData @@ -0,0 +1 @@ +#include "qlinkedlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedListIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedListIterator new file mode 100644 index 000000000..bf905e73d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedListIterator @@ -0,0 +1 @@ +#include "qlinkedlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedListNode b/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedListNode new file mode 100644 index 000000000..bf905e73d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLinkedListNode @@ -0,0 +1 @@ +#include "qlinkedlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QList b/qrenderdoc/3rdparty/qt/include/QtCore/QList new file mode 100644 index 000000000..9cb5bd256 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QList @@ -0,0 +1 @@ +#include "qlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QListData b/qrenderdoc/3rdparty/qt/include/QtCore/QListData new file mode 100644 index 000000000..9cb5bd256 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QListData @@ -0,0 +1 @@ +#include "qlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QListIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QListIterator new file mode 100644 index 000000000..9cb5bd256 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QListIterator @@ -0,0 +1 @@ +#include "qlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QListSpecialMethods b/qrenderdoc/3rdparty/qt/include/QtCore/QListSpecialMethods new file mode 100644 index 000000000..9cb5bd256 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QListSpecialMethods @@ -0,0 +1 @@ +#include "qlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLocale b/qrenderdoc/3rdparty/qt/include/QtCore/QLocale new file mode 100644 index 000000000..7097f1303 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLocale @@ -0,0 +1 @@ +#include "qlocale.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLockFile b/qrenderdoc/3rdparty/qt/include/QtCore/QLockFile new file mode 100644 index 000000000..630c5146c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLockFile @@ -0,0 +1 @@ +#include "qlockfile.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QLoggingCategory b/qrenderdoc/3rdparty/qt/include/QtCore/QLoggingCategory new file mode 100644 index 000000000..5ee144c18 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QLoggingCategory @@ -0,0 +1 @@ +#include "qloggingcategory.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMap b/qrenderdoc/3rdparty/qt/include/QtCore/QMap new file mode 100644 index 000000000..7ef54469a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMap @@ -0,0 +1 @@ +#include "qmap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMapData b/qrenderdoc/3rdparty/qt/include/QtCore/QMapData new file mode 100644 index 000000000..7ef54469a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMapData @@ -0,0 +1 @@ +#include "qmap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMapDataBase b/qrenderdoc/3rdparty/qt/include/QtCore/QMapDataBase new file mode 100644 index 000000000..7ef54469a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMapDataBase @@ -0,0 +1 @@ +#include "qmap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMapIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QMapIterator new file mode 100644 index 000000000..7ef54469a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMapIterator @@ -0,0 +1 @@ +#include "qmap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMapNode b/qrenderdoc/3rdparty/qt/include/QtCore/QMapNode new file mode 100644 index 000000000..7ef54469a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMapNode @@ -0,0 +1 @@ +#include "qmap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMapNodeBase b/qrenderdoc/3rdparty/qt/include/QtCore/QMapNodeBase new file mode 100644 index 000000000..7ef54469a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMapNodeBase @@ -0,0 +1 @@ +#include "qmap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMargins b/qrenderdoc/3rdparty/qt/include/QtCore/QMargins new file mode 100644 index 000000000..636dc328c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMargins @@ -0,0 +1 @@ +#include "qmargins.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMarginsF b/qrenderdoc/3rdparty/qt/include/QtCore/QMarginsF new file mode 100644 index 000000000..636dc328c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMarginsF @@ -0,0 +1 @@ +#include "qmargins.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMessageAuthenticationCode b/qrenderdoc/3rdparty/qt/include/QtCore/QMessageAuthenticationCode new file mode 100644 index 000000000..c06eda156 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMessageAuthenticationCode @@ -0,0 +1 @@ +#include "qmessageauthenticationcode.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMessageLogContext b/qrenderdoc/3rdparty/qt/include/QtCore/QMessageLogContext new file mode 100644 index 000000000..b7315a6dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMessageLogContext @@ -0,0 +1 @@ +#include "qlogging.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMessageLogger b/qrenderdoc/3rdparty/qt/include/QtCore/QMessageLogger new file mode 100644 index 000000000..b7315a6dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMessageLogger @@ -0,0 +1 @@ +#include "qlogging.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMetaClassInfo b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaClassInfo new file mode 100644 index 000000000..e500f5431 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaClassInfo @@ -0,0 +1 @@ +#include "qmetaobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMetaEnum b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaEnum new file mode 100644 index 000000000..e500f5431 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaEnum @@ -0,0 +1 @@ +#include "qmetaobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMetaMethod b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaMethod new file mode 100644 index 000000000..e500f5431 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaMethod @@ -0,0 +1 @@ +#include "qmetaobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMetaObject b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaObject new file mode 100644 index 000000000..7670d03b1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaObject @@ -0,0 +1 @@ +#include "qobjectdefs.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMetaProperty b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaProperty new file mode 100644 index 000000000..e500f5431 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaProperty @@ -0,0 +1 @@ +#include "qmetaobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMetaType b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaType new file mode 100644 index 000000000..69cf71447 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMetaType @@ -0,0 +1 @@ +#include "qmetatype.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMimeData b/qrenderdoc/3rdparty/qt/include/QtCore/QMimeData new file mode 100644 index 000000000..3890e734d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMimeData @@ -0,0 +1 @@ +#include "qmimedata.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMimeDatabase b/qrenderdoc/3rdparty/qt/include/QtCore/QMimeDatabase new file mode 100644 index 000000000..ef3b4bcb8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMimeDatabase @@ -0,0 +1 @@ +#include "qmimedatabase.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMimeType b/qrenderdoc/3rdparty/qt/include/QtCore/QMimeType new file mode 100644 index 000000000..9ec66de1c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMimeType @@ -0,0 +1 @@ +#include "qmimetype.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QModelIndex b/qrenderdoc/3rdparty/qt/include/QtCore/QModelIndex new file mode 100644 index 000000000..e3aaad49d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QModelIndex @@ -0,0 +1 @@ +#include "qabstractitemmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QModelIndexList b/qrenderdoc/3rdparty/qt/include/QtCore/QModelIndexList new file mode 100644 index 000000000..e3aaad49d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QModelIndexList @@ -0,0 +1 @@ +#include "qabstractitemmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMultiHash b/qrenderdoc/3rdparty/qt/include/QtCore/QMultiHash new file mode 100644 index 000000000..bc8754eef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMultiHash @@ -0,0 +1 @@ +#include "qhash.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMultiMap b/qrenderdoc/3rdparty/qt/include/QtCore/QMultiMap new file mode 100644 index 000000000..7ef54469a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMultiMap @@ -0,0 +1 @@ +#include "qmap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutableByteArrayListIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableByteArrayListIterator new file mode 100644 index 000000000..552ceb601 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableByteArrayListIterator @@ -0,0 +1 @@ +#include "qbytearraylist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutableFutureIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableFutureIterator new file mode 100644 index 000000000..a3de907a0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableFutureIterator @@ -0,0 +1 @@ +#include "qfuture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutableHashIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableHashIterator new file mode 100644 index 000000000..bc8754eef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableHashIterator @@ -0,0 +1 @@ +#include "qhash.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutableLinkedListIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableLinkedListIterator new file mode 100644 index 000000000..bf905e73d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableLinkedListIterator @@ -0,0 +1 @@ +#include "qlinkedlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutableListIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableListIterator new file mode 100644 index 000000000..9cb5bd256 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableListIterator @@ -0,0 +1 @@ +#include "qlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutableMapIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableMapIterator new file mode 100644 index 000000000..7ef54469a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableMapIterator @@ -0,0 +1 @@ +#include "qmap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutableSetIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableSetIterator new file mode 100644 index 000000000..dfc13ad31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableSetIterator @@ -0,0 +1 @@ +#include "qset.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutableStringListIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableStringListIterator new file mode 100644 index 000000000..4ff77f3a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableStringListIterator @@ -0,0 +1 @@ +#include "qstringlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutableVectorIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableVectorIterator new file mode 100644 index 000000000..f8fd634a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutableVectorIterator @@ -0,0 +1 @@ +#include "qvector.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutex b/qrenderdoc/3rdparty/qt/include/QtCore/QMutex new file mode 100644 index 000000000..474ff36ac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutex @@ -0,0 +1 @@ +#include "qmutex.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QMutexLocker b/qrenderdoc/3rdparty/qt/include/QtCore/QMutexLocker new file mode 100644 index 000000000..474ff36ac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QMutexLocker @@ -0,0 +1 @@ +#include "qmutex.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QNoDebug b/qrenderdoc/3rdparty/qt/include/QtCore/QNoDebug new file mode 100644 index 000000000..0a4db8494 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QNoDebug @@ -0,0 +1 @@ +#include "qdebug.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QNonConstOverload b/qrenderdoc/3rdparty/qt/include/QtCore/QNonConstOverload new file mode 100644 index 000000000..fce4ed884 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QNonConstOverload @@ -0,0 +1 @@ +#include "qglobal.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QObject b/qrenderdoc/3rdparty/qt/include/QtCore/QObject new file mode 100644 index 000000000..2a3ba86ba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QObject @@ -0,0 +1 @@ +#include "qobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QObjectCleanupHandler b/qrenderdoc/3rdparty/qt/include/QtCore/QObjectCleanupHandler new file mode 100644 index 000000000..8e5ef57e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QObjectCleanupHandler @@ -0,0 +1 @@ +#include "qobjectcleanuphandler.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QObjectData b/qrenderdoc/3rdparty/qt/include/QtCore/QObjectData new file mode 100644 index 000000000..2a3ba86ba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QObjectData @@ -0,0 +1 @@ +#include "qobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QObjectList b/qrenderdoc/3rdparty/qt/include/QtCore/QObjectList new file mode 100644 index 000000000..2a3ba86ba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QObjectList @@ -0,0 +1 @@ +#include "qobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QObjectUserData b/qrenderdoc/3rdparty/qt/include/QtCore/QObjectUserData new file mode 100644 index 000000000..2a3ba86ba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QObjectUserData @@ -0,0 +1 @@ +#include "qobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QOperatingSystemVersion b/qrenderdoc/3rdparty/qt/include/QtCore/QOperatingSystemVersion new file mode 100644 index 000000000..37e308125 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QOperatingSystemVersion @@ -0,0 +1 @@ +#include "qoperatingsystemversion.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QPair b/qrenderdoc/3rdparty/qt/include/QtCore/QPair new file mode 100644 index 000000000..1f2a95825 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QPair @@ -0,0 +1 @@ +#include "qpair.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QParallelAnimationGroup b/qrenderdoc/3rdparty/qt/include/QtCore/QParallelAnimationGroup new file mode 100644 index 000000000..9154ce950 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QParallelAnimationGroup @@ -0,0 +1 @@ +#include "qparallelanimationgroup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QPauseAnimation b/qrenderdoc/3rdparty/qt/include/QtCore/QPauseAnimation new file mode 100644 index 000000000..5729ae81c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QPauseAnimation @@ -0,0 +1 @@ +#include "qpauseanimation.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QPersistentModelIndex b/qrenderdoc/3rdparty/qt/include/QtCore/QPersistentModelIndex new file mode 100644 index 000000000..e3aaad49d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QPersistentModelIndex @@ -0,0 +1 @@ +#include "qabstractitemmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QPluginLoader b/qrenderdoc/3rdparty/qt/include/QtCore/QPluginLoader new file mode 100644 index 000000000..ed05a88b8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QPluginLoader @@ -0,0 +1 @@ +#include "qpluginloader.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QPoint b/qrenderdoc/3rdparty/qt/include/QtCore/QPoint new file mode 100644 index 000000000..724574899 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QPoint @@ -0,0 +1 @@ +#include "qpoint.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QPointF b/qrenderdoc/3rdparty/qt/include/QtCore/QPointF new file mode 100644 index 000000000..724574899 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QPointF @@ -0,0 +1 @@ +#include "qpoint.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QPointer b/qrenderdoc/3rdparty/qt/include/QtCore/QPointer new file mode 100644 index 000000000..0292152d1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QPointer @@ -0,0 +1 @@ +#include "qpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QProcess b/qrenderdoc/3rdparty/qt/include/QtCore/QProcess new file mode 100644 index 000000000..61ca30781 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QProcess @@ -0,0 +1 @@ +#include "qprocess.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QProcessEnvironment b/qrenderdoc/3rdparty/qt/include/QtCore/QProcessEnvironment new file mode 100644 index 000000000..61ca30781 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QProcessEnvironment @@ -0,0 +1 @@ +#include "qprocess.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QPropertyAnimation b/qrenderdoc/3rdparty/qt/include/QtCore/QPropertyAnimation new file mode 100644 index 000000000..f758f597b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QPropertyAnimation @@ -0,0 +1 @@ +#include "qpropertyanimation.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QQueue b/qrenderdoc/3rdparty/qt/include/QtCore/QQueue new file mode 100644 index 000000000..99d0c513d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QQueue @@ -0,0 +1 @@ +#include "qqueue.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QReadLocker b/qrenderdoc/3rdparty/qt/include/QtCore/QReadLocker new file mode 100644 index 000000000..6afb2a4e5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QReadLocker @@ -0,0 +1 @@ +#include "qreadwritelock.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QReadWriteLock b/qrenderdoc/3rdparty/qt/include/QtCore/QReadWriteLock new file mode 100644 index 000000000..6afb2a4e5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QReadWriteLock @@ -0,0 +1 @@ +#include "qreadwritelock.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QRect b/qrenderdoc/3rdparty/qt/include/QtCore/QRect new file mode 100644 index 000000000..b9dc23e22 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QRect @@ -0,0 +1 @@ +#include "qrect.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QRectF b/qrenderdoc/3rdparty/qt/include/QtCore/QRectF new file mode 100644 index 000000000..b9dc23e22 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QRectF @@ -0,0 +1 @@ +#include "qrect.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QRegExp b/qrenderdoc/3rdparty/qt/include/QtCore/QRegExp new file mode 100644 index 000000000..950e48bd5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QRegExp @@ -0,0 +1 @@ +#include "qregexp.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QRegularExpression b/qrenderdoc/3rdparty/qt/include/QtCore/QRegularExpression new file mode 100644 index 000000000..0d687327e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QRegularExpression @@ -0,0 +1 @@ +#include "qregularexpression.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QRegularExpressionMatch b/qrenderdoc/3rdparty/qt/include/QtCore/QRegularExpressionMatch new file mode 100644 index 000000000..0d687327e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QRegularExpressionMatch @@ -0,0 +1 @@ +#include "qregularexpression.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QRegularExpressionMatchIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QRegularExpressionMatchIterator new file mode 100644 index 000000000..0d687327e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QRegularExpressionMatchIterator @@ -0,0 +1 @@ +#include "qregularexpression.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QResource b/qrenderdoc/3rdparty/qt/include/QtCore/QResource new file mode 100644 index 000000000..fd8fa46bc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QResource @@ -0,0 +1 @@ +#include "qresource.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QReturnArgument b/qrenderdoc/3rdparty/qt/include/QtCore/QReturnArgument new file mode 100644 index 000000000..7670d03b1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QReturnArgument @@ -0,0 +1 @@ +#include "qobjectdefs.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QRunnable b/qrenderdoc/3rdparty/qt/include/QtCore/QRunnable new file mode 100644 index 000000000..2ca3ac684 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QRunnable @@ -0,0 +1 @@ +#include "qrunnable.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSaveFile b/qrenderdoc/3rdparty/qt/include/QtCore/QSaveFile new file mode 100644 index 000000000..568943ad9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSaveFile @@ -0,0 +1 @@ +#include "qsavefile.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QScopedArrayPointer b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedArrayPointer new file mode 100644 index 000000000..4096f2a4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedArrayPointer @@ -0,0 +1 @@ +#include "qscopedpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointer b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointer new file mode 100644 index 000000000..4096f2a4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointer @@ -0,0 +1 @@ +#include "qscopedpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerArrayDeleter b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerArrayDeleter new file mode 100644 index 000000000..4096f2a4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerArrayDeleter @@ -0,0 +1 @@ +#include "qscopedpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerDeleteLater b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerDeleteLater new file mode 100644 index 000000000..4096f2a4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerDeleteLater @@ -0,0 +1 @@ +#include "qscopedpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerDeleter b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerDeleter new file mode 100644 index 000000000..4096f2a4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerDeleter @@ -0,0 +1 @@ +#include "qscopedpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerObjectDeleteLater b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerObjectDeleteLater new file mode 100644 index 000000000..4096f2a4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerObjectDeleteLater @@ -0,0 +1 @@ +#include "qscopedpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerPodDeleter b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerPodDeleter new file mode 100644 index 000000000..4096f2a4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedPointerPodDeleter @@ -0,0 +1 @@ +#include "qscopedpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QScopedValueRollback b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedValueRollback new file mode 100644 index 000000000..ac6483bb0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QScopedValueRollback @@ -0,0 +1 @@ +#include "qscopedvaluerollback.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSemaphore b/qrenderdoc/3rdparty/qt/include/QtCore/QSemaphore new file mode 100644 index 000000000..b1d0169e6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSemaphore @@ -0,0 +1 @@ +#include "qsemaphore.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSequentialAnimationGroup b/qrenderdoc/3rdparty/qt/include/QtCore/QSequentialAnimationGroup new file mode 100644 index 000000000..c97ff87b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSequentialAnimationGroup @@ -0,0 +1 @@ +#include "qsequentialanimationgroup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSequentialIterable b/qrenderdoc/3rdparty/qt/include/QtCore/QSequentialIterable new file mode 100644 index 000000000..f9c5160b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSequentialIterable @@ -0,0 +1 @@ +#include "qvariant.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSet b/qrenderdoc/3rdparty/qt/include/QtCore/QSet new file mode 100644 index 000000000..dfc13ad31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSet @@ -0,0 +1 @@ +#include "qset.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSetIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QSetIterator new file mode 100644 index 000000000..dfc13ad31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSetIterator @@ -0,0 +1 @@ +#include "qset.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSettings b/qrenderdoc/3rdparty/qt/include/QtCore/QSettings new file mode 100644 index 000000000..b3f9d849c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSettings @@ -0,0 +1 @@ +#include "qsettings.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSharedData b/qrenderdoc/3rdparty/qt/include/QtCore/QSharedData new file mode 100644 index 000000000..551f0f906 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSharedData @@ -0,0 +1 @@ +#include "qshareddata.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSharedDataPointer b/qrenderdoc/3rdparty/qt/include/QtCore/QSharedDataPointer new file mode 100644 index 000000000..551f0f906 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSharedDataPointer @@ -0,0 +1 @@ +#include "qshareddata.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSharedMemory b/qrenderdoc/3rdparty/qt/include/QtCore/QSharedMemory new file mode 100644 index 000000000..0726bedce --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSharedMemory @@ -0,0 +1 @@ +#include "qsharedmemory.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSharedPointer b/qrenderdoc/3rdparty/qt/include/QtCore/QSharedPointer new file mode 100644 index 000000000..5dea7ad50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSharedPointer @@ -0,0 +1 @@ +#include "qsharedpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSignalBlocker b/qrenderdoc/3rdparty/qt/include/QtCore/QSignalBlocker new file mode 100644 index 000000000..2a3ba86ba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSignalBlocker @@ -0,0 +1 @@ +#include "qobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSignalMapper b/qrenderdoc/3rdparty/qt/include/QtCore/QSignalMapper new file mode 100644 index 000000000..ba73ffdb1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSignalMapper @@ -0,0 +1 @@ +#include "qsignalmapper.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSignalTransition b/qrenderdoc/3rdparty/qt/include/QtCore/QSignalTransition new file mode 100644 index 000000000..314d6a22d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSignalTransition @@ -0,0 +1 @@ +#include "qsignaltransition.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSize b/qrenderdoc/3rdparty/qt/include/QtCore/QSize new file mode 100644 index 000000000..bae7cd8a7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSize @@ -0,0 +1 @@ +#include "qsize.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSizeF b/qrenderdoc/3rdparty/qt/include/QtCore/QSizeF new file mode 100644 index 000000000..bae7cd8a7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSizeF @@ -0,0 +1 @@ +#include "qsize.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSocketNotifier b/qrenderdoc/3rdparty/qt/include/QtCore/QSocketNotifier new file mode 100644 index 000000000..9caa9de2a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSocketNotifier @@ -0,0 +1 @@ +#include "qsocketnotifier.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSortFilterProxyModel b/qrenderdoc/3rdparty/qt/include/QtCore/QSortFilterProxyModel new file mode 100644 index 000000000..2c2c1abca --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSortFilterProxyModel @@ -0,0 +1 @@ +#include "qsortfilterproxymodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStack b/qrenderdoc/3rdparty/qt/include/QtCore/QStack new file mode 100644 index 000000000..ca71a9ded --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStack @@ -0,0 +1 @@ +#include "qstack.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStandardPaths b/qrenderdoc/3rdparty/qt/include/QtCore/QStandardPaths new file mode 100644 index 000000000..810be3cc5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStandardPaths @@ -0,0 +1 @@ +#include "qstandardpaths.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QState b/qrenderdoc/3rdparty/qt/include/QtCore/QState new file mode 100644 index 000000000..79e85e61f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QState @@ -0,0 +1 @@ +#include "qstate.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStateMachine b/qrenderdoc/3rdparty/qt/include/QtCore/QStateMachine new file mode 100644 index 000000000..e74918411 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStateMachine @@ -0,0 +1 @@ +#include "qstatemachine.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStaticArrayData b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticArrayData new file mode 100644 index 000000000..42ac83f88 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticArrayData @@ -0,0 +1 @@ +#include "qarraydata.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStaticAssertFailure b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticAssertFailure new file mode 100644 index 000000000..fce4ed884 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticAssertFailure @@ -0,0 +1 @@ +#include "qglobal.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStaticByteArrayData b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticByteArrayData new file mode 100644 index 000000000..2f17cb4f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticByteArrayData @@ -0,0 +1 @@ +#include "qbytearray.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStaticByteArrayMatcherBase b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticByteArrayMatcherBase new file mode 100644 index 000000000..3099f0667 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticByteArrayMatcherBase @@ -0,0 +1 @@ +#include "qbytearraymatcher.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStaticPlugin b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticPlugin new file mode 100644 index 000000000..e92d8a1d3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticPlugin @@ -0,0 +1 @@ +#include "qplugin.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStaticStringData b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticStringData new file mode 100644 index 000000000..e654378fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStaticStringData @@ -0,0 +1 @@ +#include "qstring.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStorageInfo b/qrenderdoc/3rdparty/qt/include/QtCore/QStorageInfo new file mode 100644 index 000000000..2dc4d4761 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStorageInfo @@ -0,0 +1 @@ +#include "qstorageinfo.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QString b/qrenderdoc/3rdparty/qt/include/QtCore/QString new file mode 100644 index 000000000..e654378fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QString @@ -0,0 +1 @@ +#include "qstring.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStringBuilder b/qrenderdoc/3rdparty/qt/include/QtCore/QStringBuilder new file mode 100644 index 000000000..85278ce67 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStringBuilder @@ -0,0 +1 @@ +#include "qstringbuilder.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStringData b/qrenderdoc/3rdparty/qt/include/QtCore/QStringData new file mode 100644 index 000000000..e654378fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStringData @@ -0,0 +1 @@ +#include "qstring.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStringDataPtr b/qrenderdoc/3rdparty/qt/include/QtCore/QStringDataPtr new file mode 100644 index 000000000..e654378fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStringDataPtr @@ -0,0 +1 @@ +#include "qstring.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStringList b/qrenderdoc/3rdparty/qt/include/QtCore/QStringList new file mode 100644 index 000000000..4ff77f3a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStringList @@ -0,0 +1 @@ +#include "qstringlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStringListIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QStringListIterator new file mode 100644 index 000000000..4ff77f3a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStringListIterator @@ -0,0 +1 @@ +#include "qstringlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStringListModel b/qrenderdoc/3rdparty/qt/include/QtCore/QStringListModel new file mode 100644 index 000000000..3ad5f7fe5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStringListModel @@ -0,0 +1 @@ +#include "qstringlistmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStringMatcher b/qrenderdoc/3rdparty/qt/include/QtCore/QStringMatcher new file mode 100644 index 000000000..962bdb9b1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStringMatcher @@ -0,0 +1 @@ +#include "qstringmatcher.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QStringRef b/qrenderdoc/3rdparty/qt/include/QtCore/QStringRef new file mode 100644 index 000000000..e654378fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QStringRef @@ -0,0 +1 @@ +#include "qstring.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSysInfo b/qrenderdoc/3rdparty/qt/include/QtCore/QSysInfo new file mode 100644 index 000000000..27c991d53 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSysInfo @@ -0,0 +1 @@ +#include "qsysinfo.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QSystemSemaphore b/qrenderdoc/3rdparty/qt/include/QtCore/QSystemSemaphore new file mode 100644 index 000000000..1fffd2935 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QSystemSemaphore @@ -0,0 +1 @@ +#include "qsystemsemaphore.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTemporaryDir b/qrenderdoc/3rdparty/qt/include/QtCore/QTemporaryDir new file mode 100644 index 000000000..c908de6e0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTemporaryDir @@ -0,0 +1 @@ +#include "qtemporarydir.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTemporaryFile b/qrenderdoc/3rdparty/qt/include/QtCore/QTemporaryFile new file mode 100644 index 000000000..512a8ee98 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTemporaryFile @@ -0,0 +1 @@ +#include "qtemporaryfile.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTextBoundaryFinder b/qrenderdoc/3rdparty/qt/include/QtCore/QTextBoundaryFinder new file mode 100644 index 000000000..100c96449 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTextBoundaryFinder @@ -0,0 +1 @@ +#include "qtextboundaryfinder.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTextCodec b/qrenderdoc/3rdparty/qt/include/QtCore/QTextCodec new file mode 100644 index 000000000..d54182b54 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTextCodec @@ -0,0 +1 @@ +#include "qtextcodec.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTextDecoder b/qrenderdoc/3rdparty/qt/include/QtCore/QTextDecoder new file mode 100644 index 000000000..d54182b54 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTextDecoder @@ -0,0 +1 @@ +#include "qtextcodec.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTextEncoder b/qrenderdoc/3rdparty/qt/include/QtCore/QTextEncoder new file mode 100644 index 000000000..d54182b54 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTextEncoder @@ -0,0 +1 @@ +#include "qtextcodec.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTextStream b/qrenderdoc/3rdparty/qt/include/QtCore/QTextStream new file mode 100644 index 000000000..b258e9e8f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTextStream @@ -0,0 +1 @@ +#include "qtextstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTextStreamFunction b/qrenderdoc/3rdparty/qt/include/QtCore/QTextStreamFunction new file mode 100644 index 000000000..b258e9e8f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTextStreamFunction @@ -0,0 +1 @@ +#include "qtextstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTextStreamManipulator b/qrenderdoc/3rdparty/qt/include/QtCore/QTextStreamManipulator new file mode 100644 index 000000000..b258e9e8f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTextStreamManipulator @@ -0,0 +1 @@ +#include "qtextstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QThread b/qrenderdoc/3rdparty/qt/include/QtCore/QThread new file mode 100644 index 000000000..6beb7bdde --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QThread @@ -0,0 +1 @@ +#include "qthread.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QThreadPool b/qrenderdoc/3rdparty/qt/include/QtCore/QThreadPool new file mode 100644 index 000000000..7105eb9bd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QThreadPool @@ -0,0 +1 @@ +#include "qthreadpool.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QThreadStorage b/qrenderdoc/3rdparty/qt/include/QtCore/QThreadStorage new file mode 100644 index 000000000..f74aaa94c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QThreadStorage @@ -0,0 +1 @@ +#include "qthreadstorage.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QThreadStorageData b/qrenderdoc/3rdparty/qt/include/QtCore/QThreadStorageData new file mode 100644 index 000000000..f74aaa94c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QThreadStorageData @@ -0,0 +1 @@ +#include "qthreadstorage.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTime b/qrenderdoc/3rdparty/qt/include/QtCore/QTime new file mode 100644 index 000000000..dab9d714b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTime @@ -0,0 +1 @@ +#include "qdatetime.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTimeLine b/qrenderdoc/3rdparty/qt/include/QtCore/QTimeLine new file mode 100644 index 000000000..72248e2a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTimeLine @@ -0,0 +1 @@ +#include "qtimeline.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTimeZone b/qrenderdoc/3rdparty/qt/include/QtCore/QTimeZone new file mode 100644 index 000000000..5ca241d4b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTimeZone @@ -0,0 +1 @@ +#include "qtimezone.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTimer b/qrenderdoc/3rdparty/qt/include/QtCore/QTimer new file mode 100644 index 000000000..ec01f360d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTimer @@ -0,0 +1 @@ +#include "qtimer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTimerEvent b/qrenderdoc/3rdparty/qt/include/QtCore/QTimerEvent new file mode 100644 index 000000000..4973661b4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTimerEvent @@ -0,0 +1 @@ +#include "qcoreevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTranslator b/qrenderdoc/3rdparty/qt/include/QtCore/QTranslator new file mode 100644 index 000000000..95e976285 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTranslator @@ -0,0 +1 @@ +#include "qtranslator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTypeInfo b/qrenderdoc/3rdparty/qt/include/QtCore/QTypeInfo new file mode 100644 index 000000000..7280aaf21 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTypeInfo @@ -0,0 +1 @@ +#include "qtypeinfo.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTypeInfoMerger b/qrenderdoc/3rdparty/qt/include/QtCore/QTypeInfoMerger new file mode 100644 index 000000000..7280aaf21 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTypeInfoMerger @@ -0,0 +1 @@ +#include "qtypeinfo.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QTypeInfoQuery b/qrenderdoc/3rdparty/qt/include/QtCore/QTypeInfoQuery new file mode 100644 index 000000000..7280aaf21 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QTypeInfoQuery @@ -0,0 +1 @@ +#include "qtypeinfo.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QUnhandledException b/qrenderdoc/3rdparty/qt/include/QtCore/QUnhandledException new file mode 100644 index 000000000..e3f23bf35 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QUnhandledException @@ -0,0 +1 @@ +#include "qexception.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QUrl b/qrenderdoc/3rdparty/qt/include/QtCore/QUrl new file mode 100644 index 000000000..7e443497c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QUrl @@ -0,0 +1 @@ +#include "qurl.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QUrlQuery b/qrenderdoc/3rdparty/qt/include/QtCore/QUrlQuery new file mode 100644 index 000000000..fd9d326f6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QUrlQuery @@ -0,0 +1 @@ +#include "qurlquery.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QUrlTwoFlags b/qrenderdoc/3rdparty/qt/include/QtCore/QUrlTwoFlags new file mode 100644 index 000000000..7e443497c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QUrlTwoFlags @@ -0,0 +1 @@ +#include "qurl.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QUuid b/qrenderdoc/3rdparty/qt/include/QtCore/QUuid new file mode 100644 index 000000000..55cad3a9f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QUuid @@ -0,0 +1 @@ +#include "quuid.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QVarLengthArray b/qrenderdoc/3rdparty/qt/include/QtCore/QVarLengthArray new file mode 100644 index 000000000..363dc0f90 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QVarLengthArray @@ -0,0 +1 @@ +#include "qvarlengtharray.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QVariant b/qrenderdoc/3rdparty/qt/include/QtCore/QVariant new file mode 100644 index 000000000..f9c5160b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QVariant @@ -0,0 +1 @@ +#include "qvariant.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QVariantAnimation b/qrenderdoc/3rdparty/qt/include/QtCore/QVariantAnimation new file mode 100644 index 000000000..d97bc1d4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QVariantAnimation @@ -0,0 +1 @@ +#include "qvariantanimation.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QVariantComparisonHelper b/qrenderdoc/3rdparty/qt/include/QtCore/QVariantComparisonHelper new file mode 100644 index 000000000..f9c5160b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QVariantComparisonHelper @@ -0,0 +1 @@ +#include "qvariant.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QVariantHash b/qrenderdoc/3rdparty/qt/include/QtCore/QVariantHash new file mode 100644 index 000000000..f9c5160b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QVariantHash @@ -0,0 +1 @@ +#include "qvariant.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QVariantList b/qrenderdoc/3rdparty/qt/include/QtCore/QVariantList new file mode 100644 index 000000000..f9c5160b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QVariantList @@ -0,0 +1 @@ +#include "qvariant.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QVariantMap b/qrenderdoc/3rdparty/qt/include/QtCore/QVariantMap new file mode 100644 index 000000000..f9c5160b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QVariantMap @@ -0,0 +1 @@ +#include "qvariant.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QVector b/qrenderdoc/3rdparty/qt/include/QtCore/QVector new file mode 100644 index 000000000..f8fd634a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QVector @@ -0,0 +1 @@ +#include "qvector.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QVectorIterator b/qrenderdoc/3rdparty/qt/include/QtCore/QVectorIterator new file mode 100644 index 000000000..f8fd634a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QVectorIterator @@ -0,0 +1 @@ +#include "qvector.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QVersionNumber b/qrenderdoc/3rdparty/qt/include/QtCore/QVersionNumber new file mode 100644 index 000000000..408c0b7e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QVersionNumber @@ -0,0 +1 @@ +#include "qversionnumber.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QWaitCondition b/qrenderdoc/3rdparty/qt/include/QtCore/QWaitCondition new file mode 100644 index 000000000..104df4dc3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QWaitCondition @@ -0,0 +1 @@ +#include "qwaitcondition.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QWeakPointer b/qrenderdoc/3rdparty/qt/include/QtCore/QWeakPointer new file mode 100644 index 000000000..5dea7ad50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QWeakPointer @@ -0,0 +1 @@ +#include "qsharedpointer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QWinEventNotifier b/qrenderdoc/3rdparty/qt/include/QtCore/QWinEventNotifier new file mode 100644 index 000000000..a4ec33e15 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QWinEventNotifier @@ -0,0 +1 @@ +#include "qwineventnotifier.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QWriteLocker b/qrenderdoc/3rdparty/qt/include/QtCore/QWriteLocker new file mode 100644 index 000000000..6afb2a4e5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QWriteLocker @@ -0,0 +1 @@ +#include "qreadwritelock.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamAttribute b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamAttribute new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamAttribute @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamAttributes b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamAttributes new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamAttributes @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamEntityDeclaration b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamEntityDeclaration new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamEntityDeclaration @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamEntityDeclarations b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamEntityDeclarations new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamEntityDeclarations @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamEntityResolver b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamEntityResolver new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamEntityResolver @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNamespaceDeclaration b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNamespaceDeclaration new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNamespaceDeclaration @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNamespaceDeclarations b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNamespaceDeclarations new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNamespaceDeclarations @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNotationDeclaration b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNotationDeclaration new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNotationDeclaration @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNotationDeclarations b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNotationDeclarations new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamNotationDeclarations @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamReader b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamReader new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamReader @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamStringRef b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamStringRef new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamStringRef @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamWriter b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamWriter new file mode 100644 index 000000000..f338fe84c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QXmlStreamWriter @@ -0,0 +1 @@ +#include "qxmlstream.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/Q_PID b/qrenderdoc/3rdparty/qt/include/QtCore/Q_PID new file mode 100644 index 000000000..61ca30781 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/Q_PID @@ -0,0 +1 @@ +#include "qprocess.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/Q_SECURITY_ATTRIBUTES b/qrenderdoc/3rdparty/qt/include/QtCore/Q_SECURITY_ATTRIBUTES new file mode 100644 index 000000000..61ca30781 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/Q_SECURITY_ATTRIBUTES @@ -0,0 +1 @@ +#include "qprocess.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/Q_STARTUPINFO b/qrenderdoc/3rdparty/qt/include/QtCore/Q_STARTUPINFO new file mode 100644 index 000000000..61ca30781 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/Q_STARTUPINFO @@ -0,0 +1 @@ +#include "qprocess.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/Qt b/qrenderdoc/3rdparty/qt/include/QtCore/Qt new file mode 100644 index 000000000..66a536970 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/Qt @@ -0,0 +1 @@ +#include "qnamespace.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtAlgorithms b/qrenderdoc/3rdparty/qt/include/QtCore/QtAlgorithms new file mode 100644 index 000000000..254c1091b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtAlgorithms @@ -0,0 +1 @@ +#include "qalgorithms.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtCleanUpFunction b/qrenderdoc/3rdparty/qt/include/QtCore/QtCleanUpFunction new file mode 100644 index 000000000..6e3497e8e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtCleanUpFunction @@ -0,0 +1 @@ +#include "qcoreapplication.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtConfig b/qrenderdoc/3rdparty/qt/include/QtCore/QtConfig new file mode 100644 index 000000000..c73426316 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtConfig @@ -0,0 +1 @@ +#include "qconfig.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtContainerFwd b/qrenderdoc/3rdparty/qt/include/QtCore/QtContainerFwd new file mode 100644 index 000000000..5c13ca789 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtContainerFwd @@ -0,0 +1 @@ +#include "qcontainerfwd.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtCore b/qrenderdoc/3rdparty/qt/include/QtCore/QtCore new file mode 100644 index 000000000..e06f567f4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtCore @@ -0,0 +1,197 @@ +#ifndef QT_QTCORE_MODULE_H +#define QT_QTCORE_MODULE_H +#include +#include "qglobal.h" +#include "qabstractanimation.h" +#include "qabstracteventdispatcher.h" +#include "qabstractitemmodel.h" +#include "qabstractnativeeventfilter.h" +#include "qabstractproxymodel.h" +#if QT_CONFIG(statemachine) +#include "qabstractstate.h" +#endif +#if QT_CONFIG(statemachine) +#include "qabstracttransition.h" +#endif +#include "qalgorithms.h" +#include "qanimationgroup.h" +#include "qarraydata.h" +#include "qarraydataops.h" +#include "qarraydatapointer.h" +#include "qatomic.h" +#include "qbasictimer.h" +#include "qbitarray.h" +#include "qbuffer.h" +#include "qbytearray.h" +#include "qbytearraylist.h" +#include "qbytearraymatcher.h" +#include "qcache.h" +#include "qchar.h" +#include "qcollator.h" +#if QT_CONFIG(commandlineparser) +#include "qcommandlineoption.h" +#endif +#if QT_CONFIG(commandlineparser) +#include "qcommandlineparser.h" +#endif +#include "qcompilerdetection.h" +#include "qcontainerfwd.h" +#include "qcontiguouscache.h" +#include "qcoreapplication.h" +#include "qcoreevent.h" +#include "qcryptographichash.h" +#include "qdatastream.h" +#include "qdatetime.h" +#include "qdeadlinetimer.h" +#include "qdebug.h" +#include "qdir.h" +#include "qdiriterator.h" +#include "qeasingcurve.h" +#include "qelapsedtimer.h" +#include "qendian.h" +#include "qeventloop.h" +#if QT_CONFIG(qeventtransition) +#include "qeventtransition.h" +#endif +#include "qexception.h" +#include "qfactoryinterface.h" +#include "qfile.h" +#include "qfiledevice.h" +#include "qfileinfo.h" +#include "qfileselector.h" +#include "qfilesystemwatcher.h" +#if QT_CONFIG(statemachine) +#include "qfinalstate.h" +#endif +#include "qflags.h" +#include "qfuture.h" +#include "qfutureinterface.h" +#include "qfuturesynchronizer.h" +#include "qfuturewatcher.h" +#include "qgenericatomic.h" +#include "qglobalstatic.h" +#include "qhash.h" +#include "qhashfunctions.h" +#if QT_CONFIG(statemachine) +#include "qhistorystate.h" +#endif +#include "qidentityproxymodel.h" +#include "qiodevice.h" +#include "qisenum.h" +#include "qitemselectionmodel.h" +#include "qiterator.h" +#include "qjsonarray.h" +#include "qjsondocument.h" +#include "qjsonobject.h" +#include "qjsonvalue.h" +#if QT_CONFIG(library) +#include "qlibrary.h" +#endif +#include "qlibraryinfo.h" +#include "qline.h" +#include "qlinkedlist.h" +#include "qlist.h" +#include "qlocale.h" +#include "qlockfile.h" +#include "qloggingcategory.h" +#include "qmap.h" +#include "qmargins.h" +#include "qmath.h" +#include "qmessageauthenticationcode.h" +#include "qmetaobject.h" +#include "qmetatype.h" +#include "qmimedata.h" +#include "qmimedatabase.h" +#include "qmimetype.h" +#include "qmutex.h" +#include "qnamespace.h" +#include "qnumeric.h" +#include "qobject.h" +#include "qobjectcleanuphandler.h" +#include "qobjectdefs.h" +#include "qoperatingsystemversion.h" +#include "qpair.h" +#include "qparallelanimationgroup.h" +#include "qpauseanimation.h" +#include "qplugin.h" +#include "qpluginloader.h" +#include "qpoint.h" +#include "qpointer.h" +#if QT_CONFIG(processenvironment) +#include "qprocess.h" +#endif +#include "qprocessordetection.h" +#include "qpropertyanimation.h" +#include "qqueue.h" +#include "qreadwritelock.h" +#include "qrect.h" +#include "qrefcount.h" +#include "qregexp.h" +#include "qregularexpression.h" +#include "qresource.h" +#include "qresultstore.h" +#include "qrunnable.h" +#include "qsavefile.h" +#include "qscopedpointer.h" +#include "qscopedvaluerollback.h" +#include "qsemaphore.h" +#include "qsequentialanimationgroup.h" +#include "qset.h" +#include "qsettings.h" +#include "qshareddata.h" +#include "qsharedmemory.h" +#include "qsharedpointer.h" +#include "qsignalmapper.h" +#if QT_CONFIG(statemachine) +#include "qsignaltransition.h" +#endif +#include "qsize.h" +#include "qsocketnotifier.h" +#include "qsortfilterproxymodel.h" +#include "qstack.h" +#include "qstandardpaths.h" +#if QT_CONFIG(statemachine) +#include "qstate.h" +#endif +#if QT_CONFIG(statemachine) +#include "qstatemachine.h" +#endif +#include "qstorageinfo.h" +#include "qstring.h" +#include "qstringbuilder.h" +#include "qstringlist.h" +#include "qstringlistmodel.h" +#include "qstringmatcher.h" +#include "qsysinfo.h" +#include "qsystemdetection.h" +#include "qsystemsemaphore.h" +#include "qtemporarydir.h" +#include "qtemporaryfile.h" +#include "qtextboundaryfinder.h" +#include "qtextcodec.h" +#include "qtextstream.h" +#include "qthread.h" +#include "qthreadpool.h" +#include "qthreadstorage.h" +#include "qtimeline.h" +#include "qtimer.h" +#if QT_CONFIG(timezone) +#include "qtimezone.h" +#endif +#include "qtranslator.h" +#include "qtypeinfo.h" +#include "qtypetraits.h" +#include "qurl.h" +#include "qurlquery.h" +#include "quuid.h" +#include "qvariant.h" +#include "qvariantanimation.h" +#include "qvarlengtharray.h" +#include "qvector.h" +#include "qversionnumber.h" +#include "qversiontagging.h" +#include "qwaitcondition.h" +#include "qwineventnotifier.h" +#include "qxmlstream.h" +#include "qtcoreversion.h" +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtCoreDepends b/qrenderdoc/3rdparty/qt/include/QtCore/QtCoreDepends new file mode 100644 index 000000000..a95354027 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtCoreDepends @@ -0,0 +1,3 @@ +/* This file was generated by qmake with the info from /src/corelib/corelib.pro. */ +#ifdef __cplusplus /* create empty PCH in C mode */ +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtCoreVersion b/qrenderdoc/3rdparty/qt/include/QtCore/QtCoreVersion new file mode 100644 index 000000000..0cad6c86c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtCoreVersion @@ -0,0 +1 @@ +#include "qtcoreversion.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtDebug b/qrenderdoc/3rdparty/qt/include/QtCore/QtDebug new file mode 100644 index 000000000..0a4db8494 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtDebug @@ -0,0 +1 @@ +#include "qdebug.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtEndian b/qrenderdoc/3rdparty/qt/include/QtCore/QtEndian new file mode 100644 index 000000000..52f48780f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtEndian @@ -0,0 +1 @@ +#include "qendian.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtGlobal b/qrenderdoc/3rdparty/qt/include/QtCore/QtGlobal new file mode 100644 index 000000000..fce4ed884 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtGlobal @@ -0,0 +1 @@ +#include "qglobal.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtMath b/qrenderdoc/3rdparty/qt/include/QtCore/QtMath new file mode 100644 index 000000000..5e79c9b7e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtMath @@ -0,0 +1 @@ +#include "qmath.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtMessageHandler b/qrenderdoc/3rdparty/qt/include/QtCore/QtMessageHandler new file mode 100644 index 000000000..b7315a6dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtMessageHandler @@ -0,0 +1 @@ +#include "qlogging.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtMsgHandler b/qrenderdoc/3rdparty/qt/include/QtCore/QtMsgHandler new file mode 100644 index 000000000..b7315a6dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtMsgHandler @@ -0,0 +1 @@ +#include "qlogging.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtNumeric b/qrenderdoc/3rdparty/qt/include/QtCore/QtNumeric new file mode 100644 index 000000000..92f53049e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtNumeric @@ -0,0 +1 @@ +#include "qnumeric.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtPlugin b/qrenderdoc/3rdparty/qt/include/QtCore/QtPlugin new file mode 100644 index 000000000..e92d8a1d3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtPlugin @@ -0,0 +1 @@ +#include "qplugin.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtPluginInstanceFunction b/qrenderdoc/3rdparty/qt/include/QtCore/QtPluginInstanceFunction new file mode 100644 index 000000000..e92d8a1d3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtPluginInstanceFunction @@ -0,0 +1 @@ +#include "qplugin.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/QtPluginMetaDataFunction b/qrenderdoc/3rdparty/qt/include/QtCore/QtPluginMetaDataFunction new file mode 100644 index 000000000..e92d8a1d3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/QtPluginMetaDataFunction @@ -0,0 +1 @@ +#include "qplugin.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qabstractanimation.h b/qrenderdoc/3rdparty/qt/include/QtCore/qabstractanimation.h new file mode 100644 index 000000000..727b4e777 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qabstractanimation.h @@ -0,0 +1,179 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTANIMATION_H +#define QABSTRACTANIMATION_H + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ANIMATION + +class QAnimationGroup; +class QSequentialAnimationGroup; +class QAnimationDriver; + +class QAbstractAnimationPrivate; +class Q_CORE_EXPORT QAbstractAnimation : public QObject +{ + Q_OBJECT + + Q_PROPERTY(State state READ state NOTIFY stateChanged) + Q_PROPERTY(int loopCount READ loopCount WRITE setLoopCount) + Q_PROPERTY(int currentTime READ currentTime WRITE setCurrentTime) + Q_PROPERTY(int currentLoop READ currentLoop NOTIFY currentLoopChanged) + Q_PROPERTY(Direction direction READ direction WRITE setDirection NOTIFY directionChanged) + Q_PROPERTY(int duration READ duration) + +public: + enum Direction { + Forward, + Backward + }; + Q_ENUM(Direction) + + enum State { + Stopped, + Paused, + Running + }; + Q_ENUM(State) + + enum DeletionPolicy { + KeepWhenStopped = 0, + DeleteWhenStopped + }; + + QAbstractAnimation(QObject *parent = Q_NULLPTR); + virtual ~QAbstractAnimation(); + + State state() const; + + QAnimationGroup *group() const; + + Direction direction() const; + void setDirection(Direction direction); + + int currentTime() const; + int currentLoopTime() const; + + int loopCount() const; + void setLoopCount(int loopCount); + int currentLoop() const; + + virtual int duration() const = 0; + int totalDuration() const; + +Q_SIGNALS: + void finished(); + void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); + void currentLoopChanged(int currentLoop); + void directionChanged(QAbstractAnimation::Direction); + +public Q_SLOTS: + void start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped); + void pause(); + void resume(); + void setPaused(bool); + void stop(); + void setCurrentTime(int msecs); + +protected: + QAbstractAnimation(QAbstractAnimationPrivate &dd, QObject *parent = Q_NULLPTR); + bool event(QEvent *event) Q_DECL_OVERRIDE; + + virtual void updateCurrentTime(int currentTime) = 0; + virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); + virtual void updateDirection(QAbstractAnimation::Direction direction); + +private: + Q_DISABLE_COPY(QAbstractAnimation) + Q_DECLARE_PRIVATE(QAbstractAnimation) +}; + +class QAnimationDriverPrivate; +class Q_CORE_EXPORT QAnimationDriver : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QAnimationDriver) + +public: + QAnimationDriver(QObject *parent = Q_NULLPTR); + ~QAnimationDriver(); + + virtual void advance(); + + void install(); + void uninstall(); + + bool isRunning() const; + + virtual qint64 elapsed() const; + + // ### Qt6: Remove these two functions + void setStartTime(qint64 startTime); + qint64 startTime() const; + +Q_SIGNALS: + void started(); + void stopped(); + +protected: + // ### Qt6: Remove timestep argument + void advanceAnimation(qint64 timeStep = -1); + virtual void start(); + virtual void stop(); + + QAnimationDriver(QAnimationDriverPrivate &dd, QObject *parent = Q_NULLPTR); + +private: + friend class QUnifiedTimer; + +}; + + + + +#endif //QT_NO_ANIMATION + +QT_END_NAMESPACE + +#endif // QABSTRACTANIMATION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qabstracteventdispatcher.h b/qrenderdoc/3rdparty/qt/include/QtCore/qabstracteventdispatcher.h new file mode 100644 index 000000000..0d3e53e4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qabstracteventdispatcher.h @@ -0,0 +1,129 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTEVENTDISPATCHER_H +#define QABSTRACTEVENTDISPATCHER_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QAbstractNativeEventFilter; +class QAbstractEventDispatcherPrivate; +class QSocketNotifier; + +#ifdef Q_OS_WIN +class QWinEventNotifier; +#endif + +class Q_CORE_EXPORT QAbstractEventDispatcher : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QAbstractEventDispatcher) + +public: + struct TimerInfo + { + int timerId; + int interval; + Qt::TimerType timerType; + + inline TimerInfo(int id, int i, Qt::TimerType t) + : timerId(id), interval(i), timerType(t) + { } + }; + + explicit QAbstractEventDispatcher(QObject *parent = Q_NULLPTR); + ~QAbstractEventDispatcher(); + + static QAbstractEventDispatcher *instance(QThread *thread = Q_NULLPTR); + + virtual bool processEvents(QEventLoop::ProcessEventsFlags flags) = 0; + virtual bool hasPendingEvents() = 0; // ### Qt6: remove, mark final or make protected + + virtual void registerSocketNotifier(QSocketNotifier *notifier) = 0; + virtual void unregisterSocketNotifier(QSocketNotifier *notifier) = 0; + +#if QT_DEPRECATED_SINCE(5,0) + QT_DEPRECATED inline int registerTimer(int interval, QObject *object) + { return registerTimer(interval, Qt::CoarseTimer, object); } + QT_DEPRECATED inline void registerTimer(int timerId, int interval, QObject *object) + { registerTimer(timerId, interval, Qt::CoarseTimer, object); } +#endif + int registerTimer(int interval, Qt::TimerType timerType, QObject *object); + virtual void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object) = 0; + virtual bool unregisterTimer(int timerId) = 0; + virtual bool unregisterTimers(QObject *object) = 0; + virtual QList registeredTimers(QObject *object) const = 0; + + virtual int remainingTime(int timerId) = 0; + +#if defined(Q_OS_WIN) || defined(Q_QDOC) + virtual bool registerEventNotifier(QWinEventNotifier *notifier) = 0; + virtual void unregisterEventNotifier(QWinEventNotifier *notifier) = 0; +#endif + + virtual void wakeUp() = 0; + virtual void interrupt() = 0; + virtual void flush() = 0; // ### Qt6: remove, mark final or make protected + + virtual void startingUp(); + virtual void closingDown(); + + void installNativeEventFilter(QAbstractNativeEventFilter *filterObj); + void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj); + bool filterNativeEvent(const QByteArray &eventType, void *message, long *result); +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED bool filterEvent(void *message) + { return filterNativeEvent("", message, Q_NULLPTR); } +#endif + +Q_SIGNALS: + void aboutToBlock(); + void awake(); + +protected: + QAbstractEventDispatcher(QAbstractEventDispatcherPrivate &, + QObject *parent); +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTEVENTDISPATCHER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qabstractitemmodel.h b/qrenderdoc/3rdparty/qt/include/QtCore/qabstractitemmodel.h new file mode 100644 index 000000000..a211d8e8c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qabstractitemmodel.h @@ -0,0 +1,444 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTITEMMODEL_H +#define QABSTRACTITEMMODEL_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class QAbstractItemModel; +class QPersistentModelIndex; + +class Q_CORE_EXPORT QModelIndex +{ + friend class QAbstractItemModel; +public: + Q_DECL_CONSTEXPR inline QModelIndex() Q_DECL_NOTHROW : r(-1), c(-1), i(0), m(Q_NULLPTR) {} + // compiler-generated copy/move ctors/assignment operators are fine! + Q_DECL_CONSTEXPR inline int row() const Q_DECL_NOTHROW { return r; } + Q_DECL_CONSTEXPR inline int column() const Q_DECL_NOTHROW { return c; } + Q_DECL_CONSTEXPR inline quintptr internalId() const Q_DECL_NOTHROW { return i; } + inline void *internalPointer() const Q_DECL_NOTHROW { return reinterpret_cast(i); } + inline QModelIndex parent() const; + inline QModelIndex sibling(int row, int column) const; +#if QT_DEPRECATED_SINCE(5, 8) + QT_DEPRECATED_X("Use QAbstractItemModel::index") inline QModelIndex child(int row, int column) const; +#endif + inline QVariant data(int role = Qt::DisplayRole) const; + inline Qt::ItemFlags flags() const; + Q_DECL_CONSTEXPR inline const QAbstractItemModel *model() const Q_DECL_NOTHROW { return m; } + Q_DECL_CONSTEXPR inline bool isValid() const Q_DECL_NOTHROW { return (r >= 0) && (c >= 0) && (m != Q_NULLPTR); } + Q_DECL_CONSTEXPR inline bool operator==(const QModelIndex &other) const Q_DECL_NOTHROW + { return (other.r == r) && (other.i == i) && (other.c == c) && (other.m == m); } + Q_DECL_CONSTEXPR inline bool operator!=(const QModelIndex &other) const Q_DECL_NOTHROW + { return !(*this == other); } + Q_DECL_CONSTEXPR inline bool operator<(const QModelIndex &other) const Q_DECL_NOTHROW + { + return r < other.r + || (r == other.r && (c < other.c + || (c == other.c && (i < other.i + || (i == other.i && std::less()(m, other.m)))))); + } +private: + inline QModelIndex(int arow, int acolumn, void *ptr, const QAbstractItemModel *amodel) Q_DECL_NOTHROW + : r(arow), c(acolumn), i(reinterpret_cast(ptr)), m(amodel) {} + Q_DECL_CONSTEXPR inline QModelIndex(int arow, int acolumn, quintptr id, const QAbstractItemModel *amodel) Q_DECL_NOTHROW + : r(arow), c(acolumn), i(id), m(amodel) {} + int r, c; + quintptr i; + const QAbstractItemModel *m; +}; +Q_DECLARE_TYPEINFO(QModelIndex, Q_MOVABLE_TYPE); + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QModelIndex &); +#endif + +class QPersistentModelIndexData; + +// qHash is a friend, but we can't use default arguments for friends (§8.3.6.4) +uint qHash(const QPersistentModelIndex &index, uint seed = 0) Q_DECL_NOTHROW; + +class Q_CORE_EXPORT QPersistentModelIndex +{ +public: + QPersistentModelIndex(); + QPersistentModelIndex(const QModelIndex &index); + QPersistentModelIndex(const QPersistentModelIndex &other); + ~QPersistentModelIndex(); + bool operator<(const QPersistentModelIndex &other) const; + bool operator==(const QPersistentModelIndex &other) const; + inline bool operator!=(const QPersistentModelIndex &other) const + { return !operator==(other); } + QPersistentModelIndex &operator=(const QPersistentModelIndex &other); +#ifdef Q_COMPILER_RVALUE_REFS + inline QPersistentModelIndex(QPersistentModelIndex &&other) Q_DECL_NOTHROW + : d(other.d) { other.d = Q_NULLPTR; } + inline QPersistentModelIndex &operator=(QPersistentModelIndex &&other) Q_DECL_NOTHROW + { qSwap(d, other.d); return *this; } +#endif + inline void swap(QPersistentModelIndex &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + bool operator==(const QModelIndex &other) const; + bool operator!=(const QModelIndex &other) const; + QPersistentModelIndex &operator=(const QModelIndex &other); + operator const QModelIndex&() const; + int row() const; + int column() const; + void *internalPointer() const; + quintptr internalId() const; + QModelIndex parent() const; + QModelIndex sibling(int row, int column) const; +#if QT_DEPRECATED_SINCE(5, 8) + QT_DEPRECATED_X("Use QAbstractItemModel::index") QModelIndex child(int row, int column) const; +#endif + QVariant data(int role = Qt::DisplayRole) const; + Qt::ItemFlags flags() const; + const QAbstractItemModel *model() const; + bool isValid() const; +private: + QPersistentModelIndexData *d; + friend uint qHash(const QPersistentModelIndex &, uint seed) Q_DECL_NOTHROW; +#ifndef QT_NO_DEBUG_STREAM + friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QPersistentModelIndex &); +#endif +}; +Q_DECLARE_SHARED(QPersistentModelIndex) + +inline uint qHash(const QPersistentModelIndex &index, uint seed) Q_DECL_NOTHROW +{ return qHash(index.d, seed); } + + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QPersistentModelIndex &); +#endif + +template class QList; +typedef QList QModelIndexList; + +class QMimeData; +class QAbstractItemModelPrivate; +template class QMap; + + +class Q_CORE_EXPORT QAbstractItemModel : public QObject +{ + Q_OBJECT + + friend class QPersistentModelIndexData; + friend class QAbstractItemViewPrivate; + friend class QIdentityProxyModel; +public: + + explicit QAbstractItemModel(QObject *parent = Q_NULLPTR); + virtual ~QAbstractItemModel(); + + Q_INVOKABLE bool hasIndex(int row, int column, const QModelIndex &parent = QModelIndex()) const; + Q_INVOKABLE virtual QModelIndex index(int row, int column, + const QModelIndex &parent = QModelIndex()) const = 0; + Q_INVOKABLE virtual QModelIndex parent(const QModelIndex &child) const = 0; + + Q_INVOKABLE virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; + Q_INVOKABLE virtual int rowCount(const QModelIndex &parent = QModelIndex()) const = 0; + Q_INVOKABLE virtual int columnCount(const QModelIndex &parent = QModelIndex()) const = 0; + Q_INVOKABLE virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; + + Q_INVOKABLE virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0; + Q_INVOKABLE virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); + + Q_INVOKABLE virtual QVariant headerData(int section, Qt::Orientation orientation, + int role = Qt::DisplayRole) const; + virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, + int role = Qt::EditRole); + + virtual QMap itemData(const QModelIndex &index) const; + virtual bool setItemData(const QModelIndex &index, const QMap &roles); + + virtual QStringList mimeTypes() const; + virtual QMimeData *mimeData(const QModelIndexList &indexes) const; + virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) const; + virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent); + virtual Qt::DropActions supportedDropActions() const; + + virtual Qt::DropActions supportedDragActions() const; +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED void setSupportedDragActions(Qt::DropActions actions) + { doSetSupportedDragActions(actions); } +#endif + + virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); + virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); + virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); + virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); + virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, + const QModelIndex &destinationParent, int destinationChild); + virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, + const QModelIndex &destinationParent, int destinationChild); + + inline bool insertRow(int row, const QModelIndex &parent = QModelIndex()); + inline bool insertColumn(int column, const QModelIndex &parent = QModelIndex()); + inline bool removeRow(int row, const QModelIndex &parent = QModelIndex()); + inline bool removeColumn(int column, const QModelIndex &parent = QModelIndex()); + inline bool moveRow(const QModelIndex &sourceParent, int sourceRow, + const QModelIndex &destinationParent, int destinationChild); + inline bool moveColumn(const QModelIndex &sourceParent, int sourceColumn, + const QModelIndex &destinationParent, int destinationChild); + + Q_INVOKABLE virtual void fetchMore(const QModelIndex &parent); + Q_INVOKABLE virtual bool canFetchMore(const QModelIndex &parent) const; + Q_INVOKABLE virtual Qt::ItemFlags flags(const QModelIndex &index) const; + virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); + virtual QModelIndex buddy(const QModelIndex &index) const; + Q_INVOKABLE virtual QModelIndexList match(const QModelIndex &start, int role, + const QVariant &value, int hits = 1, + Qt::MatchFlags flags = + Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const; + virtual QSize span(const QModelIndex &index) const; + + virtual QHash roleNames() const; + + using QObject::parent; + + enum LayoutChangeHint + { + NoLayoutChangeHint, + VerticalSortHint, + HorizontalSortHint + }; + Q_ENUM(LayoutChangeHint) + +Q_SIGNALS: + void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()); + void headerDataChanged(Qt::Orientation orientation, int first, int last); + void layoutChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint); + void layoutAboutToBeChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint); + + void rowsAboutToBeInserted(const QModelIndex &parent, int first, int last, QPrivateSignal); + void rowsInserted(const QModelIndex &parent, int first, int last, QPrivateSignal); + + void rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last, QPrivateSignal); + void rowsRemoved(const QModelIndex &parent, int first, int last, QPrivateSignal); + + void columnsAboutToBeInserted(const QModelIndex &parent, int first, int last, QPrivateSignal); + void columnsInserted(const QModelIndex &parent, int first, int last, QPrivateSignal); + + void columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last, QPrivateSignal); + void columnsRemoved(const QModelIndex &parent, int first, int last, QPrivateSignal); + + void modelAboutToBeReset(QPrivateSignal); + void modelReset(QPrivateSignal); + + void rowsAboutToBeMoved( const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow, QPrivateSignal); + void rowsMoved( const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row, QPrivateSignal); + + void columnsAboutToBeMoved( const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn, QPrivateSignal); + void columnsMoved( const QModelIndex &parent, int start, int end, const QModelIndex &destination, int column, QPrivateSignal); + +public Q_SLOTS: + virtual bool submit(); + virtual void revert(); + +protected Q_SLOTS: + // Qt 6: Make virtual + void resetInternalData(); + +protected: + QAbstractItemModel(QAbstractItemModelPrivate &dd, QObject *parent = Q_NULLPTR); + + inline QModelIndex createIndex(int row, int column, void *data = Q_NULLPTR) const; + inline QModelIndex createIndex(int row, int column, quintptr id) const; + + void encodeData(const QModelIndexList &indexes, QDataStream &stream) const; + bool decodeData(int row, int column, const QModelIndex &parent, QDataStream &stream); + + void beginInsertRows(const QModelIndex &parent, int first, int last); + void endInsertRows(); + + void beginRemoveRows(const QModelIndex &parent, int first, int last); + void endRemoveRows(); + + bool beginMoveRows(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationRow); + void endMoveRows(); + + void beginInsertColumns(const QModelIndex &parent, int first, int last); + void endInsertColumns(); + + void beginRemoveColumns(const QModelIndex &parent, int first, int last); + void endRemoveColumns(); + + bool beginMoveColumns(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationColumn); + void endMoveColumns(); + + +#if QT_DEPRECATED_SINCE(5,0) + QT_DEPRECATED void reset() + { + beginResetModel(); + endResetModel(); + } +#endif + + void beginResetModel(); + void endResetModel(); + + void changePersistentIndex(const QModelIndex &from, const QModelIndex &to); + void changePersistentIndexList(const QModelIndexList &from, const QModelIndexList &to); + QModelIndexList persistentIndexList() const; + +#if QT_DEPRECATED_SINCE(5,0) + QT_DEPRECATED void setRoleNames(const QHash &theRoleNames) + { + doSetRoleNames(theRoleNames); + } +#endif + +private: + void doSetRoleNames(const QHash &roleNames); + void doSetSupportedDragActions(Qt::DropActions actions); + + Q_DECLARE_PRIVATE(QAbstractItemModel) + Q_DISABLE_COPY(QAbstractItemModel) +}; + +inline bool QAbstractItemModel::insertRow(int arow, const QModelIndex &aparent) +{ return insertRows(arow, 1, aparent); } +inline bool QAbstractItemModel::insertColumn(int acolumn, const QModelIndex &aparent) +{ return insertColumns(acolumn, 1, aparent); } +inline bool QAbstractItemModel::removeRow(int arow, const QModelIndex &aparent) +{ return removeRows(arow, 1, aparent); } +inline bool QAbstractItemModel::removeColumn(int acolumn, const QModelIndex &aparent) +{ return removeColumns(acolumn, 1, aparent); } +inline bool QAbstractItemModel::moveRow(const QModelIndex &sourceParent, int sourceRow, + const QModelIndex &destinationParent, int destinationChild) +{ return moveRows(sourceParent, sourceRow, 1, destinationParent, destinationChild); } +inline bool QAbstractItemModel::moveColumn(const QModelIndex &sourceParent, int sourceColumn, + const QModelIndex &destinationParent, int destinationChild) +{ return moveColumns(sourceParent, sourceColumn, 1, destinationParent, destinationChild); } +inline QModelIndex QAbstractItemModel::createIndex(int arow, int acolumn, void *adata) const +{ return QModelIndex(arow, acolumn, adata, this); } +inline QModelIndex QAbstractItemModel::createIndex(int arow, int acolumn, quintptr aid) const +{ return QModelIndex(arow, acolumn, aid, this); } + +class Q_CORE_EXPORT QAbstractTableModel : public QAbstractItemModel +{ + Q_OBJECT + +public: + explicit QAbstractTableModel(QObject *parent = Q_NULLPTR); + ~QAbstractTableModel(); + + QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; + bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; + + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + + using QObject::parent; + +protected: + QAbstractTableModel(QAbstractItemModelPrivate &dd, QObject *parent); + +private: + Q_DISABLE_COPY(QAbstractTableModel) + QModelIndex parent(const QModelIndex &child) const Q_DECL_OVERRIDE; + bool hasChildren(const QModelIndex &parent) const Q_DECL_OVERRIDE; +}; + +class Q_CORE_EXPORT QAbstractListModel : public QAbstractItemModel +{ + Q_OBJECT + +public: + explicit QAbstractListModel(QObject *parent = Q_NULLPTR); + ~QAbstractListModel(); + + QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; + bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; + + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + + using QObject::parent; + +protected: + QAbstractListModel(QAbstractItemModelPrivate &dd, QObject *parent); + +private: + Q_DISABLE_COPY(QAbstractListModel) + QModelIndex parent(const QModelIndex &child) const Q_DECL_OVERRIDE; + int columnCount(const QModelIndex &parent) const Q_DECL_OVERRIDE; + bool hasChildren(const QModelIndex &parent) const Q_DECL_OVERRIDE; +}; + +// inline implementations + +inline QModelIndex QModelIndex::parent() const +{ return m ? m->parent(*this) : QModelIndex(); } + +inline QModelIndex QModelIndex::sibling(int arow, int acolumn) const +{ return m ? (r == arow && c == acolumn) ? *this : m->sibling(arow, acolumn, *this) : QModelIndex(); } + +#if QT_DEPRECATED_SINCE(5, 8) +inline QModelIndex QModelIndex::child(int arow, int acolumn) const +{ return m ? m->index(arow, acolumn, *this) : QModelIndex(); } +#endif + +inline QVariant QModelIndex::data(int arole) const +{ return m ? m->data(*this, arole) : QVariant(); } + +inline Qt::ItemFlags QModelIndex::flags() const +{ return m ? m->flags(*this) : Qt::ItemFlags(); } + +inline uint qHash(const QModelIndex &index) Q_DECL_NOTHROW +{ return uint((uint(index.row()) << 4) + index.column() + index.internalId()); } + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QModelIndexList) + +#endif // QABSTRACTITEMMODEL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qabstractnativeeventfilter.h b/qrenderdoc/3rdparty/qt/include/QtCore/qabstractnativeeventfilter.h new file mode 100644 index 000000000..d7baa4251 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qabstractnativeeventfilter.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTNATIVEEVENTFILTER_H +#define QABSTRACTNATIVEEVENTFILTER_H + +#include + +QT_BEGIN_NAMESPACE + +class QAbstractNativeEventFilterPrivate; + +class Q_CORE_EXPORT QAbstractNativeEventFilter +{ +public: + QAbstractNativeEventFilter(); + virtual ~QAbstractNativeEventFilter(); + + virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) = 0; + +private: + Q_DISABLE_COPY(QAbstractNativeEventFilter) + QAbstractNativeEventFilterPrivate *d; +}; + +QT_END_NAMESPACE + +#endif /* QABSTRACTNATIVEEVENTFILTER_H */ diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qabstractproxymodel.h b/qrenderdoc/3rdparty/qt/include/QtCore/qabstractproxymodel.h new file mode 100644 index 000000000..c9eafa09e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qabstractproxymodel.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTPROXYMODEL_H +#define QABSTRACTPROXYMODEL_H + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_PROXYMODEL + +class QAbstractProxyModelPrivate; +class QItemSelection; + +class Q_CORE_EXPORT QAbstractProxyModel : public QAbstractItemModel +{ + Q_OBJECT + Q_PROPERTY(QAbstractItemModel* sourceModel READ sourceModel WRITE setSourceModel NOTIFY sourceModelChanged) + +public: + explicit QAbstractProxyModel(QObject *parent = Q_NULLPTR); + ~QAbstractProxyModel(); + + virtual void setSourceModel(QAbstractItemModel *sourceModel); + QAbstractItemModel *sourceModel() const; + + Q_INVOKABLE virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const = 0; + Q_INVOKABLE virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const = 0; + + Q_INVOKABLE virtual QItemSelection mapSelectionToSource(const QItemSelection &selection) const; + Q_INVOKABLE virtual QItemSelection mapSelectionFromSource(const QItemSelection &selection) const; + + bool submit() Q_DECL_OVERRIDE; + void revert() Q_DECL_OVERRIDE; + + QVariant data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + QMap itemData(const QModelIndex &index) const Q_DECL_OVERRIDE; + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; + bool setItemData(const QModelIndex& index, const QMap &roles) Q_DECL_OVERRIDE; + bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; + + QModelIndex buddy(const QModelIndex &index) const Q_DECL_OVERRIDE; + bool canFetchMore(const QModelIndex &parent) const Q_DECL_OVERRIDE; + void fetchMore(const QModelIndex &parent) Q_DECL_OVERRIDE; + void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) Q_DECL_OVERRIDE; + QSize span(const QModelIndex &index) const Q_DECL_OVERRIDE; + bool hasChildren(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; + + QMimeData* mimeData(const QModelIndexList &indexes) const Q_DECL_OVERRIDE; + bool canDropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) const Q_DECL_OVERRIDE; + bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; + QStringList mimeTypes() const Q_DECL_OVERRIDE; + Qt::DropActions supportedDragActions() const Q_DECL_OVERRIDE; + Qt::DropActions supportedDropActions() const Q_DECL_OVERRIDE; + +Q_SIGNALS: + void sourceModelChanged(QPrivateSignal); + +protected Q_SLOTS: + void resetInternalData(); + +protected: + QAbstractProxyModel(QAbstractProxyModelPrivate &, QObject *parent); + +private: + Q_DECLARE_PRIVATE(QAbstractProxyModel) + Q_DISABLE_COPY(QAbstractProxyModel) + Q_PRIVATE_SLOT(d_func(), void _q_sourceModelDestroyed()) +}; + +#endif // QT_NO_PROXYMODEL + +QT_END_NAMESPACE + +#endif // QABSTRACTPROXYMODEL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qabstractstate.h b/qrenderdoc/3rdparty/qt/include/QtCore/qabstractstate.h new file mode 100644 index 000000000..02c7d9e83 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qabstractstate.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSTATE_H +#define QABSTRACTSTATE_H + +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QState; +class QStateMachine; + +class QAbstractStatePrivate; +class Q_CORE_EXPORT QAbstractState : public QObject +{ + Q_OBJECT + Q_PROPERTY(bool active READ active NOTIFY activeChanged) +public: + ~QAbstractState(); + + QState *parentState() const; + QStateMachine *machine() const; + + bool active() const; + +Q_SIGNALS: + void entered(QPrivateSignal); + void exited(QPrivateSignal); + void activeChanged(bool active); + +protected: + QAbstractState(QState *parent = Q_NULLPTR); + + virtual void onEntry(QEvent *event) = 0; + virtual void onExit(QEvent *event) = 0; + + bool event(QEvent *e) Q_DECL_OVERRIDE; + +protected: + QAbstractState(QAbstractStatePrivate &dd, QState *parent); + +private: + Q_DISABLE_COPY(QAbstractState) + Q_DECLARE_PRIVATE(QAbstractState) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qabstracttransition.h b/qrenderdoc/3rdparty/qt/include/QtCore/qabstracttransition.h new file mode 100644 index 000000000..b86d26e96 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qabstracttransition.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTTRANSITION_H +#define QABSTRACTTRANSITION_H + +#include + +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QEvent; +class QAbstractState; +class QState; +class QStateMachine; + +#ifndef QT_NO_ANIMATION +class QAbstractAnimation; +#endif + +class QAbstractTransitionPrivate; +class Q_CORE_EXPORT QAbstractTransition : public QObject +{ + Q_OBJECT + Q_PROPERTY(QState* sourceState READ sourceState) + Q_PROPERTY(QAbstractState* targetState READ targetState WRITE setTargetState NOTIFY targetStateChanged) + Q_PROPERTY(QList targetStates READ targetStates WRITE setTargetStates NOTIFY targetStatesChanged) + Q_PROPERTY(TransitionType transitionType READ transitionType WRITE setTransitionType REVISION 1) +public: + enum TransitionType { + ExternalTransition, + InternalTransition + }; + Q_ENUM(TransitionType) + + QAbstractTransition(QState *sourceState = Q_NULLPTR); + virtual ~QAbstractTransition(); + + QState *sourceState() const; + QAbstractState *targetState() const; + void setTargetState(QAbstractState* target); + QList targetStates() const; + void setTargetStates(const QList &targets); + + TransitionType transitionType() const; + void setTransitionType(TransitionType type); + + QStateMachine *machine() const; + +#ifndef QT_NO_ANIMATION + void addAnimation(QAbstractAnimation *animation); + void removeAnimation(QAbstractAnimation *animation); + QList animations() const; +#endif + +Q_SIGNALS: + void triggered(QPrivateSignal); + void targetStateChanged(QPrivateSignal); + void targetStatesChanged(QPrivateSignal); + +protected: + virtual bool eventTest(QEvent *event) = 0; + + virtual void onTransition(QEvent *event) = 0; + + bool event(QEvent *e) Q_DECL_OVERRIDE; + +protected: + QAbstractTransition(QAbstractTransitionPrivate &dd, QState *parent); + +private: + Q_DISABLE_COPY(QAbstractTransition) + Q_DECLARE_PRIVATE(QAbstractTransition) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qalgorithms.h b/qrenderdoc/3rdparty/qt/include/QtCore/qalgorithms.h new file mode 100644 index 000000000..c0f7709fe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qalgorithms.h @@ -0,0 +1,870 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QALGORITHMS_H +#define QALGORITHMS_H + +#include + +#if defined(Q_CC_MSVC) && _MSC_VER > 1500 +#include +#endif + +QT_BEGIN_NAMESPACE +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED + +/* + Warning: The contents of QAlgorithmsPrivate is not a part of the public Qt API + and may be changed from version to version or even be completely removed. +*/ +namespace QAlgorithmsPrivate { + +#if QT_DEPRECATED_SINCE(5, 2) +template +QT_DEPRECATED_X("Use std::sort") Q_OUTOFLINE_TEMPLATE void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan); +template +QT_DEPRECATED_X("Use std::sort") inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy); + +template +QT_DEPRECATED_X("Use std::stable_sort") Q_OUTOFLINE_TEMPLATE void qStableSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan); +template +QT_DEPRECATED_X("Use std::stable_sort") inline void qStableSortHelper(RandomAccessIterator, RandomAccessIterator, const T &); + +template +QT_DEPRECATED_X("Use std::lower_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); +template +QT_DEPRECATED_X("Use std::upper_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); +template +QT_DEPRECATED_X("Use std::binary_search") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); +#endif // QT_DEPRECATED_SINCE(5, 2) + +} + +#if QT_DEPRECATED_SINCE(5, 2) +template +QT_DEPRECATED_X("Use std::copy") inline OutputIterator qCopy(InputIterator begin, InputIterator end, OutputIterator dest) +{ + while (begin != end) + *dest++ = *begin++; + return dest; +} + +template +QT_DEPRECATED_X("Use std::copy_backward") inline BiIterator2 qCopyBackward(BiIterator1 begin, BiIterator1 end, BiIterator2 dest) +{ + while (begin != end) + *--dest = *--end; + return dest; +} + +template +QT_DEPRECATED_X("Use std::equal") inline bool qEqual(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2) +{ + for (; first1 != last1; ++first1, ++first2) + if (!(*first1 == *first2)) + return false; + return true; +} + +template +QT_DEPRECATED_X("Use std::fill") inline void qFill(ForwardIterator first, ForwardIterator last, const T &val) +{ + for (; first != last; ++first) + *first = val; +} + +template +QT_DEPRECATED_X("Use std::fill") inline void qFill(Container &container, const T &val) +{ + qFill(container.begin(), container.end(), val); +} + +template +QT_DEPRECATED_X("Use std::find") inline InputIterator qFind(InputIterator first, InputIterator last, const T &val) +{ + while (first != last && !(*first == val)) + ++first; + return first; +} + +template +QT_DEPRECATED_X("Use std::find") inline typename Container::const_iterator qFind(const Container &container, const T &val) +{ + return qFind(container.constBegin(), container.constEnd(), val); +} + +template +QT_DEPRECATED_X("Use std::count") inline void qCount(InputIterator first, InputIterator last, const T &value, Size &n) +{ + for (; first != last; ++first) + if (*first == value) + ++n; +} + +template +QT_DEPRECATED_X("Use std::count") inline void qCount(const Container &container, const T &value, Size &n) +{ + qCount(container.constBegin(), container.constEnd(), value, n); +} + +#ifdef Q_QDOC +typedef void* LessThan; +template LessThan qLess(); +template LessThan qGreater(); +#else +template +class QT_DEPRECATED_X("Use std::less") qLess +{ +public: + inline bool operator()(const T &t1, const T &t2) const + { + return (t1 < t2); + } +}; + +template +class QT_DEPRECATED_X("Use std::greater") qGreater +{ +public: + inline bool operator()(const T &t1, const T &t2) const + { + return (t2 < t1); + } +}; +#endif + +template +QT_DEPRECATED_X("Use std::sort") inline void qSort(RandomAccessIterator start, RandomAccessIterator end) +{ + if (start != end) + QAlgorithmsPrivate::qSortHelper(start, end, *start); +} + +template +QT_DEPRECATED_X("Use std::sort") inline void qSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan) +{ + if (start != end) + QAlgorithmsPrivate::qSortHelper(start, end, *start, lessThan); +} + +template +QT_DEPRECATED_X("Use std::sort") inline void qSort(Container &c) +{ +#ifdef Q_CC_BOR + // Work around Borland 5.5 optimizer bug + c.detach(); +#endif + if (!c.empty()) + QAlgorithmsPrivate::qSortHelper(c.begin(), c.end(), *c.begin()); +} + +template +QT_DEPRECATED_X("Use std::stable_sort") inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end) +{ + if (start != end) + QAlgorithmsPrivate::qStableSortHelper(start, end, *start); +} + +template +QT_DEPRECATED_X("Use std::stable_sort") inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan) +{ + if (start != end) + QAlgorithmsPrivate::qStableSortHelper(start, end, *start, lessThan); +} + +template +QT_DEPRECATED_X("Use std::stable_sort") inline void qStableSort(Container &c) +{ +#ifdef Q_CC_BOR + // Work around Borland 5.5 optimizer bug + c.detach(); +#endif + if (!c.empty()) + QAlgorithmsPrivate::qStableSortHelper(c.begin(), c.end(), *c.begin()); +} + +template +QT_DEPRECATED_X("Use std::lower_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value) +{ + // Implementation is duplicated from QAlgorithmsPrivate to keep existing code + // compiling. We have to allow using *begin and value with different types, + // and then implementing operator< for those types. + RandomAccessIterator middle; + int n = end - begin; + int half; + + while (n > 0) { + half = n >> 1; + middle = begin + half; + if (*middle < value) { + begin = middle + 1; + n -= half + 1; + } else { + n = half; + } + } + return begin; +} + +template +QT_DEPRECATED_X("Use std::lower_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + return QAlgorithmsPrivate::qLowerBoundHelper(begin, end, value, lessThan); +} + +template +QT_DEPRECATED_X("Use std::lower_bound") Q_OUTOFLINE_TEMPLATE typename Container::const_iterator qLowerBound(const Container &container, const T &value) +{ + return QAlgorithmsPrivate::qLowerBoundHelper(container.constBegin(), container.constEnd(), value, qLess()); +} + +template +QT_DEPRECATED_X("Use std::upper_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value) +{ + // Implementation is duplicated from QAlgorithmsPrivate. + RandomAccessIterator middle; + int n = end - begin; + int half; + + while (n > 0) { + half = n >> 1; + middle = begin + half; + if (value < *middle) { + n = half; + } else { + begin = middle + 1; + n -= half + 1; + } + } + return begin; +} + +template +QT_DEPRECATED_X("Use std::upper_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + return QAlgorithmsPrivate::qUpperBoundHelper(begin, end, value, lessThan); +} + +template +QT_DEPRECATED_X("Use std::upper_bound") Q_OUTOFLINE_TEMPLATE typename Container::const_iterator qUpperBound(const Container &container, const T &value) +{ + return QAlgorithmsPrivate::qUpperBoundHelper(container.constBegin(), container.constEnd(), value, qLess()); +} + +template +QT_DEPRECATED_X("Use std::binary_search") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value) +{ + // Implementation is duplicated from QAlgorithmsPrivate. + RandomAccessIterator it = qLowerBound(begin, end, value); + + if (it == end || value < *it) + return end; + + return it; +} + +template +QT_DEPRECATED_X("Use std::binary_search") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + return QAlgorithmsPrivate::qBinaryFindHelper(begin, end, value, lessThan); +} + +template +QT_DEPRECATED_X("Use std::binary_search") Q_OUTOFLINE_TEMPLATE typename Container::const_iterator qBinaryFind(const Container &container, const T &value) +{ + return QAlgorithmsPrivate::qBinaryFindHelper(container.constBegin(), container.constEnd(), value, qLess()); +} +#endif // QT_DEPRECATED_SINCE(5, 2) + +template +Q_OUTOFLINE_TEMPLATE void qDeleteAll(ForwardIterator begin, ForwardIterator end) +{ + while (begin != end) { + delete *begin; + ++begin; + } +} + +template +inline void qDeleteAll(const Container &c) +{ + qDeleteAll(c.begin(), c.end()); +} + +/* + Warning: The contents of QAlgorithmsPrivate is not a part of the public Qt API + and may be changed from version to version or even be completely removed. +*/ +namespace QAlgorithmsPrivate { + +#if QT_DEPRECATED_SINCE(5, 2) + +template +QT_DEPRECATED_X("Use std::sort") Q_OUTOFLINE_TEMPLATE void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan) +{ +top: + int span = int(end - start); + if (span < 2) + return; + + --end; + RandomAccessIterator low = start, high = end - 1; + RandomAccessIterator pivot = start + span / 2; + + if (lessThan(*end, *start)) + qSwap(*end, *start); + if (span == 2) + return; + + if (lessThan(*pivot, *start)) + qSwap(*pivot, *start); + if (lessThan(*end, *pivot)) + qSwap(*end, *pivot); + if (span == 3) + return; + + qSwap(*pivot, *end); + + while (low < high) { + while (low < high && lessThan(*low, *end)) + ++low; + + while (high > low && lessThan(*end, *high)) + --high; + + if (low < high) { + qSwap(*low, *high); + ++low; + --high; + } else { + break; + } + } + + if (lessThan(*low, *end)) + ++low; + + qSwap(*end, *low); + qSortHelper(start, low, t, lessThan); + + start = low + 1; + ++end; + goto top; +} + +template +QT_DEPRECATED_X("Use std::sort") inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy) +{ + qSortHelper(begin, end, dummy, qLess()); +} + +template +QT_DEPRECATED_X("Use std::reverse") Q_OUTOFLINE_TEMPLATE void qReverse(RandomAccessIterator begin, RandomAccessIterator end) +{ + --end; + while (begin < end) + qSwap(*begin++, *end--); +} + +template +QT_DEPRECATED_X("Use std::rotate") Q_OUTOFLINE_TEMPLATE void qRotate(RandomAccessIterator begin, RandomAccessIterator middle, RandomAccessIterator end) +{ + qReverse(begin, middle); + qReverse(middle, end); + qReverse(begin, end); +} + +template +QT_DEPRECATED_X("Use std::merge") Q_OUTOFLINE_TEMPLATE void qMerge(RandomAccessIterator begin, RandomAccessIterator pivot, RandomAccessIterator end, T &t, LessThan lessThan) +{ + const int len1 = pivot - begin; + const int len2 = end - pivot; + + if (len1 == 0 || len2 == 0) + return; + + if (len1 + len2 == 2) { + if (lessThan(*(begin + 1), *(begin))) + qSwap(*begin, *(begin + 1)); + return; + } + + RandomAccessIterator firstCut; + RandomAccessIterator secondCut; + int len2Half; + if (len1 > len2) { + const int len1Half = len1 / 2; + firstCut = begin + len1Half; + secondCut = qLowerBound(pivot, end, *firstCut, lessThan); + len2Half = secondCut - pivot; + } else { + len2Half = len2 / 2; + secondCut = pivot + len2Half; + firstCut = qUpperBound(begin, pivot, *secondCut, lessThan); + } + + qRotate(firstCut, pivot, secondCut); + const RandomAccessIterator newPivot = firstCut + len2Half; + qMerge(begin, firstCut, newPivot, t, lessThan); + qMerge(newPivot, secondCut, end, t, lessThan); +} + +template +QT_DEPRECATED_X("Use std::stable_sort") Q_OUTOFLINE_TEMPLATE void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &t, LessThan lessThan) +{ + const int span = end - begin; + if (span < 2) + return; + + const RandomAccessIterator middle = begin + span / 2; + qStableSortHelper(begin, middle, t, lessThan); + qStableSortHelper(middle, end, t, lessThan); + qMerge(begin, middle, end, t, lessThan); +} + +template +QT_DEPRECATED_X("Use std::stable_sort") inline void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy) +{ + qStableSortHelper(begin, end, dummy, qLess()); +} + +template +QT_DEPRECATED_X("Use std::lower_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + RandomAccessIterator middle; + int n = int(end - begin); + int half; + + while (n > 0) { + half = n >> 1; + middle = begin + half; + if (lessThan(*middle, value)) { + begin = middle + 1; + n -= half + 1; + } else { + n = half; + } + } + return begin; +} + + +template +QT_DEPRECATED_X("Use std::upper_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + RandomAccessIterator middle; + int n = end - begin; + int half; + + while (n > 0) { + half = n >> 1; + middle = begin + half; + if (lessThan(value, *middle)) { + n = half; + } else { + begin = middle + 1; + n -= half + 1; + } + } + return begin; +} + +template +QT_DEPRECATED_X("Use std::binary_search") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + RandomAccessIterator it = qLowerBoundHelper(begin, end, value, lessThan); + + if (it == end || lessThan(value, *it)) + return end; + + return it; +} + +#endif // QT_DEPRECATED_SINCE(5, 2) + +#ifdef Q_CC_CLANG +// Clang had a bug where __builtin_ctz/clz/popcount were not marked as constexpr. +# if (defined __apple_build_version__ && __clang_major__ >= 7) || (Q_CC_CLANG >= 307) +# define QT_HAS_CONSTEXPR_BUILTINS +# endif +#elif defined(Q_CC_MSVC) && !defined(Q_CC_INTEL) && !defined(Q_OS_WINCE) && !defined(Q_PROCESSOR_ARM) +# define QT_HAS_CONSTEXPR_BUILTINS +#elif defined(Q_CC_GNU) +# define QT_HAS_CONSTEXPR_BUILTINS +#endif + +#if defined QT_HAS_CONSTEXPR_BUILTINS +#if defined(Q_CC_GNU) || defined(Q_CC_CLANG) +# define QT_HAS_BUILTIN_CTZS +Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_ctzs(quint16 v) Q_DECL_NOTHROW +{ +# if QT_HAS_BUILTIN(__builtin_ctzs) + return __builtin_ctzs(v); +# else + return __builtin_ctz(v); +# endif +} +#define QT_HAS_BUILTIN_CLZS +Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_clzs(quint16 v) Q_DECL_NOTHROW +{ +# if QT_HAS_BUILTIN(__builtin_clzs) + return __builtin_clzs(v); +# else + return __builtin_clz(v) - 16U; +# endif +} +#define QT_HAS_BUILTIN_CTZ +Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_ctz(quint32 v) Q_DECL_NOTHROW +{ + return __builtin_ctz(v); +} +#define QT_HAS_BUILTIN_CLZ +Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_clz(quint32 v) Q_DECL_NOTHROW +{ + return __builtin_clz(v); +} +#define QT_HAS_BUILTIN_CTZLL +Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_ctzll(quint64 v) Q_DECL_NOTHROW +{ + return __builtin_ctzll(v); +} +#define QT_HAS_BUILTIN_CLZLL +Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_clzll(quint64 v) Q_DECL_NOTHROW +{ + return __builtin_clzll(v); +} +#define QALGORITHMS_USE_BUILTIN_POPCOUNT +Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_popcount(quint32 v) Q_DECL_NOTHROW +{ + return __builtin_popcount(v); +} +Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_popcount(quint8 v) Q_DECL_NOTHROW +{ + return __builtin_popcount(v); +} +Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_popcount(quint16 v) Q_DECL_NOTHROW +{ + return __builtin_popcount(v); +} +#define QALGORITHMS_USE_BUILTIN_POPCOUNTLL +Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_popcountll(quint64 v) Q_DECL_NOTHROW +{ + return __builtin_popcountll(v); +} +#elif defined(Q_CC_MSVC) && !defined(Q_OS_WINCE) && !defined(Q_PROCESSOR_ARM) +#define QT_POPCOUNT_CONSTEXPR +#define QT_HAS_BUILTIN_CTZ +Q_ALWAYS_INLINE unsigned long qt_builtin_ctz(quint32 val) +{ + unsigned long result; + _BitScanForward(&result, val); + return result; +} +#define QT_HAS_BUILTIN_CLZ +Q_ALWAYS_INLINE unsigned long qt_builtin_clz(quint32 val) +{ + unsigned long result; + _BitScanReverse(&result, val); + // Now Invert the result: clz will count *down* from the msb to the lsb, so the msb index is 31 + // and the lsb index is 0. The result for the index when counting up: msb index is 0 (because it + // starts there), and the lsb index is 31. + result ^= sizeof(quint32) * 8 - 1; + return result; +} +#if Q_PROCESSOR_WORDSIZE == 8 +// These are only defined for 64bit builds. +#define QT_HAS_BUILTIN_CTZLL +Q_ALWAYS_INLINE unsigned long qt_builtin_ctzll(quint64 val) +{ + unsigned long result; + _BitScanForward64(&result, val); + return result; +} +// MSVC calls it _BitScanReverse and returns the carry flag, which we don't need +#define QT_HAS_BUILTIN_CLZLL +Q_ALWAYS_INLINE unsigned long qt_builtin_clzll(quint64 val) +{ + unsigned long result; + _BitScanReverse64(&result, val); + // see qt_builtin_clz + result ^= sizeof(quint64) * 8 - 1; + return result; +} +#endif // MSVC 64bit +# define QT_HAS_BUILTIN_CTZS +Q_ALWAYS_INLINE uint qt_builtin_ctzs(quint16 v) Q_DECL_NOTHROW +{ + return qt_builtin_ctz(v); +} +#define QT_HAS_BUILTIN_CLZS +Q_ALWAYS_INLINE uint qt_builtin_clzs(quint16 v) Q_DECL_NOTHROW +{ + return qt_builtin_clz(v) - 16U; +} + +// Neither MSVC nor the Intel compiler define a macro for the POPCNT processor +// feature, so we're using either the SSE4.2 or the AVX macro as a proxy (Clang +// does define the macro). It's incorrect for two reasons: +// 1. It's a separate bit in CPUID, so a processor could implement SSE4.2 and +// not POPCNT, but that's unlikely to happen. +// 2. There are processors that support POPCNT but not AVX (Intel Nehalem +// architecture), but unlike the other compilers, MSVC has no option +// to generate code for those processors. +// So it's an acceptable compromise. +#if defined(__AVX__) || defined(__SSE4_2__) || defined(__POPCNT__) +#define QALGORITHMS_USE_BUILTIN_POPCOUNT +Q_ALWAYS_INLINE uint qt_builtin_popcount(quint32 v) Q_DECL_NOTHROW +{ + return __popcnt(v); +} +Q_ALWAYS_INLINE uint qt_builtin_popcount(quint8 v) Q_DECL_NOTHROW +{ + return __popcnt16(v); +} +Q_ALWAYS_INLINE uint qt_builtin_popcount(quint16 v) Q_DECL_NOTHROW +{ + return __popcnt16(v); +} +#if Q_PROCESSOR_WORDSIZE == 8 +#define QALGORITHMS_USE_BUILTIN_POPCOUNTLL +Q_ALWAYS_INLINE uint qt_builtin_popcountll(quint64 v) Q_DECL_NOTHROW +{ + return __popcnt64(v); +} +#endif // MSVC 64bit +#endif // __AVX__ || __SSE4_2__ || __POPCNT__ + +#endif // MSVC +#endif // QT_HAS_CONSTEXPR_BUILTINS + +#ifndef QT_POPCOUNT_CONSTEXPR +#define QT_POPCOUNT_CONSTEXPR Q_DECL_CONSTEXPR +#endif + +} //namespace QAlgorithmsPrivate + +Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR inline uint qPopulationCount(quint32 v) Q_DECL_NOTHROW +{ +#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNT + return QAlgorithmsPrivate::qt_builtin_popcount(v); +#else + // See http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel + return + (((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + + (((v >> 12) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + + (((v >> 24) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; +#endif +} + +Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR inline uint qPopulationCount(quint8 v) Q_DECL_NOTHROW +{ +#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNT + return QAlgorithmsPrivate::qt_builtin_popcount(v); +#else + return + (((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; +#endif +} + +Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR inline uint qPopulationCount(quint16 v) Q_DECL_NOTHROW +{ +#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNT + return QAlgorithmsPrivate::qt_builtin_popcount(v); +#else + return + (((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + + (((v >> 12) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; +#endif +} + +Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR inline uint qPopulationCount(quint64 v) Q_DECL_NOTHROW +{ +#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNTLL + return QAlgorithmsPrivate::qt_builtin_popcountll(v); +#else + return + (((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + + (((v >> 12) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + + (((v >> 24) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + + (((v >> 36) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + + (((v >> 48) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + + (((v >> 60) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; +#endif +} + +Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR inline uint qPopulationCount(long unsigned int v) Q_DECL_NOTHROW +{ + return qPopulationCount(static_cast(v)); +} + +#if defined(Q_CC_GNU) && !defined(Q_CC_CLANG) +#undef QALGORITHMS_USE_BUILTIN_POPCOUNT +#endif +#undef QT_POPCOUNT_CONSTEXPR + +Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(quint32 v) Q_DECL_NOTHROW +{ +#if defined(QT_HAS_BUILTIN_CTZ) + return v ? QAlgorithmsPrivate::qt_builtin_ctz(v) : 32U; +#else + // see http://graphics.stanford.edu/~seander/bithacks.html#ZerosOnRightParallel + unsigned int c = 32; // c will be the number of zero bits on the right + v &= -signed(v); + if (v) c--; + if (v & 0x0000FFFF) c -= 16; + if (v & 0x00FF00FF) c -= 8; + if (v & 0x0F0F0F0F) c -= 4; + if (v & 0x33333333) c -= 2; + if (v & 0x55555555) c -= 1; + return c; +#endif +} + +Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(quint8 v) Q_DECL_NOTHROW +{ +#if defined(QT_HAS_BUILTIN_CTZ) + return v ? QAlgorithmsPrivate::qt_builtin_ctz(v) : 8U; +#else + unsigned int c = 8; // c will be the number of zero bits on the right + v &= -signed(v); + if (v) c--; + if (v & 0x0000000F) c -= 4; + if (v & 0x00000033) c -= 2; + if (v & 0x00000055) c -= 1; + return c; +#endif +} + +Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(quint16 v) Q_DECL_NOTHROW +{ +#if defined(QT_HAS_BUILTIN_CTZS) + return v ? QAlgorithmsPrivate::qt_builtin_ctzs(v) : 16U; +#else + unsigned int c = 16; // c will be the number of zero bits on the right + v &= -signed(v); + if (v) c--; + if (v & 0x000000FF) c -= 8; + if (v & 0x00000F0F) c -= 4; + if (v & 0x00003333) c -= 2; + if (v & 0x00005555) c -= 1; + return c; +#endif +} + +Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(quint64 v) Q_DECL_NOTHROW +{ +#if defined(QT_HAS_BUILTIN_CTZLL) + return v ? QAlgorithmsPrivate::qt_builtin_ctzll(v) : 64; +#else + quint32 x = static_cast(v); + return x ? qCountTrailingZeroBits(x) + : 32 + qCountTrailingZeroBits(static_cast(v >> 32)); +#endif +} + +Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(unsigned long v) Q_DECL_NOTHROW +{ + return qCountTrailingZeroBits(QIntegerForSizeof::Unsigned(v)); +} + +Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint32 v) Q_DECL_NOTHROW +{ +#if defined(QT_HAS_BUILTIN_CLZ) + return v ? QAlgorithmsPrivate::qt_builtin_clz(v) : 32U; +#else + // Hacker's Delight, 2nd ed. Fig 5-16, p. 102 + v = v | (v >> 1); + v = v | (v >> 2); + v = v | (v >> 4); + v = v | (v >> 8); + v = v | (v >> 16); + return qPopulationCount(~v); +#endif +} + +Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint8 v) Q_DECL_NOTHROW +{ +#if defined(QT_HAS_BUILTIN_CLZ) + return v ? QAlgorithmsPrivate::qt_builtin_clz(v)-24U : 8U; +#else + v = v | (v >> 1); + v = v | (v >> 2); + v = v | (v >> 4); + return qPopulationCount(static_cast(~v)); +#endif +} + +Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint16 v) Q_DECL_NOTHROW +{ +#if defined(QT_HAS_BUILTIN_CLZS) + return v ? QAlgorithmsPrivate::qt_builtin_clzs(v) : 16U; +#else + v = v | (v >> 1); + v = v | (v >> 2); + v = v | (v >> 4); + v = v | (v >> 8); + return qPopulationCount(static_cast(~v)); +#endif +} + +Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint64 v) Q_DECL_NOTHROW +{ +#if defined(QT_HAS_BUILTIN_CLZLL) + return v ? QAlgorithmsPrivate::qt_builtin_clzll(v) : 64U; +#else + v = v | (v >> 1); + v = v | (v >> 2); + v = v | (v >> 4); + v = v | (v >> 8); + v = v | (v >> 16); + v = v | (v >> 32); + return qPopulationCount(~v); +#endif +} + +Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(unsigned long v) Q_DECL_NOTHROW +{ + return qCountLeadingZeroBits(QIntegerForSizeof::Unsigned(v)); +} + +QT_WARNING_POP +QT_END_NAMESPACE + +#endif // QALGORITHMS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qanimationgroup.h b/qrenderdoc/3rdparty/qt/include/QtCore/qanimationgroup.h new file mode 100644 index 000000000..20be0c0dd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qanimationgroup.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANIMATIONGROUP_H +#define QANIMATIONGROUP_H + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ANIMATION + +class QAnimationGroupPrivate; +class Q_CORE_EXPORT QAnimationGroup : public QAbstractAnimation +{ + Q_OBJECT + +public: + QAnimationGroup(QObject *parent = Q_NULLPTR); + ~QAnimationGroup(); + + QAbstractAnimation *animationAt(int index) const; + int animationCount() const; + int indexOfAnimation(QAbstractAnimation *animation) const; + void addAnimation(QAbstractAnimation *animation); + void insertAnimation(int index, QAbstractAnimation *animation); + void removeAnimation(QAbstractAnimation *animation); + QAbstractAnimation *takeAnimation(int index); + void clear(); + +protected: + QAnimationGroup(QAnimationGroupPrivate &dd, QObject *parent); + bool event(QEvent *event) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QAnimationGroup) + Q_DECLARE_PRIVATE(QAnimationGroup) +}; + +#endif //QT_NO_ANIMATION + +QT_END_NAMESPACE + +#endif //QANIMATIONGROUP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qarraydata.h b/qrenderdoc/3rdparty/qt/include/QtCore/qarraydata.h new file mode 100644 index 000000000..88f0cfb0e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qarraydata.h @@ -0,0 +1,379 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QARRAYDATA_H +#define QARRAYDATA_H + +#include +#include + +QT_BEGIN_NAMESPACE + +struct Q_CORE_EXPORT QArrayData +{ + QtPrivate::RefCount ref; + int size; + uint alloc : 31; + uint capacityReserved : 1; + + qptrdiff offset; // in bytes from beginning of header + + void *data() + { + Q_ASSERT(size == 0 + || offset < 0 || size_t(offset) >= sizeof(QArrayData)); + return reinterpret_cast(this) + offset; + } + + const void *data() const + { + Q_ASSERT(size == 0 + || offset < 0 || size_t(offset) >= sizeof(QArrayData)); + return reinterpret_cast(this) + offset; + } + + // This refers to array data mutability, not "header data" represented by + // data members in QArrayData. Shared data (array and header) must still + // follow COW principles. + bool isMutable() const + { + return alloc != 0; + } + + enum AllocationOption { + CapacityReserved = 0x1, +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + Unsharable = 0x2, +#endif + RawData = 0x4, + Grow = 0x8, + + Default = 0 + }; + + Q_DECLARE_FLAGS(AllocationOptions, AllocationOption) + + size_t detachCapacity(size_t newSize) const + { + if (capacityReserved && newSize < alloc) + return alloc; + return newSize; + } + + AllocationOptions detachFlags() const + { + AllocationOptions result; + if (capacityReserved) + result |= CapacityReserved; + return result; + } + + AllocationOptions cloneFlags() const + { + AllocationOptions result; + if (capacityReserved) + result |= CapacityReserved; + return result; + } + + Q_REQUIRED_RESULT static QArrayData *allocate(size_t objectSize, size_t alignment, + size_t capacity, AllocationOptions options = Default) Q_DECL_NOTHROW; + Q_REQUIRED_RESULT static QArrayData *reallocateUnaligned(QArrayData *data, size_t objectSize, + size_t newCapacity, AllocationOptions newOptions = Default) Q_DECL_NOTHROW; + static void deallocate(QArrayData *data, size_t objectSize, + size_t alignment) Q_DECL_NOTHROW; + + static const QArrayData shared_null[2]; + static QArrayData *sharedNull() Q_DECL_NOTHROW { return const_cast(shared_null); } +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QArrayData::AllocationOptions) + +template +struct QTypedArrayData + : QArrayData +{ +#ifdef QT_STRICT_ITERATORS + class iterator { + public: + T *i; + typedef std::random_access_iterator_tag iterator_category; + typedef int difference_type; + typedef T value_type; + typedef T *pointer; + typedef T &reference; + + inline iterator() : i(Q_NULLPTR) {} + inline iterator(T *n) : i(n) {} + inline iterator(const iterator &o): i(o.i){} // #### Qt 6: remove, the implicit version is fine + inline T &operator*() const { return *i; } + inline T *operator->() const { return i; } + inline T &operator[](int j) const { return *(i + j); } + inline bool operator==(const iterator &o) const { return i == o.i; } + inline bool operator!=(const iterator &o) const { return i != o.i; } + inline bool operator<(const iterator& other) const { return i < other.i; } + inline bool operator<=(const iterator& other) const { return i <= other.i; } + inline bool operator>(const iterator& other) const { return i > other.i; } + inline bool operator>=(const iterator& other) const { return i >= other.i; } + inline iterator &operator++() { ++i; return *this; } + inline iterator operator++(int) { T *n = i; ++i; return n; } + inline iterator &operator--() { i--; return *this; } + inline iterator operator--(int) { T *n = i; i--; return n; } + inline iterator &operator+=(int j) { i+=j; return *this; } + inline iterator &operator-=(int j) { i-=j; return *this; } + inline iterator operator+(int j) const { return iterator(i+j); } + inline iterator operator-(int j) const { return iterator(i-j); } + inline int operator-(iterator j) const { return i - j.i; } + inline operator T*() const { return i; } + }; + friend class iterator; + + class const_iterator { + public: + const T *i; + typedef std::random_access_iterator_tag iterator_category; + typedef int difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + inline const_iterator() : i(Q_NULLPTR) {} + inline const_iterator(const T *n) : i(n) {} + inline const_iterator(const const_iterator &o): i(o.i) {} // #### Qt 6: remove, the default version is fine + inline explicit const_iterator(const iterator &o): i(o.i) {} + inline const T &operator*() const { return *i; } + inline const T *operator->() const { return i; } + inline const T &operator[](int j) const { return *(i + j); } + inline bool operator==(const const_iterator &o) const { return i == o.i; } + inline bool operator!=(const const_iterator &o) const { return i != o.i; } + inline bool operator<(const const_iterator& other) const { return i < other.i; } + inline bool operator<=(const const_iterator& other) const { return i <= other.i; } + inline bool operator>(const const_iterator& other) const { return i > other.i; } + inline bool operator>=(const const_iterator& other) const { return i >= other.i; } + inline const_iterator &operator++() { ++i; return *this; } + inline const_iterator operator++(int) { const T *n = i; ++i; return n; } + inline const_iterator &operator--() { i--; return *this; } + inline const_iterator operator--(int) { const T *n = i; i--; return n; } + inline const_iterator &operator+=(int j) { i+=j; return *this; } + inline const_iterator &operator-=(int j) { i-=j; return *this; } + inline const_iterator operator+(int j) const { return const_iterator(i+j); } + inline const_iterator operator-(int j) const { return const_iterator(i-j); } + inline int operator-(const_iterator j) const { return i - j.i; } + inline operator const T*() const { return i; } + }; + friend class const_iterator; +#else + typedef T* iterator; + typedef const T* const_iterator; +#endif + + T *data() { return static_cast(QArrayData::data()); } + const T *data() const { return static_cast(QArrayData::data()); } + + iterator begin(iterator = iterator()) { return data(); } + iterator end(iterator = iterator()) { return data() + size; } + const_iterator begin(const_iterator = const_iterator()) const { return data(); } + const_iterator end(const_iterator = const_iterator()) const { return data() + size; } + const_iterator constBegin(const_iterator = const_iterator()) const { return data(); } + const_iterator constEnd(const_iterator = const_iterator()) const { return data() + size; } + + class AlignmentDummy { QArrayData header; T data; }; + + Q_REQUIRED_RESULT static QTypedArrayData *allocate(size_t capacity, + AllocationOptions options = Default) + { + Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData)); + return static_cast(QArrayData::allocate(sizeof(T), + Q_ALIGNOF(AlignmentDummy), capacity, options)); + } + + static QTypedArrayData *reallocateUnaligned(QTypedArrayData *data, size_t capacity, + AllocationOptions options = Default) + { + Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData)); + return static_cast(QArrayData::reallocateUnaligned(data, sizeof(T), + capacity, options)); + } + + static void deallocate(QArrayData *data) + { + Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData)); + QArrayData::deallocate(data, sizeof(T), Q_ALIGNOF(AlignmentDummy)); + } + + static QTypedArrayData *fromRawData(const T *data, size_t n, + AllocationOptions options = Default) + { + Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData)); + QTypedArrayData *result = allocate(0, options | RawData); + if (result) { + Q_ASSERT(!result->ref.isShared()); // No shared empty, please! + + result->offset = reinterpret_cast(data) + - reinterpret_cast(result); + result->size = int(n); + } + return result; + } + + static QTypedArrayData *sharedNull() Q_DECL_NOTHROW + { + Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData)); + return static_cast(QArrayData::sharedNull()); + } + + static QTypedArrayData *sharedEmpty() + { + Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData)); + return allocate(/* capacity */ 0); + } + +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + static QTypedArrayData *unsharableEmpty() + { + Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData)); + return allocate(/* capacity */ 0, Unsharable); + } +#endif +}; + +template +struct QStaticArrayData +{ + QArrayData header; + T data[N]; +}; + +// Support for returning QArrayDataPointer from functions +template +struct QArrayDataPointerRef +{ + QTypedArrayData *ptr; +}; + +#define Q_STATIC_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(size, offset) \ + { Q_REFCOUNT_INITIALIZE_STATIC, size, 0, 0, offset } \ + /**/ + +#define Q_STATIC_ARRAY_DATA_HEADER_INITIALIZER(type, size) \ + Q_STATIC_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(size,\ + ((sizeof(QArrayData) + (Q_ALIGNOF(type) - 1)) & ~(Q_ALIGNOF(type) - 1) )) \ + /**/ + +//////////////////////////////////////////////////////////////////////////////// +// Q_ARRAY_LITERAL + +// The idea here is to place a (read-only) copy of header and array data in an +// mmappable portion of the executable (typically, .rodata section). This is +// accomplished by hiding a static const instance of QStaticArrayData, which is +// POD. + +#if defined(Q_COMPILER_VARIADIC_MACROS) +#if defined(Q_COMPILER_LAMBDA) +// Hide array inside a lambda +#define Q_ARRAY_LITERAL(Type, ...) \ + ([]() -> QArrayDataPointerRef { \ + /* MSVC 2010 Doesn't support static variables in a lambda, but */ \ + /* happily accepts them in a static function of a lambda-local */ \ + /* struct :-) */ \ + struct StaticWrapper { \ + static QArrayDataPointerRef get() \ + { \ + Q_ARRAY_LITERAL_IMPL(Type, __VA_ARGS__) \ + return ref; \ + } \ + }; \ + return StaticWrapper::get(); \ + }()) \ + /**/ +#endif +#endif // defined(Q_COMPILER_VARIADIC_MACROS) + +#if defined(Q_ARRAY_LITERAL) +#define Q_ARRAY_LITERAL_IMPL(Type, ...) \ + union { Type type_must_be_POD; } dummy; Q_UNUSED(dummy) \ + \ + /* Portable compile-time array size computation */ \ + Type data[] = { __VA_ARGS__ }; Q_UNUSED(data) \ + enum { Size = sizeof(data) / sizeof(data[0]) }; \ + \ + static const QStaticArrayData literal = { \ + Q_STATIC_ARRAY_DATA_HEADER_INITIALIZER(Type, Size), { __VA_ARGS__ } }; \ + \ + QArrayDataPointerRef ref = \ + { static_cast *>( \ + const_cast(&literal.header)) }; \ + /**/ +#else +// As a fallback, memory is allocated and data copied to the heap. + +// The fallback macro does NOT use variadic macros and does NOT support +// variable number of arguments. It is suitable for char arrays. + +namespace QtPrivate { + template + inline QArrayDataPointerRef qMakeArrayLiteral(const T (&array)[N]) + { + union { T type_must_be_POD; } dummy; Q_UNUSED(dummy) + + QArrayDataPointerRef result = { QTypedArrayData::allocate(N) }; + Q_CHECK_PTR(result.ptr); + + ::memcpy(result.ptr->data(), array, N * sizeof(T)); + result.ptr->size = N; + + return result; + } +} + +#define Q_ARRAY_LITERAL(Type, Array) \ + QT_PREPEND_NAMESPACE(QtPrivate::qMakeArrayLiteral)( Array ) +#endif // !defined(Q_ARRAY_LITERAL) + +namespace QtPrivate { +struct Q_CORE_EXPORT QContainerImplHelper +{ + enum CutResult { Null, Empty, Full, Subset }; + static CutResult mid(int originalLength, int *position, int *length); +}; +} + +QT_END_NAMESPACE + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qarraydataops.h b/qrenderdoc/3rdparty/qt/include/QtCore/qarraydataops.h new file mode 100644 index 000000000..b7c3bc128 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qarraydataops.h @@ -0,0 +1,446 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QARRAYDATAOPS_H +#define QARRAYDATAOPS_H + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +namespace QtPrivate { + +QT_WARNING_PUSH +#if defined(Q_CC_GNU) && Q_CC_GNU >= 700 +QT_WARNING_DISABLE_GCC("-Wstringop-overflow") +#endif + +template +struct QPodArrayOps + : QTypedArrayData +{ + void appendInitialize(size_t newSize) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(newSize > uint(this->size)); + Q_ASSERT(newSize <= this->alloc); + + ::memset(this->end(), 0, (newSize - this->size) * sizeof(T)); + this->size = int(newSize); + } + + void copyAppend(const T *b, const T *e) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(b < e); + Q_ASSERT(size_t(e - b) <= this->alloc - uint(this->size)); + + ::memcpy(this->end(), b, (e - b) * sizeof(T)); + this->size += e - b; + } + + void copyAppend(size_t n, const T &t) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(n <= this->alloc - uint(this->size)); + + T *iter = this->end(); + const T *const end = iter + n; + for (; iter != end; ++iter) + ::memcpy(iter, &t, sizeof(T)); + this->size += int(n); + } + + void truncate(size_t newSize) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(newSize < size_t(this->size)); + + this->size = int(newSize); + } + + void destroyAll() // Call from destructors, ONLY! + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(this->ref.atomic.load() == 0); + + // As this is to be called only from destructor, it doesn't need to be + // exception safe; size not updated. + } + + void insert(T *where, const T *b, const T *e) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(where >= this->begin() && where < this->end()); // Use copyAppend at end + Q_ASSERT(b < e); + Q_ASSERT(e <= where || b > this->end()); // No overlap + Q_ASSERT(size_t(e - b) <= this->alloc - uint(this->size)); + + ::memmove(where + (e - b), where, (static_cast(this->end()) - where) * sizeof(T)); + ::memcpy(where, b, (e - b) * sizeof(T)); + this->size += (e - b); + } + + void erase(T *b, T *e) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(b < e); + Q_ASSERT(b >= this->begin() && b < this->end()); + Q_ASSERT(e > this->begin() && e < this->end()); + + ::memmove(b, e, (static_cast(this->end()) - e) * sizeof(T)); + this->size -= (e - b); + } +}; +QT_WARNING_POP + +template +struct QGenericArrayOps + : QTypedArrayData +{ + void appendInitialize(size_t newSize) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(newSize > uint(this->size)); + Q_ASSERT(newSize <= this->alloc); + + T *const begin = this->begin(); + do { + new (begin + this->size) T; + } while (uint(++this->size) != newSize); + } + + void copyAppend(const T *b, const T *e) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(b < e); + Q_ASSERT(size_t(e - b) <= this->alloc - uint(this->size)); + + T *iter = this->end(); + for (; b != e; ++iter, ++b) { + new (iter) T(*b); + ++this->size; + } + } + + void copyAppend(size_t n, const T &t) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(n <= this->alloc - uint(this->size)); + + T *iter = this->end(); + const T *const end = iter + n; + for (; iter != end; ++iter) { + new (iter) T(t); + ++this->size; + } + } + + void truncate(size_t newSize) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(newSize < size_t(this->size)); + + const T *const b = this->begin(); + do { + (b + --this->size)->~T(); + } while (uint(this->size) != newSize); + } + + void destroyAll() // Call from destructors, ONLY + { + Q_ASSERT(this->isMutable()); + // As this is to be called only from destructor, it doesn't need to be + // exception safe; size not updated. + + Q_ASSERT(this->ref.atomic.load() == 0); + + const T *const b = this->begin(); + const T *i = this->end(); + + while (i != b) + (--i)->~T(); + } + + void insert(T *where, const T *b, const T *e) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(where >= this->begin() && where < this->end()); // Use copyAppend at end + Q_ASSERT(b < e); + Q_ASSERT(e <= where || b > this->end()); // No overlap + Q_ASSERT(size_t(e - b) <= this->alloc - uint(this->size)); + + // Array may be truncated at where in case of exceptions + + T *const end = this->end(); + const T *readIter = end; + T *writeIter = end + (e - b); + + const T *const step1End = where + qMax(e - b, end - where); + + struct Destructor + { + Destructor(T *&it) + : iter(&it) + , end(it) + { + } + + void commit() + { + iter = &end; + } + + ~Destructor() + { + for (; *iter != end; --*iter) + (*iter)->~T(); + } + + T **iter; + T *end; + } destroyer(writeIter); + + // Construct new elements in array + do { + --readIter, --writeIter; + new (writeIter) T(*readIter); + } while (writeIter != step1End); + + while (writeIter != end) { + --e, --writeIter; + new (writeIter) T(*e); + } + + destroyer.commit(); + this->size += destroyer.end - end; + + // Copy assign over existing elements + while (readIter != where) { + --readIter, --writeIter; + *writeIter = *readIter; + } + + while (writeIter != where) { + --e, --writeIter; + *writeIter = *e; + } + } + + void erase(T *b, T *e) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(b < e); + Q_ASSERT(b >= this->begin() && b < this->end()); + Q_ASSERT(e > this->begin() && e < this->end()); + + const T *const end = this->end(); + + do { + *b = *e; + ++b, ++e; + } while (e != end); + + do { + (--e)->~T(); + --this->size; + } while (e != b); + } +}; + +template +struct QMovableArrayOps + : QGenericArrayOps +{ + // using QGenericArrayOps::appendInitialize; + // using QGenericArrayOps::copyAppend; + // using QGenericArrayOps::truncate; + // using QGenericArrayOps::destroyAll; + + void insert(T *where, const T *b, const T *e) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(!this->ref.isShared()); + Q_ASSERT(where >= this->begin() && where < this->end()); // Use copyAppend at end + Q_ASSERT(b < e); + Q_ASSERT(e <= where || b > this->end()); // No overlap + Q_ASSERT(size_t(e - b) <= this->alloc - uint(this->size)); + + // Provides strong exception safety guarantee, + // provided T::~T() nothrow + + struct ReversibleDisplace + { + ReversibleDisplace(T *start, T *finish, size_t diff) + : begin(start) + , end(finish) + , displace(diff) + { + ::memmove(static_cast(begin + displace), static_cast(begin), + (end - begin) * sizeof(T)); + } + + void commit() { displace = 0; } + + ~ReversibleDisplace() + { + if (displace) + ::memmove(static_cast(begin), static_cast(begin + displace), + (end - begin) * sizeof(T)); + } + + T *const begin; + T *const end; + size_t displace; + + } displace(where, this->end(), size_t(e - b)); + + struct CopyConstructor + { + CopyConstructor(T *w) : where(w) {} + + void copy(const T *src, const T *const srcEnd) + { + n = 0; + for (; src != srcEnd; ++src) { + new (where + n) T(*src); + ++n; + } + n = 0; + } + + ~CopyConstructor() + { + while (n) + where[--n].~T(); + } + + T *const where; + size_t n; + } copier(where); + + copier.copy(b, e); + displace.commit(); + this->size += (e - b); + } + + void erase(T *b, T *e) + { + Q_ASSERT(this->isMutable()); + Q_ASSERT(b < e); + Q_ASSERT(b >= this->begin() && b < this->end()); + Q_ASSERT(e > this->begin() && e < this->end()); + + struct Mover + { + Mover(T *&start, const T *finish, int &sz) + : destination(start) + , source(start) + , n(finish - start) + , size(sz) + { + } + + ~Mover() + { + ::memmove(static_cast(destination), static_cast(source), n * sizeof(T)); + size -= (source - destination); + } + + T *&destination; + const T *const source; + size_t n; + int &size; + } mover(e, this->end(), this->size); + + do { + // Exceptions or not, dtor called once per instance + (--e)->~T(); + } while (e != b); + } +}; + +template +struct QArrayOpsSelector +{ + typedef QGenericArrayOps Type; +}; + +template +struct QArrayOpsSelector::isComplex && QTypeInfoQuery::isRelocatable + >::type> +{ + typedef QPodArrayOps Type; +}; + +template +struct QArrayOpsSelector::isComplex && QTypeInfoQuery::isRelocatable + >::type> +{ + typedef QMovableArrayOps Type; +}; + +} // namespace QtPrivate + +template +struct QArrayDataOps + : QtPrivate::QArrayOpsSelector::Type +{ +}; + +QT_END_NAMESPACE + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qarraydatapointer.h b/qrenderdoc/3rdparty/qt/include/QtCore/qarraydatapointer.h new file mode 100644 index 000000000..51cfa6e84 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qarraydatapointer.h @@ -0,0 +1,225 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QARRAYDATAPOINTER_H +#define QARRAYDATAPOINTER_H + +#include + +QT_BEGIN_NAMESPACE + +template +struct QArrayDataPointer +{ +private: + typedef QTypedArrayData Data; + typedef QArrayDataOps DataOps; + +public: + QArrayDataPointer() Q_DECL_NOTHROW + : d(Data::sharedNull()) + { + } + + QArrayDataPointer(const QArrayDataPointer &other) + : d(other.d->ref.ref() + ? other.d + : other.clone(other.d->cloneFlags())) + { + } + + explicit QArrayDataPointer(QTypedArrayData *ptr) + : d(ptr) + { + Q_CHECK_PTR(ptr); + } + + QArrayDataPointer(QArrayDataPointerRef ref) + : d(ref.ptr) + { + } + + QArrayDataPointer &operator=(const QArrayDataPointer &other) + { + QArrayDataPointer tmp(other); + this->swap(tmp); + return *this; + } + +#ifdef Q_COMPILER_RVALUE_REFS + QArrayDataPointer(QArrayDataPointer &&other) Q_DECL_NOTHROW + : d(other.d) + { + other.d = Data::sharedNull(); + } + + QArrayDataPointer &operator=(QArrayDataPointer &&other) Q_DECL_NOTHROW + { + QArrayDataPointer moved(std::move(other)); + this->swap(moved); + return *this; + } +#endif + + DataOps &operator*() const + { + Q_ASSERT(d); + return *static_cast(d); + } + + DataOps *operator->() const + { + Q_ASSERT(d); + return static_cast(d); + } + + ~QArrayDataPointer() + { + if (!d->ref.deref()) { + if (d->isMutable()) + (*this)->destroyAll(); + Data::deallocate(d); + } + } + + bool isNull() const + { + return d == Data::sharedNull(); + } + + Data *data() const + { + return d; + } + + bool needsDetach() const + { + return (!d->isMutable() || d->ref.isShared()); + } + +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + void setSharable(bool sharable) + { + if (needsDetach()) { + Data *detached = clone(sharable + ? d->detachFlags() & ~QArrayData::Unsharable + : d->detachFlags() | QArrayData::Unsharable); + QArrayDataPointer old(d); + d = detached; + } else { + d->ref.setSharable(sharable); + } + } + + bool isSharable() const { return d->isSharable(); } +#endif + + void swap(QArrayDataPointer &other) Q_DECL_NOTHROW + { + qSwap(d, other.d); + } + + void clear() + { + QArrayDataPointer tmp(d); + d = Data::sharedNull(); + } + + bool detach() + { + if (needsDetach()) { + Data *copy = clone(d->detachFlags()); + QArrayDataPointer old(d); + d = copy; + return true; + } + + return false; + } + +private: + Q_REQUIRED_RESULT Data *clone(QArrayData::AllocationOptions options) const + { + Data *x = Data::allocate(d->detachCapacity(d->size), options); + Q_CHECK_PTR(x); + QArrayDataPointer copy(x); + + if (d->size) + copy->copyAppend(d->begin(), d->end()); + + Data *result = copy.d; + copy.d = Data::sharedNull(); + return result; + } + + Data *d; +}; + +template +inline bool operator==(const QArrayDataPointer &lhs, const QArrayDataPointer &rhs) +{ + return lhs.data() == rhs.data(); +} + +template +inline bool operator!=(const QArrayDataPointer &lhs, const QArrayDataPointer &rhs) +{ + return lhs.data() != rhs.data(); +} + +template +inline void qSwap(QArrayDataPointer &p1, QArrayDataPointer &p2) +{ + p1.swap(p2); +} + +QT_END_NAMESPACE + +namespace std +{ + template + inline void swap( + QT_PREPEND_NAMESPACE(QArrayDataPointer) &p1, + QT_PREPEND_NAMESPACE(QArrayDataPointer) &p2) + { + p1.swap(p2); + } +} + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qatomic.h b/qrenderdoc/3rdparty/qt/include/QtCore/qatomic.h new file mode 100644 index 000000000..f9eacbf6f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qatomic.h @@ -0,0 +1,267 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QATOMIC_H +#define QATOMIC_H + +#include + +QT_BEGIN_NAMESPACE + +QT_WARNING_PUSH +QT_WARNING_DISABLE_GCC("-Wextra") + +// High-level atomic integer operations +template +class QAtomicInteger : public QBasicAtomicInteger +{ +public: + // Non-atomic API +#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS + constexpr QAtomicInteger(T value = 0) Q_DECL_NOTHROW : QBasicAtomicInteger(value) {} +#else + inline QAtomicInteger(T value = 0) Q_DECL_NOTHROW + { + this->_q_value = value; + } +#endif + + inline QAtomicInteger(const QAtomicInteger &other) Q_DECL_NOTHROW +#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS + : QBasicAtomicInteger() +#endif + { + this->storeRelease(other.loadAcquire()); + } + + inline QAtomicInteger &operator=(const QAtomicInteger &other) Q_DECL_NOTHROW + { + this->storeRelease(other.loadAcquire()); + return *this; + } + +#ifdef Q_QDOC + T load() const; + T loadAcquire() const; + void store(T newValue); + void storeRelease(T newValue); + + operator T() const; + QAtomicInteger &operator=(T); + + static Q_DECL_CONSTEXPR bool isReferenceCountingNative(); + static Q_DECL_CONSTEXPR bool isReferenceCountingWaitFree(); + + bool ref(); + bool deref(); + + static Q_DECL_CONSTEXPR bool isTestAndSetNative(); + static Q_DECL_CONSTEXPR bool isTestAndSetWaitFree(); + + bool testAndSetRelaxed(T expectedValue, T newValue); + bool testAndSetAcquire(T expectedValue, T newValue); + bool testAndSetRelease(T expectedValue, T newValue); + bool testAndSetOrdered(T expectedValue, T newValue); + + static Q_DECL_CONSTEXPR bool isFetchAndStoreNative(); + static Q_DECL_CONSTEXPR bool isFetchAndStoreWaitFree(); + + T fetchAndStoreRelaxed(T newValue); + T fetchAndStoreAcquire(T newValue); + T fetchAndStoreRelease(T newValue); + T fetchAndStoreOrdered(T newValue); + + static Q_DECL_CONSTEXPR bool isFetchAndAddNative(); + static Q_DECL_CONSTEXPR bool isFetchAndAddWaitFree(); + + T fetchAndAddRelaxed(T valueToAdd); + T fetchAndAddAcquire(T valueToAdd); + T fetchAndAddRelease(T valueToAdd); + T fetchAndAddOrdered(T valueToAdd); + + T fetchAndSubRelaxed(T valueToSub); + T fetchAndSubAcquire(T valueToSub); + T fetchAndSubRelease(T valueToSub); + T fetchAndSubOrdered(T valueToSub); + + T fetchAndOrRelaxed(T valueToOr); + T fetchAndOrAcquire(T valueToOr); + T fetchAndOrRelease(T valueToOr); + T fetchAndOrOrdered(T valueToOr); + + T fetchAndAndRelaxed(T valueToAnd); + T fetchAndAndAcquire(T valueToAnd); + T fetchAndAndRelease(T valueToAnd); + T fetchAndAndOrdered(T valueToAnd); + + T fetchAndXorRelaxed(T valueToXor); + T fetchAndXorAcquire(T valueToXor); + T fetchAndXorRelease(T valueToXor); + T fetchAndXorOrdered(T valueToXor); + + T operator++(); + T operator++(int); + T operator--(); + T operator--(int); + T operator+=(T value); + T operator-=(T value); + T operator|=(T value); + T operator&=(T value); + T operator^=(T value); +#endif +}; + +class QAtomicInt : public QAtomicInteger +{ +public: + // Non-atomic API + // We could use QT_COMPILER_INHERITING_CONSTRUCTORS, but we need only one; + // the implicit definition for all the others is fine. +#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS + constexpr +#endif + QAtomicInt(int value = 0) Q_DECL_NOTHROW : QAtomicInteger(value) {} +}; + +// High-level atomic pointer operations +template +class QAtomicPointer : public QBasicAtomicPointer +{ +public: +#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS + constexpr QAtomicPointer(T *value = 0) Q_DECL_NOTHROW : QBasicAtomicPointer(value) {} +#else + inline QAtomicPointer(T *value = 0) Q_DECL_NOTHROW + { + this->store(value); + } +#endif + inline QAtomicPointer(const QAtomicPointer &other) Q_DECL_NOTHROW +#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS + : QBasicAtomicPointer() +#endif + { + this->storeRelease(other.loadAcquire()); + } + + inline QAtomicPointer &operator=(const QAtomicPointer &other) Q_DECL_NOTHROW + { + this->storeRelease(other.loadAcquire()); + return *this; + } + +#ifdef Q_QDOC + T *load() const; + T *loadAcquire() const; + void store(T *newValue); + void storeRelease(T *newValue); + + static Q_DECL_CONSTEXPR bool isTestAndSetNative(); + static Q_DECL_CONSTEXPR bool isTestAndSetWaitFree(); + + bool testAndSetRelaxed(T *expectedValue, T *newValue); + bool testAndSetAcquire(T *expectedValue, T *newValue); + bool testAndSetRelease(T *expectedValue, T *newValue); + bool testAndSetOrdered(T *expectedValue, T *newValue); + + static Q_DECL_CONSTEXPR bool isFetchAndStoreNative(); + static Q_DECL_CONSTEXPR bool isFetchAndStoreWaitFree(); + + T *fetchAndStoreRelaxed(T *newValue); + T *fetchAndStoreAcquire(T *newValue); + T *fetchAndStoreRelease(T *newValue); + T *fetchAndStoreOrdered(T *newValue); + + static Q_DECL_CONSTEXPR bool isFetchAndAddNative(); + static Q_DECL_CONSTEXPR bool isFetchAndAddWaitFree(); + + T *fetchAndAddRelaxed(qptrdiff valueToAdd); + T *fetchAndAddAcquire(qptrdiff valueToAdd); + T *fetchAndAddRelease(qptrdiff valueToAdd); + T *fetchAndAddOrdered(qptrdiff valueToAdd); +#endif +}; + +QT_WARNING_POP + +#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS +# undef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS +#endif + +/*! + This is a helper for the assignment operators of implicitly + shared classes. Your assignment operator should look like this: + + \snippet code/src.corelib.thread.qatomic.h 0 +*/ +template +inline void qAtomicAssign(T *&d, T *x) +{ + if (d == x) + return; + x->ref.ref(); + if (!d->ref.deref()) + delete d; + d = x; +} + +/*! + This is a helper for the detach method of implicitly shared + classes. Your private class needs a copy constructor which copies + the members and sets the refcount to 1. After that, your detach + function should look like this: + + \snippet code/src.corelib.thread.qatomic.h 1 +*/ +template +inline void qAtomicDetach(T *&d) +{ + if (d->ref.load() == 1) + return; + T *x = d; + d = new T(*d); + if (!x->ref.deref()) + delete x; +} + +QT_END_NAMESPACE +#endif // QATOMIC_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qatomic_bootstrap.h b/qrenderdoc/3rdparty/qt/include/QtCore/qatomic_bootstrap.h new file mode 100644 index 000000000..b463f817b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qatomic_bootstrap.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2011 Thiago Macieira +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QATOMIC_BOOTSTRAP_H +#define QATOMIC_BOOTSTRAP_H + +#include + +QT_BEGIN_NAMESPACE + +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + +template struct QAtomicOps: QGenericAtomicOps > +{ + typedef T Type; + + static bool ref(T &_q_value) Q_DECL_NOTHROW + { + return ++_q_value != 0; + } + static bool deref(T &_q_value) Q_DECL_NOTHROW + { + return --_q_value != 0; + } + + static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue = 0) Q_DECL_NOTHROW + { + if (currentValue) + *currentValue = _q_value; + if (_q_value == expectedValue) { + _q_value = newValue; + return true; + } + return false; + } + + static T fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW + { + T tmp = _q_value; + _q_value = newValue; + return tmp; + } + + template static + T fetchAndAddRelaxed(T &_q_value, AdditiveType valueToAdd) Q_DECL_NOTHROW + { + T returnValue = _q_value; + _q_value += valueToAdd; + return returnValue; + } +}; + +QT_END_NAMESPACE + +#endif // QATOMIC_BOOTSTRAP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qatomic_cxx11.h b/qrenderdoc/3rdparty/qt/include/QtCore/qatomic_cxx11.h new file mode 100644 index 000000000..140484938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qatomic_cxx11.h @@ -0,0 +1,473 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Thiago Macieira +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QATOMIC_CXX11_H +#define QATOMIC_CXX11_H + +#include +#include + +QT_BEGIN_NAMESPACE + +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + +/* Attempt to detect whether the atomic operations exist in hardware + * or whether they are emulated by way of a lock. + * + * C++11 29.4 [atomics.lockfree] p1 says + * + * The ATOMIC_..._LOCK_FREE macros indicate the lock-free property of the + * corresponding atomic types, with the signed and unsigned variants grouped + * together. The properties also apply to the corresponding (partial) + * specializations of the atomic template. A value of 0 indicates that the + * types are never lock-free. A value of 1 indicates that the types are + * sometimes lock-free. A value of 2 indicates that the types are always + * lock-free. + * + * We have a problem when the value is 1: we'd need to check at runtime, but + * QAtomicInteger requires a constexpr answer (defect introduced in Qt 5.0). So + * we'll err in the side of caution and say it isn't. + */ + +// ### Qt 6: make non-constexpr (see above) +template struct QAtomicTraits +{ static Q_DECL_CONSTEXPR inline bool isLockFree(); }; + +#define Q_ATOMIC_INT32_IS_SUPPORTED +#if ATOMIC_INT_LOCK_FREE == 2 +# define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree() +{ return true; } +#elif ATOMIC_INT_LOCK_FREE == 1 +# define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT_TEST_AND_SET_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT_FETCH_AND_STORE_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT_FETCH_AND_ADD_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT32_TEST_AND_SET_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_SOMETIMES_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree() +{ return false; } +#else +# define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NEVER_NATIVE +# define Q_ATOMIC_INT_TEST_AND_SET_IS_NEVER_NATIVE +# define Q_ATOMIC_INT_FETCH_AND_STORE_IS_NEVER_NATIVE +# define Q_ATOMIC_INT_FETCH_AND_ADD_IS_NEVER_NATIVE +# define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_NEVER_NATIVE +# define Q_ATOMIC_INT32_TEST_AND_SET_IS_NEVER_NATIVE +# define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_NEVER_NATIVE +# define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_NEVER_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<4>::isLockFree() +{ return false; } +#endif + +#if ATOMIC_POINTER_LOCK_FREE == 2 +# define Q_ATOMIC_POINTER_REFERENCE_COUNTING_IS_ALWAYS_NATIVE +# define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE +# define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE +# define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE +#elif ATOMIC_POINTER_LOCK_FREE == 1 +# define Q_ATOMIC_POINTER_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_POINTER_TEST_AND_SET_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_SOMETIMES_NATIVE +#else +# define Q_ATOMIC_POINTER_REFERENCE_COUNTING_IS_NEVER_NATIVE +# define Q_ATOMIC_POINTER_TEST_AND_SET_IS_NEVER_NATIVE +# define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_NEVER_NATIVE +# define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NEVER_NATIVE +#endif + +template<> struct QAtomicOpsSupport<1> { enum { IsSupported = 1 }; }; +#define Q_ATOMIC_INT8_IS_SUPPORTED +#if ATOMIC_CHAR_LOCK_FREE == 2 +# define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT8_TEST_AND_SET_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_ALWAYS_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<1>::isLockFree() +{ return true; } +#elif ATOMIC_CHAR_LOCK_FREE == 1 +# define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT8_TEST_AND_SET_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_SOMETIMES_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<1>::isLockFree() +{ return false; } +#else +# define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_NEVER_NATIVE +# define Q_ATOMIC_INT8_TEST_AND_SET_IS_NEVER_NATIVE +# define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_NEVER_NATIVE +# define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_NEVER_NATIVE + +template <> Q_DECL_CONSTEXPR bool QAtomicTraits<1>::isLockFree() +{ return false; } +#endif + +template<> struct QAtomicOpsSupport<2> { enum { IsSupported = 1 }; }; +#define Q_ATOMIC_INT16_IS_SUPPORTED +#if ATOMIC_SHORT_LOCK_FREE == 2 +# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT16_TEST_AND_SET_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_ALWAYS_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree() +{ return false; } +#elif ATOMIC_SHORT_LOCK_FREE == 1 +# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT16_TEST_AND_SET_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_SOMETIMES_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree() +{ return false; } +#else +# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_NEVER_NATIVE +# define Q_ATOMIC_INT16_TEST_AND_SET_IS_NEVER_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_NEVER_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_NEVER_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree() +{ return false; } +#endif + +#if QT_CONFIG(std_atomic64) +template<> struct QAtomicOpsSupport<8> { enum { IsSupported = 1 }; }; +# define Q_ATOMIC_INT64_IS_SUPPORTED +# if ATOMIC_LLONG_LOCK_FREE == 2 +# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT16_TEST_AND_SET_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_ALWAYS_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree() +{ return true; } +# elif ATOMIC_LLONG_LOCK_FREE == 1 +# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT16_TEST_AND_SET_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_SOMETIMES_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_SOMETIMES_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree() +{ return false; } +# else +# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_NEVER_NATIVE +# define Q_ATOMIC_INT16_TEST_AND_SET_IS_NEVER_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_NEVER_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_NEVER_NATIVE + +template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<8>::isLockFree() +{ return false; } +# endif +#endif + +template struct QAtomicOps +{ + typedef std::atomic Type; + + template static inline + T load(const std::atomic &_q_value) Q_DECL_NOTHROW + { + return _q_value.load(std::memory_order_relaxed); + } + + template static inline + T load(const volatile std::atomic &_q_value) Q_DECL_NOTHROW + { + return _q_value.load(std::memory_order_relaxed); + } + + template static inline + T loadAcquire(const std::atomic &_q_value) Q_DECL_NOTHROW + { + return _q_value.load(std::memory_order_acquire); + } + + template static inline + T loadAcquire(const volatile std::atomic &_q_value) Q_DECL_NOTHROW + { + return _q_value.load(std::memory_order_acquire); + } + + template static inline + void store(std::atomic &_q_value, T newValue) Q_DECL_NOTHROW + { + _q_value.store(newValue, std::memory_order_relaxed); + } + + template static inline + void storeRelease(std::atomic &_q_value, T newValue) Q_DECL_NOTHROW + { + _q_value.store(newValue, std::memory_order_release); + } + + static inline Q_DECL_CONSTEXPR bool isReferenceCountingNative() Q_DECL_NOTHROW { return isTestAndSetNative(); } + static inline Q_DECL_CONSTEXPR bool isReferenceCountingWaitFree() Q_DECL_NOTHROW { return false; } + template + static inline bool ref(std::atomic &_q_value) + { + return ++_q_value != 0; + } + + template + static inline bool deref(std::atomic &_q_value) Q_DECL_NOTHROW + { + return --_q_value != 0; + } + + static inline Q_DECL_CONSTEXPR bool isTestAndSetNative() Q_DECL_NOTHROW + { return QAtomicTraits::isLockFree(); } + static inline Q_DECL_CONSTEXPR bool isTestAndSetWaitFree() Q_DECL_NOTHROW { return false; } + + template + static bool testAndSetRelaxed(std::atomic &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW + { + bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_relaxed, std::memory_order_relaxed); + if (currentValue) + *currentValue = expectedValue; + return tmp; + } + + template + static bool testAndSetAcquire(std::atomic &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW + { + bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_acquire, std::memory_order_acquire); + if (currentValue) + *currentValue = expectedValue; + return tmp; + } + + template + static bool testAndSetRelease(std::atomic &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW + { + bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_release, std::memory_order_relaxed); + if (currentValue) + *currentValue = expectedValue; + return tmp; + } + + template + static bool testAndSetOrdered(std::atomic &_q_value, T expectedValue, T newValue, T *currentValue = Q_NULLPTR) Q_DECL_NOTHROW + { + bool tmp = _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_acq_rel, std::memory_order_acquire); + if (currentValue) + *currentValue = expectedValue; + return tmp; + } + + static inline Q_DECL_CONSTEXPR bool isFetchAndStoreNative() Q_DECL_NOTHROW { return isTestAndSetNative(); } + static inline Q_DECL_CONSTEXPR bool isFetchAndStoreWaitFree() Q_DECL_NOTHROW { return false; } + + template + static T fetchAndStoreRelaxed(std::atomic &_q_value, T newValue) Q_DECL_NOTHROW + { + return _q_value.exchange(newValue, std::memory_order_relaxed); + } + + template + static T fetchAndStoreAcquire(std::atomic &_q_value, T newValue) Q_DECL_NOTHROW + { + return _q_value.exchange(newValue, std::memory_order_acquire); + } + + template + static T fetchAndStoreRelease(std::atomic &_q_value, T newValue) Q_DECL_NOTHROW + { + return _q_value.exchange(newValue, std::memory_order_release); + } + + template + static T fetchAndStoreOrdered(std::atomic &_q_value, T newValue) Q_DECL_NOTHROW + { + return _q_value.exchange(newValue, std::memory_order_acq_rel); + } + + static inline Q_DECL_CONSTEXPR bool isFetchAndAddNative() Q_DECL_NOTHROW { return isTestAndSetNative(); } + static inline Q_DECL_CONSTEXPR bool isFetchAndAddWaitFree() Q_DECL_NOTHROW { return false; } + + template static inline + T fetchAndAddRelaxed(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_add(valueToAdd, std::memory_order_relaxed); + } + + template static inline + T fetchAndAddAcquire(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_add(valueToAdd, std::memory_order_acquire); + } + + template static inline + T fetchAndAddRelease(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_add(valueToAdd, std::memory_order_release); + } + + template static inline + T fetchAndAddOrdered(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_add(valueToAdd, std::memory_order_acq_rel); + } + + template static inline + T fetchAndSubRelaxed(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_sub(valueToAdd, std::memory_order_relaxed); + } + + template static inline + T fetchAndSubAcquire(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_sub(valueToAdd, std::memory_order_acquire); + } + + template static inline + T fetchAndSubRelease(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_sub(valueToAdd, std::memory_order_release); + } + + template static inline + T fetchAndSubOrdered(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_sub(valueToAdd, std::memory_order_acq_rel); + } + + template static inline + T fetchAndAndRelaxed(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_and(valueToAdd, std::memory_order_relaxed); + } + + template static inline + T fetchAndAndAcquire(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_and(valueToAdd, std::memory_order_acquire); + } + + template static inline + T fetchAndAndRelease(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_and(valueToAdd, std::memory_order_release); + } + + template static inline + T fetchAndAndOrdered(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_and(valueToAdd, std::memory_order_acq_rel); + } + + template static inline + T fetchAndOrRelaxed(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_or(valueToAdd, std::memory_order_relaxed); + } + + template static inline + T fetchAndOrAcquire(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_or(valueToAdd, std::memory_order_acquire); + } + + template static inline + T fetchAndOrRelease(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_or(valueToAdd, std::memory_order_release); + } + + template static inline + T fetchAndOrOrdered(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_or(valueToAdd, std::memory_order_acq_rel); + } + + template static inline + T fetchAndXorRelaxed(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_xor(valueToAdd, std::memory_order_relaxed); + } + + template static inline + T fetchAndXorAcquire(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_xor(valueToAdd, std::memory_order_acquire); + } + + template static inline + T fetchAndXorRelease(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_xor(valueToAdd, std::memory_order_release); + } + + template static inline + T fetchAndXorOrdered(std::atomic &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + return _q_value.fetch_xor(valueToAdd, std::memory_order_acq_rel); + } +}; + +#if defined(Q_COMPILER_CONSTEXPR) && defined(Q_COMPILER_DEFAULT_MEMBERS) && defined(Q_COMPILER_DELETE_MEMBERS) +# define Q_BASIC_ATOMIC_INITIALIZER(a) { a } +#else +# define Q_BASIC_ATOMIC_INITIALIZER(a) { ATOMIC_VAR_INIT(a) } +#endif + +QT_END_NAMESPACE + +#endif // QATOMIC_CXX0X_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qatomic_msvc.h b/qrenderdoc/3rdparty/qt/include/QtCore/qatomic_msvc.h new file mode 100644 index 000000000..5eae2bdc4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qatomic_msvc.h @@ -0,0 +1,485 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QATOMIC_MSVC_H +#define QATOMIC_MSVC_H + +#include + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +// use compiler intrinsics for all atomic functions +# define QT_INTERLOCKED_PREFIX _ +# define QT_INTERLOCKED_PROTOTYPE +# define QT_INTERLOCKED_DECLARE_PROTOTYPES +# define QT_INTERLOCKED_INTRINSIC +# define Q_ATOMIC_INT16_IS_SUPPORTED + +# ifdef _WIN64 +# define Q_ATOMIC_INT64_IS_SUPPORTED +# endif + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Prototype declaration + +#define QT_INTERLOCKED_CONCAT_I(prefix, suffix) \ + prefix ## suffix +#define QT_INTERLOCKED_CONCAT(prefix, suffix) \ + QT_INTERLOCKED_CONCAT_I(prefix, suffix) + +// MSVC intrinsics prefix function names with an underscore. Also, if platform +// SDK headers have been included, the Interlocked names may be defined as +// macros. +// To avoid double underscores, we paste the prefix with Interlocked first and +// then the remainder of the function name. +#define QT_INTERLOCKED_FUNCTION(name) \ + QT_INTERLOCKED_CONCAT( \ + QT_INTERLOCKED_CONCAT(QT_INTERLOCKED_PREFIX, Interlocked), name) + +#ifndef QT_INTERLOCKED_VOLATILE +# define QT_INTERLOCKED_VOLATILE volatile +#endif + +#ifndef QT_INTERLOCKED_PREFIX +#define QT_INTERLOCKED_PREFIX +#endif + +#ifndef QT_INTERLOCKED_PROTOTYPE +#define QT_INTERLOCKED_PROTOTYPE +#endif + +#ifdef QT_INTERLOCKED_DECLARE_PROTOTYPES +#undef QT_INTERLOCKED_DECLARE_PROTOTYPES + +extern "C" { + + long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Increment )(long QT_INTERLOCKED_VOLATILE *); + long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Decrement )(long QT_INTERLOCKED_VOLATILE *); + long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( CompareExchange )(long QT_INTERLOCKED_VOLATILE *, long, long); + long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Exchange )(long QT_INTERLOCKED_VOLATILE *, long); + long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( ExchangeAdd )(long QT_INTERLOCKED_VOLATILE *, long); + +# if !defined(__i386__) && !defined(_M_IX86) + void * QT_INTERLOCKED_FUNCTION( CompareExchangePointer )(void * QT_INTERLOCKED_VOLATILE *, void *, void *); + void * QT_INTERLOCKED_FUNCTION( ExchangePointer )(void * QT_INTERLOCKED_VOLATILE *, void *); + __int64 QT_INTERLOCKED_FUNCTION( ExchangeAdd64 )(__int64 QT_INTERLOCKED_VOLATILE *, __int64); +# endif + +# ifdef Q_ATOMIC_INT16_IS_SUPPORTED + short QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Increment16 )(short QT_INTERLOCKED_VOLATILE *); + short QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Decrement16 )(short QT_INTERLOCKED_VOLATILE *); + short QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( CompareExchange16 )(short QT_INTERLOCKED_VOLATILE *, short, short); + short QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Exchange16 )(short QT_INTERLOCKED_VOLATILE *, short); + short QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( ExchangeAdd16 )(short QT_INTERLOCKED_VOLATILE *, short); +# endif +# ifdef Q_ATOMIC_INT64_IS_SUPPORTED + __int64 QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Increment64 )(__int64 QT_INTERLOCKED_VOLATILE *); + __int64 QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Decrement64 )(__int64 QT_INTERLOCKED_VOLATILE *); + __int64 QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( CompareExchange64 )(__int64 QT_INTERLOCKED_VOLATILE *, __int64, __int64); + __int64 QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Exchange64 )(__int64 QT_INTERLOCKED_VOLATILE *, __int64); + //above already: qint64 QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( ExchangeAdd64 )(qint64 QT_INTERLOCKED_VOLATILE *, qint64); +# endif +} + +#endif // QT_INTERLOCKED_DECLARE_PROTOTYPES + +#undef QT_INTERLOCKED_PROTOTYPE + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +#ifdef QT_INTERLOCKED_INTRINSIC +#undef QT_INTERLOCKED_INTRINSIC + +# pragma intrinsic (_InterlockedIncrement) +# pragma intrinsic (_InterlockedDecrement) +# pragma intrinsic (_InterlockedExchange) +# pragma intrinsic (_InterlockedCompareExchange) +# pragma intrinsic (_InterlockedExchangeAdd) + +# if !defined(_M_IX86) +# pragma intrinsic (_InterlockedCompareExchangePointer) +# pragma intrinsic (_InterlockedExchangePointer) +# pragma intrinsic (_InterlockedExchangeAdd64) +# endif + +#endif // QT_INTERLOCKED_INTRINSIC + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Interlocked* replacement macros + +#if defined(__i386__) || defined(_M_IX86) + +# define QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(value, newValue, expectedValue) \ + reinterpret_cast( \ + QT_INTERLOCKED_FUNCTION(CompareExchange)( \ + reinterpret_cast(value), \ + long(newValue), \ + long(expectedValue))) + +# define QT_INTERLOCKED_EXCHANGE_POINTER(value, newValue) \ + QT_INTERLOCKED_FUNCTION(Exchange)( \ + reinterpret_cast(value), \ + long(newValue)) + +# define QT_INTERLOCKED_EXCHANGE_ADD_POINTER(value, valueToAdd) \ + QT_INTERLOCKED_FUNCTION(ExchangeAdd)( \ + reinterpret_cast(value), \ + (valueToAdd)) + +#else // !defined(__i386__) && !defined(_M_IX86) + +# define QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(value, newValue, expectedValue) \ + QT_INTERLOCKED_FUNCTION(CompareExchangePointer)( \ + (void * QT_INTERLOCKED_VOLATILE *)(value), \ + (void *) (newValue), \ + (void *) (expectedValue)) + +# define QT_INTERLOCKED_EXCHANGE_POINTER(value, newValue) \ + QT_INTERLOCKED_FUNCTION(ExchangePointer)( \ + (void * QT_INTERLOCKED_VOLATILE *)(value), \ + (void *) (newValue)) + +# define QT_INTERLOCKED_EXCHANGE_ADD_POINTER(value, valueToAdd) \ + QT_INTERLOCKED_FUNCTION(ExchangeAdd64)( \ + reinterpret_cast(value), \ + (valueToAdd)) + +#endif // !defined(__i386__) && !defined(_M_IX86) + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +QT_BEGIN_NAMESPACE + +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + +#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE +#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_WAIT_FREE + +#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE +#define Q_ATOMIC_INT_TEST_AND_SET_IS_WAIT_FREE + +#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE +#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE + +#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE +#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_WAIT_FREE + +#define Q_ATOMIC_INT32_IS_SUPPORTED + +#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE +#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_WAIT_FREE + +#define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE +#define Q_ATOMIC_INT32_TEST_AND_SET_IS_WAIT_FREE + +#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE +#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_WAIT_FREE + +#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE +#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_WAIT_FREE + +#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE +#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_WAIT_FREE + +#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE +#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE + +#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE +#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_WAIT_FREE + +#ifdef Q_ATOMIC_INT16_IS_SUPPORTED +# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_WAIT_FREE + +# define Q_ATOMIC_INT16_TEST_AND_SET_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT16_TEST_AND_SET_IS_WAIT_FREE + +# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_WAIT_FREE + +# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_WAIT_FREE + +template<> struct QAtomicOpsSupport<2> { enum { IsSupported = 1 }; }; +#endif + +#ifdef Q_ATOMIC_INT64_IS_SUPPORTED +# define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_WAIT_FREE + +# define Q_ATOMIC_INT64_TEST_AND_SET_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT64_TEST_AND_SET_IS_WAIT_FREE + +# define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_WAIT_FREE + +# define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_ALWAYS_NATIVE +# define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_WAIT_FREE + +template<> struct QAtomicOpsSupport<8> { enum { IsSupported = 1 }; }; +#endif + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +template struct QAtomicWindowsType { typedef typename QIntegerForSize::Signed Type; }; +template <> struct QAtomicWindowsType<4> { typedef long Type; }; + + +template struct QAtomicOpsBySize : QGenericAtomicOps > +{ + static inline Q_DECL_CONSTEXPR bool isReferenceCountingNative() Q_DECL_NOTHROW { return true; } + static inline Q_DECL_CONSTEXPR bool isReferenceCountingWaitFree() Q_DECL_NOTHROW { return true; } + template static bool ref(T &_q_value) Q_DECL_NOTHROW; + template static bool deref(T &_q_value) Q_DECL_NOTHROW; + + static inline Q_DECL_CONSTEXPR bool isTestAndSetNative() Q_DECL_NOTHROW { return true; } + static inline Q_DECL_CONSTEXPR bool isTestAndSetWaitFree() Q_DECL_NOTHROW { return true; } + template static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) Q_DECL_NOTHROW; + template + static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue) Q_DECL_NOTHROW; + + static inline Q_DECL_CONSTEXPR bool isFetchAndStoreNative() Q_DECL_NOTHROW { return true; } + static inline Q_DECL_CONSTEXPR bool isFetchAndStoreWaitFree() Q_DECL_NOTHROW { return true; } + template static T fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW; + + static inline Q_DECL_CONSTEXPR bool isFetchAndAddNative() Q_DECL_NOTHROW { return true; } + static inline Q_DECL_CONSTEXPR bool isFetchAndAddWaitFree() Q_DECL_NOTHROW { return true; } + template static T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW; + +private: + typedef typename QAtomicWindowsType::Type Type; + template static inline Type *atomic(T *t) + { Q_STATIC_ASSERT(sizeof(T) == sizeof(Type)); return reinterpret_cast(t); } + template static inline Type value(T t) + { Q_STATIC_ASSERT(sizeof(T) == sizeof(Type)); return Type(t); } +}; + +template +struct QAtomicOps : QAtomicOpsBySize +{ + typedef T Type; +}; + +template<> template +inline bool QAtomicOpsBySize<4>::ref(T &_q_value) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(Increment)(atomic(&_q_value)) != 0; +} + +template<> template +inline bool QAtomicOpsBySize<4>::deref(T &_q_value) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(Decrement)(atomic(&_q_value)) != 0; +} + +template<> template +inline bool QAtomicOpsBySize<4>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(CompareExchange)(atomic(&_q_value), value(newValue), value(expectedValue)) == value(expectedValue); +} + +template<> template +inline bool QAtomicOpsBySize<4>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue) Q_DECL_NOTHROW +{ + *currentValue = T(QT_INTERLOCKED_FUNCTION(CompareExchange)(atomic(&_q_value), newValue, expectedValue)); + return *currentValue == expectedValue; +} + +template<> template +inline T QAtomicOpsBySize<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(Exchange)(atomic(&_q_value), value(newValue)); +} + +template<> template +inline T QAtomicOpsBySize<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(ExchangeAdd)(atomic(&_q_value), value(valueToAdd * QAtomicAdditiveType::AddScale)); +} + +#ifdef Q_ATOMIC_INT16_IS_SUPPORTED +template<> template +inline bool QAtomicOpsBySize<2>::ref(T &_q_value) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(Increment16)(atomic(&_q_value)) != 0; +} + +template<> template +inline bool QAtomicOpsBySize<2>::deref(T &_q_value) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(Decrement16)(atomic(&_q_value)) != 0; +} + +template<> template +inline bool QAtomicOpsBySize<2>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(CompareExchange16)(atomic(&_q_value), value(newValue), value(expectedValue)) == value(expectedValue); +} + +template<> template +inline bool QAtomicOpsBySize<2>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue) Q_DECL_NOTHROW +{ + *currentValue = T(QT_INTERLOCKED_FUNCTION(CompareExchange16)(atomic(&_q_value), newValue, expectedValue)); + return *currentValue == expectedValue; +} + +template<> template +inline T QAtomicOpsBySize<2>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(Exchange16)(atomic(&_q_value), value(newValue)); +} + +template<> template +inline T QAtomicOpsBySize<2>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(ExchangeAdd16)(atomic(&_q_value), value(valueToAdd * QAtomicAdditiveType::AddScale)); +} +#endif + +#ifdef Q_ATOMIC_INT64_IS_SUPPORTED +template<> template +inline bool QAtomicOpsBySize<8>::ref(T &_q_value) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(Increment64)(atomic(&_q_value)) != 0; +} + +template<> template +inline bool QAtomicOpsBySize<8>::deref(T &_q_value) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(Decrement64)(atomic(&_q_value)) != 0; +} + +template<> template +inline bool QAtomicOpsBySize<8>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(CompareExchange64)(atomic(&_q_value), value(newValue), value(expectedValue)) == value(expectedValue); +} + +template<> template +inline bool QAtomicOpsBySize<8>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue) Q_DECL_NOTHROW +{ + *currentValue = T(QT_INTERLOCKED_FUNCTION(CompareExchange64)(atomic(&_q_value), newValue, expectedValue)); + return *currentValue == expectedValue; +} + +template<> template +inline T QAtomicOpsBySize<8>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(Exchange64)(atomic(&_q_value), value(newValue)); +} + +template<> template +inline T QAtomicOpsBySize<8>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_FUNCTION(ExchangeAdd64)(atomic(&_q_value), value(valueToAdd * QAtomicAdditiveType::AddScale)); +} +#endif + +// Specialization for pointer types, since we have Interlocked*Pointer() variants in some configurations +template +struct QAtomicOps : QGenericAtomicOps > +{ + typedef T *Type; + + static inline Q_DECL_CONSTEXPR bool isTestAndSetNative() Q_DECL_NOTHROW { return true; } + static inline Q_DECL_CONSTEXPR bool isTestAndSetWaitFree() Q_DECL_NOTHROW { return true; } + static bool testAndSetRelaxed(T *&_q_value, T *expectedValue, T *newValue) Q_DECL_NOTHROW; + static bool testAndSetRelaxed(T *&_q_value, T *expectedValue, T *newValue, T **currentValue) Q_DECL_NOTHROW; + + static inline Q_DECL_CONSTEXPR bool isFetchAndStoreNative() Q_DECL_NOTHROW { return true; } + static inline Q_DECL_CONSTEXPR bool isFetchAndStoreWaitFree() Q_DECL_NOTHROW { return true; } + static T *fetchAndStoreRelaxed(T *&_q_value, T *newValue) Q_DECL_NOTHROW; + + static inline Q_DECL_CONSTEXPR bool isFetchAndAddNative() Q_DECL_NOTHROW { return true; } + static inline Q_DECL_CONSTEXPR bool isFetchAndAddWaitFree() Q_DECL_NOTHROW { return true; } + static T *fetchAndAddRelaxed(T *&_q_value, qptrdiff valueToAdd) Q_DECL_NOTHROW; +}; + +template +inline bool QAtomicOps::testAndSetRelaxed(T *&_q_value, T *expectedValue, T *newValue) Q_DECL_NOTHROW +{ + return QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&_q_value, newValue, expectedValue) == expectedValue; +} + +template +inline bool QAtomicOps::testAndSetRelaxed(T *&_q_value, T *expectedValue, T *newValue, T **currentValue) Q_DECL_NOTHROW +{ + *currentValue = reinterpret_cast(QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&_q_value, newValue, expectedValue)); + return *currentValue == expectedValue; +} + +template +inline T *QAtomicOps::fetchAndStoreRelaxed(T *&_q_value, T *newValue) Q_DECL_NOTHROW +{ + return reinterpret_cast(QT_INTERLOCKED_EXCHANGE_POINTER(&_q_value, newValue)); +} + +template +inline T *QAtomicOps::fetchAndAddRelaxed(T *&_q_value, qptrdiff valueToAdd) Q_DECL_NOTHROW +{ + return reinterpret_cast(QT_INTERLOCKED_EXCHANGE_ADD_POINTER(&_q_value, valueToAdd * sizeof(T))); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Cleanup + +#undef QT_INTERLOCKED_CONCAT_I +#undef QT_INTERLOCKED_CONCAT +#undef QT_INTERLOCKED_FUNCTION +#undef QT_INTERLOCKED_PREFIX + +#undef QT_INTERLOCKED_VOLATILE + +#undef QT_INTERLOCKED_INCREMENT +#undef QT_INTERLOCKED_DECREMENT +#undef QT_INTERLOCKED_COMPARE_EXCHANGE +#undef QT_INTERLOCKED_EXCHANGE +#undef QT_INTERLOCKED_EXCHANGE_ADD +#undef QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER +#undef QT_INTERLOCKED_EXCHANGE_POINTER +#undef QT_INTERLOCKED_EXCHANGE_ADD_POINTER + +QT_END_NAMESPACE +#endif // QATOMIC_MSVC_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qbasicatomic.h b/qrenderdoc/3rdparty/qt/include/QtCore/qbasicatomic.h new file mode 100644 index 000000000..24218e833 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qbasicatomic.h @@ -0,0 +1,331 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Thiago Macieira +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QBASICATOMIC_H +#define QBASICATOMIC_H + +#if defined(QT_BOOTSTRAPPED) +# include + +// If C++11 atomics are supported, use them! +// Note that constexpr support is sometimes disabled in QNX builds but its +// library has . +#elif defined(Q_COMPILER_ATOMICS) && (defined(Q_COMPILER_CONSTEXPR) || defined(Q_OS_QNX)) +# include + +// We only support one fallback: MSVC, because even on version 2015, it lacks full constexpr support +#elif defined(Q_CC_MSVC) +# include + +// No fallback +#else +# error "Qt requires C++11 support" +#endif + +QT_WARNING_PUSH +QT_WARNING_DISABLE_MSVC(4522) + +QT_BEGIN_NAMESPACE + +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +#pragma qt_no_master_include +#pragma qt_sync_stop_processing +#endif + +// New atomics + +#if defined(Q_COMPILER_CONSTEXPR) && defined(Q_COMPILER_DEFAULT_MEMBERS) && defined(Q_COMPILER_DELETE_MEMBERS) +# if defined(Q_CC_CLANG) && Q_CC_CLANG < 303 + /* + Do not define QT_BASIC_ATOMIC_HAS_CONSTRUCTORS for Clang before version 3.3. + For details about the bug: see http://llvm.org/bugs/show_bug.cgi?id=12670 + */ +# else +# define QT_BASIC_ATOMIC_HAS_CONSTRUCTORS +# endif +#endif + +template +class QBasicAtomicInteger +{ +public: + typedef QAtomicOps Ops; + // static check that this is a valid integer + Q_STATIC_ASSERT_X(QTypeInfo::isIntegral, "template parameter is not an integral type"); + Q_STATIC_ASSERT_X(QAtomicOpsSupport::IsSupported, "template parameter is an integral of a size not supported on this platform"); + + typename Ops::Type _q_value; + + // Everything below is either implemented in ../arch/qatomic_XXX.h or (as fallback) in qgenericatomic.h + + T load() const Q_DECL_NOTHROW { return Ops::load(_q_value); } + void store(T newValue) Q_DECL_NOTHROW { Ops::store(_q_value, newValue); } + + T loadAcquire() const Q_DECL_NOTHROW { return Ops::loadAcquire(_q_value); } + void storeRelease(T newValue) Q_DECL_NOTHROW { Ops::storeRelease(_q_value, newValue); } + operator T() const Q_DECL_NOTHROW { return loadAcquire(); } + T operator=(T newValue) Q_DECL_NOTHROW { storeRelease(newValue); return newValue; } + + static Q_DECL_CONSTEXPR bool isReferenceCountingNative() Q_DECL_NOTHROW { return Ops::isReferenceCountingNative(); } + static Q_DECL_CONSTEXPR bool isReferenceCountingWaitFree() Q_DECL_NOTHROW { return Ops::isReferenceCountingWaitFree(); } + + bool ref() Q_DECL_NOTHROW { return Ops::ref(_q_value); } + bool deref() Q_DECL_NOTHROW { return Ops::deref(_q_value); } + + static Q_DECL_CONSTEXPR bool isTestAndSetNative() Q_DECL_NOTHROW { return Ops::isTestAndSetNative(); } + static Q_DECL_CONSTEXPR bool isTestAndSetWaitFree() Q_DECL_NOTHROW { return Ops::isTestAndSetWaitFree(); } + + bool testAndSetRelaxed(T expectedValue, T newValue) Q_DECL_NOTHROW + { return Ops::testAndSetRelaxed(_q_value, expectedValue, newValue); } + bool testAndSetAcquire(T expectedValue, T newValue) Q_DECL_NOTHROW + { return Ops::testAndSetAcquire(_q_value, expectedValue, newValue); } + bool testAndSetRelease(T expectedValue, T newValue) Q_DECL_NOTHROW + { return Ops::testAndSetRelease(_q_value, expectedValue, newValue); } + bool testAndSetOrdered(T expectedValue, T newValue) Q_DECL_NOTHROW + { return Ops::testAndSetOrdered(_q_value, expectedValue, newValue); } + + bool testAndSetRelaxed(T expectedValue, T newValue, T ¤tValue) Q_DECL_NOTHROW + { return Ops::testAndSetRelaxed(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetAcquire(T expectedValue, T newValue, T ¤tValue) Q_DECL_NOTHROW + { return Ops::testAndSetAcquire(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetRelease(T expectedValue, T newValue, T ¤tValue) Q_DECL_NOTHROW + { return Ops::testAndSetRelease(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetOrdered(T expectedValue, T newValue, T ¤tValue) Q_DECL_NOTHROW + { return Ops::testAndSetOrdered(_q_value, expectedValue, newValue, ¤tValue); } + + static Q_DECL_CONSTEXPR bool isFetchAndStoreNative() Q_DECL_NOTHROW { return Ops::isFetchAndStoreNative(); } + static Q_DECL_CONSTEXPR bool isFetchAndStoreWaitFree() Q_DECL_NOTHROW { return Ops::isFetchAndStoreWaitFree(); } + + T fetchAndStoreRelaxed(T newValue) Q_DECL_NOTHROW + { return Ops::fetchAndStoreRelaxed(_q_value, newValue); } + T fetchAndStoreAcquire(T newValue) Q_DECL_NOTHROW + { return Ops::fetchAndStoreAcquire(_q_value, newValue); } + T fetchAndStoreRelease(T newValue) Q_DECL_NOTHROW + { return Ops::fetchAndStoreRelease(_q_value, newValue); } + T fetchAndStoreOrdered(T newValue) Q_DECL_NOTHROW + { return Ops::fetchAndStoreOrdered(_q_value, newValue); } + + static Q_DECL_CONSTEXPR bool isFetchAndAddNative() Q_DECL_NOTHROW { return Ops::isFetchAndAddNative(); } + static Q_DECL_CONSTEXPR bool isFetchAndAddWaitFree() Q_DECL_NOTHROW { return Ops::isFetchAndAddWaitFree(); } + + T fetchAndAddRelaxed(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAddRelaxed(_q_value, valueToAdd); } + T fetchAndAddAcquire(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAddAcquire(_q_value, valueToAdd); } + T fetchAndAddRelease(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAddRelease(_q_value, valueToAdd); } + T fetchAndAddOrdered(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAddOrdered(_q_value, valueToAdd); } + + T fetchAndSubRelaxed(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndSubRelaxed(_q_value, valueToAdd); } + T fetchAndSubAcquire(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndSubAcquire(_q_value, valueToAdd); } + T fetchAndSubRelease(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndSubRelease(_q_value, valueToAdd); } + T fetchAndSubOrdered(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndSubOrdered(_q_value, valueToAdd); } + + T fetchAndAndRelaxed(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAndRelaxed(_q_value, valueToAdd); } + T fetchAndAndAcquire(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAndAcquire(_q_value, valueToAdd); } + T fetchAndAndRelease(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAndRelease(_q_value, valueToAdd); } + T fetchAndAndOrdered(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAndOrdered(_q_value, valueToAdd); } + + T fetchAndOrRelaxed(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndOrRelaxed(_q_value, valueToAdd); } + T fetchAndOrAcquire(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndOrAcquire(_q_value, valueToAdd); } + T fetchAndOrRelease(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndOrRelease(_q_value, valueToAdd); } + T fetchAndOrOrdered(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndOrOrdered(_q_value, valueToAdd); } + + T fetchAndXorRelaxed(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndXorRelaxed(_q_value, valueToAdd); } + T fetchAndXorAcquire(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndXorAcquire(_q_value, valueToAdd); } + T fetchAndXorRelease(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndXorRelease(_q_value, valueToAdd); } + T fetchAndXorOrdered(T valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndXorOrdered(_q_value, valueToAdd); } + + T operator++() Q_DECL_NOTHROW + { return fetchAndAddOrdered(1) + 1; } + T operator++(int) Q_DECL_NOTHROW + { return fetchAndAddOrdered(1); } + T operator--() Q_DECL_NOTHROW + { return fetchAndSubOrdered(1) - 1; } + T operator--(int) Q_DECL_NOTHROW + { return fetchAndSubOrdered(1); } + + T operator+=(T v) Q_DECL_NOTHROW + { return fetchAndAddOrdered(v) + v; } + T operator-=(T v) Q_DECL_NOTHROW + { return fetchAndSubOrdered(v) - v; } + T operator&=(T v) Q_DECL_NOTHROW + { return fetchAndAndOrdered(v) & v; } + T operator|=(T v) Q_DECL_NOTHROW + { return fetchAndOrOrdered(v) | v; } + T operator^=(T v) Q_DECL_NOTHROW + { return fetchAndXorOrdered(v) ^ v; } + + +#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS + QBasicAtomicInteger() = default; + constexpr QBasicAtomicInteger(T value) Q_DECL_NOTHROW : _q_value(value) {} + QBasicAtomicInteger(const QBasicAtomicInteger &) = delete; + QBasicAtomicInteger &operator=(const QBasicAtomicInteger &) = delete; + QBasicAtomicInteger &operator=(const QBasicAtomicInteger &) volatile = delete; +#endif +}; +typedef QBasicAtomicInteger QBasicAtomicInt; + +template +class QBasicAtomicPointer +{ +public: + typedef X *Type; + typedef QAtomicOps Ops; + typedef typename Ops::Type AtomicType; + + AtomicType _q_value; + + Type load() const Q_DECL_NOTHROW { return Ops::load(_q_value); } + void store(Type newValue) Q_DECL_NOTHROW { Ops::store(_q_value, newValue); } + operator Type() const Q_DECL_NOTHROW { return loadAcquire(); } + Type operator=(Type newValue) Q_DECL_NOTHROW { storeRelease(newValue); return newValue; } + + // Atomic API, implemented in qatomic_XXX.h + Type loadAcquire() const Q_DECL_NOTHROW { return Ops::loadAcquire(_q_value); } + void storeRelease(Type newValue) Q_DECL_NOTHROW { Ops::storeRelease(_q_value, newValue); } + + static Q_DECL_CONSTEXPR bool isTestAndSetNative() Q_DECL_NOTHROW { return Ops::isTestAndSetNative(); } + static Q_DECL_CONSTEXPR bool isTestAndSetWaitFree() Q_DECL_NOTHROW { return Ops::isTestAndSetWaitFree(); } + + bool testAndSetRelaxed(Type expectedValue, Type newValue) Q_DECL_NOTHROW + { return Ops::testAndSetRelaxed(_q_value, expectedValue, newValue); } + bool testAndSetAcquire(Type expectedValue, Type newValue) Q_DECL_NOTHROW + { return Ops::testAndSetAcquire(_q_value, expectedValue, newValue); } + bool testAndSetRelease(Type expectedValue, Type newValue) Q_DECL_NOTHROW + { return Ops::testAndSetRelease(_q_value, expectedValue, newValue); } + bool testAndSetOrdered(Type expectedValue, Type newValue) Q_DECL_NOTHROW + { return Ops::testAndSetOrdered(_q_value, expectedValue, newValue); } + + bool testAndSetRelaxed(Type expectedValue, Type newValue, Type ¤tValue) Q_DECL_NOTHROW + { return Ops::testAndSetRelaxed(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetAcquire(Type expectedValue, Type newValue, Type ¤tValue) Q_DECL_NOTHROW + { return Ops::testAndSetAcquire(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetRelease(Type expectedValue, Type newValue, Type ¤tValue) Q_DECL_NOTHROW + { return Ops::testAndSetRelease(_q_value, expectedValue, newValue, ¤tValue); } + bool testAndSetOrdered(Type expectedValue, Type newValue, Type ¤tValue) Q_DECL_NOTHROW + { return Ops::testAndSetOrdered(_q_value, expectedValue, newValue, ¤tValue); } + + static Q_DECL_CONSTEXPR bool isFetchAndStoreNative() Q_DECL_NOTHROW { return Ops::isFetchAndStoreNative(); } + static Q_DECL_CONSTEXPR bool isFetchAndStoreWaitFree() Q_DECL_NOTHROW { return Ops::isFetchAndStoreWaitFree(); } + + Type fetchAndStoreRelaxed(Type newValue) Q_DECL_NOTHROW + { return Ops::fetchAndStoreRelaxed(_q_value, newValue); } + Type fetchAndStoreAcquire(Type newValue) Q_DECL_NOTHROW + { return Ops::fetchAndStoreAcquire(_q_value, newValue); } + Type fetchAndStoreRelease(Type newValue) Q_DECL_NOTHROW + { return Ops::fetchAndStoreRelease(_q_value, newValue); } + Type fetchAndStoreOrdered(Type newValue) Q_DECL_NOTHROW + { return Ops::fetchAndStoreOrdered(_q_value, newValue); } + + static Q_DECL_CONSTEXPR bool isFetchAndAddNative() Q_DECL_NOTHROW { return Ops::isFetchAndAddNative(); } + static Q_DECL_CONSTEXPR bool isFetchAndAddWaitFree() Q_DECL_NOTHROW { return Ops::isFetchAndAddWaitFree(); } + + Type fetchAndAddRelaxed(qptrdiff valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAddRelaxed(_q_value, valueToAdd); } + Type fetchAndAddAcquire(qptrdiff valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAddAcquire(_q_value, valueToAdd); } + Type fetchAndAddRelease(qptrdiff valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAddRelease(_q_value, valueToAdd); } + Type fetchAndAddOrdered(qptrdiff valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndAddOrdered(_q_value, valueToAdd); } + + Type fetchAndSubRelaxed(qptrdiff valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndSubRelaxed(_q_value, valueToAdd); } + Type fetchAndSubAcquire(qptrdiff valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndSubAcquire(_q_value, valueToAdd); } + Type fetchAndSubRelease(qptrdiff valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndSubRelease(_q_value, valueToAdd); } + Type fetchAndSubOrdered(qptrdiff valueToAdd) Q_DECL_NOTHROW + { return Ops::fetchAndSubOrdered(_q_value, valueToAdd); } + + Type operator++() Q_DECL_NOTHROW + { return fetchAndAddOrdered(1) + 1; } + Type operator++(int) Q_DECL_NOTHROW + { return fetchAndAddOrdered(1); } + Type operator--() Q_DECL_NOTHROW + { return fetchAndSubOrdered(1) - 1; } + Type operator--(int) Q_DECL_NOTHROW + { return fetchAndSubOrdered(1); } + Type operator+=(qptrdiff valueToAdd) Q_DECL_NOTHROW + { return fetchAndAddOrdered(valueToAdd) + valueToAdd; } + Type operator-=(qptrdiff valueToSub) Q_DECL_NOTHROW + { return fetchAndSubOrdered(valueToSub) - valueToSub; } + +#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS + QBasicAtomicPointer() = default; + constexpr QBasicAtomicPointer(Type value) Q_DECL_NOTHROW : _q_value(value) {} + QBasicAtomicPointer(const QBasicAtomicPointer &) = delete; + QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) = delete; + QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) volatile = delete; +#endif +}; + +#ifndef Q_BASIC_ATOMIC_INITIALIZER +# define Q_BASIC_ATOMIC_INITIALIZER(a) { (a) } +#endif + +QT_END_NAMESPACE + +QT_WARNING_POP + +#endif // QBASICATOMIC_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qbasictimer.h b/qrenderdoc/3rdparty/qt/include/QtCore/qbasictimer.h new file mode 100644 index 000000000..bfd6ffd12 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qbasictimer.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBASICTIMER_H +#define QBASICTIMER_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +class QObject; + +class Q_CORE_EXPORT QBasicTimer +{ + int id; +public: + inline QBasicTimer() : id(0) {} + inline ~QBasicTimer() { if (id) stop(); } + + inline bool isActive() const { return id != 0; } + inline int timerId() const { return id; } + + void start(int msec, QObject *obj); + void start(int msec, Qt::TimerType timerType, QObject *obj); + void stop(); +}; +Q_DECLARE_TYPEINFO(QBasicTimer, Q_MOVABLE_TYPE); + +QT_END_NAMESPACE + +#endif // QBASICTIMER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qbitarray.h b/qrenderdoc/3rdparty/qt/include/QtCore/qbitarray.h new file mode 100644 index 000000000..8fa532312 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qbitarray.h @@ -0,0 +1,176 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBITARRAY_H +#define QBITARRAY_H + +#include + +QT_BEGIN_NAMESPACE + + +class QBitRef; +class Q_CORE_EXPORT QBitArray +{ + friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QBitArray &); + friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QBitArray &); + friend Q_CORE_EXPORT uint qHash(const QBitArray &key, uint seed) Q_DECL_NOTHROW; + QByteArray d; + +public: + inline QBitArray() Q_DECL_NOTHROW {} + explicit QBitArray(int size, bool val = false); + QBitArray(const QBitArray &other) : d(other.d) {} + inline QBitArray &operator=(const QBitArray &other) { d = other.d; return *this; } +#ifdef Q_COMPILER_RVALUE_REFS + inline QBitArray(QBitArray &&other) Q_DECL_NOTHROW : d(std::move(other.d)) {} + inline QBitArray &operator=(QBitArray &&other) Q_DECL_NOTHROW + { qSwap(d, other.d); return *this; } +#endif + + inline void swap(QBitArray &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + inline int size() const { return (d.size() << 3) - *d.constData(); } + inline int count() const { return (d.size() << 3) - *d.constData(); } + int count(bool on) const; + + inline bool isEmpty() const { return d.isEmpty(); } + inline bool isNull() const { return d.isNull(); } + + void resize(int size); + + inline void detach() { d.detach(); } + inline bool isDetached() const { return d.isDetached(); } + inline void clear() { d.clear(); } + + bool testBit(int i) const; + void setBit(int i); + void setBit(int i, bool val); + void clearBit(int i); + bool toggleBit(int i); + + bool at(int i) const; + QBitRef operator[](int i); + bool operator[](int i) const; + QBitRef operator[](uint i); + bool operator[](uint i) const; + + QBitArray& operator&=(const QBitArray &); + QBitArray& operator|=(const QBitArray &); + QBitArray& operator^=(const QBitArray &); + QBitArray operator~() const; + + inline bool operator==(const QBitArray& other) const { return d == other.d; } + inline bool operator!=(const QBitArray& other) const { return d != other.d; } + + inline bool fill(bool val, int size = -1); + void fill(bool val, int first, int last); + + inline void truncate(int pos) { if (pos < size()) resize(pos); } + +public: + typedef QByteArray::DataPtr DataPtr; + inline DataPtr &data_ptr() { return d.data_ptr(); } +}; + +inline bool QBitArray::fill(bool aval, int asize) +{ *this = QBitArray((asize < 0 ? this->size() : asize), aval); return true; } + +Q_CORE_EXPORT QBitArray operator&(const QBitArray &, const QBitArray &); +Q_CORE_EXPORT QBitArray operator|(const QBitArray &, const QBitArray &); +Q_CORE_EXPORT QBitArray operator^(const QBitArray &, const QBitArray &); + +inline bool QBitArray::testBit(int i) const +{ Q_ASSERT(uint(i) < uint(size())); + return (*(reinterpret_cast(d.constData())+1+(i>>3)) & (1 << (i & 7))) != 0; } + +inline void QBitArray::setBit(int i) +{ Q_ASSERT(uint(i) < uint(size())); + *(reinterpret_cast(d.data())+1+(i>>3)) |= uchar(1 << (i & 7)); } + +inline void QBitArray::clearBit(int i) +{ Q_ASSERT(uint(i) < uint(size())); + *(reinterpret_cast(d.data())+1+(i>>3)) &= ~uchar(1 << (i & 7)); } + +inline void QBitArray::setBit(int i, bool val) +{ if (val) setBit(i); else clearBit(i); } + +inline bool QBitArray::toggleBit(int i) +{ Q_ASSERT(uint(i) < uint(size())); + uchar b = uchar(1<<(i&7)); uchar* p = reinterpret_cast(d.data())+1+(i>>3); + uchar c = uchar(*p&b); *p^=b; return c!=0; } + +inline bool QBitArray::operator[](int i) const { return testBit(i); } +inline bool QBitArray::operator[](uint i) const { return testBit(i); } +inline bool QBitArray::at(int i) const { return testBit(i); } + +class Q_CORE_EXPORT QBitRef +{ +private: + QBitArray& a; + int i; + inline QBitRef(QBitArray& array, int idx) : a(array), i(idx) {} + friend class QBitArray; +public: + inline operator bool() const { return a.testBit(i); } + inline bool operator!() const { return !a.testBit(i); } + QBitRef& operator=(const QBitRef& val) { a.setBit(i, val); return *this; } + QBitRef& operator=(bool val) { a.setBit(i, val); return *this; } +}; + +inline QBitRef QBitArray::operator[](int i) +{ Q_ASSERT(i >= 0); return QBitRef(*this, i); } +inline QBitRef QBitArray::operator[](uint i) +{ return QBitRef(*this, i); } + + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QBitArray &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QBitArray &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QBitArray &); +#endif + +Q_DECLARE_SHARED(QBitArray) + +QT_END_NAMESPACE + +#endif // QBITARRAY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qbuffer.h b/qrenderdoc/3rdparty/qt/include/QtCore/qbuffer.h new file mode 100644 index 000000000..fd05dff31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qbuffer.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBUFFER_H +#define QBUFFER_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +class QObject; +class QBufferPrivate; + +class Q_CORE_EXPORT QBuffer : public QIODevice +{ +#ifndef QT_NO_QOBJECT + Q_OBJECT +#endif + +public: +#ifndef QT_NO_QOBJECT + explicit QBuffer(QObject *parent = Q_NULLPTR); + QBuffer(QByteArray *buf, QObject *parent = Q_NULLPTR); +#else + QBuffer(); + explicit QBuffer(QByteArray *buf); +#endif + ~QBuffer(); + + QByteArray &buffer(); + const QByteArray &buffer() const; + void setBuffer(QByteArray *a); + + void setData(const QByteArray &data); + inline void setData(const char *data, int len); + const QByteArray &data() const; + + bool open(OpenMode openMode) Q_DECL_OVERRIDE; + + void close() Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; + qint64 pos() const Q_DECL_OVERRIDE; + bool seek(qint64 off) Q_DECL_OVERRIDE; + bool atEnd() const Q_DECL_OVERRIDE; + bool canReadLine() const Q_DECL_OVERRIDE; + +protected: +#ifndef QT_NO_QOBJECT + void connectNotify(const QMetaMethod &) Q_DECL_OVERRIDE; + void disconnectNotify(const QMetaMethod &) Q_DECL_OVERRIDE; +#endif + qint64 readData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 writeData(const char *data, qint64 len) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QBuffer) + Q_DISABLE_COPY(QBuffer) + + Q_PRIVATE_SLOT(d_func(), void _q_emitSignals()) +}; + +inline void QBuffer::setData(const char *adata, int alen) +{ setData(QByteArray(adata, alen)); } + +QT_END_NAMESPACE + +#endif // QBUFFER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qbytearray.h b/qrenderdoc/3rdparty/qt/include/QtCore/qbytearray.h new file mode 100644 index 000000000..432ef922f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qbytearray.h @@ -0,0 +1,690 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBYTEARRAY_H +#define QBYTEARRAY_H + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#ifdef truncate +#error qbytearray.h must be included before any header file that defines truncate +#endif + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) +Q_FORWARD_DECLARE_CF_TYPE(CFData); +Q_FORWARD_DECLARE_OBJC_CLASS(NSData); +#endif + +QT_BEGIN_NAMESPACE + + +/***************************************************************************** + Safe and portable C string functions; extensions to standard string.h + *****************************************************************************/ + +Q_CORE_EXPORT char *qstrdup(const char *); + +inline uint qstrlen(const char *str) +{ return str ? uint(strlen(str)) : 0; } + +inline uint qstrnlen(const char *str, uint maxlen) +{ + uint length = 0; + if (str) { + while (length < maxlen && *str++) + length++; + } + return length; +} + +Q_CORE_EXPORT char *qstrcpy(char *dst, const char *src); +Q_CORE_EXPORT char *qstrncpy(char *dst, const char *src, uint len); + +Q_CORE_EXPORT int qstrcmp(const char *str1, const char *str2); +Q_CORE_EXPORT int qstrcmp(const QByteArray &str1, const QByteArray &str2); +Q_CORE_EXPORT int qstrcmp(const QByteArray &str1, const char *str2); +static inline int qstrcmp(const char *str1, const QByteArray &str2) +{ return -qstrcmp(str2, str1); } + +inline int qstrncmp(const char *str1, const char *str2, uint len) +{ + return (str1 && str2) ? strncmp(str1, str2, len) + : (str1 ? 1 : (str2 ? -1 : 0)); +} +Q_CORE_EXPORT int qstricmp(const char *, const char *); +Q_CORE_EXPORT int qstrnicmp(const char *, const char *, uint len); + +// implemented in qvsnprintf.cpp +Q_CORE_EXPORT int qvsnprintf(char *str, size_t n, const char *fmt, va_list ap); +Q_CORE_EXPORT int qsnprintf(char *str, size_t n, const char *fmt, ...); + +// qChecksum: Internet checksum +Q_CORE_EXPORT quint16 qChecksum(const char *s, uint len); // ### Qt 6: Remove +Q_CORE_EXPORT quint16 qChecksum(const char *s, uint len, Qt::ChecksumType standard); // ### Qt 6: Use Qt::ChecksumType standard = Qt::ChecksumIso3309 + +class QByteRef; +class QString; +class QDataStream; +template class QList; + +typedef QArrayData QByteArrayData; + +template struct QStaticByteArrayData +{ + QByteArrayData ba; + char data[N + 1]; + + QByteArrayData *data_ptr() const + { + Q_ASSERT(ba.ref.isStatic()); + return const_cast(&ba); + } +}; + +struct QByteArrayDataPtr +{ + QByteArrayData *ptr; +}; + +#define Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(size, offset) \ + Q_STATIC_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(size, offset) + /**/ + +#define Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER(size) \ + Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(size, sizeof(QByteArrayData)) \ + /**/ + +# define QByteArrayLiteral(str) \ + ([]() -> QByteArray { \ + enum { Size = sizeof(str) - 1 }; \ + static const QStaticByteArrayData qbytearray_literal = { \ + Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER(Size), \ + str }; \ + QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; \ + const QByteArray ba(holder); \ + return ba; \ + }()) \ + /**/ + +class Q_CORE_EXPORT QByteArray +{ +private: + typedef QTypedArrayData Data; + +public: + enum Base64Option { + Base64Encoding = 0, + Base64UrlEncoding = 1, + + KeepTrailingEquals = 0, + OmitTrailingEquals = 2 + }; + Q_DECLARE_FLAGS(Base64Options, Base64Option) + + inline QByteArray() Q_DECL_NOTHROW; + QByteArray(const char *, int size = -1); + QByteArray(int size, char c); + QByteArray(int size, Qt::Initialization); + inline QByteArray(const QByteArray &) Q_DECL_NOTHROW; + inline ~QByteArray(); + + QByteArray &operator=(const QByteArray &) Q_DECL_NOTHROW; + QByteArray &operator=(const char *str); +#ifdef Q_COMPILER_RVALUE_REFS + inline QByteArray(QByteArray && other) Q_DECL_NOTHROW : d(other.d) { other.d = Data::sharedNull(); } + inline QByteArray &operator=(QByteArray &&other) Q_DECL_NOTHROW + { qSwap(d, other.d); return *this; } +#endif + + inline void swap(QByteArray &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + + inline int size() const; + bool isEmpty() const; + void resize(int size); + + QByteArray &fill(char c, int size = -1); + + int capacity() const; + void reserve(int size); + void squeeze(); + +#ifndef QT_NO_CAST_FROM_BYTEARRAY + operator const char *() const; + operator const void *() const; +#endif + char *data(); + const char *data() const; + inline const char *constData() const; + inline void detach(); + bool isDetached() const; + inline bool isSharedWith(const QByteArray &other) const { return d == other.d; } + void clear(); + + char at(int i) const; + char operator[](int i) const; + char operator[](uint i) const; + QByteRef operator[](int i); + QByteRef operator[](uint i); + + int indexOf(char c, int from = 0) const; + int indexOf(const char *c, int from = 0) const; + int indexOf(const QByteArray &a, int from = 0) const; + int lastIndexOf(char c, int from = -1) const; + int lastIndexOf(const char *c, int from = -1) const; + int lastIndexOf(const QByteArray &a, int from = -1) const; + + bool contains(char c) const; + bool contains(const char *a) const; + bool contains(const QByteArray &a) const; + int count(char c) const; + int count(const char *a) const; + int count(const QByteArray &a) const; + + Q_REQUIRED_RESULT QByteArray left(int len) const; + Q_REQUIRED_RESULT QByteArray right(int len) const; + Q_REQUIRED_RESULT QByteArray mid(int index, int len = -1) const; + + bool startsWith(const QByteArray &a) const; + bool startsWith(char c) const; + bool startsWith(const char *c) const; + + bool endsWith(const QByteArray &a) const; + bool endsWith(char c) const; + bool endsWith(const char *c) const; + + void truncate(int pos); + void chop(int n); + +#if defined(Q_COMPILER_REF_QUALIFIERS) && !defined(QT_COMPILING_QSTRING_COMPAT_CPP) && !defined(Q_CLANG_QDOC) +# if defined(Q_CC_GNU) && !defined(Q_CC_CLANG) && !defined(Q_CC_INTEL) && !QT_HAS_CPP_ATTRIBUTE(nodiscard) + // required due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61941 +# pragma push_macro("Q_REQUIRED_RESULT") +# undef Q_REQUIRED_RESULT +# define Q_REQUIRED_RESULT +# define Q_REQUIRED_RESULT_pushed +# endif + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QByteArray toLower() const & + { return toLower_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QByteArray toLower() && + { return toLower_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QByteArray toUpper() const & + { return toUpper_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QByteArray toUpper() && + { return toUpper_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QByteArray trimmed() const & + { return trimmed_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QByteArray trimmed() && + { return trimmed_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QByteArray simplified() const & + { return simplified_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QByteArray simplified() && + { return simplified_helper(*this); } +# ifdef Q_REQUIRED_RESULT_pushed +# pragma pop_macro("Q_REQUIRED_RESULT") +# endif +#else + Q_REQUIRED_RESULT QByteArray toLower() const; + Q_REQUIRED_RESULT QByteArray toUpper() const; + Q_REQUIRED_RESULT QByteArray trimmed() const; + Q_REQUIRED_RESULT QByteArray simplified() const; +#endif + + Q_REQUIRED_RESULT QByteArray leftJustified(int width, char fill = ' ', bool truncate = false) const; + Q_REQUIRED_RESULT QByteArray rightJustified(int width, char fill = ' ', bool truncate = false) const; + + QByteArray &prepend(char c); + QByteArray &prepend(int count, char c); + QByteArray &prepend(const char *s); + QByteArray &prepend(const char *s, int len); + QByteArray &prepend(const QByteArray &a); + QByteArray &append(char c); + QByteArray &append(int count, char c); + QByteArray &append(const char *s); + QByteArray &append(const char *s, int len); + QByteArray &append(const QByteArray &a); + QByteArray &insert(int i, char c); + QByteArray &insert(int i, int count, char c); + QByteArray &insert(int i, const char *s); + QByteArray &insert(int i, const char *s, int len); + QByteArray &insert(int i, const QByteArray &a); + QByteArray &remove(int index, int len); + QByteArray &replace(int index, int len, const char *s); + QByteArray &replace(int index, int len, const char *s, int alen); + QByteArray &replace(int index, int len, const QByteArray &s); + QByteArray &replace(char before, const char *after); + QByteArray &replace(char before, const QByteArray &after); + QByteArray &replace(const char *before, const char *after); + QByteArray &replace(const char *before, int bsize, const char *after, int asize); + QByteArray &replace(const QByteArray &before, const QByteArray &after); + QByteArray &replace(const QByteArray &before, const char *after); + QByteArray &replace(const char *before, const QByteArray &after); + QByteArray &replace(char before, char after); + QByteArray &operator+=(char c); + QByteArray &operator+=(const char *s); + QByteArray &operator+=(const QByteArray &a); + + QList split(char sep) const; + + Q_REQUIRED_RESULT QByteArray repeated(int times) const; + +#ifndef QT_NO_CAST_TO_ASCII + QT_ASCII_CAST_WARN QByteArray &append(const QString &s); + QT_ASCII_CAST_WARN QByteArray &insert(int i, const QString &s); + QT_ASCII_CAST_WARN QByteArray &replace(const QString &before, const char *after); + QT_ASCII_CAST_WARN QByteArray &replace(char c, const QString &after); + QT_ASCII_CAST_WARN QByteArray &replace(const QString &before, const QByteArray &after); + + QT_ASCII_CAST_WARN QByteArray &operator+=(const QString &s); + QT_ASCII_CAST_WARN int indexOf(const QString &s, int from = 0) const; + QT_ASCII_CAST_WARN int lastIndexOf(const QString &s, int from = -1) const; +#endif +#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) + inline QT_ASCII_CAST_WARN bool operator==(const QString &s2) const; + inline QT_ASCII_CAST_WARN bool operator!=(const QString &s2) const; + inline QT_ASCII_CAST_WARN bool operator<(const QString &s2) const; + inline QT_ASCII_CAST_WARN bool operator>(const QString &s2) const; + inline QT_ASCII_CAST_WARN bool operator<=(const QString &s2) const; + inline QT_ASCII_CAST_WARN bool operator>=(const QString &s2) const; +#endif + + short toShort(bool *ok = Q_NULLPTR, int base = 10) const; + ushort toUShort(bool *ok = Q_NULLPTR, int base = 10) const; + int toInt(bool *ok = Q_NULLPTR, int base = 10) const; + uint toUInt(bool *ok = Q_NULLPTR, int base = 10) const; + long toLong(bool *ok = Q_NULLPTR, int base = 10) const; + ulong toULong(bool *ok = Q_NULLPTR, int base = 10) const; + qlonglong toLongLong(bool *ok = Q_NULLPTR, int base = 10) const; + qulonglong toULongLong(bool *ok = Q_NULLPTR, int base = 10) const; + float toFloat(bool *ok = Q_NULLPTR) const; + double toDouble(bool *ok = Q_NULLPTR) const; + QByteArray toBase64(Base64Options options) const; + QByteArray toBase64() const; // ### Qt6 merge with previous + QByteArray toHex() const; + QByteArray toHex(char separator) const; // ### Qt6 merge with previous + QByteArray toPercentEncoding(const QByteArray &exclude = QByteArray(), + const QByteArray &include = QByteArray(), + char percent = '%') const; + + QByteArray &setNum(short, int base = 10); + QByteArray &setNum(ushort, int base = 10); + QByteArray &setNum(int, int base = 10); + QByteArray &setNum(uint, int base = 10); + QByteArray &setNum(qlonglong, int base = 10); + QByteArray &setNum(qulonglong, int base = 10); + QByteArray &setNum(float, char f = 'g', int prec = 6); + QByteArray &setNum(double, char f = 'g', int prec = 6); + QByteArray &setRawData(const char *a, uint n); // ### Qt 6: use an int + + Q_REQUIRED_RESULT static QByteArray number(int, int base = 10); + Q_REQUIRED_RESULT static QByteArray number(uint, int base = 10); + Q_REQUIRED_RESULT static QByteArray number(qlonglong, int base = 10); + Q_REQUIRED_RESULT static QByteArray number(qulonglong, int base = 10); + Q_REQUIRED_RESULT static QByteArray number(double, char f = 'g', int prec = 6); + Q_REQUIRED_RESULT static QByteArray fromRawData(const char *, int size); + Q_REQUIRED_RESULT static QByteArray fromBase64(const QByteArray &base64, Base64Options options); + Q_REQUIRED_RESULT static QByteArray fromBase64(const QByteArray &base64); // ### Qt6 merge with previous + Q_REQUIRED_RESULT static QByteArray fromHex(const QByteArray &hexEncoded); + Q_REQUIRED_RESULT static QByteArray fromPercentEncoding(const QByteArray &pctEncoded, char percent = '%'); + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + static QByteArray fromCFData(CFDataRef data); + static QByteArray fromRawCFData(CFDataRef data); + CFDataRef toCFData() const Q_DECL_CF_RETURNS_RETAINED; + CFDataRef toRawCFData() const Q_DECL_CF_RETURNS_RETAINED; + static QByteArray fromNSData(const NSData *data); + static QByteArray fromRawNSData(const NSData *data); + NSData *toNSData() const Q_DECL_NS_RETURNS_AUTORELEASED; + NSData *toRawNSData() const Q_DECL_NS_RETURNS_AUTORELEASED; +#endif + + typedef char *iterator; + typedef const char *const_iterator; + typedef iterator Iterator; + typedef const_iterator ConstIterator; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + inline iterator begin(); + inline const_iterator begin() const; + inline const_iterator cbegin() const; + inline const_iterator constBegin() const; + inline iterator end(); + inline const_iterator end() const; + inline const_iterator cend() const; + inline const_iterator constEnd() const; + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const { return const_reverse_iterator(begin()); } + + // stl compatibility + typedef int size_type; + typedef qptrdiff difference_type; + typedef const char & const_reference; + typedef char & reference; + typedef char *pointer; + typedef const char *const_pointer; + typedef char value_type; + void push_back(char c); + void push_back(const char *c); + void push_back(const QByteArray &a); + void push_front(char c); + void push_front(const char *c); + void push_front(const QByteArray &a); + + static inline QByteArray fromStdString(const std::string &s); + inline std::string toStdString() const; + + inline int count() const { return d->size; } + int length() const { return d->size; } + bool isNull() const; + + inline QByteArray(QByteArrayDataPtr dd) + : d(static_cast(dd.ptr)) + { + } + +private: + operator QNoImplicitBoolCast() const; + Data *d; + void reallocData(uint alloc, Data::AllocationOptions options); + void expand(int i); + QByteArray nulTerminated() const; + + static QByteArray toLower_helper(const QByteArray &a); + static QByteArray toLower_helper(QByteArray &a); + static QByteArray toUpper_helper(const QByteArray &a); + static QByteArray toUpper_helper(QByteArray &a); + static QByteArray trimmed_helper(const QByteArray &a); + static QByteArray trimmed_helper(QByteArray &a); + static QByteArray simplified_helper(const QByteArray &a); + static QByteArray simplified_helper(QByteArray &a); + + friend class QByteRef; + friend class QString; + friend Q_CORE_EXPORT QByteArray qUncompress(const uchar *data, int nbytes); +public: + typedef Data * DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QByteArray::Base64Options) + +inline QByteArray::QByteArray() Q_DECL_NOTHROW : d(Data::sharedNull()) { } +inline QByteArray::~QByteArray() { if (!d->ref.deref()) Data::deallocate(d); } +inline int QByteArray::size() const +{ return d->size; } + +inline char QByteArray::at(int i) const +{ Q_ASSERT(uint(i) < uint(size())); return d->data()[i]; } +inline char QByteArray::operator[](int i) const +{ Q_ASSERT(uint(i) < uint(size())); return d->data()[i]; } +inline char QByteArray::operator[](uint i) const +{ Q_ASSERT(i < uint(size())); return d->data()[i]; } + +inline bool QByteArray::isEmpty() const +{ return d->size == 0; } +#ifndef QT_NO_CAST_FROM_BYTEARRAY +inline QByteArray::operator const char *() const +{ return d->data(); } +inline QByteArray::operator const void *() const +{ return d->data(); } +#endif +inline char *QByteArray::data() +{ detach(); return d->data(); } +inline const char *QByteArray::data() const +{ return d->data(); } +inline const char *QByteArray::constData() const +{ return d->data(); } +inline void QByteArray::detach() +{ if (d->ref.isShared() || (d->offset != sizeof(QByteArrayData))) reallocData(uint(d->size) + 1u, d->detachFlags()); } +inline bool QByteArray::isDetached() const +{ return !d->ref.isShared(); } +inline QByteArray::QByteArray(const QByteArray &a) Q_DECL_NOTHROW : d(a.d) +{ d->ref.ref(); } + +inline int QByteArray::capacity() const +{ return d->alloc ? d->alloc - 1 : 0; } + +inline void QByteArray::reserve(int asize) +{ + if (d->ref.isShared() || uint(asize) + 1u > d->alloc) { + reallocData(qMax(uint(size()), uint(asize)) + 1u, d->detachFlags() | Data::CapacityReserved); + } else { + // cannot set unconditionally, since d could be the shared_null or + // otherwise static + d->capacityReserved = true; + } +} + +inline void QByteArray::squeeze() +{ + if (d->ref.isShared() || uint(d->size) + 1u < d->alloc) { + reallocData(uint(d->size) + 1u, d->detachFlags() & ~Data::CapacityReserved); + } else { + // cannot set unconditionally, since d could be shared_null or + // otherwise static. + d->capacityReserved = false; + } +} + +class Q_CORE_EXPORT QByteRef { + QByteArray &a; + int i; + inline QByteRef(QByteArray &array, int idx) + : a(array),i(idx) {} + friend class QByteArray; +public: + inline operator char() const + { return i < a.d->size ? a.d->data()[i] : char(0); } + inline QByteRef &operator=(char c) + { if (i >= a.d->size) a.expand(i); else a.detach(); + a.d->data()[i] = c; return *this; } + inline QByteRef &operator=(const QByteRef &c) + { if (i >= a.d->size) a.expand(i); else a.detach(); + a.d->data()[i] = c.a.d->data()[c.i]; return *this; } + inline bool operator==(char c) const + { return a.d->data()[i] == c; } + inline bool operator!=(char c) const + { return a.d->data()[i] != c; } + inline bool operator>(char c) const + { return a.d->data()[i] > c; } + inline bool operator>=(char c) const + { return a.d->data()[i] >= c; } + inline bool operator<(char c) const + { return a.d->data()[i] < c; } + inline bool operator<=(char c) const + { return a.d->data()[i] <= c; } +}; + +inline QByteRef QByteArray::operator[](int i) +{ Q_ASSERT(i >= 0); return QByteRef(*this, i); } +inline QByteRef QByteArray::operator[](uint i) +{ return QByteRef(*this, i); } +inline QByteArray::iterator QByteArray::begin() +{ detach(); return d->data(); } +inline QByteArray::const_iterator QByteArray::begin() const +{ return d->data(); } +inline QByteArray::const_iterator QByteArray::cbegin() const +{ return d->data(); } +inline QByteArray::const_iterator QByteArray::constBegin() const +{ return d->data(); } +inline QByteArray::iterator QByteArray::end() +{ detach(); return d->data() + d->size; } +inline QByteArray::const_iterator QByteArray::end() const +{ return d->data() + d->size; } +inline QByteArray::const_iterator QByteArray::cend() const +{ return d->data() + d->size; } +inline QByteArray::const_iterator QByteArray::constEnd() const +{ return d->data() + d->size; } +inline QByteArray &QByteArray::append(int n, char ch) +{ return insert(d->size, n, ch); } +inline QByteArray &QByteArray::prepend(int n, char ch) +{ return insert(0, n, ch); } +inline QByteArray &QByteArray::operator+=(char c) +{ return append(c); } +inline QByteArray &QByteArray::operator+=(const char *s) +{ return append(s); } +inline QByteArray &QByteArray::operator+=(const QByteArray &a) +{ return append(a); } +inline void QByteArray::push_back(char c) +{ append(c); } +inline void QByteArray::push_back(const char *c) +{ append(c); } +inline void QByteArray::push_back(const QByteArray &a) +{ append(a); } +inline void QByteArray::push_front(char c) +{ prepend(c); } +inline void QByteArray::push_front(const char *c) +{ prepend(c); } +inline void QByteArray::push_front(const QByteArray &a) +{ prepend(a); } +inline bool QByteArray::contains(const QByteArray &a) const +{ return indexOf(a) != -1; } +inline bool QByteArray::contains(char c) const +{ return indexOf(c) != -1; } +inline bool operator==(const QByteArray &a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return (a1.size() == a2.size()) && (memcmp(a1.constData(), a2.constData(), a1.size())==0); } +inline bool operator==(const QByteArray &a1, const char *a2) Q_DECL_NOTHROW +{ return a2 ? qstrcmp(a1,a2) == 0 : a1.isEmpty(); } +inline bool operator==(const char *a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return a1 ? qstrcmp(a1,a2) == 0 : a2.isEmpty(); } +inline bool operator!=(const QByteArray &a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return !(a1==a2); } +inline bool operator!=(const QByteArray &a1, const char *a2) Q_DECL_NOTHROW +{ return a2 ? qstrcmp(a1,a2) != 0 : !a1.isEmpty(); } +inline bool operator!=(const char *a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return a1 ? qstrcmp(a1,a2) != 0 : !a2.isEmpty(); } +inline bool operator<(const QByteArray &a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) < 0; } + inline bool operator<(const QByteArray &a1, const char *a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) < 0; } +inline bool operator<(const char *a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) < 0; } +inline bool operator<=(const QByteArray &a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) <= 0; } +inline bool operator<=(const QByteArray &a1, const char *a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) <= 0; } +inline bool operator<=(const char *a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) <= 0; } +inline bool operator>(const QByteArray &a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) > 0; } +inline bool operator>(const QByteArray &a1, const char *a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) > 0; } +inline bool operator>(const char *a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) > 0; } +inline bool operator>=(const QByteArray &a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) >= 0; } +inline bool operator>=(const QByteArray &a1, const char *a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) >= 0; } +inline bool operator>=(const char *a1, const QByteArray &a2) Q_DECL_NOTHROW +{ return qstrcmp(a1, a2) >= 0; } +#if !defined(QT_USE_QSTRINGBUILDER) +inline const QByteArray operator+(const QByteArray &a1, const QByteArray &a2) +{ return QByteArray(a1) += a2; } +inline const QByteArray operator+(const QByteArray &a1, const char *a2) +{ return QByteArray(a1) += a2; } +inline const QByteArray operator+(const QByteArray &a1, char a2) +{ return QByteArray(a1) += a2; } +inline const QByteArray operator+(const char *a1, const QByteArray &a2) +{ return QByteArray(a1) += a2; } +inline const QByteArray operator+(char a1, const QByteArray &a2) +{ return QByteArray(&a1, 1) += a2; } +#endif // QT_USE_QSTRINGBUILDER +inline bool QByteArray::contains(const char *c) const +{ return indexOf(c) != -1; } +inline QByteArray &QByteArray::replace(char before, const char *c) +{ return replace(&before, 1, c, qstrlen(c)); } +inline QByteArray &QByteArray::replace(const QByteArray &before, const char *c) +{ return replace(before.constData(), before.size(), c, qstrlen(c)); } +inline QByteArray &QByteArray::replace(const char *before, const char *after) +{ return replace(before, qstrlen(before), after, qstrlen(after)); } + +inline QByteArray &QByteArray::setNum(short n, int base) +{ return base == 10 ? setNum(qlonglong(n), base) : setNum(qulonglong(ushort(n)), base); } +inline QByteArray &QByteArray::setNum(ushort n, int base) +{ return setNum(qulonglong(n), base); } +inline QByteArray &QByteArray::setNum(int n, int base) +{ return base == 10 ? setNum(qlonglong(n), base) : setNum(qulonglong(uint(n)), base); } +inline QByteArray &QByteArray::setNum(uint n, int base) +{ return setNum(qulonglong(n), base); } +inline QByteArray &QByteArray::setNum(float n, char f, int prec) +{ return setNum(double(n),f,prec); } + +inline std::string QByteArray::toStdString() const +{ return std::string(constData(), length()); } + +inline QByteArray QByteArray::fromStdString(const std::string &s) +{ return QByteArray(s.data(), int(s.size())); } + +#if !defined(QT_NO_DATASTREAM) || (defined(QT_BOOTSTRAPPED) && !defined(QT_BUILD_QMAKE)) +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QByteArray &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QByteArray &); +#endif + +#ifndef QT_NO_COMPRESS +Q_CORE_EXPORT QByteArray qCompress(const uchar* data, int nbytes, int compressionLevel = -1); +Q_CORE_EXPORT QByteArray qUncompress(const uchar* data, int nbytes); +inline QByteArray qCompress(const QByteArray& data, int compressionLevel = -1) +{ return qCompress(reinterpret_cast(data.constData()), data.size(), compressionLevel); } +inline QByteArray qUncompress(const QByteArray& data) +{ return qUncompress(reinterpret_cast(data.constData()), data.size()); } +#endif + +Q_DECLARE_SHARED(QByteArray) + +QT_END_NAMESPACE + +#ifdef QT_USE_QSTRINGBUILDER +#include +#endif + +#endif // QBYTEARRAY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qbytearraylist.h b/qrenderdoc/3rdparty/qt/include/QtCore/qbytearraylist.h new file mode 100644 index 000000000..501bb2e0d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qbytearraylist.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Copyright (C) 2014 by Southwest Research Institute (R) +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QBYTEARRAYLIST_H +#define QBYTEARRAYLIST_H + +#include + +QT_BEGIN_NAMESPACE + +typedef QListIterator QByteArrayListIterator; +typedef QMutableListIterator QMutableByteArrayListIterator; +#ifndef Q_QDOC +typedef QList QByteArrayList; + +namespace QtPrivate { + QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *separator, int separatorLength); +} +#endif + +#ifdef Q_QDOC +class QByteArrayList : public QList +#else +template <> struct QListSpecialMethods +#endif +{ +#ifndef Q_QDOC +protected: + ~QListSpecialMethods() {} +#endif +public: + inline QByteArray join() const + { return QtPrivate::QByteArrayList_join(self(), Q_NULLPTR, 0); } + inline QByteArray join(const QByteArray &sep) const + { return QtPrivate::QByteArrayList_join(self(), sep.constData(), sep.size()); } + inline QByteArray join(char sep) const + { return QtPrivate::QByteArrayList_join(self(), &sep, 1); } + +private: + typedef QList Self; + Self *self() { return static_cast(this); } + const Self *self() const { return static_cast(this); } +}; + +QT_END_NAMESPACE + +#endif // QBYTEARRAYLIST_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qbytearraymatcher.h b/qrenderdoc/3rdparty/qt/include/QtCore/qbytearraymatcher.h new file mode 100644 index 000000000..c1c0c3a66 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qbytearraymatcher.h @@ -0,0 +1,169 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBYTEARRAYMATCHER_H +#define QBYTEARRAYMATCHER_H + +#include + +QT_BEGIN_NAMESPACE + + +class QByteArrayMatcherPrivate; + +class Q_CORE_EXPORT QByteArrayMatcher +{ +public: + QByteArrayMatcher(); + explicit QByteArrayMatcher(const QByteArray &pattern); + explicit QByteArrayMatcher(const char *pattern, int length); + QByteArrayMatcher(const QByteArrayMatcher &other); + ~QByteArrayMatcher(); + + QByteArrayMatcher &operator=(const QByteArrayMatcher &other); + + void setPattern(const QByteArray &pattern); + + int indexIn(const QByteArray &ba, int from = 0) const; + int indexIn(const char *str, int len, int from = 0) const; + inline QByteArray pattern() const + { + if (q_pattern.isNull()) + return QByteArray(reinterpret_cast(p.p), p.l); + return q_pattern; + } + +private: + QByteArrayMatcherPrivate *d; + QByteArray q_pattern; + struct Data { + uchar q_skiptable[256]; + const uchar *p; + int l; + }; + union { + uint dummy[256]; + Data p; + }; +}; + +class QStaticByteArrayMatcherBase +{ + Q_DECL_ALIGN(16) + struct Skiptable { + uchar data[256]; + } m_skiptable; +protected: + explicit Q_DECL_RELAXED_CONSTEXPR QStaticByteArrayMatcherBase(const char *pattern, uint n) Q_DECL_NOTHROW + : m_skiptable(generate(pattern, n)) {} + // compiler-generated copy/more ctors/assignment operators are ok! + // compiler-generated dtor is ok! + + Q_CORE_EXPORT int indexOfIn(const char *needle, uint nlen, const char *haystack, int hlen, int from) const Q_DECL_NOTHROW; + +private: + static Q_DECL_RELAXED_CONSTEXPR Skiptable generate(const char *pattern, uint n) Q_DECL_NOTHROW + { + const auto uchar_max = (std::numeric_limits::max)(); + uchar max = n > uchar_max ? uchar_max : n; + Skiptable table = { + // this verbose initialization code aims to avoid some opaque error messages + // even on powerful compilers such as GCC 5.3. Even though for GCC a loop + // format can be found that v5.3 groks, it's probably better to go with this + // for the time being: + { + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, + } + }; + pattern += n - max; + while (max--) + table.data[uchar(*pattern++)] = max; + return table; + } +}; + +QT_WARNING_PUSH +QT_WARNING_DISABLE_MSVC(4351) // MSVC 2013: "new behavior: elements of array ... will be default initialized" + // remove once we drop MSVC 2013 support +template +class QStaticByteArrayMatcher : QStaticByteArrayMatcherBase +{ + char m_pattern[N]; + Q_STATIC_ASSERT_X(N > 2, "QStaticByteArrayMatcher makes no sense for finding a single-char pattern"); +public: + explicit Q_DECL_RELAXED_CONSTEXPR QStaticByteArrayMatcher(const char (&patternToMatch)[N]) Q_DECL_NOTHROW + : QStaticByteArrayMatcherBase(patternToMatch, N - 1), m_pattern() + { + for (uint i = 0; i < N; ++i) + m_pattern[i] = patternToMatch[i]; + } + + int indexIn(const QByteArray &haystack, int from = 0) const Q_DECL_NOTHROW + { return this->indexOfIn(m_pattern, N - 1, haystack.data(), haystack.size(), from); } + int indexIn(const char *haystack, int hlen, int from = 0) const Q_DECL_NOTHROW + { return this->indexOfIn(m_pattern, N - 1, haystack, hlen, from); } + + QByteArray pattern() const { return QByteArray(m_pattern, int(N - 1)); } +}; + +QT_WARNING_POP + +template +Q_DECL_RELAXED_CONSTEXPR QStaticByteArrayMatcher qMakeStaticByteArrayMatcher(const char (&pattern)[N]) Q_DECL_NOTHROW +{ return QStaticByteArrayMatcher(pattern); } + +QT_END_NAMESPACE + +#endif // QBYTEARRAYMATCHER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qcache.h b/qrenderdoc/3rdparty/qt/include/QtCore/qcache.h new file mode 100644 index 000000000..8c0e7860f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qcache.h @@ -0,0 +1,199 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCACHE_H +#define QCACHE_H + +#include + +QT_BEGIN_NAMESPACE + + +template +class QCache +{ + struct Node { + inline Node() : keyPtr(0) {} + inline Node(T *data, int cost) + : keyPtr(0), t(data), c(cost), p(0), n(0) {} + const Key *keyPtr; T *t; int c; Node *p,*n; + }; + Node *f, *l; + QHash hash; + int mx, total; + + inline void unlink(Node &n) { + if (n.p) n.p->n = n.n; + if (n.n) n.n->p = n.p; + if (l == &n) l = n.p; + if (f == &n) f = n.n; + total -= n.c; + T *obj = n.t; + hash.remove(*n.keyPtr); + delete obj; + } + inline T *relink(const Key &key) { + typename QHash::iterator i = hash.find(key); + if (typename QHash::const_iterator(i) == hash.constEnd()) + return 0; + + Node &n = *i; + if (f != &n) { + if (n.p) n.p->n = n.n; + if (n.n) n.n->p = n.p; + if (l == &n) l = n.p; + n.p = 0; + n.n = f; + f->p = &n; + f = &n; + } + return n.t; + } + + Q_DISABLE_COPY(QCache) + +public: + inline explicit QCache(int maxCost = 100) Q_DECL_NOTHROW; + inline ~QCache() { clear(); } + + inline int maxCost() const { return mx; } + void setMaxCost(int m); + inline int totalCost() const { return total; } + + inline int size() const { return hash.size(); } + inline int count() const { return hash.size(); } + inline bool isEmpty() const { return hash.isEmpty(); } + inline QList keys() const { return hash.keys(); } + + void clear(); + + bool insert(const Key &key, T *object, int cost = 1); + T *object(const Key &key) const; + inline bool contains(const Key &key) const { return hash.contains(key); } + T *operator[](const Key &key) const; + + bool remove(const Key &key); + T *take(const Key &key); + +private: + void trim(int m); +}; + +template +inline QCache::QCache(int amaxCost) Q_DECL_NOTHROW + : f(0), l(0), mx(amaxCost), total(0) {} + +template +inline void QCache::clear() +{ while (f) { delete f->t; f = f->n; } + hash.clear(); l = 0; total = 0; } + +template +inline void QCache::setMaxCost(int m) +{ mx = m; trim(mx); } + +template +inline T *QCache::object(const Key &key) const +{ return const_cast*>(this)->relink(key); } + +template +inline T *QCache::operator[](const Key &key) const +{ return object(key); } + +template +inline bool QCache::remove(const Key &key) +{ + typename QHash::iterator i = hash.find(key); + if (typename QHash::const_iterator(i) == hash.constEnd()) { + return false; + } else { + unlink(*i); + return true; + } +} + +template +inline T *QCache::take(const Key &key) +{ + typename QHash::iterator i = hash.find(key); + if (i == hash.end()) + return 0; + + Node &n = *i; + T *t = n.t; + n.t = 0; + unlink(n); + return t; +} + +template +bool QCache::insert(const Key &akey, T *aobject, int acost) +{ + remove(akey); + if (acost > mx) { + delete aobject; + return false; + } + trim(mx - acost); + Node sn(aobject, acost); + typename QHash::iterator i = hash.insert(akey, sn); + total += acost; + Node *n = &i.value(); + n->keyPtr = &i.key(); + if (f) f->p = n; + n->n = f; + f = n; + if (!l) l = f; + return true; +} + +template +void QCache::trim(int m) +{ + Node *n = l; + while (n && total > m) { + Node *u = n; + n = n->p; + unlink(*u); + } +} + +QT_END_NAMESPACE + +#endif // QCACHE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qchar.h b/qrenderdoc/3rdparty/qt/include/QtCore/qchar.h new file mode 100644 index 000000000..81ef67d11 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qchar.h @@ -0,0 +1,604 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCHAR_H +#define QCHAR_H + +#include + +QT_BEGIN_NAMESPACE + + +class QString; + +struct QLatin1Char +{ +public: + Q_DECL_CONSTEXPR inline explicit QLatin1Char(char c) Q_DECL_NOTHROW : ch(c) {} + Q_DECL_CONSTEXPR inline char toLatin1() const Q_DECL_NOTHROW { return ch; } + Q_DECL_CONSTEXPR inline ushort unicode() const Q_DECL_NOTHROW { return ushort(uchar(ch)); } + +private: + char ch; +}; + + +class Q_CORE_EXPORT QChar { +public: + enum SpecialCharacter { + Null = 0x0000, + Tabulation = 0x0009, + LineFeed = 0x000a, + CarriageReturn = 0x000d, + Space = 0x0020, + Nbsp = 0x00a0, + SoftHyphen = 0x00ad, + ReplacementCharacter = 0xfffd, + ObjectReplacementCharacter = 0xfffc, + ByteOrderMark = 0xfeff, + ByteOrderSwapped = 0xfffe, + ParagraphSeparator = 0x2029, + LineSeparator = 0x2028, + LastValidCodePoint = 0x10ffff + }; + + Q_DECL_CONSTEXPR QChar() Q_DECL_NOTHROW : ucs(0) {} + Q_DECL_CONSTEXPR QChar(ushort rc) Q_DECL_NOTHROW : ucs(rc) {} // implicit + Q_DECL_CONSTEXPR QChar(uchar c, uchar r) Q_DECL_NOTHROW : ucs(ushort((r << 8) | c)) {} + Q_DECL_CONSTEXPR QChar(short rc) Q_DECL_NOTHROW : ucs(ushort(rc)) {} // implicit + Q_DECL_CONSTEXPR QChar(uint rc) Q_DECL_NOTHROW : ucs(ushort(rc & 0xffff)) {} + Q_DECL_CONSTEXPR QChar(int rc) Q_DECL_NOTHROW : ucs(ushort(rc & 0xffff)) {} + Q_DECL_CONSTEXPR QChar(SpecialCharacter s) Q_DECL_NOTHROW : ucs(ushort(s)) {} // implicit + Q_DECL_CONSTEXPR QChar(QLatin1Char ch) Q_DECL_NOTHROW : ucs(ch.unicode()) {} // implicit + +#ifndef QT_NO_CAST_FROM_ASCII + QT_ASCII_CAST_WARN Q_DECL_CONSTEXPR explicit QChar(char c) Q_DECL_NOTHROW : ucs(uchar(c)) { } +#ifndef QT_RESTRICTED_CAST_FROM_ASCII + QT_ASCII_CAST_WARN Q_DECL_CONSTEXPR explicit QChar(uchar c) Q_DECL_NOTHROW : ucs(c) { } +#endif +#endif + // Unicode information + + enum Category + { + Mark_NonSpacing, // Mn + Mark_SpacingCombining, // Mc + Mark_Enclosing, // Me + + Number_DecimalDigit, // Nd + Number_Letter, // Nl + Number_Other, // No + + Separator_Space, // Zs + Separator_Line, // Zl + Separator_Paragraph, // Zp + + Other_Control, // Cc + Other_Format, // Cf + Other_Surrogate, // Cs + Other_PrivateUse, // Co + Other_NotAssigned, // Cn + + Letter_Uppercase, // Lu + Letter_Lowercase, // Ll + Letter_Titlecase, // Lt + Letter_Modifier, // Lm + Letter_Other, // Lo + + Punctuation_Connector, // Pc + Punctuation_Dash, // Pd + Punctuation_Open, // Ps + Punctuation_Close, // Pe + Punctuation_InitialQuote, // Pi + Punctuation_FinalQuote, // Pf + Punctuation_Other, // Po + + Symbol_Math, // Sm + Symbol_Currency, // Sc + Symbol_Modifier, // Sk + 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, + + // Unicode 7.0 additions + Script_CaucasianAlbanian, + Script_BassaVah, + Script_Duployan, + Script_Elbasan, + Script_Grantha, + Script_PahawhHmong, + Script_Khojki, + Script_LinearA, + Script_Mahajani, + Script_Manichaean, + Script_MendeKikakui, + Script_Modi, + Script_Mro, + Script_OldNorthArabian, + Script_Nabataean, + Script_Palmyrene, + Script_PauCinHau, + Script_OldPermic, + Script_PsalterPahlavi, + Script_Siddham, + Script_Khudawadi, + Script_Tirhuta, + Script_WarangCiti, + + // Unicode 8.0 additions + Script_Ahom, + Script_AnatolianHieroglyphs, + Script_Hatran, + Script_Multani, + Script_OldHungarian, + Script_SignWriting, + + ScriptCount + }; + + enum Direction + { + DirL, DirR, DirEN, DirES, DirET, DirAN, DirCS, DirB, DirS, DirWS, DirON, + DirLRE, DirLRO, DirAL, DirRLE, DirRLO, DirPDF, DirNSM, DirBN, + DirLRI, DirRLI, DirFSI, DirPDI + }; + + enum Decomposition + { + NoDecomposition, + Canonical, + Font, + NoBreak, + Initial, + Medial, + Final, + Isolated, + Circle, + Super, + Sub, + Vertical, + Wide, + Narrow, + Small, + Square, + Compat, + Fraction + }; + + enum JoiningType { + Joining_None, + Joining_Causing, + Joining_Dual, + Joining_Right, + Joining_Left, + Joining_Transparent + }; + +#if QT_DEPRECATED_SINCE(5, 3) + enum Joining + { + OtherJoining, Dual, Right, Center + }; +#endif + + enum CombiningClass + { + Combining_BelowLeftAttached = 200, + Combining_BelowAttached = 202, + Combining_BelowRightAttached = 204, + Combining_LeftAttached = 208, + Combining_RightAttached = 210, + Combining_AboveLeftAttached = 212, + Combining_AboveAttached = 214, + Combining_AboveRightAttached = 216, + + Combining_BelowLeft = 218, + Combining_Below = 220, + Combining_BelowRight = 222, + Combining_Left = 224, + Combining_Right = 226, + Combining_AboveLeft = 228, + Combining_Above = 230, + Combining_AboveRight = 232, + + Combining_DoubleBelow = 233, + Combining_DoubleAbove = 234, + Combining_IotaSubscript = 240 + }; + + enum UnicodeVersion { + Unicode_Unassigned, + Unicode_1_1, + Unicode_2_0, + Unicode_2_1_2, + Unicode_3_0, + Unicode_3_1, + Unicode_3_2, + Unicode_4_0, + Unicode_4_1, + Unicode_5_0, + Unicode_5_1, + Unicode_5_2, + Unicode_6_0, + Unicode_6_1, + Unicode_6_2, + Unicode_6_3, + Unicode_7_0, + Unicode_8_0 + }; + // ****** WHEN ADDING FUNCTIONS, CONSIDER ADDING TO QCharRef TOO + + inline Category category() const Q_DECL_NOTHROW { return QChar::category(ucs); } + inline Direction direction() const Q_DECL_NOTHROW { return QChar::direction(ucs); } + inline JoiningType joiningType() const Q_DECL_NOTHROW { return QChar::joiningType(ucs); } +#if QT_DEPRECATED_SINCE(5, 3) + QT_DEPRECATED inline Joining joining() const Q_DECL_NOTHROW + { + switch (QChar::joiningType(ucs)) { + case QChar::Joining_Causing: return QChar::Center; + case QChar::Joining_Dual: return QChar::Dual; + case QChar::Joining_Right: return QChar::Right; + case QChar::Joining_None: + case QChar::Joining_Left: + case QChar::Joining_Transparent: + default: return QChar::OtherJoining; + } + } +#endif + inline unsigned char combiningClass() const Q_DECL_NOTHROW { return QChar::combiningClass(ucs); } + + inline QChar mirroredChar() const Q_DECL_NOTHROW { return QChar::mirroredChar(ucs); } + inline bool hasMirrored() const Q_DECL_NOTHROW { return QChar::hasMirrored(ucs); } + + QString decomposition() const; + inline Decomposition decompositionTag() const Q_DECL_NOTHROW { return QChar::decompositionTag(ucs); } + + inline int digitValue() const Q_DECL_NOTHROW { return QChar::digitValue(ucs); } + inline QChar toLower() const Q_DECL_NOTHROW { return QChar::toLower(ucs); } + inline QChar toUpper() const Q_DECL_NOTHROW { return QChar::toUpper(ucs); } + inline QChar toTitleCase() const Q_DECL_NOTHROW { return QChar::toTitleCase(ucs); } + inline QChar toCaseFolded() const Q_DECL_NOTHROW { return QChar::toCaseFolded(ucs); } + + inline Script script() const Q_DECL_NOTHROW { return QChar::script(ucs); } + + inline UnicodeVersion unicodeVersion() const Q_DECL_NOTHROW { return QChar::unicodeVersion(ucs); } + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED Q_DECL_CONSTEXPR inline char toAscii() const Q_DECL_NOTHROW { return toLatin1(); } +#endif + Q_DECL_CONSTEXPR inline char toLatin1() const Q_DECL_NOTHROW { return ucs > 0xff ? '\0' : char(ucs); } + Q_DECL_CONSTEXPR inline ushort unicode() const Q_DECL_NOTHROW { return ucs; } + Q_DECL_RELAXED_CONSTEXPR inline ushort &unicode() Q_DECL_NOTHROW { return ucs; } + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED static Q_DECL_CONSTEXPR inline QChar fromAscii(char c) Q_DECL_NOTHROW + { return fromLatin1(c); } +#endif + static Q_DECL_CONSTEXPR inline QChar fromLatin1(char c) Q_DECL_NOTHROW { return QChar(ushort(uchar(c))); } + + Q_DECL_CONSTEXPR inline bool isNull() const Q_DECL_NOTHROW { return ucs == 0; } + + inline bool isPrint() const Q_DECL_NOTHROW { return QChar::isPrint(ucs); } + Q_DECL_CONSTEXPR inline bool isSpace() const Q_DECL_NOTHROW { return QChar::isSpace(ucs); } + inline bool isMark() const Q_DECL_NOTHROW { return QChar::isMark(ucs); } + inline bool isPunct() const Q_DECL_NOTHROW { return QChar::isPunct(ucs); } + inline bool isSymbol() const Q_DECL_NOTHROW { return QChar::isSymbol(ucs); } + Q_DECL_CONSTEXPR inline bool isLetter() const Q_DECL_NOTHROW { return QChar::isLetter(ucs); } + Q_DECL_CONSTEXPR inline bool isNumber() const Q_DECL_NOTHROW { return QChar::isNumber(ucs); } + Q_DECL_CONSTEXPR inline bool isLetterOrNumber() const Q_DECL_NOTHROW { return QChar::isLetterOrNumber(ucs); } + Q_DECL_CONSTEXPR inline bool isDigit() const Q_DECL_NOTHROW { return QChar::isDigit(ucs); } + Q_DECL_CONSTEXPR inline bool isLower() const Q_DECL_NOTHROW { return QChar::isLower(ucs); } + Q_DECL_CONSTEXPR inline bool isUpper() const Q_DECL_NOTHROW { return QChar::isUpper(ucs); } + Q_DECL_CONSTEXPR inline bool isTitleCase() const Q_DECL_NOTHROW { return QChar::isTitleCase(ucs); } + + Q_DECL_CONSTEXPR inline bool isNonCharacter() const Q_DECL_NOTHROW { return QChar::isNonCharacter(ucs); } + Q_DECL_CONSTEXPR inline bool isHighSurrogate() const Q_DECL_NOTHROW { return QChar::isHighSurrogate(ucs); } + Q_DECL_CONSTEXPR inline bool isLowSurrogate() const Q_DECL_NOTHROW { return QChar::isLowSurrogate(ucs); } + Q_DECL_CONSTEXPR inline bool isSurrogate() const Q_DECL_NOTHROW { return QChar::isSurrogate(ucs); } + + Q_DECL_CONSTEXPR inline uchar cell() const Q_DECL_NOTHROW { return uchar(ucs & 0xff); } + Q_DECL_CONSTEXPR inline uchar row() const Q_DECL_NOTHROW { return uchar((ucs>>8)&0xff); } + Q_DECL_RELAXED_CONSTEXPR inline void setCell(uchar acell) Q_DECL_NOTHROW { ucs = ushort((ucs & 0xff00) + acell); } + Q_DECL_RELAXED_CONSTEXPR inline void setRow(uchar arow) Q_DECL_NOTHROW { ucs = ushort((ushort(arow)<<8) + (ucs&0xff)); } + + static Q_DECL_CONSTEXPR inline bool isNonCharacter(uint ucs4) Q_DECL_NOTHROW + { + return ucs4 >= 0xfdd0 && (ucs4 <= 0xfdef || (ucs4 & 0xfffe) == 0xfffe); + } + static Q_DECL_CONSTEXPR inline bool isHighSurrogate(uint ucs4) Q_DECL_NOTHROW + { + return ((ucs4 & 0xfffffc00) == 0xd800); + } + static Q_DECL_CONSTEXPR inline bool isLowSurrogate(uint ucs4) Q_DECL_NOTHROW + { + return ((ucs4 & 0xfffffc00) == 0xdc00); + } + static Q_DECL_CONSTEXPR inline bool isSurrogate(uint ucs4) Q_DECL_NOTHROW + { + return (ucs4 - 0xd800u < 2048u); + } + static Q_DECL_CONSTEXPR inline bool requiresSurrogates(uint ucs4) Q_DECL_NOTHROW + { + return (ucs4 >= 0x10000); + } + static Q_DECL_CONSTEXPR inline uint surrogateToUcs4(ushort high, ushort low) Q_DECL_NOTHROW + { + return (uint(high)<<10) + low - 0x35fdc00; + } + static Q_DECL_CONSTEXPR inline uint surrogateToUcs4(QChar high, QChar low) Q_DECL_NOTHROW + { + return surrogateToUcs4(high.ucs, low.ucs); + } + static Q_DECL_CONSTEXPR inline ushort highSurrogate(uint ucs4) Q_DECL_NOTHROW + { + return ushort((ucs4>>10) + 0xd7c0); + } + static Q_DECL_CONSTEXPR inline ushort lowSurrogate(uint ucs4) Q_DECL_NOTHROW + { + return ushort(ucs4%0x400 + 0xdc00); + } + + static Category QT_FASTCALL category(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static Direction QT_FASTCALL direction(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static JoiningType QT_FASTCALL joiningType(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; +#if QT_DEPRECATED_SINCE(5, 3) + QT_DEPRECATED static Joining QT_FASTCALL joining(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; +#endif + static unsigned char QT_FASTCALL combiningClass(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + + static uint QT_FASTCALL mirroredChar(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static bool QT_FASTCALL hasMirrored(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + + static QString QT_FASTCALL decomposition(uint ucs4); + static Decomposition QT_FASTCALL decompositionTag(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + + static int QT_FASTCALL digitValue(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static uint QT_FASTCALL toLower(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static uint QT_FASTCALL toUpper(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static uint QT_FASTCALL toTitleCase(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static uint QT_FASTCALL toCaseFolded(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + + static Script QT_FASTCALL script(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + + static UnicodeVersion QT_FASTCALL unicodeVersion(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + + static UnicodeVersion QT_FASTCALL currentUnicodeVersion() Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + + static bool QT_FASTCALL isPrint(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static Q_DECL_CONSTEXPR inline bool isSpace(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION + { + // note that [0x09..0x0d] + 0x85 are exceptional Cc-s and must be handled explicitly + return ucs4 == 0x20 || (ucs4 <= 0x0d && ucs4 >= 0x09) + || (ucs4 > 127 && (ucs4 == 0x85 || ucs4 == 0xa0 || QChar::isSpace_helper(ucs4))); + } + static bool QT_FASTCALL isMark(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static bool QT_FASTCALL isPunct(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static bool QT_FASTCALL isSymbol(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static Q_DECL_CONSTEXPR inline bool isLetter(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION + { + return (ucs4 >= 'A' && ucs4 <= 'z' && (ucs4 >= 'a' || ucs4 <= 'Z')) + || (ucs4 > 127 && QChar::isLetter_helper(ucs4)); + } + static Q_DECL_CONSTEXPR inline bool isNumber(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION + { return (ucs4 <= '9' && ucs4 >= '0') || (ucs4 > 127 && QChar::isNumber_helper(ucs4)); } + static Q_DECL_CONSTEXPR inline bool isLetterOrNumber(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION + { + return (ucs4 >= 'A' && ucs4 <= 'z' && (ucs4 >= 'a' || ucs4 <= 'Z')) + || (ucs4 >= '0' && ucs4 <= '9') + || (ucs4 > 127 && QChar::isLetterOrNumber_helper(ucs4)); + } + static Q_DECL_CONSTEXPR inline bool isDigit(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION + { return (ucs4 <= '9' && ucs4 >= '0') || (ucs4 > 127 && QChar::category(ucs4) == Number_DecimalDigit); } + static Q_DECL_CONSTEXPR inline bool isLower(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION + { return (ucs4 <= 'z' && ucs4 >= 'a') || (ucs4 > 127 && QChar::category(ucs4) == Letter_Lowercase); } + static Q_DECL_CONSTEXPR inline bool isUpper(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION + { return (ucs4 <= 'Z' && ucs4 >= 'A') || (ucs4 > 127 && QChar::category(ucs4) == Letter_Uppercase); } + static Q_DECL_CONSTEXPR inline bool isTitleCase(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION + { return ucs4 > 127 && QChar::category(ucs4) == Letter_Titlecase; } + +private: + static bool QT_FASTCALL isSpace_helper(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static bool QT_FASTCALL isLetter_helper(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static bool QT_FASTCALL isNumber_helper(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + static bool QT_FASTCALL isLetterOrNumber_helper(uint ucs4) Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; + +#ifdef QT_NO_CAST_FROM_ASCII + QChar(char c) Q_DECL_NOTHROW; + QChar(uchar c) Q_DECL_NOTHROW; +#endif + + friend Q_DECL_CONSTEXPR bool operator==(QChar, QChar) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR bool operator< (QChar, QChar) Q_DECL_NOTHROW; + ushort ucs; +}; + +Q_DECLARE_TYPEINFO(QChar, Q_MOVABLE_TYPE); + +Q_DECL_CONSTEXPR inline bool operator==(QChar c1, QChar c2) Q_DECL_NOTHROW { return c1.ucs == c2.ucs; } +Q_DECL_CONSTEXPR inline bool operator< (QChar c1, QChar c2) Q_DECL_NOTHROW { return c1.ucs < c2.ucs; } + +Q_DECL_CONSTEXPR inline bool operator!=(QChar c1, QChar c2) Q_DECL_NOTHROW { return !operator==(c1, c2); } +Q_DECL_CONSTEXPR inline bool operator>=(QChar c1, QChar c2) Q_DECL_NOTHROW { return !operator< (c1, c2); } +Q_DECL_CONSTEXPR inline bool operator> (QChar c1, QChar c2) Q_DECL_NOTHROW { return operator< (c2, c1); } +Q_DECL_CONSTEXPR inline bool operator<=(QChar c1, QChar c2) Q_DECL_NOTHROW { return !operator< (c2, c1); } + + +Q_DECL_CONSTEXPR inline bool operator==(QChar lhs, std::nullptr_t) Q_DECL_NOTHROW { return lhs.isNull(); } +Q_DECL_CONSTEXPR inline bool operator< (QChar, std::nullptr_t) Q_DECL_NOTHROW { return false; } +Q_DECL_CONSTEXPR inline bool operator==(std::nullptr_t, QChar rhs) Q_DECL_NOTHROW { return rhs.isNull(); } +Q_DECL_CONSTEXPR inline bool operator< (std::nullptr_t, QChar rhs) Q_DECL_NOTHROW { return !rhs.isNull(); } + +Q_DECL_CONSTEXPR inline bool operator!=(QChar lhs, std::nullptr_t) Q_DECL_NOTHROW { return !operator==(lhs, nullptr); } +Q_DECL_CONSTEXPR inline bool operator>=(QChar lhs, std::nullptr_t) Q_DECL_NOTHROW { return !operator< (lhs, nullptr); } +Q_DECL_CONSTEXPR inline bool operator> (QChar lhs, std::nullptr_t) Q_DECL_NOTHROW { return operator< (nullptr, lhs); } +Q_DECL_CONSTEXPR inline bool operator<=(QChar lhs, std::nullptr_t) Q_DECL_NOTHROW { return !operator< (nullptr, lhs); } + +Q_DECL_CONSTEXPR inline bool operator!=(std::nullptr_t, QChar rhs) Q_DECL_NOTHROW { return !operator==(nullptr, rhs); } +Q_DECL_CONSTEXPR inline bool operator>=(std::nullptr_t, QChar rhs) Q_DECL_NOTHROW { return !operator< (nullptr, rhs); } +Q_DECL_CONSTEXPR inline bool operator> (std::nullptr_t, QChar rhs) Q_DECL_NOTHROW { return operator< (rhs, nullptr); } +Q_DECL_CONSTEXPR inline bool operator<=(std::nullptr_t, QChar rhs) Q_DECL_NOTHROW { return !operator< (rhs, nullptr); } + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, QChar); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QChar &); +#endif + +QT_END_NAMESPACE + +#endif // QCHAR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qcollator.h b/qrenderdoc/3rdparty/qt/include/QtCore/qcollator.h new file mode 100644 index 000000000..d81c7c85e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qcollator.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2013 Aleix Pol Gonzalez +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOLLATOR_H +#define QCOLLATOR_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QCollatorPrivate; +class QCollatorSortKeyPrivate; + +class Q_CORE_EXPORT QCollatorSortKey +{ + friend class QCollator; +public: + QCollatorSortKey(const QCollatorSortKey &other); + ~QCollatorSortKey(); + QCollatorSortKey &operator=(const QCollatorSortKey &other); +#ifdef Q_COMPILER_RVALUE_REFS + inline QCollatorSortKey &operator=(QCollatorSortKey &&other) Q_DECL_NOTHROW + { swap(other); return *this; } +#endif + void swap(QCollatorSortKey &other) Q_DECL_NOTHROW + { d.swap(other.d); } + + int compare(const QCollatorSortKey &key) const; + +protected: + QCollatorSortKey(QCollatorSortKeyPrivate*); + + QExplicitlySharedDataPointer d; + +private: + QCollatorSortKey(); +}; + +inline bool operator<(const QCollatorSortKey &lhs, const QCollatorSortKey &rhs) +{ + return lhs.compare(rhs) < 0; +} + +class Q_CORE_EXPORT QCollator +{ +public: + explicit QCollator(const QLocale &locale = QLocale()); + QCollator(const QCollator &); + ~QCollator(); + QCollator &operator=(const QCollator &); +#ifdef Q_COMPILER_RVALUE_REFS + QCollator(QCollator &&other) Q_DECL_NOTHROW + : d(other.d) { other.d = Q_NULLPTR; } + QCollator &operator=(QCollator &&other) Q_DECL_NOTHROW + { swap(other); return *this; } +#endif + + void swap(QCollator &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + + void setLocale(const QLocale &locale); + QLocale locale() const; + + Qt::CaseSensitivity caseSensitivity() const; + void setCaseSensitivity(Qt::CaseSensitivity cs); + + void setNumericMode(bool on); + bool numericMode() const; + + void setIgnorePunctuation(bool on); + bool ignorePunctuation() const; + + int compare(const QString &s1, const QString &s2) const; + int compare(const QStringRef &s1, const QStringRef &s2) const; + int compare(const QChar *s1, int len1, const QChar *s2, int len2) const; + + bool operator()(const QString &s1, const QString &s2) const + { return compare(s1, s2) < 0; } + + QCollatorSortKey sortKey(const QString &string) const; + +private: + QCollatorPrivate *d; + + void detach(); +}; + +Q_DECLARE_SHARED(QCollatorSortKey) +Q_DECLARE_SHARED(QCollator) + +QT_END_NAMESPACE + +#endif // QCOLLATOR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qcommandlineoption.h b/qrenderdoc/3rdparty/qt/include/QtCore/qcommandlineoption.h new file mode 100644 index 000000000..276be042d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qcommandlineoption.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Laszlo Papp +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMMANDLINEOPTION_H +#define QCOMMANDLINEOPTION_H + +#include +#include + +QT_REQUIRE_CONFIG(commandlineparser); + +QT_BEGIN_NAMESPACE + +class QCommandLineOptionPrivate; + +class Q_CORE_EXPORT QCommandLineOption +{ +public: + enum Flag { + HiddenFromHelp = 0x1, + ShortOptionStyle = 0x2 + }; + Q_DECLARE_FLAGS(Flags, Flag) + + explicit QCommandLineOption(const QString &name); + explicit QCommandLineOption(const QStringList &names); + /*implicit*/ QCommandLineOption(const QString &name, const QString &description, + const QString &valueName = QString(), + const QString &defaultValue = QString()); + /*implicit*/ QCommandLineOption(const QStringList &names, const QString &description, + const QString &valueName = QString(), + const QString &defaultValue = QString()); + QCommandLineOption(const QCommandLineOption &other); + + ~QCommandLineOption(); + + QCommandLineOption &operator=(const QCommandLineOption &other); +#ifdef Q_COMPILER_RVALUE_REFS + QCommandLineOption &operator=(QCommandLineOption &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + + void swap(QCommandLineOption &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + + QStringList names() const; + + void setValueName(const QString &name); + QString valueName() const; + + void setDescription(const QString &description); + QString description() const; + + void setDefaultValue(const QString &defaultValue); + void setDefaultValues(const QStringList &defaultValues); + QStringList defaultValues() const; + + Flags flags() const; + void setFlags(Flags aflags); + +#if QT_DEPRECATED_SINCE(5, 8) + QT_DEPRECATED_X("Use setFlags() with HiddenFromHelp") + void setHidden(bool hidden); + QT_DEPRECATED_X("Use flags() and HiddenFromHelp") + bool isHidden() const; +#endif + + +private: + QSharedDataPointer d; +}; + +Q_DECLARE_SHARED(QCommandLineOption) +Q_DECLARE_OPERATORS_FOR_FLAGS(QCommandLineOption::Flags) + + +QT_END_NAMESPACE + +#endif // QCOMMANDLINEOPTION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qcommandlineparser.h b/qrenderdoc/3rdparty/qt/include/QtCore/qcommandlineparser.h new file mode 100644 index 000000000..4584c384c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qcommandlineparser.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Laszlo Papp +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMMANDLINEPARSER_H +#define QCOMMANDLINEPARSER_H + +#include + +#include +#include + +QT_REQUIRE_CONFIG(commandlineparser); + +QT_BEGIN_NAMESPACE + +class QCommandLineParserPrivate; +class QCoreApplication; + +class Q_CORE_EXPORT QCommandLineParser +{ + Q_DECLARE_TR_FUNCTIONS(QCommandLineParser) +public: + QCommandLineParser(); + ~QCommandLineParser(); + + enum SingleDashWordOptionMode { + ParseAsCompactedShortOptions, + ParseAsLongOptions + }; + void setSingleDashWordOptionMode(SingleDashWordOptionMode parsingMode); + + enum OptionsAfterPositionalArgumentsMode { + ParseAsOptions, + ParseAsPositionalArguments + }; + void setOptionsAfterPositionalArgumentsMode(OptionsAfterPositionalArgumentsMode mode); + + bool addOption(const QCommandLineOption &commandLineOption); + bool addOptions(const QList &options); + + QCommandLineOption addVersionOption(); + QCommandLineOption addHelpOption(); + void setApplicationDescription(const QString &description); + QString applicationDescription() const; + void addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString()); + void clearPositionalArguments(); + + void process(const QStringList &arguments); + void process(const QCoreApplication &app); + + bool parse(const QStringList &arguments); + QString errorText() const; + + bool isSet(const QString &name) const; + QString value(const QString &name) const; + QStringList values(const QString &name) const; + + bool isSet(const QCommandLineOption &option) const; + QString value(const QCommandLineOption &option) const; + QStringList values(const QCommandLineOption &option) const; + + QStringList positionalArguments() const; + QStringList optionNames() const; + QStringList unknownOptionNames() const; + + Q_NORETURN void showVersion(); + Q_NORETURN void showHelp(int exitCode = 0); + QString helpText() const; + +private: + Q_DISABLE_COPY(QCommandLineParser) + + QCommandLineParserPrivate * const d; +}; + +QT_END_NAMESPACE + +#endif // QCOMMANDLINEPARSER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qcompilerdetection.h b/qrenderdoc/3rdparty/qt/include/QtCore/qcompilerdetection.h new file mode 100644 index 000000000..231ac2c9b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qcompilerdetection.h @@ -0,0 +1,1387 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGLOBAL_H +# include +#endif + +#ifndef QCOMPILERDETECTION_H +#define QCOMPILERDETECTION_H + +/* + The compiler, must be one of: (Q_CC_x) + + SYM - Digital Mars C/C++ (used to be Symantec C++) + MSVC - Microsoft Visual C/C++, Intel C++ for Windows + BOR - Borland/Turbo C++ + WAT - Watcom C++ + GNU - GNU C++ + COMEAU - Comeau C++ + EDG - Edison Design Group C++ + OC - CenterLine C++ + SUN - Forte Developer, or Sun Studio C++ + MIPS - MIPSpro C++ + DEC - DEC C++ + HPACC - HP aC++ + USLC - SCO OUDK and UDK + CDS - Reliant C++ + KAI - KAI C++ + INTEL - Intel C++ for Linux, Intel C++ for Windows + HIGHC - MetaWare High C/C++ + PGI - Portland Group C++ + GHS - Green Hills Optimizing C++ Compilers + RVCT - ARM Realview Compiler Suite + CLANG - C++ front-end for the LLVM compiler + + + Should be sorted most to least authoritative. +*/ + +/* Symantec C++ is now Digital Mars */ +#if defined(__DMC__) || defined(__SC__) +# define Q_CC_SYM +/* "explicit" semantics implemented in 8.1e but keyword recognized since 7.5 */ +# if defined(__SC__) && __SC__ < 0x750 +# error "Compiler not supported" +# endif + +#elif defined(_MSC_VER) +# ifdef __clang__ +# define Q_CC_CLANG ((__clang_major__ * 100) + __clang_minor__) +# endif +# define Q_CC_MSVC (_MSC_VER) +# define Q_CC_MSVC_NET +# define Q_OUTOFLINE_TEMPLATE inline +# if _MSC_VER < 1600 +# define Q_NO_TEMPLATE_FRIENDS +# endif +# define Q_COMPILER_MANGLES_RETURN_TYPE +# define Q_FUNC_INFO __FUNCSIG__ +# define Q_ALIGNOF(type) __alignof(type) +# define Q_DECL_ALIGN(n) __declspec(align(n)) +# define Q_ASSUME_IMPL(expr) __assume(expr) +# define Q_UNREACHABLE_IMPL() __assume(0) +# define Q_NORETURN __declspec(noreturn) +# define Q_DECL_DEPRECATED __declspec(deprecated) +# ifndef Q_CC_CLANG +# define Q_DECL_DEPRECATED_X(text) __declspec(deprecated(text)) +# endif +# define Q_DECL_EXPORT __declspec(dllexport) +# define Q_DECL_IMPORT __declspec(dllimport) +# if _MSC_VER >= 1800 +# define QT_MAKE_UNCHECKED_ARRAY_ITERATOR(x) stdext::make_unchecked_array_iterator(x) +# endif +# if _MSC_VER >= 1500 +# define QT_MAKE_CHECKED_ARRAY_ITERATOR(x, N) stdext::make_checked_array_iterator(x, size_t(N)) +# endif +/* Intel C++ disguising as Visual C++: the `using' keyword avoids warnings */ +# if defined(__INTEL_COMPILER) +# define Q_DECL_VARIABLE_DEPRECATED +# define Q_CC_INTEL __INTEL_COMPILER +# endif + +/* only defined for MSVC since that's the only compiler that actually optimizes for this */ +/* might get overridden further down when Q_COMPILER_NOEXCEPT is detected */ +# ifdef __cplusplus +# define Q_DECL_NOTHROW throw() +# endif + +#elif defined(__BORLANDC__) || defined(__TURBOC__) +# define Q_CC_BOR +# define Q_INLINE_TEMPLATE +# if __BORLANDC__ < 0x502 +# error "Compiler not supported" +# endif + +#elif defined(__WATCOMC__) +# define Q_CC_WAT + +/* ARM Realview Compiler Suite + RVCT compiler also defines __EDG__ and __GNUC__ (if --gnu flag is given), + so check for it before that */ +#elif defined(__ARMCC__) || defined(__CC_ARM) +# define Q_CC_RVCT +/* work-around for missing compiler intrinsics */ +# define __is_empty(X) false +# define __is_pod(X) false +# define Q_DECL_DEPRECATED __attribute__ ((__deprecated__)) +# ifdef Q_OS_LINUX +# define Q_DECL_EXPORT __attribute__((visibility("default"))) +# define Q_DECL_IMPORT __attribute__((visibility("default"))) +# define Q_DECL_HIDDEN __attribute__((visibility("hidden"))) +# else +# define Q_DECL_EXPORT __declspec(dllexport) +# define Q_DECL_IMPORT __declspec(dllimport) +# endif + +#elif defined(__GNUC__) +# define Q_CC_GNU (__GNUC__ * 100 + __GNUC_MINOR__) +# if defined(__MINGW32__) +# define Q_CC_MINGW +# endif +# if defined(__INTEL_COMPILER) +/* Intel C++ also masquerades as GCC */ +# define Q_CC_INTEL (__INTEL_COMPILER) +# ifdef __clang__ +/* Intel C++ masquerades as Clang masquerading as GCC */ +# define Q_CC_CLANG 305 +# endif +# define Q_ASSUME_IMPL(expr) __assume(expr) +# define Q_UNREACHABLE_IMPL() __builtin_unreachable() +# if __INTEL_COMPILER >= 1300 && !defined(__APPLE__) +# define Q_DECL_DEPRECATED_X(text) __attribute__ ((__deprecated__(text))) +# endif +# elif defined(__clang__) +/* Clang also masquerades as GCC */ +# if defined(__apple_build_version__) +# /* http://en.wikipedia.org/wiki/Xcode#Toolchain_Versions */ +# if __apple_build_version__ >= 8020041 +# define Q_CC_CLANG 309 +# elif __apple_build_version__ >= 8000038 +# define Q_CC_CLANG 308 +# elif __apple_build_version__ >= 7000053 +# define Q_CC_CLANG 306 +# elif __apple_build_version__ >= 6000051 +# define Q_CC_CLANG 305 +# elif __apple_build_version__ >= 5030038 +# define Q_CC_CLANG 304 +# elif __apple_build_version__ >= 5000275 +# define Q_CC_CLANG 303 +# elif __apple_build_version__ >= 4250024 +# define Q_CC_CLANG 302 +# elif __apple_build_version__ >= 3180045 +# define Q_CC_CLANG 301 +# elif __apple_build_version__ >= 2111001 +# define Q_CC_CLANG 300 +# else +# error "Unknown Apple Clang version" +# endif +# else +# define Q_CC_CLANG ((__clang_major__ * 100) + __clang_minor__) +# endif +# if __has_builtin(__builtin_assume) +# define Q_ASSUME_IMPL(expr) __builtin_assume(expr) +# else +# define Q_ASSUME_IMPL(expr) if (expr){} else __builtin_unreachable() +# endif +# define Q_UNREACHABLE_IMPL() __builtin_unreachable() +# if !defined(__has_extension) +# /* Compatibility with older Clang versions */ +# define __has_extension __has_feature +# endif +# if defined(__APPLE__) + /* Apple/clang specific features */ +# define Q_DECL_CF_RETURNS_RETAINED __attribute__((cf_returns_retained)) +# ifdef __OBJC__ +# define Q_DECL_NS_RETURNS_AUTORELEASED __attribute__((ns_returns_autoreleased)) +# endif +# endif +# else +/* Plain GCC */ +# if Q_CC_GNU >= 405 +# define Q_ASSUME_IMPL(expr) if (expr){} else __builtin_unreachable() +# define Q_UNREACHABLE_IMPL() __builtin_unreachable() +# define Q_DECL_DEPRECATED_X(text) __attribute__ ((__deprecated__(text))) +# endif +# endif + +# ifdef Q_OS_WIN +# define Q_DECL_EXPORT __declspec(dllexport) +# define Q_DECL_IMPORT __declspec(dllimport) +# elif defined(QT_VISIBILITY_AVAILABLE) +# define Q_DECL_EXPORT __attribute__((visibility("default"))) +# define Q_DECL_IMPORT __attribute__((visibility("default"))) +# define Q_DECL_HIDDEN __attribute__((visibility("hidden"))) +# endif + +# define Q_FUNC_INFO __PRETTY_FUNCTION__ +# define Q_ALIGNOF(type) __alignof__(type) +# 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__)) +# define Q_REQUIRED_RESULT __attribute__ ((__warn_unused_result__)) +# define Q_DECL_PURE_FUNCTION __attribute__((pure)) +# define Q_DECL_CONST_FUNCTION __attribute__((const)) +# if !defined(QT_MOC_CPP) +# define Q_PACKED __attribute__ ((__packed__)) +# ifndef __ARM_EABI__ +# define QT_NO_ARM_EABI +# endif +# endif +# if Q_CC_GNU >= 403 && !defined(Q_CC_CLANG) +# define Q_ALLOC_SIZE(x) __attribute__((alloc_size(x))) +# endif + +/* IBM compiler versions are a bit messy. There are actually two products: + the C product, and the C++ product. The C++ compiler is always packaged + with the latest version of the C compiler. Version numbers do not always + match. This little table (I'm not sure it's accurate) should be helpful: + + C++ product C product + + C Set 3.1 C Compiler 3.0 + ... ... + C++ Compiler 3.6.6 C Compiler 4.3 + ... ... + Visual Age C++ 4.0 ... + ... ... + Visual Age C++ 5.0 C Compiler 5.0 + ... ... + Visual Age C++ 6.0 C Compiler 6.0 + + Now: + __xlC__ is the version of the C compiler in hexadecimal notation + is only an approximation of the C++ compiler version + __IBMCPP__ is the version of the C++ compiler in decimal notation + but it is not defined on older compilers like C Set 3.1 */ +#elif defined(__xlC__) +# define Q_CC_XLC +# define Q_FULL_TEMPLATE_INSTANTIATION +# if __xlC__ < 0x400 +# error "Compiler not supported" +# elif __xlC__ >= 0x0600 +# define Q_ALIGNOF(type) __alignof__(type) +# define Q_TYPEOF(expr) __typeof__(expr) +# define Q_DECL_ALIGN(n) __attribute__((__aligned__(n))) +# define Q_PACKED __attribute__((__packed__)) +# endif + +/* Older versions of DEC C++ do not define __EDG__ or __EDG - observed + on DEC C++ V5.5-004. New versions do define __EDG__ - observed on + Compaq C++ V6.3-002. + This compiler is different enough from other EDG compilers to handle + it separately anyway. */ +#elif defined(__DECCXX) || defined(__DECC) +# define Q_CC_DEC +/* Compaq C++ V6 compilers are EDG-based but I'm not sure about older + DEC C++ V5 compilers. */ +# if defined(__EDG__) +# define Q_CC_EDG +# endif +/* Compaq has disabled EDG's _BOOL macro and uses _BOOL_EXISTS instead + - observed on Compaq C++ V6.3-002. + In any case versions prior to Compaq C++ V6.0-005 do not have bool. */ +# if !defined(_BOOL_EXISTS) +# error "Compiler not supported" +# endif +/* Spurious (?) error messages observed on Compaq C++ V6.5-014. */ +/* Apply to all versions prior to Compaq C++ V6.0-000 - observed on + DEC C++ V5.5-004. */ +# if __DECCXX_VER < 60060000 +# define Q_BROKEN_TEMPLATE_SPECIALIZATION +# endif +/* avoid undefined symbol problems with out-of-line template members */ +# define Q_OUTOFLINE_TEMPLATE inline + +/* The Portland Group C++ compiler is based on EDG and does define __EDG__ + but the C compiler does not */ +#elif defined(__PGI) +# define Q_CC_PGI +# if defined(__EDG__) +# define Q_CC_EDG +# endif + +/* Compilers with EDG front end are similar. To detect them we test: + __EDG documented by SGI, observed on MIPSpro 7.3.1.1 and KAI C++ 4.0b + __EDG__ documented in EDG online docs, observed on Compaq C++ V6.3-002 + and PGI C++ 5.2-4 */ +#elif !defined(Q_OS_HPUX) && (defined(__EDG) || defined(__EDG__)) +# define Q_CC_EDG +/* From the EDG documentation (does not seem to apply to Compaq C++ or GHS C): + _BOOL + Defined in C++ mode when bool is a keyword. The name of this + predefined macro is specified by a configuration flag. _BOOL + is the default. + __BOOL_DEFINED + Defined in Microsoft C++ mode when bool is a keyword. */ +# if !defined(_BOOL) && !defined(__BOOL_DEFINED) && !defined(__ghs) +# error "Compiler not supported" +# endif + +/* The Comeau compiler is based on EDG and does define __EDG__ */ +# if defined(__COMO__) +# define Q_CC_COMEAU + +/* The `using' keyword was introduced to avoid KAI C++ warnings + but it's now causing KAI C++ errors instead. The standard is + unclear about the use of this keyword, and in practice every + compiler is using its own set of rules. Forget it. */ +# elif defined(__KCC) +# define Q_CC_KAI + +/* Using the `using' keyword avoids Intel C++ for Linux warnings */ +# elif defined(__INTEL_COMPILER) +# define Q_CC_INTEL (__INTEL_COMPILER) + +/* Uses CFront, make sure to read the manual how to tweak templates. */ +# elif defined(__ghs) +# define Q_CC_GHS +# define Q_DECL_DEPRECATED __attribute__ ((__deprecated__)) +# define Q_PACKED __attribute__ ((__packed__)) +# define Q_FUNC_INFO __PRETTY_FUNCTION__ +# define Q_TYPEOF(expr) __typeof__(expr) +# define Q_ALIGNOF(type) __alignof__(type) +# define Q_UNREACHABLE_IMPL() +# if defined(__cplusplus) +# define Q_COMPILER_AUTO_TYPE +# define Q_COMPILER_STATIC_ASSERT +# define Q_COMPILER_RANGE_FOR +# if __GHS_VERSION_NUMBER >= 201505 +# define Q_COMPILER_ALIGNAS +# define Q_COMPILER_ALIGNOF +# define Q_COMPILER_ATOMICS +# define Q_COMPILER_ATTRIBUTES +# define Q_COMPILER_AUTO_FUNCTION +# define Q_COMPILER_CLASS_ENUM +# define Q_COMPILER_CONSTEXPR +# define Q_COMPILER_DECLTYPE +# define Q_COMPILER_DEFAULT_MEMBERS +# define Q_COMPILER_DELETE_MEMBERS +# define Q_COMPILER_DELEGATING_CONSTRUCTORS +# define Q_COMPILER_EXPLICIT_CONVERSIONS +# define Q_COMPILER_EXPLICIT_OVERRIDES +# define Q_COMPILER_EXTERN_TEMPLATES +# define Q_COMPILER_INHERITING_CONSTRUCTORS +# define Q_COMPILER_INITIALIZER_LISTS +# define Q_COMPILER_LAMBDA +# define Q_COMPILER_NONSTATIC_MEMBER_INIT +# define Q_COMPILER_NOEXCEPT +# define Q_COMPILER_NULLPTR +# define Q_COMPILER_RANGE_FOR +# define Q_COMPILER_RAW_STRINGS +# define Q_COMPILER_REF_QUALIFIERS +# define Q_COMPILER_RVALUE_REFS +# define Q_COMPILER_STATIC_ASSERT +# define Q_COMPILER_TEMPLATE_ALIAS +# define Q_COMPILER_THREAD_LOCAL +# define Q_COMPILER_THREADSAFE_STATICS +# define Q_COMPILER_UDL +# define Q_COMPILER_UNICODE_STRINGS +# define Q_COMPILER_UNIFORM_INIT +# define Q_COMPILER_UNRESTRICTED_UNIONS +# define Q_COMPILER_VARIADIC_MACROS +# define Q_COMPILER_VARIADIC_TEMPLATES +# endif +# endif //__cplusplus + +# elif defined(__DCC__) +# define Q_CC_DIAB +# if !defined(__bool) +# error "Compiler not supported" +# endif + +/* The UnixWare 7 UDK compiler is based on EDG and does define __EDG__ */ +# elif defined(__USLC__) && defined(__SCO_VERSION__) +# define Q_CC_USLC +/* The latest UDK 7.1.1b does not need this, but previous versions do */ +# if !defined(__SCO_VERSION__) || (__SCO_VERSION__ < 302200010) +# define Q_OUTOFLINE_TEMPLATE inline +# endif + +/* Never tested! */ +# elif defined(CENTERLINE_CLPP) || defined(OBJECTCENTER) +# define Q_CC_OC + +/* CDS++ defines __EDG__ although this is not documented in the Reliant + documentation. It also follows conventions like _BOOL and this documented */ +# elif defined(sinix) +# define Q_CC_CDS + +/* The MIPSpro compiler defines __EDG */ +# elif defined(__sgi) +# define Q_CC_MIPS +# define Q_NO_TEMPLATE_FRIENDS +# if defined(_COMPILER_VERSION) && (_COMPILER_VERSION >= 740) +# define Q_OUTOFLINE_TEMPLATE inline +# pragma set woff 3624,3625,3649 /* turn off some harmless warnings */ +# endif +# endif + +/* VxWorks' DIAB toolchain has an additional EDG type C++ compiler + (see __DCC__ above). This one is for C mode files (__EDG is not defined) */ +#elif defined(_DIAB_TOOL) +# define Q_CC_DIAB +# define Q_FUNC_INFO __PRETTY_FUNCTION__ + +/* Never tested! */ +#elif defined(__HIGHC__) +# define Q_CC_HIGHC + +#elif defined(__SUNPRO_CC) || defined(__SUNPRO_C) +# define Q_CC_SUN +# define Q_COMPILER_MANGLES_RETURN_TYPE +/* 5.0 compiler or better + 'bool' is enabled by default but can be disabled using -features=nobool + in which case _BOOL is not defined + this is the default in 4.2 compatibility mode triggered by -compat=4 */ +# if __SUNPRO_CC >= 0x500 +# define QT_NO_TEMPLATE_TEMPLATE_PARAMETERS + /* see http://developers.sun.com/sunstudio/support/Ccompare.html */ +# if __SUNPRO_CC >= 0x590 +# define Q_ALIGNOF(type) __alignof__(type) +# define Q_TYPEOF(expr) __typeof__(expr) +# define Q_DECL_ALIGN(n) __attribute__((__aligned__(n))) +# endif +# if __SUNPRO_CC >= 0x550 +# define Q_DECL_EXPORT __global +# endif +# if __SUNPRO_CC < 0x5a0 +# define Q_NO_TEMPLATE_FRIENDS +# endif +# if !defined(_BOOL) +# error "Compiler not supported" +# endif +/* 4.2 compiler or older */ +# else +# error "Compiler not supported" +# endif + +/* CDS++ does not seem to define __EDG__ or __EDG according to Reliant + documentation but nevertheless uses EDG conventions like _BOOL */ +#elif defined(sinix) +# define Q_CC_EDG +# define Q_CC_CDS +# if !defined(_BOOL) +# error "Compiler not supported" +# endif +# define Q_BROKEN_TEMPLATE_SPECIALIZATION + +#elif defined(Q_OS_HPUX) +/* __HP_aCC was not defined in first aCC releases */ +# if defined(__HP_aCC) || __cplusplus >= 199707L +# define Q_NO_TEMPLATE_FRIENDS +# define Q_CC_HPACC +# define Q_FUNC_INFO __PRETTY_FUNCTION__ +# if __HP_aCC-0 < 060000 +# define QT_NO_TEMPLATE_TEMPLATE_PARAMETERS +# define Q_DECL_EXPORT __declspec(dllexport) +# define Q_DECL_IMPORT __declspec(dllimport) +# endif +# if __HP_aCC-0 >= 061200 +# define Q_DECL_ALIGN(n) __attribute__((aligned(n))) +# endif +# if __HP_aCC-0 >= 062000 +# define Q_DECL_EXPORT __attribute__((visibility("default"))) +# define Q_DECL_HIDDEN __attribute__((visibility("hidden"))) +# define Q_DECL_IMPORT Q_DECL_EXPORT +# endif +# else +# error "Compiler not supported" +# endif + +#else +# error "Qt has not been tested with this compiler - see http://www.qt-project.org/" +#endif + +/* + * C++11 support + * + * Paper Macro SD-6 macro + * N2341 Q_COMPILER_ALIGNAS + * N2341 Q_COMPILER_ALIGNOF + * N2427 Q_COMPILER_ATOMICS + * N2761 Q_COMPILER_ATTRIBUTES __cpp_attributes = 200809 + * N2541 Q_COMPILER_AUTO_FUNCTION + * N1984 N2546 Q_COMPILER_AUTO_TYPE + * N2437 Q_COMPILER_CLASS_ENUM + * N2235 Q_COMPILER_CONSTEXPR __cpp_constexpr = 200704 + * N2343 N3276 Q_COMPILER_DECLTYPE __cpp_decltype = 200707 + * N2346 Q_COMPILER_DEFAULT_MEMBERS + * N2346 Q_COMPILER_DELETE_MEMBERS + * N1986 Q_COMPILER_DELEGATING_CONSTRUCTORS + * N2437 Q_COMPILER_EXPLICIT_CONVERSIONS + * N3206 N3272 Q_COMPILER_EXPLICIT_OVERRIDES + * N1987 Q_COMPILER_EXTERN_TEMPLATES + * N2540 Q_COMPILER_INHERITING_CONSTRUCTORS + * N2672 Q_COMPILER_INITIALIZER_LISTS + * N2658 N2927 Q_COMPILER_LAMBDA __cpp_lambdas = 200907 + * N2756 Q_COMPILER_NONSTATIC_MEMBER_INIT + * N2855 N3050 Q_COMPILER_NOEXCEPT + * N2431 Q_COMPILER_NULLPTR + * N2930 Q_COMPILER_RANGE_FOR + * N2442 Q_COMPILER_RAW_STRINGS __cpp_raw_strings = 200710 + * N2439 Q_COMPILER_REF_QUALIFIERS + * N2118 N2844 N3053 Q_COMPILER_RVALUE_REFS __cpp_rvalue_references = 200610 + * N1720 Q_COMPILER_STATIC_ASSERT __cpp_static_assert = 200410 + * N2258 Q_COMPILER_TEMPLATE_ALIAS + * N2659 Q_COMPILER_THREAD_LOCAL + * N2660 Q_COMPILER_THREADSAFE_STATICS + * N2765 Q_COMPILER_UDL __cpp_user_defined_literals = 200809 + * N2442 Q_COMPILER_UNICODE_STRINGS __cpp_unicode_literals = 200710 + * N2640 Q_COMPILER_UNIFORM_INIT + * N2544 Q_COMPILER_UNRESTRICTED_UNIONS + * N1653 Q_COMPILER_VARIADIC_MACROS + * N2242 N2555 Q_COMPILER_VARIADIC_TEMPLATES __cpp_variadic_templates = 200704 + * + * For any future version of the C++ standard, we use only the SD-6 macro. + * For full listing, see + * http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations + * + * C++ extensions: + * Q_COMPILER_RESTRICTED_VLA variable-length arrays, prior to __cpp_runtime_arrays + */ + +#ifdef __cplusplus +# if __cplusplus < 201103L && !(defined(Q_CC_MSVC) && Q_CC_MSVC >= 1800) +# error Qt requires a C++11 compiler and yours does not seem to be that. +# endif +#endif + +#if defined(Q_CC_INTEL) && !defined(Q_CC_MSVC) +# define Q_COMPILER_RESTRICTED_VLA +# define Q_COMPILER_VARIADIC_MACROS // C++11 feature supported as an extension in other modes, too +# define Q_COMPILER_THREADSAFE_STATICS +# if __INTEL_COMPILER < 1200 +# define Q_NO_TEMPLATE_FRIENDS +# endif +# if __INTEL_COMPILER >= 1310 && !defined(_WIN32) +// ICC supports C++14 binary literals in C, C++98, and C++11 modes +// at least since 13.1, but I can't test further back +# define Q_COMPILER_BINARY_LITERALS +# endif +# if __cplusplus >= 201103L || defined(__INTEL_CXX11_MODE__) +# if __INTEL_COMPILER >= 1200 +# define Q_COMPILER_AUTO_TYPE +# define Q_COMPILER_CLASS_ENUM +# define Q_COMPILER_DECLTYPE +# define Q_COMPILER_DEFAULT_MEMBERS +# define Q_COMPILER_DELETE_MEMBERS +# define Q_COMPILER_EXTERN_TEMPLATES +# define Q_COMPILER_LAMBDA +# define Q_COMPILER_RVALUE_REFS +# define Q_COMPILER_STATIC_ASSERT +# define Q_COMPILER_VARIADIC_MACROS +# endif +# if __INTEL_COMPILER >= 1210 +# define Q_COMPILER_ATTRIBUTES +# define Q_COMPILER_AUTO_FUNCTION +# define Q_COMPILER_NULLPTR +# define Q_COMPILER_TEMPLATE_ALIAS +# ifndef _CHAR16T // MSVC headers +# define Q_COMPILER_UNICODE_STRINGS +# endif +# define Q_COMPILER_VARIADIC_TEMPLATES +# endif +# if __INTEL_COMPILER >= 1300 +# define Q_COMPILER_ATOMICS +// constexpr support is only partial +//# define Q_COMPILER_CONSTEXPR +# define Q_COMPILER_INITIALIZER_LISTS +# define Q_COMPILER_UNIFORM_INIT +# define Q_COMPILER_NOEXCEPT +# endif +# if __INTEL_COMPILER >= 1400 +// causes issues with QArrayData and QtPrivate::RefCount - Intel issue ID 6000056211, bug DPD200534796 +//# define Q_COMPILER_CONSTEXPR +# define Q_COMPILER_DELEGATING_CONSTRUCTORS +# define Q_COMPILER_EXPLICIT_CONVERSIONS +# define Q_COMPILER_EXPLICIT_OVERRIDES +# define Q_COMPILER_NONSTATIC_MEMBER_INIT +# define Q_COMPILER_RANGE_FOR +# define Q_COMPILER_RAW_STRINGS +# define Q_COMPILER_REF_QUALIFIERS +# define Q_COMPILER_UNICODE_STRINGS +# define Q_COMPILER_UNRESTRICTED_UNIONS +# endif +# if __INTEL_COMPILER >= 1500 +# if __INTEL_COMPILER * 100 + __INTEL_COMPILER_UPDATE >= 150001 +// the bug mentioned above is fixed in 15.0.1 +# define Q_COMPILER_CONSTEXPR +# endif +# define Q_COMPILER_ALIGNAS +# define Q_COMPILER_ALIGNOF +# define Q_COMPILER_INHERITING_CONSTRUCTORS +# define Q_COMPILER_THREAD_LOCAL +# define Q_COMPILER_UDL +# endif +# ifdef _MSC_VER +# if _MSC_VER == 1700 +// is missing with MSVC 2012 (it's present in 2010, 2013 and up) +# undef Q_COMPILER_INITIALIZER_LISTS +# endif +# if _MSC_VER < 1900 +// ICC disables unicode string support when compatibility mode with MSVC 2013 or lower is active +# undef Q_COMPILER_UNICODE_STRINGS +// Even though ICC knows about ref-qualified members, MSVC 2013 or lower doesn't, so +// certain member functions (like QString::toUpper) may be missing from the DLLs. +# undef Q_COMPILER_REF_QUALIFIERS +// Disable constexpr unless the MS headers have constexpr in all the right places too +// (like std::numeric_limits::max()) +# undef Q_COMPILER_CONSTEXPR +# endif +# endif +# endif +#endif + +#if defined(Q_CC_CLANG) && !defined(Q_CC_INTEL) && !defined(Q_CC_MSVC) +/* General C++ features */ +# define Q_COMPILER_RESTRICTED_VLA +# define Q_COMPILER_THREADSAFE_STATICS +# if __has_feature(attribute_deprecated_with_message) +# define Q_DECL_DEPRECATED_X(text) __attribute__ ((__deprecated__(text))) +# endif + +// Clang supports binary literals in C, C++98 and C++11 modes +// It's been supported "since the dawn of time itself" (cf. commit 179883) +# if __has_extension(cxx_binary_literals) +# define Q_COMPILER_BINARY_LITERALS +# endif + +// Variadic macros are supported for gnu++98, c++11, c99 ... since 2.9 +# if Q_CC_CLANG >= 209 +# if !defined(__STRICT_ANSI__) || defined(__GXX_EXPERIMENTAL_CXX0X__) \ + || (defined(__cplusplus) && (__cplusplus >= 201103L)) \ + || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) +# define Q_COMPILER_VARIADIC_MACROS +# endif +# endif + +/* C++11 features, see http://clang.llvm.org/cxx_status.html */ +# if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__) + /* Detect C++ features using __has_feature(), see http://clang.llvm.org/docs/LanguageExtensions.html#cxx11 */ +# if __has_feature(cxx_alignas) +# define Q_COMPILER_ALIGNAS +# define Q_COMPILER_ALIGNOF +# endif +# if __has_feature(cxx_atomic) && __has_include() +# define Q_COMPILER_ATOMICS +# endif +# if __has_feature(cxx_attributes) +# define Q_COMPILER_ATTRIBUTES +# endif +# if __has_feature(cxx_auto_type) +# define Q_COMPILER_AUTO_FUNCTION +# define Q_COMPILER_AUTO_TYPE +# endif +# if __has_feature(cxx_strong_enums) +# define Q_COMPILER_CLASS_ENUM +# endif +# if __has_feature(cxx_constexpr) && Q_CC_CLANG > 302 /* CLANG 3.2 has bad/partial support */ +# define Q_COMPILER_CONSTEXPR +# endif +# if __has_feature(cxx_decltype) /* && __has_feature(cxx_decltype_incomplete_return_types) */ +# define Q_COMPILER_DECLTYPE +# endif +# if __has_feature(cxx_defaulted_functions) +# define Q_COMPILER_DEFAULT_MEMBERS +# endif +# if __has_feature(cxx_deleted_functions) +# define Q_COMPILER_DELETE_MEMBERS +# endif +# if __has_feature(cxx_delegating_constructors) +# define Q_COMPILER_DELEGATING_CONSTRUCTORS +# endif +# if __has_feature(cxx_explicit_conversions) +# define Q_COMPILER_EXPLICIT_CONVERSIONS +# endif +# if __has_feature(cxx_override_control) +# define Q_COMPILER_EXPLICIT_OVERRIDES +# endif +# if __has_feature(cxx_inheriting_constructors) +# define Q_COMPILER_INHERITING_CONSTRUCTORS +# endif +# if __has_feature(cxx_generalized_initializers) +# define Q_COMPILER_INITIALIZER_LISTS +# define Q_COMPILER_UNIFORM_INIT /* both covered by this feature macro, according to docs */ +# endif +# if __has_feature(cxx_lambdas) +# define Q_COMPILER_LAMBDA +# endif +# if __has_feature(cxx_noexcept) +# define Q_COMPILER_NOEXCEPT +# endif +# if __has_feature(cxx_nonstatic_member_init) +# define Q_COMPILER_NONSTATIC_MEMBER_INIT +# endif +# if __has_feature(cxx_nullptr) +# define Q_COMPILER_NULLPTR +# endif +# if __has_feature(cxx_range_for) +# define Q_COMPILER_RANGE_FOR +# endif +# if __has_feature(cxx_raw_string_literals) +# define Q_COMPILER_RAW_STRINGS +# endif +# if __has_feature(cxx_reference_qualified_functions) +# define Q_COMPILER_REF_QUALIFIERS +# endif +# if __has_feature(cxx_rvalue_references) +# define Q_COMPILER_RVALUE_REFS +# endif +# if __has_feature(cxx_static_assert) +# define Q_COMPILER_STATIC_ASSERT +# endif +# if __has_feature(cxx_alias_templates) +# define Q_COMPILER_TEMPLATE_ALIAS +# endif +# if __has_feature(cxx_thread_local) +# if !defined(__FreeBSD__) /* FreeBSD clang fails on __cxa_thread_atexit */ +# define Q_COMPILER_THREAD_LOCAL +# endif +# endif +# if __has_feature(cxx_user_literals) +# define Q_COMPILER_UDL +# endif +# if __has_feature(cxx_unicode_literals) +# define Q_COMPILER_UNICODE_STRINGS +# endif +# if __has_feature(cxx_unrestricted_unions) +# define Q_COMPILER_UNRESTRICTED_UNIONS +# endif +# if __has_feature(cxx_variadic_templates) +# define Q_COMPILER_VARIADIC_TEMPLATES +# endif + /* Features that have no __has_feature() check */ +# if Q_CC_CLANG >= 209 /* since clang 2.9 */ +# define Q_COMPILER_EXTERN_TEMPLATES +# endif +# endif + +/* C++1y features, deprecated macros. Do not update this list. */ +# if __cplusplus > 201103L +//# if __has_feature(cxx_binary_literals) +//# define Q_COMPILER_BINARY_LITERALS // see above +//# endif +# if __has_feature(cxx_generic_lambda) +# define Q_COMPILER_GENERIC_LAMBDA +# endif +# if __has_feature(cxx_init_capture) +# define Q_COMPILER_LAMBDA_CAPTURES +# endif +# if __has_feature(cxx_relaxed_constexpr) +# define Q_COMPILER_RELAXED_CONSTEXPR_FUNCTIONS +# endif +# if __has_feature(cxx_decltype_auto) && __has_feature(cxx_return_type_deduction) +# define Q_COMPILER_RETURN_TYPE_DEDUCTION +# endif +# if __has_feature(cxx_variable_templates) +# define Q_COMPILER_VARIABLE_TEMPLATES +# endif +# if __has_feature(cxx_runtime_array) +# define Q_COMPILER_VLA +# endif +# endif + +# if defined(__has_warning) +# if __has_warning("-Wunused-private-field") +# define Q_DECL_UNUSED_MEMBER Q_DECL_UNUSED +# endif +# endif + +#endif // Q_CC_CLANG + +#if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && !defined(Q_CC_CLANG) +# define Q_COMPILER_RESTRICTED_VLA +# define Q_COMPILER_THREADSAFE_STATICS +# if Q_CC_GNU >= 403 +// GCC supports binary literals in C, C++98 and C++11 modes +# define Q_COMPILER_BINARY_LITERALS +# endif +# if !defined(__STRICT_ANSI__) || defined(__GXX_EXPERIMENTAL_CXX0X__) \ + || (defined(__cplusplus) && (__cplusplus >= 201103L)) \ + || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) + // Variadic macros are supported for gnu++98, c++11, C99 ... since forever (gcc 2.97) +# define Q_COMPILER_VARIADIC_MACROS +# endif +# if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L +# if Q_CC_GNU >= 403 + /* C++11 features supported in GCC 4.3: */ +# define Q_COMPILER_DECLTYPE +# define Q_COMPILER_RVALUE_REFS +# define Q_COMPILER_STATIC_ASSERT +# endif +# if Q_CC_GNU >= 404 + /* C++11 features supported in GCC 4.4: */ +# define Q_COMPILER_AUTO_FUNCTION +# define Q_COMPILER_AUTO_TYPE +# define Q_COMPILER_EXTERN_TEMPLATES +# define Q_COMPILER_UNIFORM_INIT +# define Q_COMPILER_UNICODE_STRINGS +# define Q_COMPILER_VARIADIC_TEMPLATES +# endif +# if Q_CC_GNU >= 405 + /* C++11 features supported in GCC 4.5: */ +# define Q_COMPILER_EXPLICIT_CONVERSIONS + /* GCC 4.4 implements initializer_list but does not define typedefs required + * by the standard. */ +# define Q_COMPILER_INITIALIZER_LISTS +# define Q_COMPILER_LAMBDA +# define Q_COMPILER_RAW_STRINGS +# define Q_COMPILER_CLASS_ENUM +# endif +# if Q_CC_GNU >= 406 + /* Pre-4.6 compilers implement a non-final snapshot of N2346, hence default and delete + * functions are supported only if they are public. Starting from 4.6, GCC handles + * final version - the access modifier is not relevant. */ +# define Q_COMPILER_DEFAULT_MEMBERS +# define Q_COMPILER_DELETE_MEMBERS + /* C++11 features supported in GCC 4.6: */ +# define Q_COMPILER_CONSTEXPR +# define Q_COMPILER_NULLPTR +# define Q_COMPILER_UNRESTRICTED_UNIONS +# define Q_COMPILER_RANGE_FOR +# endif +# if Q_CC_GNU >= 407 + /* GCC 4.4 implemented and std::atomic using its old intrinsics. + * However, the implementation is incomplete for most platforms until GCC 4.7: + * instead, std::atomic would use an external lock. Since we need an std::atomic + * that is behavior-compatible with QBasicAtomic, we only enable it here */ +# define Q_COMPILER_ATOMICS + /* GCC 4.6.x has problems dealing with noexcept expressions, + * so turn the feature on for 4.7 and above, only */ +# define Q_COMPILER_NOEXCEPT + /* C++11 features supported in GCC 4.7: */ +# define Q_COMPILER_NONSTATIC_MEMBER_INIT +# define Q_COMPILER_DELEGATING_CONSTRUCTORS +# define Q_COMPILER_EXPLICIT_OVERRIDES +# define Q_COMPILER_TEMPLATE_ALIAS +# define Q_COMPILER_UDL +# endif +# if Q_CC_GNU >= 408 +# define Q_COMPILER_ATTRIBUTES +# define Q_COMPILER_ALIGNAS +# define Q_COMPILER_ALIGNOF +# define Q_COMPILER_INHERITING_CONSTRUCTORS +# define Q_COMPILER_THREAD_LOCAL +# if Q_CC_GNU > 408 || __GNUC_PATCHLEVEL__ >= 1 +# define Q_COMPILER_REF_QUALIFIERS +# endif +# endif + /* C++11 features are complete as of GCC 4.8.1 */ +# endif +# if __cplusplus > 201103L +# if Q_CC_GNU >= 409 + /* C++1y features in GCC 4.9 - deprecated, do not update this list */ +//# define Q_COMPILER_BINARY_LITERALS // already supported since GCC 4.3 as an extension +# define Q_COMPILER_LAMBDA_CAPTURES +# define Q_COMPILER_RETURN_TYPE_DEDUCTION +# endif +# endif +#endif + +#if defined(Q_CC_MSVC) +# if defined(__cplusplus) +# if _MSC_VER >= 1400 + /* C++11 features supported in VC8 = VC2005: */ +# define Q_COMPILER_VARIADIC_MACROS + +# ifndef __cplusplus_cli + /* 2005 supports the override and final contextual keywords, in + the same positions as the C++11 variants, but 'final' is + called 'sealed' instead: + http://msdn.microsoft.com/en-us/library/0w2w91tf%28v=vs.80%29.aspx + The behavior is slightly different in C++/CLI, which requires the + "virtual" keyword to be present too, so don't define for that. + So don't define Q_COMPILER_EXPLICIT_OVERRIDES (since it's not + the same as the C++11 version), but define the Q_DECL_* flags + accordingly: */ +# define Q_DECL_OVERRIDE override +# define Q_DECL_FINAL sealed +# endif +# endif +# if _MSC_VER >= 1600 + /* C++11 features supported in VC10 = VC2010: */ +# define Q_COMPILER_AUTO_FUNCTION +# define Q_COMPILER_AUTO_TYPE +# define Q_COMPILER_DECLTYPE +# define Q_COMPILER_EXTERN_TEMPLATES +# define Q_COMPILER_LAMBDA +# define Q_COMPILER_NULLPTR +# define Q_COMPILER_RVALUE_REFS +# define Q_COMPILER_STATIC_ASSERT +// MSVC's library has std::initializer_list, but the compiler does not support the braces initialization +//# define Q_COMPILER_INITIALIZER_LISTS +//# define Q_COMPILER_UNIFORM_INIT +# endif +# if _MSC_VER >= 1700 + /* C++11 features supported in VC11 = VC2012: */ +# undef Q_DECL_OVERRIDE /* undo 2005/2008 settings... */ +# undef Q_DECL_FINAL /* undo 2005/2008 settings... */ +# define Q_COMPILER_EXPLICIT_OVERRIDES /* ...and use std C++11 now */ +# define Q_COMPILER_CLASS_ENUM +# define Q_COMPILER_ATOMICS +# endif /* VC 11 */ +# if _MSC_VER >= 1800 + /* C++11 features in VC12 = VC2013 */ +/* Implemented, but can't be used on move special members */ +/* # define Q_COMPILER_DEFAULT_MEMBERS */ +# define Q_COMPILER_DELETE_MEMBERS +# define Q_COMPILER_DELEGATING_CONSTRUCTORS +# define Q_COMPILER_EXPLICIT_CONVERSIONS +# define Q_COMPILER_NONSTATIC_MEMBER_INIT +// implemented, but nested initialization fails (eg tst_qvector): http://connect.microsoft.com/VisualStudio/feedback/details/800364/initializer-list-calls-object-destructor-twice +// #define Q_COMPILER_INITIALIZER_LISTS +// implemented in principle, but has a bug that makes it unusable: http://connect.microsoft.com/VisualStudio/feedback/details/802058/c-11-unified-initialization-fails-with-c-style-arrays +// #define Q_COMPILER_UNIFORM_INIT +# define Q_COMPILER_RAW_STRINGS +# define Q_COMPILER_TEMPLATE_ALIAS +# define Q_COMPILER_VARIADIC_TEMPLATES +# endif /* VC 12 */ +# if _MSC_FULL_VER >= 180030324 // VC 12 SP 2 RC +# define Q_COMPILER_INITIALIZER_LISTS +# endif /* VC 12 SP 2 RC */ +# if _MSC_VER >= 1900 + /* C++11 features in VC14 = VC2015 */ +# define Q_COMPILER_DEFAULT_MEMBERS +# define Q_COMPILER_ALIGNAS +# define Q_COMPILER_ALIGNOF +// Partial support, insufficient for Qt +//# define Q_COMPILER_CONSTEXPR +# define Q_COMPILER_INHERITING_CONSTRUCTORS +# define Q_COMPILER_NOEXCEPT +# define Q_COMPILER_RANGE_FOR +# define Q_COMPILER_REF_QUALIFIERS +# define Q_COMPILER_THREAD_LOCAL +// Broken, see QTBUG-47224 and https://connect.microsoft.com/VisualStudio/feedback/details/1549785 +//# define Q_COMPILER_THREADSAFE_STATICS +# define Q_COMPILER_UDL +# define Q_COMPILER_UNICODE_STRINGS +// Uniform initialization is not working yet -- build errors with QUuid +//# define Q_COMPILER_UNIFORM_INIT +# define Q_COMPILER_UNRESTRICTED_UNIONS +# endif +# if _MSC_FULL_VER >= 190023419 +# define Q_COMPILER_ATTRIBUTES +// Almost working, see https://connect.microsoft.com/VisualStudio/feedback/details/2011648 +//# define Q_COMPILER_CONSTEXPR +# define Q_COMPILER_THREADSAFE_STATICS +# define Q_COMPILER_UNIFORM_INIT +# endif +# if _MSC_VER >= 1910 +# define Q_COMPILER_CONSTEXPR +# endif +# endif /* __cplusplus */ +#endif /* Q_CC_MSVC */ + +#ifdef Q_COMPILER_UNICODE_STRINGS +# define Q_STDLIB_UNICODE_STRINGS +#endif + +#ifdef __cplusplus +# include +# if defined(Q_OS_QNX) +// By default, QNX 7.0 uses libc++ (from LLVM) and +// QNX 6.X uses Dinkumware's libcpp. In all versions, +// it is also possible to use GNU libstdc++. + +// For Dinkumware, some features must be disabled +// (mostly because of library problems). +// Dinkumware is assumed when __GLIBCXX__ (GNU libstdc++) +// and _LIBCPP_VERSION (LLVM libc++) are both absent. +# if !defined(__GLIBCXX__) && !defined(_LIBCPP_VERSION) + +// Older versions of libcpp (QNX 650) do not support C++11 features +// _HAS_* macros are set to 1 by toolchains that actually include +// Dinkum C++11 libcpp. + +# if !defined(_HAS_CPP0X) || !_HAS_CPP0X +// Disable C++11 features that depend on library support +# undef Q_COMPILER_INITIALIZER_LISTS +# undef Q_COMPILER_RVALUE_REFS +# undef Q_COMPILER_REF_QUALIFIERS +# undef Q_COMPILER_NOEXCEPT +// Disable C++11 library features: +# undef Q_STDLIB_UNICODE_STRINGS +# endif // !_HAS_CPP0X +# if !defined(_HAS_NULLPTR_T) || !_HAS_NULLPTR_T +# undef Q_COMPILER_NULLPTR +# endif //!_HAS_NULLPTR_T +# if !defined(_HAS_CONSTEXPR) || !_HAS_CONSTEXPR +// The libcpp is missing constexpr keywords on important functions like std::numeric_limits<>::min() +// Disable constexpr support on QNX even if the compiler supports it +# undef Q_COMPILER_CONSTEXPR +# endif // !_HAS_CONSTEXPR +# endif // !__GLIBCXX__ && !_LIBCPP_VERSION +# endif // Q_OS_QNX +# if (defined(Q_CC_CLANG) || defined(Q_CC_INTEL)) && defined(Q_OS_MAC) && defined(__GNUC_LIBSTD__) \ + && ((__GNUC_LIBSTD__-0) * 100 + __GNUC_LIBSTD_MINOR__-0 <= 402) +// Apple has not updated libstdc++ since 2007, which means it does not have +// or std::move. Let's disable these features +# undef Q_COMPILER_INITIALIZER_LISTS +# undef Q_COMPILER_RVALUE_REFS +# undef Q_COMPILER_REF_QUALIFIERS +// Also disable , since it's clearly not there +# undef Q_COMPILER_ATOMICS +# endif +# if defined(Q_CC_CLANG) && defined(Q_CC_INTEL) && Q_CC_INTEL >= 1500 +// ICC 15.x and 16.0 have their own implementation of std::atomic, which is activated when in Clang mode +// (probably because libc++'s on OS X failed to compile), but they're missing some +// critical definitions. (Reported as Intel Issue ID 6000117277) +# define __USE_CONSTEXPR 1 +# define __USE_NOEXCEPT 1 +# endif +# if defined(Q_COMPILER_THREADSAFE_STATICS) && defined(Q_OS_MAC) +// Apple's low-level implementation of the C++ support library +// (libc++abi.dylib, shared between libstdc++ and libc++) has deadlocks. The +// C++11 standard requires the deadlocks to be removed, so this will eventually +// be fixed; for now, let's disable this. +# undef Q_COMPILER_THREADSAFE_STATICS +# endif +#endif + +/* + * SG10's SD-6 feature detection and some useful extensions from Clang and GCC + * https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations + * http://clang.llvm.org/docs/LanguageExtensions.html#feature-checking-macros + */ +#ifdef __has_builtin +# define QT_HAS_BUILTIN(x) __has_builtin(x) +#else +# define QT_HAS_BUILTIN(x) 0 +#endif +#ifdef __has_attribute +# define QT_HAS_ATTRIBUTE(x) __has_attribute(x) +#else +# define QT_HAS_ATTRIBUTE(x) 0 +#endif +#ifdef __has_cpp_attribute +# define QT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x) +#else +# define QT_HAS_CPP_ATTRIBUTE(x) 0 +#endif +#ifdef __has_include +# define QT_HAS_INCLUDE(x) __has_include(x) +#else +# define QT_HAS_INCLUDE(x) 0 +#endif +#ifdef __has_include_next +# define QT_HAS_INCLUDE_NEXT(x) __has_include_next(x) +#else +# define QT_HAS_INCLUDE_NEXT(x) 0 +#endif + +/* + * C++11 keywords and expressions + */ +#ifdef Q_COMPILER_NULLPTR +# define Q_NULLPTR nullptr +#else +# define Q_NULLPTR NULL +#endif + +#ifdef Q_COMPILER_DEFAULT_MEMBERS +# define Q_DECL_EQ_DEFAULT = default +#else +# define Q_DECL_EQ_DEFAULT +#endif + +#ifdef Q_COMPILER_DELETE_MEMBERS +# define Q_DECL_EQ_DELETE = delete +#else +# define Q_DECL_EQ_DELETE +#endif + +// Don't break code that is already using Q_COMPILER_DEFAULT_DELETE_MEMBERS +#if defined(Q_COMPILER_DEFAULT_MEMBERS) && defined(Q_COMPILER_DELETE_MEMBERS) +# define Q_COMPILER_DEFAULT_DELETE_MEMBERS +#endif + +#if defined Q_COMPILER_CONSTEXPR +# if defined(__cpp_constexpr) && __cpp_constexpr-0 >= 201304 +# define Q_DECL_CONSTEXPR constexpr +# define Q_DECL_RELAXED_CONSTEXPR constexpr +# define Q_CONSTEXPR constexpr +# define Q_RELAXED_CONSTEXPR constexpr +# else +# define Q_DECL_CONSTEXPR constexpr +# define Q_DECL_RELAXED_CONSTEXPR +# define Q_CONSTEXPR constexpr +# define Q_RELAXED_CONSTEXPR const +# endif +#else +# define Q_DECL_CONSTEXPR +# define Q_DECL_RELAXED_CONSTEXPR +# define Q_CONSTEXPR const +# define Q_RELAXED_CONSTEXPR const +#endif + +#ifdef Q_COMPILER_EXPLICIT_OVERRIDES +# define Q_DECL_OVERRIDE override +# define Q_DECL_FINAL final +#else +# ifndef Q_DECL_OVERRIDE +# define Q_DECL_OVERRIDE +# endif +# ifndef Q_DECL_FINAL +# define Q_DECL_FINAL +# endif +#endif + +#ifdef Q_COMPILER_NOEXCEPT +# define Q_DECL_NOEXCEPT noexcept +# define Q_DECL_NOEXCEPT_EXPR(x) noexcept(x) +# ifdef Q_DECL_NOTHROW +# undef Q_DECL_NOTHROW /* override with C++11 noexcept if available */ +# endif +#else +# define Q_DECL_NOEXCEPT +# define Q_DECL_NOEXCEPT_EXPR(x) +#endif +#ifndef Q_DECL_NOTHROW +# define Q_DECL_NOTHROW Q_DECL_NOEXCEPT +#endif + +#if defined(Q_COMPILER_ALIGNOF) +# undef Q_ALIGNOF +# define Q_ALIGNOF(x) alignof(x) +#endif + +#if defined(Q_COMPILER_ALIGNAS) +# undef Q_DECL_ALIGN +# define Q_DECL_ALIGN(n) alignas(n) +#endif + +#if QT_HAS_CPP_ATTRIBUTE(nodiscard) && !defined(Q_CC_CLANG) // P0188R1 +// Can't use [[nodiscard]] with Clang, see https://bugs.llvm.org/show_bug.cgi?id=33518 +# undef Q_REQUIRED_RESULT +# define Q_REQUIRED_RESULT [[nodiscard]] +#endif + +/* + * Fallback macros to certain compiler features + */ + +#ifndef Q_NORETURN +# define Q_NORETURN +#endif +#ifndef Q_LIKELY +# define Q_LIKELY(x) (x) +#endif +#ifndef Q_UNLIKELY +# define Q_UNLIKELY(x) (x) +#endif +#ifndef Q_ASSUME_IMPL +# define Q_ASSUME_IMPL(expr) qt_noop() +#endif +#ifndef Q_UNREACHABLE_IMPL +# define Q_UNREACHABLE_IMPL() qt_noop() +#endif +#ifndef Q_ALLOC_SIZE +# define Q_ALLOC_SIZE(x) +#endif +#ifndef Q_REQUIRED_RESULT +# define Q_REQUIRED_RESULT +#endif +#ifndef Q_DECL_DEPRECATED +# define Q_DECL_DEPRECATED +#endif +#ifndef Q_DECL_VARIABLE_DEPRECATED +# define Q_DECL_VARIABLE_DEPRECATED Q_DECL_DEPRECATED +#endif +#ifndef Q_DECL_DEPRECATED_X +# define Q_DECL_DEPRECATED_X(text) Q_DECL_DEPRECATED +#endif +#ifndef Q_DECL_EXPORT +# define Q_DECL_EXPORT +#endif +#ifndef Q_DECL_IMPORT +# define Q_DECL_IMPORT +#endif +#ifndef Q_DECL_HIDDEN +# define Q_DECL_HIDDEN +#endif +#ifndef Q_DECL_UNUSED +# define Q_DECL_UNUSED +#endif +#ifndef Q_DECL_UNUSED_MEMBER +# define Q_DECL_UNUSED_MEMBER +#endif +#ifndef Q_FUNC_INFO +# if defined(Q_OS_SOLARIS) || defined(Q_CC_XLC) +# define Q_FUNC_INFO __FILE__ "(line number unavailable)" +# else +# define Q_FUNC_INFO __FILE__ ":" QT_STRINGIFY(__LINE__) +# endif +#endif +#ifndef Q_DECL_CF_RETURNS_RETAINED +# define Q_DECL_CF_RETURNS_RETAINED +#endif +#ifndef Q_DECL_NS_RETURNS_AUTORELEASED +# define Q_DECL_NS_RETURNS_AUTORELEASED +#endif +#ifndef Q_DECL_PURE_FUNCTION +# define Q_DECL_PURE_FUNCTION +#endif +#ifndef Q_DECL_CONST_FUNCTION +# define Q_DECL_CONST_FUNCTION Q_DECL_PURE_FUNCTION +#endif +#ifndef QT_MAKE_UNCHECKED_ARRAY_ITERATOR +# define QT_MAKE_UNCHECKED_ARRAY_ITERATOR(x) (x) +#endif +#ifndef QT_MAKE_CHECKED_ARRAY_ITERATOR +# define QT_MAKE_CHECKED_ARRAY_ITERATOR(x, N) (x) +#endif +#ifdef __has_feature +# define QT_HAS_FEATURE(x) __has_feature(x) +#else +# define QT_HAS_FEATURE(x) 0 +#endif + +/* + * Warning/diagnostic handling + */ + +#define QT_DO_PRAGMA(text) _Pragma(#text) +#if defined(Q_CC_INTEL) && defined(Q_CC_MSVC) +/* icl.exe: Intel compiler on Windows */ +# undef QT_DO_PRAGMA /* not needed */ +# define QT_WARNING_PUSH __pragma(warning(push)) +# define QT_WARNING_POP __pragma(warning(pop)) +# define QT_WARNING_DISABLE_MSVC(number) +# define QT_WARNING_DISABLE_INTEL(number) __pragma(warning(disable: number)) +# define QT_WARNING_DISABLE_CLANG(text) +# define QT_WARNING_DISABLE_GCC(text) +# define QT_WARNING_DISABLE_DEPRECATED QT_WARNING_DISABLE_INTEL(1478 1786) +#elif defined(Q_CC_INTEL) +/* icc: Intel compiler on Linux or OS X */ +# define QT_WARNING_PUSH QT_DO_PRAGMA(warning(push)) +# define QT_WARNING_POP QT_DO_PRAGMA(warning(pop)) +# define QT_WARNING_DISABLE_INTEL(number) QT_DO_PRAGMA(warning(disable: number)) +# define QT_WARNING_DISABLE_MSVC(number) +# define QT_WARNING_DISABLE_CLANG(text) +# define QT_WARNING_DISABLE_GCC(text) +# define QT_WARNING_DISABLE_DEPRECATED QT_WARNING_DISABLE_INTEL(1478 1786) +#elif defined(Q_CC_MSVC) && _MSC_VER >= 1500 && !defined(Q_CC_CLANG) +# undef QT_DO_PRAGMA /* not needed */ +# define QT_WARNING_PUSH __pragma(warning(push)) +# define QT_WARNING_POP __pragma(warning(pop)) +# define QT_WARNING_DISABLE_MSVC(number) __pragma(warning(disable: number)) +# define QT_WARNING_DISABLE_INTEL(number) +# define QT_WARNING_DISABLE_CLANG(text) +# define QT_WARNING_DISABLE_GCC(text) +# define QT_WARNING_DISABLE_DEPRECATED QT_WARNING_DISABLE_MSVC(4996) +#elif defined(Q_CC_CLANG) +# define QT_WARNING_PUSH QT_DO_PRAGMA(clang diagnostic push) +# define QT_WARNING_POP QT_DO_PRAGMA(clang diagnostic pop) +# define QT_WARNING_DISABLE_CLANG(text) QT_DO_PRAGMA(clang diagnostic ignored text) +# define QT_WARNING_DISABLE_GCC(text) +# define QT_WARNING_DISABLE_INTEL(number) +# define QT_WARNING_DISABLE_MSVC(number) +# define QT_WARNING_DISABLE_DEPRECATED QT_WARNING_DISABLE_CLANG("-Wdeprecated-declarations") +#elif defined(Q_CC_GNU) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406) +# define QT_WARNING_PUSH QT_DO_PRAGMA(GCC diagnostic push) +# define QT_WARNING_POP QT_DO_PRAGMA(GCC diagnostic pop) +# define QT_WARNING_DISABLE_GCC(text) QT_DO_PRAGMA(GCC diagnostic ignored text) +# define QT_WARNING_DISABLE_CLANG(text) +# define QT_WARNING_DISABLE_INTEL(number) +# define QT_WARNING_DISABLE_MSVC(number) +# define QT_WARNING_DISABLE_DEPRECATED QT_WARNING_DISABLE_GCC("-Wdeprecated-declarations") +#else // All other compilers, GCC < 4.6 and MSVC < 2008 +# define QT_WARNING_DISABLE_GCC(text) +# define QT_WARNING_PUSH +# define QT_WARNING_POP +# define QT_WARNING_DISABLE_INTEL(number) +# define QT_WARNING_DISABLE_MSVC(number) +# define QT_WARNING_DISABLE_CLANG(text) +# define QT_WARNING_DISABLE_GCC(text) +# define QT_WARNING_DISABLE_DEPRECATED +#endif + +/* + Proper for-scoping in MIPSpro CC +*/ +#ifndef QT_NO_KEYWORDS +# if defined(Q_CC_MIPS) || (defined(Q_CC_HPACC) && defined(__ia64)) +# define for if (0) {} else for +# endif +#endif + +#ifdef Q_COMPILER_RVALUE_REFS +#define qMove(x) std::move(x) +#else +#define qMove(x) (x) +#endif + +#define Q_UNREACHABLE() \ + do {\ + Q_ASSERT_X(false, "Q_UNREACHABLE()", "Q_UNREACHABLE was reached");\ + Q_UNREACHABLE_IMPL();\ + } while (false) + +#define Q_ASSUME(Expr) \ + do {\ + const bool valueOfExpression = Expr;\ + Q_ASSERT_X(valueOfExpression, "Q_ASSUME()", "Assumption in Q_ASSUME(\"" #Expr "\") was not correct");\ + Q_ASSUME_IMPL(valueOfExpression);\ + } while (false) + +#if defined(__cplusplus) +#if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough) +# define Q_FALLTHROUGH() [[clang::fallthrough]] +#elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough) +# define Q_FALLTHROUGH() [[gnu::fallthrough]] +#elif QT_HAS_CPP_ATTRIBUTE(fallthrough) +# define Q_FALLTHROUGH() [[fallthrough]] +#endif +#endif +#ifndef Q_FALLTHROUGH +# if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL) +# define Q_FALLTHROUGH() __attribute__((fallthrough)) +# else +# define Q_FALLTHROUGH() (void)0 +#endif +#endif + + +/* + Sanitize compiler feature availability +*/ +#if !defined(Q_PROCESSOR_X86) +# undef QT_COMPILER_SUPPORTS_SSE2 +# undef QT_COMPILER_SUPPORTS_SSE3 +# undef QT_COMPILER_SUPPORTS_SSSE3 +# undef QT_COMPILER_SUPPORTS_SSE4_1 +# undef QT_COMPILER_SUPPORTS_SSE4_2 +# undef QT_COMPILER_SUPPORTS_AVX +# undef QT_COMPILER_SUPPORTS_AVX2 +#endif +#if !defined(Q_PROCESSOR_ARM) +# undef QT_COMPILER_SUPPORTS_NEON +#endif +#if !defined(Q_PROCESSOR_MIPS) +# undef QT_COMPILER_SUPPORTS_MIPS_DSP +# undef QT_COMPILER_SUPPORTS_MIPS_DSPR2 +#endif + +#endif // QCOMPILERDETECTION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qconfig-bootstrapped.h b/qrenderdoc/3rdparty/qt/include/QtCore/qconfig-bootstrapped.h new file mode 100644 index 000000000..05a492fb9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qconfig-bootstrapped.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// 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. +// +// Despite its file name, this really is not a public header. +// It is an implementation detail of the private bootstrap library. +// + +#if 0 +// silence syncqt warnings +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + +#ifdef QT_BOOTSTRAPPED + +#ifndef QT_NO_EXCEPTIONS +#define QT_NO_EXCEPTIONS +#endif + +#define QT_NO_USING_NAMESPACE +#define QT_NO_DEPRECATED + +// Keep feature-test macros in alphabetic order by feature name: +#define QT_FEATURE_alloca 1 +#define QT_FEATURE_alloca_h -1 +#ifdef _WIN32 +# define QT_FEATURE_alloca_malloc_h 1 +#else +# define QT_FEATURE_alloca_malloc_h -1 +#endif +#define QT_CRYPTOGRAPHICHASH_ONLY_SHA1 +#define QT_NO_DATASTREAM +#define QT_FEATURE_datetimeparser -1 +#define QT_NO_GEOM_VARIANT +#define QT_FEATURE_iconv -1 +#define QT_FEATURE_icu -1 +#define QT_FEATURE_journald -1 +#define QT_FEATURE_library -1 +#define QT_NO_QOBJECT +#define QT_FEATURE_process -1 +#define QT_FEATURE_sharedmemory -1 +#define QT_FEATURE_slog2 -1 +#define QT_FEATURE_syslog -1 +#define QT_NO_SYSTEMLOCALE +#define QT_FEATURE_systemsemaphore -1 +#define QT_FEATURE_temporaryfile 1 +#define QT_NO_THREAD +#define QT_FEATURE_timezone -1 +#define QT_FEATURE_topleveldomain -1 +#define QT_NO_TRANSLATION +#define QT_FEATURE_translation -1 + +#ifdef QT_BUILD_QMAKE +#define QT_FEATURE_commandlineparser -1 +#define QT_NO_COMPRESS +#define QT_JSON_READONLY +#define QT_NO_STANDARDPATHS +#define QT_NO_TEXTCODEC +#define QT_FEATURE_textcodec -1 +#else +#define QT_NO_CODECS +#define QT_FEATURE_codecs -1 +#define QT_FEATURE_commandlineparser 1 +#define QT_FEATURE_textcodec 1 +#endif + +#endif // QT_BOOTSTRAPPED diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qconfig.h b/qrenderdoc/3rdparty/qt/include/QtCore/qconfig.h new file mode 100644 index 000000000..54715e012 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qconfig.h @@ -0,0 +1,29 @@ +#define QT_FEATURE_cross_compile -1 +#define QT_FEATURE_framework -1 +#define QT_FEATURE_rpath -1 +#define QT_FEATURE_shared 1 +#define QT_FEATURE_appstore_compliant -1 +#define QT_COMPILER_SUPPORTS_SSE2 1 +#define QT_COMPILER_SUPPORTS_SSE3 1 +#define QT_COMPILER_SUPPORTS_SSSE3 1 +#define QT_COMPILER_SUPPORTS_SSE4_1 1 +#define QT_COMPILER_SUPPORTS_SSE4_2 1 +#define QT_COMPILER_SUPPORTS_AVX 1 +#define QT_COMPILER_SUPPORTS_AVX2 1 +#define QT_FEATURE_debug_and_release 1 +#define QT_FEATURE_build_all 1 +#define QT_FEATURE_c__11 1 +#define QT_FEATURE_c__14 -1 +#define QT_FEATURE_c__1z -1 +#define QT_FEATURE_concurrent 1 +#define QT_FEATURE_pkg_config -1 +#define QT_COMPILER_SUPPORTS_F16C 1 +#define QT_FEATURE_force_asserts -1 +#define QT_LARGEFILE_SUPPORT 64 +#define QT_FEATURE_separate_debug_info -1 +#define QT_FEATURE_simulator_and_device -1 +#define QT_FEATURE_static -1 +#define QT_VERSION_STR "5.9.4" +#define QT_VERSION_MAJOR 5 +#define QT_VERSION_MINOR 9 +#define QT_VERSION_PATCH 4 diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qcontainerfwd.h b/qrenderdoc/3rdparty/qt/include/QtCore/qcontainerfwd.h new file mode 100644 index 000000000..646d8908c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qcontainerfwd.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCONTAINERFWD_H +#define QCONTAINERFWD_H + +#include + +QT_BEGIN_NAMESPACE + + +template class QCache; +template class QHash; +template class QLinkedList; +template class QList; +template class QMap; +template class QMultiHash; +template class QMultiMap; +template struct QPair; +template class QQueue; +template class QSet; +template class QStack; +template class QVarLengthArray; +template class QVector; + +QT_END_NAMESPACE + +#endif // QCONTAINERFWD_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qcontiguouscache.h b/qrenderdoc/3rdparty/qt/include/QtCore/qcontiguouscache.h new file mode 100644 index 000000000..18facf7e4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qcontiguouscache.h @@ -0,0 +1,465 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCONTIGUOUSCACHE_H +#define QCONTIGUOUSCACHE_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#undef QT_QCONTIGUOUSCACHE_DEBUG + + +struct Q_CORE_EXPORT QContiguousCacheData +{ + QBasicAtomicInt ref; + int alloc; + int count; + int start; + int offset; + uint sharable : 1; + uint reserved : 31; + + // total is 24 bytes (HP-UX aCC: 40 bytes) + // the next entry is already aligned to 8 bytes + // there will be an 8 byte gap here if T requires 16-byte alignment + // (such as long double on 64-bit platforms, __int128, __float128) + + static QContiguousCacheData *allocateData(int size, int alignment); + static void freeData(QContiguousCacheData *data); + +#ifdef QT_QCONTIGUOUSCACHE_DEBUG + void dump() const; +#endif +}; + +template +struct QContiguousCacheTypedData: private QContiguousCacheData +{ + // private inheritance to avoid aliasing warningss + T array[1]; + + static inline void freeData(QContiguousCacheTypedData *data) { QContiguousCacheData::freeData(data); } +}; + +template +class QContiguousCache { + typedef QContiguousCacheTypedData Data; + union { QContiguousCacheData *d; QContiguousCacheTypedData *p; }; +public: + // STL compatibility + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef qptrdiff difference_type; + typedef int size_type; + + explicit QContiguousCache(int capacity = 0); + QContiguousCache(const QContiguousCache &v) : d(v.d) { d->ref.ref(); if (!d->sharable) detach_helper(); } + + inline ~QContiguousCache() { if (!d) return; if (!d->ref.deref()) freeData(p); } + + inline void detach() { if (d->ref.load() != 1) detach_helper(); } + inline bool isDetached() const { return d->ref.load() == 1; } +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; } +#endif + + QContiguousCache &operator=(const QContiguousCache &other); +#ifdef Q_COMPILER_RVALUE_REFS + inline QContiguousCache &operator=(QContiguousCache &&other) + { qSwap(d, other.d); return *this; } +#endif + inline void swap(QContiguousCache &other) { qSwap(d, other.d); } + bool operator==(const QContiguousCache &other) const; + inline bool operator!=(const QContiguousCache &other) const { return !(*this == other); } + + inline int capacity() const {return d->alloc; } + inline int count() const { return d->count; } + inline int size() const { return d->count; } + + inline bool isEmpty() const { return d->count == 0; } + inline bool isFull() const { return d->count == d->alloc; } + inline int available() const { return d->alloc - d->count; } + + void clear(); + void setCapacity(int size); + + const T &at(int pos) const; + T &operator[](int i); + const T &operator[](int i) const; + + void append(const T &value); + void prepend(const T &value); + void insert(int pos, const T &value); + + inline bool containsIndex(int pos) const { return pos >= d->offset && pos - d->offset < d->count; } + inline int firstIndex() const { return d->offset; } + inline int lastIndex() const { return d->offset + d->count - 1; } + + inline const T &first() const { Q_ASSERT(!isEmpty()); return p->array[d->start]; } + inline const T &last() const { Q_ASSERT(!isEmpty()); return p->array[(d->start + d->count -1) % d->alloc]; } + inline T &first() { Q_ASSERT(!isEmpty()); detach(); return p->array[d->start]; } + inline T &last() { Q_ASSERT(!isEmpty()); detach(); return p->array[(d->start + d->count -1) % d->alloc]; } + + void removeFirst(); + T takeFirst(); + void removeLast(); + T takeLast(); + + inline bool areIndexesValid() const + { return d->offset >= 0 && d->offset < INT_MAX - d->count && (d->offset % d->alloc) == d->start; } + + inline void normalizeIndexes() { d->offset = d->start; } + +#ifdef QT_QCONTIGUOUSCACHE_DEBUG + void dump() const { p->dump(); } +#endif +private: + void detach_helper(); + + QContiguousCacheData *allocateData(int aalloc); + void freeData(Data *x); + int sizeOfTypedData() { + // this is more or less the same as sizeof(Data), except that it doesn't + // count the padding at the end + return reinterpret_cast(&(reinterpret_cast(this))->array[1]) - reinterpret_cast(this); + } + int alignOfTypedData() const + { + return qMax(sizeof(void*), Q_ALIGNOF(Data)); + } +}; + +template +void QContiguousCache::detach_helper() +{ + union { QContiguousCacheData *d; QContiguousCacheTypedData *p; } x; + + x.d = allocateData(d->alloc); + x.d->ref.store(1); + x.d->count = d->count; + x.d->start = d->start; + x.d->offset = d->offset; + x.d->alloc = d->alloc; + x.d->sharable = true; + x.d->reserved = 0; + + T *dest = x.p->array + x.d->start; + T *src = p->array + d->start; + int oldcount = x.d->count; + while (oldcount--) { + if (QTypeInfo::isComplex) { + new (dest) T(*src); + } else { + *dest = *src; + } + dest++; + if (dest == x.p->array + x.d->alloc) + dest = x.p->array; + src++; + if (src == p->array + d->alloc) + src = p->array; + } + + if (!d->ref.deref()) + freeData(p); + d = x.d; +} + +template +void QContiguousCache::setCapacity(int asize) +{ + if (asize == d->alloc) + return; + detach(); + union { QContiguousCacheData *d; QContiguousCacheTypedData *p; } x; + x.d = allocateData(asize); + x.d->alloc = asize; + x.d->count = qMin(d->count, asize); + x.d->offset = d->offset + d->count - x.d->count; + if(asize) + x.d->start = x.d->offset % x.d->alloc; + else + x.d->start = 0; + + int oldcount = x.d->count; + if(oldcount) + { + T *dest = x.p->array + (x.d->start + x.d->count-1) % x.d->alloc; + T *src = p->array + (d->start + d->count-1) % d->alloc; + while (oldcount--) { + if (QTypeInfo::isComplex) { + new (dest) T(*src); + } else { + *dest = *src; + } + if (dest == x.p->array) + dest = x.p->array + x.d->alloc; + dest--; + if (src == p->array) + src = p->array + d->alloc; + src--; + } + } + /* free old */ + freeData(p); + d = x.d; +} + +template +void QContiguousCache::clear() +{ + if (d->ref.load() == 1) { + if (QTypeInfo::isComplex) { + int oldcount = d->count; + T * i = p->array + d->start; + T * e = p->array + d->alloc; + while (oldcount--) { + i->~T(); + i++; + if (i == e) + i = p->array; + } + } + d->count = d->start = d->offset = 0; + } else { + union { QContiguousCacheData *d; QContiguousCacheTypedData *p; } x; + x.d = allocateData(d->alloc); + x.d->ref.store(1); + x.d->alloc = d->alloc; + x.d->count = x.d->start = x.d->offset = 0; + x.d->sharable = true; + if (!d->ref.deref()) freeData(p); + d = x.d; + } +} + +template +inline QContiguousCacheData *QContiguousCache::allocateData(int aalloc) +{ + return QContiguousCacheData::allocateData(sizeOfTypedData() + (aalloc - 1) * sizeof(T), alignOfTypedData()); +} + +template +QContiguousCache::QContiguousCache(int cap) +{ + d = allocateData(cap); + d->ref.store(1); + d->alloc = cap; + d->count = d->start = d->offset = 0; + d->sharable = true; +} + +template +QContiguousCache &QContiguousCache::operator=(const QContiguousCache &other) +{ + other.d->ref.ref(); + if (!d->ref.deref()) + freeData(p); + d = other.d; + if (!d->sharable) + detach_helper(); + return *this; +} + +template +bool QContiguousCache::operator==(const QContiguousCache &other) const +{ + if (other.d == d) + return true; + if (other.d->start != d->start + || other.d->count != d->count + || other.d->offset != d->offset + || other.d->alloc != d->alloc) + return false; + for (int i = firstIndex(); i <= lastIndex(); ++i) + if (!(at(i) == other.at(i))) + return false; + return true; +} + +template +void QContiguousCache::freeData(Data *x) +{ + if (QTypeInfo::isComplex) { + int oldcount = d->count; + T * i = p->array + d->start; + T * e = p->array + d->alloc; + while (oldcount--) { + i->~T(); + i++; + if (i == e) + i = p->array; + } + } + x->freeData(x); +} +template +void QContiguousCache::append(const T &value) +{ + if (!d->alloc) + return; // zero capacity + detach(); + if (QTypeInfo::isComplex) { + if (d->count == d->alloc) + (p->array + (d->start+d->count) % d->alloc)->~T(); + new (p->array + (d->start+d->count) % d->alloc) T(value); + } else { + p->array[(d->start+d->count) % d->alloc] = value; + } + + if (d->count == d->alloc) { + d->start++; + d->start %= d->alloc; + d->offset++; + } else { + d->count++; + } +} + +template +void QContiguousCache::prepend(const T &value) +{ + if (!d->alloc) + return; // zero capacity + detach(); + if (d->start) + d->start--; + else + d->start = d->alloc-1; + d->offset--; + + if (d->count != d->alloc) + d->count++; + else + if (d->count == d->alloc) + (p->array + d->start)->~T(); + + if (QTypeInfo::isComplex) + new (p->array + d->start) T(value); + else + p->array[d->start] = value; +} + +template +void QContiguousCache::insert(int pos, const T &value) +{ + Q_ASSERT_X(pos >= 0 && pos < INT_MAX, "QContiguousCache::insert", "index out of range"); + if (!d->alloc) + return; // zero capacity + detach(); + if (containsIndex(pos)) { + if (QTypeInfo::isComplex) { + (p->array + pos % d->alloc)->~T(); + new (p->array + pos % d->alloc) T(value); + } else { + p->array[pos % d->alloc] = value; + } + } else if (pos == d->offset-1) + prepend(value); + else if (pos == d->offset+d->count) + append(value); + else { + // we don't leave gaps. + clear(); + d->offset = pos; + d->start = pos % d->alloc; + d->count = 1; + if (QTypeInfo::isComplex) + new (p->array + d->start) T(value); + else + p->array[d->start] = value; + } +} + +template +inline const T &QContiguousCache::at(int pos) const +{ Q_ASSERT_X(pos >= d->offset && pos - d->offset < d->count, "QContiguousCache::at", "index out of range"); return p->array[pos % d->alloc]; } +template +inline const T &QContiguousCache::operator[](int pos) const +{ Q_ASSERT_X(pos >= d->offset && pos - d->offset < d->count, "QContiguousCache::at", "index out of range"); return p->array[pos % d->alloc]; } + +template +inline T &QContiguousCache::operator[](int pos) +{ + detach(); + if (!containsIndex(pos)) + insert(pos, T()); + return p->array[pos % d->alloc]; +} + +template +inline void QContiguousCache::removeFirst() +{ + Q_ASSERT(d->count > 0); + detach(); + d->count--; + if (QTypeInfo::isComplex) + (p->array + d->start)->~T(); + d->start = (d->start + 1) % d->alloc; + d->offset++; +} + +template +inline void QContiguousCache::removeLast() +{ + Q_ASSERT(d->count > 0); + detach(); + d->count--; + if (QTypeInfo::isComplex) + (p->array + (d->start + d->count) % d->alloc)->~T(); +} + +template +inline T QContiguousCache::takeFirst() +{ T t = first(); removeFirst(); return t; } + +template +inline T QContiguousCache::takeLast() +{ T t = last(); removeLast(); return t; } + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qcoreapplication.h b/qrenderdoc/3rdparty/qt/include/QtCore/qcoreapplication.h new file mode 100644 index 000000000..0fee7b3de --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qcoreapplication.h @@ -0,0 +1,277 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOREAPPLICATION_H +#define QCOREAPPLICATION_H + +#include +#include +#ifndef QT_NO_QOBJECT +#include +#include +#include +#else +#include +#endif + +#ifndef QT_NO_QOBJECT +#if defined(Q_OS_WIN) && !defined(tagMSG) +typedef struct tagMSG MSG; +#endif +#endif + +QT_BEGIN_NAMESPACE + + +class QCoreApplicationPrivate; +class QTextCodec; +class QTranslator; +class QPostEventList; +class QStringList; +class QAbstractEventDispatcher; +class QAbstractNativeEventFilter; + +#define qApp QCoreApplication::instance() + +class Q_CORE_EXPORT QCoreApplication +#ifndef QT_NO_QOBJECT + : public QObject +#endif +{ +#ifndef QT_NO_QOBJECT + Q_OBJECT + Q_PROPERTY(QString applicationName READ applicationName WRITE setApplicationName NOTIFY applicationNameChanged) + Q_PROPERTY(QString applicationVersion READ applicationVersion WRITE setApplicationVersion NOTIFY applicationVersionChanged) + Q_PROPERTY(QString organizationName READ organizationName WRITE setOrganizationName NOTIFY organizationNameChanged) + Q_PROPERTY(QString organizationDomain READ organizationDomain WRITE setOrganizationDomain NOTIFY organizationDomainChanged) + Q_PROPERTY(bool quitLockEnabled READ isQuitLockEnabled WRITE setQuitLockEnabled) +#endif + + Q_DECLARE_PRIVATE(QCoreApplication) +public: + enum { ApplicationFlags = QT_VERSION + }; + + QCoreApplication(int &argc, char **argv +#ifndef Q_QDOC + , int = ApplicationFlags +#endif + ); + + ~QCoreApplication(); + + static QStringList arguments(); + + static void setAttribute(Qt::ApplicationAttribute attribute, bool on = true); + static bool testAttribute(Qt::ApplicationAttribute attribute); + + static void setOrganizationDomain(const QString &orgDomain); + static QString organizationDomain(); + static void setOrganizationName(const QString &orgName); + static QString organizationName(); + static void setApplicationName(const QString &application); + static QString applicationName(); + static void setApplicationVersion(const QString &version); + static QString applicationVersion(); + + static void setSetuidAllowed(bool allow); + static bool isSetuidAllowed(); + + 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); + static void exit(int retcode=0); + + static bool sendEvent(QObject *receiver, QEvent *event); + static void postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority); + static void sendPostedEvents(QObject *receiver = Q_NULLPTR, int event_type = 0); + static void removePostedEvents(QObject *receiver, int eventType = 0); +#if QT_DEPRECATED_SINCE(5, 3) + QT_DEPRECATED static bool hasPendingEvents(); +#endif + static QAbstractEventDispatcher *eventDispatcher(); + static void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher); + + virtual bool notify(QObject *, QEvent *); + + static bool startingUp(); + static bool closingDown(); +#endif + + static QString applicationDirPath(); + static QString applicationFilePath(); + static qint64 applicationPid(); + +#if QT_CONFIG(library) + static void setLibraryPaths(const QStringList &); + static QStringList libraryPaths(); + static void addLibraryPath(const QString &); + static void removeLibraryPath(const QString &); +#endif // QT_CONFIG(library) + +#ifndef QT_NO_TRANSLATION + static bool installTranslator(QTranslator * messageFile); + static bool removeTranslator(QTranslator * messageFile); +#endif + + static QString translate(const char * context, + const char * key, + const char * disambiguation = Q_NULLPTR, + int n = -1); +#if QT_DEPRECATED_SINCE(5, 0) + enum Encoding { UnicodeUTF8, Latin1, DefaultCodec = UnicodeUTF8, CodecForTr = UnicodeUTF8 }; + QT_DEPRECATED static inline QString translate(const char * context, const char * key, + const char * disambiguation, Encoding, int n = -1) + { return translate(context, key, disambiguation, n); } +#endif + +#ifndef QT_NO_QOBJECT +# if QT_DEPRECATED_SINCE(5, 9) + QT_DEPRECATED static void flush(); +# endif + + void installNativeEventFilter(QAbstractNativeEventFilter *filterObj); + void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj); + + static bool isQuitLockEnabled(); + static void setQuitLockEnabled(bool enabled); + +public Q_SLOTS: + static void quit(); + +Q_SIGNALS: + void aboutToQuit(QPrivateSignal); + + void organizationNameChanged(); + void organizationDomainChanged(); + void applicationNameChanged(); + void applicationVersionChanged(); + +protected: + bool event(QEvent *) Q_DECL_OVERRIDE; + + virtual bool compressEvent(QEvent *, QObject *receiver, QPostEventList *); +#endif // QT_NO_QOBJECT + +protected: + QCoreApplication(QCoreApplicationPrivate &p); + +#ifdef QT_NO_QOBJECT + QScopedPointer d_ptr; +#endif + +private: +#ifndef QT_NO_QOBJECT + static bool sendSpontaneousEvent(QObject *receiver, QEvent *event); +# if QT_DEPRECATED_SINCE(5,6) + QT_DEPRECATED bool notifyInternal(QObject *receiver, QEvent *event); // ### Qt6 BIC: remove me +# endif + static bool notifyInternal2(QObject *receiver, QEvent *); +#endif + + static QCoreApplication *self; + + Q_DISABLE_COPY(QCoreApplication) + + friend class QApplication; + friend class QApplicationPrivate; + friend class QGuiApplication; + friend class QGuiApplicationPrivate; + 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 notifyInternal2(receiver, event); } + +inline bool QCoreApplication::sendSpontaneousEvent(QObject *receiver, QEvent *event) +{ if (event) event->spont = true; return notifyInternal2(receiver, event); } +#endif + +#ifdef QT_NO_DEPRECATED +# define QT_DECLARE_DEPRECATED_TR_FUNCTIONS(context) +#else +# define QT_DECLARE_DEPRECATED_TR_FUNCTIONS(context) \ + QT_DEPRECATED static inline QString trUtf8(const char *sourceText, const char *disambiguation = Q_NULLPTR, 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 = Q_NULLPTR, 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 + +#endif // QCOREAPPLICATION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qcoreevent.h b/qrenderdoc/3rdparty/qt/include/QtCore/qcoreevent.h new file mode 100644 index 000000000..ac974ba41 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qcoreevent.h @@ -0,0 +1,387 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOREEVENT_H +#define QCOREEVENT_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class QEventPrivate; +class Q_CORE_EXPORT QEvent // event base class +{ + Q_GADGET + QDOC_PROPERTY(bool accepted READ isAccepted WRITE setAccepted) +public: + enum Type { + /* + If you get a strange compiler error on the line with None, + it's probably because you're also including X11 headers, + which #define the symbol None. Put the X11 includes after + the Qt includes to solve this problem. + */ + None = 0, // invalid event + Timer = 1, // timer event + MouseButtonPress = 2, // mouse button pressed + MouseButtonRelease = 3, // mouse button released + MouseButtonDblClick = 4, // mouse button double click + MouseMove = 5, // mouse move + KeyPress = 6, // key pressed + KeyRelease = 7, // key released + FocusIn = 8, // keyboard focus received + FocusOut = 9, // keyboard focus lost + FocusAboutToChange = 23, // keyboard focus is about to be lost + Enter = 10, // mouse enters widget + Leave = 11, // mouse leaves widget + Paint = 12, // paint widget + Move = 13, // move widget + Resize = 14, // resize widget + Create = 15, // after widget creation + Destroy = 16, // during widget destruction + Show = 17, // widget is shown + Hide = 18, // widget is hidden + Close = 19, // request to close widget + Quit = 20, // request to quit application + ParentChange = 21, // widget has been reparented + ParentAboutToChange = 131, // sent just before the parent change is done + ThreadChange = 22, // object has changed threads + WindowActivate = 24, // window was activated + WindowDeactivate = 25, // window was deactivated + ShowToParent = 26, // widget is shown to parent + HideToParent = 27, // widget is hidden to parent + Wheel = 31, // wheel event + WindowTitleChange = 33, // window title changed + WindowIconChange = 34, // icon changed + ApplicationWindowIconChange = 35, // application icon changed + ApplicationFontChange = 36, // application font changed + ApplicationLayoutDirectionChange = 37, // application layout direction changed + ApplicationPaletteChange = 38, // application palette changed + PaletteChange = 39, // widget palette changed + Clipboard = 40, // internal clipboard event + Speech = 42, // reserved for speech input + MetaCall = 43, // meta call event + SockAct = 50, // socket activation + WinEventAct = 132, // win event activation + DeferredDelete = 52, // deferred delete event + DragEnter = 60, // drag moves into widget + DragMove = 61, // drag moves in widget + DragLeave = 62, // drag leaves or is cancelled + Drop = 63, // actual drop + DragResponse = 64, // drag accepted/rejected + ChildAdded = 68, // new child widget + ChildPolished = 69, // polished child widget + ChildRemoved = 71, // deleted child widget + ShowWindowRequest = 73, // widget's window should be mapped + PolishRequest = 74, // widget should be polished + Polish = 75, // widget is polished + LayoutRequest = 76, // widget should be relayouted + UpdateRequest = 77, // widget should be repainted + UpdateLater = 78, // request update() later + + EmbeddingControl = 79, // ActiveX embedding + ActivateControl = 80, // ActiveX activation + DeactivateControl = 81, // ActiveX deactivation + ContextMenu = 82, // context popup menu + InputMethod = 83, // input method + TabletMove = 87, // Wacom tablet event + LocaleChange = 88, // the system locale changed + LanguageChange = 89, // the application language changed + LayoutDirectionChange = 90, // the layout direction changed + Style = 91, // internal style event + TabletPress = 92, // tablet press + TabletRelease = 93, // tablet release + OkRequest = 94, // CE (Ok) button pressed + HelpRequest = 95, // CE (?) button pressed + + IconDrag = 96, // proxy icon dragged + + FontChange = 97, // font has changed + EnabledChange = 98, // enabled state has changed + ActivationChange = 99, // window activation has changed + StyleChange = 100, // style has changed + IconTextChange = 101, // icon text has changed. Deprecated. + ModifiedChange = 102, // modified state has changed + MouseTrackingChange = 109, // mouse tracking state has changed + + WindowBlocked = 103, // window is about to be blocked modally + WindowUnblocked = 104, // windows modal blocking has ended + WindowStateChange = 105, + + ReadOnlyChange = 106, // readonly state has changed + + ToolTip = 110, + WhatsThis = 111, + StatusTip = 112, + + ActionChanged = 113, + ActionAdded = 114, + ActionRemoved = 115, + + FileOpen = 116, // file open request + + Shortcut = 117, // shortcut triggered + ShortcutOverride = 51, // shortcut override request + + WhatsThisClicked = 118, + + ToolBarChange = 120, // toolbar visibility toggled + + ApplicationActivate = 121, // deprecated. Use ApplicationStateChange instead. + ApplicationActivated = ApplicationActivate, // deprecated + ApplicationDeactivate = 122, // deprecated. Use ApplicationStateChange instead. + ApplicationDeactivated = ApplicationDeactivate, // deprecated + + QueryWhatsThis = 123, // query what's this widget help + EnterWhatsThisMode = 124, + LeaveWhatsThisMode = 125, + + ZOrderChange = 126, // child widget has had its z-order changed + + HoverEnter = 127, // mouse cursor enters a hover widget + HoverLeave = 128, // mouse cursor leaves a hover widget + HoverMove = 129, // mouse cursor move inside a hover widget + + // last event id used = 132 + +#ifdef QT_KEYPAD_NAVIGATION + EnterEditFocus = 150, // enter edit mode in keypad navigation + LeaveEditFocus = 151, // enter edit mode in keypad navigation +#endif + AcceptDropsChange = 152, + + ZeroTimerEvent = 154, // Used for Windows Zero timer events + + GraphicsSceneMouseMove = 155, // GraphicsView + GraphicsSceneMousePress = 156, + GraphicsSceneMouseRelease = 157, + GraphicsSceneMouseDoubleClick = 158, + GraphicsSceneContextMenu = 159, + GraphicsSceneHoverEnter = 160, + GraphicsSceneHoverMove = 161, + GraphicsSceneHoverLeave = 162, + GraphicsSceneHelp = 163, + GraphicsSceneDragEnter = 164, + GraphicsSceneDragMove = 165, + GraphicsSceneDragLeave = 166, + GraphicsSceneDrop = 167, + GraphicsSceneWheel = 168, + + KeyboardLayoutChange = 169, // keyboard layout changed + + DynamicPropertyChange = 170, // A dynamic property was changed through setProperty/property + + TabletEnterProximity = 171, + TabletLeaveProximity = 172, + + NonClientAreaMouseMove = 173, + NonClientAreaMouseButtonPress = 174, + NonClientAreaMouseButtonRelease = 175, + NonClientAreaMouseButtonDblClick = 176, + + MacSizeChange = 177, // when the Qt::WA_Mac{Normal,Small,Mini}Size changes + + ContentsRectChange = 178, // sent by QWidget::setContentsMargins (internal) + + MacGLWindowChange = 179, // Internal! the window of the GLWidget has changed + + FutureCallOut = 180, + + GraphicsSceneResize = 181, + GraphicsSceneMove = 182, + + CursorChange = 183, + ToolTipChange = 184, + + NetworkReplyUpdated = 185, // Internal for QNetworkReply + + GrabMouse = 186, + UngrabMouse = 187, + GrabKeyboard = 188, + UngrabKeyboard = 189, + MacGLClearDrawable = 191, // Internal Cocoa, the window has changed, so we must clear + + StateMachineSignal = 192, + StateMachineWrapped = 193, + + TouchBegin = 194, + TouchUpdate = 195, + TouchEnd = 196, + +#ifndef QT_NO_GESTURES + NativeGesture = 197, // QtGui native gesture +#endif + RequestSoftwareInputPanel = 199, + CloseSoftwareInputPanel = 200, + + WinIdChange = 203, +#ifndef QT_NO_GESTURES + Gesture = 198, + GestureOverride = 202, +#endif + ScrollPrepare = 204, + Scroll = 205, + + Expose = 206, + + InputMethodQuery = 207, + OrientationChange = 208, // Screen orientation has changed + + TouchCancel = 209, + + ThemeChange = 210, + + SockClose = 211, // socket closed + + PlatformPanel = 212, + + StyleAnimationUpdate = 213, // style animation target should be updated + ApplicationStateChange = 214, + + WindowChangeInternal = 215, // internal for QQuickWidget + ScreenChangeInternal = 216, + + PlatformSurface = 217, // Platform surface created or about to be destroyed + + Pointer = 218, // QQuickPointerEvent; ### Qt 6: QPointerEvent + + TabletTrackingChange = 219, // tablet tracking state has changed + + // 512 reserved for Qt Jambi's MetaCall event + // 513 reserved for Qt Jambi's DeleteOnMainThread event + + User = 1000, // first user event id + MaxUser = 65535 // last user event id + }; + Q_ENUM(Type) + + explicit QEvent(Type type); + QEvent(const QEvent &other); + virtual ~QEvent(); + QEvent &operator=(const QEvent &other); + inline Type type() const { return static_cast(t); } + inline bool spontaneous() const { return spont; } + + inline void setAccepted(bool accepted) { m_accept = accepted; } + inline bool isAccepted() const { return m_accept; } + + inline void accept() { m_accept = true; } + inline void ignore() { m_accept = false; } + + static int registerEventType(int hint = -1) Q_DECL_NOTHROW; + +protected: + QEventPrivate *d; + ushort t; + +private: + ushort posted : 1; + ushort spont : 1; + ushort m_accept : 1; + ushort reserved : 13; + + friend class QCoreApplication; + friend class QCoreApplicationPrivate; + friend class QThreadData; + friend class QApplication; + friend class QShortcutMap; + friend class QGraphicsView; + friend class QGraphicsScene; + friend class QGraphicsScenePrivate; + // from QtTest: + friend class QSpontaneKeyEvent; + // needs this: + Q_ALWAYS_INLINE + void setSpontaneous() { spont = true; } +}; + +class Q_CORE_EXPORT QTimerEvent : public QEvent +{ +public: + explicit QTimerEvent( int timerId ); + ~QTimerEvent(); + int timerId() const { return id; } +protected: + int id; +}; + +class QObject; + +class Q_CORE_EXPORT QChildEvent : public QEvent +{ +public: + QChildEvent( Type type, QObject *child ); + ~QChildEvent(); + QObject *child() const { return c; } + bool added() const { return type() == ChildAdded; } + bool polished() const { return type() == ChildPolished; } + bool removed() const { return type() == ChildRemoved; } +protected: + QObject *c; +}; + +class Q_CORE_EXPORT QDynamicPropertyChangeEvent : public QEvent +{ +public: + explicit QDynamicPropertyChangeEvent(const QByteArray &name); + ~QDynamicPropertyChangeEvent(); + + inline QByteArray propertyName() const { return n; } + +private: + QByteArray n; +}; + +class Q_CORE_EXPORT QDeferredDeleteEvent : public QEvent +{ +public: + explicit QDeferredDeleteEvent(); + ~QDeferredDeleteEvent(); + int loopLevel() const { return level; } +private: + int level; + friend class QCoreApplication; +}; + +QT_END_NAMESPACE + +#endif // QCOREEVENT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qcryptographichash.h b/qrenderdoc/3rdparty/qt/include/QtCore/qcryptographichash.h new file mode 100644 index 000000000..2f74d4240 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qcryptographichash.h @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2013 Richard J. Moore . +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCRYPTOGRAPHICHASH_H +#define QCRYPTOGRAPHICHASH_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +class QCryptographicHashPrivate; +class QIODevice; + +class Q_CORE_EXPORT QCryptographicHash +{ + Q_GADGET +public: + enum Algorithm { +#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 + Md4, + Md5, +#endif + Sha1 = 2, +#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 + Sha224, + Sha256, + Sha384, + Sha512, + + Keccak_224 = 7, + Keccak_256, + Keccak_384, + Keccak_512, + RealSha3_224 = 11, + RealSha3_256, + RealSha3_384, + RealSha3_512, +# ifndef QT_SHA3_KECCAK_COMPAT + Sha3_224 = RealSha3_224, + Sha3_256 = RealSha3_256, + Sha3_384 = RealSha3_384, + Sha3_512 = RealSha3_512 +# else + Sha3_224 = Keccak_224, + Sha3_256 = Keccak_256, + Sha3_384 = Keccak_384, + Sha3_512 = Keccak_512 +# endif +#endif + }; + Q_ENUM(Algorithm) + + explicit QCryptographicHash(Algorithm method); + ~QCryptographicHash(); + + void reset(); + + void addData(const char *data, int length); + void addData(const QByteArray &data); + bool addData(QIODevice* device); + + QByteArray result() const; + + static QByteArray hash(const QByteArray &data, Algorithm method); +private: + Q_DISABLE_COPY(QCryptographicHash) + QCryptographicHashPrivate *d; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qdatastream.h b/qrenderdoc/3rdparty/qt/include/QtCore/qdatastream.h new file mode 100644 index 000000000..575607e14 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qdatastream.h @@ -0,0 +1,464 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDATASTREAM_H +#define QDATASTREAM_H + +#include +#include +#include + +#ifdef Status +#error qdatastream.h must be included before any header file that defines Status +#endif + +QT_BEGIN_NAMESPACE + +class qfloat16; +class QByteArray; +class QIODevice; + +template class QList; +template class QLinkedList; +template class QVector; +template class QSet; +template class QHash; +template class QMap; + +#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED) +class QDataStreamPrivate; +namespace QtPrivate { +class StreamStateSaver; +} +class Q_CORE_EXPORT QDataStream +{ +public: + enum Version { + Qt_1_0 = 1, + Qt_2_0 = 2, + Qt_2_1 = 3, + Qt_3_0 = 4, + Qt_3_1 = 5, + Qt_3_3 = 6, + Qt_4_0 = 7, + Qt_4_1 = Qt_4_0, + Qt_4_2 = 8, + Qt_4_3 = 9, + Qt_4_4 = 10, + Qt_4_5 = 11, + Qt_4_6 = 12, + Qt_4_7 = Qt_4_6, + Qt_4_8 = Qt_4_7, + Qt_4_9 = Qt_4_8, + Qt_5_0 = 13, + Qt_5_1 = 14, + Qt_5_2 = 15, + Qt_5_3 = Qt_5_2, + Qt_5_4 = 16, + Qt_5_5 = Qt_5_4, + Qt_5_6 = 17, + Qt_5_7 = Qt_5_6, + Qt_5_8 = Qt_5_7, + Qt_5_9 = Qt_5_8, +#if QT_VERSION >= 0x050a00 +#error Add the datastream version for this Qt version and update Qt_DefaultCompiledVersion +#endif + Qt_DefaultCompiledVersion = Qt_5_9 + }; + + enum ByteOrder { + BigEndian = QSysInfo::BigEndian, + LittleEndian = QSysInfo::LittleEndian + }; + + enum Status { + Ok, + ReadPastEnd, + ReadCorruptData, + WriteFailed + }; + + enum FloatingPointPrecision { + SinglePrecision, + DoublePrecision + }; + + QDataStream(); + explicit QDataStream(QIODevice *); + QDataStream(QByteArray *, QIODevice::OpenMode flags); + QDataStream(const QByteArray &); + ~QDataStream(); + + QIODevice *device() const; + void setDevice(QIODevice *); + void unsetDevice(); + + bool atEnd() const; + + Status status() const; + void setStatus(Status status); + void resetStatus(); + + FloatingPointPrecision floatingPointPrecision() const; + void setFloatingPointPrecision(FloatingPointPrecision precision); + + ByteOrder byteOrder() const; + void setByteOrder(ByteOrder); + + int version() const; + void setVersion(int); + + QDataStream &operator>>(qint8 &i); + QDataStream &operator>>(quint8 &i); + QDataStream &operator>>(qint16 &i); + QDataStream &operator>>(quint16 &i); + QDataStream &operator>>(qint32 &i); + QDataStream &operator>>(quint32 &i); + QDataStream &operator>>(qint64 &i); + QDataStream &operator>>(quint64 &i); + QDataStream &operator>>(std::nullptr_t &ptr) { ptr = nullptr; return *this; } + + QDataStream &operator>>(bool &i); + QDataStream &operator>>(qfloat16 &f); + QDataStream &operator>>(float &f); + QDataStream &operator>>(double &f); + QDataStream &operator>>(char *&str); + + QDataStream &operator<<(qint8 i); + QDataStream &operator<<(quint8 i); + QDataStream &operator<<(qint16 i); + QDataStream &operator<<(quint16 i); + QDataStream &operator<<(qint32 i); + QDataStream &operator<<(quint32 i); + QDataStream &operator<<(qint64 i); + QDataStream &operator<<(quint64 i); + QDataStream &operator<<(std::nullptr_t) { return *this; } + QDataStream &operator<<(bool i); + QDataStream &operator<<(qfloat16 f); + QDataStream &operator<<(float f); + QDataStream &operator<<(double f); + QDataStream &operator<<(const char *str); + + QDataStream &readBytes(char *&, uint &len); + int readRawData(char *, int len); + + QDataStream &writeBytes(const char *, uint len); + int writeRawData(const char *, int len); + + int skipRawData(int len); + + void startTransaction(); + bool commitTransaction(); + void rollbackTransaction(); + void abortTransaction(); + +private: + Q_DISABLE_COPY(QDataStream) + + QScopedPointer d; + + QIODevice *dev; + bool owndev; + bool noswap; + ByteOrder byteorder; + int ver; + Status q_status; + + int readBlock(char *data, int len); + friend class QtPrivate::StreamStateSaver; +}; + +namespace QtPrivate { + +class StreamStateSaver +{ +public: + inline StreamStateSaver(QDataStream *s) : stream(s), oldStatus(s->status()) + { + if (!stream->dev || !stream->dev->isTransactionStarted()) + stream->resetStatus(); + } + inline ~StreamStateSaver() + { + if (oldStatus != QDataStream::Ok) { + stream->resetStatus(); + stream->setStatus(oldStatus); + } + } + +private: + QDataStream *stream; + QDataStream::Status oldStatus; +}; + +template +QDataStream &readArrayBasedContainer(QDataStream &s, Container &c) +{ + StreamStateSaver stateSaver(&s); + + c.clear(); + quint32 n; + s >> n; + c.reserve(n); + for (quint32 i = 0; i < n; ++i) { + typename Container::value_type t; + s >> t; + if (s.status() != QDataStream::Ok) { + c.clear(); + break; + } + c.append(t); + } + + return s; +} + +template +QDataStream &readListBasedContainer(QDataStream &s, Container &c) +{ + StreamStateSaver stateSaver(&s); + + c.clear(); + quint32 n; + s >> n; + for (quint32 i = 0; i < n; ++i) { + typename Container::value_type t; + s >> t; + if (s.status() != QDataStream::Ok) { + c.clear(); + break; + } + c << t; + } + + return s; +} + +template +QDataStream &readAssociativeContainer(QDataStream &s, Container &c) +{ + StreamStateSaver stateSaver(&s); + + c.clear(); + quint32 n; + s >> n; + for (quint32 i = 0; i < n; ++i) { + typename Container::key_type k; + typename Container::mapped_type t; + s >> k >> t; + if (s.status() != QDataStream::Ok) { + c.clear(); + break; + } + c.insertMulti(k, t); + } + + return s; +} + +template +QDataStream &writeSequentialContainer(QDataStream &s, const Container &c) +{ + s << quint32(c.size()); + for (const typename Container::value_type &t : c) + s << t; + + return s; +} + +template +QDataStream &writeAssociativeContainer(QDataStream &s, const Container &c) +{ + s << quint32(c.size()); + // Deserialization should occur in the reverse order. + // Otherwise, value() will return the least recently inserted + // value instead of the most recently inserted one. + auto it = c.constEnd(); + auto begin = c.constBegin(); + while (it != begin) { + --it; + s << it.key() << it.value(); + } + + return s; +} + +} // QtPrivate namespace + +/***************************************************************************** + QDataStream inline functions + *****************************************************************************/ + +inline QIODevice *QDataStream::device() const +{ return dev; } + +inline QDataStream::ByteOrder QDataStream::byteOrder() const +{ return byteorder; } + +inline int QDataStream::version() const +{ return ver; } + +inline void QDataStream::setVersion(int v) +{ ver = v; } + +inline QDataStream &QDataStream::operator>>(quint8 &i) +{ return *this >> reinterpret_cast(i); } + +inline QDataStream &QDataStream::operator>>(quint16 &i) +{ return *this >> reinterpret_cast(i); } + +inline QDataStream &QDataStream::operator>>(quint32 &i) +{ return *this >> reinterpret_cast(i); } + +inline QDataStream &QDataStream::operator>>(quint64 &i) +{ return *this >> reinterpret_cast(i); } + +inline QDataStream &QDataStream::operator<<(quint8 i) +{ return *this << qint8(i); } + +inline QDataStream &QDataStream::operator<<(quint16 i) +{ return *this << qint16(i); } + +inline QDataStream &QDataStream::operator<<(quint32 i) +{ return *this << qint32(i); } + +inline QDataStream &QDataStream::operator<<(quint64 i) +{ return *this << qint64(i); } + +template +inline QDataStream &operator<<(QDataStream &s, QFlags e) +{ return s << e.i; } + +template +inline QDataStream &operator>>(QDataStream &s, QFlags &e) +{ return s >> e.i; } + +template +inline QDataStream &operator>>(QDataStream &s, QList &l) +{ + return QtPrivate::readArrayBasedContainer(s, l); +} + +template +inline QDataStream &operator<<(QDataStream &s, const QList &l) +{ + return QtPrivate::writeSequentialContainer(s, l); +} + +template +inline QDataStream &operator>>(QDataStream &s, QLinkedList &l) +{ + return QtPrivate::readListBasedContainer(s, l); +} + +template +inline QDataStream &operator<<(QDataStream &s, const QLinkedList &l) +{ + return QtPrivate::writeSequentialContainer(s, l); +} + +template +inline QDataStream &operator>>(QDataStream &s, QVector &v) +{ + return QtPrivate::readArrayBasedContainer(s, v); +} + +template +inline QDataStream &operator<<(QDataStream &s, const QVector &v) +{ + return QtPrivate::writeSequentialContainer(s, v); +} + +template +inline QDataStream &operator>>(QDataStream &s, QSet &set) +{ + return QtPrivate::readListBasedContainer(s, set); +} + +template +inline QDataStream &operator<<(QDataStream &s, const QSet &set) +{ + return QtPrivate::writeSequentialContainer(s, set); +} + +template +inline QDataStream &operator>>(QDataStream &s, QHash &hash) +{ + return QtPrivate::readAssociativeContainer(s, hash); +} + +template +inline QDataStream &operator<<(QDataStream &s, const QHash &hash) +{ + return QtPrivate::writeAssociativeContainer(s, hash); +} + +template +inline QDataStream &operator>>(QDataStream &s, QMap &map) +{ + return QtPrivate::readAssociativeContainer(s, map); +} + +template +inline QDataStream &operator<<(QDataStream &s, const QMap &map) +{ + return QtPrivate::writeAssociativeContainer(s, map); +} + +#ifndef QT_NO_DATASTREAM +template +inline QDataStream& operator>>(QDataStream& s, QPair& p) +{ + s >> p.first >> p.second; + return s; +} + +template +inline QDataStream& operator<<(QDataStream& s, const QPair& p) +{ + s << p.first << p.second; + return s; +} +#endif + +#endif // QT_NO_DATASTREAM + +QT_END_NAMESPACE + +#endif // QDATASTREAM_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qdatetime.h b/qrenderdoc/3rdparty/qt/include/QtCore/qdatetime.h new file mode 100644 index 000000000..2518dc730 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qdatetime.h @@ -0,0 +1,405 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDATETIME_H +#define QDATETIME_H + +#include +#include +#include + +#include + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) +Q_FORWARD_DECLARE_CF_TYPE(CFDate); +Q_FORWARD_DECLARE_OBJC_CLASS(NSDate); +#endif + +QT_BEGIN_NAMESPACE + +class QTimeZone; + +class Q_CORE_EXPORT QDate +{ +public: + enum MonthNameType { + DateFormat = 0, + StandaloneFormat + }; +private: + explicit Q_DECL_CONSTEXPR QDate(qint64 julianDay) : jd(julianDay) {} +public: + Q_DECL_CONSTEXPR QDate() : jd(nullJd()) {} + QDate(int y, int m, int d); + + Q_DECL_CONSTEXPR bool isNull() const { return !isValid(); } + Q_DECL_CONSTEXPR bool isValid() const { return jd >= minJd() && jd <= maxJd(); } + + int year() const; + int month() const; + int day() const; + int dayOfWeek() const; + int dayOfYear() const; + int daysInMonth() const; + int daysInYear() const; + int weekNumber(int *yearNum = Q_NULLPTR) const; + +#ifndef QT_NO_TEXTDATE + static QString shortMonthName(int month, MonthNameType type = DateFormat); + static QString shortDayName(int weekday, MonthNameType type = DateFormat); + static QString longMonthName(int month, MonthNameType type = DateFormat); + static QString longDayName(int weekday, MonthNameType type = DateFormat); +#endif // QT_NO_TEXTDATE +#ifndef QT_NO_DATESTRING + QString toString(Qt::DateFormat f = Qt::TextDate) const; + QString toString(const QString &format) const; +#endif +#if QT_DEPRECATED_SINCE(5,0) +QT_DEPRECATED inline bool setYMD(int y, int m, int d) +{ if (uint(y) <= 99) y += 1900; return setDate(y, m, d); } +#endif + + bool setDate(int year, int month, int day); + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void getDate(int *year, int *month, int *day); // ### Qt 6: remove +#endif // < Qt 6 + void getDate(int *year, int *month, int *day) const; + + Q_REQUIRED_RESULT QDate addDays(qint64 days) const; + Q_REQUIRED_RESULT QDate addMonths(int months) const; + Q_REQUIRED_RESULT QDate addYears(int years) const; + qint64 daysTo(const QDate &) const; + + Q_DECL_CONSTEXPR bool operator==(const QDate &other) const { return jd == other.jd; } + Q_DECL_CONSTEXPR bool operator!=(const QDate &other) const { return jd != other.jd; } + Q_DECL_CONSTEXPR bool operator< (const QDate &other) const { return jd < other.jd; } + Q_DECL_CONSTEXPR bool operator<=(const QDate &other) const { return jd <= other.jd; } + Q_DECL_CONSTEXPR bool operator> (const QDate &other) const { return jd > other.jd; } + Q_DECL_CONSTEXPR bool operator>=(const QDate &other) const { return jd >= other.jd; } + + static QDate currentDate(); +#ifndef QT_NO_DATESTRING + static QDate fromString(const QString &s, Qt::DateFormat f = Qt::TextDate); + static QDate fromString(const QString &s, const QString &format); +#endif + static bool isValid(int y, int m, int d); + static bool isLeapYear(int year); + + static Q_DECL_CONSTEXPR inline QDate fromJulianDay(qint64 jd_) + { return jd_ >= minJd() && jd_ <= maxJd() ? QDate(jd_) : QDate() ; } + Q_DECL_CONSTEXPR inline qint64 toJulianDay() const { return jd; } + +private: + // using extra parentheses around min to avoid expanding it if it is a macro + static Q_DECL_CONSTEXPR inline qint64 nullJd() { return (std::numeric_limits::min)(); } + static Q_DECL_CONSTEXPR inline qint64 minJd() { return Q_INT64_C(-784350574879); } + static Q_DECL_CONSTEXPR inline qint64 maxJd() { return Q_INT64_C( 784354017364); } + + qint64 jd; + + friend class QDateTime; + friend class QDateTimePrivate; +#ifndef QT_NO_DATASTREAM + friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QDate &); + friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QDate &); +#endif +}; +Q_DECLARE_TYPEINFO(QDate, Q_MOVABLE_TYPE); + +class Q_CORE_EXPORT QTime +{ + explicit Q_DECL_CONSTEXPR QTime(int ms) : mds(ms) + {} +public: + Q_DECL_CONSTEXPR QTime(): mds(NullTime) + {} + QTime(int h, int m, int s = 0, int ms = 0); + + Q_DECL_CONSTEXPR bool isNull() const { return mds == NullTime; } + bool isValid() const; + + int hour() const; + int minute() const; + int second() const; + int msec() const; +#ifndef QT_NO_DATESTRING + QString toString(Qt::DateFormat f = Qt::TextDate) const; + QString toString(const QString &format) const; +#endif + bool setHMS(int h, int m, int s, int ms = 0); + + Q_REQUIRED_RESULT QTime addSecs(int secs) const; + int secsTo(const QTime &) const; + Q_REQUIRED_RESULT QTime addMSecs(int ms) const; + int msecsTo(const QTime &) const; + + Q_DECL_CONSTEXPR bool operator==(const QTime &other) const { return mds == other.mds; } + Q_DECL_CONSTEXPR bool operator!=(const QTime &other) const { return mds != other.mds; } + Q_DECL_CONSTEXPR bool operator< (const QTime &other) const { return mds < other.mds; } + Q_DECL_CONSTEXPR bool operator<=(const QTime &other) const { return mds <= other.mds; } + Q_DECL_CONSTEXPR bool operator> (const QTime &other) const { return mds > other.mds; } + Q_DECL_CONSTEXPR bool operator>=(const QTime &other) const { return mds >= other.mds; } + + static Q_DECL_CONSTEXPR inline QTime fromMSecsSinceStartOfDay(int msecs) { return QTime(msecs); } + Q_DECL_CONSTEXPR inline int msecsSinceStartOfDay() const { return mds == NullTime ? 0 : mds; } + + static QTime currentTime(); +#ifndef QT_NO_DATESTRING + static QTime fromString(const QString &s, Qt::DateFormat f = Qt::TextDate); + static QTime fromString(const QString &s, const QString &format); +#endif + static bool isValid(int h, int m, int s, int ms = 0); + + void start(); + int restart(); + int elapsed() const; +private: + enum TimeFlag { NullTime = -1 }; + Q_DECL_CONSTEXPR inline int ds() const { return mds == -1 ? 0 : mds; } + int mds; + + friend class QDateTime; + friend class QDateTimePrivate; +#ifndef QT_NO_DATASTREAM + friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QTime &); + friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QTime &); +#endif +}; +Q_DECLARE_TYPEINFO(QTime, Q_MOVABLE_TYPE); + +class QDateTimePrivate; + +class Q_CORE_EXPORT QDateTime +{ + // ### Qt 6: revisit the optimization + struct ShortData { +#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN + quintptr status : 8; +#endif + // note: this is only 24 bits on 32-bit systems... + qintptr msecs : sizeof(void *) * 8 - 8; + +#if Q_BYTE_ORDER == Q_BIG_ENDIAN + quintptr status : 8; +#endif + }; + + union Data { + enum { + // To be of any use, we need at least 60 years around 1970, which + // is 1,893,456,000,000 ms. That requires 41 bits to store, plus + // the sign bit. With the status byte, the minimum size is 50 bits. + CanBeSmall = sizeof(ShortData) * 8 > 50 + }; + + Data(); + Data(Qt::TimeSpec); + Data(const Data &other); + Data(Data &&other); + Data &operator=(const Data &other); + ~Data(); + + bool isShort() const; + void detach(); + + const QDateTimePrivate *operator->() const; + QDateTimePrivate *operator->(); + + QDateTimePrivate *d; + ShortData data; + }; + +public: + QDateTime() Q_DECL_NOEXCEPT_EXPR(Data::CanBeSmall); + explicit QDateTime(const QDate &); + QDateTime(const QDate &, const QTime &, Qt::TimeSpec spec = Qt::LocalTime); + // ### Qt 6: Merge with above with default offsetSeconds = 0 + QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec, int offsetSeconds); +#if QT_CONFIG(timezone) + QDateTime(const QDate &date, const QTime &time, const QTimeZone &timeZone); +#endif // timezone + QDateTime(const QDateTime &other) Q_DECL_NOTHROW; + QDateTime(QDateTime &&other) Q_DECL_NOTHROW; + ~QDateTime(); + +#ifdef Q_COMPILER_RVALUE_REFS + QDateTime &operator=(QDateTime &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QDateTime &operator=(const QDateTime &other) Q_DECL_NOTHROW; + + void swap(QDateTime &other) Q_DECL_NOTHROW { qSwap(d.d, other.d.d); } + + bool isNull() const; + bool isValid() const; + + QDate date() const; + QTime time() const; + Qt::TimeSpec timeSpec() const; + int offsetFromUtc() const; +#if QT_CONFIG(timezone) + QTimeZone timeZone() const; +#endif // timezone + QString timeZoneAbbreviation() const; + bool isDaylightTime() const; + + qint64 toMSecsSinceEpoch() const; + qint64 toSecsSinceEpoch() const; + + void setDate(const QDate &date); + void setTime(const QTime &time); + void setTimeSpec(Qt::TimeSpec spec); + void setOffsetFromUtc(int offsetSeconds); +#if QT_CONFIG(timezone) + void setTimeZone(const QTimeZone &toZone); +#endif // timezone + void setMSecsSinceEpoch(qint64 msecs); + void setSecsSinceEpoch(qint64 secs); + +#ifndef QT_NO_DATESTRING + QString toString(Qt::DateFormat f = Qt::TextDate) const; + QString toString(const QString &format) const; +#endif + Q_REQUIRED_RESULT QDateTime addDays(qint64 days) const; + Q_REQUIRED_RESULT QDateTime addMonths(int months) const; + Q_REQUIRED_RESULT QDateTime addYears(int years) const; + Q_REQUIRED_RESULT QDateTime addSecs(qint64 secs) const; + Q_REQUIRED_RESULT QDateTime addMSecs(qint64 msecs) const; + + QDateTime toTimeSpec(Qt::TimeSpec spec) const; + inline QDateTime toLocalTime() const { return toTimeSpec(Qt::LocalTime); } + inline QDateTime toUTC() const { return toTimeSpec(Qt::UTC); } + QDateTime toOffsetFromUtc(int offsetSeconds) const; +#if QT_CONFIG(timezone) + QDateTime toTimeZone(const QTimeZone &toZone) const; +#endif // timezone + + qint64 daysTo(const QDateTime &) const; + qint64 secsTo(const QDateTime &) const; + qint64 msecsTo(const QDateTime &) const; + + bool operator==(const QDateTime &other) const; + inline bool operator!=(const QDateTime &other) const { return !(*this == other); } + bool operator<(const QDateTime &other) const; + inline bool operator<=(const QDateTime &other) const { return !(other < *this); } + inline bool operator>(const QDateTime &other) const { return other < *this; } + inline bool operator>=(const QDateTime &other) const { return !(*this < other); } + +#if QT_DEPRECATED_SINCE(5, 2) + QT_DEPRECATED void setUtcOffset(int seconds); + QT_DEPRECATED int utcOffset() const; +#endif // QT_DEPRECATED_SINCE + + static QDateTime currentDateTime(); + static QDateTime currentDateTimeUtc(); +#ifndef QT_NO_DATESTRING + static QDateTime fromString(const QString &s, Qt::DateFormat f = Qt::TextDate); + static QDateTime fromString(const QString &s, const QString &format); +#endif + +#if QT_DEPRECATED_SINCE(5, 8) + uint toTime_t() const; + void setTime_t(uint secsSince1Jan1970UTC); + static QDateTime fromTime_t(uint secsSince1Jan1970UTC); + static QDateTime fromTime_t(uint secsSince1Jan1970UTC, Qt::TimeSpec spec, + int offsetFromUtc = 0); + static QDateTime fromTime_t(uint secsSince1Jan1970UTC, const QTimeZone &timeZone); +#endif + + static QDateTime fromMSecsSinceEpoch(qint64 msecs); + // ### Qt 6: Merge with above with default spec = Qt::LocalTime + static QDateTime fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, int offsetFromUtc = 0); + static QDateTime fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spe = Qt::LocalTime, int offsetFromUtc = 0); + +#if QT_CONFIG(timezone) + static QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone); + static QDateTime fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone); +#endif + + static qint64 currentMSecsSinceEpoch() Q_DECL_NOTHROW; + static qint64 currentSecsSinceEpoch() Q_DECL_NOTHROW; + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + static QDateTime fromCFDate(CFDateRef date); + CFDateRef toCFDate() const Q_DECL_CF_RETURNS_RETAINED; + static QDateTime fromNSDate(const NSDate *date); + NSDate *toNSDate() const Q_DECL_NS_RETURNS_AUTORELEASED; +#endif + +private: + friend class QDateTimePrivate; + + Data d; + +#ifndef QT_NO_DATASTREAM + friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QDateTime &); + friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QDateTime &); +#endif + +#if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_NO_DATESTRING) + friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QDateTime &); +#endif +}; +Q_DECLARE_SHARED(QDateTime) + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QDate &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QDate &); +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QTime &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QTime &); +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QDateTime &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QDateTime &); +#endif // QT_NO_DATASTREAM + +#if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_NO_DATESTRING) +Q_CORE_EXPORT QDebug operator<<(QDebug, const QDate &); +Q_CORE_EXPORT QDebug operator<<(QDebug, const QTime &); +Q_CORE_EXPORT QDebug operator<<(QDebug, const QDateTime &); +#endif + +// QDateTime is not noexcept for now -- to be revised once +// timezone and calendaring support is added +Q_CORE_EXPORT uint qHash(const QDateTime &key, uint seed = 0); +Q_CORE_EXPORT uint qHash(const QDate &key, uint seed = 0) Q_DECL_NOTHROW; +Q_CORE_EXPORT uint qHash(const QTime &key, uint seed = 0) Q_DECL_NOTHROW; + +QT_END_NAMESPACE + +#endif // QDATETIME_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qdeadlinetimer.h b/qrenderdoc/3rdparty/qt/include/QtCore/qdeadlinetimer.h new file mode 100644 index 000000000..ddab0191a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qdeadlinetimer.h @@ -0,0 +1,197 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDEADLINETIMER_H +#define QDEADLINETIMER_H + +#include +#include +#include + +#ifdef max +// un-pollute the namespace. We need std::numeric_limits::max() and std::chrono::duration::max() +# undef max +#endif + +#include + +#if QT_HAS_INCLUDE() +# include +#endif + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QDeadlineTimer +{ +public: + enum ForeverConstant { Forever }; + + Q_DECL_CONSTEXPR QDeadlineTimer(Qt::TimerType type_ = Qt::CoarseTimer) Q_DECL_NOTHROW + : t1(0), t2(0), type(type_) {} + Q_DECL_CONSTEXPR QDeadlineTimer(ForeverConstant, Qt::TimerType type_ = Qt::CoarseTimer) Q_DECL_NOTHROW + : t1(std::numeric_limits::max()), t2(0), type(type_) {} + explicit QDeadlineTimer(qint64 msecs, Qt::TimerType type = Qt::CoarseTimer) Q_DECL_NOTHROW; + + void swap(QDeadlineTimer &other) Q_DECL_NOTHROW + { qSwap(t1, other.t1); qSwap(t2, other.t2); qSwap(type, other.type); } + + Q_DECL_CONSTEXPR bool isForever() const Q_DECL_NOTHROW + { return t1 == (std::numeric_limits::max)(); } + bool hasExpired() const Q_DECL_NOTHROW; + + Qt::TimerType timerType() const Q_DECL_NOTHROW + { return Qt::TimerType(type & 0xff); } + void setTimerType(Qt::TimerType type); + + qint64 remainingTime() const Q_DECL_NOTHROW; + qint64 remainingTimeNSecs() const Q_DECL_NOTHROW; + void setRemainingTime(qint64 msecs, Qt::TimerType type = Qt::CoarseTimer) Q_DECL_NOTHROW; + void setPreciseRemainingTime(qint64 secs, qint64 nsecs = 0, + Qt::TimerType type = Qt::CoarseTimer) Q_DECL_NOTHROW; + + qint64 deadline() const Q_DECL_NOTHROW Q_DECL_PURE_FUNCTION; + qint64 deadlineNSecs() const Q_DECL_NOTHROW Q_DECL_PURE_FUNCTION; + void setDeadline(qint64 msecs, Qt::TimerType timerType = Qt::CoarseTimer) Q_DECL_NOTHROW; + void setPreciseDeadline(qint64 secs, qint64 nsecs = 0, + Qt::TimerType type = Qt::CoarseTimer) Q_DECL_NOTHROW; + + static QDeadlineTimer addNSecs(QDeadlineTimer dt, qint64 nsecs) Q_DECL_NOTHROW Q_DECL_PURE_FUNCTION; + static QDeadlineTimer current(Qt::TimerType timerType = Qt::CoarseTimer) Q_DECL_NOTHROW; + + friend bool operator==(QDeadlineTimer d1, QDeadlineTimer d2) Q_DECL_NOTHROW + { return d1.t1 == d2.t1 && d1.t2 == d2.t2; } + friend bool operator!=(QDeadlineTimer d1, QDeadlineTimer d2) Q_DECL_NOTHROW + { return !(d1 == d2); } + friend bool operator<(QDeadlineTimer d1, QDeadlineTimer d2) Q_DECL_NOTHROW + { return d1.t1 < d2.t1 || (d1.t1 == d2.t1 && d1.t2 < d2.t2); } + friend bool operator<=(QDeadlineTimer d1, QDeadlineTimer d2) Q_DECL_NOTHROW + { return d1 == d2 || d1 < d2; } + friend bool operator>(QDeadlineTimer d1, QDeadlineTimer d2) Q_DECL_NOTHROW + { return d2 < d1; } + friend bool operator>=(QDeadlineTimer d1, QDeadlineTimer d2) Q_DECL_NOTHROW + { return !(d1 < d2); } + + friend QDeadlineTimer operator+(QDeadlineTimer dt, qint64 msecs) + { return QDeadlineTimer::addNSecs(dt, msecs * 1000 * 1000); } + friend QDeadlineTimer operator+(qint64 msecs, QDeadlineTimer dt) + { return dt + msecs; } + friend QDeadlineTimer operator-(QDeadlineTimer dt, qint64 msecs) + { return dt + (-msecs); } + friend qint64 operator-(QDeadlineTimer dt1, QDeadlineTimer dt2) + { return (dt1.deadlineNSecs() - dt2.deadlineNSecs()) / (1000 * 1000); } + QDeadlineTimer &operator+=(qint64 msecs) + { *this = *this + msecs; return *this; } + QDeadlineTimer &operator-=(qint64 msecs) + { *this = *this + (-msecs); return *this; } + +#if QT_HAS_INCLUDE() || defined(Q_QDOC) + template + QDeadlineTimer(std::chrono::time_point deadline_, + Qt::TimerType type_ = Qt::CoarseTimer) : t2(0) + { setDeadline(deadline_, type_); } + template + QDeadlineTimer &operator=(std::chrono::time_point deadline_) + { setDeadline(deadline_); return *this; } + + template + void setDeadline(std::chrono::time_point deadline_, + Qt::TimerType type_ = Qt::CoarseTimer) + { setRemainingTime(deadline_ == deadline_.max() ? Duration::max() : deadline_ - Clock::now(), type_); } + + template + std::chrono::time_point deadline() const + { + auto val = std::chrono::nanoseconds(rawRemainingTimeNSecs()) + Clock::now(); + return std::chrono::time_point_cast(val); + } + + template + QDeadlineTimer(std::chrono::duration remaining, Qt::TimerType type_ = Qt::CoarseTimer) + : t2(0) + { setRemainingTime(remaining, type_); } + + template + QDeadlineTimer &operator=(std::chrono::duration remaining) + { setRemainingTime(remaining); return *this; } + + template + void setRemainingTime(std::chrono::duration remaining, Qt::TimerType type_ = Qt::CoarseTimer) + { + if (remaining == remaining.max()) + *this = QDeadlineTimer(Forever, type_); + else + setPreciseRemainingTime(0, std::chrono::nanoseconds(remaining).count(), type_); + } + + std::chrono::nanoseconds remainingTimeAsDuration() const Q_DECL_NOTHROW + { + if (isForever()) + return std::chrono::nanoseconds::max(); + qint64 nsecs = rawRemainingTimeNSecs(); + if (nsecs <= 0) + return std::chrono::nanoseconds::zero(); + return std::chrono::nanoseconds(nsecs); + } + + template + friend QDeadlineTimer operator+(QDeadlineTimer dt, std::chrono::duration value) + { return QDeadlineTimer::addNSecs(dt, std::chrono::duration_cast(value).count()); } + template + friend QDeadlineTimer operator+(std::chrono::duration value, QDeadlineTimer dt) + { return dt + value; } + template + friend QDeadlineTimer operator+=(QDeadlineTimer &dt, std::chrono::duration value) + { return dt = dt + value; } +#endif + +private: + qint64 t1; + unsigned t2; + unsigned type; + + qint64 rawRemainingTimeNSecs() const Q_DECL_NOTHROW; +}; + +Q_DECLARE_SHARED(QDeadlineTimer) + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QDeadlineTimer) + +#endif // QDEADLINETIMER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qdebug.h b/qrenderdoc/3rdparty/qt/include/QtCore/qdebug.h new file mode 100644 index 000000000..186722b69 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qdebug.h @@ -0,0 +1,487 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDEBUG_H +#define QDEBUG_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// all these have already been included by various headers above, but don't rely on indirect includes: +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class Q_CORE_EXPORT QDebug +{ + friend class QMessageLogger; + friend class QDebugStateSaverPrivate; + struct Stream { + enum { DefaultVerbosity = 2, VerbosityShift = 29, VerbosityMask = 0x7 }; + + Stream(QIODevice *device) : ts(device), ref(1), type(QtDebugMsg), + space(true), message_output(false), flags(DefaultVerbosity << VerbosityShift) {} + Stream(QString *string) : ts(string, QIODevice::WriteOnly), ref(1), type(QtDebugMsg), + space(true), message_output(false), flags(DefaultVerbosity << VerbosityShift) {} + Stream(QtMsgType t) : ts(&buffer, QIODevice::WriteOnly), ref(1), type(t), + space(true), message_output(true), flags(DefaultVerbosity << VerbosityShift) {} + QTextStream ts; + QString buffer; + int ref; + QtMsgType type; + bool space; + bool message_output; + QMessageLogContext context; + + enum FormatFlag { // Note: Bits 29..31 are reserved for the verbose level introduced in 5.6. + NoQuotes = 0x1 + }; + + // ### Qt 6: unify with space, introduce own version member + bool testFlag(FormatFlag flag) const { return (context.version > 1) ? (flags & flag) : false; } + void setFlag(FormatFlag flag) { if (context.version > 1) { flags |= flag; } } + void unsetFlag(FormatFlag flag) { if (context.version > 1) { flags &= ~flag; } } + int verbosity() const + { return context.version > 1 ? (flags >> VerbosityShift) & VerbosityMask : int(Stream::DefaultVerbosity); } + void setVerbosity(int v) + { + if (context.version > 1) { + flags &= ~(VerbosityMask << VerbosityShift); + flags |= (v & VerbosityMask) << VerbosityShift; + } + } + // added in 5.4 + int flags; + } *stream; + + enum Latin1Content { ContainsBinary = 0, ContainsLatin1 }; + + void putUcs4(uint ucs4); + void putString(const QChar *begin, size_t length); + void putByteArray(const char *begin, size_t length, Latin1Content content); +public: + inline QDebug(QIODevice *device) : stream(new Stream(device)) {} + inline QDebug(QString *string) : stream(new Stream(string)) {} + inline QDebug(QtMsgType t) : stream(new Stream(t)) {} + inline QDebug(const QDebug &o):stream(o.stream) { ++stream->ref; } + inline QDebug &operator=(const QDebug &other); + ~QDebug(); + inline void swap(QDebug &other) Q_DECL_NOTHROW { qSwap(stream, other.stream); } + + QDebug &resetFormat(); + + inline QDebug &space() { stream->space = true; stream->ts << ' '; return *this; } + inline QDebug &nospace() { stream->space = false; return *this; } + inline QDebug &maybeSpace() { if (stream->space) stream->ts << ' '; return *this; } + int verbosity() const { return stream->verbosity(); } + void setVerbosity(int verbosityLevel) { stream->setVerbosity(verbosityLevel); } + + bool autoInsertSpaces() const { return stream->space; } + void setAutoInsertSpaces(bool b) { stream->space = b; } + + inline QDebug "e() { stream->unsetFlag(Stream::NoQuotes); return *this; } + inline QDebug &noquote() { stream->setFlag(Stream::NoQuotes); return *this; } + inline QDebug &maybeQuote(char c = '"') { if (!(stream->testFlag(Stream::NoQuotes))) stream->ts << c; return *this; } + + inline QDebug &operator<<(QChar t) { putUcs4(t.unicode()); return maybeSpace(); } + inline QDebug &operator<<(bool t) { stream->ts << (t ? "true" : "false"); return maybeSpace(); } + inline QDebug &operator<<(char t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(signed short t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(unsigned short t) { stream->ts << t; return maybeSpace(); } +#ifdef Q_COMPILER_UNICODE_STRINGS + inline QDebug &operator<<(char16_t t) { return *this << QChar(ushort(t)); } + inline QDebug &operator<<(char32_t t) { putUcs4(t); return maybeSpace(); } +#endif + inline QDebug &operator<<(signed int t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(unsigned int t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(signed long t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(unsigned long t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(qint64 t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(quint64 t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(float t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(double t) { stream->ts << t; return maybeSpace(); } + inline QDebug &operator<<(const char* t) { stream->ts << QString::fromUtf8(t); return maybeSpace(); } + inline QDebug &operator<<(const QString & t) { putString(t.constData(), uint(t.length())); return maybeSpace(); } + inline QDebug &operator<<(const QStringRef & t) { putString(t.constData(), uint(t.length())); return maybeSpace(); } + inline QDebug &operator<<(QLatin1String t) { putByteArray(t.latin1(), t.size(), ContainsLatin1); return maybeSpace(); } + inline QDebug &operator<<(const QByteArray & t) { putByteArray(t.constData(), t.size(), ContainsBinary); return maybeSpace(); } + inline QDebug &operator<<(const void * t) { stream->ts << t; return maybeSpace(); } +#ifdef Q_COMPILER_NULLPTR + inline QDebug &operator<<(std::nullptr_t) { stream->ts << "(nullptr)"; return maybeSpace(); } +#endif + inline QDebug &operator<<(QTextStreamFunction f) { + stream->ts << f; + return *this; + } + + inline QDebug &operator<<(QTextStreamManipulator m) + { stream->ts << m; return *this; } +}; + +Q_DECLARE_SHARED(QDebug) + +class QDebugStateSaverPrivate; +class Q_CORE_EXPORT QDebugStateSaver +{ +public: + QDebugStateSaver(QDebug &dbg); + ~QDebugStateSaver(); +private: + Q_DISABLE_COPY(QDebugStateSaver) + QScopedPointer d; +}; + +class QNoDebug +{ +public: + inline QNoDebug &operator<<(QTextStreamFunction) { return *this; } + inline QNoDebug &operator<<(QTextStreamManipulator) { return *this; } + inline QNoDebug &space() { return *this; } + inline QNoDebug &nospace() { return *this; } + inline QNoDebug &maybeSpace() { return *this; } + inline QNoDebug "e() { return *this; } + inline QNoDebug &noquote() { return *this; } + inline QNoDebug &maybeQuote(const char = '"') { return *this; } + + template + inline QNoDebug &operator<<(const T &) { return *this; } +}; + +inline QDebug &QDebug::operator=(const QDebug &other) +{ + if (this != &other) { + QDebug copy(other); + qSwap(stream, copy.stream); + } + return *this; +} + +namespace QtPrivate { + +template +inline QDebug printSequentialContainer(QDebug debug, const char *which, const SequentialContainer &c) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << which << '('; + typename SequentialContainer::const_iterator it = c.begin(), end = c.end(); + if (it != end) { + debug << *it; + ++it; + } + while (it != end) { + debug << ", " << *it; + ++it; + } + debug << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +} // namespace QtPrivate + +template +inline QDebug operator<<(QDebug debug, const QList &list) +{ + return QtPrivate::printSequentialContainer(debug, "" /*for historical reasons*/, list); +} + +template +inline QDebug operator<<(QDebug debug, const QVector &vec) +{ + return QtPrivate::printSequentialContainer(debug, "QVector", vec); +} + +template +inline QDebug operator<<(QDebug debug, const std::vector &vec) +{ + return QtPrivate::printSequentialContainer(debug, "std::vector", vec); +} + +template +inline QDebug operator<<(QDebug debug, const std::list &vec) +{ + return QtPrivate::printSequentialContainer(debug, "std::list", vec); +} + +template +inline QDebug operator<<(QDebug debug, const std::map &map) +{ + return QtPrivate::printSequentialContainer(debug, "std::map", map); // yes, sequential: *it is std::pair +} + +template +inline QDebug operator<<(QDebug debug, const std::multimap &map) +{ + return QtPrivate::printSequentialContainer(debug, "std::multimap", map); // yes, sequential: *it is std::pair +} + +template +inline QDebug operator<<(QDebug debug, const QMap &map) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << "QMap("; + for (typename QMap::const_iterator it = map.constBegin(); + it != map.constEnd(); ++it) { + debug << '(' << it.key() << ", " << it.value() << ')'; + } + debug << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +template +inline QDebug operator<<(QDebug debug, const QHash &hash) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << "QHash("; + for (typename QHash::const_iterator it = hash.constBegin(); + it != hash.constEnd(); ++it) + debug << '(' << it.key() << ", " << it.value() << ')'; + debug << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +template +inline QDebug operator<<(QDebug debug, const QPair &pair) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << "QPair(" << pair.first << ',' << pair.second << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +template +inline QDebug operator<<(QDebug debug, const std::pair &pair) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << "std::pair(" << pair.first << ',' << pair.second << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +template +inline QDebug operator<<(QDebug debug, const QSet &set) +{ + return QtPrivate::printSequentialContainer(debug, "QSet", set); +} + +template +inline QDebug operator<<(QDebug debug, const QContiguousCache &cache) +{ + const bool oldSetting = debug.autoInsertSpaces(); + debug.nospace() << "QContiguousCache("; + for (int i = cache.firstIndex(); i <= cache.lastIndex(); ++i) { + debug << cache[i]; + if (i != cache.lastIndex()) + debug << ", "; + } + debug << ')'; + debug.setAutoInsertSpaces(oldSetting); + return debug.maybeSpace(); +} + +template +inline QDebug operator<<(QDebug debug, const QSharedPointer &ptr) +{ + QDebugStateSaver saver(debug); + debug.nospace() << "QSharedPointer(" << ptr.data() << ")"; + return debug; +} + +Q_CORE_EXPORT void qt_QMetaEnum_flagDebugOperator(QDebug &debug, size_t sizeofT, int value); + +template +void qt_QMetaEnum_flagDebugOperator(QDebug &debug, size_t sizeofT, Int value) +{ + const QDebugStateSaver saver(debug); + debug.resetFormat(); + debug.nospace() << "QFlags(" << hex << showbase; + bool needSeparator = false; + for (uint i = 0; i < sizeofT * 8; ++i) { + if (value & (Int(1) << i)) { + if (needSeparator) + debug << '|'; + else + needSeparator = true; + debug << (Int(1) << i); + } + } + debug << ')'; +} + +#if !defined(QT_NO_QOBJECT) && !defined(Q_QDOC) +Q_CORE_EXPORT QDebug qt_QMetaEnum_debugOperator(QDebug&, int value, const QMetaObject *meta, const char *name); +Q_CORE_EXPORT QDebug qt_QMetaEnum_flagDebugOperator(QDebug &dbg, quint64 value, const QMetaObject *meta, const char *name); + +template +typename std::enable_if::Value, QDebug>::type +operator<<(QDebug dbg, T value) +{ + const QMetaObject *obj = qt_getEnumMetaObject(value); + const char *name = qt_getEnumName(value); + return qt_QMetaEnum_debugOperator(dbg, typename QFlags::Int(value), obj, name); +} + +template +inline typename std::enable_if< + QtPrivate::IsQEnumHelper::Value || QtPrivate::IsQEnumHelper >::Value, + QDebug>::type +qt_QMetaEnum_flagDebugOperator_helper(QDebug debug, const QFlags &flags) +{ + const QMetaObject *obj = qt_getEnumMetaObject(T()); + const char *name = qt_getEnumName(T()); + return qt_QMetaEnum_flagDebugOperator(debug, quint64(flags), obj, name); +} + +template +inline typename std::enable_if< + !QtPrivate::IsQEnumHelper::Value && !QtPrivate::IsQEnumHelper >::Value, + QDebug>::type +qt_QMetaEnum_flagDebugOperator_helper(QDebug debug, const QFlags &flags) +#else // !QT_NO_QOBJECT && !Q_QDOC +template +inline QDebug qt_QMetaEnum_flagDebugOperator_helper(QDebug debug, const QFlags &flags) +#endif +{ + qt_QMetaEnum_flagDebugOperator(debug, sizeof(T), typename QFlags::Int(flags)); + return debug; +} + +template +inline QDebug operator<<(QDebug debug, const QFlags &flags) +{ + // We have to use an indirection otherwise specialisation of some other overload of the + // operator<< the compiler would try to instantiate QFlags for the std::enable_if + return qt_QMetaEnum_flagDebugOperator_helper(debug, flags); +} + +#ifdef Q_OS_MAC + +// We provide QDebug stream operators for commonly used Core Foundation +// and Core Graphics types, as well as NSObject. Additional CF/CG types +// may be added by the user, using Q_DECLARE_QDEBUG_OPERATOR_FOR_CF_TYPE. + +#define QT_FOR_EACH_CORE_FOUNDATION_TYPE(F) \ + F(CFArray) \ + F(CFURL) \ + F(CFData) \ + F(CFNumber) \ + F(CFDictionary) \ + F(CFLocale) \ + F(CFDate) \ + F(CFBoolean) \ + F(CFTimeZone) \ + +#define QT_FOR_EACH_MUTABLE_CORE_FOUNDATION_TYPE(F) \ + F(CFError) \ + F(CFBundle) \ + +#define QT_FOR_EACH_CORE_GRAPHICS_TYPE(F) \ + F(CGPath) \ + +#define QT_FOR_EACH_MUTABLE_CORE_GRAPHICS_TYPE(F) \ + F(CGColorSpace) \ + F(CGImage) \ + F(CGFont) \ + F(CGColor) \ + +#define QT_FORWARD_DECLARE_CF_TYPE(type) Q_FORWARD_DECLARE_CF_TYPE(type); +#define QT_FORWARD_DECLARE_MUTABLE_CF_TYPE(type) Q_FORWARD_DECLARE_MUTABLE_CF_TYPE(type); +#define QT_FORWARD_DECLARE_CG_TYPE(type) Q_FORWARD_DECLARE_CG_TYPE(type); +#define QT_FORWARD_DECLARE_MUTABLE_CG_TYPE(type) Q_FORWARD_DECLARE_MUTABLE_CG_TYPE(type); + +QT_END_NAMESPACE +Q_FORWARD_DECLARE_CF_TYPE(CFString); +Q_FORWARD_DECLARE_OBJC_CLASS(NSObject); +QT_FOR_EACH_CORE_FOUNDATION_TYPE(QT_FORWARD_DECLARE_CF_TYPE) +QT_FOR_EACH_MUTABLE_CORE_FOUNDATION_TYPE(QT_FORWARD_DECLARE_MUTABLE_CF_TYPE) +QT_FOR_EACH_CORE_GRAPHICS_TYPE(QT_FORWARD_DECLARE_CG_TYPE) +QT_FOR_EACH_MUTABLE_CORE_GRAPHICS_TYPE(QT_FORWARD_DECLARE_MUTABLE_CG_TYPE) +QT_BEGIN_NAMESPACE + +#define QT_FORWARD_DECLARE_QDEBUG_OPERATOR_FOR_CF_TYPE(CFType) \ + Q_CORE_EXPORT QDebug operator<<(QDebug, CFType##Ref); + +#define Q_DECLARE_QDEBUG_OPERATOR_FOR_CF_TYPE(CFType) \ + QDebug operator<<(QDebug debug, CFType##Ref ref) \ + { \ + if (!ref) \ + return debug << QT_STRINGIFY(CFType) "Ref(0x0)"; \ + if (CFStringRef description = CFCopyDescription(ref)) { \ + QDebugStateSaver saver(debug); \ + debug.noquote() << description; \ + CFRelease(description); \ + } \ + return debug; \ + } + +// Defined in qcore_mac_objc.mm +Q_CORE_EXPORT QDebug operator<<(QDebug, const NSObject *); +Q_CORE_EXPORT QDebug operator<<(QDebug, CFStringRef); + +QT_FOR_EACH_CORE_FOUNDATION_TYPE(QT_FORWARD_DECLARE_QDEBUG_OPERATOR_FOR_CF_TYPE) +QT_FOR_EACH_MUTABLE_CORE_FOUNDATION_TYPE(QT_FORWARD_DECLARE_QDEBUG_OPERATOR_FOR_CF_TYPE) +QT_FOR_EACH_CORE_GRAPHICS_TYPE(QT_FORWARD_DECLARE_QDEBUG_OPERATOR_FOR_CF_TYPE) +QT_FOR_EACH_MUTABLE_CORE_GRAPHICS_TYPE(QT_FORWARD_DECLARE_QDEBUG_OPERATOR_FOR_CF_TYPE) + +#undef QT_FORWARD_DECLARE_CF_TYPE +#undef QT_FORWARD_DECLARE_MUTABLE_CF_TYPE +#undef QT_FORWARD_DECLARE_CG_TYPE +#undef QT_FORWARD_DECLARE_MUTABLE_CG_TYPE + +#endif // Q_OS_MAC + +QT_END_NAMESPACE + +#endif // QDEBUG_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qdir.h b/qrenderdoc/3rdparty/qt/include/QtCore/qdir.h new file mode 100644 index 000000000..950a26f32 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qdir.h @@ -0,0 +1,245 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDIR_H +#define QDIR_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class QDirIterator; +class QDirPrivate; + +class Q_CORE_EXPORT QDir +{ +public: + enum Filter { Dirs = 0x001, + Files = 0x002, + Drives = 0x004, + NoSymLinks = 0x008, + AllEntries = Dirs | Files | Drives, + TypeMask = 0x00f, + + Readable = 0x010, + Writable = 0x020, + Executable = 0x040, + PermissionMask = 0x070, + + Modified = 0x080, + Hidden = 0x100, + System = 0x200, + + AccessMask = 0x3F0, + + AllDirs = 0x400, + CaseSensitive = 0x800, + NoDot = 0x2000, + NoDotDot = 0x4000, + NoDotAndDotDot = NoDot | NoDotDot, + + NoFilter = -1 + }; + Q_DECLARE_FLAGS(Filters, Filter) + + enum SortFlag { Name = 0x00, + Time = 0x01, + Size = 0x02, + Unsorted = 0x03, + SortByMask = 0x03, + + DirsFirst = 0x04, + Reversed = 0x08, + IgnoreCase = 0x10, + DirsLast = 0x20, + LocaleAware = 0x40, + Type = 0x80, + NoSort = -1 + }; + Q_DECLARE_FLAGS(SortFlags, SortFlag) + + QDir(const QDir &); + QDir(const QString &path = QString()); + QDir(const QString &path, const QString &nameFilter, + SortFlags sort = SortFlags(Name | IgnoreCase), Filters filter = AllEntries); + ~QDir(); + + QDir &operator=(const QDir &); + QDir &operator=(const QString &path); +#ifdef Q_COMPILER_RVALUE_REFS + QDir &operator=(QDir &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + + void swap(QDir &other) Q_DECL_NOTHROW + { qSwap(d_ptr, other.d_ptr); } + + void setPath(const QString &path); + QString path() const; + QString absolutePath() const; + QString canonicalPath() const; + + static void addResourceSearchPath(const QString &path); + + static void setSearchPaths(const QString &prefix, const QStringList &searchPaths); + static void addSearchPath(const QString &prefix, const QString &path); + static QStringList searchPaths(const QString &prefix); + + QString dirName() const; + QString filePath(const QString &fileName) const; + QString absoluteFilePath(const QString &fileName) const; + QString relativeFilePath(const QString &fileName) const; + + static QString toNativeSeparators(const QString &pathName); + static QString fromNativeSeparators(const QString &pathName); + + bool cd(const QString &dirName); + bool cdUp(); + + QStringList nameFilters() const; + void setNameFilters(const QStringList &nameFilters); + + Filters filter() const; + void setFilter(Filters filter); + SortFlags sorting() const; + void setSorting(SortFlags sort); + + uint count() const; + bool isEmpty(Filters filters = Filters(AllEntries | NoDotAndDotDot)) const; + + QString operator[](int) const; + + static QStringList nameFiltersFromString(const QString &nameFilter); + + QStringList entryList(Filters filters = NoFilter, SortFlags sort = NoSort) const; + QStringList entryList(const QStringList &nameFilters, Filters filters = NoFilter, + SortFlags sort = NoSort) const; + + QFileInfoList entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const; + QFileInfoList entryInfoList(const QStringList &nameFilters, Filters filters = NoFilter, + SortFlags sort = NoSort) const; + + bool mkdir(const QString &dirName) const; + bool rmdir(const QString &dirName) const; + bool mkpath(const QString &dirPath) const; + bool rmpath(const QString &dirPath) const; + + bool removeRecursively(); + + bool isReadable() const; + bool exists() const; + bool isRoot() const; + + static bool isRelativePath(const QString &path); + inline static bool isAbsolutePath(const QString &path) { return !isRelativePath(path); } + bool isRelative() const; + inline bool isAbsolute() const { return !isRelative(); } + bool makeAbsolute(); + + bool operator==(const QDir &dir) const; + inline bool operator!=(const QDir &dir) const { return !operator==(dir); } + + bool remove(const QString &fileName); + bool rename(const QString &oldName, const QString &newName); + bool exists(const QString &name) const; + + static QFileInfoList drives(); + + Q_DECL_CONSTEXPR static inline QChar listSeparator() Q_DECL_NOTHROW + { +#if defined(Q_OS_WIN) + return QLatin1Char(';'); +#else + return QLatin1Char(':'); +#endif + } + + static QChar separator(); // ### Qt6: Make it inline + + static bool setCurrent(const QString &path); + static inline QDir current() { return QDir(currentPath()); } + static QString currentPath(); + + static inline QDir home() { return QDir(homePath()); } + static QString homePath(); + static inline QDir root() { return QDir(rootPath()); } + static QString rootPath(); + static inline QDir temp() { return QDir(tempPath()); } + static QString tempPath(); + +#ifndef QT_NO_REGEXP + static bool match(const QStringList &filters, const QString &fileName); + static bool match(const QString &filter, const QString &fileName); +#endif + + static QString cleanPath(const QString &path); + void refresh() const; + +protected: + explicit QDir(QDirPrivate &d); + + QSharedDataPointer d_ptr; + +private: + friend class QDirIterator; + // Q_DECLARE_PRIVATE equivalent for shared data pointers + QDirPrivate* d_func(); + inline const QDirPrivate* d_func() const + { + return d_ptr.constData(); + } + +}; + +Q_DECLARE_SHARED(QDir) +Q_DECLARE_OPERATORS_FOR_FLAGS(QDir::Filters) +Q_DECLARE_OPERATORS_FOR_FLAGS(QDir::SortFlags) + +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters); +Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QDir &dir); +#endif + +QT_END_NAMESPACE + +#endif // QDIR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qdiriterator.h b/qrenderdoc/3rdparty/qt/include/QtCore/qdiriterator.h new file mode 100644 index 000000000..a8f769eac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qdiriterator.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDIRITERATOR_H +#define QDIRITERATOR_H + +#include + +QT_BEGIN_NAMESPACE + + +class QDirIteratorPrivate; +class Q_CORE_EXPORT QDirIterator { +public: + enum IteratorFlag { + NoIteratorFlags = 0x0, + FollowSymlinks = 0x1, + Subdirectories = 0x2 + }; + Q_DECLARE_FLAGS(IteratorFlags, IteratorFlag) + + QDirIterator(const QDir &dir, IteratorFlags flags = NoIteratorFlags); + QDirIterator(const QString &path, + IteratorFlags flags = NoIteratorFlags); + QDirIterator(const QString &path, + QDir::Filters filter, + IteratorFlags flags = NoIteratorFlags); + QDirIterator(const QString &path, + const QStringList &nameFilters, + QDir::Filters filters = QDir::NoFilter, + IteratorFlags flags = NoIteratorFlags); + + ~QDirIterator(); + + QString next(); + bool hasNext() const; + + QString fileName() const; + QString filePath() const; + QFileInfo fileInfo() const; + QString path() const; + +private: + Q_DISABLE_COPY(QDirIterator) + + QScopedPointer d; + friend class QDir; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QDirIterator::IteratorFlags) + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qeasingcurve.h b/qrenderdoc/3rdparty/qt/include/QtCore/qeasingcurve.h new file mode 100644 index 000000000..ba06de8f9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qeasingcurve.h @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEASINGCURVE_H +#define QEASINGCURVE_H + +#include +#include +#include +#if QT_DEPRECATED_SINCE(5, 0) +# include +# include +#endif + +QT_BEGIN_NAMESPACE + + +class QEasingCurvePrivate; +class QPointF; +class Q_CORE_EXPORT QEasingCurve +{ + Q_GADGET +public: + enum Type { + Linear, + InQuad, OutQuad, InOutQuad, OutInQuad, + InCubic, OutCubic, InOutCubic, OutInCubic, + InQuart, OutQuart, InOutQuart, OutInQuart, + InQuint, OutQuint, InOutQuint, OutInQuint, + InSine, OutSine, InOutSine, OutInSine, + InExpo, OutExpo, InOutExpo, OutInExpo, + InCirc, OutCirc, InOutCirc, OutInCirc, + InElastic, OutElastic, InOutElastic, OutInElastic, + InBack, OutBack, InOutBack, OutInBack, + InBounce, OutBounce, InOutBounce, OutInBounce, + InCurve, OutCurve, SineCurve, CosineCurve, + BezierSpline, TCBSpline, Custom, NCurveTypes + }; + Q_ENUM(Type) + + QEasingCurve(Type type = Linear); + QEasingCurve(const QEasingCurve &other); + ~QEasingCurve(); + + QEasingCurve &operator=(const QEasingCurve &other) + { if ( this != &other ) { QEasingCurve copy(other); swap(copy); } return *this; } +#ifdef Q_COMPILER_RVALUE_REFS + QEasingCurve(QEasingCurve &&other) Q_DECL_NOTHROW : d_ptr(other.d_ptr) { other.d_ptr = Q_NULLPTR; } + QEasingCurve &operator=(QEasingCurve &&other) Q_DECL_NOTHROW + { qSwap(d_ptr, other.d_ptr); return *this; } +#endif + + void swap(QEasingCurve &other) Q_DECL_NOTHROW { qSwap(d_ptr, other.d_ptr); } + + bool operator==(const QEasingCurve &other) const; + inline bool operator!=(const QEasingCurve &other) const + { return !(this->operator==(other)); } + + qreal amplitude() const; + void setAmplitude(qreal amplitude); + + qreal period() const; + void setPeriod(qreal period); + + qreal overshoot() const; + void setOvershoot(qreal overshoot); + + void addCubicBezierSegment(const QPointF & c1, const QPointF & c2, const QPointF & endPoint); + void addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b); + QVector toCubicSpline() const; +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED QList cubicBezierSpline() const { return toCubicSpline().toList(); } +#endif + + Type type() const; + void setType(Type type); + typedef qreal (*EasingFunction)(qreal progress); + void setCustomType(EasingFunction func); + EasingFunction customType() const; + + qreal valueForProgress(qreal progress) const; +private: + QEasingCurvePrivate *d_ptr; +#ifndef QT_NO_DEBUG_STREAM + friend Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QEasingCurve &item); +#endif +#ifndef QT_NO_DATASTREAM + friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QEasingCurve&); + friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QEasingCurve &); +#endif +}; +Q_DECLARE_SHARED(QEasingCurve) + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QEasingCurve &item); +#endif + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QEasingCurve&); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QEasingCurve &); +#endif + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qelapsedtimer.h b/qrenderdoc/3rdparty/qt/include/QtCore/qelapsedtimer.h new file mode 100644 index 000000000..7954b41bf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qelapsedtimer.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QELAPSEDTIMER_H +#define QELAPSEDTIMER_H + +#include + +QT_BEGIN_NAMESPACE + + +class Q_CORE_EXPORT QElapsedTimer +{ +public: + enum ClockType { + SystemTime, + MonotonicClock, + TickCounter, + MachAbsoluteTime, + PerformanceCounter + }; + + Q_DECL_CONSTEXPR QElapsedTimer() + : t1(Q_INT64_C(0x8000000000000000)), + t2(Q_INT64_C(0x8000000000000000)) + { + } + + static ClockType clockType() Q_DECL_NOTHROW; + static bool isMonotonic() Q_DECL_NOTHROW; + + void start() Q_DECL_NOTHROW; + qint64 restart() Q_DECL_NOTHROW; + void invalidate() Q_DECL_NOTHROW; + bool isValid() const Q_DECL_NOTHROW; + + qint64 nsecsElapsed() const Q_DECL_NOTHROW; + qint64 elapsed() const Q_DECL_NOTHROW; + bool hasExpired(qint64 timeout) const Q_DECL_NOTHROW; + + qint64 msecsSinceReference() const Q_DECL_NOTHROW; + qint64 msecsTo(const QElapsedTimer &other) const Q_DECL_NOTHROW; + qint64 secsTo(const QElapsedTimer &other) const Q_DECL_NOTHROW; + + bool operator==(const QElapsedTimer &other) const Q_DECL_NOTHROW + { return t1 == other.t1 && t2 == other.t2; } + bool operator!=(const QElapsedTimer &other) const Q_DECL_NOTHROW + { return !(*this == other); } + + friend bool Q_CORE_EXPORT operator<(const QElapsedTimer &v1, const QElapsedTimer &v2) Q_DECL_NOTHROW; + +private: + qint64 t1; + qint64 t2; +}; + +QT_END_NAMESPACE + +#endif // QELAPSEDTIMER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qendian.h b/qrenderdoc/3rdparty/qt/include/QtCore/qendian.h new file mode 100644 index 000000000..4e9cd2e6e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qendian.h @@ -0,0 +1,272 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QENDIAN_H +#define QENDIAN_H + +#include + +// include stdlib.h and hope that it defines __GLIBC__ for glibc-based systems +#include +#include + +QT_BEGIN_NAMESPACE + +/* + * ENDIAN FUNCTIONS +*/ +inline void qbswap_helper(const void *src, void *dest, int size) +{ + for (int i = 0; i < size ; ++i) + static_cast(dest)[i] = static_cast(src)[size - 1 - i]; +} + +/* + * qbswap(const T src, const void *dest); + * Changes the byte order of \a src from big endian to little endian or vice versa + * and stores the result in \a dest. + * There is no alignment requirements for \a dest. +*/ +template inline void qbswap(const T src, void *dest) +{ + qbswap_helper(&src, dest, sizeof(T)); +} + +// Used to implement a type-safe and alignment-safe copy operation +// If you want to avoid the memcpy, you must write specializations for these functions +template Q_ALWAYS_INLINE void qToUnaligned(const T src, void *dest) +{ + // Using sizeof(T) inside memcpy function produces internal compiler error with + // MSVC2008/ARM in tst_endian -> use extra indirection to resolve size of T. + const size_t size = sizeof(T); +#if QT_HAS_BUILTIN(__builtin_memcpy) + __builtin_memcpy +#else + memcpy +#endif + (dest, &src, size); +} + +template Q_ALWAYS_INLINE T qFromUnaligned(const void *src) +{ + T dest; + const size_t size = sizeof(T); +#if QT_HAS_BUILTIN(__builtin_memcpy) + __builtin_memcpy +#else + memcpy +#endif + (&dest, src, size); + return dest; +} + +/* + * T qbswap(T source). + * Changes the byte order of a value from big endian to little endian or vice versa. + * This function can be used if you are not concerned about alignment issues, + * and it is therefore a bit more convenient and in most cases more efficient. +*/ +template T qbswap(T source); + +// GCC 4.3 implemented all the intrinsics, but the 16-bit one only got implemented in 4.8; +// Clang 2.6 implemented the 32- and 64-bit but waited until 3.2 to implement the 16-bit one +#if (defined(Q_CC_GNU) && Q_CC_GNU >= 403) || QT_HAS_BUILTIN(__builtin_bswap32) +template <> inline quint64 qbswap(quint64 source) +{ + return __builtin_bswap64(source); +} +template <> inline quint32 qbswap(quint32 source) +{ + return __builtin_bswap32(source); +} + +template <> inline void qbswap(quint64 source, void *dest) +{ + qToUnaligned(__builtin_bswap64(source), dest); +} +template <> inline void qbswap(quint32 source, void *dest) +{ + qToUnaligned(__builtin_bswap32(source), dest); +} +#else +template <> inline quint64 qbswap(quint64 source) +{ + return 0 + | ((source & Q_UINT64_C(0x00000000000000ff)) << 56) + | ((source & Q_UINT64_C(0x000000000000ff00)) << 40) + | ((source & Q_UINT64_C(0x0000000000ff0000)) << 24) + | ((source & Q_UINT64_C(0x00000000ff000000)) << 8) + | ((source & Q_UINT64_C(0x000000ff00000000)) >> 8) + | ((source & Q_UINT64_C(0x0000ff0000000000)) >> 24) + | ((source & Q_UINT64_C(0x00ff000000000000)) >> 40) + | ((source & Q_UINT64_C(0xff00000000000000)) >> 56); +} + +template <> inline quint32 qbswap(quint32 source) +{ + return 0 + | ((source & 0x000000ff) << 24) + | ((source & 0x0000ff00) << 8) + | ((source & 0x00ff0000) >> 8) + | ((source & 0xff000000) >> 24); +} +#endif // GCC & Clang intrinsics +#if (defined(Q_CC_GNU) && Q_CC_GNU >= 408) || QT_HAS_BUILTIN(__builtin_bswap16) +template <> inline quint16 qbswap(quint16 source) +{ + return __builtin_bswap16(source); +} +template <> inline void qbswap(quint16 source, void *dest) +{ + qToUnaligned(__builtin_bswap16(source), dest); +} +#else +template <> inline quint16 qbswap(quint16 source) +{ + return quint16( 0 + | ((source & 0x00ff) << 8) + | ((source & 0xff00) >> 8) ); +} +#endif // GCC & Clang intrinsics + +// signed specializations +template <> inline qint64 qbswap(qint64 source) +{ + return qbswap(quint64(source)); +} + +template <> inline qint32 qbswap(qint32 source) +{ + return qbswap(quint32(source)); +} + +template <> inline qint16 qbswap(qint16 source) +{ + return qbswap(quint16(source)); +} + +template <> inline void qbswap(qint64 source, void *dest) +{ + qbswap(quint64(source), dest); +} + +template <> inline void qbswap(qint32 source, void *dest) +{ + qbswap(quint32(source), dest); +} + +template <> inline void qbswap(qint16 source, void *dest) +{ + qbswap(quint16(source), dest); +} + +#if Q_BYTE_ORDER == Q_BIG_ENDIAN + +template inline T qToBigEndian(T source) +{ return source; } +template inline T qFromBigEndian(T source) +{ return source; } +template inline T qToLittleEndian(T source) +{ return qbswap(source); } +template inline T qFromLittleEndian(T source) +{ return qbswap(source); } +template inline void qToBigEndian(T src, void *dest) +{ qToUnaligned(src, dest); } +template inline void qToLittleEndian(T src, void *dest) +{ qbswap(src, dest); } +#else // Q_LITTLE_ENDIAN + +template inline T qToBigEndian(T source) +{ return qbswap(source); } +template inline T qFromBigEndian(T source) +{ return qbswap(source); } +template inline T qToLittleEndian(T source) +{ return source; } +template inline T qFromLittleEndian(T source) +{ return source; } +template inline void qToBigEndian(T src, void *dest) +{ qbswap(src, dest); } +template inline void qToLittleEndian(T src, void *dest) +{ qToUnaligned(src, dest); } + +#endif // Q_BYTE_ORDER == Q_BIG_ENDIAN + +template <> inline quint8 qbswap(quint8 source) +{ + return source; +} + +template <> inline qint8 qbswap(qint8 source) +{ + return source; +} + +/* T qFromLittleEndian(const void *src) + * This function will read a little-endian encoded value from \a src + * and return the value in host-endian encoding. + * There is no requirement that \a src must be aligned. +*/ +template inline T qFromLittleEndian(const void *src) +{ + return qFromLittleEndian(qFromUnaligned(src)); +} + +template <> inline quint8 qFromLittleEndian(const void *src) +{ return static_cast(src)[0]; } +template <> inline qint8 qFromLittleEndian(const void *src) +{ return static_cast(src)[0]; } + +/* This function will read a big-endian (also known as network order) encoded value from \a src + * and return the value in host-endian encoding. + * There is no requirement that \a src must be aligned. +*/ +template inline T qFromBigEndian(const void *src) +{ + return qFromBigEndian(qFromUnaligned(src)); +} + +template <> inline quint8 qFromBigEndian(const void *src) +{ return static_cast(src)[0]; } +template <> inline qint8 qFromBigEndian(const void *src) +{ return static_cast(src)[0]; } + +QT_END_NAMESPACE + +#endif // QENDIAN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qeventloop.h b/qrenderdoc/3rdparty/qt/include/QtCore/qeventloop.h new file mode 100644 index 000000000..e62b1d841 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qeventloop.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEVENTLOOP_H +#define QEVENTLOOP_H + +#include + +QT_BEGIN_NAMESPACE + + +class QEventLoopPrivate; + +class Q_CORE_EXPORT QEventLoop : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QEventLoop) + +public: + explicit QEventLoop(QObject *parent = Q_NULLPTR); + ~QEventLoop(); + + enum ProcessEventsFlag { + AllEvents = 0x00, + ExcludeUserInputEvents = 0x01, + ExcludeSocketNotifiers = 0x02, + WaitForMoreEvents = 0x04, + X11ExcludeTimers = 0x08, + EventLoopExec = 0x20, + DialogExec = 0x40 + }; + Q_DECLARE_FLAGS(ProcessEventsFlags, ProcessEventsFlag) + + bool processEvents(ProcessEventsFlags flags = AllEvents); + void processEvents(ProcessEventsFlags flags, int maximumTime); + + int exec(ProcessEventsFlags flags = AllEvents); + void exit(int returnCode = 0); + bool isRunning() const; + + void wakeUp(); + + bool event(QEvent *event) Q_DECL_OVERRIDE; + +public Q_SLOTS: + void quit(); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QEventLoop::ProcessEventsFlags) + + +class QEventLoopLockerPrivate; + +class Q_CORE_EXPORT QEventLoopLocker +{ +public: + QEventLoopLocker(); + explicit QEventLoopLocker(QEventLoop *loop); + explicit QEventLoopLocker(QThread *thread); + ~QEventLoopLocker(); + +private: + Q_DISABLE_COPY(QEventLoopLocker) + QEventLoopLockerPrivate *d_ptr; +}; + +QT_END_NAMESPACE + +#endif // QEVENTLOOP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qeventtransition.h b/qrenderdoc/3rdparty/qt/include/QtCore/qeventtransition.h new file mode 100644 index 000000000..3c66e7265 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qeventtransition.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEVENTTRANSITION_H +#define QEVENTTRANSITION_H + +#include +#include + +QT_REQUIRE_CONFIG(qeventtransition); + +QT_BEGIN_NAMESPACE + +class QEventTransitionPrivate; +class Q_CORE_EXPORT QEventTransition : public QAbstractTransition +{ + Q_OBJECT + Q_PROPERTY(QObject* eventSource READ eventSource WRITE setEventSource) + Q_PROPERTY(QEvent::Type eventType READ eventType WRITE setEventType) +public: + QEventTransition(QState *sourceState = Q_NULLPTR); + QEventTransition(QObject *object, QEvent::Type type, QState *sourceState = Q_NULLPTR); + ~QEventTransition(); + + QObject *eventSource() const; + void setEventSource(QObject *object); + + QEvent::Type eventType() const; + void setEventType(QEvent::Type type); + +protected: + bool eventTest(QEvent *event) Q_DECL_OVERRIDE; + void onTransition(QEvent *event) Q_DECL_OVERRIDE; + + bool event(QEvent *e) Q_DECL_OVERRIDE; + +protected: + QEventTransition(QEventTransitionPrivate &dd, QState *parent); + QEventTransition(QEventTransitionPrivate &dd, QObject *object, + QEvent::Type type, QState *parent); + +private: + Q_DISABLE_COPY(QEventTransition) + Q_DECLARE_PRIVATE(QEventTransition) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qexception.h b/qrenderdoc/3rdparty/qt/include/QtCore/qexception.h new file mode 100644 index 000000000..b14d386c6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qexception.h @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTCORE_QEXCEPTION_H +#define QTCORE_QEXCEPTION_H + +#include + +#ifndef QT_NO_QFUTURE + +#include +#include + +#ifndef QT_NO_EXCEPTIONS +# include +#endif + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_EXCEPTIONS + +class Q_CORE_EXPORT QException : public std::exception +{ +public: + ~QException() +#ifdef Q_COMPILER_NOEXCEPT + noexcept +#else + throw() +#endif + ; + virtual void raise() const; + virtual QException *clone() const; +}; + +class Q_CORE_EXPORT QUnhandledException : public QException +{ +public: + ~QUnhandledException() +#ifdef Q_COMPILER_NOEXCEPT + noexcept +#else + throw() +#endif + ; + void raise() const Q_DECL_OVERRIDE; + QUnhandledException *clone() const Q_DECL_OVERRIDE; +}; + +namespace QtPrivate { + +class Base; +class Q_CORE_EXPORT ExceptionHolder +{ +public: + ExceptionHolder(QException *exception = Q_NULLPTR); + ExceptionHolder(const ExceptionHolder &other); + void operator=(const ExceptionHolder &other); // ### Qt6: copy-assign operator shouldn't return void. Remove this method and the copy-ctor, they are unneeded. + ~ExceptionHolder(); + QException *exception() const; + QExplicitlySharedDataPointer base; +}; + +class Q_CORE_EXPORT ExceptionStore +{ +public: + void setException(const QException &e); + bool hasException() const; + ExceptionHolder exception(); + void throwPossibleException(); + bool hasThrown() const; + ExceptionHolder exceptionHolder; +}; + +} // namespace QtPrivate + +#else // QT_NO_EXCEPTIONS + +namespace QtPrivate { + +class Q_CORE_EXPORT ExceptionStore +{ +public: + ExceptionStore() { } + inline void throwPossibleException() {} +}; + +} // namespace QtPrivate + +#endif // QT_NO_EXCEPTIONS + +QT_END_NAMESPACE + +#endif // QT_NO_QFUTURE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfactoryinterface.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfactoryinterface.h new file mode 100644 index 000000000..f30646069 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfactoryinterface.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFACTORYINTERFACE_H +#define QFACTORYINTERFACE_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +struct Q_CORE_EXPORT QFactoryInterface +{ + virtual ~QFactoryInterface(); + virtual QStringList keys() const = 0; +}; + + +Q_DECLARE_INTERFACE(QFactoryInterface, "org.qt-project.Qt.QFactoryInterface") + +QT_END_NAMESPACE + +#endif // QFACTORYINTERFACE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfile.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfile.h new file mode 100644 index 000000000..a2a1b2524 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfile.h @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILE_H +#define QFILE_H + +#include +#include +#include + +#ifdef open +#error qfile.h must be included before any header file that defines open +#endif + +QT_BEGIN_NAMESPACE + +class QTemporaryFile; +class QFilePrivate; + +class Q_CORE_EXPORT QFile : public QFileDevice +{ +#ifndef QT_NO_QOBJECT + Q_OBJECT +#endif + Q_DECLARE_PRIVATE(QFile) + +public: + QFile(); + QFile(const QString &name); +#ifndef QT_NO_QOBJECT + explicit QFile(QObject *parent); + QFile(const QString &name, QObject *parent); +#endif + ~QFile(); + + QString fileName() const Q_DECL_OVERRIDE; + void setFileName(const QString &name); + +#if defined(Q_OS_DARWIN) + // Mac always expects filenames in UTF-8... and decomposed... + static inline QByteArray encodeName(const QString &fileName) + { + return fileName.normalized(QString::NormalizationForm_D).toUtf8(); + } + static QString decodeName(const QByteArray &localFileName) + { + return QString::fromUtf8(localFileName).normalized(QString::NormalizationForm_C); + } +#else + static inline QByteArray encodeName(const QString &fileName) + { + return fileName.toLocal8Bit(); + } + static QString decodeName(const QByteArray &localFileName) + { + return QString::fromLocal8Bit(localFileName); + } +#endif + inline static QString decodeName(const char *localFileName) + { return decodeName(QByteArray(localFileName)); } + +#if QT_DEPRECATED_SINCE(5,0) + typedef QByteArray (*EncoderFn)(const QString &fileName); + typedef QString (*DecoderFn)(const QByteArray &localfileName); + QT_DEPRECATED static void setEncodingFunction(EncoderFn) {} + QT_DEPRECATED static void setDecodingFunction(DecoderFn) {} +#endif + + bool exists() const; + static bool exists(const QString &fileName); + + QString readLink() const; + static QString readLink(const QString &fileName); + inline QString symLinkTarget() const { return readLink(); } + inline static QString symLinkTarget(const QString &fileName) { return readLink(fileName); } + + bool remove(); + static bool remove(const QString &fileName); + + bool rename(const QString &newName); + static bool rename(const QString &oldName, const QString &newName); + + bool link(const QString &newName); + static bool link(const QString &oldname, const QString &newName); + + bool copy(const QString &newName); + static bool copy(const QString &fileName, const QString &newName); + + bool open(OpenMode flags) Q_DECL_OVERRIDE; + bool open(FILE *f, OpenMode ioFlags, FileHandleFlags handleFlags=DontCloseHandle); + bool open(int fd, OpenMode ioFlags, FileHandleFlags handleFlags=DontCloseHandle); + + qint64 size() const Q_DECL_OVERRIDE; + + bool resize(qint64 sz) Q_DECL_OVERRIDE; + static bool resize(const QString &filename, qint64 sz); + + Permissions permissions() const Q_DECL_OVERRIDE; + static Permissions permissions(const QString &filename); + bool setPermissions(Permissions permissionSpec) Q_DECL_OVERRIDE; + static bool setPermissions(const QString &filename, Permissions permissionSpec); + +protected: +#ifdef QT_NO_QOBJECT + QFile(QFilePrivate &dd); +#else + QFile(QFilePrivate &dd, QObject *parent = Q_NULLPTR); +#endif + +private: + friend class QTemporaryFile; + Q_DISABLE_COPY(QFile) +}; + +QT_END_NAMESPACE + +#endif // QFILE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfiledevice.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfiledevice.h new file mode 100644 index 000000000..4cfda1b04 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfiledevice.h @@ -0,0 +1,143 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILEDEVICE_H +#define QFILEDEVICE_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QFileDevicePrivate; + +class Q_CORE_EXPORT QFileDevice : public QIODevice +{ +#ifndef QT_NO_QOBJECT + Q_OBJECT +#endif + Q_DECLARE_PRIVATE(QFileDevice) + +public: + enum FileError { + NoError = 0, + ReadError = 1, + WriteError = 2, + FatalError = 3, + ResourceError = 4, + OpenError = 5, + AbortError = 6, + TimeOutError = 7, + UnspecifiedError = 8, + RemoveError = 9, + RenameError = 10, + PositionError = 11, + ResizeError = 12, + PermissionsError = 13, + CopyError = 14 + }; + + enum Permission { + ReadOwner = 0x4000, WriteOwner = 0x2000, ExeOwner = 0x1000, + ReadUser = 0x0400, WriteUser = 0x0200, ExeUser = 0x0100, + ReadGroup = 0x0040, WriteGroup = 0x0020, ExeGroup = 0x0010, + ReadOther = 0x0004, WriteOther = 0x0002, ExeOther = 0x0001 + }; + Q_DECLARE_FLAGS(Permissions, Permission) + + enum FileHandleFlag { + AutoCloseHandle = 0x0001, + DontCloseHandle = 0 + }; + Q_DECLARE_FLAGS(FileHandleFlags, FileHandleFlag) + + ~QFileDevice(); + + FileError error() const; + void unsetError(); + + virtual void close() Q_DECL_OVERRIDE; + + bool isSequential() const Q_DECL_OVERRIDE; + + int handle() const; + virtual QString fileName() const; + + qint64 pos() const Q_DECL_OVERRIDE; + bool seek(qint64 offset) Q_DECL_OVERRIDE; + bool atEnd() const Q_DECL_OVERRIDE; + bool flush(); + + qint64 size() const Q_DECL_OVERRIDE; + + virtual bool resize(qint64 sz); + virtual Permissions permissions() const; + virtual bool setPermissions(Permissions permissionSpec); + + // ### Qt 6: rename to MemoryMapFlag & make it a QFlags + enum MemoryMapFlags { + NoOptions = 0, + MapPrivateOption = 0x0001 + }; + + uchar *map(qint64 offset, qint64 size, MemoryMapFlags flags = NoOptions); + bool unmap(uchar *address); + +protected: + QFileDevice(); +#ifdef QT_NO_QOBJECT + QFileDevice(QFileDevicePrivate &dd); +#else + explicit QFileDevice(QObject *parent); + QFileDevice(QFileDevicePrivate &dd, QObject *parent = Q_NULLPTR); +#endif + + qint64 readData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 writeData(const char *data, qint64 len) Q_DECL_OVERRIDE; + qint64 readLineData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QFileDevice) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QFileDevice::Permissions) + +QT_END_NAMESPACE + +#endif // QFILEDEVICE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfileinfo.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfileinfo.h new file mode 100644 index 000000000..a160e8463 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfileinfo.h @@ -0,0 +1,158 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILEINFO_H +#define QFILEINFO_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class QDir; +class QDirIteratorPrivate; +class QDateTime; +class QFileInfoPrivate; + +class Q_CORE_EXPORT QFileInfo +{ + friend class QDirIteratorPrivate; +public: + explicit QFileInfo(QFileInfoPrivate *d); + + QFileInfo(); + QFileInfo(const QString &file); + QFileInfo(const QFile &file); + QFileInfo(const QDir &dir, const QString &file); + QFileInfo(const QFileInfo &fileinfo); + ~QFileInfo(); + + QFileInfo &operator=(const QFileInfo &fileinfo); +#ifdef Q_COMPILER_RVALUE_REFS + QFileInfo &operator=(QFileInfo &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + + void swap(QFileInfo &other) Q_DECL_NOTHROW + { qSwap(d_ptr, other.d_ptr); } + + bool operator==(const QFileInfo &fileinfo) const; + inline bool operator!=(const QFileInfo &fileinfo) const { return !(operator==(fileinfo)); } + + void setFile(const QString &file); + void setFile(const QFile &file); + void setFile(const QDir &dir, const QString &file); + bool exists() const; + static bool exists(const QString &file); + void refresh(); + + QString filePath() const; + QString absoluteFilePath() const; + QString canonicalFilePath() const; + QString fileName() const; + QString baseName() const; + QString completeBaseName() const; + QString suffix() const; + QString bundleName() const; + QString completeSuffix() const; + + QString path() const; + QString absolutePath() const; + QString canonicalPath() const; + QDir dir() const; + QDir absoluteDir() const; + + bool isReadable() const; + bool isWritable() const; + bool isExecutable() const; + bool isHidden() const; + bool isNativePath() const; + + bool isRelative() const; + inline bool isAbsolute() const { return !isRelative(); } + bool makeAbsolute(); + + bool isFile() const; + bool isDir() const; + bool isSymLink() const; + bool isRoot() const; + bool isBundle() const; + + QString readLink() const; + inline QString symLinkTarget() const { return readLink(); } + + QString owner() const; + uint ownerId() const; + QString group() const; + uint groupId() const; + + bool permission(QFile::Permissions permissions) const; + QFile::Permissions permissions() const; + + qint64 size() const; + + QDateTime created() const; + QDateTime lastModified() const; + QDateTime lastRead() const; + + bool caching() const; + void setCaching(bool on); + +protected: + QSharedDataPointer d_ptr; + +private: + QFileInfoPrivate* d_func(); + inline const QFileInfoPrivate* d_func() const + { + return d_ptr.constData(); + } +}; + +Q_DECLARE_SHARED(QFileInfo) + +typedef QList QFileInfoList; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QFileInfo) + +#endif // QFILEINFO_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfileselector.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfileselector.h new file mode 100644 index 000000000..fafb7f760 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfileselector.h @@ -0,0 +1,70 @@ +/*************************************************************************** +** +** Copyright (C) 2013 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESELECTOR_H +#define QFILESELECTOR_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QFileSelectorPrivate; +class Q_CORE_EXPORT QFileSelector : public QObject +{ + Q_OBJECT +public: + explicit QFileSelector(QObject *parent = Q_NULLPTR); + ~QFileSelector(); + + QString select(const QString &filePath) const; + QUrl select(const QUrl &filePath) const; + + QStringList extraSelectors() const; + void setExtraSelectors(const QStringList &list); + + QStringList allSelectors() const; + +private: + Q_DECLARE_PRIVATE(QFileSelector) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfilesystemwatcher.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfilesystemwatcher.h new file mode 100644 index 000000000..09d4e8e65 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfilesystemwatcher.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMWATCHER_H +#define QFILESYSTEMWATCHER_H + +#include + +#ifndef QT_NO_FILESYSTEMWATCHER + +QT_BEGIN_NAMESPACE + + +class QFileSystemWatcherPrivate; + +class Q_CORE_EXPORT QFileSystemWatcher : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QFileSystemWatcher) + +public: + QFileSystemWatcher(QObject *parent = Q_NULLPTR); + QFileSystemWatcher(const QStringList &paths, QObject *parent = Q_NULLPTR); + ~QFileSystemWatcher(); + + bool addPath(const QString &file); + QStringList addPaths(const QStringList &files); + bool removePath(const QString &file); + QStringList removePaths(const QStringList &files); + + QStringList files() const; + QStringList directories() const; + +Q_SIGNALS: + void fileChanged(const QString &path, QPrivateSignal); + void directoryChanged(const QString &path, QPrivateSignal); + +private: + Q_PRIVATE_SLOT(d_func(), void _q_fileChanged(const QString &path, bool removed)) + Q_PRIVATE_SLOT(d_func(), void _q_directoryChanged(const QString &path, bool removed)) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_FILESYSTEMWATCHER +#endif // QFILESYSTEMWATCHER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfinalstate.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfinalstate.h new file mode 100644 index 000000000..1563bef39 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfinalstate.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFINALSTATE_H +#define QFINALSTATE_H + +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QFinalStatePrivate; +class Q_CORE_EXPORT QFinalState : public QAbstractState +{ + Q_OBJECT +public: + QFinalState(QState *parent = Q_NULLPTR); + ~QFinalState(); + +protected: + void onEntry(QEvent *event) Q_DECL_OVERRIDE; + void onExit(QEvent *event) Q_DECL_OVERRIDE; + + bool event(QEvent *e) Q_DECL_OVERRIDE; + +protected: + explicit QFinalState(QFinalStatePrivate &dd, QState *parent); + +private: + Q_DISABLE_COPY(QFinalState) + Q_DECLARE_PRIVATE(QFinalState) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qflags.h b/qrenderdoc/3rdparty/qt/include/QtCore/qflags.h new file mode 100644 index 000000000..72b0a689f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qflags.h @@ -0,0 +1,198 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QFLAGS_H +#define QFLAGS_H + +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + +QT_BEGIN_NAMESPACE + +class QDataStream; + +class QFlag +{ + int i; +public: + Q_DECL_CONSTEXPR inline QFlag(int ai) Q_DECL_NOTHROW : i(ai) {} + Q_DECL_CONSTEXPR inline operator int() const Q_DECL_NOTHROW { return i; } + +#if !defined(Q_CC_MSVC) + // Microsoft Visual Studio has buggy behavior when it comes to + // unsigned enums: even if the enum is unsigned, the enum tags are + // always signed +# if !defined(__LP64__) && !defined(Q_QDOC) + Q_DECL_CONSTEXPR inline QFlag(long ai) Q_DECL_NOTHROW : i(int(ai)) {} + Q_DECL_CONSTEXPR inline QFlag(ulong ai) Q_DECL_NOTHROW : i(int(long(ai))) {} +# endif + Q_DECL_CONSTEXPR inline QFlag(uint ai) Q_DECL_NOTHROW : i(int(ai)) {} + Q_DECL_CONSTEXPR inline QFlag(short ai) Q_DECL_NOTHROW : i(int(ai)) {} + Q_DECL_CONSTEXPR inline QFlag(ushort ai) Q_DECL_NOTHROW : i(int(uint(ai))) {} + Q_DECL_CONSTEXPR inline operator uint() const Q_DECL_NOTHROW { return uint(i); } +#endif +}; +Q_DECLARE_TYPEINFO(QFlag, Q_PRIMITIVE_TYPE); + +class QIncompatibleFlag +{ + int i; +public: + Q_DECL_CONSTEXPR inline explicit QIncompatibleFlag(int i) Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline operator int() const Q_DECL_NOTHROW { return i; } +}; +Q_DECLARE_TYPEINFO(QIncompatibleFlag, Q_PRIMITIVE_TYPE); + +Q_DECL_CONSTEXPR inline QIncompatibleFlag::QIncompatibleFlag(int ai) Q_DECL_NOTHROW : i(ai) {} + + +#ifndef Q_NO_TYPESAFE_FLAGS + +template +class QFlags +{ + Q_STATIC_ASSERT_X((sizeof(Enum) <= sizeof(int)), + "QFlags uses an int as storage, so an enum with underlying " + "long long will overflow."); + Q_STATIC_ASSERT_X((std::is_enum::value), "QFlags is only usable on enumeration types."); + + struct Private; + typedef int (Private::*Zero); + template friend QDataStream &operator>>(QDataStream &, QFlags &); + template friend QDataStream &operator<<(QDataStream &, QFlags); +public: +#if defined(Q_CC_MSVC) || defined(Q_QDOC) + // see above for MSVC + // the definition below is too complex for qdoc + typedef int Int; +#else + typedef typename std::conditional< + std::is_unsigned::type>::value, + unsigned int, + signed int + >::type Int; +#endif + typedef Enum enum_type; + // compiler-generated copy/move ctor/assignment operators are fine! +#ifdef Q_QDOC + Q_DECL_CONSTEXPR inline QFlags(const QFlags &other); + Q_DECL_CONSTEXPR inline QFlags &operator=(const QFlags &other); +#endif + Q_DECL_CONSTEXPR inline QFlags(Enum f) Q_DECL_NOTHROW : i(Int(f)) {} + Q_DECL_CONSTEXPR inline QFlags(Zero = Q_NULLPTR) Q_DECL_NOTHROW : i(0) {} + Q_DECL_CONSTEXPR inline QFlags(QFlag f) Q_DECL_NOTHROW : i(f) {} + +#ifdef Q_COMPILER_INITIALIZER_LISTS + Q_DECL_CONSTEXPR inline QFlags(std::initializer_list flags) Q_DECL_NOTHROW + : i(initializer_list_helper(flags.begin(), flags.end())) {} +#endif + + Q_DECL_RELAXED_CONSTEXPR inline QFlags &operator&=(int mask) Q_DECL_NOTHROW { i &= mask; return *this; } + Q_DECL_RELAXED_CONSTEXPR inline QFlags &operator&=(uint mask) Q_DECL_NOTHROW { i &= mask; return *this; } + Q_DECL_RELAXED_CONSTEXPR inline QFlags &operator&=(Enum mask) Q_DECL_NOTHROW { i &= Int(mask); return *this; } + Q_DECL_RELAXED_CONSTEXPR inline QFlags &operator|=(QFlags f) Q_DECL_NOTHROW { i |= f.i; return *this; } + Q_DECL_RELAXED_CONSTEXPR inline QFlags &operator|=(Enum f) Q_DECL_NOTHROW { i |= Int(f); return *this; } + Q_DECL_RELAXED_CONSTEXPR inline QFlags &operator^=(QFlags f) Q_DECL_NOTHROW { i ^= f.i; return *this; } + Q_DECL_RELAXED_CONSTEXPR inline QFlags &operator^=(Enum f) Q_DECL_NOTHROW { i ^= Int(f); return *this; } + + Q_DECL_CONSTEXPR inline operator Int() const Q_DECL_NOTHROW { return i; } + + Q_DECL_CONSTEXPR inline QFlags operator|(QFlags f) const Q_DECL_NOTHROW { return QFlags(QFlag(i | f.i)); } + Q_DECL_CONSTEXPR inline QFlags operator|(Enum f) const Q_DECL_NOTHROW { return QFlags(QFlag(i | Int(f))); } + Q_DECL_CONSTEXPR inline QFlags operator^(QFlags f) const Q_DECL_NOTHROW { return QFlags(QFlag(i ^ f.i)); } + Q_DECL_CONSTEXPR inline QFlags operator^(Enum f) const Q_DECL_NOTHROW { return QFlags(QFlag(i ^ Int(f))); } + Q_DECL_CONSTEXPR inline QFlags operator&(int mask) const Q_DECL_NOTHROW { return QFlags(QFlag(i & mask)); } + Q_DECL_CONSTEXPR inline QFlags operator&(uint mask) const Q_DECL_NOTHROW { return QFlags(QFlag(i & mask)); } + Q_DECL_CONSTEXPR inline QFlags operator&(Enum f) const Q_DECL_NOTHROW { return QFlags(QFlag(i & Int(f))); } + Q_DECL_CONSTEXPR inline QFlags operator~() const Q_DECL_NOTHROW { return QFlags(QFlag(~i)); } + + Q_DECL_CONSTEXPR inline bool operator!() const Q_DECL_NOTHROW { return !i; } + + Q_DECL_CONSTEXPR inline bool testFlag(Enum f) const Q_DECL_NOTHROW { return (i & Int(f)) == Int(f) && (Int(f) != 0 || i == Int(f) ); } + Q_DECL_RELAXED_CONSTEXPR inline QFlags &setFlag(Enum f, bool on = true) Q_DECL_NOTHROW + { + return on ? (*this |= f) : (*this &= ~Int(f)); + } + +private: +#ifdef Q_COMPILER_INITIALIZER_LISTS + Q_DECL_CONSTEXPR static inline Int initializer_list_helper(typename std::initializer_list::const_iterator it, + typename std::initializer_list::const_iterator end) + Q_DECL_NOTHROW + { + return (it == end ? Int(0) : (Int(*it) | initializer_list_helper(it + 1, end))); + } +#endif + + Int i; +}; + +#ifndef Q_MOC_RUN +#define Q_DECLARE_FLAGS(Flags, Enum)\ +typedef QFlags Flags; +#endif + +#define Q_DECLARE_INCOMPATIBLE_FLAGS(Flags) \ +Q_DECL_CONSTEXPR inline QIncompatibleFlag operator|(Flags::enum_type f1, int f2) Q_DECL_NOTHROW \ +{ return QIncompatibleFlag(int(f1) | f2); } + +#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags) \ +Q_DECL_CONSTEXPR inline QFlags operator|(Flags::enum_type f1, Flags::enum_type f2) Q_DECL_NOTHROW \ +{ return QFlags(f1) | f2; } \ +Q_DECL_CONSTEXPR inline QFlags operator|(Flags::enum_type f1, QFlags f2) Q_DECL_NOTHROW \ +{ return f2 | f1; } Q_DECLARE_INCOMPATIBLE_FLAGS(Flags) + + +#else /* Q_NO_TYPESAFE_FLAGS */ + +#ifndef Q_MOC_RUN +#define Q_DECLARE_FLAGS(Flags, Enum)\ +typedef uint Flags; +#endif + +#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags) + +#endif /* Q_NO_TYPESAFE_FLAGS */ + +QT_END_NAMESPACE + +#endif // QFLAGS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfloat16.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfloat16.h new file mode 100644 index 000000000..a0aa9496b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfloat16.h @@ -0,0 +1,256 @@ +/**************************************************************************** +** +** Copyright (C) 2016 by Southwest Research Institute (R) +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFLOAT16_H +#define QFLOAT16_H + +#include +#include +#include + +#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__) +// All processors that support AVX2 do support F16C too. That doesn't mean +// we're allowed to use the intrinsics directly, so we'll do it only for +// the Intel and Microsoft's compilers. +# if defined(Q_CC_INTEL) || defined(Q_CC_MSVC) +# define __F16C__ 1 +# endif +#endif + +#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__) +#include +#endif + +QT_BEGIN_NAMESPACE + +#if 0 +#pragma qt_class(QFloat16) +#pragma qt_no_master_include +#endif + +class qfloat16 +{ +public: +#ifndef Q_QDOC + Q_DECL_CONSTEXPR inline qfloat16() Q_DECL_NOTHROW : b16(0) { } + inline qfloat16(float f) Q_DECL_NOTHROW; + inline operator float() const Q_DECL_NOTHROW; +#endif + +private: + quint16 b16; + + Q_CORE_EXPORT static const quint32 mantissatable[]; + Q_CORE_EXPORT static const quint32 exponenttable[]; + Q_CORE_EXPORT static const quint32 offsettable[]; + Q_CORE_EXPORT static const quint32 basetable[]; + Q_CORE_EXPORT static const quint32 shifttable[]; + + friend bool qIsNull(qfloat16 f) Q_DECL_NOTHROW; + friend qfloat16 operator-(qfloat16 a) Q_DECL_NOTHROW; +}; + +Q_DECLARE_TYPEINFO(qfloat16, Q_PRIMITIVE_TYPE); + +Q_REQUIRED_RESULT Q_CORE_EXPORT bool qIsInf(qfloat16 f) Q_DECL_NOTHROW; // complements qnumeric.h +Q_REQUIRED_RESULT Q_CORE_EXPORT bool qIsNaN(qfloat16 f) Q_DECL_NOTHROW; // complements qnumeric.h +Q_REQUIRED_RESULT Q_CORE_EXPORT bool qIsFinite(qfloat16 f) Q_DECL_NOTHROW; // complements qnumeric.h + +// The remainder of these utility functions complement qglobal.h +Q_REQUIRED_RESULT inline int qRound(qfloat16 d) Q_DECL_NOTHROW +{ return qRound(static_cast(d)); } + +Q_REQUIRED_RESULT inline qint64 qRound64(qfloat16 d) Q_DECL_NOTHROW +{ return qRound64(static_cast(d)); } + +Q_REQUIRED_RESULT inline bool qFuzzyCompare(qfloat16 p1, qfloat16 p2) Q_DECL_NOTHROW +{ + float f1 = static_cast(p1); + float f2 = static_cast(p2); + // The significand precision for IEEE754 half precision is + // 11 bits (10 explicitly stored), or approximately 3 decimal + // digits. In selecting the fuzzy comparison factor of 102.5f + // (that is, (2^10+1)/10) below, we effectively select a + // window of about 1 (least significant) decimal digit about + // which the two operands can vary and still return true. + return (qAbs(f1 - f2) * 102.5f <= qMin(qAbs(f1), qAbs(f2))); +} + +Q_REQUIRED_RESULT inline bool qIsNull(qfloat16 f) Q_DECL_NOTHROW +{ + return (f.b16 & static_cast(0x7fff)) == 0; +} + +inline int qIntCast(qfloat16 f) Q_DECL_NOTHROW +{ return int(static_cast(f)); } + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wc99-extensions") +QT_WARNING_DISABLE_GCC("-Wold-style-cast") +inline qfloat16::qfloat16(float f) Q_DECL_NOTHROW +{ +#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__) + __m128 packsingle = _mm_set_ss(f); + __m128i packhalf = _mm_cvtps_ph(packsingle, 0); + b16 = _mm_extract_epi16(packhalf, 0); +#elif defined (__ARM_FP16_FORMAT_IEEE) + __fp16 f16 = f; + memcpy(&b16, &f16, sizeof(quint16)); +#else + quint32 u; + memcpy(&u, &f, sizeof(quint32)); + b16 = basetable[(u >> 23) & 0x1ff] + + ((u & 0x007fffff) >> shifttable[(u >> 23) & 0x1ff]); +#endif +} +QT_WARNING_POP + +inline qfloat16::operator float() const Q_DECL_NOTHROW +{ +#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__) + __m128i packhalf = _mm_cvtsi32_si128(b16); + __m128 packsingle = _mm_cvtph_ps(packhalf); + return _mm_cvtss_f32(packsingle); +#elif defined (__ARM_FP16_FORMAT_IEEE) + __fp16 f16; + memcpy(&f16, &b16, sizeof(quint16)); + return float(f16); +#else + quint32 u = mantissatable[offsettable[b16 >> 10] + (b16 & 0x3ff)] + + exponenttable[b16 >> 10]; + float f; + memcpy(&f, &u, sizeof(quint32)); + return f; +#endif +} + +inline qfloat16 operator-(qfloat16 a) Q_DECL_NOTHROW +{ + qfloat16 f; + f.b16 = a.b16 ^ quint16(0x8000); + return f; +} + +inline qfloat16 operator+(qfloat16 a, qfloat16 b) Q_DECL_NOTHROW { return qfloat16(static_cast(a) + static_cast(b)); } +inline qfloat16 operator-(qfloat16 a, qfloat16 b) Q_DECL_NOTHROW { return qfloat16(static_cast(a) - static_cast(b)); } +inline qfloat16 operator*(qfloat16 a, qfloat16 b) Q_DECL_NOTHROW { return qfloat16(static_cast(a) * static_cast(b)); } +inline qfloat16 operator/(qfloat16 a, qfloat16 b) Q_DECL_NOTHROW { return qfloat16(static_cast(a) / static_cast(b)); } + +#define QF16_MAKE_ARITH_OP_FP(FP, OP) \ + inline FP operator OP(qfloat16 lhs, FP rhs) Q_DECL_NOTHROW { return static_cast(lhs) OP rhs; } \ + inline FP operator OP(FP lhs, qfloat16 rhs) Q_DECL_NOTHROW { return lhs OP static_cast(rhs); } +#define QF16_MAKE_ARITH_OP_EQ_FP(FP, OP_EQ, OP) \ + inline qfloat16& operator OP_EQ(qfloat16& lhs, FP rhs) Q_DECL_NOTHROW { lhs = qfloat16(static_cast(lhs) OP rhs); return lhs; } +#define QF16_MAKE_ARITH_OP(FP) \ + QF16_MAKE_ARITH_OP_FP(FP, +) \ + QF16_MAKE_ARITH_OP_FP(FP, -) \ + QF16_MAKE_ARITH_OP_FP(FP, *) \ + QF16_MAKE_ARITH_OP_FP(FP, /) \ + QF16_MAKE_ARITH_OP_EQ_FP(FP, +=, +) \ + QF16_MAKE_ARITH_OP_EQ_FP(FP, -=, -) \ + QF16_MAKE_ARITH_OP_EQ_FP(FP, *=, *) \ + QF16_MAKE_ARITH_OP_EQ_FP(FP, /=, /) +QF16_MAKE_ARITH_OP(long double) +QF16_MAKE_ARITH_OP(double) +QF16_MAKE_ARITH_OP(float) +#undef QF16_MAKE_ARITH_OP +#undef QF16_MAKE_ARITH_OP_FP + +#define QF16_MAKE_ARITH_OP_INT(OP) \ + inline double operator OP(qfloat16 lhs, int rhs) Q_DECL_NOTHROW { return static_cast(lhs) OP rhs; } \ + inline double operator OP(int lhs, qfloat16 rhs) Q_DECL_NOTHROW { return lhs OP static_cast(rhs); } +QF16_MAKE_ARITH_OP_INT(+) +QF16_MAKE_ARITH_OP_INT(-) +QF16_MAKE_ARITH_OP_INT(*) +QF16_MAKE_ARITH_OP_INT(/) +#undef QF16_MAKE_ARITH_OP_INT + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wfloat-equal") +QT_WARNING_DISABLE_GCC("-Wfloat-equal") + +inline bool operator>(qfloat16 a, qfloat16 b) Q_DECL_NOTHROW { return static_cast(a) > static_cast(b); } +inline bool operator<(qfloat16 a, qfloat16 b) Q_DECL_NOTHROW { return static_cast(a) < static_cast(b); } +inline bool operator>=(qfloat16 a, qfloat16 b) Q_DECL_NOTHROW { return static_cast(a) >= static_cast(b); } +inline bool operator<=(qfloat16 a, qfloat16 b) Q_DECL_NOTHROW { return static_cast(a) <= static_cast(b); } +inline bool operator==(qfloat16 a, qfloat16 b) Q_DECL_NOTHROW { return static_cast(a) == static_cast(b); } +inline bool operator!=(qfloat16 a, qfloat16 b) Q_DECL_NOTHROW { return static_cast(a) != static_cast(b); } + +#define QF16_MAKE_BOOL_OP_FP(FP, OP) \ + inline bool operator OP(qfloat16 lhs, FP rhs) Q_DECL_NOTHROW { return static_cast(lhs) OP rhs; } \ + inline bool operator OP(FP lhs, qfloat16 rhs) Q_DECL_NOTHROW { return lhs OP static_cast(rhs); } +#define QF16_MAKE_BOOL_OP(FP) \ + QF16_MAKE_BOOL_OP_FP(FP, <) \ + QF16_MAKE_BOOL_OP_FP(FP, >) \ + QF16_MAKE_BOOL_OP_FP(FP, >=) \ + QF16_MAKE_BOOL_OP_FP(FP, <=) \ + QF16_MAKE_BOOL_OP_FP(FP, ==) \ + QF16_MAKE_BOOL_OP_FP(FP, !=) +QF16_MAKE_BOOL_OP(long double) +QF16_MAKE_BOOL_OP(double) +QF16_MAKE_BOOL_OP(float) +#undef QF16_MAKE_BOOL_OP +#undef QF16_MAKE_BOOL_OP_FP + +#define QF16_MAKE_BOOL_OP_INT(OP) \ + inline bool operator OP(qfloat16 a, int b) Q_DECL_NOTHROW { return static_cast(a) OP b; } \ + inline bool operator OP(int a, qfloat16 b) Q_DECL_NOTHROW { return a OP static_cast(b); } +QF16_MAKE_BOOL_OP_INT(>) +QF16_MAKE_BOOL_OP_INT(<) +QF16_MAKE_BOOL_OP_INT(>=) +QF16_MAKE_BOOL_OP_INT(<=) +QF16_MAKE_BOOL_OP_INT(==) +QF16_MAKE_BOOL_OP_INT(!=) +#undef QF16_MAKE_BOOL_OP_INT + +QT_WARNING_POP + +/*! + \internal +*/ +Q_REQUIRED_RESULT inline bool qFuzzyIsNull(qfloat16 f) Q_DECL_NOTHROW +{ + return qAbs(static_cast(f)) <= 0.001f; +} + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(qfloat16) + +#endif // QFLOAT16_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfunctions_nacl.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfunctions_nacl.h new file mode 100644 index 000000000..15e415400 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfunctions_nacl.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUNCTIONS_NACL_H +#define QFUNCTIONS_NACL_H + +#include + +#ifdef Q_OS_NACL + +#include + +// pthread +#include +#define PTHREAD_CANCEL_DISABLE 1 +#define PTHREAD_CANCEL_ENABLE 2 +#define PTHREAD_INHERIT_SCHED 3 + +QT_BEGIN_NAMESPACE + + +extern "C" { + +void pthread_cleanup_push(void (*handler)(void *), void *arg); +void pthread_cleanup_pop(int execute); + +int pthread_setcancelstate(int state, int *oldstate); +int pthread_setcanceltype(int type, int *oldtype); +void pthread_testcancel(void); +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 *inheritsched); + +// event dispatcher, select +//struct fd_set; +//struct timeval; +int fcntl(int fildes, int cmd, ...); +int sigaction(int sig, const struct sigaction * act, struct sigaction * oact); + +typedef long off64_t; +off64_t ftello64(void *stream); +off64_t lseek64(int fildes, off_t offset, int whence); +int open64(const char *path, int oflag, ...); + +} + +int select(int nfds, fd_set * readfds, fd_set * writefds, fd_set * errorfds, struct timeval * timeout); + +QT_END_NAMESPACE + +#endif //Q_OS_NACL + +#endif //QFUNCTIONS_NACL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfunctions_vxworks.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfunctions_vxworks.h new file mode 100644 index 000000000..34630a735 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfunctions_vxworks.h @@ -0,0 +1,198 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUNCTIONS_VXWORKS_H +#define QFUNCTIONS_VXWORKS_H + +#include + +#ifdef Q_OS_VXWORKS + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(_WRS_KERNEL) +#include +#else +#include +#endif +#include +#include +#include +#include +#ifndef QT_NO_IPV6IFNAME +#include +#endif + +// VxWorks has public header mbuf.h which defines following variables for DKM. +// Let's undef those to because they overlap with Qt variable names- +// File mbuf.h is included in headers , so make sure +// that those are included before undef's. +#if defined(mbuf) +# undef mbuf +#endif +#if defined(m_data) +# undef m_data +#endif +#if defined(m_type) +# undef m_type +#endif +#if defined(m_next) +# undef m_next +#endif +#if defined(m_len) +# undef m_len +#endif +#if defined(m_flags) +# undef m_flags +#endif +#if defined(m_hdr) +# undef m_hdr +#endif +#if defined(m_ext) +# undef m_ext +#endif +#if defined(m_act) +# undef m_act +#endif +#if defined(m_nextpkt) +# undef m_nextpkt +#endif +#if defined(m_pkthdr) +# undef m_pkthdr +#endif + +QT_BEGIN_NAMESPACE + +#ifdef QT_BUILD_CORE_LIB +#endif + +QT_END_NAMESPACE + +#ifndef RTLD_LOCAL +#define RTLD_LOCAL 0 +#endif + +#ifndef NSIG +#define NSIG _NSIGS +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +// isascii is missing (sometimes!!) +#ifndef isascii +inline int isascii(int c) { return (c & 0x7f); } +#endif + +// no lfind() - used by the TIF image format +void *lfind(const void* key, const void* base, size_t* elements, size_t size, + int (*compare)(const void*, const void*)); + +// 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 + +// getpagesize() not available +int getpagesize(); + +// symlinks are not supported (lstat is now just a call to stat - see qplatformdefs.h) +int symlink(const char *, const char *); +ssize_t readlink(const char *, char *, size_t); + +// there's no truncate(), but ftruncate() support... +int truncate(const char *path, off_t length); + +// VxWorks doesn't know about passwd & friends. +// in order to avoid patching the unix fs path everywhere +// we introduce some dummy functions that simulate a single +// 'root' user on the system. + +uid_t getuid(); +gid_t getgid(); +uid_t geteuid(); + +struct passwd { + char *pw_name; /* user name */ + char *pw_passwd; /* user password */ + uid_t pw_uid; /* user ID */ + gid_t pw_gid; /* group ID */ + char *pw_gecos; /* real name */ + char *pw_dir; /* home directory */ + char *pw_shell; /* shell program */ +}; + +struct group { + char *gr_name; /* group name */ + char *gr_passwd; /* group password */ + gid_t gr_gid; /* group ID */ + char **gr_mem; /* group members */ +}; + +struct passwd *getpwuid(uid_t uid); +struct group *getgrgid(gid_t gid); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // Q_OS_VXWORKS +#endif // QFUNCTIONS_VXWORKS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfunctions_winrt.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfunctions_winrt.h new file mode 100644 index 000000000..d0c44be68 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfunctions_winrt.h @@ -0,0 +1,252 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUNCTIONS_WINRT_H +#define QFUNCTIONS_WINRT_H + +#include + +#ifdef Q_OS_WIN + +#include +#include +#include +#include +#include + +// Convenience macros for handling HRESULT values +#define RETURN_IF_FAILED(msg, ret) \ + if (FAILED(hr)) { \ + qErrnoWarning(hr, msg); \ + ret; \ + } + +#define RETURN_IF_FAILED_WITH_ARGS(msg, ret, ...) \ + if (FAILED(hr)) { \ + qErrnoWarning(hr, msg, __VA_ARGS__); \ + ret; \ + } + +#define RETURN_HR_IF_FAILED(msg) RETURN_IF_FAILED(msg, return hr) +#define RETURN_OK_IF_FAILED(msg) RETURN_IF_FAILED(msg, return S_OK) +#define RETURN_FALSE_IF_FAILED(msg) RETURN_IF_FAILED(msg, return false) +#define RETURN_VOID_IF_FAILED(msg) RETURN_IF_FAILED(msg, return) +#define RETURN_HR_IF_FAILED_WITH_ARGS(msg, ...) RETURN_IF_FAILED_WITH_ARGS(msg, return hr, __VA_ARGS__) +#define RETURN_OK_IF_FAILED_WITH_ARGS(msg, ...) RETURN_IF_FAILED_WITH_ARGS(msg, return S_OK, __VA_ARGS__) +#define RETURN_FALSE_IF_FAILED_WITH_ARGS(msg, ...) RETURN_IF_FAILED_WITH_ARGS(msg, return false, __VA_ARGS__) +#define RETURN_VOID_IF_FAILED_WITH_ARGS(msg, ...) RETURN_IF_FAILED_WITH_ARGS(msg, return, __VA_ARGS__) + +#define Q_ASSERT_SUCCEEDED(hr) \ + Q_ASSERT_X(SUCCEEDED(hr), Q_FUNC_INFO, qPrintable(qt_error_string(hr))); + +#ifdef Q_OS_WINRT + +QT_BEGIN_NAMESPACE + +#ifdef QT_BUILD_CORE_LIB +#endif + +// Environment ------------------------------------------------------ +errno_t qt_fake_getenv_s(size_t*, char*, size_t, const char*); +errno_t qt_fake__putenv_s(const char*, const char*); +void qt_winrt_tzset(); +void qt_winrt__tzset(); + +QT_END_NAMESPACE + +// As Windows Runtime lacks some standard functions used in Qt, these got +// reimplemented. Other projects do this as well. Inline functions are used +// that there is a central place to disable functions for newer versions if +// they get available. There are no defines used anymore, because this +// will break member functions of classes which are called like these +// functions. +// The other declarations available in this file are being used per +// define inside qplatformdefs.h of the corresponding WinRT mkspec. + +#define generate_inline_return_func0(funcname, returntype) \ + inline returntype funcname() \ + { \ + return QT_PREPEND_NAMESPACE(qt_winrt_##funcname)(); \ + } +#define generate_inline_return_func1(funcname, returntype, param1) \ + inline returntype funcname(param1 p1) \ + { \ + return QT_PREPEND_NAMESPACE(qt_winrt_##funcname)(p1); \ + } +#define generate_inline_return_func2(funcname, returntype, prependnamespace, param1, param2) \ + inline returntype funcname(param1 p1, param2 p2) \ + { \ + return QT_PREPEND_NAMESPACE(prependnamespace##funcname)(p1, p2); \ + } +#define generate_inline_return_func3(funcname, returntype, param1, param2, param3) \ + inline returntype funcname(param1 p1, param2 p2, param3 p3) \ + { \ + return QT_PREPEND_NAMESPACE(qt_winrt_##funcname)(p1, p2, p3); \ + } +#define generate_inline_return_func4(funcname, returntype, prependnamespace, param1, param2, param3, param4) \ + inline returntype funcname(param1 p1, param2 p2, param3 p3, param4 p4) \ + { \ + return QT_PREPEND_NAMESPACE(prependnamespace##funcname)(p1, p2, p3, p4); \ + } +#define generate_inline_return_func5(funcname, returntype, param1, param2, param3, param4, param5) \ + inline returntype funcname(param1 p1, param2 p2, param3 p3, param4 p4, param5 p5) \ + { \ + return QT_PREPEND_NAMESPACE(qt_winrt_##funcname)(p1, p2, p3, p4, p5); \ + } +#define generate_inline_return_func6(funcname, returntype, param1, param2, param3, param4, param5, param6) \ + inline returntype funcname(param1 p1, param2 p2, param3 p3, param4 p4, param5 p5, param6 p6) \ + { \ + return QT_PREPEND_NAMESPACE(qt_winrt_##funcname)(p1, p2, p3, p4, p5, p6); \ + } +#define generate_inline_return_func7(funcname, returntype, param1, param2, param3, param4, param5, param6, param7) \ + inline returntype funcname(param1 p1, param2 p2, param3 p3, param4 p4, param5 p5, param6 p6, param7 p7) \ + { \ + return QT_PREPEND_NAMESPACE(qt_winrt_##funcname)(p1, p2, p3, p4, p5, p6, p7); \ + } + +typedef unsigned (__stdcall *StartAdressExFunc)(void *); +typedef void(*StartAdressFunc)(void *); +typedef int ( __cdecl *CompareFunc ) (const void *, const void *) ; + +generate_inline_return_func4(getenv_s, errno_t, qt_fake_, size_t *, char *, size_t, const char *) +generate_inline_return_func2(_putenv_s, errno_t, qt_fake_, const char *, const char *) +generate_inline_return_func0(tzset, void) +generate_inline_return_func0(_tzset, void) + +namespace Microsoft { + namespace WRL { + template class ComPtr; + } +} + +QT_BEGIN_NAMESPACE + +namespace QWinRTFunctions { + +// Synchronization methods +enum AwaitStyle +{ + YieldThread = 0, + ProcessThreadEvents = 1, + ProcessMainThreadEvents = 2 +}; + +template +static inline HRESULT _await_impl(const Microsoft::WRL::ComPtr &asyncOp, AwaitStyle awaitStyle, uint timeout) +{ + Microsoft::WRL::ComPtr asyncInfo; + HRESULT hr = asyncOp.As(&asyncInfo); + if (FAILED(hr)) + return hr; + + AsyncStatus status; + QElapsedTimer t; + if (timeout) + t.start(); + switch (awaitStyle) { + case ProcessMainThreadEvents: + while (SUCCEEDED(hr = asyncInfo->get_Status(&status)) && status == AsyncStatus::Started) { + QCoreApplication::processEvents(); + if (timeout && t.hasExpired(timeout)) + return ERROR_TIMEOUT; + } + break; + case ProcessThreadEvents: + if (QAbstractEventDispatcher *dispatcher = QThread::currentThread()->eventDispatcher()) { + while (SUCCEEDED(hr = asyncInfo->get_Status(&status)) && status == AsyncStatus::Started) { + dispatcher->processEvents(QEventLoop::AllEvents); + if (timeout && t.hasExpired(timeout)) + return ERROR_TIMEOUT; + } + break; + } + // fall through + default: + case YieldThread: + while (SUCCEEDED(hr = asyncInfo->get_Status(&status)) && status == AsyncStatus::Started) { + QThread::yieldCurrentThread(); + if (timeout && t.hasExpired(timeout)) + return ERROR_TIMEOUT; + } + break; + } + + if (FAILED(hr) || status != AsyncStatus::Completed) { + HRESULT ec; + hr = asyncInfo->get_ErrorCode(&ec); + if (FAILED(hr)) + return hr; + hr = asyncInfo->Close(); + if (FAILED(hr)) + return hr; + return ec; + } + + return hr; +} + +template +static inline HRESULT await(const Microsoft::WRL::ComPtr &asyncOp, AwaitStyle awaitStyle = YieldThread, uint timeout = 0) +{ + HRESULT hr = _await_impl(asyncOp, awaitStyle, timeout); + if (FAILED(hr)) + return hr; + + return asyncOp->GetResults(); +} + +template +static inline HRESULT await(const Microsoft::WRL::ComPtr &asyncOp, U *results, AwaitStyle awaitStyle = YieldThread, uint timeout = 0) +{ + HRESULT hr = _await_impl(asyncOp, awaitStyle, timeout); + if (FAILED(hr)) + return hr; + + return asyncOp->GetResults(results); +} + +} // QWinRTFunctions + +QT_END_NAMESPACE + +#endif // Q_OS_WINRT + +#endif // Q_OS_WIN + +#endif // QFUNCTIONS_WINRT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfuture.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfuture.h new file mode 100644 index 000000000..1f0c747f4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfuture.h @@ -0,0 +1,247 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUTURE_H +#define QFUTURE_H + +#include + +#ifndef QT_NO_QFUTURE + +#include +#include + +QT_BEGIN_NAMESPACE + + +template +class QFutureWatcher; +template <> +class QFutureWatcher; + +template +class QFuture +{ +public: + QFuture() + : d(QFutureInterface::canceledResult()) + { } + explicit QFuture(QFutureInterface *p) // internal + : d(*p) + { } + + bool operator==(const QFuture &other) const { return (d == other.d); } + bool operator!=(const QFuture &other) const { return (d != other.d); } + + void cancel() { d.cancel(); } + bool isCanceled() const { return d.isCanceled(); } + + void setPaused(bool paused) { d.setPaused(paused); } + bool isPaused() const { return d.isPaused(); } + void pause() { setPaused(true); } + void resume() { setPaused(false); } + void togglePaused() { d.togglePaused(); } + + bool isStarted() const { return d.isStarted(); } + bool isFinished() const { return d.isFinished(); } + bool isRunning() const { return d.isRunning(); } + + int resultCount() const { return d.resultCount(); } + int progressValue() const { return d.progressValue(); } + int progressMinimum() const { return d.progressMinimum(); } + int progressMaximum() const { return d.progressMaximum(); } + QString progressText() const { return d.progressText(); } + void waitForFinished() { d.waitForFinished(); } + + inline T result() const; + inline T resultAt(int index) const; + bool isResultReadyAt(int resultIndex) const { return d.isResultReadyAt(resultIndex); } + + operator T() const { return result(); } + QList results() const { return d.results(); } + + class const_iterator + { + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + inline const_iterator() {} + inline const_iterator(QFuture const * const _future, int _index) : future(_future), index(_index) {} + inline const_iterator(const const_iterator &o) : future(o.future), index(o.index) {} + inline const_iterator &operator=(const const_iterator &o) + { future = o.future; index = o.index; return *this; } + inline const T &operator*() const { return future->d.resultReference(index); } + inline const T *operator->() const { return future->d.resultPointer(index); } + + inline bool operator!=(const const_iterator &other) const + { + if (index == -1 && other.index == -1) // comparing end != end? + return false; + if (other.index == -1) + return (future->isRunning() || (index < future->resultCount())); + return (index != other.index); + } + + inline bool operator==(const const_iterator &o) const { return !operator!=(o); } + inline const_iterator &operator++() { ++index; return *this; } + inline const_iterator operator++(int) { const_iterator r = *this; ++index; return r; } + inline const_iterator &operator--() { --index; return *this; } + inline const_iterator operator--(int) { const_iterator r = *this; --index; return r; } + inline const_iterator operator+(int j) const { return const_iterator(future, index + j); } + inline const_iterator operator-(int j) const { return const_iterator(future, index - j); } + inline const_iterator &operator+=(int j) { index += j; return *this; } + inline const_iterator &operator-=(int j) { index -= j; return *this; } + private: + QFuture const * future; + int index; + }; + friend class const_iterator; + typedef const_iterator ConstIterator; + + const_iterator begin() const { return const_iterator(this, 0); } + const_iterator constBegin() const { return const_iterator(this, 0); } + const_iterator end() const { return const_iterator(this, -1); } + const_iterator constEnd() const { return const_iterator(this, -1); } + +private: + friend class QFutureWatcher; + +public: // Warning: the d pointer is not documented and is considered private. + mutable QFutureInterface d; +}; + +template +inline T QFuture::result() const +{ + d.waitForResult(0); + return d.resultReference(0); +} + +template +inline T QFuture::resultAt(int index) const +{ + d.waitForResult(index); + return d.resultReference(index); +} + +template +inline QFuture QFutureInterface::future() +{ + return QFuture(this); +} + +Q_DECLARE_SEQUENTIAL_ITERATOR(Future) + +template <> +class QFuture +{ +public: + QFuture() + : d(QFutureInterface::canceledResult()) + { } + explicit QFuture(QFutureInterfaceBase *p) // internal + : d(*p) + { } + + bool operator==(const QFuture &other) const { return (d == other.d); } + bool operator!=(const QFuture &other) const { return (d != other.d); } + +#if !defined(Q_CC_XLC) + template + QFuture(const QFuture &other) + : d(other.d) + { } + + template + QFuture &operator=(const QFuture &other) + { + d = other.d; + return *this; + } +#endif + + void cancel() { d.cancel(); } + bool isCanceled() const { return d.isCanceled(); } + + void setPaused(bool paused) { d.setPaused(paused); } + bool isPaused() const { return d.isPaused(); } + void pause() { setPaused(true); } + void resume() { setPaused(false); } + void togglePaused() { d.togglePaused(); } + + bool isStarted() const { return d.isStarted(); } + bool isFinished() const { return d.isFinished(); } + bool isRunning() const { return d.isRunning(); } + + int resultCount() const { return d.resultCount(); } + int progressValue() const { return d.progressValue(); } + int progressMinimum() const { return d.progressMinimum(); } + int progressMaximum() const { return d.progressMaximum(); } + QString progressText() const { return d.progressText(); } + void waitForFinished() { d.waitForFinished(); } + +private: + friend class QFutureWatcher; + +#ifdef QFUTURE_TEST +public: +#endif + mutable QFutureInterfaceBase d; +}; + +inline QFuture QFutureInterface::future() +{ + return QFuture(this); +} + +template +QFuture qToVoidFuture(const QFuture &future) +{ + return QFuture(future.d); +} + +QT_END_NAMESPACE + +#endif // QT_NO_QFUTURE + +#endif // QFUTURE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfutureinterface.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfutureinterface.h new file mode 100644 index 000000000..7b12f51e3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfutureinterface.h @@ -0,0 +1,300 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUTUREINTERFACE_H +#define QFUTUREINTERFACE_H + +#include + +#ifndef QT_NO_QFUTURE + +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +template class QFuture; +class QThreadPool; +class QFutureInterfaceBasePrivate; +class QFutureWatcherBase; +class QFutureWatcherBasePrivate; + +class Q_CORE_EXPORT QFutureInterfaceBase +{ +public: + enum State { + NoState = 0x00, + Running = 0x01, + Started = 0x02, + Finished = 0x04, + Canceled = 0x08, + Paused = 0x10, + Throttled = 0x20 + }; + + QFutureInterfaceBase(State initialState = NoState); + QFutureInterfaceBase(const QFutureInterfaceBase &other); + virtual ~QFutureInterfaceBase(); + + // reporting functions available to the engine author: + void reportStarted(); + void reportFinished(); + void reportCanceled(); +#ifndef QT_NO_EXCEPTIONS + void reportException(const QException &e); +#endif + void reportResultsReady(int beginIndex, int endIndex); + + void setRunnable(QRunnable *runnable); + void setThreadPool(QThreadPool *pool); + void setFilterMode(bool enable); + void setProgressRange(int minimum, int maximum); + int progressMinimum() const; + int progressMaximum() const; + bool isProgressUpdateNeeded() const; + void setProgressValue(int progressValue); + int progressValue() const; + void setProgressValueAndText(int progressValue, const QString &progressText); + QString progressText() const; + + void setExpectedResultCount(int resultCount); + int expectedResultCount(); + int resultCount() const; + + bool queryState(State state) const; + bool isRunning() const; + bool isStarted() const; + bool isCanceled() const; + bool isFinished() const; + bool isPaused() const; + bool isThrottled() const; + bool isResultReadyAt(int index) const; + + void cancel(); + void setPaused(bool paused); + void togglePaused(); + void setThrottled(bool enable); + + void waitForFinished(); + bool waitForNextResult(); + void waitForResult(int resultIndex); + void waitForResume(); + + QMutex *mutex() const; + QtPrivate::ExceptionStore &exceptionStore(); + QtPrivate::ResultStoreBase &resultStoreBase(); + const QtPrivate::ResultStoreBase &resultStoreBase() const; + + inline bool operator==(const QFutureInterfaceBase &other) const { return d == other.d; } + inline bool operator!=(const QFutureInterfaceBase &other) const { return d != other.d; } + QFutureInterfaceBase &operator=(const QFutureInterfaceBase &other); + +protected: + bool refT() const; + bool derefT() const; +public: + +#ifndef QFUTURE_TEST +private: +#endif + QFutureInterfaceBasePrivate *d; + +private: + friend class QFutureWatcherBase; + friend class QFutureWatcherBasePrivate; +}; + +template +class QFutureInterface : public QFutureInterfaceBase +{ +public: + QFutureInterface(State initialState = NoState) + : QFutureInterfaceBase(initialState) + { + refT(); + } + QFutureInterface(const QFutureInterface &other) + : QFutureInterfaceBase(other) + { + refT(); + } + ~QFutureInterface() + { + if (!derefT()) + resultStoreBase().template clear(); + } + + static QFutureInterface canceledResult() + { return QFutureInterface(State(Started | Finished | Canceled)); } + + QFutureInterface &operator=(const QFutureInterface &other) + { + other.refT(); + if (!derefT()) + resultStoreBase().template clear(); + QFutureInterfaceBase::operator=(other); + return *this; + } + + inline QFuture future(); // implemented in qfuture.h + + inline void reportResult(const T *result, int index = -1); + inline void reportResult(const T &result, int index = -1); + inline void reportResults(const QVector &results, int beginIndex = -1, int count = -1); + inline void reportFinished(const T *result = 0); + + inline const T &resultReference(int index) const; + inline const T *resultPointer(int index) const; + inline QList results(); +}; + +template +inline void QFutureInterface::reportResult(const T *result, int index) +{ + QMutexLocker locker(mutex()); + if (this->queryState(Canceled) || this->queryState(Finished)) { + return; + } + + QtPrivate::ResultStoreBase &store = resultStoreBase(); + + if (store.filterMode()) { + const int resultCountBefore = store.count(); + store.addResult(index, result); + this->reportResultsReady(resultCountBefore, resultCountBefore + store.count()); + } else { + const int insertIndex = store.addResult(index, result); + this->reportResultsReady(insertIndex, insertIndex + 1); + } +} + +template +inline void QFutureInterface::reportResult(const T &result, int index) +{ + reportResult(&result, index); +} + +template +inline void QFutureInterface::reportResults(const QVector &_results, int beginIndex, int count) +{ + QMutexLocker locker(mutex()); + if (this->queryState(Canceled) || this->queryState(Finished)) { + return; + } + + auto &store = resultStoreBase(); + + if (store.filterMode()) { + const int resultCountBefore = store.count(); + store.addResults(beginIndex, &_results, count); + this->reportResultsReady(resultCountBefore, store.count()); + } else { + const int insertIndex = store.addResults(beginIndex, &_results, count); + this->reportResultsReady(insertIndex, insertIndex + _results.count()); + } +} + +template +inline void QFutureInterface::reportFinished(const T *result) +{ + if (result) + reportResult(result); + QFutureInterfaceBase::reportFinished(); +} + +template +inline const T &QFutureInterface::resultReference(int index) const +{ + QMutexLocker lock(mutex()); + return resultStoreBase().resultAt(index).template value(); +} + +template +inline const T *QFutureInterface::resultPointer(int index) const +{ + QMutexLocker lock(mutex()); + return resultStoreBase().resultAt(index).template pointer(); +} + +template +inline QList QFutureInterface::results() +{ + if (this->isCanceled()) { + exceptionStore().throwPossibleException(); + return QList(); + } + QFutureInterfaceBase::waitForResult(-1); + + QList res; + QMutexLocker lock(mutex()); + + QtPrivate::ResultIteratorBase it = resultStoreBase().begin(); + while (it != resultStoreBase().end()) { + res.append(it.value()); + ++it; + } + + return res; +} + +template <> +class QFutureInterface : public QFutureInterfaceBase +{ +public: + explicit QFutureInterface(State initialState = NoState) + : QFutureInterfaceBase(initialState) + { } + + static QFutureInterface canceledResult() + { return QFutureInterface(State(Started | Finished | Canceled)); } + + + inline QFuture future(); // implemented in qfuture.h + + void reportResult(const void *, int) { } + void reportResults(const QVector &, int) { } + void reportFinished(const void * = Q_NULLPTR) { QFutureInterfaceBase::reportFinished(); } +}; + +QT_END_NAMESPACE +#endif // QT_NO_QFUTURE + +#endif // QFUTUREINTERFACE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfuturesynchronizer.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfuturesynchronizer.h new file mode 100644 index 000000000..6bc272502 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfuturesynchronizer.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUTURESYNCHRONIZER_H +#define QFUTURESYNCHRONIZER_H + +#include + +#ifndef QT_NO_QFUTURE + +QT_BEGIN_NAMESPACE + + +template +class QFutureSynchronizer +{ + Q_DISABLE_COPY(QFutureSynchronizer) + +public: + QFutureSynchronizer() : m_cancelOnWait(false) { } + explicit QFutureSynchronizer(const QFuture &future) + : m_cancelOnWait(false) + { addFuture(future); } + ~QFutureSynchronizer() { waitForFinished(); } + + void setFuture(const QFuture &future) + { + waitForFinished(); + m_futures.clear(); + addFuture(future); + } + + void addFuture(const QFuture &future) + { + m_futures.append(future); + } + + void waitForFinished() + { + if (m_cancelOnWait) { + for (int i = 0; i < m_futures.count(); ++i) { + m_futures[i].cancel(); + } + } + + for (int i = 0; i < m_futures.count(); ++i) { + m_futures[i].waitForFinished(); + } + } + + void clearFutures() + { + m_futures.clear(); + } + + QList > futures() const + { + return m_futures; + } + + void setCancelOnWait(bool enabled) + { + m_cancelOnWait = enabled; + } + + bool cancelOnWait() const + { + return m_cancelOnWait; + } + +protected: + QList > m_futures; + bool m_cancelOnWait; +}; + +QT_END_NAMESPACE +#endif // QT_NO_QFUTURE + +#endif // QFUTURESYNCHRONIZER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qfuturewatcher.h b/qrenderdoc/3rdparty/qt/include/QtCore/qfuturewatcher.h new file mode 100644 index 000000000..8a6716a8f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qfuturewatcher.h @@ -0,0 +1,217 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUTUREWATCHER_H +#define QFUTUREWATCHER_H + +#include + +#ifndef QT_NO_QFUTURE + +#include + +QT_BEGIN_NAMESPACE + + +class QEvent; + +class QFutureWatcherBasePrivate; +class Q_CORE_EXPORT QFutureWatcherBase : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QFutureWatcherBase) + +public: + explicit QFutureWatcherBase(QObject *parent = Q_NULLPTR); + // de-inline dtor + + int progressValue() const; + int progressMinimum() const; + int progressMaximum() const; + QString progressText() const; + + bool isStarted() const; + bool isFinished() const; + bool isRunning() const; + bool isCanceled() const; + bool isPaused() const; + + void waitForFinished(); + + void setPendingResultsLimit(int limit); + + bool event(QEvent *event) Q_DECL_OVERRIDE; + +Q_SIGNALS: + void started(); + void finished(); + void canceled(); + void paused(); + void resumed(); + void resultReadyAt(int resultIndex); + void resultsReadyAt(int beginIndex, int endIndex); + void progressRangeChanged(int minimum, int maximum); + void progressValueChanged(int progressValue); + void progressTextChanged(const QString &progressText); + +public Q_SLOTS: + void cancel(); + void setPaused(bool paused); + void pause(); + void resume(); + void togglePaused(); + +protected: + void connectNotify (const QMetaMethod &signal) Q_DECL_OVERRIDE; + void disconnectNotify (const QMetaMethod &signal) Q_DECL_OVERRIDE; + + // called from setFuture() implemented in template sub-classes + void connectOutputInterface(); + void disconnectOutputInterface(bool pendingAssignment = false); + +private: + // implemented in the template sub-classes + virtual const QFutureInterfaceBase &futureInterface() const = 0; + virtual QFutureInterfaceBase &futureInterface() = 0; +}; + +template +class QFutureWatcher : public QFutureWatcherBase +{ +public: + explicit QFutureWatcher(QObject *_parent = nullptr) + : QFutureWatcherBase(_parent) + { } + ~QFutureWatcher() + { disconnectOutputInterface(); } + + void setFuture(const QFuture &future); + QFuture future() const + { return m_future; } + + T result() const { return m_future.result(); } + T resultAt(int index) const { return m_future.resultAt(index); } + +#ifdef Q_QDOC + int progressValue() const; + int progressMinimum() const; + int progressMaximum() const; + QString progressText() const; + + bool isStarted() const; + bool isFinished() const; + bool isRunning() const; + bool isCanceled() const; + bool isPaused() const; + + void waitForFinished(); + + void setPendingResultsLimit(int limit); + +Q_SIGNALS: + void started(); + void finished(); + void canceled(); + void paused(); + void resumed(); + void resultReadyAt(int resultIndex); + void resultsReadyAt(int beginIndex, int endIndex); + void progressRangeChanged(int minimum, int maximum); + void progressValueChanged(int progressValue); + void progressTextChanged(const QString &progressText); + +public Q_SLOTS: + void cancel(); + void setPaused(bool paused); + void pause(); + void resume(); + void togglePaused(); +#endif + +private: + QFuture m_future; + const QFutureInterfaceBase &futureInterface() const Q_DECL_OVERRIDE { return m_future.d; } + QFutureInterfaceBase &futureInterface() Q_DECL_OVERRIDE { return m_future.d; } +}; + +template +Q_INLINE_TEMPLATE void QFutureWatcher::setFuture(const QFuture &_future) +{ + if (_future == m_future) + return; + + disconnectOutputInterface(true); + m_future = _future; + connectOutputInterface(); +} + +template <> +class QFutureWatcher : public QFutureWatcherBase +{ +public: + explicit QFutureWatcher(QObject *_parent = Q_NULLPTR) + : QFutureWatcherBase(_parent) + { } + ~QFutureWatcher() + { disconnectOutputInterface(); } + + void setFuture(const QFuture &future); + QFuture future() const + { return m_future; } + +private: + QFuture m_future; + const QFutureInterfaceBase &futureInterface() const Q_DECL_OVERRIDE { return m_future.d; } + QFutureInterfaceBase &futureInterface() Q_DECL_OVERRIDE { return m_future.d; } +}; + +Q_INLINE_TEMPLATE void QFutureWatcher::setFuture(const QFuture &_future) +{ + if (_future == m_future) + return; + + disconnectOutputInterface(true); + m_future = _future; + connectOutputInterface(); +} + +QT_END_NAMESPACE +#endif // QT_NO_QFUTURE + +#endif // QFUTUREWATCHER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qgenericatomic.h b/qrenderdoc/3rdparty/qt/include/QtCore/qgenericatomic.h new file mode 100644 index 000000000..5c4c02a2e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qgenericatomic.h @@ -0,0 +1,386 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Thiago Macieira +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGENERICATOMIC_H +#define QGENERICATOMIC_H + +#include +#include + +QT_BEGIN_NAMESPACE + +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + +template struct QAtomicOpsSupport { enum { IsSupported = 0 }; }; +template<> struct QAtomicOpsSupport<4> { enum { IsSupported = 1 }; }; + +template struct QAtomicAdditiveType +{ + typedef T AdditiveT; + static const int AddScale = 1; +}; +template struct QAtomicAdditiveType +{ + typedef qptrdiff AdditiveT; + static const int AddScale = sizeof(T); +}; + +// not really atomic... +template struct QGenericAtomicOps +{ + template struct AtomicType { typedef T Type; typedef T *PointerType; }; + + template static void acquireMemoryFence(const T &_q_value) Q_DECL_NOTHROW + { + BaseClass::orderedMemoryFence(_q_value); + } + template static void releaseMemoryFence(const T &_q_value) Q_DECL_NOTHROW + { + BaseClass::orderedMemoryFence(_q_value); + } + template static void orderedMemoryFence(const T &) Q_DECL_NOTHROW + { + } + + template static Q_ALWAYS_INLINE + T load(const T &_q_value) Q_DECL_NOTHROW + { + return _q_value; + } + + template static Q_ALWAYS_INLINE + void store(T &_q_value, X newValue) Q_DECL_NOTHROW + { + _q_value = newValue; + } + + template static Q_ALWAYS_INLINE + T loadAcquire(const T &_q_value) Q_DECL_NOTHROW + { + T tmp = *static_cast(&_q_value); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template static Q_ALWAYS_INLINE + void storeRelease(T &_q_value, X newValue) Q_DECL_NOTHROW + { + BaseClass::releaseMemoryFence(_q_value); + *static_cast(&_q_value) = newValue; + } + + static inline Q_DECL_CONSTEXPR bool isReferenceCountingNative() Q_DECL_NOTHROW + { return BaseClass::isFetchAndAddNative(); } + static inline Q_DECL_CONSTEXPR bool isReferenceCountingWaitFree() Q_DECL_NOTHROW + { return BaseClass::isFetchAndAddWaitFree(); } + template static Q_ALWAYS_INLINE + bool ref(T &_q_value) Q_DECL_NOTHROW + { + return BaseClass::fetchAndAddRelaxed(_q_value, 1) != T(-1); + } + + template static Q_ALWAYS_INLINE + bool deref(T &_q_value) Q_DECL_NOTHROW + { + return BaseClass::fetchAndAddRelaxed(_q_value, -1) != 1; + } + +#if 0 + // These functions have no default implementation + // Archictectures must implement them + static inline Q_DECL_CONSTEXPR bool isTestAndSetNative() Q_DECL_NOTHROW; + static inline Q_DECL_CONSTEXPR bool isTestAndSetWaitFree() Q_DECL_NOTHROW; + template static inline + bool testAndSetRelaxed(T &_q_value, X expectedValue, X newValue) Q_DECL_NOTHROW; + template static inline + bool testAndSetRelaxed(T &_q_value, X expectedValue, X newValue, X *currentValue) Q_DECL_NOTHROW; +#endif + + template static Q_ALWAYS_INLINE + bool testAndSetAcquire(T &_q_value, X expectedValue, X newValue) Q_DECL_NOTHROW + { + bool tmp = BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template static Q_ALWAYS_INLINE + bool testAndSetRelease(T &_q_value, X expectedValue, X newValue) Q_DECL_NOTHROW + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue); + } + + template static Q_ALWAYS_INLINE + bool testAndSetOrdered(T &_q_value, X expectedValue, X newValue) Q_DECL_NOTHROW + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue); + } + + template static Q_ALWAYS_INLINE + bool testAndSetAcquire(T &_q_value, X expectedValue, X newValue, X *currentValue) Q_DECL_NOTHROW + { + bool tmp = BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue, currentValue); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template static Q_ALWAYS_INLINE + bool testAndSetRelease(T &_q_value, X expectedValue, X newValue, X *currentValue) Q_DECL_NOTHROW + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue, currentValue); + } + + template static Q_ALWAYS_INLINE + bool testAndSetOrdered(T &_q_value, X expectedValue, X newValue, X *currentValue) Q_DECL_NOTHROW + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue, currentValue); + } + + static inline Q_DECL_CONSTEXPR bool isFetchAndStoreNative() Q_DECL_NOTHROW { return false; } + static inline Q_DECL_CONSTEXPR bool isFetchAndStoreWaitFree() Q_DECL_NOTHROW { return false; } + + template static Q_ALWAYS_INLINE + T fetchAndStoreRelaxed(T &_q_value, X newValue) Q_DECL_NOTHROW + { + // implement fetchAndStore on top of testAndSet + Q_FOREVER { + T tmp = load(_q_value); + if (BaseClass::testAndSetRelaxed(_q_value, tmp, newValue)) + return tmp; + } + } + + template static Q_ALWAYS_INLINE + T fetchAndStoreAcquire(T &_q_value, X newValue) Q_DECL_NOTHROW + { + T tmp = BaseClass::fetchAndStoreRelaxed(_q_value, newValue); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template static Q_ALWAYS_INLINE + T fetchAndStoreRelease(T &_q_value, X newValue) Q_DECL_NOTHROW + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndStoreRelaxed(_q_value, newValue); + } + + template static Q_ALWAYS_INLINE + T fetchAndStoreOrdered(T &_q_value, X newValue) Q_DECL_NOTHROW + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndStoreRelaxed(_q_value, newValue); + } + + static inline Q_DECL_CONSTEXPR bool isFetchAndAddNative() Q_DECL_NOTHROW { return false; } + static inline Q_DECL_CONSTEXPR bool isFetchAndAddWaitFree() Q_DECL_NOTHROW { return false; } + template static Q_ALWAYS_INLINE + T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + // implement fetchAndAdd on top of testAndSet + Q_FOREVER { + T tmp = BaseClass::load(_q_value); + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp + valueToAdd))) + return tmp; + } + } + + template static Q_ALWAYS_INLINE + T fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + T tmp = BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template static Q_ALWAYS_INLINE + T fetchAndAddRelease(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd); + } + + template static Q_ALWAYS_INLINE + T fetchAndAddOrdered(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd); + } + + template static Q_ALWAYS_INLINE + T fetchAndSubRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT operand) Q_DECL_NOTHROW + { + // implement fetchAndSub on top of fetchAndAdd + return fetchAndAddRelaxed(_q_value, -operand); + } + + template static Q_ALWAYS_INLINE + T fetchAndSubAcquire(T &_q_value, typename QAtomicAdditiveType::AdditiveT operand) Q_DECL_NOTHROW + { + T tmp = BaseClass::fetchAndSubRelaxed(_q_value, operand); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template static Q_ALWAYS_INLINE + T fetchAndSubRelease(T &_q_value, typename QAtomicAdditiveType::AdditiveT operand) Q_DECL_NOTHROW + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndSubRelaxed(_q_value, operand); + } + + template static Q_ALWAYS_INLINE + T fetchAndSubOrdered(T &_q_value, typename QAtomicAdditiveType::AdditiveT operand) Q_DECL_NOTHROW + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndSubRelaxed(_q_value, operand); + } + + template static Q_ALWAYS_INLINE + T fetchAndAndRelaxed(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + // implement fetchAndAnd on top of testAndSet + T tmp = BaseClass::load(_q_value); + Q_FOREVER { + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp & operand), &tmp)) + return tmp; + } + } + + template static Q_ALWAYS_INLINE + T fetchAndAndAcquire(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + T tmp = BaseClass::fetchAndAndRelaxed(_q_value, operand); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template static Q_ALWAYS_INLINE + T fetchAndAndRelease(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndAndRelaxed(_q_value, operand); + } + + template static Q_ALWAYS_INLINE + T fetchAndAndOrdered(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndAndRelaxed(_q_value, operand); + } + + template static Q_ALWAYS_INLINE + T fetchAndOrRelaxed(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + // implement fetchAndOr on top of testAndSet + T tmp = BaseClass::load(_q_value); + Q_FOREVER { + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp | operand), &tmp)) + return tmp; + } + } + + template static Q_ALWAYS_INLINE + T fetchAndOrAcquire(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + T tmp = BaseClass::fetchAndOrRelaxed(_q_value, operand); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template static Q_ALWAYS_INLINE + T fetchAndOrRelease(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndOrRelaxed(_q_value, operand); + } + + template static Q_ALWAYS_INLINE + T fetchAndOrOrdered(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndOrRelaxed(_q_value, operand); + } + + template static Q_ALWAYS_INLINE + T fetchAndXorRelaxed(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + // implement fetchAndXor on top of testAndSet + T tmp = BaseClass::load(_q_value); + Q_FOREVER { + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp ^ operand), &tmp)) + return tmp; + } + } + + template static Q_ALWAYS_INLINE + T fetchAndXorAcquire(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + T tmp = BaseClass::fetchAndXorRelaxed(_q_value, operand); + BaseClass::acquireMemoryFence(_q_value); + return tmp; + } + + template static Q_ALWAYS_INLINE + T fetchAndXorRelease(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + BaseClass::releaseMemoryFence(_q_value); + return BaseClass::fetchAndXorRelaxed(_q_value, operand); + } + + template static Q_ALWAYS_INLINE + T fetchAndXorOrdered(T &_q_value, typename std::enable_if::isIntegral, T>::type operand) Q_DECL_NOTHROW + { + BaseClass::orderedMemoryFence(_q_value); + return BaseClass::fetchAndXorRelaxed(_q_value, operand); + } +}; + +QT_END_NAMESPACE +#endif // QGENERICATOMIC_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qglobal.h b/qrenderdoc/3rdparty/qt/include/QtCore/qglobal.h new file mode 100644 index 000000000..35c35ac64 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qglobal.h @@ -0,0 +1,1165 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGLOBAL_H +#define QGLOBAL_H + +#ifdef __cplusplus +# include +# include +# include +#endif + +#include + +/* + QT_VERSION is (major << 16) + (minor << 8) + patch. +*/ +#define QT_VERSION QT_VERSION_CHECK(QT_VERSION_MAJOR, QT_VERSION_MINOR, QT_VERSION_PATCH) +/* + can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) +*/ +#define QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch)) + +#ifdef QT_BOOTSTRAPPED +#include +#else +#include +#include +#endif + +// The QT_SUPPORTS macro is deprecated. Don't use it in new code. +// Instead, use QT_CONFIG(feature) +// ### Qt6: remove macro +#ifdef _MSC_VER +# define QT_SUPPORTS(FEATURE) (!defined QT_NO_##FEATURE) +#else +# define QT_SUPPORTS(FEATURE) (!defined(QT_NO_##FEATURE)) +#endif + +/* + The QT_CONFIG macro implements a safe compile time check for features of Qt. + Features can be in three states: + 0 or undefined: This will lead to a compile error when testing for it + -1: The feature is not available + 1: The feature is available +*/ +#define QT_CONFIG(feature) (1/QT_FEATURE_##feature == 1) +#define QT_REQUIRE_CONFIG(feature) Q_STATIC_ASSERT_X(QT_FEATURE_##feature == 1, "Required feature " #feature " for file " __FILE__ " not available.") + +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) +# define QT_NO_UNSHARABLE_CONTAINERS +#endif + +/* These two macros makes it possible to turn the builtin line expander into a + * string literal. */ +#define QT_STRINGIFY2(x) #x +#define QT_STRINGIFY(x) QT_STRINGIFY2(x) + +#include +#include +#include + +#if defined (__ELF__) +# define Q_OF_ELF +#endif +#if defined (__MACH__) && defined (__APPLE__) +# define Q_OF_MACH_O +#endif + +#ifdef __cplusplus + +#include + +#if !defined(QT_NAMESPACE) || defined(Q_MOC_RUN) /* user namespace */ + +# define QT_PREPEND_NAMESPACE(name) ::name +# define QT_USE_NAMESPACE +# define QT_BEGIN_NAMESPACE +# define QT_END_NAMESPACE +# define QT_BEGIN_INCLUDE_NAMESPACE +# define QT_END_INCLUDE_NAMESPACE +#ifndef QT_BEGIN_MOC_NAMESPACE +# define QT_BEGIN_MOC_NAMESPACE +#endif +#ifndef QT_END_MOC_NAMESPACE +# define QT_END_MOC_NAMESPACE +#endif +# define QT_FORWARD_DECLARE_CLASS(name) class name; +# define QT_FORWARD_DECLARE_STRUCT(name) struct name; +# define QT_MANGLE_NAMESPACE(name) name + +#else /* user namespace */ + +# define QT_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name +# define QT_USE_NAMESPACE using namespace ::QT_NAMESPACE; +# define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE { +# define QT_END_NAMESPACE } +# define QT_BEGIN_INCLUDE_NAMESPACE } +# define QT_END_INCLUDE_NAMESPACE namespace QT_NAMESPACE { +#ifndef QT_BEGIN_MOC_NAMESPACE +# define QT_BEGIN_MOC_NAMESPACE QT_USE_NAMESPACE +#endif +#ifndef QT_END_MOC_NAMESPACE +# define QT_END_MOC_NAMESPACE +#endif +# define QT_FORWARD_DECLARE_CLASS(name) \ + QT_BEGIN_NAMESPACE class name; QT_END_NAMESPACE \ + using QT_PREPEND_NAMESPACE(name); + +# define QT_FORWARD_DECLARE_STRUCT(name) \ + QT_BEGIN_NAMESPACE struct name; QT_END_NAMESPACE \ + using QT_PREPEND_NAMESPACE(name); + +# define QT_MANGLE_NAMESPACE0(x) x +# define QT_MANGLE_NAMESPACE1(a, b) a##_##b +# define QT_MANGLE_NAMESPACE2(a, b) QT_MANGLE_NAMESPACE1(a,b) +# define QT_MANGLE_NAMESPACE(name) QT_MANGLE_NAMESPACE2( \ + QT_MANGLE_NAMESPACE0(name), QT_MANGLE_NAMESPACE0(QT_NAMESPACE)) + +namespace QT_NAMESPACE {} + +# ifndef QT_BOOTSTRAPPED +# ifndef QT_NO_USING_NAMESPACE + /* + This expands to a "using QT_NAMESPACE" also in _header files_. + It is the only way the feature can be used without too much + pain, but if people _really_ do not want it they can add + DEFINES += QT_NO_USING_NAMESPACE to their .pro files. + */ + QT_USE_NAMESPACE +# endif +# endif + +#endif /* user namespace */ + +#else /* __cplusplus */ + +# define QT_BEGIN_NAMESPACE +# define QT_END_NAMESPACE +# define QT_USE_NAMESPACE +# define QT_BEGIN_INCLUDE_NAMESPACE +# define QT_END_INCLUDE_NAMESPACE + +#endif /* __cplusplus */ + +// ### Qt6: remove me. +#define QT_BEGIN_HEADER +#define QT_END_HEADER + +#if defined(Q_OS_DARWIN) && !defined(QT_LARGEFILE_SUPPORT) +# define QT_LARGEFILE_SUPPORT 64 +#endif + +QT_BEGIN_NAMESPACE + +/* + Size-dependent types (architechture-dependent byte order) + + Make sure to update QMetaType when changing these typedefs +*/ + +typedef signed char qint8; /* 8 bit signed */ +typedef unsigned char quint8; /* 8 bit unsigned */ +typedef short qint16; /* 16 bit signed */ +typedef unsigned short quint16; /* 16 bit unsigned */ +typedef int qint32; /* 32 bit signed */ +typedef unsigned int quint32; /* 32 bit unsigned */ +#if defined(Q_OS_WIN) && !defined(Q_CC_GNU) +# define Q_INT64_C(c) c ## i64 /* signed 64 bit constant */ +# define Q_UINT64_C(c) c ## ui64 /* unsigned 64 bit constant */ +typedef __int64 qint64; /* 64 bit signed */ +typedef unsigned __int64 quint64; /* 64 bit unsigned */ +#else +# define Q_INT64_C(c) static_cast(c ## LL) /* signed 64 bit constant */ +# define Q_UINT64_C(c) static_cast(c ## ULL) /* unsigned 64 bit constant */ +typedef long long qint64; /* 64 bit signed */ +typedef unsigned long long quint64; /* 64 bit unsigned */ +#endif + +typedef qint64 qlonglong; +typedef quint64 qulonglong; + +/* + Useful type definitions for Qt +*/ + +QT_BEGIN_INCLUDE_NAMESPACE +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; +typedef unsigned long ulong; +QT_END_INCLUDE_NAMESPACE + +#if defined(QT_COORD_TYPE) +typedef QT_COORD_TYPE qreal; +#else +typedef double qreal; +#endif + +#if defined(QT_NO_DEPRECATED) +# undef QT_DEPRECATED +# undef QT_DEPRECATED_X +# undef QT_DEPRECATED_VARIABLE +# undef QT_DEPRECATED_CONSTRUCTOR +#elif defined(QT_DEPRECATED_WARNINGS) +# undef QT_DEPRECATED +# define QT_DEPRECATED Q_DECL_DEPRECATED +# undef QT_DEPRECATED_X +# define QT_DEPRECATED_X(text) Q_DECL_DEPRECATED_X(text) +# undef QT_DEPRECATED_VARIABLE +# define QT_DEPRECATED_VARIABLE Q_DECL_VARIABLE_DEPRECATED +# undef QT_DEPRECATED_CONSTRUCTOR +# define QT_DEPRECATED_CONSTRUCTOR explicit Q_DECL_CONSTRUCTOR_DEPRECATED +#else +# undef QT_DEPRECATED +# define QT_DEPRECATED +# undef QT_DEPRECATED_X +# define QT_DEPRECATED_X(text) +# undef QT_DEPRECATED_VARIABLE +# define QT_DEPRECATED_VARIABLE +# undef QT_DEPRECATED_CONSTRUCTOR +# define QT_DEPRECATED_CONSTRUCTOR +#endif + +#ifndef QT_DISABLE_DEPRECATED_BEFORE +#define QT_DISABLE_DEPRECATED_BEFORE QT_VERSION_CHECK(5, 0, 0) +#endif + +/* + QT_DEPRECATED_SINCE(major, minor) evaluates as true if the Qt version is greater than + the deprecation point specified. + + Use it to specify from which version of Qt a function or class has been deprecated + + Example: + #if QT_DEPRECATED_SINCE(5,1) + QT_DEPRECATED void deprecatedFunction(); //function deprecated since Qt 5.1 + #endif + +*/ +#ifdef QT_DEPRECATED +#define QT_DEPRECATED_SINCE(major, minor) (QT_VERSION_CHECK(major, minor, 0) > QT_DISABLE_DEPRECATED_BEFORE) +#else +#define QT_DEPRECATED_SINCE(major, minor) 0 +#endif + +/* + The Qt modules' export macros. + The options are: + - defined(QT_STATIC): Qt was built or is being built in static mode + - defined(QT_SHARED): Qt was built or is being built in shared/dynamic mode + If neither was defined, then QT_SHARED is implied. If Qt was compiled in static + mode, QT_STATIC is defined in qconfig.h. In shared mode, QT_STATIC is implied + for the bootstrapped tools. +*/ + +#ifdef QT_BOOTSTRAPPED +# ifdef QT_SHARED +# error "QT_SHARED and QT_BOOTSTRAPPED together don't make sense. Please fix the build" +# elif !defined(QT_STATIC) +# define QT_STATIC +# endif +#endif + +#if defined(QT_SHARED) || !defined(QT_STATIC) +# ifdef QT_STATIC +# error "Both QT_SHARED and QT_STATIC defined, please make up your mind" +# endif +# ifndef QT_SHARED +# define QT_SHARED +# endif +# if defined(QT_BUILD_CORE_LIB) +# define Q_CORE_EXPORT Q_DECL_EXPORT +# else +# define Q_CORE_EXPORT Q_DECL_IMPORT +# endif +#else +# define Q_CORE_EXPORT +#endif + +/* + Some classes do not permit copies to be made of an object. These + classes contains a private copy constructor and assignment + operator to disable copying (the compiler gives an error message). +*/ +#define Q_DISABLE_COPY(Class) \ + Class(const Class &) Q_DECL_EQ_DELETE;\ + Class &operator=(const Class &) Q_DECL_EQ_DELETE; + +/* + No, this is not an evil backdoor. QT_BUILD_INTERNAL just exports more symbols + for Qt's internal unit tests. If you want slower loading times and more + symbols that can vanish from version to version, feel free to define QT_BUILD_INTERNAL. +*/ +#if defined(QT_BUILD_INTERNAL) && defined(QT_BUILDING_QT) && defined(QT_SHARED) +# define Q_AUTOTEST_EXPORT Q_DECL_EXPORT +#elif defined(QT_BUILD_INTERNAL) && defined(QT_SHARED) +# define Q_AUTOTEST_EXPORT Q_DECL_IMPORT +#else +# define Q_AUTOTEST_EXPORT +#endif + +#define Q_INIT_RESOURCE(name) \ + do { extern int QT_MANGLE_NAMESPACE(qInitResources_ ## name) (); \ + QT_MANGLE_NAMESPACE(qInitResources_ ## name) (); } while (false) +#define Q_CLEANUP_RESOURCE(name) \ + do { extern int QT_MANGLE_NAMESPACE(qCleanupResources_ ## name) (); \ + QT_MANGLE_NAMESPACE(qCleanupResources_ ## name) (); } while (false) + +/* + * If we're compiling C++ code: + * - and this is a non-namespace build, declare qVersion as extern "C" + * - and this is a namespace build, declare it as a regular function + * (we're already inside QT_BEGIN_NAMESPACE / QT_END_NAMESPACE) + * If we're compiling C code, simply declare the function. If Qt was compiled + * in a namespace, qVersion isn't callable anyway. + */ +#if !defined(QT_NAMESPACE) && defined(__cplusplus) && !defined(Q_QDOC) +extern "C" +#endif +Q_CORE_EXPORT const char *qVersion(void) Q_DECL_NOTHROW; + +#if defined(__cplusplus) + +#ifndef Q_CONSTRUCTOR_FUNCTION +# define Q_CONSTRUCTOR_FUNCTION0(AFUNC) \ + namespace { \ + static const struct AFUNC ## _ctor_class_ { \ + inline AFUNC ## _ctor_class_() { AFUNC(); } \ + } AFUNC ## _ctor_instance_; \ + } + +# define Q_CONSTRUCTOR_FUNCTION(AFUNC) Q_CONSTRUCTOR_FUNCTION0(AFUNC) +#endif + +#ifndef Q_DESTRUCTOR_FUNCTION +# define Q_DESTRUCTOR_FUNCTION0(AFUNC) \ + namespace { \ + static const struct AFUNC ## _dtor_class_ { \ + inline AFUNC ## _dtor_class_() { } \ + inline ~ AFUNC ## _dtor_class_() { AFUNC(); } \ + } AFUNC ## _dtor_instance_; \ + } +# define Q_DESTRUCTOR_FUNCTION(AFUNC) Q_DESTRUCTOR_FUNCTION0(AFUNC) +#endif + +namespace QtPrivate { + template + struct AlignOfHelper + { + char c; + T type; + + AlignOfHelper(); + ~AlignOfHelper(); + }; + + template + struct AlignOf_Default + { + enum { Value = sizeof(AlignOfHelper) - sizeof(T) }; + }; + + template struct AlignOf : AlignOf_Default { }; + template struct AlignOf : AlignOf {}; + template struct AlignOf : AlignOf {}; + +#ifdef Q_COMPILER_RVALUE_REFS + template struct AlignOf : AlignOf {}; +#endif + +#if defined(Q_PROCESSOR_X86_32) && !defined(Q_OS_WIN) + template struct AlignOf_WorkaroundForI386Abi { enum { Value = sizeof(T) }; }; + + // x86 ABI weirdness + // Alignment of naked type is 8, but inside struct has alignment 4. + template <> struct AlignOf : AlignOf_WorkaroundForI386Abi {}; + template <> struct AlignOf : AlignOf_WorkaroundForI386Abi {}; + template <> struct AlignOf : AlignOf_WorkaroundForI386Abi {}; +#ifdef Q_CC_CLANG + // GCC and Clang seem to disagree wrt to alignment of arrays + template struct AlignOf : AlignOf_Default {}; + template struct AlignOf : AlignOf_Default {}; + template struct AlignOf : AlignOf_Default {}; +#endif +#endif +} // namespace QtPrivate + +#define QT_EMULATED_ALIGNOF(T) \ + (size_t(QT_PREPEND_NAMESPACE(QtPrivate)::AlignOf::Value)) + +#ifndef Q_ALIGNOF +#define Q_ALIGNOF(T) QT_EMULATED_ALIGNOF(T) +#endif + + +/* + quintptr and qptrdiff is guaranteed to be the same size as a pointer, i.e. + + sizeof(void *) == sizeof(quintptr) + && sizeof(void *) == sizeof(qptrdiff) +*/ +template struct QIntegerForSize; +template <> struct QIntegerForSize<1> { typedef quint8 Unsigned; typedef qint8 Signed; }; +template <> struct QIntegerForSize<2> { typedef quint16 Unsigned; typedef qint16 Signed; }; +template <> struct QIntegerForSize<4> { typedef quint32 Unsigned; typedef qint32 Signed; }; +template <> struct QIntegerForSize<8> { typedef quint64 Unsigned; typedef qint64 Signed; }; +#if defined(Q_CC_GNU) && defined(__SIZEOF_INT128__) +template <> struct QIntegerForSize<16> { __extension__ typedef unsigned __int128 Unsigned; __extension__ typedef __int128 Signed; }; +#endif +template struct QIntegerForSizeof: QIntegerForSize { }; +typedef QIntegerForSize::Signed qregisterint; +typedef QIntegerForSize::Unsigned qregisteruint; +typedef QIntegerForSizeof::Unsigned quintptr; +typedef QIntegerForSizeof::Signed qptrdiff; +typedef qptrdiff qintptr; + +/* moc compats (signals/slots) */ +#ifndef QT_MOC_COMPAT +# define QT_MOC_COMPAT +#else +# undef QT_MOC_COMPAT +# define QT_MOC_COMPAT +#endif + +#ifdef QT_ASCII_CAST_WARNINGS +# define QT_ASCII_CAST_WARN Q_DECL_DEPRECATED_X("Use fromUtf8, QStringLiteral, or QLatin1String") +#else +# define QT_ASCII_CAST_WARN +#endif + +#if defined(__i386__) || defined(_WIN32) +# if defined(Q_CC_GNU) +# define QT_FASTCALL __attribute__((regparm(3))) +# elif defined(Q_CC_MSVC) +# define QT_FASTCALL __fastcall +# else +# define QT_FASTCALL +# endif +#else +# define QT_FASTCALL +#endif + +// enable gcc warnings for printf-style functions +#if defined(Q_CC_GNU) && !defined(__INSURE__) +# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG) +# define Q_ATTRIBUTE_FORMAT_PRINTF(A, B) \ + __attribute__((format(gnu_printf, (A), (B)))) +# else +# define Q_ATTRIBUTE_FORMAT_PRINTF(A, B) \ + __attribute__((format(printf, (A), (B)))) +# endif +#else +# define Q_ATTRIBUTE_FORMAT_PRINTF(A, B) +#endif + +#ifdef Q_CC_MSVC +# define Q_NEVER_INLINE __declspec(noinline) +# define Q_ALWAYS_INLINE __forceinline +#elif defined(Q_CC_GNU) +# define Q_NEVER_INLINE __attribute__((noinline)) +# define Q_ALWAYS_INLINE inline __attribute__((always_inline)) +#else +# define Q_NEVER_INLINE +# define Q_ALWAYS_INLINE inline +#endif + +//defines the type for the WNDPROC on windows +//the alignment needs to be forced for sse2 to not crash with mingw +#if defined(Q_OS_WIN) +# if defined(Q_CC_MINGW) && !defined(Q_OS_WIN64) +# define QT_ENSURE_STACK_ALIGNED_FOR_SSE __attribute__ ((force_align_arg_pointer)) +# else +# define QT_ENSURE_STACK_ALIGNED_FOR_SSE +# endif +# define QT_WIN_CALLBACK CALLBACK QT_ENSURE_STACK_ALIGNED_FOR_SSE +#endif + +typedef int QNoImplicitBoolCast; + +/* + Utility macros and inline functions +*/ + +template +Q_DECL_CONSTEXPR inline T qAbs(const T &t) { return t >= 0 ? t : -t; } + +Q_DECL_CONSTEXPR inline int qRound(double d) +{ return d >= 0.0 ? int(d + 0.5) : int(d - double(int(d-1)) + 0.5) + int(d-1); } +Q_DECL_CONSTEXPR inline int qRound(float d) +{ return d >= 0.0f ? int(d + 0.5f) : int(d - float(int(d-1)) + 0.5f) + int(d-1); } + +Q_DECL_CONSTEXPR inline qint64 qRound64(double d) +{ return d >= 0.0 ? qint64(d + 0.5) : qint64(d - double(qint64(d-1)) + 0.5) + qint64(d-1); } +Q_DECL_CONSTEXPR inline qint64 qRound64(float d) +{ return d >= 0.0f ? qint64(d + 0.5f) : qint64(d - float(qint64(d-1)) + 0.5f) + qint64(d-1); } + +template +Q_DECL_CONSTEXPR inline const T &qMin(const T &a, const T &b) { return (a < b) ? a : b; } +template +Q_DECL_CONSTEXPR inline const T &qMax(const T &a, const T &b) { return (a < b) ? b : a; } +template +Q_DECL_CONSTEXPR inline const T &qBound(const T &min, const T &val, const T &max) +{ return qMax(min, qMin(max, val)); } + +#ifndef Q_FORWARD_DECLARE_OBJC_CLASS +# ifdef __OBJC__ +# define Q_FORWARD_DECLARE_OBJC_CLASS(classname) @class classname +# else +# define Q_FORWARD_DECLARE_OBJC_CLASS(classname) typedef struct objc_object classname +# endif +#endif +#ifndef Q_FORWARD_DECLARE_CF_TYPE +# define Q_FORWARD_DECLARE_CF_TYPE(type) typedef const struct __ ## type * type ## Ref +#endif +#ifndef Q_FORWARD_DECLARE_MUTABLE_CF_TYPE +# define Q_FORWARD_DECLARE_MUTABLE_CF_TYPE(type) typedef struct __ ## type * type ## Ref +#endif +#ifndef Q_FORWARD_DECLARE_CG_TYPE +#define Q_FORWARD_DECLARE_CG_TYPE(type) typedef const struct type *type ## Ref; +#endif +#ifndef Q_FORWARD_DECLARE_MUTABLE_CG_TYPE +#define Q_FORWARD_DECLARE_MUTABLE_CG_TYPE(type) typedef struct type *type ## Ref; +#endif + +#ifdef Q_OS_DARWIN +# define QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(macos, ios, tvos, watchos) \ + ((defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && macos != __MAC_NA && __MAC_OS_X_VERSION_MAX_ALLOWED >= macos) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && ios != __IPHONE_NA && __IPHONE_OS_VERSION_MAX_ALLOWED >= ios) || \ + (defined(__TV_OS_VERSION_MAX_ALLOWED) && tvos != __TVOS_NA && __TV_OS_VERSION_MAX_ALLOWED >= tvos) || \ + (defined(__WATCH_OS_VERSION_MAX_ALLOWED) && watchos != __WATCHOS_NA && __WATCH_OS_VERSION_MAX_ALLOWED >= watchos)) + +# define QT_DARWIN_DEPLOYMENT_TARGET_BELOW(macos, ios, tvos, watchos) \ + ((defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && macos != __MAC_NA && __MAC_OS_X_VERSION_MIN_REQUIRED < macos) || \ + (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && ios != __IPHONE_NA && __IPHONE_OS_VERSION_MIN_REQUIRED < ios) || \ + (defined(__TV_OS_VERSION_MIN_REQUIRED) && tvos != __TVOS_NA && __TV_OS_VERSION_MIN_REQUIRED < tvos) || \ + (defined(__WATCH_OS_VERSION_MIN_REQUIRED) && watchos != __WATCHOS_NA && __WATCH_OS_VERSION_MIN_REQUIRED < watchos)) + +# define QT_MACOS_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(macos, ios) \ + QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(macos, ios, __TVOS_NA, __WATCHOS_NA) +# define QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(macos) \ + QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(macos, __IPHONE_NA, __TVOS_NA, __WATCHOS_NA) +# define QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(ios) \ + QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, ios, __TVOS_NA, __WATCHOS_NA) +# define QT_TVOS_PLATFORM_SDK_EQUAL_OR_ABOVE(tvos) \ + QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, __IPHONE_NA, tvos, __WATCHOS_NA) +# define QT_WATCHOS_PLATFORM_SDK_EQUAL_OR_ABOVE(watchos) \ + QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, __IPHONE_NA, __TVOS_NA, watchos) + +# define QT_MACOS_IOS_DEPLOYMENT_TARGET_BELOW(macos, ios) \ + QT_DARWIN_DEPLOYMENT_TARGET_BELOW(macos, ios, __TVOS_NA, __WATCHOS_NA) +# define QT_MACOS_DEPLOYMENT_TARGET_BELOW(macos) \ + QT_DARWIN_DEPLOYMENT_TARGET_BELOW(macos, __IPHONE_NA, __TVOS_NA, __WATCHOS_NA) +# define QT_IOS_DEPLOYMENT_TARGET_BELOW(ios) \ + QT_DARWIN_DEPLOYMENT_TARGET_BELOW(__MAC_NA, ios, __TVOS_NA, __WATCHOS_NA) +# define QT_TVOS_DEPLOYMENT_TARGET_BELOW(tvos) \ + QT_DARWIN_DEPLOYMENT_TARGET_BELOW(__MAC_NA, __IPHONE_NA, tvos, __WATCHOS_NA) +# define QT_WATCHOS_DEPLOYMENT_TARGET_BELOW(watchos) \ + QT_DARWIN_DEPLOYMENT_TARGET_BELOW(__MAC_NA, __IPHONE_NA, __TVOS_NA, watchos) + +// Compatibility synonyms, do not use +# define QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(osx, ios) QT_MACOS_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(osx, ios) +# define QT_MAC_DEPLOYMENT_TARGET_BELOW(osx, ios) QT_MACOS_IOS_DEPLOYMENT_TARGET_BELOW(osx, ios) +# define QT_OSX_PLATFORM_SDK_EQUAL_OR_ABOVE(osx) QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(osx) +# define QT_OSX_DEPLOYMENT_TARGET_BELOW(osx) QT_MACOS_DEPLOYMENT_TARGET_BELOW(osx) + +// Implemented in qcore_mac_objc.mm +class Q_CORE_EXPORT QMacAutoReleasePool +{ +public: + QMacAutoReleasePool(); + ~QMacAutoReleasePool(); +private: + Q_DISABLE_COPY(QMacAutoReleasePool) + void *pool; +}; + +#endif // Q_OS_DARWIN + +/* + Data stream functions are provided by many classes (defined in qdatastream.h) +*/ + +class QDataStream; + +inline void qt_noop(void) {} + +/* These wrap try/catch so we can switch off exceptions later. + + Beware - do not use more than one QT_CATCH per QT_TRY, and do not use + the exception instance in the catch block. + If you can't live with those constraints, don't use these macros. + Use the QT_NO_EXCEPTIONS macro to protect your code instead. +*/ + +#if !defined(QT_NO_EXCEPTIONS) +# if !defined(Q_MOC_RUN) +# if (defined(Q_CC_CLANG) && !defined(Q_CC_INTEL) && !QT_HAS_FEATURE(cxx_exceptions)) || \ + (defined(Q_CC_GNU) && !defined(__EXCEPTIONS)) +# define QT_NO_EXCEPTIONS +# endif +# elif defined(QT_BOOTSTRAPPED) +# define QT_NO_EXCEPTIONS +# endif +#endif + +#ifdef QT_NO_EXCEPTIONS +# define QT_TRY if (true) +# define QT_CATCH(A) else +# define QT_THROW(A) qt_noop() +# define QT_RETHROW qt_noop() +# define QT_TERMINATE_ON_EXCEPTION(expr) do { expr; } while (false) +#else +# define QT_TRY try +# define QT_CATCH(A) catch (A) +# define QT_THROW(A) throw A +# define QT_RETHROW throw +Q_NORETURN Q_CORE_EXPORT void qTerminate() Q_DECL_NOTHROW; +# ifdef Q_COMPILER_NOEXCEPT +# define QT_TERMINATE_ON_EXCEPTION(expr) do { expr; } while (false) +# else +# define QT_TERMINATE_ON_EXCEPTION(expr) do { try { expr; } catch (...) { qTerminate(); } } while (false) +# endif +#endif + +Q_CORE_EXPORT bool qSharedBuild() Q_DECL_NOTHROW; + +#ifndef Q_OUTOFLINE_TEMPLATE +# define Q_OUTOFLINE_TEMPLATE +#endif +#ifndef Q_INLINE_TEMPLATE +# define Q_INLINE_TEMPLATE inline +#endif + +/* + Avoid "unused parameter" warnings +*/ +#define Q_UNUSED(x) (void)x; + +/* + Debugging and error handling +*/ + +#if !defined(QT_NO_DEBUG) && !defined(QT_DEBUG) +# define QT_DEBUG +#endif + +#ifndef qPrintable +# define qPrintable(string) QString(string).toLocal8Bit().constData() +#endif + +#ifndef qUtf8Printable +# define qUtf8Printable(string) QString(string).toUtf8().constData() +#endif + +/* + Wrap QString::utf16() with enough casts to allow passing it + to QString::asprintf("%ls") without warnings. +*/ +#ifndef qUtf16Printable +# define qUtf16Printable(string) \ + static_cast(static_cast(QString(string).utf16())) +#endif + +class QString; +Q_CORE_EXPORT QString qt_error_string(int errorCode = -1); + +#ifndef Q_CC_MSVC +Q_NORETURN +#endif +Q_CORE_EXPORT void qt_assert(const char *assertion, const char *file, int line) Q_DECL_NOTHROW; + +#if !defined(Q_ASSERT) +# if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) +# define Q_ASSERT(cond) do { } while ((false) && (cond)) +# else +# define Q_ASSERT(cond) ((!(cond)) ? qt_assert(#cond,__FILE__,__LINE__) : qt_noop()) +# endif +#endif + +#if defined(QT_NO_DEBUG) && !defined(QT_PAINT_DEBUG) +#define QT_NO_PAINT_DEBUG +#endif + +#ifndef Q_CC_MSVC +Q_NORETURN +#endif +Q_CORE_EXPORT void qt_assert_x(const char *where, const char *what, const char *file, int line) Q_DECL_NOTHROW; + +#if !defined(Q_ASSERT_X) +# if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) +# define Q_ASSERT_X(cond, where, what) do { } while ((false) && (cond)) +# else +# define Q_ASSERT_X(cond, where, what) ((!(cond)) ? qt_assert_x(where, what,__FILE__,__LINE__) : qt_noop()) +# endif +#endif + + +#ifdef Q_COMPILER_STATIC_ASSERT +#define Q_STATIC_ASSERT(Condition) static_assert(bool(Condition), #Condition) +#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message) +#else +// Intentionally undefined +template class QStaticAssertFailure; +template <> class QStaticAssertFailure {}; + +#define Q_STATIC_ASSERT_PRIVATE_JOIN(A, B) Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B) +#define Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B) A ## B +#ifdef __COUNTER__ +#define Q_STATIC_ASSERT(Condition) \ + enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __COUNTER__) = sizeof(QStaticAssertFailure)} +#else +#define Q_STATIC_ASSERT(Condition) \ + enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __LINE__) = sizeof(QStaticAssertFailure)} +#endif /* __COUNTER__ */ +#define Q_STATIC_ASSERT_X(Condition, Message) Q_STATIC_ASSERT(Condition) +#endif + +Q_NORETURN Q_CORE_EXPORT void qt_check_pointer(const char *, int) Q_DECL_NOTHROW; +Q_CORE_EXPORT void qBadAlloc(); + +#ifdef QT_NO_EXCEPTIONS +# if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) +# define Q_CHECK_PTR(p) qt_noop() +# else +# define Q_CHECK_PTR(p) do {if (!(p)) qt_check_pointer(__FILE__,__LINE__);} while (false) +# endif +#else +# define Q_CHECK_PTR(p) do { if (!(p)) qBadAlloc(); } while (false) +#endif + +template +inline T *q_check_ptr(T *p) { Q_CHECK_PTR(p); return p; } + +typedef void (*QFunctionPointer)(); + +#if !defined(Q_UNIMPLEMENTED) +# define Q_UNIMPLEMENTED() qWarning("Unimplemented code.") +#endif + +Q_REQUIRED_RESULT Q_DECL_CONSTEXPR static inline Q_DECL_UNUSED bool qFuzzyCompare(double p1, double p2) +{ + return (qAbs(p1 - p2) * 1000000000000. <= qMin(qAbs(p1), qAbs(p2))); +} + +Q_REQUIRED_RESULT Q_DECL_CONSTEXPR static inline Q_DECL_UNUSED bool qFuzzyCompare(float p1, float p2) +{ + return (qAbs(p1 - p2) * 100000.f <= qMin(qAbs(p1), qAbs(p2))); +} + +Q_REQUIRED_RESULT Q_DECL_CONSTEXPR static inline Q_DECL_UNUSED bool qFuzzyIsNull(double d) +{ + return qAbs(d) <= 0.000000000001; +} + +Q_REQUIRED_RESULT Q_DECL_CONSTEXPR static inline Q_DECL_UNUSED bool qFuzzyIsNull(float f) +{ + return qAbs(f) <= 0.00001f; +} + +/* + This function tests a double for a null value. It doesn't + check whether the actual value is 0 or close to 0, but whether + it is binary 0, disregarding sign. +*/ +Q_REQUIRED_RESULT static inline Q_DECL_UNUSED bool qIsNull(double d) +{ + union U { + double d; + quint64 u; + }; + U val; + val.d = d; + return (val.u & Q_UINT64_C(0x7fffffffffffffff)) == 0; +} + +/* + This function tests a float for a null value. It doesn't + check whether the actual value is 0 or close to 0, but whether + it is binary 0, disregarding sign. +*/ +Q_REQUIRED_RESULT static inline Q_DECL_UNUSED bool qIsNull(float f) +{ + union U { + float f; + quint32 u; + }; + U val; + val.f = f; + return (val.u & 0x7fffffff) == 0; +} + +/* + Compilers which follow outdated template instantiation rules + require a class to have a comparison operator to exist when + a QList of this type is instantiated. It's not actually + used in the list, though. Hence the dummy implementation. + Just in case other code relies on it we better trigger a warning + mandating a real implementation. +*/ + +#ifdef Q_FULL_TEMPLATE_INSTANTIATION +# define Q_DUMMY_COMPARISON_OPERATOR(C) \ + bool operator==(const C&) const { \ + qWarning(#C"::operator==(const "#C"&) was called"); \ + return false; \ + } +#else + +# define Q_DUMMY_COMPARISON_OPERATOR(C) +#endif + +namespace QtPrivate +{ +namespace SwapExceptionTester { // insulate users from the "using std::swap" below + using std::swap; // import std::swap + template + void checkSwap(T &t) + Q_DECL_NOEXCEPT_EXPR(noexcept(swap(t, t))); + // declared, but not implemented (only to be used in unevaluated contexts (noexcept operator)) +} +} // namespace QtPrivate + +template +inline void qSwap(T &value1, T &value2) + Q_DECL_NOEXCEPT_EXPR(noexcept(QtPrivate::SwapExceptionTester::checkSwap(value1))) +{ + using std::swap; + swap(value1, value2); +} + +#if QT_DEPRECATED_SINCE(5, 0) +Q_CORE_EXPORT QT_DEPRECATED void *qMalloc(size_t size) Q_ALLOC_SIZE(1); +Q_CORE_EXPORT QT_DEPRECATED void qFree(void *ptr); +Q_CORE_EXPORT QT_DEPRECATED void *qRealloc(void *ptr, size_t size) Q_ALLOC_SIZE(2); +Q_CORE_EXPORT QT_DEPRECATED void *qMemCopy(void *dest, const void *src, size_t n); +Q_CORE_EXPORT QT_DEPRECATED void *qMemSet(void *dest, int c, size_t n); +#endif +Q_CORE_EXPORT void *qMallocAligned(size_t size, size_t alignment) Q_ALLOC_SIZE(1); +Q_CORE_EXPORT void *qReallocAligned(void *ptr, size_t size, size_t oldsize, size_t alignment) Q_ALLOC_SIZE(2); +Q_CORE_EXPORT void qFreeAligned(void *ptr); + + +/* + Avoid some particularly useless warnings from some stupid compilers. + To get ALL C++ compiler warnings, define QT_CC_WARNINGS or comment out + the line "#define QT_NO_WARNINGS". +*/ +#if !defined(QT_CC_WARNINGS) +# define QT_NO_WARNINGS +#endif +#if defined(QT_NO_WARNINGS) +# if defined(Q_CC_MSVC) +QT_WARNING_DISABLE_MSVC(4251) /* class 'type' needs to have dll-interface to be used by clients of class 'type2' */ +QT_WARNING_DISABLE_MSVC(4244) /* conversion from 'type1' to 'type2', possible loss of data */ +QT_WARNING_DISABLE_MSVC(4275) /* non - DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier' */ +QT_WARNING_DISABLE_MSVC(4514) /* unreferenced inline function has been removed */ +QT_WARNING_DISABLE_MSVC(4800) /* 'type' : forcing value to bool 'true' or 'false' (performance warning) */ +QT_WARNING_DISABLE_MSVC(4097) /* typedef-name 'identifier1' used as synonym for class-name 'identifier2' */ +QT_WARNING_DISABLE_MSVC(4706) /* assignment within conditional expression */ +# if _MSC_VER <= 1310 // MSVC 2003 +QT_WARNING_DISABLE_MSVC(4786) /* 'identifier' : identifier was truncated to 'number' characters in the debug information */ +# endif +QT_WARNING_DISABLE_MSVC(4355) /* 'this' : used in base member initializer list */ +# if _MSC_VER < 1800 // MSVC 2013 +QT_WARNING_DISABLE_MSVC(4231) /* nonstandard extension used : 'identifier' before template explicit instantiation */ +# endif +QT_WARNING_DISABLE_MSVC(4710) /* function not inlined */ +QT_WARNING_DISABLE_MSVC(4530) /* C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc */ +# elif defined(Q_CC_BOR) +# pragma option -w-inl +# pragma option -w-aus +# pragma warn -inl +# pragma warn -pia +# pragma warn -ccc +# pragma warn -rch +# pragma warn -sig +# endif +#endif + +namespace QtPrivate { +template struct QAddConst { typedef const T Type; }; +} + +// this adds const to non-const objects (like std::as_const) +template +Q_DECL_CONSTEXPR typename QtPrivate::QAddConst::Type &qAsConst(T &t) Q_DECL_NOTHROW { return t; } +// prevent rvalue arguments: +template +void qAsConst(const T &&) Q_DECL_EQ_DELETE; + +#ifndef QT_NO_FOREACH + +namespace QtPrivate { + +template +class QForeachContainer { + Q_DISABLE_COPY(QForeachContainer) +public: + QForeachContainer(const T &t) : c(t), i(qAsConst(c).begin()), e(qAsConst(c).end()) {} + QForeachContainer(T &&t) : c(std::move(t)), i(qAsConst(c).begin()), e(qAsConst(c).end()) {} + + QForeachContainer(QForeachContainer &&other) + : c(std::move(other.c)), + i(qAsConst(c).begin()), + e(qAsConst(c).end()), + control(std::move(other.control)) + { + } + + QForeachContainer &operator=(QForeachContainer &&other) + { + c = std::move(other.c); + i = qAsConst(c).begin(); + e = qAsConst(c).end(); + control = std::move(other.control); + return *this; + } + + T c; + typename T::const_iterator i, e; + int control = 1; +}; + +template +QForeachContainer::type> qMakeForeachContainer(T &&t) +{ + return QForeachContainer::type>(std::forward(t)); +} + +} +// Explanation of the control word: +// - it's initialized to 1 +// - that means both the inner and outer loops start +// - if there were no breaks, at the end of the inner loop, it's set to 0, which +// causes it to exit (the inner loop is run exactly once) +// - at the end of the outer loop, it's inverted, so it becomes 1 again, allowing +// the outer loop to continue executing +// - if there was a break inside the inner loop, it will exit with control still +// set to 1; in that case, the outer loop will invert it to 0 and will exit too +#define Q_FOREACH(variable, container) \ +for (auto _container_ = QtPrivate::qMakeForeachContainer(container); \ + _container_.control && _container_.i != _container_.e; \ + ++_container_.i, _container_.control ^= 1) \ + for (variable = *_container_.i; _container_.control; _container_.control = 0) + +#endif // QT_NO_FOREACH + +#define Q_FOREVER for(;;) +#ifndef QT_NO_KEYWORDS +# ifndef QT_NO_FOREACH +# ifndef foreach +# define foreach Q_FOREACH +# endif +# endif // QT_NO_FOREACH +# ifndef forever +# define forever Q_FOREVER +# endif +#endif + +template static inline T *qGetPtrHelper(T *ptr) { return ptr; } +template static inline typename Wrapper::pointer qGetPtrHelper(const Wrapper &p) { return p.data(); } + +#define Q_DECLARE_PRIVATE(Class) \ + inline Class##Private* d_func() { return reinterpret_cast(qGetPtrHelper(d_ptr)); } \ + inline const Class##Private* d_func() const { return reinterpret_cast(qGetPtrHelper(d_ptr)); } \ + friend class Class##Private; + +#define Q_DECLARE_PRIVATE_D(Dptr, Class) \ + inline Class##Private* d_func() { return reinterpret_cast(qGetPtrHelper(Dptr)); } \ + inline const Class##Private* d_func() const { return reinterpret_cast(qGetPtrHelper(Dptr)); } \ + friend class Class##Private; + +#define Q_DECLARE_PUBLIC(Class) \ + inline Class* q_func() { return static_cast(q_ptr); } \ + inline const Class* q_func() const { return static_cast(q_ptr); } \ + friend class Class; + +#define Q_D(Class) Class##Private * const d = d_func() +#define Q_Q(Class) Class * const q = q_func() + +#define QT_TR_NOOP(x) x +#define QT_TR_NOOP_UTF8(x) x +#define QT_TRANSLATE_NOOP(scope, x) x +#define QT_TRANSLATE_NOOP_UTF8(scope, x) x +#define QT_TRANSLATE_NOOP3(scope, x, comment) {x, comment} +#define QT_TRANSLATE_NOOP3_UTF8(scope, x, comment) {x, comment} + +#ifndef QT_NO_TRANSLATION // ### This should enclose the NOOPs above + +// Defined in qcoreapplication.cpp +// The better name qTrId() is reserved for an upcoming function which would +// return a much more powerful QStringFormatter instead of a QString. +Q_CORE_EXPORT QString qtTrId(const char *id, int n = -1); + +#define QT_TRID_NOOP(id) id + +#endif // QT_NO_TRANSLATION + +/* + When RTTI is not available, define this macro to force any uses of + dynamic_cast to cause a compile failure. +*/ + +#if defined(QT_NO_DYNAMIC_CAST) && !defined(dynamic_cast) +# define dynamic_cast QT_PREPEND_NAMESPACE(qt_dynamic_cast_check) + + template + T qt_dynamic_cast_check(X, T* = 0) + { return T::dynamic_cast_will_always_fail_because_rtti_is_disabled; } +#endif + + +#ifdef Q_QDOC + +// Just for documentation generation +template +auto qOverload(T functionPointer); +template +auto qConstOverload(T memberFunctionPointer); +template +auto qNonConstOverload(T memberFunctionPointer); + +#elif defined(Q_COMPILER_VARIADIC_TEMPLATES) + +template +struct QNonConstOverload +{ + template + Q_DECL_CONSTEXPR auto operator()(R (T::*ptr)(Args...)) const Q_DECL_NOTHROW -> decltype(ptr) + { return ptr; } + + template + static Q_DECL_CONSTEXPR auto of(R (T::*ptr)(Args...)) Q_DECL_NOTHROW -> decltype(ptr) + { return ptr; } +}; + +template +struct QConstOverload +{ + template + Q_DECL_CONSTEXPR auto operator()(R (T::*ptr)(Args...) const) const Q_DECL_NOTHROW -> decltype(ptr) + { return ptr; } + + template + static Q_DECL_CONSTEXPR auto of(R (T::*ptr)(Args...) const) Q_DECL_NOTHROW -> decltype(ptr) + { return ptr; } +}; + +template +struct QOverload : QConstOverload, QNonConstOverload +{ + using QConstOverload::of; + using QConstOverload::operator(); + using QNonConstOverload::of; + using QNonConstOverload::operator(); + + template + Q_DECL_CONSTEXPR auto operator()(R (*ptr)(Args...)) const Q_DECL_NOTHROW -> decltype(ptr) + { return ptr; } + + template + static Q_DECL_CONSTEXPR auto of(R (*ptr)(Args...)) Q_DECL_NOTHROW -> decltype(ptr) + { return ptr; } +}; + +#if defined(__cpp_variable_templates) && __cpp_variable_templates >= 201304 // C++14 +template Q_CONSTEXPR Q_DECL_UNUSED QOverload qOverload = {}; +template Q_CONSTEXPR Q_DECL_UNUSED QConstOverload qConstOverload = {}; +template Q_CONSTEXPR Q_DECL_UNUSED QNonConstOverload qNonConstOverload = {}; +#endif + +#endif + + +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; +Q_CORE_EXPORT int qEnvironmentVariableIntValue(const char *varName, bool *ok=Q_NULLPTR) Q_DECL_NOEXCEPT; + +inline int qIntCast(double f) { return int(f); } +inline int qIntCast(float f) { return int(f); } + +/* + Reentrant versions of basic rand() functions for random number generation +*/ +Q_CORE_EXPORT void qsrand(uint seed); +Q_CORE_EXPORT int qrand(); + +#define QT_MODULE(x) + +#if !defined(QT_BOOTSTRAPPED) && defined(QT_REDUCE_RELOCATIONS) && defined(__ELF__) && \ + (!defined(__PIC__) || (defined(__PIE__) && defined(Q_CC_GNU) && Q_CC_GNU >= 500)) +# error "You must build your code with position independent code if Qt was built with -reduce-relocations. "\ + "Compile your code with -fPIC (-fPIE is not enough)." +#endif + +namespace QtPrivate { +//like std::enable_if +template struct QEnableIf; +template struct QEnableIf { typedef T Type; }; + +template struct QConditional { typedef T Type; }; +template struct QConditional { typedef F Type; }; +} + +QT_END_NAMESPACE + +// We need to keep QTypeInfo, QSysInfo, QFlags, qDebug & family in qglobal.h for compatibility with Qt 4. +// Be careful when changing the order of these files. +#include +#include +#include + +#include + +#include +#include +#include +#include + +#endif /* __cplusplus */ + +#endif /* QGLOBAL_H */ diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qglobalstatic.h b/qrenderdoc/3rdparty/qt/include/QtCore/qglobalstatic.h new file mode 100644 index 000000000..7a6dea9b9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qglobalstatic.h @@ -0,0 +1,162 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QGLOBALSTATIC_H +#define QGLOBALSTATIC_H + +#include + +QT_BEGIN_NAMESPACE + +namespace QtGlobalStatic { +enum GuardValues { + Destroyed = -2, + Initialized = -1, + Uninitialized = 0, + Initializing = 1 +}; +} + +#if defined(QT_NO_THREAD) || defined(Q_COMPILER_THREADSAFE_STATICS) +// 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. +// +// Apple's libc++abi however uses a global lock for initializing local statics, +// which will block other threads also trying to initialize a local static +// until the constructor returns ... +// We better avoid these kind of problems by using our own locked implementation. + +#if defined(Q_OS_UNIX) && defined(Q_CC_INTEL) +// Work around Intel issue ID 6000058488: +// local statics inside an inline function inside an anonymous namespace are global +// symbols (this affects the IA-64 C++ ABI, so OS X and Linux only) +# define Q_GLOBAL_STATIC_INTERNAL_DECORATION Q_DECL_HIDDEN +#else +# define Q_GLOBAL_STATIC_INTERNAL_DECORATION Q_DECL_HIDDEN inline +#endif + +#define Q_GLOBAL_STATIC_INTERNAL(ARGS) \ + Q_GLOBAL_STATIC_INTERNAL_DECORATION 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 +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.storeRelease(QtGlobalStatic::Initialized); \ + } \ + } \ + return d; \ + } +#endif + +// this class must be POD, unless the compiler supports thread-safe statics +template +struct QGlobalStatic +{ + typedef T Type; + + bool isDestroyed() const { return guard.load() <= QtGlobalStatic::Destroyed; } + bool exists() const { return guard.load() == QtGlobalStatic::Initialized; } + operator Type *() { if (isDestroyed()) return 0; return innerFunction(); } + Type *operator()() { if (isDestroyed()) return 0; return innerFunction(); } + Type *operator->() + { + Q_ASSERT_X(!isDestroyed(), "Q_GLOBAL_STATIC", "The global static was used after being destroyed"); + return innerFunction(); + } + Type &operator*() + { + Q_ASSERT_X(!isDestroyed(), "Q_GLOBAL_STATIC", "The global static was used after being destroyed"); + return *innerFunction(); + } +}; + +#define Q_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ARGS) \ + namespace { namespace Q_QGS_ ## NAME { \ + typedef TYPE Type; \ + QBasicAtomicInt guard = Q_BASIC_ATOMIC_INITIALIZER(QtGlobalStatic::Uninitialized); \ + Q_GLOBAL_STATIC_INTERNAL(ARGS) \ + } } \ + static QGlobalStatic NAME; + +#define Q_GLOBAL_STATIC(TYPE, NAME) \ + Q_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ()) + +QT_END_NAMESPACE +#endif // QGLOBALSTATIC_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qhash.h b/qrenderdoc/3rdparty/qt/include/QtCore/qhash.h new file mode 100644 index 000000000..703066857 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qhash.h @@ -0,0 +1,1147 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHASH_H +#define QHASH_H + +#include +#include +#include +#include +#include + +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + +#include + +#if defined(Q_CC_MSVC) +#pragma warning( push ) +#pragma warning( disable : 4311 ) // disable pointer truncation warning +#pragma warning( disable : 4127 ) // conditional expression is constant +#endif + +QT_BEGIN_NAMESPACE + +struct Q_CORE_EXPORT QHashData +{ + struct Node { + Node *next; + uint h; + }; + + Node *fakeNext; + Node **buckets; + QtPrivate::RefCount ref; + int size; + int nodeSize; + short userNumBits; + short numBits; + int numBuckets; + uint seed; + uint sharable : 1; + uint strictAlignment : 1; + uint reserved : 30; + + void *allocateNode(int nodeAlign); + void freeNode(void *node); + QHashData *detach_helper(void (*node_duplicate)(Node *, void *), void (*node_delete)(Node *), + int nodeSize, int nodeAlign); + bool willGrow(); + void hasShrunk(); + void rehash(int hint); + void free_helper(void (*node_delete)(Node *)); + Node *firstNode(); +#ifdef QT_QHASH_DEBUG + void dump(); + void checkSanity(); +#endif + static Node *nextNode(Node *node); + static Node *previousNode(Node *node); + + static const QHashData shared_null; +}; + +inline bool QHashData::willGrow() +{ + if (size >= numBuckets) { + rehash(numBits + 1); + return true; + } else { + return false; + } +} + +inline void QHashData::hasShrunk() +{ + if (size <= (numBuckets >> 3) && numBits > userNumBits) { + QT_TRY { + rehash(qMax(int(numBits) - 2, int(userNumBits))); + } QT_CATCH(const std::bad_alloc &) { + // ignore bad allocs - shrinking shouldn't throw. rehash is exception safe. + } + } +} + +inline QHashData::Node *QHashData::firstNode() +{ + Node *e = reinterpret_cast(this); + Node **bucket = buckets; + int n = numBuckets; + while (n--) { + if (*bucket != e) + return *bucket; + ++bucket; + } + return e; +} + +struct QHashDummyValue +{ +}; + +inline bool operator==(const QHashDummyValue & /* v1 */, const QHashDummyValue & /* v2 */) +{ + return true; +} + +Q_DECLARE_TYPEINFO(QHashDummyValue, Q_MOVABLE_TYPE | Q_DUMMY_TYPE); + +template +struct QHashNode +{ + QHashNode *next; + const uint h; + const Key key; + T value; + + inline QHashNode(const Key &key0, const T &value0, uint hash, QHashNode *n) + : next(n), h(hash), key(key0), value(value0) {} + inline bool same_key(uint h0, const Key &key0) const { return h0 == h && key0 == key; } + +private: + Q_DISABLE_COPY(QHashNode) +}; + +// Specialize for QHashDummyValue in order to save some memory +template +struct QHashNode +{ + union { + QHashNode *next; + QHashDummyValue value; + }; + const uint h; + const Key key; + + inline QHashNode(const Key &key0, const QHashDummyValue &, uint hash, QHashNode *n) + : next(n), h(hash), key(key0) {} + inline bool same_key(uint h0, const Key &key0) const { return h0 == h && key0 == key; } + +private: + Q_DISABLE_COPY(QHashNode) +}; + + +#if 0 +// ### +// The introduction of the QHash random seed breaks this optimization, as it +// relies on qHash(int i) = i. If the hash value is salted, then the hash +// table becomes corrupted. +// +// A bit more research about whether it makes sense or not to salt integer +// keys (and in general keys whose hash value is easy to invert) +// is needed, or about how keep this optimization and the seed (f.i. by +// specializing QHash for integer values, and re-apply the seed during lookup). +// +// Be aware that such changes can easily be binary incompatible, and therefore +// cannot be made during the Qt 5 lifetime. +#define Q_HASH_DECLARE_INT_NODES(key_type) \ + template \ + struct QHashDummyNode { \ + QHashDummyNode *next; \ + union { uint h; key_type key; }; \ +\ + inline QHashDummyNode(key_type /* key0 */) {} \ + }; \ +\ + template \ + struct QHashNode { \ + QHashNode *next; \ + union { uint h; key_type key; }; \ + T value; \ +\ + inline QHashNode(key_type /* key0 */) {} \ + inline QHashNode(key_type /* key0 */, const T &value0) : value(value0) {} \ + inline bool same_key(uint h0, key_type) const { return h0 == h; } \ + } + +#if defined(Q_BYTE_ORDER) && Q_BYTE_ORDER == Q_LITTLE_ENDIAN +Q_HASH_DECLARE_INT_NODES(short); +Q_HASH_DECLARE_INT_NODES(ushort); +#endif +Q_HASH_DECLARE_INT_NODES(int); +Q_HASH_DECLARE_INT_NODES(uint); +#undef Q_HASH_DECLARE_INT_NODES +#endif // #if 0 + +template +class QHash +{ + typedef QHashNode Node; + + union { + QHashData *d; + QHashNode *e; + }; + + static inline Node *concrete(QHashData::Node *node) { + return reinterpret_cast(node); + } + + static inline int alignOfNode() { return qMax(sizeof(void*), Q_ALIGNOF(Node)); } + +public: + inline QHash() Q_DECL_NOTHROW : d(const_cast(&QHashData::shared_null)) { } +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QHash(std::initializer_list > list) + : d(const_cast(&QHashData::shared_null)) + { + reserve(int(list.size())); + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif + QHash(const QHash &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); } + ~QHash() { if (!d->ref.deref()) freeData(d); } + + QHash &operator=(const QHash &other); +#ifdef Q_COMPILER_RVALUE_REFS + QHash(QHash &&other) Q_DECL_NOTHROW : d(other.d) { other.d = const_cast(&QHashData::shared_null); } + QHash &operator=(QHash &&other) Q_DECL_NOTHROW + { QHash moved(std::move(other)); swap(moved); return *this; } +#endif + void swap(QHash &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool operator==(const QHash &other) const; + bool operator!=(const QHash &other) const { return !(*this == other); } + + inline int size() const { return d->size; } + + inline bool isEmpty() const { return d->size == 0; } + + inline int capacity() const { return d->numBuckets; } + void reserve(int size); + inline void squeeze() { reserve(1); } + + inline void detach() { if (d->ref.isShared()) detach_helper(); } + inline bool isDetached() const { return !d->ref.isShared(); } +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + inline void setSharable(bool sharable) { if (!sharable) detach(); if (d != &QHashData::shared_null) d->sharable = sharable; } +#endif + bool isSharedWith(const QHash &other) const { return d == other.d; } + + void clear(); + + int remove(const Key &key); + T take(const Key &key); + + bool contains(const Key &key) const; + const Key key(const T &value) const; + const Key key(const T &value, const Key &defaultKey) const; + const T value(const Key &key) const; + const T value(const Key &key, const T &defaultValue) const; + T &operator[](const Key &key); + const T operator[](const Key &key) const; + + QList uniqueKeys() const; + QList keys() const; + QList keys(const T &value) const; + QList values() const; + QList values(const Key &key) const; + int count(const Key &key) const; + + class const_iterator; + + class iterator + { + friend class const_iterator; + friend class QHash; + friend class QSet; + QHashData::Node *i; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef T *pointer; + typedef T &reference; + + inline iterator() : i(Q_NULLPTR) { } + explicit inline iterator(void *node) : i(reinterpret_cast(node)) { } + + inline const Key &key() const { return concrete(i)->key; } + inline T &value() const { return concrete(i)->value; } + inline T &operator*() const { return concrete(i)->value; } + inline T *operator->() const { return &concrete(i)->value; } + inline bool operator==(const iterator &o) const { return i == o.i; } + inline bool operator!=(const iterator &o) const { return i != o.i; } + + inline iterator &operator++() { + i = QHashData::nextNode(i); + return *this; + } + inline iterator operator++(int) { + iterator r = *this; + i = QHashData::nextNode(i); + return r; + } + inline iterator &operator--() { + i = QHashData::previousNode(i); + return *this; + } + inline iterator operator--(int) { + iterator r = *this; + i = QHashData::previousNode(i); + return r; + } + inline iterator operator+(int j) const + { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } + inline iterator operator-(int j) const { return operator+(-j); } + inline iterator &operator+=(int j) { return *this = *this + j; } + inline iterator &operator-=(int j) { return *this = *this - j; } + +#ifndef QT_STRICT_ITERATORS + public: + inline bool operator==(const const_iterator &o) const + { return i == o.i; } + inline bool operator!=(const const_iterator &o) const + { return i != o.i; } +#endif + }; + friend class iterator; + + class const_iterator + { + friend class iterator; + friend class QHash; + friend class QSet; + QHashData::Node *i; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + Q_DECL_CONSTEXPR inline const_iterator() : i(Q_NULLPTR) { } + explicit inline const_iterator(void *node) + : i(reinterpret_cast(node)) { } +#ifdef QT_STRICT_ITERATORS + explicit inline const_iterator(const iterator &o) +#else + inline const_iterator(const iterator &o) +#endif + { i = o.i; } + + inline const Key &key() const { return concrete(i)->key; } + inline const T &value() const { return concrete(i)->value; } + inline const T &operator*() const { return concrete(i)->value; } + inline const T *operator->() const { return &concrete(i)->value; } + Q_DECL_CONSTEXPR inline bool operator==(const const_iterator &o) const { return i == o.i; } + Q_DECL_CONSTEXPR inline bool operator!=(const const_iterator &o) const { return i != o.i; } + + inline const_iterator &operator++() { + i = QHashData::nextNode(i); + return *this; + } + inline const_iterator operator++(int) { + const_iterator r = *this; + i = QHashData::nextNode(i); + return r; + } + inline const_iterator &operator--() { + i = QHashData::previousNode(i); + return *this; + } + inline const_iterator operator--(int) { + const_iterator r = *this; + i = QHashData::previousNode(i); + return r; + } + inline const_iterator operator+(int j) const + { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } + inline const_iterator operator-(int j) const { return operator+(-j); } + inline const_iterator &operator+=(int j) { return *this = *this + j; } + inline const_iterator &operator-=(int j) { return *this = *this - j; } + + // ### Qt 5: not sure this is necessary anymore +#ifdef QT_STRICT_ITERATORS + private: + inline bool operator==(const iterator &o) const { return operator==(const_iterator(o)); } + inline bool operator!=(const iterator &o) const { return operator!=(const_iterator(o)); } +#endif + }; + friend class const_iterator; + + class key_iterator + { + const_iterator i; + + public: + typedef typename const_iterator::iterator_category iterator_category; + typedef typename const_iterator::difference_type difference_type; + typedef Key value_type; + typedef const Key *pointer; + typedef const Key &reference; + + key_iterator() = default; + explicit key_iterator(const_iterator o) : i(o) { } + + const Key &operator*() const { return i.key(); } + const Key *operator->() const { return &i.key(); } + bool operator==(key_iterator o) const { return i == o.i; } + bool operator!=(key_iterator o) const { return i != o.i; } + + inline key_iterator &operator++() { ++i; return *this; } + inline key_iterator operator++(int) { return key_iterator(i++);} + inline key_iterator &operator--() { --i; return *this; } + inline key_iterator operator--(int) { return key_iterator(i--); } + const_iterator base() const { return i; } + }; + + // STL style + inline iterator begin() { detach(); return iterator(d->firstNode()); } + inline const_iterator begin() const { return const_iterator(d->firstNode()); } + inline const_iterator cbegin() const { return const_iterator(d->firstNode()); } + inline const_iterator constBegin() const { return const_iterator(d->firstNode()); } + inline iterator end() { detach(); return iterator(e); } + inline const_iterator end() const { return const_iterator(e); } + inline const_iterator cend() const { return const_iterator(e); } + inline const_iterator constEnd() const { return const_iterator(e); } + inline key_iterator keyBegin() const { return key_iterator(begin()); } + inline key_iterator keyEnd() const { return key_iterator(end()); } + + QPair equal_range(const Key &key); + QPair equal_range(const Key &key) const Q_DECL_NOTHROW; + iterator erase(iterator it) { return erase(const_iterator(it.i)); } + iterator erase(const_iterator it); + + // more Qt + typedef iterator Iterator; + typedef const_iterator ConstIterator; + inline int count() const { return d->size; } + iterator find(const Key &key); + const_iterator find(const Key &key) const; + const_iterator constFind(const Key &key) const; + iterator insert(const Key &key, const T &value); + iterator insertMulti(const Key &key, const T &value); + QHash &unite(const QHash &other); + + // STL compatibility + typedef T mapped_type; + typedef Key key_type; + typedef qptrdiff difference_type; + typedef int size_type; + + inline bool empty() const { return isEmpty(); } + +#ifdef QT_QHASH_DEBUG + inline void dump() const { d->dump(); } + inline void checkSanity() const { d->checkSanity(); } +#endif + +private: + void detach_helper(); + void freeData(QHashData *d); + Node **findNode(const Key &key, uint *hp = Q_NULLPTR) const; + Node **findNode(const Key &key, uint h) const; + Node *createNode(uint h, const Key &key, const T &value, Node **nextNode); + void deleteNode(Node *node); + static void deleteNode2(QHashData::Node *node); + + static void duplicateNode(QHashData::Node *originalNode, void *newNode); + + bool isValidIterator(const iterator &it) const Q_DECL_NOTHROW + { return isValidNode(it.i); } + bool isValidIterator(const const_iterator &it) const Q_DECL_NOTHROW + { return isValidNode(it.i); } + bool isValidNode(QHashData::Node *node) const Q_DECL_NOTHROW + { +#if defined(QT_DEBUG) && !defined(Q_HASH_NO_ITERATOR_DEBUG) + while (node->next) + node = node->next; + return (static_cast(node) == d); +#else + Q_UNUSED(node); + return true; +#endif + } + friend class QSet; +}; + + +template +Q_INLINE_TEMPLATE void QHash::deleteNode(Node *node) +{ + deleteNode2(reinterpret_cast(node)); + d->freeNode(node); +} + +template +Q_INLINE_TEMPLATE void QHash::deleteNode2(QHashData::Node *node) +{ +#ifdef Q_CC_BOR + concrete(node)->~QHashNode(); +#else + concrete(node)->~Node(); +#endif +} + +template +Q_INLINE_TEMPLATE void QHash::duplicateNode(QHashData::Node *node, void *newNode) +{ + Node *concreteNode = concrete(node); + new (newNode) Node(concreteNode->key, concreteNode->value, concreteNode->h, Q_NULLPTR); +} + +template +Q_INLINE_TEMPLATE typename QHash::Node * +QHash::createNode(uint ah, const Key &akey, const T &avalue, Node **anextNode) +{ + Node *node = new (d->allocateNode(alignOfNode())) Node(akey, avalue, ah, *anextNode); + *anextNode = node; + ++d->size; + return node; +} + +template +Q_INLINE_TEMPLATE QHash &QHash::unite(const QHash &other) +{ + if (d == &QHashData::shared_null) { + *this = other; + } else { + QHash copy(other); + const_iterator it = copy.constEnd(); + while (it != copy.constBegin()) { + --it; + insertMulti(it.key(), it.value()); + } + } + return *this; +} + +template +Q_OUTOFLINE_TEMPLATE void QHash::freeData(QHashData *x) +{ + x->free_helper(deleteNode2); +} + +template +Q_INLINE_TEMPLATE void QHash::clear() +{ + *this = QHash(); +} + +template +Q_OUTOFLINE_TEMPLATE void QHash::detach_helper() +{ + QHashData *x = d->detach_helper(duplicateNode, deleteNode2, sizeof(Node), alignOfNode()); + if (!d->ref.deref()) + freeData(d); + d = x; +} + +template +Q_INLINE_TEMPLATE QHash &QHash::operator=(const QHash &other) +{ + if (d != other.d) { + QHashData *o = other.d; + o->ref.ref(); + if (!d->ref.deref()) + freeData(d); + d = o; + if (!d->sharable) + detach_helper(); + } + return *this; +} + +template +Q_INLINE_TEMPLATE const T QHash::value(const Key &akey) const +{ + Node *node; + if (d->size == 0 || (node = *findNode(akey)) == e) { + return T(); + } else { + return node->value; + } +} + +template +Q_INLINE_TEMPLATE const T QHash::value(const Key &akey, const T &adefaultValue) const +{ + Node *node; + if (d->size == 0 || (node = *findNode(akey)) == e) { + return adefaultValue; + } else { + return node->value; + } +} + +template +Q_OUTOFLINE_TEMPLATE QList QHash::uniqueKeys() const +{ + QList res; + res.reserve(size()); // May be too much, but assume short lifetime + const_iterator i = begin(); + if (i != end()) { + for (;;) { + const Key &aKey = i.key(); + res.append(aKey); + do { + if (++i == end()) + goto break_out_of_outer_loop; + } while (aKey == i.key()); + } + } +break_out_of_outer_loop: + return res; +} + +template +Q_OUTOFLINE_TEMPLATE QList QHash::keys() const +{ + QList res; + res.reserve(size()); + const_iterator i = begin(); + while (i != end()) { + res.append(i.key()); + ++i; + } + return res; +} + +template +Q_OUTOFLINE_TEMPLATE QList QHash::keys(const T &avalue) const +{ + QList res; + const_iterator i = begin(); + while (i != end()) { + if (i.value() == avalue) + res.append(i.key()); + ++i; + } + return res; +} + +template +Q_OUTOFLINE_TEMPLATE const Key QHash::key(const T &avalue) const +{ + return key(avalue, Key()); +} + +template +Q_OUTOFLINE_TEMPLATE const Key QHash::key(const T &avalue, const Key &defaultValue) const +{ + const_iterator i = begin(); + while (i != end()) { + if (i.value() == avalue) + return i.key(); + ++i; + } + + return defaultValue; +} + +template +Q_OUTOFLINE_TEMPLATE QList QHash::values() const +{ + QList res; + res.reserve(size()); + const_iterator i = begin(); + while (i != end()) { + res.append(i.value()); + ++i; + } + return res; +} + +template +Q_OUTOFLINE_TEMPLATE QList QHash::values(const Key &akey) const +{ + QList res; + Node *node = *findNode(akey); + if (node != e) { + do { + res.append(node->value); + } while ((node = node->next) != e && node->key == akey); + } + return res; +} + +template +Q_OUTOFLINE_TEMPLATE int QHash::count(const Key &akey) const +{ + int cnt = 0; + Node *node = *findNode(akey); + if (node != e) { + do { + ++cnt; + } while ((node = node->next) != e && node->key == akey); + } + return cnt; +} + +template +Q_INLINE_TEMPLATE const T QHash::operator[](const Key &akey) const +{ + return value(akey); +} + +template +Q_INLINE_TEMPLATE T &QHash::operator[](const Key &akey) +{ + detach(); + + uint h; + Node **node = findNode(akey, &h); + if (*node == e) { + if (d->willGrow()) + node = findNode(akey, h); + return createNode(h, akey, T(), node)->value; + } + return (*node)->value; +} + +template +Q_INLINE_TEMPLATE typename QHash::iterator QHash::insert(const Key &akey, + const T &avalue) +{ + detach(); + + uint h; + Node **node = findNode(akey, &h); + if (*node == e) { + if (d->willGrow()) + node = findNode(akey, h); + return iterator(createNode(h, akey, avalue, node)); + } + + if (!std::is_same::value) + (*node)->value = avalue; + return iterator(*node); +} + +template +Q_INLINE_TEMPLATE typename QHash::iterator QHash::insertMulti(const Key &akey, + const T &avalue) +{ + detach(); + d->willGrow(); + + uint h; + Node **nextNode = findNode(akey, &h); + return iterator(createNode(h, akey, avalue, nextNode)); +} + +template +Q_OUTOFLINE_TEMPLATE int QHash::remove(const Key &akey) +{ + if (isEmpty()) // prevents detaching shared null + return 0; + detach(); + + int oldSize = d->size; + Node **node = findNode(akey); + if (*node != e) { + bool deleteNext = true; + do { + Node *next = (*node)->next; + deleteNext = (next != e && next->key == (*node)->key); + deleteNode(*node); + *node = next; + --d->size; + } while (deleteNext); + d->hasShrunk(); + } + return oldSize - d->size; +} + +template +Q_OUTOFLINE_TEMPLATE T QHash::take(const Key &akey) +{ + if (isEmpty()) // prevents detaching shared null + return T(); + detach(); + + Node **node = findNode(akey); + if (*node != e) { + T t = (*node)->value; + Node *next = (*node)->next; + deleteNode(*node); + *node = next; + --d->size; + d->hasShrunk(); + return t; + } + return T(); +} + +template +Q_OUTOFLINE_TEMPLATE typename QHash::iterator QHash::erase(const_iterator it) +{ + Q_ASSERT_X(isValidIterator(it), "QHash::erase", "The specified iterator argument 'it' is invalid"); + + if (it == const_iterator(e)) + return iterator(it.i); + + if (d->ref.isShared()) { + // save 'it' across the detach: + int bucketNum = (it.i->h % d->numBuckets); + const_iterator bucketIterator(*(d->buckets + bucketNum)); + int stepsFromBucketStartToIte = 0; + while (bucketIterator != it) { + ++stepsFromBucketStartToIte; + ++bucketIterator; + } + detach(); + it = const_iterator(*(d->buckets + bucketNum)); + while (stepsFromBucketStartToIte > 0) { + --stepsFromBucketStartToIte; + ++it; + } + } + + iterator ret(it.i); + ++ret; + + Node *node = concrete(it.i); + Node **node_ptr = reinterpret_cast(&d->buckets[node->h % d->numBuckets]); + while (*node_ptr != node) + node_ptr = &(*node_ptr)->next; + *node_ptr = node->next; + deleteNode(node); + --d->size; + return ret; +} + +template +Q_INLINE_TEMPLATE void QHash::reserve(int asize) +{ + detach(); + d->rehash(-qMax(asize, 1)); +} + +template +Q_INLINE_TEMPLATE typename QHash::const_iterator QHash::find(const Key &akey) const +{ + return const_iterator(*findNode(akey)); +} + +template +Q_INLINE_TEMPLATE typename QHash::const_iterator QHash::constFind(const Key &akey) const +{ + return const_iterator(*findNode(akey)); +} + +template +Q_INLINE_TEMPLATE typename QHash::iterator QHash::find(const Key &akey) +{ + detach(); + return iterator(*findNode(akey)); +} + +template +Q_INLINE_TEMPLATE bool QHash::contains(const Key &akey) const +{ + return *findNode(akey) != e; +} + +template +Q_OUTOFLINE_TEMPLATE typename QHash::Node **QHash::findNode(const Key &akey, uint h) const +{ + Node **node; + + if (d->numBuckets) { + node = reinterpret_cast(&d->buckets[h % d->numBuckets]); + Q_ASSERT(*node == e || (*node)->next); + while (*node != e && !(*node)->same_key(h, akey)) + node = &(*node)->next; + } else { + node = const_cast(reinterpret_cast(&e)); + } + return node; +} + +template +Q_OUTOFLINE_TEMPLATE typename QHash::Node **QHash::findNode(const Key &akey, + uint *ahp) const +{ + uint h = 0; + + if (d->numBuckets || ahp) { + h = qHash(akey, d->seed); + if (ahp) + *ahp = h; + } + return findNode(akey, h); +} + +template +Q_OUTOFLINE_TEMPLATE bool QHash::operator==(const QHash &other) const +{ + if (size() != other.size()) + return false; + if (d == other.d) + return true; + + const_iterator it = begin(); + + while (it != end()) { + // Build two equal ranges for i.key(); one for *this and one for other. + // For *this we can avoid a lookup via equal_range, as we know the beginning of the range. + auto thisEqualRangeEnd = it; + while (thisEqualRangeEnd != end() && it.key() == thisEqualRangeEnd.key()) + ++thisEqualRangeEnd; + + const auto otherEqualRange = other.equal_range(it.key()); + + if (std::distance(it, thisEqualRangeEnd) != std::distance(otherEqualRange.first, otherEqualRange.second)) + return false; + + // Keys in the ranges are equal by construction; this checks only the values. + // + // When using the 3-arg std::is_permutation, MSVC will emit warning C4996, + // passing an unchecked iterator to a Standard Library algorithm. We don't + // want to suppress the warning, and we can't use stdext::make_checked_array_iterator + // because QHash::(const_)iterator does not work with size_t and thus will + // emit more warnings. Use the 4-arg std::is_permutation instead (which + // is supported since MSVC 2015). + // + // ### Qt 6: if C++14 library support is a mandated minimum, remove the ifdef for MSVC. + if (!std::is_permutation(it, thisEqualRangeEnd, otherEqualRange.first +#if defined(Q_CC_MSVC) && _MSC_VER >= 1900 + , otherEqualRange.second +#endif + )) { + return false; + } + + it = thisEqualRangeEnd; + } + + return true; +} + +template +QPair::iterator, typename QHash::iterator> QHash::equal_range(const Key &akey) +{ + detach(); + auto pair = qAsConst(*this).equal_range(akey); + return qMakePair(iterator(pair.first.i), iterator(pair.second.i)); +} + +template +QPair::const_iterator, typename QHash::const_iterator> QHash::equal_range(const Key &akey) const Q_DECL_NOTHROW +{ + Node *node = *findNode(akey); + const_iterator firstIt = const_iterator(node); + + if (node != e) { + // equal keys must hash to the same value and so they all + // end up in the same bucket. So we can use node->next, + // which only works within a bucket, instead of (out-of-line) + // QHashData::nextNode() + while (node->next != e && node->next->key == akey) + node = node->next; + + // 'node' may be the last node in the bucket. To produce the end iterator, we'd + // need to enter the next bucket in this case, so we need to use + // QHashData::nextNode() here, which, unlike node->next above, can move between + // buckets. + node = concrete(QHashData::nextNode(reinterpret_cast(node))); + } + + return qMakePair(firstIt, const_iterator(node)); +} + +template +class QMultiHash : public QHash +{ +public: + QMultiHash() Q_DECL_NOTHROW {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMultiHash(std::initializer_list > list) + { + this->reserve(int(list.size())); + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif + // compiler-generated copy/move ctors/assignment operators are fine! + // compiler-generated destructor is fine! + + QMultiHash(const QHash &other) : QHash(other) {} +#ifdef Q_COMPILER_RVALUE_REFS + QMultiHash(QHash &&other) Q_DECL_NOTHROW : QHash(std::move(other)) {} +#endif + void swap(QMultiHash &other) Q_DECL_NOTHROW { QHash::swap(other); } // prevent QMultiHash<->QHash swaps + + inline typename QHash::iterator replace(const Key &key, const T &value) + { return QHash::insert(key, value); } + + inline typename QHash::iterator insert(const Key &key, const T &value) + { return QHash::insertMulti(key, value); } + + inline QMultiHash &operator+=(const QMultiHash &other) + { this->unite(other); return *this; } + inline QMultiHash operator+(const QMultiHash &other) const + { QMultiHash result = *this; result += other; return result; } + + using QHash::contains; + using QHash::remove; + using QHash::count; + using QHash::find; + using QHash::constFind; + + bool contains(const Key &key, const T &value) const; + + int remove(const Key &key, const T &value); + + int count(const Key &key, const T &value) const; + + typename QHash::iterator find(const Key &key, const T &value) { + typename QHash::iterator i(find(key)); + typename QHash::iterator end(this->end()); + while (i != end && i.key() == key) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QHash::const_iterator find(const Key &key, const T &value) const { + typename QHash::const_iterator i(constFind(key)); + typename QHash::const_iterator end(QHash::constEnd()); + while (i != end && i.key() == key) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QHash::const_iterator constFind(const Key &key, const T &value) const + { return find(key, value); } +private: + T &operator[](const Key &key); + const T operator[](const Key &key) const; +}; + +template +Q_INLINE_TEMPLATE bool QMultiHash::contains(const Key &key, const T &value) const +{ + return constFind(key, value) != QHash::constEnd(); +} + +template +Q_INLINE_TEMPLATE int QMultiHash::remove(const Key &key, const T &value) +{ + int n = 0; + typename QHash::iterator i(find(key)); + typename QHash::iterator end(QHash::end()); + while (i != end && i.key() == key) { + if (i.value() == value) { + i = this->erase(i); + ++n; + } else { + ++i; + } + } + return n; +} + +template +Q_INLINE_TEMPLATE int QMultiHash::count(const Key &key, const T &value) const +{ + int n = 0; + typename QHash::const_iterator i(constFind(key)); + typename QHash::const_iterator end(QHash::constEnd()); + while (i != end && i.key() == key) { + if (i.value() == value) + ++n; + ++i; + } + return n; +} + +Q_DECLARE_ASSOCIATIVE_ITERATOR(Hash) +Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(Hash) + +template +uint qHash(const QHash &key, uint seed = 0) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(std::declval())) && noexcept(qHash(std::declval()))) +{ + QtPrivate::QHashCombineCommutative hash; + for (auto it = key.begin(), end = key.end(); it != end; ++it) { + const Key &k = it.key(); + const T &v = it.value(); + seed = hash(seed, std::pair(k, v)); + } + return seed; +} + +template +inline uint qHash(const QMultiHash &key, uint seed = 0) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(std::declval())) && noexcept(qHash(std::declval()))) +{ + const QHash &key2 = key; + return qHash(key2, seed); +} + +QT_END_NAMESPACE + +#if defined(Q_CC_MSVC) +#pragma warning( pop ) +#endif + +#endif // QHASH_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qhashfunctions.h b/qrenderdoc/3rdparty/qt/include/QtCore/qhashfunctions.h new file mode 100644 index 000000000..0eb6c1b5c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qhashfunctions.h @@ -0,0 +1,174 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHASHFUNCTIONS_H +#define QHASHFUNCTIONS_H + +#include +#include + +#include // for std::accumulate + +#if 0 +#pragma qt_class(QHashFunctions) +#endif + +#if defined(Q_CC_MSVC) +#pragma warning( push ) +#pragma warning( disable : 4311 ) // disable pointer truncation warning +#pragma warning( disable : 4127 ) // conditional expression is constant +#endif + +QT_BEGIN_NAMESPACE + +class QBitArray; +class QByteArray; +class QString; +class QStringRef; +class QLatin1String; + +Q_CORE_EXPORT int qGlobalQHashSeed(); +Q_CORE_EXPORT void qSetGlobalQHashSeed(int newSeed); + +Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHashBits(const void *p, size_t size, uint seed = 0) Q_DECL_NOTHROW; + +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(char key, uint seed = 0) Q_DECL_NOTHROW { return uint(key) ^ seed; } +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(uchar key, uint seed = 0) Q_DECL_NOTHROW { return uint(key) ^ seed; } +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(signed char key, uint seed = 0) Q_DECL_NOTHROW { return uint(key) ^ seed; } +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(ushort key, uint seed = 0) Q_DECL_NOTHROW { return uint(key) ^ seed; } +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(short key, uint seed = 0) Q_DECL_NOTHROW { return uint(key) ^ seed; } +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(uint key, uint seed = 0) Q_DECL_NOTHROW { return key ^ seed; } +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(int key, uint seed = 0) Q_DECL_NOTHROW { return uint(key) ^ seed; } +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(ulong key, uint seed = 0) Q_DECL_NOTHROW +{ + return (sizeof(ulong) > sizeof(uint)) + ? (uint(((key >> (8 * sizeof(uint) - 1)) ^ key) & (~0U)) ^ seed) + : (uint(key & (~0U)) ^ seed); +} +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(long key, uint seed = 0) Q_DECL_NOTHROW { return qHash(ulong(key), seed); } +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(quint64 key, uint seed = 0) Q_DECL_NOTHROW +{ + return uint(((key >> (8 * sizeof(uint) - 1)) ^ key) & (~0U)) ^ seed; +} +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(qint64 key, uint seed = 0) Q_DECL_NOTHROW { return qHash(quint64(key), seed); } +Q_CORE_EXPORT Q_DECL_CONST_FUNCTION uint qHash(float key, uint seed = 0) Q_DECL_NOTHROW; +Q_CORE_EXPORT Q_DECL_CONST_FUNCTION uint qHash(double key, uint seed = 0) Q_DECL_NOTHROW; +#ifndef Q_OS_DARWIN +Q_CORE_EXPORT Q_DECL_CONST_FUNCTION uint qHash(long double key, uint seed = 0) Q_DECL_NOTHROW; +#endif +Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(const QChar key, uint seed = 0) Q_DECL_NOTHROW { return qHash(key.unicode(), seed); } +Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QByteArray &key, uint seed = 0) Q_DECL_NOTHROW; +Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QString &key, uint seed = 0) Q_DECL_NOTHROW; +Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QStringRef &key, uint seed = 0) Q_DECL_NOTHROW; +Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QBitArray &key, uint seed = 0) Q_DECL_NOTHROW; +Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(QLatin1String key, uint seed = 0) Q_DECL_NOTHROW; +Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qt_hash(const QString &key) Q_DECL_NOTHROW; +Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qt_hash(const QStringRef &key) Q_DECL_NOTHROW; + +template inline uint qHash(const T *key, uint seed = 0) Q_DECL_NOTHROW +{ + return qHash(reinterpret_cast(key), seed); +} +template inline uint qHash(const T &t, uint seed) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(t))) +{ return qHash(t) ^ seed; } + +namespace QtPrivate { + +struct QHashCombine { + typedef uint result_type; + template + Q_DECL_CONSTEXPR result_type operator()(uint seed, const T &t) const Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(t))) + // combiner taken from N3876 / boost::hash_combine + { return seed ^ (qHash(t) + 0x9e3779b9 + (seed << 6) + (seed >> 2)) ; } +}; + +struct QHashCombineCommutative { + // QHashCombine is a good hash combiner, but is not commutative, + // ie. it depends on the order of the input elements. That is + // usually what we want: {0,1,3} should hash differently than + // {1,3,0}. Except when it isn't (e.g. for QSet and + // QHash). Therefore, provide a commutative combiner, too. + typedef uint result_type; + template + Q_DECL_CONSTEXPR result_type operator()(uint seed, const T &t) const Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(t))) + { return seed + qHash(t); } // don't use xor! +}; + +} // namespace QtPrivate + +template +inline uint qHashRange(InputIterator first, InputIterator last, uint seed = 0) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(*first))) // assume iterator operations don't throw +{ + return std::accumulate(first, last, seed, QtPrivate::QHashCombine()); +} + +template +inline uint qHashRangeCommutative(InputIterator first, InputIterator last, uint seed = 0) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(*first))) // assume iterator operations don't throw +{ + return std::accumulate(first, last, seed, QtPrivate::QHashCombineCommutative()); +} + +template inline uint qHash(const QPair &key, uint seed = 0) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(key.first, seed)) && noexcept(qHash(key.second, seed))) +{ + uint h1 = qHash(key.first, seed); + uint h2 = qHash(key.second, seed); + return ((h1 << 16) | (h1 >> 16)) ^ h2 ^ seed; +} + +template inline uint qHash(const std::pair &key, uint seed = 0) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(key.first, seed)) && noexcept(qHash(key.second, seed))) +{ + QtPrivate::QHashCombine hash; + seed = hash(seed, key.first); + seed = hash(seed, key.second); + return seed; +} + +QT_END_NAMESPACE + +#if defined(Q_CC_MSVC) +#pragma warning( pop ) +#endif + +#endif // QHASHFUNCTIONS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qhistorystate.h b/qrenderdoc/3rdparty/qt/include/QtCore/qhistorystate.h new file mode 100644 index 000000000..c20053abf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qhistorystate.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHISTORYSTATE_H +#define QHISTORYSTATE_H + +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QAbstractTransition; +class QHistoryStatePrivate; +class Q_CORE_EXPORT QHistoryState : public QAbstractState +{ + Q_OBJECT + Q_PROPERTY(QAbstractState* defaultState READ defaultState WRITE setDefaultState NOTIFY defaultStateChanged) + Q_PROPERTY(QAbstractTransition* defaultTransition READ defaultTransition WRITE setDefaultTransition NOTIFY defaultTransitionChanged) + Q_PROPERTY(HistoryType historyType READ historyType WRITE setHistoryType NOTIFY historyTypeChanged) +public: + enum HistoryType { + ShallowHistory, + DeepHistory + }; + Q_ENUM(HistoryType) + + QHistoryState(QState *parent = Q_NULLPTR); + QHistoryState(HistoryType type, QState *parent = Q_NULLPTR); + ~QHistoryState(); + + QAbstractTransition *defaultTransition() const; + void setDefaultTransition(QAbstractTransition *transition); + + QAbstractState *defaultState() const; + void setDefaultState(QAbstractState *state); + + HistoryType historyType() const; + void setHistoryType(HistoryType type); + +Q_SIGNALS: + void defaultTransitionChanged(QPrivateSignal); + void defaultStateChanged(QPrivateSignal); + void historyTypeChanged(QPrivateSignal); + +protected: + void onEntry(QEvent *event) Q_DECL_OVERRIDE; + void onExit(QEvent *event) Q_DECL_OVERRIDE; + + bool event(QEvent *e) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QHistoryState) + Q_DECLARE_PRIVATE(QHistoryState) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qidentityproxymodel.h b/qrenderdoc/3rdparty/qt/include/QtCore/qidentityproxymodel.h new file mode 100644 index 000000000..e93740c1a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qidentityproxymodel.h @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QIDENTITYPROXYMODEL_H +#define QIDENTITYPROXYMODEL_H + +#include + +#ifndef QT_NO_IDENTITYPROXYMODEL + +QT_BEGIN_NAMESPACE + + +class QIdentityProxyModelPrivate; + +class Q_CORE_EXPORT QIdentityProxyModel : public QAbstractProxyModel +{ + Q_OBJECT +public: + explicit QIdentityProxyModel(QObject* parent = Q_NULLPTR); + ~QIdentityProxyModel(); + + int columnCount(const QModelIndex& parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex mapFromSource(const QModelIndex& sourceIndex) const Q_DECL_OVERRIDE; + QModelIndex mapToSource(const QModelIndex& proxyIndex) const Q_DECL_OVERRIDE; + QModelIndex parent(const QModelIndex& child) const Q_DECL_OVERRIDE; + using QObject::parent; + int rowCount(const QModelIndex& parent = QModelIndex()) const Q_DECL_OVERRIDE; + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) Q_DECL_OVERRIDE; + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; + + QItemSelection mapSelectionFromSource(const QItemSelection& selection) const Q_DECL_OVERRIDE; + QItemSelection mapSelectionToSource(const QItemSelection& selection) const Q_DECL_OVERRIDE; + QModelIndexList match(const QModelIndex& start, int role, const QVariant& value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const Q_DECL_OVERRIDE; + void setSourceModel(QAbstractItemModel* sourceModel) Q_DECL_OVERRIDE; + + bool insertColumns(int column, int count, const QModelIndex& parent = QModelIndex()) Q_DECL_OVERRIDE; + bool insertRows(int row, int count, const QModelIndex& parent = QModelIndex()) Q_DECL_OVERRIDE; + bool removeColumns(int column, int count, const QModelIndex& parent = QModelIndex()) Q_DECL_OVERRIDE; + bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()) Q_DECL_OVERRIDE; + +protected: + QIdentityProxyModel(QIdentityProxyModelPrivate &dd, QObject* parent); + +private: + Q_DECLARE_PRIVATE(QIdentityProxyModel) + Q_DISABLE_COPY(QIdentityProxyModel) + + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsAboutToBeInserted(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsInserted(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsAboutToBeRemoved(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsRemoved(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsMoved(QModelIndex,int,int,QModelIndex,int)) + + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsAboutToBeInserted(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsInserted(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsAboutToBeRemoved(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsRemoved(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsMoved(QModelIndex,int,int,QModelIndex,int)) + + Q_PRIVATE_SLOT(d_func(), void _q_sourceDataChanged(QModelIndex,QModelIndex,QVector)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceHeaderDataChanged(Qt::Orientation orientation, int first, int last)) + + Q_PRIVATE_SLOT(d_func(), void _q_sourceLayoutAboutToBeChanged(const QList &sourceParents, QAbstractItemModel::LayoutChangeHint hint)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceLayoutChanged(const QList &sourceParents, QAbstractItemModel::LayoutChangeHint hint)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceModelAboutToBeReset()) + Q_PRIVATE_SLOT(d_func(), void _q_sourceModelReset()) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_IDENTITYPROXYMODEL + +#endif // QIDENTITYPROXYMODEL_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qiodevice.h b/qrenderdoc/3rdparty/qt/include/QtCore/qiodevice.h new file mode 100644 index 000000000..162480d22 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qiodevice.h @@ -0,0 +1,191 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIODEVICE_H +#define QIODEVICE_H + +#include +#ifndef QT_NO_QOBJECT +#include +#else +#include +#include +#endif +#include + +#ifdef open +#error qiodevice.h must be included before any header file that defines open +#endif + +QT_BEGIN_NAMESPACE + + +class QByteArray; +class QIODevicePrivate; + +class Q_CORE_EXPORT QIODevice +#ifndef QT_NO_QOBJECT + : public QObject +#endif +{ +#ifndef QT_NO_QOBJECT + Q_OBJECT +#endif +public: + enum OpenModeFlag { + NotOpen = 0x0000, + ReadOnly = 0x0001, + WriteOnly = 0x0002, + ReadWrite = ReadOnly | WriteOnly, + Append = 0x0004, + Truncate = 0x0008, + Text = 0x0010, + Unbuffered = 0x0020 + }; + Q_DECLARE_FLAGS(OpenMode, OpenModeFlag) + + QIODevice(); +#ifndef QT_NO_QOBJECT + explicit QIODevice(QObject *parent); +#endif + virtual ~QIODevice(); + + OpenMode openMode() const; + + void setTextModeEnabled(bool enabled); + bool isTextModeEnabled() const; + + bool isOpen() const; + bool isReadable() const; + bool isWritable() const; + virtual bool isSequential() const; + + int readChannelCount() const; + int writeChannelCount() const; + int currentReadChannel() const; + void setCurrentReadChannel(int channel); + int currentWriteChannel() const; + void setCurrentWriteChannel(int channel); + + virtual bool open(OpenMode mode); + virtual void close(); + + // ### Qt 6: pos() and seek() should not be virtual, and + // ### seek() should call a virtual seekData() function. + virtual qint64 pos() const; + virtual qint64 size() const; + virtual bool seek(qint64 pos); + virtual bool atEnd() const; + virtual bool reset(); + + virtual qint64 bytesAvailable() const; + virtual qint64 bytesToWrite() const; + + qint64 read(char *data, qint64 maxlen); + QByteArray read(qint64 maxlen); + QByteArray readAll(); + qint64 readLine(char *data, qint64 maxlen); + QByteArray readLine(qint64 maxlen = 0); + virtual bool canReadLine() const; + + void startTransaction(); + void commitTransaction(); + void rollbackTransaction(); + bool isTransactionStarted() const; + + qint64 write(const char *data, qint64 len); + qint64 write(const char *data); + inline qint64 write(const QByteArray &data) + { return write(data.constData(), data.size()); } + + qint64 peek(char *data, qint64 maxlen); + QByteArray peek(qint64 maxlen); + + virtual bool waitForReadyRead(int msecs); + virtual bool waitForBytesWritten(int msecs); + + void ungetChar(char c); + bool putChar(char c); + bool getChar(char *c); + + QString errorString() const; + +#ifndef QT_NO_QOBJECT +Q_SIGNALS: + void readyRead(); + void channelReadyRead(int channel); + void bytesWritten(qint64 bytes); + void channelBytesWritten(int channel, qint64 bytes); + void aboutToClose(); + void readChannelFinished(); +#endif + +protected: +#ifdef QT_NO_QOBJECT + QIODevice(QIODevicePrivate &dd); +#else + QIODevice(QIODevicePrivate &dd, QObject *parent = Q_NULLPTR); +#endif + virtual qint64 readData(char *data, qint64 maxlen) = 0; + virtual qint64 readLineData(char *data, qint64 maxlen); + virtual qint64 writeData(const char *data, qint64 len) = 0; + + void setOpenMode(OpenMode openMode); + + void setErrorString(const QString &errorString); + +#ifdef QT_NO_QOBJECT + QScopedPointer d_ptr; +#endif + +private: + Q_DECLARE_PRIVATE(QIODevice) + Q_DISABLE_COPY(QIODevice) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QIODevice::OpenMode) + +#if !defined(QT_NO_DEBUG_STREAM) +class QDebug; +Q_CORE_EXPORT QDebug operator<<(QDebug debug, QIODevice::OpenMode modes); +#endif + +QT_END_NAMESPACE + +#endif // QIODEVICE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qisenum.h b/qrenderdoc/3rdparty/qt/include/QtCore/qisenum.h new file mode 100644 index 000000000..8f784ef6e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qisenum.h @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QISENUM_H +#define QISENUM_H + +// Use of Q_IS_ENUM is deprecated since 5.8 +#define Q_IS_ENUM(x) std::is_enum::value + +// shut up syncqt +QT_BEGIN_NAMESPACE +QT_END_NAMESPACE +#endif // QISENUM_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qitemselectionmodel.h b/qrenderdoc/3rdparty/qt/include/QtCore/qitemselectionmodel.h new file mode 100644 index 000000000..9d33303dd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qitemselectionmodel.h @@ -0,0 +1,274 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QITEMSELECTIONMODEL_H +#define QITEMSELECTIONMODEL_H + +#include + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QItemSelectionRange +{ + +public: + inline QItemSelectionRange() : tl(), br() {} +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + // ### Qt 6: remove them all, the compiler-generated ones are fine + inline QItemSelectionRange(const QItemSelectionRange &other) + : tl(other.tl), br(other.br) {} +# ifdef Q_COMPILER_RVALUE_REFS + QItemSelectionRange(QItemSelectionRange &&other) Q_DECL_NOTHROW + : tl(std::move(other.tl)), br(std::move(other.br)) {} + QItemSelectionRange &operator=(QItemSelectionRange &&other) Q_DECL_NOTHROW + { tl = std::move(other.tl); br = std::move(other.br); return *this; } +# endif + QItemSelectionRange &operator=(const QItemSelectionRange &other) + { tl = other.tl; br = other.br; return *this; } +#endif // Qt < 6 + QItemSelectionRange(const QModelIndex &topL, const QModelIndex &bottomR) : tl(topL), br(bottomR) {} + explicit QItemSelectionRange(const QModelIndex &index) : tl(index), br(tl) {} + + void swap(QItemSelectionRange &other) Q_DECL_NOTHROW + { + qSwap(tl, other.tl); + qSwap(br, other.br); + } + + inline int top() const { return tl.row(); } + inline int left() const { return tl.column(); } + inline int bottom() const { return br.row(); } + inline int right() const { return br.column(); } + inline int width() const { return br.column() - tl.column() + 1; } + inline int height() const { return br.row() - tl.row() + 1; } + + inline const QPersistentModelIndex &topLeft() const { return tl; } + inline const QPersistentModelIndex &bottomRight() const { return br; } + inline QModelIndex parent() const { return tl.parent(); } + inline const QAbstractItemModel *model() const { return tl.model(); } + + inline bool contains(const QModelIndex &index) const + { + return (parent() == index.parent() + && tl.row() <= index.row() && tl.column() <= index.column() + && br.row() >= index.row() && br.column() >= index.column()); + } + + inline bool contains(int row, int column, const QModelIndex &parentIndex) const + { + return (parent() == parentIndex + && tl.row() <= row && tl.column() <= column + && br.row() >= row && br.column() >= column); + } + + bool intersects(const QItemSelectionRange &other) const; +#if QT_DEPRECATED_SINCE(5, 0) + inline QItemSelectionRange intersect(const QItemSelectionRange &other) const + { return intersected(other); } +#endif + QItemSelectionRange intersected(const QItemSelectionRange &other) const; + + + inline bool operator==(const QItemSelectionRange &other) const + { return (tl == other.tl && br == other.br); } + inline bool operator!=(const QItemSelectionRange &other) const + { return !operator==(other); } + bool operator<(const QItemSelectionRange &other) const; + + inline bool isValid() const + { + return (tl.isValid() && br.isValid() && tl.parent() == br.parent() + && top() <= bottom() && left() <= right()); + } + + bool isEmpty() const; + + QModelIndexList indexes() const; + +private: + QPersistentModelIndex tl, br; +}; +Q_DECLARE_TYPEINFO(QItemSelectionRange, Q_MOVABLE_TYPE); + +class QItemSelection; +class QItemSelectionModelPrivate; + +class Q_CORE_EXPORT QItemSelectionModel : public QObject +{ + Q_OBJECT + Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel NOTIFY modelChanged) + Q_PROPERTY(bool hasSelection READ hasSelection NOTIFY selectionChanged STORED false DESIGNABLE false) + Q_PROPERTY(QModelIndex currentIndex READ currentIndex NOTIFY currentChanged STORED false DESIGNABLE false) + Q_PROPERTY(QItemSelection selection READ selection NOTIFY selectionChanged STORED false DESIGNABLE false) + Q_PROPERTY(QModelIndexList selectedIndexes READ selectedIndexes NOTIFY selectionChanged STORED false DESIGNABLE false) + + Q_DECLARE_PRIVATE(QItemSelectionModel) + +public: + + enum SelectionFlag { + NoUpdate = 0x0000, + Clear = 0x0001, + Select = 0x0002, + Deselect = 0x0004, + Toggle = 0x0008, + Current = 0x0010, + Rows = 0x0020, + Columns = 0x0040, + SelectCurrent = Select | Current, + ToggleCurrent = Toggle | Current, + ClearAndSelect = Clear | Select + }; + + Q_DECLARE_FLAGS(SelectionFlags, SelectionFlag) + Q_FLAG(SelectionFlags) + + explicit QItemSelectionModel(QAbstractItemModel *model = Q_NULLPTR); + explicit QItemSelectionModel(QAbstractItemModel *model, QObject *parent); + virtual ~QItemSelectionModel(); + + QModelIndex currentIndex() const; + + Q_INVOKABLE bool isSelected(const QModelIndex &index) const; + Q_INVOKABLE bool isRowSelected(int row, const QModelIndex &parent) const; + Q_INVOKABLE bool isColumnSelected(int column, const QModelIndex &parent) const; + + Q_INVOKABLE bool rowIntersectsSelection(int row, const QModelIndex &parent) const; + Q_INVOKABLE bool columnIntersectsSelection(int column, const QModelIndex &parent) const; + + bool hasSelection() const; + + QModelIndexList selectedIndexes() const; + Q_INVOKABLE QModelIndexList selectedRows(int column = 0) const; + Q_INVOKABLE QModelIndexList selectedColumns(int row = 0) const; + const QItemSelection selection() const; + + // ### Qt 6: Merge these two as "QAbstractItemModel *model() const" + const QAbstractItemModel *model() const; + QAbstractItemModel *model(); + + void setModel(QAbstractItemModel *model); + +public Q_SLOTS: + virtual void setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command); + virtual void select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command); + virtual void select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command); + virtual void clear(); + virtual void reset(); + + void clearSelection(); + virtual void clearCurrentIndex(); + +Q_SIGNALS: + void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); + void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); + void currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous); + void currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous); + void modelChanged(QAbstractItemModel *model); + +protected: + QItemSelectionModel(QItemSelectionModelPrivate &dd, QAbstractItemModel *model); + void emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection); + +private: + Q_DISABLE_COPY(QItemSelectionModel) + Q_PRIVATE_SLOT(d_func(), void _q_columnsAboutToBeRemoved(const QModelIndex&, int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_rowsAboutToBeRemoved(const QModelIndex&, int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_columnsAboutToBeInserted(const QModelIndex&, int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_rowsAboutToBeInserted(const QModelIndex&, int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_layoutAboutToBeChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoHint)) + Q_PRIVATE_SLOT(d_func(), void _q_layoutChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoHint)) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QItemSelectionModel::SelectionFlags) + +// dummy implentation of qHash() necessary for instantiating QList::toSet() with MSVC +inline uint qHash(const QItemSelectionRange &) { return 0; } + +#ifdef Q_CC_MSVC + +/* + ### Qt 6: + ### This needs to be removed for next releases of Qt. It is a workaround for vc++ because + ### Qt exports QItemSelection that inherits QList. +*/ + +# ifndef Q_TEMPLATE_EXTERN +# if defined(QT_BUILD_CORE_LIB) +# define Q_TEMPLATE_EXTERN +# else +# define Q_TEMPLATE_EXTERN extern +# endif +# endif +Q_TEMPLATE_EXTERN template class Q_CORE_EXPORT QList; +#endif // Q_CC_MSVC + +class Q_CORE_EXPORT QItemSelection : public QList +{ +public: + QItemSelection() Q_DECL_NOTHROW : QList() {} + QItemSelection(const QModelIndex &topLeft, const QModelIndex &bottomRight); + + // reusing QList::swap() here is OK! + + void select(const QModelIndex &topLeft, const QModelIndex &bottomRight); + bool contains(const QModelIndex &index) const; + QModelIndexList indexes() const; + void merge(const QItemSelection &other, QItemSelectionModel::SelectionFlags command); + static void split(const QItemSelectionRange &range, + const QItemSelectionRange &other, + QItemSelection *result); +}; +Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QItemSelection) + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QItemSelectionRange &); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QItemSelectionRange) +Q_DECLARE_METATYPE(QItemSelection) + +#endif // QITEMSELECTIONMODEL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qiterator.h b/qrenderdoc/3rdparty/qt/include/QtCore/qiterator.h new file mode 100644 index 000000000..395300524 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qiterator.h @@ -0,0 +1,184 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QITERATOR_H +#define QITERATOR_H + +#include + +QT_BEGIN_NAMESPACE + +#define Q_DECLARE_SEQUENTIAL_ITERATOR(C) \ +\ +template \ +class Q##C##Iterator \ +{ \ + typedef typename Q##C::const_iterator const_iterator; \ + Q##C c; \ + const_iterator i; \ +public: \ + inline Q##C##Iterator(const Q##C &container) \ + : c(container), i(c.constBegin()) {} \ + inline Q##C##Iterator &operator=(const Q##C &container) \ + { c = container; i = c.constBegin(); return *this; } \ + inline void toFront() { i = c.constBegin(); } \ + inline void toBack() { i = c.constEnd(); } \ + inline bool hasNext() const { return i != c.constEnd(); } \ + inline const T &next() { return *i++; } \ + inline const T &peekNext() const { return *i; } \ + inline bool hasPrevious() const { return i != c.constBegin(); } \ + inline const T &previous() { return *--i; } \ + inline const T &peekPrevious() const { const_iterator p = i; return *--p; } \ + inline bool findNext(const T &t) \ + { while (i != c.constEnd()) if (*i++ == t) return true; return false; } \ + inline bool findPrevious(const T &t) \ + { while (i != c.constBegin()) if (*(--i) == t) return true; \ + return false; } \ +}; + +#define Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(C) \ +\ +template \ +class QMutable##C##Iterator \ +{ \ + typedef typename Q##C::iterator iterator; \ + typedef typename Q##C::const_iterator const_iterator; \ + Q##C *c; \ + iterator i, n; \ + inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } \ +public: \ + inline QMutable##C##Iterator(Q##C &container) \ + : c(&container) \ + { i = c->begin(); n = c->end(); } \ + inline QMutable##C##Iterator &operator=(Q##C &container) \ + { c = &container; i = c->begin(); n = c->end(); return *this; } \ + inline void toFront() { i = c->begin(); n = c->end(); } \ + inline void toBack() { i = c->end(); n = i; } \ + inline bool hasNext() const { return c->constEnd() != const_iterator(i); } \ + inline T &next() { n = i++; return *n; } \ + inline T &peekNext() const { return *i; } \ + inline bool hasPrevious() const { return c->constBegin() != const_iterator(i); } \ + inline T &previous() { n = --i; return *n; } \ + inline T &peekPrevious() const { iterator p = i; return *--p; } \ + inline void remove() \ + { if (c->constEnd() != const_iterator(n)) { i = c->erase(n); n = c->end(); } } \ + inline void setValue(const T &t) const { if (c->constEnd() != const_iterator(n)) *n = t; } \ + inline T &value() { Q_ASSERT(item_exists()); return *n; } \ + inline const T &value() const { Q_ASSERT(item_exists()); return *n; } \ + inline void insert(const T &t) { n = i = c->insert(i, t); ++i; } \ + inline bool findNext(const T &t) \ + { while (c->constEnd() != const_iterator(n = i)) if (*i++ == t) return true; return false; } \ + inline bool findPrevious(const T &t) \ + { while (c->constBegin() != const_iterator(i)) if (*(n = --i) == t) return true; \ + n = c->end(); return false; } \ +}; + +#define Q_DECLARE_ASSOCIATIVE_ITERATOR(C) \ +\ +template \ +class Q##C##Iterator \ +{ \ + typedef typename Q##C::const_iterator const_iterator; \ + typedef const_iterator Item; \ + Q##C c; \ + const_iterator i, n; \ + inline bool item_exists() const { return n != c.constEnd(); } \ +public: \ + inline Q##C##Iterator(const Q##C &container) \ + : c(container), i(c.constBegin()), n(c.constEnd()) {} \ + inline Q##C##Iterator &operator=(const Q##C &container) \ + { c = container; i = c.constBegin(); n = c.constEnd(); return *this; } \ + inline void toFront() { i = c.constBegin(); n = c.constEnd(); } \ + inline void toBack() { i = c.constEnd(); n = c.constEnd(); } \ + inline bool hasNext() const { return i != c.constEnd(); } \ + inline Item next() { n = i++; return n; } \ + inline Item peekNext() const { return i; } \ + inline bool hasPrevious() const { return i != c.constBegin(); } \ + inline Item previous() { n = --i; return n; } \ + inline Item peekPrevious() const { const_iterator p = i; return --p; } \ + inline const T &value() const { Q_ASSERT(item_exists()); return *n; } \ + inline const Key &key() const { Q_ASSERT(item_exists()); return n.key(); } \ + inline bool findNext(const T &t) \ + { while ((n = i) != c.constEnd()) if (*i++ == t) return true; return false; } \ + inline bool findPrevious(const T &t) \ + { while (i != c.constBegin()) if (*(n = --i) == t) return true; \ + n = c.constEnd(); return false; } \ +}; + +#define Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(C) \ +\ +template \ +class QMutable##C##Iterator \ +{ \ + typedef typename Q##C::iterator iterator; \ + typedef typename Q##C::const_iterator const_iterator; \ + typedef iterator Item; \ + Q##C *c; \ + iterator i, n; \ + inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } \ +public: \ + inline QMutable##C##Iterator(Q##C &container) \ + : c(&container) \ + { i = c->begin(); n = c->end(); } \ + inline QMutable##C##Iterator &operator=(Q##C &container) \ + { c = &container; i = c->begin(); n = c->end(); return *this; } \ + inline void toFront() { i = c->begin(); n = c->end(); } \ + inline void toBack() { i = c->end(); n = c->end(); } \ + inline bool hasNext() const { return const_iterator(i) != c->constEnd(); } \ + inline Item next() { n = i++; return n; } \ + inline Item peekNext() const { return i; } \ + inline bool hasPrevious() const { return const_iterator(i) != c->constBegin(); } \ + inline Item previous() { n = --i; return n; } \ + inline Item peekPrevious() const { iterator p = i; return --p; } \ + inline void remove() \ + { if (const_iterator(n) != c->constEnd()) { i = c->erase(n); n = c->end(); } } \ + inline void setValue(const T &t) { if (const_iterator(n) != c->constEnd()) *n = t; } \ + inline T &value() { Q_ASSERT(item_exists()); return *n; } \ + inline const T &value() const { Q_ASSERT(item_exists()); return *n; } \ + inline const Key &key() const { Q_ASSERT(item_exists()); return n.key(); } \ + inline bool findNext(const T &t) \ + { while (const_iterator(n = i) != c->constEnd()) if (*i++ == t) return true; return false; } \ + inline bool findPrevious(const T &t) \ + { while (const_iterator(i) != c->constBegin()) if (*(n = --i) == t) return true; \ + n = c->end(); return false; } \ +}; + +QT_END_NAMESPACE + +#endif // QITERATOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qjsonarray.h b/qrenderdoc/3rdparty/qt/include/QtCore/qjsonarray.h new file mode 100644 index 000000000..3b6fa37cf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qjsonarray.h @@ -0,0 +1,252 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QJSONARRAY_H +#define QJSONARRAY_H + +#include +#include +#if defined(Q_COMPILER_INITIALIZER_LISTS) +#include +#endif + +QT_BEGIN_NAMESPACE + +class QDebug; +class QStringList; +template class QList; +typedef QList QVariantList; + +class Q_CORE_EXPORT QJsonArray +{ +public: + QJsonArray(); + +#if defined(Q_COMPILER_INITIALIZER_LISTS) || defined(Q_QDOC) + QJsonArray(std::initializer_list args) + { + initialize(); + for (std::initializer_list::const_iterator i = args.begin(); i != args.end(); ++i) + append(*i); + } +#endif + + ~QJsonArray(); + + QJsonArray(const QJsonArray &other); + QJsonArray &operator =(const QJsonArray &other); + + static QJsonArray fromStringList(const QStringList &list); + static QJsonArray fromVariantList(const QVariantList &list); + QVariantList toVariantList() const; + + int size() const; + inline int count() const { return size(); } + + bool isEmpty() const; + QJsonValue at(int i) const; + QJsonValue first() const; + QJsonValue last() const; + + void prepend(const QJsonValue &value); + void append(const QJsonValue &value); + void removeAt(int i); + QJsonValue takeAt(int i); + inline void removeFirst() { removeAt(0); } + inline void removeLast() { removeAt(size() - 1); } + + void insert(int i, const QJsonValue &value); + void replace(int i, const QJsonValue &value); + + bool contains(const QJsonValue &element) const; + QJsonValueRef operator[](int i); + QJsonValue operator[](int i) const; + + bool operator==(const QJsonArray &other) const; + bool operator!=(const QJsonArray &other) const; + + class const_iterator; + + class iterator { + public: + QJsonArray *a; + int i; + typedef std::random_access_iterator_tag iterator_category; + typedef int difference_type; + typedef QJsonValue value_type; + typedef QJsonValueRef reference; + typedef QJsonValueRefPtr pointer; + + inline iterator() : a(Q_NULLPTR), i(0) { } + explicit inline iterator(QJsonArray *array, int index) : a(array), i(index) { } + + inline QJsonValueRef operator*() const { return QJsonValueRef(a, i); } +#ifdef Q_QDOC + inline QJsonValueRef* operator->() const; +#else + inline QJsonValueRefPtr operator->() const { return QJsonValueRefPtr(a, i); } +#endif + inline QJsonValueRef operator[](int j) const { return QJsonValueRef(a, i + j); } + + inline bool operator==(const iterator &o) const { return i == o.i; } + inline bool operator!=(const iterator &o) const { return i != o.i; } + inline bool operator<(const iterator& other) const { return i < other.i; } + inline bool operator<=(const iterator& other) const { return i <= other.i; } + inline bool operator>(const iterator& other) const { return i > other.i; } + inline bool operator>=(const iterator& other) const { return i >= other.i; } + inline bool operator==(const const_iterator &o) const { return i == o.i; } + inline bool operator!=(const const_iterator &o) const { return i != o.i; } + inline bool operator<(const const_iterator& other) const { return i < other.i; } + inline bool operator<=(const const_iterator& other) const { return i <= other.i; } + inline bool operator>(const const_iterator& other) const { return i > other.i; } + inline bool operator>=(const const_iterator& other) const { return i >= other.i; } + inline iterator &operator++() { ++i; return *this; } + inline iterator operator++(int) { iterator n = *this; ++i; return n; } + inline iterator &operator--() { i--; return *this; } + inline iterator operator--(int) { iterator n = *this; i--; return n; } + inline iterator &operator+=(int j) { i+=j; return *this; } + inline iterator &operator-=(int j) { i-=j; return *this; } + inline iterator operator+(int j) const { return iterator(a, i+j); } + inline iterator operator-(int j) const { return iterator(a, i-j); } + inline int operator-(iterator j) const { return i - j.i; } + }; + friend class iterator; + + class const_iterator { + public: + const QJsonArray *a; + int i; + typedef std::random_access_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef QJsonValue value_type; + typedef QJsonValue reference; + typedef QJsonValuePtr pointer; + + inline const_iterator() : a(Q_NULLPTR), i(0) { } + explicit inline const_iterator(const QJsonArray *array, int index) : a(array), i(index) { } +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + inline const_iterator(const const_iterator &o) : a(o.a), i(o.i) {} // ### Qt 6: Removed so class can be trivially-copyable +#endif + inline const_iterator(const iterator &o) : a(o.a), i(o.i) {} + + inline QJsonValue operator*() const { return a->at(i); } +#ifdef Q_QDOC + inline QJsonValue* operator->() const; +#else + inline QJsonValuePtr operator->() const { return QJsonValuePtr(a->at(i)); } +#endif + inline QJsonValue operator[](int j) const { return a->at(i+j); } + inline bool operator==(const const_iterator &o) const { return i == o.i; } + inline bool operator!=(const const_iterator &o) const { return i != o.i; } + inline bool operator<(const const_iterator& other) const { return i < other.i; } + inline bool operator<=(const const_iterator& other) const { return i <= other.i; } + inline bool operator>(const const_iterator& other) const { return i > other.i; } + inline bool operator>=(const const_iterator& other) const { return i >= other.i; } + inline const_iterator &operator++() { ++i; return *this; } + inline const_iterator operator++(int) { const_iterator n = *this; ++i; return n; } + inline const_iterator &operator--() { i--; return *this; } + inline const_iterator operator--(int) { const_iterator n = *this; i--; return n; } + inline const_iterator &operator+=(int j) { i+=j; return *this; } + inline const_iterator &operator-=(int j) { i-=j; return *this; } + inline const_iterator operator+(int j) const { return const_iterator(a, i+j); } + inline const_iterator operator-(int j) const { return const_iterator(a, i-j); } + inline int operator-(const_iterator j) const { return i - j.i; } + }; + friend class const_iterator; + + // stl style + inline iterator begin() { detach2(); return iterator(this, 0); } + inline const_iterator begin() const { return const_iterator(this, 0); } + inline const_iterator constBegin() const { return const_iterator(this, 0); } + inline iterator end() { detach2(); return iterator(this, size()); } + inline const_iterator end() const { return const_iterator(this, size()); } + inline const_iterator constEnd() const { return const_iterator(this, size()); } + iterator insert(iterator before, const QJsonValue &value) { insert(before.i, value); return before; } + iterator erase(iterator it) { removeAt(it.i); return it; } + + // more Qt + typedef iterator Iterator; + typedef const_iterator ConstIterator; + + // convenience + inline QJsonArray operator+(const QJsonValue &v) const + { QJsonArray n = *this; n += v; return n; } + inline QJsonArray &operator+=(const QJsonValue &v) + { append(v); return *this; } + inline QJsonArray &operator<< (const QJsonValue &v) + { append(v); return *this; } + + // stl compatibility + inline void push_back(const QJsonValue &t) { append(t); } + inline void push_front(const QJsonValue &t) { prepend(t); } + inline void pop_front() { removeFirst(); } + inline void pop_back() { removeLast(); } + inline bool empty() const { return isEmpty(); } + typedef int size_type; + typedef QJsonValue value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef QJsonValueRef reference; + typedef QJsonValue const_reference; + typedef int difference_type; + +private: + friend class QJsonPrivate::Data; + friend class QJsonValue; + friend class QJsonDocument; + friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonArray &); + + QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array); + void initialize(); + void compact(); + // ### Qt 6: remove me and merge with detach2 + void detach(uint reserve = 0); + bool detach2(uint reserve = 0); + + QJsonPrivate::Data *d; + QJsonPrivate::Array *a; +}; + +#if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_JSON_READONLY) +Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonArray &); +#endif + +QT_END_NAMESPACE + +#endif // QJSONARRAY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qjsondocument.h b/qrenderdoc/3rdparty/qt/include/QtCore/qjsondocument.h new file mode 100644 index 000000000..19885a8d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qjsondocument.h @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QJSONDOCUMENT_H +#define QJSONDOCUMENT_H + +#include + +QT_BEGIN_NAMESPACE + +class QDebug; + +namespace QJsonPrivate { + class Parser; +} + +struct Q_CORE_EXPORT QJsonParseError +{ + enum ParseError { + NoError = 0, + UnterminatedObject, + MissingNameSeparator, + UnterminatedArray, + MissingValueSeparator, + IllegalValue, + TerminationByNumber, + IllegalNumber, + IllegalEscapeSequence, + IllegalUTF8String, + UnterminatedString, + MissingObject, + DeepNesting, + DocumentTooLarge, + GarbageAtEnd + }; + + QString errorString() const; + + int offset; + ParseError error; +}; + +class Q_CORE_EXPORT QJsonDocument +{ +public: +#ifdef Q_LITTLE_ENDIAN + static const uint BinaryFormatTag = ('q') | ('b' << 8) | ('j' << 16) | ('s' << 24); +#else + static const uint BinaryFormatTag = ('q' << 24) | ('b' << 16) | ('j' << 8) | ('s'); +#endif + + QJsonDocument(); + explicit QJsonDocument(const QJsonObject &object); + explicit QJsonDocument(const QJsonArray &array); + ~QJsonDocument(); + + QJsonDocument(const QJsonDocument &other); + QJsonDocument &operator =(const QJsonDocument &other); + + enum DataValidation { + Validate, + BypassValidation + }; + + static QJsonDocument fromRawData(const char *data, int size, DataValidation validation = Validate); + const char *rawData(int *size) const; + + static QJsonDocument fromBinaryData(const QByteArray &data, DataValidation validation = Validate); + QByteArray toBinaryData() const; + + static QJsonDocument fromVariant(const QVariant &variant); + QVariant toVariant() const; + + enum JsonFormat { + Indented, + Compact + }; + + static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = Q_NULLPTR); + +#ifdef Q_QDOC + QByteArray toJson(JsonFormat format = Indented) const; +#elif !defined(QT_JSON_READONLY) + QByteArray toJson() const; //### Merge in Qt6 + QByteArray toJson(JsonFormat format) const; +#endif + + bool isEmpty() const; + bool isArray() const; + bool isObject() const; + + QJsonObject object() const; + QJsonArray array() const; + + void setObject(const QJsonObject &object); + void setArray(const QJsonArray &array); + + bool operator==(const QJsonDocument &other) const; + bool operator!=(const QJsonDocument &other) const { return !(*this == other); } + + bool isNull() const; + +private: + friend class QJsonValue; + friend class QJsonPrivate::Data; + friend class QJsonPrivate::Parser; + friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonDocument &); + + QJsonDocument(QJsonPrivate::Data *data); + + QJsonPrivate::Data *d; +}; + +#if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_JSON_READONLY) +Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonDocument &); +#endif + +QT_END_NAMESPACE + +#endif // QJSONDOCUMENT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qjsonobject.h b/qrenderdoc/3rdparty/qt/include/QtCore/qjsonobject.h new file mode 100644 index 000000000..e238c84d9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qjsonobject.h @@ -0,0 +1,250 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QJSONOBJECT_H +#define QJSONOBJECT_H + +#include +#include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#include +#endif + +QT_BEGIN_NAMESPACE + +class QDebug; +template class QMap; +typedef QMap QVariantMap; +template class QHash; +typedef QHash QVariantHash; + +class Q_CORE_EXPORT QJsonObject +{ +public: + QJsonObject(); + +#if defined(Q_COMPILER_INITIALIZER_LISTS) || defined(Q_QDOC) + QJsonObject(std::initializer_list > args) + { + initialize(); + for (std::initializer_list >::const_iterator i = args.begin(); i != args.end(); ++i) + insert(i->first, i->second); + } +#endif + + ~QJsonObject(); + + QJsonObject(const QJsonObject &other); + QJsonObject &operator =(const QJsonObject &other); + + static QJsonObject fromVariantMap(const QVariantMap &map); + QVariantMap toVariantMap() const; + static QJsonObject fromVariantHash(const QVariantHash &map); + QVariantHash toVariantHash() const; + + QStringList keys() const; + int size() const; + inline int count() const { return size(); } + inline int length() const { return size(); } + bool isEmpty() const; + + QJsonValue value(const QString &key) const; + QJsonValue value(QLatin1String key) const; + QJsonValue operator[] (const QString &key) const; + QJsonValue operator[] (QLatin1String key) const { return value(key); } + QJsonValueRef operator[] (const QString &key); + QJsonValueRef operator[] (QLatin1String key); + + void remove(const QString &key); + QJsonValue take(const QString &key); + bool contains(const QString &key) const; + bool contains(QLatin1String key) const; + + bool operator==(const QJsonObject &other) const; + bool operator!=(const QJsonObject &other) const; + + class const_iterator; + + class iterator + { + friend class const_iterator; + friend class QJsonObject; + QJsonObject *o; + int i; + + public: + typedef std::random_access_iterator_tag iterator_category; + typedef int difference_type; + typedef QJsonValue value_type; + typedef QJsonValueRef reference; + typedef QJsonValuePtr pointer; + + Q_DECL_CONSTEXPR inline iterator() : o(Q_NULLPTR), i(0) {} + Q_DECL_CONSTEXPR inline iterator(QJsonObject *obj, int index) : o(obj), i(index) {} + + inline QString key() const { return o->keyAt(i); } + inline QJsonValueRef value() const { return QJsonValueRef(o, i); } + inline QJsonValueRef operator*() const { return QJsonValueRef(o, i); } +#ifdef Q_QDOC + inline QJsonValueRef* operator->() const; +#else + inline QJsonValueRefPtr operator->() const { return QJsonValueRefPtr(o, i); } +#endif + inline bool operator==(const iterator &other) const { return i == other.i; } + inline bool operator!=(const iterator &other) const { return i != other.i; } + + inline iterator &operator++() { ++i; return *this; } + inline iterator operator++(int) { iterator r = *this; ++i; return r; } + inline iterator &operator--() { --i; return *this; } + inline iterator operator--(int) { iterator r = *this; --i; return r; } + inline iterator operator+(int j) const + { iterator r = *this; r.i += j; return r; } + inline iterator operator-(int j) const { return operator+(-j); } + inline iterator &operator+=(int j) { i += j; return *this; } + inline iterator &operator-=(int j) { i -= j; return *this; } + + public: + inline bool operator==(const const_iterator &other) const { return i == other.i; } + inline bool operator!=(const const_iterator &other) const { return i != other.i; } + }; + friend class iterator; + + class const_iterator + { + friend class iterator; + const QJsonObject *o; + int i; + + public: + typedef std::random_access_iterator_tag iterator_category; + typedef int difference_type; + typedef QJsonValue value_type; + typedef QJsonValue reference; + typedef QJsonValuePtr pointer; + + Q_DECL_CONSTEXPR inline const_iterator() : o(Q_NULLPTR), i(0) {} + Q_DECL_CONSTEXPR inline const_iterator(const QJsonObject *obj, int index) + : o(obj), i(index) {} + inline const_iterator(const iterator &other) + : o(other.o), i(other.i) {} + + inline QString key() const { return o->keyAt(i); } + inline QJsonValue value() const { return o->valueAt(i); } + inline QJsonValue operator*() const { return o->valueAt(i); } +#ifdef Q_QDOC + inline QJsonValue* operator->() const; +#else + inline QJsonValuePtr operator->() const { return QJsonValuePtr(o->valueAt(i)); } +#endif + inline bool operator==(const const_iterator &other) const { return i == other.i; } + inline bool operator!=(const const_iterator &other) const { return i != other.i; } + + inline const_iterator &operator++() { ++i; return *this; } + inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; } + inline const_iterator &operator--() { --i; return *this; } + inline const_iterator operator--(int) { const_iterator r = *this; --i; return r; } + inline const_iterator operator+(int j) const + { const_iterator r = *this; r.i += j; return r; } + inline const_iterator operator-(int j) const { return operator+(-j); } + inline const_iterator &operator+=(int j) { i += j; return *this; } + inline const_iterator &operator-=(int j) { i -= j; return *this; } + + inline bool operator==(const iterator &other) const { return i == other.i; } + inline bool operator!=(const iterator &other) const { return i != other.i; } + }; + friend class const_iterator; + + // STL style + inline iterator begin() { detach2(); return iterator(this, 0); } + inline const_iterator begin() const { return const_iterator(this, 0); } + inline const_iterator constBegin() const { return const_iterator(this, 0); } + inline iterator end() { detach2(); return iterator(this, size()); } + inline const_iterator end() const { return const_iterator(this, size()); } + inline const_iterator constEnd() const { return const_iterator(this, size()); } + iterator erase(iterator it); + + // more Qt + typedef iterator Iterator; + typedef const_iterator ConstIterator; + iterator find(const QString &key); + iterator find(QLatin1String key); + const_iterator find(const QString &key) const { return constFind(key); } + const_iterator find(QLatin1String key) const { return constFind(key); } + const_iterator constFind(const QString &key) const; + const_iterator constFind(QLatin1String key) const; + iterator insert(const QString &key, const QJsonValue &value); + + // STL compatibility + typedef QJsonValue mapped_type; + typedef QString key_type; + typedef int size_type; + + inline bool empty() const { return isEmpty(); } + +private: + friend class QJsonPrivate::Data; + friend class QJsonValue; + friend class QJsonDocument; + friend class QJsonValueRef; + + friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonObject &); + + QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object); + void initialize(); + // ### Qt 6: remove me and merge with detach2 + void detach(uint reserve = 0); + bool detach2(uint reserve = 0); + void compact(); + + QString keyAt(int i) const; + QJsonValue valueAt(int i) const; + void setValueAt(int i, const QJsonValue &val); + + QJsonPrivate::Data *d; + QJsonPrivate::Object *o; +}; + +#if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_JSON_READONLY) +Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonObject &); +#endif + +QT_END_NAMESPACE + +#endif // QJSONOBJECT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qjsonvalue.h b/qrenderdoc/3rdparty/qt/include/QtCore/qjsonvalue.h new file mode 100644 index 000000000..a853acadd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qjsonvalue.h @@ -0,0 +1,226 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QJSONVALUE_H +#define QJSONVALUE_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QDebug; +class QVariant; +class QJsonArray; +class QJsonObject; + +namespace QJsonPrivate { + class Data; + class Base; + class Object; + class Header; + class Array; + class Value; + class Entry; +} + +class Q_CORE_EXPORT QJsonValue +{ +public: + enum Type { + Null = 0x0, + Bool = 0x1, + Double = 0x2, + String = 0x3, + Array = 0x4, + Object = 0x5, + Undefined = 0x80 + }; + + QJsonValue(Type = Null); + QJsonValue(bool b); + QJsonValue(double n); + QJsonValue(int n); + QJsonValue(qint64 n); + QJsonValue(const QString &s); + QJsonValue(QLatin1String s); +#ifndef QT_NO_CAST_FROM_ASCII + inline QT_ASCII_CAST_WARN QJsonValue(const char *s) + : d(Q_NULLPTR), t(String) { stringDataFromQStringHelper(QString::fromUtf8(s)); } +#endif + QJsonValue(const QJsonArray &a); + QJsonValue(const QJsonObject &o); + + ~QJsonValue(); + + QJsonValue(const QJsonValue &other); + QJsonValue &operator =(const QJsonValue &other); + + static QJsonValue fromVariant(const QVariant &variant); + QVariant toVariant() const; + + Type type() const; + inline bool isNull() const { return type() == Null; } + inline bool isBool() const { return type() == Bool; } + inline bool isDouble() const { return type() == Double; } + inline bool isString() const { return type() == String; } + inline bool isArray() const { return type() == Array; } + inline bool isObject() const { return type() == Object; } + inline bool isUndefined() const { return type() == Undefined; } + + bool toBool(bool defaultValue = false) const; + int toInt(int defaultValue = 0) const; + double toDouble(double defaultValue = 0) const; + QString toString() const; + QString toString(const QString &defaultValue) const; + QJsonArray toArray() const; + QJsonArray toArray(const QJsonArray &defaultValue) const; + QJsonObject toObject() const; + QJsonObject toObject(const QJsonObject &defaultValue) const; + + bool operator==(const QJsonValue &other) const; + bool operator!=(const QJsonValue &other) const; + +private: + // avoid implicit conversions from char * to bool + inline QJsonValue(const void *) {} + friend class QJsonPrivate::Value; + friend class QJsonArray; + friend class QJsonObject; + friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonValue &); + + QJsonValue(QJsonPrivate::Data *d, QJsonPrivate::Base *b, const QJsonPrivate::Value& v); + void stringDataFromQStringHelper(const QString &string); + + void detach(); + + union { + quint64 ui; + bool b; + double dbl; + QStringData *stringData; + QJsonPrivate::Base *base; + }; + QJsonPrivate::Data *d; // needed for Objects and Arrays + Type t; +}; + +class Q_CORE_EXPORT QJsonValueRef +{ +public: + QJsonValueRef(QJsonArray *array, int idx) + : a(array), is_object(false), index(idx) {} + QJsonValueRef(QJsonObject *object, int idx) + : o(object), is_object(true), index(idx) {} + + inline operator QJsonValue() const { return toValue(); } + QJsonValueRef &operator = (const QJsonValue &val); + QJsonValueRef &operator = (const QJsonValueRef &val); + + QVariant toVariant() const; + inline QJsonValue::Type type() const { return toValue().type(); } + inline bool isNull() const { return type() == QJsonValue::Null; } + inline bool isBool() const { return type() == QJsonValue::Bool; } + inline bool isDouble() const { return type() == QJsonValue::Double; } + inline bool isString() const { return type() == QJsonValue::String; } + inline bool isArray() const { return type() == QJsonValue::Array; } + inline bool isObject() const { return type() == QJsonValue::Object; } + inline bool isUndefined() const { return type() == QJsonValue::Undefined; } + + inline bool toBool() const { return toValue().toBool(); } + inline int toInt() const { return toValue().toInt(); } + inline double toDouble() const { return toValue().toDouble(); } + inline QString toString() const { return toValue().toString(); } + QJsonArray toArray() const; + QJsonObject toObject() const; + + // ### Qt 6: Add default values + inline bool toBool(bool defaultValue) const { return toValue().toBool(defaultValue); } + inline int toInt(int defaultValue) const { return toValue().toInt(defaultValue); } + inline double toDouble(double defaultValue) const { return toValue().toDouble(defaultValue); } + inline QString toString(const QString &defaultValue) const { return toValue().toString(defaultValue); } + + inline bool operator==(const QJsonValue &other) const { return toValue() == other; } + inline bool operator!=(const QJsonValue &other) const { return toValue() != other; } + +private: + QJsonValue toValue() const; + + union { + QJsonArray *a; + QJsonObject *o; + }; + uint is_object : 1; + uint index : 31; +}; + +#ifndef Q_QDOC +// ### Qt 6: Get rid of these fake pointer classes +class QJsonValuePtr +{ + QJsonValue value; +public: + explicit QJsonValuePtr(const QJsonValue& val) + : value(val) {} + + QJsonValue& operator*() { return value; } + QJsonValue* operator->() { return &value; } +}; + +class QJsonValueRefPtr +{ + QJsonValueRef valueRef; +public: + QJsonValueRefPtr(QJsonArray *array, int idx) + : valueRef(array, idx) {} + QJsonValueRefPtr(QJsonObject *object, int idx) + : valueRef(object, idx) {} + + QJsonValueRef& operator*() { return valueRef; } + QJsonValueRef* operator->() { return &valueRef; } +}; +#endif + +#if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_JSON_READONLY) +Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonValue &); +#endif + +QT_END_NAMESPACE + +#endif // QJSONVALUE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qlibrary.h b/qrenderdoc/3rdparty/qt/include/QtCore/qlibrary.h new file mode 100644 index 000000000..89be52aac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qlibrary.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLIBRARY_H +#define QLIBRARY_H + +#include + +QT_REQUIRE_CONFIG(library); + +QT_BEGIN_NAMESPACE + +class QLibraryPrivate; + +class Q_CORE_EXPORT QLibrary : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString fileName READ fileName WRITE setFileName) + Q_PROPERTY(LoadHints loadHints READ loadHints WRITE setLoadHints) +public: + enum LoadHint { + ResolveAllSymbolsHint = 0x01, + ExportExternalSymbolsHint = 0x02, + LoadArchiveMemberHint = 0x04, + PreventUnloadHint = 0x08, + DeepBindHint = 0x10 + }; + Q_DECLARE_FLAGS(LoadHints, LoadHint) + Q_FLAG(LoadHint) + Q_FLAG(LoadHints) + + explicit QLibrary(QObject *parent = Q_NULLPTR); + explicit QLibrary(const QString& fileName, QObject *parent = Q_NULLPTR); + explicit QLibrary(const QString& fileName, int verNum, QObject *parent = Q_NULLPTR); + explicit QLibrary(const QString& fileName, const QString &version, QObject *parent = Q_NULLPTR); + ~QLibrary(); + + QFunctionPointer resolve(const char *symbol); + static QFunctionPointer resolve(const QString &fileName, const char *symbol); + static QFunctionPointer resolve(const QString &fileName, int verNum, const char *symbol); + static QFunctionPointer resolve(const QString &fileName, const QString &version, const char *symbol); + + bool load(); + bool unload(); + bool isLoaded() const; + + static bool isLibrary(const QString &fileName); + + void setFileName(const QString &fileName); + QString fileName() const; + + void setFileNameAndVersion(const QString &fileName, int verNum); + void setFileNameAndVersion(const QString &fileName, const QString &version); + QString errorString() const; + + void setLoadHints(LoadHints hints); + LoadHints loadHints() const; +private: + QLibraryPrivate *d; + bool did_load; + Q_DISABLE_COPY(QLibrary) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QLibrary::LoadHints) + +QT_END_NAMESPACE + +#endif //QLIBRARY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qlibraryinfo.h b/qrenderdoc/3rdparty/qt/include/QtCore/qlibraryinfo.h new file mode 100644 index 000000000..809813d99 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qlibraryinfo.h @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLIBRARYINFO_H +#define QLIBRARYINFO_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QStringList; + +class Q_CORE_EXPORT QLibraryInfo +{ +public: +#if QT_DEPRECATED_SINCE(5, 8) + static QT_DEPRECATED QString licensee(); + static QT_DEPRECATED QString licensedProducts(); +#endif + +#ifndef QT_NO_DATESTRING +#if QT_DEPRECATED_SINCE(5, 5) + static QT_DEPRECATED QDate buildDate(); +#endif // QT_DEPRECATED_SINCE(5, 5) +#endif //QT_NO_DATESTRING + + static const char * build() Q_DECL_NOTHROW; + + static bool isDebugBuild(); + +#ifndef QT_BOOTSTRAPPED + static QVersionNumber version() Q_DECL_NOTHROW Q_DECL_CONST_FUNCTION; +#endif + + enum LibraryLocation + { + PrefixPath = 0, + DocumentationPath, + HeadersPath, + LibrariesPath, + LibraryExecutablesPath, + BinariesPath, + PluginsPath, + ImportsPath, + Qml2ImportsPath, + ArchDataPath, + DataPath, + TranslationsPath, + ExamplesPath, + TestsPath, + // Insert new values above this line + // Please read the comments in qlibraryinfo.cpp before adding +#ifdef QT_BUILD_QMAKE + // These are not subject to binary compatibility constraints + SysrootPath, + SysrootifyPrefixPath, + HostBinariesPath, + HostLibrariesPath, + HostDataPath, + TargetSpecPath, + HostSpecPath, + HostPrefixPath, + LastHostPath = HostPrefixPath, +#endif + SettingsPath = 100 + }; + static QString location(LibraryLocation); // ### Qt 6: consider renaming it to path() +#ifdef QT_BUILD_QMAKE + enum PathGroup { FinalPaths, EffectivePaths, EffectiveSourcePaths, DevicePaths }; + static QString rawLocation(LibraryLocation, PathGroup); + static void reload(); +#endif + + static QStringList platformPluginArguments(const QString &platformName); + +private: + QLibraryInfo(); +}; + +QT_END_NAMESPACE + +#endif // QLIBRARYINFO_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qline.h b/qrenderdoc/3rdparty/qt/include/QtCore/qline.h new file mode 100644 index 000000000..6361c1af9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qline.h @@ -0,0 +1,434 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLINE_H +#define QLINE_H + +#include + +QT_BEGIN_NAMESPACE + + +/******************************************************************************* + * class QLine + *******************************************************************************/ + +class Q_CORE_EXPORT QLine +{ +public: + Q_DECL_CONSTEXPR inline QLine(); + Q_DECL_CONSTEXPR inline QLine(const QPoint &pt1, const QPoint &pt2); + Q_DECL_CONSTEXPR inline QLine(int x1, int y1, int x2, int y2); + + Q_DECL_CONSTEXPR inline bool isNull() const; + + Q_DECL_CONSTEXPR inline QPoint p1() const; + Q_DECL_CONSTEXPR inline QPoint p2() const; + + Q_DECL_CONSTEXPR inline int x1() const; + Q_DECL_CONSTEXPR inline int y1() const; + + Q_DECL_CONSTEXPR inline int x2() const; + Q_DECL_CONSTEXPR inline int y2() const; + + Q_DECL_CONSTEXPR inline int dx() const; + Q_DECL_CONSTEXPR inline int dy() const; + + inline void translate(const QPoint &p); + inline void translate(int dx, int dy); + + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QLine translated(const QPoint &p) const; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QLine translated(int dx, int dy) const; + + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QPoint center() const; + + inline void setP1(const QPoint &p1); + inline void setP2(const QPoint &p2); + inline void setPoints(const QPoint &p1, const QPoint &p2); + inline void setLine(int x1, int y1, int x2, int y2); + + Q_DECL_CONSTEXPR inline bool operator==(const QLine &d) const; + Q_DECL_CONSTEXPR inline bool operator!=(const QLine &d) const { return !(*this == d); } + +private: + QPoint pt1, pt2; +}; +Q_DECLARE_TYPEINFO(QLine, Q_MOVABLE_TYPE); + +/******************************************************************************* + * class QLine inline members + *******************************************************************************/ + +Q_DECL_CONSTEXPR inline QLine::QLine() { } + +Q_DECL_CONSTEXPR inline QLine::QLine(const QPoint &pt1_, const QPoint &pt2_) : pt1(pt1_), pt2(pt2_) { } + +Q_DECL_CONSTEXPR inline QLine::QLine(int x1pos, int y1pos, int x2pos, int y2pos) : pt1(QPoint(x1pos, y1pos)), pt2(QPoint(x2pos, y2pos)) { } + +Q_DECL_CONSTEXPR inline bool QLine::isNull() const +{ + return pt1 == pt2; +} + +Q_DECL_CONSTEXPR inline int QLine::x1() const +{ + return pt1.x(); +} + +Q_DECL_CONSTEXPR inline int QLine::y1() const +{ + return pt1.y(); +} + +Q_DECL_CONSTEXPR inline int QLine::x2() const +{ + return pt2.x(); +} + +Q_DECL_CONSTEXPR inline int QLine::y2() const +{ + return pt2.y(); +} + +Q_DECL_CONSTEXPR inline QPoint QLine::p1() const +{ + return pt1; +} + +Q_DECL_CONSTEXPR inline QPoint QLine::p2() const +{ + return pt2; +} + +Q_DECL_CONSTEXPR inline int QLine::dx() const +{ + return pt2.x() - pt1.x(); +} + +Q_DECL_CONSTEXPR inline int QLine::dy() const +{ + return pt2.y() - pt1.y(); +} + +inline void QLine::translate(const QPoint &point) +{ + pt1 += point; + pt2 += point; +} + +inline void QLine::translate(int adx, int ady) +{ + this->translate(QPoint(adx, ady)); +} + +Q_DECL_CONSTEXPR inline QLine QLine::translated(const QPoint &p) const +{ + return QLine(pt1 + p, pt2 + p); +} + +Q_DECL_CONSTEXPR inline QLine QLine::translated(int adx, int ady) const +{ + return translated(QPoint(adx, ady)); +} + +Q_DECL_CONSTEXPR inline QPoint QLine::center() const +{ + return QPoint(int((qint64(pt1.x()) + pt2.x()) / 2), int((qint64(pt1.y()) + pt2.y()) / 2)); +} + +inline void QLine::setP1(const QPoint &aP1) +{ + pt1 = aP1; +} + +inline void QLine::setP2(const QPoint &aP2) +{ + pt2 = aP2; +} + +inline void QLine::setPoints(const QPoint &aP1, const QPoint &aP2) +{ + pt1 = aP1; + pt2 = aP2; +} + +inline void QLine::setLine(int aX1, int aY1, int aX2, int aY2) +{ + pt1 = QPoint(aX1, aY1); + pt2 = QPoint(aX2, aY2); +} + +Q_DECL_CONSTEXPR inline bool QLine::operator==(const QLine &d) const +{ + return pt1 == d.pt1 && pt2 == d.pt2; +} + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug d, const QLine &p); +#endif + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QLine &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QLine &); +#endif + +/******************************************************************************* + * class QLineF + *******************************************************************************/ +class Q_CORE_EXPORT QLineF { +public: + + enum IntersectType { NoIntersection, BoundedIntersection, UnboundedIntersection }; + + Q_DECL_CONSTEXPR inline QLineF(); + Q_DECL_CONSTEXPR inline QLineF(const QPointF &pt1, const QPointF &pt2); + Q_DECL_CONSTEXPR inline QLineF(qreal x1, qreal y1, qreal x2, qreal y2); + Q_DECL_CONSTEXPR inline QLineF(const QLine &line) : pt1(line.p1()), pt2(line.p2()) { } + + Q_REQUIRED_RESULT static QLineF fromPolar(qreal length, qreal angle); + + Q_DECL_CONSTEXPR bool isNull() const; + + Q_DECL_CONSTEXPR inline QPointF p1() const; + Q_DECL_CONSTEXPR inline QPointF p2() const; + + Q_DECL_CONSTEXPR inline qreal x1() const; + Q_DECL_CONSTEXPR inline qreal y1() const; + + Q_DECL_CONSTEXPR inline qreal x2() const; + Q_DECL_CONSTEXPR inline qreal y2() const; + + Q_DECL_CONSTEXPR inline qreal dx() const; + Q_DECL_CONSTEXPR inline qreal dy() const; + + qreal length() const; + void setLength(qreal len); + + qreal angle() const; + void setAngle(qreal angle); + + qreal angleTo(const QLineF &l) const; + + Q_REQUIRED_RESULT QLineF unitVector() const; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QLineF normalVector() const; + + // ### Qt 6: rename intersects() or intersection() and rename IntersectType IntersectionType + IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const; + + qreal angle(const QLineF &l) const; + + Q_DECL_CONSTEXPR inline QPointF pointAt(qreal t) const; + inline void translate(const QPointF &p); + inline void translate(qreal dx, qreal dy); + + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QLineF translated(const QPointF &p) const; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QLineF translated(qreal dx, qreal dy) const; + + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QPointF center() const; + + inline void setP1(const QPointF &p1); + inline void setP2(const QPointF &p2); + inline void setPoints(const QPointF &p1, const QPointF &p2); + inline void setLine(qreal x1, qreal y1, qreal x2, qreal y2); + + Q_DECL_CONSTEXPR inline bool operator==(const QLineF &d) const; + Q_DECL_CONSTEXPR inline bool operator!=(const QLineF &d) const { return !(*this == d); } + + Q_DECL_CONSTEXPR QLine toLine() const; + +private: + QPointF pt1, pt2; +}; +Q_DECLARE_TYPEINFO(QLineF, Q_MOVABLE_TYPE); + +/******************************************************************************* + * class QLineF inline members + *******************************************************************************/ + +Q_DECL_CONSTEXPR inline QLineF::QLineF() +{ +} + +Q_DECL_CONSTEXPR inline QLineF::QLineF(const QPointF &apt1, const QPointF &apt2) + : pt1(apt1), pt2(apt2) +{ +} + +Q_DECL_CONSTEXPR inline QLineF::QLineF(qreal x1pos, qreal y1pos, qreal x2pos, qreal y2pos) + : pt1(x1pos, y1pos), pt2(x2pos, y2pos) +{ +} + +Q_DECL_CONSTEXPR inline qreal QLineF::x1() const +{ + return pt1.x(); +} + +Q_DECL_CONSTEXPR inline qreal QLineF::y1() const +{ + return pt1.y(); +} + +Q_DECL_CONSTEXPR inline qreal QLineF::x2() const +{ + return pt2.x(); +} + +Q_DECL_CONSTEXPR inline qreal QLineF::y2() const +{ + return pt2.y(); +} + +Q_DECL_CONSTEXPR inline bool QLineF::isNull() const +{ + return qFuzzyCompare(pt1.x(), pt2.x()) && qFuzzyCompare(pt1.y(), pt2.y()); +} + +Q_DECL_CONSTEXPR inline QPointF QLineF::p1() const +{ + return pt1; +} + +Q_DECL_CONSTEXPR inline QPointF QLineF::p2() const +{ + return pt2; +} + +Q_DECL_CONSTEXPR inline qreal QLineF::dx() const +{ + return pt2.x() - pt1.x(); +} + +Q_DECL_CONSTEXPR inline qreal QLineF::dy() const +{ + return pt2.y() - pt1.y(); +} + +Q_DECL_CONSTEXPR inline QLineF QLineF::normalVector() const +{ + return QLineF(p1(), p1() + QPointF(dy(), -dx())); +} + +inline void QLineF::translate(const QPointF &point) +{ + pt1 += point; + pt2 += point; +} + +inline void QLineF::translate(qreal adx, qreal ady) +{ + this->translate(QPointF(adx, ady)); +} + +Q_DECL_CONSTEXPR inline QLineF QLineF::translated(const QPointF &p) const +{ + return QLineF(pt1 + p, pt2 + p); +} + +Q_DECL_CONSTEXPR inline QLineF QLineF::translated(qreal adx, qreal ady) const +{ + return translated(QPointF(adx, ady)); +} + +Q_DECL_CONSTEXPR inline QPointF QLineF::center() const +{ + return QPointF(0.5 * pt1.x() + 0.5 * pt2.x(), 0.5 * pt1.y() + 0.5 * pt2.y()); +} + +inline void QLineF::setLength(qreal len) +{ + if (isNull()) + return; + QLineF v = unitVector(); + pt2 = QPointF(pt1.x() + v.dx() * len, pt1.y() + v.dy() * len); +} + +Q_DECL_CONSTEXPR inline QPointF QLineF::pointAt(qreal t) const +{ + return QPointF(pt1.x() + (pt2.x() - pt1.x()) * t, pt1.y() + (pt2.y() - pt1.y()) * t); +} + +Q_DECL_CONSTEXPR inline QLine QLineF::toLine() const +{ + return QLine(pt1.toPoint(), pt2.toPoint()); +} + + +inline void QLineF::setP1(const QPointF &aP1) +{ + pt1 = aP1; +} + +inline void QLineF::setP2(const QPointF &aP2) +{ + pt2 = aP2; +} + +inline void QLineF::setPoints(const QPointF &aP1, const QPointF &aP2) +{ + pt1 = aP1; + pt2 = aP2; +} + +inline void QLineF::setLine(qreal aX1, qreal aY1, qreal aX2, qreal aY2) +{ + pt1 = QPointF(aX1, aY1); + pt2 = QPointF(aX2, aY2); +} + + +Q_DECL_CONSTEXPR inline bool QLineF::operator==(const QLineF &d) const +{ + return pt1 == d.pt1 && pt2 == d.pt2; +} + + + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug d, const QLineF &p); +#endif + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QLineF &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QLineF &); +#endif + +QT_END_NAMESPACE + +#endif // QLINE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qlinkedlist.h b/qrenderdoc/3rdparty/qt/include/QtCore/qlinkedlist.h new file mode 100644 index 000000000..249f76daf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qlinkedlist.h @@ -0,0 +1,568 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLINKEDLIST_H +#define QLINKEDLIST_H + +#include +#include + +#include +#include + +#include + +#if defined(Q_COMPILER_INITIALIZER_LISTS) +# include +#endif + +QT_BEGIN_NAMESPACE + + +struct Q_CORE_EXPORT QLinkedListData +{ + QLinkedListData *n, *p; + QtPrivate::RefCount ref; + int size; + uint sharable : 1; + + static const QLinkedListData shared_null; +}; + +template +struct QLinkedListNode +{ + inline QLinkedListNode(const T &arg): t(arg) { } + QLinkedListNode *n, *p; + T t; +}; + +template +class QLinkedList +{ + typedef QLinkedListNode Node; + union { QLinkedListData *d; QLinkedListNode *e; }; + +public: + inline QLinkedList() Q_DECL_NOTHROW : d(const_cast(&QLinkedListData::shared_null)) { } + inline QLinkedList(const QLinkedList &l) : d(l.d) { d->ref.ref(); if (!d->sharable) detach(); } +#if defined(Q_COMPILER_INITIALIZER_LISTS) + inline QLinkedList(std::initializer_list list) + : d(const_cast(&QLinkedListData::shared_null)) + { + std::copy(list.begin(), list.end(), std::back_inserter(*this)); + } +#endif + ~QLinkedList(); + QLinkedList &operator=(const QLinkedList &); +#ifdef Q_COMPILER_RVALUE_REFS + QLinkedList(QLinkedList &&other) Q_DECL_NOTHROW + : d(other.d) { other.d = const_cast(&QLinkedListData::shared_null); } + QLinkedList &operator=(QLinkedList &&other) Q_DECL_NOTHROW + { QLinkedList moved(std::move(other)); swap(moved); return *this; } +#endif + inline void swap(QLinkedList &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + bool operator==(const QLinkedList &l) const; + inline bool operator!=(const QLinkedList &l) const { return !(*this == l); } + + inline int size() const { return d->size; } + inline void detach() + { if (d->ref.isShared()) detach_helper2(this->e); } + inline bool isDetached() const { return !d->ref.isShared(); } +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + inline void setSharable(bool sharable) { if (!sharable) detach(); if (d != &QLinkedListData::shared_null) d->sharable = sharable; } +#endif + inline bool isSharedWith(const QLinkedList &other) const { return d == other.d; } + + inline bool isEmpty() const { return d->size == 0; } + + void clear(); + + void append(const T &); + void prepend(const T &); + T takeFirst(); + T takeLast(); + int removeAll(const T &t); + bool removeOne(const T &t); + bool contains(const T &t) const; + int count(const T &t) const; + + class const_iterator; + + class iterator + { + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef T *pointer; + typedef T &reference; + Node *i; + inline iterator() : i(Q_NULLPTR) {} + inline iterator(Node *n) : i(n) {} +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + iterator(const iterator &other) Q_DECL_NOTHROW : i(other.i) {} + iterator &operator=(const iterator &other) Q_DECL_NOTHROW { i = other.i; return *this; } + iterator(iterator &&other) Q_DECL_NOTHROW : i(other.i) {} + iterator &operator=(iterator &&other) Q_DECL_NOTHROW { return *this = other; } +#endif + inline T &operator*() const { return i->t; } + inline T *operator->() const { return &i->t; } + inline bool operator==(const iterator &o) const { return i == o.i; } + inline bool operator!=(const iterator &o) const { return i != o.i; } + inline bool operator==(const const_iterator &o) const + { return i == o.i; } + inline bool operator!=(const const_iterator &o) const + { return i != o.i; } + inline iterator &operator++() { i = i->n; return *this; } + inline iterator operator++(int) { Node *n = i; i = i->n; return n; } + inline iterator &operator--() { i = i->p; return *this; } + inline iterator operator--(int) { Node *n = i; i = i->p; return n; } + inline iterator operator+(int j) const + { Node *n = i; if (j > 0) while (j--) n = n->n; else while (j++) n = n->p; return n; } + inline iterator operator-(int j) const { return operator+(-j); } + inline iterator &operator+=(int j) { return *this = *this + j; } + inline iterator &operator-=(int j) { return *this = *this - j; } + }; + friend class iterator; + + class const_iterator + { + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + Node *i; + inline const_iterator() : i(Q_NULLPTR) {} + inline const_iterator(Node *n) : i(n) {} + inline const_iterator(iterator ci) : i(ci.i){} +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + const_iterator(const const_iterator &other) Q_DECL_NOTHROW : i(other.i) {} + const_iterator &operator=(const const_iterator &other) Q_DECL_NOTHROW { i = other.i; return *this; } + const_iterator(const_iterator &&other) Q_DECL_NOTHROW : i(other.i) {} + const_iterator &operator=(const_iterator &&other) Q_DECL_NOTHROW { return *this = other; } +#endif + inline const T &operator*() const { return i->t; } + inline const T *operator->() const { return &i->t; } + inline bool operator==(const const_iterator &o) const { return i == o.i; } + inline bool operator!=(const const_iterator &o) const { return i != o.i; } + inline const_iterator &operator++() { i = i->n; return *this; } + inline const_iterator operator++(int) { Node *n = i; i = i->n; return n; } + inline const_iterator &operator--() { i = i->p; return *this; } + inline const_iterator operator--(int) { Node *n = i; i = i->p; return n; } + inline const_iterator operator+(int j) const + { Node *n = i; if (j > 0) while (j--) n = n->n; else while (j++) n = n->p; return n; } + inline const_iterator operator-(int j) const { return operator+(-j); } + inline const_iterator &operator+=(int j) { return *this = *this + j; } + inline const_iterator &operator-=(int j) { return *this = *this - j; } + }; + friend class const_iterator; + + // stl style + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + inline iterator begin() { detach(); return e->n; } + inline const_iterator begin() const Q_DECL_NOTHROW { return e->n; } + inline const_iterator cbegin() const Q_DECL_NOTHROW { return e->n; } + inline const_iterator constBegin() const Q_DECL_NOTHROW { return e->n; } + inline iterator end() { detach(); return e; } + inline const_iterator end() const Q_DECL_NOTHROW { return e; } + inline const_iterator cend() const Q_DECL_NOTHROW { return e; } + inline const_iterator constEnd() const Q_DECL_NOTHROW { return e; } + + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const Q_DECL_NOTHROW { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const Q_DECL_NOTHROW { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const Q_DECL_NOTHROW { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const Q_DECL_NOTHROW { return const_reverse_iterator(begin()); } + + iterator insert(iterator before, const T &t); + iterator erase(iterator pos); + iterator erase(iterator first, iterator last); + + // more Qt + typedef iterator Iterator; + typedef const_iterator ConstIterator; + inline int count() const { return d->size; } + inline T& first() { Q_ASSERT(!isEmpty()); return *begin(); } + inline const T& first() const { Q_ASSERT(!isEmpty()); return *begin(); } + T& last() { Q_ASSERT(!isEmpty()); return *(--end()); } + const T& last() const { Q_ASSERT(!isEmpty()); return *(--end()); } + inline void removeFirst() { Q_ASSERT(!isEmpty()); erase(begin()); } + inline void removeLast() { Q_ASSERT(!isEmpty()); erase(--end()); } + inline bool startsWith(const T &t) const { return !isEmpty() && first() == t; } + inline bool endsWith(const T &t) const { return !isEmpty() && last() == t; } + + // stl compatibility + inline void push_back(const T &t) { append(t); } + inline void push_front(const T &t) { prepend(t); } + inline T& front() { return first(); } + inline const T& front() const { return first(); } + inline T& back() { return last(); } + inline const T& back() const { return last(); } + inline void pop_front() { removeFirst(); } + inline void pop_back() { removeLast(); } + inline bool empty() const { return isEmpty(); } + typedef int size_type; + typedef T value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef value_type &reference; + typedef const value_type &const_reference; + typedef qptrdiff difference_type; + + static inline QLinkedList fromStdList(const std::list &list) + { QLinkedList tmp; std::copy(list.begin(), list.end(), std::back_inserter(tmp)); return tmp; } + inline std::list toStdList() const + { std::list tmp; std::copy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; } + + // comfort + QLinkedList &operator+=(const QLinkedList &l); + QLinkedList operator+(const QLinkedList &l) const; + inline QLinkedList &operator+=(const T &t) { append(t); return *this; } + inline QLinkedList &operator<< (const T &t) { append(t); return *this; } + inline QLinkedList &operator<<(const QLinkedList &l) { *this += l; return *this; } + +private: + void detach_helper(); + iterator detach_helper2(iterator); + void freeData(QLinkedListData*); +}; + +template +inline QLinkedList::~QLinkedList() +{ + if (!d->ref.deref()) + freeData(d); +} + +template +void QLinkedList::detach_helper() +{ + detach_helper2(this->e); +} + +template +typename QLinkedList::iterator QLinkedList::detach_helper2(iterator orgite) +{ + // detach and convert orgite to an iterator in the detached instance + bool isEndIterator = (orgite.i == this->e); + union { QLinkedListData *d; Node *e; } x; + x.d = new QLinkedListData; + x.d->ref.initializeOwned(); + x.d->size = d->size; + x.d->sharable = true; + Node *original = e->n; + Node *copy = x.e; + Node *org = orgite.i; + + while (original != org) { + QT_TRY { + copy->n = new Node(original->t); + copy->n->p = copy; + original = original->n; + copy = copy->n; + } QT_CATCH(...) { + copy->n = x.e; + Q_ASSERT(!x.d->ref.deref()); // Don't trigger assert in free + freeData(x.d); + QT_RETHROW; + } + } + iterator r(copy); + while (original != e) { + QT_TRY { + copy->n = new Node(original->t); + copy->n->p = copy; + original = original->n; + copy = copy->n; + } QT_CATCH(...) { + copy->n = x.e; + Q_ASSERT(!x.d->ref.deref()); // Don't trigger assert in free + freeData(x.d); + QT_RETHROW; + } + } + copy->n = x.e; + x.e->p = copy; + if (!d->ref.deref()) + freeData(d); + d = x.d; + if (!isEndIterator) + ++r; // since we stored the element right before the original node. + return r; +} + +template +void QLinkedList::freeData(QLinkedListData *x) +{ + Node *y = reinterpret_cast(x); + Node *i = y->n; + Q_ASSERT(x->ref.atomic.load() == 0); + while (i != y) { + Node *n = i; + i = i->n; + delete n; + } + delete x; +} + +template +void QLinkedList::clear() +{ + *this = QLinkedList(); +} + +template +QLinkedList &QLinkedList::operator=(const QLinkedList &l) +{ + if (d != l.d) { + QLinkedListData *o = l.d; + o->ref.ref(); + if (!d->ref.deref()) + freeData(d); + d = o; + if (!d->sharable) + detach_helper(); + } + return *this; +} + +template +bool QLinkedList::operator== (const QLinkedList &l) const +{ + if (d->size != l.d->size) + return false; + if (e == l.e) + return true; + Node *i = e->n; + Node *il = l.e->n; + while (i != e) { + if (! (i->t == il->t)) + return false; + i = i->n; + il = il->n; + } + return true; +} + +template +void QLinkedList::append(const T &t) +{ + detach(); + Node *i = new Node(t); + i->n = e; + i->p = e->p; + i->p->n = i; + e->p = i; + d->size++; +} + +template +void QLinkedList::prepend(const T &t) +{ + detach(); + Node *i = new Node(t); + i->n = e->n; + i->p = e; + i->n->p = i; + e->n = i; + d->size++; +} + +template +int QLinkedList::removeAll(const T &_t) +{ + detach(); + const T t = _t; + Node *i = e->n; + int c = 0; + while (i != e) { + if (i->t == t) { + Node *n = i; + i->n->p = i->p; + i->p->n = i->n; + i = i->n; + delete n; + c++; + } else { + i = i->n; + } + } + d->size-=c; + return c; +} + +template +bool QLinkedList::removeOne(const T &_t) +{ + detach(); + iterator it = std::find(begin(), end(), _t); + if (it != end()) { + erase(it); + return true; + } + return false; +} + +template +inline T QLinkedList::takeFirst() +{ + T t = first(); + removeFirst(); + return t; +} + +template +inline T QLinkedList::takeLast() +{ + T t = last(); + removeLast(); + return t; +} + +template +bool QLinkedList::contains(const T &t) const +{ + Node *i = e; + while ((i = i->n) != e) + if (i->t == t) + return true; + return false; +} + +template +int QLinkedList::count(const T &t) const +{ + Node *i = e; + int c = 0; + while ((i = i->n) != e) + if (i->t == t) + c++; + return c; +} + + +template +typename QLinkedList::iterator QLinkedList::insert(iterator before, const T &t) +{ + if (d->ref.isShared()) + before = detach_helper2(before); + + Node *i = before.i; + Node *m = new Node(t); + m->n = i; + m->p = i->p; + m->p->n = m; + i->p = m; + d->size++; + return m; +} + +template +typename QLinkedList::iterator QLinkedList::erase(typename QLinkedList::iterator afirst, + typename QLinkedList::iterator alast) +{ + while (afirst != alast) + erase(afirst++); + return alast; +} + + +template +typename QLinkedList::iterator QLinkedList::erase(iterator pos) +{ + if (d->ref.isShared()) + pos = detach_helper2(pos); + + Node *i = pos.i; + if (i != e) { + Node *n = i; + i->n->p = i->p; + i->p->n = i->n; + i = i->n; + delete n; + d->size--; + } + return i; +} + +template +QLinkedList &QLinkedList::operator+=(const QLinkedList &l) +{ + detach(); + int n = l.d->size; + d->size += n; + Node *original = l.e->n; + while (n--) { + QT_TRY { + Node *copy = new Node(original->t); + original = original->n; + copy->n = e; + copy->p = e->p; + copy->p->n = copy; + e->p = copy; + } QT_CATCH(...) { + // restore the original list + while (n++size) + removeLast(); + QT_RETHROW; + } + } + return *this; +} + +template +QLinkedList QLinkedList::operator+(const QLinkedList &l) const +{ + QLinkedList n = *this; + n += l; + return n; +} + +Q_DECLARE_SEQUENTIAL_ITERATOR(LinkedList) +Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(LinkedList) + +QT_END_NAMESPACE + +#endif // QLINKEDLIST_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qlist.h b/qrenderdoc/3rdparty/qt/include/QtCore/qlist.h new file mode 100644 index 000000000..e2706de9e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qlist.h @@ -0,0 +1,1100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLIST_H +#define QLIST_H + +#include +#include +#include +#include +#include + +#include +#include +#include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + +#include +#include +#include +#include + +#ifdef Q_CC_MSVC +#pragma warning( push ) +#pragma warning( disable : 4127 ) // "conditional expression is constant" +#endif + +QT_BEGIN_NAMESPACE + + +template class QVector; +template class QSet; + +template struct QListSpecialMethods +{ +protected: + ~QListSpecialMethods() {} +}; +template <> struct QListSpecialMethods; +template <> struct QListSpecialMethods; + +struct Q_CORE_EXPORT QListData { + // tags for tag-dispatching of QList implementations, + // based on QList's three different memory layouts: + struct NotArrayCompatibleLayout {}; + struct NotIndirectLayout {}; + struct ArrayCompatibleLayout : NotIndirectLayout {}; // data laid out like a C array + struct InlineWithPaddingLayout : NotArrayCompatibleLayout, NotIndirectLayout {}; // data laid out like a C array with padding + struct IndirectLayout : NotArrayCompatibleLayout {}; // data allocated on the heap + + struct Data { + QtPrivate::RefCount ref; + int alloc, begin, end; + void *array[1]; + }; + enum { DataHeaderSize = sizeof(Data) - sizeof(void *) }; + + Data *detach(int alloc); + Data *detach_grow(int *i, int n); + void realloc(int alloc); + void realloc_grow(int growth); + inline void dispose() { dispose(d); } + static void dispose(Data *d); + static const Data shared_null; + Data *d; + void **erase(void **xi); + void **append(int n); + void **append(); + void **append(const QListData &l); + void **prepend(); + void **insert(int i); + void remove(int i); + void remove(int i, int n); + void move(int from, int to); + inline int size() const Q_DECL_NOTHROW { return d->end - d->begin; } + inline bool isEmpty() const Q_DECL_NOTHROW { return d->end == d->begin; } + inline void **at(int i) const Q_DECL_NOTHROW { return d->array + d->begin + i; } + inline void **begin() const Q_DECL_NOTHROW { return d->array + d->begin; } + inline void **end() const Q_DECL_NOTHROW { return d->array + d->end; } +}; + +template +class QList +#ifndef Q_QDOC + : public QListSpecialMethods +#endif +{ +public: + struct MemoryLayout + : std::conditional< + // must stay isStatic until ### Qt 6 for BC reasons (don't use !isRelocatable)! + QTypeInfo::isStatic || QTypeInfo::isLarge, + QListData::IndirectLayout, + typename std::conditional< + sizeof(T) == sizeof(void*), + QListData::ArrayCompatibleLayout, + QListData::InlineWithPaddingLayout + >::type>::type {}; +private: + struct Node { void *v; +#if defined(Q_CC_BOR) + Q_INLINE_TEMPLATE T &t(); +#else + Q_INLINE_TEMPLATE T &t() + { return *reinterpret_cast(QTypeInfo::isLarge || QTypeInfo::isStatic + ? v : this); } +#endif + }; + + union { QListData p; QListData::Data *d; }; + +public: + inline QList() Q_DECL_NOTHROW : d(const_cast(&QListData::shared_null)) { } + QList(const QList &l); + ~QList(); + QList &operator=(const QList &l); +#ifdef Q_COMPILER_RVALUE_REFS + inline QList(QList &&other) Q_DECL_NOTHROW + : d(other.d) { other.d = const_cast(&QListData::shared_null); } + inline QList &operator=(QList &&other) Q_DECL_NOTHROW + { QList moved(std::move(other)); swap(moved); return *this; } +#endif + inline void swap(QList &other) Q_DECL_NOTHROW { qSwap(d, other.d); } +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QList(std::initializer_list args) + : d(const_cast(&QListData::shared_null)) + { reserve(int(args.size())); std::copy(args.begin(), args.end(), std::back_inserter(*this)); } +#endif + bool operator==(const QList &l) const; + inline bool operator!=(const QList &l) const { return !(*this == l); } + + inline int size() const Q_DECL_NOTHROW { return p.size(); } + + inline void detach() { if (d->ref.isShared()) detach_helper(); } + + inline void detachShared() + { + // The "this->" qualification is needed for GCCE. + if (d->ref.isShared() && this->d != &QListData::shared_null) + detach_helper(); + } + + inline bool isDetached() const { return !d->ref.isShared(); } +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + inline void setSharable(bool sharable) + { + if (sharable == d->ref.isSharable()) + return; + if (!sharable) + detach(); + if (d != &QListData::shared_null) + d->ref.setSharable(sharable); + } +#endif + inline bool isSharedWith(const QList &other) const Q_DECL_NOTHROW { return d == other.d; } + + inline bool isEmpty() const Q_DECL_NOTHROW { return p.isEmpty(); } + + void clear(); + + const T &at(int i) const; + const T &operator[](int i) const; + T &operator[](int i); + + void reserve(int size); + void append(const T &t); + void append(const QList &t); + void prepend(const T &t); + void insert(int i, const T &t); + void replace(int i, const T &t); + void removeAt(int i); + int removeAll(const T &t); + bool removeOne(const T &t); + T takeAt(int i); + T takeFirst(); + T takeLast(); + void move(int from, int to); + void swap(int i, int j); + int indexOf(const T &t, int from = 0) const; + int lastIndexOf(const T &t, int from = -1) const; + bool contains(const T &t) const; + int count(const T &t) const; + + class const_iterator; + + class iterator { + public: + Node *i; + typedef std::random_access_iterator_tag iterator_category; + // ### Qt6: use int + typedef qptrdiff difference_type; + typedef T value_type; + typedef T *pointer; + typedef T &reference; + + inline iterator() Q_DECL_NOTHROW : i(Q_NULLPTR) {} + inline iterator(Node *n) Q_DECL_NOTHROW : i(n) {} +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + // can't remove it in Qt 5, since doing so would make the type trivial, + // which changes the way it's passed to functions by value. + inline iterator(const iterator &o) Q_DECL_NOTHROW : i(o.i){} +#endif + inline T &operator*() const { return i->t(); } + inline T *operator->() const { return &i->t(); } + inline T &operator[](difference_type j) const { return i[j].t(); } + inline bool operator==(const iterator &o) const Q_DECL_NOTHROW { return i == o.i; } + inline bool operator!=(const iterator &o) const Q_DECL_NOTHROW { return i != o.i; } + inline bool operator<(const iterator& other) const Q_DECL_NOTHROW { return i < other.i; } + inline bool operator<=(const iterator& other) const Q_DECL_NOTHROW { return i <= other.i; } + inline bool operator>(const iterator& other) const Q_DECL_NOTHROW { return i > other.i; } + inline bool operator>=(const iterator& other) const Q_DECL_NOTHROW { return i >= other.i; } +#ifndef QT_STRICT_ITERATORS + inline bool operator==(const const_iterator &o) const Q_DECL_NOTHROW + { return i == o.i; } + inline bool operator!=(const const_iterator &o) const Q_DECL_NOTHROW + { return i != o.i; } + inline bool operator<(const const_iterator& other) const Q_DECL_NOTHROW + { return i < other.i; } + inline bool operator<=(const const_iterator& other) const Q_DECL_NOTHROW + { return i <= other.i; } + inline bool operator>(const const_iterator& other) const Q_DECL_NOTHROW + { return i > other.i; } + inline bool operator>=(const const_iterator& other) const Q_DECL_NOTHROW + { return i >= other.i; } +#endif + inline iterator &operator++() { ++i; return *this; } + inline iterator operator++(int) { Node *n = i; ++i; return n; } + inline iterator &operator--() { i--; return *this; } + inline iterator operator--(int) { Node *n = i; i--; return n; } + inline iterator &operator+=(difference_type j) { i+=j; return *this; } + inline iterator &operator-=(difference_type j) { i-=j; return *this; } + inline iterator operator+(difference_type j) const { return iterator(i+j); } + inline iterator operator-(difference_type j) const { return iterator(i-j); } + inline int operator-(iterator j) const { return int(i - j.i); } + }; + friend class iterator; + + class const_iterator { + public: + Node *i; + typedef std::random_access_iterator_tag iterator_category; + // ### Qt6: use int + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + inline const_iterator() Q_DECL_NOTHROW : i(Q_NULLPTR) {} + inline const_iterator(Node *n) Q_DECL_NOTHROW : i(n) {} +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + // can't remove it in Qt 5, since doing so would make the type trivial, + // which changes the way it's passed to functions by value. + inline const_iterator(const const_iterator &o) Q_DECL_NOTHROW : i(o.i) {} +#endif +#ifdef QT_STRICT_ITERATORS + inline explicit const_iterator(const iterator &o) Q_DECL_NOTHROW : i(o.i) {} +#else + inline const_iterator(const iterator &o) Q_DECL_NOTHROW : i(o.i) {} +#endif + inline const T &operator*() const { return i->t(); } + inline const T *operator->() const { return &i->t(); } + inline const T &operator[](difference_type j) const { return i[j].t(); } + inline bool operator==(const const_iterator &o) const Q_DECL_NOTHROW { return i == o.i; } + inline bool operator!=(const const_iterator &o) const Q_DECL_NOTHROW { return i != o.i; } + inline bool operator<(const const_iterator& other) const Q_DECL_NOTHROW { return i < other.i; } + inline bool operator<=(const const_iterator& other) const Q_DECL_NOTHROW { return i <= other.i; } + inline bool operator>(const const_iterator& other) const Q_DECL_NOTHROW { return i > other.i; } + inline bool operator>=(const const_iterator& other) const Q_DECL_NOTHROW { return i >= other.i; } + inline const_iterator &operator++() { ++i; return *this; } + inline const_iterator operator++(int) { Node *n = i; ++i; return n; } + inline const_iterator &operator--() { i--; return *this; } + inline const_iterator operator--(int) { Node *n = i; i--; return n; } + inline const_iterator &operator+=(difference_type j) { i+=j; return *this; } + inline const_iterator &operator-=(difference_type j) { i-=j; return *this; } + inline const_iterator operator+(difference_type j) const { return const_iterator(i+j); } + inline const_iterator operator-(difference_type j) const { return const_iterator(i-j); } + inline int operator-(const_iterator j) const { return int(i - j.i); } + }; + friend class const_iterator; + + // stl style + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + inline iterator begin() { detach(); return reinterpret_cast(p.begin()); } + inline const_iterator begin() const Q_DECL_NOTHROW { return reinterpret_cast(p.begin()); } + inline const_iterator cbegin() const Q_DECL_NOTHROW { return reinterpret_cast(p.begin()); } + inline const_iterator constBegin() const Q_DECL_NOTHROW { return reinterpret_cast(p.begin()); } + inline iterator end() { detach(); return reinterpret_cast(p.end()); } + inline const_iterator end() const Q_DECL_NOTHROW { return reinterpret_cast(p.end()); } + inline const_iterator cend() const Q_DECL_NOTHROW { return reinterpret_cast(p.end()); } + inline const_iterator constEnd() const Q_DECL_NOTHROW { return reinterpret_cast(p.end()); } + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const Q_DECL_NOTHROW { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const Q_DECL_NOTHROW { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const Q_DECL_NOTHROW { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const Q_DECL_NOTHROW { return const_reverse_iterator(begin()); } + iterator insert(iterator before, const T &t); + iterator erase(iterator pos); + iterator erase(iterator first, iterator last); + + // more Qt + typedef iterator Iterator; + typedef const_iterator ConstIterator; + inline int count() const { return p.size(); } + inline int length() const { return p.size(); } // Same as count() + inline T& first() { Q_ASSERT(!isEmpty()); return *begin(); } + inline const T& constFirst() const { return first(); } + inline const T& first() const { Q_ASSERT(!isEmpty()); return at(0); } + T& last() { Q_ASSERT(!isEmpty()); return *(--end()); } + const T& last() const { Q_ASSERT(!isEmpty()); return at(count() - 1); } + inline const T& constLast() const { return last(); } + inline void removeFirst() { Q_ASSERT(!isEmpty()); erase(begin()); } + inline void removeLast() { Q_ASSERT(!isEmpty()); erase(--end()); } + inline bool startsWith(const T &t) const { return !isEmpty() && first() == t; } + inline bool endsWith(const T &t) const { return !isEmpty() && last() == t; } + QList mid(int pos, int length = -1) const; + + T value(int i) const; + T value(int i, const T &defaultValue) const; + + // stl compatibility + inline void push_back(const T &t) { append(t); } + inline void push_front(const T &t) { prepend(t); } + inline T& front() { return first(); } + inline const T& front() const { return first(); } + inline T& back() { return last(); } + inline const T& back() const { return last(); } + inline void pop_front() { removeFirst(); } + inline void pop_back() { removeLast(); } + inline bool empty() const { return isEmpty(); } + typedef int size_type; + typedef T value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef value_type &reference; + typedef const value_type &const_reference; + // ### Qt6: use int + typedef qptrdiff difference_type; + + // comfort + QList &operator+=(const QList &l); + inline QList operator+(const QList &l) const + { QList n = *this; n += l; return n; } + inline QList &operator+=(const T &t) + { append(t); return *this; } + inline QList &operator<< (const T &t) + { append(t); return *this; } + inline QList &operator<<(const QList &l) + { *this += l; return *this; } + + QVector toVector() const; + QSet toSet() const; + + static QList fromVector(const QVector &vector); + static QList fromSet(const QSet &set); + + static inline QList fromStdList(const std::list &list) + { QList tmp; std::copy(list.begin(), list.end(), std::back_inserter(tmp)); return tmp; } + inline std::list toStdList() const + { std::list tmp; std::copy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; } + +private: + Node *detach_helper_grow(int i, int n); + void detach_helper(int alloc); + void detach_helper(); + void dealloc(QListData::Data *d); + + void node_construct(Node *n, const T &t); + void node_destruct(Node *n); + void node_copy(Node *from, Node *to, Node *src); + void node_destruct(Node *from, Node *to); + + bool isValidIterator(const iterator &i) const Q_DECL_NOTHROW + { + return (constBegin().i <= i.i) && (i.i <= constEnd().i); + } + +private: + inline bool op_eq_impl(const QList &other, QListData::NotArrayCompatibleLayout) const; + inline bool op_eq_impl(const QList &other, QListData::ArrayCompatibleLayout) const; + inline bool contains_impl(const T &, QListData::NotArrayCompatibleLayout) const; + inline bool contains_impl(const T &, QListData::ArrayCompatibleLayout) const; + inline int count_impl(const T &, QListData::NotArrayCompatibleLayout) const; + inline int count_impl(const T &, QListData::ArrayCompatibleLayout) const; +}; + +#if defined(Q_CC_BOR) +template +Q_INLINE_TEMPLATE T &QList::Node::t() +{ return QTypeInfo::isLarge || QTypeInfo::isStatic ? *(T*)v:*(T*)this; } +#endif + +template +Q_INLINE_TEMPLATE void QList::node_construct(Node *n, const T &t) +{ + if (QTypeInfo::isLarge || QTypeInfo::isStatic) n->v = new T(t); + else if (QTypeInfo::isComplex) new (n) T(t); +#if (defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__IBMCPP__)) && !defined(__OPTIMIZE__) + // This violates pointer aliasing rules, but it is known to be safe (and silent) + // in unoptimized GCC builds (-fno-strict-aliasing). The other compilers which + // set the same define are assumed to be safe. + else *reinterpret_cast(n) = t; +#else + // This is always safe, but penaltizes unoptimized builds a lot. + else ::memcpy(n, static_cast(&t), sizeof(T)); +#endif +} + +template +Q_INLINE_TEMPLATE void QList::node_destruct(Node *n) +{ + if (QTypeInfo::isLarge || QTypeInfo::isStatic) delete reinterpret_cast(n->v); + else if (QTypeInfo::isComplex) reinterpret_cast(n)->~T(); +} + +template +Q_INLINE_TEMPLATE void QList::node_copy(Node *from, Node *to, Node *src) +{ + Node *current = from; + if (QTypeInfo::isLarge || QTypeInfo::isStatic) { + QT_TRY { + while(current != to) { + current->v = new T(*reinterpret_cast(src->v)); + ++current; + ++src; + } + } QT_CATCH(...) { + while (current-- != from) + delete reinterpret_cast(current->v); + QT_RETHROW; + } + + } else if (QTypeInfo::isComplex) { + QT_TRY { + while(current != to) { + new (current) T(*reinterpret_cast(src)); + ++current; + ++src; + } + } QT_CATCH(...) { + while (current-- != from) + (reinterpret_cast(current))->~T(); + QT_RETHROW; + } + } else { + if (src != from && to - from > 0) + memcpy(from, src, (to - from) * sizeof(Node)); + } +} + +template +Q_INLINE_TEMPLATE void QList::node_destruct(Node *from, Node *to) +{ + if (QTypeInfo::isLarge || QTypeInfo::isStatic) + while(from != to) --to, delete reinterpret_cast(to->v); + else if (QTypeInfo::isComplex) + while (from != to) --to, reinterpret_cast(to)->~T(); +} + +template +Q_INLINE_TEMPLATE QList &QList::operator=(const QList &l) +{ + if (d != l.d) { + QList tmp(l); + tmp.swap(*this); + } + return *this; +} +template +inline typename QList::iterator QList::insert(iterator before, const T &t) +{ + Q_ASSERT_X(isValidIterator(before), "QList::insert", "The specified iterator argument 'before' is invalid"); + + int iBefore = int(before.i - reinterpret_cast(p.begin())); + Node *n = 0; + if (d->ref.isShared()) + n = detach_helper_grow(iBefore, 1); + else + n = reinterpret_cast(p.insert(iBefore)); + QT_TRY { + node_construct(n, t); + } QT_CATCH(...) { + p.remove(iBefore); + QT_RETHROW; + } + return n; +} +template +inline typename QList::iterator QList::erase(iterator it) +{ + Q_ASSERT_X(isValidIterator(it), "QList::erase", "The specified iterator argument 'it' is invalid"); + if (d->ref.isShared()) { + int offset = int(it.i - reinterpret_cast(p.begin())); + it = begin(); // implies detach() + it += offset; + } + node_destruct(it.i); + return reinterpret_cast(p.erase(reinterpret_cast(it.i))); +} +template +inline const T &QList::at(int i) const +{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList::at", "index out of range"); + return reinterpret_cast(p.at(i))->t(); } +template +inline const T &QList::operator[](int i) const +{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList::operator[]", "index out of range"); + return reinterpret_cast(p.at(i))->t(); } +template +inline T &QList::operator[](int i) +{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList::operator[]", "index out of range"); + detach(); return reinterpret_cast(p.at(i))->t(); } +template +inline void QList::removeAt(int i) +{ if(i >= 0 && i < p.size()) { detach(); + node_destruct(reinterpret_cast(p.at(i))); p.remove(i); } } +template +inline T QList::takeAt(int i) +{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList::take", "index out of range"); + detach(); Node *n = reinterpret_cast(p.at(i)); T t = n->t(); node_destruct(n); + p.remove(i); return t; } +template +inline T QList::takeFirst() +{ T t = first(); removeFirst(); return t; } +template +inline T QList::takeLast() +{ T t = last(); removeLast(); return t; } + +template +Q_OUTOFLINE_TEMPLATE void QList::reserve(int alloc) +{ + if (d->alloc < alloc) { + if (d->ref.isShared()) + detach_helper(alloc); + else + p.realloc(alloc); + } +} + +template +Q_OUTOFLINE_TEMPLATE void QList::append(const T &t) +{ + if (d->ref.isShared()) { + Node *n = detach_helper_grow(INT_MAX, 1); + QT_TRY { + node_construct(n, t); + } QT_CATCH(...) { + --d->end; + QT_RETHROW; + } + } else { + if (QTypeInfo::isLarge || QTypeInfo::isStatic) { + Node *n = reinterpret_cast(p.append()); + QT_TRY { + node_construct(n, t); + } QT_CATCH(...) { + --d->end; + QT_RETHROW; + } + } else { + Node *n, copy; + node_construct(©, t); // t might be a reference to an object in the array + QT_TRY { + n = reinterpret_cast(p.append());; + } QT_CATCH(...) { + node_destruct(©); + QT_RETHROW; + } + *n = copy; + } + } +} + +template +inline void QList::prepend(const T &t) +{ + if (d->ref.isShared()) { + Node *n = detach_helper_grow(0, 1); + QT_TRY { + node_construct(n, t); + } QT_CATCH(...) { + ++d->begin; + QT_RETHROW; + } + } else { + if (QTypeInfo::isLarge || QTypeInfo::isStatic) { + Node *n = reinterpret_cast(p.prepend()); + QT_TRY { + node_construct(n, t); + } QT_CATCH(...) { + ++d->begin; + QT_RETHROW; + } + } else { + Node *n, copy; + node_construct(©, t); // t might be a reference to an object in the array + QT_TRY { + n = reinterpret_cast(p.prepend());; + } QT_CATCH(...) { + node_destruct(©); + QT_RETHROW; + } + *n = copy; + } + } +} + +template +inline void QList::insert(int i, const T &t) +{ + if (d->ref.isShared()) { + Node *n = detach_helper_grow(i, 1); + QT_TRY { + node_construct(n, t); + } QT_CATCH(...) { + p.remove(i); + QT_RETHROW; + } + } else { + if (QTypeInfo::isLarge || QTypeInfo::isStatic) { + Node *n = reinterpret_cast(p.insert(i)); + QT_TRY { + node_construct(n, t); + } QT_CATCH(...) { + p.remove(i); + QT_RETHROW; + } + } else { + Node *n, copy; + node_construct(©, t); // t might be a reference to an object in the array + QT_TRY { + n = reinterpret_cast(p.insert(i));; + } QT_CATCH(...) { + node_destruct(©); + QT_RETHROW; + } + *n = copy; + } + } +} + +template +inline void QList::replace(int i, const T &t) +{ + Q_ASSERT_X(i >= 0 && i < p.size(), "QList::replace", "index out of range"); + detach(); + reinterpret_cast(p.at(i))->t() = t; +} + +template +inline void QList::swap(int i, int j) +{ + Q_ASSERT_X(i >= 0 && i < p.size() && j >= 0 && j < p.size(), + "QList::swap", "index out of range"); + detach(); + std::swap(d->array[d->begin + i], d->array[d->begin + j]); +} + +template +inline void QList::move(int from, int to) +{ + Q_ASSERT_X(from >= 0 && from < p.size() && to >= 0 && to < p.size(), + "QList::move", "index out of range"); + detach(); + p.move(from, to); +} + +template +Q_OUTOFLINE_TEMPLATE QList QList::mid(int pos, int alength) const +{ + using namespace QtPrivate; + switch (QContainerImplHelper::mid(size(), &pos, &alength)) { + case QContainerImplHelper::Null: + case QContainerImplHelper::Empty: + return QList(); + case QContainerImplHelper::Full: + return *this; + case QContainerImplHelper::Subset: + break; + } + + QList cpy; + if (alength <= 0) + return cpy; + cpy.reserve(alength); + cpy.d->end = alength; + QT_TRY { + cpy.node_copy(reinterpret_cast(cpy.p.begin()), + reinterpret_cast(cpy.p.end()), + reinterpret_cast(p.begin() + pos)); + } QT_CATCH(...) { + // restore the old end + cpy.d->end = 0; + QT_RETHROW; + } + return cpy; +} + +template +Q_OUTOFLINE_TEMPLATE T QList::value(int i) const +{ + if (i < 0 || i >= p.size()) { + return T(); + } + return reinterpret_cast(p.at(i))->t(); +} + +template +Q_OUTOFLINE_TEMPLATE T QList::value(int i, const T& defaultValue) const +{ + return ((i < 0 || i >= p.size()) ? defaultValue : reinterpret_cast(p.at(i))->t()); +} + +template +Q_OUTOFLINE_TEMPLATE typename QList::Node *QList::detach_helper_grow(int i, int c) +{ + Node *n = reinterpret_cast(p.begin()); + QListData::Data *x = p.detach_grow(&i, c); + QT_TRY { + node_copy(reinterpret_cast(p.begin()), + reinterpret_cast(p.begin() + i), n); + } QT_CATCH(...) { + p.dispose(); + d = x; + QT_RETHROW; + } + QT_TRY { + node_copy(reinterpret_cast(p.begin() + i + c), + reinterpret_cast(p.end()), n + i); + } QT_CATCH(...) { + node_destruct(reinterpret_cast(p.begin()), + reinterpret_cast(p.begin() + i)); + p.dispose(); + d = x; + QT_RETHROW; + } + + if (!x->ref.deref()) + dealloc(x); + + return reinterpret_cast(p.begin() + i); +} + +template +Q_OUTOFLINE_TEMPLATE void QList::detach_helper(int alloc) +{ + Node *n = reinterpret_cast(p.begin()); + QListData::Data *x = p.detach(alloc); + QT_TRY { + node_copy(reinterpret_cast(p.begin()), reinterpret_cast(p.end()), n); + } QT_CATCH(...) { + p.dispose(); + d = x; + QT_RETHROW; + } + + if (!x->ref.deref()) + dealloc(x); +} + +template +Q_OUTOFLINE_TEMPLATE void QList::detach_helper() +{ + detach_helper(d->alloc); +} + +template +Q_OUTOFLINE_TEMPLATE QList::QList(const QList &l) + : QListSpecialMethods(l), d(l.d) +{ + if (!d->ref.ref()) { + p.detach(d->alloc); + + QT_TRY { + node_copy(reinterpret_cast(p.begin()), + reinterpret_cast(p.end()), + reinterpret_cast(l.p.begin())); + } QT_CATCH(...) { + QListData::dispose(d); + QT_RETHROW; + } + } +} + +template +Q_OUTOFLINE_TEMPLATE QList::~QList() +{ + if (!d->ref.deref()) + dealloc(d); +} + +template +Q_OUTOFLINE_TEMPLATE bool QList::operator==(const QList &l) const +{ + if (d == l.d) + return true; + if (p.size() != l.p.size()) + return false; + return this->op_eq_impl(l, MemoryLayout()); +} + +template +inline bool QList::op_eq_impl(const QList &l, QListData::NotArrayCompatibleLayout) const +{ + Node *i = reinterpret_cast(p.begin()); + Node *e = reinterpret_cast(p.end()); + Node *li = reinterpret_cast(l.p.begin()); + for (; i != e; ++i, ++li) { + if (!(i->t() == li->t())) + return false; + } + return true; +} + +template +inline bool QList::op_eq_impl(const QList &l, QListData::ArrayCompatibleLayout) const +{ + const T *lb = reinterpret_cast(l.p.begin()); + const T *b = reinterpret_cast(p.begin()); + const T *e = reinterpret_cast(p.end()); + return std::equal(b, e, QT_MAKE_CHECKED_ARRAY_ITERATOR(lb, l.p.size())); +} + +template +Q_OUTOFLINE_TEMPLATE void QList::dealloc(QListData::Data *data) +{ + node_destruct(reinterpret_cast(data->array + data->begin), + reinterpret_cast(data->array + data->end)); + QListData::dispose(data); +} + + +template +Q_OUTOFLINE_TEMPLATE void QList::clear() +{ + *this = QList(); +} + +template +Q_OUTOFLINE_TEMPLATE int QList::removeAll(const T &_t) +{ + int index = indexOf(_t); + if (index == -1) + return 0; + + const T t = _t; + detach(); + + Node *i = reinterpret_cast(p.at(index)); + Node *e = reinterpret_cast(p.end()); + Node *n = i; + node_destruct(i); + while (++i != e) { + if (i->t() == t) + node_destruct(i); + else + *n++ = *i; + } + + int removedCount = int(e - n); + d->end -= removedCount; + return removedCount; +} + +template +Q_OUTOFLINE_TEMPLATE bool QList::removeOne(const T &_t) +{ + int index = indexOf(_t); + if (index != -1) { + removeAt(index); + return true; + } + return false; +} + +template +Q_OUTOFLINE_TEMPLATE typename QList::iterator QList::erase(typename QList::iterator afirst, + typename QList::iterator alast) +{ + Q_ASSERT_X(isValidIterator(afirst), "QList::erase", "The specified iterator argument 'afirst' is invalid"); + Q_ASSERT_X(isValidIterator(alast), "QList::erase", "The specified iterator argument 'alast' is invalid"); + + if (d->ref.isShared()) { + // ### A block is erased and a detach is needed. We should shrink and only copy relevant items. + int offsetfirst = int(afirst.i - reinterpret_cast(p.begin())); + int offsetlast = int(alast.i - reinterpret_cast(p.begin())); + afirst = begin(); // implies detach() + alast = afirst; + afirst += offsetfirst; + alast += offsetlast; + } + + for (Node *n = afirst.i; n < alast.i; ++n) + node_destruct(n); + int idx = afirst - begin(); + p.remove(idx, alast - afirst); + return begin() + idx; +} + +template +Q_OUTOFLINE_TEMPLATE QList &QList::operator+=(const QList &l) +{ + if (!l.isEmpty()) { + if (d == &QListData::shared_null) { + *this = l; + } else { + Node *n = (d->ref.isShared()) + ? detach_helper_grow(INT_MAX, l.size()) + : reinterpret_cast(p.append(l.p)); + QT_TRY { + node_copy(n, reinterpret_cast(p.end()), + reinterpret_cast(l.p.begin())); + } QT_CATCH(...) { + // restore the old end + d->end -= int(reinterpret_cast(p.end()) - n); + QT_RETHROW; + } + } + } + return *this; +} + +template +inline void QList::append(const QList &t) +{ + *this += t; +} + +template +Q_OUTOFLINE_TEMPLATE int QList::indexOf(const T &t, int from) const +{ + if (from < 0) + from = qMax(from + p.size(), 0); + if (from < p.size()) { + Node *n = reinterpret_cast(p.at(from -1)); + Node *e = reinterpret_cast(p.end()); + while (++n != e) + if (n->t() == t) + return int(n - reinterpret_cast(p.begin())); + } + return -1; +} + +template +Q_OUTOFLINE_TEMPLATE int QList::lastIndexOf(const T &t, int from) const +{ + if (from < 0) + from += p.size(); + else if (from >= p.size()) + from = p.size()-1; + if (from >= 0) { + Node *b = reinterpret_cast(p.begin()); + Node *n = reinterpret_cast(p.at(from + 1)); + while (n-- != b) { + if (n->t() == t) + return n - b; + } + } + return -1; +} + +template +Q_OUTOFLINE_TEMPLATE bool QList::contains(const T &t) const +{ + return contains_impl(t, MemoryLayout()); +} + +template +inline bool QList::contains_impl(const T &t, QListData::NotArrayCompatibleLayout) const +{ + Node *e = reinterpret_cast(p.end()); + Node *i = reinterpret_cast(p.begin()); + for (; i != e; ++i) + if (i->t() == t) + return true; + return false; +} + +template +inline bool QList::contains_impl(const T &t, QListData::ArrayCompatibleLayout) const +{ + const T *b = reinterpret_cast(p.begin()); + const T *e = reinterpret_cast(p.end()); + return std::find(b, e, t) != e; +} + +template +Q_OUTOFLINE_TEMPLATE int QList::count(const T &t) const +{ + return this->count_impl(t, MemoryLayout()); +} + +template +inline int QList::count_impl(const T &t, QListData::NotArrayCompatibleLayout) const +{ + int c = 0; + Node *e = reinterpret_cast(p.end()); + Node *i = reinterpret_cast(p.begin()); + for (; i != e; ++i) + if (i->t() == t) + ++c; + return c; +} + +template +inline int QList::count_impl(const T &t, QListData::ArrayCompatibleLayout) const +{ + return int(std::count(reinterpret_cast(p.begin()), + reinterpret_cast(p.end()), + t)); +} + +Q_DECLARE_SEQUENTIAL_ITERATOR(List) +Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(List) + +template +uint qHash(const QList &key, uint seed = 0) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHashRange(key.cbegin(), key.cend(), seed))) +{ + return qHashRange(key.cbegin(), key.cend(), seed); +} + +template +bool operator<(const QList &lhs, const QList &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(std::lexicographical_compare(lhs.begin(), lhs.end(), + rhs.begin(), rhs.end()))) +{ + return std::lexicographical_compare(lhs.begin(), lhs.end(), + rhs.begin(), rhs.end()); +} + +template +inline bool operator>(const QList &lhs, const QList &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(lhs < rhs)) +{ + return rhs < lhs; +} + +template +inline bool operator<=(const QList &lhs, const QList &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(lhs < rhs)) +{ + return !(lhs > rhs); +} + +template +inline bool operator>=(const QList &lhs, const QList &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(lhs < rhs)) +{ + return !(lhs < rhs); +} + +QT_END_NAMESPACE + +#include +#include + +#ifdef Q_CC_MSVC +#pragma warning( pop ) +#endif + +#endif // QLIST_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qlocale.h b/qrenderdoc/3rdparty/qt/include/QtCore/qlocale.h new file mode 100644 index 000000000..bd89e4823 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qlocale.h @@ -0,0 +1,1097 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCALE_H +#define QLOCALE_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class QDataStream; +class QDate; +class QDateTime; +class QLocale; +class QTime; +class QVariant; +class QTextStream; +class QTextStreamPrivate; + +class QLocalePrivate; + +Q_CORE_EXPORT uint qHash(const QLocale &key, uint seed = 0) Q_DECL_NOTHROW; + +class Q_CORE_EXPORT QLocale +{ + Q_GADGET + friend class QString; + friend class QStringRef; + friend class QByteArray; + friend class QIntValidator; + friend class QDoubleValidatorPrivate; + friend class QTextStream; + friend class QTextStreamPrivate; + +public: +// GENERATED PART STARTS HERE +// see qlocale_data_p.h for more info on generated data + enum Language { + AnyLanguage = 0, + C = 1, + Abkhazian = 2, + Oromo = 3, + Afar = 4, + Afrikaans = 5, + Albanian = 6, + Amharic = 7, + Arabic = 8, + Armenian = 9, + Assamese = 10, + Aymara = 11, + Azerbaijani = 12, + Bashkir = 13, + Basque = 14, + Bengali = 15, + Dzongkha = 16, + Bihari = 17, + Bislama = 18, + Breton = 19, + Bulgarian = 20, + Burmese = 21, + Belarusian = 22, + Khmer = 23, + Catalan = 24, + Chinese = 25, + Corsican = 26, + Croatian = 27, + Czech = 28, + Danish = 29, + Dutch = 30, + English = 31, + Esperanto = 32, + Estonian = 33, + Faroese = 34, + Fijian = 35, + Finnish = 36, + French = 37, + WesternFrisian = 38, + Gaelic = 39, + Galician = 40, + Georgian = 41, + German = 42, + Greek = 43, + Greenlandic = 44, + Guarani = 45, + Gujarati = 46, + Hausa = 47, + Hebrew = 48, + Hindi = 49, + Hungarian = 50, + Icelandic = 51, + Indonesian = 52, + Interlingua = 53, + Interlingue = 54, + Inuktitut = 55, + Inupiak = 56, + Irish = 57, + Italian = 58, + Japanese = 59, + Javanese = 60, + Kannada = 61, + Kashmiri = 62, + Kazakh = 63, + Kinyarwanda = 64, + Kirghiz = 65, + Korean = 66, + Kurdish = 67, + Rundi = 68, + Lao = 69, + Latin = 70, + Latvian = 71, + Lingala = 72, + Lithuanian = 73, + Macedonian = 74, + Malagasy = 75, + Malay = 76, + Malayalam = 77, + Maltese = 78, + Maori = 79, + Marathi = 80, + Marshallese = 81, + Mongolian = 82, + NauruLanguage = 83, + Nepali = 84, + NorwegianBokmal = 85, + Occitan = 86, + Oriya = 87, + Pashto = 88, + Persian = 89, + Polish = 90, + Portuguese = 91, + Punjabi = 92, + Quechua = 93, + Romansh = 94, + Romanian = 95, + Russian = 96, + Samoan = 97, + Sango = 98, + Sanskrit = 99, + Serbian = 100, + Ossetic = 101, + SouthernSotho = 102, + Tswana = 103, + Shona = 104, + Sindhi = 105, + Sinhala = 106, + Swati = 107, + Slovak = 108, + Slovenian = 109, + Somali = 110, + Spanish = 111, + Sundanese = 112, + Swahili = 113, + Swedish = 114, + Sardinian = 115, + Tajik = 116, + Tamil = 117, + Tatar = 118, + Telugu = 119, + Thai = 120, + Tibetan = 121, + Tigrinya = 122, + Tongan = 123, + Tsonga = 124, + Turkish = 125, + Turkmen = 126, + Tahitian = 127, + Uighur = 128, + Ukrainian = 129, + Urdu = 130, + Uzbek = 131, + Vietnamese = 132, + Volapuk = 133, + Welsh = 134, + Wolof = 135, + Xhosa = 136, + Yiddish = 137, + Yoruba = 138, + Zhuang = 139, + Zulu = 140, + NorwegianNynorsk = 141, + Bosnian = 142, + Divehi = 143, + Manx = 144, + Cornish = 145, + Akan = 146, + Konkani = 147, + Ga = 148, + Igbo = 149, + Kamba = 150, + Syriac = 151, + Blin = 152, + Geez = 153, + Koro = 154, + Sidamo = 155, + Atsam = 156, + Tigre = 157, + Jju = 158, + Friulian = 159, + Venda = 160, + Ewe = 161, + Walamo = 162, + Hawaiian = 163, + Tyap = 164, + Nyanja = 165, + Filipino = 166, + SwissGerman = 167, + SichuanYi = 168, + Kpelle = 169, + LowGerman = 170, + SouthNdebele = 171, + NorthernSotho = 172, + NorthernSami = 173, + Taroko = 174, + Gusii = 175, + Taita = 176, + Fulah = 177, + Kikuyu = 178, + Samburu = 179, + Sena = 180, + NorthNdebele = 181, + Rombo = 182, + Tachelhit = 183, + Kabyle = 184, + Nyankole = 185, + Bena = 186, + Vunjo = 187, + Bambara = 188, + Embu = 189, + Cherokee = 190, + Morisyen = 191, + Makonde = 192, + Langi = 193, + Ganda = 194, + Bemba = 195, + Kabuverdianu = 196, + Meru = 197, + Kalenjin = 198, + Nama = 199, + Machame = 200, + Colognian = 201, + Masai = 202, + Soga = 203, + Luyia = 204, + Asu = 205, + Teso = 206, + Saho = 207, + KoyraChiini = 208, + Rwa = 209, + Luo = 210, + Chiga = 211, + CentralMoroccoTamazight = 212, + KoyraboroSenni = 213, + Shambala = 214, + Bodo = 215, + Avaric = 216, + Chamorro = 217, + Chechen = 218, + Church = 219, + Chuvash = 220, + Cree = 221, + Haitian = 222, + Herero = 223, + HiriMotu = 224, + Kanuri = 225, + Komi = 226, + Kongo = 227, + Kwanyama = 228, + Limburgish = 229, + LubaKatanga = 230, + Luxembourgish = 231, + Navaho = 232, + Ndonga = 233, + Ojibwa = 234, + Pali = 235, + Walloon = 236, + Aghem = 237, + Basaa = 238, + Zarma = 239, + Duala = 240, + JolaFonyi = 241, + Ewondo = 242, + Bafia = 243, + MakhuwaMeetto = 244, + Mundang = 245, + Kwasio = 246, + Nuer = 247, + Sakha = 248, + Sangu = 249, + CongoSwahili = 250, + Tasawaq = 251, + Vai = 252, + Walser = 253, + Yangben = 254, + Avestan = 255, + Asturian = 256, + Ngomba = 257, + 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, + Akoose = 312, + Lakota = 313, + StandardMoroccanTamazight = 314, + Mapuche = 315, + CentralKurdish = 316, + LowerSorbian = 317, + UpperSorbian = 318, + Kenyang = 319, + Mohawk = 320, + Nko = 321, + Prussian = 322, + Kiche = 323, + SouthernSami = 324, + LuleSami = 325, + InariSami = 326, + SkoltSami = 327, + Warlpiri = 328, + ManichaeanMiddlePersian = 329, + Mende = 330, + AncientNorthArabian = 331, + LinearA = 332, + HmongNjua = 333, + Ho = 334, + Lezghian = 335, + Bassa = 336, + Mono = 337, + TedimChin = 338, + Maithili = 339, + Ahom = 340, + AmericanSignLanguage = 341, + ArdhamagadhiPrakrit = 342, + Bhojpuri = 343, + HieroglyphicLuwian = 344, + LiteraryChinese = 345, + Mazanderani = 346, + Mru = 347, + Newari = 348, + NorthernLuri = 349, + Palauan = 350, + Papiamento = 351, + Saraiki = 352, + TokelauLanguage = 353, + TokPisin = 354, + TuvaluLanguage = 355, + UncodedLanguages = 356, + Cantonese = 357, + Osage = 358, + Tangut = 359, + + Norwegian = NorwegianBokmal, + Moldavian = Romanian, + SerboCroatian = Serbian, + Tagalog = Filipino, + Twi = Akan, + Afan = Oromo, + Byelorussian = Belarusian, + Bhutani = Dzongkha, + Cambodian = Khmer, + Kurundi = Rundi, + RhaetoRomance = Romansh, + Chewa = Nyanja, + Frisian = WesternFrisian, + Uigur = Uighur, + + LastLanguage = Tangut + }; + + enum Script { + AnyScript = 0, + ArabicScript = 1, + CyrillicScript = 2, + DeseretScript = 3, + GurmukhiScript = 4, + SimplifiedHanScript = 5, + TraditionalHanScript = 6, + LatinScript = 7, + MongolianScript = 8, + TifinaghScript = 9, + ArmenianScript = 10, + BengaliScript = 11, + CherokeeScript = 12, + DevanagariScript = 13, + EthiopicScript = 14, + GeorgianScript = 15, + GreekScript = 16, + GujaratiScript = 17, + HebrewScript = 18, + JapaneseScript = 19, + KhmerScript = 20, + KannadaScript = 21, + KoreanScript = 22, + LaoScript = 23, + MalayalamScript = 24, + MyanmarScript = 25, + OriyaScript = 26, + TamilScript = 27, + TeluguScript = 28, + ThaanaScript = 29, + ThaiScript = 30, + TibetanScript = 31, + SinhalaScript = 32, + 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, + BrailleScript = 103, + HiraganaScript = 104, + CaucasianAlbanianScript = 105, + BassaVahScript = 106, + DuployanScript = 107, + ElbasanScript = 108, + GranthaScript = 109, + PahawhHmongScript = 110, + KhojkiScript = 111, + LinearAScript = 112, + MahajaniScript = 113, + ManichaeanScript = 114, + MendeKikakuiScript = 115, + ModiScript = 116, + MroScript = 117, + OldNorthArabianScript = 118, + NabataeanScript = 119, + PalmyreneScript = 120, + PauCinHauScript = 121, + OldPermicScript = 122, + PsalterPahlaviScript = 123, + SiddhamScript = 124, + KhudawadiScript = 125, + TirhutaScript = 126, + VarangKshitiScript = 127, + AhomScript = 128, + AnatolianHieroglyphsScript = 129, + HatranScript = 130, + MultaniScript = 131, + OldHungarianScript = 132, + SignWritingScript = 133, + AdlamScript = 134, + BhaiksukiScript = 135, + MarchenScript = 136, + NewaScript = 137, + OsageScript = 138, + TangutScript = 139, + HanWithBopomofoScript = 140, + JamoScript = 141, + + SimplifiedChineseScript = SimplifiedHanScript, + TraditionalChineseScript = TraditionalHanScript, + + LastScript = JamoScript + }; + enum Country { + AnyCountry = 0, + Afghanistan = 1, + Albania = 2, + Algeria = 3, + AmericanSamoa = 4, + Andorra = 5, + Angola = 6, + Anguilla = 7, + Antarctica = 8, + AntiguaAndBarbuda = 9, + Argentina = 10, + Armenia = 11, + Aruba = 12, + Australia = 13, + Austria = 14, + Azerbaijan = 15, + Bahamas = 16, + Bahrain = 17, + Bangladesh = 18, + Barbados = 19, + Belarus = 20, + Belgium = 21, + Belize = 22, + Benin = 23, + Bermuda = 24, + Bhutan = 25, + Bolivia = 26, + BosniaAndHerzegowina = 27, + Botswana = 28, + BouvetIsland = 29, + Brazil = 30, + BritishIndianOceanTerritory = 31, + Brunei = 32, + Bulgaria = 33, + BurkinaFaso = 34, + Burundi = 35, + Cambodia = 36, + Cameroon = 37, + Canada = 38, + CapeVerde = 39, + CaymanIslands = 40, + CentralAfricanRepublic = 41, + Chad = 42, + Chile = 43, + China = 44, + ChristmasIsland = 45, + CocosIslands = 46, + Colombia = 47, + Comoros = 48, + CongoKinshasa = 49, + CongoBrazzaville = 50, + CookIslands = 51, + CostaRica = 52, + IvoryCoast = 53, + Croatia = 54, + Cuba = 55, + Cyprus = 56, + CzechRepublic = 57, + Denmark = 58, + Djibouti = 59, + Dominica = 60, + DominicanRepublic = 61, + EastTimor = 62, + Ecuador = 63, + Egypt = 64, + ElSalvador = 65, + EquatorialGuinea = 66, + Eritrea = 67, + Estonia = 68, + Ethiopia = 69, + FalklandIslands = 70, + FaroeIslands = 71, + Fiji = 72, + Finland = 73, + France = 74, + Guernsey = 75, + FrenchGuiana = 76, + FrenchPolynesia = 77, + FrenchSouthernTerritories = 78, + Gabon = 79, + Gambia = 80, + Georgia = 81, + Germany = 82, + Ghana = 83, + Gibraltar = 84, + Greece = 85, + Greenland = 86, + Grenada = 87, + Guadeloupe = 88, + Guam = 89, + Guatemala = 90, + Guinea = 91, + GuineaBissau = 92, + Guyana = 93, + Haiti = 94, + HeardAndMcDonaldIslands = 95, + Honduras = 96, + HongKong = 97, + Hungary = 98, + Iceland = 99, + India = 100, + Indonesia = 101, + Iran = 102, + Iraq = 103, + Ireland = 104, + Israel = 105, + Italy = 106, + Jamaica = 107, + Japan = 108, + Jordan = 109, + Kazakhstan = 110, + Kenya = 111, + Kiribati = 112, + NorthKorea = 113, + SouthKorea = 114, + Kuwait = 115, + Kyrgyzstan = 116, + Laos = 117, + Latvia = 118, + Lebanon = 119, + Lesotho = 120, + Liberia = 121, + Libya = 122, + Liechtenstein = 123, + Lithuania = 124, + Luxembourg = 125, + Macau = 126, + Macedonia = 127, + Madagascar = 128, + Malawi = 129, + Malaysia = 130, + Maldives = 131, + Mali = 132, + Malta = 133, + MarshallIslands = 134, + Martinique = 135, + Mauritania = 136, + Mauritius = 137, + Mayotte = 138, + Mexico = 139, + Micronesia = 140, + Moldova = 141, + Monaco = 142, + Mongolia = 143, + Montserrat = 144, + Morocco = 145, + Mozambique = 146, + Myanmar = 147, + Namibia = 148, + NauruCountry = 149, + Nepal = 150, + Netherlands = 151, + CuraSao = 152, + NewCaledonia = 153, + NewZealand = 154, + Nicaragua = 155, + Niger = 156, + Nigeria = 157, + Niue = 158, + NorfolkIsland = 159, + NorthernMarianaIslands = 160, + Norway = 161, + Oman = 162, + Pakistan = 163, + Palau = 164, + PalestinianTerritories = 165, + Panama = 166, + PapuaNewGuinea = 167, + Paraguay = 168, + Peru = 169, + Philippines = 170, + Pitcairn = 171, + Poland = 172, + Portugal = 173, + PuertoRico = 174, + Qatar = 175, + Reunion = 176, + Romania = 177, + Russia = 178, + Rwanda = 179, + SaintKittsAndNevis = 180, + SaintLucia = 181, + SaintVincentAndTheGrenadines = 182, + Samoa = 183, + SanMarino = 184, + SaoTomeAndPrincipe = 185, + SaudiArabia = 186, + Senegal = 187, + Seychelles = 188, + SierraLeone = 189, + Singapore = 190, + Slovakia = 191, + Slovenia = 192, + SolomonIslands = 193, + Somalia = 194, + SouthAfrica = 195, + SouthGeorgiaAndTheSouthSandwichIslands = 196, + Spain = 197, + SriLanka = 198, + SaintHelena = 199, + SaintPierreAndMiquelon = 200, + Sudan = 201, + Suriname = 202, + SvalbardAndJanMayenIslands = 203, + Swaziland = 204, + Sweden = 205, + Switzerland = 206, + Syria = 207, + Taiwan = 208, + Tajikistan = 209, + Tanzania = 210, + Thailand = 211, + Togo = 212, + TokelauCountry = 213, + Tonga = 214, + TrinidadAndTobago = 215, + Tunisia = 216, + Turkey = 217, + Turkmenistan = 218, + TurksAndCaicosIslands = 219, + TuvaluCountry = 220, + Uganda = 221, + Ukraine = 222, + UnitedArabEmirates = 223, + UnitedKingdom = 224, + UnitedStates = 225, + UnitedStatesMinorOutlyingIslands = 226, + Uruguay = 227, + Uzbekistan = 228, + Vanuatu = 229, + VaticanCityState = 230, + Venezuela = 231, + Vietnam = 232, + BritishVirginIslands = 233, + UnitedStatesVirginIslands = 234, + WallisAndFutunaIslands = 235, + WesternSahara = 236, + Yemen = 237, + CanaryIslands = 238, + Zambia = 239, + Zimbabwe = 240, + ClippertonIsland = 241, + Montenegro = 242, + Serbia = 243, + SaintBarthelemy = 244, + SaintMartin = 245, + LatinAmericaAndTheCaribbean = 246, + AscensionIsland = 247, + AlandIslands = 248, + DiegoGarcia = 249, + CeutaAndMelilla = 250, + IsleOfMan = 251, + Jersey = 252, + TristanDaCunha = 253, + SouthSudan = 254, + Bonaire = 255, + SintMaarten = 256, + Kosovo = 257, + EuropeanUnion = 258, + OutlyingOceania = 259, + + Tokelau = TokelauCountry, + Tuvalu = TuvaluCountry, + DemocraticRepublicOfCongo = CongoKinshasa, + PeoplesRepublicOfCongo = CongoBrazzaville, + DemocraticRepublicOfKorea = NorthKorea, + RepublicOfKorea = SouthKorea, + RussianFederation = Russia, + SyrianArabRepublic = Syria, + + LastCountry = OutlyingOceania + }; +// GENERATED PART ENDS HERE + + Q_ENUM(Language) + Q_ENUM(Country) + Q_ENUM(Script) + + enum MeasurementSystem { + MetricSystem, + ImperialUSSystem, + ImperialUKSystem, + ImperialSystem = ImperialUSSystem // Qt 4 compatibility + }; + Q_ENUM(MeasurementSystem) + + enum FormatType { LongFormat, ShortFormat, NarrowFormat }; + enum NumberOption { + DefaultNumberOptions = 0x0, + OmitGroupSeparator = 0x01, + RejectGroupSeparator = 0x02, + OmitLeadingZeroInExponent = 0x04, + RejectLeadingZeroInExponent = 0x08, + IncludeTrailingZeroesAfterDot = 0x10, + RejectTrailingZeroesAfterDot = 0x20 + }; + Q_DECLARE_FLAGS(NumberOptions, NumberOption) + + enum FloatingPointPrecisionOption { + FloatingPointShortest = -128 + }; + + enum CurrencySymbolFormat { + CurrencyIsoCode, + CurrencySymbol, + CurrencyDisplayName + }; + + QLocale(); + QLocale(const QString &name); + QLocale(Language language, Country country = AnyCountry); + QLocale(Language language, Script script, Country country); + QLocale(const QLocale &other); +#ifdef Q_COMPILER_RVALUE_REFS + QLocale &operator=(QLocale &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QLocale &operator=(const QLocale &other); + ~QLocale(); + + void swap(QLocale &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + Language language() const; + Script script() const; + Country country() const; + QString name() const; + + QString bcp47Name() const; + QString nativeLanguageName() const; + QString nativeCountryName() const; + + short toShort(const QString &s, bool *ok = Q_NULLPTR) const; + ushort toUShort(const QString &s, bool *ok = Q_NULLPTR) const; + int toInt(const QString &s, bool *ok = Q_NULLPTR) const; + uint toUInt(const QString &s, bool *ok = Q_NULLPTR) const; + qlonglong toLongLong(const QString &s, bool *ok = Q_NULLPTR) const; + qulonglong toULongLong(const QString &s, bool *ok = Q_NULLPTR) const; + float toFloat(const QString &s, bool *ok = Q_NULLPTR) const; + double toDouble(const QString &s, bool *ok = Q_NULLPTR) const; + + short toShort(const QStringRef &s, bool *ok = Q_NULLPTR) const; + ushort toUShort(const QStringRef &s, bool *ok = Q_NULLPTR) const; + int toInt(const QStringRef &s, bool *ok = Q_NULLPTR) const; + uint toUInt(const QStringRef &s, bool *ok = Q_NULLPTR) const; + qlonglong toLongLong(const QStringRef &s, bool *ok = Q_NULLPTR) const; + qulonglong toULongLong(const QStringRef &s, bool *ok = Q_NULLPTR) const; + float toFloat(const QStringRef &s, bool *ok = Q_NULLPTR) const; + double toDouble(const QStringRef &s, bool *ok = Q_NULLPTR) const; + + QString toString(qlonglong i) const; + QString toString(qulonglong i) const; + inline QString toString(short i) const; + inline QString toString(ushort i) const; + inline QString toString(int i) const; + inline QString toString(uint i) const; + QString toString(double i, char f = 'g', int prec = 6) const; + inline QString toString(float i, char f = 'g', int prec = 6) const; + QString toString(const QDate &date, const QString &formatStr) const; + QString toString(const QDate &date, FormatType format = LongFormat) const; + QString toString(const QTime &time, const QString &formatStr) const; + QString toString(const QTime &time, FormatType format = LongFormat) const; + QString toString(const QDateTime &dateTime, FormatType format = LongFormat) const; + QString toString(const QDateTime &dateTime, const QString &format) const; + + QString dateFormat(FormatType format = LongFormat) const; + QString timeFormat(FormatType format = LongFormat) const; + QString dateTimeFormat(FormatType format = LongFormat) const; +#ifndef QT_NO_DATESTRING + QDate toDate(const QString &string, FormatType = LongFormat) const; + QTime toTime(const QString &string, FormatType = LongFormat) const; + QDateTime toDateTime(const QString &string, FormatType format = LongFormat) const; + QDate toDate(const QString &string, const QString &format) const; + QTime toTime(const QString &string, const QString &format) const; + QDateTime toDateTime(const QString &string, const QString &format) const; +#endif + + // ### Qt 5: We need to return QString from these function since + // unicode data contains several characters for these fields. + QChar decimalPoint() const; + QChar groupSeparator() const; + QChar percent() const; + QChar zeroDigit() const; + QChar negativeSign() const; + QChar positiveSign() const; + QChar exponential() const; + + QString monthName(int, FormatType format = LongFormat) const; + QString standaloneMonthName(int, FormatType format = LongFormat) const; + QString dayName(int, FormatType format = LongFormat) const; + QString standaloneDayName(int, FormatType format = LongFormat) const; + + Qt::DayOfWeek firstDayOfWeek() const; + QList weekdays() const; + + QString amText() const; + QString pmText() const; + + MeasurementSystem measurementSystem() const; + + Qt::LayoutDirection textDirection() const; + + QString toUpper(const QString &str) const; + QString toLower(const QString &str) const; + + QString currencySymbol(CurrencySymbolFormat = CurrencySymbol) const; + QString toCurrencyString(qlonglong, const QString &symbol = QString()) const; + QString toCurrencyString(qulonglong, const QString &symbol = QString()) const; + inline QString toCurrencyString(short, const QString &symbol = QString()) const; + inline QString toCurrencyString(ushort, const QString &symbol = QString()) const; + inline QString toCurrencyString(int, const QString &symbol = QString()) const; + inline QString toCurrencyString(uint, const QString &symbol = QString()) const; +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + QString toCurrencyString(double, const QString &symbol = QString(), int precision = -1) const; + inline QString toCurrencyString(float i, const QString &symbol = QString(), int precision = -1) const + { return toCurrencyString(double(i), symbol, precision); } +#else + QString toCurrencyString(double, const QString &symbol = QString()) const; + QString toCurrencyString(double, const QString &symbol, int precision) const; + inline QString toCurrencyString(float i, const QString &symbol = QString()) const + { return toCurrencyString(double(i), symbol); } + inline QString toCurrencyString(float i, const QString &symbol, int precision) const + { return toCurrencyString(double(i), symbol, precision); } +#endif + + QStringList uiLanguages() const; + + bool operator==(const QLocale &other) const; + bool operator!=(const QLocale &other) const; + + static QString languageToString(Language language); + static QString countryToString(Country country); + static QString scriptToString(Script script); + static void setDefault(const QLocale &locale); + + static QLocale c() { return QLocale(C); } + static QLocale system(); + + static QList matchingLocales(QLocale::Language language, QLocale::Script script, QLocale::Country country); + static QList countriesForLanguage(Language lang); + + void setNumberOptions(NumberOptions options); + NumberOptions numberOptions() const; + + enum QuotationStyle { StandardQuotation, AlternateQuotation }; + QString quoteString(const QString &str, QuotationStyle style = StandardQuotation) const; + QString quoteString(const QStringRef &str, QuotationStyle style = StandardQuotation) const; + + QString createSeparatedList(const QStringList &strl) const; + +private: + QLocale(QLocalePrivate &dd); + friend class QLocalePrivate; + friend Q_CORE_EXPORT uint qHash(const QLocale &key, uint seed) Q_DECL_NOTHROW; + + QSharedDataPointer d; +}; +Q_DECLARE_SHARED(QLocale) +Q_DECLARE_OPERATORS_FOR_FLAGS(QLocale::NumberOptions) + +inline QString QLocale::toString(short i) const + { return toString(qlonglong(i)); } +inline QString QLocale::toString(ushort i) const + { return toString(qulonglong(i)); } +inline QString QLocale::toString(int i) const + { return toString(qlonglong(i)); } +inline QString QLocale::toString(uint i) const + { return toString(qulonglong(i)); } +inline QString QLocale::toString(float i, char f, int prec) const + { return toString(double(i), f, prec); } + +inline QString QLocale::toCurrencyString(short i, const QString &symbol) const + { return toCurrencyString(qlonglong(i), symbol); } +inline QString QLocale::toCurrencyString(ushort i, const QString &symbol) const + { return toCurrencyString(qulonglong(i), symbol); } +inline QString QLocale::toCurrencyString(int i, const QString &symbol) const +{ return toCurrencyString(qlonglong(i), symbol); } +inline QString QLocale::toCurrencyString(uint i, const QString &symbol) const +{ return toCurrencyString(qulonglong(i), symbol); } + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QLocale &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QLocale &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QLocale &); +#endif + +QT_END_NAMESPACE + +#endif // QLOCALE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qlockfile.h b/qrenderdoc/3rdparty/qt/include/QtCore/qlockfile.h new file mode 100644 index 000000000..8b9490090 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qlockfile.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2013 David Faure +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCKFILE_H +#define QLOCKFILE_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QLockFilePrivate; + +class Q_CORE_EXPORT QLockFile +{ +public: + QLockFile(const QString &fileName); + ~QLockFile(); + + bool lock(); + bool tryLock(int timeout = 0); + void unlock(); + + void setStaleLockTime(int); + int staleLockTime() const; + + bool isLocked() const; + bool getLockInfo(qint64 *pid, QString *hostname, QString *appname) const; + bool removeStaleLockFile(); + + enum LockError { + NoError = 0, + LockFailedError = 1, + PermissionError = 2, + UnknownError = 3 + }; + LockError error() const; + +protected: + QScopedPointer d_ptr; + +private: + Q_DECLARE_PRIVATE(QLockFile) + Q_DISABLE_COPY(QLockFile) +}; + +QT_END_NAMESPACE + +#endif // QLOCKFILE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qlogging.h b/qrenderdoc/3rdparty/qt/include/QtCore/qlogging.h new file mode 100644 index 000000000..ec2119878 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qlogging.h @@ -0,0 +1,198 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QLOGGING_H +#define QLOGGING_H + +#if 0 +// header is automatically included in qglobal.h +#pragma qt_no_master_include +#endif + +QT_BEGIN_NAMESPACE + +/* + Forward declarations only. + + In order to use the qDebug() stream, you must #include +*/ +class QDebug; +class QNoDebug; + +enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtInfoMsg, QtSystemMsg = QtCriticalMsg }; + +class QMessageLogContext +{ + Q_DISABLE_COPY(QMessageLogContext) +public: + Q_DECL_CONSTEXPR QMessageLogContext() + : version(2), line(0), file(Q_NULLPTR), function(Q_NULLPTR), category(Q_NULLPTR) {} + Q_DECL_CONSTEXPR QMessageLogContext(const char *fileName, int lineNumber, const char *functionName, const char *categoryName) + : version(2), line(lineNumber), file(fileName), function(functionName), category(categoryName) {} + + void copy(const QMessageLogContext &logContext); + + int version; + int line; + const char *file; + const char *function; + const char *category; + +private: + friend class QMessageLogger; + friend class QDebug; +}; + +class QLoggingCategory; + +class Q_CORE_EXPORT QMessageLogger +{ + Q_DISABLE_COPY(QMessageLogger) +public: + Q_DECL_CONSTEXPR QMessageLogger() : context() {} + Q_DECL_CONSTEXPR QMessageLogger(const char *file, int line, const char *function) + : context(file, line, function, "default") {} + Q_DECL_CONSTEXPR QMessageLogger(const char *file, int line, const char *function, const char *category) + : context(file, line, function, category) {} + + void debug(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3); + void noDebug(const char *, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3) + {} + void info(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3); + void warning(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3); + void critical(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3); + + typedef const QLoggingCategory &(*CategoryFunction)(); + + void debug(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void debug(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void info(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void info(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void warning(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void warning(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void critical(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void critical(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + +#ifndef Q_CC_MSVC + Q_NORETURN +#endif + void fatal(const char *msg, ...) const Q_DECL_NOTHROW Q_ATTRIBUTE_FORMAT_PRINTF(2, 3); + +#ifndef QT_NO_DEBUG_STREAM + QDebug debug() const; + QDebug debug(const QLoggingCategory &cat) const; + QDebug debug(CategoryFunction catFunc) const; + QDebug info() const; + QDebug info(const QLoggingCategory &cat) const; + QDebug info(CategoryFunction catFunc) const; + QDebug warning() const; + QDebug warning(const QLoggingCategory &cat) const; + QDebug warning(CategoryFunction catFunc) const; + QDebug critical() const; + QDebug critical(const QLoggingCategory &cat) const; + QDebug critical(CategoryFunction catFunc) const; + + QNoDebug noDebug() const Q_DECL_NOTHROW; +#endif // QT_NO_DEBUG_STREAM + +private: + QMessageLogContext context; +}; + +#if !defined(QT_MESSAGELOGCONTEXT) && !defined(QT_NO_MESSAGELOGCONTEXT) +# if defined(QT_NO_DEBUG) +# define QT_NO_MESSAGELOGCONTEXT +# else +# define QT_MESSAGELOGCONTEXT +# endif +#endif + +#ifdef QT_MESSAGELOGCONTEXT + #define QT_MESSAGELOG_FILE __FILE__ + #define QT_MESSAGELOG_LINE __LINE__ + #define QT_MESSAGELOG_FUNC Q_FUNC_INFO +#else + #define QT_MESSAGELOG_FILE Q_NULLPTR + #define QT_MESSAGELOG_LINE 0 + #define QT_MESSAGELOG_FUNC Q_NULLPTR +#endif + +#define qDebug QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug +#define qInfo QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).info +#define qWarning QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).warning +#define qCritical QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).critical +#define qFatal QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).fatal + +#define QT_NO_QDEBUG_MACRO while (false) QMessageLogger().noDebug + +#if defined(QT_NO_DEBUG_OUTPUT) +# undef qDebug +# define qDebug QT_NO_QDEBUG_MACRO +#endif +#if defined(QT_NO_INFO_OUTPUT) +# undef qInfo +# define qInfo QT_NO_QDEBUG_MACRO +#endif +#if defined(QT_NO_WARNING_OUTPUT) +# undef qWarning +# define qWarning QT_NO_QDEBUG_MACRO +#endif + +Q_CORE_EXPORT void qt_message_output(QtMsgType, const QMessageLogContext &context, + const QString &message); + +Q_CORE_EXPORT void qErrnoWarning(int code, const char *msg, ...); +Q_CORE_EXPORT void qErrnoWarning(const char *msg, ...); + +#if QT_DEPRECATED_SINCE(5, 0)// deprecated. Use qInstallMessageHandler instead! +typedef void (*QtMsgHandler)(QtMsgType, const char *); +Q_CORE_EXPORT QT_DEPRECATED QtMsgHandler qInstallMsgHandler(QtMsgHandler); +#endif + +typedef void (*QtMessageHandler)(QtMsgType, const QMessageLogContext &, const QString &); +Q_CORE_EXPORT QtMessageHandler qInstallMessageHandler(QtMessageHandler); + +Q_CORE_EXPORT void qSetMessagePattern(const QString &messagePattern); +Q_CORE_EXPORT QString qFormatLogMessage(QtMsgType type, const QMessageLogContext &context, + const QString &buf); + +QT_END_NAMESPACE +#endif // QLOGGING_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qloggingcategory.h b/qrenderdoc/3rdparty/qt/include/QtCore/qloggingcategory.h new file mode 100644 index 000000000..489e25008 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qloggingcategory.h @@ -0,0 +1,169 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOGGINGCATEGORY_H +#define QLOGGINGCATEGORY_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QLoggingCategory +{ + Q_DISABLE_COPY(QLoggingCategory) +public: + // ### Qt 6: Merge constructors + explicit QLoggingCategory(const char *category); + QLoggingCategory(const char *category, QtMsgType severityLevel); + ~QLoggingCategory(); + + bool isEnabled(QtMsgType type) const; + void setEnabled(QtMsgType type, bool enable); + +#ifdef Q_ATOMIC_INT8_IS_SUPPORTED + bool isDebugEnabled() const { return bools.enabledDebug.load(); } + bool isInfoEnabled() const { return bools.enabledInfo.load(); } + bool isWarningEnabled() const { return bools.enabledWarning.load(); } + bool isCriticalEnabled() const { return bools.enabledCritical.load(); } +#else + bool isDebugEnabled() const { return enabled.load() >> DebugShift & 1; } + bool isInfoEnabled() const { return enabled.load() >> InfoShift & 1; } + bool isWarningEnabled() const { return enabled.load() >> WarningShift & 1; } + bool isCriticalEnabled() const { return enabled.load() >> CriticalShift & 1; } +#endif + const char *categoryName() const { return name; } + + // allows usage of both factory method and variable in qCX macros + QLoggingCategory &operator()() { return *this; } + const QLoggingCategory &operator()() const { return *this; } + + static QLoggingCategory *defaultCategory(); + + typedef void (*CategoryFilter)(QLoggingCategory*); + static CategoryFilter installFilter(CategoryFilter); + + static void setFilterRules(const QString &rules); + +private: + void init(const char *category, QtMsgType severityLevel); + + Q_DECL_UNUSED_MEMBER void *d; // reserved for future use + const char *name; + +#ifdef Q_BIG_ENDIAN + enum { DebugShift = 0, WarningShift = 8, CriticalShift = 16, InfoShift = 24 }; +#else + enum { DebugShift = 24, WarningShift = 16, CriticalShift = 8, InfoShift = 0}; +#endif + + struct AtomicBools { +#ifdef Q_ATOMIC_INT8_IS_SUPPORTED + QBasicAtomicInteger enabledDebug; + QBasicAtomicInteger enabledWarning; + QBasicAtomicInteger enabledCritical; + QBasicAtomicInteger enabledInfo; +#endif + }; + union { + AtomicBools bools; + QBasicAtomicInt enabled; + }; + Q_DECL_UNUSED_MEMBER bool placeholder[4]; // reserved for future use +}; + +#define Q_DECLARE_LOGGING_CATEGORY(name) \ + extern const QLoggingCategory &name(); + +#if defined(Q_COMPILER_VARIADIC_MACROS) || defined(Q_MOC_RUN) + +#define Q_LOGGING_CATEGORY(name, ...) \ + const QLoggingCategory &name() \ + { \ + static const QLoggingCategory category(__VA_ARGS__); \ + return category; \ + } + +#define qCDebug(category, ...) \ + for (bool qt_category_enabled = category().isDebugEnabled(); qt_category_enabled; qt_category_enabled = false) \ + QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC, category().categoryName()).debug(__VA_ARGS__) +#define qCInfo(category, ...) \ + for (bool qt_category_enabled = category().isInfoEnabled(); qt_category_enabled; qt_category_enabled = false) \ + QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC, category().categoryName()).info(__VA_ARGS__) +#define qCWarning(category, ...) \ + for (bool qt_category_enabled = category().isWarningEnabled(); qt_category_enabled; qt_category_enabled = false) \ + QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC, category().categoryName()).warning(__VA_ARGS__) +#define qCCritical(category, ...) \ + for (bool qt_category_enabled = category().isCriticalEnabled(); qt_category_enabled; qt_category_enabled = false) \ + QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC, category().categoryName()).critical(__VA_ARGS__) + +#else // defined(Q_COMPILER_VARIADIC_MACROS) || defined(Q_MOC_RUN) + +// Optional msgType argument not supported +#define Q_LOGGING_CATEGORY(name, string) \ + const QLoggingCategory &name() \ + { \ + static const QLoggingCategory category(string); \ + return category; \ + } + +// check for enabled category inside QMessageLogger. +#define qCDebug qDebug +#define qCInfo qInfo +#define qCWarning qWarning +#define qCCritical qCritical + +#endif // Q_COMPILER_VARIADIC_MACROS || defined(Q_MOC_RUN) + +#if defined(QT_NO_DEBUG_OUTPUT) +# undef qCDebug +# define qCDebug(category) QT_NO_QDEBUG_MACRO() +#endif +#if defined(QT_NO_INFO_OUTPUT) +# undef qCInfo +# define qCInfo(category) QT_NO_QDEBUG_MACRO() +#endif +#if defined(QT_NO_WARNING_OUTPUT) +# undef qCWarning +# define qCWarning(category) QT_NO_QDEBUG_MACRO() +#endif + +QT_END_NAMESPACE + +#endif // QLOGGINGCATEGORY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qmap.h b/qrenderdoc/3rdparty/qt/include/QtCore/qmap.h new file mode 100644 index 000000000..43acf09ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qmap.h @@ -0,0 +1,1287 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMAP_H +#define QMAP_H + +#include +#include +#include +#include + +#ifdef Q_MAP_DEBUG +#include +#endif + +#include +#include +#include + +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + +QT_BEGIN_NAMESPACE + +/* + QMap uses qMapLessThanKey() to compare keys. The default + implementation uses operator<(). For pointer types, + qMapLessThanKey() uses std::less (because operator<() on + pointers can be used only between pointers in the same array). +*/ + +template inline bool qMapLessThanKey(const Key &key1, const Key &key2) +{ + return key1 < key2; +} + +template inline bool qMapLessThanKey(const Ptr *key1, const Ptr *key2) +{ + return std::less()(key1, key2); +} + +struct QMapDataBase; +template struct QMapData; + +struct Q_CORE_EXPORT QMapNodeBase +{ + quintptr p; + QMapNodeBase *left; + QMapNodeBase *right; + + enum Color { Red = 0, Black = 1 }; + enum { Mask = 3 }; // reserve the second bit as well + + const QMapNodeBase *nextNode() const; + QMapNodeBase *nextNode() { return const_cast(const_cast(this)->nextNode()); } + const QMapNodeBase *previousNode() const; + QMapNodeBase *previousNode() { return const_cast(const_cast(this)->previousNode()); } + + Color color() const { return Color(p & 1); } + void setColor(Color c) { if (c == Black) p |= Black; else p &= ~Black; } + QMapNodeBase *parent() const { return reinterpret_cast(p & ~Mask); } + void setParent(QMapNodeBase *pp) { p = (p & Mask) | quintptr(pp); } + + template + static typename std::enable_if::isComplex>::type + callDestructorIfNecessary(T &t) Q_DECL_NOTHROW { Q_UNUSED(t); t.~T(); } // Q_UNUSED: silence MSVC unused 't' warning + template + static typename std::enable_if::isComplex>::type + callDestructorIfNecessary(T &) Q_DECL_NOTHROW {} +}; + +template +struct QMapNode : public QMapNodeBase +{ + Key key; + T value; + + inline QMapNode *leftNode() const { return static_cast(left); } + inline QMapNode *rightNode() const { return static_cast(right); } + + inline const QMapNode *nextNode() const { return reinterpret_cast(QMapNodeBase::nextNode()); } + inline const QMapNode *previousNode() const { return static_cast(QMapNodeBase::previousNode()); } + inline QMapNode *nextNode() { return reinterpret_cast(QMapNodeBase::nextNode()); } + inline QMapNode *previousNode() { return static_cast(QMapNodeBase::previousNode()); } + + QMapNode *copy(QMapData *d) const; + + void destroySubTree() + { + callDestructorIfNecessary(key); + callDestructorIfNecessary(value); + doDestroySubTree(std::integral_constant::isComplex || QTypeInfo::isComplex>()); + } + + QMapNode *lowerBound(const Key &key); + QMapNode *upperBound(const Key &key); + +private: + void doDestroySubTree(std::false_type) {} + void doDestroySubTree(std::true_type) + { + if (left) + leftNode()->destroySubTree(); + if (right) + rightNode()->destroySubTree(); + } + + QMapNode() Q_DECL_EQ_DELETE; + Q_DISABLE_COPY(QMapNode) +}; + +template +inline QMapNode *QMapNode::lowerBound(const Key &akey) +{ + QMapNode *n = this; + QMapNode *lastNode = Q_NULLPTR; + while (n) { + if (!qMapLessThanKey(n->key, akey)) { + lastNode = n; + n = n->leftNode(); + } else { + n = n->rightNode(); + } + } + return lastNode; +} + +template +inline QMapNode *QMapNode::upperBound(const Key &akey) +{ + QMapNode *n = this; + QMapNode *lastNode = Q_NULLPTR; + while (n) { + if (qMapLessThanKey(akey, n->key)) { + lastNode = n; + n = n->leftNode(); + } else { + n = n->rightNode(); + } + } + return lastNode; +} + + + +struct Q_CORE_EXPORT QMapDataBase +{ + QtPrivate::RefCount ref; + int size; + QMapNodeBase header; + QMapNodeBase *mostLeftNode; + + void rotateLeft(QMapNodeBase *x); + void rotateRight(QMapNodeBase *x); + void rebalance(QMapNodeBase *x); + void freeNodeAndRebalance(QMapNodeBase *z); + void recalcMostLeftNode(); + + QMapNodeBase *createNode(int size, int alignment, QMapNodeBase *parent, bool left); + void freeTree(QMapNodeBase *root, int alignment); + + static const QMapDataBase shared_null; + + static QMapDataBase *createData(); + static void freeData(QMapDataBase *d); +}; + +template +struct QMapData : public QMapDataBase +{ + typedef QMapNode Node; + + Node *root() const { return static_cast(header.left); } + + // using reinterpret_cast because QMapDataBase::header is not + // actually a QMapNode. + const Node *end() const { return reinterpret_cast(&header); } + Node *end() { return reinterpret_cast(&header); } + const Node *begin() const { if (root()) return static_cast(mostLeftNode); return end(); } + Node *begin() { if (root()) return static_cast(mostLeftNode); return end(); } + + void deleteNode(Node *z); + Node *findNode(const Key &akey) const; + void nodeRange(const Key &akey, Node **firstNode, Node **lastNode); + + Node *createNode(const Key &k, const T &v, Node *parent = Q_NULLPTR, bool left = false) + { + Node *n = static_cast(QMapDataBase::createNode(sizeof(Node), Q_ALIGNOF(Node), + parent, left)); + QT_TRY { + new (&n->key) Key(k); + QT_TRY { + new (&n->value) T(v); + } QT_CATCH(...) { + n->key.~Key(); + QT_RETHROW; + } + } QT_CATCH(...) { + QMapDataBase::freeNodeAndRebalance(n); + QT_RETHROW; + } + return n; + } + + static QMapData *create() { + return static_cast(createData()); + } + + void destroy() { + if (root()) { + root()->destroySubTree(); + freeTree(header.left, Q_ALIGNOF(Node)); + } + freeData(this); + } +}; + +template +QMapNode *QMapNode::copy(QMapData *d) const +{ + QMapNode *n = d->createNode(key, value); + n->setColor(color()); + if (left) { + n->left = leftNode()->copy(d); + n->left->setParent(n); + } else { + n->left = Q_NULLPTR; + } + if (right) { + n->right = rightNode()->copy(d); + n->right->setParent(n); + } else { + n->right = Q_NULLPTR; + } + return n; +} + +template +void QMapData::deleteNode(QMapNode *z) +{ + QMapNodeBase::callDestructorIfNecessary(z->key); + QMapNodeBase::callDestructorIfNecessary(z->value); + freeNodeAndRebalance(z); +} + +template +QMapNode *QMapData::findNode(const Key &akey) const +{ + if (Node *r = root()) { + Node *lb = r->lowerBound(akey); + if (lb && !qMapLessThanKey(akey, lb->key)) + return lb; + } + return Q_NULLPTR; +} + + +template +void QMapData::nodeRange(const Key &akey, QMapNode **firstNode, QMapNode **lastNode) +{ + Node *n = root(); + Node *l = end(); + while (n) { + if (qMapLessThanKey(akey, n->key)) { + l = n; + n = n->leftNode(); + } else if (qMapLessThanKey(n->key, akey)) { + n = n->rightNode(); + } else { + *firstNode = n->leftNode() ? n->leftNode()->lowerBound(akey) : Q_NULLPTR; + if (!*firstNode) + *firstNode = n; + *lastNode = n->rightNode() ? n->rightNode()->upperBound(akey) : Q_NULLPTR; + if (!*lastNode) + *lastNode = l; + return; + } + } + *firstNode = *lastNode = l; +} + + +template +class QMap +{ + typedef QMapNode Node; + + QMapData *d; + +public: + inline QMap() Q_DECL_NOTHROW : d(static_cast *>(const_cast(&QMapDataBase::shared_null))) { } +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMap(std::initializer_list > list) + : d(static_cast *>(const_cast(&QMapDataBase::shared_null))) + { + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif + QMap(const QMap &other); + + inline ~QMap() { if (!d->ref.deref()) d->destroy(); } + + QMap &operator=(const QMap &other); +#ifdef Q_COMPILER_RVALUE_REFS + inline QMap(QMap &&other) Q_DECL_NOTHROW + : d(other.d) + { + other.d = static_cast *>( + const_cast(&QMapDataBase::shared_null)); + } + + inline QMap &operator=(QMap &&other) Q_DECL_NOTHROW + { QMap moved(std::move(other)); swap(moved); return *this; } +#endif + inline void swap(QMap &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + explicit QMap(const typename std::map &other); + std::map toStdMap() const; + + bool operator==(const QMap &other) const; + inline bool operator!=(const QMap &other) const { return !(*this == other); } + + inline int size() const { return d->size; } + + inline bool isEmpty() const { return d->size == 0; } + + inline void detach() { if (d->ref.isShared()) detach_helper(); } + inline bool isDetached() const { return !d->ref.isShared(); } +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + inline void setSharable(bool sharable) + { + if (sharable == d->ref.isSharable()) + return; + if (!sharable) + detach(); + // Don't call on shared_null + d->ref.setSharable(sharable); + } +#endif + inline bool isSharedWith(const QMap &other) const { return d == other.d; } + + void clear(); + + int remove(const Key &key); + T take(const Key &key); + + bool contains(const Key &key) const; + const Key key(const T &value, const Key &defaultKey = Key()) const; + const T value(const Key &key, const T &defaultValue = T()) const; + T &operator[](const Key &key); + const T operator[](const Key &key) const; + + QList uniqueKeys() const; + QList keys() const; + QList keys(const T &value) const; + QList values() const; + QList values(const Key &key) const; + int count(const Key &key) const; + + inline const Key &firstKey() const { Q_ASSERT(!isEmpty()); return constBegin().key(); } + inline const Key &lastKey() const { Q_ASSERT(!isEmpty()); return (constEnd() - 1).key(); } + + inline T &first() { Q_ASSERT(!isEmpty()); return *begin(); } + inline const T &first() const { Q_ASSERT(!isEmpty()); return *constBegin(); } + inline T &last() { Q_ASSERT(!isEmpty()); return *(end() - 1); } + inline const T &last() const { Q_ASSERT(!isEmpty()); return *(constEnd() - 1); } + + class const_iterator; + + class iterator + { + friend class const_iterator; + Node *i; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef T *pointer; + typedef T &reference; + + inline iterator() : i(Q_NULLPTR) { } + inline iterator(Node *node) : i(node) { } + + inline const Key &key() const { return i->key; } + inline T &value() const { return i->value; } + inline T &operator*() const { return i->value; } + inline T *operator->() const { return &i->value; } + inline bool operator==(const iterator &o) const { return i == o.i; } + inline bool operator!=(const iterator &o) const { return i != o.i; } + + inline iterator &operator++() { + i = i->nextNode(); + return *this; + } + inline iterator operator++(int) { + iterator r = *this; + i = i->nextNode(); + return r; + } + inline iterator &operator--() { + i = i->previousNode(); + return *this; + } + inline iterator operator--(int) { + iterator r = *this; + i = i->previousNode(); + return r; + } + inline iterator operator+(int j) const + { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } + inline iterator operator-(int j) const { return operator+(-j); } + inline iterator &operator+=(int j) { return *this = *this + j; } + inline iterator &operator-=(int j) { return *this = *this - j; } + +#ifndef QT_STRICT_ITERATORS + public: + inline bool operator==(const const_iterator &o) const + { return i == o.i; } + inline bool operator!=(const const_iterator &o) const + { return i != o.i; } +#endif + friend class QMap; + }; + friend class iterator; + + class const_iterator + { + friend class iterator; + const Node *i; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + Q_DECL_CONSTEXPR inline const_iterator() : i(Q_NULLPTR) { } + inline const_iterator(const Node *node) : i(node) { } +#ifdef QT_STRICT_ITERATORS + explicit inline const_iterator(const iterator &o) +#else + inline const_iterator(const iterator &o) +#endif + { i = o.i; } + + inline const Key &key() const { return i->key; } + inline const T &value() const { return i->value; } + inline const T &operator*() const { return i->value; } + inline const T *operator->() const { return &i->value; } + Q_DECL_CONSTEXPR inline bool operator==(const const_iterator &o) const { return i == o.i; } + Q_DECL_CONSTEXPR inline bool operator!=(const const_iterator &o) const { return i != o.i; } + + inline const_iterator &operator++() { + i = i->nextNode(); + return *this; + } + inline const_iterator operator++(int) { + const_iterator r = *this; + i = i->nextNode(); + return r; + } + inline const_iterator &operator--() { + i = i->previousNode(); + return *this; + } + inline const_iterator operator--(int) { + const_iterator r = *this; + i = i->previousNode(); + return r; + } + inline const_iterator operator+(int j) const + { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } + inline const_iterator operator-(int j) const { return operator+(-j); } + inline const_iterator &operator+=(int j) { return *this = *this + j; } + inline const_iterator &operator-=(int j) { return *this = *this - j; } + +#ifdef QT_STRICT_ITERATORS + private: + inline bool operator==(const iterator &o) const { return operator==(const_iterator(o)); } + inline bool operator!=(const iterator &o) const { return operator!=(const_iterator(o)); } +#endif + friend class QMap; + }; + friend class const_iterator; + + class key_iterator + { + const_iterator i; + + public: + typedef typename const_iterator::iterator_category iterator_category; + typedef typename const_iterator::difference_type difference_type; + typedef Key value_type; + typedef const Key *pointer; + typedef const Key &reference; + + key_iterator() = default; + explicit key_iterator(const_iterator o) : i(o) { } + + const Key &operator*() const { return i.key(); } + const Key *operator->() const { return &i.key(); } + bool operator==(key_iterator o) const { return i == o.i; } + bool operator!=(key_iterator o) const { return i != o.i; } + + inline key_iterator &operator++() { ++i; return *this; } + inline key_iterator operator++(int) { return key_iterator(i++);} + inline key_iterator &operator--() { --i; return *this; } + inline key_iterator operator--(int) { return key_iterator(i--); } + const_iterator base() const { return i; } + }; + + + // STL style + inline iterator begin() { detach(); return iterator(d->begin()); } + inline const_iterator begin() const { return const_iterator(d->begin()); } + inline const_iterator constBegin() const { return const_iterator(d->begin()); } + inline const_iterator cbegin() const { return const_iterator(d->begin()); } + inline iterator end() { detach(); return iterator(d->end()); } + inline const_iterator end() const { return const_iterator(d->end()); } + inline const_iterator constEnd() const { return const_iterator(d->end()); } + inline const_iterator cend() const { return const_iterator(d->end()); } + inline key_iterator keyBegin() const { return key_iterator(begin()); } + inline key_iterator keyEnd() const { return key_iterator(end()); } + iterator erase(iterator it); + + // more Qt + typedef iterator Iterator; + typedef const_iterator ConstIterator; + inline int count() const { return d->size; } + iterator find(const Key &key); + const_iterator find(const Key &key) const; + const_iterator constFind(const Key &key) const; + iterator lowerBound(const Key &key); + const_iterator lowerBound(const Key &key) const; + 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 &unite(const QMap &other); + + // STL compatibility + typedef Key key_type; + typedef T mapped_type; + typedef qptrdiff difference_type; + typedef int size_type; + inline bool empty() const { return isEmpty(); } + QPair equal_range(const Key &akey); + QPair equal_range(const Key &akey) const; + +#ifdef Q_MAP_DEBUG + void dump() const; +#endif + +private: + void detach_helper(); + bool isValidIterator(const const_iterator &ci) const + { +#if defined(QT_DEBUG) && !defined(Q_MAP_NO_ITERATOR_DEBUG) + const QMapNodeBase *n = ci.i; + while (n->parent()) + n = n->parent(); + return n->left == d->root(); +#else + Q_UNUSED(ci); + return true; +#endif + } +}; + +template +inline QMap::QMap(const QMap &other) +{ + if (other.d->ref.ref()) { + d = other.d; + } else { + d = QMapData::create(); + if (other.d->header.left) { + d->header.left = static_cast(other.d->header.left)->copy(d); + d->header.left->setParent(&d->header); + d->recalcMostLeftNode(); + } + } +} + +template +Q_INLINE_TEMPLATE QMap &QMap::operator=(const QMap &other) +{ + if (d != other.d) { + QMap tmp(other); + tmp.swap(*this); + } + return *this; +} + +template +Q_INLINE_TEMPLATE void QMap::clear() +{ + *this = QMap(); +} + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wreturn-stack-address") + +template +Q_INLINE_TEMPLATE const T QMap::value(const Key &akey, const T &adefaultValue) const +{ + Node *n = d->findNode(akey); + return n ? n->value : adefaultValue; +} + +QT_WARNING_POP + +template +Q_INLINE_TEMPLATE const T QMap::operator[](const Key &akey) const +{ + return value(akey); +} + +template +Q_INLINE_TEMPLATE T &QMap::operator[](const Key &akey) +{ + detach(); + Node *n = d->findNode(akey); + if (!n) + return *insert(akey, T()); + return n->value; +} + +template +Q_INLINE_TEMPLATE int QMap::count(const Key &akey) const +{ + Node *firstNode; + Node *lastNode; + d->nodeRange(akey, &firstNode, &lastNode); + + const_iterator ci_first(firstNode); + const const_iterator ci_last(lastNode); + int cnt = 0; + while (ci_first != ci_last) { + ++cnt; + ++ci_first; + } + return cnt; +} + +template +Q_INLINE_TEMPLATE bool QMap::contains(const Key &akey) const +{ + return d->findNode(akey) != Q_NULLPTR; +} + +template +Q_INLINE_TEMPLATE typename QMap::iterator QMap::insert(const Key &akey, const T &avalue) +{ + detach(); + Node *n = d->root(); + Node *y = d->end(); + Node *lastNode = Q_NULLPTR; + bool left = true; + while (n) { + y = n; + if (!qMapLessThanKey(n->key, akey)) { + lastNode = n; + left = true; + n = n->leftNode(); + } else { + left = false; + n = n->rightNode(); + } + } + if (lastNode && !qMapLessThanKey(akey, lastNode->key)) { + lastNode->value = avalue; + return iterator(lastNode); + } + Node *z = d->createNode(akey, avalue, y, left); + return iterator(z); +} + +template +typename QMap::iterator QMap::insert(const_iterator pos, const Key &akey, const T &avalue) +{ + if (d->ref.isShared()) + return this->insert(akey, avalue); + + Q_ASSERT_X(isValidIterator(pos), "QMap::insert", "The specified const_iterator argument 'it' is invalid"); + + if (pos == constEnd()) { + // Hint is that the Node is larger than (or equal to) the largest value. + Node *n = static_cast(pos.i->left); + if (n) { + while (n->right) + n = static_cast(n->right); + + if (!qMapLessThanKey(n->key, akey)) + return this->insert(akey, avalue); // ignore hint + // This can be optimized by checking equal too. + // we can overwrite if previous node key is strictly smaller + // (or there is no previous node) + + Node *z = d->createNode(akey, avalue, n, false); // insert right most + return iterator(z); + } + return this->insert(akey, avalue); + } else { + // Hint indicates that the node should be less (or equal to) the hint given + // but larger than the previous value. + Node *next = const_cast(pos.i); + if (qMapLessThanKey(next->key, akey)) + return this->insert(akey, avalue); // ignore hint + + if (pos == constBegin()) { + // There is no previous value + // Maybe overwrite left most value + if (!qMapLessThanKey(akey, next->key)) { + next->value = avalue; // overwrite current iterator + return iterator(next); + } + // insert left most. + Node *z = d->createNode(akey, avalue, begin().i, true); + return iterator(z); + } else { + Node *prev = const_cast(pos.i->previousNode()); + if (!qMapLessThanKey(prev->key, akey)) { + return this->insert(akey, avalue); // ignore hint + } + // Hint is ok + if (!qMapLessThanKey(akey, next->key)) { + next->value = avalue; // overwrite current iterator + return iterator(next); + } + + // we need to insert (not overwrite) + if (prev->right == Q_NULLPTR) { + Node *z = d->createNode(akey, avalue, prev, false); + return iterator(z); + } + if (next->left == Q_NULLPTR) { + Node *z = d->createNode(akey, avalue, next, true); + return iterator(z); + } + Q_ASSERT(false); // We should have prev->right == Q_NULLPTR or next->left == Q_NULLPTR. + return this->insert(akey, avalue); + } + } +} + +template +Q_INLINE_TEMPLATE typename QMap::iterator QMap::insertMulti(const Key &akey, + const T &avalue) +{ + detach(); + Node* y = d->end(); + Node* x = static_cast(d->root()); + bool left = true; + while (x != Q_NULLPTR) { + left = !qMapLessThanKey(x->key, akey); + y = x; + x = left ? x->leftNode() : x->rightNode(); + } + Node *z = d->createNode(akey, avalue, y, left); + return iterator(z); +} + +template +typename QMap::iterator QMap::insertMulti(const_iterator pos, const Key &akey, const T &avalue) +{ + if (d->ref.isShared()) + return this->insertMulti(akey, avalue); + + Q_ASSERT_X(isValidIterator(pos), "QMap::insertMulti", "The specified const_iterator argument 'pos' is invalid"); + + if (pos == constEnd()) { + // Hint is that the Node is larger than (or equal to) the largest value. + Node *n = static_cast(pos.i->left); + if (n) { + while (n->right) + n = static_cast(n->right); + + if (!qMapLessThanKey(n->key, akey)) + return this->insertMulti(akey, avalue); // ignore hint + Node *z = d->createNode(akey, avalue, n, false); // insert right most + return iterator(z); + } + return this->insertMulti(akey, avalue); + } else { + // Hint indicates that the node should be less (or equal to) the hint given + // but larger than the previous value. + Node *next = const_cast(pos.i); + if (qMapLessThanKey(next->key, akey)) + return this->insertMulti(akey, avalue); // ignore hint + + if (pos == constBegin()) { + // There is no previous value (insert left most) + Node *z = d->createNode(akey, avalue, begin().i, true); + return iterator(z); + } else { + Node *prev = const_cast(pos.i->previousNode()); + if (!qMapLessThanKey(prev->key, akey)) + return this->insertMulti(akey, avalue); // ignore hint + + // Hint is ok - do insert + if (prev->right == Q_NULLPTR) { + Node *z = d->createNode(akey, avalue, prev, false); + return iterator(z); + } + if (next->left == Q_NULLPTR) { + Node *z = d->createNode(akey, avalue, next, true); + return iterator(z); + } + Q_ASSERT(false); // We should have prev->right == Q_NULLPTR or next->left == Q_NULLPTR. + return this->insertMulti(akey, avalue); + } + } +} + + +template +Q_INLINE_TEMPLATE typename QMap::const_iterator QMap::constFind(const Key &akey) const +{ + Node *n = d->findNode(akey); + return const_iterator(n ? n : d->end()); +} + +template +Q_INLINE_TEMPLATE typename QMap::const_iterator QMap::find(const Key &akey) const +{ + return constFind(akey); +} + +template +Q_INLINE_TEMPLATE typename QMap::iterator QMap::find(const Key &akey) +{ + detach(); + Node *n = d->findNode(akey); + return iterator(n ? n : d->end()); +} + +template +Q_INLINE_TEMPLATE QMap &QMap::unite(const QMap &other) +{ + QMap copy(other); + const_iterator it = copy.constEnd(); + const const_iterator b = copy.constBegin(); + while (it != b) { + --it; + insertMulti(it.key(), it.value()); + } + return *this; +} + +template +QPair::iterator, typename QMap::iterator> QMap::equal_range(const Key &akey) +{ + detach(); + Node *firstNode, *lastNode; + d->nodeRange(akey, &firstNode, &lastNode); + return QPair(iterator(firstNode), iterator(lastNode)); +} + +template +QPair::const_iterator, typename QMap::const_iterator> +QMap::equal_range(const Key &akey) const +{ + Node *firstNode, *lastNode; + d->nodeRange(akey, &firstNode, &lastNode); + return qMakePair(const_iterator(firstNode), const_iterator(lastNode)); +} + +#ifdef Q_MAP_DEBUG +template +void QMap::dump() const +{ + const_iterator it = begin(); + qDebug("map dump:"); + while (it != end()) { + const QMapNodeBase *n = it.i; + int depth = 0; + while (n && n != d->root()) { + ++depth; + n = n->parent(); + } + QByteArray space(4*depth, ' '); + qDebug() << space << (it.i->color() == Node::Red ? "Red " : "Black") << it.i << it.i->left << it.i->right + << it.key() << it.value(); + ++it; + } + qDebug("---------"); +} +#endif + +template +Q_OUTOFLINE_TEMPLATE int QMap::remove(const Key &akey) +{ + detach(); + int n = 0; + while (Node *node = d->findNode(akey)) { + d->deleteNode(node); + ++n; + } + return n; +} + +template +Q_OUTOFLINE_TEMPLATE T QMap::take(const Key &akey) +{ + detach(); + + Node *node = d->findNode(akey); + if (node) { + T t = node->value; + d->deleteNode(node); + return t; + } + return T(); +} + +template +Q_OUTOFLINE_TEMPLATE typename QMap::iterator QMap::erase(iterator it) +{ + if (it == iterator(d->end())) + return it; + + Q_ASSERT_X(isValidIterator(const_iterator(it)), "QMap::erase", "The specified iterator argument 'it' is invalid"); + + if (d->ref.isShared()) { + const_iterator oldBegin = constBegin(); + const_iterator old = const_iterator(it); + int backStepsWithSameKey = 0; + + while (old != oldBegin) { + --old; + if (qMapLessThanKey(old.key(), it.key())) + break; + ++backStepsWithSameKey; + } + + it = find(old.key()); // ensures detach + Q_ASSERT_X(it != iterator(d->end()), "QMap::erase", "Unable to locate same key in erase after detach."); + + while (backStepsWithSameKey > 0) { + ++it; + --backStepsWithSameKey; + } + } + + Node *n = it.i; + ++it; + d->deleteNode(n); + return it; +} + +template +Q_OUTOFLINE_TEMPLATE void QMap::detach_helper() +{ + QMapData *x = QMapData::create(); + if (d->header.left) { + x->header.left = static_cast(d->header.left)->copy(x); + x->header.left->setParent(&x->header); + } + if (!d->ref.deref()) + d->destroy(); + d = x; + d->recalcMostLeftNode(); +} + +template +Q_OUTOFLINE_TEMPLATE QList QMap::uniqueKeys() const +{ + QList res; + res.reserve(size()); // May be too much, but assume short lifetime + const_iterator i = begin(); + if (i != end()) { + for (;;) { + const Key &aKey = i.key(); + res.append(aKey); + do { + if (++i == end()) + goto break_out_of_outer_loop; + } while (!qMapLessThanKey(aKey, i.key())); // loop while (key == i.key()) + } + } +break_out_of_outer_loop: + return res; +} + +template +Q_OUTOFLINE_TEMPLATE QList QMap::keys() const +{ + QList res; + res.reserve(size()); + const_iterator i = begin(); + while (i != end()) { + res.append(i.key()); + ++i; + } + return res; +} + +template +Q_OUTOFLINE_TEMPLATE QList QMap::keys(const T &avalue) const +{ + QList res; + const_iterator i = begin(); + while (i != end()) { + if (i.value() == avalue) + res.append(i.key()); + ++i; + } + return res; +} + +template +Q_OUTOFLINE_TEMPLATE const Key QMap::key(const T &avalue, const Key &defaultKey) const +{ + const_iterator i = begin(); + while (i != end()) { + if (i.value() == avalue) + return i.key(); + ++i; + } + + return defaultKey; +} + +template +Q_OUTOFLINE_TEMPLATE QList QMap::values() const +{ + QList res; + res.reserve(size()); + const_iterator i = begin(); + while (i != end()) { + res.append(i.value()); + ++i; + } + return res; +} + +template +Q_OUTOFLINE_TEMPLATE QList QMap::values(const Key &akey) const +{ + QList res; + Node *n = d->findNode(akey); + if (n) { + const_iterator it(n); + do { + res.append(*it); + ++it; + } while (it != constEnd() && !qMapLessThanKey(akey, it.key())); + } + return res; +} + +template +Q_INLINE_TEMPLATE typename QMap::const_iterator QMap::lowerBound(const Key &akey) const +{ + Node *lb = d->root() ? d->root()->lowerBound(akey) : Q_NULLPTR; + if (!lb) + lb = d->end(); + return const_iterator(lb); +} + +template +Q_INLINE_TEMPLATE typename QMap::iterator QMap::lowerBound(const Key &akey) +{ + detach(); + Node *lb = d->root() ? d->root()->lowerBound(akey) : Q_NULLPTR; + if (!lb) + lb = d->end(); + return iterator(lb); +} + +template +Q_INLINE_TEMPLATE typename QMap::const_iterator +QMap::upperBound(const Key &akey) const +{ + Node *ub = d->root() ? d->root()->upperBound(akey) : Q_NULLPTR; + if (!ub) + ub = d->end(); + return const_iterator(ub); +} + +template +Q_INLINE_TEMPLATE typename QMap::iterator QMap::upperBound(const Key &akey) +{ + detach(); + Node *ub = d->root() ? d->root()->upperBound(akey) : Q_NULLPTR; + if (!ub) + ub = d->end(); + return iterator(ub); +} + +template +Q_OUTOFLINE_TEMPLATE bool QMap::operator==(const QMap &other) const +{ + if (size() != other.size()) + return false; + if (d == other.d) + return true; + + const_iterator it1 = begin(); + const_iterator it2 = other.begin(); + + while (it1 != end()) { + if (!(it1.value() == it2.value()) || qMapLessThanKey(it1.key(), it2.key()) || qMapLessThanKey(it2.key(), it1.key())) + return false; + ++it2; + ++it1; + } + return true; +} + +template +Q_OUTOFLINE_TEMPLATE QMap::QMap(const std::map &other) +{ + d = QMapData::create(); + typename std::map::const_iterator it = other.end(); + while (it != other.begin()) { + --it; + d->createNode((*it).first, (*it).second, d->begin(), true); // insert on most left node. + } +} + +template +Q_OUTOFLINE_TEMPLATE std::map QMap::toStdMap() const +{ + std::map map; + const_iterator it = end(); + while (it != begin()) { + --it; + map.insert(map.begin(), std::pair(it.key(), it.value())); + } + return map; +} + +template +class QMultiMap : public QMap +{ +public: + QMultiMap() Q_DECL_NOTHROW {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMultiMap(std::initializer_list > list) + { + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif + QMultiMap(const QMap &other) : QMap(other) {} +#ifdef Q_COMPILER_RVALUE_REFS + QMultiMap(QMap &&other) Q_DECL_NOTHROW : QMap(std::move(other)) {} +#endif + void swap(QMultiMap &other) Q_DECL_NOTHROW { QMap::swap(other); } + + inline typename QMap::iterator replace(const Key &key, const T &value) + { return QMap::insert(key, value); } + inline typename QMap::iterator insert(const Key &key, const T &value) + { return QMap::insertMulti(key, value); } + inline typename QMap::iterator insert(typename QMap::const_iterator pos, const Key &key, const T &value) + { return QMap::insertMulti(pos, key, value); } + + inline QMultiMap &operator+=(const QMultiMap &other) + { this->unite(other); return *this; } + inline QMultiMap operator+(const QMultiMap &other) const + { QMultiMap result = *this; result += other; return result; } + + using QMap::contains; + using QMap::remove; + using QMap::count; + using QMap::find; + using QMap::constFind; + + bool contains(const Key &key, const T &value) const; + + int remove(const Key &key, const T &value); + + int count(const Key &key, const T &value) const; + + typename QMap::iterator find(const Key &key, const T &value) { + typename QMap::iterator i(find(key)); + typename QMap::iterator end(this->end()); + while (i != end && !qMapLessThanKey(key, i.key())) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QMap::const_iterator find(const Key &key, const T &value) const { + typename QMap::const_iterator i(constFind(key)); + typename QMap::const_iterator end(QMap::constEnd()); + while (i != end && !qMapLessThanKey(key, i.key())) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QMap::const_iterator constFind(const Key &key, const T &value) const + { return find(key, value); } +private: + T &operator[](const Key &key); + const T operator[](const Key &key) const; +}; + +template +Q_INLINE_TEMPLATE bool QMultiMap::contains(const Key &key, const T &value) const +{ + return constFind(key, value) != QMap::constEnd(); +} + +template +Q_INLINE_TEMPLATE int QMultiMap::remove(const Key &key, const T &value) +{ + int n = 0; + typename QMap::iterator i(find(key)); + typename QMap::iterator end(QMap::end()); + while (i != end && !qMapLessThanKey(key, i.key())) { + if (i.value() == value) { + i = this->erase(i); + ++n; + } else { + ++i; + } + } + return n; +} + +template +Q_INLINE_TEMPLATE int QMultiMap::count(const Key &key, const T &value) const +{ + int n = 0; + typename QMap::const_iterator i(constFind(key)); + typename QMap::const_iterator end(QMap::constEnd()); + while (i != end && !qMapLessThanKey(key, i.key())) { + if (i.value() == value) + ++n; + ++i; + } + return n; +} + +Q_DECLARE_ASSOCIATIVE_ITERATOR(Map) +Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(Map) + +QT_END_NAMESPACE + +#endif // QMAP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qmargins.h b/qrenderdoc/3rdparty/qt/include/QtCore/qmargins.h new file mode 100644 index 000000000..0c73235d2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qmargins.h @@ -0,0 +1,492 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMARGINS_H +#define QMARGINS_H + +#include + +QT_BEGIN_NAMESPACE + +/***************************************************************************** + QMargins class + *****************************************************************************/ + +class QMargins +{ +public: + Q_DECL_CONSTEXPR QMargins() Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QMargins(int left, int top, int right, int bottom) Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR bool isNull() const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR int left() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR int top() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR int right() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR int bottom() const Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR void setLeft(int left) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR void setTop(int top) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR void setRight(int right) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR void setBottom(int bottom) Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR QMargins &operator+=(const QMargins &margins) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMargins &operator-=(const QMargins &margins) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMargins &operator+=(int) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMargins &operator-=(int) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMargins &operator*=(int) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMargins &operator/=(int); + Q_DECL_RELAXED_CONSTEXPR QMargins &operator*=(qreal) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMargins &operator/=(qreal); + +private: + int m_left; + int m_top; + int m_right; + int m_bottom; + + friend Q_DECL_CONSTEXPR inline bool operator==(const QMargins &, const QMargins &) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR inline bool operator!=(const QMargins &, const QMargins &) Q_DECL_NOTHROW; +}; + +Q_DECLARE_TYPEINFO(QMargins, Q_MOVABLE_TYPE); + +/***************************************************************************** + QMargins stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QMargins &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QMargins &); +#endif + +/***************************************************************************** + QMargins inline functions + *****************************************************************************/ + +Q_DECL_CONSTEXPR inline QMargins::QMargins() Q_DECL_NOTHROW : m_left(0), m_top(0), m_right(0), m_bottom(0) {} + +Q_DECL_CONSTEXPR inline QMargins::QMargins(int aleft, int atop, int aright, int abottom) Q_DECL_NOTHROW + : m_left(aleft), m_top(atop), m_right(aright), m_bottom(abottom) {} + +Q_DECL_CONSTEXPR inline bool QMargins::isNull() const Q_DECL_NOTHROW +{ return m_left==0 && m_top==0 && m_right==0 && m_bottom==0; } + +Q_DECL_CONSTEXPR inline int QMargins::left() const Q_DECL_NOTHROW +{ return m_left; } + +Q_DECL_CONSTEXPR inline int QMargins::top() const Q_DECL_NOTHROW +{ return m_top; } + +Q_DECL_CONSTEXPR inline int QMargins::right() const Q_DECL_NOTHROW +{ return m_right; } + +Q_DECL_CONSTEXPR inline int QMargins::bottom() const Q_DECL_NOTHROW +{ return m_bottom; } + + +Q_DECL_RELAXED_CONSTEXPR inline void QMargins::setLeft(int aleft) Q_DECL_NOTHROW +{ m_left = aleft; } + +Q_DECL_RELAXED_CONSTEXPR inline void QMargins::setTop(int atop) Q_DECL_NOTHROW +{ m_top = atop; } + +Q_DECL_RELAXED_CONSTEXPR inline void QMargins::setRight(int aright) Q_DECL_NOTHROW +{ m_right = aright; } + +Q_DECL_RELAXED_CONSTEXPR inline void QMargins::setBottom(int abottom) Q_DECL_NOTHROW +{ m_bottom = abottom; } + +Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW +{ + return + m1.m_left == m2.m_left && + m1.m_top == m2.m_top && + m1.m_right == m2.m_right && + m1.m_bottom == m2.m_bottom; +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW +{ + return + m1.m_left != m2.m_left || + m1.m_top != m2.m_top || + m1.m_right != m2.m_right || + m1.m_bottom != m2.m_bottom; +} + +Q_DECL_CONSTEXPR inline QMargins operator+(const QMargins &m1, const QMargins &m2) Q_DECL_NOTHROW +{ + 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) Q_DECL_NOTHROW +{ + 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 &lhs, int rhs) Q_DECL_NOTHROW +{ + return QMargins(lhs.left() + rhs, lhs.top() + rhs, + lhs.right() + rhs, lhs.bottom() + rhs); +} + +Q_DECL_CONSTEXPR inline QMargins operator+(int lhs, const QMargins &rhs) Q_DECL_NOTHROW +{ + return QMargins(rhs.left() + lhs, rhs.top() + lhs, + rhs.right() + lhs, rhs.bottom() + lhs); +} + +Q_DECL_CONSTEXPR inline QMargins operator-(const QMargins &lhs, int rhs) Q_DECL_NOTHROW +{ + return QMargins(lhs.left() - rhs, lhs.top() - rhs, + lhs.right() - rhs, lhs.bottom() - rhs); +} + +Q_DECL_CONSTEXPR inline QMargins operator*(const QMargins &margins, int factor) Q_DECL_NOTHROW +{ + 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) Q_DECL_NOTHROW +{ + 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) Q_DECL_NOTHROW +{ + 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) Q_DECL_NOTHROW +{ + 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)); +} + +Q_DECL_RELAXED_CONSTEXPR inline QMargins &QMargins::operator+=(const QMargins &margins) Q_DECL_NOTHROW +{ + return *this = *this + margins; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMargins &QMargins::operator-=(const QMargins &margins) Q_DECL_NOTHROW +{ + return *this = *this - margins; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMargins &QMargins::operator+=(int margin) Q_DECL_NOTHROW +{ + m_left += margin; + m_top += margin; + m_right += margin; + m_bottom += margin; + return *this; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMargins &QMargins::operator-=(int margin) Q_DECL_NOTHROW +{ + m_left -= margin; + m_top -= margin; + m_right -= margin; + m_bottom -= margin; + return *this; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMargins &QMargins::operator*=(int factor) Q_DECL_NOTHROW +{ + return *this = *this * factor; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMargins &QMargins::operator/=(int divisor) +{ + return *this = *this / divisor; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMargins &QMargins::operator*=(qreal factor) Q_DECL_NOTHROW +{ + return *this = *this * factor; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMargins &QMargins::operator/=(qreal divisor) +{ + return *this = *this / divisor; +} + +Q_DECL_CONSTEXPR inline QMargins operator+(const QMargins &margins) Q_DECL_NOTHROW +{ + return margins; +} + +Q_DECL_CONSTEXPR inline QMargins operator-(const QMargins &margins) Q_DECL_NOTHROW +{ + return QMargins(-margins.left(), -margins.top(), -margins.right(), -margins.bottom()); +} + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QMargins &); +#endif + +/***************************************************************************** + QMarginsF class + *****************************************************************************/ + +class QMarginsF +{ +public: + Q_DECL_CONSTEXPR QMarginsF() Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QMarginsF(qreal left, qreal top, qreal right, qreal bottom) Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QMarginsF(const QMargins &margins) Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR bool isNull() const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR qreal left() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR qreal top() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR qreal right() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR qreal bottom() const Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR void setLeft(qreal left) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR void setTop(qreal top) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR void setRight(qreal right) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR void setBottom(qreal bottom) Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR QMarginsF &operator+=(const QMarginsF &margins) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMarginsF &operator-=(const QMarginsF &margins) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMarginsF &operator+=(qreal addend) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMarginsF &operator-=(qreal subtrahend) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMarginsF &operator*=(qreal factor) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR QMarginsF &operator/=(qreal divisor); + + Q_DECL_CONSTEXPR inline QMargins toMargins() const Q_DECL_NOTHROW; + +private: + qreal m_left; + qreal m_top; + qreal m_right; + qreal m_bottom; +}; + +Q_DECLARE_TYPEINFO(QMarginsF, Q_MOVABLE_TYPE); + +/***************************************************************************** + QMarginsF stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QMarginsF &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QMarginsF &); +#endif + +/***************************************************************************** + QMarginsF inline functions + *****************************************************************************/ + +Q_DECL_CONSTEXPR inline QMarginsF::QMarginsF() Q_DECL_NOTHROW + : m_left(0), m_top(0), m_right(0), m_bottom(0) {} + +Q_DECL_CONSTEXPR inline QMarginsF::QMarginsF(qreal aleft, qreal atop, qreal aright, qreal abottom) Q_DECL_NOTHROW + : m_left(aleft), m_top(atop), m_right(aright), m_bottom(abottom) {} + +Q_DECL_CONSTEXPR inline QMarginsF::QMarginsF(const QMargins &margins) Q_DECL_NOTHROW + : m_left(margins.left()), m_top(margins.top()), m_right(margins.right()), m_bottom(margins.bottom()) {} + +Q_DECL_CONSTEXPR inline bool QMarginsF::isNull() const Q_DECL_NOTHROW +{ return qFuzzyIsNull(m_left) && qFuzzyIsNull(m_top) && qFuzzyIsNull(m_right) && qFuzzyIsNull(m_bottom); } + +Q_DECL_CONSTEXPR inline qreal QMarginsF::left() const Q_DECL_NOTHROW +{ return m_left; } + +Q_DECL_CONSTEXPR inline qreal QMarginsF::top() const Q_DECL_NOTHROW +{ return m_top; } + +Q_DECL_CONSTEXPR inline qreal QMarginsF::right() const Q_DECL_NOTHROW +{ return m_right; } + +Q_DECL_CONSTEXPR inline qreal QMarginsF::bottom() const Q_DECL_NOTHROW +{ return m_bottom; } + + +Q_DECL_RELAXED_CONSTEXPR inline void QMarginsF::setLeft(qreal aleft) Q_DECL_NOTHROW +{ m_left = aleft; } + +Q_DECL_RELAXED_CONSTEXPR inline void QMarginsF::setTop(qreal atop) Q_DECL_NOTHROW +{ m_top = atop; } + +Q_DECL_RELAXED_CONSTEXPR inline void QMarginsF::setRight(qreal aright) Q_DECL_NOTHROW +{ m_right = aright; } + +Q_DECL_RELAXED_CONSTEXPR inline void QMarginsF::setBottom(qreal abottom) Q_DECL_NOTHROW +{ m_bottom = abottom; } + +Q_DECL_CONSTEXPR inline bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW +{ + return qFuzzyCompare(lhs.left(), rhs.left()) + && qFuzzyCompare(lhs.top(), rhs.top()) + && qFuzzyCompare(lhs.right(), rhs.right()) + && qFuzzyCompare(lhs.bottom(), rhs.bottom()); +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW +{ + return !operator==(lhs, rhs); +} + +Q_DECL_CONSTEXPR inline QMarginsF operator+(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW +{ + return QMarginsF(lhs.left() + rhs.left(), lhs.top() + rhs.top(), + lhs.right() + rhs.right(), lhs.bottom() + rhs.bottom()); +} + +Q_DECL_CONSTEXPR inline QMarginsF operator-(const QMarginsF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW +{ + return QMarginsF(lhs.left() - rhs.left(), lhs.top() - rhs.top(), + lhs.right() - rhs.right(), lhs.bottom() - rhs.bottom()); +} + +Q_DECL_CONSTEXPR inline QMarginsF operator+(const QMarginsF &lhs, qreal rhs) Q_DECL_NOTHROW +{ + return QMarginsF(lhs.left() + rhs, lhs.top() + rhs, + lhs.right() + rhs, lhs.bottom() + rhs); +} + +Q_DECL_CONSTEXPR inline QMarginsF operator+(qreal lhs, const QMarginsF &rhs) Q_DECL_NOTHROW +{ + return QMarginsF(rhs.left() + lhs, rhs.top() + lhs, + rhs.right() + lhs, rhs.bottom() + lhs); +} + +Q_DECL_CONSTEXPR inline QMarginsF operator-(const QMarginsF &lhs, qreal rhs) Q_DECL_NOTHROW +{ + return QMarginsF(lhs.left() - rhs, lhs.top() - rhs, + lhs.right() - rhs, lhs.bottom() - rhs); +} + +Q_DECL_CONSTEXPR inline QMarginsF operator*(const QMarginsF &lhs, qreal rhs) Q_DECL_NOTHROW +{ + return QMarginsF(lhs.left() * rhs, lhs.top() * rhs, + lhs.right() * rhs, lhs.bottom() * rhs); +} + +Q_DECL_CONSTEXPR inline QMarginsF operator*(qreal lhs, const QMarginsF &rhs) Q_DECL_NOTHROW +{ + return QMarginsF(rhs.left() * lhs, rhs.top() * lhs, + rhs.right() * lhs, rhs.bottom() * lhs); +} + +Q_DECL_CONSTEXPR inline QMarginsF operator/(const QMarginsF &lhs, qreal divisor) +{ + return QMarginsF(lhs.left() / divisor, lhs.top() / divisor, + lhs.right() / divisor, lhs.bottom() / divisor); +} + +Q_DECL_RELAXED_CONSTEXPR inline QMarginsF &QMarginsF::operator+=(const QMarginsF &margins) Q_DECL_NOTHROW +{ + return *this = *this + margins; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMarginsF &QMarginsF::operator-=(const QMarginsF &margins) Q_DECL_NOTHROW +{ + return *this = *this - margins; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMarginsF &QMarginsF::operator+=(qreal addend) Q_DECL_NOTHROW +{ + m_left += addend; + m_top += addend; + m_right += addend; + m_bottom += addend; + return *this; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMarginsF &QMarginsF::operator-=(qreal subtrahend) Q_DECL_NOTHROW +{ + m_left -= subtrahend; + m_top -= subtrahend; + m_right -= subtrahend; + m_bottom -= subtrahend; + return *this; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMarginsF &QMarginsF::operator*=(qreal factor) Q_DECL_NOTHROW +{ + return *this = *this * factor; +} + +Q_DECL_RELAXED_CONSTEXPR inline QMarginsF &QMarginsF::operator/=(qreal divisor) +{ + return *this = *this / divisor; +} + +Q_DECL_CONSTEXPR inline QMarginsF operator+(const QMarginsF &margins) Q_DECL_NOTHROW +{ + return margins; +} + +Q_DECL_CONSTEXPR inline QMarginsF operator-(const QMarginsF &margins) Q_DECL_NOTHROW +{ + return QMarginsF(-margins.left(), -margins.top(), -margins.right(), -margins.bottom()); +} + +Q_DECL_CONSTEXPR inline QMargins QMarginsF::toMargins() const Q_DECL_NOTHROW +{ + return QMargins(qRound(m_left), qRound(m_top), qRound(m_right), qRound(m_bottom)); +} + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QMarginsF &); +#endif + +QT_END_NAMESPACE + +#endif // QMARGINS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qmath.h b/qrenderdoc/3rdparty/qt/include/QtCore/qmath.h new file mode 100644 index 000000000..773884047 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qmath.h @@ -0,0 +1,298 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMATH_H +#define QMATH_H + +#if 0 +#pragma qt_class(QtMath) +#endif + +#include +#include + +#ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES +# define undef_USE_MATH_DEFINES +#endif + +#include + +#ifdef undef_USE_MATH_DEFINES +# undef _USE_MATH_DEFINES +# undef undef_USE_MATH_DEFINES +#endif + +QT_BEGIN_NAMESPACE + +#define QT_SINE_TABLE_SIZE 256 + +extern Q_CORE_EXPORT const qreal qt_sine_table[QT_SINE_TABLE_SIZE]; + +inline int qCeil(qreal v) +{ + using std::ceil; + return int(ceil(v)); +} + +inline int qFloor(qreal v) +{ + using std::floor; + return int(floor(v)); +} + +inline qreal qFabs(qreal v) +{ + using std::fabs; + return fabs(v); +} + +inline qreal qSin(qreal v) +{ + using std::sin; + return sin(v); +} + +inline qreal qCos(qreal v) +{ + using std::cos; + return cos(v); +} + +inline qreal qTan(qreal v) +{ + using std::tan; + return tan(v); +} + +inline qreal qAcos(qreal v) +{ + using std::acos; + return acos(v); +} + +inline qreal qAsin(qreal v) +{ + using std::asin; + return asin(v); +} + +inline qreal qAtan(qreal v) +{ + using std::atan; + return atan(v); +} + +inline qreal qAtan2(qreal y, qreal x) +{ + using std::atan2; + return atan2(y, x); +} + +inline qreal qSqrt(qreal v) +{ + using std::sqrt; + return sqrt(v); +} + +inline qreal qLn(qreal v) +{ + using std::log; + return log(v); +} + +inline qreal qExp(qreal v) +{ + using std::exp; + return exp(v); +} + +inline qreal qPow(qreal x, qreal y) +{ + using std::pow; + return pow(x, y); +} + +#ifndef M_E +#define M_E (2.7182818284590452354) +#endif + +#ifndef M_LOG2E +#define M_LOG2E (1.4426950408889634074) +#endif + +#ifndef M_LOG10E +#define M_LOG10E (0.43429448190325182765) +#endif + +#ifndef M_LN2 +#define M_LN2 (0.69314718055994530942) +#endif + +#ifndef M_LN10 +#define M_LN10 (2.30258509299404568402) +#endif + +#ifndef M_PI +#define M_PI (3.14159265358979323846) +#endif + +#ifndef M_PI_2 +#define M_PI_2 (1.57079632679489661923) +#endif + +#ifndef M_PI_4 +#define M_PI_4 (0.78539816339744830962) +#endif + +#ifndef M_1_PI +#define M_1_PI (0.31830988618379067154) +#endif + +#ifndef M_2_PI +#define M_2_PI (0.63661977236758134308) +#endif + +#ifndef M_2_SQRTPI +#define M_2_SQRTPI (1.12837916709551257390) +#endif + +#ifndef M_SQRT2 +#define M_SQRT2 (1.41421356237309504880) +#endif + +#ifndef M_SQRT1_2 +#define M_SQRT1_2 (0.70710678118654752440) +#endif + +inline qreal qFastSin(qreal x) +{ + int si = int(x * (0.5 * QT_SINE_TABLE_SIZE / M_PI)); // Would be more accurate with qRound, but slower. + qreal d = x - si * (2.0 * M_PI / QT_SINE_TABLE_SIZE); + int ci = si + QT_SINE_TABLE_SIZE / 4; + si &= QT_SINE_TABLE_SIZE - 1; + ci &= QT_SINE_TABLE_SIZE - 1; + return qt_sine_table[si] + (qt_sine_table[ci] - 0.5 * qt_sine_table[si] * d) * d; +} + +inline qreal qFastCos(qreal x) +{ + int ci = int(x * (0.5 * QT_SINE_TABLE_SIZE / M_PI)); // Would be more accurate with qRound, but slower. + qreal d = x - ci * (2.0 * M_PI / QT_SINE_TABLE_SIZE); + int si = ci + QT_SINE_TABLE_SIZE / 4; + si &= QT_SINE_TABLE_SIZE - 1; + ci &= QT_SINE_TABLE_SIZE - 1; + return qt_sine_table[si] - (qt_sine_table[ci] + 0.5 * qt_sine_table[si] * d) * d; +} + +Q_DECL_CONSTEXPR inline float qDegreesToRadians(float degrees) +{ + return degrees * float(M_PI/180); +} + +Q_DECL_CONSTEXPR inline double qDegreesToRadians(double degrees) +{ + return degrees * (M_PI / 180); +} + +Q_DECL_CONSTEXPR inline float qRadiansToDegrees(float radians) +{ + return radians * float(180/M_PI); +} + +Q_DECL_CONSTEXPR inline double qRadiansToDegrees(double radians) +{ + return radians * (180 / M_PI); +} + + +#if defined(QT_HAS_BUILTIN_CLZ) +inline quint32 qNextPowerOfTwo(quint32 v) +{ + if (v == 0) + return 1; + return 2U << (31 ^ QAlgorithmsPrivate::qt_builtin_clz(v)); +} +#else +inline quint32 qNextPowerOfTwo(quint32 v) +{ + v |= v >> 1; + v |= v >> 2; + v |= v >> 4; + v |= v >> 8; + v |= v >> 16; + ++v; + return v; +} +#endif + +#if defined(QT_HAS_BUILTIN_CLZLL) +inline quint64 qNextPowerOfTwo(quint64 v) +{ + if (v == 0) + return 1; + return Q_UINT64_C(2) << (63 ^ QAlgorithmsPrivate::qt_builtin_clzll(v)); +} +#else +inline quint64 qNextPowerOfTwo(quint64 v) +{ + v |= v >> 1; + v |= v >> 2; + v |= v >> 4; + v |= v >> 8; + v |= v >> 16; + v |= v >> 32; + ++v; + return v; +} +#endif + +inline quint32 qNextPowerOfTwo(qint32 v) +{ + return qNextPowerOfTwo(quint32(v)); +} + +inline quint64 qNextPowerOfTwo(qint64 v) +{ + return qNextPowerOfTwo(quint64(v)); +} + +QT_END_NAMESPACE + +#endif // QMATH_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qmessageauthenticationcode.h b/qrenderdoc/3rdparty/qt/include/QtCore/qmessageauthenticationcode.h new file mode 100644 index 000000000..a13a3d2ac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qmessageauthenticationcode.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Ruslan Nigmatullin +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMESSAGEAUTHENTICATIONCODE_H +#define QMESSAGEAUTHENTICATIONCODE_H + +#include + +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/qrenderdoc/3rdparty/qt/include/QtCore/qmetaobject.h b/qrenderdoc/3rdparty/qt/include/QtCore/qmetaobject.h new file mode 100644 index 000000000..40b2aa640 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qmetaobject.h @@ -0,0 +1,316 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2014 Olivier Goffart +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMETAOBJECT_H +#define QMETAOBJECT_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +template class QList; + +#define Q_METAMETHOD_INVOKE_MAX_ARGS 10 + +class Q_CORE_EXPORT QMetaMethod +{ +public: + Q_DECL_CONSTEXPR inline QMetaMethod() : mobj(Q_NULLPTR), handle(0) {} + + QByteArray methodSignature() const; + QByteArray name() const; + const char *typeName() const; + int returnType() const; + int parameterCount() const; + int parameterType(int index) const; + void getParameterTypes(int *types) const; + QList parameterTypes() const; + QList parameterNames() const; + const char *tag() const; + enum Access { Private, Protected, Public }; + Access access() const; + enum MethodType { Method, Signal, Slot, Constructor }; + MethodType methodType() const; + enum Attributes { Compatibility = 0x1, Cloned = 0x2, Scriptable = 0x4 }; + int attributes() const; + int methodIndex() const; + int revision() const; + + inline const QMetaObject *enclosingMetaObject() const { return mobj; } + + bool invoke(QObject *object, + Qt::ConnectionType connectionType, + QGenericReturnArgument returnValue, + QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) const; + inline bool invoke(QObject *object, + QGenericReturnArgument returnValue, + QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) const + { + return invoke(object, Qt::AutoConnection, returnValue, + val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); + } + inline bool invoke(QObject *object, + Qt::ConnectionType connectionType, + QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) const + { + return invoke(object, connectionType, QGenericReturnArgument(), + val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); + } + inline bool invoke(QObject *object, + QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) const + { + return invoke(object, Qt::AutoConnection, QGenericReturnArgument(), + val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); + } + + bool invokeOnGadget(void *gadget, + QGenericReturnArgument returnValue, + QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) const; + inline bool invokeOnGadget(void *gadget, + QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) const + { + return invokeOnGadget(gadget, QGenericReturnArgument(), + val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); + } + + inline bool isValid() const { return mobj != Q_NULLPTR; } + + template + static inline QMetaMethod fromSignal(PointerToMemberFunction signal) + { + typedef QtPrivate::FunctionPointer SignalType; + Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro::Value, + "No Q_OBJECT in the class with the signal"); + return fromSignalImpl(&SignalType::Object::staticMetaObject, + reinterpret_cast(&signal)); + } + +private: +#if QT_DEPRECATED_SINCE(5,0) + // signature() has been renamed to methodSignature() in Qt 5. + // Warning, that function returns a QByteArray; check the life time if + // you convert to char*. + char *signature(struct renamedInQt5_warning_checkTheLifeTime * = Q_NULLPTR) Q_DECL_EQ_DELETE; +#endif + static QMetaMethod fromSignalImpl(const QMetaObject *, void **); + + const QMetaObject *mobj; + uint handle; + friend class QMetaMethodPrivate; + friend struct QMetaObject; + friend struct QMetaObjectPrivate; + friend class QObject; + friend bool operator==(const QMetaMethod &m1, const QMetaMethod &m2); + friend bool operator!=(const QMetaMethod &m1, const QMetaMethod &m2); +}; +Q_DECLARE_TYPEINFO(QMetaMethod, Q_MOVABLE_TYPE); + +inline bool operator==(const QMetaMethod &m1, const QMetaMethod &m2) +{ return m1.mobj == m2.mobj && m1.handle == m2.handle; } +inline bool operator!=(const QMetaMethod &m1, const QMetaMethod &m2) +{ return !(m1 == m2); } + +class Q_CORE_EXPORT QMetaEnum +{ +public: + Q_DECL_CONSTEXPR inline QMetaEnum() : mobj(Q_NULLPTR), handle(0) {} + + const char *name() const; + bool isFlag() const; + bool isScoped() const; + + int keyCount() const; + const char *key(int index) const; + int value(int index) const; + + const char *scope() const; + + int keyToValue(const char *key, bool *ok = Q_NULLPTR) const; + const char* valueToKey(int value) const; + int keysToValue(const char * keys, bool *ok = Q_NULLPTR) const; + QByteArray valueToKeys(int value) const; + + inline const QMetaObject *enclosingMetaObject() const { return mobj; } + + inline bool isValid() const { return name() != Q_NULLPTR; } + + template static QMetaEnum fromType() { + Q_STATIC_ASSERT_X(QtPrivate::IsQEnumHelper::Value, + "QMetaEnum::fromType only works with enums declared as Q_ENUM or Q_FLAG"); + const QMetaObject *metaObject = qt_getEnumMetaObject(T()); + const char *name = qt_getEnumName(T()); + return metaObject->enumerator(metaObject->indexOfEnumerator(name)); + } + +private: + const QMetaObject *mobj; + uint handle; + friend struct QMetaObject; +}; +Q_DECLARE_TYPEINFO(QMetaEnum, Q_MOVABLE_TYPE); + +class Q_CORE_EXPORT QMetaProperty +{ +public: + QMetaProperty(); + + const char *name() const; + const char *typeName() const; + QVariant::Type type() const; + int userType() const; + int propertyIndex() const; + + bool isReadable() const; + bool isWritable() const; + bool isResettable() const; + bool isDesignable(const QObject *obj = Q_NULLPTR) const; + bool isScriptable(const QObject *obj = Q_NULLPTR) const; + bool isStored(const QObject *obj = Q_NULLPTR) const; + bool isEditable(const QObject *obj = Q_NULLPTR) const; + bool isUser(const QObject *obj = Q_NULLPTR) const; + bool isConstant() const; + bool isFinal() const; + + bool isFlagType() const; + bool isEnumType() const; + QMetaEnum enumerator() const; + + bool hasNotifySignal() const; + QMetaMethod notifySignal() const; + int notifySignalIndex() const; + + int revision() const; + + QVariant read(const QObject *obj) const; + bool write(QObject *obj, const QVariant &value) const; + bool reset(QObject *obj) const; + + QVariant readOnGadget(const void *gadget) const; + bool writeOnGadget(void *gadget, const QVariant &value) const; + bool resetOnGadget(void *gadget) const; + + bool hasStdCppSet() const; + inline bool isValid() const { return isReadable(); } + inline const QMetaObject *enclosingMetaObject() const { return mobj; } + +private: + int registerPropertyType() const; + + const QMetaObject *mobj; + uint handle; + int idx; + QMetaEnum menum; + friend struct QMetaObject; + friend struct QMetaObjectPrivate; +}; + +class Q_CORE_EXPORT QMetaClassInfo +{ +public: + Q_DECL_CONSTEXPR inline QMetaClassInfo() : mobj(Q_NULLPTR), handle(0) {} + const char *name() const; + const char *value() const; + inline const QMetaObject *enclosingMetaObject() const { return mobj; } +private: + const QMetaObject *mobj; + uint handle; + friend struct QMetaObject; +}; +Q_DECLARE_TYPEINFO(QMetaClassInfo, Q_MOVABLE_TYPE); + +QT_END_NAMESPACE + +#endif // QMETAOBJECT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qmetatype.h b/qrenderdoc/3rdparty/qt/include/QtCore/qmetatype.h new file mode 100644 index 000000000..d88f469e0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qmetatype.h @@ -0,0 +1,2247 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2014 Olivier Goffart +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMETATYPE_H +#define QMETATYPE_H + +#include +#include +#include +#include +#ifndef QT_NO_QOBJECT +#include +#endif +#include + +#include +#include +#include + +#ifdef Bool +#error qmetatype.h must be included before any header file that defines Bool +#endif + +QT_BEGIN_NAMESPACE + +template +struct QMetaTypeId2; + +template +inline Q_DECL_CONSTEXPR int qMetaTypeId(); + +// F is a tuple: (QMetaType::TypeName, QMetaType::TypeNameID, RealType) +// ### Qt6: reorder the types to match the C++ integral type ranking +#define QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(F)\ + F(Void, 43, void) \ + F(Bool, 1, bool) \ + F(Int, 2, int) \ + F(UInt, 3, uint) \ + F(LongLong, 4, qlonglong) \ + F(ULongLong, 5, qulonglong) \ + F(Double, 6, double) \ + F(Long, 32, long) \ + F(Short, 33, short) \ + F(Char, 34, char) \ + F(ULong, 35, ulong) \ + F(UShort, 36, ushort) \ + F(UChar, 37, uchar) \ + F(Float, 38, float) \ + F(SChar, 40, signed char) \ + F(Nullptr, 51, std::nullptr_t) \ + +#define QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(F)\ + F(VoidStar, 31, void*) \ + +#define QT_FOR_EACH_STATIC_CORE_CLASS(F)\ + F(QChar, 7, QChar) \ + F(QString, 10, QString) \ + F(QStringList, 11, QStringList) \ + F(QByteArray, 12, QByteArray) \ + F(QBitArray, 13, QBitArray) \ + F(QDate, 14, QDate) \ + F(QTime, 15, QTime) \ + F(QDateTime, 16, QDateTime) \ + F(QUrl, 17, QUrl) \ + F(QLocale, 18, QLocale) \ + F(QRect, 19, QRect) \ + F(QRectF, 20, QRectF) \ + F(QSize, 21, QSize) \ + F(QSizeF, 22, QSizeF) \ + F(QLine, 23, QLine) \ + F(QLineF, 24, QLineF) \ + F(QPoint, 25, QPoint) \ + F(QPointF, 26, QPointF) \ + F(QRegExp, 27, QRegExp) \ + F(QEasingCurve, 29, QEasingCurve) \ + F(QUuid, 30, QUuid) \ + F(QVariant, 41, QVariant) \ + F(QModelIndex, 42, QModelIndex) \ + F(QRegularExpression, 44, QRegularExpression) \ + F(QJsonValue, 45, QJsonValue) \ + F(QJsonObject, 46, QJsonObject) \ + F(QJsonArray, 47, QJsonArray) \ + F(QJsonDocument, 48, QJsonDocument) \ + F(QPersistentModelIndex, 50, QPersistentModelIndex) \ + +#define QT_FOR_EACH_STATIC_CORE_POINTER(F)\ + F(QObjectStar, 39, QObject*) + +#define QT_FOR_EACH_STATIC_CORE_TEMPLATE(F)\ + F(QVariantMap, 8, QVariantMap) \ + F(QVariantList, 9, QVariantList) \ + F(QVariantHash, 28, QVariantHash) \ + F(QByteArrayList, 49, QByteArrayList) \ + +#define QT_FOR_EACH_STATIC_GUI_CLASS(F)\ + F(QFont, 64, QFont) \ + F(QPixmap, 65, QPixmap) \ + F(QBrush, 66, QBrush) \ + F(QColor, 67, QColor) \ + F(QPalette, 68, QPalette) \ + F(QIcon, 69, QIcon) \ + F(QImage, 70, QImage) \ + F(QPolygon, 71, QPolygon) \ + F(QRegion, 72, QRegion) \ + F(QBitmap, 73, QBitmap) \ + F(QCursor, 74, QCursor) \ + F(QKeySequence, 75, QKeySequence) \ + F(QPen, 76, QPen) \ + F(QTextLength, 77, QTextLength) \ + F(QTextFormat, 78, QTextFormat) \ + F(QMatrix, 79, QMatrix) \ + F(QTransform, 80, QTransform) \ + F(QMatrix4x4, 81, QMatrix4x4) \ + F(QVector2D, 82, QVector2D) \ + F(QVector3D, 83, QVector3D) \ + F(QVector4D, 84, QVector4D) \ + F(QQuaternion, 85, QQuaternion) \ + F(QPolygonF, 86, QPolygonF) \ + + +#define QT_FOR_EACH_STATIC_WIDGETS_CLASS(F)\ + F(QSizePolicy, 121, QSizePolicy) \ + +// ### FIXME kill that set +#define QT_FOR_EACH_STATIC_HACKS_TYPE(F)\ + F(QMetaTypeId2::MetaType, -1, qreal) + +// F is a tuple: (QMetaType::TypeName, QMetaType::TypeNameID, AliasingType, "RealType") +#define QT_FOR_EACH_STATIC_ALIAS_TYPE(F)\ + F(ULong, -1, ulong, "unsigned long") \ + F(UInt, -1, uint, "unsigned int") \ + F(UShort, -1, ushort, "unsigned short") \ + F(UChar, -1, uchar, "unsigned char") \ + F(LongLong, -1, qlonglong, "long long") \ + F(ULongLong, -1, qulonglong, "unsigned long long") \ + F(SChar, -1, signed char, "qint8") \ + F(UChar, -1, uchar, "quint8") \ + F(Short, -1, short, "qint16") \ + F(UShort, -1, ushort, "quint16") \ + F(Int, -1, int, "qint32") \ + F(UInt, -1, uint, "quint32") \ + F(LongLong, -1, qlonglong, "qint64") \ + F(ULongLong, -1, qulonglong, "quint64") \ + F(QVariantList, -1, QVariantList, "QList") \ + F(QVariantMap, -1, QVariantMap, "QMap") \ + F(QVariantHash, -1, QVariantHash, "QHash") \ + F(QByteArrayList, -1, QByteArrayList, "QList") \ + +#define QT_FOR_EACH_STATIC_TYPE(F)\ + QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(F)\ + QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(F)\ + QT_FOR_EACH_STATIC_CORE_CLASS(F)\ + QT_FOR_EACH_STATIC_CORE_POINTER(F)\ + QT_FOR_EACH_STATIC_CORE_TEMPLATE(F)\ + QT_FOR_EACH_STATIC_GUI_CLASS(F)\ + QT_FOR_EACH_STATIC_WIDGETS_CLASS(F)\ + +#define QT_DEFINE_METATYPE_ID(TypeName, Id, Name) \ + TypeName = Id, + +#define QT_FOR_EACH_AUTOMATIC_TEMPLATE_1ARG(F) \ + F(QList) \ + F(QVector) \ + F(QQueue) \ + F(QStack) \ + F(QSet) \ + F(QLinkedList) + +#define QT_FOR_EACH_AUTOMATIC_TEMPLATE_2ARG(F) \ + F(QHash, class) \ + F(QMap, class) \ + F(QPair, struct) + +#define QT_FOR_EACH_AUTOMATIC_TEMPLATE_SMART_POINTER(F) \ + F(QSharedPointer) \ + F(QWeakPointer) \ + F(QPointer) + +class QDataStream; +class QMetaTypeInterface; +struct QMetaObject; + +namespace QtPrivate +{ +/*! + This template is used for implicit conversion from type From to type To. + \internal +*/ +template +To convertImplicit(const From& from) +{ + return from; +} + +#ifndef QT_NO_DEBUG_STREAM +struct AbstractDebugStreamFunction +{ + typedef void (*Stream)(const AbstractDebugStreamFunction *, QDebug&, const void *); + typedef void (*Destroy)(AbstractDebugStreamFunction *); + explicit AbstractDebugStreamFunction(Stream s = Q_NULLPTR, Destroy d = Q_NULLPTR) + : stream(s), destroy(d) {} + Q_DISABLE_COPY(AbstractDebugStreamFunction) + Stream stream; + Destroy destroy; +}; + +template +struct BuiltInDebugStreamFunction : public AbstractDebugStreamFunction +{ + BuiltInDebugStreamFunction() + : AbstractDebugStreamFunction(stream, destroy) {} + static void stream(const AbstractDebugStreamFunction *, QDebug& dbg, const void *r) + { + const T *rhs = static_cast(r); + operator<<(dbg, *rhs); + } + + static void destroy(AbstractDebugStreamFunction *_this) + { + delete static_cast(_this); + } +}; +#endif + +struct AbstractComparatorFunction +{ + typedef bool (*LessThan)(const AbstractComparatorFunction *, const void *, const void *); + typedef bool (*Equals)(const AbstractComparatorFunction *, const void *, const void *); + typedef void (*Destroy)(AbstractComparatorFunction *); + explicit AbstractComparatorFunction(LessThan lt = Q_NULLPTR, Equals e = Q_NULLPTR, Destroy d = Q_NULLPTR) + : lessThan(lt), equals(e), destroy(d) {} + Q_DISABLE_COPY(AbstractComparatorFunction) + LessThan lessThan; + Equals equals; + Destroy destroy; +}; + +template +struct BuiltInComparatorFunction : public AbstractComparatorFunction +{ + BuiltInComparatorFunction() + : AbstractComparatorFunction(lessThan, equals, destroy) {} + static bool lessThan(const AbstractComparatorFunction *, const void *l, const void *r) + { + const T *lhs = static_cast(l); + const T *rhs = static_cast(r); + return *lhs < *rhs; + } + + static bool equals(const AbstractComparatorFunction *, const void *l, const void *r) + { + const T *lhs = static_cast(l); + const T *rhs = static_cast(r); + return *lhs == *rhs; + } + + static void destroy(AbstractComparatorFunction *_this) + { + delete static_cast(_this); + } +}; + +template +struct BuiltInEqualsComparatorFunction : public AbstractComparatorFunction +{ + BuiltInEqualsComparatorFunction() + : AbstractComparatorFunction(Q_NULLPTR, equals, destroy) {} + static bool equals(const AbstractComparatorFunction *, const void *l, const void *r) + { + const T *lhs = static_cast(l); + const T *rhs = static_cast(r); + return *lhs == *rhs; + } + + static void destroy(AbstractComparatorFunction *_this) + { + delete static_cast(_this); + } +}; + +struct AbstractConverterFunction +{ + typedef bool (*Converter)(const AbstractConverterFunction *, const void *, void*); + explicit AbstractConverterFunction(Converter c = Q_NULLPTR) + : convert(c) {} + Q_DISABLE_COPY(AbstractConverterFunction) + Converter convert; +}; + +template +struct ConverterMemberFunction : public AbstractConverterFunction +{ + explicit ConverterMemberFunction(To(From::*function)() const) + : AbstractConverterFunction(convert), + m_function(function) {} + ~ConverterMemberFunction(); + static bool convert(const AbstractConverterFunction *_this, const void *in, void *out) + { + const From *f = static_cast(in); + To *t = static_cast(out); + const ConverterMemberFunction *_typedThis = + static_cast(_this); + *t = (f->*_typedThis->m_function)(); + return true; + } + + To(From::* const m_function)() const; +}; + +template +struct ConverterMemberFunctionOk : public AbstractConverterFunction +{ + explicit ConverterMemberFunctionOk(To(From::*function)(bool *) const) + : AbstractConverterFunction(convert), + m_function(function) {} + ~ConverterMemberFunctionOk(); + static bool convert(const AbstractConverterFunction *_this, const void *in, void *out) + { + const From *f = static_cast(in); + To *t = static_cast(out); + bool ok = false; + const ConverterMemberFunctionOk *_typedThis = + static_cast(_this); + *t = (f->*_typedThis->m_function)(&ok); + if (!ok) + *t = To(); + return ok; + } + + To(From::* const m_function)(bool*) const; +}; + +template +struct ConverterFunctor : public AbstractConverterFunction +{ + explicit ConverterFunctor(UnaryFunction function) + : AbstractConverterFunction(convert), + m_function(function) {} + ~ConverterFunctor(); + static bool convert(const AbstractConverterFunction *_this, const void *in, void *out) + { + const From *f = static_cast(in); + To *t = static_cast(out); + const ConverterFunctor *_typedThis = + static_cast(_this); + *t = _typedThis->m_function(*f); + return true; + } + + UnaryFunction m_function; +}; + + template + struct ValueTypeIsMetaType; + template + struct AssociativeValueTypeIsMetaType; + template + struct IsMetaTypePair; + template + struct MetaTypeSmartPointerHelper; +} + +class Q_CORE_EXPORT QMetaType { + enum ExtensionFlag { NoExtensionFlags, + CreateEx = 0x1, DestroyEx = 0x2, + ConstructEx = 0x4, DestructEx = 0x8, + NameEx = 0x10, SizeEx = 0x20, + CtorEx = 0x40, DtorEx = 0x80, + FlagsEx = 0x100, MetaObjectEx = 0x200 + }; +public: +#ifndef Q_QDOC + // The code that actually gets compiled. + enum Type { + // these are merged with QVariant + QT_FOR_EACH_STATIC_TYPE(QT_DEFINE_METATYPE_ID) + + FirstCoreType = Bool, + LastCoreType = Nullptr, + FirstGuiType = QFont, + LastGuiType = QPolygonF, + FirstWidgetsType = QSizePolicy, + LastWidgetsType = QSizePolicy, + HighestInternalId = LastWidgetsType, + + QReal = sizeof(qreal) == sizeof(double) ? Double : Float, + + UnknownType = 0, + User = 1024 + }; +#else + // If we are using QDoc it fakes the Type enum looks like this. + enum Type { + UnknownType = 0, Bool = 1, Int = 2, UInt = 3, LongLong = 4, ULongLong = 5, + Double = 6, Long = 32, Short = 33, Char = 34, ULong = 35, UShort = 36, + UChar = 37, Float = 38, + VoidStar = 31, + QChar = 7, QString = 10, QStringList = 11, QByteArray = 12, + QBitArray = 13, QDate = 14, QTime = 15, QDateTime = 16, QUrl = 17, + QLocale = 18, QRect = 19, QRectF = 20, QSize = 21, QSizeF = 22, + QLine = 23, QLineF = 24, QPoint = 25, QPointF = 26, QRegExp = 27, + QEasingCurve = 29, QUuid = 30, QVariant = 41, QModelIndex = 42, + QPersistentModelIndex = 50, QRegularExpression = 44, + QJsonValue = 45, QJsonObject = 46, QJsonArray = 47, QJsonDocument = 48, + QByteArrayList = 49, QObjectStar = 39, SChar = 40, + Void = 43, + QVariantMap = 8, QVariantList = 9, QVariantHash = 28, + QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68, + QIcon = 69, QImage = 70, QPolygon = 71, QRegion = 72, QBitmap = 73, + QCursor = 74, QKeySequence = 75, QPen = 76, QTextLength = 77, QTextFormat = 78, + QMatrix = 79, QTransform = 80, QMatrix4x4 = 81, QVector2D = 82, + QVector3D = 83, QVector4D = 84, QQuaternion = 85, QPolygonF = 86, + QSizePolicy = 121, + User = 1024 + }; +#endif + + enum TypeFlag { + NeedsConstruction = 0x1, + NeedsDestruction = 0x2, + MovableType = 0x4, + PointerToQObject = 0x8, + IsEnumeration = 0x10, + SharedPointerToQObject = 0x20, + WeakPointerToQObject = 0x40, + TrackingPointerToQObject = 0x80, + WasDeclaredAsMetaType = 0x100, + IsGadget = 0x200 + }; + Q_DECLARE_FLAGS(TypeFlags, TypeFlag) + + typedef void (*Deleter)(void *); + typedef void *(*Creator)(const void *); + + typedef void (*Destructor)(void *); + typedef void *(*Constructor)(void *, const void *); + + typedef void (*SaveOperator)(QDataStream &, const void *); + typedef void (*LoadOperator)(QDataStream &, void *); +#ifndef QT_NO_DATASTREAM + static void registerStreamOperators(const char *typeName, SaveOperator saveOp, + LoadOperator loadOp); + static void registerStreamOperators(int type, SaveOperator saveOp, + LoadOperator loadOp); +#endif + static int registerType(const char *typeName, Deleter deleter, + Creator creator); + static int registerType(const char *typeName, Deleter deleter, + Creator creator, + Destructor destructor, + Constructor constructor, + int size, + QMetaType::TypeFlags flags, + const QMetaObject *metaObject); + static bool unregisterType(int type); + static int registerNormalizedType(const QT_PREPEND_NAMESPACE(QByteArray) &normalizedTypeName, Deleter deleter, + Creator creator, + Destructor destructor, + Constructor constructor, + int size, + QMetaType::TypeFlags flags, + const QMetaObject *metaObject); + static int registerNormalizedType(const QT_PREPEND_NAMESPACE(QByteArray) &normalizedTypeName, Destructor destructor, + Constructor constructor, + int size, + QMetaType::TypeFlags flags, + const QMetaObject *metaObject); + static int registerTypedef(const char *typeName, int aliasId); + static int registerNormalizedTypedef(const QT_PREPEND_NAMESPACE(QByteArray) &normalizedTypeName, int aliasId); + static int type(const char *typeName); + + static int type(const QT_PREPEND_NAMESPACE(QByteArray) &typeName); + static const char *typeName(int type); + static int sizeOf(int type); + static TypeFlags typeFlags(int type); + static const QMetaObject *metaObjectForType(int type); + static bool isRegistered(int type); + static void *create(int type, const void *copy = Q_NULLPTR); +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED static void *construct(int type, const void *copy = Q_NULLPTR) + { return create(type, copy); } +#endif + static void destroy(int type, void *data); + static void *construct(int type, void *where, const void *copy); + static void destruct(int type, void *where); + +#ifndef QT_NO_DATASTREAM + static bool save(QDataStream &stream, int type, const void *data); + static bool load(QDataStream &stream, int type, void *data); +#endif + + explicit QMetaType(const int type); // ### Qt6: drop const + inline ~QMetaType(); + + inline bool isValid() const; + inline bool isRegistered() const; + inline int sizeOf() const; + inline TypeFlags flags() const; + inline const QMetaObject *metaObject() const; + + inline void *create(const void *copy = Q_NULLPTR) const; + inline void destroy(void *data) const; + inline void *construct(void *where, const void *copy = Q_NULLPTR) const; + inline void destruct(void *data) const; + +public: + template + static bool registerComparators() + { + Q_STATIC_ASSERT_X((!QMetaTypeId2::IsBuiltIn), + "QMetaType::registerComparators: The type must be a custom type."); + + const int typeId = qMetaTypeId(); + static const QtPrivate::BuiltInComparatorFunction f; + return registerComparatorFunction( &f, typeId); + } + template + static bool registerEqualsComparator() + { + Q_STATIC_ASSERT_X((!QMetaTypeId2::IsBuiltIn), + "QMetaType::registerEqualsComparator: The type must be a custom type."); + const int typeId = qMetaTypeId(); + static const QtPrivate::BuiltInEqualsComparatorFunction f; + return registerComparatorFunction( &f, typeId); + } + + template + static bool hasRegisteredComparators() + { + return hasRegisteredComparators(qMetaTypeId()); + } + static bool hasRegisteredComparators(int typeId); + + +#ifndef QT_NO_DEBUG_STREAM + template + static bool registerDebugStreamOperator() + { + Q_STATIC_ASSERT_X((!QMetaTypeId2::IsBuiltIn), + "QMetaType::registerDebugStreamOperator: The type must be a custom type."); + + const int typeId = qMetaTypeId(); + static const QtPrivate::BuiltInDebugStreamFunction f; + return registerDebugStreamOperatorFunction(&f, typeId); + } + template + static bool hasRegisteredDebugStreamOperator() + { + return hasRegisteredDebugStreamOperator(qMetaTypeId()); + } + static bool hasRegisteredDebugStreamOperator(int typeId); +#endif + + // implicit conversion supported like double -> float + template + static bool registerConverter() + { + return registerConverter(QtPrivate::convertImplicit); + } + +#ifdef Q_QDOC + template + static bool registerConverter(MemberFunction function); + template + static bool registerConverter(MemberFunctionOk function); + template + static bool registerConverter(UnaryFunction function); +#else + // member function as in "QString QFont::toString() const" + template + static bool registerConverter(To(From::*function)() const) + { + Q_STATIC_ASSERT_X((!QMetaTypeId2::IsBuiltIn || !QMetaTypeId2::IsBuiltIn), + "QMetaType::registerConverter: At least one of the types must be a custom type."); + + const int fromTypeId = qMetaTypeId(); + const int toTypeId = qMetaTypeId(); + static const QtPrivate::ConverterMemberFunction f(function); + return registerConverterFunction(&f, fromTypeId, toTypeId); + } + + // member function as in "double QString::toDouble(bool *ok = Q_NULLPTR) const" + template + static bool registerConverter(To(From::*function)(bool*) const) + { + Q_STATIC_ASSERT_X((!QMetaTypeId2::IsBuiltIn || !QMetaTypeId2::IsBuiltIn), + "QMetaType::registerConverter: At least one of the types must be a custom type."); + + const int fromTypeId = qMetaTypeId(); + const int toTypeId = qMetaTypeId(); + static const QtPrivate::ConverterMemberFunctionOk f(function); + return registerConverterFunction(&f, fromTypeId, toTypeId); + } + + // functor or function pointer + template + static bool registerConverter(UnaryFunction function) + { + Q_STATIC_ASSERT_X((!QMetaTypeId2::IsBuiltIn || !QMetaTypeId2::IsBuiltIn), + "QMetaType::registerConverter: At least one of the types must be a custom type."); + + const int fromTypeId = qMetaTypeId(); + const int toTypeId = qMetaTypeId(); + static const QtPrivate::ConverterFunctor f(function); + return registerConverterFunction(&f, fromTypeId, toTypeId); + } +#endif + + static bool convert(const void *from, int fromTypeId, void *to, int toTypeId); + static bool compare(const void *lhs, const void *rhs, int typeId, int* result); + static bool equals(const void *lhs, const void *rhs, int typeId, int* result); + static bool debugStream(QDebug& dbg, const void *rhs, int typeId); + + template + static bool hasRegisteredConverterFunction() + { + return hasRegisteredConverterFunction(qMetaTypeId(), qMetaTypeId()); + } + + static bool hasRegisteredConverterFunction(int fromTypeId, int toTypeId); + +private: + static QMetaType typeInfo(const int type); + inline QMetaType(const ExtensionFlag extensionFlags, const QMetaTypeInterface *info, + Creator creator, + Deleter deleter, + SaveOperator saveOp, + LoadOperator loadOp, + Constructor constructor, + Destructor destructor, + uint sizeOf, + uint theTypeFlags, + int typeId, + const QMetaObject *metaObject); + QMetaType(const QMetaType &other); + QMetaType &operator =(const QMetaType &); + inline bool isExtended(const ExtensionFlag flag) const { return m_extensionFlags & flag; } + + // Methods used for future binary compatible extensions + void ctor(const QMetaTypeInterface *info); + void dtor(); + uint sizeExtended() const; + QMetaType::TypeFlags flagsExtended() const; + const QMetaObject *metaObjectExtended() const; + void *createExtended(const void *copy = Q_NULLPTR) const; + void destroyExtended(void *data) const; + void *constructExtended(void *where, const void *copy = Q_NULLPTR) const; + void destructExtended(void *data) const; + + static bool registerComparatorFunction(const QtPrivate::AbstractComparatorFunction *f, int type); +#ifndef QT_NO_DEBUG_STREAM + static bool registerDebugStreamOperatorFunction(const QtPrivate::AbstractDebugStreamFunction *f, int type); +#endif + +// ### Qt6: FIXME: Remove the special Q_CC_MSVC handling, it was introduced to maintain BC. +#if !defined(Q_NO_TEMPLATE_FRIENDS) && !defined(Q_CC_MSVC) +#ifndef Q_QDOC + template friend struct QtPrivate::ValueTypeIsMetaType; + template friend struct QtPrivate::ConverterMemberFunction; + template friend struct QtPrivate::ConverterMemberFunctionOk; + template friend struct QtPrivate::ConverterFunctor; + template friend struct QtPrivate::AssociativeValueTypeIsMetaType; + template friend struct QtPrivate::IsMetaTypePair; + template friend struct QtPrivate::MetaTypeSmartPointerHelper; +#endif +#else +public: +#endif + static bool registerConverterFunction(const QtPrivate::AbstractConverterFunction *f, int from, int to); + static void unregisterConverterFunction(int from, int to); +private: + + Creator m_creator_unused; + Deleter m_deleter_unused; + SaveOperator m_saveOp; + LoadOperator m_loadOp; + Constructor m_constructor; + Destructor m_destructor; + void *m_extension; // space reserved for future use + uint m_size; + uint m_typeFlags; + uint m_extensionFlags; + int m_typeId; + const QMetaObject *m_metaObject; +}; + +#undef QT_DEFINE_METATYPE_ID + +Q_DECLARE_OPERATORS_FOR_FLAGS(QMetaType::TypeFlags) + +namespace QtPrivate { + +template +ConverterMemberFunction::~ConverterMemberFunction() +{ + QMetaType::unregisterConverterFunction(qMetaTypeId(), qMetaTypeId()); +} +template +ConverterMemberFunctionOk::~ConverterMemberFunctionOk() +{ + QMetaType::unregisterConverterFunction(qMetaTypeId(), qMetaTypeId()); +} +template +ConverterFunctor::~ConverterFunctor() +{ + QMetaType::unregisterConverterFunction(qMetaTypeId(), qMetaTypeId()); +} + +} + +#define QT_METATYPE_PRIVATE_DECLARE_TYPEINFO(C, F) \ + } \ + Q_DECLARE_TYPEINFO(QtMetaTypePrivate:: C, (F)); \ + namespace QtMetaTypePrivate { + +namespace QtMetaTypePrivate { +template +struct QMetaTypeFunctionHelper { + static void Destruct(void *t) + { + Q_UNUSED(t) // Silence MSVC that warns for POD types. + static_cast(t)->~T(); + } + + static void *Construct(void *where, const void *t) + { + if (t) + return new (where) T(*static_cast(t)); + return new (where) T; + } +#ifndef QT_NO_DATASTREAM + static void Save(QDataStream &stream, const void *t) + { + stream << *static_cast(t); + } + + static void Load(QDataStream &stream, void *t) + { + stream >> *static_cast(t); + } +#endif // QT_NO_DATASTREAM +}; + +template +struct QMetaTypeFunctionHelper { + static void Destruct(void *) {} + static void *Construct(void *, const void *) { return Q_NULLPTR; } +#ifndef QT_NO_DATASTREAM + static void Save(QDataStream &, const void *) {} + static void Load(QDataStream &, void *) {} +#endif // QT_NO_DATASTREAM +}; +template <> +struct QMetaTypeFunctionHelper + : public QMetaTypeFunctionHelper +{}; + +struct VariantData +{ + VariantData(const int metaTypeId_, + const void *data_, + const uint flags_) + : metaTypeId(metaTypeId_) + , data(data_) + , flags(flags_) + { + } + VariantData(const VariantData &other) + : metaTypeId(other.metaTypeId), data(other.data), flags(other.flags){} + const int metaTypeId; + const void *data; + const uint flags; +private: + // copy constructor allowed to be implicit to silence level 4 warning from MSVC + VariantData &operator=(const VariantData &) Q_DECL_EQ_DELETE; +}; + +template +struct IteratorOwnerCommon +{ + static void assign(void **ptr, const_iterator iterator) + { + *ptr = new const_iterator(iterator); + } + static void assign(void **ptr, void * const * src) + { + *ptr = new const_iterator(*static_cast(*src)); + } + + static void advance(void **iterator, int step) + { + const_iterator &it = *static_cast(*iterator); + std::advance(it, step); + } + + static void destroy(void **ptr) + { + delete static_cast(*ptr); + } + + static bool equal(void * const *it, void * const *other) + { + return *static_cast(*it) == *static_cast(*other); + } +}; + +template +struct IteratorOwner : IteratorOwnerCommon +{ + static const void *getData(void * const *iterator) + { + return &**static_cast(*iterator); + } + + static const void *getData(const_iterator it) + { + return &*it; + } +}; + +struct Q_CORE_EXPORT VectorBoolElements +{ + static const bool true_element; + static const bool false_element; +}; + +template<> +struct IteratorOwner::const_iterator> : IteratorOwnerCommon::const_iterator> +{ +public: + static const void *getData(void * const *iterator) + { + return **static_cast::const_iterator*>(*iterator) ? + &VectorBoolElements::true_element : &VectorBoolElements::false_element; + } + + static const void *getData(const std::vector::const_iterator& it) + { + return *it ? &VectorBoolElements::true_element : &VectorBoolElements::false_element; + } +}; + +template +struct IteratorOwner +{ +private: + // We need to disable typed overloads of assign() and getData() if the value_type + // is void* to avoid overloads conflicts. We do it by injecting unaccessible Dummy + // type as part of the overload signature. + struct Dummy {}; + typedef typename std::conditional::value, Dummy, value_type>::type value_type_OR_Dummy; +public: + static void assign(void **ptr, const value_type_OR_Dummy *iterator ) + { + *ptr = const_cast(iterator); + } + static void assign(void **ptr, void * const * src) + { + *ptr = static_cast(*src); + } + + static void advance(void **iterator, int step) + { + value_type *it = static_cast(*iterator); + std::advance(it, step); + *iterator = it; + } + + static void destroy(void **) + { + } + + static const void *getData(void * const *iterator) + { + return *iterator; + } + + static const void *getData(const value_type_OR_Dummy *it) + { + return it; + } + + static bool equal(void * const *it, void * const *other) + { + return static_cast(*it) == static_cast(*other); + } +}; + +enum IteratorCapability +{ + ForwardCapability = 1, + BiDirectionalCapability = 2, + RandomAccessCapability = 4 +}; + +template::iterator_category> +struct CapabilitiesImpl; + +template +struct CapabilitiesImpl +{ enum { IteratorCapabilities = ForwardCapability }; }; +template +struct CapabilitiesImpl +{ enum { IteratorCapabilities = BiDirectionalCapability | ForwardCapability }; }; +template +struct CapabilitiesImpl +{ enum { IteratorCapabilities = RandomAccessCapability | BiDirectionalCapability | ForwardCapability }; }; + +template +struct ContainerAPI : CapabilitiesImpl +{ + static int size(const T *t) { return int(std::distance(t->begin(), t->end())); } +}; + +template +struct ContainerAPI > : CapabilitiesImpl > +{ static int size(const QList *t) { return t->size(); } }; + +template +struct ContainerAPI > : CapabilitiesImpl > +{ static int size(const QVector *t) { return t->size(); } }; + +template +struct ContainerAPI > : CapabilitiesImpl > +{ static int size(const std::vector *t) { return int(t->size()); } }; + +template +struct ContainerAPI > : CapabilitiesImpl > +{ static int size(const std::list *t) { return int(t->size()); } }; + +class QSequentialIterableImpl +{ +public: + const void * _iterable; + void *_iterator; + int _metaType_id; + uint _metaType_flags; + uint _iteratorCapabilities; + typedef int(*sizeFunc)(const void *p); + typedef const void * (*atFunc)(const void *p, int); + typedef void (*moveIteratorFunc)(const void *p, void **); + typedef void (*advanceFunc)(void **p, int); + typedef VariantData (*getFunc)( void * const *p, int metaTypeId, uint flags); + typedef void (*destroyIterFunc)(void **p); + typedef bool (*equalIterFunc)(void * const *p, void * const *other); + typedef void (*copyIterFunc)(void **, void * const *); + + sizeFunc _size; + atFunc _at; + moveIteratorFunc _moveToBegin; + moveIteratorFunc _moveToEnd; + advanceFunc _advance; + getFunc _get; + destroyIterFunc _destroyIter; + equalIterFunc _equalIter; + copyIterFunc _copyIter; + + template + static int sizeImpl(const void *p) + { return ContainerAPI::size(static_cast(p)); } + + template + static const void* atImpl(const void *p, int idx) + { + typename T::const_iterator i = static_cast(p)->begin(); + std::advance(i, idx); + return IteratorOwner::getData(i); + } + + template + static void moveToBeginImpl(const void *container, void **iterator) + { IteratorOwner::assign(iterator, static_cast(container)->begin()); } + + template + static void moveToEndImpl(const void *container, void **iterator) + { IteratorOwner::assign(iterator, static_cast(container)->end()); } + + template + static VariantData getImpl(void * const *iterator, int metaTypeId, uint flags) + { return VariantData(metaTypeId, IteratorOwner::getData(iterator), flags); } + +public: + template QSequentialIterableImpl(const T*p) + : _iterable(p) + , _iterator(Q_NULLPTR) + , _metaType_id(qMetaTypeId()) + , _metaType_flags(QTypeInfo::isPointer) + , _iteratorCapabilities(ContainerAPI::IteratorCapabilities) + , _size(sizeImpl) + , _at(atImpl) + , _moveToBegin(moveToBeginImpl) + , _moveToEnd(moveToEndImpl) + , _advance(IteratorOwner::advance) + , _get(getImpl) + , _destroyIter(IteratorOwner::destroy) + , _equalIter(IteratorOwner::equal) + , _copyIter(IteratorOwner::assign) + { + } + + QSequentialIterableImpl() + : _iterable(Q_NULLPTR) + , _iterator(Q_NULLPTR) + , _metaType_id(QMetaType::UnknownType) + , _metaType_flags(0) + , _iteratorCapabilities(0) + , _size(Q_NULLPTR) + , _at(Q_NULLPTR) + , _moveToBegin(Q_NULLPTR) + , _moveToEnd(Q_NULLPTR) + , _advance(Q_NULLPTR) + , _get(Q_NULLPTR) + , _destroyIter(Q_NULLPTR) + , _equalIter(Q_NULLPTR) + , _copyIter(Q_NULLPTR) + { + } + + inline void moveToBegin() { _moveToBegin(_iterable, &_iterator); } + inline void moveToEnd() { _moveToEnd(_iterable, &_iterator); } + inline bool equal(const QSequentialIterableImpl&other) const { return _equalIter(&_iterator, &other._iterator); } + inline QSequentialIterableImpl &advance(int i) { + Q_ASSERT(i > 0 || _iteratorCapabilities & BiDirectionalCapability); + _advance(&_iterator, i); + return *this; + } + + inline VariantData getCurrent() const { return _get(&_iterator, _metaType_id, _metaType_flags); } + + VariantData at(int idx) const + { return VariantData(_metaType_id, _at(_iterable, idx), _metaType_flags); } + + int size() const { Q_ASSERT(_iterable); return _size(_iterable); } + + inline void destroyIter() { _destroyIter(&_iterator); } + + void copy(const QSequentialIterableImpl &other) + { + *this = other; + _copyIter(&_iterator, &other._iterator); + } +}; +QT_METATYPE_PRIVATE_DECLARE_TYPEINFO(QSequentialIterableImpl, Q_MOVABLE_TYPE) + +template +struct QSequentialIterableConvertFunctor +{ + QSequentialIterableImpl operator()(const From &f) const + { + return QSequentialIterableImpl(&f); + } +}; +} + +namespace QtMetaTypePrivate { +template::value> +struct AssociativeContainerAccessor +{ + static const typename T::key_type& getKey(const typename T::const_iterator &it) + { + return it.key(); + } + + static const typename T::mapped_type& getValue(const typename T::const_iterator &it) + { + return it.value(); + } +}; + +template >::value> +struct StlStyleAssociativeContainerAccessor; + +template +struct StlStyleAssociativeContainerAccessor +{ + static const typename T::key_type& getKey(const typename T::const_iterator &it) + { + return it->first; + } + + static const typename T::mapped_type& getValue(const typename T::const_iterator &it) + { + return it->second; + } +}; + +template +struct AssociativeContainerAccessor : public StlStyleAssociativeContainerAccessor +{ +}; + +class QAssociativeIterableImpl +{ +public: + const void *_iterable; + void *_iterator; + int _metaType_id_key; + uint _metaType_flags_key; + int _metaType_id_value; + uint _metaType_flags_value; + typedef int(*sizeFunc)(const void *p); + typedef void (*findFunc)(const void *container, const void *p, void **iterator); + typedef void (*beginFunc)(const void *p, void **); + typedef void (*advanceFunc)(void **p, int); + typedef VariantData (*getFunc)(void * const *p, int metaTypeId, uint flags); + typedef void (*destroyIterFunc)(void **p); + typedef bool (*equalIterFunc)(void * const *p, void * const *other); + typedef void (*copyIterFunc)(void **, void * const *); + + sizeFunc _size; + findFunc _find; + beginFunc _begin; + beginFunc _end; + advanceFunc _advance; + getFunc _getKey; + getFunc _getValue; + destroyIterFunc _destroyIter; + equalIterFunc _equalIter; + copyIterFunc _copyIter; + + template + static int sizeImpl(const void *p) + { return int(std::distance(static_cast(p)->begin(), + static_cast(p)->end())); } + + template + static void findImpl(const void *container, const void *p, void **iterator) + { IteratorOwner::assign(iterator, + static_cast(container)->find(*static_cast(p))); } + + template + static void advanceImpl(void **p, int step) + { std::advance(*static_cast(*p), step); } + + template + static void beginImpl(const void *container, void **iterator) + { IteratorOwner::assign(iterator, static_cast(container)->begin()); } + + template + static void endImpl(const void *container, void **iterator) + { IteratorOwner::assign(iterator, static_cast(container)->end()); } + + template + static VariantData getKeyImpl(void * const *iterator, int metaTypeId, uint flags) + { return VariantData(metaTypeId, &AssociativeContainerAccessor::getKey(*static_cast(*iterator)), flags); } + + template + static VariantData getValueImpl(void * const *iterator, int metaTypeId, uint flags) + { return VariantData(metaTypeId, &AssociativeContainerAccessor::getValue(*static_cast(*iterator)), flags); } + +public: + template QAssociativeIterableImpl(const T*p) + : _iterable(p) + , _iterator(Q_NULLPTR) + , _metaType_id_key(qMetaTypeId()) + , _metaType_flags_key(QTypeInfo::isPointer) + , _metaType_id_value(qMetaTypeId()) + , _metaType_flags_value(QTypeInfo::isPointer) + , _size(sizeImpl) + , _find(findImpl) + , _begin(beginImpl) + , _end(endImpl) + , _advance(advanceImpl) + , _getKey(getKeyImpl) + , _getValue(getValueImpl) + , _destroyIter(IteratorOwner::destroy) + , _equalIter(IteratorOwner::equal) + , _copyIter(IteratorOwner::assign) + { + } + + QAssociativeIterableImpl() + : _iterable(Q_NULLPTR) + , _iterator(Q_NULLPTR) + , _metaType_id_key(QMetaType::UnknownType) + , _metaType_flags_key(0) + , _metaType_id_value(QMetaType::UnknownType) + , _metaType_flags_value(0) + , _size(Q_NULLPTR) + , _find(Q_NULLPTR) + , _begin(Q_NULLPTR) + , _end(Q_NULLPTR) + , _advance(Q_NULLPTR) + , _getKey(Q_NULLPTR) + , _getValue(Q_NULLPTR) + , _destroyIter(Q_NULLPTR) + , _equalIter(Q_NULLPTR) + , _copyIter(Q_NULLPTR) + { + } + + inline void begin() { _begin(_iterable, &_iterator); } + inline void end() { _end(_iterable, &_iterator); } + inline bool equal(const QAssociativeIterableImpl&other) const { return _equalIter(&_iterator, &other._iterator); } + inline QAssociativeIterableImpl &advance(int i) { _advance(&_iterator, i); return *this; } + + inline void destroyIter() { _destroyIter(&_iterator); } + + inline VariantData getCurrentKey() const { return _getKey(&_iterator, _metaType_id_key, _metaType_flags_key); } + inline VariantData getCurrentValue() const { return _getValue(&_iterator, _metaType_id_value, _metaType_flags_value); } + + inline void find(const VariantData &key) + { _find(_iterable, key.data, &_iterator); } + + int size() const { Q_ASSERT(_iterable); return _size(_iterable); } + + void copy(const QAssociativeIterableImpl &other) + { + *this = other; + _copyIter(&_iterator, &other._iterator); + } +}; +QT_METATYPE_PRIVATE_DECLARE_TYPEINFO(QAssociativeIterableImpl, Q_MOVABLE_TYPE) + +template +struct QAssociativeIterableConvertFunctor +{ + QAssociativeIterableImpl operator()(const From& f) const + { + return QAssociativeIterableImpl(&f); + } +}; + +class QPairVariantInterfaceImpl +{ + const void *_pair; + int _metaType_id_first; + uint _metaType_flags_first; + int _metaType_id_second; + uint _metaType_flags_second; + + typedef VariantData (*getFunc)(const void * const *p, int metaTypeId, uint flags); + + getFunc _getFirst; + getFunc _getSecond; + + template + static VariantData getFirstImpl(const void * const *pair, int metaTypeId, uint flags) + { return VariantData(metaTypeId, &static_cast(*pair)->first, flags); } + template + static VariantData getSecondImpl(const void * const *pair, int metaTypeId, uint flags) + { return VariantData(metaTypeId, &static_cast(*pair)->second, flags); } + +public: + template QPairVariantInterfaceImpl(const T*p) + : _pair(p) + , _metaType_id_first(qMetaTypeId()) + , _metaType_flags_first(QTypeInfo::isPointer) + , _metaType_id_second(qMetaTypeId()) + , _metaType_flags_second(QTypeInfo::isPointer) + , _getFirst(getFirstImpl) + , _getSecond(getSecondImpl) + { + } + + QPairVariantInterfaceImpl() + : _pair(Q_NULLPTR) + , _metaType_id_first(QMetaType::UnknownType) + , _metaType_flags_first(0) + , _metaType_id_second(QMetaType::UnknownType) + , _metaType_flags_second(0) + , _getFirst(Q_NULLPTR) + , _getSecond(Q_NULLPTR) + { + } + + inline VariantData first() const { return _getFirst(&_pair, _metaType_id_first, _metaType_flags_first); } + inline VariantData second() const { return _getSecond(&_pair, _metaType_id_second, _metaType_flags_second); } +}; +QT_METATYPE_PRIVATE_DECLARE_TYPEINFO(QPairVariantInterfaceImpl, Q_MOVABLE_TYPE) + +template +struct QPairVariantInterfaceConvertFunctor; + +template +struct QPairVariantInterfaceConvertFunctor > +{ + QPairVariantInterfaceImpl operator()(const QPair& f) const + { + return QPairVariantInterfaceImpl(&f); + } +}; + +template +struct QPairVariantInterfaceConvertFunctor > +{ + QPairVariantInterfaceImpl operator()(const std::pair& f) const + { + return QPairVariantInterfaceImpl(&f); + } +}; + +} + +class QObject; +class QWidget; + +#define QT_FORWARD_DECLARE_SHARED_POINTER_TYPES_ITER(Name) \ + template class Name; \ + +QT_FOR_EACH_AUTOMATIC_TEMPLATE_SMART_POINTER(QT_FORWARD_DECLARE_SHARED_POINTER_TYPES_ITER) + +namespace QtPrivate +{ + template + struct IsPointerToTypeDerivedFromQObject + { + enum { Value = false }; + }; + + // Specialize to avoid sizeof(void) warning + template<> + struct IsPointerToTypeDerivedFromQObject + { + enum { Value = false }; + }; + template<> + struct IsPointerToTypeDerivedFromQObject + { + enum { Value = false }; + }; + template<> + struct IsPointerToTypeDerivedFromQObject + { + enum { Value = true }; + }; + + template + struct IsPointerToTypeDerivedFromQObject + { + typedef qint8 yes_type; + typedef qint64 no_type; + +#ifndef QT_NO_QOBJECT + static yes_type checkType(QObject* ); +#endif + static no_type checkType(...); + Q_STATIC_ASSERT_X(sizeof(T), "Type argument of Q_DECLARE_METATYPE(T*) must be fully defined"); + enum { Value = sizeof(checkType(static_cast(Q_NULLPTR))) == sizeof(yes_type) }; + }; + + template + struct IsGadgetHelper { enum { Value = false }; }; + + template + struct IsGadgetHelper + { + template + static char checkType(void (X::*)()); + static void *checkType(void (T::*)()); + enum { Value = sizeof(checkType(&T::qt_check_for_QGADGET_macro)) == sizeof(void *) }; + }; + + + template char qt_getEnumMetaObject(const T&); + + template + struct IsQEnumHelper { + static const T &declval(); + // If the type was declared with Q_ENUM, the friend qt_getEnumMetaObject() declared in the + // Q_ENUM macro will be chosen by ADL, and the return type will be QMetaObject*. + // Otherwise the chosen overload will be the catch all template function + // qt_getEnumMetaObject(T) which returns 'char' + enum { Value = sizeof(qt_getEnumMetaObject(declval())) == sizeof(QMetaObject*) }; + }; + template<> struct IsQEnumHelper { enum { Value = false }; }; + + template + struct MetaObjectForType + { + static inline const QMetaObject *value() { return Q_NULLPTR; } + }; + template<> + struct MetaObjectForType + { + static inline const QMetaObject *value() { return Q_NULLPTR; } + }; + template + struct MetaObjectForType::Value>::type> + { + static inline const QMetaObject *value() { return &T::staticMetaObject; } + }; + template + struct MetaObjectForType::Value>::type> + { + static inline const QMetaObject *value() { return &T::staticMetaObject; } + }; + template + struct MetaObjectForType::Value>::type > + { + static inline const QMetaObject *value() { return qt_getEnumMetaObject(T()); } + }; + + template + struct IsSharedPointerToTypeDerivedFromQObject + { + enum { Value = false }; + }; + + template + struct IsSharedPointerToTypeDerivedFromQObject > : IsPointerToTypeDerivedFromQObject + { + }; + + template + struct IsWeakPointerToTypeDerivedFromQObject + { + enum { Value = false }; + }; + + template + struct IsWeakPointerToTypeDerivedFromQObject > : IsPointerToTypeDerivedFromQObject + { + }; + + template + struct IsTrackingPointerToTypeDerivedFromQObject + { + enum { Value = false }; + }; + + template + struct IsTrackingPointerToTypeDerivedFromQObject > + { + enum { Value = true }; + }; + + template + struct IsSequentialContainer + { + enum { Value = false }; + }; + + template + struct IsAssociativeContainer + { + enum { Value = false }; + }; + + template::Value> + struct SequentialContainerConverterHelper + { + static bool registerConverter(int) + { + return false; + } + }; + + template::Defined> + struct ValueTypeIsMetaType + { + static bool registerConverter(int) + { + return false; + } + }; + + template + struct SequentialContainerConverterHelper : ValueTypeIsMetaType + { + }; + + template::Value> + struct AssociativeContainerConverterHelper + { + static bool registerConverter(int) + { + return false; + } + }; + + template::Defined> + struct AssociativeValueTypeIsMetaType + { + static bool registerConverter(int) + { + return false; + } + }; + + template::Defined> + struct KeyAndValueTypeIsMetaType + { + static bool registerConverter(int) + { + return false; + } + }; + + template + struct KeyAndValueTypeIsMetaType : AssociativeValueTypeIsMetaType + { + }; + + template + struct AssociativeContainerConverterHelper : KeyAndValueTypeIsMetaType + { + }; + + template::Defined + && QMetaTypeId2::Defined> + struct IsMetaTypePair + { + static bool registerConverter(int) + { + return false; + } + }; + + template + struct IsMetaTypePair + { + inline static bool registerConverter(int id); + }; + + template + struct IsPair + { + static bool registerConverter(int) + { + return false; + } + }; + template + struct IsPair > : IsMetaTypePair > {}; + template + struct IsPair > : IsMetaTypePair > {}; + + template + struct MetaTypePairHelper : IsPair {}; + + template + struct MetaTypeSmartPointerHelper + { + static bool registerConverter(int) { return false; } + }; + + Q_CORE_EXPORT bool isBuiltinType(const QByteArray &type); +} // namespace QtPrivate + +template ::Value ? QMetaType::PointerToQObject : + QtPrivate::IsGadgetHelper::Value ? QMetaType::IsGadget : + QtPrivate::IsQEnumHelper::Value ? QMetaType::IsEnumeration : 0> +struct QMetaTypeIdQObject +{ + enum { + Defined = 0 + }; +}; + +template +struct QMetaTypeId : public QMetaTypeIdQObject +{ +}; + +template +struct QMetaTypeId2 +{ + enum { Defined = QMetaTypeId::Defined, IsBuiltIn=false }; + static inline Q_DECL_CONSTEXPR int qt_metatype_id() { return QMetaTypeId::qt_metatype_id(); } +}; + +template +struct QMetaTypeId2 : QMetaTypeId2 {}; + +template +struct QMetaTypeId2 { enum {Defined = false }; }; + +namespace QtPrivate { + template ::Defined> + struct QMetaTypeIdHelper { + static inline Q_DECL_CONSTEXPR int qt_metatype_id() + { return QMetaTypeId2::qt_metatype_id(); } + }; + template struct QMetaTypeIdHelper { + static inline Q_DECL_CONSTEXPR int qt_metatype_id() + { return -1; } + }; + + // Function pointers don't derive from QObject + template + struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; + + template + struct QMetaTypeTypeFlags + { + enum { Flags = (QTypeInfoQuery::isRelocatable ? QMetaType::MovableType : 0) + | (QTypeInfo::isComplex ? QMetaType::NeedsConstruction : 0) + | (QTypeInfo::isComplex ? QMetaType::NeedsDestruction : 0) + | (IsPointerToTypeDerivedFromQObject::Value ? QMetaType::PointerToQObject : 0) + | (IsSharedPointerToTypeDerivedFromQObject::Value ? QMetaType::SharedPointerToQObject : 0) + | (IsWeakPointerToTypeDerivedFromQObject::Value ? QMetaType::WeakPointerToQObject : 0) + | (IsTrackingPointerToTypeDerivedFromQObject::Value ? QMetaType::TrackingPointerToQObject : 0) + | (std::is_enum::value ? QMetaType::IsEnumeration : 0) + | (IsGadgetHelper::Value ? QMetaType::IsGadget : 0) + }; + }; + + template + struct MetaTypeDefinedHelper + { + enum DefinedType { Defined = defined }; + }; + + template + struct QSmartPointerConvertFunctor + { + QObject* operator()(const SmartPointer &p) const + { + return p.operator->(); + } + }; + + template + struct QSmartPointerConvertFunctor > + { + QObject* operator()(const QWeakPointer &p) const + { + return p.data(); + } + }; +} + +template +int qRegisterNormalizedMetaType(const QT_PREPEND_NAMESPACE(QByteArray) &normalizedTypeName +#ifndef Q_QDOC + , T * dummy = 0 + , typename QtPrivate::MetaTypeDefinedHelper::Defined && !QMetaTypeId2::IsBuiltIn>::DefinedType defined = QtPrivate::MetaTypeDefinedHelper::Defined && !QMetaTypeId2::IsBuiltIn>::Defined +#endif +) +{ +#ifndef QT_NO_QOBJECT + Q_ASSERT_X(normalizedTypeName == QMetaObject::normalizedType(normalizedTypeName.constData()), "qRegisterNormalizedMetaType", "qRegisterNormalizedMetaType was called with a not normalized type name, please call qRegisterMetaType instead."); +#endif + const int typedefOf = dummy ? -1 : QtPrivate::QMetaTypeIdHelper::qt_metatype_id(); + if (typedefOf != -1) + return QMetaType::registerNormalizedTypedef(normalizedTypeName, typedefOf); + + QMetaType::TypeFlags flags(QtPrivate::QMetaTypeTypeFlags::Flags); + + if (defined) + flags |= QMetaType::WasDeclaredAsMetaType; + + const int id = QMetaType::registerNormalizedType(normalizedTypeName, + QtMetaTypePrivate::QMetaTypeFunctionHelper::Destruct, + QtMetaTypePrivate::QMetaTypeFunctionHelper::Construct, + int(sizeof(T)), + flags, + QtPrivate::MetaObjectForType::value()); + + if (id > 0) { + QtPrivate::SequentialContainerConverterHelper::registerConverter(id); + QtPrivate::AssociativeContainerConverterHelper::registerConverter(id); + QtPrivate::MetaTypePairHelper::registerConverter(id); + QtPrivate::MetaTypeSmartPointerHelper::registerConverter(id); + } + + return id; +} + +template +int qRegisterMetaType(const char *typeName +#ifndef Q_QDOC + , T * dummy = Q_NULLPTR + , typename QtPrivate::MetaTypeDefinedHelper::Defined && !QMetaTypeId2::IsBuiltIn>::DefinedType defined = QtPrivate::MetaTypeDefinedHelper::Defined && !QMetaTypeId2::IsBuiltIn>::Defined +#endif +) +{ +#ifdef QT_NO_QOBJECT + QT_PREPEND_NAMESPACE(QByteArray) normalizedTypeName = typeName; +#else + QT_PREPEND_NAMESPACE(QByteArray) normalizedTypeName = QMetaObject::normalizedType(typeName); +#endif + return qRegisterNormalizedMetaType(normalizedTypeName, dummy, defined); +} + +#ifndef QT_NO_DATASTREAM +template +void qRegisterMetaTypeStreamOperators(const char *typeName +#ifndef Q_QDOC + , T * /* dummy */ = Q_NULLPTR +#endif +) +{ + qRegisterMetaType(typeName); + QMetaType::registerStreamOperators(typeName, QtMetaTypePrivate::QMetaTypeFunctionHelper::Save, + QtMetaTypePrivate::QMetaTypeFunctionHelper::Load); +} +#endif // QT_NO_DATASTREAM + +template +inline Q_DECL_CONSTEXPR int qMetaTypeId() +{ + Q_STATIC_ASSERT_X(QMetaTypeId2::Defined, "Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system"); + return QMetaTypeId2::qt_metatype_id(); +} + +template +inline Q_DECL_CONSTEXPR int qRegisterMetaType() +{ + return qMetaTypeId(); +} + +#if QT_DEPRECATED_SINCE(5, 1) && !defined(Q_QDOC) +// There used to be a T *dummy = 0 argument in Qt 4.0 to support MSVC6 +template +QT_DEPRECATED inline Q_DECL_CONSTEXPR int qMetaTypeId(T *) +{ return qMetaTypeId(); } +#ifndef Q_CC_SUN +template +QT_DEPRECATED inline Q_DECL_CONSTEXPR int qRegisterMetaType(T *) +{ return qRegisterMetaType(); } +#endif +#endif + +#ifndef QT_NO_QOBJECT +template +struct QMetaTypeIdQObject +{ + enum { + Defined = 1 + }; + + static int qt_metatype_id() + { + static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); + if (const int id = metatype_id.loadAcquire()) + return id; + const char * const cName = T::staticMetaObject.className(); + QByteArray typeName; + typeName.reserve(int(strlen(cName)) + 1); + typeName.append(cName).append('*'); + const int newId = qRegisterNormalizedMetaType( + typeName, + reinterpret_cast(quintptr(-1))); + metatype_id.storeRelease(newId); + return newId; + } +}; + +template +struct QMetaTypeIdQObject +{ + enum { + Defined = std::is_default_constructible::value + }; + + static int qt_metatype_id() + { + static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); + if (const int id = metatype_id.loadAcquire()) + return id; + const char * const cName = T::staticMetaObject.className(); + const int newId = qRegisterNormalizedMetaType( + cName, + reinterpret_cast(quintptr(-1))); + metatype_id.storeRelease(newId); + return newId; + } +}; + +template +struct QMetaTypeIdQObject +{ + enum { + Defined = 1 + }; + + static int qt_metatype_id() + { + static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); + if (const int id = metatype_id.loadAcquire()) + return id; + const char *eName = qt_getEnumName(T()); + const char *cName = qt_getEnumMetaObject(T())->className(); + QByteArray typeName; + typeName.reserve(int(strlen(cName) + 2 + strlen(eName))); + typeName.append(cName).append("::").append(eName); + const int newId = qRegisterNormalizedMetaType( + typeName, + reinterpret_cast(quintptr(-1))); + metatype_id.storeRelease(newId); + return newId; + } +}; +#endif + +#ifndef QT_NO_DATASTREAM +template +inline int qRegisterMetaTypeStreamOperators() +{ + int id = qMetaTypeId(); + QMetaType::registerStreamOperators(id, QtMetaTypePrivate::QMetaTypeFunctionHelper::Save, + QtMetaTypePrivate::QMetaTypeFunctionHelper::Load); + return id; +} +#endif + +#define Q_DECLARE_OPAQUE_POINTER(POINTER) \ + QT_BEGIN_NAMESPACE namespace QtPrivate { \ + template <> \ + struct IsPointerToTypeDerivedFromQObject \ + { \ + enum { Value = false }; \ + }; \ + } QT_END_NAMESPACE \ + /**/ + +#ifndef Q_MOC_RUN +#define Q_DECLARE_METATYPE(TYPE) Q_DECLARE_METATYPE_IMPL(TYPE) +#define Q_DECLARE_METATYPE_IMPL(TYPE) \ + QT_BEGIN_NAMESPACE \ + template <> \ + struct QMetaTypeId< TYPE > \ + { \ + enum { Defined = 1 }; \ + static int qt_metatype_id() \ + { \ + static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); \ + if (const int id = metatype_id.loadAcquire()) \ + return id; \ + const int newId = qRegisterMetaType< TYPE >(#TYPE, \ + reinterpret_cast< TYPE *>(quintptr(-1))); \ + metatype_id.storeRelease(newId); \ + return newId; \ + } \ + }; \ + QT_END_NAMESPACE +#endif // Q_MOC_RUN + +#define Q_DECLARE_BUILTIN_METATYPE(TYPE, METATYPEID, NAME) \ + QT_BEGIN_NAMESPACE \ + template<> struct QMetaTypeId2 \ + { \ + enum { Defined = 1, IsBuiltIn = true, MetaType = METATYPEID }; \ + static inline Q_DECL_CONSTEXPR int qt_metatype_id() { return METATYPEID; } \ + }; \ + QT_END_NAMESPACE + +#define QT_FORWARD_DECLARE_STATIC_TYPES_ITER(TypeName, TypeId, Name) \ + class Name; + +QT_FOR_EACH_STATIC_CORE_CLASS(QT_FORWARD_DECLARE_STATIC_TYPES_ITER) +QT_FOR_EACH_STATIC_GUI_CLASS(QT_FORWARD_DECLARE_STATIC_TYPES_ITER) +QT_FOR_EACH_STATIC_WIDGETS_CLASS(QT_FORWARD_DECLARE_STATIC_TYPES_ITER) + +#undef QT_FORWARD_DECLARE_STATIC_TYPES_ITER + +typedef QList QVariantList; +typedef QMap QVariantMap; +typedef QHash QVariantHash; +#ifndef Q_QDOC +typedef QList QByteArrayList; +#endif + +#define Q_DECLARE_METATYPE_TEMPLATE_1ARG(SINGLE_ARG_TEMPLATE) \ +QT_BEGIN_NAMESPACE \ +template \ +struct QMetaTypeId< SINGLE_ARG_TEMPLATE > \ +{ \ + enum { \ + Defined = QMetaTypeId2::Defined \ + }; \ + static int qt_metatype_id() \ + { \ + static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); \ + if (const int id = metatype_id.load()) \ + return id; \ + const char *tName = QMetaType::typeName(qMetaTypeId()); \ + Q_ASSERT(tName); \ + const int tNameLen = int(qstrlen(tName)); \ + QByteArray typeName; \ + typeName.reserve(int(sizeof(#SINGLE_ARG_TEMPLATE)) + 1 + tNameLen + 1 + 1); \ + typeName.append(#SINGLE_ARG_TEMPLATE, int(sizeof(#SINGLE_ARG_TEMPLATE)) - 1) \ + .append('<').append(tName, tNameLen); \ + if (typeName.endsWith('>')) \ + typeName.append(' '); \ + typeName.append('>'); \ + const int newId = qRegisterNormalizedMetaType< SINGLE_ARG_TEMPLATE >( \ + typeName, \ + reinterpret_cast< SINGLE_ARG_TEMPLATE *>(quintptr(-1))); \ + metatype_id.storeRelease(newId); \ + return newId; \ + } \ +}; \ +namespace QtPrivate { \ +template \ +struct IsSequentialContainer > \ +{ \ + enum { Value = true }; \ +}; \ +} \ +QT_END_NAMESPACE + +#define Q_DECLARE_METATYPE_TEMPLATE_2ARG(DOUBLE_ARG_TEMPLATE) \ +QT_BEGIN_NAMESPACE \ +template \ +struct QMetaTypeId< DOUBLE_ARG_TEMPLATE > \ +{ \ + enum { \ + Defined = QMetaTypeId2::Defined && QMetaTypeId2::Defined \ + }; \ + static int qt_metatype_id() \ + { \ + static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); \ + if (const int id = metatype_id.loadAcquire()) \ + return id; \ + const char *tName = QMetaType::typeName(qMetaTypeId()); \ + const char *uName = QMetaType::typeName(qMetaTypeId()); \ + Q_ASSERT(tName); \ + Q_ASSERT(uName); \ + const int tNameLen = int(qstrlen(tName)); \ + const int uNameLen = int(qstrlen(uName)); \ + QByteArray typeName; \ + typeName.reserve(int(sizeof(#DOUBLE_ARG_TEMPLATE)) + 1 + tNameLen + 1 + uNameLen + 1 + 1); \ + typeName.append(#DOUBLE_ARG_TEMPLATE, int(sizeof(#DOUBLE_ARG_TEMPLATE)) - 1) \ + .append('<').append(tName, tNameLen).append(',').append(uName, uNameLen); \ + if (typeName.endsWith('>')) \ + typeName.append(' '); \ + typeName.append('>'); \ + const int newId = qRegisterNormalizedMetaType< DOUBLE_ARG_TEMPLATE >(\ + typeName, \ + reinterpret_cast< DOUBLE_ARG_TEMPLATE *>(quintptr(-1))); \ + metatype_id.storeRelease(newId); \ + return newId; \ + } \ +}; \ +QT_END_NAMESPACE + +namespace QtPrivate { + +template +struct SharedPointerMetaTypeIdHelper +{ + enum { + Defined = 0 + }; + static int qt_metatype_id() + { + return -1; + } +}; + +} + +#define Q_DECLARE_SMART_POINTER_METATYPE(SMART_POINTER) \ +QT_BEGIN_NAMESPACE \ +namespace QtPrivate { \ +template \ +struct SharedPointerMetaTypeIdHelper, true> \ +{ \ + enum { \ + Defined = 1 \ + }; \ + static int qt_metatype_id() \ + { \ + static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); \ + if (const int id = metatype_id.loadAcquire()) \ + return id; \ + const char * const cName = T::staticMetaObject.className(); \ + QByteArray typeName; \ + typeName.reserve(int(sizeof(#SMART_POINTER) + 1 + strlen(cName) + 1)); \ + typeName.append(#SMART_POINTER, int(sizeof(#SMART_POINTER)) - 1) \ + .append('<').append(cName).append('>'); \ + const int newId = qRegisterNormalizedMetaType< SMART_POINTER >( \ + typeName, \ + reinterpret_cast< SMART_POINTER *>(quintptr(-1))); \ + metatype_id.storeRelease(newId); \ + return newId; \ + } \ +}; \ +template \ +struct MetaTypeSmartPointerHelper , \ + typename std::enable_if::Value>::type> \ +{ \ + static bool registerConverter(int id) \ + { \ + const int toId = QMetaType::QObjectStar; \ + if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { \ + QtPrivate::QSmartPointerConvertFunctor > o; \ + static const QtPrivate::ConverterFunctor, \ + QObject*, \ + QSmartPointerConvertFunctor > > f(o); \ + return QMetaType::registerConverterFunction(&f, id, toId); \ + } \ + return true; \ + } \ +}; \ +} \ +template \ +struct QMetaTypeId< SMART_POINTER > \ + : QtPrivate::SharedPointerMetaTypeIdHelper< SMART_POINTER, \ + QtPrivate::IsPointerToTypeDerivedFromQObject::Value> \ +{ \ +};\ +QT_END_NAMESPACE + +#define Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE_ITER(TEMPLATENAME) \ + QT_BEGIN_NAMESPACE \ + template class TEMPLATENAME; \ + QT_END_NAMESPACE \ + Q_DECLARE_METATYPE_TEMPLATE_1ARG(TEMPLATENAME) + +QT_END_NAMESPACE + +QT_FOR_EACH_AUTOMATIC_TEMPLATE_1ARG(Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE_ITER) + +#undef Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE_ITER + +#define Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE Q_DECLARE_METATYPE_TEMPLATE_1ARG + +Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE(std::vector) +Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE(std::list) + +#define Q_FORWARD_DECLARE_METATYPE_TEMPLATE_2ARG_ITER(TEMPLATENAME, CPPTYPE) \ + QT_BEGIN_NAMESPACE \ + template CPPTYPE TEMPLATENAME; \ + QT_END_NAMESPACE \ + +QT_FOR_EACH_AUTOMATIC_TEMPLATE_2ARG(Q_FORWARD_DECLARE_METATYPE_TEMPLATE_2ARG_ITER) + +#undef Q_DECLARE_METATYPE_TEMPLATE_2ARG_ITER + +#define Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE(TEMPLATENAME) \ + QT_BEGIN_NAMESPACE \ + namespace QtPrivate { \ + template \ + struct IsAssociativeContainer > \ + { \ + enum { Value = true }; \ + }; \ + } \ + QT_END_NAMESPACE \ + Q_DECLARE_METATYPE_TEMPLATE_2ARG(TEMPLATENAME) + +Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE(QHash) +Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE(QMap) +Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE(std::map) + +Q_DECLARE_METATYPE_TEMPLATE_2ARG(QPair) +Q_DECLARE_METATYPE_TEMPLATE_2ARG(std::pair) + +#define Q_DECLARE_METATYPE_TEMPLATE_SMART_POINTER_ITER(TEMPLATENAME) \ + Q_DECLARE_SMART_POINTER_METATYPE(TEMPLATENAME) + + +QT_FOR_EACH_AUTOMATIC_TEMPLATE_SMART_POINTER(Q_DECLARE_METATYPE_TEMPLATE_SMART_POINTER_ITER) + +QT_BEGIN_NAMESPACE + +#undef Q_DECLARE_METATYPE_TEMPLATE_SMART_POINTER_ITER + +inline QMetaType::QMetaType(const ExtensionFlag extensionFlags, const QMetaTypeInterface *info, + Creator creator, + Deleter deleter, + SaveOperator saveOp, + LoadOperator loadOp, + Constructor constructor, + Destructor destructor, + uint size, + uint theTypeFlags, + int typeId, + const QMetaObject *_metaObject) + : m_creator_unused(creator) + , m_deleter_unused(deleter) + , m_saveOp(saveOp) + , m_loadOp(loadOp) + , m_constructor(constructor) + , m_destructor(destructor) + , m_extension(Q_NULLPTR) + , m_size(size) + , m_typeFlags(theTypeFlags) + , m_extensionFlags(extensionFlags) + , m_typeId(typeId) + , m_metaObject(_metaObject) +{ + if (Q_UNLIKELY(isExtended(CtorEx) || typeId == QMetaType::Void)) + ctor(info); +} + +inline QMetaType::~QMetaType() +{ + if (Q_UNLIKELY(isExtended(DtorEx))) + dtor(); +} + +inline bool QMetaType::isValid() const +{ + return m_typeId != UnknownType; +} + +inline bool QMetaType::isRegistered() const +{ + return isValid(); +} + +inline void *QMetaType::create(const void *copy) const +{ + // ### TODO Qt6 remove the extension + return createExtended(copy); +} + +inline void QMetaType::destroy(void *data) const +{ + // ### TODO Qt6 remove the extension + destroyExtended(data); +} + +inline void *QMetaType::construct(void *where, const void *copy) const +{ + if (Q_UNLIKELY(isExtended(ConstructEx))) + return constructExtended(where, copy); + return m_constructor(where, copy); +} + +inline void QMetaType::destruct(void *data) const +{ + if (Q_UNLIKELY(isExtended(DestructEx))) + return destructExtended(data); + if (Q_UNLIKELY(!data)) + return; + m_destructor(data); +} + +inline int QMetaType::sizeOf() const +{ + if (Q_UNLIKELY(isExtended(SizeEx))) + return sizeExtended(); + return m_size; +} + +inline QMetaType::TypeFlags QMetaType::flags() const +{ + if (Q_UNLIKELY(isExtended(FlagsEx))) + return flagsExtended(); + return QMetaType::TypeFlags(m_typeFlags); +} + +inline const QMetaObject *QMetaType::metaObject() const +{ + if (Q_UNLIKELY(isExtended(MetaObjectEx))) + return metaObjectExtended(); + return m_metaObject; +} + +QT_END_NAMESPACE + + +QT_FOR_EACH_STATIC_TYPE(Q_DECLARE_BUILTIN_METATYPE) + +Q_DECLARE_METATYPE(QtMetaTypePrivate::QSequentialIterableImpl) +Q_DECLARE_METATYPE(QtMetaTypePrivate::QAssociativeIterableImpl) +Q_DECLARE_METATYPE(QtMetaTypePrivate::QPairVariantInterfaceImpl) + +QT_BEGIN_NAMESPACE + +template +inline bool QtPrivate::IsMetaTypePair::registerConverter(int id) +{ + const int toId = qMetaTypeId(); + if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { + QtMetaTypePrivate::QPairVariantInterfaceConvertFunctor o; + static const QtPrivate::ConverterFunctor > f(o); + return QMetaType::registerConverterFunction(&f, id, toId); + } + return true; +} + +namespace QtPrivate { + template + struct ValueTypeIsMetaType + { + static bool registerConverter(int id) + { + const int toId = qMetaTypeId(); + if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { + QtMetaTypePrivate::QSequentialIterableConvertFunctor o; + static const QtPrivate::ConverterFunctor > f(o); + return QMetaType::registerConverterFunction(&f, id, toId); + } + return true; + } + }; + + template + struct AssociativeValueTypeIsMetaType + { + static bool registerConverter(int id) + { + const int toId = qMetaTypeId(); + if (!QMetaType::hasRegisteredConverterFunction(id, toId)) { + QtMetaTypePrivate::QAssociativeIterableConvertFunctor o; + static const QtPrivate::ConverterFunctor > f(o); + return QMetaType::registerConverterFunction(&f, id, toId); + } + return true; + } + }; +} + +QT_END_NAMESPACE + +#endif // QMETATYPE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qmimedata.h b/qrenderdoc/3rdparty/qt/include/QtCore/qmimedata.h new file mode 100644 index 000000000..64235832c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qmimedata.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMIMEDATA_H +#define QMIMEDATA_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +class QUrl; +class QMimeDataPrivate; + +class Q_CORE_EXPORT QMimeData : public QObject +{ + Q_OBJECT +public: + QMimeData(); + ~QMimeData(); + + QList urls() const; + void setUrls(const QList &urls); + bool hasUrls() const; + + QString text() const; + void setText(const QString &text); + bool hasText() const; + + QString html() const; + void setHtml(const QString &html); + bool hasHtml() const; + + QVariant imageData() const; + void setImageData(const QVariant &image); + bool hasImage() const; + + QVariant colorData() const; + void setColorData(const QVariant &color); + bool hasColor() const; + + QByteArray data(const QString &mimetype) const; + void setData(const QString &mimetype, const QByteArray &data); + void removeFormat(const QString &mimetype); + + virtual bool hasFormat(const QString &mimetype) const; + virtual QStringList formats() const; + + void clear(); +protected: + virtual QVariant retrieveData(const QString &mimetype, + QVariant::Type preferredType) const; +private: + Q_DISABLE_COPY(QMimeData) + Q_DECLARE_PRIVATE(QMimeData) +}; + +QT_END_NAMESPACE + +#endif // QMIMEDATA_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qmimedatabase.h b/qrenderdoc/3rdparty/qt/include/QtCore/qmimedatabase.h new file mode 100644 index 000000000..358f0ab77 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qmimedatabase.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2015 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author David Faure +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMIMEDATABASE_H +#define QMIMEDATABASE_H + +#include + +#ifndef QT_NO_MIMETYPE + +#include + +QT_BEGIN_NAMESPACE + +class QByteArray; +class QFileInfo; +class QIODevice; +class QUrl; + +class QMimeDatabasePrivate; +class Q_CORE_EXPORT QMimeDatabase +{ + Q_DISABLE_COPY(QMimeDatabase) + +public: + QMimeDatabase(); + ~QMimeDatabase(); + + QMimeType mimeTypeForName(const QString &nameOrAlias) const; + + enum MatchMode { + MatchDefault = 0x0, + MatchExtension = 0x1, + MatchContent = 0x2 + }; + + QMimeType mimeTypeForFile(const QString &fileName, MatchMode mode = MatchDefault) const; + QMimeType mimeTypeForFile(const QFileInfo &fileInfo, MatchMode mode = MatchDefault) const; + QList mimeTypesForFileName(const QString &fileName) const; + + QMimeType mimeTypeForData(const QByteArray &data) const; + QMimeType mimeTypeForData(QIODevice *device) const; + + QMimeType mimeTypeForUrl(const QUrl &url) const; + QMimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const; + QMimeType mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const; + + QString suffixForFileName(const QString &fileName) const; + + QList allMimeTypes() const; + +private: + QMimeDatabasePrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE +#endif // QMIMEDATABASE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qmimetype.h b/qrenderdoc/3rdparty/qt/include/QtCore/qmimetype.h new file mode 100644 index 000000000..e9ff9ace8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qmimetype.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2015 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author David Faure +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMIMETYPE_H +#define QMIMETYPE_H + +#include + +#ifndef QT_NO_MIMETYPE + +#include +#include + +QT_BEGIN_NAMESPACE + +class QMimeTypePrivate; +class QStringList; +class QMimeType; + +Q_CORE_EXPORT uint qHash(const QMimeType &key, uint seed = 0) Q_DECL_NOTHROW; + +class Q_CORE_EXPORT QMimeType +{ +public: + QMimeType(); + QMimeType(const QMimeType &other); + QMimeType &operator=(const QMimeType &other); +#ifdef Q_COMPILER_RVALUE_REFS + QMimeType &operator=(QMimeType &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + void swap(QMimeType &other) Q_DECL_NOTHROW + { + qSwap(d, other.d); + } + explicit QMimeType(const QMimeTypePrivate &dd); + ~QMimeType(); + + bool operator==(const QMimeType &other) const; + + inline bool operator!=(const QMimeType &other) const + { + return !operator==(other); + } + + bool isValid() const; + + bool isDefault() const; + + QString name() const; + QString comment() const; + QString genericIconName() const; + QString iconName() const; + QStringList globPatterns() const; + QStringList parentMimeTypes() const; + QStringList allAncestors() const; + QStringList aliases() const; + QStringList suffixes() const; + QString preferredSuffix() const; + + bool inherits(const QString &mimeTypeName) const; + + QString filterString() const; + +protected: + friend class QMimeTypeParserBase; + friend class MimeTypeMapEntry; + friend class QMimeDatabasePrivate; + friend class QMimeXMLProvider; + friend class QMimeBinaryProvider; + friend class QMimeTypePrivate; + friend Q_CORE_EXPORT uint qHash(const QMimeType &key, uint seed) Q_DECL_NOTHROW; + + QExplicitlySharedDataPointer d; +}; + +Q_DECLARE_SHARED(QMimeType) + +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QMimeType &mime); +#endif + +QT_END_NAMESPACE + +#endif // QT_NO_MIMETYPE +#endif // QMIMETYPE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qmutex.h b/qrenderdoc/3rdparty/qt/include/QtCore/qmutex.h new file mode 100644 index 000000000..12987f16c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qmutex.h @@ -0,0 +1,302 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMUTEX_H +#define QMUTEX_H + +#include +#include +#include + +#if QT_HAS_INCLUDE() +# include +# include +#endif + +class tst_QMutex; + +QT_BEGIN_NAMESPACE + + +#if !defined(QT_NO_THREAD) || defined(Q_CLANG_QDOC) + +#ifdef Q_OS_LINUX +# define QT_MUTEX_LOCK_NOEXCEPT Q_DECL_NOTHROW +#else +# define QT_MUTEX_LOCK_NOEXCEPT +#endif + +class QMutexData; + +class Q_CORE_EXPORT QBasicMutex +{ +public: + // BasicLockable concept + inline void lock() QT_MUTEX_LOCK_NOEXCEPT { + if (!fastTryLock()) + lockInternal(); + } + + // BasicLockable concept + inline void unlock() Q_DECL_NOTHROW { + Q_ASSERT(d_ptr.load()); //mutex must be locked + if (!fastTryUnlock()) + unlockInternal(); + } + + bool tryLock() Q_DECL_NOTHROW { + return fastTryLock(); + } + + // Lockable concept + bool try_lock() Q_DECL_NOTHROW { return tryLock(); } + + bool isRecursive() Q_DECL_NOTHROW; //### Qt6: remove me + bool isRecursive() const Q_DECL_NOTHROW; + +private: + inline bool fastTryLock() Q_DECL_NOTHROW { + return d_ptr.testAndSetAcquire(Q_NULLPTR, dummyLocked()); + } + inline bool fastTryUnlock() Q_DECL_NOTHROW { + return d_ptr.testAndSetRelease(dummyLocked(), Q_NULLPTR); + } + inline bool fastTryLock(QMutexData *¤t) Q_DECL_NOTHROW { + return d_ptr.testAndSetAcquire(Q_NULLPTR, dummyLocked(), current); + } + inline bool fastTryUnlock(QMutexData *¤t) Q_DECL_NOTHROW { + return d_ptr.testAndSetRelease(dummyLocked(), Q_NULLPTR, current); + } + + void lockInternal() QT_MUTEX_LOCK_NOEXCEPT; + bool lockInternal(int timeout) QT_MUTEX_LOCK_NOEXCEPT; + void unlockInternal() Q_DECL_NOTHROW; + + QBasicAtomicPointer d_ptr; + static inline QMutexData *dummyLocked() { + return reinterpret_cast(quintptr(1)); + } + + friend class QMutex; + friend class QMutexData; +}; + +class Q_CORE_EXPORT QMutex : public QBasicMutex +{ +public: + enum RecursionMode { NonRecursive, Recursive }; + explicit QMutex(RecursionMode mode = NonRecursive); + ~QMutex(); + + // BasicLockable concept + void lock() QT_MUTEX_LOCK_NOEXCEPT; + bool tryLock(int timeout = 0) QT_MUTEX_LOCK_NOEXCEPT; + // BasicLockable concept + void unlock() Q_DECL_NOTHROW; + + // Lockable concept + bool try_lock() QT_MUTEX_LOCK_NOEXCEPT { return tryLock(); } + +#if QT_HAS_INCLUDE() + // TimedLockable concept + template + bool try_lock_for(std::chrono::duration duration) + { + return tryLock(convertToMilliseconds(duration)); + } + + // TimedLockable concept + template + bool try_lock_until(std::chrono::time_point timePoint) + { + // Implemented in terms of try_lock_for to honor the similar + // requirement in N4606 § 30.4.1.3 [thread.timedmutex.requirements]/12. + + return try_lock_for(timePoint - Clock::now()); + } +#endif + + bool isRecursive() const Q_DECL_NOTHROW + { return QBasicMutex::isRecursive(); } + +private: + Q_DISABLE_COPY(QMutex) + friend class QMutexLocker; + friend class ::tst_QMutex; + +#if QT_HAS_INCLUDE() + template + static int convertToMilliseconds(std::chrono::duration duration) + { + // N4606 § 30.4.1.3.5 [thread.timedmutex.requirements] specifies that a + // duration less than or equal to duration.zero() shall result in a + // try_lock, unlike QMutex's tryLock with a negative duration which + // results in a lock. + + if (duration <= duration.zero()) + return 0; + + // when converting from 'duration' to milliseconds, make sure that + // the result is not shorter than 'duration': + std::chrono::milliseconds wait = std::chrono::duration_cast(duration); + if (wait < duration) + wait += std::chrono::milliseconds(1); + Q_ASSERT(wait >= duration); + const auto ms = wait.count(); + const auto maxInt = (std::numeric_limits::max)(); + + return ms < maxInt ? int(ms) : maxInt; + } +#endif +}; + +class Q_CORE_EXPORT QMutexLocker +{ +public: +#ifndef Q_CLANG_QDOC + inline explicit QMutexLocker(QBasicMutex *m) QT_MUTEX_LOCK_NOEXCEPT + { + Q_ASSERT_X((reinterpret_cast(m) & quintptr(1u)) == quintptr(0), + "QMutexLocker", "QMutex pointer is misaligned"); + val = quintptr(m); + if (Q_LIKELY(m)) { + // call QMutex::lock() instead of QBasicMutex::lock() + static_cast(m)->lock(); + val |= 1; + } + } +#else + QMutexLocker(QMutex *) { } +#endif + inline ~QMutexLocker() { unlock(); } + + inline void unlock() Q_DECL_NOTHROW + { + if ((val & quintptr(1u)) == quintptr(1u)) { + val &= ~quintptr(1u); + mutex()->unlock(); + } + } + + inline void relock() QT_MUTEX_LOCK_NOEXCEPT + { + if (val) { + if ((val & quintptr(1u)) == quintptr(0u)) { + mutex()->lock(); + val |= quintptr(1u); + } + } + } + +#if defined(Q_CC_MSVC) +#pragma warning( push ) +#pragma warning( disable : 4312 ) // ignoring the warning from /Wp64 +#endif + + inline QMutex *mutex() const + { + return reinterpret_cast(val & ~quintptr(1u)); + } + +#if defined(Q_CC_MSVC) +#pragma warning( pop ) +#endif + +private: + Q_DISABLE_COPY(QMutexLocker) + + quintptr val; +}; + +#else // QT_NO_THREAD && !Q_CLANG_QDOC + +class Q_CORE_EXPORT QMutex +{ +public: + enum RecursionMode { NonRecursive, Recursive }; + + inline explicit QMutex(RecursionMode mode = NonRecursive) Q_DECL_NOTHROW { Q_UNUSED(mode); } + + inline void lock() Q_DECL_NOTHROW {} + inline bool tryLock(int timeout = 0) Q_DECL_NOTHROW { Q_UNUSED(timeout); return true; } + inline bool try_lock() Q_DECL_NOTHROW { return true; } + inline void unlock() Q_DECL_NOTHROW {} + inline bool isRecursive() const Q_DECL_NOTHROW { return true; } + +#if QT_HAS_INCLUDE() + template + inline bool try_lock_for(std::chrono::duration duration) Q_DECL_NOTHROW + { + Q_UNUSED(duration); + return true; + } + + template + inline bool try_lock_until(std::chrono::time_point timePoint) Q_DECL_NOTHROW + { + Q_UNUSED(timePoint); + return true; + } +#endif + +private: + Q_DISABLE_COPY(QMutex) +}; + +class Q_CORE_EXPORT QMutexLocker +{ +public: + inline explicit QMutexLocker(QMutex *) Q_DECL_NOTHROW {} + inline ~QMutexLocker() Q_DECL_NOTHROW {} + + inline void unlock() Q_DECL_NOTHROW {} + void relock() Q_DECL_NOTHROW {} + inline QMutex *mutex() const Q_DECL_NOTHROW { return Q_NULLPTR; } + +private: + Q_DISABLE_COPY(QMutexLocker) +}; + +typedef QMutex QBasicMutex; + +#endif // QT_NO_THREAD && !Q_CLANG_QDOC + +QT_END_NAMESPACE + +#endif // QMUTEX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qnamespace.h b/qrenderdoc/3rdparty/qt/include/QtCore/qnamespace.h new file mode 100644 index 000000000..bd6b667aa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qnamespace.h @@ -0,0 +1,1830 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNAMESPACE_H +#define QNAMESPACE_H + +#include + +#if defined(__OBJC__) && !defined(__cplusplus) +# warning "File built in Objective-C mode (.m), but using Qt requires Objective-C++ (.mm)" +#endif + +QT_BEGIN_NAMESPACE + +#if !defined(Q_QDOC) && !defined(Q_MOC_RUN) +struct QMetaObject; +const QMetaObject *qt_getQtMetaObject() Q_DECL_NOEXCEPT; // defined in qobject.h (which can't be included here) +#define QT_Q_ENUM(ENUM) \ + inline const QMetaObject *qt_getEnumMetaObject(ENUM) Q_DECL_NOEXCEPT { return qt_getQtMetaObject(); } \ + inline Q_DECL_CONSTEXPR const char *qt_getEnumName(ENUM) Q_DECL_NOEXCEPT { return #ENUM; } +#define QT_Q_FLAG(ENUM) QT_Q_ENUM(ENUM) +#else +#define QT_Q_ENUM Q_ENUM +#define QT_Q_FLAG Q_FLAG +#endif + +#ifndef Q_MOC_RUN +namespace +#else +class Q_CORE_EXPORT +#endif +Qt { + +#if defined(Q_MOC_RUN) + Q_OBJECT +public: +#endif + + enum GlobalColor { + color0, + color1, + black, + white, + darkGray, + gray, + lightGray, + red, + green, + blue, + cyan, + magenta, + yellow, + darkRed, + darkGreen, + darkBlue, + darkCyan, + darkMagenta, + darkYellow, + transparent + }; + + enum KeyboardModifier { + NoModifier = 0x00000000, + ShiftModifier = 0x02000000, + ControlModifier = 0x04000000, + AltModifier = 0x08000000, + MetaModifier = 0x10000000, + KeypadModifier = 0x20000000, + GroupSwitchModifier = 0x40000000, + // Do not extend the mask to include 0x01000000 + KeyboardModifierMask = 0xfe000000 + }; + Q_DECLARE_FLAGS(KeyboardModifiers, KeyboardModifier) + + //shorter names for shortcuts + // The use of all-caps identifiers has the potential for clashing with + // user-defined or third-party macros. More so when the identifiers are not + // "namespace"-prefixed. This is considered bad practice and is why + // KeypadModifier was not added to the Modifier enum. + enum Modifier { + META = Qt::MetaModifier, + SHIFT = Qt::ShiftModifier, + CTRL = Qt::ControlModifier, + ALT = Qt::AltModifier, + MODIFIER_MASK = KeyboardModifierMask, + UNICODE_ACCEL = 0x00000000 + }; + + enum MouseButton { + NoButton = 0x00000000, + LeftButton = 0x00000001, + RightButton = 0x00000002, + MidButton = 0x00000004, // ### Qt 6: remove me + MiddleButton = MidButton, + BackButton = 0x00000008, + XButton1 = BackButton, + ExtraButton1 = XButton1, + ForwardButton = 0x00000010, + XButton2 = ForwardButton, + ExtraButton2 = ForwardButton, + TaskButton = 0x00000020, + ExtraButton3 = TaskButton, + ExtraButton4 = 0x00000040, + ExtraButton5 = 0x00000080, + ExtraButton6 = 0x00000100, + ExtraButton7 = 0x00000200, + ExtraButton8 = 0x00000400, + ExtraButton9 = 0x00000800, + ExtraButton10 = 0x00001000, + ExtraButton11 = 0x00002000, + ExtraButton12 = 0x00004000, + ExtraButton13 = 0x00008000, + ExtraButton14 = 0x00010000, + ExtraButton15 = 0x00020000, + ExtraButton16 = 0x00040000, + ExtraButton17 = 0x00080000, + ExtraButton18 = 0x00100000, + ExtraButton19 = 0x00200000, + ExtraButton20 = 0x00400000, + ExtraButton21 = 0x00800000, + ExtraButton22 = 0x01000000, + ExtraButton23 = 0x02000000, + ExtraButton24 = 0x04000000, + AllButtons = 0x07ffffff, + MaxMouseButton = ExtraButton24, + // 4 high-order bits remain available for future use (0x08000000 through 0x40000000). + MouseButtonMask = 0xffffffff + }; + Q_DECLARE_FLAGS(MouseButtons, MouseButton) + + enum Orientation { + Horizontal = 0x1, + Vertical = 0x2 + }; + + Q_DECLARE_FLAGS(Orientations, Orientation) + + enum FocusPolicy { + NoFocus = 0, + TabFocus = 0x1, + ClickFocus = 0x2, + StrongFocus = TabFocus | ClickFocus | 0x8, + WheelFocus = StrongFocus | 0x4 + }; + + enum TabFocusBehavior { + NoTabFocus = 0x00, + TabFocusTextControls = 0x01, + TabFocusListControls = 0x02, + TabFocusAllControls = 0xff + }; + + enum SortOrder { + AscendingOrder, + DescendingOrder + }; + + enum TileRule { + StretchTile, + RepeatTile, + RoundTile + }; + + // Text formatting flags for QPainter::drawText and QLabel. + // The following two enums can be combined to one integer which + // is passed as 'flags' to QPainter::drawText, QFontMetrics::boundingRect and qt_format_text. + + enum AlignmentFlag { + AlignLeft = 0x0001, + AlignLeading = AlignLeft, + AlignRight = 0x0002, + AlignTrailing = AlignRight, + AlignHCenter = 0x0004, + AlignJustify = 0x0008, + AlignAbsolute = 0x0010, + AlignHorizontal_Mask = AlignLeft | AlignRight | AlignHCenter | AlignJustify | AlignAbsolute, + + AlignTop = 0x0020, + AlignBottom = 0x0040, + AlignVCenter = 0x0080, + AlignBaseline = 0x0100, + // Note that 0x100 will clash with Qt::TextSingleLine = 0x100 due to what the comment above + // this enum declaration states. However, since Qt::AlignBaseline is only used by layouts, + // it doesn't make sense to pass Qt::AlignBaseline to QPainter::drawText(), so there + // shouldn't really be any ambiguity between the two overlapping enum values. + AlignVertical_Mask = AlignTop | AlignBottom | AlignVCenter | AlignBaseline, + + AlignCenter = AlignVCenter | AlignHCenter + }; + + Q_DECLARE_FLAGS(Alignment, AlignmentFlag) + + enum TextFlag { + TextSingleLine = 0x0100, + TextDontClip = 0x0200, + TextExpandTabs = 0x0400, + TextShowMnemonic = 0x0800, + TextWordWrap = 0x1000, + TextWrapAnywhere = 0x2000, + TextDontPrint = 0x4000, + TextIncludeTrailingSpaces = 0x08000000, + TextHideMnemonic = 0x8000, + TextJustificationForced = 0x10000, + TextForceLeftToRight = 0x20000, + TextForceRightToLeft = 0x40000, + // Ensures that the longest variant is always used when computing the + // size of a multi-variant string. + TextLongestVariant = 0x80000, + TextBypassShaping = 0x100000 + }; + + enum TextElideMode { + ElideLeft, + ElideRight, + ElideMiddle, + ElideNone + }; + + enum WhiteSpaceMode { + WhiteSpaceNormal, + WhiteSpacePre, + WhiteSpaceNoWrap, + WhiteSpaceModeUndefined = -1 + }; + + enum HitTestAccuracy { ExactHit, FuzzyHit }; + + enum WindowType { + Widget = 0x00000000, + Window = 0x00000001, + Dialog = 0x00000002 | Window, + Sheet = 0x00000004 | Window, + Drawer = Sheet | Dialog, + Popup = 0x00000008 | Window, + Tool = Popup | Dialog, + ToolTip = Popup | Sheet, + SplashScreen = ToolTip | Dialog, + Desktop = 0x00000010 | Window, + SubWindow = 0x00000012, + ForeignWindow = 0x00000020 | Window, + CoverWindow = 0x00000040 | Window, + + WindowType_Mask = 0x000000ff, + MSWindowsFixedSizeDialogHint = 0x00000100, + MSWindowsOwnDC = 0x00000200, + BypassWindowManagerHint = 0x00000400, + X11BypassWindowManagerHint = BypassWindowManagerHint, + FramelessWindowHint = 0x00000800, + WindowTitleHint = 0x00001000, + WindowSystemMenuHint = 0x00002000, + WindowMinimizeButtonHint = 0x00004000, + WindowMaximizeButtonHint = 0x00008000, + WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint, + WindowContextHelpButtonHint = 0x00010000, + WindowShadeButtonHint = 0x00020000, + WindowStaysOnTopHint = 0x00040000, + WindowTransparentForInput = 0x00080000, + WindowOverridesSystemGestures = 0x00100000, + WindowDoesNotAcceptFocus = 0x00200000, + MaximizeUsingFullscreenGeometryHint = 0x00400000, + + CustomizeWindowHint = 0x02000000, + WindowStaysOnBottomHint = 0x04000000, + WindowCloseButtonHint = 0x08000000, + MacWindowToolBarButtonHint = 0x10000000, + BypassGraphicsProxyWidget = 0x20000000, + NoDropShadowWindowHint = 0x40000000, + WindowFullscreenButtonHint = 0x80000000 + }; + + Q_DECLARE_FLAGS(WindowFlags, WindowType) + + enum WindowState { + WindowNoState = 0x00000000, + WindowMinimized = 0x00000001, + WindowMaximized = 0x00000002, + WindowFullScreen = 0x00000004, + WindowActive = 0x00000008 + }; + + 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, + LandscapeOrientation = 0x00000002, + InvertedPortraitOrientation = 0x00000004, + InvertedLandscapeOrientation = 0x00000008 + }; + + Q_DECLARE_FLAGS(ScreenOrientations, ScreenOrientation) + + enum WidgetAttribute { + WA_Disabled = 0, + WA_UnderMouse = 1, + WA_MouseTracking = 2, + WA_ContentsPropagated = 3, // ## deprecated + WA_OpaquePaintEvent = 4, + WA_NoBackground = WA_OpaquePaintEvent, // ## deprecated + WA_StaticContents = 5, + WA_LaidOut = 7, + WA_PaintOnScreen = 8, + WA_NoSystemBackground = 9, + WA_UpdatesDisabled = 10, + WA_Mapped = 11, + WA_MacNoClickThrough = 12, // Mac only + WA_InputMethodEnabled = 14, + WA_WState_Visible = 15, + WA_WState_Hidden = 16, + + WA_ForceDisabled = 32, + WA_KeyCompression = 33, + WA_PendingMoveEvent = 34, + WA_PendingResizeEvent = 35, + WA_SetPalette = 36, + WA_SetFont = 37, + WA_SetCursor = 38, + WA_NoChildEventsFromChildren = 39, + WA_WindowModified = 41, + WA_Resized = 42, + WA_Moved = 43, + WA_PendingUpdate = 44, + WA_InvalidSize = 45, + WA_MacBrushedMetal = 46, // Mac only + WA_MacMetalStyle = WA_MacBrushedMetal, // obsolete + WA_CustomWhatsThis = 47, + WA_LayoutOnEntireRect = 48, + WA_OutsideWSRange = 49, + WA_GrabbedShortcut = 50, + WA_TransparentForMouseEvents = 51, + WA_PaintUnclipped = 52, + WA_SetWindowIcon = 53, + WA_NoMouseReplay = 54, + WA_DeleteOnClose = 55, + WA_RightToLeft = 56, + WA_SetLayoutDirection = 57, + WA_NoChildEventsForParent = 58, + WA_ForceUpdatesDisabled = 59, + + WA_WState_Created = 60, + WA_WState_CompressKeys = 61, + WA_WState_InPaintEvent = 62, + WA_WState_Reparented = 63, + WA_WState_ConfigPending = 64, + WA_WState_Polished = 66, + WA_WState_DND = 67, // ## deprecated + WA_WState_OwnSizePolicy = 68, + WA_WState_ExplicitShowHide = 69, + + WA_ShowModal = 70, // ## deprecated + WA_MouseNoMask = 71, + WA_GroupLeader = 72, // ## deprecated + WA_NoMousePropagation = 73, // ## for now, might go away. + WA_Hover = 74, + WA_InputMethodTransparent = 75, // Don't reset IM when user clicks on this (for virtual keyboards on embedded) + WA_QuitOnClose = 76, + + WA_KeyboardFocusChange = 77, + + WA_AcceptDrops = 78, + WA_DropSiteRegistered = 79, // internal + WA_ForceAcceptDrops = WA_DropSiteRegistered, // ## deprecated + + WA_WindowPropagation = 80, + + WA_NoX11EventCompression = 81, + WA_TintedBackground = 82, + WA_X11OpenGLOverlay = 83, + WA_AlwaysShowToolTips = 84, + WA_MacOpaqueSizeGrip = 85, + WA_SetStyle = 86, + + WA_SetLocale = 87, + WA_MacShowFocusRect = 88, + + WA_MacNormalSize = 89, // Mac only + WA_MacSmallSize = 90, // Mac only + WA_MacMiniSize = 91, // Mac only + + WA_LayoutUsesWidgetRect = 92, + WA_StyledBackground = 93, // internal + WA_MSWindowsUseDirect3D = 94, // Win only + WA_CanHostQMdiSubWindowTitleBar = 95, // Internal + + WA_MacAlwaysShowToolWindow = 96, // Mac only + + WA_StyleSheet = 97, // internal + + WA_ShowWithoutActivating = 98, + + WA_X11BypassTransientForHint = 99, + + WA_NativeWindow = 100, + WA_DontCreateNativeAncestors = 101, + + WA_MacVariableSize = 102, // Mac only + + WA_DontShowOnScreen = 103, + + // window types from http://standards.freedesktop.org/wm-spec/ + WA_X11NetWmWindowTypeDesktop = 104, + WA_X11NetWmWindowTypeDock = 105, + WA_X11NetWmWindowTypeToolBar = 106, + WA_X11NetWmWindowTypeMenu = 107, + WA_X11NetWmWindowTypeUtility = 108, + WA_X11NetWmWindowTypeSplash = 109, + WA_X11NetWmWindowTypeDialog = 110, + WA_X11NetWmWindowTypeDropDownMenu = 111, + WA_X11NetWmWindowTypePopupMenu = 112, + WA_X11NetWmWindowTypeToolTip = 113, + WA_X11NetWmWindowTypeNotification = 114, + WA_X11NetWmWindowTypeCombo = 115, + WA_X11NetWmWindowTypeDND = 116, + + WA_MacFrameworkScaled = 117, + + WA_SetWindowModality = 118, + WA_WState_WindowOpacitySet = 119, // internal + WA_TranslucentBackground = 120, + + WA_AcceptTouchEvents = 121, + WA_WState_AcceptedTouchBeginEvent = 122, + WA_TouchPadAcceptSingleTouchEvents = 123, + + WA_X11DoNotAcceptFocus = 126, + WA_MacNoShadow = 127, + + WA_AlwaysStackOnTop = 128, + + WA_TabletTracking = 129, + + WA_ContentsMarginsRespectsSafeArea = 130, + + // Add new attributes before this line + WA_AttributeCount + }; + + enum ApplicationAttribute + { + AA_ImmediateWidgetCreation = 0, + AA_MSWindowsUseDirect3DByDefault = 1, // Win only + AA_DontShowIconsInMenus = 2, + AA_NativeWindows = 3, + AA_DontCreateNativeWidgetSiblings = 4, + AA_PluginApplication = 5, + AA_MacPluginApplication = AA_PluginApplication, // ### Qt 6: remove me + AA_DontUseNativeMenuBar = 6, + AA_MacDontSwapCtrlAndMeta = 7, + AA_Use96Dpi = 8, + AA_X11InitThreads = 10, + AA_SynthesizeTouchForUnhandledMouseEvents = 11, + AA_SynthesizeMouseForUnhandledTouchEvents = 12, + AA_UseHighDpiPixmaps = 13, + AA_ForceRasterWidgets = 14, + AA_UseDesktopOpenGL = 15, + AA_UseOpenGLES = 16, + AA_UseSoftwareOpenGL = 17, + AA_ShareOpenGLContexts = 18, + AA_SetPalette = 19, + AA_EnableHighDpiScaling = 20, + AA_DisableHighDpiScaling = 21, + AA_UseStyleSheetPropagationInWidgetStyles = 22, // ### Qt 6: remove me + AA_DontUseNativeDialogs = 23, + AA_SynthesizeMouseForUnhandledTabletEvents = 24, + AA_CompressHighFrequencyEvents = 25, + AA_DontCheckOpenGLContextThreadAffinity = 26, + AA_DisableShaderDiskCache = 27, + + // Add new attributes before this line + AA_AttributeCount + }; + + + // Image conversion flags. The unusual ordering is caused by + // compatibility and default requirements. + + enum ImageConversionFlag { + ColorMode_Mask = 0x00000003, + AutoColor = 0x00000000, + ColorOnly = 0x00000003, + MonoOnly = 0x00000002, + // Reserved = 0x00000001, + + AlphaDither_Mask = 0x0000000c, + ThresholdAlphaDither = 0x00000000, + OrderedAlphaDither = 0x00000004, + DiffuseAlphaDither = 0x00000008, + NoAlpha = 0x0000000c, // Not supported + + Dither_Mask = 0x00000030, + DiffuseDither = 0x00000000, + OrderedDither = 0x00000010, + ThresholdDither = 0x00000020, + // ReservedDither = 0x00000030, + + DitherMode_Mask = 0x000000c0, + AutoDither = 0x00000000, + PreferDither = 0x00000040, + AvoidDither = 0x00000080, + + NoOpaqueDetection = 0x00000100, + NoFormatConversion = 0x00000200 + }; + Q_DECLARE_FLAGS(ImageConversionFlags, ImageConversionFlag) + + enum BGMode { + TransparentMode, + OpaqueMode + }; + + enum Key { + Key_Escape = 0x01000000, // misc keys + Key_Tab = 0x01000001, + Key_Backtab = 0x01000002, + Key_Backspace = 0x01000003, + Key_Return = 0x01000004, + Key_Enter = 0x01000005, + Key_Insert = 0x01000006, + Key_Delete = 0x01000007, + Key_Pause = 0x01000008, + Key_Print = 0x01000009, // print screen + Key_SysReq = 0x0100000a, + Key_Clear = 0x0100000b, + Key_Home = 0x01000010, // cursor movement + Key_End = 0x01000011, + Key_Left = 0x01000012, + Key_Up = 0x01000013, + Key_Right = 0x01000014, + Key_Down = 0x01000015, + Key_PageUp = 0x01000016, + Key_PageDown = 0x01000017, + Key_Shift = 0x01000020, // modifiers + Key_Control = 0x01000021, + Key_Meta = 0x01000022, + Key_Alt = 0x01000023, + Key_CapsLock = 0x01000024, + Key_NumLock = 0x01000025, + Key_ScrollLock = 0x01000026, + Key_F1 = 0x01000030, // function keys + Key_F2 = 0x01000031, + Key_F3 = 0x01000032, + Key_F4 = 0x01000033, + Key_F5 = 0x01000034, + Key_F6 = 0x01000035, + Key_F7 = 0x01000036, + Key_F8 = 0x01000037, + Key_F9 = 0x01000038, + Key_F10 = 0x01000039, + Key_F11 = 0x0100003a, + Key_F12 = 0x0100003b, + Key_F13 = 0x0100003c, + Key_F14 = 0x0100003d, + Key_F15 = 0x0100003e, + Key_F16 = 0x0100003f, + Key_F17 = 0x01000040, + Key_F18 = 0x01000041, + Key_F19 = 0x01000042, + Key_F20 = 0x01000043, + Key_F21 = 0x01000044, + Key_F22 = 0x01000045, + Key_F23 = 0x01000046, + Key_F24 = 0x01000047, + Key_F25 = 0x01000048, // F25 .. F35 only on X11 + Key_F26 = 0x01000049, + Key_F27 = 0x0100004a, + Key_F28 = 0x0100004b, + Key_F29 = 0x0100004c, + Key_F30 = 0x0100004d, + Key_F31 = 0x0100004e, + Key_F32 = 0x0100004f, + Key_F33 = 0x01000050, + Key_F34 = 0x01000051, + Key_F35 = 0x01000052, + Key_Super_L = 0x01000053, // extra keys + Key_Super_R = 0x01000054, + Key_Menu = 0x01000055, + Key_Hyper_L = 0x01000056, + Key_Hyper_R = 0x01000057, + Key_Help = 0x01000058, + Key_Direction_L = 0x01000059, + Key_Direction_R = 0x01000060, + Key_Space = 0x20, // 7 bit printable ASCII + Key_Any = Key_Space, + Key_Exclam = 0x21, + Key_QuoteDbl = 0x22, + Key_NumberSign = 0x23, + Key_Dollar = 0x24, + Key_Percent = 0x25, + Key_Ampersand = 0x26, + Key_Apostrophe = 0x27, + Key_ParenLeft = 0x28, + Key_ParenRight = 0x29, + Key_Asterisk = 0x2a, + Key_Plus = 0x2b, + Key_Comma = 0x2c, + Key_Minus = 0x2d, + Key_Period = 0x2e, + Key_Slash = 0x2f, + Key_0 = 0x30, + Key_1 = 0x31, + Key_2 = 0x32, + Key_3 = 0x33, + Key_4 = 0x34, + Key_5 = 0x35, + Key_6 = 0x36, + Key_7 = 0x37, + Key_8 = 0x38, + Key_9 = 0x39, + Key_Colon = 0x3a, + Key_Semicolon = 0x3b, + Key_Less = 0x3c, + Key_Equal = 0x3d, + Key_Greater = 0x3e, + Key_Question = 0x3f, + Key_At = 0x40, + Key_A = 0x41, + Key_B = 0x42, + Key_C = 0x43, + Key_D = 0x44, + Key_E = 0x45, + Key_F = 0x46, + Key_G = 0x47, + Key_H = 0x48, + Key_I = 0x49, + Key_J = 0x4a, + Key_K = 0x4b, + Key_L = 0x4c, + Key_M = 0x4d, + Key_N = 0x4e, + Key_O = 0x4f, + Key_P = 0x50, + Key_Q = 0x51, + Key_R = 0x52, + Key_S = 0x53, + Key_T = 0x54, + Key_U = 0x55, + Key_V = 0x56, + Key_W = 0x57, + Key_X = 0x58, + Key_Y = 0x59, + Key_Z = 0x5a, + Key_BracketLeft = 0x5b, + Key_Backslash = 0x5c, + Key_BracketRight = 0x5d, + Key_AsciiCircum = 0x5e, + Key_Underscore = 0x5f, + Key_QuoteLeft = 0x60, + Key_BraceLeft = 0x7b, + Key_Bar = 0x7c, + Key_BraceRight = 0x7d, + Key_AsciiTilde = 0x7e, + + Key_nobreakspace = 0x0a0, + Key_exclamdown = 0x0a1, + Key_cent = 0x0a2, + Key_sterling = 0x0a3, + Key_currency = 0x0a4, + Key_yen = 0x0a5, + Key_brokenbar = 0x0a6, + Key_section = 0x0a7, + Key_diaeresis = 0x0a8, + Key_copyright = 0x0a9, + Key_ordfeminine = 0x0aa, + Key_guillemotleft = 0x0ab, // left angle quotation mark + Key_notsign = 0x0ac, + Key_hyphen = 0x0ad, + Key_registered = 0x0ae, + Key_macron = 0x0af, + Key_degree = 0x0b0, + Key_plusminus = 0x0b1, + Key_twosuperior = 0x0b2, + Key_threesuperior = 0x0b3, + Key_acute = 0x0b4, + Key_mu = 0x0b5, + Key_paragraph = 0x0b6, + Key_periodcentered = 0x0b7, + Key_cedilla = 0x0b8, + Key_onesuperior = 0x0b9, + Key_masculine = 0x0ba, + Key_guillemotright = 0x0bb, // right angle quotation mark + Key_onequarter = 0x0bc, + Key_onehalf = 0x0bd, + Key_threequarters = 0x0be, + Key_questiondown = 0x0bf, + Key_Agrave = 0x0c0, + Key_Aacute = 0x0c1, + Key_Acircumflex = 0x0c2, + Key_Atilde = 0x0c3, + Key_Adiaeresis = 0x0c4, + Key_Aring = 0x0c5, + Key_AE = 0x0c6, + Key_Ccedilla = 0x0c7, + Key_Egrave = 0x0c8, + Key_Eacute = 0x0c9, + Key_Ecircumflex = 0x0ca, + Key_Ediaeresis = 0x0cb, + Key_Igrave = 0x0cc, + Key_Iacute = 0x0cd, + Key_Icircumflex = 0x0ce, + Key_Idiaeresis = 0x0cf, + Key_ETH = 0x0d0, + Key_Ntilde = 0x0d1, + Key_Ograve = 0x0d2, + Key_Oacute = 0x0d3, + Key_Ocircumflex = 0x0d4, + Key_Otilde = 0x0d5, + Key_Odiaeresis = 0x0d6, + Key_multiply = 0x0d7, + Key_Ooblique = 0x0d8, + Key_Ugrave = 0x0d9, + Key_Uacute = 0x0da, + Key_Ucircumflex = 0x0db, + Key_Udiaeresis = 0x0dc, + Key_Yacute = 0x0dd, + Key_THORN = 0x0de, + Key_ssharp = 0x0df, + Key_division = 0x0f7, + Key_ydiaeresis = 0x0ff, + + // International input method support (X keycode - 0xEE00, the + // definition follows Qt/Embedded 2.3.7) Only interesting if + // you are writing your own input method + + // International & multi-key character composition + Key_AltGr = 0x01001103, + Key_Multi_key = 0x01001120, // Multi-key character compose + Key_Codeinput = 0x01001137, + Key_SingleCandidate = 0x0100113c, + Key_MultipleCandidate = 0x0100113d, + Key_PreviousCandidate = 0x0100113e, + + // Misc Functions + Key_Mode_switch = 0x0100117e, // Character set switch + //Key_script_switch = 0x0100117e, // Alias for mode_switch + + // Japanese keyboard support + Key_Kanji = 0x01001121, // Kanji, Kanji convert + Key_Muhenkan = 0x01001122, // Cancel Conversion + //Key_Henkan_Mode = 0x01001123, // Start/Stop Conversion + Key_Henkan = 0x01001123, // Alias for Henkan_Mode + Key_Romaji = 0x01001124, // to Romaji + Key_Hiragana = 0x01001125, // to Hiragana + Key_Katakana = 0x01001126, // to Katakana + Key_Hiragana_Katakana = 0x01001127, // Hiragana/Katakana toggle + Key_Zenkaku = 0x01001128, // to Zenkaku + Key_Hankaku = 0x01001129, // to Hankaku + Key_Zenkaku_Hankaku = 0x0100112a, // Zenkaku/Hankaku toggle + Key_Touroku = 0x0100112b, // Add to Dictionary + Key_Massyo = 0x0100112c, // Delete from Dictionary + Key_Kana_Lock = 0x0100112d, // Kana Lock + Key_Kana_Shift = 0x0100112e, // Kana Shift + Key_Eisu_Shift = 0x0100112f, // Alphanumeric Shift + Key_Eisu_toggle = 0x01001130, // Alphanumeric toggle + //Key_Kanji_Bangou = 0x01001137, // Codeinput + //Key_Zen_Koho = 0x0100113d, // Multiple/All Candidate(s) + //Key_Mae_Koho = 0x0100113e, // Previous Candidate + + // Korean keyboard support + // + // In fact, many Korean users need only 2 keys, Key_Hangul and + // Key_Hangul_Hanja. But rest of the keys are good for future. + + Key_Hangul = 0x01001131, // Hangul start/stop(toggle) + Key_Hangul_Start = 0x01001132, // Hangul start + Key_Hangul_End = 0x01001133, // Hangul end, English start + Key_Hangul_Hanja = 0x01001134, // Start Hangul->Hanja Conversion + Key_Hangul_Jamo = 0x01001135, // Hangul Jamo mode + Key_Hangul_Romaja = 0x01001136, // Hangul Romaja mode + //Key_Hangul_Codeinput = 0x01001137, // Hangul code input mode + Key_Hangul_Jeonja = 0x01001138, // Jeonja mode + Key_Hangul_Banja = 0x01001139, // Banja mode + Key_Hangul_PreHanja = 0x0100113a, // Pre Hanja conversion + Key_Hangul_PostHanja = 0x0100113b, // Post Hanja conversion + //Key_Hangul_SingleCandidate = 0x0100113c, // Single candidate + //Key_Hangul_MultipleCandidate = 0x0100113d, // Multiple candidate + //Key_Hangul_PreviousCandidate = 0x0100113e, // Previous candidate + Key_Hangul_Special = 0x0100113f, // Special symbols + //Key_Hangul_switch = 0x0100117e, // Alias for mode_switch + + // dead keys (X keycode - 0xED00 to avoid the conflict) + Key_Dead_Grave = 0x01001250, + Key_Dead_Acute = 0x01001251, + Key_Dead_Circumflex = 0x01001252, + Key_Dead_Tilde = 0x01001253, + Key_Dead_Macron = 0x01001254, + Key_Dead_Breve = 0x01001255, + Key_Dead_Abovedot = 0x01001256, + Key_Dead_Diaeresis = 0x01001257, + Key_Dead_Abovering = 0x01001258, + Key_Dead_Doubleacute = 0x01001259, + Key_Dead_Caron = 0x0100125a, + Key_Dead_Cedilla = 0x0100125b, + Key_Dead_Ogonek = 0x0100125c, + Key_Dead_Iota = 0x0100125d, + Key_Dead_Voiced_Sound = 0x0100125e, + Key_Dead_Semivoiced_Sound = 0x0100125f, + Key_Dead_Belowdot = 0x01001260, + Key_Dead_Hook = 0x01001261, + Key_Dead_Horn = 0x01001262, + + // multimedia/internet keys - ignored by default - see QKeyEvent c'tor + Key_Back = 0x01000061, + Key_Forward = 0x01000062, + Key_Stop = 0x01000063, + Key_Refresh = 0x01000064, + Key_VolumeDown = 0x01000070, + Key_VolumeMute = 0x01000071, + Key_VolumeUp = 0x01000072, + Key_BassBoost = 0x01000073, + Key_BassUp = 0x01000074, + Key_BassDown = 0x01000075, + Key_TrebleUp = 0x01000076, + Key_TrebleDown = 0x01000077, + Key_MediaPlay = 0x01000080, + Key_MediaStop = 0x01000081, + Key_MediaPrevious = 0x01000082, + Key_MediaNext = 0x01000083, + Key_MediaRecord = 0x01000084, + Key_MediaPause = 0x1000085, + Key_MediaTogglePlayPause = 0x1000086, + Key_HomePage = 0x01000090, + Key_Favorites = 0x01000091, + Key_Search = 0x01000092, + Key_Standby = 0x01000093, + Key_OpenUrl = 0x01000094, + Key_LaunchMail = 0x010000a0, + Key_LaunchMedia = 0x010000a1, + Key_Launch0 = 0x010000a2, + Key_Launch1 = 0x010000a3, + Key_Launch2 = 0x010000a4, + Key_Launch3 = 0x010000a5, + Key_Launch4 = 0x010000a6, + Key_Launch5 = 0x010000a7, + Key_Launch6 = 0x010000a8, + Key_Launch7 = 0x010000a9, + Key_Launch8 = 0x010000aa, + Key_Launch9 = 0x010000ab, + Key_LaunchA = 0x010000ac, + Key_LaunchB = 0x010000ad, + Key_LaunchC = 0x010000ae, + Key_LaunchD = 0x010000af, + Key_LaunchE = 0x010000b0, + Key_LaunchF = 0x010000b1, + Key_MonBrightnessUp = 0x010000b2, + Key_MonBrightnessDown = 0x010000b3, + Key_KeyboardLightOnOff = 0x010000b4, + Key_KeyboardBrightnessUp = 0x010000b5, + Key_KeyboardBrightnessDown = 0x010000b6, + Key_PowerOff = 0x010000b7, + Key_WakeUp = 0x010000b8, + Key_Eject = 0x010000b9, + Key_ScreenSaver = 0x010000ba, + Key_WWW = 0x010000bb, + Key_Memo = 0x010000bc, + Key_LightBulb = 0x010000bd, + Key_Shop = 0x010000be, + Key_History = 0x010000bf, + Key_AddFavorite = 0x010000c0, + Key_HotLinks = 0x010000c1, + Key_BrightnessAdjust = 0x010000c2, + Key_Finance = 0x010000c3, + Key_Community = 0x010000c4, + Key_AudioRewind = 0x010000c5, // Media rewind + Key_BackForward = 0x010000c6, + Key_ApplicationLeft = 0x010000c7, + Key_ApplicationRight = 0x010000c8, + Key_Book = 0x010000c9, + Key_CD = 0x010000ca, + Key_Calculator = 0x010000cb, + Key_ToDoList = 0x010000cc, + Key_ClearGrab = 0x010000cd, + Key_Close = 0x010000ce, + Key_Copy = 0x010000cf, + Key_Cut = 0x010000d0, + Key_Display = 0x010000d1, // Output switch key + Key_DOS = 0x010000d2, + Key_Documents = 0x010000d3, + Key_Excel = 0x010000d4, + Key_Explorer = 0x010000d5, + Key_Game = 0x010000d6, + Key_Go = 0x010000d7, + Key_iTouch = 0x010000d8, + Key_LogOff = 0x010000d9, + Key_Market = 0x010000da, + Key_Meeting = 0x010000db, + Key_MenuKB = 0x010000dc, + Key_MenuPB = 0x010000dd, + Key_MySites = 0x010000de, + Key_News = 0x010000df, + Key_OfficeHome = 0x010000e0, + Key_Option = 0x010000e1, + Key_Paste = 0x010000e2, + Key_Phone = 0x010000e3, + Key_Calendar = 0x010000e4, + Key_Reply = 0x010000e5, + Key_Reload = 0x010000e6, + Key_RotateWindows = 0x010000e7, + Key_RotationPB = 0x010000e8, + Key_RotationKB = 0x010000e9, + Key_Save = 0x010000ea, + Key_Send = 0x010000eb, + Key_Spell = 0x010000ec, + Key_SplitScreen = 0x010000ed, + Key_Support = 0x010000ee, + Key_TaskPane = 0x010000ef, + Key_Terminal = 0x010000f0, + Key_Tools = 0x010000f1, + Key_Travel = 0x010000f2, + Key_Video = 0x010000f3, + Key_Word = 0x010000f4, + Key_Xfer = 0x010000f5, + Key_ZoomIn = 0x010000f6, + Key_ZoomOut = 0x010000f7, + Key_Away = 0x010000f8, + Key_Messenger = 0x010000f9, + Key_WebCam = 0x010000fa, + Key_MailForward = 0x010000fb, + Key_Pictures = 0x010000fc, + Key_Music = 0x010000fd, + Key_Battery = 0x010000fe, + Key_Bluetooth = 0x010000ff, + Key_WLAN = 0x01000100, + Key_UWB = 0x01000101, + Key_AudioForward = 0x01000102, // Media fast-forward + Key_AudioRepeat = 0x01000103, // Toggle repeat mode + Key_AudioRandomPlay = 0x01000104, // Toggle shuffle mode + Key_Subtitle = 0x01000105, + Key_AudioCycleTrack = 0x01000106, + Key_Time = 0x01000107, + Key_Hibernate = 0x01000108, + Key_View = 0x01000109, + Key_TopMenu = 0x0100010a, + Key_PowerDown = 0x0100010b, + Key_Suspend = 0x0100010c, + Key_ContrastAdjust = 0x0100010d, + + Key_LaunchG = 0x0100010e, + Key_LaunchH = 0x0100010f, + + Key_TouchpadToggle = 0x01000110, + Key_TouchpadOn = 0x01000111, + Key_TouchpadOff = 0x01000112, + + Key_MicMute = 0x01000113, + + Key_Red = 0x01000114, + Key_Green = 0x01000115, + Key_Yellow = 0x01000116, + Key_Blue = 0x01000117, + + Key_ChannelUp = 0x01000118, + Key_ChannelDown = 0x01000119, + + Key_Guide = 0x0100011a, + Key_Info = 0x0100011b, + Key_Settings = 0x0100011c, + + Key_MicVolumeUp = 0x0100011d, + Key_MicVolumeDown = 0x0100011e, + + Key_New = 0x01000120, + Key_Open = 0x01000121, + Key_Find = 0x01000122, + Key_Undo = 0x01000123, + Key_Redo = 0x01000124, + + Key_MediaLast = 0x0100ffff, + + // Keypad navigation keys + Key_Select = 0x01010000, + Key_Yes = 0x01010001, + Key_No = 0x01010002, + + // Newer misc keys + Key_Cancel = 0x01020001, + Key_Printer = 0x01020002, + Key_Execute = 0x01020003, + Key_Sleep = 0x01020004, + Key_Play = 0x01020005, // Not the same as Key_MediaPlay + Key_Zoom = 0x01020006, + //Key_Jisho = 0x01020007, // IME: Dictionary key + //Key_Oyayubi_Left = 0x01020008, // IME: Left Oyayubi key + //Key_Oyayubi_Right = 0x01020009, // IME: Right Oyayubi key + Key_Exit = 0x0102000a, + + // Device keys + Key_Context1 = 0x01100000, + Key_Context2 = 0x01100001, + Key_Context3 = 0x01100002, + Key_Context4 = 0x01100003, + Key_Call = 0x01100004, // set absolute state to in a call (do not toggle state) + Key_Hangup = 0x01100005, // set absolute state to hang up (do not toggle state) + Key_Flip = 0x01100006, + Key_ToggleCallHangup = 0x01100007, // a toggle key for answering, or hanging up, based on current call state + Key_VoiceDial = 0x01100008, + Key_LastNumberRedial = 0x01100009, + + Key_Camera = 0x01100020, + Key_CameraFocus = 0x01100021, + + Key_unknown = 0x01ffffff + }; + + enum ArrowType { + NoArrow, + UpArrow, + DownArrow, + LeftArrow, + RightArrow + }; + + enum PenStyle { // pen style + NoPen, + SolidLine, + DashLine, + DotLine, + DashDotLine, + DashDotDotLine, + CustomDashLine +#ifndef Q_MOC_RUN + , MPenStyle = 0x0f +#endif + }; + + enum PenCapStyle { // line endcap style + FlatCap = 0x00, + SquareCap = 0x10, + RoundCap = 0x20, + MPenCapStyle = 0x30 + }; + + enum PenJoinStyle { // line join style + MiterJoin = 0x00, + BevelJoin = 0x40, + RoundJoin = 0x80, + SvgMiterJoin = 0x100, + MPenJoinStyle = 0x1c0 + }; + + enum BrushStyle { // brush style + NoBrush, + SolidPattern, + Dense1Pattern, + Dense2Pattern, + Dense3Pattern, + Dense4Pattern, + Dense5Pattern, + Dense6Pattern, + Dense7Pattern, + HorPattern, + VerPattern, + CrossPattern, + BDiagPattern, + FDiagPattern, + DiagCrossPattern, + LinearGradientPattern, + RadialGradientPattern, + ConicalGradientPattern, + TexturePattern = 24 + }; + + enum SizeMode { + AbsoluteSize, + RelativeSize + }; + + enum UIEffect { + UI_General, + UI_AnimateMenu, + UI_FadeMenu, + UI_AnimateCombo, + UI_AnimateTooltip, + UI_FadeTooltip, + UI_AnimateToolBox + }; + + enum CursorShape { + ArrowCursor, + UpArrowCursor, + CrossCursor, + WaitCursor, + IBeamCursor, + SizeVerCursor, + SizeHorCursor, + SizeBDiagCursor, + SizeFDiagCursor, + SizeAllCursor, + BlankCursor, + SplitVCursor, + SplitHCursor, + PointingHandCursor, + ForbiddenCursor, + WhatsThisCursor, + BusyCursor, + OpenHandCursor, + ClosedHandCursor, + DragCopyCursor, + DragMoveCursor, + DragLinkCursor, + LastCursor = DragLinkCursor, + BitmapCursor = 24, + CustomCursor = 25 + }; + + enum TextFormat { + PlainText, + RichText, + AutoText + }; + + enum AspectRatioMode { + IgnoreAspectRatio, + KeepAspectRatio, + KeepAspectRatioByExpanding + }; + + enum DockWidgetArea { + LeftDockWidgetArea = 0x1, + RightDockWidgetArea = 0x2, + TopDockWidgetArea = 0x4, + BottomDockWidgetArea = 0x8, + + DockWidgetArea_Mask = 0xf, + AllDockWidgetAreas = DockWidgetArea_Mask, + NoDockWidgetArea = 0 + }; + enum DockWidgetAreaSizes { + NDockWidgetAreas = 4 + }; + + Q_DECLARE_FLAGS(DockWidgetAreas, DockWidgetArea) + + enum ToolBarArea { + LeftToolBarArea = 0x1, + RightToolBarArea = 0x2, + TopToolBarArea = 0x4, + BottomToolBarArea = 0x8, + + ToolBarArea_Mask = 0xf, + AllToolBarAreas = ToolBarArea_Mask, + NoToolBarArea = 0 + }; + + enum ToolBarAreaSizes { + NToolBarAreas = 4 + }; + + Q_DECLARE_FLAGS(ToolBarAreas, ToolBarArea) + + enum DateFormat { + TextDate, // default Qt + ISODate, // ISO 8601 + SystemLocaleDate, // deprecated + LocalDate = SystemLocaleDate, // deprecated + LocaleDate, // deprecated + SystemLocaleShortDate, + SystemLocaleLongDate, + DefaultLocaleShortDate, + DefaultLocaleLongDate, + RFC2822Date, // RFC 2822 (+ 850 and 1036 during parsing) + ISODateWithMs + }; + + enum TimeSpec { + LocalTime, + UTC, + OffsetFromUTC, + TimeZone + }; + + enum DayOfWeek { + Monday = 1, + Tuesday = 2, + Wednesday = 3, + Thursday = 4, + Friday = 5, + Saturday = 6, + Sunday = 7 + }; + + enum ScrollBarPolicy { + ScrollBarAsNeeded, + ScrollBarAlwaysOff, + ScrollBarAlwaysOn + }; + + enum CaseSensitivity { + CaseInsensitive, + CaseSensitive + }; + + enum Corner { + TopLeftCorner = 0x00000, + TopRightCorner = 0x00001, + BottomLeftCorner = 0x00002, + BottomRightCorner = 0x00003 + }; + + enum Edge { + TopEdge = 0x00001, + LeftEdge = 0x00002, + RightEdge = 0x00004, + BottomEdge = 0x00008 + }; + + Q_DECLARE_FLAGS(Edges, Edge) + + enum ConnectionType { + AutoConnection, + DirectConnection, + QueuedConnection, + BlockingQueuedConnection, + UniqueConnection = 0x80 + }; + + enum ShortcutContext { + WidgetShortcut, + WindowShortcut, + ApplicationShortcut, + WidgetWithChildrenShortcut + }; + + enum FillRule { + OddEvenFill, + WindingFill + }; + + enum MaskMode { + MaskInColor, + MaskOutColor + }; + + enum ClipOperation { + NoClip, + ReplaceClip, + IntersectClip + }; + + // Shape = 0x1, BoundingRect = 0x2 + enum ItemSelectionMode { + ContainsItemShape = 0x0, + IntersectsItemShape = 0x1, + ContainsItemBoundingRect = 0x2, + IntersectsItemBoundingRect = 0x3 + }; + + enum ItemSelectionOperation { + ReplaceSelection, + AddToSelection + }; + + enum TransformationMode { + FastTransformation, + SmoothTransformation + }; + + enum Axis { + XAxis, + YAxis, + ZAxis + }; + + enum FocusReason { + MouseFocusReason, + TabFocusReason, + BacktabFocusReason, + ActiveWindowFocusReason, + PopupFocusReason, + ShortcutFocusReason, + MenuBarFocusReason, + OtherFocusReason, + NoFocusReason + }; + + enum ContextMenuPolicy { + NoContextMenu, + DefaultContextMenu, + ActionsContextMenu, + CustomContextMenu, + PreventContextMenu + }; + + enum InputMethodQuery { + ImEnabled = 0x1, + ImCursorRectangle = 0x2, + ImMicroFocus = 0x2, // deprecated + ImFont = 0x4, + ImCursorPosition = 0x8, + ImSurroundingText = 0x10, + ImCurrentSelection = 0x20, + ImMaximumTextLength = 0x40, + ImAnchorPosition = 0x80, + ImHints = 0x100, + ImPreferredLanguage = 0x200, + + ImAbsolutePosition = 0x400, + ImTextBeforeCursor = 0x800, + ImTextAfterCursor = 0x1000, + ImEnterKeyType = 0x2000, + ImAnchorRectangle = 0x4000, + ImInputItemClipRectangle = 0x8000, + + ImPlatformData = 0x80000000, + ImQueryInput = ImCursorRectangle | ImCursorPosition | ImSurroundingText | + ImCurrentSelection | ImAnchorRectangle | ImAnchorPosition, + ImQueryAll = 0xffffffff + }; + Q_DECLARE_FLAGS(InputMethodQueries, InputMethodQuery) + + enum InputMethodHint { + ImhNone = 0x0, + + ImhHiddenText = 0x1, + ImhSensitiveData = 0x2, + ImhNoAutoUppercase = 0x4, + ImhPreferNumbers = 0x8, + ImhPreferUppercase = 0x10, + ImhPreferLowercase = 0x20, + ImhNoPredictiveText = 0x40, + + ImhDate = 0x80, + ImhTime = 0x100, + + ImhPreferLatin = 0x200, + + ImhMultiLine = 0x400, + + ImhDigitsOnly = 0x10000, + ImhFormattedNumbersOnly = 0x20000, + ImhUppercaseOnly = 0x40000, + ImhLowercaseOnly = 0x80000, + ImhDialableCharactersOnly = 0x100000, + ImhEmailCharactersOnly = 0x200000, + ImhUrlCharactersOnly = 0x400000, + ImhLatinOnly = 0x800000, + + ImhExclusiveInputMask = 0xffff0000 + }; + Q_DECLARE_FLAGS(InputMethodHints, InputMethodHint) + + enum EnterKeyType { + EnterKeyDefault, + EnterKeyReturn, + EnterKeyDone, + EnterKeyGo, + EnterKeySend, + EnterKeySearch, + EnterKeyNext, + EnterKeyPrevious + }; + + enum ToolButtonStyle { + ToolButtonIconOnly, + ToolButtonTextOnly, + ToolButtonTextBesideIcon, + ToolButtonTextUnderIcon, + ToolButtonFollowStyle + }; + + enum LayoutDirection { + LeftToRight, + RightToLeft, + LayoutDirectionAuto + }; + + enum AnchorPoint { + AnchorLeft = 0, + AnchorHorizontalCenter, + AnchorRight, + AnchorTop, + AnchorVerticalCenter, + AnchorBottom + }; + + enum FindChildOption { + FindDirectChildrenOnly = 0x0, + FindChildrenRecursively = 0x1 + }; + Q_DECLARE_FLAGS(FindChildOptions, FindChildOption) + + enum DropAction { + CopyAction = 0x1, + MoveAction = 0x2, + LinkAction = 0x4, + ActionMask = 0xff, + TargetMoveAction = 0x8002, + IgnoreAction = 0x0 + }; + Q_DECLARE_FLAGS(DropActions, DropAction) + + enum CheckState { + Unchecked, + PartiallyChecked, + Checked + }; + + enum ItemDataRole { + DisplayRole = 0, + DecorationRole = 1, + EditRole = 2, + ToolTipRole = 3, + StatusTipRole = 4, + WhatsThisRole = 5, + // Metadata + FontRole = 6, + TextAlignmentRole = 7, + BackgroundColorRole = 8, + BackgroundRole = 8, + TextColorRole = 9, + ForegroundRole = 9, + CheckStateRole = 10, + // Accessibility + AccessibleTextRole = 11, + AccessibleDescriptionRole = 12, + // More general purpose + SizeHintRole = 13, + InitialSortOrderRole = 14, + // Internal UiLib roles. Start worrying when public roles go that high. + DisplayPropertyRole = 27, + DecorationPropertyRole = 28, + ToolTipPropertyRole = 29, + StatusTipPropertyRole = 30, + WhatsThisPropertyRole = 31, + // Reserved + UserRole = 0x0100 + }; + + enum ItemFlag { + NoItemFlags = 0, + ItemIsSelectable = 1, + ItemIsEditable = 2, + ItemIsDragEnabled = 4, + ItemIsDropEnabled = 8, + ItemIsUserCheckable = 16, + ItemIsEnabled = 32, + ItemIsAutoTristate = 64, +#if QT_DEPRECATED_SINCE(5, 6) + ItemIsTristate = ItemIsAutoTristate, +#endif + ItemNeverHasChildren = 128, + ItemIsUserTristate = 256 + }; + Q_DECLARE_FLAGS(ItemFlags, ItemFlag) + + enum MatchFlag { + MatchExactly = 0, + MatchContains = 1, + MatchStartsWith = 2, + MatchEndsWith = 3, + MatchRegExp = 4, + MatchWildcard = 5, + MatchFixedString = 8, + MatchCaseSensitive = 16, + MatchWrap = 32, + MatchRecursive = 64 + }; + Q_DECLARE_FLAGS(MatchFlags, MatchFlag) + + typedef void * HANDLE; +#if QT_DEPRECATED_SINCE(5, 0) + typedef WindowFlags WFlags; +#endif + + enum WindowModality { + NonModal, + WindowModal, + ApplicationModal + }; + + enum TextInteractionFlag { + NoTextInteraction = 0, + TextSelectableByMouse = 1, + TextSelectableByKeyboard = 2, + LinksAccessibleByMouse = 4, + LinksAccessibleByKeyboard = 8, + TextEditable = 16, + + TextEditorInteraction = TextSelectableByMouse | TextSelectableByKeyboard | TextEditable, + TextBrowserInteraction = TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard + }; + Q_DECLARE_FLAGS(TextInteractionFlags, TextInteractionFlag) + + enum EventPriority { + HighEventPriority = 1, + NormalEventPriority = 0, + LowEventPriority = -1 + }; + + enum SizeHint { + MinimumSize, + PreferredSize, + MaximumSize, + MinimumDescent, + NSizeHints + }; + + enum WindowFrameSection { + NoSection, + LeftSection, // For resize + TopLeftSection, + TopSection, + TopRightSection, + RightSection, + BottomRightSection, + BottomSection, + BottomLeftSection, + TitleBarArea // For move + }; + +#if defined(Q_COMPILER_CLASS_ENUM) && defined(Q_COMPILER_CONSTEXPR) + enum class Initialization { + Uninitialized + }; + static constexpr Q_DECL_UNUSED Initialization Uninitialized = Initialization::Uninitialized; +#else + enum Initialization { + Uninitialized + }; +#endif + + enum CoordinateSystem { + DeviceCoordinates, + LogicalCoordinates + }; + + enum TouchPointState { + TouchPointPressed = 0x01, + TouchPointMoved = 0x02, + TouchPointStationary = 0x04, + TouchPointReleased = 0x08 + }; + Q_DECLARE_FLAGS(TouchPointStates, TouchPointState) + +#ifndef QT_NO_GESTURES + enum GestureState + { + NoGesture, + GestureStarted = 1, + GestureUpdated = 2, + GestureFinished = 3, + GestureCanceled = 4 + }; + + enum GestureType + { + TapGesture = 1, + TapAndHoldGesture = 2, + PanGesture = 3, + PinchGesture = 4, + SwipeGesture = 5, + + CustomGesture = 0x0100, + + LastGestureType = ~0u + }; + + enum GestureFlag + { + DontStartGestureOnChildren = 0x01, + ReceivePartialGestures = 0x02, + IgnoredGesturesPropagateToParent = 0x04 + }; + Q_DECLARE_FLAGS(GestureFlags, GestureFlag) + + enum NativeGestureType + { + BeginNativeGesture, + EndNativeGesture, + PanNativeGesture, + ZoomNativeGesture, + SmartZoomNativeGesture, + RotateNativeGesture, + SwipeNativeGesture + }; + +#endif // QT_NO_GESTURES + + enum NavigationMode + { + NavigationModeNone, + NavigationModeKeypadTabOrder, + NavigationModeKeypadDirectional, + NavigationModeCursorAuto, + NavigationModeCursorForceVisible + }; + + enum CursorMoveStyle { + LogicalMoveStyle, + VisualMoveStyle + }; + + enum TimerType { + PreciseTimer, + CoarseTimer, + VeryCoarseTimer + }; + + enum ScrollPhase { + NoScrollPhase = 0, + ScrollBegin, + ScrollUpdate, + ScrollEnd + }; + + enum MouseEventSource { + MouseEventNotSynthesized, + MouseEventSynthesizedBySystem, + MouseEventSynthesizedByQt, + MouseEventSynthesizedByApplication + }; + + enum MouseEventFlag { + MouseEventCreatedDoubleClick = 0x01, + MouseEventFlagMask = 0xFF + }; + Q_DECLARE_FLAGS(MouseEventFlags, MouseEventFlag) + + enum ChecksumType { + ChecksumIso3309, + ChecksumItuV41 + }; + +#ifndef Q_QDOC + // NOTE: Generally, do not add QT_Q_ENUM if a corresponding Q_Q_FLAG exists. + QT_Q_ENUM(ScrollBarPolicy) + QT_Q_ENUM(FocusPolicy) + QT_Q_ENUM(ContextMenuPolicy) + QT_Q_ENUM(ArrowType) + QT_Q_ENUM(ToolButtonStyle) + QT_Q_ENUM(PenStyle) + QT_Q_ENUM(PenCapStyle) + QT_Q_ENUM(PenJoinStyle) + QT_Q_ENUM(BrushStyle) + QT_Q_ENUM(FillRule) + QT_Q_ENUM(MaskMode) + QT_Q_ENUM(BGMode) + QT_Q_ENUM(ClipOperation) + QT_Q_ENUM(SizeMode) + QT_Q_ENUM(Axis) + QT_Q_ENUM(Corner) + QT_Q_ENUM(Edge) + QT_Q_ENUM(LayoutDirection) + QT_Q_ENUM(SizeHint) + QT_Q_ENUM(Orientation) + QT_Q_ENUM(DropAction) + QT_Q_FLAG(Alignment) + QT_Q_ENUM(TextFlag) + QT_Q_FLAG(Orientations) + QT_Q_FLAG(DropActions) + QT_Q_FLAG(Edges) + QT_Q_FLAG(DockWidgetAreas) + QT_Q_FLAG(ToolBarAreas) + QT_Q_ENUM(DockWidgetArea) + QT_Q_ENUM(ToolBarArea) + QT_Q_ENUM(TextFormat) + QT_Q_ENUM(TextElideMode) + QT_Q_ENUM(DateFormat) + QT_Q_ENUM(TimeSpec) + QT_Q_ENUM(DayOfWeek) + QT_Q_ENUM(CursorShape) + QT_Q_ENUM(GlobalColor) + QT_Q_ENUM(AspectRatioMode) + QT_Q_ENUM(TransformationMode) + QT_Q_FLAG(ImageConversionFlags) + QT_Q_ENUM(Key) + QT_Q_ENUM(ShortcutContext) + QT_Q_ENUM(TextInteractionFlag) + QT_Q_FLAG(TextInteractionFlags) + QT_Q_ENUM(ItemSelectionMode) + QT_Q_ENUM(ItemSelectionOperation) + QT_Q_FLAG(ItemFlags) + QT_Q_ENUM(CheckState) + QT_Q_ENUM(ItemDataRole) + QT_Q_ENUM(SortOrder) + QT_Q_ENUM(CaseSensitivity) + QT_Q_FLAG(MatchFlags) + QT_Q_FLAG(KeyboardModifiers) + QT_Q_FLAG(MouseButtons) + QT_Q_ENUM(WindowType) + QT_Q_ENUM(WindowState) + QT_Q_ENUM(WindowModality) + QT_Q_ENUM(WidgetAttribute) + QT_Q_ENUM(ApplicationAttribute) + QT_Q_FLAG(WindowFlags) + QT_Q_FLAG(WindowStates) + QT_Q_ENUM(FocusReason) + QT_Q_ENUM(InputMethodHint) + QT_Q_ENUM(InputMethodQuery) + QT_Q_FLAG(InputMethodHints) + QT_Q_ENUM(EnterKeyType) + QT_Q_FLAG(InputMethodQueries) + QT_Q_FLAG(TouchPointStates) + QT_Q_ENUM(ScreenOrientation) + QT_Q_FLAG(ScreenOrientations) + QT_Q_ENUM(ConnectionType) + QT_Q_ENUM(ApplicationState) +#ifndef QT_NO_GESTURES + QT_Q_ENUM(GestureState) + QT_Q_ENUM(GestureType) + QT_Q_ENUM(NativeGestureType) +#endif + QT_Q_ENUM(CursorMoveStyle) + QT_Q_ENUM(TimerType) + QT_Q_ENUM(ScrollPhase) + QT_Q_ENUM(MouseEventSource) + QT_Q_FLAG(MouseEventFlag) + QT_Q_ENUM(ChecksumType) + QT_Q_ENUM(TabFocusBehavior) +#endif // Q_DOC + +} +#ifdef Q_MOC_RUN + ; +#endif + +#undef QT_Q_ENUM +#undef QT_Q_FLAG + +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::MouseButtons) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::Orientations) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::KeyboardModifiers) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::WindowFlags) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::Alignment) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::Edges) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::ImageConversionFlags) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::DockWidgetAreas) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::ToolBarAreas) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::WindowStates) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::ScreenOrientations) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::DropActions) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::ItemFlags) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::MatchFlags) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::TextInteractionFlags) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::InputMethodQueries) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::InputMethodHints) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::TouchPointStates) +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::MouseEventFlags) +#ifndef QT_NO_GESTURES +Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::GestureFlags) +#endif + +typedef bool (*qInternalCallback)(void **); + +class Q_CORE_EXPORT QInternal { +public: + enum PaintDeviceFlags { + UnknownDevice = 0x00, + Widget = 0x01, + Pixmap = 0x02, + Image = 0x03, + Printer = 0x04, + Picture = 0x05, + Pbuffer = 0x06, // GL pbuffer + FramebufferObject = 0x07, // GL framebuffer object + CustomRaster = 0x08, + MacQuartz = 0x09, + PaintBuffer = 0x0a, + OpenGL = 0x0b + }; + enum RelayoutType { + RelayoutNormal, + RelayoutDragging, + RelayoutDropped + }; + + enum DockPosition { + LeftDock, + RightDock, + TopDock, + BottomDock, + DockCount + }; + + enum Callback { + EventNotifyCallback, + LastCallback + }; + static bool registerCallback(Callback, qInternalCallback); + static bool unregisterCallback(Callback, qInternalCallback); + static bool activateCallbacks(Callback, void **); +}; + +QT_END_NAMESPACE + +#endif // QNAMESPACE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qnumeric.h b/qrenderdoc/3rdparty/qt/include/QtCore/qnumeric.h new file mode 100644 index 000000000..80be984be --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qnumeric.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNUMERIC_H +#define QNUMERIC_H + +#include + +QT_BEGIN_NAMESPACE + + +Q_CORE_EXPORT bool qIsInf(double d); +Q_CORE_EXPORT bool qIsNaN(double d); +Q_CORE_EXPORT bool qIsFinite(double d); +Q_CORE_EXPORT bool qIsInf(float f); +Q_CORE_EXPORT bool qIsNaN(float f); +Q_CORE_EXPORT bool qIsFinite(float f); +Q_CORE_EXPORT double qSNaN(); +Q_CORE_EXPORT double qQNaN(); +Q_CORE_EXPORT double qInf(); + +Q_CORE_EXPORT quint32 qFloatDistance(float a, float b); +Q_CORE_EXPORT quint64 qFloatDistance(double a, double b); + +#define Q_INFINITY (QT_PREPEND_NAMESPACE(qInf)()) +#define Q_SNAN (QT_PREPEND_NAMESPACE(qSNaN)()) +#define Q_QNAN (QT_PREPEND_NAMESPACE(qQNaN)()) + +QT_END_NAMESPACE + +#endif // QNUMERIC_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qobject.h b/qrenderdoc/3rdparty/qt/include/QtCore/qobject.h new file mode 100644 index 000000000..6941c5589 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qobject.h @@ -0,0 +1,631 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2013 Olivier Goffart +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOBJECT_H +#define QOBJECT_H + +#ifndef QT_NO_QOBJECT + +#include +#include +#include +#include +#ifdef QT_INCLUDE_COMPAT +#include +#endif +#include +#include + +#include + +#if QT_HAS_INCLUDE() +# include +#endif + +QT_BEGIN_NAMESPACE + + +class QEvent; +class QTimerEvent; +class QChildEvent; +struct QMetaObject; +class QVariant; +class QObjectPrivate; +class QObject; +class QThread; +class QWidget; +#ifndef QT_NO_REGEXP +class QRegExp; +#endif +#ifndef QT_NO_REGULAREXPRESSION +class QRegularExpression; +#endif +#ifndef QT_NO_USERDATA +class QObjectUserData; +#endif +struct QDynamicMetaObjectData; + +typedef QList QObjectList; + +Q_CORE_EXPORT void qt_qFindChildren_helper(const QObject *parent, const QString &name, + const QMetaObject &mo, QList *list, Qt::FindChildOptions options); +Q_CORE_EXPORT void qt_qFindChildren_helper(const QObject *parent, const QRegExp &re, + const QMetaObject &mo, QList *list, Qt::FindChildOptions options); +Q_CORE_EXPORT void qt_qFindChildren_helper(const QObject *parent, const QRegularExpression &re, + const QMetaObject &mo, QList *list, Qt::FindChildOptions options); +Q_CORE_EXPORT QObject *qt_qFindChild_helper(const QObject *parent, const QString &name, const QMetaObject &mo, Qt::FindChildOptions options); + +class Q_CORE_EXPORT QObjectData { +public: + virtual ~QObjectData() = 0; + QObject *q_ptr; + QObject *parent; + QObjectList children; + + uint isWidget : 1; + uint blockSig : 1; + uint wasDeleted : 1; + uint isDeletingChildren : 1; + uint sendChildEvents : 1; + uint receiveChildEvents : 1; + uint isWindow : 1; //for QWindow + uint unused : 25; + int postedEvents; + QDynamicMetaObjectData *metaObject; + QMetaObject *dynamicMetaObject() const; +}; + + +class Q_CORE_EXPORT QObject +{ + Q_OBJECT + Q_PROPERTY(QString objectName READ objectName WRITE setObjectName NOTIFY objectNameChanged) + Q_DECLARE_PRIVATE(QObject) + +public: + Q_INVOKABLE explicit QObject(QObject *parent=Q_NULLPTR); + virtual ~QObject(); + + virtual bool event(QEvent *event); + virtual bool eventFilter(QObject *watched, QEvent *event); + +#ifdef Q_QDOC + static QString tr(const char *sourceText, const char *comment = Q_NULLPTR, int n = -1); + static QString trUtf8(const char *sourceText, const char *comment = Q_NULLPTR, int n = -1); + virtual const QMetaObject *metaObject() const; + static const QMetaObject staticMetaObject; +#endif +#ifdef QT_NO_TRANSLATION + static QString tr(const char *sourceText, const char * = Q_NULLPTR, int = -1) + { return QString::fromUtf8(sourceText); } +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED static QString trUtf8(const char *sourceText, const char * = Q_NULLPTR, int = -1) + { return QString::fromUtf8(sourceText); } +#endif +#endif //QT_NO_TRANSLATION + + QString objectName() const; + void setObjectName(const QString &name); + + inline bool isWidgetType() const { return d_ptr->isWidget; } + inline bool isWindowType() const { return d_ptr->isWindow; } + + inline bool signalsBlocked() const Q_DECL_NOTHROW { return d_ptr->blockSig; } + bool blockSignals(bool b) Q_DECL_NOTHROW; + + QThread *thread() const; + void moveToThread(QThread *thread); + + int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer); +#if QT_HAS_INCLUDE() || defined(Q_QDOC) + Q_ALWAYS_INLINE + int startTimer(std::chrono::milliseconds time, Qt::TimerType timerType = Qt::CoarseTimer) + { + return startTimer(int(time.count()), timerType); + } +#endif + void killTimer(int id); + + template + inline T findChild(const QString &aName = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const + { + typedef typename std::remove_cv::type>::type ObjType; + return static_cast(qt_qFindChild_helper(this, aName, ObjType::staticMetaObject, options)); + } + + template + inline QList findChildren(const QString &aName = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const + { + typedef typename std::remove_cv::type>::type ObjType; + QList list; + qt_qFindChildren_helper(this, aName, ObjType::staticMetaObject, + reinterpret_cast *>(&list), options); + return list; + } + +#ifndef QT_NO_REGEXP + template + inline QList findChildren(const QRegExp &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const + { + typedef typename std::remove_cv::type>::type ObjType; + QList list; + qt_qFindChildren_helper(this, re, ObjType::staticMetaObject, + reinterpret_cast *>(&list), options); + return list; + } +#endif + +#ifndef QT_NO_REGULAREXPRESSION + template + inline QList findChildren(const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const + { + typedef typename std::remove_cv::type>::type ObjType; + QList list; + qt_qFindChildren_helper(this, re, ObjType::staticMetaObject, + reinterpret_cast *>(&list), options); + return list; + } +#endif + + inline const QObjectList &children() const { return d_ptr->children; } + + void setParent(QObject *parent); + void installEventFilter(QObject *filterObj); + void removeEventFilter(QObject *obj); + + static QMetaObject::Connection connect(const QObject *sender, const char *signal, + const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection); + + static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal, + const QObject *receiver, const QMetaMethod &method, + Qt::ConnectionType type = Qt::AutoConnection); + + inline QMetaObject::Connection connect(const QObject *sender, const char *signal, + const char *member, Qt::ConnectionType type = Qt::AutoConnection) const; + +#ifdef Q_QDOC + template + static QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection); + template + static QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor); + template + static QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type = Qt::AutoConnection); +#else + //Connect a signal to a pointer to qobject member function + template + static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, + const typename QtPrivate::FunctionPointer::Object *receiver, Func2 slot, + Qt::ConnectionType type = Qt::AutoConnection) + { + typedef QtPrivate::FunctionPointer SignalType; + typedef QtPrivate::FunctionPointer SlotType; + + Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro::Value, + "No Q_OBJECT in the class with the signal"); + + //compilation error if the arguments does not match. + Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount), + "The slot requires more arguments than the signal provides."); + Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments::value), + "Signal and slot arguments are not compatible."); + Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible::value), + "Return type of the slot is not compatible with the return type of the signal."); + + const int *types = Q_NULLPTR; + if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) + types = QtPrivate::ConnectionTypes::types(); + + return connectImpl(sender, reinterpret_cast(&signal), + receiver, reinterpret_cast(&slot), + new QtPrivate::QSlotObject::Value, + typename SignalType::ReturnType>(slot), + type, types, &SignalType::Object::staticMetaObject); + } + + //connect to a function pointer (not a member) + template + static inline typename std::enable_if::ArgumentCount) >= 0, QMetaObject::Connection>::type + connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, Func2 slot) + { + return connect(sender, signal, sender, slot, Qt::DirectConnection); + } + + //connect to a function pointer (not a member) + template + static inline typename std::enable_if::ArgumentCount) >= 0 && + !QtPrivate::FunctionPointer::IsPointerToMemberFunction, QMetaObject::Connection>::type + connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, const QObject *context, Func2 slot, + Qt::ConnectionType type = Qt::AutoConnection) + { + typedef QtPrivate::FunctionPointer SignalType; + typedef QtPrivate::FunctionPointer SlotType; + + Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro::Value, + "No Q_OBJECT in the class with the signal"); + + //compilation error if the arguments does not match. + Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount), + "The slot requires more arguments than the signal provides."); + Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments::value), + "Signal and slot arguments are not compatible."); + Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible::value), + "Return type of the slot is not compatible with the return type of the signal."); + + const int *types = Q_NULLPTR; + if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) + types = QtPrivate::ConnectionTypes::types(); + + return connectImpl(sender, reinterpret_cast(&signal), context, Q_NULLPTR, + new QtPrivate::QStaticSlotObject::Value, + typename SignalType::ReturnType>(slot), + type, types, &SignalType::Object::staticMetaObject); + } + + //connect to a functor + template + static inline typename std::enable_if::ArgumentCount == -1, QMetaObject::Connection>::type + connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, Func2 slot) + { + return connect(sender, signal, sender, slot, Qt::DirectConnection); + } + + //connect to a functor, with a "context" object defining in which event loop is going to be executed + template + static inline typename std::enable_if::ArgumentCount == -1, QMetaObject::Connection>::type + connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, const QObject *context, Func2 slot, + Qt::ConnectionType type = Qt::AutoConnection) + { + typedef QtPrivate::FunctionPointer SignalType; + const int FunctorArgumentCount = QtPrivate::ComputeFunctorArgumentCount::Value; + + Q_STATIC_ASSERT_X((FunctorArgumentCount >= 0), + "Signal and slot arguments are not compatible."); + const int SlotArgumentCount = (FunctorArgumentCount >= 0) ? FunctorArgumentCount : 0; + typedef typename QtPrivate::FunctorReturnType::Value>::Value SlotReturnType; + + Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible::value), + "Return type of the slot is not compatible with the return type of the signal."); + + Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro::Value, + "No Q_OBJECT in the class with the signal"); + + const int *types = Q_NULLPTR; + if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) + types = QtPrivate::ConnectionTypes::types(); + + return connectImpl(sender, reinterpret_cast(&signal), context, Q_NULLPTR, + new QtPrivate::QFunctorSlotObject::Value, + typename SignalType::ReturnType>(slot), + type, types, &SignalType::Object::staticMetaObject); + } +#endif //Q_QDOC + + static bool disconnect(const QObject *sender, const char *signal, + const QObject *receiver, const char *member); + static bool disconnect(const QObject *sender, const QMetaMethod &signal, + const QObject *receiver, const QMetaMethod &member); + inline bool disconnect(const char *signal = Q_NULLPTR, + const QObject *receiver = Q_NULLPTR, const char *member = Q_NULLPTR) const + { return disconnect(this, signal, receiver, member); } + inline bool disconnect(const QObject *receiver, const char *member = Q_NULLPTR) const + { return disconnect(this, Q_NULLPTR, receiver, member); } + static bool disconnect(const QMetaObject::Connection &); + +#ifdef Q_QDOC + template + static bool disconnect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method); +#else + template + static inline bool disconnect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, + const typename QtPrivate::FunctionPointer::Object *receiver, Func2 slot) + { + typedef QtPrivate::FunctionPointer SignalType; + typedef QtPrivate::FunctionPointer SlotType; + + Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro::Value, + "No Q_OBJECT in the class with the signal"); + + //compilation error if the arguments does not match. + Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments::value), + "Signal and slot arguments are not compatible."); + + return disconnectImpl(sender, reinterpret_cast(&signal), receiver, reinterpret_cast(&slot), + &SignalType::Object::staticMetaObject); + } + template + static inline bool disconnect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, + const QObject *receiver, void **zero) + { + // This is the overload for when one wish to disconnect a signal from any slot. (slot=Q_NULLPTR) + // Since the function template parameter cannot be deduced from '0', we use a + // dummy void ** parameter that must be equal to 0 + Q_ASSERT(!zero); + typedef QtPrivate::FunctionPointer SignalType; + return disconnectImpl(sender, reinterpret_cast(&signal), receiver, zero, + &SignalType::Object::staticMetaObject); + } +#endif //Q_QDOC + + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void dumpObjectTree(); // ### Qt 6: remove + void dumpObjectInfo(); // ### Qt 6: remove +#endif + void dumpObjectTree() const; + void dumpObjectInfo() const; + +#ifndef QT_NO_PROPERTIES + bool setProperty(const char *name, const QVariant &value); + QVariant property(const char *name) const; + QList dynamicPropertyNames() const; +#endif // QT_NO_PROPERTIES + +#ifndef QT_NO_USERDATA + static uint registerUserData(); + void setUserData(uint id, QObjectUserData* data); + QObjectUserData* userData(uint id) const; +#endif // QT_NO_USERDATA + +Q_SIGNALS: + void destroyed(QObject * = Q_NULLPTR); + void objectNameChanged(const QString &objectName, QPrivateSignal); + +public: + inline QObject *parent() const { return d_ptr->parent; } + + inline bool inherits(const char *classname) const + { return const_cast(this)->qt_metacast(classname) != Q_NULLPTR; } + +public Q_SLOTS: + void deleteLater(); + +protected: + QObject *sender() const; + int senderSignalIndex() const; + int receivers(const char* signal) const; + bool isSignalConnected(const QMetaMethod &signal) const; + + virtual void timerEvent(QTimerEvent *event); + virtual void childEvent(QChildEvent *event); + virtual void customEvent(QEvent *event); + + virtual void connectNotify(const QMetaMethod &signal); + virtual void disconnectNotify(const QMetaMethod &signal); + +protected: + QObject(QObjectPrivate &dd, QObject *parent = Q_NULLPTR); + +protected: + QScopedPointer d_ptr; + + static const QMetaObject staticQtMetaObject; + friend inline const QMetaObject *qt_getQtMetaObject() Q_DECL_NOEXCEPT; + + friend struct QMetaObject; + friend struct QMetaObjectPrivate; + friend class QMetaCallEvent; + friend class QApplication; + friend class QApplicationPrivate; + friend class QCoreApplication; + friend class QCoreApplicationPrivate; + friend class QWidget; + friend class QThreadData; + +private: + Q_DISABLE_COPY(QObject) + Q_PRIVATE_SLOT(d_func(), void _q_reregisterTimers(void *)) + +private: + static QMetaObject::Connection connectImpl(const QObject *sender, void **signal, + const QObject *receiver, void **slotPtr, + QtPrivate::QSlotObjectBase *slot, Qt::ConnectionType type, + const int *types, const QMetaObject *senderMetaObject); + + static bool disconnectImpl(const QObject *sender, void **signal, const QObject *receiver, void **slot, + const QMetaObject *senderMetaObject); + +}; + +inline QMetaObject::Connection QObject::connect(const QObject *asender, const char *asignal, + const char *amember, Qt::ConnectionType atype) const +{ return connect(asender, asignal, this, amember, atype); } + +inline const QMetaObject *qt_getQtMetaObject() Q_DECL_NOEXCEPT +{ return &QObject::staticQtMetaObject; } + +#ifndef QT_NO_USERDATA +class Q_CORE_EXPORT QObjectUserData { +public: + virtual ~QObjectUserData(); +}; +#endif + +#ifdef Q_QDOC +T qFindChild(const QObject *o, const QString &name = QString()); +QList qFindChildren(const QObject *oobj, const QString &name = QString()); +QList qFindChildren(const QObject *o, const QRegExp &re); +#endif +#if QT_DEPRECATED_SINCE(5, 0) +template +inline QT_DEPRECATED T qFindChild(const QObject *o, const QString &name = QString()) +{ return o->findChild(name); } + +template +inline QT_DEPRECATED QList qFindChildren(const QObject *o, const QString &name = QString()) +{ + return o->findChildren(name); +} + +#ifndef QT_NO_REGEXP +template +inline QT_DEPRECATED QList qFindChildren(const QObject *o, const QRegExp &re) +{ + return o->findChildren(re); +} +#endif + +#endif //QT_DEPRECATED + +template +inline T qobject_cast(QObject *object) +{ + typedef typename std::remove_cv::type>::type ObjType; + Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro::Value, + "qobject_cast requires the type to have a Q_OBJECT macro"); + return static_cast(ObjType::staticMetaObject.cast(object)); +} + +template +inline T qobject_cast(const QObject *object) +{ + typedef typename std::remove_cv::type>::type ObjType; + Q_STATIC_ASSERT_X(QtPrivate::HasQ_OBJECT_Macro::Value, + "qobject_cast requires the type to have a Q_OBJECT macro"); + return static_cast(ObjType::staticMetaObject.cast(object)); +} + + +template inline const char * qobject_interface_iid() +{ return Q_NULLPTR; } + +#ifndef Q_MOC_RUN +# define Q_DECLARE_INTERFACE(IFace, IId) \ + template <> inline const char *qobject_interface_iid() \ + { return IId; } \ + template <> inline IFace *qobject_cast(QObject *object) \ + { return reinterpret_cast((object ? object->qt_metacast(IId) : Q_NULLPTR)); } \ + template <> inline IFace *qobject_cast(const QObject *object) \ + { return reinterpret_cast((object ? const_cast(object)->qt_metacast(IId) : Q_NULLPTR)); } +#endif // Q_MOC_RUN + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QObject *); +#endif + +class QSignalBlocker +{ +public: + inline explicit QSignalBlocker(QObject *o) Q_DECL_NOTHROW; + inline explicit QSignalBlocker(QObject &o) Q_DECL_NOTHROW; + inline ~QSignalBlocker(); + +#ifdef Q_COMPILER_RVALUE_REFS + inline QSignalBlocker(QSignalBlocker &&other) Q_DECL_NOTHROW; + inline QSignalBlocker &operator=(QSignalBlocker &&other) Q_DECL_NOTHROW; +#endif + + inline void reblock() Q_DECL_NOTHROW; + inline void unblock() Q_DECL_NOTHROW; +private: + Q_DISABLE_COPY(QSignalBlocker) + QObject * m_o; + bool m_blocked; + bool m_inhibited; +}; + +QSignalBlocker::QSignalBlocker(QObject *o) Q_DECL_NOTHROW + : m_o(o), + m_blocked(o && o->blockSignals(true)), + m_inhibited(false) +{} + +QSignalBlocker::QSignalBlocker(QObject &o) Q_DECL_NOTHROW + : m_o(&o), + m_blocked(o.blockSignals(true)), + m_inhibited(false) +{} + +#ifdef Q_COMPILER_RVALUE_REFS +QSignalBlocker::QSignalBlocker(QSignalBlocker &&other) Q_DECL_NOTHROW + : m_o(other.m_o), + m_blocked(other.m_blocked), + m_inhibited(other.m_inhibited) +{ + other.m_o = Q_NULLPTR; +} + +QSignalBlocker &QSignalBlocker::operator=(QSignalBlocker &&other) Q_DECL_NOTHROW +{ + if (this != &other) { + // if both *this and other block the same object's signals: + // unblock *this iff our dtor would unblock, but other's wouldn't + if (m_o != other.m_o || (!m_inhibited && other.m_inhibited)) + unblock(); + m_o = other.m_o; + m_blocked = other.m_blocked; + m_inhibited = other.m_inhibited; + // disable other: + other.m_o = Q_NULLPTR; + } + return *this; +} +#endif + +QSignalBlocker::~QSignalBlocker() +{ + if (m_o && !m_inhibited) + m_o->blockSignals(m_blocked); +} + +void QSignalBlocker::reblock() Q_DECL_NOTHROW +{ + if (m_o) m_o->blockSignals(true); + m_inhibited = false; +} + +void QSignalBlocker::unblock() Q_DECL_NOTHROW +{ + if (m_o) m_o->blockSignals(m_blocked); + m_inhibited = true; +} + +namespace QtPrivate { + inline QObject & deref_for_methodcall(QObject &o) { return o; } + inline QObject & deref_for_methodcall(QObject *o) { return *o; } +} +#define Q_SET_OBJECT_NAME(obj) QT_PREPEND_NAMESPACE(QtPrivate)::deref_for_methodcall(obj).setObjectName(QLatin1String(#obj)) + +QT_END_NAMESPACE + +#endif + +#endif // QOBJECT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qobject_impl.h b/qrenderdoc/3rdparty/qt/include/QtCore/qobject_impl.h new file mode 100644 index 000000000..d7ae63a98 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qobject_impl.h @@ -0,0 +1,183 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_QDOC + +#ifndef QOBJECT_H +#error Do not include qobject_impl.h directly +#endif + +#if 0 +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + +QT_BEGIN_NAMESPACE + + +namespace QtPrivate { + /* + Logic to statically generate the array of qMetaTypeId + ConnectionTypes::Arguments>::types() returns an array + of int that is suitable for the types arguments of the connection functions. + + The array only exist of all the types are declared as a metatype + (detected using the TypesAreDeclaredMetaType helper struct) + If one of the type is not declared, the function return 0 and the signal + cannot be used in queued connection. + */ + template struct TypesAreDeclaredMetaType { enum { Value = false }; }; + template <> struct TypesAreDeclaredMetaType> { enum { Value = true }; }; + template struct TypesAreDeclaredMetaType > + { enum { Value = QMetaTypeId2::Defined && TypesAreDeclaredMetaType>::Value }; }; + + template ::Value > struct ConnectionTypes + { static const int *types() { return Q_NULLPTR; } }; + template <> struct ConnectionTypes, true> + { static const int *types() { return Q_NULLPTR; } }; + template struct ConnectionTypes, true> + { static const int *types() { static const int t[sizeof...(Args) + 1] = { (QtPrivate::QMetaTypeIdHelper::qt_metatype_id())..., 0 }; return t; } }; + + // internal base class (interface) containing functions required to call a slot managed by a pointer to function. + class QSlotObjectBase { + QAtomicInt m_ref; + // don't use virtual functions here; we don't want the + // compiler to create tons of per-polymorphic-class stuff that + // we'll never need. We just use one function pointer. + typedef void (*ImplFn)(int which, QSlotObjectBase* this_, QObject *receiver, void **args, bool *ret); + const ImplFn m_impl; + protected: + enum Operation { + Destroy, + Call, + Compare, + + NumOperations + }; + public: + explicit QSlotObjectBase(ImplFn fn) : m_ref(1), m_impl(fn) {} + + inline int ref() Q_DECL_NOTHROW { return m_ref.ref(); } + inline void destroyIfLastRef() Q_DECL_NOTHROW + { if (!m_ref.deref()) m_impl(Destroy, this, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR); } + + inline bool compare(void **a) { bool ret = false; m_impl(Compare, this, Q_NULLPTR, a, &ret); return ret; } + inline void call(QObject *r, void **a) { m_impl(Call, this, r, a, Q_NULLPTR); } + protected: + ~QSlotObjectBase() {} + private: + Q_DISABLE_COPY(QSlotObjectBase) + }; + // implementation of QSlotObjectBase for which the slot is a pointer to member function of a QObject + // Args and R are the List of arguments and the returntype of the signal to which the slot is connected. + template class QSlotObject : public QSlotObjectBase + { + typedef QtPrivate::FunctionPointer FuncType; + Func function; + static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) + { + switch (which) { + case Destroy: + delete static_cast(this_); + break; + case Call: + FuncType::template call(static_cast(this_)->function, static_cast(r), a); + break; + case Compare: + *ret = *reinterpret_cast(a) == static_cast(this_)->function; + break; + case NumOperations: ; + } + } + public: + explicit QSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {} + }; + // implementation of QSlotObjectBase for which the slot is a static function + // Args and R are the List of arguments and the returntype of the signal to which the slot is connected. + template class QStaticSlotObject : public QSlotObjectBase + { + typedef QtPrivate::FunctionPointer FuncType; + Func function; + static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) + { + switch (which) { + case Destroy: + delete static_cast(this_); + break; + case Call: + FuncType::template call(static_cast(this_)->function, r, a); + break; + case Compare: // not implemented + case NumOperations: + Q_UNUSED(ret); + } + } + public: + explicit QStaticSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {} + }; + // implementation of QSlotObjectBase for which the slot is a functor (or lambda) + // N is the number of arguments + // Args and R are the List of arguments and the returntype of the signal to which the slot is connected. + template class QFunctorSlotObject : public QSlotObjectBase + { + typedef QtPrivate::Functor FuncType; + Func function; + static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) + { + switch (which) { + case Destroy: + delete static_cast(this_); + break; + case Call: + FuncType::template call(static_cast(this_)->function, r, a); + break; + case Compare: // not implemented + case NumOperations: + Q_UNUSED(ret); + } + } + public: + explicit QFunctorSlotObject(const Func &f) : QSlotObjectBase(&impl), function(f) {} + }; +} + + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qobjectcleanuphandler.h b/qrenderdoc/3rdparty/qt/include/QtCore/qobjectcleanuphandler.h new file mode 100644 index 000000000..26c0dc2f0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qobjectcleanuphandler.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOBJECTCLEANUPHANDLER_H +#define QOBJECTCLEANUPHANDLER_H + +#include + +QT_BEGIN_NAMESPACE + + +class Q_CORE_EXPORT QObjectCleanupHandler : public QObject +{ + Q_OBJECT + +public: + QObjectCleanupHandler(); + ~QObjectCleanupHandler(); + + QObject* add(QObject* object); + void remove(QObject *object); + bool isEmpty() const; + void clear(); + +private: + // ### move into d pointer + QObjectList cleanupObjects; + +private Q_SLOTS: + void objectDestroyed(QObject *); +}; + +QT_END_NAMESPACE + +#endif // QOBJECTCLEANUPHANDLER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qobjectdefs.h b/qrenderdoc/3rdparty/qt/include/QtCore/qobjectdefs.h new file mode 100644 index 000000000..cec822ad1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qobjectdefs.h @@ -0,0 +1,552 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOBJECTDEFS_H +#define QOBJECTDEFS_H + +#if defined(__OBJC__) && !defined(__cplusplus) +# warning "File built in Objective-C mode (.m), but using Qt requires Objective-C++ (.mm)" +#endif + +#include + +#include + +QT_BEGIN_NAMESPACE + + +class QByteArray; +struct QArrayData; +typedef QArrayData QByteArrayData; + +class QString; + +#ifndef Q_MOC_OUTPUT_REVISION +#define Q_MOC_OUTPUT_REVISION 67 +#endif + +// The following macros can be defined by tools that understand Qt +// to have the information from the macro. +#ifndef QT_ANNOTATE_CLASS +# ifndef Q_COMPILER_VARIADIC_MACROS +# define QT_ANNOTATE_CLASS(type, x) +# else +# define QT_ANNOTATE_CLASS(type, ...) +# endif +#endif +#ifndef QT_ANNOTATE_CLASS2 +# define QT_ANNOTATE_CLASS2(type, a1, a2) +#endif +#ifndef QT_ANNOTATE_FUNCTION +# define QT_ANNOTATE_FUNCTION(x) +#endif +#ifndef QT_ANNOTATE_ACCESS_SPECIFIER +# define QT_ANNOTATE_ACCESS_SPECIFIER(x) +#endif + +// The following macros are our "extensions" to C++ +// They are used, strictly speaking, only by the moc. + +#ifndef Q_MOC_RUN +#ifndef QT_NO_META_MACROS +# if defined(QT_NO_KEYWORDS) +# define QT_NO_EMIT +# else +# ifndef QT_NO_SIGNALS_SLOTS_KEYWORDS +# define slots Q_SLOTS +# define signals Q_SIGNALS +# endif +# endif +# define Q_SLOTS QT_ANNOTATE_ACCESS_SPECIFIER(qt_slot) +# define Q_SIGNALS public QT_ANNOTATE_ACCESS_SPECIFIER(qt_signal) +# define Q_PRIVATE_SLOT(d, signature) QT_ANNOTATE_CLASS2(qt_private_slot, d, signature) +# define Q_EMIT +#ifndef QT_NO_EMIT +# define emit +#endif +#ifndef Q_CLASSINFO +# define Q_CLASSINFO(name, value) +#endif +#define Q_PLUGIN_METADATA(x) QT_ANNOTATE_CLASS(qt_plugin_metadata, x) +#define Q_INTERFACES(x) QT_ANNOTATE_CLASS(qt_interfaces, x) +#ifdef Q_COMPILER_VARIADIC_MACROS +# define Q_PROPERTY(...) QT_ANNOTATE_CLASS(qt_property, __VA_ARGS__) +#else +# define Q_PROPERTY(text) QT_ANNOTATE_CLASS(qt_property, text) +#endif +#define Q_PRIVATE_PROPERTY(d, text) QT_ANNOTATE_CLASS2(qt_private_property, d, text) +#ifndef Q_REVISION +# define Q_REVISION(v) +#endif +#define Q_OVERRIDE(text) QT_ANNOTATE_CLASS(qt_override, text) +#define QDOC_PROPERTY(text) QT_ANNOTATE_CLASS(qt_qdoc_property, text) +#define Q_ENUMS(x) QT_ANNOTATE_CLASS(qt_enums, x) +#define Q_FLAGS(x) QT_ANNOTATE_CLASS(qt_enums, x) +#define Q_ENUM_IMPL(ENUM) \ + friend Q_DECL_CONSTEXPR const QMetaObject *qt_getEnumMetaObject(ENUM) Q_DECL_NOEXCEPT { return &staticMetaObject; } \ + friend Q_DECL_CONSTEXPR const char *qt_getEnumName(ENUM) Q_DECL_NOEXCEPT { return #ENUM; } +#define Q_ENUM(x) Q_ENUMS(x) Q_ENUM_IMPL(x) +#define Q_FLAG(x) Q_FLAGS(x) Q_ENUM_IMPL(x) +#define Q_ENUM_NS_IMPL(ENUM) \ + inline Q_DECL_CONSTEXPR const QMetaObject *qt_getEnumMetaObject(ENUM) Q_DECL_NOEXCEPT { return &staticMetaObject; } \ + inline Q_DECL_CONSTEXPR const char *qt_getEnumName(ENUM) Q_DECL_NOEXCEPT { return #ENUM; } +#define Q_ENUM_NS(x) Q_ENUMS(x) Q_ENUM_NS_IMPL(x) +#define Q_FLAG_NS(x) Q_FLAGS(x) Q_ENUM_NS_IMPL(x) +#define Q_SCRIPTABLE QT_ANNOTATE_FUNCTION(qt_scriptable) +#define Q_INVOKABLE QT_ANNOTATE_FUNCTION(qt_invokable) +#define Q_SIGNAL QT_ANNOTATE_FUNCTION(qt_signal) +#define Q_SLOT QT_ANNOTATE_FUNCTION(qt_slot) +#endif // QT_NO_META_MACROS + +#ifndef QT_NO_TRANSLATION +// full set of tr functions +# define QT_TR_FUNCTIONS \ + static inline QString tr(const char *s, const char *c = Q_NULLPTR, int n = -1) \ + { return staticMetaObject.tr(s, c, n); } \ + QT_DEPRECATED static inline QString trUtf8(const char *s, const char *c = Q_NULLPTR, int n = -1) \ + { return staticMetaObject.tr(s, c, n); } +#else +// inherit the ones from QObject +# define QT_TR_FUNCTIONS +#endif + +// ### Qt6: remove +#define Q_OBJECT_CHECK /* empty, unused since Qt 5.2 */ + +#if defined(Q_CC_INTEL) +// Cannot redefine the visibility of a method in an exported class +# define Q_DECL_HIDDEN_STATIC_METACALL +#else +# define Q_DECL_HIDDEN_STATIC_METACALL Q_DECL_HIDDEN +#endif + +#if defined(Q_CC_CLANG) && Q_CC_CLANG >= 306 +# define Q_OBJECT_NO_OVERRIDE_WARNING QT_WARNING_DISABLE_CLANG("-Winconsistent-missing-override") +#elif defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 501 +# define Q_OBJECT_NO_OVERRIDE_WARNING QT_WARNING_DISABLE_GCC("-Wsuggest-override") +#else +# define Q_OBJECT_NO_OVERRIDE_WARNING +#endif + +#if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && Q_CC_GNU >= 600 +# define Q_OBJECT_NO_ATTRIBUTES_WARNING QT_WARNING_DISABLE_GCC("-Wattributes") +#else +# define Q_OBJECT_NO_ATTRIBUTES_WARNING +#endif + +/* qmake ignore Q_OBJECT */ +#define Q_OBJECT \ +public: \ + QT_WARNING_PUSH \ + Q_OBJECT_NO_OVERRIDE_WARNING \ + static const QMetaObject staticMetaObject; \ + virtual const QMetaObject *metaObject() const; \ + virtual void *qt_metacast(const char *); \ + virtual int qt_metacall(QMetaObject::Call, int, void **); \ + QT_TR_FUNCTIONS \ +private: \ + Q_OBJECT_NO_ATTRIBUTES_WARNING \ + Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); \ + QT_WARNING_POP \ + struct QPrivateSignal {}; \ + QT_ANNOTATE_CLASS(qt_qobject, "") + +/* qmake ignore Q_OBJECT */ +#define Q_OBJECT_FAKE Q_OBJECT QT_ANNOTATE_CLASS(qt_fake, "") + +#ifndef QT_NO_META_MACROS +/* qmake ignore Q_GADGET */ +#define Q_GADGET \ +public: \ + static const QMetaObject staticMetaObject; \ + void qt_check_for_QGADGET_macro(); \ + typedef void QtGadgetHelper; \ +private: \ + QT_WARNING_PUSH \ + Q_OBJECT_NO_ATTRIBUTES_WARNING \ + Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); \ + QT_WARNING_POP \ + QT_ANNOTATE_CLASS(qt_qgadget, "") \ + /*end*/ + +/* qmake ignore Q_NAMESPACE */ +#define Q_NAMESPACE \ + extern const QMetaObject staticMetaObject; \ + QT_ANNOTATE_CLASS(qt_qnamespace, "") \ + /*end*/ + +#endif // QT_NO_META_MACROS + +#else // Q_MOC_RUN +#define slots slots +#define signals signals +#define Q_SLOTS Q_SLOTS +#define Q_SIGNALS Q_SIGNALS +#define Q_CLASSINFO(name, value) Q_CLASSINFO(name, value) +#define Q_INTERFACES(x) Q_INTERFACES(x) +#define Q_PROPERTY(text) Q_PROPERTY(text) +#define Q_PRIVATE_PROPERTY(d, text) Q_PRIVATE_PROPERTY(d, text) +#define Q_REVISION(v) Q_REVISION(v) +#define Q_OVERRIDE(text) Q_OVERRIDE(text) +#define Q_ENUMS(x) Q_ENUMS(x) +#define Q_FLAGS(x) Q_FLAGS(x) +#define Q_ENUM(x) Q_ENUM(x) +#define Q_FLAGS(x) Q_FLAGS(x) + /* qmake ignore Q_OBJECT */ +#define Q_OBJECT Q_OBJECT + /* qmake ignore Q_OBJECT */ +#define Q_OBJECT_FAKE Q_OBJECT_FAKE + /* qmake ignore Q_GADGET */ +#define Q_GADGET Q_GADGET +#define Q_SCRIPTABLE Q_SCRIPTABLE +#define Q_INVOKABLE Q_INVOKABLE +#define Q_SIGNAL Q_SIGNAL +#define Q_SLOT Q_SLOT +#endif //Q_MOC_RUN + +#ifdef Q_CLANG_QDOC +#undef Q_GADGET +#define Q_GADGET +#endif + +#ifndef QT_NO_META_MACROS +// macro for onaming members +#ifdef METHOD +#undef METHOD +#endif +#ifdef SLOT +#undef SLOT +#endif +#ifdef SIGNAL +#undef SIGNAL +#endif +#endif // QT_NO_META_MACROS + +Q_CORE_EXPORT const char *qFlagLocation(const char *method); + +#ifndef QT_NO_META_MACROS +#ifndef QT_NO_DEBUG +# define QLOCATION "\0" __FILE__ ":" QT_STRINGIFY(__LINE__) +# ifndef QT_NO_KEYWORDS +# define METHOD(a) qFlagLocation("0"#a QLOCATION) +# endif +# define SLOT(a) qFlagLocation("1"#a QLOCATION) +# define SIGNAL(a) qFlagLocation("2"#a QLOCATION) +#else +# ifndef QT_NO_KEYWORDS +# define METHOD(a) "0"#a +# endif +# define SLOT(a) "1"#a +# define SIGNAL(a) "2"#a +#endif + +#define QMETHOD_CODE 0 // member type codes +#define QSLOT_CODE 1 +#define QSIGNAL_CODE 2 +#endif // QT_NO_META_MACROS + +#define Q_ARG(type, data) QArgument(#type, data) +#define Q_RETURN_ARG(type, data) QReturnArgument(#type, data) + +class QObject; +class QMetaMethod; +class QMetaEnum; +class QMetaProperty; +class QMetaClassInfo; + + +class Q_CORE_EXPORT QGenericArgument +{ +public: + inline QGenericArgument(const char *aName = Q_NULLPTR, const void *aData = Q_NULLPTR) + : _data(aData), _name(aName) {} + inline void *data() const { return const_cast(_data); } + inline const char *name() const { return _name; } + +private: + const void *_data; + const char *_name; +}; + +class Q_CORE_EXPORT QGenericReturnArgument: public QGenericArgument +{ +public: + inline QGenericReturnArgument(const char *aName = Q_NULLPTR, void *aData = Q_NULLPTR) + : QGenericArgument(aName, aData) + {} +}; + +template +class QArgument: public QGenericArgument +{ +public: + inline QArgument(const char *aName, const T &aData) + : QGenericArgument(aName, static_cast(&aData)) + {} +}; +template +class QArgument: public QGenericArgument +{ +public: + inline QArgument(const char *aName, T &aData) + : QGenericArgument(aName, static_cast(&aData)) + {} +}; + + +template +class QReturnArgument: public QGenericReturnArgument +{ +public: + inline QReturnArgument(const char *aName, T &aData) + : QGenericReturnArgument(aName, static_cast(&aData)) + {} +}; + +struct Q_CORE_EXPORT QMetaObject +{ + class Connection; + const char *className() const; + const QMetaObject *superClass() const; + + bool inherits(const QMetaObject *metaObject) const Q_DECL_NOEXCEPT; + QObject *cast(QObject *obj) const; + const QObject *cast(const QObject *obj) const; + +#ifndef QT_NO_TRANSLATION + QString tr(const char *s, const char *c, int n = -1) const; +#endif // QT_NO_TRANSLATION + + int methodOffset() const; + int enumeratorOffset() const; + int propertyOffset() const; + int classInfoOffset() const; + + int constructorCount() const; + int methodCount() const; + int enumeratorCount() const; + int propertyCount() const; + int classInfoCount() const; + + int indexOfConstructor(const char *constructor) const; + int indexOfMethod(const char *method) const; + int indexOfSignal(const char *signal) const; + int indexOfSlot(const char *slot) const; + int indexOfEnumerator(const char *name) const; + int indexOfProperty(const char *name) const; + int indexOfClassInfo(const char *name) const; + + QMetaMethod constructor(int index) const; + QMetaMethod method(int index) const; + QMetaEnum enumerator(int index) const; + QMetaProperty property(int index) const; + QMetaClassInfo classInfo(int index) const; + QMetaProperty userProperty() const; + + static bool checkConnectArgs(const char *signal, const char *method); + static bool checkConnectArgs(const QMetaMethod &signal, + const QMetaMethod &method); + static QByteArray normalizedSignature(const char *method); + static QByteArray normalizedType(const char *type); + + // internal index-based connect + static Connection connect(const QObject *sender, int signal_index, + const QObject *receiver, int method_index, + int type = 0, int *types = Q_NULLPTR); + // internal index-based disconnect + static bool disconnect(const QObject *sender, int signal_index, + const QObject *receiver, int method_index); + static bool disconnectOne(const QObject *sender, int signal_index, + const QObject *receiver, int method_index); + // internal slot-name based connect + static void connectSlotsByName(QObject *o); + + // internal index-based signal activation + static void activate(QObject *sender, int signal_index, void **argv); + static void activate(QObject *sender, const QMetaObject *, int local_signal_index, void **argv); + static void activate(QObject *sender, int signal_offset, int local_signal_index, void **argv); + + static bool invokeMethod(QObject *obj, const char *member, + Qt::ConnectionType, + QGenericReturnArgument ret, + QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()); + + static inline bool invokeMethod(QObject *obj, const char *member, + QGenericReturnArgument ret, + QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, Qt::AutoConnection, ret, val0, val1, val2, val3, + val4, val5, val6, val7, val8, val9); + } + + static inline bool invokeMethod(QObject *obj, const char *member, + Qt::ConnectionType type, + QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, type, QGenericReturnArgument(), val0, val1, val2, + val3, val4, val5, val6, val7, val8, val9); + } + + static inline bool invokeMethod(QObject *obj, const char *member, + QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, Qt::AutoConnection, QGenericReturnArgument(), val0, + val1, val2, val3, val4, val5, val6, val7, val8, val9); + } + + QObject *newInstance(QGenericArgument val0 = QGenericArgument(Q_NULLPTR), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) const; + + enum Call { + InvokeMetaMethod, + ReadProperty, + WriteProperty, + ResetProperty, + QueryPropertyDesignable, + QueryPropertyScriptable, + QueryPropertyStored, + QueryPropertyEditable, + QueryPropertyUser, + CreateInstance, + IndexOfMethod, + RegisterPropertyMetaType, + RegisterMethodArgumentMetaType + }; + + int static_metacall(Call, int, void **) const; + static int metacall(QObject *, Call, int, void **); + + struct { // private data + const QMetaObject *superdata; + const QByteArrayData *stringdata; + const uint *data; + typedef void (*StaticMetacallFunction)(QObject *, QMetaObject::Call, int, void **); + StaticMetacallFunction static_metacall; + const QMetaObject * const *relatedMetaObjects; + void *extradata; //reserved for future use + } d; +}; + +class Q_CORE_EXPORT QMetaObject::Connection { + void *d_ptr; //QObjectPrivate::Connection* + explicit Connection(void *data) : d_ptr(data) { } + friend class QObject; + friend class QObjectPrivate; + friend struct QMetaObject; + bool isConnected_helper() const; +public: + ~Connection(); + Connection(); + Connection(const Connection &other); + Connection &operator=(const Connection &other); +#ifdef Q_QDOC + operator bool() const; +#else + typedef void *Connection::*RestrictedBool; + operator RestrictedBool() const { return d_ptr && isConnected_helper() ? &Connection::d_ptr : Q_NULLPTR; } +#endif + +#ifdef Q_COMPILER_RVALUE_REFS + inline Connection(Connection &&o) : d_ptr(o.d_ptr) { o.d_ptr = Q_NULLPTR; } + inline Connection &operator=(Connection &&other) + { qSwap(d_ptr, other.d_ptr); return *this; } +#endif +}; + +inline const QMetaObject *QMetaObject::superClass() const +{ return d.superdata; } + +namespace QtPrivate { + /* Trait that tells is a the Object has a Q_OBJECT macro */ + template struct HasQ_OBJECT_Macro { + template + static char test(int (T::*)(QMetaObject::Call, int, void **)); + static int test(int (Object::*)(QMetaObject::Call, int, void **)); + enum { Value = sizeof(test(&Object::qt_metacall)) == sizeof(int) }; + }; +} + +QT_END_NAMESPACE + +#endif // QOBJECTDEFS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qobjectdefs_impl.h b/qrenderdoc/3rdparty/qt/include/QtCore/qobjectdefs_impl.h new file mode 100644 index 000000000..29ab77b26 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qobjectdefs_impl.h @@ -0,0 +1,357 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2013 Olivier Goffart +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_QDOC + +#ifndef QOBJECTDEFS_H +#error Do not include qobjectdefs_impl.h directly +#include +#endif + +#if 0 +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + +QT_BEGIN_NAMESPACE + + +namespace QtPrivate { + template struct RemoveRef { typedef T Type; }; + template struct RemoveRef { typedef T Type; }; + template struct RemoveConstRef { typedef T Type; }; + template struct RemoveConstRef { typedef T Type; }; + + /* + The following List classes are used to help to handle the list of arguments. + It follow the same principles as the lisp lists. + List_Left take a list and a number as a parameter and returns (via the Value typedef, + the list composed of the first N element of the list + */ + // With variadic template, lists are represented using a variadic template argument instead of the lisp way + template struct List {}; + template struct List { typedef Head Car; typedef List Cdr; }; + template struct List_Append; + template struct List_Append, List> { typedef List Value; }; + template struct List_Left { + typedef typename List_Append,typename List_Left::Value>::Value Value; + }; + template struct List_Left { typedef List<> Value; }; + // List_Select returns (via typedef Value) the Nth element of the list L + template struct List_Select { typedef typename List_Select::Value Value; }; + template struct List_Select { typedef typename L::Car Value; }; + + /* + trick to set the return value of a slot that works even if the signal or the slot returns void + to be used like function(), ApplyReturnValue(&return_value) + if function() returns a value, the operator,(T, ApplyReturnValue) is called, but if it + returns void, the builtin one is used without an error. + */ + template + struct ApplyReturnValue { + void *data; + explicit ApplyReturnValue(void *data_) : data(data_) {} + }; + template + void operator,(T &&value, const ApplyReturnValue &container) { + if (container.data) + *reinterpret_cast(container.data) = std::forward(value); + } + template + void operator,(T, const ApplyReturnValue &) {} + + + /* + The FunctionPointer struct is a type trait for function pointer. + - ArgumentCount is the number of argument, or -1 if it is unknown + - the Object typedef is the Object of a pointer to member function + - the Arguments typedef is the list of argument (in a QtPrivate::List) + - the Function typedef is an alias to the template parameter Func + - the call(f,o,args) method is used to call that slot + Args is the list of argument of the signal + R is the return type of the signal + f is the function pointer + o is the receiver object + and args is the array of pointer to arguments, as used in qt_metacall + + The Functor struct is the helper to call a functor of N argument. + its call function is the same as the FunctionPointer::call function. + */ + template struct IndexesList {}; + template struct IndexesAppend; + template struct IndexesAppend, Right> + { typedef IndexesList Value; }; + template struct Indexes + { typedef typename IndexesAppend::Value, N - 1>::Value Value; }; + template <> struct Indexes<0> { typedef IndexesList<> Value; }; + template struct FunctionPointer { enum {ArgumentCount = -1, IsPointerToMemberFunction = false}; }; + + template struct FunctorCall; + template + struct FunctorCall, List, R, Function> { + static void call(Function &f, void **arg) { + f((*reinterpret_cast::Type *>(arg[II+1]))...), ApplyReturnValue(arg[0]); + } + }; + template + struct FunctorCall, List, R, SlotRet (Obj::*)(SlotArgs...)> { + static void call(SlotRet (Obj::*f)(SlotArgs...), Obj *o, void **arg) { + (o->*f)((*reinterpret_cast::Type *>(arg[II+1]))...), ApplyReturnValue(arg[0]); + } + }; + template + struct FunctorCall, List, R, SlotRet (Obj::*)(SlotArgs...) const> { + static void call(SlotRet (Obj::*f)(SlotArgs...) const, Obj *o, void **arg) { + (o->*f)((*reinterpret_cast::Type *>(arg[II+1]))...), ApplyReturnValue(arg[0]); + } + }; +#if defined(__cpp_noexcept_function_type) && __cpp_noexcept_function_type >= 201510 + template + struct FunctorCall, List, R, SlotRet (Obj::*)(SlotArgs...) noexcept> { + static void call(SlotRet (Obj::*f)(SlotArgs...) noexcept, Obj *o, void **arg) { + (o->*f)((*reinterpret_cast::Type *>(arg[II+1]))...), ApplyReturnValue(arg[0]); + } + }; + template + struct FunctorCall, List, R, SlotRet (Obj::*)(SlotArgs...) const noexcept> { + static void call(SlotRet (Obj::*f)(SlotArgs...) const noexcept, Obj *o, void **arg) { + (o->*f)((*reinterpret_cast::Type *>(arg[II+1]))...), ApplyReturnValue(arg[0]); + } + }; +#endif + + template struct FunctionPointer + { + typedef Obj Object; + typedef List Arguments; + typedef Ret ReturnType; + typedef Ret (Obj::*Function) (Args...); + enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = true}; + template + static void call(Function f, Obj *o, void **arg) { + FunctorCall::Value, SignalArgs, R, Function>::call(f, o, arg); + } + }; + template struct FunctionPointer + { + typedef Obj Object; + typedef List Arguments; + typedef Ret ReturnType; + typedef Ret (Obj::*Function) (Args...) const; + enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = true}; + template + static void call(Function f, Obj *o, void **arg) { + FunctorCall::Value, SignalArgs, R, Function>::call(f, o, arg); + } + }; + + template struct FunctionPointer + { + typedef List Arguments; + typedef Ret ReturnType; + typedef Ret (*Function) (Args...); + enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = false}; + template + static void call(Function f, void *, void **arg) { + FunctorCall::Value, SignalArgs, R, Function>::call(f, arg); + } + }; + +#if defined(__cpp_noexcept_function_type) && __cpp_noexcept_function_type >= 201510 + template struct FunctionPointer + { + typedef Obj Object; + typedef List Arguments; + typedef Ret ReturnType; + typedef Ret (Obj::*Function) (Args...) noexcept; + enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = true}; + template + static void call(Function f, Obj *o, void **arg) { + FunctorCall::Value, SignalArgs, R, Function>::call(f, o, arg); + } + }; + template struct FunctionPointer + { + typedef Obj Object; + typedef List Arguments; + typedef Ret ReturnType; + typedef Ret (Obj::*Function) (Args...) const noexcept; + enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = true}; + template + static void call(Function f, Obj *o, void **arg) { + FunctorCall::Value, SignalArgs, R, Function>::call(f, o, arg); + } + }; + + template struct FunctionPointer + { + typedef List Arguments; + typedef Ret ReturnType; + typedef Ret (*Function) (Args...) noexcept; + enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = false}; + template + static void call(Function f, void *, void **arg) { + FunctorCall::Value, SignalArgs, R, Function>::call(f, arg); + } + }; +#endif + + template struct Functor + { + template + static void call(Function &f, void *, void **arg) { + FunctorCall::Value, SignalArgs, R, Function>::call(f, arg); + } + }; + + /* + Logic that checks if the underlying type of an enum is signed or not. + Needs an external, explicit check that E is indeed an enum. Works + around the fact that it's undefined behavior to instantiate + std::underlying_type on non-enums (cf. §20.13.7.6 [meta.trans.other]). + */ + template + struct IsEnumUnderlyingTypeSigned : std::false_type + { + }; + + template + struct IsEnumUnderlyingTypeSigned::value>::type> + : std::integral_constant::type>::value> + { + }; + + /* + Logic that checks if the argument of the slot does not narrow the + argument of the signal when used in list initialization. Cf. §8.5.4.7 + [dcl.init.list] for the definition of narrowing. + For incomplete From/To types, there's no narrowing. + */ + template + struct AreArgumentsNarrowedBase : std::false_type + { + }; + + template + struct AreArgumentsNarrowedBase::type> + : std::integral_constant::value && std::is_integral::value) || + (std::is_floating_point::value && std::is_floating_point::value && sizeof(From) > sizeof(To)) || + ((std::is_integral::value || std::is_enum::value) && std::is_floating_point::value) || + (std::is_integral::value && std::is_integral::value + && (sizeof(From) > sizeof(To) + || (std::is_signed::value ? !std::is_signed::value + : (std::is_signed::value && sizeof(From) == sizeof(To))))) || + (std::is_enum::value && std::is_integral::value + && (sizeof(From) > sizeof(To) + || (IsEnumUnderlyingTypeSigned::value ? !std::is_signed::value + : (std::is_signed::value && sizeof(From) == sizeof(To))))) + > + { + }; + + /* + Logic that check if the arguments of the slot matches the argument of the signal. + To be used like this: + Q_STATIC_ASSERT(CheckCompatibleArguments::Arguments, FunctionPointer::Arguments>::value) + */ + template struct AreArgumentsCompatible { + static int test(const typename RemoveRef::Type&); + static char test(...); + static const typename RemoveRef::Type &dummy(); + enum { value = sizeof(test(dummy())) == sizeof(int) }; +#ifdef QT_NO_NARROWING_CONVERSIONS_IN_CONNECT + using AreArgumentsNarrowed = AreArgumentsNarrowedBase::Type, typename RemoveRef::Type>; + Q_STATIC_ASSERT_X(!AreArgumentsNarrowed::value, "Signal and slot arguments are not compatible (narrowing)"); +#endif + }; + template struct AreArgumentsCompatible { enum { value = false }; }; + template struct AreArgumentsCompatible { enum { value = true }; }; + // void as a return value + template struct AreArgumentsCompatible { enum { value = true }; }; + template struct AreArgumentsCompatible { enum { value = true }; }; + template<> struct AreArgumentsCompatible { enum { value = true }; }; + + template struct CheckCompatibleArguments { enum { value = false }; }; + template <> struct CheckCompatibleArguments, List<>> { enum { value = true }; }; + template struct CheckCompatibleArguments> { enum { value = true }; }; + template + struct CheckCompatibleArguments, List> + { + enum { value = AreArgumentsCompatible::Type, typename RemoveConstRef::Type>::value + && CheckCompatibleArguments, List>::value }; + }; + + /* + Find the maximum number of arguments a functor object can take and be still compatible with + the arguments from the signal. + Value is the number of arguments, or -1 if nothing matches. + */ + template struct ComputeFunctorArgumentCount; + + template struct ComputeFunctorArgumentCountHelper + { enum { Value = -1 }; }; + template + struct ComputeFunctorArgumentCountHelper, false> + : ComputeFunctorArgumentCount, sizeof...(ArgList)>::Value> {}; + + template struct ComputeFunctorArgumentCount> + { + template static D dummy(); + template static auto test(F f) -> decltype(((f.operator()((dummy())...)), int())); + static char test(...); + enum { + Ok = sizeof(test(dummy())) == sizeof(int), + Value = Ok ? int(sizeof...(ArgList)) : int(ComputeFunctorArgumentCountHelper, Ok>::Value) + }; + }; + + /* get the return type of a functor, given the signal argument list */ + template struct FunctorReturnType; + template struct FunctorReturnType> { + template static D dummy(); + typedef decltype(dummy().operator()((dummy())...)) Value; + }; +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qoperatingsystemversion.h b/qrenderdoc/3rdparty/qt/include/QtCore/qoperatingsystemversion.h new file mode 100644 index 000000000..1f3ff8e1a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qoperatingsystemversion.h @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QOPERATINGSYSTEMVERSION_H +#define QOPERATINGSYSTEMVERSION_H + +QT_BEGIN_NAMESPACE + +class QString; +class QVersionNumber; + +class Q_CORE_EXPORT QOperatingSystemVersion +{ +public: + enum OSType { + Unknown = 0, + Windows, + MacOS, + IOS, + TvOS, + WatchOS, + Android + }; + + static const QOperatingSystemVersion Windows7; + static const QOperatingSystemVersion Windows8; + static const QOperatingSystemVersion Windows8_1; + static const QOperatingSystemVersion Windows10; + + static const QOperatingSystemVersion OSXMavericks; + static const QOperatingSystemVersion OSXYosemite; + static const QOperatingSystemVersion OSXElCapitan; + static const QOperatingSystemVersion MacOSSierra; + static const QOperatingSystemVersion MacOSHighSierra; + + static const QOperatingSystemVersion AndroidJellyBean; + static const QOperatingSystemVersion AndroidJellyBean_MR1; + static const QOperatingSystemVersion AndroidJellyBean_MR2; + static const QOperatingSystemVersion AndroidKitKat; + static const QOperatingSystemVersion AndroidLollipop; + static const QOperatingSystemVersion AndroidLollipop_MR1; + static const QOperatingSystemVersion AndroidMarshmallow; + static const QOperatingSystemVersion AndroidNougat; + static const QOperatingSystemVersion AndroidNougat_MR1; + static const QOperatingSystemVersion AndroidOreo; + + Q_DECL_CONSTEXPR QOperatingSystemVersion(OSType osType, + int vmajor, int vminor = -1, int vmicro = -1) + : m_os(osType), + m_major(qMax(-1, vmajor)), + m_minor(vmajor < 0 ? -1 : qMax(-1, vminor)), + m_micro(vmajor < 0 || vminor < 0 ? -1 : qMax(-1, vmicro)) + { } + + static QOperatingSystemVersion current(); + + Q_DECL_CONSTEXPR int majorVersion() const { return m_major; } + Q_DECL_CONSTEXPR int minorVersion() const { return m_minor; } + Q_DECL_CONSTEXPR int microVersion() const { return m_micro; } + + Q_DECL_CONSTEXPR int segmentCount() const + { return m_micro >= 0 ? 3 : m_minor >= 0 ? 2 : m_major >= 0 ? 1 : 0; } + +#ifdef Q_COMPILER_INITIALIZER_LISTS + bool isAnyOfType(std::initializer_list types) const; +#endif + Q_DECL_CONSTEXPR OSType type() const { return m_os; } + QString name() const; + + friend bool operator>(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs) + { return lhs.type() == rhs.type() && QOperatingSystemVersion::compare(lhs, rhs) > 0; } + + friend bool operator>=(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs) + { return lhs.type() == rhs.type() && QOperatingSystemVersion::compare(lhs, rhs) >= 0; } + + friend bool operator<(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs) + { return lhs.type() == rhs.type() && QOperatingSystemVersion::compare(lhs, rhs) < 0; } + + friend bool operator<=(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs) + { return lhs.type() == rhs.type() && QOperatingSystemVersion::compare(lhs, rhs) <= 0; } + +private: + QOperatingSystemVersion() = default; + OSType m_os; + int m_major; + int m_minor; + int m_micro; + + static int compare(const QOperatingSystemVersion &v1, const QOperatingSystemVersion &v2); +}; +Q_DECLARE_TYPEINFO(QOperatingSystemVersion, QT_VERSION < QT_VERSION_CHECK(6, 0, 0) ? Q_RELOCATABLE_TYPE : Q_PRIMITIVE_TYPE); + +QT_END_NAMESPACE + +#endif // QOPERATINGSYSTEMVERSION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qpair.h b/qrenderdoc/3rdparty/qt/include/QtCore/qpair.h new file mode 100644 index 000000000..94977fc82 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qpair.h @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAIR_H +#define QPAIR_H + +#include + +QT_BEGIN_NAMESPACE + + +template +struct QPair +{ + typedef T1 first_type; + typedef T2 second_type; + + Q_DECL_CONSTEXPR QPair() + Q_DECL_NOEXCEPT_EXPR((std::is_nothrow_default_constructible::value && + std::is_nothrow_default_constructible::value)) + : first(), second() {} + Q_DECL_CONSTEXPR QPair(const T1 &t1, const T2 &t2) + Q_DECL_NOEXCEPT_EXPR((std::is_nothrow_copy_constructible::value && + std::is_nothrow_copy_constructible::value)) + : first(t1), second(t2) {} + // compiler-generated copy/move ctor/assignment operators are fine! + + template + Q_DECL_CONSTEXPR QPair(const QPair &p) + Q_DECL_NOEXCEPT_EXPR((std::is_nothrow_constructible::value && + std::is_nothrow_constructible::value)) + : first(p.first), second(p.second) {} + template + Q_DECL_RELAXED_CONSTEXPR QPair &operator=(const QPair &p) + Q_DECL_NOEXCEPT_EXPR((std::is_nothrow_assignable::value && + std::is_nothrow_assignable::value)) + { first = p.first; second = p.second; return *this; } +#ifdef Q_COMPILER_RVALUE_REFS + template + Q_DECL_CONSTEXPR QPair(QPair &&p) + Q_DECL_NOEXCEPT_EXPR((std::is_nothrow_constructible::value && + std::is_nothrow_constructible::value)) + // can't use std::move here as it's not constexpr in C++11: + : first(static_cast(p.first)), second(static_cast(p.second)) {} + template + Q_DECL_RELAXED_CONSTEXPR QPair &operator=(QPair &&p) + Q_DECL_NOEXCEPT_EXPR((std::is_nothrow_assignable::value && + std::is_nothrow_assignable::value)) + { first = std::move(p.first); second = std::move(p.second); return *this; } +#endif + + Q_DECL_RELAXED_CONSTEXPR void swap(QPair &other) + Q_DECL_NOEXCEPT_EXPR(noexcept(qSwap(other.first, other.first)) && noexcept(qSwap(other.second, other.second))) + { + // use qSwap() to pick up ADL swaps automatically: + qSwap(first, other.first); + qSwap(second, other.second); + } + + T1 first; + T2 second; +}; + +template +void swap(QPair &lhs, QPair &rhs) Q_DECL_NOEXCEPT_EXPR(noexcept(lhs.swap(rhs))) +{ lhs.swap(rhs); } + +// mark QPair as complex/movable/primitive depending on the +// typeinfos of the constituents: +template +class QTypeInfo > : public QTypeInfoMerger, T1, T2> {}; // Q_DECLARE_TYPEINFO + +template +Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QPair &p1, const QPair &p2) + Q_DECL_NOEXCEPT_EXPR(noexcept(p1.first == p2.first && p1.second == p2.second)) +{ return p1.first == p2.first && p1.second == p2.second; } + +template +Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator!=(const QPair &p1, const QPair &p2) + Q_DECL_NOEXCEPT_EXPR(noexcept(!(p1 == p2))) +{ return !(p1 == p2); } + +template +Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator<(const QPair &p1, const QPair &p2) + Q_DECL_NOEXCEPT_EXPR(noexcept(p1.first < p2.first || (!(p2.first < p1.first) && p1.second < p2.second))) +{ + return p1.first < p2.first || (!(p2.first < p1.first) && p1.second < p2.second); +} + +template +Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator>(const QPair &p1, const QPair &p2) + Q_DECL_NOEXCEPT_EXPR(noexcept(p2 < p1)) +{ + return p2 < p1; +} + +template +Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator<=(const QPair &p1, const QPair &p2) + Q_DECL_NOEXCEPT_EXPR(noexcept(!(p2 < p1))) +{ + return !(p2 < p1); +} + +template +Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator>=(const QPair &p1, const QPair &p2) + Q_DECL_NOEXCEPT_EXPR(noexcept(!(p1 < p2))) +{ + return !(p1 < p2); +} + +template +Q_DECL_CONSTEXPR Q_OUTOFLINE_TEMPLATE QPair qMakePair(const T1 &x, const T2 &y) + Q_DECL_NOEXCEPT_EXPR(noexcept(QPair(x, y))) +{ + return QPair(x, y); +} + +QT_END_NAMESPACE + +#endif // QPAIR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qparallelanimationgroup.h b/qrenderdoc/3rdparty/qt/include/QtCore/qparallelanimationgroup.h new file mode 100644 index 000000000..3a00e9fd1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qparallelanimationgroup.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPARALLELANIMATIONGROUP_H +#define QPARALLELANIMATIONGROUP_H + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ANIMATION + +class QParallelAnimationGroupPrivate; +class Q_CORE_EXPORT QParallelAnimationGroup : public QAnimationGroup +{ + Q_OBJECT + +public: + QParallelAnimationGroup(QObject *parent = Q_NULLPTR); + ~QParallelAnimationGroup(); + + int duration() const Q_DECL_OVERRIDE; + +protected: + QParallelAnimationGroup(QParallelAnimationGroupPrivate &dd, QObject *parent); + bool event(QEvent *event) Q_DECL_OVERRIDE; + + void updateCurrentTime(int currentTime) Q_DECL_OVERRIDE; + void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) Q_DECL_OVERRIDE; + void updateDirection(QAbstractAnimation::Direction direction) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QParallelAnimationGroup) + Q_DECLARE_PRIVATE(QParallelAnimationGroup) + Q_PRIVATE_SLOT(d_func(), void _q_uncontrolledAnimationFinished()) +}; + +#endif //QT_NO_ANIMATION + +QT_END_NAMESPACE + +#endif // QPARALLELANIMATIONGROUP diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qpauseanimation.h b/qrenderdoc/3rdparty/qt/include/QtCore/qpauseanimation.h new file mode 100644 index 000000000..c077164be --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qpauseanimation.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAUSEANIMATION_H +#define QPAUSEANIMATION_H + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ANIMATION + +class QPauseAnimationPrivate; + +class Q_CORE_EXPORT QPauseAnimation : public QAbstractAnimation +{ + Q_OBJECT + Q_PROPERTY(int duration READ duration WRITE setDuration) +public: + QPauseAnimation(QObject *parent = Q_NULLPTR); + QPauseAnimation(int msecs, QObject *parent = Q_NULLPTR); + ~QPauseAnimation(); + + int duration() const Q_DECL_OVERRIDE; + void setDuration(int msecs); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + void updateCurrentTime(int) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QPauseAnimation) + Q_DECLARE_PRIVATE(QPauseAnimation) +}; + +#endif //QT_NO_ANIMATION + +QT_END_NAMESPACE + +#endif // QPAUSEANIMATION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qplugin.h b/qrenderdoc/3rdparty/qt/include/QtCore/qplugin.h new file mode 100644 index 000000000..b644d4785 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qplugin.h @@ -0,0 +1,150 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLUGIN_H +#define QPLUGIN_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +#ifndef Q_EXTERN_C +# ifdef __cplusplus +# define Q_EXTERN_C extern "C" +# else +# define Q_EXTERN_C extern +# endif +#endif + +typedef QObject *(*QtPluginInstanceFunction)(); +typedef const char *(*QtPluginMetaDataFunction)(); + +struct Q_CORE_EXPORT QStaticPlugin +{ + // Note: This struct is initialized using an initializer list. + // As such, it cannot have any new constructors or variables. +#ifndef Q_QDOC + QtPluginInstanceFunction instance; + QtPluginMetaDataFunction rawMetaData; +#else + // Since qdoc gets confused by the use of function + // pointers, we add these dummes for it to parse instead: + QObject *instance(); + const char *rawMetaData(); +#endif + QJsonObject metaData() const; +}; +Q_DECLARE_TYPEINFO(QStaticPlugin, Q_PRIMITIVE_TYPE); + +void Q_CORE_EXPORT qRegisterStaticPluginFunction(QStaticPlugin staticPlugin); + +#if (defined(Q_OF_ELF) || defined(Q_OS_WIN)) && (defined (Q_CC_GNU) || defined(Q_CC_CLANG)) +# define QT_PLUGIN_METADATA_SECTION \ + __attribute__ ((section (".qtmetadata"))) __attribute__((used)) +#elif defined(Q_OS_MAC) +// TODO: Implement section parsing on Mac +# define QT_PLUGIN_METADATA_SECTION \ + __attribute__ ((section ("__TEXT,qtmetadata"))) __attribute__((used)) +#elif defined(Q_CC_MSVC) +// TODO: Implement section parsing for MSVC +#pragma section(".qtmetadata",read,shared) +# define QT_PLUGIN_METADATA_SECTION \ + __declspec(allocate(".qtmetadata")) +#else +# define QT_PLUGIN_VERIFICATION_SECTION +# define QT_PLUGIN_METADATA_SECTION +#endif + + +#define Q_IMPORT_PLUGIN(PLUGIN) \ + extern const QT_PREPEND_NAMESPACE(QStaticPlugin) qt_static_plugin_##PLUGIN(); \ + class Static##PLUGIN##PluginInstance{ \ + public: \ + Static##PLUGIN##PluginInstance() { \ + qRegisterStaticPluginFunction(qt_static_plugin_##PLUGIN()); \ + } \ + }; \ + static Static##PLUGIN##PluginInstance static##PLUGIN##Instance; + +#define Q_PLUGIN_INSTANCE(IMPLEMENTATION) \ + { \ + static QT_PREPEND_NAMESPACE(QPointer) _instance; \ + if (!_instance) \ + _instance = new IMPLEMENTATION; \ + return _instance; \ + } + +#if defined(QT_STATICPLUGIN) + +# define QT_MOC_EXPORT_PLUGIN(PLUGINCLASS, PLUGINCLASSNAME) \ + static QT_PREPEND_NAMESPACE(QObject) *qt_plugin_instance_##PLUGINCLASSNAME() \ + Q_PLUGIN_INSTANCE(PLUGINCLASS) \ + static const char *qt_plugin_query_metadata_##PLUGINCLASSNAME() { return reinterpret_cast(qt_pluginMetaData); } \ + const QT_PREPEND_NAMESPACE(QStaticPlugin) qt_static_plugin_##PLUGINCLASSNAME() { \ + QT_PREPEND_NAMESPACE(QStaticPlugin) plugin = { qt_plugin_instance_##PLUGINCLASSNAME, qt_plugin_query_metadata_##PLUGINCLASSNAME}; \ + return plugin; \ + } + +#else + +# define QT_MOC_EXPORT_PLUGIN(PLUGINCLASS, PLUGINCLASSNAME) \ + Q_EXTERN_C Q_DECL_EXPORT \ + const char *qt_plugin_query_metadata() \ + { return reinterpret_cast(qt_pluginMetaData); } \ + Q_EXTERN_C Q_DECL_EXPORT QT_PREPEND_NAMESPACE(QObject) *qt_plugin_instance() \ + Q_PLUGIN_INSTANCE(PLUGINCLASS) + +#endif + + +#define Q_EXPORT_PLUGIN(PLUGIN) \ + Q_EXPORT_PLUGIN2(PLUGIN, PLUGIN) +# define Q_EXPORT_PLUGIN2(PLUGIN, PLUGINCLASS) \ + Q_STATIC_ASSERT_X(false, "Old plugin system used") + +# define Q_EXPORT_STATIC_PLUGIN2(PLUGIN, PLUGINCLASS) \ + Q_STATIC_ASSERT_X(false, "Old plugin system used") + + +QT_END_NAMESPACE + +#endif // Q_PLUGIN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qpluginloader.h b/qrenderdoc/3rdparty/qt/include/QtCore/qpluginloader.h new file mode 100644 index 000000000..80b10f76b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qpluginloader.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLUGINLOADER_H +#define QPLUGINLOADER_H + +#include +#if QT_CONFIG(library) +#include +#endif +#include + +QT_BEGIN_NAMESPACE + +#if QT_CONFIG(library) + +class QLibraryPrivate; +class QJsonObject; + +class Q_CORE_EXPORT QPluginLoader : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString fileName READ fileName WRITE setFileName) + Q_PROPERTY(QLibrary::LoadHints loadHints READ loadHints WRITE setLoadHints) +public: + explicit QPluginLoader(QObject *parent = Q_NULLPTR); + explicit QPluginLoader(const QString &fileName, QObject *parent = Q_NULLPTR); + ~QPluginLoader(); + + QObject *instance(); + QJsonObject metaData() const; + + static QObjectList staticInstances(); + static QVector staticPlugins(); + + bool load(); + bool unload(); + bool isLoaded() const; + + void setFileName(const QString &fileName); + QString fileName() const; + + QString errorString() const; + + void setLoadHints(QLibrary::LoadHints loadHints); + QLibrary::LoadHints loadHints() const; + +private: + QLibraryPrivate *d; + bool did_load; + Q_DISABLE_COPY(QPluginLoader) +}; + +#else + +class Q_CORE_EXPORT QPluginLoader +{ +public: + static QObjectList staticInstances(); + static QVector staticPlugins(); +}; + +#endif // QT_CONFIG(library) + +QT_END_NAMESPACE + +#endif //QPLUGINLOADER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qpoint.h b/qrenderdoc/3rdparty/qt/include/QtCore/qpoint.h new file mode 100644 index 000000000..0f3e0c351 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qpoint.h @@ -0,0 +1,411 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPOINT_H +#define QPOINT_H + +#include + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) +struct CGPoint; +#endif + +QT_BEGIN_NAMESPACE + + +class Q_CORE_EXPORT QPoint +{ +public: + Q_DECL_CONSTEXPR QPoint(); + Q_DECL_CONSTEXPR QPoint(int xpos, int ypos); + + Q_DECL_CONSTEXPR inline bool isNull() const; + + Q_DECL_CONSTEXPR inline int x() const; + Q_DECL_CONSTEXPR inline int y() const; + Q_DECL_RELAXED_CONSTEXPR inline void setX(int x); + Q_DECL_RELAXED_CONSTEXPR inline void setY(int y); + + Q_DECL_CONSTEXPR inline int manhattanLength() const; + + Q_DECL_RELAXED_CONSTEXPR inline int &rx(); + Q_DECL_RELAXED_CONSTEXPR inline int &ry(); + + Q_DECL_RELAXED_CONSTEXPR inline QPoint &operator+=(const QPoint &p); + Q_DECL_RELAXED_CONSTEXPR inline QPoint &operator-=(const QPoint &p); + + Q_DECL_RELAXED_CONSTEXPR inline QPoint &operator*=(float factor); + Q_DECL_RELAXED_CONSTEXPR inline QPoint &operator*=(double factor); + Q_DECL_RELAXED_CONSTEXPR inline QPoint &operator*=(int factor); + + Q_DECL_RELAXED_CONSTEXPR 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 &); + friend Q_DECL_CONSTEXPR inline const QPoint operator-(const QPoint &, const QPoint &); + friend Q_DECL_CONSTEXPR inline const QPoint operator*(const QPoint &, float); + friend Q_DECL_CONSTEXPR inline const QPoint operator*(float, const QPoint &); + friend Q_DECL_CONSTEXPR inline const QPoint operator*(const QPoint &, double); + friend Q_DECL_CONSTEXPR inline const QPoint operator*(double, const QPoint &); + friend Q_DECL_CONSTEXPR inline const QPoint operator*(const QPoint &, int); + friend Q_DECL_CONSTEXPR inline const QPoint operator*(int, const QPoint &); + friend Q_DECL_CONSTEXPR inline const QPoint operator+(const QPoint &); + friend Q_DECL_CONSTEXPR inline const QPoint operator-(const QPoint &); + friend Q_DECL_CONSTEXPR inline const QPoint operator/(const QPoint &, qreal); + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + Q_REQUIRED_RESULT CGPoint toCGPoint() const Q_DECL_NOTHROW; +#endif + +private: + friend class QTransform; + int xp; + int yp; +}; + +Q_DECLARE_TYPEINFO(QPoint, Q_MOVABLE_TYPE); + +/***************************************************************************** + QPoint stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QPoint &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QPoint &); +#endif + +/***************************************************************************** + QPoint inline functions + *****************************************************************************/ + +Q_DECL_CONSTEXPR inline QPoint::QPoint() : xp(0), yp(0) {} + +Q_DECL_CONSTEXPR inline QPoint::QPoint(int xpos, int ypos) : xp(xpos), yp(ypos) {} + +Q_DECL_CONSTEXPR inline bool QPoint::isNull() const +{ return xp == 0 && yp == 0; } + +Q_DECL_CONSTEXPR inline int QPoint::x() const +{ return xp; } + +Q_DECL_CONSTEXPR inline int QPoint::y() const +{ return yp; } + +Q_DECL_RELAXED_CONSTEXPR inline void QPoint::setX(int xpos) +{ xp = xpos; } + +Q_DECL_RELAXED_CONSTEXPR inline void QPoint::setY(int ypos) +{ yp = ypos; } + +inline int Q_DECL_CONSTEXPR QPoint::manhattanLength() const +{ return qAbs(x())+qAbs(y()); } + +Q_DECL_RELAXED_CONSTEXPR inline int &QPoint::rx() +{ return xp; } + +Q_DECL_RELAXED_CONSTEXPR inline int &QPoint::ry() +{ return yp; } + +Q_DECL_RELAXED_CONSTEXPR inline QPoint &QPoint::operator+=(const QPoint &p) +{ xp+=p.xp; yp+=p.yp; return *this; } + +Q_DECL_RELAXED_CONSTEXPR inline QPoint &QPoint::operator-=(const QPoint &p) +{ xp-=p.xp; yp-=p.yp; return *this; } + +Q_DECL_RELAXED_CONSTEXPR inline QPoint &QPoint::operator*=(float factor) +{ xp = qRound(xp*factor); yp = qRound(yp*factor); return *this; } + +Q_DECL_RELAXED_CONSTEXPR inline QPoint &QPoint::operator*=(double factor) +{ xp = qRound(xp*factor); yp = qRound(yp*factor); return *this; } + +Q_DECL_RELAXED_CONSTEXPR inline QPoint &QPoint::operator*=(int factor) +{ xp = xp*factor; yp = yp*factor; return *this; } + +Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2) +{ return p1.xp == p2.xp && p1.yp == p2.yp; } + +Q_DECL_CONSTEXPR inline bool operator!=(const QPoint &p1, const QPoint &p2) +{ return p1.xp != p2.xp || p1.yp != p2.yp; } + +Q_DECL_CONSTEXPR inline const QPoint operator+(const QPoint &p1, const QPoint &p2) +{ return QPoint(p1.xp+p2.xp, p1.yp+p2.yp); } + +Q_DECL_CONSTEXPR inline const QPoint operator-(const QPoint &p1, const QPoint &p2) +{ return QPoint(p1.xp-p2.xp, p1.yp-p2.yp); } + +Q_DECL_CONSTEXPR inline const QPoint operator*(const QPoint &p, float factor) +{ return QPoint(qRound(p.xp*factor), qRound(p.yp*factor)); } + +Q_DECL_CONSTEXPR inline const QPoint operator*(const QPoint &p, double factor) +{ return QPoint(qRound(p.xp*factor), qRound(p.yp*factor)); } + +Q_DECL_CONSTEXPR inline const QPoint operator*(const QPoint &p, int factor) +{ return QPoint(p.xp*factor, p.yp*factor); } + +Q_DECL_CONSTEXPR inline const QPoint operator*(float factor, const QPoint &p) +{ return QPoint(qRound(p.xp*factor), qRound(p.yp*factor)); } + +Q_DECL_CONSTEXPR inline const QPoint operator*(double factor, const QPoint &p) +{ return QPoint(qRound(p.xp*factor), qRound(p.yp*factor)); } + +Q_DECL_CONSTEXPR inline const QPoint operator*(int factor, const QPoint &p) +{ return QPoint(p.xp*factor, p.yp*factor); } + +Q_DECL_CONSTEXPR inline const QPoint operator+(const QPoint &p) +{ return p; } + +Q_DECL_CONSTEXPR inline const QPoint operator-(const QPoint &p) +{ return QPoint(-p.xp, -p.yp); } + +Q_DECL_RELAXED_CONSTEXPR inline QPoint &QPoint::operator/=(qreal c) +{ + xp = qRound(xp/c); + yp = qRound(yp/c); + return *this; +} + +Q_DECL_CONSTEXPR inline const QPoint operator/(const QPoint &p, qreal c) +{ + return QPoint(qRound(p.xp/c), qRound(p.yp/c)); +} + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QPoint &); +#endif + + + + + +class Q_CORE_EXPORT QPointF +{ +public: + Q_DECL_CONSTEXPR QPointF(); + Q_DECL_CONSTEXPR QPointF(const QPoint &p); + Q_DECL_CONSTEXPR QPointF(qreal xpos, qreal ypos); + + Q_DECL_CONSTEXPR inline qreal manhattanLength() const; + + inline bool isNull() const; + + Q_DECL_CONSTEXPR inline qreal x() const; + Q_DECL_CONSTEXPR inline qreal y() const; + Q_DECL_RELAXED_CONSTEXPR inline void setX(qreal x); + Q_DECL_RELAXED_CONSTEXPR inline void setY(qreal y); + + Q_DECL_RELAXED_CONSTEXPR inline qreal &rx(); + Q_DECL_RELAXED_CONSTEXPR inline qreal &ry(); + + Q_DECL_RELAXED_CONSTEXPR inline QPointF &operator+=(const QPointF &p); + Q_DECL_RELAXED_CONSTEXPR inline QPointF &operator-=(const QPointF &p); + Q_DECL_RELAXED_CONSTEXPR inline QPointF &operator*=(qreal c); + Q_DECL_RELAXED_CONSTEXPR 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 &); + friend Q_DECL_CONSTEXPR inline const QPointF operator-(const QPointF &, const QPointF &); + friend Q_DECL_CONSTEXPR inline const QPointF operator*(qreal, const QPointF &); + friend Q_DECL_CONSTEXPR inline const QPointF operator*(const QPointF &, qreal); + friend Q_DECL_CONSTEXPR inline const QPointF operator+(const QPointF &); + friend Q_DECL_CONSTEXPR inline const QPointF operator-(const QPointF &); + friend Q_DECL_CONSTEXPR inline const QPointF operator/(const QPointF &, qreal); + + Q_DECL_CONSTEXPR QPoint toPoint() const; + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + Q_REQUIRED_RESULT static QPointF fromCGPoint(CGPoint point) Q_DECL_NOTHROW; + Q_REQUIRED_RESULT CGPoint toCGPoint() const Q_DECL_NOTHROW; +#endif + +private: + friend class QMatrix; + friend class QTransform; + + qreal xp; + qreal yp; +}; + +Q_DECLARE_TYPEINFO(QPointF, Q_MOVABLE_TYPE); + +/***************************************************************************** + QPointF stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QPointF &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QPointF &); +#endif + +/***************************************************************************** + QPointF inline functions + *****************************************************************************/ + +Q_DECL_CONSTEXPR inline QPointF::QPointF() : xp(0), yp(0) { } + +Q_DECL_CONSTEXPR inline QPointF::QPointF(qreal xpos, qreal ypos) : xp(xpos), yp(ypos) { } + +Q_DECL_CONSTEXPR inline QPointF::QPointF(const QPoint &p) : xp(p.x()), yp(p.y()) { } + +Q_DECL_CONSTEXPR inline qreal QPointF::manhattanLength() const +{ + return qAbs(x())+qAbs(y()); +} + +inline bool QPointF::isNull() const +{ + return qIsNull(xp) && qIsNull(yp); +} + +Q_DECL_CONSTEXPR inline qreal QPointF::x() const +{ + return xp; +} + +Q_DECL_CONSTEXPR inline qreal QPointF::y() const +{ + return yp; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QPointF::setX(qreal xpos) +{ + xp = xpos; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QPointF::setY(qreal ypos) +{ + yp = ypos; +} + +Q_DECL_RELAXED_CONSTEXPR inline qreal &QPointF::rx() +{ + return xp; +} + +Q_DECL_RELAXED_CONSTEXPR inline qreal &QPointF::ry() +{ + return yp; +} + +Q_DECL_RELAXED_CONSTEXPR inline QPointF &QPointF::operator+=(const QPointF &p) +{ + xp+=p.xp; + yp+=p.yp; + return *this; +} + +Q_DECL_RELAXED_CONSTEXPR inline QPointF &QPointF::operator-=(const QPointF &p) +{ + xp-=p.xp; yp-=p.yp; return *this; +} + +Q_DECL_RELAXED_CONSTEXPR inline QPointF &QPointF::operator*=(qreal c) +{ + xp*=c; yp*=c; return *this; +} + +Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2) +{ + return qFuzzyIsNull(p1.xp - p2.xp) && qFuzzyIsNull(p1.yp - p2.yp); +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QPointF &p1, const QPointF &p2) +{ + return !qFuzzyIsNull(p1.xp - p2.xp) || !qFuzzyIsNull(p1.yp - p2.yp); +} + +Q_DECL_CONSTEXPR inline const QPointF operator+(const QPointF &p1, const QPointF &p2) +{ + return QPointF(p1.xp+p2.xp, p1.yp+p2.yp); +} + +Q_DECL_CONSTEXPR inline const QPointF operator-(const QPointF &p1, const QPointF &p2) +{ + return QPointF(p1.xp-p2.xp, p1.yp-p2.yp); +} + +Q_DECL_CONSTEXPR inline const QPointF operator*(const QPointF &p, qreal c) +{ + return QPointF(p.xp*c, p.yp*c); +} + +Q_DECL_CONSTEXPR inline const QPointF operator*(qreal c, const QPointF &p) +{ + return QPointF(p.xp*c, p.yp*c); +} + +Q_DECL_CONSTEXPR inline const QPointF operator+(const QPointF &p) +{ + return p; +} + +Q_DECL_CONSTEXPR inline const QPointF operator-(const QPointF &p) +{ + return QPointF(-p.xp, -p.yp); +} + +Q_DECL_RELAXED_CONSTEXPR inline QPointF &QPointF::operator/=(qreal divisor) +{ + xp/=divisor; + yp/=divisor; + return *this; +} + +Q_DECL_CONSTEXPR inline const QPointF operator/(const QPointF &p, qreal divisor) +{ + return QPointF(p.xp/divisor, p.yp/divisor); +} + +Q_DECL_CONSTEXPR inline QPoint QPointF::toPoint() const +{ + return QPoint(qRound(xp), qRound(yp)); +} + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug d, const QPointF &p); +#endif + +QT_END_NAMESPACE + +#endif // QPOINT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qpointer.h b/qrenderdoc/3rdparty/qt/include/QtCore/qpointer.h new file mode 100644 index 000000000..b2b3cda4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qpointer.h @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPOINTER_H +#define QPOINTER_H + +#include +#include + +#ifndef QT_NO_QOBJECT + +QT_BEGIN_NAMESPACE + +class QVariant; + +template +class QPointer +{ + Q_STATIC_ASSERT_X(!std::is_pointer::value, "QPointer's template type must not be a pointer type"); + + template + struct TypeSelector + { + typedef QObject Type; + }; + template + struct TypeSelector + { + typedef const QObject Type; + }; + typedef typename TypeSelector::Type QObjectType; + QWeakPointer wp; +public: + inline QPointer() { } + inline QPointer(T *p) : wp(p, true) { } + // compiler-generated copy/move ctor/assignment operators are fine! + // compiler-generated dtor is fine! + +#ifdef Q_QDOC + // Stop qdoc from complaining about missing function + ~QPointer(); +#endif + + inline void swap(QPointer &other) { wp.swap(other.wp); } + + inline QPointer &operator=(T* p) + { wp.assign(static_cast(p)); return *this; } + + inline T* data() const + { return static_cast( wp.data()); } + inline T* operator->() const + { return data(); } + inline T& operator*() const + { return *data(); } + inline operator T*() const + { return data(); } + + inline bool isNull() const + { return wp.isNull(); } + + inline void clear() + { wp.clear(); } +}; +template Q_DECLARE_TYPEINFO_BODY(QPointer, Q_MOVABLE_TYPE); + +template +inline bool operator==(const T *o, const QPointer &p) +{ return o == p.operator->(); } + +template +inline bool operator==(const QPointer &p, const T *o) +{ return p.operator->() == o; } + +template +inline bool operator==(T *o, const QPointer &p) +{ return o == p.operator->(); } + +template +inline bool operator==(const QPointer &p, T *o) +{ return p.operator->() == o; } + +template +inline bool operator==(const QPointer &p1, const QPointer &p2) +{ return p1.operator->() == p2.operator->(); } + +template +inline bool operator!=(const T *o, const QPointer &p) +{ return o != p.operator->(); } + +template +inline bool operator!= (const QPointer &p, const T *o) +{ return p.operator->() != o; } + +template +inline bool operator!=(T *o, const QPointer &p) +{ return o != p.operator->(); } + +template +inline bool operator!= (const QPointer &p, T *o) +{ return p.operator->() != o; } + +template +inline bool operator!= (const QPointer &p1, const QPointer &p2) +{ return p1.operator->() != p2.operator->() ; } + +template +QPointer +qPointerFromVariant(const QVariant &variant) +{ + return QPointer(qobject_cast(QtSharedPointer::weakPointerFromVariant_internal(variant).data())); +} + +QT_END_NAMESPACE + +#endif // QT_NO_QOBJECT + +#endif // QPOINTER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qprocess.h b/qrenderdoc/3rdparty/qt/include/QtCore/qprocess.h new file mode 100644 index 000000000..19157bdd0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qprocess.h @@ -0,0 +1,307 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPROCESS_H +#define QPROCESS_H + +#include +#include +#include + +#include + +QT_REQUIRE_CONFIG(processenvironment); + +QT_BEGIN_NAMESPACE + +class QProcessPrivate; + +#if !defined(Q_OS_WIN) || defined(Q_CLANG_QDOC) +typedef qint64 Q_PID; +#else +QT_END_NAMESPACE +typedef struct _PROCESS_INFORMATION *Q_PID; +typedef struct _SECURITY_ATTRIBUTES Q_SECURITY_ATTRIBUTES; +typedef struct _STARTUPINFOW Q_STARTUPINFO; +QT_BEGIN_NAMESPACE +#endif + +class QProcessEnvironmentPrivate; + +class Q_CORE_EXPORT QProcessEnvironment +{ +public: + QProcessEnvironment(); + QProcessEnvironment(const QProcessEnvironment &other); + ~QProcessEnvironment(); +#ifdef Q_COMPILER_RVALUE_REFS + QProcessEnvironment &operator=(QProcessEnvironment && other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QProcessEnvironment &operator=(const QProcessEnvironment &other); + + void swap(QProcessEnvironment &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool operator==(const QProcessEnvironment &other) const; + inline bool operator!=(const QProcessEnvironment &other) const + { return !(*this == other); } + + bool isEmpty() const; + void clear(); + + bool contains(const QString &name) const; + void insert(const QString &name, const QString &value); + void remove(const QString &name); + QString value(const QString &name, const QString &defaultValue = QString()) const; + + QStringList toStringList() const; + + QStringList keys() const; + + void insert(const QProcessEnvironment &e); + + static QProcessEnvironment systemEnvironment(); + +private: + friend class QProcessPrivate; + friend class QProcessEnvironmentPrivate; + QSharedDataPointer d; +}; + +Q_DECLARE_SHARED(QProcessEnvironment) + +#if QT_CONFIG(process) + +class Q_CORE_EXPORT QProcess : public QIODevice +{ + Q_OBJECT +public: + enum ProcessError { + FailedToStart, //### file not found, resource error + Crashed, + Timedout, + ReadError, + WriteError, + UnknownError + }; + Q_ENUM(ProcessError) + + enum ProcessState { + NotRunning, + Starting, + Running + }; + Q_ENUM(ProcessState) + + enum ProcessChannel { + StandardOutput, + StandardError + }; + Q_ENUM(ProcessChannel) + + enum ProcessChannelMode { + SeparateChannels, + MergedChannels, + ForwardedChannels, + ForwardedOutputChannel, + ForwardedErrorChannel + }; + Q_ENUM(ProcessChannelMode) + + enum InputChannelMode { + ManagedInputChannel, + ForwardedInputChannel + }; + Q_ENUM(InputChannelMode) + + enum ExitStatus { + NormalExit, + CrashExit + }; + Q_ENUM(ExitStatus) + + explicit QProcess(QObject *parent = Q_NULLPTR); + virtual ~QProcess(); + + void start(const QString &program, const QStringList &arguments, OpenMode mode = ReadWrite); +#if !defined(QT_NO_PROCESS_COMBINED_ARGUMENT_START) + void start(const QString &command, OpenMode mode = ReadWrite); +#endif + 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); + ProcessChannelMode processChannelMode() const; + void setProcessChannelMode(ProcessChannelMode mode); + InputChannelMode inputChannelMode() const; + void setInputChannelMode(InputChannelMode mode); + + ProcessChannel readChannel() const; + void setReadChannel(ProcessChannel channel); + + void closeReadChannel(ProcessChannel channel); + void closeWriteChannel(); + + void setStandardInputFile(const QString &fileName); + void setStandardOutputFile(const QString &fileName, OpenMode mode = Truncate); + void setStandardErrorFile(const QString &fileName, OpenMode mode = Truncate); + void setStandardOutputProcess(QProcess *destination); + +#if defined(Q_OS_WIN) || defined(Q_CLANG_QDOC) + QString nativeArguments() const; + void setNativeArguments(const QString &arguments); + struct CreateProcessArguments + { + const wchar_t *applicationName; + wchar_t *arguments; + Q_SECURITY_ATTRIBUTES *processAttributes; + Q_SECURITY_ATTRIBUTES *threadAttributes; + bool inheritHandles; + unsigned long flags; + void *environment; + const wchar_t *currentDirectory; + Q_STARTUPINFO *startupInfo; + Q_PID processInformation; + }; + typedef std::function CreateProcessArgumentModifier; + CreateProcessArgumentModifier createProcessArgumentsModifier() const; + void setCreateProcessArgumentsModifier(CreateProcessArgumentModifier modifier); +#endif // Q_OS_WIN || Q_CLANG_QDOC + + QString workingDirectory() const; + void setWorkingDirectory(const QString &dir); + + void setEnvironment(const QStringList &environment); + QStringList environment() const; + void setProcessEnvironment(const QProcessEnvironment &environment); + QProcessEnvironment processEnvironment() const; + + QProcess::ProcessError error() const; + QProcess::ProcessState state() const; + + // #### Qt 5: Q_PID is a pointer on Windows and a value on Unix + Q_PID pid() const; + qint64 processId() const; + + bool waitForStarted(int msecs = 30000); + bool waitForReadyRead(int msecs = 30000) Q_DECL_OVERRIDE; + bool waitForBytesWritten(int msecs = 30000) Q_DECL_OVERRIDE; + bool waitForFinished(int msecs = 30000); + + QByteArray readAllStandardOutput(); + QByteArray readAllStandardError(); + + int exitCode() const; + QProcess::ExitStatus exitStatus() const; + + // QIODevice + qint64 bytesAvailable() const Q_DECL_OVERRIDE; // ### Qt6: remove trivial override + qint64 bytesToWrite() const Q_DECL_OVERRIDE; + bool isSequential() const Q_DECL_OVERRIDE; + bool canReadLine() const Q_DECL_OVERRIDE; // ### Qt6: remove trivial override + void close() Q_DECL_OVERRIDE; + bool atEnd() const Q_DECL_OVERRIDE; // ### Qt6: remove trivial override + + static int execute(const QString &program, const QStringList &arguments); + static int execute(const QString &command); + + static bool startDetached(const QString &program, const QStringList &arguments, + const QString &workingDirectory +#if defined(Q_QDOC) + = QString() +#endif + , qint64 *pid = Q_NULLPTR); +#if !defined(Q_QDOC) + static bool startDetached(const QString &program, const QStringList &arguments); // ### Qt6: merge overloads +#endif + static bool startDetached(const QString &command); + + static QStringList systemEnvironment(); + + static QString nullDevice(); + +public Q_SLOTS: + void terminate(); + void kill(); + +Q_SIGNALS: + void started(QPrivateSignal); + void finished(int exitCode); // ### Qt 6: merge the two signals with a default value + void finished(int exitCode, QProcess::ExitStatus exitStatus); +#if QT_DEPRECATED_SINCE(5,6) + void error(QProcess::ProcessError error); +#endif + void errorOccurred(QProcess::ProcessError error); + void stateChanged(QProcess::ProcessState state, QPrivateSignal); + + void readyReadStandardOutput(QPrivateSignal); + void readyReadStandardError(QPrivateSignal); + +protected: + void setProcessState(ProcessState state); + + virtual void setupChildProcess(); + + // QIODevice + qint64 readData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 writeData(const char *data, qint64 len) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QProcess) + Q_DISABLE_COPY(QProcess) + + Q_PRIVATE_SLOT(d_func(), bool _q_canReadStandardOutput()) + Q_PRIVATE_SLOT(d_func(), bool _q_canReadStandardError()) + Q_PRIVATE_SLOT(d_func(), bool _q_canWrite()) + Q_PRIVATE_SLOT(d_func(), bool _q_startupNotification()) + Q_PRIVATE_SLOT(d_func(), bool _q_processDied()) + friend class QProcessManager; +}; + +#endif // QT_CONFIG(process) + +QT_END_NAMESPACE + +#endif // QPROCESS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qprocessordetection.h b/qrenderdoc/3rdparty/qt/include/QtCore/qprocessordetection.h new file mode 100644 index 000000000..0b260d01e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qprocessordetection.h @@ -0,0 +1,382 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGLOBAL_H +# include +#endif + +#ifndef QPROCESSORDETECTION_H +#define QPROCESSORDETECTION_H + +/* + This file uses preprocessor #defines to set various Q_PROCESSOR_* #defines + based on the following patterns: + + Q_PROCESSOR_{FAMILY} + Q_PROCESSOR_{FAMILY}_{VARIANT} + Q_PROCESSOR_{FAMILY}_{REVISION} + + The first is always defined. Defines for the various revisions/variants are + optional and usually dependent on how the compiler was invoked. Variants + that are a superset of another should have a define for the superset. + + In addition to the procesor family, variants, and revisions, we also set + Q_BYTE_ORDER appropriately for the target processor. For bi-endian + processors, we try to auto-detect the byte order using the __BIG_ENDIAN__, + __LITTLE_ENDIAN__, or __BYTE_ORDER__ preprocessor macros. + + Note: when adding support for new processors, be sure to update + config.tests/arch/arch.cpp to ensure that configure can detect the target + and host architectures. +*/ + +/* Machine byte-order, reuse preprocessor provided macros when available */ +#if defined(__ORDER_BIG_ENDIAN__) +# define Q_BIG_ENDIAN __ORDER_BIG_ENDIAN__ +#else +# define Q_BIG_ENDIAN 4321 +#endif +#if defined(__ORDER_LITTLE_ENDIAN__) +# define Q_LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__ +#else +# define Q_LITTLE_ENDIAN 1234 +#endif + +/* + Alpha family, no revisions or variants + + Alpha is bi-endian, use endianness auto-detection implemented below. +*/ +// #elif defined(__alpha__) || defined(_M_ALPHA) +// # define Q_PROCESSOR_ALPHA +// Q_BYTE_ORDER not defined, use endianness auto-detection + +/* + ARM family, known revisions: V5, V6, V7, V8 + + ARM is bi-endian, detect using __ARMEL__ or __ARMEB__, falling back to + auto-detection implemented below. +*/ +#if defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM) || defined(__aarch64__) || defined(__ARM64__) +# if defined(__aarch64__) || defined(__ARM64__) +# define Q_PROCESSOR_ARM_64 +# define Q_PROCESSOR_WORDSIZE 8 +# else +# define Q_PROCESSOR_ARM_32 +# endif +# if defined(__ARM_ARCH) && __ARM_ARCH > 1 +# define Q_PROCESSOR_ARM __ARM_ARCH +# elif defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM > 1 +# define Q_PROCESSOR_ARM __TARGET_ARCH_ARM +# elif defined(_M_ARM) && _M_ARM > 1 +# define Q_PROCESSOR_ARM _M_ARM +# elif defined(__ARM64_ARCH_8__) \ + || defined(__aarch64__) \ + || defined(__ARMv8__) \ + || defined(__ARMv8_A__) +# define Q_PROCESSOR_ARM 8 +# elif defined(__ARM_ARCH_7__) \ + || defined(__ARM_ARCH_7A__) \ + || defined(__ARM_ARCH_7R__) \ + || defined(__ARM_ARCH_7M__) \ + || defined(__ARM_ARCH_7S__) \ + || defined(_ARM_ARCH_7) \ + || defined(__CORE_CORTEXA__) +# define Q_PROCESSOR_ARM 7 +# elif defined(__ARM_ARCH_6__) \ + || defined(__ARM_ARCH_6J__) \ + || defined(__ARM_ARCH_6T2__) \ + || defined(__ARM_ARCH_6Z__) \ + || defined(__ARM_ARCH_6K__) \ + || defined(__ARM_ARCH_6ZK__) \ + || defined(__ARM_ARCH_6M__) +# define Q_PROCESSOR_ARM 6 +# elif defined(__ARM_ARCH_5TEJ__) \ + || defined(__ARM_ARCH_5TE__) +# define Q_PROCESSOR_ARM 5 +# else +# define Q_PROCESSOR_ARM 0 +# endif +# if Q_PROCESSOR_ARM >= 8 +# define Q_PROCESSOR_ARM_V8 +# endif +# if Q_PROCESSOR_ARM >= 7 +# define Q_PROCESSOR_ARM_V7 +# endif +# if Q_PROCESSOR_ARM >= 6 +# define Q_PROCESSOR_ARM_V6 +# endif +# if Q_PROCESSOR_ARM >= 5 +# define Q_PROCESSOR_ARM_V5 +# else +# error "ARM architecture too old" +# endif +# if defined(__ARMEL__) +# define Q_BYTE_ORDER Q_LITTLE_ENDIAN +# elif defined(__ARMEB__) +# define Q_BYTE_ORDER Q_BIG_ENDIAN +# else +// Q_BYTE_ORDER not defined, use endianness auto-detection +#endif + +/* + AVR32 family, no revisions or variants + + AVR32 is big-endian. +*/ +// #elif defined(__avr32__) +// # define Q_PROCESSOR_AVR32 +// # define Q_BYTE_ORDER Q_BIG_ENDIAN + +/* + Blackfin family, no revisions or variants + + Blackfin is little-endian. +*/ +// #elif defined(__bfin__) +// # define Q_PROCESSOR_BLACKFIN +// # define Q_BYTE_ORDER Q_LITTLE_ENDIAN + +/* + X86 family, known variants: 32- and 64-bit + + X86 is little-endian. +*/ +#elif defined(__i386) || defined(__i386__) || defined(_M_IX86) +# define Q_PROCESSOR_X86_32 +# define Q_BYTE_ORDER Q_LITTLE_ENDIAN +# define Q_PROCESSOR_WORDSIZE 4 + +/* + * We define Q_PROCESSOR_X86 == 6 for anything above a equivalent or better + * than a Pentium Pro (the processor whose architecture was called P6) or an + * Athlon. + * + * All processors since the Pentium III and the Athlon 4 have SSE support, so + * we use that to detect. That leaves the original Athlon, Pentium Pro and + * Pentium II. + */ + +# if defined(_M_IX86) +# define Q_PROCESSOR_X86 (_M_IX86/100) +# elif defined(__i686__) || defined(__athlon__) || defined(__SSE__) || defined(__pentiumpro__) +# define Q_PROCESSOR_X86 6 +# elif defined(__i586__) || defined(__k6__) || defined(__pentium__) +# define Q_PROCESSOR_X86 5 +# elif defined(__i486__) || defined(__80486__) +# define Q_PROCESSOR_X86 4 +# else +# define Q_PROCESSOR_X86 3 +# endif + +#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64) +# define Q_PROCESSOR_X86 6 +# define Q_PROCESSOR_X86_64 +# define Q_BYTE_ORDER Q_LITTLE_ENDIAN +# define Q_PROCESSOR_WORDSIZE 8 + +/* + Itanium (IA-64) family, no revisions or variants + + Itanium is bi-endian, use endianness auto-detection implemented below. +*/ +#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64) +# define Q_PROCESSOR_IA64 +# define Q_PROCESSOR_WORDSIZE 8 +// Q_BYTE_ORDER not defined, use endianness auto-detection + +/* + MIPS family, known revisions: I, II, III, IV, 32, 64 + + MIPS is bi-endian, use endianness auto-detection implemented below. +*/ +#elif defined(__mips) || defined(__mips__) || defined(_M_MRX000) +# define Q_PROCESSOR_MIPS +# if defined(_MIPS_ARCH_MIPS1) || (defined(__mips) && __mips - 0 >= 1) +# define Q_PROCESSOR_MIPS_I +# endif +# if defined(_MIPS_ARCH_MIPS2) || (defined(__mips) && __mips - 0 >= 2) +# define Q_PROCESSOR_MIPS_II +# endif +# if defined(_MIPS_ARCH_MIPS3) || (defined(__mips) && __mips - 0 >= 3) +# define Q_PROCESSOR_MIPS_III +# endif +# if defined(_MIPS_ARCH_MIPS4) || (defined(__mips) && __mips - 0 >= 4) +# define Q_PROCESSOR_MIPS_IV +# endif +# if defined(_MIPS_ARCH_MIPS5) || (defined(__mips) && __mips - 0 >= 5) +# define Q_PROCESSOR_MIPS_V +# endif +# if defined(_MIPS_ARCH_MIPS32) || defined(__mips32) || (defined(__mips) && __mips - 0 >= 32) +# define Q_PROCESSOR_MIPS_32 +# endif +# if defined(_MIPS_ARCH_MIPS64) || defined(__mips64) +# define Q_PROCESSOR_MIPS_64 +# define Q_PROCESSOR_WORDSIZE 8 +# endif +# if defined(__MIPSEL__) +# define Q_BYTE_ORDER Q_LITTLE_ENDIAN +# elif defined(__MIPSEB__) +# define Q_BYTE_ORDER Q_BIG_ENDIAN +# else +// Q_BYTE_ORDER not defined, use endianness auto-detection +# endif + +/* + Power family, known variants: 32- and 64-bit + + There are many more known variants/revisions that we do not handle/detect. + See http://en.wikipedia.org/wiki/Power_Architecture + and http://en.wikipedia.org/wiki/File:PowerISA-evolution.svg + + Power is bi-endian, use endianness auto-detection implemented below. +*/ +#elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) \ + || defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) \ + || defined(_M_MPPC) || defined(_M_PPC) +# define Q_PROCESSOR_POWER +# if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__) +# define Q_PROCESSOR_POWER_64 +# define Q_PROCESSOR_WORDSIZE 8 +# else +# define Q_PROCESSOR_POWER_32 +# endif +// Q_BYTE_ORDER not defined, use endianness auto-detection + +/* + S390 family, known variant: S390X (64-bit) + + S390 is big-endian. +*/ +#elif defined(__s390__) +# define Q_PROCESSOR_S390 +# if defined(__s390x__) +# define Q_PROCESSOR_S390_X +# endif +# define Q_BYTE_ORDER Q_BIG_ENDIAN + +/* + SuperH family, optional revision: SH-4A + + SuperH is bi-endian, use endianness auto-detection implemented below. +*/ +// #elif defined(__sh__) +// # define Q_PROCESSOR_SH +// # if defined(__sh4a__) +// # define Q_PROCESSOR_SH_4A +// # endif +// Q_BYTE_ORDER not defined, use endianness auto-detection + +/* + SPARC family, optional revision: V9 + + SPARC is big-endian only prior to V9, while V9 is bi-endian with big-endian + as the default byte order. Assume all SPARC systems are big-endian. +*/ +#elif defined(__sparc__) +# define Q_PROCESSOR_SPARC +# if defined(__sparc_v9__) +# define Q_PROCESSOR_SPARC_V9 +# endif +# if defined(__sparc64__) +# define Q_PROCESSOR_SPARC_64 +# endif +# define Q_BYTE_ORDER Q_BIG_ENDIAN + +#endif + +/* + NOTE: + GCC 4.6 added __BYTE_ORDER__, __ORDER_BIG_ENDIAN__, __ORDER_LITTLE_ENDIAN__ + and __ORDER_PDP_ENDIAN__ in SVN r165881. If you are using GCC 4.6 or newer, + this code will properly detect your target byte order; if you are not, and + the __LITTLE_ENDIAN__ or __BIG_ENDIAN__ macros are not defined, then this + code will fail to detect the target byte order. +*/ +// Some processors support either endian format, try to detect which we are using. +#if !defined(Q_BYTE_ORDER) +# 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__) || defined(_big_endian__) || defined(_BIG_ENDIAN) +# define Q_BYTE_ORDER Q_BIG_ENDIAN +# elif defined(__LITTLE_ENDIAN__) || defined(_little_endian__) || defined(_LITTLE_ENDIAN) \ + || defined(WINAPI_FAMILY) // WinRT is always little-endian according to MSDN. +# define Q_BYTE_ORDER Q_LITTLE_ENDIAN +# else +# error "Unable to determine byte order!" +# endif +#endif + +/* + Size of a pointer and the machine register size. We detect a 64-bit system by: + * GCC and compatible compilers (Clang, ICC on OS X and Windows) always define + __SIZEOF_POINTER__. This catches all known cases of ILP32 builds on 64-bit + processors. + * Most other Unix compilers define __LP64__ or _LP64 on 64-bit mode + (Long and Pointer 64-bit) + * If Q_PROCESSOR_WORDSIZE was defined above, it's assumed to match the pointer + size. + Otherwise, we assume to be 32-bit and then check in qglobal.cpp that it is right. +*/ + +#if defined __SIZEOF_POINTER__ +# define QT_POINTER_SIZE __SIZEOF_POINTER__ +#elif defined(__LP64__) || defined(_LP64) +# define QT_POINTER_SIZE 8 +#elif defined(Q_PROCESSOR_WORDSIZE) +# define QT_POINTER_SIZE Q_PROCESSOR_WORDSIZE +#else +# define QT_POINTER_SIZE 4 +#endif + +/* + Define Q_PROCESSOR_WORDSIZE to be the size of the machine's word (usually, + the size of the register). On some architectures where a pointer could be + smaller than the register, the macro is defined above. + + Falls back to QT_POINTER_SIZE if not set explicitly for the platform. +*/ +#ifndef Q_PROCESSOR_WORDSIZE +# define Q_PROCESSOR_WORDSIZE QT_POINTER_SIZE +#endif + + +#endif // QPROCESSORDETECTION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qpropertyanimation.h b/qrenderdoc/3rdparty/qt/include/QtCore/qpropertyanimation.h new file mode 100644 index 000000000..ecc752488 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qpropertyanimation.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPROPERTYANIMATION_H +#define QPROPERTYANIMATION_H + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ANIMATION + +class QPropertyAnimationPrivate; +class Q_CORE_EXPORT QPropertyAnimation : public QVariantAnimation +{ + Q_OBJECT + Q_PROPERTY(QByteArray propertyName READ propertyName WRITE setPropertyName) + Q_PROPERTY(QObject* targetObject READ targetObject WRITE setTargetObject) + +public: + QPropertyAnimation(QObject *parent = Q_NULLPTR); + QPropertyAnimation(QObject *target, const QByteArray &propertyName, QObject *parent = Q_NULLPTR); + ~QPropertyAnimation(); + + QObject *targetObject() const; + void setTargetObject(QObject *target); + + QByteArray propertyName() const; + void setPropertyName(const QByteArray &propertyName); + +protected: + bool event(QEvent *event) Q_DECL_OVERRIDE; + void updateCurrentValue(const QVariant &value) Q_DECL_OVERRIDE; + void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QPropertyAnimation) + Q_DECLARE_PRIVATE(QPropertyAnimation) +}; + +#endif //QT_NO_ANIMATION + +QT_END_NAMESPACE + +#endif // QPROPERTYANIMATION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qqueue.h b/qrenderdoc/3rdparty/qt/include/QtCore/qqueue.h new file mode 100644 index 000000000..b55f21057 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qqueue.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQUEUE_H +#define QQUEUE_H + +#include + +QT_BEGIN_NAMESPACE + + +template +class QQueue : public QList +{ +public: + // compiler-generated special member functions are fine! + inline void swap(QQueue &other) Q_DECL_NOTHROW { QList::swap(other); } // prevent QList<->QQueue swaps +#ifndef Q_QDOC + // bring in QList::swap(int, int). We cannot say using QList::swap, + // because we don't want to make swap(QList&) available. + inline void swap(int i, int j) { QList::swap(i, j); } +#endif + inline void enqueue(const T &t) { QList::append(t); } + inline T dequeue() { return QList::takeFirst(); } + inline T &head() { return QList::first(); } + inline const T &head() const { return QList::first(); } +}; + +QT_END_NAMESPACE + +#endif // QQUEUE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qreadwritelock.h b/qrenderdoc/3rdparty/qt/include/QtCore/qreadwritelock.h new file mode 100644 index 000000000..777efdb3b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qreadwritelock.h @@ -0,0 +1,232 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QREADWRITELOCK_H +#define QREADWRITELOCK_H + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_THREAD + +class QReadWriteLockPrivate; + +class Q_CORE_EXPORT QReadWriteLock +{ +public: + enum RecursionMode { NonRecursive, Recursive }; + + explicit QReadWriteLock(RecursionMode recursionMode = NonRecursive); + ~QReadWriteLock(); + + void lockForRead(); + bool tryLockForRead(); + bool tryLockForRead(int timeout); + + void lockForWrite(); + bool tryLockForWrite(); + bool tryLockForWrite(int timeout); + + void unlock(); + +private: + Q_DISABLE_COPY(QReadWriteLock) + QAtomicPointer d_ptr; + + enum StateForWaitCondition { LockedForRead, LockedForWrite, Unlocked, RecursivelyLocked }; + StateForWaitCondition stateForWaitCondition() const; + friend class QWaitCondition; +}; + +#if defined(Q_CC_MSVC) +#pragma warning( push ) +#pragma warning( disable : 4312 ) // ignoring the warning from /Wp64 +#endif + +class Q_CORE_EXPORT QReadLocker +{ +public: + inline QReadLocker(QReadWriteLock *readWriteLock); + + inline ~QReadLocker() + { unlock(); } + + inline void unlock() + { + if (q_val) { + if ((q_val & quintptr(1u)) == quintptr(1u)) { + q_val &= ~quintptr(1u); + readWriteLock()->unlock(); + } + } + } + + inline void relock() + { + if (q_val) { + if ((q_val & quintptr(1u)) == quintptr(0u)) { + readWriteLock()->lockForRead(); + q_val |= quintptr(1u); + } + } + } + + inline QReadWriteLock *readWriteLock() const + { return reinterpret_cast(q_val & ~quintptr(1u)); } + +private: + Q_DISABLE_COPY(QReadLocker) + quintptr q_val; +}; + +inline QReadLocker::QReadLocker(QReadWriteLock *areadWriteLock) + : q_val(reinterpret_cast(areadWriteLock)) +{ + Q_ASSERT_X((q_val & quintptr(1u)) == quintptr(0), + "QReadLocker", "QReadWriteLock pointer is misaligned"); + relock(); +} + +class Q_CORE_EXPORT QWriteLocker +{ +public: + inline QWriteLocker(QReadWriteLock *readWriteLock); + + inline ~QWriteLocker() + { unlock(); } + + inline void unlock() + { + if (q_val) { + if ((q_val & quintptr(1u)) == quintptr(1u)) { + q_val &= ~quintptr(1u); + readWriteLock()->unlock(); + } + } + } + + inline void relock() + { + if (q_val) { + if ((q_val & quintptr(1u)) == quintptr(0u)) { + readWriteLock()->lockForWrite(); + q_val |= quintptr(1u); + } + } + } + + inline QReadWriteLock *readWriteLock() const + { return reinterpret_cast(q_val & ~quintptr(1u)); } + + +private: + Q_DISABLE_COPY(QWriteLocker) + quintptr q_val; +}; + +inline QWriteLocker::QWriteLocker(QReadWriteLock *areadWriteLock) + : q_val(reinterpret_cast(areadWriteLock)) +{ + Q_ASSERT_X((q_val & quintptr(1u)) == quintptr(0), + "QWriteLocker", "QReadWriteLock pointer is misaligned"); + relock(); +} + +#if defined(Q_CC_MSVC) +#pragma warning( pop ) +#endif + +#else // QT_NO_THREAD + +class Q_CORE_EXPORT QReadWriteLock +{ +public: + enum RecursionMode { NonRecursive, Recursive }; + inline explicit QReadWriteLock(RecursionMode = NonRecursive) Q_DECL_NOTHROW { } + inline ~QReadWriteLock() { } + + static inline void lockForRead() Q_DECL_NOTHROW { } + static inline bool tryLockForRead() Q_DECL_NOTHROW { return true; } + static inline bool tryLockForRead(int timeout) Q_DECL_NOTHROW { Q_UNUSED(timeout); return true; } + + static inline void lockForWrite() Q_DECL_NOTHROW { } + static inline bool tryLockForWrite() Q_DECL_NOTHROW { return true; } + static inline bool tryLockForWrite(int timeout) Q_DECL_NOTHROW { Q_UNUSED(timeout); return true; } + + static inline void unlock() Q_DECL_NOTHROW { } + +private: + Q_DISABLE_COPY(QReadWriteLock) +}; + +class Q_CORE_EXPORT QReadLocker +{ +public: + inline QReadLocker(QReadWriteLock *) Q_DECL_NOTHROW { } + inline ~QReadLocker() Q_DECL_NOTHROW { } + + static inline void unlock() Q_DECL_NOTHROW { } + static inline void relock() Q_DECL_NOTHROW { } + static inline QReadWriteLock *readWriteLock() Q_DECL_NOTHROW { return Q_NULLPTR; } + +private: + Q_DISABLE_COPY(QReadLocker) +}; + +class Q_CORE_EXPORT QWriteLocker +{ +public: + inline explicit QWriteLocker(QReadWriteLock *) Q_DECL_NOTHROW { } + inline ~QWriteLocker() Q_DECL_NOTHROW { } + + static inline void unlock() Q_DECL_NOTHROW { } + static inline void relock() Q_DECL_NOTHROW { } + static inline QReadWriteLock *readWriteLock() Q_DECL_NOTHROW { return Q_NULLPTR; } + +private: + Q_DISABLE_COPY(QWriteLocker) +}; + +#endif // QT_NO_THREAD + +QT_END_NAMESPACE + +#endif // QREADWRITELOCK_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qrect.h b/qrenderdoc/3rdparty/qt/include/QtCore/qrect.h new file mode 100644 index 000000000..19ff87b42 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qrect.h @@ -0,0 +1,924 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRECT_H +#define QRECT_H + +#include +#include +#include + +#ifdef topLeft +#error qrect.h must be included before any header file that defines topLeft +#endif + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) +struct CGRect; +#endif + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QRect +{ +public: + Q_DECL_CONSTEXPR QRect() Q_DECL_NOTHROW : x1(0), y1(0), x2(-1), y2(-1) {} + Q_DECL_CONSTEXPR QRect(const QPoint &topleft, const QPoint &bottomright) Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QRect(const QPoint &topleft, const QSize &size) Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QRect(int left, int top, int width, int height) Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline bool isNull() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline bool isEmpty() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline bool isValid() const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline int left() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline int top() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline int right() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline int bottom() const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT QRect normalized() const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline int x() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline int y() const Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setLeft(int pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setTop(int pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setRight(int pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setBottom(int pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setX(int x) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setY(int y) Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline void setTopLeft(const QPoint &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setBottomRight(const QPoint &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setTopRight(const QPoint &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setBottomLeft(const QPoint &p) Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline QPoint topLeft() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline QPoint bottomRight() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline QPoint topRight() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline QPoint bottomLeft() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline QPoint center() const Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline void moveLeft(int pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveTop(int pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveRight(int pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveBottom(int pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveTopLeft(const QPoint &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveBottomRight(const QPoint &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveTopRight(const QPoint &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveBottomLeft(const QPoint &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveCenter(const QPoint &p) Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline void translate(int dx, int dy) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void translate(const QPoint &p) Q_DECL_NOTHROW; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QRect translated(int dx, int dy) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QRect translated(const QPoint &p) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QRect transposed() const Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline void moveTo(int x, int t) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveTo(const QPoint &p) Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline void setRect(int x, int y, int w, int h) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void getRect(int *x, int *y, int *w, int *h) const; + + Q_DECL_RELAXED_CONSTEXPR inline void setCoords(int x1, int y1, int x2, int y2) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void getCoords(int *x1, int *y1, int *x2, int *y2) const; + + Q_DECL_RELAXED_CONSTEXPR inline void adjust(int x1, int y1, int x2, int y2) Q_DECL_NOTHROW; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QRect adjusted(int x1, int y1, int x2, int y2) const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline QSize size() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline int width() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline int height() const Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setWidth(int w) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setHeight(int h) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setSize(const QSize &s) Q_DECL_NOTHROW; + + QRect operator|(const QRect &r) const Q_DECL_NOTHROW; + QRect operator&(const QRect &r) const Q_DECL_NOTHROW; + inline QRect& operator|=(const QRect &r) Q_DECL_NOTHROW; + inline QRect& operator&=(const QRect &r) Q_DECL_NOTHROW; + + bool contains(const QRect &r, bool proper = false) const Q_DECL_NOTHROW; + bool contains(const QPoint &p, bool proper=false) const Q_DECL_NOTHROW; + inline bool contains(int x, int y) const Q_DECL_NOTHROW; + inline bool contains(int x, int y, bool proper) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT inline QRect united(const QRect &other) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT inline QRect intersected(const QRect &other) const Q_DECL_NOTHROW; + bool intersects(const QRect &r) const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline QRect marginsAdded(const QMargins &margins) const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline QRect marginsRemoved(const QMargins &margins) const Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline QRect &operator+=(const QMargins &margins) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline QRect &operator-=(const QMargins &margins) Q_DECL_NOTHROW; + +#if QT_DEPRECATED_SINCE(5, 0) + Q_REQUIRED_RESULT QT_DEPRECATED QRect unite(const QRect &r) const Q_DECL_NOTHROW { return united(r); } + Q_REQUIRED_RESULT QT_DEPRECATED QRect intersect(const QRect &r) const Q_DECL_NOTHROW { return intersected(r); } +#endif + + friend Q_DECL_CONSTEXPR inline bool operator==(const QRect &, const QRect &) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR inline bool operator!=(const QRect &, const QRect &) Q_DECL_NOTHROW; + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + Q_REQUIRED_RESULT CGRect toCGRect() const Q_DECL_NOTHROW; +#endif + +private: + int x1; + int y1; + int x2; + int y2; +}; +Q_DECLARE_TYPEINFO(QRect, Q_MOVABLE_TYPE); + +Q_DECL_CONSTEXPR inline bool operator==(const QRect &, const QRect &) Q_DECL_NOTHROW; +Q_DECL_CONSTEXPR inline bool operator!=(const QRect &, const QRect &) Q_DECL_NOTHROW; + + +/***************************************************************************** + QRect stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QRect &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QRect &); +#endif + +/***************************************************************************** + QRect inline member functions + *****************************************************************************/ + +Q_DECL_CONSTEXPR inline QRect::QRect(int aleft, int atop, int awidth, int aheight) Q_DECL_NOTHROW + : x1(aleft), y1(atop), x2(aleft + awidth - 1), y2(atop + aheight - 1) {} + +Q_DECL_CONSTEXPR inline QRect::QRect(const QPoint &atopLeft, const QPoint &abottomRight) Q_DECL_NOTHROW + : x1(atopLeft.x()), y1(atopLeft.y()), x2(abottomRight.x()), y2(abottomRight.y()) {} + +Q_DECL_CONSTEXPR inline QRect::QRect(const QPoint &atopLeft, const QSize &asize) Q_DECL_NOTHROW + : x1(atopLeft.x()), y1(atopLeft.y()), x2(atopLeft.x()+asize.width() - 1), y2(atopLeft.y()+asize.height() - 1) {} + +Q_DECL_CONSTEXPR inline bool QRect::isNull() const Q_DECL_NOTHROW +{ return x2 == x1 - 1 && y2 == y1 - 1; } + +Q_DECL_CONSTEXPR inline bool QRect::isEmpty() const Q_DECL_NOTHROW +{ return x1 > x2 || y1 > y2; } + +Q_DECL_CONSTEXPR inline bool QRect::isValid() const Q_DECL_NOTHROW +{ return x1 <= x2 && y1 <= y2; } + +Q_DECL_CONSTEXPR inline int QRect::left() const Q_DECL_NOTHROW +{ return x1; } + +Q_DECL_CONSTEXPR inline int QRect::top() const Q_DECL_NOTHROW +{ return y1; } + +Q_DECL_CONSTEXPR inline int QRect::right() const Q_DECL_NOTHROW +{ return x2; } + +Q_DECL_CONSTEXPR inline int QRect::bottom() const Q_DECL_NOTHROW +{ return y2; } + +Q_DECL_CONSTEXPR inline int QRect::x() const Q_DECL_NOTHROW +{ return x1; } + +Q_DECL_CONSTEXPR inline int QRect::y() const Q_DECL_NOTHROW +{ return y1; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setLeft(int pos) Q_DECL_NOTHROW +{ x1 = pos; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setTop(int pos) Q_DECL_NOTHROW +{ y1 = pos; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setRight(int pos) Q_DECL_NOTHROW +{ x2 = pos; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setBottom(int pos) Q_DECL_NOTHROW +{ y2 = pos; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setTopLeft(const QPoint &p) Q_DECL_NOTHROW +{ x1 = p.x(); y1 = p.y(); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setBottomRight(const QPoint &p) Q_DECL_NOTHROW +{ x2 = p.x(); y2 = p.y(); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setTopRight(const QPoint &p) Q_DECL_NOTHROW +{ x2 = p.x(); y1 = p.y(); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setBottomLeft(const QPoint &p) Q_DECL_NOTHROW +{ x1 = p.x(); y2 = p.y(); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setX(int ax) Q_DECL_NOTHROW +{ x1 = ax; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setY(int ay) Q_DECL_NOTHROW +{ y1 = ay; } + +Q_DECL_CONSTEXPR inline QPoint QRect::topLeft() const Q_DECL_NOTHROW +{ return QPoint(x1, y1); } + +Q_DECL_CONSTEXPR inline QPoint QRect::bottomRight() const Q_DECL_NOTHROW +{ return QPoint(x2, y2); } + +Q_DECL_CONSTEXPR inline QPoint QRect::topRight() const Q_DECL_NOTHROW +{ return QPoint(x2, y1); } + +Q_DECL_CONSTEXPR inline QPoint QRect::bottomLeft() const Q_DECL_NOTHROW +{ return QPoint(x1, y2); } + +Q_DECL_CONSTEXPR inline QPoint QRect::center() const Q_DECL_NOTHROW +{ return QPoint(int((qint64(x1)+x2)/2), int((qint64(y1)+y2)/2)); } // cast avoids overflow on addition + +Q_DECL_CONSTEXPR inline int QRect::width() const Q_DECL_NOTHROW +{ return x2 - x1 + 1; } + +Q_DECL_CONSTEXPR inline int QRect::height() const Q_DECL_NOTHROW +{ return y2 - y1 + 1; } + +Q_DECL_CONSTEXPR inline QSize QRect::size() const Q_DECL_NOTHROW +{ return QSize(width(), height()); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::translate(int dx, int dy) Q_DECL_NOTHROW +{ + x1 += dx; + y1 += dy; + x2 += dx; + y2 += dy; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::translate(const QPoint &p) Q_DECL_NOTHROW +{ + x1 += p.x(); + y1 += p.y(); + x2 += p.x(); + y2 += p.y(); +} + +Q_DECL_CONSTEXPR inline QRect QRect::translated(int dx, int dy) const Q_DECL_NOTHROW +{ return QRect(QPoint(x1 + dx, y1 + dy), QPoint(x2 + dx, y2 + dy)); } + +Q_DECL_CONSTEXPR inline QRect QRect::translated(const QPoint &p) const Q_DECL_NOTHROW +{ return QRect(QPoint(x1 + p.x(), y1 + p.y()), QPoint(x2 + p.x(), y2 + p.y())); } + +Q_DECL_CONSTEXPR inline QRect QRect::transposed() const Q_DECL_NOTHROW +{ return QRect(topLeft(), size().transposed()); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveTo(int ax, int ay) Q_DECL_NOTHROW +{ + x2 += ax - x1; + y2 += ay - y1; + x1 = ax; + y1 = ay; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveTo(const QPoint &p) Q_DECL_NOTHROW +{ + x2 += p.x() - x1; + y2 += p.y() - y1; + x1 = p.x(); + y1 = p.y(); +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveLeft(int pos) Q_DECL_NOTHROW +{ x2 += (pos - x1); x1 = pos; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveTop(int pos) Q_DECL_NOTHROW +{ y2 += (pos - y1); y1 = pos; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveRight(int pos) Q_DECL_NOTHROW +{ + x1 += (pos - x2); + x2 = pos; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveBottom(int pos) Q_DECL_NOTHROW +{ + y1 += (pos - y2); + y2 = pos; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveTopLeft(const QPoint &p) Q_DECL_NOTHROW +{ + moveLeft(p.x()); + moveTop(p.y()); +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveBottomRight(const QPoint &p) Q_DECL_NOTHROW +{ + moveRight(p.x()); + moveBottom(p.y()); +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveTopRight(const QPoint &p) Q_DECL_NOTHROW +{ + moveRight(p.x()); + moveTop(p.y()); +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveBottomLeft(const QPoint &p) Q_DECL_NOTHROW +{ + moveLeft(p.x()); + moveBottom(p.y()); +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::moveCenter(const QPoint &p) Q_DECL_NOTHROW +{ + int w = x2 - x1; + int h = y2 - y1; + x1 = p.x() - w/2; + y1 = p.y() - h/2; + x2 = x1 + w; + y2 = y1 + h; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::getRect(int *ax, int *ay, int *aw, int *ah) const +{ + *ax = x1; + *ay = y1; + *aw = x2 - x1 + 1; + *ah = y2 - y1 + 1; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setRect(int ax, int ay, int aw, int ah) Q_DECL_NOTHROW +{ + x1 = ax; + y1 = ay; + x2 = (ax + aw - 1); + y2 = (ay + ah - 1); +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::getCoords(int *xp1, int *yp1, int *xp2, int *yp2) const +{ + *xp1 = x1; + *yp1 = y1; + *xp2 = x2; + *yp2 = y2; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setCoords(int xp1, int yp1, int xp2, int yp2) Q_DECL_NOTHROW +{ + x1 = xp1; + y1 = yp1; + x2 = xp2; + y2 = yp2; +} + +Q_DECL_CONSTEXPR inline QRect QRect::adjusted(int xp1, int yp1, int xp2, int yp2) const Q_DECL_NOTHROW +{ return QRect(QPoint(x1 + xp1, y1 + yp1), QPoint(x2 + xp2, y2 + yp2)); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::adjust(int dx1, int dy1, int dx2, int dy2) Q_DECL_NOTHROW +{ + x1 += dx1; + y1 += dy1; + x2 += dx2; + y2 += dy2; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setWidth(int w) Q_DECL_NOTHROW +{ x2 = (x1 + w - 1); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setHeight(int h) Q_DECL_NOTHROW +{ y2 = (y1 + h - 1); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRect::setSize(const QSize &s) Q_DECL_NOTHROW +{ + x2 = (s.width() + x1 - 1); + y2 = (s.height() + y1 - 1); +} + +inline bool QRect::contains(int ax, int ay, bool aproper) const Q_DECL_NOTHROW +{ + return contains(QPoint(ax, ay), aproper); +} + +inline bool QRect::contains(int ax, int ay) const Q_DECL_NOTHROW +{ + return contains(QPoint(ax, ay), false); +} + +inline QRect& QRect::operator|=(const QRect &r) Q_DECL_NOTHROW +{ + *this = *this | r; + return *this; +} + +inline QRect& QRect::operator&=(const QRect &r) Q_DECL_NOTHROW +{ + *this = *this & r; + return *this; +} + +inline QRect QRect::intersected(const QRect &other) const Q_DECL_NOTHROW +{ + return *this & other; +} + +inline QRect QRect::united(const QRect &r) const Q_DECL_NOTHROW +{ + return *this | r; +} + +Q_DECL_CONSTEXPR inline bool operator==(const QRect &r1, const QRect &r2) Q_DECL_NOTHROW +{ + return r1.x1==r2.x1 && r1.x2==r2.x2 && r1.y1==r2.y1 && r1.y2==r2.y2; +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QRect &r1, const QRect &r2) Q_DECL_NOTHROW +{ + return r1.x1!=r2.x1 || r1.x2!=r2.x2 || r1.y1!=r2.y1 || r1.y2!=r2.y2; +} + +Q_DECL_CONSTEXPR inline QRect operator+(const QRect &rectangle, const QMargins &margins) Q_DECL_NOTHROW +{ + 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) Q_DECL_NOTHROW +{ + 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 QRect &lhs, const QMargins &rhs) Q_DECL_NOTHROW +{ + return QRect(QPoint(lhs.left() + rhs.left(), lhs.top() + rhs.top()), + QPoint(lhs.right() - rhs.right(), lhs.bottom() - rhs.bottom())); +} + +Q_DECL_CONSTEXPR inline QRect QRect::marginsAdded(const QMargins &margins) const Q_DECL_NOTHROW +{ + return QRect(QPoint(x1 - margins.left(), y1 - margins.top()), + QPoint(x2 + margins.right(), y2 + margins.bottom())); +} + +Q_DECL_CONSTEXPR inline QRect QRect::marginsRemoved(const QMargins &margins) const Q_DECL_NOTHROW +{ + return QRect(QPoint(x1 + margins.left(), y1 + margins.top()), + QPoint(x2 - margins.right(), y2 - margins.bottom())); +} + +Q_DECL_RELAXED_CONSTEXPR inline QRect &QRect::operator+=(const QMargins &margins) Q_DECL_NOTHROW +{ + *this = marginsAdded(margins); + return *this; +} + +Q_DECL_RELAXED_CONSTEXPR inline QRect &QRect::operator-=(const QMargins &margins) Q_DECL_NOTHROW +{ + *this = marginsRemoved(margins); + return *this; +} + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QRect &); +#endif + + +class Q_CORE_EXPORT QRectF +{ +public: + Q_DECL_CONSTEXPR QRectF() Q_DECL_NOTHROW : xp(0.), yp(0.), w(0.), h(0.) {} + Q_DECL_CONSTEXPR QRectF(const QPointF &topleft, const QSizeF &size) Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QRectF(const QPointF &topleft, const QPointF &bottomRight) Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QRectF(qreal left, qreal top, qreal width, qreal height) Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QRectF(const QRect &rect) Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline bool isNull() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline bool isEmpty() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline bool isValid() const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT QRectF normalized() const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline qreal left() const Q_DECL_NOTHROW { return xp; } + Q_DECL_CONSTEXPR inline qreal top() const Q_DECL_NOTHROW { return yp; } + Q_DECL_CONSTEXPR inline qreal right() const Q_DECL_NOTHROW { return xp + w; } + Q_DECL_CONSTEXPR inline qreal bottom() const Q_DECL_NOTHROW { return yp + h; } + + Q_DECL_CONSTEXPR inline qreal x() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline qreal y() const Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setLeft(qreal pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setTop(qreal pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setRight(qreal pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setBottom(qreal pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setX(qreal pos) Q_DECL_NOTHROW { setLeft(pos); } + Q_DECL_RELAXED_CONSTEXPR inline void setY(qreal pos) Q_DECL_NOTHROW { setTop(pos); } + + Q_DECL_CONSTEXPR inline QPointF topLeft() const Q_DECL_NOTHROW { return QPointF(xp, yp); } + Q_DECL_CONSTEXPR inline QPointF bottomRight() const Q_DECL_NOTHROW { return QPointF(xp+w, yp+h); } + Q_DECL_CONSTEXPR inline QPointF topRight() const Q_DECL_NOTHROW { return QPointF(xp+w, yp); } + Q_DECL_CONSTEXPR inline QPointF bottomLeft() const Q_DECL_NOTHROW { return QPointF(xp, yp+h); } + Q_DECL_CONSTEXPR inline QPointF center() const Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline void setTopLeft(const QPointF &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setBottomRight(const QPointF &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setTopRight(const QPointF &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setBottomLeft(const QPointF &p) Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline void moveLeft(qreal pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveTop(qreal pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveRight(qreal pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveBottom(qreal pos) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveTopLeft(const QPointF &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveBottomRight(const QPointF &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveTopRight(const QPointF &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveBottomLeft(const QPointF &p) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveCenter(const QPointF &p) Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline void translate(qreal dx, qreal dy) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void translate(const QPointF &p) Q_DECL_NOTHROW; + + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QRectF translated(qreal dx, qreal dy) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QRectF translated(const QPointF &p) const Q_DECL_NOTHROW; + + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QRectF transposed() const Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline void moveTo(qreal x, qreal y) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void moveTo(const QPointF &p) Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline void setRect(qreal x, qreal y, qreal w, qreal h) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void getRect(qreal *x, qreal *y, qreal *w, qreal *h) const; + + Q_DECL_RELAXED_CONSTEXPR inline void setCoords(qreal x1, qreal y1, qreal x2, qreal y2) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void getCoords(qreal *x1, qreal *y1, qreal *x2, qreal *y2) const; + + Q_DECL_RELAXED_CONSTEXPR inline void adjust(qreal x1, qreal y1, qreal x2, qreal y2) Q_DECL_NOTHROW; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QRectF adjusted(qreal x1, qreal y1, qreal x2, qreal y2) const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline QSizeF size() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline qreal width() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline qreal height() const Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setWidth(qreal w) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setHeight(qreal h) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setSize(const QSizeF &s) Q_DECL_NOTHROW; + + QRectF operator|(const QRectF &r) const Q_DECL_NOTHROW; + QRectF operator&(const QRectF &r) const Q_DECL_NOTHROW; + inline QRectF& operator|=(const QRectF &r) Q_DECL_NOTHROW; + inline QRectF& operator&=(const QRectF &r) Q_DECL_NOTHROW; + + bool contains(const QRectF &r) const Q_DECL_NOTHROW; + bool contains(const QPointF &p) const Q_DECL_NOTHROW; + inline bool contains(qreal x, qreal y) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT inline QRectF united(const QRectF &other) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT inline QRectF intersected(const QRectF &other) const Q_DECL_NOTHROW; + bool intersects(const QRectF &r) const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline QRectF marginsAdded(const QMarginsF &margins) const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline QRectF marginsRemoved(const QMarginsF &margins) const Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline QRectF &operator+=(const QMarginsF &margins) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline QRectF &operator-=(const QMarginsF &margins) Q_DECL_NOTHROW; + +#if QT_DEPRECATED_SINCE(5, 0) + Q_REQUIRED_RESULT QT_DEPRECATED QRectF unite(const QRectF &r) const Q_DECL_NOTHROW { return united(r); } + Q_REQUIRED_RESULT QT_DEPRECATED QRectF intersect(const QRectF &r) const Q_DECL_NOTHROW { return intersected(r); } +#endif + + friend Q_DECL_CONSTEXPR inline bool operator==(const QRectF &, const QRectF &) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR inline bool operator!=(const QRectF &, const QRectF &) Q_DECL_NOTHROW; + + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QRect toRect() const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT QRect toAlignedRect() const Q_DECL_NOTHROW; + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + Q_REQUIRED_RESULT static QRectF fromCGRect(CGRect rect) Q_DECL_NOTHROW; + Q_REQUIRED_RESULT CGRect toCGRect() const Q_DECL_NOTHROW; +#endif + +private: + qreal xp; + qreal yp; + qreal w; + qreal h; +}; +Q_DECLARE_TYPEINFO(QRectF, Q_MOVABLE_TYPE); + +Q_DECL_CONSTEXPR inline bool operator==(const QRectF &, const QRectF &) Q_DECL_NOTHROW; +Q_DECL_CONSTEXPR inline bool operator!=(const QRectF &, const QRectF &) Q_DECL_NOTHROW; + + +/***************************************************************************** + QRectF stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QRectF &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QRectF &); +#endif + +/***************************************************************************** + QRectF inline member functions + *****************************************************************************/ + +Q_DECL_CONSTEXPR inline QRectF::QRectF(qreal aleft, qreal atop, qreal awidth, qreal aheight) Q_DECL_NOTHROW + : xp(aleft), yp(atop), w(awidth), h(aheight) +{ +} + +Q_DECL_CONSTEXPR inline QRectF::QRectF(const QPointF &atopLeft, const QSizeF &asize) Q_DECL_NOTHROW + : xp(atopLeft.x()), yp(atopLeft.y()), w(asize.width()), h(asize.height()) +{ +} + + +Q_DECL_CONSTEXPR inline QRectF::QRectF(const QPointF &atopLeft, const QPointF &abottomRight) Q_DECL_NOTHROW + : xp(atopLeft.x()), yp(atopLeft.y()), w(abottomRight.x() - atopLeft.x()), h(abottomRight.y() - atopLeft.y()) +{ +} + +Q_DECL_CONSTEXPR inline QRectF::QRectF(const QRect &r) Q_DECL_NOTHROW + : xp(r.x()), yp(r.y()), w(r.width()), h(r.height()) +{ +} + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wfloat-equal") +QT_WARNING_DISABLE_GCC("-Wfloat-equal") + +Q_DECL_CONSTEXPR inline bool QRectF::isNull() const Q_DECL_NOTHROW +{ return w == 0. && h == 0.; } + +Q_DECL_CONSTEXPR inline bool QRectF::isEmpty() const Q_DECL_NOTHROW +{ return w <= 0. || h <= 0.; } + +QT_WARNING_POP + +Q_DECL_CONSTEXPR inline bool QRectF::isValid() const Q_DECL_NOTHROW +{ return w > 0. && h > 0.; } + +Q_DECL_CONSTEXPR inline qreal QRectF::x() const Q_DECL_NOTHROW +{ return xp; } + +Q_DECL_CONSTEXPR inline qreal QRectF::y() const Q_DECL_NOTHROW +{ return yp; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setLeft(qreal pos) Q_DECL_NOTHROW +{ qreal diff = pos - xp; xp += diff; w -= diff; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setRight(qreal pos) Q_DECL_NOTHROW +{ w = pos - xp; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setTop(qreal pos) Q_DECL_NOTHROW +{ qreal diff = pos - yp; yp += diff; h -= diff; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setBottom(qreal pos) Q_DECL_NOTHROW +{ h = pos - yp; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setTopLeft(const QPointF &p) Q_DECL_NOTHROW +{ setLeft(p.x()); setTop(p.y()); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setTopRight(const QPointF &p) Q_DECL_NOTHROW +{ setRight(p.x()); setTop(p.y()); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setBottomLeft(const QPointF &p) Q_DECL_NOTHROW +{ setLeft(p.x()); setBottom(p.y()); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setBottomRight(const QPointF &p) Q_DECL_NOTHROW +{ setRight(p.x()); setBottom(p.y()); } + +Q_DECL_CONSTEXPR inline QPointF QRectF::center() const Q_DECL_NOTHROW +{ return QPointF(xp + w/2, yp + h/2); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveLeft(qreal pos) Q_DECL_NOTHROW +{ xp = pos; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveTop(qreal pos) Q_DECL_NOTHROW +{ yp = pos; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveRight(qreal pos) Q_DECL_NOTHROW +{ xp = pos - w; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveBottom(qreal pos) Q_DECL_NOTHROW +{ yp = pos - h; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveTopLeft(const QPointF &p) Q_DECL_NOTHROW +{ moveLeft(p.x()); moveTop(p.y()); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveTopRight(const QPointF &p) Q_DECL_NOTHROW +{ moveRight(p.x()); moveTop(p.y()); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveBottomLeft(const QPointF &p) Q_DECL_NOTHROW +{ moveLeft(p.x()); moveBottom(p.y()); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveBottomRight(const QPointF &p) Q_DECL_NOTHROW +{ moveRight(p.x()); moveBottom(p.y()); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveCenter(const QPointF &p) Q_DECL_NOTHROW +{ xp = p.x() - w/2; yp = p.y() - h/2; } + +Q_DECL_CONSTEXPR inline qreal QRectF::width() const Q_DECL_NOTHROW +{ return w; } + +Q_DECL_CONSTEXPR inline qreal QRectF::height() const Q_DECL_NOTHROW +{ return h; } + +Q_DECL_CONSTEXPR inline QSizeF QRectF::size() const Q_DECL_NOTHROW +{ return QSizeF(w, h); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::translate(qreal dx, qreal dy) Q_DECL_NOTHROW +{ + xp += dx; + yp += dy; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::translate(const QPointF &p) Q_DECL_NOTHROW +{ + xp += p.x(); + yp += p.y(); +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveTo(qreal ax, qreal ay) Q_DECL_NOTHROW +{ + xp = ax; + yp = ay; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::moveTo(const QPointF &p) Q_DECL_NOTHROW +{ + xp = p.x(); + yp = p.y(); +} + +Q_DECL_CONSTEXPR inline QRectF QRectF::translated(qreal dx, qreal dy) const Q_DECL_NOTHROW +{ return QRectF(xp + dx, yp + dy, w, h); } + +Q_DECL_CONSTEXPR inline QRectF QRectF::translated(const QPointF &p) const Q_DECL_NOTHROW +{ return QRectF(xp + p.x(), yp + p.y(), w, h); } + +Q_DECL_CONSTEXPR inline QRectF QRectF::transposed() const Q_DECL_NOTHROW +{ return QRectF(topLeft(), size().transposed()); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::getRect(qreal *ax, qreal *ay, qreal *aaw, qreal *aah) const +{ + *ax = this->xp; + *ay = this->yp; + *aaw = this->w; + *aah = this->h; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setRect(qreal ax, qreal ay, qreal aaw, qreal aah) Q_DECL_NOTHROW +{ + this->xp = ax; + this->yp = ay; + this->w = aaw; + this->h = aah; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::getCoords(qreal *xp1, qreal *yp1, qreal *xp2, qreal *yp2) const +{ + *xp1 = xp; + *yp1 = yp; + *xp2 = xp + w; + *yp2 = yp + h; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setCoords(qreal xp1, qreal yp1, qreal xp2, qreal yp2) Q_DECL_NOTHROW +{ + xp = xp1; + yp = yp1; + w = xp2 - xp1; + h = yp2 - yp1; +} + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::adjust(qreal xp1, qreal yp1, qreal xp2, qreal yp2) Q_DECL_NOTHROW +{ xp += xp1; yp += yp1; w += xp2 - xp1; h += yp2 - yp1; } + +Q_DECL_CONSTEXPR inline QRectF QRectF::adjusted(qreal xp1, qreal yp1, qreal xp2, qreal yp2) const Q_DECL_NOTHROW +{ return QRectF(xp + xp1, yp + yp1, w + xp2 - xp1, h + yp2 - yp1); } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setWidth(qreal aw) Q_DECL_NOTHROW +{ this->w = aw; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setHeight(qreal ah) Q_DECL_NOTHROW +{ this->h = ah; } + +Q_DECL_RELAXED_CONSTEXPR inline void QRectF::setSize(const QSizeF &s) Q_DECL_NOTHROW +{ + w = s.width(); + h = s.height(); +} + +inline bool QRectF::contains(qreal ax, qreal ay) const Q_DECL_NOTHROW +{ + return contains(QPointF(ax, ay)); +} + +inline QRectF& QRectF::operator|=(const QRectF &r) Q_DECL_NOTHROW +{ + *this = *this | r; + return *this; +} + +inline QRectF& QRectF::operator&=(const QRectF &r) Q_DECL_NOTHROW +{ + *this = *this & r; + return *this; +} + +inline QRectF QRectF::intersected(const QRectF &r) const Q_DECL_NOTHROW +{ + return *this & r; +} + +inline QRectF QRectF::united(const QRectF &r) const Q_DECL_NOTHROW +{ + return *this | r; +} + +Q_DECL_CONSTEXPR inline bool operator==(const QRectF &r1, const QRectF &r2) Q_DECL_NOTHROW +{ + return qFuzzyCompare(r1.xp, r2.xp) && qFuzzyCompare(r1.yp, r2.yp) + && qFuzzyCompare(r1.w, r2.w) && qFuzzyCompare(r1.h, r2.h); +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QRectF &r1, const QRectF &r2) Q_DECL_NOTHROW +{ + return !qFuzzyCompare(r1.xp, r2.xp) || !qFuzzyCompare(r1.yp, r2.yp) + || !qFuzzyCompare(r1.w, r2.w) || !qFuzzyCompare(r1.h, r2.h); +} + +Q_DECL_CONSTEXPR inline QRect QRectF::toRect() const Q_DECL_NOTHROW +{ + return QRect(qRound(xp), qRound(yp), qRound(w), qRound(h)); +} + +Q_DECL_CONSTEXPR inline QRectF operator+(const QRectF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW +{ + return QRectF(QPointF(lhs.left() - rhs.left(), lhs.top() - rhs.top()), + QSizeF(lhs.width() + rhs.left() + rhs.right(), lhs.height() + rhs.top() + rhs.bottom())); +} + +Q_DECL_CONSTEXPR inline QRectF operator+(const QMarginsF &lhs, const QRectF &rhs) Q_DECL_NOTHROW +{ + return QRectF(QPointF(rhs.left() - lhs.left(), rhs.top() - lhs.top()), + QSizeF(rhs.width() + lhs.left() + lhs.right(), rhs.height() + lhs.top() + lhs.bottom())); +} + +Q_DECL_CONSTEXPR inline QRectF operator-(const QRectF &lhs, const QMarginsF &rhs) Q_DECL_NOTHROW +{ + return QRectF(QPointF(lhs.left() + rhs.left(), lhs.top() + rhs.top()), + QSizeF(lhs.width() - rhs.left() - rhs.right(), lhs.height() - rhs.top() - rhs.bottom())); +} + +Q_DECL_CONSTEXPR inline QRectF QRectF::marginsAdded(const QMarginsF &margins) const Q_DECL_NOTHROW +{ + return QRectF(QPointF(xp - margins.left(), yp - margins.top()), + QSizeF(w + margins.left() + margins.right(), h + margins.top() + margins.bottom())); +} + +Q_DECL_CONSTEXPR inline QRectF QRectF::marginsRemoved(const QMarginsF &margins) const Q_DECL_NOTHROW +{ + return QRectF(QPointF(xp + margins.left(), yp + margins.top()), + QSizeF(w - margins.left() - margins.right(), h - margins.top() - margins.bottom())); +} + +Q_DECL_RELAXED_CONSTEXPR inline QRectF &QRectF::operator+=(const QMarginsF &margins) Q_DECL_NOTHROW +{ + *this = marginsAdded(margins); + return *this; +} + +Q_DECL_RELAXED_CONSTEXPR inline QRectF &QRectF::operator-=(const QMarginsF &margins) Q_DECL_NOTHROW +{ + *this = marginsRemoved(margins); + return *this; +} + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QRectF &); +#endif + +QT_END_NAMESPACE + +#endif // QRECT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qrefcount.h b/qrenderdoc/3rdparty/qt/include/QtCore/qrefcount.h new file mode 100644 index 000000000..9586c3a79 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qrefcount.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QREFCOUNT_H +#define QREFCOUNT_H + +#include + +QT_BEGIN_NAMESPACE + + +namespace QtPrivate +{ + +class RefCount +{ +public: + inline bool ref() Q_DECL_NOTHROW { + int count = atomic.load(); +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + if (count == 0) // !isSharable + return false; +#endif + if (count != -1) // !isStatic + atomic.ref(); + return true; + } + + inline bool deref() Q_DECL_NOTHROW { + int count = atomic.load(); +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + if (count == 0) // !isSharable + return false; +#endif + if (count == -1) // isStatic + return true; + return atomic.deref(); + } + +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + bool setSharable(bool sharable) Q_DECL_NOTHROW + { + Q_ASSERT(!isShared()); + if (sharable) + return atomic.testAndSetRelaxed(0, 1); + else + return atomic.testAndSetRelaxed(1, 0); + } + + bool isSharable() const Q_DECL_NOTHROW + { + // Sharable === Shared ownership. + return atomic.load() != 0; + } +#endif + + bool isStatic() const Q_DECL_NOTHROW + { + // Persistent object, never deleted + return atomic.load() == -1; + } + + bool isShared() const Q_DECL_NOTHROW + { + int count = atomic.load(); + return (count != 1) && (count != 0); + } + + void initializeOwned() Q_DECL_NOTHROW { atomic.store(1); } + void initializeUnsharable() Q_DECL_NOTHROW { atomic.store(0); } + + QBasicAtomicInt atomic; +}; + +} + +#define Q_REFCOUNT_INITIALIZE_STATIC { Q_BASIC_ATOMIC_INITIALIZER(-1) } + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qregexp.h b/qrenderdoc/3rdparty/qt/include/QtCore/qregexp.h new file mode 100644 index 000000000..b3fa24216 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qregexp.h @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QREGEXP_H +#define QREGEXP_H + +#include + +#ifndef QT_NO_REGEXP + +#include + +QT_BEGIN_NAMESPACE + + +struct QRegExpPrivate; +class QStringList; +class QRegExp; + +Q_CORE_EXPORT uint qHash(const QRegExp &key, uint seed = 0) Q_DECL_NOTHROW; + +class Q_CORE_EXPORT QRegExp +{ +public: + enum PatternSyntax { + RegExp, + Wildcard, + FixedString, + RegExp2, + WildcardUnix, + W3CXmlSchema11 }; + enum CaretMode { CaretAtZero, CaretAtOffset, CaretWontMatch }; + + QRegExp(); + explicit QRegExp(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, + PatternSyntax syntax = RegExp); + QRegExp(const QRegExp &rx); + ~QRegExp(); + QRegExp &operator=(const QRegExp &rx); +#ifdef Q_COMPILER_RVALUE_REFS + QRegExp &operator=(QRegExp &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + void swap(QRegExp &other) Q_DECL_NOTHROW { qSwap(priv, other.priv); } + + bool operator==(const QRegExp &rx) const; + inline bool operator!=(const QRegExp &rx) const { return !operator==(rx); } + + bool isEmpty() const; + bool isValid() const; + QString pattern() const; + void setPattern(const QString &pattern); + Qt::CaseSensitivity caseSensitivity() const; + void setCaseSensitivity(Qt::CaseSensitivity cs); + PatternSyntax patternSyntax() const; + void setPatternSyntax(PatternSyntax syntax); + + bool isMinimal() const; + void setMinimal(bool minimal); + + bool exactMatch(const QString &str) const; + + int indexIn(const QString &str, int offset = 0, CaretMode caretMode = CaretAtZero) const; + int lastIndexIn(const QString &str, int offset = -1, CaretMode caretMode = CaretAtZero) const; + int matchedLength() const; +#ifndef QT_NO_REGEXP_CAPTURE + int captureCount() const; + QStringList capturedTexts() const; + QStringList capturedTexts(); + QString cap(int nth = 0) const; + QString cap(int nth = 0); + int pos(int nth = 0) const; + int pos(int nth = 0); + QString errorString() const; + QString errorString(); +#endif + + static QString escape(const QString &str); + + friend Q_CORE_EXPORT uint qHash(const QRegExp &key, uint seed) Q_DECL_NOTHROW; + +private: + QRegExpPrivate *priv; +}; + +Q_DECLARE_TYPEINFO(QRegExp, Q_MOVABLE_TYPE); + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &out, const QRegExp ®Exp); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &in, QRegExp ®Exp); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QRegExp &); +#endif + +QT_END_NAMESPACE + +#endif // QT_NO_REGEXP + +#endif // QREGEXP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qregularexpression.h b/qrenderdoc/3rdparty/qt/include/QtCore/qregularexpression.h new file mode 100644 index 000000000..fa1cc5660 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qregularexpression.h @@ -0,0 +1,267 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Giuseppe D'Angelo . +** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QREGULAREXPRESSION_H +#define QREGULAREXPRESSION_H + +#include + +#ifndef QT_NO_REGULAREXPRESSION + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QRegularExpressionMatch; +class QRegularExpressionMatchIterator; +struct QRegularExpressionPrivate; +class QRegularExpression; + +Q_CORE_EXPORT uint qHash(const QRegularExpression &key, uint seed = 0) Q_DECL_NOTHROW; + +class Q_CORE_EXPORT QRegularExpression +{ +public: + enum PatternOption { + NoPatternOption = 0x0000, + CaseInsensitiveOption = 0x0001, + DotMatchesEverythingOption = 0x0002, + MultilineOption = 0x0004, + ExtendedPatternSyntaxOption = 0x0008, + InvertedGreedinessOption = 0x0010, + DontCaptureOption = 0x0020, + UseUnicodePropertiesOption = 0x0040, + OptimizeOnFirstUsageOption = 0x0080, + DontAutomaticallyOptimizeOption = 0x0100 + }; + Q_DECLARE_FLAGS(PatternOptions, PatternOption) + + PatternOptions patternOptions() const; + void setPatternOptions(PatternOptions options); + + QRegularExpression(); + explicit QRegularExpression(const QString &pattern, PatternOptions options = NoPatternOption); + QRegularExpression(const QRegularExpression &re); + ~QRegularExpression(); + QRegularExpression &operator=(const QRegularExpression &re); + +#ifdef Q_COMPILER_RVALUE_REFS + QRegularExpression &operator=(QRegularExpression &&re) Q_DECL_NOTHROW + { d.swap(re.d); return *this; } +#endif + + void swap(QRegularExpression &other) Q_DECL_NOTHROW { d.swap(other.d); } + + QString pattern() const; + void setPattern(const QString &pattern); + + bool isValid() const; + int patternErrorOffset() const; + QString errorString() const; + + int captureCount() const; + QStringList namedCaptureGroups() const; + + enum MatchType { + NormalMatch = 0, + PartialPreferCompleteMatch, + PartialPreferFirstMatch, + NoMatch + }; + + enum MatchOption { + NoMatchOption = 0x0000, + AnchoredMatchOption = 0x0001, + DontCheckSubjectStringMatchOption = 0x0002 + }; + Q_DECLARE_FLAGS(MatchOptions, MatchOption) + + QRegularExpressionMatch match(const QString &subject, + int offset = 0, + MatchType matchType = NormalMatch, + MatchOptions matchOptions = NoMatchOption) const; + + QRegularExpressionMatch match(const QStringRef &subjectRef, + int offset = 0, + MatchType matchType = NormalMatch, + MatchOptions matchOptions = NoMatchOption) const; + + QRegularExpressionMatchIterator globalMatch(const QString &subject, + int offset = 0, + MatchType matchType = NormalMatch, + MatchOptions matchOptions = NoMatchOption) const; + + QRegularExpressionMatchIterator globalMatch(const QStringRef &subjectRef, + int offset = 0, + MatchType matchType = NormalMatch, + MatchOptions matchOptions = NoMatchOption) const; + + void optimize() const; + + static QString escape(const QString &str); + + bool operator==(const QRegularExpression &re) const; + inline bool operator!=(const QRegularExpression &re) const { return !operator==(re); } + +private: + friend struct QRegularExpressionPrivate; + friend class QRegularExpressionMatch; + friend struct QRegularExpressionMatchPrivate; + friend class QRegularExpressionMatchIterator; + friend Q_CORE_EXPORT uint qHash(const QRegularExpression &key, uint seed) Q_DECL_NOTHROW; + + QRegularExpression(QRegularExpressionPrivate &dd); + QExplicitlySharedDataPointer d; +}; + +Q_DECLARE_SHARED(QRegularExpression) +Q_DECLARE_OPERATORS_FOR_FLAGS(QRegularExpression::PatternOptions) +Q_DECLARE_OPERATORS_FOR_FLAGS(QRegularExpression::MatchOptions) + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &out, const QRegularExpression &re); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &in, QRegularExpression &re); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QRegularExpression &re); +Q_CORE_EXPORT QDebug operator<<(QDebug debug, QRegularExpression::PatternOptions patternOptions); +#endif + +struct QRegularExpressionMatchPrivate; + +class Q_CORE_EXPORT QRegularExpressionMatch +{ +public: + QRegularExpressionMatch(); + ~QRegularExpressionMatch(); + QRegularExpressionMatch(const QRegularExpressionMatch &match); + QRegularExpressionMatch &operator=(const QRegularExpressionMatch &match); + +#ifdef Q_COMPILER_RVALUE_REFS + QRegularExpressionMatch &operator=(QRegularExpressionMatch &&match) Q_DECL_NOTHROW + { d.swap(match.d); return *this; } +#endif + void swap(QRegularExpressionMatch &other) Q_DECL_NOTHROW { d.swap(other.d); } + + QRegularExpression regularExpression() const; + QRegularExpression::MatchType matchType() const; + QRegularExpression::MatchOptions matchOptions() const; + + bool hasMatch() const; + bool hasPartialMatch() const; + + bool isValid() const; + + int lastCapturedIndex() const; + + QString captured(int nth = 0) const; + QStringRef capturedRef(int nth = 0) const; + + QString captured(const QString &name) const; + QStringRef capturedRef(const QString &name) const; + + QStringList capturedTexts() const; + + int capturedStart(int nth = 0) const; + int capturedLength(int nth = 0) const; + int capturedEnd(int nth = 0) const; + + int capturedStart(const QString &name) const; + int capturedLength(const QString &name) const; + int capturedEnd(const QString &name) const; + +private: + friend class QRegularExpression; + friend struct QRegularExpressionMatchPrivate; + friend class QRegularExpressionMatchIterator; + + QRegularExpressionMatch(QRegularExpressionMatchPrivate &dd); + QSharedDataPointer d; +}; + +Q_DECLARE_SHARED(QRegularExpressionMatch) + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QRegularExpressionMatch &match); +#endif + +struct QRegularExpressionMatchIteratorPrivate; + +class Q_CORE_EXPORT QRegularExpressionMatchIterator +{ +public: + QRegularExpressionMatchIterator(); + ~QRegularExpressionMatchIterator(); + QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator); + QRegularExpressionMatchIterator &operator=(const QRegularExpressionMatchIterator &iterator); +#ifdef Q_COMPILER_RVALUE_REFS + QRegularExpressionMatchIterator &operator=(QRegularExpressionMatchIterator &&iterator) Q_DECL_NOTHROW + { d.swap(iterator.d); return *this; } +#endif + void swap(QRegularExpressionMatchIterator &other) Q_DECL_NOTHROW { d.swap(other.d); } + + bool isValid() const; + + bool hasNext() const; + QRegularExpressionMatch next(); + QRegularExpressionMatch peekNext() const; + + QRegularExpression regularExpression() const; + QRegularExpression::MatchType matchType() const; + QRegularExpression::MatchOptions matchOptions() const; + +private: + friend class QRegularExpression; + + QRegularExpressionMatchIterator(QRegularExpressionMatchIteratorPrivate &dd); + QSharedDataPointer d; +}; + +Q_DECLARE_SHARED(QRegularExpressionMatchIterator) + +QT_END_NAMESPACE + +#endif // QT_NO_REGULAREXPRESSION + +#endif // QREGULAREXPRESSION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qresource.h b/qrenderdoc/3rdparty/qt/include/QtCore/qresource.h new file mode 100644 index 000000000..895cf0456 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qresource.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRESOURCE_H +#define QRESOURCE_H + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class QResourcePrivate; + +class Q_CORE_EXPORT QResource +{ +public: + QResource(const QString &file=QString(), const QLocale &locale=QLocale()); + ~QResource(); + + void setFileName(const QString &file); + QString fileName() const; + QString absoluteFilePath() const; + + void setLocale(const QLocale &locale); + QLocale locale() const; + + bool isValid() const; + + bool isCompressed() const; + qint64 size() const; + const uchar *data() const; + QDateTime lastModified() const; + + static void addSearchPath(const QString &path); + static QStringList searchPaths(); + + static bool registerResource(const QString &rccFilename, const QString &resourceRoot=QString()); + static bool unregisterResource(const QString &rccFilename, const QString &resourceRoot=QString()); + + static bool registerResource(const uchar *rccData, const QString &resourceRoot=QString()); + static bool unregisterResource(const uchar *rccData, const QString &resourceRoot=QString()); + +protected: + friend class QResourceFileEngine; + friend class QResourceFileEngineIterator; + bool isDir() const; + inline bool isFile() const { return !isDir(); } + QStringList children() const; + +protected: + QScopedPointer d_ptr; + +private: + Q_DECLARE_PRIVATE(QResource) +}; + +QT_END_NAMESPACE + +#endif // QRESOURCE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qresultstore.h b/qrenderdoc/3rdparty/qt/include/QtCore/qresultstore.h new file mode 100644 index 000000000..be9f63255 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qresultstore.h @@ -0,0 +1,205 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTCORE_RESULTSTORE_H +#define QTCORE_RESULTSTORE_H + +#include + +#ifndef QT_NO_QFUTURE + +#include +#include + +QT_BEGIN_NAMESPACE + + +/* + ResultStore stores indexed results. Results can be added and retrieved + either individually batched in a QVector. Retriveing results and checking + which indexes are in the store can be done either by iterating or by random + accees. In addition results kan be removed from the front of the store, + either individually or in batches. +*/ + +#ifndef Q_QDOC + +namespace QtPrivate { + +class ResultItem +{ +public: + ResultItem(const void *_result, int _count) : m_count(_count), result(_result) { } // contruct with vector of results + ResultItem(const void *_result) : m_count(0), result(_result) { } // construct with result + ResultItem() : m_count(0), result(Q_NULLPTR) { } + bool isValid() const { return result != Q_NULLPTR; } + bool isVector() const { return m_count != 0; } + int count() const { return (m_count == 0) ? 1 : m_count; } + int m_count; // result is either a pointer to a result or to a vector of results, + const void *result; // if count is 0 it's a result, otherwise it's a vector. +}; + +class Q_CORE_EXPORT ResultIteratorBase +{ +public: + ResultIteratorBase(); + ResultIteratorBase(QMap::const_iterator _mapIterator, int _vectorIndex = 0); + int vectorIndex() const; + int resultIndex() const; + + ResultIteratorBase operator++(); + int batchSize() const; + void batchedAdvance(); + bool operator==(const ResultIteratorBase &other) const; + bool operator!=(const ResultIteratorBase &other) const; + bool isVector() const; + bool canIncrementVectorIndex() const; +protected: + QMap::const_iterator mapIterator; + int m_vectorIndex; +public: + template + const T &value() const + { + return *pointer(); + } + + template + const T *pointer() const + { + if (mapIterator.value().isVector()) + return &(reinterpret_cast *>(mapIterator.value().result)->at(m_vectorIndex)); + else + return reinterpret_cast(mapIterator.value().result); + } +}; + +class Q_CORE_EXPORT ResultStoreBase +{ +public: + ResultStoreBase(); + void setFilterMode(bool enable); + bool filterMode() const; + int addResult(int index, const void *result); + int addResults(int index, const void *results, int vectorSize, int logicalCount); + ResultIteratorBase begin() const; + ResultIteratorBase end() const; + bool hasNextResult() const; + ResultIteratorBase resultAt(int index) const; + bool contains(int index) const; + int count() const; + virtual ~ResultStoreBase(); + +protected: + int insertResultItem(int index, ResultItem &resultItem); + void insertResultItemIfValid(int index, ResultItem &resultItem); + void syncPendingResults(); + void syncResultCount(); + int updateInsertIndex(int index, int _count); + + QMap m_results; + int insertIndex; // The index where the next results(s) will be inserted. + int resultCount; // The number of consecutive results stored, starting at index 0. + + bool m_filterMode; + QMap pendingResults; + int filteredResults; + +public: + template + int addResult(int index, const T *result) + { + if (result == 0) + return addResult(index, static_cast(nullptr)); + else + return addResult(index, static_cast(new T(*result))); + } + + template + int addResults(int index, const QVector *results) + { + return addResults(index, new QVector(*results), results->count(), results->count()); + } + + template + int addResults(int index, const QVector *results, int totalCount) + { + if (m_filterMode == true && results->count() != totalCount && 0 == results->count()) + return addResults(index, 0, 0, totalCount); + else + return addResults(index, new QVector(*results), results->count(), totalCount); + } + + int addCanceledResult(int index) + { + return addResult(index, static_cast(nullptr)); + } + + template + int addCanceledResults(int index, int _count) + { + QVector empty; + return addResults(index, &empty, _count); + } + + template + void clear() + { + QMap::const_iterator mapIterator = m_results.constBegin(); + while (mapIterator != m_results.constEnd()) { + if (mapIterator.value().isVector()) + delete reinterpret_cast *>(mapIterator.value().result); + else + delete reinterpret_cast(mapIterator.value().result); + ++mapIterator; + } + resultCount = 0; + m_results.clear(); + } +}; + +} // namespace QtPrivate + +#endif //Q_QDOC + +QT_END_NAMESPACE + +#endif // QT_NO_QFUTURE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qrunnable.h b/qrenderdoc/3rdparty/qt/include/QtCore/qrunnable.h new file mode 100644 index 000000000..b8e842118 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qrunnable.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRUNNABLE_H +#define QRUNNABLE_H + +#include + +QT_BEGIN_NAMESPACE + +class Q_CORE_EXPORT QRunnable +{ + int ref; + + friend class QThreadPool; + friend class QThreadPoolPrivate; + friend class QThreadPoolThread; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + Q_DISABLE_COPY(QRunnable) +#endif +public: + virtual void run() = 0; + + QRunnable() : ref(0) { } + virtual ~QRunnable(); + + bool autoDelete() const { return ref != -1; } + void setAutoDelete(bool _autoDelete) { ref = _autoDelete ? 0 : -1; } +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsavefile.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsavefile.h new file mode 100644 index 000000000..09d6e2927 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsavefile.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2012 David Faure +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSAVEFILE_H +#define QSAVEFILE_H + +#include + +#ifndef QT_NO_TEMPORARYFILE + +#include +#include + +#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 +{ +#ifndef QT_NO_QOBJECT + Q_OBJECT +#endif + Q_DECLARE_PRIVATE(QSaveFile) + +public: + + explicit QSaveFile(const QString &name); +#ifndef QT_NO_QOBJECT + explicit QSaveFile(QObject *parent = Q_NULLPTR); + explicit QSaveFile(const QString &name, QObject *parent); +#endif + ~QSaveFile(); + + QString fileName() const Q_DECL_OVERRIDE; + void setFileName(const QString &name); + + bool open(OpenMode flags) Q_DECL_OVERRIDE; + bool commit(); + + void cancelWriting(); + + void setDirectWriteFallback(bool enabled); + bool directWriteFallback() const; + +protected: + qint64 writeData(const char *data, qint64 len) Q_DECL_OVERRIDE; + +private: + void close() Q_DECL_OVERRIDE; +#if !QT_CONFIG(translation) + static QString tr(const char *string) { return QString::fromLatin1(string); } +#endif + +private: + Q_DISABLE_COPY(QSaveFile) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_TEMPORARYFILE + +#endif // QSAVEFILE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qscopedpointer.h b/qrenderdoc/3rdparty/qt/include/QtCore/qscopedpointer.h new file mode 100644 index 000000000..92d7df6e5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qscopedpointer.h @@ -0,0 +1,271 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCOPEDPOINTER_H +#define QSCOPEDPOINTER_H + +#include + +#include + +QT_BEGIN_NAMESPACE + +template +struct QScopedPointerDeleter +{ + static inline void cleanup(T *pointer) + { + // Enforce a complete type. + // If you get a compile error here, read the section on forward declared + // classes in the QScopedPointer documentation. + typedef char IsIncompleteType[ sizeof(T) ? 1 : -1 ]; + (void) sizeof(IsIncompleteType); + + delete pointer; + } +}; + +template +struct QScopedPointerArrayDeleter +{ + static inline void cleanup(T *pointer) + { + // Enforce a complete type. + // If you get a compile error here, read the section on forward declared + // classes in the QScopedPointer documentation. + typedef char IsIncompleteType[ sizeof(T) ? 1 : -1 ]; + (void) sizeof(IsIncompleteType); + + delete [] pointer; + } +}; + +struct QScopedPointerPodDeleter +{ + static inline void cleanup(void *pointer) { if (pointer) free(pointer); } +}; + +#ifndef QT_NO_QOBJECT +template +struct QScopedPointerObjectDeleteLater +{ + static inline void cleanup(T *pointer) { if (pointer) pointer->deleteLater(); } +}; + +class QObject; +typedef QScopedPointerObjectDeleteLater QScopedPointerDeleteLater; +#endif + +template > +class QScopedPointer +{ + typedef T *QScopedPointer:: *RestrictedBool; +public: + explicit QScopedPointer(T *p = Q_NULLPTR) Q_DECL_NOTHROW : d(p) + { + } + + inline ~QScopedPointer() + { + T *oldD = this->d; + Cleanup::cleanup(oldD); + } + + inline T &operator*() const + { + Q_ASSERT(d); + return *d; + } + + T *operator->() const Q_DECL_NOTHROW + { + return d; + } + + bool operator!() const Q_DECL_NOTHROW + { + return !d; + } + +#if defined(Q_QDOC) + inline operator bool() const + { + return isNull() ? Q_NULLPTR : &QScopedPointer::d; + } +#else + operator RestrictedBool() const Q_DECL_NOTHROW + { + return isNull() ? Q_NULLPTR : &QScopedPointer::d; + } +#endif + + T *data() const Q_DECL_NOTHROW + { + return d; + } + + bool isNull() const Q_DECL_NOTHROW + { + return !d; + } + + void reset(T *other = Q_NULLPTR) Q_DECL_NOEXCEPT_EXPR(noexcept(Cleanup::cleanup(std::declval()))) + { + if (d == other) + return; + T *oldD = d; + d = other; + Cleanup::cleanup(oldD); + } + + T *take() Q_DECL_NOTHROW + { + T *oldD = d; + d = Q_NULLPTR; + return oldD; + } + + void swap(QScopedPointer &other) Q_DECL_NOTHROW + { + qSwap(d, other.d); + } + + typedef T *pointer; + +protected: + T *d; + +private: + Q_DISABLE_COPY(QScopedPointer) +}; + +template +inline bool operator==(const QScopedPointer &lhs, const QScopedPointer &rhs) Q_DECL_NOTHROW +{ + return lhs.data() == rhs.data(); +} + +template +inline bool operator!=(const QScopedPointer &lhs, const QScopedPointer &rhs) Q_DECL_NOTHROW +{ + return lhs.data() != rhs.data(); +} + +template +inline bool operator==(const QScopedPointer &lhs, std::nullptr_t) Q_DECL_NOTHROW +{ + return lhs.isNull(); +} + +template +inline bool operator==(std::nullptr_t, const QScopedPointer &rhs) Q_DECL_NOTHROW +{ + return rhs.isNull(); +} + +template +inline bool operator!=(const QScopedPointer &lhs, std::nullptr_t) Q_DECL_NOTHROW +{ + return !lhs.isNull(); +} + +template +inline bool operator!=(std::nullptr_t, const QScopedPointer &rhs) Q_DECL_NOTHROW +{ + return !rhs.isNull(); +} + +template +inline void swap(QScopedPointer &p1, QScopedPointer &p2) Q_DECL_NOTHROW +{ p1.swap(p2); } + + +namespace QtPrivate { + template struct QScopedArrayEnsureSameType; + template struct QScopedArrayEnsureSameType { typedef X* Type; }; + template struct QScopedArrayEnsureSameType { typedef X* Type; }; +} + +template > +class QScopedArrayPointer : public QScopedPointer +{ +public: + inline QScopedArrayPointer() : QScopedPointer(Q_NULLPTR) {} + + template + explicit inline QScopedArrayPointer(D *p, typename QtPrivate::QScopedArrayEnsureSameType::Type = Q_NULLPTR) + : QScopedPointer(p) + { + } + + inline T &operator[](int i) + { + return this->d[i]; + } + + inline const T &operator[](int i) const + { + return this->d[i]; + } + + void swap(QScopedArrayPointer &other) Q_DECL_NOTHROW // prevent QScopedPointer <->QScopedArrayPointer swaps + { QScopedPointer::swap(other); } + +private: + explicit inline QScopedArrayPointer(void *) { + // Enforce the same type. + + // If you get a compile error here, make sure you declare + // QScopedArrayPointer with the same template type as you pass to the + // constructor. See also the QScopedPointer documentation. + + // Storing a scalar array as a pointer to a different type is not + // allowed and results in undefined behavior. + } + + Q_DISABLE_COPY(QScopedArrayPointer) +}; + +template +inline void swap(QScopedArrayPointer &lhs, QScopedArrayPointer &rhs) Q_DECL_NOTHROW +{ lhs.swap(rhs); } + +QT_END_NAMESPACE + +#endif // QSCOPEDPOINTER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qscopedvaluerollback.h b/qrenderdoc/3rdparty/qt/include/QtCore/qscopedvaluerollback.h new file mode 100644 index 000000000..5f7626938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qscopedvaluerollback.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCOPEDVALUEROLLBACK_H +#define QSCOPEDVALUEROLLBACK_H + +#include + +QT_BEGIN_NAMESPACE + +template +class QScopedValueRollback +{ +public: + explicit QScopedValueRollback(T &var) : + varRef(var), oldValue(var) + { + } + + explicit QScopedValueRollback(T &var, T value) : + varRef(var), oldValue(var) + { + varRef = qMove(value); + } + + ~QScopedValueRollback() + { + varRef = qMove(oldValue); + } + + void commit() + { + oldValue = varRef; + } + +private: + T& varRef; + T oldValue; + + Q_DISABLE_COPY(QScopedValueRollback) +}; + +QT_END_NAMESPACE + +#endif // QSCOPEDVALUEROLLBACK_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsemaphore.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsemaphore.h new file mode 100644 index 000000000..adb9d73e5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsemaphore.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSEMAPHORE_H +#define QSEMAPHORE_H + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_THREAD + +class QSemaphorePrivate; + +class Q_CORE_EXPORT QSemaphore +{ +public: + explicit QSemaphore(int n = 0); + ~QSemaphore(); + + void acquire(int n = 1); + bool tryAcquire(int n = 1); + bool tryAcquire(int n, int timeout); + + void release(int n = 1); + + int available() const; + +private: + Q_DISABLE_COPY(QSemaphore) + + QSemaphorePrivate *d; +}; + +#endif // QT_NO_THREAD + +QT_END_NAMESPACE + +#endif // QSEMAPHORE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsequentialanimationgroup.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsequentialanimationgroup.h new file mode 100644 index 000000000..3caf93b05 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsequentialanimationgroup.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSEQUENTIALANIMATIONGROUP_H +#define QSEQUENTIALANIMATIONGROUP_H + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ANIMATION + +class QPauseAnimation; +class QSequentialAnimationGroupPrivate; + +class Q_CORE_EXPORT QSequentialAnimationGroup : public QAnimationGroup +{ + Q_OBJECT + Q_PROPERTY(QAbstractAnimation* currentAnimation READ currentAnimation NOTIFY currentAnimationChanged) + +public: + QSequentialAnimationGroup(QObject *parent = Q_NULLPTR); + ~QSequentialAnimationGroup(); + + QPauseAnimation *addPause(int msecs); + QPauseAnimation *insertPause(int index, int msecs); + + QAbstractAnimation *currentAnimation() const; + int duration() const Q_DECL_OVERRIDE; + +Q_SIGNALS: + void currentAnimationChanged(QAbstractAnimation *current); + +protected: + QSequentialAnimationGroup(QSequentialAnimationGroupPrivate &dd, QObject *parent); + bool event(QEvent *event) Q_DECL_OVERRIDE; + + void updateCurrentTime(int) Q_DECL_OVERRIDE; + void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) Q_DECL_OVERRIDE; + void updateDirection(QAbstractAnimation::Direction direction) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QSequentialAnimationGroup) + Q_DECLARE_PRIVATE(QSequentialAnimationGroup) + Q_PRIVATE_SLOT(d_func(), void _q_uncontrolledAnimationFinished()) +}; + +#endif //QT_NO_ANIMATION + +QT_END_NAMESPACE + +#endif //QSEQUENTIALANIMATIONGROUP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qset.h b/qrenderdoc/3rdparty/qt/include/QtCore/qset.h new file mode 100644 index 000000000..7ded120ab --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qset.h @@ -0,0 +1,438 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSET_H +#define QSET_H + +#include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + +#include + +QT_BEGIN_NAMESPACE + + +template +class QSet +{ + typedef QHash Hash; + +public: + inline QSet() Q_DECL_NOTHROW {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QSet(std::initializer_list list) + { + reserve(int(list.size())); + for (typename std::initializer_list::const_iterator it = list.begin(); it != list.end(); ++it) + insert(*it); + } +#endif + // compiler-generated copy/move ctor/assignment operators are fine! + // compiler-generated destructor is fine! + + inline void swap(QSet &other) Q_DECL_NOTHROW { q_hash.swap(other.q_hash); } + + inline bool operator==(const QSet &other) const + { return q_hash == other.q_hash; } + inline bool operator!=(const QSet &other) const + { return q_hash != other.q_hash; } + + inline int size() const { return q_hash.size(); } + + inline bool isEmpty() const { return q_hash.isEmpty(); } + + inline int capacity() const { return q_hash.capacity(); } + inline void reserve(int size); + inline void squeeze() { q_hash.squeeze(); } + + inline void detach() { q_hash.detach(); } + inline bool isDetached() const { return q_hash.isDetached(); } +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + inline void setSharable(bool sharable) { q_hash.setSharable(sharable); } +#endif + + inline void clear() { q_hash.clear(); } + + inline bool remove(const T &value) { return q_hash.remove(value) != 0; } + + inline bool contains(const T &value) const { return q_hash.contains(value); } + + bool contains(const QSet &set) const; + + class const_iterator; + + class iterator + { + typedef QHash Hash; + typename Hash::iterator i; + friend class const_iterator; + friend class QSet; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + inline iterator() {} + inline iterator(typename Hash::iterator o) : i(o) {} + inline iterator(const iterator &o) : i(o.i) {} + inline iterator &operator=(const iterator &o) { i = o.i; return *this; } + inline const T &operator*() const { return i.key(); } + inline const T *operator->() const { return &i.key(); } + inline bool operator==(const iterator &o) const { return i == o.i; } + inline bool operator!=(const iterator &o) const { return i != o.i; } + inline bool operator==(const const_iterator &o) const + { return i == o.i; } + inline bool operator!=(const const_iterator &o) const + { return i != o.i; } + inline iterator &operator++() { ++i; return *this; } + inline iterator operator++(int) { iterator r = *this; ++i; return r; } + inline iterator &operator--() { --i; return *this; } + inline iterator operator--(int) { iterator r = *this; --i; return r; } + inline iterator operator+(int j) const { return i + j; } + inline iterator operator-(int j) const { return i - j; } + inline iterator &operator+=(int j) { i += j; return *this; } + inline iterator &operator-=(int j) { i -= j; return *this; } + }; + + class const_iterator + { + typedef QHash Hash; + typename Hash::const_iterator i; + friend class iterator; + friend class QSet; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef qptrdiff difference_type; + typedef T value_type; + typedef const T *pointer; + typedef const T &reference; + + inline const_iterator() {} + inline const_iterator(typename Hash::const_iterator o) : i(o) {} + inline const_iterator(const const_iterator &o) : i(o.i) {} + inline const_iterator(const iterator &o) + : i(o.i) {} + inline const_iterator &operator=(const const_iterator &o) { i = o.i; return *this; } + inline const T &operator*() const { return i.key(); } + inline const T *operator->() const { return &i.key(); } + inline bool operator==(const const_iterator &o) const { return i == o.i; } + inline bool operator!=(const const_iterator &o) const { return i != o.i; } + inline const_iterator &operator++() { ++i; return *this; } + inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; } + inline const_iterator &operator--() { --i; return *this; } + inline const_iterator operator--(int) { const_iterator r = *this; --i; return r; } + inline const_iterator operator+(int j) const { return i + j; } + inline const_iterator operator-(int j) const { return i - j; } + inline const_iterator &operator+=(int j) { i += j; return *this; } + inline const_iterator &operator-=(int j) { i -= j; return *this; } + }; + + // STL style + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + inline iterator begin() { return q_hash.begin(); } + inline const_iterator begin() const Q_DECL_NOTHROW { return q_hash.begin(); } + inline const_iterator cbegin() const Q_DECL_NOTHROW { return q_hash.begin(); } + inline const_iterator constBegin() const Q_DECL_NOTHROW { return q_hash.constBegin(); } + inline iterator end() { return q_hash.end(); } + inline const_iterator end() const Q_DECL_NOTHROW { return q_hash.end(); } + inline const_iterator cend() const Q_DECL_NOTHROW { return q_hash.end(); } + inline const_iterator constEnd() const Q_DECL_NOTHROW { return q_hash.constEnd(); } + + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const Q_DECL_NOTHROW { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const Q_DECL_NOTHROW { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const Q_DECL_NOTHROW { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const Q_DECL_NOTHROW { return const_reverse_iterator(begin()); } + + iterator erase(iterator i) + { return erase(m2c(i)); } + iterator erase(const_iterator i) + { + Q_ASSERT_X(isValidIterator(i), "QSet::erase", "The specified const_iterator argument 'i' is invalid"); + return q_hash.erase(reinterpret_cast(i)); + } + + // more Qt + typedef iterator Iterator; + typedef const_iterator ConstIterator; + inline int count() const { return q_hash.count(); } + inline iterator insert(const T &value) + { return static_cast(q_hash.insert(value, QHashDummyValue())); } + iterator find(const T &value) { return q_hash.find(value); } + const_iterator find(const T &value) const { return q_hash.find(value); } + inline const_iterator constFind(const T &value) const { return find(value); } + QSet &unite(const QSet &other); + QSet &intersect(const QSet &other); + bool intersects(const QSet &other) const; + QSet &subtract(const QSet &other); + + // STL compatibility + typedef T key_type; + typedef T value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef value_type &reference; + typedef const value_type &const_reference; + typedef qptrdiff difference_type; + typedef int size_type; + + inline bool empty() const { return isEmpty(); } + // comfort + inline QSet &operator<<(const T &value) { insert(value); return *this; } + inline QSet &operator|=(const QSet &other) { unite(other); return *this; } + inline QSet &operator|=(const T &value) { insert(value); return *this; } + inline QSet &operator&=(const QSet &other) { intersect(other); return *this; } + inline QSet &operator&=(const T &value) + { QSet result; if (contains(value)) result.insert(value); return (*this = result); } + inline QSet &operator+=(const QSet &other) { unite(other); return *this; } + inline QSet &operator+=(const T &value) { insert(value); return *this; } + inline QSet &operator-=(const QSet &other) { subtract(other); return *this; } + inline QSet &operator-=(const T &value) { remove(value); return *this; } + inline QSet operator|(const QSet &other) const + { QSet result = *this; result |= other; return result; } + inline QSet operator&(const QSet &other) const + { QSet result = *this; result &= other; return result; } + inline QSet operator+(const QSet &other) const + { QSet result = *this; result += other; return result; } + inline QSet operator-(const QSet &other) const + { QSet result = *this; result -= other; return result; } + + QList toList() const; + inline QList values() const { return toList(); } + + static QSet fromList(const QList &list); + +private: + Hash q_hash; + + static const_iterator m2c(iterator it) Q_DECL_NOTHROW + { return const_iterator(typename Hash::const_iterator(it.i.i)); } + + bool isValidIterator(const iterator &i) const + { + return q_hash.isValidIterator(reinterpret_cast(i)); + } + bool isValidIterator(const const_iterator &i) const Q_DECL_NOTHROW + { + return q_hash.isValidIterator(reinterpret_cast(i)); + } +}; + +template +uint qHash(const QSet &key, uint seed = 0) +Q_DECL_NOEXCEPT_EXPR(noexcept(qHashRangeCommutative(key.begin(), key.end(), seed))) +{ + return qHashRangeCommutative(key.begin(), key.end(), seed); +} + +// inline function implementations + +template +Q_INLINE_TEMPLATE void QSet::reserve(int asize) { q_hash.reserve(asize); } + +template +Q_INLINE_TEMPLATE QSet &QSet::unite(const QSet &other) +{ + QSet copy(other); + typename QSet::const_iterator i = copy.constEnd(); + while (i != copy.constBegin()) { + --i; + insert(*i); + } + return *this; +} + +template +Q_INLINE_TEMPLATE QSet &QSet::intersect(const QSet &other) +{ + QSet copy1; + QSet copy2; + if (size() <= other.size()) { + copy1 = *this; + copy2 = other; + } else { + copy1 = other; + copy2 = *this; + *this = copy1; + } + typename QSet::const_iterator i = copy1.constEnd(); + while (i != copy1.constBegin()) { + --i; + if (!copy2.contains(*i)) + remove(*i); + } + return *this; +} + +template +Q_INLINE_TEMPLATE bool QSet::intersects(const QSet &other) const +{ + const bool otherIsBigger = other.size() > size(); + const QSet &smallestSet = otherIsBigger ? *this : other; + const QSet &biggestSet = otherIsBigger ? other : *this; + const bool equalSeeds = q_hash.d->seed == other.q_hash.d->seed; + typename QSet::const_iterator i = smallestSet.cbegin(); + typename QSet::const_iterator e = smallestSet.cend(); + + if (Q_LIKELY(equalSeeds)) { + // If seeds are equal we take the fast path so no hash is recalculated. + while (i != e) { + if (*biggestSet.q_hash.findNode(*i, i.i.i->h) != biggestSet.q_hash.e) + return true; + ++i; + } + } else { + while (i != e) { + if (biggestSet.contains(*i)) + return true; + ++i; + } + } + + return false; +} + +template +Q_INLINE_TEMPLATE QSet &QSet::subtract(const QSet &other) +{ + if (&other == this) { + clear(); + } else { + auto i = other.constEnd(); + while (i != other.constBegin()) { + --i; + remove(*i); + } + } + return *this; +} + +template +Q_INLINE_TEMPLATE bool QSet::contains(const QSet &other) const +{ + typename QSet::const_iterator i = other.constBegin(); + while (i != other.constEnd()) { + if (!contains(*i)) + return false; + ++i; + } + return true; +} + +template +Q_OUTOFLINE_TEMPLATE QList QSet::toList() const +{ + QList result; + result.reserve(size()); + typename QSet::const_iterator i = constBegin(); + while (i != constEnd()) { + result.append(*i); + ++i; + } + return result; +} + +template +Q_OUTOFLINE_TEMPLATE QSet QList::toSet() const +{ + QSet result; + result.reserve(size()); + for (int i = 0; i < size(); ++i) + result.insert(at(i)); + return result; +} + +template +QSet QSet::fromList(const QList &list) +{ + return list.toSet(); +} + +template +QList QList::fromSet(const QSet &set) +{ + return set.toList(); +} + +Q_DECLARE_SEQUENTIAL_ITERATOR(Set) + +template +class QMutableSetIterator +{ + typedef typename QSet::iterator iterator; + QSet *c; + iterator i, n; + inline bool item_exists() const { return c->constEnd() != n; } + +public: + inline QMutableSetIterator(QSet &container) + : c(&container) + { i = c->begin(); n = c->end(); } + inline QMutableSetIterator &operator=(QSet &container) + { c = &container; i = c->begin(); n = c->end(); return *this; } + inline void toFront() { i = c->begin(); n = c->end(); } + inline void toBack() { i = c->end(); n = i; } + inline bool hasNext() const { return c->constEnd() != i; } + inline const T &next() { n = i++; return *n; } + inline const T &peekNext() const { return *i; } + inline bool hasPrevious() const { return c->constBegin() != i; } + inline const T &previous() { n = --i; return *n; } + inline const T &peekPrevious() const { iterator p = i; return *--p; } + inline void remove() + { if (c->constEnd() != n) { i = c->erase(n); n = c->end(); } } + inline const T &value() const { Q_ASSERT(item_exists()); return *n; } + inline bool findNext(const T &t) + { while (c->constEnd() != (n = i)) if (*i++ == t) return true; return false; } + inline bool findPrevious(const T &t) + { while (c->constBegin() != i) if (*(n = --i) == t) return true; + n = c->end(); return false; } +}; + +QT_END_NAMESPACE + +#endif // QSET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsettings.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsettings.h new file mode 100644 index 000000000..edd59026e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsettings.h @@ -0,0 +1,211 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSETTINGS_H +#define QSETTINGS_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE +QT_END_NAMESPACE + +#ifndef QT_NO_SETTINGS + +#include + +QT_BEGIN_NAMESPACE + +#ifdef Status // we seem to pick up a macro Status --> int somewhere +#undef Status +#endif + +class QIODevice; +class QSettingsPrivate; + +#ifndef QT_NO_QOBJECT +class Q_CORE_EXPORT QSettings : public QObject +#else +class Q_CORE_EXPORT QSettings +#endif +{ +#ifndef QT_NO_QOBJECT + Q_OBJECT +#else + QScopedPointer d_ptr; +#endif + Q_DECLARE_PRIVATE(QSettings) + +public: + enum Status { + NoError = 0, + AccessError, + FormatError + }; +#ifndef QT_NO_QOBJECT + Q_ENUM(Status) +#endif + + enum Format { + NativeFormat, + IniFormat, + +#ifdef Q_OS_WIN + Registry32Format, + Registry64Format, +#endif + + InvalidFormat = 16, + CustomFormat1, + CustomFormat2, + CustomFormat3, + CustomFormat4, + CustomFormat5, + CustomFormat6, + CustomFormat7, + CustomFormat8, + CustomFormat9, + CustomFormat10, + CustomFormat11, + CustomFormat12, + CustomFormat13, + CustomFormat14, + CustomFormat15, + CustomFormat16 + }; +#ifndef QT_NO_QOBJECT + Q_ENUM(Format) +#endif + + enum Scope { + UserScope, + SystemScope + }; +#ifndef QT_NO_QOBJECT + Q_ENUM(Scope) +#endif + +#ifndef QT_NO_QOBJECT + explicit QSettings(const QString &organization, + const QString &application = QString(), QObject *parent = Q_NULLPTR); + QSettings(Scope scope, const QString &organization, + const QString &application = QString(), QObject *parent = Q_NULLPTR); + QSettings(Format format, Scope scope, const QString &organization, + const QString &application = QString(), QObject *parent = Q_NULLPTR); + QSettings(const QString &fileName, Format format, QObject *parent = Q_NULLPTR); + explicit QSettings(QObject *parent = Q_NULLPTR); +#else + explicit QSettings(const QString &organization, + const QString &application = QString()); + QSettings(Scope scope, const QString &organization, + const QString &application = QString()); + QSettings(Format format, Scope scope, const QString &organization, + const QString &application = QString()); + QSettings(const QString &fileName, Format format); +#endif + ~QSettings(); + + void clear(); + void sync(); + Status status() const; + + void beginGroup(const QString &prefix); + void endGroup(); + QString group() const; + + int beginReadArray(const QString &prefix); + void beginWriteArray(const QString &prefix, int size = -1); + void endArray(); + void setArrayIndex(int i); + + QStringList allKeys() const; + QStringList childKeys() const; + QStringList childGroups() const; + bool isWritable() const; + + void setValue(const QString &key, const QVariant &value); + QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; + + void remove(const QString &key); + bool contains(const QString &key) const; + + void setFallbacksEnabled(bool b); + bool fallbacksEnabled() const; + + QString fileName() const; + Format format() const; + Scope scope() const; + QString organizationName() const; + QString applicationName() const; + +#ifndef QT_NO_TEXTCODEC + void setIniCodec(QTextCodec *codec); + void setIniCodec(const char *codecName); + QTextCodec *iniCodec() const; +#endif + + static void setDefaultFormat(Format format); + static Format defaultFormat(); + static void setSystemIniPath(const QString &dir); // ### Qt 6: remove (use setPath() instead) + static void setUserIniPath(const QString &dir); // ### Qt 6: remove (use setPath() instead) + static void setPath(Format format, Scope scope, const QString &path); + + typedef QMap SettingsMap; + typedef bool (*ReadFunc)(QIODevice &device, SettingsMap &map); + typedef bool (*WriteFunc)(QIODevice &device, const SettingsMap &map); + + static Format registerFormat(const QString &extension, ReadFunc readFunc, WriteFunc writeFunc, + Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive); + +protected: +#ifndef QT_NO_QOBJECT + bool event(QEvent *event) Q_DECL_OVERRIDE; +#endif + +private: + Q_DISABLE_COPY(QSettings) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SETTINGS + +#endif // QSETTINGS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qshareddata.h b/qrenderdoc/3rdparty/qt/include/QtCore/qshareddata.h new file mode 100644 index 000000000..13b003260 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qshareddata.h @@ -0,0 +1,302 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSHAREDDATA_H +#define QSHAREDDATA_H + +#include +#include +#if QT_DEPRECATED_SINCE(5, 6) +#include +#endif +#include + +QT_BEGIN_NAMESPACE + + +template class QSharedDataPointer; + +class Q_CORE_EXPORT QSharedData +{ +public: + mutable QAtomicInt ref; + + inline QSharedData() : ref(0) { } + inline QSharedData(const QSharedData &) : ref(0) { } + +private: + // using the assignment operator would lead to corruption in the ref-counting + QSharedData &operator=(const QSharedData &); +}; + +template class QSharedDataPointer +{ +public: + typedef T Type; + typedef T *pointer; + + inline void detach() { if (d && d->ref.load() != 1) detach_helper(); } + inline T &operator*() { detach(); return *d; } + inline const T &operator*() const { return *d; } + inline T *operator->() { detach(); return d; } + inline const T *operator->() const { return d; } + inline operator T *() { detach(); return d; } + inline operator const T *() const { return d; } + inline T *data() { detach(); return d; } + inline const T *data() const { return d; } + inline const T *constData() const { return d; } + + inline bool operator==(const QSharedDataPointer &other) const { return d == other.d; } + inline bool operator!=(const QSharedDataPointer &other) const { return d != other.d; } + + inline QSharedDataPointer() { d = Q_NULLPTR; } + inline ~QSharedDataPointer() { if (d && !d->ref.deref()) delete d; } + + explicit QSharedDataPointer(T *data) Q_DECL_NOTHROW; + inline QSharedDataPointer(const QSharedDataPointer &o) : d(o.d) { if (d) d->ref.ref(); } + inline QSharedDataPointer & operator=(const QSharedDataPointer &o) { + if (o.d != d) { + if (o.d) + o.d->ref.ref(); + T *old = d; + d = o.d; + if (old && !old->ref.deref()) + delete old; + } + return *this; + } + inline QSharedDataPointer &operator=(T *o) { + if (o != d) { + if (o) + o->ref.ref(); + T *old = d; + d = o; + if (old && !old->ref.deref()) + delete old; + } + return *this; + } +#ifdef Q_COMPILER_RVALUE_REFS + QSharedDataPointer(QSharedDataPointer &&o) Q_DECL_NOTHROW : d(o.d) { o.d = Q_NULLPTR; } + inline QSharedDataPointer &operator=(QSharedDataPointer &&other) Q_DECL_NOTHROW + { qSwap(d, other.d); return *this; } +#endif + + inline bool operator!() const { return !d; } + + inline void swap(QSharedDataPointer &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + +protected: + T *clone(); + +private: + void detach_helper(); + + T *d; +}; + +template class QExplicitlySharedDataPointer +{ +public: + typedef T Type; + typedef T *pointer; + + inline T &operator*() const { return *d; } + inline T *operator->() { return d; } + inline T *operator->() const { return d; } + inline T *data() const { return d; } + inline const T *constData() const { return d; } + + inline void detach() { if (d && d->ref.load() != 1) detach_helper(); } + + inline void reset() + { + if(d && !d->ref.deref()) + delete d; + + d = Q_NULLPTR; + } + + inline operator bool () const { return d != Q_NULLPTR; } + + inline bool operator==(const QExplicitlySharedDataPointer &other) const { return d == other.d; } + inline bool operator!=(const QExplicitlySharedDataPointer &other) const { return d != other.d; } + inline bool operator==(const T *ptr) const { return d == ptr; } + inline bool operator!=(const T *ptr) const { return d != ptr; } + + inline QExplicitlySharedDataPointer() { d = Q_NULLPTR; } + inline ~QExplicitlySharedDataPointer() { if (d && !d->ref.deref()) delete d; } + + explicit QExplicitlySharedDataPointer(T *data) Q_DECL_NOTHROW; + inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer &o) : d(o.d) { if (d) d->ref.ref(); } + + template + inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer &o) +#ifdef QT_ENABLE_QEXPLICITLYSHAREDDATAPOINTER_STATICCAST + : d(static_cast(o.data())) +#else + : d(o.data()) +#endif + { + if(d) + d->ref.ref(); + } + + inline QExplicitlySharedDataPointer & operator=(const QExplicitlySharedDataPointer &o) { + if (o.d != d) { + if (o.d) + o.d->ref.ref(); + T *old = d; + d = o.d; + if (old && !old->ref.deref()) + delete old; + } + return *this; + } + inline QExplicitlySharedDataPointer &operator=(T *o) { + if (o != d) { + if (o) + o->ref.ref(); + T *old = d; + d = o; + if (old && !old->ref.deref()) + delete old; + } + return *this; + } +#ifdef Q_COMPILER_RVALUE_REFS + inline QExplicitlySharedDataPointer(QExplicitlySharedDataPointer &&o) Q_DECL_NOTHROW : d(o.d) { o.d = Q_NULLPTR; } + inline QExplicitlySharedDataPointer &operator=(QExplicitlySharedDataPointer &&other) Q_DECL_NOTHROW + { qSwap(d, other.d); return *this; } +#endif + + inline bool operator!() const { return !d; } + + inline void swap(QExplicitlySharedDataPointer &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + +protected: + T *clone(); + +private: + void detach_helper(); + + T *d; +}; + +template +Q_INLINE_TEMPLATE QSharedDataPointer::QSharedDataPointer(T *adata) Q_DECL_NOTHROW + : d(adata) +{ if (d) d->ref.ref(); } + +template +Q_INLINE_TEMPLATE T *QSharedDataPointer::clone() +{ + return new T(*d); +} + +template +Q_OUTOFLINE_TEMPLATE void QSharedDataPointer::detach_helper() +{ + T *x = clone(); + x->ref.ref(); + if (!d->ref.deref()) + delete d; + d = x; +} + +template +Q_INLINE_TEMPLATE T *QExplicitlySharedDataPointer::clone() +{ + return new T(*d); +} + +template +Q_OUTOFLINE_TEMPLATE void QExplicitlySharedDataPointer::detach_helper() +{ + T *x = clone(); + x->ref.ref(); + if (!d->ref.deref()) + delete d; + d = x; +} + +template +Q_INLINE_TEMPLATE QExplicitlySharedDataPointer::QExplicitlySharedDataPointer(T *adata) Q_DECL_NOTHROW + : d(adata) +{ if (d) d->ref.ref(); } + +template +Q_INLINE_TEMPLATE void qSwap(QSharedDataPointer &p1, QSharedDataPointer &p2) +{ p1.swap(p2); } + +template +Q_INLINE_TEMPLATE void qSwap(QExplicitlySharedDataPointer &p1, QExplicitlySharedDataPointer &p2) +{ p1.swap(p2); } + +QT_END_NAMESPACE +namespace std { + template + Q_INLINE_TEMPLATE void swap(QT_PREPEND_NAMESPACE(QSharedDataPointer) &p1, QT_PREPEND_NAMESPACE(QSharedDataPointer) &p2) + { p1.swap(p2); } + + template + Q_INLINE_TEMPLATE void swap(QT_PREPEND_NAMESPACE(QExplicitlySharedDataPointer) &p1, QT_PREPEND_NAMESPACE(QExplicitlySharedDataPointer) &p2) + { p1.swap(p2); } +} +QT_BEGIN_NAMESPACE + +template +Q_INLINE_TEMPLATE uint qHash(const QSharedDataPointer &ptr, uint seed = 0) Q_DECL_NOTHROW +{ + return qHash(ptr.data(), seed); +} +template +Q_INLINE_TEMPLATE uint qHash(const QExplicitlySharedDataPointer &ptr, uint seed = 0) Q_DECL_NOTHROW +{ + return qHash(ptr.data(), seed); +} + +template Q_DECLARE_TYPEINFO_BODY(QSharedDataPointer, Q_MOVABLE_TYPE); +template Q_DECLARE_TYPEINFO_BODY(QExplicitlySharedDataPointer, Q_MOVABLE_TYPE); + +QT_END_NAMESPACE + +#endif // QSHAREDDATA_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsharedmemory.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsharedmemory.h new file mode 100644 index 000000000..0d4edef23 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsharedmemory.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSHAREDMEMORY_H +#define QSHAREDMEMORY_H + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_SHAREDMEMORY + +class QSharedMemoryPrivate; + +class Q_CORE_EXPORT QSharedMemory : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QSharedMemory) + +public: + enum AccessMode + { + ReadOnly, + ReadWrite + }; + + enum SharedMemoryError + { + NoError, + PermissionDenied, + InvalidSize, + KeyError, + AlreadyExists, + NotFound, + LockError, + OutOfResources, + UnknownError + }; + + QSharedMemory(QObject *parent = Q_NULLPTR); + QSharedMemory(const QString &key, QObject *parent = Q_NULLPTR); + ~QSharedMemory(); + + void setKey(const QString &key); + QString key() const; + void setNativeKey(const QString &key); + QString nativeKey() const; + + bool create(int size, AccessMode mode = ReadWrite); + int size() const; + + bool attach(AccessMode mode = ReadWrite); + bool isAttached() const; + bool detach(); + + void *data(); + const void* constData() const; + const void *data() const; + +#ifndef QT_NO_SYSTEMSEMAPHORE + bool lock(); + bool unlock(); +#endif + + SharedMemoryError error() const; + QString errorString() const; + +private: + Q_DISABLE_COPY(QSharedMemory) +}; + +#endif // QT_NO_SHAREDMEMORY + +QT_END_NAMESPACE + +#endif // QSHAREDMEMORY_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsharedpointer.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsharedpointer.h new file mode 100644 index 000000000..3b86eb238 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsharedpointer.h @@ -0,0 +1,176 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSHAREDPOINTER_H +#define QSHAREDPOINTER_H + +#include +#include +#include + +#ifndef Q_QDOC +# include +#else + +QT_BEGIN_NAMESPACE + + +// These classes are here to fool qdoc into generating a better documentation + +template +class QSharedPointer +{ +public: + // basic accessor functions + T *data() const; + bool isNull() const; + operator bool() const; + bool operator!() const; + T &operator*() const; + T *operator ->() const; + + // constructors + QSharedPointer(); + template explicit QSharedPointer(X *ptr); + template QSharedPointer(X *ptr, Deleter d); + QSharedPointer(std::nullptr_t); + template QSharedPointer(std::nullptr_t, Deleter d); + QSharedPointer(const QSharedPointer &other); + QSharedPointer(const QWeakPointer &other); + + ~QSharedPointer() { } + + QSharedPointer &operator=(const QSharedPointer &other); + QSharedPointer &operator=(const QWeakPointer &other); + + void swap(QSharedPointer &other); + + QWeakPointer toWeakRef() const; + + void clear(); + + void reset(); + void reset(T *t); + template + void reset(T *t, Deleter deleter); + + // casts: + template QSharedPointer staticCast() const; + template QSharedPointer dynamicCast() const; + template QSharedPointer constCast() const; + template QSharedPointer objectCast() const; + + static inline QSharedPointer create(); + static inline QSharedPointer create(...); +}; + +template +class QWeakPointer +{ +public: + // basic accessor functions + bool isNull() const; + operator bool() const; + bool operator!() const; + + // constructors: + QWeakPointer(); + QWeakPointer(const QWeakPointer &other); + QWeakPointer(const QSharedPointer &other); + + ~QWeakPointer(); + + QWeakPointer &operator=(const QWeakPointer &other); + QWeakPointer &operator=(const QSharedPointer &other); + + QWeakPointer(const QObject *other); + QWeakPointer &operator=(const QObject *other); + + void swap(QWeakPointer &other); + + T *data() const; + void clear(); + + QSharedPointer toStrongRef() const; + QSharedPointer lock() const; +}; + +template +class QEnableSharedFromThis +{ +public: + QSharedPointer sharedFromThis(); + QSharedPointer sharedFromThis() const; +}; + +template bool operator==(const QSharedPointer &ptr1, const QSharedPointer &ptr2); +template bool operator!=(const QSharedPointer &ptr1, const QSharedPointer &ptr2); +template bool operator==(const QSharedPointer &ptr1, const X *ptr2); +template bool operator!=(const QSharedPointer &ptr1, const X *ptr2); +template bool operator==(const T *ptr1, const QSharedPointer &ptr2); +template bool operator!=(const T *ptr1, const QSharedPointer &ptr2); +template bool operator==(const QWeakPointer &ptr1, const QSharedPointer &ptr2); +template bool operator!=(const QWeakPointer &ptr1, const QSharedPointer &ptr2); +template bool operator==(const QSharedPointer &ptr1, const QWeakPointer &ptr2); +template bool operator!=(const QSharedPointer &ptr1, const QWeakPointer &ptr2); +template bool operator==(const QSharedPointer &lhs, std::nullptr_t); +template bool operator!=(const QSharedPointer &lhs, std::nullptr_t); +template bool operator==(std::nullptr_t, const QSharedPointer &rhs); +template bool operator!=(std::nullptr_t, const QSharedPointer &rhs); +template bool operator==(const QWeakPointer &lhs, std::nullptr_t); +template bool operator!=(const QWeakPointer &lhs, std::nullptr_t); +template bool operator==(std::nullptr_t, const QWeakPointer &rhs); +template bool operator!=(std::nullptr_t, const QWeakPointer &rhs); + +template QSharedPointer qSharedPointerCast(const QSharedPointer &other); +template QSharedPointer qSharedPointerCast(const QWeakPointer &other); +template QSharedPointer qSharedPointerDynamicCast(const QSharedPointer &src); +template QSharedPointer qSharedPointerDynamicCast(const QWeakPointer &src); +template QSharedPointer qSharedPointerConstCast(const QSharedPointer &src); +template QSharedPointer qSharedPointerConstCast(const QWeakPointer &src); +template QSharedPointer qSharedPointerObjectCast(const QSharedPointer &src); +template QSharedPointer qSharedPointerObjectCast(const QWeakPointer &src); + +template QWeakPointer qWeakPointerCast(const QWeakPointer &src); + +QT_END_NAMESPACE + +#endif // Q_QDOC + +#endif // QSHAREDPOINTER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsharedpointer_impl.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsharedpointer_impl.h new file mode 100644 index 000000000..ede54c155 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsharedpointer_impl.h @@ -0,0 +1,1003 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_QDOC + +#ifndef QSHAREDPOINTER_H +#error Do not include qsharedpointer_impl.h directly +#endif + +#if 0 +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + +#if 0 +// These macros are duplicated here to make syncqt not complain a about +// this header, as we have a "qt_sync_stop_processing" below, which in turn +// is here because this file contains a template mess and duplicates the +// classes found in qsharedpointer.h +QT_BEGIN_NAMESPACE +QT_END_NAMESPACE +#pragma qt_sync_stop_processing +#endif + +#include +#include +#include // for qobject_cast +#if QT_DEPRECATED_SINCE(5, 6) +#include +#endif +#include + +QT_BEGIN_NAMESPACE + + +// Macro QSHAREDPOINTER_VERIFY_AUTO_CAST +// generates a compiler error if the following construct isn't valid: +// T *ptr1; +// X *ptr2 = ptr1; +// +#ifdef QT_NO_DEBUG +# define QSHAREDPOINTER_VERIFY_AUTO_CAST(T, X) qt_noop() +#else + +template inline void qt_sharedpointer_cast_check(T *) { } +# define QSHAREDPOINTER_VERIFY_AUTO_CAST(T, X) \ + qt_sharedpointer_cast_check(static_cast(0)) +#endif + +// +// forward declarations +// +template class QWeakPointer; +template class QSharedPointer; +template class QEnableSharedFromThis; + +class QVariant; + +template +QSharedPointer qSharedPointerCast(const QSharedPointer &ptr); +template +QSharedPointer qSharedPointerDynamicCast(const QSharedPointer &ptr); +template +QSharedPointer qSharedPointerConstCast(const QSharedPointer &ptr); + +#ifndef QT_NO_QOBJECT +template +QSharedPointer qSharedPointerObjectCast(const QSharedPointer &ptr); +#endif + +namespace QtSharedPointer { + template class ExternalRefCount; + + template QSharedPointer copyAndSetPointer(X * ptr, const QSharedPointer &src); + + // used in debug mode to verify the reuse of pointers + Q_CORE_EXPORT void internalSafetyCheckAdd(const void *, const volatile void *); + Q_CORE_EXPORT void internalSafetyCheckRemove(const void *); + + template + inline void executeDeleter(T *t, RetVal (Klass:: *memberDeleter)()) + { (t->*memberDeleter)(); } + template + inline void executeDeleter(T *t, Deleter d) + { d(t); } + struct NormalDeleter {}; + + // this uses partial template specialization + template struct RemovePointer; + template struct RemovePointer { typedef T Type; }; + template struct RemovePointer > { typedef T Type; }; + template struct RemovePointer > { typedef T Type; }; + + // This class is the d-pointer of QSharedPointer and QWeakPointer. + // + // It is a reference-counted reference counter. "strongref" is the inner + // reference counter, and it tracks the lifetime of the pointer itself. + // "weakref" is the outer reference counter and it tracks the lifetime of + // the ExternalRefCountData object. + // + // The deleter is stored in the destroyer member and is always a pointer to + // a static function in ExternalRefCountWithCustomDeleter or in + // ExternalRefCountWithContiguousData + struct ExternalRefCountData + { + typedef void (*DestroyerFn)(ExternalRefCountData *); + QBasicAtomicInt weakref; + QBasicAtomicInt strongref; + DestroyerFn destroyer; + + inline ExternalRefCountData(DestroyerFn d) + : destroyer(d) + { + strongref.store(1); + weakref.store(1); + } + inline ExternalRefCountData(Qt::Initialization) { } + ~ExternalRefCountData() { Q_ASSERT(!weakref.load()); Q_ASSERT(strongref.load() <= 0); } + + void destroy() { destroyer(this); } + +#ifndef QT_NO_QOBJECT + Q_CORE_EXPORT static ExternalRefCountData *getAndRef(const QObject *); + Q_CORE_EXPORT void setQObjectShared(const QObject *, bool enable); + Q_CORE_EXPORT void checkQObjectShared(const QObject *); +#endif + inline void checkQObjectShared(...) { } + inline void setQObjectShared(...) { } + + inline void operator delete(void *ptr) { ::operator delete(ptr); } + inline void operator delete(void *, void *) { } + }; + // sizeof(ExternalRefCountData) = 12 (32-bit) / 16 (64-bit) + + template + struct CustomDeleter + { + Deleter deleter; + T *ptr; + + CustomDeleter(T *p, Deleter d) : deleter(d), ptr(p) {} + void execute() { executeDeleter(ptr, deleter); } + }; + // sizeof(CustomDeleter) = sizeof(Deleter) + sizeof(void*) + padding + // for Deleter = stateless functor: 8 (32-bit) / 16 (64-bit) due to padding + // for Deleter = function pointer: 8 (32-bit) / 16 (64-bit) + // for Deleter = PMF: 12 (32-bit) / 24 (64-bit) (GCC) + + // This specialization of CustomDeleter for a deleter of type NormalDeleter + // is an optimization: instead of storing a pointer to a function that does + // the deleting, we simply delete the pointer ourselves. + template + struct CustomDeleter + { + T *ptr; + + CustomDeleter(T *p, NormalDeleter) : ptr(p) {} + void execute() { delete ptr; } + }; + // sizeof(CustomDeleter specialization) = sizeof(void*) + + // This class extends ExternalRefCountData and implements + // the static function that deletes the object. The pointer and the + // custom deleter are kept in the "extra" member so we can construct + // and destruct it independently of the full structure. + template + struct ExternalRefCountWithCustomDeleter: public ExternalRefCountData + { + typedef ExternalRefCountWithCustomDeleter Self; + typedef ExternalRefCountData BaseClass; + CustomDeleter extra; + + static inline void deleter(ExternalRefCountData *self) + { + Self *realself = static_cast(self); + realself->extra.execute(); + + // delete the deleter too + realself->extra.~CustomDeleter(); + } + static void safetyCheckDeleter(ExternalRefCountData *self) + { + internalSafetyCheckRemove(self); + deleter(self); + } + + static inline Self *create(T *ptr, Deleter userDeleter, DestroyerFn actualDeleter) + { + Self *d = static_cast(::operator new(sizeof(Self))); + + // initialize the two sub-objects + new (&d->extra) CustomDeleter(ptr, userDeleter); + new (d) BaseClass(actualDeleter); // can't throw + + return d; + } + private: + // prevent construction + ExternalRefCountWithCustomDeleter() Q_DECL_EQ_DELETE; + ~ExternalRefCountWithCustomDeleter() Q_DECL_EQ_DELETE; + Q_DISABLE_COPY(ExternalRefCountWithCustomDeleter) + }; + + // This class extends ExternalRefCountData and adds a "T" + // member. That way, when the create() function is called, we allocate + // memory for both QSharedPointer's d-pointer and the actual object being + // tracked. + template + struct ExternalRefCountWithContiguousData: public ExternalRefCountData + { + typedef ExternalRefCountData Parent; + T data; + + static void deleter(ExternalRefCountData *self) + { + ExternalRefCountWithContiguousData *that = + static_cast(self); + that->data.~T(); + Q_UNUSED(that); // MSVC warns if T has a trivial destructor + } + static void safetyCheckDeleter(ExternalRefCountData *self) + { + internalSafetyCheckRemove(self); + deleter(self); + } + static void noDeleter(ExternalRefCountData *) { } + + static inline ExternalRefCountData *create(T **ptr, DestroyerFn destroy) + { + ExternalRefCountWithContiguousData *d = + static_cast(::operator new(sizeof(ExternalRefCountWithContiguousData))); + + // initialize the d-pointer sub-object + // leave d->data uninitialized + new (d) Parent(destroy); // can't throw + + *ptr = &d->data; + return d; + } + + private: + // prevent construction + ExternalRefCountWithContiguousData() Q_DECL_EQ_DELETE; + ~ExternalRefCountWithContiguousData() Q_DECL_EQ_DELETE; + Q_DISABLE_COPY(ExternalRefCountWithContiguousData) + }; + +#ifndef QT_NO_QOBJECT + Q_CORE_EXPORT QWeakPointer weakPointerFromVariant_internal(const QVariant &variant); + Q_CORE_EXPORT QSharedPointer sharedPointerFromVariant_internal(const QVariant &variant); +#endif +} // namespace QtSharedPointer + +template class QSharedPointer +{ + typedef T *QSharedPointer:: *RestrictedBool; + typedef QtSharedPointer::ExternalRefCountData Data; +public: + typedef T Type; + typedef T element_type; + typedef T value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef value_type &reference; + typedef const value_type &const_reference; + typedef qptrdiff difference_type; + + T *data() const Q_DECL_NOTHROW { return value; } + bool isNull() const Q_DECL_NOTHROW { return !data(); } + operator RestrictedBool() const Q_DECL_NOTHROW { return isNull() ? Q_NULLPTR : &QSharedPointer::value; } + bool operator !() const Q_DECL_NOTHROW { return isNull(); } + T &operator*() const { return *data(); } + T *operator->() const Q_DECL_NOTHROW { return data(); } + + Q_DECL_CONSTEXPR QSharedPointer() Q_DECL_NOTHROW : value(nullptr), d(nullptr) { } + ~QSharedPointer() { deref(); } + + Q_DECL_CONSTEXPR QSharedPointer(std::nullptr_t) Q_DECL_NOTHROW : value(nullptr), d(nullptr) { } + + template + inline explicit QSharedPointer(X *ptr) : value(ptr) // noexcept + { internalConstruct(ptr, QtSharedPointer::NormalDeleter()); } + + template + inline QSharedPointer(X *ptr, Deleter deleter) : value(ptr) // throws + { internalConstruct(ptr, deleter); } + + template + QSharedPointer(std::nullptr_t, Deleter) : value(nullptr), d(nullptr) { } + + QSharedPointer(const QSharedPointer &other) Q_DECL_NOTHROW : value(other.value), d(other.d) + { if (d) ref(); } + QSharedPointer &operator=(const QSharedPointer &other) Q_DECL_NOTHROW + { + QSharedPointer copy(other); + swap(copy); + return *this; + } +#ifdef Q_COMPILER_RVALUE_REFS + QSharedPointer(QSharedPointer &&other) Q_DECL_NOTHROW + : value(other.value), d(other.d) + { + other.d = Q_NULLPTR; + other.value = Q_NULLPTR; + } + QSharedPointer &operator=(QSharedPointer &&other) Q_DECL_NOTHROW + { + QSharedPointer moved(std::move(other)); + swap(moved); + return *this; + } + + template + QSharedPointer(QSharedPointer &&other) Q_DECL_NOTHROW + : value(other.value), d(other.d) + { + other.d = Q_NULLPTR; + other.value = Q_NULLPTR; + } + + template + QSharedPointer &operator=(QSharedPointer &&other) Q_DECL_NOTHROW + { + QSharedPointer moved(std::move(other)); + swap(moved); + return *this; + } + +#endif + + template + QSharedPointer(const QSharedPointer &other) Q_DECL_NOTHROW : value(other.value), d(other.d) + { if (d) ref(); } + + template + inline QSharedPointer &operator=(const QSharedPointer &other) + { + QSharedPointer copy(other); + swap(copy); + return *this; + } + + template + inline QSharedPointer(const QWeakPointer &other) : value(Q_NULLPTR), d(Q_NULLPTR) + { *this = other; } + + template + inline QSharedPointer &operator=(const QWeakPointer &other) + { internalSet(other.d, other.value); return *this; } + + inline void swap(QSharedPointer &other) + { this->internalSwap(other); } + + inline void reset() { clear(); } + inline void reset(T *t) + { QSharedPointer copy(t); swap(copy); } + template + inline void reset(T *t, Deleter deleter) + { QSharedPointer copy(t, deleter); swap(copy); } + + template + QSharedPointer staticCast() const + { + return qSharedPointerCast(*this); + } + + template + QSharedPointer dynamicCast() const + { + return qSharedPointerDynamicCast(*this); + } + + template + QSharedPointer constCast() const + { + return qSharedPointerConstCast(*this); + } + +#ifndef QT_NO_QOBJECT + template + QSharedPointer objectCast() const + { + return qSharedPointerObjectCast(*this); + } +#endif + + inline void clear() { QSharedPointer copy; swap(copy); } + + QWeakPointer toWeakRef() const; + + template + static QSharedPointer create(Args && ...arguments) + { + typedef QtSharedPointer::ExternalRefCountWithContiguousData Private; +# ifdef QT_SHAREDPOINTER_TRACK_POINTERS + typename Private::DestroyerFn destroy = &Private::safetyCheckDeleter; +# else + typename Private::DestroyerFn destroy = &Private::deleter; +# endif + typename Private::DestroyerFn noDestroy = &Private::noDeleter; + QSharedPointer result(Qt::Uninitialized); + result.d = Private::create(&result.value, noDestroy); + + // now initialize the data + new (result.data()) T(std::forward(arguments)...); + result.d->destroyer = destroy; + result.d->setQObjectShared(result.value, true); +# ifdef QT_SHAREDPOINTER_TRACK_POINTERS + internalSafetyCheckAdd(result.d, result.value); +# endif + result.enableSharedFromThis(result.data()); + return result; + } + +private: + explicit QSharedPointer(Qt::Initialization) {} + + void deref() Q_DECL_NOTHROW + { deref(d); } + static void deref(Data *dd) Q_DECL_NOTHROW + { + if (!dd) return; + if (!dd->strongref.deref()) { + dd->destroy(); + } + if (!dd->weakref.deref()) + delete dd; + } + + template + inline void enableSharedFromThis(const QEnableSharedFromThis *ptr) + { + ptr->initializeFromSharedPointer(constCast::type>()); + } + + inline void enableSharedFromThis(...) {} + + template + inline void internalConstruct(X *ptr, Deleter deleter) + { + if (!ptr) { + d = Q_NULLPTR; + return; + } + + typedef QtSharedPointer::ExternalRefCountWithCustomDeleter Private; +# ifdef QT_SHAREDPOINTER_TRACK_POINTERS + typename Private::DestroyerFn actualDeleter = &Private::safetyCheckDeleter; +# else + typename Private::DestroyerFn actualDeleter = &Private::deleter; +# endif + d = Private::create(ptr, deleter, actualDeleter); + +#ifdef QT_SHAREDPOINTER_TRACK_POINTERS + internalSafetyCheckAdd(d, ptr); +#endif + d->setQObjectShared(ptr, true); + enableSharedFromThis(ptr); + } + + void internalSwap(QSharedPointer &other) Q_DECL_NOTHROW + { + qSwap(d, other.d); + qSwap(this->value, other.value); + } + +#if defined(Q_NO_TEMPLATE_FRIENDS) +public: +#else + template friend class QSharedPointer; + template friend class QWeakPointer; + template friend QSharedPointer QtSharedPointer::copyAndSetPointer(X * ptr, const QSharedPointer &src); +#endif + void ref() const Q_DECL_NOTHROW { d->weakref.ref(); d->strongref.ref(); } + + inline void internalSet(Data *o, T *actual) + { + if (o) { + // increase the strongref, but never up from zero + // or less (-1 is used by QWeakPointer on untracked QObject) + int tmp = o->strongref.load(); + while (tmp > 0) { + // try to increment from "tmp" to "tmp + 1" + if (o->strongref.testAndSetRelaxed(tmp, tmp + 1)) + break; // succeeded + tmp = o->strongref.load(); // failed, try again + } + + if (tmp > 0) { + o->weakref.ref(); + } else { + o->checkQObjectShared(actual); + o = Q_NULLPTR; + } + } + + qSwap(d, o); + qSwap(this->value, actual); + if (!d || d->strongref.load() == 0) + this->value = Q_NULLPTR; + + // dereference saved data + deref(o); + } + + Type *value; + Data *d; +}; + +template +class QWeakPointer +{ + typedef T *QWeakPointer:: *RestrictedBool; + typedef QtSharedPointer::ExternalRefCountData Data; + +public: + typedef T element_type; + typedef T value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef value_type &reference; + typedef const value_type &const_reference; + typedef qptrdiff difference_type; + + bool isNull() const Q_DECL_NOTHROW { return d == Q_NULLPTR || d->strongref.load() == 0 || value == Q_NULLPTR; } + operator RestrictedBool() const Q_DECL_NOTHROW { return isNull() ? Q_NULLPTR : &QWeakPointer::value; } + bool operator !() const Q_DECL_NOTHROW { return isNull(); } + T *data() const Q_DECL_NOTHROW { return d == Q_NULLPTR || d->strongref.load() == 0 ? Q_NULLPTR : value; } + + inline QWeakPointer() Q_DECL_NOTHROW : d(Q_NULLPTR), value(Q_NULLPTR) { } + inline ~QWeakPointer() { if (d && !d->weakref.deref()) delete d; } + +#ifndef QT_NO_QOBJECT + // special constructor that is enabled only if X derives from QObject +#if QT_DEPRECATED_SINCE(5, 0) + template + QT_DEPRECATED inline QWeakPointer(X *ptr) : d(ptr ? Data::getAndRef(ptr) : Q_NULLPTR), value(ptr) + { } +#endif +#endif + +#if QT_DEPRECATED_SINCE(5, 0) + template + QT_DEPRECATED inline QWeakPointer &operator=(X *ptr) + { return *this = QWeakPointer(ptr); } +#endif + + QWeakPointer(const QWeakPointer &other) Q_DECL_NOTHROW : d(other.d), value(other.value) + { if (d) d->weakref.ref(); } +#ifdef Q_COMPILER_RVALUE_REFS + QWeakPointer(QWeakPointer &&other) Q_DECL_NOTHROW + : d(other.d), value(other.value) + { + other.d = Q_NULLPTR; + other.value = Q_NULLPTR; + } + QWeakPointer &operator=(QWeakPointer &&other) Q_DECL_NOTHROW + { QWeakPointer moved(std::move(other)); swap(moved); return *this; } +#endif + QWeakPointer &operator=(const QWeakPointer &other) Q_DECL_NOTHROW + { + QWeakPointer copy(other); + swap(copy); + return *this; + } + + void swap(QWeakPointer &other) Q_DECL_NOTHROW + { + qSwap(this->d, other.d); + qSwap(this->value, other.value); + } + + inline QWeakPointer(const QSharedPointer &o) : d(o.d), value(o.data()) + { if (d) d->weakref.ref();} + inline QWeakPointer &operator=(const QSharedPointer &o) + { + internalSet(o.d, o.value); + return *this; + } + + template + inline QWeakPointer(const QWeakPointer &o) : d(Q_NULLPTR), value(Q_NULLPTR) + { *this = o; } + + template + inline QWeakPointer &operator=(const QWeakPointer &o) + { + // conversion between X and T could require access to the virtual table + // so force the operation to go through QSharedPointer + *this = o.toStrongRef(); + return *this; + } + + template + bool operator==(const QWeakPointer &o) const Q_DECL_NOTHROW + { return d == o.d && value == static_cast(o.value); } + + template + bool operator!=(const QWeakPointer &o) const Q_DECL_NOTHROW + { return !(*this == o); } + + template + inline QWeakPointer(const QSharedPointer &o) : d(Q_NULLPTR), value(Q_NULLPTR) + { *this = o; } + + template + inline QWeakPointer &operator=(const QSharedPointer &o) + { + QSHAREDPOINTER_VERIFY_AUTO_CAST(T, X); // if you get an error in this line, the cast is invalid + internalSet(o.d, o.data()); + return *this; + } + + template + bool operator==(const QSharedPointer &o) const Q_DECL_NOTHROW + { return d == o.d; } + + template + bool operator!=(const QSharedPointer &o) const Q_DECL_NOTHROW + { return !(*this == o); } + + inline void clear() { *this = QWeakPointer(); } + + inline QSharedPointer toStrongRef() const { return QSharedPointer(*this); } + // std::weak_ptr compatibility: + inline QSharedPointer lock() const { return toStrongRef(); } + +#if defined(QWEAKPOINTER_ENABLE_ARROW) + inline T *operator->() const { return data(); } +#endif + +private: + +#if defined(Q_NO_TEMPLATE_FRIENDS) +public: +#else + template friend class QSharedPointer; + template friend class QPointer; +#endif + + template + inline QWeakPointer &assign(X *ptr) + { return *this = QWeakPointer(ptr, true); } + +#ifndef QT_NO_QOBJECT + template + inline QWeakPointer(X *ptr, bool) : d(ptr ? Data::getAndRef(ptr) : Q_NULLPTR), value(ptr) + { } +#endif + + inline void internalSet(Data *o, T *actual) + { + if (d == o) return; + if (o) + o->weakref.ref(); + if (d && !d->weakref.deref()) + delete d; + d = o; + value = actual; + } + + Data *d; + T *value; +}; + +template +class QEnableSharedFromThis +{ +protected: +#ifdef Q_COMPILER_DEFAULT_MEMBERS + QEnableSharedFromThis() = default; +#else + Q_DECL_CONSTEXPR QEnableSharedFromThis() {} +#endif + QEnableSharedFromThis(const QEnableSharedFromThis &) {} + QEnableSharedFromThis &operator=(const QEnableSharedFromThis &) { return *this; } + +public: + inline QSharedPointer sharedFromThis() { return QSharedPointer(weakPointer); } + inline QSharedPointer sharedFromThis() const { return QSharedPointer(weakPointer); } + +#ifndef Q_NO_TEMPLATE_FRIENDS +private: + template friend class QSharedPointer; +#else +public: +#endif + template + inline void initializeFromSharedPointer(const QSharedPointer &ptr) const + { + weakPointer = ptr; + } + + mutable QWeakPointer weakPointer; +}; + +// +// operator== and operator!= +// +template +bool operator==(const QSharedPointer &ptr1, const QSharedPointer &ptr2) Q_DECL_NOTHROW +{ + return ptr1.data() == ptr2.data(); +} +template +bool operator!=(const QSharedPointer &ptr1, const QSharedPointer &ptr2) Q_DECL_NOTHROW +{ + return ptr1.data() != ptr2.data(); +} + +template +bool operator==(const QSharedPointer &ptr1, const X *ptr2) Q_DECL_NOTHROW +{ + return ptr1.data() == ptr2; +} +template +bool operator==(const T *ptr1, const QSharedPointer &ptr2) Q_DECL_NOTHROW +{ + return ptr1 == ptr2.data(); +} +template +bool operator!=(const QSharedPointer &ptr1, const X *ptr2) Q_DECL_NOTHROW +{ + return !(ptr1 == ptr2); +} +template +bool operator!=(const T *ptr1, const QSharedPointer &ptr2) Q_DECL_NOTHROW +{ + return !(ptr2 == ptr1); +} + +template +bool operator==(const QSharedPointer &ptr1, const QWeakPointer &ptr2) Q_DECL_NOTHROW +{ + return ptr2 == ptr1; +} +template +bool operator!=(const QSharedPointer &ptr1, const QWeakPointer &ptr2) Q_DECL_NOTHROW +{ + return ptr2 != ptr1; +} + +template +inline bool operator==(const QSharedPointer &lhs, std::nullptr_t) Q_DECL_NOTHROW +{ + return lhs.isNull(); +} + +template +inline bool operator!=(const QSharedPointer &lhs, std::nullptr_t) Q_DECL_NOTHROW +{ + return !lhs.isNull(); +} + +template +inline bool operator==(std::nullptr_t, const QSharedPointer &rhs) Q_DECL_NOTHROW +{ + return rhs.isNull(); +} + +template +inline bool operator!=(std::nullptr_t, const QSharedPointer &rhs) Q_DECL_NOTHROW +{ + return !rhs.isNull(); +} + +template +inline bool operator==(const QWeakPointer &lhs, std::nullptr_t) Q_DECL_NOTHROW +{ + return lhs.isNull(); +} + +template +inline bool operator!=(const QWeakPointer &lhs, std::nullptr_t) Q_DECL_NOTHROW +{ + return !lhs.isNull(); +} + +template +inline bool operator==(std::nullptr_t, const QWeakPointer &rhs) Q_DECL_NOTHROW +{ + return rhs.isNull(); +} + +template +inline bool operator!=(std::nullptr_t, const QWeakPointer &rhs) Q_DECL_NOTHROW +{ + return !rhs.isNull(); +} + +// +// operator- +// +template +Q_INLINE_TEMPLATE typename QSharedPointer::difference_type operator-(const QSharedPointer &ptr1, const QSharedPointer &ptr2) +{ + return ptr1.data() - ptr2.data(); +} +template +Q_INLINE_TEMPLATE typename QSharedPointer::difference_type operator-(const QSharedPointer &ptr1, X *ptr2) +{ + return ptr1.data() - ptr2; +} +template +Q_INLINE_TEMPLATE typename QSharedPointer::difference_type operator-(T *ptr1, const QSharedPointer &ptr2) +{ + return ptr1 - ptr2.data(); +} + +// +// operator< +// +template +Q_INLINE_TEMPLATE bool operator<(const QSharedPointer &ptr1, const QSharedPointer &ptr2) +{ + using CT = typename std::common_type::type; + return std::less()(ptr1.data(), ptr2.data()); +} +template +Q_INLINE_TEMPLATE bool operator<(const QSharedPointer &ptr1, X *ptr2) +{ + using CT = typename std::common_type::type; + return std::less()(ptr1.data(), ptr2); +} +template +Q_INLINE_TEMPLATE bool operator<(T *ptr1, const QSharedPointer &ptr2) +{ + using CT = typename std::common_type::type; + return std::less()(ptr1, ptr2.data()); +} + +// +// qHash +// +template +Q_INLINE_TEMPLATE uint qHash(const QSharedPointer &ptr, uint seed = 0) +{ + return QT_PREPEND_NAMESPACE(qHash)(ptr.data(), seed); +} + + +template +Q_INLINE_TEMPLATE QWeakPointer QSharedPointer::toWeakRef() const +{ + return QWeakPointer(*this); +} + +template +inline void qSwap(QSharedPointer &p1, QSharedPointer &p2) +{ + p1.swap(p2); +} + +QT_END_NAMESPACE +namespace std { + template + inline void swap(QT_PREPEND_NAMESPACE(QSharedPointer) &p1, QT_PREPEND_NAMESPACE(QSharedPointer) &p2) + { p1.swap(p2); } +} +QT_BEGIN_NAMESPACE + +namespace QtSharedPointer { +// helper functions: + template + Q_INLINE_TEMPLATE QSharedPointer copyAndSetPointer(X *ptr, const QSharedPointer &src) + { + QSharedPointer result; + result.internalSet(src.d, ptr); + return result; + } +} + +// cast operators +template +Q_INLINE_TEMPLATE QSharedPointer qSharedPointerCast(const QSharedPointer &src) +{ + X *ptr = static_cast(src.data()); // if you get an error in this line, the cast is invalid + return QtSharedPointer::copyAndSetPointer(ptr, src); +} +template +Q_INLINE_TEMPLATE QSharedPointer qSharedPointerCast(const QWeakPointer &src) +{ + return qSharedPointerCast(src.toStrongRef()); +} + +template +Q_INLINE_TEMPLATE QSharedPointer qSharedPointerDynamicCast(const QSharedPointer &src) +{ + X *ptr = dynamic_cast(src.data()); // if you get an error in this line, the cast is invalid + if (!ptr) + return QSharedPointer(); + return QtSharedPointer::copyAndSetPointer(ptr, src); +} +template +Q_INLINE_TEMPLATE QSharedPointer qSharedPointerDynamicCast(const QWeakPointer &src) +{ + return qSharedPointerDynamicCast(src.toStrongRef()); +} + +template +Q_INLINE_TEMPLATE QSharedPointer qSharedPointerConstCast(const QSharedPointer &src) +{ + X *ptr = const_cast(src.data()); // if you get an error in this line, the cast is invalid + return QtSharedPointer::copyAndSetPointer(ptr, src); +} +template +Q_INLINE_TEMPLATE QSharedPointer qSharedPointerConstCast(const QWeakPointer &src) +{ + return qSharedPointerConstCast(src.toStrongRef()); +} + +template +Q_INLINE_TEMPLATE +QWeakPointer qWeakPointerCast(const QSharedPointer &src) +{ + return qSharedPointerCast(src).toWeakRef(); +} + +#ifndef QT_NO_QOBJECT +template +Q_INLINE_TEMPLATE QSharedPointer qSharedPointerObjectCast(const QSharedPointer &src) +{ + X *ptr = qobject_cast(src.data()); + return QtSharedPointer::copyAndSetPointer(ptr, src); +} +template +Q_INLINE_TEMPLATE QSharedPointer qSharedPointerObjectCast(const QWeakPointer &src) +{ + return qSharedPointerObjectCast(src.toStrongRef()); +} + +template +inline QSharedPointer::Type> +qobject_cast(const QSharedPointer &src) +{ + return qSharedPointerObjectCast::Type, T>(src); +} +template +inline QSharedPointer::Type> +qobject_cast(const QWeakPointer &src) +{ + return qSharedPointerObjectCast::Type, T>(src); +} + +template +QWeakPointer::Value, T>::type> +qWeakPointerFromVariant(const QVariant &variant) +{ + return QWeakPointer(qobject_cast(QtSharedPointer::weakPointerFromVariant_internal(variant).data())); +} +template +QSharedPointer::Value, T>::type> +qSharedPointerFromVariant(const QVariant &variant) +{ + return qSharedPointerObjectCast(QtSharedPointer::sharedPointerFromVariant_internal(variant)); +} + +#endif + +template Q_DECLARE_TYPEINFO_BODY(QWeakPointer, Q_MOVABLE_TYPE); +template Q_DECLARE_TYPEINFO_BODY(QSharedPointer, Q_MOVABLE_TYPE); + + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsignalmapper.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsignalmapper.h new file mode 100644 index 000000000..f960c7cab --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsignalmapper.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIGNALMAPPER_H +#define QSIGNALMAPPER_H + +#include + +QT_BEGIN_NAMESPACE + +class QSignalMapperPrivate; + +class Q_CORE_EXPORT QSignalMapper : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QSignalMapper) +public: + explicit QSignalMapper(QObject *parent = Q_NULLPTR); + ~QSignalMapper(); + + void setMapping(QObject *sender, int id); + void setMapping(QObject *sender, const QString &text); + void setMapping(QObject *sender, QWidget *widget); + void setMapping(QObject *sender, QObject *object); + void removeMappings(QObject *sender); + + QObject *mapping(int id) const; + QObject *mapping(const QString &text) const; + QObject *mapping(QWidget *widget) const; + QObject *mapping(QObject *object) const; + +Q_SIGNALS: + void mapped(int); + void mapped(const QString &); + void mapped(QWidget *); + void mapped(QObject *); + +public Q_SLOTS: + void map(); + void map(QObject *sender); + +private: + Q_DISABLE_COPY(QSignalMapper) + Q_PRIVATE_SLOT(d_func(), void _q_senderDestroyed()) +}; + +QT_END_NAMESPACE + +#endif // QSIGNALMAPPER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsignaltransition.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsignaltransition.h new file mode 100644 index 000000000..97c2916d9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsignaltransition.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIGNALTRANSITION_H +#define QSIGNALTRANSITION_H + +#include +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QSignalTransitionPrivate; +class Q_CORE_EXPORT QSignalTransition : public QAbstractTransition +{ + Q_OBJECT + Q_PROPERTY(QObject* senderObject READ senderObject WRITE setSenderObject NOTIFY senderObjectChanged) + Q_PROPERTY(QByteArray signal READ signal WRITE setSignal NOTIFY signalChanged) + +public: + QSignalTransition(QState *sourceState = Q_NULLPTR); + QSignalTransition(const QObject *sender, const char *signal, + QState *sourceState = Q_NULLPTR); +#ifdef Q_QDOC + template + QSignalTransition(const QObject *object, PointerToMemberFunction signal, + QState *sourceState = Q_NULLPTR); +#elif defined(Q_COMPILER_DELEGATING_CONSTRUCTORS) + template + QSignalTransition(const typename QtPrivate::FunctionPointer::Object *obj, + Func sig, QState *srcState = Q_NULLPTR) + : QSignalTransition(obj, QMetaMethod::fromSignal(sig).methodSignature().constData(), srcState) + { + } +#endif + + ~QSignalTransition(); + + QObject *senderObject() const; + void setSenderObject(const QObject *sender); + + QByteArray signal() const; + void setSignal(const QByteArray &signal); + +protected: + bool eventTest(QEvent *event) Q_DECL_OVERRIDE; + void onTransition(QEvent *event) Q_DECL_OVERRIDE; + + bool event(QEvent *e) Q_DECL_OVERRIDE; + +Q_SIGNALS: + void senderObjectChanged(QPrivateSignal); + void signalChanged(QPrivateSignal); + +private: + Q_DISABLE_COPY(QSignalTransition) + Q_DECLARE_PRIVATE(QSignalTransition) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsize.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsize.h new file mode 100644 index 000000000..bb29dca7c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsize.h @@ -0,0 +1,391 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIZE_H +#define QSIZE_H + +#include + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) +struct CGSize; +#endif + +QT_BEGIN_NAMESPACE + + +class Q_CORE_EXPORT QSize +{ +public: + Q_DECL_CONSTEXPR QSize() Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QSize(int w, int h) Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline bool isNull() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline bool isEmpty() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline bool isValid() const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline int width() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline int height() const Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setWidth(int w) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setHeight(int h) Q_DECL_NOTHROW; + void transpose() Q_DECL_NOTHROW; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QSize transposed() const Q_DECL_NOTHROW; + + inline void scale(int w, int h, Qt::AspectRatioMode mode) Q_DECL_NOTHROW; + inline void scale(const QSize &s, Qt::AspectRatioMode mode) Q_DECL_NOTHROW; + Q_REQUIRED_RESULT QSize scaled(int w, int h, Qt::AspectRatioMode mode) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT QSize scaled(const QSize &s, Qt::AspectRatioMode mode) const Q_DECL_NOTHROW; + + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QSize expandedTo(const QSize &) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QSize boundedTo(const QSize &) const Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline int &rwidth() Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline int &rheight() Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline QSize &operator+=(const QSize &) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline QSize &operator-=(const QSize &) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline QSize &operator*=(qreal c) Q_DECL_NOTHROW; + inline QSize &operator/=(qreal c); + + friend inline Q_DECL_CONSTEXPR bool operator==(const QSize &, const QSize &) Q_DECL_NOTHROW; + friend inline Q_DECL_CONSTEXPR bool operator!=(const QSize &, const QSize &) Q_DECL_NOTHROW; + friend inline Q_DECL_CONSTEXPR const QSize operator+(const QSize &, const QSize &) Q_DECL_NOTHROW; + friend inline Q_DECL_CONSTEXPR const QSize operator-(const QSize &, const QSize &) Q_DECL_NOTHROW; + friend inline Q_DECL_CONSTEXPR const QSize operator*(const QSize &, qreal) Q_DECL_NOTHROW; + friend inline Q_DECL_CONSTEXPR const QSize operator*(qreal, const QSize &) Q_DECL_NOTHROW; + friend inline const QSize operator/(const QSize &, qreal); + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + Q_REQUIRED_RESULT CGSize toCGSize() const Q_DECL_NOTHROW; +#endif + +private: + int wd; + int ht; +}; +Q_DECLARE_TYPEINFO(QSize, Q_MOVABLE_TYPE); + +/***************************************************************************** + QSize stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QSize &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QSize &); +#endif + + +/***************************************************************************** + QSize inline functions + *****************************************************************************/ + +Q_DECL_CONSTEXPR inline QSize::QSize() Q_DECL_NOTHROW : wd(-1), ht(-1) {} + +Q_DECL_CONSTEXPR inline QSize::QSize(int w, int h) Q_DECL_NOTHROW : wd(w), ht(h) {} + +Q_DECL_CONSTEXPR inline bool QSize::isNull() const Q_DECL_NOTHROW +{ return wd==0 && ht==0; } + +Q_DECL_CONSTEXPR inline bool QSize::isEmpty() const Q_DECL_NOTHROW +{ return wd<1 || ht<1; } + +Q_DECL_CONSTEXPR inline bool QSize::isValid() const Q_DECL_NOTHROW +{ return wd>=0 && ht>=0; } + +Q_DECL_CONSTEXPR inline int QSize::width() const Q_DECL_NOTHROW +{ return wd; } + +Q_DECL_CONSTEXPR inline int QSize::height() const Q_DECL_NOTHROW +{ return ht; } + +Q_DECL_RELAXED_CONSTEXPR inline void QSize::setWidth(int w) Q_DECL_NOTHROW +{ wd = w; } + +Q_DECL_RELAXED_CONSTEXPR inline void QSize::setHeight(int h) Q_DECL_NOTHROW +{ ht = h; } + +Q_DECL_CONSTEXPR inline QSize QSize::transposed() const Q_DECL_NOTHROW +{ return QSize(ht, wd); } + +inline void QSize::scale(int w, int h, Qt::AspectRatioMode mode) Q_DECL_NOTHROW +{ scale(QSize(w, h), mode); } + +inline void QSize::scale(const QSize &s, Qt::AspectRatioMode mode) Q_DECL_NOTHROW +{ *this = scaled(s, mode); } + +inline QSize QSize::scaled(int w, int h, Qt::AspectRatioMode mode) const Q_DECL_NOTHROW +{ return scaled(QSize(w, h), mode); } + +Q_DECL_RELAXED_CONSTEXPR inline int &QSize::rwidth() Q_DECL_NOTHROW +{ return wd; } + +Q_DECL_RELAXED_CONSTEXPR inline int &QSize::rheight() Q_DECL_NOTHROW +{ return ht; } + +Q_DECL_RELAXED_CONSTEXPR inline QSize &QSize::operator+=(const QSize &s) Q_DECL_NOTHROW +{ wd+=s.wd; ht+=s.ht; return *this; } + +Q_DECL_RELAXED_CONSTEXPR inline QSize &QSize::operator-=(const QSize &s) Q_DECL_NOTHROW +{ wd-=s.wd; ht-=s.ht; return *this; } + +Q_DECL_RELAXED_CONSTEXPR inline QSize &QSize::operator*=(qreal c) Q_DECL_NOTHROW +{ wd = qRound(wd*c); ht = qRound(ht*c); return *this; } + +Q_DECL_CONSTEXPR inline bool operator==(const QSize &s1, const QSize &s2) Q_DECL_NOTHROW +{ return s1.wd == s2.wd && s1.ht == s2.ht; } + +Q_DECL_CONSTEXPR inline bool operator!=(const QSize &s1, const QSize &s2) Q_DECL_NOTHROW +{ return s1.wd != s2.wd || s1.ht != s2.ht; } + +Q_DECL_CONSTEXPR inline const QSize operator+(const QSize & s1, const QSize & s2) Q_DECL_NOTHROW +{ return QSize(s1.wd+s2.wd, s1.ht+s2.ht); } + +Q_DECL_CONSTEXPR inline const QSize operator-(const QSize &s1, const QSize &s2) Q_DECL_NOTHROW +{ return QSize(s1.wd-s2.wd, s1.ht-s2.ht); } + +Q_DECL_CONSTEXPR inline const QSize operator*(const QSize &s, qreal c) Q_DECL_NOTHROW +{ return QSize(qRound(s.wd*c), qRound(s.ht*c)); } + +Q_DECL_CONSTEXPR inline const QSize operator*(qreal c, const QSize &s) Q_DECL_NOTHROW +{ return QSize(qRound(s.wd*c), qRound(s.ht*c)); } + +inline QSize &QSize::operator/=(qreal c) +{ + Q_ASSERT(!qFuzzyIsNull(c)); + wd = qRound(wd/c); ht = qRound(ht/c); + return *this; +} + +inline const QSize operator/(const QSize &s, qreal c) +{ + Q_ASSERT(!qFuzzyIsNull(c)); + return QSize(qRound(s.wd/c), qRound(s.ht/c)); +} + +Q_DECL_CONSTEXPR inline QSize QSize::expandedTo(const QSize & otherSize) const Q_DECL_NOTHROW +{ + return QSize(qMax(wd,otherSize.wd), qMax(ht,otherSize.ht)); +} + +Q_DECL_CONSTEXPR inline QSize QSize::boundedTo(const QSize & otherSize) const Q_DECL_NOTHROW +{ + return QSize(qMin(wd,otherSize.wd), qMin(ht,otherSize.ht)); +} + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QSize &); +#endif + + +class Q_CORE_EXPORT QSizeF +{ +public: + Q_DECL_CONSTEXPR QSizeF() Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QSizeF(const QSize &sz) Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR QSizeF(qreal w, qreal h) Q_DECL_NOTHROW; + + inline bool isNull() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline bool isEmpty() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline bool isValid() const Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline qreal width() const Q_DECL_NOTHROW; + Q_DECL_CONSTEXPR inline qreal height() const Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setWidth(qreal w) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline void setHeight(qreal h) Q_DECL_NOTHROW; + void transpose() Q_DECL_NOTHROW; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QSizeF transposed() const Q_DECL_NOTHROW; + + inline void scale(qreal w, qreal h, Qt::AspectRatioMode mode) Q_DECL_NOTHROW; + inline void scale(const QSizeF &s, Qt::AspectRatioMode mode) Q_DECL_NOTHROW; + Q_REQUIRED_RESULT QSizeF scaled(qreal w, qreal h, Qt::AspectRatioMode mode) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT QSizeF scaled(const QSizeF &s, Qt::AspectRatioMode mode) const Q_DECL_NOTHROW; + + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QSizeF expandedTo(const QSizeF &) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QSizeF boundedTo(const QSizeF &) const Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline qreal &rwidth() Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline qreal &rheight() Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR inline QSizeF &operator+=(const QSizeF &) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline QSizeF &operator-=(const QSizeF &) Q_DECL_NOTHROW; + Q_DECL_RELAXED_CONSTEXPR inline QSizeF &operator*=(qreal c) Q_DECL_NOTHROW; + inline QSizeF &operator/=(qreal c); + + friend Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &, const QSizeF &) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR inline bool operator!=(const QSizeF &, const QSizeF &) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR inline const QSizeF operator+(const QSizeF &, const QSizeF &) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR inline const QSizeF operator-(const QSizeF &, const QSizeF &) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR inline const QSizeF operator*(const QSizeF &, qreal) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR inline const QSizeF operator*(qreal, const QSizeF &) Q_DECL_NOTHROW; + friend inline const QSizeF operator/(const QSizeF &, qreal); + + Q_DECL_CONSTEXPR inline QSize toSize() const Q_DECL_NOTHROW; + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + Q_REQUIRED_RESULT static QSizeF fromCGSize(CGSize size) Q_DECL_NOTHROW; + Q_REQUIRED_RESULT CGSize toCGSize() const Q_DECL_NOTHROW; +#endif + +private: + qreal wd; + qreal ht; +}; +Q_DECLARE_TYPEINFO(QSizeF, Q_MOVABLE_TYPE); + + +/***************************************************************************** + QSizeF stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QSizeF &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QSizeF &); +#endif + + +/***************************************************************************** + QSizeF inline functions + *****************************************************************************/ + +Q_DECL_CONSTEXPR inline QSizeF::QSizeF() Q_DECL_NOTHROW : wd(-1.), ht(-1.) {} + +Q_DECL_CONSTEXPR inline QSizeF::QSizeF(const QSize &sz) Q_DECL_NOTHROW : wd(sz.width()), ht(sz.height()) {} + +Q_DECL_CONSTEXPR inline QSizeF::QSizeF(qreal w, qreal h) Q_DECL_NOTHROW : wd(w), ht(h) {} + +inline bool QSizeF::isNull() const Q_DECL_NOTHROW +{ return qIsNull(wd) && qIsNull(ht); } + +Q_DECL_CONSTEXPR inline bool QSizeF::isEmpty() const Q_DECL_NOTHROW +{ return wd <= 0. || ht <= 0.; } + +Q_DECL_CONSTEXPR inline bool QSizeF::isValid() const Q_DECL_NOTHROW +{ return wd >= 0. && ht >= 0.; } + +Q_DECL_CONSTEXPR inline qreal QSizeF::width() const Q_DECL_NOTHROW +{ return wd; } + +Q_DECL_CONSTEXPR inline qreal QSizeF::height() const Q_DECL_NOTHROW +{ return ht; } + +Q_DECL_RELAXED_CONSTEXPR inline void QSizeF::setWidth(qreal w) Q_DECL_NOTHROW +{ wd = w; } + +Q_DECL_RELAXED_CONSTEXPR inline void QSizeF::setHeight(qreal h) Q_DECL_NOTHROW +{ ht = h; } + +Q_DECL_CONSTEXPR inline QSizeF QSizeF::transposed() const Q_DECL_NOTHROW +{ return QSizeF(ht, wd); } + +inline void QSizeF::scale(qreal w, qreal h, Qt::AspectRatioMode mode) Q_DECL_NOTHROW +{ scale(QSizeF(w, h), mode); } + +inline void QSizeF::scale(const QSizeF &s, Qt::AspectRatioMode mode) Q_DECL_NOTHROW +{ *this = scaled(s, mode); } + +inline QSizeF QSizeF::scaled(qreal w, qreal h, Qt::AspectRatioMode mode) const Q_DECL_NOTHROW +{ return scaled(QSizeF(w, h), mode); } + +Q_DECL_RELAXED_CONSTEXPR inline qreal &QSizeF::rwidth() Q_DECL_NOTHROW +{ return wd; } + +Q_DECL_RELAXED_CONSTEXPR inline qreal &QSizeF::rheight() Q_DECL_NOTHROW +{ return ht; } + +Q_DECL_RELAXED_CONSTEXPR inline QSizeF &QSizeF::operator+=(const QSizeF &s) Q_DECL_NOTHROW +{ wd += s.wd; ht += s.ht; return *this; } + +Q_DECL_RELAXED_CONSTEXPR inline QSizeF &QSizeF::operator-=(const QSizeF &s) Q_DECL_NOTHROW +{ wd -= s.wd; ht -= s.ht; return *this; } + +Q_DECL_RELAXED_CONSTEXPR inline QSizeF &QSizeF::operator*=(qreal c) Q_DECL_NOTHROW +{ wd *= c; ht *= c; return *this; } + +Q_DECL_CONSTEXPR inline bool operator==(const QSizeF &s1, const QSizeF &s2) Q_DECL_NOTHROW +{ return qFuzzyCompare(s1.wd, s2.wd) && qFuzzyCompare(s1.ht, s2.ht); } + +Q_DECL_CONSTEXPR inline bool operator!=(const QSizeF &s1, const QSizeF &s2) Q_DECL_NOTHROW +{ return !qFuzzyCompare(s1.wd, s2.wd) || !qFuzzyCompare(s1.ht, s2.ht); } + +Q_DECL_CONSTEXPR inline const QSizeF operator+(const QSizeF & s1, const QSizeF & s2) Q_DECL_NOTHROW +{ return QSizeF(s1.wd+s2.wd, s1.ht+s2.ht); } + +Q_DECL_CONSTEXPR inline const QSizeF operator-(const QSizeF &s1, const QSizeF &s2) Q_DECL_NOTHROW +{ return QSizeF(s1.wd-s2.wd, s1.ht-s2.ht); } + +Q_DECL_CONSTEXPR inline const QSizeF operator*(const QSizeF &s, qreal c) Q_DECL_NOTHROW +{ return QSizeF(s.wd*c, s.ht*c); } + +Q_DECL_CONSTEXPR inline const QSizeF operator*(qreal c, const QSizeF &s) Q_DECL_NOTHROW +{ return QSizeF(s.wd*c, s.ht*c); } + +inline QSizeF &QSizeF::operator/=(qreal c) +{ + Q_ASSERT(!qFuzzyIsNull(c)); + wd = wd/c; ht = ht/c; + return *this; +} + +inline const QSizeF operator/(const QSizeF &s, qreal c) +{ + Q_ASSERT(!qFuzzyIsNull(c)); + return QSizeF(s.wd/c, s.ht/c); +} + +Q_DECL_CONSTEXPR inline QSizeF QSizeF::expandedTo(const QSizeF & otherSize) const Q_DECL_NOTHROW +{ + return QSizeF(qMax(wd,otherSize.wd), qMax(ht,otherSize.ht)); +} + +Q_DECL_CONSTEXPR inline QSizeF QSizeF::boundedTo(const QSizeF & otherSize) const Q_DECL_NOTHROW +{ + return QSizeF(qMin(wd,otherSize.wd), qMin(ht,otherSize.ht)); +} + +Q_DECL_CONSTEXPR inline QSize QSizeF::toSize() const Q_DECL_NOTHROW +{ + return QSize(qRound(wd), qRound(ht)); +} + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QSizeF &); +#endif + +QT_END_NAMESPACE + +#endif // QSIZE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsocketnotifier.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsocketnotifier.h new file mode 100644 index 000000000..92cdf5be9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsocketnotifier.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSOCKETNOTIFIER_H +#define QSOCKETNOTIFIER_H + +#include + +QT_BEGIN_NAMESPACE + +class QSocketNotifierPrivate; +class Q_CORE_EXPORT QSocketNotifier : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QSocketNotifier) + +public: + enum Type { Read, Write, Exception }; + + QSocketNotifier(qintptr socket, Type, QObject *parent = Q_NULLPTR); + ~QSocketNotifier(); + + qintptr socket() const; + Type type() const; + + bool isEnabled() const; + +public Q_SLOTS: + void setEnabled(bool); + +Q_SIGNALS: + void activated(int socket, QPrivateSignal); + +protected: + bool event(QEvent *) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QSocketNotifier) +}; + +QT_END_NAMESPACE + +#endif // QSOCKETNOTIFIER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsortfilterproxymodel.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsortfilterproxymodel.h new file mode 100644 index 000000000..06ff79ef5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsortfilterproxymodel.h @@ -0,0 +1,195 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSORTFILTERPROXYMODEL_H +#define QSORTFILTERPROXYMODEL_H + +#include + +#ifndef QT_NO_SORTFILTERPROXYMODEL + +#include + +QT_BEGIN_NAMESPACE + + +class QSortFilterProxyModelPrivate; +class QSortFilterProxyModelLessThan; +class QSortFilterProxyModelGreaterThan; + +class Q_CORE_EXPORT QSortFilterProxyModel : public QAbstractProxyModel +{ + friend class QSortFilterProxyModelLessThan; + friend class QSortFilterProxyModelGreaterThan; + + Q_OBJECT + Q_PROPERTY(QRegExp filterRegExp READ filterRegExp WRITE setFilterRegExp) + Q_PROPERTY(int filterKeyColumn READ filterKeyColumn WRITE setFilterKeyColumn) + Q_PROPERTY(bool dynamicSortFilter READ dynamicSortFilter WRITE setDynamicSortFilter) + Q_PROPERTY(Qt::CaseSensitivity filterCaseSensitivity READ filterCaseSensitivity WRITE setFilterCaseSensitivity) + Q_PROPERTY(Qt::CaseSensitivity sortCaseSensitivity READ sortCaseSensitivity WRITE setSortCaseSensitivity) + Q_PROPERTY(bool isSortLocaleAware READ isSortLocaleAware WRITE setSortLocaleAware) + Q_PROPERTY(int sortRole READ sortRole WRITE setSortRole) + Q_PROPERTY(int filterRole READ filterRole WRITE setFilterRole) + +public: + explicit QSortFilterProxyModel(QObject *parent = Q_NULLPTR); + ~QSortFilterProxyModel(); + + void setSourceModel(QAbstractItemModel *sourceModel) Q_DECL_OVERRIDE; + + QModelIndex mapToSource(const QModelIndex &proxyIndex) const Q_DECL_OVERRIDE; + QModelIndex mapFromSource(const QModelIndex &sourceIndex) const Q_DECL_OVERRIDE; + + QItemSelection mapSelectionToSource(const QItemSelection &proxySelection) const Q_DECL_OVERRIDE; + QItemSelection mapSelectionFromSource(const QItemSelection &sourceSelection) const Q_DECL_OVERRIDE; + + QRegExp filterRegExp() const; + void setFilterRegExp(const QRegExp ®Exp); + + int filterKeyColumn() const; + void setFilterKeyColumn(int column); + + Qt::CaseSensitivity filterCaseSensitivity() const; + void setFilterCaseSensitivity(Qt::CaseSensitivity cs); + + Qt::CaseSensitivity sortCaseSensitivity() const; + void setSortCaseSensitivity(Qt::CaseSensitivity cs); + + bool isSortLocaleAware() const; + void setSortLocaleAware(bool on); + + int sortColumn() const; + Qt::SortOrder sortOrder() const; + + bool dynamicSortFilter() const; + void setDynamicSortFilter(bool enable); + + int sortRole() const; + void setSortRole(int role); + + int filterRole() const; + void setFilterRole(int role); + +public Q_SLOTS: + void setFilterRegExp(const QString &pattern); + void setFilterWildcard(const QString &pattern); + void setFilterFixedString(const QString &pattern); + void clear(); + void invalidate(); + +protected: + virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; + virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const; + virtual bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const; + + void filterChanged(); + void invalidateFilter(); + +public: + using QObject::parent; + + QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex parent(const QModelIndex &child) const Q_DECL_OVERRIDE; + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; + + int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + bool hasChildren(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; + + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + bool setHeaderData(int section, Qt::Orientation orientation, + const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; + + QMimeData *mimeData(const QModelIndexList &indexes) const Q_DECL_OVERRIDE; + bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; + + bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + + void fetchMore(const QModelIndex &parent) Q_DECL_OVERRIDE; + bool canFetchMore(const QModelIndex &parent) const Q_DECL_OVERRIDE; + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + + QModelIndex buddy(const QModelIndex &index) const Q_DECL_OVERRIDE; + QModelIndexList match(const QModelIndex &start, int role, + const QVariant &value, int hits = 1, + Qt::MatchFlags flags = + Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const Q_DECL_OVERRIDE; + QSize span(const QModelIndex &index) const Q_DECL_OVERRIDE; + void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) Q_DECL_OVERRIDE; + + QStringList mimeTypes() const Q_DECL_OVERRIDE; + Qt::DropActions supportedDropActions() const Q_DECL_OVERRIDE; +private: + Q_DECLARE_PRIVATE(QSortFilterProxyModel) + Q_DISABLE_COPY(QSortFilterProxyModel) + + Q_PRIVATE_SLOT(d_func(), void _q_sourceDataChanged(const QModelIndex &source_top_left, const QModelIndex &source_bottom_right, const QVector &roles)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceHeaderDataChanged(Qt::Orientation orientation, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceAboutToBeReset()) + Q_PRIVATE_SLOT(d_func(), void _q_sourceReset()) + Q_PRIVATE_SLOT(d_func(), void _q_sourceLayoutAboutToBeChanged(const QList &sourceParents, QAbstractItemModel::LayoutChangeHint hint)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceLayoutChanged(const QList &sourceParents, QAbstractItemModel::LayoutChangeHint hint)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsAboutToBeInserted(const QModelIndex &source_parent, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsInserted(const QModelIndex &source_parent, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsAboutToBeRemoved(const QModelIndex &source_parent, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsRemoved(const QModelIndex &source_parent, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsMoved(QModelIndex,int,int,QModelIndex,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsAboutToBeInserted(const QModelIndex &source_parent, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsInserted(const QModelIndex &source_parent, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsAboutToBeRemoved(const QModelIndex &source_parent, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsRemoved(const QModelIndex &source_parent, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)) + Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsMoved(QModelIndex,int,int,QModelIndex,int)) + Q_PRIVATE_SLOT(d_func(), void _q_clearMapping()) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SORTFILTERPROXYMODEL + +#endif // QSORTFILTERPROXYMODEL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qstack.h b/qrenderdoc/3rdparty/qt/include/QtCore/qstack.h new file mode 100644 index 000000000..bf04935b5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qstack.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTACK_H +#define QSTACK_H + +#include + +QT_BEGIN_NAMESPACE + + +template +class QStack : public QVector +{ +public: + // compiler-generated special member functions are fine! + inline void swap(QStack &other) Q_DECL_NOTHROW { QVector::swap(other); } // prevent QVector<->QStack swaps + inline void push(const T &t) { QVector::append(t); } + T pop(); + T &top(); + const T &top() const; +}; + +template +inline T QStack::pop() +{ Q_ASSERT(!this->isEmpty()); T t = this->data()[this->size() -1]; + this->resize(this->size()-1); return t; } + +template +inline T &QStack::top() +{ Q_ASSERT(!this->isEmpty()); this->detach(); return this->data()[this->size()-1]; } + +template +inline const T &QStack::top() const +{ Q_ASSERT(!this->isEmpty()); return this->data()[this->size()-1]; } + +QT_END_NAMESPACE + +#endif // QSTACK_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qstandardpaths.h b/qrenderdoc/3rdparty/qt/include/QtCore/qstandardpaths.h new file mode 100644 index 000000000..df76d73ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qstandardpaths.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTANDARDPATHS_H +#define QSTANDARDPATHS_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_STANDARDPATHS + +class Q_CORE_EXPORT QStandardPaths +{ + Q_GADGET + +public: + // Do not re-order, must match QDesktopServices + enum StandardLocation { + DesktopLocation, + DocumentsLocation, + FontsLocation, + ApplicationsLocation, + MusicLocation, + MoviesLocation, + PicturesLocation, + TempLocation, + HomeLocation, + DataLocation, + CacheLocation, + GenericDataLocation, + RuntimeLocation, + ConfigLocation, + DownloadLocation, + GenericCacheLocation, + GenericConfigLocation, + AppDataLocation, + AppConfigLocation, + AppLocalDataLocation = DataLocation + }; + Q_ENUM(StandardLocation) + + static QString writableLocation(StandardLocation type); + static QStringList standardLocations(StandardLocation type); + + enum LocateOption { + LocateFile = 0x0, + LocateDirectory = 0x1 + }; + Q_DECLARE_FLAGS(LocateOptions, LocateOption) + Q_FLAG(LocateOptions) + + 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()); + +#if QT_DEPRECATED_SINCE(5, 2) + static QT_DEPRECATED void enableTestMode(bool testMode); +#endif + static void setTestModeEnabled(bool testMode); + static bool isTestModeEnabled(); + +private: + // prevent construction + QStandardPaths(); + ~QStandardPaths(); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QStandardPaths::LocateOptions) + +#endif // QT_NO_STANDARDPATHS + +QT_END_NAMESPACE + +#endif // QSTANDARDPATHS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qstate.h b/qrenderdoc/3rdparty/qt/include/QtCore/qstate.h new file mode 100644 index 000000000..33f84c2de --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qstate.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTATE_H +#define QSTATE_H + +#include +#include +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QAbstractTransition; +class QSignalTransition; + +class QStatePrivate; +class Q_CORE_EXPORT QState : public QAbstractState +{ + Q_OBJECT + Q_PROPERTY(QAbstractState* initialState READ initialState WRITE setInitialState NOTIFY initialStateChanged) + Q_PROPERTY(QAbstractState* errorState READ errorState WRITE setErrorState NOTIFY errorStateChanged) + Q_PROPERTY(ChildMode childMode READ childMode WRITE setChildMode NOTIFY childModeChanged) +public: + enum ChildMode { + ExclusiveStates, + ParallelStates + }; + Q_ENUM(ChildMode) + + enum RestorePolicy { + DontRestoreProperties, + RestoreProperties + }; + Q_ENUM(RestorePolicy) + + QState(QState *parent = Q_NULLPTR); + QState(ChildMode childMode, QState *parent = Q_NULLPTR); + ~QState(); + + QAbstractState *errorState() const; + void setErrorState(QAbstractState *state); + + void addTransition(QAbstractTransition *transition); + QSignalTransition *addTransition(const QObject *sender, const char *signal, QAbstractState *target); +#ifdef Q_QDOC + template + QSignalTransition *addTransition(const QObject *sender, PointerToMemberFunction signal, + QAbstractState *target); +#else + template + QSignalTransition *addTransition(const typename QtPrivate::FunctionPointer::Object *obj, + Func signal, QAbstractState *target) + { + const QMetaMethod signalMetaMethod = QMetaMethod::fromSignal(signal); + return addTransition(obj, signalMetaMethod.methodSignature().constData(), target); + } +#endif // Q_QDOC + QAbstractTransition *addTransition(QAbstractState *target); + void removeTransition(QAbstractTransition *transition); + QList transitions() const; + + QAbstractState *initialState() const; + void setInitialState(QAbstractState *state); + + ChildMode childMode() const; + void setChildMode(ChildMode mode); + +#ifndef QT_NO_PROPERTIES + void assignProperty(QObject *object, const char *name, + const QVariant &value); +#endif + +Q_SIGNALS: + void finished(QPrivateSignal); + void propertiesAssigned(QPrivateSignal); + void childModeChanged(QPrivateSignal); + void initialStateChanged(QPrivateSignal); + void errorStateChanged(QPrivateSignal); + +protected: + void onEntry(QEvent *event) Q_DECL_OVERRIDE; + void onExit(QEvent *event) Q_DECL_OVERRIDE; + + bool event(QEvent *e) Q_DECL_OVERRIDE; + +protected: + QState(QStatePrivate &dd, QState *parent); + +private: + Q_DISABLE_COPY(QState) + Q_DECLARE_PRIVATE(QState) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qstatemachine.h b/qrenderdoc/3rdparty/qt/include/QtCore/qstatemachine.h new file mode 100644 index 000000000..4f31252ee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qstatemachine.h @@ -0,0 +1,187 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTATEMACHINE_H +#define QSTATEMACHINE_H + +#include + +#include +#include +#include +#include +#include + +QT_REQUIRE_CONFIG(statemachine); + +QT_BEGIN_NAMESPACE + +class QStateMachinePrivate; +class QAbstractAnimation; +class Q_CORE_EXPORT QStateMachine : public QState +{ + Q_OBJECT + Q_PROPERTY(QString errorString READ errorString) + Q_PROPERTY(QState::RestorePolicy globalRestorePolicy READ globalRestorePolicy WRITE setGlobalRestorePolicy) + Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged) +#ifndef QT_NO_ANIMATION + Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated) +#endif +public: + class Q_CORE_EXPORT SignalEvent : public QEvent + { + public: + SignalEvent(QObject *sender, int signalIndex, + const QList &arguments); + ~SignalEvent(); + + inline QObject *sender() const { return m_sender; } + inline int signalIndex() const { return m_signalIndex; } + inline QList arguments() const { return m_arguments; } + + private: + QObject *m_sender; + int m_signalIndex; + QList m_arguments; + + friend class QSignalTransitionPrivate; + }; + + class Q_CORE_EXPORT WrappedEvent : public QEvent + { + public: + WrappedEvent(QObject *object, QEvent *event); + ~WrappedEvent(); + + inline QObject *object() const { return m_object; } + inline QEvent *event() const { return m_event; } + + private: + QObject *m_object; + QEvent *m_event; + }; + + enum EventPriority { + NormalPriority, + HighPriority + }; + + enum Error { + NoError, + NoInitialStateError, + NoDefaultStateInHistoryStateError, + NoCommonAncestorForTransitionError + }; + + explicit QStateMachine(QObject *parent = Q_NULLPTR); + explicit QStateMachine(QState::ChildMode childMode, QObject *parent = Q_NULLPTR); + ~QStateMachine(); + + void addState(QAbstractState *state); + void removeState(QAbstractState *state); + + Error error() const; + QString errorString() const; + void clearError(); + + bool isRunning() const; + +#ifndef QT_NO_ANIMATION + bool isAnimated() const; + void setAnimated(bool enabled); + + void addDefaultAnimation(QAbstractAnimation *animation); + QList defaultAnimations() const; + void removeDefaultAnimation(QAbstractAnimation *animation); +#endif // QT_NO_ANIMATION + + QState::RestorePolicy globalRestorePolicy() const; + void setGlobalRestorePolicy(QState::RestorePolicy restorePolicy); + + void postEvent(QEvent *event, EventPriority priority = NormalPriority); + int postDelayedEvent(QEvent *event, int delay); + bool cancelDelayedEvent(int id); + + QSet configuration() const; + +#if QT_CONFIG(qeventtransition) + bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE; +#endif + +public Q_SLOTS: + void start(); + void stop(); + void setRunning(bool running); + +Q_SIGNALS: + void started(QPrivateSignal); + void stopped(QPrivateSignal); + void runningChanged(bool running); + + +protected: + void onEntry(QEvent *event) Q_DECL_OVERRIDE; + void onExit(QEvent *event) Q_DECL_OVERRIDE; + + virtual void beginSelectTransitions(QEvent *event); + virtual void endSelectTransitions(QEvent *event); + + virtual void beginMicrostep(QEvent *event); + virtual void endMicrostep(QEvent *event); + + bool event(QEvent *e) Q_DECL_OVERRIDE; + +protected: + QStateMachine(QStateMachinePrivate &dd, QObject *parent); + +private: + Q_DISABLE_COPY(QStateMachine) + Q_DECLARE_PRIVATE(QStateMachine) + Q_PRIVATE_SLOT(d_func(), void _q_start()) + Q_PRIVATE_SLOT(d_func(), void _q_process()) +#ifndef QT_NO_ANIMATION + Q_PRIVATE_SLOT(d_func(), void _q_animationFinished()) +#endif + Q_PRIVATE_SLOT(d_func(), void _q_startDelayedEventTimer(int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_killDelayedEventTimer(int, int)) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qstorageinfo.h b/qrenderdoc/3rdparty/qt/include/QtCore/qstorageinfo.h new file mode 100644 index 000000000..e2d9747ce --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qstorageinfo.h @@ -0,0 +1,121 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Ivan Komissarov +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTORAGEINFO_H +#define QSTORAGEINFO_H + +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QStorageInfoPrivate; +class Q_CORE_EXPORT QStorageInfo +{ +public: + QStorageInfo(); + explicit QStorageInfo(const QString &path); + explicit QStorageInfo(const QDir &dir); + QStorageInfo(const QStorageInfo &other); + ~QStorageInfo(); + + QStorageInfo &operator=(const QStorageInfo &other); +#ifdef Q_COMPILER_RVALUE_REFS + QStorageInfo &operator=(QStorageInfo &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + + inline void swap(QStorageInfo &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + + void setPath(const QString &path); + + QString rootPath() const; + QByteArray device() const; + QByteArray subvolume() const; + QByteArray fileSystemType() const; + QString name() const; + QString displayName() const; + + qint64 bytesTotal() const; + qint64 bytesFree() const; + qint64 bytesAvailable() const; + int blockSize() const; + + inline bool isRoot() const; + bool isReadOnly() const; + bool isReady() const; + bool isValid() const; + + void refresh(); + + static QList mountedVolumes(); + static QStorageInfo root(); + +private: + friend class QStorageInfoPrivate; + friend bool operator==(const QStorageInfo &first, const QStorageInfo &second); + QExplicitlySharedDataPointer d; +}; + +inline bool operator==(const QStorageInfo &first, const QStorageInfo &second) +{ + if (first.d == second.d) + return true; + return first.device() == second.device() && first.rootPath() == second.rootPath(); +} + +inline bool operator!=(const QStorageInfo &first, const QStorageInfo &second) +{ + return !(first == second); +} + +inline bool QStorageInfo::isRoot() const +{ return *this == QStorageInfo::root(); } + +Q_DECLARE_SHARED(QStorageInfo) + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QStorageInfo) + +#endif // QSTORAGEINFO_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qstring.h b/qrenderdoc/3rdparty/qt/include/QtCore/qstring.h new file mode 100644 index 000000000..8f957a7b2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qstring.h @@ -0,0 +1,1768 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTRING_H +#define QSTRING_H + +#if defined(QT_NO_CAST_FROM_ASCII) && defined(QT_RESTRICTED_CAST_FROM_ASCII) +#error QT_NO_CAST_FROM_ASCII and QT_RESTRICTED_CAST_FROM_ASCII must not be defined at the same time +#endif + +#include +#include +#include +#include + +#include +#include + +#if defined(Q_OS_ANDROID) && !defined(ANDROID_HAS_WSTRING) +// std::wstring is disabled on android's glibc, as bionic lacks certain features +// that libstdc++ checks for (like mbcslen). +namespace std +{ + typedef basic_string wstring; +} +#endif + +#include + +#ifdef truncate +#error qstring.h must be included before any header file that defines truncate +#endif + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) +Q_FORWARD_DECLARE_CF_TYPE(CFString); +Q_FORWARD_DECLARE_OBJC_CLASS(NSString); +#endif + +QT_BEGIN_NAMESPACE + +class QCharRef; +class QRegExp; +class QRegularExpression; +class QRegularExpressionMatch; +class QString; +class QStringList; +class QTextCodec; +class QStringRef; +template class QVector; + +class QLatin1String +{ +public: + Q_DECL_CONSTEXPR inline QLatin1String() Q_DECL_NOTHROW : m_size(0), m_data(Q_NULLPTR) {} + Q_DECL_CONSTEXPR inline explicit QLatin1String(const char *s) Q_DECL_NOTHROW : m_size(s ? int(strlen(s)) : 0), m_data(s) {} + Q_DECL_CONSTEXPR inline explicit QLatin1String(const char *s, int sz) Q_DECL_NOTHROW : m_size(sz), m_data(s) {} + inline explicit QLatin1String(const QByteArray &s) Q_DECL_NOTHROW : m_size(int(qstrnlen(s.constData(), s.size()))), m_data(s.constData()) {} + + Q_DECL_CONSTEXPR const char *latin1() const Q_DECL_NOTHROW { return m_data; } + Q_DECL_CONSTEXPR int size() const Q_DECL_NOTHROW { return m_size; } + Q_DECL_CONSTEXPR const char *data() const Q_DECL_NOTHROW { return m_data; } + + Q_DECL_CONSTEXPR QLatin1Char at(int i) const { return QLatin1Char(m_data[i]); } + Q_DECL_CONSTEXPR QLatin1Char operator[](int i) const { return at(i); } + + Q_DECL_CONSTEXPR QLatin1String mid(int pos) const + { return QLatin1String(m_data + pos, m_size - pos); } + Q_DECL_CONSTEXPR QLatin1String mid(int pos, int n) const + { return QLatin1String(m_data + pos, n); } + Q_DECL_CONSTEXPR QLatin1String left(int n) const + { return QLatin1String(m_data, n); } + Q_DECL_CONSTEXPR QLatin1String right(int n) const + { return QLatin1String(m_data + m_size - n, n); } + + inline bool operator==(const QString &s) const Q_DECL_NOTHROW; + inline bool operator!=(const QString &s) const Q_DECL_NOTHROW; + inline bool operator>(const QString &s) const Q_DECL_NOTHROW; + inline bool operator<(const QString &s) const Q_DECL_NOTHROW; + inline bool operator>=(const QString &s) const Q_DECL_NOTHROW; + inline bool operator<=(const QString &s) const Q_DECL_NOTHROW; + +#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) + inline QT_ASCII_CAST_WARN bool operator==(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator!=(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator<(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator>(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator<=(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator>=(const char *s) const; + + inline QT_ASCII_CAST_WARN bool operator==(const QByteArray &s) const; + inline QT_ASCII_CAST_WARN bool operator!=(const QByteArray &s) const; + inline QT_ASCII_CAST_WARN bool operator<(const QByteArray &s) const; + inline QT_ASCII_CAST_WARN bool operator>(const QByteArray &s) const; + inline QT_ASCII_CAST_WARN bool operator<=(const QByteArray &s) const; + inline QT_ASCII_CAST_WARN bool operator>=(const QByteArray &s) const; +#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) + +private: + int m_size; + const char *m_data; +}; +Q_DECLARE_TYPEINFO(QLatin1String, Q_MOVABLE_TYPE); + +// Qt 4.x compatibility +typedef QLatin1String QLatin1Literal; + + +typedef QTypedArrayData QStringData; + +#if defined(Q_OS_WIN) && !defined(Q_COMPILER_UNICODE_STRINGS) +// fall back to wchar_t if the a Windows compiler does not +// support Unicode string literals, assuming wchar_t is 2 bytes +// on that platform (sanity-checked by static_assert further below) + +#if defined(Q_CC_MSVC) +# define QT_UNICODE_LITERAL_II(str) L##str +#else +# define QT_UNICODE_LITERAL_II(str) L"" str +#endif +typedef wchar_t qunicodechar; + +#else +// all our supported compilers support Unicode string literals, +// even if their Q_COMPILER_UNICODE_STRING has been revoked due +// to lacking stdlib support. But QStringLiteral only needs the +// core language feature, so just use u"" here unconditionally: + +#define QT_UNICODE_LITERAL_II(str) u"" str +typedef char16_t qunicodechar; + +#endif + +Q_STATIC_ASSERT_X(sizeof(qunicodechar) == 2, + "qunicodechar must typedef an integral type of size 2"); + +#define QT_UNICODE_LITERAL(str) QT_UNICODE_LITERAL_II(str) +#define QStringLiteral(str) \ + ([]() Q_DECL_NOEXCEPT -> QString { \ + enum { Size = sizeof(QT_UNICODE_LITERAL(str))/2 - 1 }; \ + static const QStaticStringData qstring_literal = { \ + Q_STATIC_STRING_DATA_HEADER_INITIALIZER(Size), \ + QT_UNICODE_LITERAL(str) }; \ + QStringDataPtr holder = { qstring_literal.data_ptr() }; \ + const QString qstring_literal_temp(holder); \ + return qstring_literal_temp; \ + }()) \ + /**/ + +#define Q_STATIC_STRING_DATA_HEADER_INITIALIZER_WITH_OFFSET(size, offset) \ + { Q_REFCOUNT_INITIALIZE_STATIC, size, 0, 0, offset } \ + /**/ + +#define Q_STATIC_STRING_DATA_HEADER_INITIALIZER(size) \ + Q_STATIC_STRING_DATA_HEADER_INITIALIZER_WITH_OFFSET(size, sizeof(QStringData)) \ + /**/ + +template +struct QStaticStringData +{ + QArrayData str; + qunicodechar data[N + 1]; + + QStringData *data_ptr() const + { + Q_ASSERT(str.ref.isStatic()); + return const_cast(static_cast(&str)); + } +}; + +struct QStringDataPtr +{ + QStringData *ptr; +}; + +class Q_CORE_EXPORT QString +{ +public: + typedef QStringData Data; + + inline QString() Q_DECL_NOTHROW; + explicit QString(const QChar *unicode, int size = -1); + QString(QChar c); + QString(int size, QChar c); + inline QString(QLatin1String latin1); + inline QString(const QString &) Q_DECL_NOTHROW; + inline ~QString(); + QString &operator=(QChar c); + QString &operator=(const QString &) Q_DECL_NOTHROW; + QString &operator=(QLatin1String latin1); +#ifdef Q_COMPILER_RVALUE_REFS + inline QString(QString && other) Q_DECL_NOTHROW : d(other.d) { other.d = Data::sharedNull(); } + inline QString &operator=(QString &&other) Q_DECL_NOTHROW + { qSwap(d, other.d); return *this; } +#endif + inline void swap(QString &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + inline int size() const { return d->size; } + inline int count() const { return d->size; } + inline int length() const; + inline bool isEmpty() const; + void resize(int size); + void resize(int size, QChar fillChar); + + QString &fill(QChar c, int size = -1); + void truncate(int pos); + void chop(int n); + + int capacity() const; + inline void reserve(int size); + inline void squeeze(); + + inline const QChar *unicode() const; + inline QChar *data(); + inline const QChar *data() const; + inline const QChar *constData() const; + + inline void detach(); + inline bool isDetached() const; + inline bool isSharedWith(const QString &other) const { return d == other.d; } + void clear(); + + inline const QChar at(int i) const; + const QChar operator[](int i) const; + QCharRef operator[](int i); + const QChar operator[](uint i) const; + QCharRef operator[](uint i); + + Q_REQUIRED_RESULT QString arg(qlonglong a, int fieldwidth=0, int base=10, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(qulonglong a, int fieldwidth=0, int base=10, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(long a, int fieldwidth=0, int base=10, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(ulong a, int fieldwidth=0, int base=10, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(int a, int fieldWidth = 0, int base = 10, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(uint a, int fieldWidth = 0, int base = 10, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(short a, int fieldWidth = 0, int base = 10, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(ushort a, int fieldWidth = 0, int base = 10, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(double a, int fieldWidth = 0, char fmt = 'g', int prec = -1, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(char a, int fieldWidth = 0, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(QChar a, int fieldWidth = 0, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(const QString &a, int fieldWidth = 0, + QChar fillChar = QLatin1Char(' ')) const; + Q_REQUIRED_RESULT QString arg(const QString &a1, const QString &a2) const; + Q_REQUIRED_RESULT QString arg(const QString &a1, const QString &a2, const QString &a3) const; + Q_REQUIRED_RESULT QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4) const; + Q_REQUIRED_RESULT QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5) const; + Q_REQUIRED_RESULT QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6) const; + Q_REQUIRED_RESULT QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7) const; + Q_REQUIRED_RESULT QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7, const QString &a8) const; + Q_REQUIRED_RESULT QString arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7, const QString &a8, const QString &a9) const; + + QString &vsprintf(const char *format, va_list ap) Q_ATTRIBUTE_FORMAT_PRINTF(2, 0); + QString &sprintf(const char *format, ...) Q_ATTRIBUTE_FORMAT_PRINTF(2, 3); + static QString vasprintf(const char *format, va_list ap) Q_ATTRIBUTE_FORMAT_PRINTF(1, 0); + static QString asprintf(const char *format, ...) Q_ATTRIBUTE_FORMAT_PRINTF(1, 2); + + int indexOf(QChar c, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(const QString &s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(QLatin1String s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(const QStringRef &s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(QChar c, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(const QString &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(QLatin1String s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(const QStringRef &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + inline bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int count(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + +#ifndef QT_NO_REGEXP + int indexOf(const QRegExp &, int from = 0) const; + int lastIndexOf(const QRegExp &, int from = -1) const; + inline bool contains(const QRegExp &rx) const { return indexOf(rx) != -1; } + int count(const QRegExp &) const; + + int indexOf(QRegExp &, int from = 0) const; + int lastIndexOf(QRegExp &, int from = -1) const; + inline bool contains(QRegExp &rx) const { return indexOf(rx) != -1; } +#endif + +#ifndef QT_NO_REGULAREXPRESSION + int indexOf(const QRegularExpression &re, int from = 0) const; + int indexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) const; // ### Qt 6: merge overloads + int lastIndexOf(const QRegularExpression &re, int from = -1) const; + int lastIndexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) const; // ### Qt 6: merge overloads + 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 + + enum SectionFlag { + SectionDefault = 0x00, + SectionSkipEmpty = 0x01, + SectionIncludeLeadingSep = 0x02, + SectionIncludeTrailingSep = 0x04, + SectionCaseInsensitiveSeps = 0x08 + }; + Q_DECLARE_FLAGS(SectionFlags, SectionFlag) + + QString section(QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault) const; + QString section(const QString &in_sep, int start, int end = -1, SectionFlags flags = SectionDefault) const; +#ifndef QT_NO_REGEXP + QString section(const QRegExp ®, int start, int end = -1, SectionFlags flags = SectionDefault) const; +#endif +#ifndef QT_NO_REGULAREXPRESSION + QString section(const QRegularExpression &re, int start, int end = -1, SectionFlags flags = SectionDefault) const; +#endif + Q_REQUIRED_RESULT QString left(int n) const; + Q_REQUIRED_RESULT QString right(int n) const; + Q_REQUIRED_RESULT QString mid(int position, int n = -1) const; + Q_REQUIRED_RESULT QStringRef leftRef(int n) const; + Q_REQUIRED_RESULT QStringRef rightRef(int n) const; + Q_REQUIRED_RESULT QStringRef midRef(int position, int n = -1) const; + + bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + Q_REQUIRED_RESULT QString leftJustified(int width, QChar fill = QLatin1Char(' '), bool trunc = false) const; + Q_REQUIRED_RESULT QString rightJustified(int width, QChar fill = QLatin1Char(' '), bool trunc = false) const; + +#if defined(Q_COMPILER_REF_QUALIFIERS) && !defined(QT_COMPILING_QSTRING_COMPAT_CPP) && !defined(Q_CLANG_QDOC) +# if defined(Q_CC_GNU) && !defined(Q_CC_CLANG) && !defined(Q_CC_INTEL) && !QT_HAS_CPP_ATTRIBUTE(nodiscard) + // required due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61941 +# pragma push_macro("Q_REQUIRED_RESULT") +# undef Q_REQUIRED_RESULT +# define Q_REQUIRED_RESULT +# define Q_REQUIRED_RESULT_pushed +# endif + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QString toLower() const & + { return toLower_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QString toLower() && + { return toLower_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QString toUpper() const & + { return toUpper_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QString toUpper() && + { return toUpper_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QString toCaseFolded() const & + { return toCaseFolded_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QString toCaseFolded() && + { return toCaseFolded_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QString trimmed() const & + { return trimmed_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QString trimmed() && + { return trimmed_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QString simplified() const & + { return simplified_helper(*this); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QString simplified() && + { return simplified_helper(*this); } +# ifdef Q_REQUIRED_RESULT_pushed +# pragma pop_macro("Q_REQUIRED_RESULT") +# endif +#else + Q_REQUIRED_RESULT QString toLower() const; + Q_REQUIRED_RESULT QString toUpper() const; + Q_REQUIRED_RESULT QString toCaseFolded() const; + Q_REQUIRED_RESULT QString trimmed() const; + Q_REQUIRED_RESULT QString simplified() const; +#endif + Q_REQUIRED_RESULT QString toHtmlEscaped() const; + + QString &insert(int i, QChar c); + QString &insert(int i, const QChar *uc, int len); + inline QString &insert(int i, const QString &s) { return insert(i, s.constData(), s.length()); } + inline QString &insert(int i, const QStringRef &s); + QString &insert(int i, QLatin1String s); + QString &append(QChar c); + QString &append(const QChar *uc, int len); + QString &append(const QString &s); + QString &append(const QStringRef &s); + QString &append(QLatin1String s); + inline QString &prepend(QChar c) { return insert(0, c); } + inline QString &prepend(const QChar *uc, int len) { return insert(0, uc, len); } + inline QString &prepend(const QString &s) { return insert(0, s); } + inline QString &prepend(const QStringRef &s) { return insert(0, s); } + inline QString &prepend(QLatin1String s) { return insert(0, s); } + + inline QString &operator+=(QChar c) { + if (d->ref.isShared() || uint(d->size) + 2u > d->alloc) + reallocData(uint(d->size) + 2u, true); + d->data()[d->size++] = c.unicode(); + d->data()[d->size] = '\0'; + return *this; + } + + inline QString &operator+=(QChar::SpecialCharacter c) { return append(QChar(c)); } + inline QString &operator+=(const QString &s) { return append(s); } + inline QString &operator+=(const QStringRef &s) { return append(s); } + inline QString &operator+=(QLatin1String s) { return append(s); } + + QString &remove(int i, int len); + QString &remove(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &remove(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(int i, int len, QChar after); + QString &replace(int i, int len, const QChar *s, int slen); + QString &replace(int i, int len, const QString &after); + QString &replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(const QChar *before, int blen, const QChar *after, int alen, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(QLatin1String before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(QLatin1String before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(const QString &before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(const QString &before, const QString &after, + Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(QChar c, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + QString &replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive); +#ifndef QT_NO_REGEXP + QString &replace(const QRegExp &rx, const QString &after); + inline QString &remove(const QRegExp &rx) + { return replace(rx, QString()); } +#endif +#ifndef QT_NO_REGULAREXPRESSION + QString &replace(const QRegularExpression &re, const QString &after); + inline QString &remove(const QRegularExpression &re) + { return replace(re, QString()); } +#endif + + enum SplitBehavior { KeepEmptyParts, SkipEmptyParts }; + + Q_REQUIRED_RESULT QStringList split(const QString &sep, SplitBehavior behavior = KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + Q_REQUIRED_RESULT QVector splitRef(const QString &sep, SplitBehavior behavior = KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + Q_REQUIRED_RESULT QStringList split(QChar sep, SplitBehavior behavior = KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + Q_REQUIRED_RESULT QVector splitRef(QChar sep, SplitBehavior behavior = KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const; +#ifndef QT_NO_REGEXP + Q_REQUIRED_RESULT QStringList split(const QRegExp &sep, SplitBehavior behavior = KeepEmptyParts) const; + Q_REQUIRED_RESULT QVector splitRef(const QRegExp &sep, SplitBehavior behavior = KeepEmptyParts) const; +#endif +#ifndef QT_NO_REGULAREXPRESSION + Q_REQUIRED_RESULT QStringList split(const QRegularExpression &sep, SplitBehavior behavior = KeepEmptyParts) const; + Q_REQUIRED_RESULT QVector splitRef(const QRegularExpression &sep, SplitBehavior behavior = KeepEmptyParts) const; +#endif + enum NormalizationForm { + NormalizationForm_D, + NormalizationForm_C, + NormalizationForm_KD, + NormalizationForm_KC + }; + Q_REQUIRED_RESULT QString normalized(NormalizationForm mode, QChar::UnicodeVersion version = QChar::Unicode_Unassigned) const; + + Q_REQUIRED_RESULT QString repeated(int times) const; + + const ushort *utf16() const; + +#if defined(Q_COMPILER_REF_QUALIFIERS) && !defined(QT_COMPILING_QSTRING_COMPAT_CPP) && !defined(Q_CLANG_QDOC) + Q_REQUIRED_RESULT QByteArray toLatin1() const & + { return toLatin1_helper(*this); } + Q_REQUIRED_RESULT QByteArray toLatin1() && + { return toLatin1_helper_inplace(*this); } + Q_REQUIRED_RESULT QByteArray toUtf8() const & + { return toUtf8_helper(*this); } + Q_REQUIRED_RESULT QByteArray toUtf8() && + { return toUtf8_helper(*this); } + Q_REQUIRED_RESULT QByteArray toLocal8Bit() const & + { return toLocal8Bit_helper(isNull() ? nullptr : constData(), size()); } + Q_REQUIRED_RESULT QByteArray toLocal8Bit() && + { return toLocal8Bit_helper(isNull() ? nullptr : constData(), size()); } +#else + Q_REQUIRED_RESULT QByteArray toLatin1() const; + Q_REQUIRED_RESULT QByteArray toUtf8() const; + Q_REQUIRED_RESULT QByteArray toLocal8Bit() const; +#endif + Q_REQUIRED_RESULT QVector toUcs4() const; + + // note - this are all inline so we can benefit from strlen() compile time optimizations + static inline QString fromLatin1(const char *str, int size = -1) + { + QStringDataPtr dataPtr = { fromLatin1_helper(str, (str && size == -1) ? int(strlen(str)) : size) }; + return QString(dataPtr); + } + static inline QString fromUtf8(const char *str, int size = -1) + { + return fromUtf8_helper(str, (str && size == -1) ? int(strlen(str)) : size); + } + static inline QString fromLocal8Bit(const char *str, int size = -1) + { + return fromLocal8Bit_helper(str, (str && size == -1) ? int(strlen(str)) : size); + } + static inline QString fromLatin1(const QByteArray &str) + { return str.isNull() ? QString() : fromLatin1(str.data(), qstrnlen(str.constData(), str.size())); } + static inline QString fromUtf8(const QByteArray &str) + { return str.isNull() ? QString() : fromUtf8(str.data(), qstrnlen(str.constData(), str.size())); } + static inline QString fromLocal8Bit(const QByteArray &str) + { return str.isNull() ? QString() : fromLocal8Bit(str.data(), qstrnlen(str.constData(), str.size())); } + static QString fromUtf16(const ushort *, int size = -1); + static QString fromUcs4(const uint *, int size = -1); + static QString fromRawData(const QChar *, int size); + +#if defined(Q_COMPILER_UNICODE_STRINGS) + static QString fromUtf16(const char16_t *str, int size = -1) + { return fromUtf16(reinterpret_cast(str), size); } + static QString fromUcs4(const char32_t *str, int size = -1) + { return fromUcs4(reinterpret_cast(str), size); } +#endif + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED static inline QString fromAscii(const char *str, int size = -1) + { return fromLatin1(str, size); } + QT_DEPRECATED static inline QString fromAscii(const QByteArray &str) + { return fromLatin1(str); } + Q_REQUIRED_RESULT QByteArray toAscii() const + { return toLatin1(); } +#endif + + inline int toWCharArray(wchar_t *array) const; + Q_REQUIRED_RESULT static inline QString fromWCharArray(const wchar_t *string, int size = -1); + + QString &setRawData(const QChar *unicode, int size); + QString &setUnicode(const QChar *unicode, int size); + inline QString &setUtf16(const ushort *utf16, int size); + + int compare(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const Q_DECL_NOTHROW; + int compare(QLatin1String other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const Q_DECL_NOTHROW; + + static inline int compare(const QString &s1, const QString &s2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) Q_DECL_NOTHROW + { return s1.compare(s2, cs); } + + static inline int compare(const QString &s1, QLatin1String s2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) Q_DECL_NOTHROW + { return s1.compare(s2, cs); } + static inline int compare(QLatin1String s1, const QString &s2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) Q_DECL_NOTHROW + { return -s2.compare(s1, cs); } + + inline int compare(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const Q_DECL_NOTHROW; + static int compare(const QString &s1, const QStringRef &s2, + Qt::CaseSensitivity = Qt::CaseSensitive) Q_DECL_NOTHROW; + + int localeAwareCompare(const QString& s) const; + static int localeAwareCompare(const QString& s1, const QString& s2) + { return s1.localeAwareCompare(s2); } + + int localeAwareCompare(const QStringRef &s) const; + static int localeAwareCompare(const QString& s1, const QStringRef& s2); + + // ### Qt6: make inline except for the long long versions + short toShort(bool *ok=Q_NULLPTR, int base=10) const; + ushort toUShort(bool *ok=Q_NULLPTR, int base=10) const; + int toInt(bool *ok=Q_NULLPTR, int base=10) const; + uint toUInt(bool *ok=Q_NULLPTR, int base=10) const; + long toLong(bool *ok=Q_NULLPTR, int base=10) const; + ulong toULong(bool *ok=Q_NULLPTR, int base=10) const; + qlonglong toLongLong(bool *ok=Q_NULLPTR, int base=10) const; + qulonglong toULongLong(bool *ok=Q_NULLPTR, int base=10) const; + float toFloat(bool *ok=Q_NULLPTR) const; + double toDouble(bool *ok=Q_NULLPTR) const; + + QString &setNum(short, int base=10); + QString &setNum(ushort, int base=10); + QString &setNum(int, int base=10); + QString &setNum(uint, int base=10); + QString &setNum(long, int base=10); + QString &setNum(ulong, int base=10); + QString &setNum(qlonglong, int base=10); + QString &setNum(qulonglong, int base=10); + QString &setNum(float, char f='g', int prec=6); + QString &setNum(double, char f='g', int prec=6); + + static QString number(int, int base=10); + static QString number(uint, int base=10); + static QString number(long, int base=10); + static QString number(ulong, int base=10); + static QString number(qlonglong, int base=10); + static QString number(qulonglong, int base=10); + static QString number(double, char f='g', int prec=6); + + friend Q_CORE_EXPORT bool operator==(const QString &s1, const QString &s2) Q_DECL_NOTHROW; + friend Q_CORE_EXPORT bool operator<(const QString &s1, const QString &s2) Q_DECL_NOTHROW; + friend inline bool operator>(const QString &s1, const QString &s2) Q_DECL_NOTHROW { return s2 < s1; } + friend inline bool operator!=(const QString &s1, const QString &s2) Q_DECL_NOTHROW { return !(s1 == s2); } + friend inline bool operator<=(const QString &s1, const QString &s2) Q_DECL_NOTHROW { return !(s1 > s2); } + friend inline bool operator>=(const QString &s1, const QString &s2) Q_DECL_NOTHROW { return !(s1 < s2); } + + bool operator==(QLatin1String s) const Q_DECL_NOTHROW; + bool operator<(QLatin1String s) const Q_DECL_NOTHROW; + bool operator>(QLatin1String s) const Q_DECL_NOTHROW; + inline bool operator!=(QLatin1String s) const Q_DECL_NOTHROW { return !operator==(s); } + inline bool operator<=(QLatin1String s) const Q_DECL_NOTHROW { return !operator>(s); } + inline bool operator>=(QLatin1String s) const Q_DECL_NOTHROW { return !operator<(s); } + + // ASCII compatibility +#if defined(QT_RESTRICTED_CAST_FROM_ASCII) + template + inline QString(const char (&ch)[N]) + : d(fromAscii_helper(ch, N - 1)) + {} + template + inline QString &operator=(const char (&ch)[N]) + { return (*this = fromLatin1(ch, N - 1)); } +#endif +#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) + inline QT_ASCII_CAST_WARN QString(const char *ch) + : d(fromAscii_helper(ch, ch ? int(strlen(ch)) : -1)) + {} + inline QT_ASCII_CAST_WARN QString(const QByteArray &a) + : d(fromAscii_helper(a.constData(), qstrnlen(a.constData(), a.size()))) + {} + inline QT_ASCII_CAST_WARN QString &operator=(const char *ch) + { return (*this = fromUtf8(ch)); } + inline QT_ASCII_CAST_WARN QString &operator=(const QByteArray &a) + { return (*this = fromUtf8(a)); } + inline QT_ASCII_CAST_WARN QString &operator=(char c) + { return (*this = QChar::fromLatin1(c)); } + + // these are needed, so it compiles with STL support enabled + inline QT_ASCII_CAST_WARN QString &prepend(const char *s) + { return prepend(QString::fromUtf8(s)); } + inline QT_ASCII_CAST_WARN QString &prepend(const QByteArray &s) + { return prepend(QString::fromUtf8(s)); } + inline QT_ASCII_CAST_WARN QString &append(const char *s) + { return append(QString::fromUtf8(s)); } + inline QT_ASCII_CAST_WARN QString &append(const QByteArray &s) + { return append(QString::fromUtf8(s)); } + inline QT_ASCII_CAST_WARN QString &insert(int i, const char *s) + { return insert(i, QString::fromUtf8(s)); } + inline QT_ASCII_CAST_WARN QString &insert(int i, const QByteArray &s) + { return insert(i, QString::fromUtf8(s)); } + inline QT_ASCII_CAST_WARN QString &operator+=(const char *s) + { return append(QString::fromUtf8(s)); } + inline QT_ASCII_CAST_WARN QString &operator+=(const QByteArray &s) + { return append(QString::fromUtf8(s)); } + inline QT_ASCII_CAST_WARN QString &operator+=(char c) + { return append(QChar::fromLatin1(c)); } + + inline QT_ASCII_CAST_WARN bool operator==(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator!=(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator<(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator<=(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator>(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator>=(const char *s) const; + + inline QT_ASCII_CAST_WARN bool operator==(const QByteArray &s) const; + inline QT_ASCII_CAST_WARN bool operator!=(const QByteArray &s) const; + inline QT_ASCII_CAST_WARN bool operator<(const QByteArray &s) const; + inline QT_ASCII_CAST_WARN bool operator>(const QByteArray &s) const; + inline QT_ASCII_CAST_WARN bool operator<=(const QByteArray &s) const; + inline QT_ASCII_CAST_WARN bool operator>=(const QByteArray &s) const; + + friend inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2); + friend inline QT_ASCII_CAST_WARN bool operator!=(const char *s1, const QString &s2); + friend inline QT_ASCII_CAST_WARN bool operator<(const char *s1, const QString &s2); + friend inline QT_ASCII_CAST_WARN bool operator>(const char *s1, const QString &s2); + friend inline QT_ASCII_CAST_WARN bool operator<=(const char *s1, const QString &s2); + friend inline QT_ASCII_CAST_WARN bool operator>=(const char *s1, const QString &s2); + + friend inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2); + friend inline QT_ASCII_CAST_WARN bool operator!=(const char *s1, const QStringRef &s2); + friend inline QT_ASCII_CAST_WARN bool operator<(const char *s1, const QStringRef &s2); + friend inline QT_ASCII_CAST_WARN bool operator>(const char *s1, const QStringRef &s2); + friend inline QT_ASCII_CAST_WARN bool operator<=(const char *s1, const QStringRef &s2); + friend inline QT_ASCII_CAST_WARN bool operator>=(const char *s1, const QStringRef &s2); +#endif + + typedef QChar *iterator; + typedef const QChar *const_iterator; + typedef iterator Iterator; + typedef const_iterator ConstIterator; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + inline iterator begin(); + inline const_iterator begin() const; + inline const_iterator cbegin() const; + inline const_iterator constBegin() const; + inline iterator end(); + inline const_iterator end() const; + inline const_iterator cend() const; + inline const_iterator constEnd() const; + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const { return const_reverse_iterator(begin()); } + + // STL compatibility + typedef int size_type; + typedef qptrdiff difference_type; + typedef const QChar & const_reference; + typedef QChar & reference; + typedef QChar *pointer; + typedef const QChar *const_pointer; + typedef QChar value_type; + inline void push_back(QChar c) { append(c); } + inline void push_back(const QString &s) { append(s); } + inline void push_front(QChar c) { prepend(c); } + inline void push_front(const QString &s) { prepend(s); } + + static inline QString fromStdString(const std::string &s); + inline std::string toStdString() const; + static inline QString fromStdWString(const std::wstring &s); + inline std::wstring toStdWString() const; + +#if defined(Q_STDLIB_UNICODE_STRINGS) || defined(Q_QDOC) + static inline QString fromStdU16String(const std::u16string &s); + inline std::u16string toStdU16String() const; + static inline QString fromStdU32String(const std::u32string &s); + inline std::u32string toStdU32String() const; +#endif + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + static QString fromCFString(CFStringRef string); + CFStringRef toCFString() const Q_DECL_CF_RETURNS_RETAINED; + static QString fromNSString(const NSString *string); + NSString *toNSString() const Q_DECL_NS_RETURNS_AUTORELEASED; +#endif + // compatibility +#if QT_DEPRECATED_SINCE(5, 9) + struct Null { }; + QT_DEPRECATED_X("use QString()") + static const Null null; + inline QString(const Null &): d(Data::sharedNull()) {} + inline QString &operator=(const Null &) { *this = QString(); return *this; } +#endif + inline bool isNull() const { return d == Data::sharedNull(); } + + + bool isSimpleText() const; + bool isRightToLeft() const; + + QString(int size, Qt::Initialization); + Q_DECL_CONSTEXPR inline QString(QStringDataPtr dd) : d(dd.ptr) {} + +private: +#if defined(QT_NO_CAST_FROM_ASCII) + QString &operator+=(const char *s); + QString &operator+=(const QByteArray &s); + QString(const char *ch); + QString(const QByteArray &a); + QString &operator=(const char *ch); + QString &operator=(const QByteArray &a); +#endif + + Data *d; + + friend inline bool operator==(QChar, const QString &) Q_DECL_NOTHROW; + friend inline bool operator< (QChar, const QString &) Q_DECL_NOTHROW; + friend inline bool operator> (QChar, const QString &) Q_DECL_NOTHROW; + friend inline bool operator==(QChar, const QStringRef &) Q_DECL_NOTHROW; + friend inline bool operator< (QChar, const QStringRef &) Q_DECL_NOTHROW; + friend inline bool operator> (QChar, const QStringRef &) Q_DECL_NOTHROW; + friend inline bool operator==(QChar, QLatin1String) Q_DECL_NOTHROW; + friend inline bool operator< (QChar, QLatin1String) Q_DECL_NOTHROW; + friend inline bool operator> (QChar, QLatin1String) Q_DECL_NOTHROW; + + void reallocData(uint alloc, bool grow = false); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void expand(int i); +#endif + QString multiArg(int numArgs, const QString **args) const; + static int compare_helper(const QChar *data1, int length1, + const QChar *data2, int length2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) Q_DECL_NOTHROW; + static int compare_helper(const QChar *data1, int length1, + const char *data2, int length2, + Qt::CaseSensitivity cs = Qt::CaseSensitive); + static int compare_helper(const QChar *data1, int length1, + QLatin1String s2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) Q_DECL_NOTHROW; + static int localeAwareCompare_helper(const QChar *data1, int length1, + const QChar *data2, int length2); + static QString toLower_helper(const QString &str); + static QString toLower_helper(QString &str); + static QString toUpper_helper(const QString &str); + static QString toUpper_helper(QString &str); + static QString toCaseFolded_helper(const QString &str); + static QString toCaseFolded_helper(QString &str); + static QString trimmed_helper(const QString &str); + static QString trimmed_helper(QString &str); + static QString simplified_helper(const QString &str); + static QString simplified_helper(QString &str); + static Data *fromLatin1_helper(const char *str, int size = -1); + static Data *fromAscii_helper(const char *str, int size = -1); + static QString fromUtf8_helper(const char *str, int size); + static QString fromLocal8Bit_helper(const char *, int size); + static QByteArray toLatin1_helper(const QString &); + static QByteArray toLatin1_helper(const QChar *data, int size); + static QByteArray toLatin1_helper_inplace(QString &); + static QByteArray toUtf8_helper(const QString &); + static QByteArray toLocal8Bit_helper(const QChar *data, int size); + static int toUcs4_helper(const ushort *uc, int length, uint *out); + static qlonglong toIntegral_helper(const QChar *data, int len, bool *ok, int base); + static qulonglong toIntegral_helper(const QChar *data, uint len, bool *ok, int base); + void replace_helper(uint *indices, int nIndices, int blen, const QChar *after, int alen); + friend class QCharRef; + friend class QTextCodec; + friend class QStringRef; + friend class QByteArray; + friend class QCollator; + friend struct QAbstractConcatenable; + + template static + T toIntegral_helper(const QChar *data, int len, bool *ok, int base) + { + // ### Qt6: use std::conditional::value, qulonglong, qlonglong>::type + const bool isUnsigned = T(0) < T(-1); + typedef typename QtPrivate::QConditional::Type Int64; + typedef typename QtPrivate::QConditional::Type Int32; + + // we select the right overload by casting size() to int or uint + Int64 val = toIntegral_helper(data, Int32(len), ok, base); + if (T(val) != val) { + if (ok) + *ok = false; + val = 0; + } + return T(val); + } + +public: + typedef Data * DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +inline QString::QString(QLatin1String aLatin1) : d(fromLatin1_helper(aLatin1.latin1(), aLatin1.size())) +{ } +inline int QString::length() const +{ return d->size; } +inline const QChar QString::at(int i) const +{ Q_ASSERT(uint(i) < uint(size())); return d->data()[i]; } +inline const QChar QString::operator[](int i) const +{ Q_ASSERT(uint(i) < uint(size())); return d->data()[i]; } +inline const QChar QString::operator[](uint i) const +{ Q_ASSERT(i < uint(size())); return d->data()[i]; } +inline bool QString::isEmpty() const +{ return d->size == 0; } +inline const QChar *QString::unicode() const +{ return reinterpret_cast(d->data()); } +inline const QChar *QString::data() const +{ return reinterpret_cast(d->data()); } +inline QChar *QString::data() +{ detach(); return reinterpret_cast(d->data()); } +inline const QChar *QString::constData() const +{ return reinterpret_cast(d->data()); } +inline void QString::detach() +{ if (d->ref.isShared() || (d->offset != sizeof(QStringData))) reallocData(uint(d->size) + 1u); } +inline bool QString::isDetached() const +{ return !d->ref.isShared(); } +inline void QString::clear() +{ if (!isNull()) *this = QString(); } +inline QString::QString(const QString &other) Q_DECL_NOTHROW : d(other.d) +{ Q_ASSERT(&other != this); d->ref.ref(); } +inline int QString::capacity() const +{ return d->alloc ? d->alloc - 1 : 0; } +inline QString &QString::setNum(short n, int base) +{ return setNum(qlonglong(n), base); } +inline QString &QString::setNum(ushort n, int base) +{ return setNum(qulonglong(n), base); } +inline QString &QString::setNum(int n, int base) +{ return setNum(qlonglong(n), base); } +inline QString &QString::setNum(uint n, int base) +{ return setNum(qulonglong(n), base); } +inline QString &QString::setNum(long n, int base) +{ return setNum(qlonglong(n), base); } +inline QString &QString::setNum(ulong n, int base) +{ return setNum(qulonglong(n), base); } +inline QString &QString::setNum(float n, char f, int prec) +{ return setNum(double(n),f,prec); } +inline QString QString::arg(int a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qlonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(uint a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qulonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(long a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qlonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(ulong a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qulonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(short a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qlonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(ushort a, int fieldWidth, int base, QChar fillChar) const +{ return arg(qulonglong(a), fieldWidth, base, fillChar); } +inline QString QString::arg(const QString &a1, const QString &a2) const +{ const QString *args[2] = { &a1, &a2 }; return multiArg(2, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3) const +{ const QString *args[3] = { &a1, &a2, &a3 }; return multiArg(3, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4) const +{ const QString *args[4] = { &a1, &a2, &a3, &a4 }; return multiArg(4, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5) const +{ const QString *args[5] = { &a1, &a2, &a3, &a4, &a5 }; return multiArg(5, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6) const +{ const QString *args[6] = { &a1, &a2, &a3, &a4, &a5, &a6 }; return multiArg(6, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7) const +{ const QString *args[7] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7 }; return multiArg(7, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7, const QString &a8) const +{ const QString *args[8] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8 }; return multiArg(8, args); } +inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, + const QString &a4, const QString &a5, const QString &a6, + const QString &a7, const QString &a8, const QString &a9) const +{ const QString *args[9] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9 }; return multiArg(9, args); } + +inline QString QString::section(QChar asep, int astart, int aend, SectionFlags aflags) const +{ return section(QString(asep), astart, aend, aflags); } + +QT_WARNING_PUSH +QT_WARNING_DISABLE_MSVC(4127) // "conditional expression is constant" +QT_WARNING_DISABLE_INTEL(111) // "statement is unreachable" + +inline int QString::toWCharArray(wchar_t *array) const +{ + if (sizeof(wchar_t) == sizeof(QChar)) { + memcpy(array, d->data(), sizeof(QChar) * size()); + return size(); + } else { + return toUcs4_helper(d->data(), size(), reinterpret_cast(array)); + } +} + +QT_WARNING_POP + +inline QString QString::fromWCharArray(const wchar_t *string, int size) +{ + return sizeof(wchar_t) == sizeof(QChar) ? fromUtf16(reinterpret_cast(string), size) + : fromUcs4(reinterpret_cast(string), size); +} + + +class Q_CORE_EXPORT QCharRef { + QString &s; + int i; + inline QCharRef(QString &str, int idx) + : s(str),i(idx) {} + friend class QString; +public: + + // most QChar operations repeated here + + // all this is not documented: We just say "like QChar" and let it be. + inline operator QChar() const + { return i < s.d->size ? s.d->data()[i] : 0; } + inline QCharRef &operator=(QChar c) + { if (i >= s.d->size) s.resize(i + 1, QLatin1Char(' ')); else s.detach(); + s.d->data()[i] = c.unicode(); return *this; } + + // An operator= for each QChar cast constructors +#ifndef QT_NO_CAST_FROM_ASCII + inline QT_ASCII_CAST_WARN QCharRef &operator=(char c) + { return operator=(QChar::fromLatin1(c)); } + inline QT_ASCII_CAST_WARN QCharRef &operator=(uchar c) + { return operator=(QChar::fromLatin1(c)); } +#endif + inline QCharRef &operator=(const QCharRef &c) { return operator=(QChar(c)); } + inline QCharRef &operator=(ushort rc) { return operator=(QChar(rc)); } + inline QCharRef &operator=(short rc) { return operator=(QChar(rc)); } + inline QCharRef &operator=(uint rc) { return operator=(QChar(rc)); } + inline QCharRef &operator=(int rc) { return operator=(QChar(rc)); } + + // each function... + inline bool isNull() const { return QChar(*this).isNull(); } + inline bool isPrint() const { return QChar(*this).isPrint(); } + inline bool isPunct() const { return QChar(*this).isPunct(); } + inline bool isSpace() const { return QChar(*this).isSpace(); } + inline bool isMark() const { return QChar(*this).isMark(); } + inline bool isLetter() const { return QChar(*this).isLetter(); } + inline bool isNumber() const { return QChar(*this).isNumber(); } + inline bool isLetterOrNumber() { return QChar(*this).isLetterOrNumber(); } + inline bool isDigit() const { return QChar(*this).isDigit(); } + inline bool isLower() const { return QChar(*this).isLower(); } + inline bool isUpper() const { return QChar(*this).isUpper(); } + inline bool isTitleCase() const { return QChar(*this).isTitleCase(); } + + inline int digitValue() const { return QChar(*this).digitValue(); } + QChar toLower() const { return QChar(*this).toLower(); } + QChar toUpper() const { return QChar(*this).toUpper(); } + QChar toTitleCase () const { return QChar(*this).toTitleCase(); } + + QChar::Category category() const { return QChar(*this).category(); } + QChar::Direction direction() const { return QChar(*this).direction(); } + QChar::JoiningType joiningType() const { return QChar(*this).joiningType(); } +#if QT_DEPRECATED_SINCE(5, 3) + QT_DEPRECATED QChar::Joining joining() const + { + switch (QChar(*this).joiningType()) { + case QChar::Joining_Causing: return QChar::Center; + case QChar::Joining_Dual: return QChar::Dual; + case QChar::Joining_Right: return QChar::Right; + case QChar::Joining_None: + case QChar::Joining_Left: + case QChar::Joining_Transparent: + default: return QChar::OtherJoining; + } + } +#endif + bool hasMirrored() const { return QChar(*this).hasMirrored(); } + QChar mirroredChar() const { return QChar(*this).mirroredChar(); } + QString decomposition() const { return QChar(*this).decomposition(); } + 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(); } + inline uchar row() const { return QChar(*this).row(); } + inline void setCell(uchar cell); + inline void setRow(uchar row); + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED char toAscii() const { return QChar(*this).toLatin1(); } +#endif + char toLatin1() const { return QChar(*this).toLatin1(); } + ushort unicode() const { return QChar(*this).unicode(); } + ushort& unicode() { return s.data()[i].unicode(); } + +}; +Q_DECLARE_TYPEINFO(QCharRef, Q_MOVABLE_TYPE); + +inline void QCharRef::setRow(uchar arow) { QChar(*this).setRow(arow); } +inline void QCharRef::setCell(uchar acell) { QChar(*this).setCell(acell); } + + +inline QString::QString() Q_DECL_NOTHROW : d(Data::sharedNull()) {} +inline QString::~QString() { if (!d->ref.deref()) Data::deallocate(d); } + +inline void QString::reserve(int asize) +{ + if (d->ref.isShared() || uint(asize) >= d->alloc) + reallocData(qMax(asize, d->size) + 1u); + + if (!d->capacityReserved) { + // cannot set unconditionally, since d could be the shared_null/shared_empty (which is const) + d->capacityReserved = true; + } +} + +inline void QString::squeeze() +{ + if (d->ref.isShared() || uint(d->size) + 1u < d->alloc) + reallocData(uint(d->size) + 1u); + + if (d->capacityReserved) { + // cannot set unconditionally, since d could be shared_null or + // otherwise static. + d->capacityReserved = false; + } +} + +inline QString &QString::setUtf16(const ushort *autf16, int asize) +{ return setUnicode(reinterpret_cast(autf16), asize); } +inline QCharRef QString::operator[](int i) +{ Q_ASSERT(i >= 0); return QCharRef(*this, i); } +inline QCharRef QString::operator[](uint i) +{ return QCharRef(*this, i); } +inline QString::iterator QString::begin() +{ detach(); return reinterpret_cast(d->data()); } +inline QString::const_iterator QString::begin() const +{ return reinterpret_cast(d->data()); } +inline QString::const_iterator QString::cbegin() const +{ return reinterpret_cast(d->data()); } +inline QString::const_iterator QString::constBegin() const +{ return reinterpret_cast(d->data()); } +inline QString::iterator QString::end() +{ detach(); return reinterpret_cast(d->data() + d->size); } +inline QString::const_iterator QString::end() const +{ return reinterpret_cast(d->data() + d->size); } +inline QString::const_iterator QString::cend() const +{ return reinterpret_cast(d->data() + d->size); } +inline QString::const_iterator QString::constEnd() const +{ return reinterpret_cast(d->data() + d->size); } +inline bool QString::contains(const QString &s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } +inline bool QString::contains(const QStringRef &s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } +inline bool QString::contains(QLatin1String s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } +inline bool QString::contains(QChar c, Qt::CaseSensitivity cs) const +{ return indexOf(c, 0, cs) != -1; } + +#if QT_DEPRECATED_SINCE(5, 9) +inline bool operator==(QString::Null, QString::Null) { return true; } +QT_DEPRECATED_X("use QString::isNull()") +inline bool operator==(QString::Null, const QString &s) { return s.isNull(); } +QT_DEPRECATED_X("use QString::isNull()") +inline bool operator==(const QString &s, QString::Null) { return s.isNull(); } +inline bool operator!=(QString::Null, QString::Null) { return false; } +QT_DEPRECATED_X("use !QString::isNull()") +inline bool operator!=(QString::Null, const QString &s) { return !s.isNull(); } +QT_DEPRECATED_X("use !QString::isNull()") +inline bool operator!=(const QString &s, QString::Null) { return !s.isNull(); } +#endif + +inline bool operator==(QLatin1String s1, QLatin1String s2) Q_DECL_NOTHROW +{ return s1.size() == s2.size() && (!s1.size() || !memcmp(s1.latin1(), s2.latin1(), s1.size())); } +inline bool operator!=(QLatin1String s1, QLatin1String s2) Q_DECL_NOTHROW +{ return !operator==(s1, s2); } +inline bool operator<(QLatin1String s1, QLatin1String s2) Q_DECL_NOTHROW +{ + const int len = qMin(s1.size(), s2.size()); + const int r = len ? memcmp(s1.latin1(), s2.latin1(), len) : 0; + return r < 0 || (r == 0 && s1.size() < s2.size()); +} +inline bool operator>(QLatin1String s1, QLatin1String s2) Q_DECL_NOTHROW +{ return operator<(s2, s1); } +inline bool operator<=(QLatin1String s1, QLatin1String s2) Q_DECL_NOTHROW +{ return !operator>(s1, s2); } +inline bool operator>=(QLatin1String s1, QLatin1String s2) Q_DECL_NOTHROW +{ return !operator<(s1, s2); } + +inline bool QLatin1String::operator==(const QString &s) const Q_DECL_NOTHROW +{ return s == *this; } +inline bool QLatin1String::operator!=(const QString &s) const Q_DECL_NOTHROW +{ return s != *this; } +inline bool QLatin1String::operator>(const QString &s) const Q_DECL_NOTHROW +{ return s < *this; } +inline bool QLatin1String::operator<(const QString &s) const Q_DECL_NOTHROW +{ return s > *this; } +inline bool QLatin1String::operator>=(const QString &s) const Q_DECL_NOTHROW +{ return s <= *this; } +inline bool QLatin1String::operator<=(const QString &s) const Q_DECL_NOTHROW +{ return s >= *this; } + +#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) +inline bool QString::operator==(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) == 0; } +inline bool QString::operator!=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) != 0; } +inline bool QString::operator<(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) < 0; } +inline bool QString::operator>(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) > 0; } +inline bool QString::operator<=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) <= 0; } +inline bool QString::operator>=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) >= 0; } + +inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) == 0; } +inline QT_ASCII_CAST_WARN bool operator!=(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) != 0; } +inline QT_ASCII_CAST_WARN bool operator<(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) > 0; } +inline QT_ASCII_CAST_WARN bool operator>(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) < 0; } +inline QT_ASCII_CAST_WARN bool operator<=(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) >= 0; } +inline QT_ASCII_CAST_WARN bool operator>=(const char *s1, const QString &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) <= 0; } + +inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2) +{ return QString::fromUtf8(s1) == s2; } +inline QT_ASCII_CAST_WARN bool operator!=(const char *s1, QLatin1String s2) +{ return QString::fromUtf8(s1) != s2; } +inline QT_ASCII_CAST_WARN bool operator<(const char *s1, QLatin1String s2) +{ return (QString::fromUtf8(s1) < s2); } +inline QT_ASCII_CAST_WARN bool operator>(const char *s1, QLatin1String s2) +{ return (QString::fromUtf8(s1) > s2); } +inline QT_ASCII_CAST_WARN bool operator<=(const char *s1, QLatin1String s2) +{ return (QString::fromUtf8(s1) <= s2); } +inline QT_ASCII_CAST_WARN bool operator>=(const char *s1, QLatin1String s2) +{ return (QString::fromUtf8(s1) >= s2); } + +inline QT_ASCII_CAST_WARN bool QLatin1String::operator==(const char *s) const +{ return QString::fromUtf8(s) == *this; } +inline QT_ASCII_CAST_WARN bool QLatin1String::operator!=(const char *s) const +{ return QString::fromUtf8(s) != *this; } +inline QT_ASCII_CAST_WARN bool QLatin1String::operator<(const char *s) const +{ return QString::fromUtf8(s) > *this; } +inline QT_ASCII_CAST_WARN bool QLatin1String::operator>(const char *s) const +{ return QString::fromUtf8(s) < *this; } +inline QT_ASCII_CAST_WARN bool QLatin1String::operator<=(const char *s) const +{ return QString::fromUtf8(s) >= *this; } +inline QT_ASCII_CAST_WARN bool QLatin1String::operator>=(const char *s) const +{ return QString::fromUtf8(s) <= *this; } + +inline QT_ASCII_CAST_WARN bool QLatin1String::operator==(const QByteArray &s) const +{ return QString::fromUtf8(s) == *this; } +inline QT_ASCII_CAST_WARN bool QLatin1String::operator!=(const QByteArray &s) const +{ return QString::fromUtf8(s) != *this; } +inline QT_ASCII_CAST_WARN bool QLatin1String::operator<(const QByteArray &s) const +{ return QString::fromUtf8(s) > *this; } +inline QT_ASCII_CAST_WARN bool QLatin1String::operator>(const QByteArray &s) const +{ return QString::fromUtf8(s) < *this; } +inline QT_ASCII_CAST_WARN bool QLatin1String::operator<=(const QByteArray &s) const +{ return QString::fromUtf8(s) >= *this; } +inline QT_ASCII_CAST_WARN bool QLatin1String::operator>=(const QByteArray &s) const +{ return QString::fromUtf8(s) <= *this; } + +inline QT_ASCII_CAST_WARN bool QString::operator==(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), qstrnlen(s.constData(), s.size())) == 0; } +inline QT_ASCII_CAST_WARN bool QString::operator!=(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), qstrnlen(s.constData(), s.size())) != 0; } +inline QT_ASCII_CAST_WARN bool QString::operator<(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) < 0; } +inline QT_ASCII_CAST_WARN bool QString::operator>(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) > 0; } +inline QT_ASCII_CAST_WARN bool QString::operator<=(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) <= 0; } +inline QT_ASCII_CAST_WARN bool QString::operator>=(const QByteArray &s) const +{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) >= 0; } + +inline bool QByteArray::operator==(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), qstrnlen(constData(), size())) == 0; } +inline bool QByteArray::operator!=(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), qstrnlen(constData(), size())) != 0; } +inline bool QByteArray::operator<(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) > 0; } +inline bool QByteArray::operator>(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) < 0; } +inline bool QByteArray::operator<=(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) >= 0; } +inline bool QByteArray::operator>=(const QString &s) const +{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) <= 0; } +#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) + +#ifndef QT_NO_CAST_TO_ASCII +inline QByteArray &QByteArray::append(const QString &s) +{ return append(s.toUtf8()); } +inline QByteArray &QByteArray::insert(int i, const QString &s) +{ return insert(i, s.toUtf8()); } +inline QByteArray &QByteArray::replace(char c, const QString &after) +{ return replace(c, after.toUtf8()); } +inline QByteArray &QByteArray::replace(const QString &before, const char *after) +{ return replace(before.toUtf8(), after); } +inline QByteArray &QByteArray::replace(const QString &before, const QByteArray &after) +{ return replace(before.toUtf8(), after); } +inline QByteArray &QByteArray::operator+=(const QString &s) +{ return operator+=(s.toUtf8()); } +inline int QByteArray::indexOf(const QString &s, int from) const +{ return indexOf(s.toUtf8(), from); } +inline int QByteArray::lastIndexOf(const QString &s, int from) const +{ return lastIndexOf(s.toUtf8(), from); } +#endif // QT_NO_CAST_TO_ASCII + +#if !defined(QT_USE_FAST_OPERATOR_PLUS) && !defined(QT_USE_QSTRINGBUILDER) +inline const QString operator+(const QString &s1, const QString &s2) +{ QString t(s1); t += s2; return t; } +inline const QString operator+(const QString &s1, QChar s2) +{ QString t(s1); t += s2; return t; } +inline const QString operator+(QChar s1, const QString &s2) +{ QString t(s1); t += s2; return t; } +# if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) +inline QT_ASCII_CAST_WARN const QString operator+(const QString &s1, const char *s2) +{ QString t(s1); t += QString::fromUtf8(s2); return t; } +inline QT_ASCII_CAST_WARN const QString operator+(const char *s1, const QString &s2) +{ QString t = QString::fromUtf8(s1); t += s2; return t; } +inline QT_ASCII_CAST_WARN const QString operator+(char c, const QString &s) +{ QString t = s; t.prepend(QChar::fromLatin1(c)); return t; } +inline QT_ASCII_CAST_WARN const QString operator+(const QString &s, char c) +{ QString t = s; t += QChar::fromLatin1(c); return t; } +inline QT_ASCII_CAST_WARN const QString operator+(const QByteArray &ba, const QString &s) +{ QString t = QString::fromUtf8(ba); t += s; return t; } +inline QT_ASCII_CAST_WARN const QString operator+(const QString &s, const QByteArray &ba) +{ QString t(s); t += QString::fromUtf8(ba); return t; } +# endif // QT_NO_CAST_FROM_ASCII +#endif // QT_USE_QSTRINGBUILDER + +inline std::string QString::toStdString() const +{ return toUtf8().toStdString(); } + +inline QString QString::fromStdString(const std::string &s) +{ return fromUtf8(s.data(), int(s.size())); } + +inline std::wstring QString::toStdWString() const +{ + std::wstring str; + str.resize(length()); + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + // VS2005 crashes if the string is empty + if (!length()) + return str; +#endif + + str.resize(toWCharArray(&(*str.begin()))); + return str; +} + +inline QString QString::fromStdWString(const std::wstring &s) +{ return fromWCharArray(s.data(), int(s.size())); } + +#if defined(Q_STDLIB_UNICODE_STRINGS) +inline QString QString::fromStdU16String(const std::u16string &s) +{ return fromUtf16(s.data(), int(s.size())); } + +inline std::u16string QString::toStdU16String() const +{ return std::u16string(reinterpret_cast(utf16()), length()); } + +inline QString QString::fromStdU32String(const std::u32string &s) +{ return fromUcs4(s.data(), int(s.size())); } + +inline std::u32string QString::toStdU32String() const +{ + std::u32string u32str(length(), char32_t(0)); + int len = toUcs4_helper(d->data(), length(), reinterpret_cast(&u32str[0])); + u32str.resize(len); + return u32str; +} +#endif + +#if !defined(QT_NO_DATASTREAM) || (defined(QT_BOOTSTRAPPED) && !defined(QT_BUILD_QMAKE)) +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QString &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QString &); +#endif + +Q_DECLARE_SHARED(QString) +Q_DECLARE_OPERATORS_FOR_FLAGS(QString::SectionFlags) + + +class Q_CORE_EXPORT QStringRef { + const QString *m_string; + int m_position; + int m_size; +public: + typedef QString::size_type size_type; + typedef QString::value_type value_type; + typedef const QChar *const_iterator; + typedef std::reverse_iterator const_reverse_iterator; + typedef QString::const_pointer const_pointer; + typedef QString::const_reference const_reference; + + // ### Qt 6: make this constructor constexpr, after the destructor is made trivial + inline QStringRef() : m_string(Q_NULLPTR), m_position(0), m_size(0) {} + inline QStringRef(const QString *string, int position, int size); + inline QStringRef(const QString *string); + +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + // ### Qt 6: remove all of these, the implicit ones are fine + QStringRef(const QStringRef &other) Q_DECL_NOTHROW + :m_string(other.m_string), m_position(other.m_position), m_size(other.m_size) + {} +#ifdef Q_COMPILER_RVALUE_REFS + QStringRef(QStringRef &&other) Q_DECL_NOTHROW : m_string(other.m_string), m_position(other.m_position), m_size(other.m_size) {} + QStringRef &operator=(QStringRef &&other) Q_DECL_NOTHROW { return *this = other; } +#endif + QStringRef &operator=(const QStringRef &other) Q_DECL_NOTHROW + { + m_string = other.m_string; m_position = other.m_position; + m_size = other.m_size; return *this; + } + inline ~QStringRef(){} +#endif // Qt < 6.0.0 + + inline const QString *string() const { return m_string; } + inline int position() const { return m_position; } + inline int size() const { return m_size; } + inline int count() const { return m_size; } + inline int length() const { return m_size; } + + int indexOf(const QString &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(QChar ch, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(QLatin1String str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int indexOf(const QStringRef &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(const QString &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(QChar ch, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(QLatin1String str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int lastIndexOf(const QStringRef &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline bool contains(const QStringRef &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + int count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + int count(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + Q_REQUIRED_RESULT QVector split(const QString &sep, QString::SplitBehavior behavior = QString::KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + Q_REQUIRED_RESULT QVector split(QChar sep, QString::SplitBehavior behavior = QString::KeepEmptyParts, + Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + Q_REQUIRED_RESULT QStringRef left(int n) const; + Q_REQUIRED_RESULT QStringRef right(int n) const; + Q_REQUIRED_RESULT QStringRef mid(int pos, int n = -1) const; + + void truncate(int pos) Q_DECL_NOTHROW { m_size = qBound(0, pos, m_size); } + void chop(int n) Q_DECL_NOTHROW + { + if (n >= m_size) + m_size = 0; + else if (n > 0) + m_size -= n; + } + + bool isRightToLeft() const; + + bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool startsWith(const QStringRef &c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool endsWith(const QStringRef &c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + inline QStringRef &operator=(const QString *string); + + inline const QChar *unicode() const + { + if (!m_string) + return reinterpret_cast(QString::Data::sharedNull()->data()); + return m_string->unicode() + m_position; + } + inline const QChar *data() const { return unicode(); } + inline const QChar *constData() const { return unicode(); } + + inline const_iterator begin() const { return unicode(); } + inline const_iterator cbegin() const { return unicode(); } + inline const_iterator constBegin() const { return unicode(); } + inline const_iterator end() const { return unicode() + size(); } + inline const_iterator cend() const { return unicode() + size(); } + inline const_iterator constEnd() const { return unicode() + size(); } + inline const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + inline const_reverse_iterator crbegin() const { return rbegin(); } + inline const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + inline const_reverse_iterator crend() const { return rend(); } + +#if QT_DEPRECATED_SINCE(5, 0) + Q_REQUIRED_RESULT QT_DEPRECATED QByteArray toAscii() const + { return toLatin1(); } +#endif + Q_REQUIRED_RESULT QByteArray toLatin1() const; + Q_REQUIRED_RESULT QByteArray toUtf8() const; + Q_REQUIRED_RESULT QByteArray toLocal8Bit() const; + Q_REQUIRED_RESULT QVector toUcs4() const; + + inline void clear() { m_string = Q_NULLPTR; m_position = m_size = 0; } + QString toString() const; + inline bool isEmpty() const { return m_size == 0; } + inline bool isNull() const { return m_string == Q_NULLPTR || m_string->isNull(); } + + QStringRef appendTo(QString *string) const; + + inline const QChar at(int i) const + { Q_ASSERT(uint(i) < uint(size())); return m_string->at(i + m_position); } + QChar operator[](int i) const { return at(i); } + +#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) + // ASCII compatibility + inline QT_ASCII_CAST_WARN bool operator==(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator!=(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator<(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator<=(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator>(const char *s) const; + inline QT_ASCII_CAST_WARN bool operator>=(const char *s) const; +#endif + + int compare(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const Q_DECL_NOTHROW; + int compare(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const Q_DECL_NOTHROW; + int compare(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const Q_DECL_NOTHROW; +#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) + int compare(const QByteArray &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const + { return QString::compare_helper(unicode(), size(), s.data(), qstrnlen(s.data(), s.size()), cs); } +#endif + static int compare(const QStringRef &s1, const QString &s2, + Qt::CaseSensitivity = Qt::CaseSensitive) Q_DECL_NOTHROW; + static int compare(const QStringRef &s1, const QStringRef &s2, + Qt::CaseSensitivity = Qt::CaseSensitive) Q_DECL_NOTHROW; + static int compare(const QStringRef &s1, QLatin1String s2, + Qt::CaseSensitivity cs = Qt::CaseSensitive) Q_DECL_NOTHROW; + + int localeAwareCompare(const QString &s) const; + int localeAwareCompare(const QStringRef &s) const; + static int localeAwareCompare(const QStringRef &s1, const QString &s2); + static int localeAwareCompare(const QStringRef &s1, const QStringRef &s2); + + Q_REQUIRED_RESULT QStringRef trimmed() const; + short toShort(bool *ok = Q_NULLPTR, int base = 10) const; + ushort toUShort(bool *ok = Q_NULLPTR, int base = 10) const; + int toInt(bool *ok = Q_NULLPTR, int base = 10) const; + uint toUInt(bool *ok = Q_NULLPTR, int base = 10) const; + long toLong(bool *ok = Q_NULLPTR, int base = 10) const; + ulong toULong(bool *ok = Q_NULLPTR, int base = 10) const; + qlonglong toLongLong(bool *ok = Q_NULLPTR, int base = 10) const; + qulonglong toULongLong(bool *ok = Q_NULLPTR, int base = 10) const; + float toFloat(bool *ok = Q_NULLPTR) const; + double toDouble(bool *ok = Q_NULLPTR) const; +}; +Q_DECLARE_TYPEINFO(QStringRef, Q_PRIMITIVE_TYPE); + +inline QStringRef &QStringRef::operator=(const QString *aString) +{ m_string = aString; m_position = 0; m_size = aString?aString->size():0; return *this; } + +inline QStringRef::QStringRef(const QString *aString, int aPosition, int aSize) + :m_string(aString), m_position(aPosition), m_size(aSize){} + +inline QStringRef::QStringRef(const QString *aString) + :m_string(aString), m_position(0), m_size(aString?aString->size() : 0){} + +// QStringRef <> QStringRef +Q_CORE_EXPORT bool operator==(const QStringRef &s1, const QStringRef &s2) Q_DECL_NOTHROW; +inline bool operator!=(const QStringRef &s1, const QStringRef &s2) Q_DECL_NOTHROW +{ return !(s1 == s2); } +Q_CORE_EXPORT bool operator<(const QStringRef &s1, const QStringRef &s2) Q_DECL_NOTHROW; +inline bool operator>(const QStringRef &s1, const QStringRef &s2) Q_DECL_NOTHROW +{ return s2 < s1; } +inline bool operator<=(const QStringRef &s1, const QStringRef &s2) Q_DECL_NOTHROW +{ return !(s1 > s2); } +inline bool operator>=(const QStringRef &s1, const QStringRef &s2) Q_DECL_NOTHROW +{ return !(s1 < s2); } + +// QString <> QStringRef +Q_CORE_EXPORT bool operator==(const QString &lhs, const QStringRef &rhs) Q_DECL_NOTHROW; +inline bool operator!=(const QString &lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return lhs.compare(rhs) != 0; } +inline bool operator< (const QString &lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return lhs.compare(rhs) < 0; } +inline bool operator> (const QString &lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return lhs.compare(rhs) > 0; } +inline bool operator<=(const QString &lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return lhs.compare(rhs) <= 0; } +inline bool operator>=(const QString &lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return lhs.compare(rhs) >= 0; } + +inline bool operator==(const QStringRef &lhs, const QString &rhs) Q_DECL_NOTHROW { return rhs == lhs; } +inline bool operator!=(const QStringRef &lhs, const QString &rhs) Q_DECL_NOTHROW { return rhs != lhs; } +inline bool operator< (const QStringRef &lhs, const QString &rhs) Q_DECL_NOTHROW { return rhs > lhs; } +inline bool operator> (const QStringRef &lhs, const QString &rhs) Q_DECL_NOTHROW { return rhs < lhs; } +inline bool operator<=(const QStringRef &lhs, const QString &rhs) Q_DECL_NOTHROW { return rhs >= lhs; } +inline bool operator>=(const QStringRef &lhs, const QString &rhs) Q_DECL_NOTHROW { return rhs <= lhs; } + +inline int QString::compare(const QStringRef &s, Qt::CaseSensitivity cs) const Q_DECL_NOTHROW +{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); } +inline int QString::compare(const QString &s1, const QStringRef &s2, Qt::CaseSensitivity cs) Q_DECL_NOTHROW +{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); } +inline int QStringRef::compare(const QString &s, Qt::CaseSensitivity cs) const Q_DECL_NOTHROW +{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); } +inline int QStringRef::compare(const QStringRef &s, Qt::CaseSensitivity cs) const Q_DECL_NOTHROW +{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); } +inline int QStringRef::compare(QLatin1String s, Qt::CaseSensitivity cs) const Q_DECL_NOTHROW +{ return QString::compare_helper(constData(), length(), s, cs); } +inline int QStringRef::compare(const QStringRef &s1, const QString &s2, Qt::CaseSensitivity cs) Q_DECL_NOTHROW +{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); } +inline int QStringRef::compare(const QStringRef &s1, const QStringRef &s2, Qt::CaseSensitivity cs) Q_DECL_NOTHROW +{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); } +inline int QStringRef::compare(const QStringRef &s1, QLatin1String s2, Qt::CaseSensitivity cs) Q_DECL_NOTHROW +{ return QString::compare_helper(s1.constData(), s1.length(), s2, cs); } + +// QLatin1String <> QStringRef +Q_CORE_EXPORT bool operator==(QLatin1String lhs, const QStringRef &rhs) Q_DECL_NOTHROW; +inline bool operator!=(QLatin1String lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return rhs.compare(lhs) != 0; } +inline bool operator< (QLatin1String lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return rhs.compare(lhs) > 0; } +inline bool operator> (QLatin1String lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return rhs.compare(lhs) < 0; } +inline bool operator<=(QLatin1String lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return rhs.compare(lhs) >= 0; } +inline bool operator>=(QLatin1String lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return rhs.compare(lhs) <= 0; } + +inline bool operator==(const QStringRef &lhs, QLatin1String rhs) Q_DECL_NOTHROW { return rhs == lhs; } +inline bool operator!=(const QStringRef &lhs, QLatin1String rhs) Q_DECL_NOTHROW { return rhs != lhs; } +inline bool operator< (const QStringRef &lhs, QLatin1String rhs) Q_DECL_NOTHROW { return rhs > lhs; } +inline bool operator> (const QStringRef &lhs, QLatin1String rhs) Q_DECL_NOTHROW { return rhs < lhs; } +inline bool operator<=(const QStringRef &lhs, QLatin1String rhs) Q_DECL_NOTHROW { return rhs >= lhs; } +inline bool operator>=(const QStringRef &lhs, QLatin1String rhs) Q_DECL_NOTHROW { return rhs <= lhs; } + +// QChar <> QString +inline bool operator==(QChar lhs, const QString &rhs) Q_DECL_NOTHROW +{ return QString::compare_helper(&lhs, 1, rhs.data(), rhs.size()) == 0; } +inline bool operator< (QChar lhs, const QString &rhs) Q_DECL_NOTHROW +{ return QString::compare_helper(&lhs, 1, rhs.data(), rhs.size()) < 0; } +inline bool operator> (QChar lhs, const QString &rhs) Q_DECL_NOTHROW +{ return QString::compare_helper(&lhs, 1, rhs.data(), rhs.size()) > 0; } + +inline bool operator!=(QChar lhs, const QString &rhs) Q_DECL_NOTHROW { return !(lhs == rhs); } +inline bool operator<=(QChar lhs, const QString &rhs) Q_DECL_NOTHROW { return !(lhs > rhs); } +inline bool operator>=(QChar lhs, const QString &rhs) Q_DECL_NOTHROW { return !(lhs < rhs); } + +inline bool operator==(const QString &lhs, QChar rhs) Q_DECL_NOTHROW { return rhs == lhs; } +inline bool operator!=(const QString &lhs, QChar rhs) Q_DECL_NOTHROW { return !(rhs == lhs); } +inline bool operator< (const QString &lhs, QChar rhs) Q_DECL_NOTHROW { return rhs > lhs; } +inline bool operator> (const QString &lhs, QChar rhs) Q_DECL_NOTHROW { return rhs < lhs; } +inline bool operator<=(const QString &lhs, QChar rhs) Q_DECL_NOTHROW { return !(rhs < lhs); } +inline bool operator>=(const QString &lhs, QChar rhs) Q_DECL_NOTHROW { return !(rhs > lhs); } + +// QChar <> QStringRef +inline bool operator==(QChar lhs, const QStringRef &rhs) Q_DECL_NOTHROW +{ return QString::compare_helper(&lhs, 1, rhs.data(), rhs.size()) == 0; } +inline bool operator< (QChar lhs, const QStringRef &rhs) Q_DECL_NOTHROW +{ return QString::compare_helper(&lhs, 1, rhs.data(), rhs.size()) < 0; } +inline bool operator> (QChar lhs, const QStringRef &rhs) Q_DECL_NOTHROW +{ return QString::compare_helper(&lhs, 1, rhs.data(), rhs.size()) > 0; } + +inline bool operator!=(QChar lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return !(lhs == rhs); } +inline bool operator<=(QChar lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return !(lhs > rhs); } +inline bool operator>=(QChar lhs, const QStringRef &rhs) Q_DECL_NOTHROW { return !(lhs < rhs); } + +inline bool operator==(const QStringRef &lhs, QChar rhs) Q_DECL_NOTHROW { return rhs == lhs; } +inline bool operator!=(const QStringRef &lhs, QChar rhs) Q_DECL_NOTHROW { return !(rhs == lhs); } +inline bool operator< (const QStringRef &lhs, QChar rhs) Q_DECL_NOTHROW { return rhs > lhs; } +inline bool operator> (const QStringRef &lhs, QChar rhs) Q_DECL_NOTHROW { return rhs < lhs; } +inline bool operator<=(const QStringRef &lhs, QChar rhs) Q_DECL_NOTHROW { return !(rhs < lhs); } +inline bool operator>=(const QStringRef &lhs, QChar rhs) Q_DECL_NOTHROW { return !(rhs > lhs); } + +// QChar <> QLatin1String +inline bool operator==(QChar lhs, QLatin1String rhs) Q_DECL_NOTHROW +{ return QString::compare_helper(&lhs, 1, rhs) == 0; } +inline bool operator< (QChar lhs, QLatin1String rhs) Q_DECL_NOTHROW +{ return QString::compare_helper(&lhs, 1, rhs) < 0; } +inline bool operator> (QChar lhs, QLatin1String rhs) Q_DECL_NOTHROW +{ return QString::compare_helper(&lhs, 1, rhs) > 0; } + +inline bool operator!=(QChar lhs, QLatin1String rhs) Q_DECL_NOTHROW { return !(lhs == rhs); } +inline bool operator<=(QChar lhs, QLatin1String rhs) Q_DECL_NOTHROW { return !(lhs > rhs); } +inline bool operator>=(QChar lhs, QLatin1String rhs) Q_DECL_NOTHROW { return !(lhs < rhs); } + +inline bool operator==(QLatin1String lhs, QChar rhs) Q_DECL_NOTHROW { return rhs == lhs; } +inline bool operator!=(QLatin1String lhs, QChar rhs) Q_DECL_NOTHROW { return !(rhs == lhs); } +inline bool operator< (QLatin1String lhs, QChar rhs) Q_DECL_NOTHROW { return rhs > lhs; } +inline bool operator> (QLatin1String lhs, QChar rhs) Q_DECL_NOTHROW { return rhs < lhs; } +inline bool operator<=(QLatin1String lhs, QChar rhs) Q_DECL_NOTHROW { return !(rhs < lhs); } +inline bool operator>=(QLatin1String lhs, QChar rhs) Q_DECL_NOTHROW { return !(rhs > lhs); } + +#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) +// QStringRef <> QByteArray +inline QT_ASCII_CAST_WARN bool operator==(const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) == 0; } +inline QT_ASCII_CAST_WARN bool operator!=(const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) != 0; } +inline QT_ASCII_CAST_WARN bool operator< (const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) < 0; } +inline QT_ASCII_CAST_WARN bool operator> (const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) > 0; } +inline QT_ASCII_CAST_WARN bool operator<=(const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) <= 0; } +inline QT_ASCII_CAST_WARN bool operator>=(const QStringRef &lhs, const QByteArray &rhs) { return lhs.compare(rhs) >= 0; } + +inline QT_ASCII_CAST_WARN bool operator==(const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) == 0; } +inline QT_ASCII_CAST_WARN bool operator!=(const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) != 0; } +inline QT_ASCII_CAST_WARN bool operator< (const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) > 0; } +inline QT_ASCII_CAST_WARN bool operator> (const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) < 0; } +inline QT_ASCII_CAST_WARN bool operator<=(const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) >= 0; } +inline QT_ASCII_CAST_WARN bool operator>=(const QByteArray &lhs, const QStringRef &rhs) { return rhs.compare(lhs) <= 0; } + +// QStringRef <> const char * +inline QT_ASCII_CAST_WARN bool QStringRef::operator==(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) == 0; } +inline QT_ASCII_CAST_WARN bool QStringRef::operator!=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) != 0; } +inline QT_ASCII_CAST_WARN bool QStringRef::operator<(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) < 0; } +inline QT_ASCII_CAST_WARN bool QStringRef::operator<=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) <= 0; } +inline QT_ASCII_CAST_WARN bool QStringRef::operator>(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) > 0; } +inline QT_ASCII_CAST_WARN bool QStringRef::operator>=(const char *s) const +{ return QString::compare_helper(constData(), size(), s, -1) >= 0; } + +inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) == 0; } +inline QT_ASCII_CAST_WARN bool operator!=(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) != 0; } +inline QT_ASCII_CAST_WARN bool operator<(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) > 0; } +inline QT_ASCII_CAST_WARN bool operator<=(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) >= 0; } +inline QT_ASCII_CAST_WARN bool operator>(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) < 0; } +inline QT_ASCII_CAST_WARN bool operator>=(const char *s1, const QStringRef &s2) +{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) <= 0; } +#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII) + +inline int QString::localeAwareCompare(const QStringRef &s) const +{ return localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); } +inline int QString::localeAwareCompare(const QString& s1, const QStringRef& s2) +{ return localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); } +inline int QStringRef::localeAwareCompare(const QString &s) const +{ return QString::localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); } +inline int QStringRef::localeAwareCompare(const QStringRef &s) const +{ return QString::localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); } +inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QString &s2) +{ return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); } +inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QStringRef &s2) +{ return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); } + +inline bool QStringRef::contains(const QString &s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } +inline bool QStringRef::contains(QLatin1String s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } +inline bool QStringRef::contains(QChar c, Qt::CaseSensitivity cs) const +{ return indexOf(c, 0, cs) != -1; } +inline bool QStringRef::contains(const QStringRef &s, Qt::CaseSensitivity cs) const +{ return indexOf(s, 0, cs) != -1; } + +inline QString &QString::insert(int i, const QStringRef &s) +{ return insert(i, s.constData(), s.length()); } + +#if !defined(QT_USE_FAST_OPERATOR_PLUS) && !defined(QT_USE_QSTRINGBUILDER) +inline QString operator+(const QString &s1, const QStringRef &s2) +{ QString t; t.reserve(s1.size() + s2.size()); t += s1; t += s2; return t; } +inline QString operator+(const QStringRef &s1, const QString &s2) +{ QString t; t.reserve(s1.size() + s2.size()); t += s1; t += s2; return t; } +inline QString operator+(const QStringRef &s1, QLatin1String s2) +{ QString t; t.reserve(s1.size() + s2.size()); t += s1; t += s2; return t; } +inline QString operator+(QLatin1String s1, const QStringRef &s2) +{ QString t; t.reserve(s1.size() + s2.size()); t += s1; t += s2; return t; } +inline QString operator+(const QStringRef &s1, const QStringRef &s2) +{ QString t; t.reserve(s1.size() + s2.size()); t += s1; t += s2; return t; } +inline QString operator+(const QStringRef &s1, QChar s2) +{ QString t; t.reserve(s1.size() + 1); t += s1; t += s2; return t; } +inline QString operator+(QChar s1, const QStringRef &s2) +{ QString t; t.reserve(1 + s2.size()); t += s1; t += s2; return t; } +#endif // !(QT_USE_FAST_OPERATOR_PLUS || QT_USE_QSTRINGBUILDER) + +namespace Qt { +#if QT_DEPRECATED_SINCE(5, 0) +QT_DEPRECATED inline QString escape(const QString &plain) { + return plain.toHtmlEscaped(); +} +#endif +} + +QT_END_NAMESPACE + +#if defined(QT_USE_FAST_OPERATOR_PLUS) || defined(QT_USE_QSTRINGBUILDER) +#include +#endif + +#endif // QSTRING_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qstringbuilder.h b/qrenderdoc/3rdparty/qt/include/QtCore/qstringbuilder.h new file mode 100644 index 000000000..9a40abcfe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qstringbuilder.h @@ -0,0 +1,423 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTRINGBUILDER_H +#define QSTRINGBUILDER_H + +#if 0 +// syncqt can not handle the templates in this file, and it doesn't need to +// process them anyway because they are internal. +#pragma qt_class(QStringBuilder) +#pragma qt_sync_stop_processing +#endif + +#include +#include + +#include + +QT_BEGIN_NAMESPACE + + +struct Q_CORE_EXPORT QAbstractConcatenable +{ +protected: + static void convertFromAscii(const char *a, int len, QChar *&out) Q_DECL_NOTHROW; + static inline void convertFromAscii(char a, QChar *&out) Q_DECL_NOTHROW + { + *out++ = QLatin1Char(a); + } + static void appendLatin1To(const char *a, int len, QChar *out) Q_DECL_NOTHROW; +}; + +template struct QConcatenable {}; + +namespace QtStringBuilder { + template struct ConvertToTypeHelper + { typedef A ConvertTo; }; + template struct ConvertToTypeHelper + { typedef QString ConvertTo; }; +} + +template +struct QStringBuilderCommon +{ + T toUpper() const { return resolved().toUpper(); } + T toLower() const { return resolved().toLower(); } + +protected: + T resolved() const { return *static_cast(this); } +}; + +template +struct QStringBuilderBase : public QStringBuilderCommon +{ +}; + +template +struct QStringBuilderBase : public QStringBuilderCommon +{ + QByteArray toLatin1() const { return this->resolved().toLatin1(); } + QByteArray toUtf8() const { return this->resolved().toUtf8(); } + QByteArray toLocal8Bit() const { return this->resolved().toLocal8Bit(); } +}; + +template +class QStringBuilder : public QStringBuilderBase, typename QtStringBuilder::ConvertToTypeHelper::ConvertTo, typename QConcatenable::ConvertTo>::ConvertTo> +{ +public: + QStringBuilder(const A &a_, const B &b_) : a(a_), b(b_) {} +private: + friend class QByteArray; + friend class QString; + template T convertTo() const + { + const uint len = QConcatenable< QStringBuilder >::size(*this); + T s(len, Qt::Uninitialized); + + // we abuse const_cast / constData here because we know we've just + // allocated the data and we're the only reference count + typename T::iterator d = const_cast(s.constData()); + typename T::const_iterator const start = d; + QConcatenable< QStringBuilder >::appendTo(*this, d); + + if (!QConcatenable< QStringBuilder >::ExactSize && int(len) != d - start) { + // this resize is necessary since we allocate a bit too much + // when dealing with variable sized 8-bit encodings + s.resize(d - start); + } + return s; + } + + typedef QConcatenable > Concatenable; + typedef typename Concatenable::ConvertTo ConvertTo; +public: + operator ConvertTo() const { return convertTo(); } + + int size() const { return Concatenable::size(*this); } + + const A &a; + const B &b; +}; + +template <> +class QStringBuilder : public QStringBuilderBase, QString> +{ + public: + QStringBuilder(const QString &a_, const QString &b_) : a(a_), b(b_) {} + QStringBuilder(const QStringBuilder &other) : a(other.a), b(other.b) {} + + operator QString() const + { QString r(a); r += b; return r; } + + const QString &a; + const QString &b; + + private: + QStringBuilder &operator=(const QStringBuilder &) Q_DECL_EQ_DELETE; +}; + +template <> +class QStringBuilder : public QStringBuilderBase, QByteArray> +{ + public: + QStringBuilder(const QByteArray &a_, const QByteArray &b_) : a(a_), b(b_) {} + QStringBuilder(const QStringBuilder &other) : a(other.a), b(other.b) {} + + operator QByteArray() const + { QByteArray r(a); r += b; return r; } + + const QByteArray &a; + const QByteArray &b; + + private: + QStringBuilder &operator=(const QStringBuilder &) Q_DECL_EQ_DELETE; +}; + + +template <> struct QConcatenable : private QAbstractConcatenable +{ + typedef char type; + typedef QByteArray ConvertTo; + enum { ExactSize = true }; + static int size(const char) { return 1; } +#ifndef QT_NO_CAST_FROM_ASCII + static inline QT_ASCII_CAST_WARN void appendTo(const char c, QChar *&out) + { + QAbstractConcatenable::convertFromAscii(c, out); + } +#endif + static inline void appendTo(const char c, char *&out) + { *out++ = c; } +}; + +template <> struct QConcatenable +{ + typedef QLatin1Char type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QLatin1Char) { return 1; } + static inline void appendTo(const QLatin1Char c, QChar *&out) + { *out++ = c; } + static inline void appendTo(const QLatin1Char c, char *&out) + { *out++ = c.toLatin1(); } +}; + +template <> struct QConcatenable : private QAbstractConcatenable +{ + typedef QChar type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QChar) { return 1; } + static inline void appendTo(const QChar c, QChar *&out) + { *out++ = c; } +}; + +template <> struct QConcatenable : private QAbstractConcatenable +{ + typedef QChar::SpecialCharacter type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QChar::SpecialCharacter) { return 1; } + static inline void appendTo(const QChar::SpecialCharacter c, QChar *&out) + { *out++ = c; } +}; + +template <> struct QConcatenable : private QAbstractConcatenable +{ + typedef QCharRef type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(QCharRef) { return 1; } + static inline void appendTo(QCharRef c, QChar *&out) + { *out++ = QChar(c); } +}; + +template <> struct QConcatenable : private QAbstractConcatenable +{ + typedef QLatin1String type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QLatin1String a) { return a.size(); } + static inline void appendTo(const QLatin1String a, QChar *&out) + { + appendLatin1To(a.latin1(), a.size(), out); + out += a.size(); + } + static inline void appendTo(const QLatin1String a, char *&out) + { + if (const char *data = a.data()) { + memcpy(out, data, a.size()); + out += a.size(); + } + } +}; + +template <> struct QConcatenable : private QAbstractConcatenable +{ + typedef QString type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QString &a) { return a.size(); } + static inline void appendTo(const QString &a, QChar *&out) + { + const int n = a.size(); + memcpy(out, reinterpret_cast(a.constData()), sizeof(QChar) * n); + out += n; + } +}; + +template <> struct QConcatenable : private QAbstractConcatenable +{ + typedef QStringRef type; + typedef QString ConvertTo; + enum { ExactSize = true }; + static int size(const QStringRef &a) { return a.size(); } + static inline void appendTo(const QStringRef &a, QChar *&out) + { + const int n = a.size(); + memcpy(out, reinterpret_cast(a.constData()), sizeof(QChar) * n); + out += n; + } +}; + +template struct QConcatenable : private QAbstractConcatenable +{ + typedef const char type[N]; + typedef QByteArray ConvertTo; + enum { ExactSize = false }; + static int size(const char[N]) { return N - 1; } +#ifndef QT_NO_CAST_FROM_ASCII + static inline void QT_ASCII_CAST_WARN appendTo(const char a[N], QChar *&out) + { + QAbstractConcatenable::convertFromAscii(a, N - 1, out); + } +#endif + static inline void appendTo(const char a[N], char *&out) + { + while (*a) + *out++ = *a++; + } +}; + +template struct QConcatenable : QConcatenable +{ + typedef char type[N]; +}; + +template <> struct QConcatenable : private QAbstractConcatenable +{ + typedef char const *type; + typedef QByteArray ConvertTo; + enum { ExactSize = false }; + static int size(const char *a) { return qstrlen(a); } +#ifndef QT_NO_CAST_FROM_ASCII + static inline void QT_ASCII_CAST_WARN appendTo(const char *a, QChar *&out) + { QAbstractConcatenable::convertFromAscii(a, -1, out); } +#endif + static inline void appendTo(const char *a, char *&out) + { + if (!a) + return; + while (*a) + *out++ = *a++; + } +}; + +template <> struct QConcatenable : private QAbstractConcatenable +{ + typedef QByteArray type; + typedef QByteArray ConvertTo; + enum { ExactSize = false }; + static int size(const QByteArray &ba) { return ba.size(); } +#ifndef QT_NO_CAST_FROM_ASCII + static inline QT_ASCII_CAST_WARN void appendTo(const QByteArray &ba, QChar *&out) + { + QAbstractConcatenable::convertFromAscii(ba.constData(), ba.size(), out); + } +#endif + static inline void appendTo(const QByteArray &ba, char *&out) + { + const char *a = ba.constData(); + const char * const end = ba.end(); + while (a != end) + *out++ = *a++; + } +}; + + +template +struct QConcatenable< QStringBuilder > +{ + typedef QStringBuilder type; + typedef typename QtStringBuilder::ConvertToTypeHelper::ConvertTo, typename QConcatenable::ConvertTo>::ConvertTo ConvertTo; + enum { ExactSize = QConcatenable::ExactSize && QConcatenable::ExactSize }; + static int size(const type &p) + { + return QConcatenable::size(p.a) + QConcatenable::size(p.b); + } + template static inline void appendTo(const type &p, T *&out) + { + QConcatenable::appendTo(p.a, out); + QConcatenable::appendTo(p.b, out); + } +}; + +template +QStringBuilder::type, typename QConcatenable::type> +operator%(const A &a, const B &b) +{ + return QStringBuilder::type, typename QConcatenable::type>(a, b); +} + +// QT_USE_FAST_OPERATOR_PLUS was introduced in 4.7, QT_USE_QSTRINGBUILDER is to be used from 4.8 onwards +// QT_USE_FAST_OPERATOR_PLUS does not remove the normal operator+ for QByteArray +#if defined(QT_USE_FAST_OPERATOR_PLUS) || defined(QT_USE_QSTRINGBUILDER) +template +QStringBuilder::type, typename QConcatenable::type> +operator+(const A &a, const B &b) +{ + return QStringBuilder::type, typename QConcatenable::type>(a, b); +} +#endif + +namespace QtStringBuilder { +template +QByteArray &appendToByteArray(QByteArray &a, const QStringBuilder &b, char) +{ + // append 8-bit data to a byte array + int len = a.size() + QConcatenable< QStringBuilder >::size(b); + a.reserve(len); + char *it = a.data() + a.size(); + QConcatenable< QStringBuilder >::appendTo(b, it); + a.resize(len); //we need to resize after the appendTo for the case str+=foo+str + return a; +} + +#ifndef QT_NO_CAST_TO_ASCII +template +QByteArray &appendToByteArray(QByteArray &a, const QStringBuilder &b, QChar) +{ + return a += QString(b).toUtf8(); +} +#endif +} + +template +QByteArray &operator+=(QByteArray &a, const QStringBuilder &b) +{ + return QtStringBuilder::appendToByteArray(a, b, + typename QConcatenable< QStringBuilder >::ConvertTo::value_type()); +} + +template +QString &operator+=(QString &a, const QStringBuilder &b) +{ + int len = a.size() + QConcatenable< QStringBuilder >::size(b); + a.reserve(len); + QChar *it = a.data() + a.size(); + QConcatenable< QStringBuilder >::appendTo(b, it); + a.resize(int(it - a.constData())); //may be smaller than len if there was conversion from utf8 + return a; +} + + +QT_END_NAMESPACE + +#endif // QSTRINGBUILDER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qstringlist.h b/qrenderdoc/3rdparty/qt/include/QtCore/qstringlist.h new file mode 100644 index 000000000..720d7d741 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qstringlist.h @@ -0,0 +1,299 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QSTRINGLIST_H +#define QSTRINGLIST_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QRegExp; +class QRegularExpression; + +typedef QListIterator QStringListIterator; +typedef QMutableListIterator QMutableStringListIterator; + +class QStringList; + +#ifdef Q_QDOC +class QStringList : public QList +#else +template <> struct QListSpecialMethods +#endif +{ +#ifndef Q_QDOC +protected: + ~QListSpecialMethods() {} +#endif +public: + inline void sort(Qt::CaseSensitivity cs = Qt::CaseSensitive); + inline int removeDuplicates(); + + inline QString join(const QString &sep) const; + inline QString join(QLatin1String sep) const; + inline QString join(QChar sep) const; + + inline QStringList filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + inline QStringList &replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive); + +#ifndef QT_NO_REGEXP + inline QStringList filter(const QRegExp &rx) const; + inline QStringList &replaceInStrings(const QRegExp &rx, const QString &after); +#endif + +#ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGULAREXPRESSION + inline QStringList filter(const QRegularExpression &re) const; + inline QStringList &replaceInStrings(const QRegularExpression &re, const QString &after); +#endif // QT_NO_REGULAREXPRESSION +#endif // QT_BOOTSTRAPPED + +#ifndef Q_QDOC +private: + inline QStringList *self(); + inline const QStringList *self() const; +}; + +// ### Qt6: check if there's a better way +class QStringList : public QList +{ +#endif +public: + inline QStringList() Q_DECL_NOTHROW { } + inline explicit QStringList(const QString &i) { append(i); } + inline QStringList(const QList &l) : QList(l) { } +#ifdef Q_COMPILER_RVALUE_REFS + inline QStringList(QList &&l) Q_DECL_NOTHROW : QList(std::move(l)) { } +#endif +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QStringList(std::initializer_list args) : QList(args) { } +#endif + + QStringList &operator=(const QList &other) + { QList::operator=(other); return *this; } +#ifdef Q_COMPILER_RVALUE_REFS + QStringList &operator=(QList &&other) Q_DECL_NOTHROW + { QList::operator=(std::move(other)); return *this; } +#endif + + inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + + inline QStringList operator+(const QStringList &other) const + { QStringList n = *this; n += other; return n; } + inline QStringList &operator<<(const QString &str) + { append(str); return *this; } + inline QStringList &operator<<(const QStringList &l) + { *this += l; return *this; } + inline QStringList &operator<<(const QList &l) + { *this += l; return *this; } + +#ifndef QT_NO_REGEXP + inline int indexOf(const QRegExp &rx, int from = 0) const; + inline int lastIndexOf(const QRegExp &rx, int from = -1) const; + inline int indexOf(QRegExp &rx, int from = 0) const; + inline int lastIndexOf(QRegExp &rx, int from = -1) const; +#endif + +#ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGULAREXPRESSION + inline int indexOf(const QRegularExpression &re, int from = 0) const; + inline int lastIndexOf(const QRegularExpression &re, int from = -1) const; +#endif // QT_NO_REGULAREXPRESSION +#endif // QT_BOOTSTRAPPED + + using QList::indexOf; + using QList::lastIndexOf; +}; + +Q_DECLARE_TYPEINFO(QStringList, Q_MOVABLE_TYPE); + +#ifndef Q_QDOC +inline QStringList *QListSpecialMethods::self() +{ return static_cast(this); } +inline const QStringList *QListSpecialMethods::self() const +{ return static_cast(this); } + +namespace QtPrivate { + void Q_CORE_EXPORT QStringList_sort(QStringList *that, Qt::CaseSensitivity cs); + int Q_CORE_EXPORT QStringList_removeDuplicates(QStringList *that); + QString Q_CORE_EXPORT QStringList_join(const QStringList *that, const QChar *sep, int seplen); + Q_CORE_EXPORT QString QStringList_join(const QStringList &list, QLatin1String sep); + QStringList Q_CORE_EXPORT QStringList_filter(const QStringList *that, const QString &str, + Qt::CaseSensitivity cs); + + bool Q_CORE_EXPORT QStringList_contains(const QStringList *that, const QString &str, Qt::CaseSensitivity cs); + void Q_CORE_EXPORT QStringList_replaceInStrings(QStringList *that, const QString &before, const QString &after, + Qt::CaseSensitivity cs); + +#ifndef QT_NO_REGEXP + void Q_CORE_EXPORT QStringList_replaceInStrings(QStringList *that, const QRegExp &rx, const QString &after); + QStringList Q_CORE_EXPORT QStringList_filter(const QStringList *that, const QRegExp &re); + int Q_CORE_EXPORT QStringList_indexOf(const QStringList *that, const QRegExp &rx, int from); + int Q_CORE_EXPORT QStringList_lastIndexOf(const QStringList *that, const QRegExp &rx, int from); + int Q_CORE_EXPORT QStringList_indexOf(const QStringList *that, QRegExp &rx, int from); + int Q_CORE_EXPORT QStringList_lastIndexOf(const QStringList *that, QRegExp &rx, int from); +#endif + +#ifndef QT_BOOTSTRAPPED +#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_REGULAREXPRESSION +#endif // QT_BOOTSTRAPPED +} + +inline void QListSpecialMethods::sort(Qt::CaseSensitivity cs) +{ + QtPrivate::QStringList_sort(self(), cs); +} + +inline int QListSpecialMethods::removeDuplicates() +{ + return QtPrivate::QStringList_removeDuplicates(self()); +} + +inline QString QListSpecialMethods::join(const QString &sep) const +{ + return QtPrivate::QStringList_join(self(), sep.constData(), sep.length()); +} + +QString QListSpecialMethods::join(QLatin1String sep) const +{ + return QtPrivate::QStringList_join(*self(), sep); +} + +inline QString QListSpecialMethods::join(QChar sep) const +{ + return QtPrivate::QStringList_join(self(), &sep, 1); +} + +inline QStringList QListSpecialMethods::filter(const QString &str, Qt::CaseSensitivity cs) const +{ + return QtPrivate::QStringList_filter(self(), str, cs); +} + +inline bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const +{ + return QtPrivate::QStringList_contains(this, str, cs); +} + +inline QStringList &QListSpecialMethods::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs) +{ + QtPrivate::QStringList_replaceInStrings(self(), before, after, cs); + return *self(); +} + +inline QStringList operator+(const QList &one, const QStringList &other) +{ + QStringList n = one; + n += other; + return n; +} + +#ifndef QT_NO_REGEXP +inline QStringList &QListSpecialMethods::replaceInStrings(const QRegExp &rx, const QString &after) +{ + QtPrivate::QStringList_replaceInStrings(self(), rx, after); + return *self(); +} + +inline QStringList QListSpecialMethods::filter(const QRegExp &rx) const +{ + return QtPrivate::QStringList_filter(self(), rx); +} + +inline int QStringList::indexOf(const QRegExp &rx, int from) const +{ + return QtPrivate::QStringList_indexOf(this, rx, from); +} + +inline int QStringList::lastIndexOf(const QRegExp &rx, int from) const +{ + return QtPrivate::QStringList_lastIndexOf(this, rx, from); +} + +inline int QStringList::indexOf(QRegExp &rx, int from) const +{ + return QtPrivate::QStringList_indexOf(this, rx, from); +} + +inline int QStringList::lastIndexOf(QRegExp &rx, int from) const +{ + return QtPrivate::QStringList_lastIndexOf(this, rx, from); +} +#endif + +#ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGULAREXPRESSION +inline QStringList &QListSpecialMethods::replaceInStrings(const QRegularExpression &rx, const QString &after) +{ + QtPrivate::QStringList_replaceInStrings(self(), rx, after); + return *self(); +} + +inline QStringList QListSpecialMethods::filter(const QRegularExpression &rx) const +{ + return QtPrivate::QStringList_filter(self(), rx); +} + +inline int QStringList::indexOf(const QRegularExpression &rx, int from) const +{ + return QtPrivate::QStringList_indexOf(this, rx, from); +} + +inline int QStringList::lastIndexOf(const QRegularExpression &rx, int from) const +{ + return QtPrivate::QStringList_lastIndexOf(this, rx, from); +} +#endif // QT_NO_REGULAREXPRESSION +#endif // QT_BOOTSTRAPPED +#endif // Q_QDOC + +QT_END_NAMESPACE + +#endif // QSTRINGLIST_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qstringlistmodel.h b/qrenderdoc/3rdparty/qt/include/QtCore/qstringlistmodel.h new file mode 100644 index 000000000..3bda848f4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qstringlistmodel.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTRINGLISTMODEL_H +#define QSTRINGLISTMODEL_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_STRINGLISTMODEL + +class Q_CORE_EXPORT QStringListModel : public QAbstractListModel +{ + Q_OBJECT +public: + explicit QStringListModel(QObject *parent = Q_NULLPTR); + explicit QStringListModel(const QStringList &strings, QObject *parent = Q_NULLPTR); + + int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; + + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + + bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + + void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) Q_DECL_OVERRIDE; + + QStringList stringList() const; + void setStringList(const QStringList &strings); + + Qt::DropActions supportedDropActions() const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QStringListModel) + QStringList lst; +}; + +#endif // QT_NO_STRINGLISTMODEL + +QT_END_NAMESPACE + +#endif // QSTRINGLISTMODEL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qstringmatcher.h b/qrenderdoc/3rdparty/qt/include/QtCore/qstringmatcher.h new file mode 100644 index 000000000..549bff9f2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qstringmatcher.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTRINGMATCHER_H +#define QSTRINGMATCHER_H + +#include + +QT_BEGIN_NAMESPACE + + +class QStringMatcherPrivate; + +class Q_CORE_EXPORT QStringMatcher +{ +public: + QStringMatcher(); + explicit QStringMatcher(const QString &pattern, + Qt::CaseSensitivity cs = Qt::CaseSensitive); + QStringMatcher(const QChar *uc, int len, + Qt::CaseSensitivity cs = Qt::CaseSensitive); + QStringMatcher(const QStringMatcher &other); + ~QStringMatcher(); + + QStringMatcher &operator=(const QStringMatcher &other); + + void setPattern(const QString &pattern); + void setCaseSensitivity(Qt::CaseSensitivity cs); + + int indexIn(const QString &str, int from = 0) const; + int indexIn(const QChar *str, int length, int from = 0) const; + QString pattern() const; + inline Qt::CaseSensitivity caseSensitivity() const { return q_cs; } + +private: + QStringMatcherPrivate *d_ptr; + QString q_pattern; + Qt::CaseSensitivity q_cs; + struct Data { + uchar q_skiptable[256]; + const QChar *uc; + int len; + }; + union { + uint q_data[256]; + Data p; + }; +}; + +QT_END_NAMESPACE + +#endif // QSTRINGMATCHER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsysinfo.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsysinfo.h new file mode 100644 index 000000000..6b73a17dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsysinfo.h @@ -0,0 +1,248 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QSYSINFO_H +#define QSYSINFO_H + +QT_BEGIN_NAMESPACE + +/* + System information +*/ + +/* + * GCC (5-7) has a regression that causes it to emit wrong deprecated warnings: + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77849 + * + * Try to work around it by defining our own macro. + */ + +#ifdef QT_SYSINFO_DEPRECATED_X +#error "QT_SYSINFO_DEPRECATED_X already defined" +#endif + +#ifdef Q_CC_GNU +#define QT_SYSINFO_DEPRECATED_X(x) +#else +#define QT_SYSINFO_DEPRECATED_X(x) QT_DEPRECATED_X(x) +#endif + +class QString; +class Q_CORE_EXPORT QSysInfo { +public: + enum Sizes { + WordSize = (sizeof(void *)<<3) + }; + +#if defined(QT_BUILD_QMAKE) + enum Endian { + BigEndian, + LittleEndian + }; + /* needed to bootstrap qmake */ + static const int ByteOrder; +#elif defined(Q_BYTE_ORDER) + enum Endian { + BigEndian, + LittleEndian + +# ifdef Q_QDOC + , ByteOrder = BigEndian or LittleEndian +# elif Q_BYTE_ORDER == Q_BIG_ENDIAN + , ByteOrder = BigEndian +# elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN + , ByteOrder = LittleEndian +# else +# error "Undefined byte order" +# endif + }; +#endif +#if QT_DEPRECATED_SINCE(5, 9) + enum QT_DEPRECATED_X("Use QOperatingSystemVersion") WinVersion { + WV_None = 0x0000, + + WV_32s = 0x0001, + WV_95 = 0x0002, + WV_98 = 0x0003, + WV_Me = 0x0004, + WV_DOS_based= 0x000f, + + /* codenames */ + WV_NT = 0x0010, + WV_2000 = 0x0020, + WV_XP = 0x0030, + WV_2003 = 0x0040, + WV_VISTA = 0x0080, + WV_WINDOWS7 = 0x0090, + WV_WINDOWS8 = 0x00a0, + WV_WINDOWS8_1 = 0x00b0, + WV_WINDOWS10 = 0x00c0, + WV_NT_based = 0x00f0, + + /* version numbers */ + WV_4_0 = WV_NT, + WV_5_0 = WV_2000, + WV_5_1 = WV_XP, + WV_5_2 = WV_2003, + WV_6_0 = WV_VISTA, + WV_6_1 = WV_WINDOWS7, + WV_6_2 = WV_WINDOWS8, + WV_6_3 = WV_WINDOWS8_1, + WV_10_0 = WV_WINDOWS10, + + WV_CE = 0x0100, + WV_CENET = 0x0200, + WV_CE_5 = 0x0300, + WV_CE_6 = 0x0400, + WV_CE_based = 0x0f00 + }; + +#define Q_MV_OSX(major, minor) (major == 10 ? minor + 2 : (major == 9 ? 1 : 0)) +#define Q_MV_IOS(major, minor) (QSysInfo::MV_IOS | major << 4 | minor) +#define Q_MV_TVOS(major, minor) (QSysInfo::MV_TVOS | major << 4 | minor) +#define Q_MV_WATCHOS(major, minor) (QSysInfo::MV_WATCHOS | major << 4 | minor) + enum QT_DEPRECATED_X("Use QOperatingSystemVersion") MacVersion { + MV_None = 0xffff, + MV_Unknown = 0x0000, + + /* version */ + MV_9 = Q_MV_OSX(9, 0), + MV_10_0 = Q_MV_OSX(10, 0), + MV_10_1 = Q_MV_OSX(10, 1), + MV_10_2 = Q_MV_OSX(10, 2), + MV_10_3 = Q_MV_OSX(10, 3), + MV_10_4 = Q_MV_OSX(10, 4), + MV_10_5 = Q_MV_OSX(10, 5), + MV_10_6 = Q_MV_OSX(10, 6), + MV_10_7 = Q_MV_OSX(10, 7), + MV_10_8 = Q_MV_OSX(10, 8), + MV_10_9 = Q_MV_OSX(10, 9), + MV_10_10 = Q_MV_OSX(10, 10), + MV_10_11 = Q_MV_OSX(10, 11), + MV_10_12 = Q_MV_OSX(10, 12), + + /* codenames */ + MV_CHEETAH = MV_10_0, + MV_PUMA = MV_10_1, + MV_JAGUAR = MV_10_2, + MV_PANTHER = MV_10_3, + MV_TIGER = MV_10_4, + MV_LEOPARD = MV_10_5, + MV_SNOWLEOPARD = MV_10_6, + MV_LION = MV_10_7, + MV_MOUNTAINLION = MV_10_8, + MV_MAVERICKS = MV_10_9, + MV_YOSEMITE = MV_10_10, + MV_ELCAPITAN = MV_10_11, + MV_SIERRA = MV_10_12, + + /* iOS */ + MV_IOS = 1 << 8, + MV_IOS_4_3 = Q_MV_IOS(4, 3), + MV_IOS_5_0 = Q_MV_IOS(5, 0), + MV_IOS_5_1 = Q_MV_IOS(5, 1), + MV_IOS_6_0 = Q_MV_IOS(6, 0), + MV_IOS_6_1 = Q_MV_IOS(6, 1), + MV_IOS_7_0 = Q_MV_IOS(7, 0), + MV_IOS_7_1 = Q_MV_IOS(7, 1), + MV_IOS_8_0 = Q_MV_IOS(8, 0), + MV_IOS_8_1 = Q_MV_IOS(8, 1), + MV_IOS_8_2 = Q_MV_IOS(8, 2), + MV_IOS_8_3 = Q_MV_IOS(8, 3), + MV_IOS_8_4 = Q_MV_IOS(8, 4), + MV_IOS_9_0 = Q_MV_IOS(9, 0), + MV_IOS_9_1 = Q_MV_IOS(9, 1), + MV_IOS_9_2 = Q_MV_IOS(9, 2), + MV_IOS_9_3 = Q_MV_IOS(9, 3), + MV_IOS_10_0 = Q_MV_IOS(10, 0), + + /* tvOS */ + MV_TVOS = 1 << 9, + MV_TVOS_9_0 = Q_MV_TVOS(9, 0), + MV_TVOS_9_1 = Q_MV_TVOS(9, 1), + MV_TVOS_9_2 = Q_MV_TVOS(9, 2), + MV_TVOS_10_0 = Q_MV_TVOS(10, 0), + + /* watchOS */ + MV_WATCHOS = 1 << 10, + MV_WATCHOS_2_0 = Q_MV_WATCHOS(2, 0), + MV_WATCHOS_2_1 = Q_MV_WATCHOS(2, 1), + MV_WATCHOS_2_2 = Q_MV_WATCHOS(2, 2), + MV_WATCHOS_3_0 = Q_MV_WATCHOS(3, 0) + }; + +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED +#if defined(Q_OS_WIN) || defined(Q_OS_CYGWIN) + QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static const WinVersion WindowsVersion; + QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static WinVersion windowsVersion(); +#else + QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static const WinVersion WindowsVersion = WV_None; + QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static WinVersion windowsVersion() { return WV_None; } +#endif +#if defined(Q_OS_MAC) + QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static const MacVersion MacintoshVersion; + QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static MacVersion macVersion(); +#else + QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static const MacVersion MacintoshVersion = MV_None; + QT_SYSINFO_DEPRECATED_X("Use QOperatingSystemVersion::current()") static MacVersion macVersion() { return MV_None; } +#endif +QT_WARNING_POP +#endif // QT_DEPRECATED_SINCE(5, 9) + + static QString buildCpuArchitecture(); + static QString currentCpuArchitecture(); + static QString buildAbi(); + + static QString kernelType(); + static QString kernelVersion(); + static QString productType(); + static QString productVersion(); + static QString prettyProductName(); + + static QString machineHostName(); +}; + +#undef QT_SYSINFO_DEPRECATED_X + +QT_END_NAMESPACE +#endif // QSYSINFO_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsystemdetection.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsystemdetection.h new file mode 100644 index 000000000..4a2c3f79b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsystemdetection.h @@ -0,0 +1,369 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGLOBAL_H +# include +#endif + +#ifndef QSYSTEMDETECTION_H +#define QSYSTEMDETECTION_H + +/* + The operating system, must be one of: (Q_OS_x) + + DARWIN - Any Darwin system (macOS, iOS, watchOS, tvOS) + MACOS - macOS + IOS - iOS + WATCHOS - watchOS + TVOS - tvOS + MSDOS - MS-DOS and Windows + OS2 - OS/2 + OS2EMX - XFree86 on OS/2 (not PM) + WIN32 - Win32 (Windows 2000/XP/Vista/7 and Windows Server 2003/2008) + WINRT - WinRT (Windows 8 Runtime) + CYGWIN - Cygwin + SOLARIS - Sun Solaris + HPUX - HP-UX + ULTRIX - DEC Ultrix + LINUX - Linux [has variants] + FREEBSD - FreeBSD [has variants] + NETBSD - NetBSD + OPENBSD - OpenBSD + BSDI - BSD/OS + INTERIX - Interix + IRIX - SGI Irix + OSF - HP Tru64 UNIX + SCO - SCO OpenServer 5 + UNIXWARE - UnixWare 7, Open UNIX 8 + AIX - AIX + HURD - GNU Hurd + DGUX - DG/UX + RELIANT - Reliant UNIX + DYNIX - DYNIX/ptx + QNX - QNX [has variants] + QNX6 - QNX RTP 6.1 + LYNX - LynxOS + BSD4 - Any BSD 4.4 system + UNIX - Any UNIX BSD/SYSV system + ANDROID - Android platform + HAIKU - Haiku + + The following operating systems have variants: + LINUX - both Q_OS_LINUX and Q_OS_ANDROID are defined when building for Android + - only Q_OS_LINUX is defined if building for other Linux systems + FREEBSD - Q_OS_FREEBSD is defined only when building for FreeBSD with a BSD userland + - Q_OS_FREEBSD_KERNEL is always defined on FreeBSD, even if the userland is from GNU +*/ + +#if defined(__APPLE__) && (defined(__GNUC__) || defined(__xlC__) || defined(__xlc__)) +# include +# if defined(TARGET_OS_MAC) && TARGET_OS_MAC +# define Q_OS_DARWIN +# define Q_OS_BSD4 +# ifdef __LP64__ +# define Q_OS_DARWIN64 +# else +# define Q_OS_DARWIN32 +# endif +# if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE +# define QT_PLATFORM_UIKIT +# if defined(TARGET_OS_WATCH) && TARGET_OS_WATCH +# define Q_OS_WATCHOS +# elif defined(TARGET_OS_TV) && TARGET_OS_TV +# define Q_OS_TVOS +# else +# // TARGET_OS_IOS is only available in newer SDKs, +# // so assume any other iOS-based platform is iOS for now +# define Q_OS_IOS +# endif +# else +# // TARGET_OS_OSX is only available in newer SDKs, +# // so assume any non iOS-based platform is macOS for now +# define Q_OS_MACOS +# endif +# else +# error "Qt has not been ported to this Apple platform - see http://www.qt.io/developers" +# endif +#elif defined(__ANDROID__) || defined(ANDROID) +# define Q_OS_ANDROID +# define Q_OS_LINUX +#elif defined(__CYGWIN__) +# define Q_OS_CYGWIN +#elif !defined(SAG_COM) && (!defined(WINAPI_FAMILY) || WINAPI_FAMILY==WINAPI_FAMILY_DESKTOP_APP) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__)) +# define Q_OS_WIN32 +# define Q_OS_WIN64 +#elif !defined(SAG_COM) && (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)) +# if defined(WINAPI_FAMILY) +# ifndef WINAPI_FAMILY_PC_APP +# define WINAPI_FAMILY_PC_APP WINAPI_FAMILY_APP +# endif +# if defined(WINAPI_FAMILY_PHONE_APP) && WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP +# define Q_OS_WINRT +# elif WINAPI_FAMILY==WINAPI_FAMILY_PC_APP +# define Q_OS_WINRT +# else +# define Q_OS_WIN32 +# endif +# else +# define Q_OS_WIN32 +# endif +#elif defined(__sun) || defined(sun) +# define Q_OS_SOLARIS +#elif defined(hpux) || defined(__hpux) +# define Q_OS_HPUX +#elif defined(__ultrix) || defined(ultrix) +# define Q_OS_ULTRIX +#elif defined(sinix) +# define Q_OS_RELIANT +#elif defined(__native_client__) +# define Q_OS_NACL +#elif defined(__linux__) || defined(__linux) +# define Q_OS_LINUX +#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__) +# ifndef __FreeBSD_kernel__ +# define Q_OS_FREEBSD +# endif +# define Q_OS_FREEBSD_KERNEL +# define Q_OS_BSD4 +#elif defined(__NetBSD__) +# define Q_OS_NETBSD +# define Q_OS_BSD4 +#elif defined(__OpenBSD__) +# define Q_OS_OPENBSD +# define Q_OS_BSD4 +#elif defined(__bsdi__) +# define Q_OS_BSDI +# define Q_OS_BSD4 +#elif defined(__INTERIX) +# define Q_OS_INTERIX +# define Q_OS_BSD4 +#elif defined(__sgi) +# define Q_OS_IRIX +#elif defined(__osf__) +# define Q_OS_OSF +#elif defined(_AIX) +# define Q_OS_AIX +#elif defined(__Lynx__) +# define Q_OS_LYNX +#elif defined(__GNU__) +# define Q_OS_HURD +#elif defined(__DGUX__) +# define Q_OS_DGUX +#elif defined(__QNXNTO__) +# define Q_OS_QNX +#elif defined(_SEQUENT_) +# define Q_OS_DYNIX +#elif defined(_SCO_DS) /* SCO OpenServer 5 + GCC */ +# define Q_OS_SCO +#elif defined(__USLC__) /* all SCO platforms + UDK or OUDK */ +# define Q_OS_UNIXWARE +#elif defined(__svr4__) && defined(i386) /* Open UNIX 8 + GCC */ +# define Q_OS_UNIXWARE +#elif defined(__INTEGRITY) +# define Q_OS_INTEGRITY +#elif defined(VXWORKS) /* there is no "real" VxWorks define - this has to be set in the mkspec! */ +# define Q_OS_VXWORKS +#elif defined(__HAIKU__) +# define Q_OS_HAIKU +#elif defined(__MAKEDEPEND__) +#else +# error "Qt has not been ported to this OS - see http://www.qt-project.org/" +#endif + +#if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) || defined(Q_OS_WINRT) +# define Q_OS_WIN +#endif + +#if defined(Q_OS_WIN) +# undef Q_OS_UNIX +#elif !defined(Q_OS_UNIX) +# define Q_OS_UNIX +#endif + +// Compatibility synonyms +#ifdef Q_OS_DARWIN +#define Q_OS_MAC +#endif +#ifdef Q_OS_DARWIN32 +#define Q_OS_MAC32 +#endif +#ifdef Q_OS_DARWIN64 +#define Q_OS_MAC64 +#endif +#ifdef Q_OS_MACOS +#define Q_OS_MACX +#define Q_OS_OSX +#endif + +#ifdef Q_OS_DARWIN +# include +# include +# +# ifdef Q_OS_MACOS +# 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 +# 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 +# endif +# +# // 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_10_8) +# define __MAC_10_8 1080 +# endif +# if !defined(__MAC_10_9) +# define __MAC_10_9 1090 +# endif +# if !defined(__MAC_10_10) +# define __MAC_10_10 101000 +# endif +# if !defined(__MAC_10_11) +# define __MAC_10_11 101100 +# endif +# if !defined(__MAC_10_12) +# define __MAC_10_12 101200 +# endif +# if !defined(__MAC_10_13) +# define __MAC_10_13 101300 +# endif +# if !defined(MAC_OS_X_VERSION_10_7) +# define MAC_OS_X_VERSION_10_7 1070 +# endif +# if !defined(MAC_OS_X_VERSION_10_8) +# define MAC_OS_X_VERSION_10_8 1080 +# endif +# if !defined(MAC_OS_X_VERSION_10_9) +# define MAC_OS_X_VERSION_10_9 1090 +# endif +# if !defined(MAC_OS_X_VERSION_10_10) +# define MAC_OS_X_VERSION_10_10 101000 +# endif +# if !defined(MAC_OS_X_VERSION_10_11) +# define MAC_OS_X_VERSION_10_11 101100 +# endif +# if !defined(MAC_OS_X_VERSION_10_12) +# define MAC_OS_X_VERSION_10_12 101200 +# endif +# if !defined(MAC_OS_X_VERSION_10_13) +# define MAC_OS_X_VERSION_10_13 101300 +# 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 !defined(__IPHONE_7_0) +# define __IPHONE_7_0 70000 +# endif +# if !defined(__IPHONE_7_1) +# define __IPHONE_7_1 70100 +# endif +# if !defined(__IPHONE_8_0) +# define __IPHONE_8_0 80000 +# endif +# if !defined(__IPHONE_8_1) +# define __IPHONE_8_1 80100 +# endif +# if !defined(__IPHONE_8_2) +# define __IPHONE_8_2 80200 +# endif +# if !defined(__IPHONE_8_3) +# define __IPHONE_8_3 80300 +# endif +# if !defined(__IPHONE_8_4) +# define __IPHONE_8_4 80400 +# endif +# if !defined(__IPHONE_9_0) +# define __IPHONE_9_0 90000 +# endif +# if !defined(__IPHONE_9_1) +# define __IPHONE_9_1 90100 +# endif +# if !defined(__IPHONE_9_2) +# define __IPHONE_9_2 90200 +# endif +# if !defined(__IPHONE_9_3) +# define __IPHONE_9_3 90300 +# endif +# if !defined(__IPHONE_10_0) +# define __IPHONE_10_0 100000 +# endif +# if !defined(__IPHONE_10_1) +# define __IPHONE_10_1 100100 +# endif +# if !defined(__IPHONE_10_2) +# define __IPHONE_10_2 100200 +# endif +# if !defined(__IPHONE_10_3) +# define __IPHONE_10_3 100300 +# endif +# if !defined(__IPHONE_11_0) +# define __IPHONE_11_0 110000 +# endif +#endif + +#ifdef __LSB_VERSION__ +# if __LSB_VERSION__ < 40 +# error "This version of the Linux Standard Base is unsupported" +# endif +#ifndef QT_LINUXBASE +# define QT_LINUXBASE +#endif +#endif + +#endif // QSYSTEMDETECTION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qsystemsemaphore.h b/qrenderdoc/3rdparty/qt/include/QtCore/qsystemsemaphore.h new file mode 100644 index 000000000..d6a4301df --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qsystemsemaphore.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSYSTEMSEMAPHORE_H +#define QSYSTEMSEMAPHORE_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_SYSTEMSEMAPHORE + +class QSystemSemaphorePrivate; + +class Q_CORE_EXPORT QSystemSemaphore +{ + +public: + enum AccessMode + { + Open, + Create + }; + + enum SystemSemaphoreError + { + NoError, + PermissionDenied, + KeyError, + AlreadyExists, + NotFound, + OutOfResources, + UnknownError + }; + + QSystemSemaphore(const QString &key, int initialValue = 0, AccessMode mode = Open); + ~QSystemSemaphore(); + + void setKey(const QString &key, int initialValue = 0, AccessMode mode = Open); + QString key() const; + + bool acquire(); + bool release(int n = 1); + + SystemSemaphoreError error() const; + QString errorString() const; + +private: + Q_DISABLE_COPY(QSystemSemaphore) + QScopedPointer d; +}; + +#endif // QT_NO_SYSTEMSEMAPHORE + +QT_END_NAMESPACE + +#endif // QSYSTEMSEMAPHORE_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qt_windows.h b/qrenderdoc/3rdparty/qt/include/QtCore/qt_windows.h new file mode 100644 index 000000000..bc48104ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qt_windows.h @@ -0,0 +1,146 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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_MINGW) +// mingw's windows.h does not set _WIN32_WINNT, resulting breaking compilation +# ifndef WINVER +# define WINVER 0x600 +# endif +# ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x600 +# endif +# ifndef NTDDI_VERSION +# define NTDDI_VERSION 0x06000000 +# endif +#endif + +#ifndef NOMINMAX +# define NOMINMAX +#endif +#include + +#if defined(_WIN32_IE) && _WIN32_IE < 0x0501 +# undef _WIN32_IE +#endif +#if !defined(_WIN32_IE) +# define _WIN32_IE 0x0501 +#endif + +// already defined when compiled with WINVER >= 0x0500 +#ifndef SPI_SETMENUANIMATION +#define SPI_SETMENUANIMATION 0x1003 +#endif +#ifndef SPI_SETMENUFADE +#define SPI_SETMENUFADE 0x1013 +#endif +#ifndef SPI_SETCOMBOBOXANIMATION +#define SPI_SETCOMBOBOXANIMATION 0x1005 +#endif +#ifndef SPI_SETTOOLTIPANIMATION +#define SPI_SETTOOLTIPANIMATION 0x1017 +#endif +#ifndef SPI_SETTOOLTIPFADE +#define SPI_SETTOOLTIPFADE 0x1019 +#endif +#ifndef SPI_SETUIEFFECTS +#define SPI_SETUIEFFECTS 0x103F +#endif +#ifndef SPI_GETMENUANIMATION +#define SPI_GETMENUANIMATION 0x1002 +#endif +#ifndef SPI_GETMENUFADE +#define SPI_GETMENUFADE 0x1012 +#endif +#ifndef SPI_GETCOMBOBOXANIMATION +#define SPI_GETCOMBOBOXANIMATION 0x1004 +#endif +#ifndef SPI_GETTOOLTIPANIMATION +#define SPI_GETTOOLTIPANIMATION 0x1016 +#endif +#ifndef SPI_GETTOOLTIPFADE +#define SPI_GETTOOLTIPFADE 0x1018 +#endif +#ifndef SPI_GETUIEFFECTS +#define SPI_GETUIEFFECTS 0x103E +#endif +#ifndef SPI_GETKEYBOARDCUES +#define SPI_GETKEYBOARDCUES 0x100A +#endif +#ifndef SPI_GETGRADIENTCAPTIONS +#define SPI_GETGRADIENTCAPTIONS 0x1008 +#endif +#ifndef IDC_HAND +#define IDC_HAND MAKEINTRESOURCE(32649) +#endif +#ifndef WM_MOUSEWHEEL +#define WM_MOUSEWHEEL 0x020A +#endif +#ifndef WM_MOUSEHWHEEL +#define WM_MOUSEHWHEEL 0x020E +#endif +#ifndef ETO_PDY +#define ETO_PDY 0x2000 +#endif +#ifndef COLOR_GRADIENTACTIVECAPTION +#define COLOR_GRADIENTACTIVECAPTION 27 +#endif +#ifndef COLOR_GRADIENTINACTIVECAPTION +#define COLOR_GRADIENTINACTIVECAPTION 28 +#endif + +// already defined when compiled with WINVER >= 0x0600 +#ifndef SPI_GETFLATMENU +#define SPI_GETFLATMENU 0x1022 +#endif +#ifndef CS_DROPSHADOW +#define CS_DROPSHADOW 0x00020000 +#endif +#ifndef CLEARTYPE_QUALITY +#define CLEARTYPE_QUALITY 5 +#endif + +#endif // QT_WINDOWS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtcore-config.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtcore-config.h new file mode 100644 index 000000000..d2d3bce3c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtcore-config.h @@ -0,0 +1,39 @@ +#define QT_FEATURE_properties 1 +#define QT_FEATURE_animation 1 +#define QT_FEATURE_textcodec 1 +#define QT_FEATURE_big_codecs 1 +#define QT_NO_CLOCK_MONOTONIC +#define QT_FEATURE_codecs 1 +#define QT_FEATURE_commandlineparser 1 +#define QT_FEATURE_textdate 1 +#define QT_FEATURE_datestring 1 +#define QT_NO_EVENTFD +#define QT_FEATURE_filesystemiterator 1 +#define QT_FEATURE_filesystemwatcher 1 +#define QT_FEATURE_gestures 1 +#define QT_NO_GLIB +#define QT_NO_ICONV +#define QT_FEATURE_itemmodel 1 +#define QT_FEATURE_proxymodel 1 +#define QT_FEATURE_identityproxymodel 1 +#define QT_NO_INOTIFY +#define QT_FEATURE_library 1 +#define QT_FEATURE_mimetype 1 +#define QT_FEATURE_processenvironment 1 +#define QT_FEATURE_process 1 +#define QT_FEATURE_statemachine 1 +#define QT_FEATURE_qeventtransition 1 +#define QT_FEATURE_regularexpression 1 +#define QT_FEATURE_settings 1 +#define QT_FEATURE_sharedmemory 1 +#define QT_FEATURE_sortfilterproxymodel 1 +#define QT_FEATURE_std_atomic64 1 +#define QT_FEATURE_stringlistmodel 1 +#define QT_FEATURE_systemsemaphore 1 +#define QT_FEATURE_temporaryfile 1 +#define QT_FEATURE_timezone 1 +#define QT_FEATURE_topleveldomain 1 +#define QT_FEATURE_translation 1 +#define QT_FEATURE_xmlstream 1 +#define QT_FEATURE_xmlstreamreader 1 +#define QT_FEATURE_xmlstreamwriter 1 diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtcoreversion.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtcoreversion.h new file mode 100644 index 000000000..44bbf8233 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtcoreversion.h @@ -0,0 +1,9 @@ +/* This file was generated by syncqt. */ +#ifndef QT_QTCORE_VERSION_H +#define QT_QTCORE_VERSION_H + +#define QTCORE_VERSION_STR "5.9.4" + +#define QTCORE_VERSION 0x050904 + +#endif // QT_QTCORE_VERSION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtemporarydir.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtemporarydir.h new file mode 100644 index 000000000..3f6b70a2e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtemporarydir.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEMPORARYDIR_H +#define QTEMPORARYDIR_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_TEMPORARYFILE + +class QTemporaryDirPrivate; + +class Q_CORE_EXPORT QTemporaryDir +{ +public: + QTemporaryDir(); + explicit QTemporaryDir(const QString &templateName); + ~QTemporaryDir(); + + bool isValid() const; + QString errorString() const; + + bool autoRemove() const; + void setAutoRemove(bool b); + bool remove(); + + QString path() const; + QString filePath(const QString &fileName) const; + +private: + QScopedPointer d_ptr; + + Q_DISABLE_COPY(QTemporaryDir) +}; + +#endif // QT_NO_TEMPORARYFILE + +QT_END_NAMESPACE + +#endif // QTEMPORARYDIR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtemporaryfile.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtemporaryfile.h new file mode 100644 index 000000000..3dc2e75f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtemporaryfile.h @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEMPORARYFILE_H +#define QTEMPORARYFILE_H + +#include +#include + +#ifdef open +#error qtemporaryfile.h must be included before any header file that defines open +#endif + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_TEMPORARYFILE + +class QTemporaryFilePrivate; +class QLockFilePrivate; + +class Q_CORE_EXPORT QTemporaryFile : public QFile +{ +#ifndef QT_NO_QOBJECT + Q_OBJECT +#endif + Q_DECLARE_PRIVATE(QTemporaryFile) + +public: + QTemporaryFile(); + explicit QTemporaryFile(const QString &templateName); +#ifndef QT_NO_QOBJECT + explicit QTemporaryFile(QObject *parent); + QTemporaryFile(const QString &templateName, QObject *parent); +#endif + ~QTemporaryFile(); + + bool autoRemove() const; + void setAutoRemove(bool b); + + // ### Hides open(flags) + bool open() { return open(QIODevice::ReadWrite); } + + QString fileName() const Q_DECL_OVERRIDE; + QString fileTemplate() const; + void setFileTemplate(const QString &name); +#if QT_DEPRECATED_SINCE(5,1) + QT_DEPRECATED inline static QTemporaryFile *createLocalFile(const QString &fileName) + { return createNativeFile(fileName); } + QT_DEPRECATED inline static QTemporaryFile *createLocalFile(QFile &file) + { return createNativeFile(file); } +#endif + inline static QTemporaryFile *createNativeFile(const QString &fileName) + { QFile file(fileName); return createNativeFile(file); } + static QTemporaryFile *createNativeFile(QFile &file); + +protected: + bool open(OpenMode flags) Q_DECL_OVERRIDE; + +private: + friend class QFile; + friend class QLockFilePrivate; + Q_DISABLE_COPY(QTemporaryFile) +}; + +#endif // QT_NO_TEMPORARYFILE + +QT_END_NAMESPACE + +#endif // QTEMPORARYFILE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtextboundaryfinder.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtextboundaryfinder.h new file mode 100644 index 000000000..d021df3f2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtextboundaryfinder.h @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTBOUNDARYFINDER_H +#define QTEXTBOUNDARYFINDER_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +class QTextBoundaryFinderPrivate; + +class Q_CORE_EXPORT QTextBoundaryFinder +{ +public: + QTextBoundaryFinder(); + QTextBoundaryFinder(const QTextBoundaryFinder &other); + QTextBoundaryFinder &operator=(const QTextBoundaryFinder &other); + ~QTextBoundaryFinder(); + + enum BoundaryType { + Grapheme, + Word, + Sentence, + Line + }; + + enum BoundaryReason { + NotAtBoundary = 0, + BreakOpportunity = 0x1f, + StartOfItem = 0x20, + EndOfItem = 0x40, + MandatoryBreak = 0x80, + SoftHyphen = 0x100 + }; + Q_DECLARE_FLAGS( BoundaryReasons, BoundaryReason ) + + QTextBoundaryFinder(BoundaryType type, const QString &string); + QTextBoundaryFinder(BoundaryType type, const QChar *chars, int length, unsigned char *buffer = Q_NULLPTR, int bufferSize = 0); + + inline bool isValid() const { return d; } + + inline BoundaryType type() const { return t; } + QString string() const; + + void toStart(); + void toEnd(); + int position() const; + void setPosition(int position); + + int toNextBoundary(); + int toPreviousBoundary(); + + bool isAtBoundary() const; + BoundaryReasons boundaryReasons() const; + +private: + BoundaryType t; + QString s; + const QChar *chars; + int length; + int pos; + uint freePrivate : 1; + uint unused : 31; + QTextBoundaryFinderPrivate *d; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QTextBoundaryFinder::BoundaryReasons) + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtextcodec.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtextcodec.h new file mode 100644 index 000000000..47b2fe6ee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtextcodec.h @@ -0,0 +1,165 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTCODEC_H +#define QTEXTCODEC_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_TEXTCODEC + +class QTextCodec; +class QIODevice; + +class QTextDecoder; +class QTextEncoder; + +class Q_CORE_EXPORT QTextCodec +{ + Q_DISABLE_COPY(QTextCodec) +public: + static QTextCodec* codecForName(const QByteArray &name); + static QTextCodec* codecForName(const char *name) { return codecForName(QByteArray(name)); } + static QTextCodec* codecForMib(int mib); + + static QList availableCodecs(); + static QList availableMibs(); + + static QTextCodec* codecForLocale(); + static void setCodecForLocale(QTextCodec *c); + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED static QTextCodec *codecForTr() { return codecForMib(106); /* Utf8 */ } +#endif + + static QTextCodec *codecForHtml(const QByteArray &ba); + static QTextCodec *codecForHtml(const QByteArray &ba, QTextCodec *defaultCodec); + + static QTextCodec *codecForUtfText(const QByteArray &ba); + static QTextCodec *codecForUtfText(const QByteArray &ba, QTextCodec *defaultCodec); + + bool canEncode(QChar) const; + bool canEncode(const QString&) const; + + QString toUnicode(const QByteArray&) const; + QString toUnicode(const char* chars) const; + QByteArray fromUnicode(const QString& uc) const; + enum ConversionFlag { + DefaultConversion, + ConvertInvalidToNull = 0x80000000, + IgnoreHeader = 0x1, + FreeFunction = 0x2 + }; + Q_DECLARE_FLAGS(ConversionFlags, ConversionFlag) + + struct Q_CORE_EXPORT ConverterState { + ConverterState(ConversionFlags f = DefaultConversion) + : flags(f), remainingChars(0), invalidChars(0), d(Q_NULLPTR) { state_data[0] = state_data[1] = state_data[2] = 0; } + ~ConverterState(); + ConversionFlags flags; + int remainingChars; + int invalidChars; + uint state_data[3]; + void *d; + private: + Q_DISABLE_COPY(ConverterState) + }; + + QString toUnicode(const char *in, int length, ConverterState *state = Q_NULLPTR) const + { return convertToUnicode(in, length, state); } + QByteArray fromUnicode(const QChar *in, int length, ConverterState *state = Q_NULLPTR) const + { return convertFromUnicode(in, length, state); } + + QTextDecoder* makeDecoder(ConversionFlags flags = DefaultConversion) const; + QTextEncoder* makeEncoder(ConversionFlags flags = DefaultConversion) const; + + virtual QByteArray name() const = 0; + virtual QList aliases() const; + virtual int mibEnum() const = 0; + +protected: + virtual QString convertToUnicode(const char *in, int length, ConverterState *state) const = 0; + virtual QByteArray convertFromUnicode(const QChar *in, int length, ConverterState *state) const = 0; + + QTextCodec(); + virtual ~QTextCodec(); + +private: + friend struct QCoreGlobalData; +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QTextCodec::ConversionFlags) + +class Q_CORE_EXPORT QTextEncoder { + Q_DISABLE_COPY(QTextEncoder) +public: + explicit QTextEncoder(const QTextCodec *codec) : c(codec), state() {} + QTextEncoder(const QTextCodec *codec, QTextCodec::ConversionFlags flags); + ~QTextEncoder(); + QByteArray fromUnicode(const QString& str); + QByteArray fromUnicode(const QChar *uc, int len); + bool hasFailure() const; +private: + const QTextCodec *c; + QTextCodec::ConverterState state; +}; + +class Q_CORE_EXPORT QTextDecoder { + Q_DISABLE_COPY(QTextDecoder) +public: + explicit QTextDecoder(const QTextCodec *codec) : c(codec), state() {} + QTextDecoder(const QTextCodec *codec, QTextCodec::ConversionFlags flags); + ~QTextDecoder(); + QString toUnicode(const char* chars, int len); + QString toUnicode(const QByteArray &ba); + void toUnicode(QString *target, const char *chars, int len); + bool hasFailure() const; +private: + const QTextCodec *c; + QTextCodec::ConverterState state; +}; + +#endif // QT_NO_TEXTCODEC + +QT_END_NAMESPACE + +#endif // QTEXTCODEC_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtextstream.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtextstream.h new file mode 100644 index 000000000..e72b7942f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtextstream.h @@ -0,0 +1,287 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTSTREAM_H +#define QTEXTSTREAM_H + +#include +#include +#include +#include +#include + +#include + +#ifdef Status +#error qtextstream.h must be included before any header file that defines Status +#endif + +QT_BEGIN_NAMESPACE + + +class QTextCodec; +class QTextDecoder; + +class QTextStreamPrivate; +class Q_CORE_EXPORT QTextStream // text stream class +{ + Q_DECLARE_PRIVATE(QTextStream) + +public: + enum RealNumberNotation { + SmartNotation, + FixedNotation, + ScientificNotation + }; + enum FieldAlignment { + AlignLeft, + AlignRight, + AlignCenter, + AlignAccountingStyle + }; + enum Status { + Ok, + ReadPastEnd, + ReadCorruptData, + WriteFailed + }; + enum NumberFlag { + ShowBase = 0x1, + ForcePoint = 0x2, + ForceSign = 0x4, + UppercaseBase = 0x8, + UppercaseDigits = 0x10 + }; + Q_DECLARE_FLAGS(NumberFlags, NumberFlag) + + QTextStream(); + explicit QTextStream(QIODevice *device); + explicit QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite); + explicit QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite); + explicit QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite); + explicit QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly); + virtual ~QTextStream(); + +#ifndef QT_NO_TEXTCODEC + void setCodec(QTextCodec *codec); + void setCodec(const char *codecName); + QTextCodec *codec() const; + void setAutoDetectUnicode(bool enabled); + bool autoDetectUnicode() const; + void setGenerateByteOrderMark(bool generate); + bool generateByteOrderMark() const; +#endif + + void setLocale(const QLocale &locale); + QLocale locale() const; + + void setDevice(QIODevice *device); + QIODevice *device() const; + + void setString(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite); + QString *string() const; + + Status status() const; + void setStatus(Status status); + void resetStatus(); + + bool atEnd() const; + void reset(); + void flush(); + bool seek(qint64 pos); + qint64 pos() const; + + void skipWhiteSpace(); + + QString readLine(qint64 maxlen = 0); + bool readLineInto(QString *line, qint64 maxlen = 0); + QString readAll(); + QString read(qint64 maxlen); + + void setFieldAlignment(FieldAlignment alignment); + FieldAlignment fieldAlignment() const; + + void setPadChar(QChar ch); + QChar padChar() const; + + void setFieldWidth(int width); + int fieldWidth() const; + + void setNumberFlags(NumberFlags flags); + NumberFlags numberFlags() const; + + void setIntegerBase(int base); + int integerBase() const; + + void setRealNumberNotation(RealNumberNotation notation); + RealNumberNotation realNumberNotation() const; + + void setRealNumberPrecision(int precision); + int realNumberPrecision() const; + + QTextStream &operator>>(QChar &ch); + QTextStream &operator>>(char &ch); + QTextStream &operator>>(signed short &i); + QTextStream &operator>>(unsigned short &i); + QTextStream &operator>>(signed int &i); + QTextStream &operator>>(unsigned int &i); + QTextStream &operator>>(signed long &i); + QTextStream &operator>>(unsigned long &i); + QTextStream &operator>>(qlonglong &i); + QTextStream &operator>>(qulonglong &i); + QTextStream &operator>>(float &f); + QTextStream &operator>>(double &f); + QTextStream &operator>>(QString &s); + QTextStream &operator>>(QByteArray &array); + QTextStream &operator>>(char *c); + + QTextStream &operator<<(QChar ch); + QTextStream &operator<<(char ch); + QTextStream &operator<<(signed short i); + QTextStream &operator<<(unsigned short i); + QTextStream &operator<<(signed int i); + QTextStream &operator<<(unsigned int i); + QTextStream &operator<<(signed long i); + QTextStream &operator<<(unsigned long i); + QTextStream &operator<<(qlonglong i); + QTextStream &operator<<(qulonglong i); + QTextStream &operator<<(float f); + QTextStream &operator<<(double f); + QTextStream &operator<<(const QString &s); + QTextStream &operator<<(QLatin1String s); + QTextStream &operator<<(const QStringRef &s); + QTextStream &operator<<(const QByteArray &array); + QTextStream &operator<<(const char *c); + QTextStream &operator<<(const void *ptr); + +private: + Q_DISABLE_COPY(QTextStream) + friend class QDebugStateSaverPrivate; + friend class QDebug; + + QScopedPointer d_ptr; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QTextStream::NumberFlags) + +/***************************************************************************** + QTextStream manipulators + *****************************************************************************/ + +typedef QTextStream & (*QTextStreamFunction)(QTextStream &);// manipulator function +typedef void (QTextStream::*QTSMFI)(int); // manipulator w/int argument +typedef void (QTextStream::*QTSMFC)(QChar); // manipulator w/QChar argument + + +class Q_CORE_EXPORT QTextStreamManipulator +{ +public: + Q_DECL_CONSTEXPR QTextStreamManipulator(QTSMFI m, int a) Q_DECL_NOTHROW : mf(m), mc(Q_NULLPTR), arg(a), ch() {} + Q_DECL_CONSTEXPR QTextStreamManipulator(QTSMFC m, QChar c) Q_DECL_NOTHROW : mf(Q_NULLPTR), mc(m), arg(-1), ch(c) {} + void exec(QTextStream &s) { if (mf) { (s.*mf)(arg); } else { (s.*mc)(ch); } } + +private: + QTSMFI mf; // QTextStream member function + QTSMFC mc; // QTextStream member function + int arg; // member function argument + QChar ch; +}; + +inline QTextStream &operator>>(QTextStream &s, QTextStreamFunction f) +{ return (*f)(s); } + +inline QTextStream &operator<<(QTextStream &s, QTextStreamFunction f) +{ return (*f)(s); } + +inline QTextStream &operator<<(QTextStream &s, QTextStreamManipulator m) +{ m.exec(s); return s; } + +Q_CORE_EXPORT QTextStream &bin(QTextStream &s); +Q_CORE_EXPORT QTextStream &oct(QTextStream &s); +Q_CORE_EXPORT QTextStream &dec(QTextStream &s); +Q_CORE_EXPORT QTextStream &hex(QTextStream &s); + +Q_CORE_EXPORT QTextStream &showbase(QTextStream &s); +Q_CORE_EXPORT QTextStream &forcesign(QTextStream &s); +Q_CORE_EXPORT QTextStream &forcepoint(QTextStream &s); +Q_CORE_EXPORT QTextStream &noshowbase(QTextStream &s); +Q_CORE_EXPORT QTextStream &noforcesign(QTextStream &s); +Q_CORE_EXPORT QTextStream &noforcepoint(QTextStream &s); + +Q_CORE_EXPORT QTextStream &uppercasebase(QTextStream &s); +Q_CORE_EXPORT QTextStream &uppercasedigits(QTextStream &s); +Q_CORE_EXPORT QTextStream &lowercasebase(QTextStream &s); +Q_CORE_EXPORT QTextStream &lowercasedigits(QTextStream &s); + +Q_CORE_EXPORT QTextStream &fixed(QTextStream &s); +Q_CORE_EXPORT QTextStream &scientific(QTextStream &s); + +Q_CORE_EXPORT QTextStream &left(QTextStream &s); +Q_CORE_EXPORT QTextStream &right(QTextStream &s); +Q_CORE_EXPORT QTextStream ¢er(QTextStream &s); + +Q_CORE_EXPORT QTextStream &endl(QTextStream &s); +Q_CORE_EXPORT QTextStream &flush(QTextStream &s); +Q_CORE_EXPORT QTextStream &reset(QTextStream &s); + +Q_CORE_EXPORT QTextStream &bom(QTextStream &s); + +Q_CORE_EXPORT QTextStream &ws(QTextStream &s); + +inline QTextStreamManipulator qSetFieldWidth(int width) +{ + QTSMFI func = &QTextStream::setFieldWidth; + return QTextStreamManipulator(func,width); +} + +inline QTextStreamManipulator qSetPadChar(QChar ch) +{ + QTSMFC func = &QTextStream::setPadChar; + return QTextStreamManipulator(func, ch); +} + +inline QTextStreamManipulator qSetRealNumberPrecision(int precision) +{ + QTSMFI func = &QTextStream::setRealNumberPrecision; + return QTextStreamManipulator(func, precision); +} + +QT_END_NAMESPACE + +#endif // QTEXTSTREAM_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qthread.h b/qrenderdoc/3rdparty/qt/include/QtCore/qthread.h new file mode 100644 index 000000000..45786537e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qthread.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTHREAD_H +#define QTHREAD_H + +#include + +#include + +QT_BEGIN_NAMESPACE + + +class QThreadData; +class QThreadPrivate; +class QAbstractEventDispatcher; + +#ifndef QT_NO_THREAD +class Q_CORE_EXPORT QThread : public QObject +{ + Q_OBJECT +public: + static Qt::HANDLE currentThreadId() Q_DECL_NOTHROW Q_DECL_PURE_FUNCTION; + static QThread *currentThread(); + static int idealThreadCount() Q_DECL_NOTHROW; + static void yieldCurrentThread(); + + explicit QThread(QObject *parent = Q_NULLPTR); + ~QThread(); + + enum Priority { + IdlePriority, + + LowestPriority, + LowPriority, + NormalPriority, + HighPriority, + HighestPriority, + + TimeCriticalPriority, + + InheritPriority + }; + + void setPriority(Priority priority); + Priority priority() const; + + bool isFinished() const; + bool isRunning() const; + + void requestInterruption(); + bool isInterruptionRequested() const; + + void setStackSize(uint stackSize); + uint stackSize() const; + + void exit(int retcode = 0); + + QAbstractEventDispatcher *eventDispatcher() const; + void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher); + + bool event(QEvent *event) Q_DECL_OVERRIDE; + int loopLevel() const; + +public Q_SLOTS: + void start(Priority = InheritPriority); + void terminate(); + void quit(); + +public: + // default argument causes thread to block indefinetely + bool wait(unsigned long time = ULONG_MAX); + + static void sleep(unsigned long); + static void msleep(unsigned long); + static void usleep(unsigned long); + +Q_SIGNALS: + void started(QPrivateSignal); + void finished(QPrivateSignal); + +protected: + virtual void run(); + int exec(); + + static void setTerminationEnabled(bool enabled = true); + +protected: + QThread(QThreadPrivate &dd, QObject *parent = Q_NULLPTR); + +private: + Q_DECLARE_PRIVATE(QThread) + + friend class QCoreApplication; + friend class QThreadData; +}; + +#else // QT_NO_THREAD + +class Q_CORE_EXPORT QThread : public QObject +{ +public: + static Qt::HANDLE currentThreadId() { return Qt::HANDLE(currentThread()); } + static QThread* currentThread(); + +protected: + QThread(QThreadPrivate &dd, QObject *parent = nullptr); + +private: + explicit QThread(QObject *parent = nullptr); + static QThread *instance; + + friend class QCoreApplication; + friend class QThreadData; + friend class QAdoptedThread; + Q_DECLARE_PRIVATE(QThread) +}; + +#endif // QT_NO_THREAD + +QT_END_NAMESPACE + +#endif // QTHREAD_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qthreadpool.h b/qrenderdoc/3rdparty/qt/include/QtCore/qthreadpool.h new file mode 100644 index 000000000..09b7f96f4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qthreadpool.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTHREADPOOL_H +#define QTHREADPOOL_H + +#include + +#include +#include + +#ifndef QT_NO_THREAD + +QT_BEGIN_NAMESPACE + + +class QThreadPoolPrivate; +class Q_CORE_EXPORT QThreadPool : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QThreadPool) + Q_PROPERTY(int expiryTimeout READ expiryTimeout WRITE setExpiryTimeout) + Q_PROPERTY(int maxThreadCount READ maxThreadCount WRITE setMaxThreadCount) + Q_PROPERTY(int activeThreadCount READ activeThreadCount) + friend class QFutureInterfaceBase; + +public: + QThreadPool(QObject *parent = Q_NULLPTR); + ~QThreadPool(); + + static QThreadPool *globalInstance(); + + void start(QRunnable *runnable, int priority = 0); + bool tryStart(QRunnable *runnable); + + int expiryTimeout() const; + void setExpiryTimeout(int expiryTimeout); + + int maxThreadCount() const; + void setMaxThreadCount(int maxThreadCount); + + int activeThreadCount() const; + + void reserveThread(); + void releaseThread(); + + bool waitForDone(int msecs = -1); + + void clear(); + +#if QT_DEPRECATED_SINCE(5, 9) + QT_DEPRECATED_X("use tryTake(), but note the different deletion rules") + void cancel(QRunnable *runnable); +#endif + Q_REQUIRED_RESULT bool tryTake(QRunnable *runnable); +}; + +QT_END_NAMESPACE + +#endif // QT_NO_THREAD + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qthreadstorage.h b/qrenderdoc/3rdparty/qt/include/QtCore/qthreadstorage.h new file mode 100644 index 000000000..fed41a076 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qthreadstorage.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTHREADSTORAGE_H +#define QTHREADSTORAGE_H + +#include + +#ifndef QT_NO_THREAD + +QT_BEGIN_NAMESPACE + + +class Q_CORE_EXPORT QThreadStorageData +{ +public: + explicit QThreadStorageData(void (*func)(void *)); + ~QThreadStorageData(); + + void** get() const; + void** set(void* p); + + static void finish(void**); + int id; +}; + +#if !defined(QT_MOC_CPP) +// MOC_SKIP_BEGIN + +// pointer specialization +template +inline +T *&qThreadStorage_localData(QThreadStorageData &d, T **) +{ + void **v = d.get(); + if (!v) v = d.set(0); + return *(reinterpret_cast(v)); +} + +template +inline +T *qThreadStorage_localData_const(const QThreadStorageData &d, T **) +{ + void **v = d.get(); + return v ? *(reinterpret_cast(v)) : 0; +} + +template +inline +void qThreadStorage_setLocalData(QThreadStorageData &d, T **t) +{ (void) d.set(*t); } + +template +inline +void qThreadStorage_deleteData(void *d, T **) +{ delete static_cast(d); } + +// value-based specialization +template +inline +T &qThreadStorage_localData(QThreadStorageData &d, T *) +{ + void **v = d.get(); + if (!v) v = d.set(new T()); + return *(reinterpret_cast(*v)); +} + +template +inline +T qThreadStorage_localData_const(const QThreadStorageData &d, T *) +{ + void **v = d.get(); + return v ? *(reinterpret_cast(*v)) : T(); +} + +template +inline +void qThreadStorage_setLocalData(QThreadStorageData &d, T *t) +{ (void) d.set(new T(*t)); } + +template +inline +void qThreadStorage_deleteData(void *d, T *) +{ delete static_cast(d); } + + +// MOC_SKIP_END +#endif + +template +class QThreadStorage +{ +private: + QThreadStorageData d; + + Q_DISABLE_COPY(QThreadStorage) + + static inline void deleteData(void *x) + { qThreadStorage_deleteData(x, reinterpret_cast(0)); } + +public: + inline QThreadStorage() : d(deleteData) { } + inline ~QThreadStorage() { } + + inline bool hasLocalData() const + { return d.get() != 0; } + + inline T& localData() + { return qThreadStorage_localData(d, reinterpret_cast(0)); } + inline T localData() const + { return qThreadStorage_localData_const(d, reinterpret_cast(0)); } + + inline void setLocalData(T t) + { qThreadStorage_setLocalData(d, &t); } +}; + +QT_END_NAMESPACE + +#endif // QT_NO_THREAD + +#endif // QTHREADSTORAGE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtimeline.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtimeline.h new file mode 100644 index 000000000..f0e9a32e4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtimeline.h @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTIMELINE_H +#define QTIMELINE_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +class QTimeLinePrivate; +class Q_CORE_EXPORT QTimeLine : public QObject +{ + Q_OBJECT + Q_PROPERTY(int duration READ duration WRITE setDuration) + Q_PROPERTY(int updateInterval READ updateInterval WRITE setUpdateInterval) + Q_PROPERTY(int currentTime READ currentTime WRITE setCurrentTime) + Q_PROPERTY(Direction direction READ direction WRITE setDirection) + Q_PROPERTY(int loopCount READ loopCount WRITE setLoopCount) + Q_PROPERTY(CurveShape curveShape READ curveShape WRITE setCurveShape) + Q_PROPERTY(QEasingCurve easingCurve READ easingCurve WRITE setEasingCurve) +public: + enum State { + NotRunning, + Paused, + Running + }; + enum Direction { + Forward, + Backward + }; + enum CurveShape { + EaseInCurve, + EaseOutCurve, + EaseInOutCurve, + LinearCurve, + SineCurve, + CosineCurve + }; + + explicit QTimeLine(int duration = 1000, QObject *parent = Q_NULLPTR); + virtual ~QTimeLine(); + + State state() const; + + int loopCount() const; + void setLoopCount(int count); + + Direction direction() const; + void setDirection(Direction direction); + + int duration() const; + void setDuration(int duration); + + int startFrame() const; + void setStartFrame(int frame); + int endFrame() const; + void setEndFrame(int frame); + void setFrameRange(int startFrame, int endFrame); + + int updateInterval() const; + void setUpdateInterval(int interval); + + CurveShape curveShape() const; + void setCurveShape(CurveShape shape); + + QEasingCurve easingCurve() const; + void setEasingCurve(const QEasingCurve &curve); + + int currentTime() const; + int currentFrame() const; + qreal currentValue() const; + + int frameForTime(int msec) const; + virtual qreal valueForTime(int msec) const; + +public Q_SLOTS: + void start(); + void resume(); + void stop(); + void setPaused(bool paused); + void setCurrentTime(int msec); + void toggleDirection(); + +Q_SIGNALS: + void valueChanged(qreal x, QPrivateSignal); + void frameChanged(int, QPrivateSignal); + void stateChanged(QTimeLine::State newState, QPrivateSignal); + void finished(QPrivateSignal); + +protected: + void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QTimeLine) + Q_DECLARE_PRIVATE(QTimeLine) +}; + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtimer.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtimer.h new file mode 100644 index 000000000..6e61ca10c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtimer.h @@ -0,0 +1,244 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTIMER_H +#define QTIMER_H + +#include + +#ifndef QT_NO_QOBJECT + +#include // conceptual inheritance +#include + +#if QT_HAS_INCLUDE() +# include +#endif + +QT_BEGIN_NAMESPACE + + +class Q_CORE_EXPORT QTimer : public QObject +{ + Q_OBJECT + Q_PROPERTY(bool singleShot READ isSingleShot WRITE setSingleShot) + Q_PROPERTY(int interval READ interval WRITE setInterval) + Q_PROPERTY(int remainingTime READ remainingTime) + Q_PROPERTY(Qt::TimerType timerType READ timerType WRITE setTimerType) + Q_PROPERTY(bool active READ isActive) +public: + explicit QTimer(QObject *parent = Q_NULLPTR); + ~QTimer(); + + inline bool isActive() const { return id >= 0; } + int timerId() const { return id; } + + void setInterval(int msec); + int interval() const { return inter; } + + int remainingTime() const; + + void setTimerType(Qt::TimerType atype) { this->type = atype; } + Qt::TimerType timerType() const { return Qt::TimerType(type); } + + inline void setSingleShot(bool singleShot); + inline bool isSingleShot() const { return single; } + + static void singleShot(int msec, const QObject *receiver, const char *member); + static void singleShot(int msec, Qt::TimerType timerType, const QObject *receiver, const char *member); + +#ifdef Q_QDOC + template + static void singleShot(int msec, const QObject *receiver, PointerToMemberFunction method); + template + static void singleShot(int msec, Qt::TimerType timerType, const QObject *receiver, PointerToMemberFunction method); + template + static void singleShot(int msec, Functor functor); + template + static void singleShot(int msec, Qt::TimerType timerType, Functor functor); + template + static void singleShot(int msec, const QObject *context, Functor functor); + template + static void singleShot(int msec, Qt::TimerType timerType, const QObject *context, Functor functor); +#else + // singleShot to a QObject slot + template + static inline void singleShot(Duration interval, const typename QtPrivate::FunctionPointer::Object *receiver, Func1 slot) + { + singleShot(interval, defaultTypeFor(interval), receiver, slot); + } + template + static inline void singleShot(Duration interval, Qt::TimerType timerType, const typename QtPrivate::FunctionPointer::Object *receiver, + Func1 slot) + { + typedef QtPrivate::FunctionPointer SlotType; + + //compilation error if the slot has arguments. + Q_STATIC_ASSERT_X(int(SlotType::ArgumentCount) == 0, + "The slot must not have any arguments."); + + singleShotImpl(interval, timerType, receiver, + new QtPrivate::QSlotObject(slot)); + } + // singleShot to a functor or function pointer (without context) + template + static inline typename std::enable_if::IsPointerToMemberFunction && + !std::is_same::value, void>::type + singleShot(Duration interval, Func1 slot) + { + singleShot(interval, defaultTypeFor(interval), nullptr, slot); + } + template + static inline typename std::enable_if::IsPointerToMemberFunction && + !std::is_same::value, void>::type + singleShot(Duration interval, Qt::TimerType timerType, Func1 slot) + { + singleShot(interval, timerType, nullptr, slot); + } + // singleShot to a functor or function pointer (with context) + template + static inline typename std::enable_if::IsPointerToMemberFunction && + !std::is_same::value, void>::type + singleShot(Duration interval, QObject *context, Func1 slot) + { + singleShot(interval, defaultTypeFor(interval), context, slot); + } + template + static inline typename std::enable_if::IsPointerToMemberFunction && + !std::is_same::value, void>::type + singleShot(Duration interval, Qt::TimerType timerType, QObject *context, Func1 slot) + { + //compilation error if the slot has arguments. + typedef QtPrivate::FunctionPointer SlotType; + Q_STATIC_ASSERT_X(int(SlotType::ArgumentCount) <= 0, "The slot must not have any arguments."); + + singleShotImpl(interval, timerType, context, + new QtPrivate::QFunctorSlotObject::Value, void>(slot)); + } +#endif + +public Q_SLOTS: + void start(int msec); + + void start(); + void stop(); + +Q_SIGNALS: + void timeout(QPrivateSignal); + +public: +#if QT_HAS_INCLUDE() || defined(Q_QDOC) + Q_ALWAYS_INLINE + void setInterval(std::chrono::milliseconds value) + { + setInterval(int(value.count())); + } + + Q_ALWAYS_INLINE + std::chrono::milliseconds intervalAsDuration() const + { + return std::chrono::milliseconds(interval()); + } + + Q_ALWAYS_INLINE + std::chrono::milliseconds remainingTimeAsDuration() const + { + return std::chrono::milliseconds(remainingTime()); + } + + Q_ALWAYS_INLINE + static void singleShot(std::chrono::milliseconds value, const QObject *receiver, const char *member) + { + singleShot(int(value.count()), receiver, member); + } + + Q_ALWAYS_INLINE + static void singleShot(std::chrono::milliseconds value, Qt::TimerType timerType, const QObject *receiver, const char *member) + { + singleShot(int(value.count()), timerType, receiver, member); + } + + Q_ALWAYS_INLINE + void start(std::chrono::milliseconds value) + { + start(int(value.count())); + } +#endif + +protected: + void timerEvent(QTimerEvent *) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QTimer) + + inline int startTimer(int){ return -1;} + inline void killTimer(int){} + + static Q_DECL_CONSTEXPR Qt::TimerType defaultTypeFor(int msecs) Q_DECL_NOTHROW + { return msecs >= 2000 ? Qt::CoarseTimer : Qt::PreciseTimer; } + static void singleShotImpl(int msec, Qt::TimerType timerType, + const QObject *receiver, QtPrivate::QSlotObjectBase *slotObj); + +#if QT_HAS_INCLUDE() + static Qt::TimerType defaultTypeFor(std::chrono::milliseconds interval) + { return defaultTypeFor(int(interval.count())); } + + static void singleShotImpl(std::chrono::milliseconds interval, Qt::TimerType timerType, + const QObject *receiver, QtPrivate::QSlotObjectBase *slotObj) + { + singleShotImpl(int(interval.count()), + timerType, receiver, slotObj); + } +#endif + + int id, inter, del; + uint single : 1; + uint nulltimer : 1; + uint type : 2; + // reserved : 28 +}; + +inline void QTimer::setSingleShot(bool asingleShot) { single = asingleShot; } + +QT_END_NAMESPACE + +#endif // QT_NO_QOBJECT + +#endif // QTIMER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtimezone.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtimezone.h new file mode 100644 index 000000000..bd87139f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtimezone.h @@ -0,0 +1,182 @@ +/**************************************************************************** +** +** Copyright (C) 2013 John Layt +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QTIMEZONE_H +#define QTIMEZONE_H + +#include +#include +#include + +QT_REQUIRE_CONFIG(timezone); + +#if (defined(Q_OS_DARWIN) || defined(Q_QDOC)) && !defined(QT_NO_SYSTEMLOCALE) +Q_FORWARD_DECLARE_CF_TYPE(CFTimeZone); +Q_FORWARD_DECLARE_OBJC_CLASS(NSTimeZone); +#endif + +QT_BEGIN_NAMESPACE + +class QTimeZonePrivate; + +class Q_CORE_EXPORT QTimeZone +{ +public: + enum TimeType { + StandardTime = 0, + DaylightTime = 1, + GenericTime = 2 + }; + + enum NameType { + DefaultName = 0, + LongName = 1, + ShortName = 2, + OffsetName = 3 + }; + + struct OffsetData { + QString abbreviation; + QDateTime atUtc; + int offsetFromUtc; + int standardTimeOffset; + int daylightTimeOffset; + }; + typedef QVector OffsetDataList; + + QTimeZone() Q_DECL_NOTHROW; + explicit QTimeZone(const QByteArray &ianaId); + explicit QTimeZone(int offsetSeconds); + /*implicit*/ QTimeZone(const QByteArray &zoneId, int offsetSeconds, const QString &name, + const QString &abbreviation, QLocale::Country country = QLocale::AnyCountry, + const QString &comment = QString()); + QTimeZone(const QTimeZone &other); + ~QTimeZone(); + + QTimeZone &operator=(const QTimeZone &other); + #ifdef Q_COMPILER_RVALUE_REFS + QTimeZone &operator=(QTimeZone &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + + void swap(QTimeZone &other) Q_DECL_NOTHROW + { d.swap(other.d); } + + bool operator==(const QTimeZone &other) const; + bool operator!=(const QTimeZone &other) const; + + bool isValid() const; + + QByteArray id() const; + QLocale::Country country() const; + QString comment() const; + + QString displayName(const QDateTime &atDateTime, + QTimeZone::NameType nameType = QTimeZone::DefaultName, + const QLocale &locale = QLocale()) const; + QString displayName(QTimeZone::TimeType timeType, + QTimeZone::NameType nameType = QTimeZone::DefaultName, + const QLocale &locale = QLocale()) const; + QString abbreviation(const QDateTime &atDateTime) const; + + int offsetFromUtc(const QDateTime &atDateTime) const; + int standardTimeOffset(const QDateTime &atDateTime) const; + int daylightTimeOffset(const QDateTime &atDateTime) const; + + bool hasDaylightTime() const; + bool isDaylightTime(const QDateTime &atDateTime) const; + + OffsetData offsetData(const QDateTime &forDateTime) const; + + bool hasTransitions() const; + OffsetData nextTransition(const QDateTime &afterDateTime) const; + OffsetData previousTransition(const QDateTime &beforeDateTime) const; + OffsetDataList transitions(const QDateTime &fromDateTime, const QDateTime &toDateTime) const; + + static QByteArray systemTimeZoneId(); + static QTimeZone systemTimeZone(); + static QTimeZone utc(); + + static bool isTimeZoneIdAvailable(const QByteArray &ianaId); + + static QList availableTimeZoneIds(); + static QList availableTimeZoneIds(QLocale::Country country); + static QList availableTimeZoneIds(int offsetSeconds); + + static QByteArray ianaIdToWindowsId(const QByteArray &ianaId); + static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId); + static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId, + QLocale::Country country); + static QList windowsIdToIanaIds(const QByteArray &windowsId); + static QList windowsIdToIanaIds(const QByteArray &windowsId, + QLocale::Country country); + +#if (defined(Q_OS_DARWIN) || defined(Q_QDOC)) && !defined(QT_NO_SYSTEMLOCALE) + static QTimeZone fromCFTimeZone(CFTimeZoneRef timeZone); + CFTimeZoneRef toCFTimeZone() const Q_DECL_CF_RETURNS_RETAINED; + static QTimeZone fromNSTimeZone(const NSTimeZone *timeZone); + NSTimeZone *toNSTimeZone() const Q_DECL_NS_RETURNS_AUTORELEASED; +#endif + +private: + QTimeZone(QTimeZonePrivate &dd); +#ifndef QT_NO_DATASTREAM + friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &ds, const QTimeZone &tz); +#endif + friend class QTimeZonePrivate; + friend class QDateTime; + friend class QDateTimePrivate; + QSharedDataPointer d; +}; + +Q_DECLARE_TYPEINFO(QTimeZone::OffsetData, Q_MOVABLE_TYPE); +Q_DECLARE_SHARED(QTimeZone) + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &ds, const QTimeZone &tz); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &ds, QTimeZone &tz); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug dbg, const QTimeZone &tz); +#endif + +QT_END_NAMESPACE + +#endif // QTIMEZONE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtranslator.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtranslator.h new file mode 100644 index 000000000..97be16bc9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtranslator.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTRANSLATOR_H +#define QTRANSLATOR_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_TRANSLATION + +class QLocale; +class QTranslatorPrivate; + +class Q_CORE_EXPORT QTranslator : public QObject +{ + Q_OBJECT +public: + explicit QTranslator(QObject *parent = Q_NULLPTR); + ~QTranslator(); + + virtual QString translate(const char *context, const char *sourceText, + const char *disambiguation = Q_NULLPTR, int n = -1) const; + + virtual bool isEmpty() const; + + bool load(const QString & filename, + const QString & directory = QString(), + const QString & search_delimiters = QString(), + const QString & suffix = QString()); + bool load(const QLocale & locale, + const QString & filename, + const QString & prefix = QString(), + const QString & directory = QString(), + const QString & suffix = QString()); + bool load(const uchar *data, int len, const QString &directory = QString()); + +private: + Q_DISABLE_COPY(QTranslator) + Q_DECLARE_PRIVATE(QTranslator) +}; + +#endif // QT_NO_TRANSLATION + +QT_END_NAMESPACE + +#endif // QTRANSLATOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtypeinfo.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtypeinfo.h new file mode 100644 index 000000000..7031021e1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtypeinfo.h @@ -0,0 +1,340 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QTYPEINFO_H +#define QTYPEINFO_H + +QT_BEGIN_NAMESPACE + +/* + QTypeInfo - type trait functionality +*/ + +/* + The catch-all template. +*/ + +template +class QTypeInfo +{ +public: + enum { + isSpecialized = std::is_enum::value, // don't require every enum to be marked manually + isPointer = false, + isIntegral = std::is_integral::value, + isComplex = !isIntegral && !std::is_enum::value, + isStatic = true, + isRelocatable = std::is_enum::value, + isLarge = (sizeof(T)>sizeof(void*)), + isDummy = false, //### Qt6: remove + sizeOf = sizeof(T) + }; +}; + +template<> +class QTypeInfo +{ +public: + enum { + isSpecialized = true, + isPointer = false, + isIntegral = false, + isComplex = false, + isStatic = false, + isRelocatable = false, + isLarge = false, + isDummy = false, + sizeOf = 0 + }; +}; + +template +class QTypeInfo +{ +public: + enum { + isSpecialized = true, + isPointer = true, + isIntegral = false, + isComplex = false, + isStatic = false, + isRelocatable = true, + isLarge = false, + isDummy = false, + sizeOf = sizeof(T*) + }; +}; + +/*! + \class QTypeInfoQuery + \inmodule QtCore + \internal + \brief QTypeInfoQuery is used to query the values of a given QTypeInfo + + We use it because there may be some QTypeInfo specializations in user + code that don't provide certain flags that we added after Qt 5.0. They are: + \list + \li isRelocatable: defaults to !isStatic + \endlist + + DO NOT specialize this class elsewhere. +*/ +// apply defaults for a generic QTypeInfo that didn't provide the new values +template +struct QTypeInfoQuery : public QTypeInfo +{ + enum { isRelocatable = !QTypeInfo::isStatic }; +}; + +// if QTypeInfo::isRelocatable exists, use it +template +struct QTypeInfoQuery::isRelocatable || true>::type> : public QTypeInfo +{}; + +/*! + \class QTypeInfoMerger + \inmodule QtCore + \internal + + \brief QTypeInfoMerger merges the QTypeInfo flags of T1, T2... and presents them + as a QTypeInfo would do. + + Let's assume that we have a simple set of structs: + + \snippet code/src_corelib_global_qglobal.cpp 50 + + To create a proper QTypeInfo specialization for A struct, we have to check + all sub-components; B, C and D, then take the lowest common denominator and call + Q_DECLARE_TYPEINFO with the resulting flags. An easier and less fragile approach is to + use QTypeInfoMerger, which does that automatically. So struct A would have + the following QTypeInfo definition: + + \snippet code/src_corelib_global_qglobal.cpp 51 +*/ +template +class QTypeInfoMerger +{ +public: + enum { + isSpecialized = true, + isComplex = QTypeInfoQuery::isComplex || QTypeInfoQuery::isComplex + || QTypeInfoQuery::isComplex || QTypeInfoQuery::isComplex, + isStatic = QTypeInfoQuery::isStatic || QTypeInfoQuery::isStatic + || QTypeInfoQuery::isStatic || QTypeInfoQuery::isStatic, + isRelocatable = QTypeInfoQuery::isRelocatable && QTypeInfoQuery::isRelocatable + && QTypeInfoQuery::isRelocatable && QTypeInfoQuery::isRelocatable, + isLarge = sizeof(T) > sizeof(void*), + isPointer = false, + isIntegral = false, + isDummy = false, + sizeOf = sizeof(T) + }; +}; + +#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER) \ +template class CONTAINER; \ +template \ +class QTypeInfo< CONTAINER > \ +{ \ +public: \ + enum { \ + isSpecialized = true, \ + isPointer = false, \ + isIntegral = false, \ + isComplex = true, \ + isRelocatable = true, \ + isStatic = false, \ + isLarge = (sizeof(CONTAINER) > sizeof(void*)), \ + isDummy = false, \ + sizeOf = sizeof(CONTAINER) \ + }; \ +} + +Q_DECLARE_MOVABLE_CONTAINER(QList); +Q_DECLARE_MOVABLE_CONTAINER(QVector); +Q_DECLARE_MOVABLE_CONTAINER(QQueue); +Q_DECLARE_MOVABLE_CONTAINER(QStack); +Q_DECLARE_MOVABLE_CONTAINER(QLinkedList); +Q_DECLARE_MOVABLE_CONTAINER(QSet); + +#undef Q_DECLARE_MOVABLE_CONTAINER + +/* These cannot be movable before ### Qt 6, for BC reasons */ +#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER) \ +template class CONTAINER; \ +template \ +class QTypeInfo< CONTAINER > \ +{ \ +public: \ + enum { \ + isSpecialized = true, \ + isPointer = false, \ + isIntegral = false, \ + isComplex = true, \ + isStatic = (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)), \ + isRelocatable = true, \ + isLarge = (sizeof(CONTAINER) > sizeof(void*)), \ + isDummy = false, \ + sizeOf = sizeof(CONTAINER) \ + }; \ +} + +Q_DECLARE_MOVABLE_CONTAINER(QMap); +Q_DECLARE_MOVABLE_CONTAINER(QMultiMap); +Q_DECLARE_MOVABLE_CONTAINER(QHash); +Q_DECLARE_MOVABLE_CONTAINER(QMultiHash); + +#undef Q_DECLARE_MOVABLE_CONTAINER + +/* + Specialize a specific type with: + + Q_DECLARE_TYPEINFO(type, flags); + + where 'type' is the name of the type to specialize and 'flags' is + logically-OR'ed combination of the flags below. +*/ +enum { /* TYPEINFO flags */ + Q_COMPLEX_TYPE = 0, + Q_PRIMITIVE_TYPE = 0x1, + Q_STATIC_TYPE = 0, + Q_MOVABLE_TYPE = 0x2, // ### Qt6: merge movable and relocatable once QList no longer depends on it + Q_DUMMY_TYPE = 0x4, + Q_RELOCATABLE_TYPE = 0x8 +}; + +#define Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS) \ +class QTypeInfo \ +{ \ +public: \ + enum { \ + isSpecialized = true, \ + isComplex = (((FLAGS) & Q_PRIMITIVE_TYPE) == 0), \ + isStatic = (((FLAGS) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), \ + isRelocatable = !isStatic || ((FLAGS) & Q_RELOCATABLE_TYPE), \ + isLarge = (sizeof(TYPE)>sizeof(void*)), \ + isPointer = false, \ + isIntegral = std::is_integral< TYPE >::value, \ + isDummy = (((FLAGS) & Q_DUMMY_TYPE) != 0), \ + sizeOf = sizeof(TYPE) \ + }; \ + static inline const char *name() { return #TYPE; } \ +} + +#define Q_DECLARE_TYPEINFO(TYPE, FLAGS) \ +template<> \ +Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS) + +/* Specialize QTypeInfo for QFlags */ +template class QFlags; +template +Q_DECLARE_TYPEINFO_BODY(QFlags, Q_PRIMITIVE_TYPE); + +/* + Specialize a shared type with: + + Q_DECLARE_SHARED(type) + + where 'type' is the name of the type to specialize. NOTE: shared + types must define a member-swap, and be defined in the same + namespace as Qt for this to work. + + If the type was already released without Q_DECLARE_SHARED applied, + _and_ without an explicit Q_DECLARE_TYPEINFO(type, Q_MOVABLE_TYPE), + then use Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(type) to mark the + type shared (incl. swap()), without marking it movable (which + would change the memory layout of QList, a BiC change. +*/ + +#define Q_DECLARE_SHARED_IMPL(TYPE, FLAGS) \ +Q_DECLARE_TYPEINFO(TYPE, FLAGS); \ +inline void swap(TYPE &value1, TYPE &value2) \ + Q_DECL_NOEXCEPT_EXPR(noexcept(value1.swap(value2))) \ +{ value1.swap(value2); } +#define Q_DECLARE_SHARED(TYPE) Q_DECLARE_SHARED_IMPL(TYPE, Q_MOVABLE_TYPE) +#define Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(TYPE) \ + Q_DECLARE_SHARED_IMPL(TYPE, QT_VERSION >= QT_VERSION_CHECK(6,0,0) ? Q_MOVABLE_TYPE : Q_RELOCATABLE_TYPE) + +/* + QTypeInfo primitive specializations +*/ +Q_DECLARE_TYPEINFO(bool, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(char, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(signed char, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(uchar, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(short, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(ushort, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(int, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(uint, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(long, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(ulong, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(qint64, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(quint64, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(float, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(double, Q_PRIMITIVE_TYPE); +#ifndef Q_OS_DARWIN +Q_DECLARE_TYPEINFO(long double, Q_PRIMITIVE_TYPE); +#endif + + +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) +// ### Qt 6: remove the other branch +// This was required so that QList for these types allocates out of the array storage +# ifdef Q_COMPILER_UNICODE_STRINGS +Q_DECLARE_TYPEINFO(char16_t, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(char32_t, Q_PRIMITIVE_TYPE); +# endif +# if !defined(Q_CC_MSVC) || defined(_NATIVE_WCHAR_T_DEFINED) +Q_DECLARE_TYPEINFO(wchar_t, Q_PRIMITIVE_TYPE); +# endif +#else +# ifdef Q_COMPILER_UNICODE_STRINGS +Q_DECLARE_TYPEINFO(char16_t, Q_RELOCATABLE_TYPE); +Q_DECLARE_TYPEINFO(char32_t, Q_RELOCATABLE_TYPE); +# endif +# if !defined(Q_CC_MSVC) || defined(_NATIVE_WCHAR_T_DEFINED) +Q_DECLARE_TYPEINFO(wchar_t, Q_RELOCATABLE_TYPE); +# endif +#endif // Qt 6 + +QT_END_NAMESPACE +#endif // QTYPEINFO_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qtypetraits.h b/qrenderdoc/3rdparty/qt/include/QtCore/qtypetraits.h new file mode 100644 index 000000000..35e407e2d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qtypetraits.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// ### Qt 6: remove this header +// +// This header is deliberately empty. Although it did not contain any public API, +// it was accidentally made public in Qt 5. So: do not remove it for the moment +// being, to prevent #include breaks in downstreams. + +#include "QtCore/qglobal.h" + +#ifndef QTYPETRAITS_H +#define QTYPETRAITS_H + +QT_BEGIN_NAMESPACE + +QT_END_NAMESPACE + +#endif // QTYPETRAITS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qurl.h b/qrenderdoc/3rdparty/qt/include/QtCore/qurl.h new file mode 100644 index 000000000..0bb8707ff --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qurl.h @@ -0,0 +1,424 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QURL_H +#define QURL_H + +#include +#include +#include +#include +#include +#include + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) +Q_FORWARD_DECLARE_CF_TYPE(CFURL); +Q_FORWARD_DECLARE_OBJC_CLASS(NSURL); +#endif + +QT_BEGIN_NAMESPACE + + +class QUrlQuery; +class QUrlPrivate; +class QDataStream; + +template +class QUrlTwoFlags +{ + int i; + typedef int QUrlTwoFlags:: *Zero; +public: + Q_DECL_CONSTEXPR inline QUrlTwoFlags(E1 f) : i(f) {} + Q_DECL_CONSTEXPR inline QUrlTwoFlags(E2 f) : i(f) {} + Q_DECL_CONSTEXPR inline QUrlTwoFlags(QFlag f) : i(f) {} + Q_DECL_CONSTEXPR inline QUrlTwoFlags(QFlags f) : i(f.operator typename QFlags::Int()) {} + Q_DECL_CONSTEXPR inline QUrlTwoFlags(QFlags f) : i(f.operator typename QFlags::Int()) {} + Q_DECL_CONSTEXPR inline QUrlTwoFlags(Zero = 0) : i(0) {} + + inline QUrlTwoFlags &operator&=(int mask) { i &= mask; return *this; } + inline QUrlTwoFlags &operator&=(uint mask) { i &= mask; return *this; } + inline QUrlTwoFlags &operator|=(QUrlTwoFlags f) { i |= f.i; return *this; } + inline QUrlTwoFlags &operator|=(E1 f) { i |= f; return *this; } + inline QUrlTwoFlags &operator|=(E2 f) { i |= f; return *this; } + inline QUrlTwoFlags &operator^=(QUrlTwoFlags f) { i ^= f.i; return *this; } + inline QUrlTwoFlags &operator^=(E1 f) { i ^= f; return *this; } + inline QUrlTwoFlags &operator^=(E2 f) { i ^= f; return *this; } + + Q_DECL_CONSTEXPR inline operator QFlags() const { return QFlag(i); } + Q_DECL_CONSTEXPR inline operator QFlags() const { return QFlag(i); } + Q_DECL_CONSTEXPR inline operator int() const { return i; } + Q_DECL_CONSTEXPR inline bool operator!() const { return !i; } + + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator|(QUrlTwoFlags f) const + { return QUrlTwoFlags(QFlag(i | f.i)); } + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator|(E1 f) const + { return QUrlTwoFlags(QFlag(i | f)); } + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator|(E2 f) const + { return QUrlTwoFlags(QFlag(i | f)); } + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator^(QUrlTwoFlags f) const + { return QUrlTwoFlags(QFlag(i ^ f.i)); } + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator^(E1 f) const + { return QUrlTwoFlags(QFlag(i ^ f)); } + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator^(E2 f) const + { return QUrlTwoFlags(QFlag(i ^ f)); } + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator&(int mask) const + { return QUrlTwoFlags(QFlag(i & mask)); } + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator&(uint mask) const + { return QUrlTwoFlags(QFlag(i & mask)); } + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator&(E1 f) const + { return QUrlTwoFlags(QFlag(i & f)); } + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator&(E2 f) const + { return QUrlTwoFlags(QFlag(i & f)); } + Q_DECL_CONSTEXPR inline QUrlTwoFlags operator~() const + { return QUrlTwoFlags(QFlag(~i)); } + + Q_DECL_CONSTEXPR inline bool testFlag(E1 f) const { return (i & f) == f && (f != 0 || i == int(f)); } + Q_DECL_CONSTEXPR inline bool testFlag(E2 f) const { return (i & f) == f && (f != 0 || i == int(f)); } +}; + +template +class QTypeInfo > : public QTypeInfoMerger, E1, E2> {}; + +class QUrl; +// qHash is a friend, but we can't use default arguments for friends (§8.3.6.4) +Q_CORE_EXPORT uint qHash(const QUrl &url, uint seed = 0) Q_DECL_NOTHROW; + +class Q_CORE_EXPORT QUrl +{ +public: + enum ParsingMode { + TolerantMode, + StrictMode, + DecodedMode + }; + + // encoding / toString values + enum UrlFormattingOption { + None = 0x0, + RemoveScheme = 0x1, + RemovePassword = 0x2, + RemoveUserInfo = RemovePassword | 0x4, + RemovePort = 0x8, + RemoveAuthority = RemoveUserInfo | RemovePort | 0x10, + RemovePath = 0x20, + RemoveQuery = 0x40, + RemoveFragment = 0x80, + // 0x100 was a private code in Qt 4, keep unused for a while + PreferLocalFile = 0x200, + StripTrailingSlash = 0x400, + RemoveFilename = 0x800, + NormalizePathSegments = 0x1000 + }; + + enum ComponentFormattingOption { + PrettyDecoded = 0x000000, + EncodeSpaces = 0x100000, + EncodeUnicode = 0x200000, + EncodeDelimiters = 0x400000 | 0x800000, + EncodeReserved = 0x1000000, + DecodeReserved = 0x2000000, + // 0x4000000 used to indicate full-decode mode + + FullyEncoded = EncodeSpaces | EncodeUnicode | EncodeDelimiters | EncodeReserved, + FullyDecoded = FullyEncoded | DecodeReserved | 0x4000000 + }; + Q_DECLARE_FLAGS(ComponentFormattingOptions, ComponentFormattingOption) +#ifdef Q_QDOC +private: + // We need to let qdoc think that FormattingOptions is a normal QFlags, but + // it needs to be a QUrlTwoFlags for compiling default arguments of somme functions. + template struct QFlags : QUrlTwoFlags + { using QUrlTwoFlags::QUrlTwoFlags; }; +public: + Q_DECLARE_FLAGS(FormattingOptions, UrlFormattingOption) +#else + typedef QUrlTwoFlags FormattingOptions; +#endif + + QUrl(); + QUrl(const QUrl ©); + QUrl &operator =(const QUrl ©); +#ifdef QT_NO_URL_CAST_FROM_STRING + explicit QUrl(const QString &url, ParsingMode mode = TolerantMode); +#else + QUrl(const QString &url, ParsingMode mode = TolerantMode); + QUrl &operator=(const QString &url); +#endif +#ifdef Q_COMPILER_RVALUE_REFS + QUrl(QUrl &&other) Q_DECL_NOTHROW : d(other.d) + { other.d = Q_NULLPTR; } + inline QUrl &operator=(QUrl &&other) Q_DECL_NOTHROW + { qSwap(d, other.d); return *this; } +#endif + ~QUrl(); + + inline void swap(QUrl &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + void setUrl(const QString &url, ParsingMode mode = TolerantMode); + QString url(FormattingOptions options = FormattingOptions(PrettyDecoded)) const; + QString toString(FormattingOptions options = FormattingOptions(PrettyDecoded)) const; + QString toDisplayString(FormattingOptions options = FormattingOptions(PrettyDecoded)) const; + Q_REQUIRED_RESULT QUrl adjusted(FormattingOptions options) const; + + QByteArray toEncoded(FormattingOptions options = FullyEncoded) const; + static QUrl fromEncoded(const QByteArray &url, ParsingMode mode = TolerantMode); + + enum UserInputResolutionOption { + DefaultResolution, + AssumeLocalFile + }; + Q_DECLARE_FLAGS(UserInputResolutionOptions, UserInputResolutionOption) + + static QUrl fromUserInput(const QString &userInput); + // ### Qt6 merge with fromUserInput(QString), by adding = QString() + static QUrl fromUserInput(const QString &userInput, const QString &workingDirectory, + UserInputResolutionOptions options = DefaultResolution); + + bool isValid() const; + QString errorString() const; + + bool isEmpty() const; + void clear(); + + void setScheme(const QString &scheme); + QString scheme() const; + + void setAuthority(const QString &authority, ParsingMode mode = TolerantMode); + QString authority(ComponentFormattingOptions options = PrettyDecoded) const; + + void setUserInfo(const QString &userInfo, ParsingMode mode = TolerantMode); + QString userInfo(ComponentFormattingOptions options = PrettyDecoded) const; + + void setUserName(const QString &userName, ParsingMode mode = DecodedMode); + QString userName(ComponentFormattingOptions options = FullyDecoded) const; + + void setPassword(const QString &password, ParsingMode mode = DecodedMode); + QString password(ComponentFormattingOptions = FullyDecoded) const; + + void setHost(const QString &host, ParsingMode mode = DecodedMode); + QString host(ComponentFormattingOptions = FullyDecoded) const; +#if QT_CONFIG(topleveldomain) + QString topLevelDomain(ComponentFormattingOptions options = FullyDecoded) const; +#endif + + void setPort(int port); + int port(int defaultPort = -1) const; + + void setPath(const QString &path, ParsingMode mode = DecodedMode); + QString path(ComponentFormattingOptions options = FullyDecoded) const; + QString fileName(ComponentFormattingOptions options = FullyDecoded) const; + + bool hasQuery() const; + void setQuery(const QString &query, ParsingMode mode = TolerantMode); + void setQuery(const QUrlQuery &query); + QString query(ComponentFormattingOptions = PrettyDecoded) const; + + bool hasFragment() const; + QString fragment(ComponentFormattingOptions options = PrettyDecoded) const; + void setFragment(const QString &fragment, ParsingMode mode = TolerantMode); + + Q_REQUIRED_RESULT QUrl resolved(const QUrl &relative) const; + + bool isRelative() const; + bool isParentOf(const QUrl &url) const; + + bool isLocalFile() const; + static QUrl fromLocalFile(const QString &localfile); + QString toLocalFile() const; + + void detach(); + bool isDetached() const; + + bool operator <(const QUrl &url) const; + bool operator ==(const QUrl &url) const; + bool operator !=(const QUrl &url) const; + + bool matches(const QUrl &url, FormattingOptions options) const; + + static QString fromPercentEncoding(const QByteArray &); + static QByteArray toPercentEncoding(const QString &, + const QByteArray &exclude = QByteArray(), + const QByteArray &include = QByteArray()); +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + static QUrl fromCFURL(CFURLRef url); + CFURLRef toCFURL() const Q_DECL_CF_RETURNS_RETAINED; + static QUrl fromNSURL(const NSURL *url); + NSURL *toNSURL() const Q_DECL_NS_RETURNS_AUTORELEASED; +#endif + +#if QT_DEPRECATED_SINCE(5,0) + QT_DEPRECATED static QString fromPunycode(const QByteArray &punycode) + { return fromAce(punycode); } + QT_DEPRECATED static QByteArray toPunycode(const QString &string) + { return toAce(string); } + + QT_DEPRECATED inline void setQueryItems(const QList > &qry); + QT_DEPRECATED inline void addQueryItem(const QString &key, const QString &value); + QT_DEPRECATED inline QList > queryItems() const; + QT_DEPRECATED inline bool hasQueryItem(const QString &key) const; + QT_DEPRECATED inline QString queryItemValue(const QString &key) const; + QT_DEPRECATED inline QStringList allQueryItemValues(const QString &key) const; + QT_DEPRECATED inline void removeQueryItem(const QString &key); + QT_DEPRECATED inline void removeAllQueryItems(const QString &key); + + QT_DEPRECATED inline void setEncodedQueryItems(const QList > &query); + QT_DEPRECATED inline void addEncodedQueryItem(const QByteArray &key, const QByteArray &value); + QT_DEPRECATED inline QList > encodedQueryItems() const; + QT_DEPRECATED inline bool hasEncodedQueryItem(const QByteArray &key) const; + QT_DEPRECATED inline QByteArray encodedQueryItemValue(const QByteArray &key) const; + QT_DEPRECATED inline QList allEncodedQueryItemValues(const QByteArray &key) const; + QT_DEPRECATED inline void removeEncodedQueryItem(const QByteArray &key); + QT_DEPRECATED inline void removeAllEncodedQueryItems(const QByteArray &key); + + QT_DEPRECATED void setEncodedUrl(const QByteArray &u, ParsingMode mode = TolerantMode) + { setUrl(fromEncodedComponent_helper(u), mode); } + + QT_DEPRECATED QByteArray encodedUserName() const + { return userName(FullyEncoded).toLatin1(); } + QT_DEPRECATED void setEncodedUserName(const QByteArray &value) + { setUserName(fromEncodedComponent_helper(value)); } + + QT_DEPRECATED QByteArray encodedPassword() const + { return password(FullyEncoded).toLatin1(); } + QT_DEPRECATED void setEncodedPassword(const QByteArray &value) + { setPassword(fromEncodedComponent_helper(value)); } + + QT_DEPRECATED QByteArray encodedHost() const + { return host(FullyEncoded).toLatin1(); } + QT_DEPRECATED void setEncodedHost(const QByteArray &value) + { setHost(fromEncodedComponent_helper(value)); } + + QT_DEPRECATED QByteArray encodedPath() const + { return path(FullyEncoded).toLatin1(); } + QT_DEPRECATED void setEncodedPath(const QByteArray &value) + { setPath(fromEncodedComponent_helper(value)); } + + QT_DEPRECATED QByteArray encodedQuery() const + { return toLatin1_helper(query(FullyEncoded)); } + QT_DEPRECATED void setEncodedQuery(const QByteArray &value) + { setQuery(fromEncodedComponent_helper(value)); } + + QT_DEPRECATED QByteArray encodedFragment() const + { return toLatin1_helper(fragment(FullyEncoded)); } + QT_DEPRECATED void setEncodedFragment(const QByteArray &value) + { setFragment(fromEncodedComponent_helper(value)); } + +private: + // helper function for the encodedQuery and encodedFragment functions + static QByteArray toLatin1_helper(const QString &string) + { + if (string.isEmpty()) + return string.isNull() ? QByteArray() : QByteArray(""); + return string.toLatin1(); + } +#endif +private: + static QString fromEncodedComponent_helper(const QByteArray &ba); + +public: + static QString fromAce(const QByteArray &); + static QByteArray toAce(const QString &); + static QStringList idnWhitelist(); + static QStringList toStringList(const QList &uris, FormattingOptions options = FormattingOptions(PrettyDecoded)); + static QList fromStringList(const QStringList &uris, ParsingMode mode = TolerantMode); + + static void setIdnWhitelist(const QStringList &); + friend Q_CORE_EXPORT uint qHash(const QUrl &url, uint seed) Q_DECL_NOTHROW; + +private: + QUrlPrivate *d; + friend class QUrlQuery; + +public: + typedef QUrlPrivate * DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +Q_DECLARE_SHARED(QUrl) +Q_DECLARE_OPERATORS_FOR_FLAGS(QUrl::ComponentFormattingOptions) +//Q_DECLARE_OPERATORS_FOR_FLAGS(QUrl::FormattingOptions) + +#ifndef Q_QDOC +Q_DECL_CONSTEXPR inline QUrl::FormattingOptions operator|(QUrl::UrlFormattingOption f1, QUrl::UrlFormattingOption f2) +{ return QUrl::FormattingOptions(f1) | f2; } +Q_DECL_CONSTEXPR inline QUrl::FormattingOptions operator|(QUrl::UrlFormattingOption f1, QUrl::FormattingOptions f2) +{ return f2 | f1; } +Q_DECL_CONSTEXPR inline QIncompatibleFlag operator|(QUrl::UrlFormattingOption f1, int f2) +{ return QIncompatibleFlag(int(f1) | f2); } + +// add operators for OR'ing the two types of flags +inline QUrl::FormattingOptions &operator|=(QUrl::FormattingOptions &i, QUrl::ComponentFormattingOptions f) +{ i |= QUrl::UrlFormattingOption(int(f)); return i; } +Q_DECL_CONSTEXPR inline QUrl::FormattingOptions operator|(QUrl::UrlFormattingOption i, QUrl::ComponentFormattingOption f) +{ return i | QUrl::UrlFormattingOption(int(f)); } +Q_DECL_CONSTEXPR inline QUrl::FormattingOptions operator|(QUrl::UrlFormattingOption i, QUrl::ComponentFormattingOptions f) +{ return i | QUrl::UrlFormattingOption(int(f)); } +Q_DECL_CONSTEXPR inline QUrl::FormattingOptions operator|(QUrl::ComponentFormattingOption f, QUrl::UrlFormattingOption i) +{ return i | QUrl::UrlFormattingOption(int(f)); } +Q_DECL_CONSTEXPR inline QUrl::FormattingOptions operator|(QUrl::ComponentFormattingOptions f, QUrl::UrlFormattingOption i) +{ return i | QUrl::UrlFormattingOption(int(f)); } +Q_DECL_CONSTEXPR inline QUrl::FormattingOptions operator|(QUrl::FormattingOptions i, QUrl::ComponentFormattingOptions f) +{ return i | QUrl::UrlFormattingOption(int(f)); } +Q_DECL_CONSTEXPR inline QUrl::FormattingOptions operator|(QUrl::ComponentFormattingOption f, QUrl::FormattingOptions i) +{ return i | QUrl::UrlFormattingOption(int(f)); } +Q_DECL_CONSTEXPR inline QUrl::FormattingOptions operator|(QUrl::ComponentFormattingOptions f, QUrl::FormattingOptions i) +{ return i | QUrl::UrlFormattingOption(int(f)); } + +//inline QUrl::UrlFormattingOption &operator=(const QUrl::UrlFormattingOption &i, QUrl::ComponentFormattingOptions f) +//{ i = int(f); f; } +#endif // Q_QDOC + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QUrl &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QUrl &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QUrl &); +#endif + +QT_END_NAMESPACE + +#if QT_DEPRECATED_SINCE(5,0) +# include +#endif + +#endif // QURL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qurlquery.h b/qrenderdoc/3rdparty/qt/include/QtCore/qurlquery.h new file mode 100644 index 000000000..092d00254 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qurlquery.h @@ -0,0 +1,174 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QURLQUERY_H +#define QURLQUERY_H + +#include +#include +#include + +#if QT_DEPRECATED_SINCE(5,0) +#include +#endif + +QT_BEGIN_NAMESPACE + +Q_CORE_EXPORT uint qHash(const QUrlQuery &key, uint seed = 0) Q_DECL_NOTHROW; + +class QUrlQueryPrivate; +class Q_CORE_EXPORT QUrlQuery +{ +public: + QUrlQuery(); + explicit QUrlQuery(const QUrl &url); + explicit QUrlQuery(const QString &queryString); + QUrlQuery(const QUrlQuery &other); + QUrlQuery &operator=(const QUrlQuery &other); +#ifdef Q_COMPILER_RVALUE_REFS + QUrlQuery &operator=(QUrlQuery &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + ~QUrlQuery(); + + bool operator==(const QUrlQuery &other) const; + bool operator!=(const QUrlQuery &other) const + { return !(*this == other); } + + void swap(QUrlQuery &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool isEmpty() const; + bool isDetached() const; + void clear(); + + QString query(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const; + void setQuery(const QString &queryString); + QString toString(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const + { return query(encoding); } + + void setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter); + QChar queryValueDelimiter() const; + QChar queryPairDelimiter() const; + + void setQueryItems(const QList > &query); + QList > queryItems(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const; + + bool hasQueryItem(const QString &key) const; + void addQueryItem(const QString &key, const QString &value); + void removeQueryItem(const QString &key); + QString queryItemValue(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const; + QStringList allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const; + void removeAllQueryItems(const QString &key); + + static QChar defaultQueryValueDelimiter() + { return QChar(ushort('=')); } + static QChar defaultQueryPairDelimiter() + { return QChar(ushort('&')); } + +private: + friend class QUrl; + friend Q_CORE_EXPORT uint qHash(const QUrlQuery &key, uint seed) Q_DECL_NOTHROW; + QSharedDataPointer d; +public: + typedef QSharedDataPointer DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +Q_DECLARE_SHARED(QUrlQuery) + +#if QT_DEPRECATED_SINCE(5,0) +inline void QUrl::setQueryItems(const QList > &qry) +{ QUrlQuery q(*this); q.setQueryItems(qry); setQuery(q); } +inline void QUrl::addQueryItem(const QString &key, const QString &value) +{ QUrlQuery q(*this); q.addQueryItem(key, value); setQuery(q); } +inline QList > QUrl::queryItems() const +{ return QUrlQuery(*this).queryItems(); } +inline bool QUrl::hasQueryItem(const QString &key) const +{ return QUrlQuery(*this).hasQueryItem(key); } +inline QString QUrl::queryItemValue(const QString &key) const +{ return QUrlQuery(*this).queryItemValue(key); } +inline QStringList QUrl::allQueryItemValues(const QString &key) const +{ return QUrlQuery(*this).allQueryItemValues(key); } +inline void QUrl::removeQueryItem(const QString &key) +{ QUrlQuery q(*this); q.removeQueryItem(key); setQuery(q); } +inline void QUrl::removeAllQueryItems(const QString &key) +{ QUrlQuery q(*this); q.removeAllQueryItems(key); setQuery(q); } + +inline void QUrl::addEncodedQueryItem(const QByteArray &key, const QByteArray &value) +{ QUrlQuery q(*this); q.addQueryItem(fromEncodedComponent_helper(key), fromEncodedComponent_helper(value)); setQuery(q); } +inline bool QUrl::hasEncodedQueryItem(const QByteArray &key) const +{ return QUrlQuery(*this).hasQueryItem(fromEncodedComponent_helper(key)); } +inline QByteArray QUrl::encodedQueryItemValue(const QByteArray &key) const +{ return QUrlQuery(*this).queryItemValue(fromEncodedComponent_helper(key), QUrl::FullyEncoded).toLatin1(); } +inline void QUrl::removeEncodedQueryItem(const QByteArray &key) +{ QUrlQuery q(*this); q.removeQueryItem(fromEncodedComponent_helper(key)); setQuery(q); } +inline void QUrl::removeAllEncodedQueryItems(const QByteArray &key) +{ QUrlQuery q(*this); q.removeAllQueryItems(fromEncodedComponent_helper(key)); setQuery(q); } + +inline void QUrl::setEncodedQueryItems(const QList > &qry) +{ + QUrlQuery q; + QList >::ConstIterator it = qry.constBegin(); + for ( ; it != qry.constEnd(); ++it) + q.addQueryItem(fromEncodedComponent_helper(it->first), fromEncodedComponent_helper(it->second)); + setQuery(q); +} +inline QList > QUrl::encodedQueryItems() const +{ + QList > items = QUrlQuery(*this).queryItems(QUrl::FullyEncoded); + QList >::ConstIterator it = items.constBegin(); + QList > result; + result.reserve(items.size()); + for ( ; it != items.constEnd(); ++it) + result << qMakePair(it->first.toLatin1(), it->second.toLatin1()); + return result; +} +inline QList QUrl::allEncodedQueryItemValues(const QByteArray &key) const +{ + const QStringList items = QUrlQuery(*this).allQueryItemValues(fromEncodedComponent_helper(key), QUrl::FullyEncoded); + QList result; + result.reserve(items.size()); + for (const QString &item : items) + result << item.toLatin1(); + return result; +} +#endif + +QT_END_NAMESPACE + +#endif // QURLQUERY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/quuid.h b/qrenderdoc/3rdparty/qt/include/QtCore/quuid.h new file mode 100644 index 000000000..264f57299 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/quuid.h @@ -0,0 +1,241 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUUID_H +#define QUUID_H + +#include + +#if defined(Q_OS_WIN) +#ifndef GUID_DEFINED +#define GUID_DEFINED +typedef struct _GUID +{ + ulong Data1; + ushort Data2; + ushort Data3; + uchar Data4[8]; +} GUID, *REFGUID, *LPGUID; +#endif +#endif + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) +Q_FORWARD_DECLARE_CF_TYPE(CFUUID); +Q_FORWARD_DECLARE_OBJC_CLASS(NSUUID); +#endif + +QT_BEGIN_NAMESPACE + + +class Q_CORE_EXPORT QUuid +{ +public: + enum Variant { + VarUnknown =-1, + NCS = 0, // 0 - - + DCE = 2, // 1 0 - + Microsoft = 6, // 1 1 0 + Reserved = 7 // 1 1 1 + }; + + enum Version { + VerUnknown =-1, + Time = 1, // 0 0 0 1 + EmbeddedPOSIX = 2, // 0 0 1 0 + Md5 = 3, // 0 0 1 1 + Name = Md5, + Random = 4, // 0 1 0 0 + Sha1 = 5 // 0 1 0 1 + }; + +#if defined(Q_COMPILER_UNIFORM_INIT) && !defined(Q_QDOC) + Q_DECL_CONSTEXPR QUuid() Q_DECL_NOTHROW : data1(0), data2(0), data3(0), data4{0,0,0,0,0,0,0,0} {} + + Q_DECL_CONSTEXPR QUuid(uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, + uchar b4, uchar b5, uchar b6, uchar b7, uchar b8) Q_DECL_NOTHROW + : data1(l), data2(w1), data3(w2), data4{b1, b2, b3, b4, b5, b6, b7, b8} {} +#else + QUuid() Q_DECL_NOTHROW + { + data1 = 0; + data2 = 0; + data3 = 0; + for(int i = 0; i < 8; i++) + data4[i] = 0; + } + QUuid(uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8) Q_DECL_NOTHROW + { + data1 = l; + data2 = w1; + data3 = w2; + data4[0] = b1; + data4[1] = b2; + data4[2] = b3; + data4[3] = b4; + data4[4] = b5; + data4[5] = b6; + data4[6] = b7; + data4[7] = b8; + } +#endif + + QUuid(const QString &); + QUuid(const char *); + QString toString() const; + QUuid(const QByteArray &); + QByteArray toByteArray() const; + QByteArray toRfc4122() const; + static QUuid fromRfc4122(const QByteArray &); + bool isNull() const Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR bool operator==(const QUuid &orig) const Q_DECL_NOTHROW + { + if (data1 != orig.data1 || data2 != orig.data2 || + data3 != orig.data3) + return false; + + for (uint i = 0; i < 8; i++) + if (data4[i] != orig.data4[i]) + return false; + + return true; + } + + Q_DECL_RELAXED_CONSTEXPR bool operator!=(const QUuid &orig) const Q_DECL_NOTHROW + { + return !(*this == orig); + } + + bool operator<(const QUuid &other) const Q_DECL_NOTHROW; + bool operator>(const QUuid &other) const Q_DECL_NOTHROW; + +#if defined(Q_OS_WIN) + // On Windows we have a type GUID that is used by the platform API, so we + // provide convenience operators to cast from and to this type. +#if defined(Q_COMPILER_UNIFORM_INIT) && !defined(Q_QDOC) + Q_DECL_CONSTEXPR QUuid(const GUID &guid) Q_DECL_NOTHROW + : data1(guid.Data1), data2(guid.Data2), data3(guid.Data3), + data4{guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], + guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]} {} +#else + QUuid(const GUID &guid) Q_DECL_NOTHROW + { + data1 = guid.Data1; + data2 = guid.Data2; + data3 = guid.Data3; + for(int i = 0; i < 8; i++) + data4[i] = guid.Data4[i]; + } +#endif + + Q_DECL_RELAXED_CONSTEXPR QUuid &operator=(const GUID &guid) Q_DECL_NOTHROW + { + *this = QUuid(guid); + return *this; + } + + Q_DECL_RELAXED_CONSTEXPR operator GUID() const Q_DECL_NOTHROW + { + GUID guid = { data1, data2, data3, { data4[0], data4[1], data4[2], data4[3], data4[4], data4[5], data4[6], data4[7] } }; + return guid; + } + + Q_DECL_RELAXED_CONSTEXPR bool operator==(const GUID &guid) const Q_DECL_NOTHROW + { + return *this == QUuid(guid); + } + + Q_DECL_RELAXED_CONSTEXPR bool operator!=(const GUID &guid) const Q_DECL_NOTHROW + { + return !(*this == guid); + } +#endif + static QUuid createUuid(); +#ifndef QT_BOOTSTRAPPED + static QUuid createUuidV3(const QUuid &ns, const QByteArray &baseData); + static QUuid createUuidV5(const QUuid &ns, const QByteArray &baseData); + static inline QUuid createUuidV3(const QUuid &ns, const QString &baseData) + { + return QUuid::createUuidV3(ns, baseData.toUtf8()); + } + + static inline QUuid createUuidV5(const QUuid &ns, const QString &baseData) + { + return QUuid::createUuidV5(ns, baseData.toUtf8()); + } + +#endif + + QUuid::Variant variant() const Q_DECL_NOTHROW; + QUuid::Version version() const Q_DECL_NOTHROW; + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + static QUuid fromCFUUID(CFUUIDRef uuid); + CFUUIDRef toCFUUID() const Q_DECL_CF_RETURNS_RETAINED; + static QUuid fromNSUUID(const NSUUID *uuid); + NSUUID *toNSUUID() const Q_DECL_NS_RETURNS_AUTORELEASED; +#endif + + uint data1; + ushort data2; + ushort data3; + uchar data4[8]; +}; + +Q_DECLARE_TYPEINFO(QUuid, Q_PRIMITIVE_TYPE); + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QUuid &); +Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QUuid &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QUuid &); +#endif + +Q_CORE_EXPORT uint qHash(const QUuid &uuid, uint seed = 0) Q_DECL_NOTHROW; + +inline bool operator<=(const QUuid &lhs, const QUuid &rhs) Q_DECL_NOTHROW +{ return !(rhs < lhs); } +inline bool operator>=(const QUuid &lhs, const QUuid &rhs) Q_DECL_NOTHROW +{ return !(lhs < rhs); } + +QT_END_NAMESPACE + +#endif // QUUID_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qvariant.h b/qrenderdoc/3rdparty/qt/include/QtCore/qvariant.h new file mode 100644 index 000000000..a2c571199 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qvariant.h @@ -0,0 +1,864 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVARIANT_H +#define QVARIANT_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef QT_BOOTSTRAPPED +#include +#endif + +QT_BEGIN_NAMESPACE + + +class QBitArray; +class QDataStream; +class QDate; +class QDateTime; +class QEasingCurve; +class QLine; +class QLineF; +class QLocale; +class QMatrix; +class QTransform; +class QStringList; +class QTime; +class QPoint; +class QPointF; +class QSize; +class QSizeF; +class QRect; +class QRectF; +#ifndef QT_NO_REGEXP +class QRegExp; +#endif // QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION +class QRegularExpression; +#endif // QT_NO_REGULAREXPRESSION +class QTextFormat; +class QTextLength; +class QUrl; +class QVariant; +class QVariantComparisonHelper; + +template +inline QVariant qVariantFromValue(const T &); + +template +inline T qvariant_cast(const QVariant &); + +namespace QtPrivate { + + template + struct ObjectInvoker + { + static ReturnType invoke(Argument a) + { + return Derived::object(a); + } + }; + + template + struct MetaTypeInvoker + { + static ReturnType invoke(Argument a) + { + return Derived::metaType(a); + } + }; + + template ::Value> + struct TreatAsQObjectBeforeMetaType : ObjectInvoker + { + }; + + template + struct TreatAsQObjectBeforeMetaType : MetaTypeInvoker + { + }; + + template struct QVariantValueHelper; +} + +class Q_CORE_EXPORT QVariant +{ + public: + enum Type { + Invalid = QMetaType::UnknownType, + Bool = QMetaType::Bool, + Int = QMetaType::Int, + UInt = QMetaType::UInt, + LongLong = QMetaType::LongLong, + ULongLong = QMetaType::ULongLong, + Double = QMetaType::Double, + Char = QMetaType::QChar, + Map = QMetaType::QVariantMap, + List = QMetaType::QVariantList, + String = QMetaType::QString, + StringList = QMetaType::QStringList, + ByteArray = QMetaType::QByteArray, + BitArray = QMetaType::QBitArray, + Date = QMetaType::QDate, + Time = QMetaType::QTime, + DateTime = QMetaType::QDateTime, + Url = QMetaType::QUrl, + Locale = QMetaType::QLocale, + Rect = QMetaType::QRect, + RectF = QMetaType::QRectF, + Size = QMetaType::QSize, + SizeF = QMetaType::QSizeF, + Line = QMetaType::QLine, + LineF = QMetaType::QLineF, + Point = QMetaType::QPoint, + PointF = QMetaType::QPointF, + RegExp = QMetaType::QRegExp, + RegularExpression = QMetaType::QRegularExpression, + Hash = QMetaType::QVariantHash, + EasingCurve = QMetaType::QEasingCurve, + Uuid = QMetaType::QUuid, + ModelIndex = QMetaType::QModelIndex, + PersistentModelIndex = QMetaType::QPersistentModelIndex, + LastCoreType = QMetaType::LastCoreType, + + Font = QMetaType::QFont, + Pixmap = QMetaType::QPixmap, + Brush = QMetaType::QBrush, + Color = QMetaType::QColor, + Palette = QMetaType::QPalette, + Image = QMetaType::QImage, + Polygon = QMetaType::QPolygon, + Region = QMetaType::QRegion, + Bitmap = QMetaType::QBitmap, + Cursor = QMetaType::QCursor, + KeySequence = QMetaType::QKeySequence, + Pen = QMetaType::QPen, + TextLength = QMetaType::QTextLength, + TextFormat = QMetaType::QTextFormat, + Matrix = QMetaType::QMatrix, + Transform = QMetaType::QTransform, + Matrix4x4 = QMetaType::QMatrix4x4, + Vector2D = QMetaType::QVector2D, + Vector3D = QMetaType::QVector3D, + Vector4D = QMetaType::QVector4D, + Quaternion = QMetaType::QQuaternion, + PolygonF = QMetaType::QPolygonF, + Icon = QMetaType::QIcon, + LastGuiType = QMetaType::LastGuiType, + + SizePolicy = QMetaType::QSizePolicy, + + UserType = QMetaType::User, + LastType = 0xffffffff // need this so that gcc >= 3.4 allocates 32 bits for Type + }; + + QVariant() Q_DECL_NOTHROW : d() {} + ~QVariant(); + QVariant(Type type); + QVariant(int typeId, const void *copy); + QVariant(int typeId, const void *copy, uint flags); + QVariant(const QVariant &other); + +#ifndef QT_NO_DATASTREAM + QVariant(QDataStream &s); +#endif + + QVariant(int i); + QVariant(uint ui); + QVariant(qlonglong ll); + QVariant(qulonglong ull); + QVariant(bool b); + QVariant(double d); + QVariant(float f); +#ifndef QT_NO_CAST_FROM_ASCII + QT_ASCII_CAST_WARN QVariant(const char *str); +#endif + + QVariant(const QByteArray &bytearray); + QVariant(const QBitArray &bitarray); + QVariant(const QString &string); + QVariant(QLatin1String string); + QVariant(const QStringList &stringlist); + QVariant(QChar qchar); + QVariant(const QDate &date); + QVariant(const QTime &time); + QVariant(const QDateTime &datetime); + QVariant(const QList &list); + QVariant(const QMap &map); + QVariant(const QHash &hash); +#ifndef QT_NO_GEOM_VARIANT + QVariant(const QSize &size); + QVariant(const QSizeF &size); + QVariant(const QPoint &pt); + QVariant(const QPointF &pt); + QVariant(const QLine &line); + QVariant(const QLineF &line); + QVariant(const QRect &rect); + QVariant(const QRectF &rect); +#endif + QVariant(const QLocale &locale); +#ifndef QT_NO_REGEXP + QVariant(const QRegExp ®Exp); +#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); + QVariant(const QModelIndex &modelIndex); + QVariant(const QPersistentModelIndex &modelIndex); + QVariant(const QJsonValue &jsonValue); + QVariant(const QJsonObject &jsonObject); + QVariant(const QJsonArray &jsonArray); + QVariant(const QJsonDocument &jsonDocument); +#endif // QT_BOOTSTRAPPED + + QVariant& operator=(const QVariant &other); +#ifdef Q_COMPILER_RVALUE_REFS + inline QVariant(QVariant &&other) Q_DECL_NOTHROW : d(other.d) + { other.d = Private(); } + inline QVariant &operator=(QVariant &&other) Q_DECL_NOTHROW + { qSwap(d, other.d); return *this; } +#endif + + inline void swap(QVariant &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + Type type() const; + int userType() const; + const char *typeName() const; + + bool canConvert(int targetTypeId) const; + bool convert(int targetTypeId); + + inline bool isValid() const; + bool isNull() const; + + void clear(); + + void detach(); + inline bool isDetached() const; + + int toInt(bool *ok = Q_NULLPTR) const; + uint toUInt(bool *ok = Q_NULLPTR) const; + qlonglong toLongLong(bool *ok = Q_NULLPTR) const; + qulonglong toULongLong(bool *ok = Q_NULLPTR) const; + bool toBool() const; + double toDouble(bool *ok = Q_NULLPTR) const; + float toFloat(bool *ok = Q_NULLPTR) const; + qreal toReal(bool *ok = Q_NULLPTR) const; + QByteArray toByteArray() const; + QBitArray toBitArray() const; + QString toString() const; + QStringList toStringList() const; + QChar toChar() const; + QDate toDate() const; + QTime toTime() const; + QDateTime toDateTime() const; + QList toList() const; + QMap toMap() const; + QHash toHash() const; + +#ifndef QT_NO_GEOM_VARIANT + QPoint toPoint() const; + QPointF toPointF() const; + QRect toRect() const; + QSize toSize() const; + QSizeF toSizeF() const; + QLine toLine() const; + QLineF toLineF() const; + QRectF toRectF() const; +#endif + QLocale toLocale() const; +#ifndef QT_NO_REGEXP + QRegExp toRegExp() const; +#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; + QModelIndex toModelIndex() const; + QPersistentModelIndex toPersistentModelIndex() const; + QJsonValue toJsonValue() const; + QJsonObject toJsonObject() const; + QJsonArray toJsonArray() const; + QJsonDocument toJsonDocument() const; +#endif // QT_BOOTSTRAPPED + +#ifndef QT_NO_DATASTREAM + void load(QDataStream &ds); + void save(QDataStream &ds) const; +#endif + static const char *typeToName(int typeId); + static Type nameToType(const char *name); + + void *data(); + const void *constData() const; + inline const void *data() const { return constData(); } + + template + inline void setValue(const T &value); + + template + inline T value() const + { return qvariant_cast(*this); } + + template + static inline QVariant fromValue(const T &value) + { return qVariantFromValue(value); } + + template + bool canConvert() const + { return canConvert(qMetaTypeId()); } + + public: +#ifndef Q_QDOC + struct PrivateShared + { + inline PrivateShared(void *v) : ptr(v), ref(1) { } + void *ptr; + QAtomicInt ref; + }; + struct Private + { + inline Private() Q_DECL_NOTHROW : type(Invalid), is_shared(false), is_null(true) + { data.ptr = Q_NULLPTR; } + + // Internal constructor for initialized variants. + explicit inline Private(uint variantType) Q_DECL_NOTHROW + : type(variantType), is_shared(false), is_null(false) + {} + + inline Private(const Private &other) Q_DECL_NOTHROW + : data(other.data), type(other.type), + is_shared(other.is_shared), is_null(other.is_null) + {} + union Data + { + char c; + uchar uc; + short s; + signed char sc; + ushort us; + int i; + uint u; + long l; + ulong ul; + bool b; + double d; + float f; + qreal real; + qlonglong ll; + qulonglong ull; + QObject *o; + void *ptr; + PrivateShared *shared; + } data; + uint type : 30; + uint is_shared : 1; + uint is_null : 1; + }; + public: + typedef void (*f_construct)(Private *, const void *); + typedef void (*f_clear)(Private *); + typedef bool (*f_null)(const Private *); +#ifndef QT_NO_DATASTREAM + typedef void (*f_load)(Private *, QDataStream &); + typedef void (*f_save)(const Private *, QDataStream &); +#endif + typedef bool (*f_compare)(const Private *, const Private *); + typedef bool (*f_convert)(const QVariant::Private *d, int t, void *, bool *); + typedef bool (*f_canConvert)(const QVariant::Private *d, int t); + typedef void (*f_debugStream)(QDebug, const QVariant &); + struct Handler { + f_construct construct; + f_clear clear; + f_null isNull; +#ifndef QT_NO_DATASTREAM + f_load load; + f_save save; +#endif + f_compare compare; + f_convert convert; + f_canConvert canConvert; + f_debugStream debugStream; + }; +#endif + + inline bool operator==(const QVariant &v) const + { return cmp(v); } + inline bool operator!=(const QVariant &v) const + { return !cmp(v); } + inline bool operator<(const QVariant &v) const + { return compare(v) < 0; } + inline bool operator<=(const QVariant &v) const + { return compare(v) <= 0; } + inline bool operator>(const QVariant &v) const + { return compare(v) > 0; } + inline bool operator>=(const QVariant &v) const + { return compare(v) >= 0; } + +protected: + friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &); +#ifndef QT_NO_DEBUG_STREAM + friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QVariant &); +#endif +// ### Qt6: FIXME: Remove the special Q_CC_MSVC handling, it was introduced to maintain BC for QTBUG-41810 . +#if !defined(Q_NO_TEMPLATE_FRIENDS) && !defined(Q_CC_MSVC) + template + friend inline T qvariant_cast(const QVariant &); + template friend struct QtPrivate::QVariantValueHelper; +protected: +#else +public: +#endif + Private d; + void create(int type, const void *copy); + bool cmp(const QVariant &other) const; + int compare(const QVariant &other) const; + bool convert(const int t, void *ptr) const; // ### Qt6: drop const + +private: + // force compile error, prevent QVariant(bool) to be called + inline QVariant(void *) Q_DECL_EQ_DELETE; + // QVariant::Type is marked as \obsolete, but we don't want to + // provide a constructor from its intended replacement, + // QMetaType::Type, instead, because the idea behind these + // constructors is flawed in the first place. But we also don't + // want QVariant(QMetaType::String) to compile and falsely be an + // int variant, so delete this constructor: + QVariant(QMetaType::Type) Q_DECL_EQ_DELETE; + + // These constructors don't create QVariants of the type associcated + // with the enum, as expected, but they would create a QVariant of + // type int with the value of the enum value. + // Use QVariant v = QColor(Qt::red) instead of QVariant v = Qt::red for + // example. + QVariant(Qt::GlobalColor) Q_DECL_EQ_DELETE; + QVariant(Qt::BrushStyle) Q_DECL_EQ_DELETE; + QVariant(Qt::PenStyle) Q_DECL_EQ_DELETE; + QVariant(Qt::CursorShape) Q_DECL_EQ_DELETE; +#ifdef QT_NO_CAST_FROM_ASCII + // force compile error when implicit conversion is not wanted + inline QVariant(const char *) Q_DECL_EQ_DELETE; +#endif +public: + typedef Private DataPtr; + inline DataPtr &data_ptr() { return d; } + inline const DataPtr &data_ptr() const { return d; } +}; + +template +inline QVariant qVariantFromValue(const T &t) +{ + return QVariant(qMetaTypeId(), &t, QTypeInfo::isPointer); +} + +template <> +inline QVariant qVariantFromValue(const QVariant &t) { return t; } + +template +inline void qVariantSetValue(QVariant &v, const T &t) +{ + //if possible we reuse the current QVariant private + const uint type = qMetaTypeId(); + QVariant::Private &d = v.data_ptr(); + if (v.isDetached() && (type == d.type || (type <= uint(QVariant::Char) && d.type <= uint(QVariant::Char)))) { + d.type = type; + d.is_null = false; + T *old = reinterpret_cast(d.is_shared ? d.data.shared->ptr : &d.data.ptr); + if (QTypeInfo::isComplex) + old->~T(); + new (old) T(t); //call the copy constructor + } else { + v = QVariant(type, &t, QTypeInfo::isPointer); + } +} + +template <> +inline void qVariantSetValue(QVariant &v, const QVariant &t) +{ + v = t; +} + +inline bool QVariant::isValid() const { return d.type != Invalid; } + +template +inline void QVariant::setValue(const T &avalue) +{ qVariantSetValue(*this, avalue); } + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream& operator>> (QDataStream& s, QVariant& p); +Q_CORE_EXPORT QDataStream& operator<< (QDataStream& s, const QVariant& p); +Q_CORE_EXPORT QDataStream& operator>> (QDataStream& s, QVariant::Type& p); +Q_CORE_EXPORT QDataStream& operator<< (QDataStream& s, const QVariant::Type p); +#endif + +inline bool QVariant::isDetached() const +{ return !d.is_shared || d.data.shared->ref.load() == 1; } + + +#ifdef Q_QDOC + inline bool operator==(const QVariant &v1, const QVariant &v2); + inline bool operator!=(const QVariant &v1, const QVariant &v2); +#else + +/* Helper class to add one more level of indirection to prevent + implicit casts. +*/ +class QVariantComparisonHelper +{ +public: + inline QVariantComparisonHelper(const QVariant &var) + : v(&var) {} +private: + friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &); + const QVariant *v; +}; + +inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2) +{ + return v1.cmp(*v2.v); +} + +inline bool operator!=(const QVariant &v1, const QVariantComparisonHelper &v2) +{ + return !operator==(v1, v2); +} +#endif +Q_DECLARE_SHARED(QVariant) + +class Q_CORE_EXPORT QSequentialIterable +{ + QtMetaTypePrivate::QSequentialIterableImpl m_impl; +public: + struct Q_CORE_EXPORT const_iterator + { + private: + QtMetaTypePrivate::QSequentialIterableImpl m_impl; + QAtomicInt *ref; + friend class QSequentialIterable; + explicit const_iterator(const QSequentialIterable &iter, QAtomicInt *ref_); + + explicit const_iterator(const QtMetaTypePrivate::QSequentialIterableImpl &impl, QAtomicInt *ref_); + + void begin(); + void end(); + public: + ~const_iterator(); + + const_iterator(const const_iterator &other); + + const_iterator& operator=(const const_iterator &other); + + const QVariant operator*() const; + bool operator==(const const_iterator &o) const; + bool operator!=(const const_iterator &o) const; + const_iterator &operator++(); + const_iterator operator++(int); + const_iterator &operator--(); + const_iterator operator--(int); + const_iterator &operator+=(int j); + const_iterator &operator-=(int j); + const_iterator operator+(int j) const; + const_iterator operator-(int j) const; + }; + + friend struct const_iterator; + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + explicit QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl impl); +#else + explicit QSequentialIterable(const QtMetaTypePrivate::QSequentialIterableImpl &impl); +#endif + + const_iterator begin() const; + const_iterator end() const; + + QVariant at(int idx) const; + int size() const; + + bool canReverseIterate() const; +}; + +class Q_CORE_EXPORT QAssociativeIterable +{ + QtMetaTypePrivate::QAssociativeIterableImpl m_impl; +public: + struct Q_CORE_EXPORT const_iterator + { + private: + QtMetaTypePrivate::QAssociativeIterableImpl m_impl; + QAtomicInt *ref; + friend class QAssociativeIterable; + explicit const_iterator(const QAssociativeIterable &iter, QAtomicInt *ref_); + + explicit const_iterator(const QtMetaTypePrivate::QAssociativeIterableImpl &impl, QAtomicInt *ref_); + + void begin(); + void end(); + void find(const QVariant &key); + public: + ~const_iterator(); + const_iterator(const const_iterator &other); + + const_iterator& operator=(const const_iterator &other); + + const QVariant key() const; + + const QVariant value() const; + + const QVariant operator*() const; + bool operator==(const const_iterator &o) const; + bool operator!=(const const_iterator &o) const; + const_iterator &operator++(); + const_iterator operator++(int); + const_iterator &operator--(); + const_iterator operator--(int); + const_iterator &operator+=(int j); + const_iterator &operator-=(int j); + const_iterator operator+(int j) const; + const_iterator operator-(int j) const; + }; + + friend struct const_iterator; + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + explicit QAssociativeIterable(QtMetaTypePrivate::QAssociativeIterableImpl impl); +#else + explicit QAssociativeIterable(const QtMetaTypePrivate::QAssociativeIterableImpl &impl); +#endif + + const_iterator begin() const; + const_iterator end() const; + const_iterator find(const QVariant &key) const; + + QVariant value(const QVariant &key) const; + + int size() const; +}; + +#ifndef QT_MOC +namespace QtPrivate { + template + struct QVariantValueHelper : TreatAsQObjectBeforeMetaType, T, const QVariant &, T> + { + static T metaType(const QVariant &v) + { + const int vid = qMetaTypeId(); + if (vid == v.userType()) + return *reinterpret_cast(v.constData()); + T t; + if (v.convert(vid, &t)) + return t; + return T(); + } +#ifndef QT_NO_QOBJECT + static T object(const QVariant &v) + { + return qobject_cast(QMetaType::typeFlags(v.userType()) & QMetaType::PointerToQObject + ? v.d.data.o + : QVariantValueHelper::metaType(v)); + } +#endif + }; + + template + struct QVariantValueHelperInterface : QVariantValueHelper + { + }; + + template<> + struct QVariantValueHelperInterface + { + static QSequentialIterable invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId()) { + return QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl(reinterpret_cast(v.constData()))); + } + if (typeId == qMetaTypeId()) { + return QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl(reinterpret_cast(v.constData()))); + } +#ifndef QT_BOOTSTRAPPED + if (typeId == qMetaTypeId()) { + return QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl(reinterpret_cast(v.constData()))); + } +#endif + return QSequentialIterable(v.value()); + } + }; + template<> + struct QVariantValueHelperInterface + { + static QAssociativeIterable invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId()) { + return QAssociativeIterable(QtMetaTypePrivate::QAssociativeIterableImpl(reinterpret_cast(v.constData()))); + } + if (typeId == qMetaTypeId()) { + return QAssociativeIterable(QtMetaTypePrivate::QAssociativeIterableImpl(reinterpret_cast(v.constData()))); + } + return QAssociativeIterable(v.value()); + } + }; + template<> + struct QVariantValueHelperInterface + { + static QVariantList invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId() || typeId == qMetaTypeId() || QMetaType::hasRegisteredConverterFunction(typeId, qMetaTypeId())) { + QSequentialIterable iter = QVariantValueHelperInterface::invoke(v); + QVariantList l; + l.reserve(iter.size()); + for (QSequentialIterable::const_iterator it = iter.begin(), end = iter.end(); it != end; ++it) + l << *it; + return l; + } + return QVariantValueHelper::invoke(v); + } + }; + template<> + struct QVariantValueHelperInterface + { + static QVariantHash invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId() || QMetaType::hasRegisteredConverterFunction(typeId, qMetaTypeId())) { + QAssociativeIterable iter = QVariantValueHelperInterface::invoke(v); + QVariantHash l; + l.reserve(iter.size()); + for (QAssociativeIterable::const_iterator it = iter.begin(), end = iter.end(); it != end; ++it) + l.insertMulti(it.key().toString(), it.value()); + return l; + } + return QVariantValueHelper::invoke(v); + } + }; + template<> + struct QVariantValueHelperInterface + { + static QVariantMap invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId() || QMetaType::hasRegisteredConverterFunction(typeId, qMetaTypeId())) { + QAssociativeIterable iter = QVariantValueHelperInterface::invoke(v); + QVariantMap l; + for (QAssociativeIterable::const_iterator it = iter.begin(), end = iter.end(); it != end; ++it) + l.insertMulti(it.key().toString(), it.value()); + return l; + } + return QVariantValueHelper::invoke(v); + } + }; + template<> + struct QVariantValueHelperInterface > + { + static QPair invoke(const QVariant &v) + { + const int typeId = v.userType(); + if (typeId == qMetaTypeId >()) + return QVariantValueHelper >::invoke(v); + + if (QMetaType::hasRegisteredConverterFunction(typeId, qMetaTypeId())) { + QtMetaTypePrivate::QPairVariantInterfaceImpl pi = v.value(); + + const QtMetaTypePrivate::VariantData d1 = pi.first(); + QVariant v1(d1.metaTypeId, d1.data, d1.flags); + if (d1.metaTypeId == qMetaTypeId()) + v1 = *reinterpret_cast(d1.data); + + const QtMetaTypePrivate::VariantData d2 = pi.second(); + QVariant v2(d2.metaTypeId, d2.data, d2.flags); + if (d2.metaTypeId == qMetaTypeId()) + v2 = *reinterpret_cast(d2.data); + + return QPair(v1, v2); + } + return QVariantValueHelper >::invoke(v); + } + }; +} + +template inline T qvariant_cast(const QVariant &v) +{ + return QtPrivate::QVariantValueHelperInterface::invoke(v); +} + +template<> inline QVariant qvariant_cast(const QVariant &v) +{ + if (v.userType() == QMetaType::QVariant) + return *reinterpret_cast(v.constData()); + return v; +} + +#if QT_DEPRECATED_SINCE(5, 0) +template +inline QT_DEPRECATED T qVariantValue(const QVariant &variant) +{ return qvariant_cast(variant); } + +template +inline QT_DEPRECATED bool qVariantCanConvert(const QVariant &variant) +{ return variant.template canConvert(); } +#endif + +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QVariant &); +Q_CORE_EXPORT QDebug operator<<(QDebug, const QVariant::Type); +#endif + +QT_END_NAMESPACE + +#endif // QVARIANT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qvariantanimation.h b/qrenderdoc/3rdparty/qt/include/QtCore/qvariantanimation.h new file mode 100644 index 000000000..f21832b25 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qvariantanimation.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVARIANTANIMATION_H +#define QVARIANTANIMATION_H + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ANIMATION + +class QVariantAnimationPrivate; +class Q_CORE_EXPORT QVariantAnimation : public QAbstractAnimation +{ + Q_OBJECT + Q_PROPERTY(QVariant startValue READ startValue WRITE setStartValue) + Q_PROPERTY(QVariant endValue READ endValue WRITE setEndValue) + Q_PROPERTY(QVariant currentValue READ currentValue NOTIFY valueChanged) + Q_PROPERTY(int duration READ duration WRITE setDuration) + Q_PROPERTY(QEasingCurve easingCurve READ easingCurve WRITE setEasingCurve) + +public: + typedef QPair KeyValue; + typedef QVector KeyValues; + + QVariantAnimation(QObject *parent = Q_NULLPTR); + ~QVariantAnimation(); + + QVariant startValue() const; + void setStartValue(const QVariant &value); + + QVariant endValue() const; + void setEndValue(const QVariant &value); + + QVariant keyValueAt(qreal step) const; + void setKeyValueAt(qreal step, const QVariant &value); + + KeyValues keyValues() const; + void setKeyValues(const KeyValues &values); + + QVariant currentValue() const; + + int duration() const Q_DECL_OVERRIDE; + void setDuration(int msecs); + + QEasingCurve easingCurve() const; + void setEasingCurve(const QEasingCurve &easing); + + typedef QVariant (*Interpolator)(const void *from, const void *to, qreal progress); + +Q_SIGNALS: + void valueChanged(const QVariant &value); + +protected: + QVariantAnimation(QVariantAnimationPrivate &dd, QObject *parent = Q_NULLPTR); + bool event(QEvent *event) Q_DECL_OVERRIDE; + + void updateCurrentTime(int) Q_DECL_OVERRIDE; + void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) Q_DECL_OVERRIDE; + + virtual void updateCurrentValue(const QVariant &value); + virtual QVariant interpolated(const QVariant &from, const QVariant &to, qreal progress) const; + +private: + template friend void qRegisterAnimationInterpolator(QVariant (*func)(const T &, const T &, qreal)); + static void registerInterpolator(Interpolator func, int interpolationType); + + Q_DISABLE_COPY(QVariantAnimation) + Q_DECLARE_PRIVATE(QVariantAnimation) +}; + +template +void qRegisterAnimationInterpolator(QVariant (*func)(const T &from, const T &to, qreal progress)) { + QVariantAnimation::registerInterpolator(reinterpret_cast(func), qMetaTypeId()); +} + +#endif //QT_NO_ANIMATION + +QT_END_NAMESPACE + +#endif //QVARIANTANIMATION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qvarlengtharray.h b/qrenderdoc/3rdparty/qt/include/QtCore/qvarlengtharray.h new file mode 100644 index 000000000..d99eebd4b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qvarlengtharray.h @@ -0,0 +1,563 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVARLENGTHARRAY_H +#define QVARLENGTHARRAY_H + +#include +#include +#include + +#include +#include +#include +#include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif +#include + +QT_BEGIN_NAMESPACE + + +template +class QPodList; + +// Prealloc = 256 by default, specified in qcontainerfwd.h +template +class QVarLengthArray +{ +public: + inline explicit QVarLengthArray(int size = 0); + + inline QVarLengthArray(const QVarLengthArray &other) + : a(Prealloc), s(0), ptr(reinterpret_cast(array)) + { + append(other.constData(), other.size()); + } + +#ifdef Q_COMPILER_INITIALIZER_LISTS + QVarLengthArray(std::initializer_list args) + : a(Prealloc), s(0), ptr(reinterpret_cast(array)) + { + if (args.size()) + append(args.begin(), int(args.size())); + } +#endif + + inline ~QVarLengthArray() { + if (QTypeInfo::isComplex) { + T *i = ptr + s; + while (i-- != ptr) + i->~T(); + } + if (ptr != reinterpret_cast(array)) + free(ptr); + } + inline QVarLengthArray &operator=(const QVarLengthArray &other) + { + if (this != &other) { + clear(); + append(other.constData(), other.size()); + } + return *this; + } + +#ifdef Q_COMPILER_INITIALIZER_LISTS + QVarLengthArray &operator=(std::initializer_list list) + { + resize(list.size()); + std::copy(list.begin(), list.end(), + QT_MAKE_CHECKED_ARRAY_ITERATOR(this->begin(), this->size())); + return *this; + } +#endif + + inline void removeLast() { + Q_ASSERT(s > 0); + realloc(s - 1, a); + } + inline int size() const { return s; } + inline int count() const { return s; } + inline int length() const { return s; } + inline T& first() { Q_ASSERT(!isEmpty()); return *begin(); } + inline const T& first() const { Q_ASSERT(!isEmpty()); return *begin(); } + T& last() { Q_ASSERT(!isEmpty()); return *(end() - 1); } + const T& last() const { Q_ASSERT(!isEmpty()); return *(end() - 1); } + 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); + + inline int indexOf(const T &t, int from = 0) const; + inline int lastIndexOf(const T &t, int from = -1) const; + inline bool contains(const T &t) const; + + inline T &operator[](int idx) { + Q_ASSERT(idx >= 0 && idx < s); + return ptr[idx]; + } + inline const T &operator[](int idx) const { + Q_ASSERT(idx >= 0 && idx < s); + return ptr[idx]; + } + inline const T &at(int idx) const { return operator[](idx); } + + T value(int i) const; + T value(int i, const T &defaultValue) const; + + inline void append(const T &t) { + if (s == a) { // i.e. s != 0 + T copy(t); + realloc(s, s<<1); + const int idx = s++; + if (QTypeInfo::isComplex) { + new (ptr + idx) T(std::move(copy)); + } else { + ptr[idx] = std::move(copy); + } + } else { + const int idx = s++; + if (QTypeInfo::isComplex) { + new (ptr + idx) T(t); + } else { + ptr[idx] = t; + } + } + } + + void append(T &&t) { + if (s == a) + realloc(s, s << 1); + const int idx = s++; + if (QTypeInfo::isComplex) + new (ptr + idx) T(std::move(t)); + else + ptr[idx] = std::move(t); + } + + void append(const T *buf, int size); + inline QVarLengthArray &operator<<(const T &t) + { append(t); return *this; } + inline QVarLengthArray &operator+=(const T &t) + { append(t); return *this; } + + void prepend(const T &t); + void insert(int i, const T &t); + void insert(int i, int n, const T &t); + void replace(int i, const T &t); + void remove(int i); + void remove(int i, int n); + + + inline T *data() { return ptr; } + inline const T *data() const { return ptr; } + inline const T * constData() const { return ptr; } + typedef int size_type; + typedef T value_type; + typedef value_type *pointer; + typedef const value_type *const_pointer; + typedef value_type &reference; + typedef const value_type &const_reference; + typedef qptrdiff difference_type; + + + typedef T* iterator; + typedef const T* const_iterator; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + inline iterator begin() { return ptr; } + inline const_iterator begin() const { return ptr; } + inline const_iterator cbegin() const { return ptr; } + inline const_iterator constBegin() const { return ptr; } + inline iterator end() { return ptr + s; } + inline const_iterator end() const { return ptr + s; } + inline const_iterator cend() const { return ptr + s; } + inline const_iterator constEnd() const { return ptr + s; } + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const { return const_reverse_iterator(begin()); } + iterator insert(const_iterator before, int n, const T &x); + inline iterator insert(const_iterator before, const T &x) { return insert(before, 1, x); } + iterator erase(const_iterator begin, const_iterator end); + inline iterator erase(const_iterator pos) { return erase(pos, pos+1); } + + // STL compatibility: + inline bool empty() const { return isEmpty(); } + inline void push_back(const T &t) { append(t); } + void push_back(T &&t) { append(std::move(t)); } + inline void pop_back() { removeLast(); } + inline T &front() { return first(); } + inline const T &front() const { return first(); } + inline T &back() { return last(); } + inline const T &back() const { return last(); } + +private: + friend class QPodList; + void realloc(int size, int alloc); + + int a; // capacity + int s; // size + T *ptr; // data + union { + char array[Prealloc * sizeof(T)]; + qint64 q_for_alignment_1; + double q_for_alignment_2; + }; + + bool isValidIterator(const const_iterator &i) const + { + return (i <= constEnd()) && (constBegin() <= i); + } +}; + +template +Q_INLINE_TEMPLATE QVarLengthArray::QVarLengthArray(int asize) + : s(asize) { + Q_STATIC_ASSERT_X(Prealloc > 0, "QVarLengthArray Prealloc must be greater than 0."); + Q_ASSERT_X(s >= 0, "QVarLengthArray::QVarLengthArray()", "Size must be greater than or equal to 0."); + if (s > Prealloc) { + ptr = reinterpret_cast(malloc(s * sizeof(T))); + Q_CHECK_PTR(ptr); + a = s; + } else { + ptr = reinterpret_cast(array); + a = Prealloc; + } + if (QTypeInfo::isComplex) { + T *i = ptr + s; + while (i != ptr) + new (--i) T; + } +} + +template +Q_INLINE_TEMPLATE void QVarLengthArray::resize(int asize) +{ realloc(asize, qMax(asize, a)); } + +template +Q_INLINE_TEMPLATE void QVarLengthArray::reserve(int asize) +{ if (asize > a) realloc(s, asize); } + +template +Q_INLINE_TEMPLATE int QVarLengthArray::indexOf(const T &t, int from) const +{ + if (from < 0) + from = qMax(from + s, 0); + if (from < s) { + T *n = ptr + from - 1; + T *e = ptr + s; + while (++n != e) + if (*n == t) + return n - ptr; + } + return -1; +} + +template +Q_INLINE_TEMPLATE int QVarLengthArray::lastIndexOf(const T &t, int from) const +{ + if (from < 0) + from += s; + else if (from >= s) + from = s - 1; + if (from >= 0) { + T *b = ptr; + T *n = ptr + from + 1; + while (n != b) { + if (*--n == t) + return n - b; + } + } + return -1; +} + +template +Q_INLINE_TEMPLATE bool QVarLengthArray::contains(const T &t) const +{ + T *b = ptr; + T *i = ptr + s; + while (i != b) { + if (*--i == t) + return true; + } + return false; +} + +template +Q_OUTOFLINE_TEMPLATE void QVarLengthArray::append(const T *abuf, int increment) +{ + Q_ASSERT(abuf); + if (increment <= 0) + return; + + const int asize = s + increment; + + if (asize >= a) + realloc(s, qMax(s*2, asize)); + + if (QTypeInfo::isComplex) { + // call constructor for new objects (which can throw) + while (s < asize) + new (ptr+(s++)) T(*abuf++); + } else { + memcpy(&ptr[s], abuf, increment * sizeof(T)); + s = asize; + } +} + +template +Q_INLINE_TEMPLATE void QVarLengthArray::squeeze() +{ realloc(s, s); } + +template +Q_OUTOFLINE_TEMPLATE void QVarLengthArray::realloc(int asize, int aalloc) +{ + Q_ASSERT(aalloc >= asize); + T *oldPtr = ptr; + int osize = s; + + const int copySize = qMin(asize, osize); + Q_ASSUME(copySize >= 0); + if (aalloc != a) { + if (aalloc > Prealloc) { + T* newPtr = reinterpret_cast(malloc(aalloc * sizeof(T))); + Q_CHECK_PTR(newPtr); // could throw + // by design: in case of QT_NO_EXCEPTIONS malloc must not fail or it crashes here + ptr = newPtr; + a = aalloc; + } else { + ptr = reinterpret_cast(array); + a = Prealloc; + } + s = 0; + if (!QTypeInfoQuery::isRelocatable) { + QT_TRY { + // copy all the old elements + while (s < copySize) { + new (ptr+s) T(*(oldPtr+s)); + (oldPtr+s)->~T(); + s++; + } + } QT_CATCH(...) { + // clean up all the old objects and then free the old ptr + int sClean = s; + while (sClean < osize) + (oldPtr+(sClean++))->~T(); + if (oldPtr != reinterpret_cast(array) && oldPtr != ptr) + free(oldPtr); + QT_RETHROW; + } + } else { + memcpy(ptr, oldPtr, copySize * sizeof(T)); + } + } + s = copySize; + + if (QTypeInfo::isComplex) { + // destroy remaining old objects + while (osize > asize) + (oldPtr+(--osize))->~T(); + } + + if (oldPtr != reinterpret_cast(array) && oldPtr != ptr) + free(oldPtr); + + if (QTypeInfo::isComplex) { + // call default constructor for new objects (which can throw) + while (s < asize) + new (ptr+(s++)) T; + } else { + s = asize; + } +} + +template +Q_OUTOFLINE_TEMPLATE T QVarLengthArray::value(int i) const +{ + if (uint(i) >= uint(size())) { + return T(); + } + return at(i); +} +template +Q_OUTOFLINE_TEMPLATE T QVarLengthArray::value(int i, const T &defaultValue) const +{ + return (uint(i) >= uint(size())) ? defaultValue : at(i); +} + +template +inline void QVarLengthArray::insert(int i, const T &t) +{ Q_ASSERT_X(i >= 0 && i <= s, "QVarLengthArray::insert", "index out of range"); + insert(begin() + i, 1, t); } +template +inline void QVarLengthArray::insert(int i, int n, const T &t) +{ Q_ASSERT_X(i >= 0 && i <= s, "QVarLengthArray::insert", "index out of range"); + insert(begin() + i, n, t); } +template +inline void QVarLengthArray::remove(int i, int n) +{ Q_ASSERT_X(i >= 0 && n >= 0 && i + n <= s, "QVarLengthArray::remove", "index out of range"); + erase(begin() + i, begin() + i + n); } +template +inline void QVarLengthArray::remove(int i) +{ Q_ASSERT_X(i >= 0 && i < s, "QVarLengthArray::remove", "index out of range"); + erase(begin() + i, begin() + i + 1); } +template +inline void QVarLengthArray::prepend(const T &t) +{ insert(begin(), 1, t); } + +template +inline void QVarLengthArray::replace(int i, const T &t) +{ + Q_ASSERT_X(i >= 0 && i < s, "QVarLengthArray::replace", "index out of range"); + const T copy(t); + data()[i] = copy; +} + + +template +Q_OUTOFLINE_TEMPLATE typename QVarLengthArray::iterator QVarLengthArray::insert(const_iterator before, size_type n, const T &t) +{ + Q_ASSERT_X(isValidIterator(before), "QVarLengthArray::insert", "The specified const_iterator argument 'before' is invalid"); + + int offset = int(before - ptr); + if (n != 0) { + resize(s + n); + const T copy(t); + if (!QTypeInfoQuery::isRelocatable) { + T *b = ptr + offset; + T *j = ptr + s; + T *i = j - n; + while (i != b) + *--j = *--i; + i = b + n; + while (i != b) + *--i = copy; + } else { + T *b = ptr + offset; + T *i = b + n; + memmove(i, b, (s - offset - n) * sizeof(T)); + while (i != b) + new (--i) T(copy); + } + } + return ptr + offset; +} + +template +Q_OUTOFLINE_TEMPLATE typename QVarLengthArray::iterator QVarLengthArray::erase(const_iterator abegin, const_iterator aend) +{ + Q_ASSERT_X(isValidIterator(abegin), "QVarLengthArray::insert", "The specified const_iterator argument 'abegin' is invalid"); + Q_ASSERT_X(isValidIterator(aend), "QVarLengthArray::insert", "The specified const_iterator argument 'aend' is invalid"); + + int f = int(abegin - ptr); + int l = int(aend - ptr); + int n = l - f; + if (QTypeInfo::isComplex) { + std::copy(ptr + l, ptr + s, QT_MAKE_CHECKED_ARRAY_ITERATOR(ptr + f, s - f)); + T *i = ptr + s; + T *b = ptr + s - n; + while (i != b) { + --i; + i->~T(); + } + } else { + memmove(ptr + f, ptr + l, (s - l) * sizeof(T)); + } + s -= n; + return ptr + f; +} + +template +bool operator==(const QVarLengthArray &l, const QVarLengthArray &r) +{ + if (l.size() != r.size()) + return false; + const T *rb = r.begin(); + const T *b = l.begin(); + const T *e = l.end(); + return std::equal(b, e, QT_MAKE_CHECKED_ARRAY_ITERATOR(rb, r.size())); +} + +template +bool operator!=(const QVarLengthArray &l, const QVarLengthArray &r) +{ + return !(l == r); +} + +template +bool operator<(const QVarLengthArray &lhs, const QVarLengthArray &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(std::lexicographical_compare(lhs.begin(), lhs.end(), + rhs.begin(), rhs.end()))) +{ + return std::lexicographical_compare(lhs.begin(), lhs.end(), + rhs.begin(), rhs.end()); +} + +template +inline bool operator>(const QVarLengthArray &lhs, const QVarLengthArray &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(lhs < rhs)) +{ + return rhs < lhs; +} + +template +inline bool operator<=(const QVarLengthArray &lhs, const QVarLengthArray &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(lhs < rhs)) +{ + return !(lhs > rhs); +} + +template +inline bool operator>=(const QVarLengthArray &lhs, const QVarLengthArray &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(lhs < rhs)) +{ + return !(lhs < rhs); +} + +QT_END_NAMESPACE + +#endif // QVARLENGTHARRAY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qvector.h b/qrenderdoc/3rdparty/qt/include/QtCore/qvector.h new file mode 100644 index 000000000..74c37faad --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qvector.h @@ -0,0 +1,1009 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVECTOR_H +#define QVECTOR_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + +#include + +QT_BEGIN_NAMESPACE + +class QRegion; + +template +class QVector +{ + typedef QTypedArrayData Data; + Data *d; + +public: + inline QVector() Q_DECL_NOTHROW : d(Data::sharedNull()) { } + explicit QVector(int size); + QVector(int size, const T &t); + inline QVector(const QVector &v); + inline ~QVector() { if (!d->ref.deref()) freeData(d); } + QVector &operator=(const QVector &v); +#ifdef Q_COMPILER_RVALUE_REFS + QVector(QVector &&other) Q_DECL_NOTHROW : d(other.d) { other.d = Data::sharedNull(); } + QVector &operator=(QVector &&other) Q_DECL_NOTHROW + { QVector moved(std::move(other)); swap(moved); return *this; } +#endif + void swap(QVector &other) Q_DECL_NOTHROW { qSwap(d, other.d); } +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QVector(std::initializer_list args); +#endif + bool operator==(const QVector &v) const; + inline bool operator!=(const QVector &v) const { return !(*this == v); } + + inline int size() const { return d->size; } + + inline bool isEmpty() const { return d->size == 0; } + + void resize(int size); + + inline int capacity() const { return int(d->alloc); } + void reserve(int size); + inline void squeeze() + { + reallocData(d->size, d->size); + if (d->capacityReserved) { + // capacity reserved in a read only memory would be useless + // this checks avoid writing to such memory. + d->capacityReserved = 0; + } + } + + inline void detach(); + inline bool isDetached() const { return !d->ref.isShared(); } +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + inline void setSharable(bool sharable) + { + if (sharable == d->ref.isSharable()) + return; + if (!sharable) + detach(); + + if (d == Data::unsharableEmpty()) { + if (sharable) + d = Data::sharedNull(); + } else { + d->ref.setSharable(sharable); + } + Q_ASSERT(d->ref.isSharable() == sharable); + } +#endif + + inline bool isSharedWith(const QVector &other) const { return d == other.d; } + + inline T *data() { detach(); return d->begin(); } + inline const T *data() const { return d->begin(); } + inline const T *constData() const { return d->begin(); } + void clear(); + + const T &at(int i) const; + T &operator[](int i); + const T &operator[](int i) const; + void append(const T &t); +#ifdef Q_COMPILER_RVALUE_REFS + void append(T &&t); +#endif + inline void append(const QVector &l) { *this += l; } + void prepend(const T &t); + void insert(int i, const T &t); + void insert(int i, int n, const T &t); + 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 &fill(const T &t, int size = -1); + + int indexOf(const T &t, int from = 0) const; + int lastIndexOf(const T &t, int from = -1) const; + bool contains(const T &t) const; + int count(const T &t) const; + + // QList compatibility + void removeAt(int i) { remove(i); } + int removeAll(const T &t) + { + const const_iterator ce = this->cend(), cit = std::find(this->cbegin(), ce, t); + if (cit == ce) + return 0; + // next operation detaches, so ce, cit, t may become invalidated: + const T tCopy = t; + const int firstFoundIdx = std::distance(this->cbegin(), cit); + const iterator e = end(), it = std::remove(begin() + firstFoundIdx, e, tCopy); + const int result = std::distance(it, e); + erase(it, e); + return result; + } + bool removeOne(const T &t) + { + const int i = indexOf(t); + if (i < 0) + return false; + remove(i); + return true; + } + int length() const { return size(); } + T takeAt(int i) { T t = at(i); remove(i); return t; } + void move(int from, int to) + { + Q_ASSERT_X(from >= 0 && from < size(), "QVector::move(int,int)", "'from' is out-of-range"); + Q_ASSERT_X(to >= 0 && to < size(), "QVector::move(int,int)", "'to' is out-of-range"); + if (from == to) // don't detach when no-op + return; + detach(); + T * const b = d->begin(); + if (from < to) + std::rotate(b + from, b + from + 1, b + to + 1); + else + std::rotate(b + to, b + from, b + from + 1); + } + + // STL-style + typedef typename Data::iterator iterator; + typedef typename Data::const_iterator const_iterator; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#if !defined(QT_STRICT_ITERATORS) || defined(Q_QDOC) + inline iterator begin() { detach(); return d->begin(); } + inline const_iterator begin() const Q_DECL_NOTHROW { return d->constBegin(); } + inline const_iterator cbegin() const Q_DECL_NOTHROW { return d->constBegin(); } + inline const_iterator constBegin() const Q_DECL_NOTHROW { return d->constBegin(); } + inline iterator end() { detach(); return d->end(); } + inline const_iterator end() const Q_DECL_NOTHROW { return d->constEnd(); } + inline const_iterator cend() const Q_DECL_NOTHROW { return d->constEnd(); } + inline const_iterator constEnd() const Q_DECL_NOTHROW { return d->constEnd(); } +#else + inline iterator begin(iterator = iterator()) { detach(); return d->begin(); } + inline const_iterator begin(const_iterator = const_iterator()) const Q_DECL_NOTHROW { return d->constBegin(); } + inline const_iterator cbegin(const_iterator = const_iterator()) const Q_DECL_NOTHROW { return d->constBegin(); } + inline const_iterator constBegin(const_iterator = const_iterator()) const Q_DECL_NOTHROW { return d->constBegin(); } + inline iterator end(iterator = iterator()) { detach(); return d->end(); } + inline const_iterator end(const_iterator = const_iterator()) const Q_DECL_NOTHROW { return d->constEnd(); } + inline const_iterator cend(const_iterator = const_iterator()) const Q_DECL_NOTHROW { return d->constEnd(); } + inline const_iterator constEnd(const_iterator = const_iterator()) const Q_DECL_NOTHROW { return d->constEnd(); } +#endif + reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rbegin() const Q_DECL_NOTHROW { return const_reverse_iterator(end()); } + const_reverse_iterator rend() const Q_DECL_NOTHROW { return const_reverse_iterator(begin()); } + const_reverse_iterator crbegin() const Q_DECL_NOTHROW { return const_reverse_iterator(end()); } + const_reverse_iterator crend() const Q_DECL_NOTHROW { return const_reverse_iterator(begin()); } + iterator insert(iterator before, int n, const T &x); + inline iterator insert(iterator before, const T &x) { return insert(before, 1, x); } + iterator erase(iterator begin, iterator end); + inline iterator erase(iterator pos) { return erase(pos, pos+1); } + + // more Qt + inline int count() const { return d->size; } + inline T& first() { Q_ASSERT(!isEmpty()); return *begin(); } + inline const T &first() const { Q_ASSERT(!isEmpty()); return *begin(); } + inline const T &constFirst() const { Q_ASSERT(!isEmpty()); return *begin(); } + inline T& last() { Q_ASSERT(!isEmpty()); return *(end()-1); } + inline const T &last() const { Q_ASSERT(!isEmpty()); return *(end()-1); } + inline const T &constLast() const { Q_ASSERT(!isEmpty()); return *(end()-1); } + inline bool startsWith(const T &t) const { return !isEmpty() && first() == t; } + inline bool endsWith(const T &t) const { return !isEmpty() && last() == t; } + QVector mid(int pos, int len = -1) const; + + T value(int i) const; + T value(int i, const T &defaultValue) const; + + // STL compatibility + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef qptrdiff difference_type; + typedef iterator Iterator; + typedef const_iterator ConstIterator; + typedef int size_type; + inline void push_back(const T &t) { append(t); } +#ifdef Q_COMPILER_RVALUE_REFS + void push_back(T &&t) { append(std::move(t)); } +#endif + inline void push_front(const T &t) { prepend(t); } + void pop_back() { removeLast(); } + void pop_front() { removeFirst(); } + inline bool empty() const + { return d->size == 0; } + inline T& front() { return first(); } + inline const_reference front() const { return first(); } + inline reference back() { return last(); } + inline const_reference back() const { return last(); } + + // comfort + QVector &operator+=(const QVector &l); + inline QVector operator+(const QVector &l) const + { QVector n = *this; n += l; return n; } + inline QVector &operator+=(const T &t) + { append(t); return *this; } + inline QVector &operator<< (const T &t) + { append(t); return *this; } + inline QVector &operator<<(const QVector &l) + { *this += l; return *this; } + + QList toList() const; + + static QVector fromList(const QList &list); + + static inline QVector fromStdVector(const std::vector &vector) + { QVector tmp; tmp.reserve(int(vector.size())); std::copy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; } + inline std::vector toStdVector() const + { return std::vector(d->begin(), d->end()); } +private: + friend class QRegion; // Optimization for QRegion::rects() + + // ### Qt6: remove const from int parameters + void reallocData(const int size, const int alloc, QArrayData::AllocationOptions options = QArrayData::Default); + void reallocData(const int sz) { reallocData(sz, d->alloc); } + void freeData(Data *d); + void defaultConstruct(T *from, T *to); + void copyConstruct(const T *srcFrom, const T *srcTo, T *dstFrom); + void destruct(T *from, T *to); + bool isValidIterator(const iterator &i) const + { + return (i <= d->end()) && (d->begin() <= i); + } + class AlignmentDummy { Data header; T array[1]; }; +}; + +#ifdef Q_CC_MSVC +// behavior change: an object of POD type constructed with an initializer of the form () +// will be default-initialized +# pragma warning ( push ) +# pragma warning ( disable : 4345 ) +# pragma warning(disable : 4127) // conditional expression is constant +#endif + +template +void QVector::defaultConstruct(T *from, T *to) +{ + if (QTypeInfo::isComplex) { + while (from != to) { + new (from++) T(); + } + } else { + ::memset(static_cast(from), 0, (to - from) * sizeof(T)); + } +} + +template +void QVector::copyConstruct(const T *srcFrom, const T *srcTo, T *dstFrom) +{ + if (QTypeInfo::isComplex) { + while (srcFrom != srcTo) + new (dstFrom++) T(*srcFrom++); + } else { + ::memcpy(static_cast(dstFrom), static_cast(srcFrom), (srcTo - srcFrom) * sizeof(T)); + } +} + +template +void QVector::destruct(T *from, T *to) +{ + if (QTypeInfo::isComplex) { + while (from != to) { + from++->~T(); + } + } +} + +template +inline QVector::QVector(const QVector &v) +{ + if (v.d->ref.ref()) { + d = v.d; + } else { + if (v.d->capacityReserved) { + d = Data::allocate(v.d->alloc); + Q_CHECK_PTR(d); + d->capacityReserved = true; + } else { + d = Data::allocate(v.d->size); + Q_CHECK_PTR(d); + } + if (d->alloc) { + copyConstruct(v.d->begin(), v.d->end(), d->begin()); + d->size = v.d->size; + } + } +} + +#if defined(Q_CC_MSVC) +#pragma warning( pop ) +#endif + +template +void QVector::detach() +{ + if (!isDetached()) { +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + if (!d->alloc) + d = Data::unsharableEmpty(); + else +#endif + reallocData(d->size, int(d->alloc)); + } + Q_ASSERT(isDetached()); +} + +template +void QVector::reserve(int asize) +{ + if (asize > int(d->alloc)) + reallocData(d->size, asize); + if (isDetached() +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + && d != Data::unsharableEmpty() +#endif + ) + d->capacityReserved = 1; + Q_ASSERT(capacity() >= asize); +} + +template +void QVector::resize(int asize) +{ + int newAlloc; + const int oldAlloc = int(d->alloc); + QArrayData::AllocationOptions opt; + + if (asize > oldAlloc) { // there is not enough space + newAlloc = asize; + opt = QArrayData::Grow; + } else { + newAlloc = oldAlloc; + } + reallocData(asize, newAlloc, opt); +} +template +inline void QVector::clear() +{ resize(0); } +template +inline const T &QVector::at(int i) const +{ Q_ASSERT_X(i >= 0 && i < d->size, "QVector::at", "index out of range"); + return d->begin()[i]; } +template +inline const T &QVector::operator[](int i) const +{ Q_ASSERT_X(i >= 0 && i < d->size, "QVector::operator[]", "index out of range"); + return d->begin()[i]; } +template +inline T &QVector::operator[](int i) +{ Q_ASSERT_X(i >= 0 && i < d->size, "QVector::operator[]", "index out of range"); + return data()[i]; } +template +inline void QVector::insert(int i, const T &t) +{ Q_ASSERT_X(i >= 0 && i <= d->size, "QVector::insert", "index out of range"); + insert(begin() + i, 1, t); } +template +inline void QVector::insert(int i, int n, const T &t) +{ Q_ASSERT_X(i >= 0 && i <= d->size, "QVector::insert", "index out of range"); + insert(begin() + i, n, t); } +template +inline void QVector::remove(int i, int n) +{ Q_ASSERT_X(i >= 0 && n >= 0 && i + n <= d->size, "QVector::remove", "index out of range"); + erase(d->begin() + i, d->begin() + i + n); } +template +inline void QVector::remove(int i) +{ Q_ASSERT_X(i >= 0 && i < d->size, "QVector::remove", "index out of range"); + erase(d->begin() + i, d->begin() + i + 1); } +template +inline void QVector::prepend(const T &t) +{ insert(begin(), 1, t); } + +template +inline void QVector::replace(int i, const T &t) +{ + Q_ASSERT_X(i >= 0 && i < d->size, "QVector::replace", "index out of range"); + const T copy(t); + data()[i] = copy; +} + +template +QVector &QVector::operator=(const QVector &v) +{ + if (v.d != d) { + QVector tmp(v); + tmp.swap(*this); + } + return *this; +} + +template +QVector::QVector(int asize) +{ + Q_ASSERT_X(asize >= 0, "QVector::QVector", "Size must be greater than or equal to 0."); + if (Q_LIKELY(asize > 0)) { + d = Data::allocate(asize); + Q_CHECK_PTR(d); + d->size = asize; + defaultConstruct(d->begin(), d->end()); + } else { + d = Data::sharedNull(); + } +} + +template +QVector::QVector(int asize, const T &t) +{ + Q_ASSERT_X(asize >= 0, "QVector::QVector", "Size must be greater than or equal to 0."); + if (asize > 0) { + d = Data::allocate(asize); + Q_CHECK_PTR(d); + d->size = asize; + T* i = d->end(); + while (i != d->begin()) + new (--i) T(t); + } else { + d = Data::sharedNull(); + } +} + +#ifdef Q_COMPILER_INITIALIZER_LISTS +# if defined(Q_CC_MSVC) +QT_WARNING_PUSH +QT_WARNING_DISABLE_MSVC(4127) // conditional expression is constant +# endif // Q_CC_MSVC + +template +QVector::QVector(std::initializer_list args) +{ + if (args.size() > 0) { + d = Data::allocate(args.size()); + Q_CHECK_PTR(d); + // std::initializer_list::iterator is guaranteed to be + // const T* ([support.initlist]/1), so can be memcpy'ed away from by copyConstruct + copyConstruct(args.begin(), args.end(), d->begin()); + d->size = int(args.size()); + } else { + d = Data::sharedNull(); + } +} +# if defined(Q_CC_MSVC) +QT_WARNING_POP +# endif // Q_CC_MSVC +#endif // Q_COMPILER_INITALIZER_LISTS + +template +void QVector::freeData(Data *x) +{ + destruct(x->begin(), x->end()); + Data::deallocate(x); +} + +#if defined(Q_CC_MSVC) +QT_WARNING_PUSH +QT_WARNING_DISABLE_MSVC(4127) // conditional expression is constant +#endif + +template +void QVector::reallocData(const int asize, const int aalloc, QArrayData::AllocationOptions options) +{ + Q_ASSERT(asize >= 0 && asize <= aalloc); + Data *x = d; + + const bool isShared = d->ref.isShared(); + + if (aalloc != 0) { + if (aalloc != int(d->alloc) || isShared) { + QT_TRY { + // allocate memory + x = Data::allocate(aalloc, options); + Q_CHECK_PTR(x); + // aalloc is bigger then 0 so it is not [un]sharedEmpty +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + Q_ASSERT(x->ref.isSharable() || options.testFlag(QArrayData::Unsharable)); +#endif + Q_ASSERT(!x->ref.isStatic()); + x->size = asize; + + T *srcBegin = d->begin(); + T *srcEnd = asize > d->size ? d->end() : d->begin() + asize; + T *dst = x->begin(); + + if (!QTypeInfoQuery::isRelocatable || (isShared && QTypeInfo::isComplex)) { + // we can not move the data, we need to copy construct it + while (srcBegin != srcEnd) { + new (dst++) T(*srcBegin++); + } + } else { + ::memcpy(static_cast(dst), static_cast(srcBegin), (srcEnd - srcBegin) * sizeof(T)); + dst += srcEnd - srcBegin; + + // destruct unused / not moved data + if (asize < d->size) + destruct(d->begin() + asize, d->end()); + } + + if (asize > d->size) { + // construct all new objects when growing + QT_TRY { + defaultConstruct(dst, x->end()); + } QT_CATCH (...) { + // destruct already copied objects + destruct(x->begin(), dst); + QT_RETHROW; + } + } + } QT_CATCH (...) { + Data::deallocate(x); + QT_RETHROW; + } + x->capacityReserved = d->capacityReserved; + } else { + Q_ASSERT(int(d->alloc) == aalloc); // resize, without changing allocation size + Q_ASSERT(isDetached()); // can be done only on detached d + Q_ASSERT(x == d); // in this case we do not need to allocate anything + if (asize <= d->size) { + destruct(x->begin() + asize, x->end()); // from future end to current end + } else { + defaultConstruct(x->end(), x->begin() + asize); // from current end to future end + } + x->size = asize; + } + } else { + x = Data::sharedNull(); + } + if (d != x) { + if (!d->ref.deref()) { + if (!QTypeInfoQuery::isRelocatable || !aalloc || (isShared && QTypeInfo::isComplex)) { + // data was copy constructed, we need to call destructors + // or if !alloc we did nothing to the old 'd'. + freeData(d); + } else { + Data::deallocate(d); + } + } + d = x; + } + + Q_ASSERT(d->data()); + Q_ASSERT(uint(d->size) <= d->alloc); +#if !defined(QT_NO_UNSHARABLE_CONTAINERS) + Q_ASSERT(d != Data::unsharableEmpty()); +#endif + Q_ASSERT(aalloc ? d != Data::sharedNull() : d == Data::sharedNull()); + Q_ASSERT(d->alloc >= uint(aalloc)); + Q_ASSERT(d->size == asize); +} + +#if defined(Q_CC_MSVC) +QT_WARNING_POP +#endif + +template +Q_OUTOFLINE_TEMPLATE T QVector::value(int i) const +{ + if (uint(i) >= uint(d->size)) { + return T(); + } + return d->begin()[i]; +} +template +Q_OUTOFLINE_TEMPLATE T QVector::value(int i, const T &defaultValue) const +{ + return uint(i) >= uint(d->size) ? defaultValue : d->begin()[i]; +} + +template +void QVector::append(const T &t) +{ + const bool isTooSmall = uint(d->size + 1) > d->alloc; + if (!isDetached() || isTooSmall) { + T copy(t); + QArrayData::AllocationOptions opt(isTooSmall ? QArrayData::Grow : QArrayData::Default); + reallocData(d->size, isTooSmall ? d->size + 1 : d->alloc, opt); + + if (QTypeInfo::isComplex) + new (d->end()) T(qMove(copy)); + else + *d->end() = qMove(copy); + + } else { + if (QTypeInfo::isComplex) + new (d->end()) T(t); + else + *d->end() = t; + } + ++d->size; +} + +#ifdef Q_COMPILER_RVALUE_REFS +template +void QVector::append(T &&t) +{ + const bool isTooSmall = uint(d->size + 1) > d->alloc; + if (!isDetached() || isTooSmall) { + QArrayData::AllocationOptions opt(isTooSmall ? QArrayData::Grow : QArrayData::Default); + reallocData(d->size, isTooSmall ? d->size + 1 : d->alloc, opt); + } + + new (d->end()) T(std::move(t)); + + ++d->size; +} +#endif + +template +void QVector::removeLast() +{ + Q_ASSERT(!isEmpty()); + Q_ASSERT(d->alloc); + + if (!d->ref.isShared()) { + --d->size; + if (QTypeInfo::isComplex) + (d->data() + d->size)->~T(); + } else { + reallocData(d->size - 1); + } +} + +template +typename QVector::iterator QVector::insert(iterator before, size_type n, const T &t) +{ + Q_ASSERT_X(isValidIterator(before), "QVector::insert", "The specified iterator argument 'before' is invalid"); + + const auto offset = std::distance(d->begin(), before); + if (n != 0) { + const T copy(t); + if (!isDetached() || d->size + n > int(d->alloc)) + reallocData(d->size, d->size + n, QArrayData::Grow); + if (!QTypeInfoQuery::isRelocatable) { + T *b = d->end(); + T *i = d->end() + n; + while (i != b) + new (--i) T; + i = d->end(); + T *j = i + n; + b = d->begin() + offset; + while (i != b) + *--j = *--i; + i = b+n; + while (i != b) + *--i = copy; + } else { + T *b = d->begin() + offset; + T *i = b + n; + memmove(i, b, (d->size - offset) * sizeof(T)); + while (i != b) + new (--i) T(copy); + } + d->size += n; + } + return d->begin() + offset; +} + +template +typename QVector::iterator QVector::erase(iterator abegin, iterator aend) +{ + Q_ASSERT_X(isValidIterator(abegin), "QVector::erase", "The specified iterator argument 'abegin' is invalid"); + Q_ASSERT_X(isValidIterator(aend), "QVector::erase", "The specified iterator argument 'aend' is invalid"); + + const auto itemsToErase = aend - abegin; + + if (!itemsToErase) + return abegin; + + Q_ASSERT(abegin >= d->begin()); + Q_ASSERT(aend <= d->end()); + Q_ASSERT(abegin <= aend); + + const auto itemsUntouched = abegin - d->begin(); + + // FIXME we could do a proper realloc, which copy constructs only needed data. + // FIXME we are 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; + aend = abegin + itemsToErase; + if (!QTypeInfoQuery::isRelocatable) { + iterator moveBegin = abegin + itemsToErase; + iterator moveEnd = d->end(); + while (moveBegin != moveEnd) { + if (QTypeInfo::isComplex) + static_cast(abegin)->~T(); + new (abegin++) T(*moveBegin++); + } + if (abegin < d->end()) { + // destroy rest of instances + destruct(abegin, d->end()); + } + } else { + destruct(abegin, aend); + // QTBUG-53605: static_cast masks clang errors of the form + // error: destination for this 'memmove' call is a pointer to class containing a dynamic class + // FIXME maybe use std::is_polymorphic (as soon as allowed) to avoid the memmove + memmove(static_cast(abegin), static_cast(aend), + (d->size - itemsToErase - itemsUntouched) * sizeof(T)); + } + d->size -= int(itemsToErase); + } + return d->begin() + itemsUntouched; +} + +template +bool QVector::operator==(const QVector &v) const +{ + if (d == v.d) + return true; + if (d->size != v.d->size) + return false; + const T *vb = v.d->begin(); + const T *b = d->begin(); + const T *e = d->end(); + return std::equal(b, e, QT_MAKE_CHECKED_ARRAY_ITERATOR(vb, v.d->size)); +} + +template +QVector &QVector::fill(const T &from, int asize) +{ + const T copy(from); + resize(asize < 0 ? d->size : asize); + if (d->size) { + T *i = d->end(); + T *b = d->begin(); + while (i != b) + *--i = copy; + } + return *this; +} + +template +QVector &QVector::operator+=(const QVector &l) +{ + if (d == Data::sharedNull()) { + *this = l; + } else { + uint newSize = d->size + l.d->size; + const bool isTooSmall = newSize > d->alloc; + if (!isDetached() || isTooSmall) { + QArrayData::AllocationOptions opt(isTooSmall ? QArrayData::Grow : QArrayData::Default); + reallocData(d->size, isTooSmall ? newSize : d->alloc, opt); + } + + if (d->alloc) { + T *w = d->begin() + newSize; + T *i = l.d->end(); + T *b = l.d->begin(); + while (i != b) { + if (QTypeInfo::isComplex) + new (--w) T(*--i); + else + *--w = *--i; + } + d->size = newSize; + } + } + return *this; +} + +template +int QVector::indexOf(const T &t, int from) const +{ + if (from < 0) + from = qMax(from + d->size, 0); + if (from < d->size) { + T* n = d->begin() + from - 1; + T* e = d->end(); + while (++n != e) + if (*n == t) + return n - d->begin(); + } + return -1; +} + +template +int QVector::lastIndexOf(const T &t, int from) const +{ + if (from < 0) + from += d->size; + else if (from >= d->size) + from = d->size-1; + if (from >= 0) { + T* b = d->begin(); + T* n = d->begin() + from + 1; + while (n != b) { + if (*--n == t) + return n - b; + } + } + return -1; +} + +template +bool QVector::contains(const T &t) const +{ + const T *b = d->begin(); + const T *e = d->end(); + return std::find(b, e, t) != e; +} + +template +int QVector::count(const T &t) const +{ + const T *b = d->begin(); + const T *e = d->end(); + return int(std::count(b, e, t)); +} + +template +Q_OUTOFLINE_TEMPLATE QVector QVector::mid(int pos, int len) const +{ + using namespace QtPrivate; + switch (QContainerImplHelper::mid(d->size, &pos, &len)) { + case QContainerImplHelper::Null: + case QContainerImplHelper::Empty: + return QVector(); + case QContainerImplHelper::Full: + return *this; + case QContainerImplHelper::Subset: + break; + } + + QVector midResult; + midResult.reallocData(0, len); + T *srcFrom = d->begin() + pos; + T *srcTo = d->begin() + pos + len; + midResult.copyConstruct(srcFrom, srcTo, midResult.data()); + midResult.d->size = len; + return midResult; +} + +template +Q_OUTOFLINE_TEMPLATE QList QVector::toList() const +{ + QList result; + result.reserve(size()); + for (int i = 0; i < size(); ++i) + result.append(at(i)); + return result; +} + +template +Q_OUTOFLINE_TEMPLATE QVector QList::toVector() const +{ + QVector result(size()); + for (int i = 0; i < size(); ++i) + result[i] = at(i); + return result; +} + +template +QVector QVector::fromList(const QList &list) +{ + return list.toVector(); +} + +template +QList QList::fromVector(const QVector &vector) +{ + return vector.toList(); +} + +Q_DECLARE_SEQUENTIAL_ITERATOR(Vector) +Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(Vector) + +template +uint qHash(const QVector &key, uint seed = 0) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHashRange(key.cbegin(), key.cend(), seed))) +{ + return qHashRange(key.cbegin(), key.cend(), seed); +} + +template +bool operator<(const QVector &lhs, const QVector &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(std::lexicographical_compare(lhs.begin(), lhs.end(), + rhs.begin(), rhs.end()))) +{ + return std::lexicographical_compare(lhs.begin(), lhs.end(), + rhs.begin(), rhs.end()); +} + +template +inline bool operator>(const QVector &lhs, const QVector &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(lhs < rhs)) +{ + return rhs < lhs; +} + +template +inline bool operator<=(const QVector &lhs, const QVector &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(lhs < rhs)) +{ + return !(lhs > rhs); +} + +template +inline bool operator>=(const QVector &lhs, const QVector &rhs) + Q_DECL_NOEXCEPT_EXPR(noexcept(lhs < rhs)) +{ + return !(lhs < rhs); +} + +/* + ### Qt 5: + ### This needs to be removed for next releases of Qt. It is a workaround for vc++ because + ### Qt exports QPolygon and QPolygonF that inherit QVector and + ### QVector respectively. +*/ + +#ifdef Q_CC_MSVC +QT_BEGIN_INCLUDE_NAMESPACE +#include +QT_END_INCLUDE_NAMESPACE + +#ifndef Q_TEMPLATE_EXTERN +#if defined(QT_BUILD_CORE_LIB) +#define Q_TEMPLATE_EXTERN +#else +#define Q_TEMPLATE_EXTERN extern +#endif +#endif +Q_TEMPLATE_EXTERN template class Q_CORE_EXPORT QVector; +Q_TEMPLATE_EXTERN template class Q_CORE_EXPORT QVector; +#endif + +QT_END_NAMESPACE + +#endif // QVECTOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qversionnumber.h b/qrenderdoc/3rdparty/qt/include/QtCore/qversionnumber.h new file mode 100644 index 000000000..d3cf743a6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qversionnumber.h @@ -0,0 +1,320 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Copyright (C) 2014 Keith Gardner +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVERSIONNUMBER_H +#define QVERSIONNUMBER_H + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QVersionNumber; +Q_CORE_EXPORT uint qHash(const QVersionNumber &key, uint seed = 0); + +#ifndef QT_NO_DATASTREAM +Q_CORE_EXPORT QDataStream& operator<<(QDataStream &out, const QVersionNumber &version); +Q_CORE_EXPORT QDataStream& operator>>(QDataStream &in, QVersionNumber &version); +#endif + +class QVersionNumber +{ + /* + * QVersionNumber stores small values inline, without memory allocation. + * We do that by setting the LSB in the pointer that would otherwise hold + * the longer form of the segments. + * The constants below help us deal with the permutations for 32- and 64-bit, + * little- and big-endian architectures. + */ + enum { + // in little-endian, inline_segments[0] is shared with the pointer's LSB, while + // in big-endian, it's inline_segments[7] + InlineSegmentMarker = Q_BYTE_ORDER == Q_LITTLE_ENDIAN ? 0 : sizeof(void*) - 1, + InlineSegmentStartIdx = !InlineSegmentMarker, // 0 for BE, 1 for LE + InlineSegmentCount = sizeof(void*) - 1 + }; + Q_STATIC_ASSERT(InlineSegmentCount >= 3); // at least major, minor, micro + + struct SegmentStorage { + // Note: we alias the use of dummy and inline_segments in the use of the + // union below. This is undefined behavior in C++98, but most compilers implement + // the C++11 behavior. The one known exception is older versions of Sun Studio. + union { + quintptr dummy; + qint8 inline_segments[sizeof(void*)]; + QVector *pointer_segments; + }; + + // set the InlineSegmentMarker and set length to zero + SegmentStorage() Q_DECL_NOTHROW : dummy(1) {} + + SegmentStorage(const QVector &seg) + { + if (dataFitsInline(seg.begin(), seg.size())) + setInlineData(seg.begin(), seg.size()); + else + pointer_segments = new QVector(seg); + } + + SegmentStorage(const SegmentStorage &other) + { + if (other.isUsingPointer()) + pointer_segments = new QVector(*other.pointer_segments); + else + dummy = other.dummy; + } + + SegmentStorage &operator=(const SegmentStorage &other) + { + if (isUsingPointer() && other.isUsingPointer()) { + *pointer_segments = *other.pointer_segments; + } else if (other.isUsingPointer()) { + pointer_segments = new QVector(*other.pointer_segments); + } else { + if (isUsingPointer()) + delete pointer_segments; + dummy = other.dummy; + } + return *this; + } + +#ifdef Q_COMPILER_RVALUE_REFS + SegmentStorage(SegmentStorage &&other) Q_DECL_NOTHROW + : dummy(other.dummy) + { + other.dummy = 1; + } + + SegmentStorage &operator=(SegmentStorage &&other) Q_DECL_NOTHROW + { + qSwap(dummy, other.dummy); + return *this; + } + + explicit SegmentStorage(QVector &&seg) + { + if (dataFitsInline(seg.begin(), seg.size())) + setInlineData(seg.begin(), seg.size()); + else + pointer_segments = new QVector(std::move(seg)); + } +#endif +#ifdef Q_COMPILER_INITIALIZER_LISTS + SegmentStorage(std::initializer_list args) + { + if (dataFitsInline(args.begin(), int(args.size()))) { + setInlineData(args.begin(), int(args.size())); + } else { + pointer_segments = new QVector(args); + } + } +#endif + + ~SegmentStorage() { if (isUsingPointer()) delete pointer_segments; } + + bool isUsingPointer() const Q_DECL_NOTHROW + { return (inline_segments[InlineSegmentMarker] & 1) == 0; } + + int size() const Q_DECL_NOTHROW + { return isUsingPointer() ? pointer_segments->size() : (inline_segments[InlineSegmentMarker] >> 1); } + + void setInlineSize(int len) + { inline_segments[InlineSegmentMarker] = 1 + 2 * len; } + + void resize(int len) + { + if (isUsingPointer()) + pointer_segments->resize(len); + else + setInlineSize(len); + } + + int at(int index) const + { + return isUsingPointer() ? + pointer_segments->at(index) : + inline_segments[InlineSegmentStartIdx + index]; + } + + void setSegments(int len, int maj, int min = 0, int mic = 0) + { + if (maj == qint8(maj) && min == qint8(min) && mic == qint8(mic)) { + int data[] = { maj, min, mic }; + setInlineData(data, len); + } else { + setVector(len, maj, min, mic); + } + } + + private: + static bool dataFitsInline(const int *data, int len) + { + if (len > InlineSegmentCount) + return false; + for (int i = 0; i < len; ++i) + if (data[i] != qint8(data[i])) + return false; + return true; + } + void setInlineData(const int *data, int len) + { + dummy = 1 + len * 2; +#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN + for (int i = 0; i < len; ++i) + dummy |= quintptr(data[i] & 0xFF) << (8 * (i + 1)); +#elif Q_BYTE_ORDER == Q_BIG_ENDIAN + for (int i = 0; i < len; ++i) + dummy |= quintptr(data[i] & 0xFF) << (8 * (sizeof(void *) - i - 1)); +#else + // the code above is equivalent to: + setInlineSize(len); + for (int i = 0; i < len; ++i) + inline_segments[InlineSegmentStartIdx + i] = data[i] & 0xFF; +#endif + } + + Q_CORE_EXPORT void setVector(int len, int maj, int min, int mic); + } m_segments; + +public: + inline QVersionNumber() Q_DECL_NOTHROW + : m_segments() + {} + inline explicit QVersionNumber(const QVector &seg) + : m_segments(seg) + {} + + // compiler-generated copy/move ctor/assignment operators and the destructor are ok + +#ifdef Q_COMPILER_RVALUE_REFS + explicit QVersionNumber(QVector &&seg) + : m_segments(std::move(seg)) + {} +#endif + +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QVersionNumber(std::initializer_list args) + : m_segments(args) + {} +#endif + + inline explicit QVersionNumber(int maj) + { m_segments.setSegments(1, maj); } + + inline explicit QVersionNumber(int maj, int min) + { m_segments.setSegments(2, maj, min); } + + inline explicit QVersionNumber(int maj, int min, int mic) + { m_segments.setSegments(3, maj, min, mic); } + + Q_REQUIRED_RESULT inline bool isNull() const Q_DECL_NOTHROW + { return segmentCount() == 0; } + + Q_REQUIRED_RESULT inline bool isNormalized() const Q_DECL_NOTHROW + { return isNull() || segmentAt(segmentCount() - 1) != 0; } + + Q_REQUIRED_RESULT inline int majorVersion() const Q_DECL_NOTHROW + { return segmentAt(0); } + + Q_REQUIRED_RESULT inline int minorVersion() const Q_DECL_NOTHROW + { return segmentAt(1); } + + Q_REQUIRED_RESULT inline int microVersion() const Q_DECL_NOTHROW + { return segmentAt(2); } + + Q_REQUIRED_RESULT Q_CORE_EXPORT QVersionNumber normalized() const; + + Q_REQUIRED_RESULT Q_CORE_EXPORT QVector segments() const; + + Q_REQUIRED_RESULT inline int segmentAt(int index) const Q_DECL_NOTHROW + { return (m_segments.size() > index) ? m_segments.at(index) : 0; } + + Q_REQUIRED_RESULT inline int segmentCount() const Q_DECL_NOTHROW + { return m_segments.size(); } + + Q_REQUIRED_RESULT Q_CORE_EXPORT bool isPrefixOf(const QVersionNumber &other) const Q_DECL_NOTHROW; + + Q_REQUIRED_RESULT Q_CORE_EXPORT static int compare(const QVersionNumber &v1, const QVersionNumber &v2) Q_DECL_NOTHROW; + + Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber commonPrefix(const QVersionNumber &v1, const QVersionNumber &v2); + + Q_REQUIRED_RESULT Q_CORE_EXPORT QString toString() const; + Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(const QString &string, int *suffixIndex = Q_NULLPTR); + +private: +#ifndef QT_NO_DATASTREAM + friend Q_CORE_EXPORT QDataStream& operator>>(QDataStream &in, QVersionNumber &version); +#endif + friend Q_CORE_EXPORT uint qHash(const QVersionNumber &key, uint seed); +}; + +Q_DECLARE_TYPEINFO(QVersionNumber, Q_MOVABLE_TYPE); + +#ifndef QT_NO_DEBUG_STREAM +Q_CORE_EXPORT QDebug operator<<(QDebug, const QVersionNumber &version); +#endif + +Q_REQUIRED_RESULT inline bool operator> (const QVersionNumber &lhs, const QVersionNumber &rhs) Q_DECL_NOTHROW +{ return QVersionNumber::compare(lhs, rhs) > 0; } + +Q_REQUIRED_RESULT inline bool operator>=(const QVersionNumber &lhs, const QVersionNumber &rhs) Q_DECL_NOTHROW +{ return QVersionNumber::compare(lhs, rhs) >= 0; } + +Q_REQUIRED_RESULT inline bool operator< (const QVersionNumber &lhs, const QVersionNumber &rhs) Q_DECL_NOTHROW +{ return QVersionNumber::compare(lhs, rhs) < 0; } + +Q_REQUIRED_RESULT inline bool operator<=(const QVersionNumber &lhs, const QVersionNumber &rhs) Q_DECL_NOTHROW +{ return QVersionNumber::compare(lhs, rhs) <= 0; } + +Q_REQUIRED_RESULT inline bool operator==(const QVersionNumber &lhs, const QVersionNumber &rhs) Q_DECL_NOTHROW +{ return QVersionNumber::compare(lhs, rhs) == 0; } + +Q_REQUIRED_RESULT inline bool operator!=(const QVersionNumber &lhs, const QVersionNumber &rhs) Q_DECL_NOTHROW +{ return QVersionNumber::compare(lhs, rhs) != 0; } + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QVersionNumber) + +#endif //QVERSIONNUMBER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qversiontagging.h b/qrenderdoc/3rdparty/qt/include/QtCore/qversiontagging.h new file mode 100644 index 000000000..75c2e9df7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qversiontagging.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// qglobal.h includes this header, so keep it outside of our include guards +#include + +#if !defined(QVERSIONTAGGING_H) +#define QVERSIONTAGGING_H + +QT_BEGIN_NAMESPACE + +/* + * Ugly hack warning and explanation: + * + * This file causes all ELF modules, be they libraries or applications, to use the + * qt_version_tag symbol that is present in QtCore. Such symbol is versioned, + * so the linker will automatically pull the current Qt version and add it to + * the ELF header of the library/application. The assembly produces one section + * called ".qtversion" containing two 32-bit values. The first is a + * relocation to the qt_version_tag symbol (which is what causes the ELF + * version to get used). The second value is the current Qt version at the time + * of compilation. + * + * There will only be one copy of the section in the output library or application. + */ + +#if defined(QT_BUILD_CORE_LIB) || defined(QT_BOOTSTRAPPED) || defined(QT_NO_VERSION_TAGGING) || defined(QT_STATIC) +// don't make tags in QtCore, bootstrapped systems or if the user asked not to +#elif defined(Q_CC_GNU) && !defined(Q_OS_ANDROID) +# if defined(Q_PROCESSOR_X86) && (defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD_KERNEL)) +# if defined(Q_PROCESSOR_X86_64) && QT_POINTER_SIZE == 8 // x86-64 64-bit +# define QT_VERSION_TAG_RELOC(sym) ".quad " QT_STRINGIFY(QT_MANGLE_NAMESPACE(sym)) "@GOT\n" +# else // x86 or x86-64 32-bit (x32) +# define QT_VERSION_TAG_RELOC(sym) ".long " QT_STRINGIFY(QT_MANGLE_NAMESPACE(sym)) "@GOT\n" +# endif +# define QT_VERSION_TAG(sym) \ + asm ( \ + ".section .qtversion, \"aG\", @progbits, " QT_STRINGIFY(QT_MANGLE_NAMESPACE(sym)) ", comdat\n" \ + ".align 8\n" \ + QT_VERSION_TAG_RELOC(sym) \ + ".long " QT_STRINGIFY(QT_VERSION) "\n" \ + ".align 8\n" \ + ".previous" \ + ) +# endif +#endif + +#if defined(QT_VERSION_TAG) +QT_VERSION_TAG(qt_version_tag); +#endif + +QT_END_NAMESPACE + +#endif // QVERSIONTAGGING_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qwaitcondition.h b/qrenderdoc/3rdparty/qt/include/QtCore/qwaitcondition.h new file mode 100644 index 000000000..a0c676683 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qwaitcondition.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWAITCONDITION_H +#define QWAITCONDITION_H + +#include + +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_THREAD + +class QWaitConditionPrivate; +class QMutex; +class QReadWriteLock; + +class Q_CORE_EXPORT QWaitCondition +{ +public: + QWaitCondition(); + ~QWaitCondition(); + + bool wait(QMutex *lockedMutex, unsigned long time = ULONG_MAX); + bool wait(QReadWriteLock *lockedReadWriteLock, unsigned long time = ULONG_MAX); + + void wakeOne(); + void wakeAll(); + + void notify_one() { wakeOne(); } + void notify_all() { wakeAll(); } + +private: + Q_DISABLE_COPY(QWaitCondition) + + QWaitConditionPrivate * d; +}; + +#else + +class QMutex; +class Q_CORE_EXPORT QWaitCondition +{ +public: + QWaitCondition() {} + ~QWaitCondition() {} + + bool wait(QMutex *mutex, unsigned long time = ULONG_MAX) + { + Q_UNUSED(mutex); + Q_UNUSED(time); + return true; + } + + void wakeOne() {} + void wakeAll() {} +}; + +#endif // QT_NO_THREAD + +QT_END_NAMESPACE + +#endif // QWAITCONDITION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qwineventnotifier.h b/qrenderdoc/3rdparty/qt/include/QtCore/qwineventnotifier.h new file mode 100644 index 000000000..f29f325d1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qwineventnotifier.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINEVENTNOTIFIER_H +#define QWINEVENTNOTIFIER_H + +#include "QtCore/qobject.h" + +#if defined(Q_OS_WIN) || defined(Q_CLANG_QDOC) + +QT_BEGIN_NAMESPACE + +class QWinEventNotifierPrivate; +class Q_CORE_EXPORT QWinEventNotifier : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QWinEventNotifier) + typedef Qt::HANDLE HANDLE; + +public: + explicit QWinEventNotifier(QObject *parent = Q_NULLPTR); + explicit QWinEventNotifier(HANDLE hEvent, QObject *parent = Q_NULLPTR); + ~QWinEventNotifier(); + + void setHandle(HANDLE hEvent); + HANDLE handle() const; + + bool isEnabled() const; + +public Q_SLOTS: + void setEnabled(bool enable); + +Q_SIGNALS: + void activated(HANDLE hEvent, QPrivateSignal); + +protected: + bool event(QEvent * e); +}; + +QT_END_NAMESPACE + +#endif // Q_OS_WIN + +#endif // QWINEVENTNOTIFIER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtCore/qxmlstream.h b/qrenderdoc/3rdparty/qt/include/QtCore/qxmlstream.h new file mode 100644 index 000000000..bf6ddefcd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtCore/qxmlstream.h @@ -0,0 +1,540 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QXMLSTREAM_H +#define QXMLSTREAM_H + +#include + +#ifndef QT_NO_XMLSTREAM + +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class Q_CORE_EXPORT QXmlStreamStringRef { + QString m_string; + int m_position, m_size; +public: + inline QXmlStreamStringRef():m_position(0), m_size(0){} + inline QXmlStreamStringRef(const QStringRef &aString) + :m_string(aString.string()?*aString.string():QString()), m_position(aString.position()), m_size(aString.size()){} + QXmlStreamStringRef(const QString &aString) : m_string(aString), m_position(0), m_size(m_string.size()) {} +#ifdef Q_COMPILER_RVALUE_REFS + QXmlStreamStringRef(QString &&aString) Q_DECL_NOTHROW : m_string(std::move(aString)), m_position(0), m_size(m_string.size()) {} +#endif + +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + QXmlStreamStringRef(const QXmlStreamStringRef &other) // = default + : m_string(other.m_string), m_position(other.m_position), m_size(other.m_size) {} +#ifdef Q_COMPILER_RVALUE_REFS + QXmlStreamStringRef(QXmlStreamStringRef &&other) Q_DECL_NOTHROW // = default + : m_string(std::move(other.m_string)), m_position(other.m_position), m_size(other.m_size) {} + QXmlStreamStringRef &operator=(QXmlStreamStringRef &&other) Q_DECL_NOTHROW // = default + { swap(other); return *this; } +#endif + QXmlStreamStringRef &operator=(const QXmlStreamStringRef &other) // = default + { m_string = other.m_string; m_position = other.m_position; m_size = other.m_size; return *this; } + inline ~QXmlStreamStringRef() {} // ### this prevents (or deprecates) all the move/copy special member functions, + // ### that's why we need to provide them by hand above. We can't remove it in + // ### Qt 5, since that would change the way its passed to functions. In Qt 6, remove all. +#endif // Qt < 6.0 + + void swap(QXmlStreamStringRef &other) Q_DECL_NOTHROW + { + qSwap(m_string, other.m_string); + qSwap(m_position, other.m_position); + qSwap(m_size, other.m_size); + } + + inline void clear() { m_string.clear(); m_position = m_size = 0; } + inline operator QStringRef() const { return QStringRef(&m_string, m_position, m_size); } + inline const QString *string() const { return &m_string; } + inline int position() const { return m_position; } + inline int size() const { return m_size; } +}; +Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QXmlStreamStringRef) + + +class QXmlStreamReaderPrivate; +class QXmlStreamAttributes; +class Q_CORE_EXPORT QXmlStreamAttribute { + QXmlStreamStringRef m_name, m_namespaceUri, m_qualifiedName, m_value; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void *reserved; +#endif + uint m_isDefault : 1; + friend class QXmlStreamReaderPrivate; + friend class QXmlStreamAttributes; +public: + QXmlStreamAttribute(); + QXmlStreamAttribute(const QString &qualifiedName, const QString &value); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QXmlStreamAttribute(const QString &namespaceUri, const QString &name, const QString &value); + QXmlStreamAttribute(const QXmlStreamAttribute &); +#ifdef Q_COMPILER_RVALUE_REFS + QXmlStreamAttribute(QXmlStreamAttribute &&other) Q_DECL_NOTHROW // = default; + : m_name(std::move(other.m_name)), + m_namespaceUri(std::move(other.m_namespaceUri)), + m_qualifiedName(std::move(other.m_qualifiedName)), + m_value(std::move(other.m_value)), + reserved(other.reserved), + m_isDefault(other.m_isDefault) + { + other.reserved = Q_NULLPTR; + } + QXmlStreamAttribute &operator=(QXmlStreamAttribute &&other) Q_DECL_NOTHROW // = default; + { + m_name = std::move(other.m_name); + m_namespaceUri = std::move(other.m_namespaceUri); + m_qualifiedName = std::move(other.m_qualifiedName); + m_value = std::move(other.m_value); + qSwap(reserved, other.reserved); + m_isDefault = other.m_isDefault; + return *this; + } +#endif + QXmlStreamAttribute& operator=(const QXmlStreamAttribute &); + ~QXmlStreamAttribute(); +#endif // < Qt 6 + + inline QStringRef namespaceUri() const { return m_namespaceUri; } + inline QStringRef name() const { return m_name; } + inline QStringRef qualifiedName() const { return m_qualifiedName; } + inline QStringRef prefix() const { + return QStringRef(m_qualifiedName.string(), + m_qualifiedName.position(), + qMax(0, m_qualifiedName.size() - m_name.size() - 1)); + } + inline QStringRef value() const { return m_value; } + inline bool isDefault() const { return m_isDefault; } + inline bool operator==(const QXmlStreamAttribute &other) const { + return (value() == other.value() + && (namespaceUri().isNull() ? (qualifiedName() == other.qualifiedName()) + : (namespaceUri() == other.namespaceUri() && name() == other.name()))); + } + inline bool operator!=(const QXmlStreamAttribute &other) const + { return !operator==(other); } +}; + +Q_DECLARE_TYPEINFO(QXmlStreamAttribute, Q_MOVABLE_TYPE); + +class Q_CORE_EXPORT QXmlStreamAttributes : public QVector +{ +public: + inline QXmlStreamAttributes() {} + QStringRef value(const QString &namespaceUri, const QString &name) const; + QStringRef value(const QString &namespaceUri, QLatin1String name) const; + QStringRef value(QLatin1String namespaceUri, QLatin1String name) const; + QStringRef value(const QString &qualifiedName) const; + QStringRef value(QLatin1String qualifiedName) const; + void append(const QString &namespaceUri, const QString &name, const QString &value); + void append(const QString &qualifiedName, const QString &value); + + inline bool hasAttribute(const QString &qualifiedName) const + { + return !value(qualifiedName).isNull(); + } + + inline bool hasAttribute(QLatin1String qualifiedName) const + { + return !value(qualifiedName).isNull(); + } + + inline bool hasAttribute(const QString &namespaceUri, const QString &name) const + { + return !value(namespaceUri, name).isNull(); + } + + using QVector::append; +}; + +class Q_CORE_EXPORT QXmlStreamNamespaceDeclaration { + QXmlStreamStringRef m_prefix, m_namespaceUri; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void *reserved; +#endif + + friend class QXmlStreamReaderPrivate; +public: + QXmlStreamNamespaceDeclaration(); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QXmlStreamNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &); + QXmlStreamNamespaceDeclaration(QXmlStreamNamespaceDeclaration &&other) Q_DECL_NOTHROW // = default + : m_prefix(std::move(other.m_prefix)), + m_namespaceUri(std::move(other.m_namespaceUri)), + reserved(other.reserved) + { + other.reserved = nullptr; + } + QXmlStreamNamespaceDeclaration &operator=(QXmlStreamNamespaceDeclaration &&other) Q_DECL_NOTHROW // = default + { + m_prefix = std::move(other.m_prefix); + m_namespaceUri = std::move(other.m_namespaceUri); + qSwap(reserved, other.reserved); + return *this; + } + QXmlStreamNamespaceDeclaration(const QString &prefix, const QString &namespaceUri); + ~QXmlStreamNamespaceDeclaration(); + QXmlStreamNamespaceDeclaration& operator=(const QXmlStreamNamespaceDeclaration &); +#endif // < Qt 6 + + inline QStringRef prefix() const { return m_prefix; } + inline QStringRef namespaceUri() const { return m_namespaceUri; } + inline bool operator==(const QXmlStreamNamespaceDeclaration &other) const { + return (prefix() == other.prefix() && namespaceUri() == other.namespaceUri()); + } + inline bool operator!=(const QXmlStreamNamespaceDeclaration &other) const + { return !operator==(other); } +}; + +Q_DECLARE_TYPEINFO(QXmlStreamNamespaceDeclaration, Q_MOVABLE_TYPE); +typedef QVector QXmlStreamNamespaceDeclarations; + +class Q_CORE_EXPORT QXmlStreamNotationDeclaration { + QXmlStreamStringRef m_name, m_systemId, m_publicId; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void *reserved; +#endif + + friend class QXmlStreamReaderPrivate; +public: + QXmlStreamNotationDeclaration(); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + ~QXmlStreamNotationDeclaration(); + QXmlStreamNotationDeclaration(const QXmlStreamNotationDeclaration &); + QXmlStreamNotationDeclaration(QXmlStreamNotationDeclaration &&other) Q_DECL_NOTHROW // = default + : m_name(std::move(other.m_name)), + m_systemId(std::move(other.m_systemId)), + m_publicId(std::move(other.m_publicId)), + reserved(other.reserved) + { + other.reserved = nullptr; + } + QXmlStreamNotationDeclaration& operator=(const QXmlStreamNotationDeclaration &); + QXmlStreamNotationDeclaration &operator=(QXmlStreamNotationDeclaration &&other) Q_DECL_NOTHROW // = default + { + m_name = std::move(other.m_name); + m_systemId = std::move(other.m_systemId); + m_publicId = std::move(other.m_publicId); + qSwap(reserved, other.reserved); + return *this; + } +#endif // < Qt 6 + + inline QStringRef name() const { return m_name; } + inline QStringRef systemId() const { return m_systemId; } + inline QStringRef publicId() const { return m_publicId; } + inline bool operator==(const QXmlStreamNotationDeclaration &other) const { + return (name() == other.name() && systemId() == other.systemId() + && publicId() == other.publicId()); + } + inline bool operator!=(const QXmlStreamNotationDeclaration &other) const + { return !operator==(other); } +}; + +Q_DECLARE_TYPEINFO(QXmlStreamNotationDeclaration, Q_MOVABLE_TYPE); +typedef QVector QXmlStreamNotationDeclarations; + +class Q_CORE_EXPORT QXmlStreamEntityDeclaration { + QXmlStreamStringRef m_name, m_notationName, m_systemId, m_publicId, m_value; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void *reserved; +#endif + + friend class QXmlStreamReaderPrivate; +public: + QXmlStreamEntityDeclaration(); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + ~QXmlStreamEntityDeclaration(); + QXmlStreamEntityDeclaration(const QXmlStreamEntityDeclaration &); + QXmlStreamEntityDeclaration(QXmlStreamEntityDeclaration &&other) Q_DECL_NOTHROW // = default + : m_name(std::move(other.m_name)), + m_notationName(std::move(other.m_notationName)), + m_systemId(std::move(other.m_systemId)), + m_publicId(std::move(other.m_publicId)), + m_value(std::move(other.m_value)), + reserved(other.reserved) + { + other.reserved = nullptr; + } + QXmlStreamEntityDeclaration& operator=(const QXmlStreamEntityDeclaration &); + QXmlStreamEntityDeclaration &operator=(QXmlStreamEntityDeclaration &&other) Q_DECL_NOTHROW // = default + { + m_name = std::move(other.m_name); + m_notationName = std::move(other.m_notationName); + m_systemId = std::move(other.m_systemId); + m_publicId = std::move(other.m_publicId); + m_value = std::move(other.m_value); + qSwap(reserved, other.reserved); + return *this; + } +#endif // < Qt 6 + + inline QStringRef name() const { return m_name; } + inline QStringRef notationName() const { return m_notationName; } + inline QStringRef systemId() const { return m_systemId; } + inline QStringRef publicId() const { return m_publicId; } + inline QStringRef value() const { return m_value; } + inline bool operator==(const QXmlStreamEntityDeclaration &other) const { + return (name() == other.name() + && notationName() == other.notationName() + && systemId() == other.systemId() + && publicId() == other.publicId() + && value() == other.value()); + } + inline bool operator!=(const QXmlStreamEntityDeclaration &other) const + { return !operator==(other); } +}; + +Q_DECLARE_TYPEINFO(QXmlStreamEntityDeclaration, Q_MOVABLE_TYPE); +typedef QVector QXmlStreamEntityDeclarations; + + +class Q_CORE_EXPORT QXmlStreamEntityResolver +{ +public: + virtual ~QXmlStreamEntityResolver(); + virtual QString resolveEntity(const QString& publicId, const QString& systemId); + virtual QString resolveUndeclaredEntity(const QString &name); +}; + +#ifndef QT_NO_XMLSTREAMREADER +class Q_CORE_EXPORT QXmlStreamReader { + QDOC_PROPERTY(bool namespaceProcessing READ namespaceProcessing WRITE setNamespaceProcessing) +public: + enum TokenType { + NoToken = 0, + Invalid, + StartDocument, + EndDocument, + StartElement, + EndElement, + Characters, + Comment, + DTD, + EntityReference, + ProcessingInstruction + }; + + + QXmlStreamReader(); + explicit QXmlStreamReader(QIODevice *device); + explicit QXmlStreamReader(const QByteArray &data); + explicit QXmlStreamReader(const QString &data); + explicit QXmlStreamReader(const char * data); + ~QXmlStreamReader(); + + void setDevice(QIODevice *device); + QIODevice *device() const; + void addData(const QByteArray &data); + void addData(const QString &data); + void addData(const char *data); + void clear(); + + + bool atEnd() const; + TokenType readNext(); + + bool readNextStartElement(); + void skipCurrentElement(); + + TokenType tokenType() const; + QString tokenString() const; + + void setNamespaceProcessing(bool); + bool namespaceProcessing() const; + + inline bool isStartDocument() const { return tokenType() == StartDocument; } + inline bool isEndDocument() const { return tokenType() == EndDocument; } + inline bool isStartElement() const { return tokenType() == StartElement; } + inline bool isEndElement() const { return tokenType() == EndElement; } + inline bool isCharacters() const { return tokenType() == Characters; } + bool isWhitespace() const; + bool isCDATA() const; + inline bool isComment() const { return tokenType() == Comment; } + inline bool isDTD() const { return tokenType() == DTD; } + inline bool isEntityReference() const { return tokenType() == EntityReference; } + inline bool isProcessingInstruction() const { return tokenType() == ProcessingInstruction; } + + bool isStandaloneDocument() const; + QStringRef documentVersion() const; + QStringRef documentEncoding() const; + + qint64 lineNumber() const; + qint64 columnNumber() const; + qint64 characterOffset() const; + + QXmlStreamAttributes attributes() const; + + enum ReadElementTextBehaviour { + ErrorOnUnexpectedElement, + IncludeChildElements, + SkipChildElements + }; + QString readElementText(ReadElementTextBehaviour behaviour = ErrorOnUnexpectedElement); + + QStringRef name() const; + QStringRef namespaceUri() const; + QStringRef qualifiedName() const; + QStringRef prefix() const; + + QStringRef processingInstructionTarget() const; + QStringRef processingInstructionData() const; + + QStringRef text() const; + + QXmlStreamNamespaceDeclarations namespaceDeclarations() const; + void addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaraction); + void addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclaractions); + QXmlStreamNotationDeclarations notationDeclarations() const; + QXmlStreamEntityDeclarations entityDeclarations() const; + QStringRef dtdName() const; + QStringRef dtdPublicId() const; + QStringRef dtdSystemId() const; + + + enum Error { + NoError, + UnexpectedElementError, + CustomError, + NotWellFormedError, + PrematureEndOfDocumentError + }; + void raiseError(const QString& message = QString()); + QString errorString() const; + Error error() const; + + inline bool hasError() const + { + return error() != NoError; + } + + void setEntityResolver(QXmlStreamEntityResolver *resolver); + QXmlStreamEntityResolver *entityResolver() const; + +private: + Q_DISABLE_COPY(QXmlStreamReader) + Q_DECLARE_PRIVATE(QXmlStreamReader) + QScopedPointer d_ptr; + +}; +#endif // QT_NO_XMLSTREAMREADER + +#ifndef QT_NO_XMLSTREAMWRITER + +class QXmlStreamWriterPrivate; + +class Q_CORE_EXPORT QXmlStreamWriter +{ + QDOC_PROPERTY(bool autoFormatting READ autoFormatting WRITE setAutoFormatting) + QDOC_PROPERTY(int autoFormattingIndent READ autoFormattingIndent WRITE setAutoFormattingIndent) +public: + QXmlStreamWriter(); + explicit QXmlStreamWriter(QIODevice *device); + explicit QXmlStreamWriter(QByteArray *array); + explicit QXmlStreamWriter(QString *string); + ~QXmlStreamWriter(); + + void setDevice(QIODevice *device); + QIODevice *device() const; + +#ifndef QT_NO_TEXTCODEC + void setCodec(QTextCodec *codec); + void setCodec(const char *codecName); + QTextCodec *codec() const; +#endif + + void setAutoFormatting(bool); + bool autoFormatting() const; + + void setAutoFormattingIndent(int spacesOrTabs); + int autoFormattingIndent() const; + + void writeAttribute(const QString &qualifiedName, const QString &value); + void writeAttribute(const QString &namespaceUri, const QString &name, const QString &value); + void writeAttribute(const QXmlStreamAttribute& attribute); + void writeAttributes(const QXmlStreamAttributes& attributes); + + void writeCDATA(const QString &text); + void writeCharacters(const QString &text); + void writeComment(const QString &text); + + void writeDTD(const QString &dtd); + + void writeEmptyElement(const QString &qualifiedName); + void writeEmptyElement(const QString &namespaceUri, const QString &name); + + void writeTextElement(const QString &qualifiedName, const QString &text); + void writeTextElement(const QString &namespaceUri, const QString &name, const QString &text); + + void writeEndDocument(); + void writeEndElement(); + + void writeEntityReference(const QString &name); + void writeNamespace(const QString &namespaceUri, const QString &prefix = QString()); + void writeDefaultNamespace(const QString &namespaceUri); + void writeProcessingInstruction(const QString &target, const QString &data = QString()); + + void writeStartDocument(); + void writeStartDocument(const QString &version); + void writeStartDocument(const QString &version, bool standalone); + void writeStartElement(const QString &qualifiedName); + void writeStartElement(const QString &namespaceUri, const QString &name); + +#ifndef QT_NO_XMLSTREAMREADER + void writeCurrentToken(const QXmlStreamReader &reader); +#endif + + bool hasError() const; + +private: + Q_DISABLE_COPY(QXmlStreamWriter) + Q_DECLARE_PRIVATE(QXmlStreamWriter) + QScopedPointer d_ptr; +}; +#endif // QT_NO_XMLSTREAMWRITER + +QT_END_NAMESPACE + +#endif // QT_NO_XMLSTREAM +#endif // QXMLSTREAM_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qabstractlayoutstyleinfo_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qabstractlayoutstyleinfo_p.h new file mode 100644 index 000000000..bf1e1fc85 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qabstractlayoutstyleinfo_p.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTLAYOUTSTYLEINFO_P_H +#define QABSTRACTLAYOUTSTYLEINFO_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include "qlayoutpolicy_p.h" + +QT_BEGIN_NAMESPACE + + +class Q_GUI_EXPORT QAbstractLayoutStyleInfo { +public: + + QAbstractLayoutStyleInfo() : m_isWindow(false) {} + virtual ~QAbstractLayoutStyleInfo() {} + virtual qreal combinedLayoutSpacing(QLayoutPolicy::ControlTypes /*controls1*/, + QLayoutPolicy::ControlTypes /*controls2*/, Qt::Orientation /*orientation*/) const { + return -1; + } + + virtual qreal perItemSpacing(QLayoutPolicy::ControlType /*control1*/, + QLayoutPolicy::ControlType /*control2*/, + Qt::Orientation /*orientation*/) const { + return -1; + } + + virtual qreal spacing(Qt::Orientation orientation) const = 0; + + virtual bool hasChangedCore() const { return false; } // ### Remove when usage is gone from subclasses + + virtual void invalidate() { } + + virtual qreal windowMargin(Qt::Orientation orientation) const = 0; + + bool isWindow() const { + return m_isWindow; + } + +protected: + unsigned m_isWindow : 1; + mutable unsigned m_hSpacingState: 2; + mutable unsigned m_vSpacingState: 2; + mutable qreal m_spacing[2]; +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTLAYOUTSTYLEINFO_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qabstracttextdocumentlayout_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qabstracttextdocumentlayout_p.h new file mode 100644 index 000000000..191c463dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qabstracttextdocumentlayout_p.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTTEXTDOCUMENTLAYOUT_P_H +#define QABSTRACTTEXTDOCUMENTLAYOUT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "private/qobject_p.h" +#include "QtCore/qhash.h" + +QT_BEGIN_NAMESPACE + +struct QTextObjectHandler +{ + QTextObjectHandler() : iface(0) {} + QTextObjectInterface *iface; + QPointer component; +}; +typedef QHash HandlerHash; + +class Q_GUI_EXPORT QAbstractTextDocumentLayoutPrivate : public QObjectPrivate +{ +public: + Q_DECLARE_PUBLIC(QAbstractTextDocumentLayout) + + inline QAbstractTextDocumentLayoutPrivate() + : paintDevice(0) {} + ~QAbstractTextDocumentLayoutPrivate(); + + inline void setDocument(QTextDocument *doc) { + document = doc; + docPrivate = 0; + if (doc) + docPrivate = doc->docHandle(); + } + + inline int _q_dynamicPageCountSlot() const + { return q_func()->pageCount(); } + inline QSizeF _q_dynamicDocumentSizeSlot() const + { return q_func()->documentSize(); } + + HandlerHash handlers; + + void _q_handlerDestroyed(QObject *obj); + QPaintDevice *paintDevice; + + QTextDocument *document; + QTextDocumentPrivate *docPrivate; +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTTEXTDOCUMENTLAYOUT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qaccessiblecache_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qaccessiblecache_p.h new file mode 100644 index 000000000..f054ee967 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qaccessiblecache_p.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACCESSIBLECACHE_P +#define QACCESSIBLECACHE_P + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#include "qaccessible.h" + +#ifndef QT_NO_ACCESSIBILITY + +Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QMacAccessibilityElement)); + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QAccessibleCache :public QObject +{ + Q_OBJECT + +public: + static QAccessibleCache *instance(); + QAccessibleInterface *interfaceForId(QAccessible::Id id) const; + QAccessible::Id idForInterface(QAccessibleInterface *iface) const; + QAccessible::Id insert(QObject *object, QAccessibleInterface *iface) const; + void deleteInterface(QAccessible::Id id, QObject *obj = 0); + +#ifdef Q_OS_MAC + QT_MANGLE_NAMESPACE(QMacAccessibilityElement) *elementForId(QAccessible::Id axid) const; + void insertElement(QAccessible::Id axid, QT_MANGLE_NAMESPACE(QMacAccessibilityElement) *element) const; +#endif + +private Q_SLOTS: + void objectDestroyed(QObject *obj); + +private: + QAccessible::Id acquireId() const; + + mutable QHash idToInterface; + mutable QHash interfaceToId; + mutable QHash objectToId; + +#ifdef Q_OS_MAC + void removeCocoaElement(QAccessible::Id axid); + mutable QHash cocoaElements; +#endif + + friend class QAccessible; + friend class QAccessibleInterface; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_ACCESSIBILITY + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qbezier_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qbezier_p.h new file mode 100644 index 000000000..f8a91e9ef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qbezier_p.h @@ -0,0 +1,275 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBEZIER_P_H +#define QBEZIER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qpoint.h" +#include "QtCore/qline.h" +#include "QtCore/qrect.h" +#include "QtCore/qvector.h" +#include "QtCore/qlist.h" +#include "QtCore/qpair.h" +#include "QtGui/qtransform.h" +#include + +QT_BEGIN_NAMESPACE + +class QPolygonF; + +class Q_GUI_EXPORT QBezier +{ +public: + static QBezier fromPoints(const QPointF &p1, const QPointF &p2, + const QPointF &p3, const QPointF &p4); + + static void coefficients(qreal t, qreal &a, qreal &b, qreal &c, qreal &d); + + inline QPointF pointAt(qreal t) const; + inline QPointF normalVector(qreal t) const; + + inline QPointF derivedAt(qreal t) const; + inline QPointF secondDerivedAt(qreal t) const; + + QPolygonF toPolygon(qreal bezier_flattening_threshold = 0.5) const; + void addToPolygon(QPolygonF *p, qreal bezier_flattening_threshold = 0.5) const; + void addToPolygon(QDataBuffer &polygon, qreal bezier_flattening_threshold) const; + + QRectF bounds() const; + qreal length(qreal error = 0.01) const; + void addIfClose(qreal *length, qreal error) const; + + qreal tAtLength(qreal len) const; + + int stationaryYPoints(qreal &t0, qreal &t1) const; + qreal tForY(qreal t0, qreal t1, qreal y) const; + + QPointF pt1() const { return QPointF(x1, y1); } + QPointF pt2() const { return QPointF(x2, y2); } + QPointF pt3() const { return QPointF(x3, y3); } + QPointF pt4() const { return QPointF(x4, y4); } + + QBezier mapBy(const QTransform &transform) const; + + inline QPointF midPoint() const; + inline QLineF midTangent() const; + + inline QLineF startTangent() const; + inline QLineF endTangent() const; + + inline void parameterSplitLeft(qreal t, QBezier *left); + inline void split(QBezier *firstHalf, QBezier *secondHalf) const; + + int shifted(QBezier *curveSegments, int maxSegmets, + qreal offset, float threshold) const; + + QBezier bezierOnInterval(qreal t0, qreal t1) const; + QBezier getSubRange(qreal t0, qreal t1) const; + + qreal x1, y1, x2, y2, x3, y3, x4, y4; +}; + +inline QPointF QBezier::midPoint() const +{ + return QPointF((x1 + x4 + 3*(x2 + x3))/8., (y1 + y4 + 3*(y2 + y3))/8.); +} + +inline QLineF QBezier::midTangent() const +{ + QPointF mid = midPoint(); + QLineF dir(QLineF(x1, y1, x2, y2).pointAt(0.5), QLineF(x3, y3, x4, y4).pointAt(0.5)); + return QLineF(mid.x() - dir.dx(), mid.y() - dir.dy(), + mid.x() + dir.dx(), mid.y() + dir.dy()); +} + +inline QLineF QBezier::startTangent() const +{ + QLineF tangent(pt1(), pt2()); + if (tangent.isNull()) + tangent = QLineF(pt1(), pt3()); + if (tangent.isNull()) + tangent = QLineF(pt1(), pt4()); + return tangent; +} + +inline QLineF QBezier::endTangent() const +{ + QLineF tangent(pt4(), pt3()); + if (tangent.isNull()) + tangent = QLineF(pt4(), pt2()); + if (tangent.isNull()) + tangent = QLineF(pt4(), pt1()); + return tangent; +} + +inline void QBezier::coefficients(qreal t, qreal &a, qreal &b, qreal &c, qreal &d) +{ + qreal m_t = 1. - t; + b = m_t * m_t; + c = t * t; + d = c * t; + a = b * m_t; + b *= 3. * t; + c *= 3. * m_t; +} + +inline QPointF QBezier::pointAt(qreal t) const +{ + // numerically more stable: + qreal x, y; + + qreal m_t = 1. - t; + { + qreal a = x1*m_t + x2*t; + qreal b = x2*m_t + x3*t; + qreal c = x3*m_t + x4*t; + a = a*m_t + b*t; + b = b*m_t + c*t; + x = a*m_t + b*t; + } + { + qreal a = y1*m_t + y2*t; + qreal b = y2*m_t + y3*t; + qreal c = y3*m_t + y4*t; + a = a*m_t + b*t; + b = b*m_t + c*t; + y = a*m_t + b*t; + } + return QPointF(x, y); +} + +inline QPointF QBezier::normalVector(qreal t) const +{ + qreal m_t = 1. - t; + qreal a = m_t * m_t; + qreal b = t * m_t; + qreal c = t * t; + + return QPointF((y2-y1) * a + (y3-y2) * b + (y4-y3) * c, -(x2-x1) * a - (x3-x2) * b - (x4-x3) * c); +} + +inline QPointF QBezier::derivedAt(qreal t) const +{ + // p'(t) = 3 * (-(1-2t+t^2) * p0 + (1 - 4 * t + 3 * t^2) * p1 + (2 * t - 3 * t^2) * p2 + t^2 * p3) + + qreal m_t = 1. - t; + + qreal d = t * t; + qreal a = -m_t * m_t; + qreal b = 1 - 4 * t + 3 * d; + qreal c = 2 * t - 3 * d; + + return 3 * QPointF(a * x1 + b * x2 + c * x3 + d * x4, + a * y1 + b * y2 + c * y3 + d * y4); +} + +inline QPointF QBezier::secondDerivedAt(qreal t) const +{ + qreal a = 2. - 2. * t; + qreal b = -4 + 6 * t; + qreal c = 2 - 6 * t; + qreal d = 2 * t; + + return 3 * QPointF(a * x1 + b * x2 + c * x3 + d * x4, + a * y1 + b * y2 + c * y3 + d * y4); +} + +inline void QBezier::split(QBezier *firstHalf, QBezier *secondHalf) const +{ + Q_ASSERT(firstHalf); + Q_ASSERT(secondHalf); + + qreal c = (x2 + x3)*.5; + firstHalf->x2 = (x1 + x2)*.5; + secondHalf->x3 = (x3 + x4)*.5; + firstHalf->x1 = x1; + secondHalf->x4 = x4; + firstHalf->x3 = (firstHalf->x2 + c)*.5; + secondHalf->x2 = (secondHalf->x3 + c)*.5; + firstHalf->x4 = secondHalf->x1 = (firstHalf->x3 + secondHalf->x2)*.5; + + c = (y2 + y3)/2; + firstHalf->y2 = (y1 + y2)*.5; + secondHalf->y3 = (y3 + y4)*.5; + firstHalf->y1 = y1; + secondHalf->y4 = y4; + firstHalf->y3 = (firstHalf->y2 + c)*.5; + secondHalf->y2 = (secondHalf->y3 + c)*.5; + firstHalf->y4 = secondHalf->y1 = (firstHalf->y3 + secondHalf->y2)*.5; +} + +inline void QBezier::parameterSplitLeft(qreal t, QBezier *left) +{ + left->x1 = x1; + left->y1 = y1; + + left->x2 = x1 + t * ( x2 - x1 ); + left->y2 = y1 + t * ( y2 - y1 ); + + left->x3 = x2 + t * ( x3 - x2 ); // temporary holding spot + left->y3 = y2 + t * ( y3 - y2 ); // temporary holding spot + + x3 = x3 + t * ( x4 - x3 ); + y3 = y3 + t * ( y4 - y3 ); + + x2 = left->x3 + t * ( x3 - left->x3); + y2 = left->y3 + t * ( y3 - left->y3); + + left->x3 = left->x2 + t * ( left->x3 - left->x2 ); + left->y3 = left->y2 + t * ( left->y3 - left->y2 ); + + left->x4 = x1 = left->x3 + t * (x2 - left->x3); + left->y4 = y1 = left->y3 + t * (y2 - left->y3); +} + +QT_END_NAMESPACE + +#endif // QBEZIER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qblendfunctions_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qblendfunctions_p.h new file mode 100644 index 000000000..167f72514 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qblendfunctions_p.h @@ -0,0 +1,516 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBLENDFUNCTIONS_P_H +#define QBLENDFUNCTIONS_P_H + +#include +#include +#include "qdrawhelper_p.h" + +QT_BEGIN_NAMESPACE + +// +// 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. +// + +template +void qt_scale_image_16bit(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, int srch, + const QRectF &targetRect, + const QRectF &srcRect, + const QRect &clip, + T blender) +{ + qreal sx = targetRect.width() / (qreal) srcRect.width(); + qreal sy = targetRect.height() / (qreal) srcRect.height(); + + int ix = 0x00010000 / sx; + int iy = 0x00010000 / sy; + +// qDebug() << "scale:" << endl +// << " - target" << targetRect << endl +// << " - source" << srcRect << endl +// << " - clip" << clip << endl +// << " - sx=" << sx << " sy=" << sy << " ix=" << ix << " iy=" << iy; + + int cx1 = clip.x(); + int cx2 = clip.x() + clip.width(); + int cy1 = clip.top(); + int cy2 = clip.y() + clip.height(); + + int tx1 = qRound(targetRect.left()); + int tx2 = qRound(targetRect.right()); + int ty1 = qRound(targetRect.top()); + int ty2 = qRound(targetRect.bottom()); + + if (tx2 < tx1) + qSwap(tx2, tx1); + + if (ty2 < ty1) + qSwap(ty2, ty1); + + if (tx1 < cx1) + tx1 = cx1; + + if (tx2 >= cx2) + tx2 = cx2; + + if (tx1 >= tx2) + return; + + if (ty1 < cy1) + ty1 = cy1; + + if (ty2 >= cy2) + ty2 = cy2; + + if (ty1 >= ty2) + return; + + int h = ty2 - ty1; + int w = tx2 - tx1; + + + quint32 basex; + quint32 srcy; + + if (sx < 0) { + int dstx = qFloor((tx1 + qreal(0.5) - targetRect.right()) * ix) + 1; + basex = quint32(srcRect.right() * 65536) + dstx; + } else { + int dstx = qCeil((tx1 + qreal(0.5) - targetRect.left()) * ix) - 1; + basex = quint32(srcRect.left() * 65536) + dstx; + } + if (sy < 0) { + int dsty = qFloor((ty1 + qreal(0.5) - targetRect.bottom()) * iy) + 1; + srcy = quint32(srcRect.bottom() * 65536) + dsty; + } else { + int dsty = qCeil((ty1 + qreal(0.5) - targetRect.top()) * iy) - 1; + srcy = quint32(srcRect.top() * 65536) + dsty; + } + + quint16 *dst = ((quint16 *) (destPixels + ty1 * dbpl)) + tx1; + + // this bounds check here is required as floating point rounding above might in some cases lead to + // w/h values that are one pixel too large, falling outside of the valid image area. + int yend = (srcy + iy * (h - 1)) >> 16; + if (yend < 0 || yend >= srch) + --h; + int xend = (basex + ix * (w - 1)) >> 16; + if (xend < 0 || xend >= (int)(sbpl/sizeof(SRC))) + --w; + + while (h--) { + const SRC *src = (const SRC *) (srcPixels + (srcy >> 16) * sbpl); + quint32 srcx = basex; + int x = 0; + for (; x> 16]); srcx += ix; + blender.write(&dst[x+1], src[srcx >> 16]); srcx += ix; + blender.write(&dst[x+2], src[srcx >> 16]); srcx += ix; + blender.write(&dst[x+3], src[srcx >> 16]); srcx += ix; + blender.write(&dst[x+4], src[srcx >> 16]); srcx += ix; + blender.write(&dst[x+5], src[srcx >> 16]); srcx += ix; + blender.write(&dst[x+6], src[srcx >> 16]); srcx += ix; + blender.write(&dst[x+7], src[srcx >> 16]); srcx += ix; + } + for (; x> 16]); + srcx += ix; + } + blender.flush(&dst[x]); + dst = (quint16 *)(((uchar *) dst) + dbpl); + srcy += iy; + } +} + +template void qt_scale_image_32bit(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, int srch, + const QRectF &targetRect, + const QRectF &srcRect, + const QRect &clip, + T blender) +{ + qreal sx = targetRect.width() / (qreal) srcRect.width(); + qreal sy = targetRect.height() / (qreal) srcRect.height(); + + int ix = 0x00010000 / sx; + int iy = 0x00010000 / sy; + +// qDebug() << "scale:" << endl +// << " - target" << targetRect << endl +// << " - source" << srcRect << endl +// << " - clip" << clip << endl +// << " - sx=" << sx << " sy=" << sy << " ix=" << ix << " iy=" << iy; + + int cx1 = clip.x(); + int cx2 = clip.x() + clip.width(); + int cy1 = clip.top(); + int cy2 = clip.y() + clip.height(); + + int tx1 = qRound(targetRect.left()); + int tx2 = qRound(targetRect.right()); + int ty1 = qRound(targetRect.top()); + int ty2 = qRound(targetRect.bottom()); + + if (tx2 < tx1) + qSwap(tx2, tx1); + + if (ty2 < ty1) + qSwap(ty2, ty1); + + if (tx1 < cx1) + tx1 = cx1; + + if (tx2 >= cx2) + tx2 = cx2; + + if (tx1 >= tx2) + return; + + if (ty1 < cy1) + ty1 = cy1; + + if (ty2 >= cy2) + ty2 = cy2; + + if (ty1 >= ty2) + return; + + int h = ty2 - ty1; + int w = tx2 - tx1; + if (!w || !h) + return; + + quint32 basex; + quint32 srcy; + + if (sx < 0) { + int dstx = qFloor((tx1 + qreal(0.5) - targetRect.right()) * ix) + 1; + basex = quint32(srcRect.right() * 65536) + dstx; + } else { + int dstx = qCeil((tx1 + qreal(0.5) - targetRect.left()) * ix) - 1; + basex = quint32(srcRect.left() * 65536) + dstx; + } + if (sy < 0) { + int dsty = qFloor((ty1 + qreal(0.5) - targetRect.bottom()) * iy) + 1; + srcy = quint32(srcRect.bottom() * 65536) + dsty; + } else { + int dsty = qCeil((ty1 + qreal(0.5) - targetRect.top()) * iy) - 1; + srcy = quint32(srcRect.top() * 65536) + dsty; + } + + quint32 *dst = ((quint32 *) (destPixels + ty1 * dbpl)) + tx1; + + // this bounds check here is required as floating point rounding above might in some cases lead to + // w/h values that are one pixel too large, falling outside of the valid image area. + int yend = (srcy + iy * (h - 1)) >> 16; + if (yend < 0 || yend >= srch) + --h; + int xend = (basex + ix * (w - 1)) >> 16; + if (xend < 0 || xend >= (int)(sbpl/sizeof(quint32))) + --w; + + while (h--) { + const uint *src = (const quint32 *) (srcPixels + (srcy >> 16) * sbpl); + quint32 srcx = basex; + int x = 0; + for (; x> 16]); + srcx += ix; + } + blender.flush(&dst[x]); + dst = (quint32 *)(((uchar *) dst) + dbpl); + srcy += iy; + } +} + +struct QTransformImageVertex +{ + qreal x, y, u, v; // destination coordinates (x, y) and source coordinates (u, v) +}; + +template +void qt_transform_image_rasterize(DestT *destPixels, int dbpl, + const SrcT *srcPixels, int sbpl, + const QTransformImageVertex &topLeft, const QTransformImageVertex &bottomLeft, + const QTransformImageVertex &topRight, const QTransformImageVertex &bottomRight, + const QRect &sourceRect, + const QRect &clip, + qreal topY, qreal bottomY, + int dudx, int dvdx, int dudy, int dvdy, int u0, int v0, + Blender blender) +{ + int fromY = qMax(qRound(topY), clip.top()); + int toY = qMin(qRound(bottomY), clip.top() + clip.height()); + if (fromY >= toY) + return; + + qreal leftSlope = (bottomLeft.x - topLeft.x) / (bottomLeft.y - topLeft.y); + qreal rightSlope = (bottomRight.x - topRight.x) / (bottomRight.y - topRight.y); + int dx_l = int(leftSlope * 0x10000); + int dx_r = int(rightSlope * 0x10000); + int x_l = int((topLeft.x + (qreal(0.5) + fromY - topLeft.y) * leftSlope + qreal(0.5)) * 0x10000); + int x_r = int((topRight.x + (qreal(0.5) + fromY - topRight.y) * rightSlope + qreal(0.5)) * 0x10000); + + int fromX, toX, x1, x2, u, v, i, ii; + DestT *line; + for (int y = fromY; y < toY; ++y) { + line = reinterpret_cast(reinterpret_cast(destPixels) + y * dbpl); + + fromX = qMax(x_l >> 16, clip.left()); + toX = qMin(x_r >> 16, clip.left() + clip.width()); + if (fromX < toX) { + // Because of rounding, we can get source coordinates outside the source image. + // Clamp these coordinates to the source rect to avoid segmentation fault and + // garbage on the screen. + + // Find the first pixel on the current scan line where the source coordinates are within the source rect. + x1 = fromX; + u = x1 * dudx + y * dudy + u0; + v = x1 * dvdx + y * dvdy + v0; + for (; x1 < toX; ++x1) { + int uu = u >> 16; + int vv = v >> 16; + if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width() + && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) { + break; + } + u += dudx; + v += dvdx; + } + + // Find the last pixel on the current scan line where the source coordinates are within the source rect. + x2 = toX; + u = (x2 - 1) * dudx + y * dudy + u0; + v = (x2 - 1) * dvdx + y * dvdy + v0; + for (; x2 > x1; --x2) { + int uu = u >> 16; + int vv = v >> 16; + if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width() + && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) { + break; + } + u -= dudx; + v -= dvdx; + } + + // Set up values at the beginning of the scan line. + u = fromX * dudx + y * dudy + u0; + v = fromX * dvdx + y * dvdy + v0; + line += fromX; + + // Beginning of the scan line, with per-pixel checks. + i = x1 - fromX; + while (i) { + int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1); + int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1); + blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + vv * sbpl)[uu]); + u += dudx; + v += dvdx; + ++line; + --i; + } + + // Middle of the scan line, without checks. + // Manual loop unrolling. + i = x2 - x1; + ii = i >> 3; + while (ii) { + blender.write(&line[0], reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[1], reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[2], reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[3], reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[4], reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[5], reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[6], reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[7], reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + + line += 8; + + --ii; + } + switch (i & 7) { + case 7: blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH(); + case 6: blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH(); + case 5: blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH(); + case 4: blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH(); + case 3: blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH(); + case 2: blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH(); + case 1: blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; + } + + // End of the scan line, with per-pixel checks. + i = toX - x2; + while (i) { + int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1); + int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1); + blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + vv * sbpl)[uu]); + u += dudx; + v += dvdx; + ++line; + --i; + } + + blender.flush(line); + } + x_l += dx_l; + x_r += dx_r; + } +} + +template +void qt_transform_image(DestT *destPixels, int dbpl, + const SrcT *srcPixels, int sbpl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + const QTransform &targetRectTransform, + Blender blender) +{ + enum Corner + { + TopLeft, + TopRight, + BottomRight, + BottomLeft + }; + + // map source rectangle to destination. + QTransformImageVertex v[4]; + v[TopLeft].u = v[BottomLeft].u = sourceRect.left(); + v[TopLeft].v = v[TopRight].v = sourceRect.top(); + v[TopRight].u = v[BottomRight].u = sourceRect.right(); + v[BottomLeft].v = v[BottomRight].v = sourceRect.bottom(); + targetRectTransform.map(targetRect.left(), targetRect.top(), &v[TopLeft].x, &v[TopLeft].y); + targetRectTransform.map(targetRect.right(), targetRect.top(), &v[TopRight].x, &v[TopRight].y); + targetRectTransform.map(targetRect.left(), targetRect.bottom(), &v[BottomLeft].x, &v[BottomLeft].y); + targetRectTransform.map(targetRect.right(), targetRect.bottom(), &v[BottomRight].x, &v[BottomRight].y); + + // find topmost vertex. + int topmost = 0; + for (int i = 1; i < 4; ++i) { + if (v[i].y < v[topmost].y) + topmost = i; + } + // rearrange array such that topmost vertex is at index 0. + switch (topmost) { + case 1: + { + QTransformImageVertex t = v[0]; + for (int i = 0; i < 3; ++i) + v[i] = v[i+1]; + v[3] = t; + } + break; + case 2: + qSwap(v[0], v[2]); + qSwap(v[1], v[3]); + break; + case 3: + { + QTransformImageVertex t = v[3]; + for (int i = 3; i > 0; --i) + v[i] = v[i-1]; + v[0] = t; + } + break; + } + + // if necessary, swap vertex 1 and 3 such that 1 is to the left of 3. + qreal dx1 = v[1].x - v[0].x; + qreal dy1 = v[1].y - v[0].y; + qreal dx2 = v[3].x - v[0].x; + qreal dy2 = v[3].y - v[0].y; + if (dx1 * dy2 - dx2 * dy1 > 0) + qSwap(v[1], v[3]); + + QTransformImageVertex u = {v[1].x - v[0].x, v[1].y - v[0].y, v[1].u - v[0].u, v[1].v - v[0].v}; + QTransformImageVertex w = {v[2].x - v[0].x, v[2].y - v[0].y, v[2].u - v[0].u, v[2].v - v[0].v}; + + qreal det = u.x * w.y - u.y * w.x; + if (det == 0) + return; + + qreal invDet = 1.0 / det; + qreal m11, m12, m21, m22, mdx, mdy; + + m11 = (u.u * w.y - u.y * w.u) * invDet; + m12 = (u.x * w.u - u.u * w.x) * invDet; + m21 = (u.v * w.y - u.y * w.v) * invDet; + m22 = (u.x * w.v - u.v * w.x) * invDet; + mdx = v[0].u - m11 * v[0].x - m12 * v[0].y; + mdy = v[0].v - m21 * v[0].x - m22 * v[0].y; + + int dudx = int(m11 * 0x10000); + int dvdx = int(m21 * 0x10000); + int dudy = int(m12 * 0x10000); + int dvdy = int(m22 * 0x10000); + int u0 = qCeil((qreal(0.5) * m11 + qreal(0.5) * m12 + mdx) * 0x10000) - 1; + int v0 = qCeil((qreal(0.5) * m21 + qreal(0.5) * m22 + mdy) * 0x10000) - 1; + + int x1 = qFloor(sourceRect.left()); + int y1 = qFloor(sourceRect.top()); + int x2 = qCeil(sourceRect.right()); + int y2 = qCeil(sourceRect.bottom()); + QRect sourceRectI(x1, y1, x2 - x1, y2 - y1); + + // rasterize trapezoids. + if (v[1].y < v[3].y) { + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[0], v[1], v[0], v[3], sourceRectI, clip, v[0].y, v[1].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[1], v[2], v[0], v[3], sourceRectI, clip, v[1].y, v[3].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[1], v[2], v[3], v[2], sourceRectI, clip, v[3].y, v[2].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + } else { + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[0], v[1], v[0], v[3], sourceRectI, clip, v[0].y, v[3].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[0], v[1], v[3], v[2], sourceRectI, clip, v[3].y, v[1].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[1], v[2], v[3], v[2], sourceRectI, clip, v[1].y, v[2].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + } +} + +QT_END_NAMESPACE + +#endif // QBLENDFUNCTIONS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qblittable_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qblittable_p.h new file mode 100644 index 000000000..24440c3c6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qblittable_p.h @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBLITTABLE_P_H +#define QBLITTABLE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + + +#ifndef QT_NO_BLITTABLE +QT_BEGIN_NAMESPACE + +class QImage; +class QBlittablePrivate; + +class Q_GUI_EXPORT QBlittable +{ + Q_DECLARE_PRIVATE(QBlittable) +public: + enum Capability { + + SolidRectCapability = 0x0001, + SourcePixmapCapability = 0x0002, + SourceOverPixmapCapability = 0x0004, + SourceOverScaledPixmapCapability = 0x0008, + AlphaFillRectCapability = 0x0010, + OpacityPixmapCapability = 0x0020, + DrawScaledCachedGlyphsCapability = 0x0040, + SubPixelGlyphsCapability = 0x0080, + ComplexClipCapability = 0x0100, + + // Internal ones + OutlineCapability = 0x0001000 + }; + Q_DECLARE_FLAGS (Capabilities, Capability) + + QBlittable(const QSize &size, Capabilities caps); + virtual ~QBlittable(); + + Capabilities capabilities() const; + QSize size() const; + + virtual void fillRect(const QRectF &rect, const QColor &color) = 0; + virtual void drawPixmap(const QRectF &rect, const QPixmap &pixmap, const QRectF &subrect) = 0; + virtual void alphaFillRect(const QRectF &rect, const QColor &color, QPainter::CompositionMode cmode) { + Q_UNUSED(rect); + Q_UNUSED(color); + Q_UNUSED(cmode); + qWarning("Please implement alphaFillRect function in your platform or remove AlphaFillRectCapability from it"); + } + virtual void drawPixmapOpacity(const QRectF &rect, const QPixmap &pixmap, const QRectF &subrect, QPainter::CompositionMode cmode, qreal opacity) { + Q_UNUSED(rect); + Q_UNUSED(pixmap); + Q_UNUSED(subrect); + Q_UNUSED(cmode); + Q_UNUSED(opacity); + qWarning("Please implement drawPixmapOpacity function in your platform or remove OpacityPixmapCapability from it"); + } + virtual bool drawCachedGlyphs(const QPaintEngineState *state, QFontEngine::GlyphFormat glyphFormat, int numGlyphs, const glyph_t *glyphs, const QFixedPoint *positions, QFontEngine *fontEngine) { + Q_UNUSED(state); + Q_UNUSED(glyphFormat); + Q_UNUSED(numGlyphs); + Q_UNUSED(glyphs); + Q_UNUSED(positions); + Q_UNUSED(fontEngine); + qWarning("Please implement drawCachedGlyphs function in your platform or remove DrawCachedGlyphsCapability from it"); + return true; + } + + + QImage *lock(); + void unlock(); + + bool isLocked() const; + +protected: + virtual QImage *doLock() = 0; + virtual void doUnlock() = 0; + QBlittablePrivate *d_ptr; +}; + +QT_END_NAMESPACE +#endif //QT_NO_BLITTABLE +#endif //QBLITTABLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qbmphandler_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qbmphandler_p.h new file mode 100644 index 000000000..56b39dd0f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qbmphandler_p.h @@ -0,0 +1,146 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBMPHANDLER_P_H +#define QBMPHANDLER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtGui/qimageiohandler.h" + +#ifndef QT_NO_IMAGEFORMAT_BMP + +QT_BEGIN_NAMESPACE + +struct BMP_FILEHDR { // BMP file header + char bfType[2]; // "BM" + qint32 bfSize; // size of file + qint16 bfReserved1; + qint16 bfReserved2; + qint32 bfOffBits; // pointer to the pixmap bits +}; + +struct BMP_INFOHDR { // BMP information header + qint32 biSize; // size of this struct + qint32 biWidth; // pixmap width + qint32 biHeight; // pixmap height + qint16 biPlanes; // should be 1 + qint16 biBitCount; // number of bits per pixel + qint32 biCompression; // compression method + qint32 biSizeImage; // size of image + qint32 biXPelsPerMeter; // horizontal resolution + qint32 biYPelsPerMeter; // vertical resolution + qint32 biClrUsed; // number of colors used + qint32 biClrImportant; // number of important colors + // V4: + quint32 biRedMask; + quint32 biGreenMask; + quint32 biBlueMask; + quint32 biAlphaMask; + qint32 biCSType; + qint32 biEndpoints[9]; + qint32 biGammaRed; + qint32 biGammaGreen; + qint32 biGammaBlue; + // V5: + qint32 biIntent; + qint32 biProfileData; + qint32 biProfileSize; + qint32 biReserved; +}; + +// BMP-Handler, which is also able to read and write the DIB +// (Device-Independent-Bitmap) format used internally in the Windows operating +// system for OLE/clipboard operations. DIB is a subset of BMP (without file +// header). The Windows-Lighthouse plugin accesses the DIB-functionality. + +class QBmpHandler : public QImageIOHandler +{ +public: + enum InternalFormat { + DibFormat, + BmpFormat + }; + + explicit QBmpHandler(InternalFormat fmt = BmpFormat); + bool canRead() const override; + bool read(QImage *image) override; + bool write(const QImage &image) override; + + QByteArray name() const override; + + static bool canRead(QIODevice *device); + + QVariant option(ImageOption option) const override; + void setOption(ImageOption option, const QVariant &value) override; + bool supportsOption(ImageOption option) const override; + +private: + bool readHeader(); + inline QByteArray formatName() const; + + enum State { + Ready, + ReadHeader, + Error + }; + + const InternalFormat m_format; + + State state; + BMP_FILEHDR fileHeader; + BMP_INFOHDR infoHeader; + qint64 startpos; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_IMAGEFORMAT_BMP + +#endif // QBMPHANDLER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcolor_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcolor_p.h new file mode 100644 index 000000000..b44f2b163 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcolor_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOLOR_P_H +#define QCOLOR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtGui/qrgb.h" + +QT_BEGIN_NAMESPACE + +bool qt_get_hex_rgb(const char *, QRgb *); + +QT_END_NAMESPACE + +#endif // QCOLOR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcolorprofile_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcolorprofile_p.h new file mode 100644 index 000000000..ca1786ee6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcolorprofile_p.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOLORPROFILE_P_H +#define QCOLORPROFILE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QColorProfile +{ +public: + static QColorProfile *fromGamma(qreal gamma); + static QColorProfile *fromSRgb(); + + // The following methods all convert opaque or unpremultiplied colors: + + QRgba64 toLinear64(QRgb rgb32) const + { + ushort r = m_toLinear[qRed(rgb32) << 4]; + ushort g = m_toLinear[qGreen(rgb32) << 4]; + ushort b = m_toLinear[qBlue(rgb32) << 4]; + r = r + (r >> 8); + g = g + (g >> 8); + b = b + (b >> 8); + return QRgba64::fromRgba64(r, g, b, qAlpha(rgb32) * 257); + } + + QRgb toLinear(QRgb rgb32) const + { + uchar r = (m_toLinear[qRed(rgb32) << 4] + 0x80) >> 8; + uchar g = (m_toLinear[qGreen(rgb32) << 4] + 0x80) >> 8; + uchar b = (m_toLinear[qBlue(rgb32) << 4] + 0x80) >> 8; + return qRgba(r, g, b, qAlpha(rgb32)); + } + + QRgba64 toLinear(QRgba64 rgb64) const + { + ushort r = rgb64.red(); + ushort g = rgb64.green(); + ushort b = rgb64.blue(); + r = r - (r >> 8); + g = g - (g >> 8); + b = b - (b >> 8); + r = m_toLinear[r >> 4]; + g = m_toLinear[g >> 4]; + b = m_toLinear[b >> 4]; + r = r + (r >> 8); + g = g + (g >> 8); + b = b + (b >> 8); + return QRgba64::fromRgba64(r, g, b, rgb64.alpha()); + } + + QRgb fromLinear64(QRgba64 rgb64) const + { + ushort r = rgb64.red(); + ushort g = rgb64.green(); + ushort b = rgb64.blue(); + r = r - (r >> 8); + g = g - (g >> 8); + b = b - (b >> 8); + r = (m_fromLinear[r >> 4] + 0x80) >> 8; + g = (m_fromLinear[g >> 4] + 0x80) >> 8; + b = (m_fromLinear[b >> 4] + 0x80) >> 8; + return qRgba(r, g, b, rgb64.alpha8()); + } + + QRgb fromLinear(QRgb rgb32) const + { + uchar r = (m_fromLinear[qRed(rgb32) << 4] + 0x80) >> 8; + uchar g = (m_fromLinear[qGreen(rgb32) << 4] + 0x80) >> 8; + uchar b = (m_fromLinear[qBlue(rgb32) << 4] + 0x80) >> 8; + return qRgba(r, g, b, qAlpha(rgb32)); + } + + QRgba64 fromLinear(QRgba64 rgb64) const + { + ushort r = rgb64.red(); + ushort g = rgb64.green(); + ushort b = rgb64.blue(); + r = r - (r >> 8); + g = g - (g >> 8); + b = b - (b >> 8); + r = m_fromLinear[r >> 4]; + g = m_fromLinear[g >> 4]; + b = m_fromLinear[b >> 4]; + r = r + (r >> 8); + g = g + (g >> 8); + b = b + (b >> 8); + return QRgba64::fromRgba64(r, g, b, rgb64.alpha()); + } + +private: + QColorProfile() { } + + // We translate to 0-65280 (255*256) instead to 0-65535 to make simple + // shifting an accurate conversion. + // We translate from 0-4080 (255*16) for the same speed up, and to keep + // the tables small enough to fit in most inner caches. + ushort m_toLinear[(255 * 16) + 1]; // [0-4080] -> [0-65280] + ushort m_fromLinear[(255 * 16) + 1]; // [0-4080] -> [0-65280] + +}; + +QT_END_NAMESPACE + +#endif // QCOLORPROFILE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcoregraphics_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcoregraphics_p.h new file mode 100644 index 000000000..6b6a1e800 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcoregraphics_p.h @@ -0,0 +1,131 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOREGRAPHICS_P_H +#define QCOREGRAPHICS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#include + +#if defined(__OBJC__) && defined(Q_OS_MACOS) +#include +#define HAVE_APPKIT +#endif + +QT_BEGIN_NAMESPACE + +#ifdef HAVE_APPKIT +Q_GUI_EXPORT NSImage *qt_mac_create_nsimage(const QPixmap &pm); +Q_GUI_EXPORT NSImage *qt_mac_create_nsimage(const QIcon &icon, int defaultSize = 0); +Q_GUI_EXPORT QPixmap qt_mac_toQPixmap(const NSImage *image, const QSizeF &size); +#endif +Q_GUI_EXPORT CGImageRef qt_mac_toCGImage(const QImage &qImage); +Q_GUI_EXPORT CGImageRef qt_mac_toCGImageMask(const QImage &qImage); +Q_GUI_EXPORT QImage qt_mac_toQImage(CGImageRef image); + +Q_GUI_EXPORT void qt_mac_drawCGImage(CGContextRef inContext, const CGRect *inBounds, CGImageRef inImage); + +Q_GUI_EXPORT CGColorSpaceRef qt_mac_genericColorSpace(); +Q_GUI_EXPORT CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *paintDevice); + +Q_GUI_EXPORT void qt_mac_clip_cg(CGContextRef hd, const QRegion &rgn, CGAffineTransform *orig_xform); + +#ifdef HAVE_APPKIT +Q_GUI_EXPORT QColor qt_mac_toQColor(const NSColor *color); +Q_GUI_EXPORT QBrush qt_mac_toQBrush(const NSColor *color, QPalette::ColorGroup colorGroup = QPalette::Normal); +#endif +Q_GUI_EXPORT QColor qt_mac_toQColor(CGColorRef color); +Q_GUI_EXPORT QBrush qt_mac_toQBrush(CGColorRef color); + +class Q_GUI_EXPORT QMacCGContext +{ +public: + inline QMacCGContext() { context = 0; } + QMacCGContext(QPaintDevice *pdev); + QMacCGContext(QPainter *p); + inline QMacCGContext(CGContextRef cg, bool takeOwnership = false) { + context = cg; + if (!takeOwnership) + CGContextRetain(context); + } + inline QMacCGContext(const QMacCGContext ©) : context(0) { *this = copy; } + inline ~QMacCGContext() { + if (context) + CGContextRelease(context); + } + inline bool isNull() const { return context; } + inline operator CGContextRef() { return context; } + inline QMacCGContext &operator=(const QMacCGContext ©) { + if (context) + CGContextRelease(context); + context = copy.context; + CGContextRetain(context); + return *this; + } + inline QMacCGContext &operator=(CGContextRef cg) { + if (context) + CGContextRelease(context); + context = cg; + CGContextRetain(context); //we do not take ownership + return *this; + } + +private: + CGContextRef context; +}; + +QT_END_NAMESPACE + +#undef HAVE_APPKIT + +#endif // QCOREGRAPHICS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcosmeticstroker_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcosmeticstroker_p.h new file mode 100644 index 000000000..68f4e00cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcosmeticstroker_p.h @@ -0,0 +1,168 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOSMETICSTROKER_P_H +#define QCOSMETICSTROKER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class QCosmeticStroker; + + +typedef bool (*StrokeLine)(QCosmeticStroker *stroker, qreal x1, qreal y1, qreal x2, qreal y2, int caps); + +class QCosmeticStroker +{ +public: + struct Point { + int x; + int y; + }; + struct PointF { + qreal x; + qreal y; + }; + + enum Caps { + NoCaps = 0, + CapBegin = 0x1, + CapEnd = 0x2 + }; + + // used to avoid drop outs or duplicated points + enum Direction { + TopToBottom = 0x1, + BottomToTop = 0x2, + LeftToRight = 0x4, + RightToLeft = 0x8, + VerticalMask = 0x3, + HorizontalMask = 0xc + }; + + QCosmeticStroker(QRasterPaintEngineState *s, const QRect &dr, const QRect &dr_unclipped) + : state(s), + deviceRect(dr_unclipped), + clip(dr), + pattern(0), + reversePattern(0), + patternSize(0), + patternLength(0), + patternOffset(0), + legacyRounding(false), + current_span(0), + lastDir(LeftToRight), + lastAxisAligned(false) + { setup(); } + + ~QCosmeticStroker() { free(pattern); free(reversePattern); } + + void setLegacyRoundingEnabled(bool legacyRoundingEnabled) { legacyRounding = legacyRoundingEnabled; } + + void drawLine(const QPointF &p1, const QPointF &p2); + void drawPath(const QVectorPath &path); + void drawPoints(const QPoint *points, int num); + void drawPoints(const QPointF *points, int num); + + + QRasterPaintEngineState *state; + QRect deviceRect; + QRect clip; + // clip bounds in real + qreal xmin, xmax; + qreal ymin, ymax; + + StrokeLine stroke; + bool drawCaps; + + int *pattern; + int *reversePattern; + int patternSize; + int patternLength; + int patternOffset; + + bool legacyRounding; + + enum { NSPANS = 255 }; + QT_FT_Span spans[NSPANS]; + int current_span; + ProcessSpans blend; + + int opacity; + + uint color; + uint *pixels; + int ppl; + + Direction lastDir; + Point lastPixel; + bool lastAxisAligned; + +private: + void setup(); + + void renderCubic(const QPointF &p1, const QPointF &p2, const QPointF &p3, const QPointF &p4, int caps); + void renderCubicSubdivision(PointF *points, int level, int caps); + // used for closed subpaths + void calculateLastPoint(qreal rx1, qreal ry1, qreal rx2, qreal ry2); + +public: + bool clipLine(qreal &x1, qreal &y1, qreal &x2, qreal &y2); +}; + +QT_END_NAMESPACE + +#endif // QCOSMETICLINE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcssparser_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcssparser_p.h new file mode 100644 index 000000000..c1594531e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcssparser_p.h @@ -0,0 +1,883 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCSSPARSER_P_H +#define QCSSPARSER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE +class QIcon; +QT_END_NAMESPACE + +#ifndef QT_NO_CSSPARSER + +// VxWorks defines NONE as (-1) "for times when NULL won't do" +#if defined(Q_OS_VXWORKS) && defined(NONE) +# undef NONE +#endif +#if defined(Q_OS_INTEGRITY) +# undef Value +#endif +// Hurd has #define TILDE 0x00080000 from +#if defined(TILDE) +# undef TILDE +#endif + +#define QT_CSS_DECLARE_TYPEINFO(Class, Type) \ + } /* namespace QCss */ \ + Q_DECLARE_TYPEINFO(QCss:: Class, Type); \ + namespace QCss { + +QT_BEGIN_NAMESPACE + +namespace QCss +{ + +enum Property { + UnknownProperty, + BackgroundColor, + Color, + Float, + Font, + FontFamily, + FontSize, + FontStyle, + FontWeight, + Margin, + MarginBottom, + MarginLeft, + MarginRight, + MarginTop, + QtBlockIndent, + QtListIndent, + QtParagraphType, + QtTableType, + QtUserState, + TextDecoration, + TextIndent, + TextUnderlineStyle, + VerticalAlignment, + Whitespace, + QtSelectionForeground, + QtSelectionBackground, + Border, + BorderLeft, + BorderRight, + BorderTop, + BorderBottom, + Padding, + PaddingLeft, + PaddingRight, + PaddingTop, + PaddingBottom, + PageBreakBefore, + PageBreakAfter, + QtAlternateBackground, + BorderLeftStyle, + BorderRightStyle, + BorderTopStyle, + BorderBottomStyle, + BorderStyles, + BorderLeftColor, + BorderRightColor, + BorderTopColor, + BorderBottomColor, + BorderColor, + BorderLeftWidth, + BorderRightWidth, + BorderTopWidth, + BorderBottomWidth, + BorderWidth, + BorderTopLeftRadius, + BorderTopRightRadius, + BorderBottomLeftRadius, + BorderBottomRightRadius, + BorderRadius, + Background, + BackgroundOrigin, + BackgroundClip, + BackgroundRepeat, + BackgroundPosition, + BackgroundAttachment, + BackgroundImage, + BorderImage, + QtSpacing, + Width, + Height, + MinimumWidth, + MinimumHeight, + MaximumWidth, + MaximumHeight, + QtImage, + Left, + Right, + Top, + Bottom, + QtOrigin, + QtPosition, + Position, + QtStyleFeatures, + QtBackgroundRole, + ListStyleType, + ListStyle, + QtImageAlignment, + TextAlignment, + Outline, + OutlineOffset, + OutlineWidth, + OutlineColor, + OutlineStyle, + OutlineRadius, + OutlineTopLeftRadius, + OutlineTopRightRadius, + OutlineBottomLeftRadius, + OutlineBottomRightRadius, + FontVariant, + TextTransform, + QtListNumberPrefix, + QtListNumberSuffix, + LineHeight, + QtLineHeightType, + NumProperties +}; + +enum KnownValue { + UnknownValue, + Value_Normal, + Value_Pre, + Value_NoWrap, + Value_PreWrap, + Value_Small, + Value_Medium, + Value_Large, + Value_XLarge, + Value_XXLarge, + Value_Italic, + Value_Oblique, + Value_Bold, + Value_Underline, + Value_Overline, + Value_LineThrough, + Value_Sub, + Value_Super, + Value_Left, + Value_Right, + Value_Top, + Value_Bottom, + Value_Center, + Value_Native, + Value_Solid, + Value_Dotted, + Value_Dashed, + Value_DotDash, + Value_DotDotDash, + Value_Double, + Value_Groove, + Value_Ridge, + Value_Inset, + Value_Outset, + Value_Wave, + Value_Middle, + Value_Auto, + Value_Always, + Value_None, + Value_Transparent, + Value_Disc, + Value_Circle, + Value_Square, + Value_Decimal, + Value_LowerAlpha, + Value_UpperAlpha, + Value_LowerRoman, + Value_UpperRoman, + Value_SmallCaps, + Value_Uppercase, + Value_Lowercase, + + /* keep these in same order as QPalette::ColorRole */ + Value_FirstColorRole, + Value_WindowText = Value_FirstColorRole, + Value_Button, + Value_Light, + Value_Midlight, + Value_Dark, + Value_Mid, + Value_Text, + Value_BrightText, + Value_ButtonText, + Value_Base, + Value_Window, + Value_Shadow, + Value_Highlight, + Value_HighlightedText, + Value_Link, + Value_LinkVisited, + Value_AlternateBase, + Value_LastColorRole = Value_AlternateBase, + + Value_Disabled, + Value_Active, + Value_Selected, + Value_On, + Value_Off, + + NumKnownValues +}; + +enum BorderStyle { + BorderStyle_Unknown, + BorderStyle_None, + BorderStyle_Dotted, + BorderStyle_Dashed, + BorderStyle_Solid, + BorderStyle_Double, + BorderStyle_DotDash, + BorderStyle_DotDotDash, + BorderStyle_Groove, + BorderStyle_Ridge, + BorderStyle_Inset, + BorderStyle_Outset, + BorderStyle_Native, + NumKnownBorderStyles +}; + +enum Edge { + TopEdge, + RightEdge, + BottomEdge, + LeftEdge, + NumEdges +}; + +enum Corner { + TopLeftCorner, + TopRightCorner, + BottomLeftCorner, + BottomRightCorner +}; + +enum TileMode { + TileMode_Unknown, + TileMode_Round, + TileMode_Stretch, + TileMode_Repeat, + NumKnownTileModes +}; + +enum Repeat { + Repeat_Unknown, + Repeat_None, + Repeat_X, + Repeat_Y, + Repeat_XY, + NumKnownRepeats +}; + +enum Origin { + Origin_Unknown, + Origin_Padding, + Origin_Border, + Origin_Content, + Origin_Margin, + NumKnownOrigins +}; + +enum PositionMode { + PositionMode_Unknown, + PositionMode_Static, + PositionMode_Relative, + PositionMode_Absolute, + PositionMode_Fixed, + NumKnownPositionModes +}; + +enum Attachment { + Attachment_Unknown, + Attachment_Fixed, + Attachment_Scroll, + NumKnownAttachments +}; + +enum StyleFeature { + StyleFeature_None = 0, + StyleFeature_BackgroundColor = 1, + StyleFeature_BackgroundGradient = 2, + NumKnownStyleFeatures = 4 +}; + +struct Value +{ + enum Type { + Unknown, + Number, + Percentage, + Length, + String, + Identifier, + KnownIdentifier, + Uri, + Color, + Function, + TermOperatorSlash, + TermOperatorComma + }; + inline Value() : type(Unknown) { } + Type type; + QVariant variant; + + Q_GUI_EXPORT QString toString() const; +}; +QT_CSS_DECLARE_TYPEINFO(Value, Q_MOVABLE_TYPE) + +struct ColorData { + ColorData() : role(QPalette::NoRole), type(Invalid) {} + ColorData(const QColor &col) : color(col), role(QPalette::NoRole), type(Color) {} + ColorData(QPalette::ColorRole r) : role(r), type(Role) {} + QColor color; + QPalette::ColorRole role; + enum { Invalid, Color, Role} type; +}; +QT_CSS_DECLARE_TYPEINFO(ColorData, Q_MOVABLE_TYPE) + +struct BrushData { + BrushData() : role(QPalette::NoRole), type(Invalid) {} + BrushData(const QBrush &br) : brush(br), role(QPalette::NoRole), type(Brush) {} + BrushData(QPalette::ColorRole r) : role(r), type(Role) {} + QBrush brush; + QPalette::ColorRole role; + enum { Invalid, Brush, Role, DependsOnThePalette } type; +}; +QT_CSS_DECLARE_TYPEINFO(BrushData, Q_MOVABLE_TYPE) + +struct BackgroundData { + BrushData brush; + QString image; + Repeat repeat; + Qt::Alignment alignment; +}; +QT_CSS_DECLARE_TYPEINFO(BackgroundData, Q_MOVABLE_TYPE) + +struct LengthData { + qreal number; + enum { None, Px, Ex, Em } unit; +}; +QT_CSS_DECLARE_TYPEINFO(LengthData, Q_PRIMITIVE_TYPE) + +struct BorderData { + LengthData width; + BorderStyle style; + BrushData color; +}; +QT_CSS_DECLARE_TYPEINFO(BorderData, Q_MOVABLE_TYPE) + + +// 1. StyleRule - x:hover, y:clicked > z:checked { prop1: value1; prop2: value2; } +// 2. QVector - x:hover, y:clicked z:checked +// 3. QVector - y:clicked z:checked +// 4. QVector - { prop1: value1; prop2: value2; } +// 5. Declaration - prop1: value1; + +struct Q_GUI_EXPORT Declaration +{ + struct DeclarationData : public QSharedData + { + inline DeclarationData() : propertyId(UnknownProperty), important(false), inheritable(false) {} + QString property; + Property propertyId; + QVector values; + QVariant parsed; + bool important:1; + bool inheritable:1; + }; + QExplicitlySharedDataPointer d; + inline Declaration() : d(new DeclarationData()) {} + inline bool isEmpty() const { return d->property.isEmpty() && d->propertyId == UnknownProperty; } + + // helper functions + QColor colorValue(const QPalette & = QPalette()) const; + void colorValues(QColor *c, const QPalette & = QPalette()) const; + QBrush brushValue(const QPalette & = QPalette()) const; + void brushValues(QBrush *c, const QPalette & = QPalette()) const; + + BorderStyle styleValue() const; + void styleValues(BorderStyle *s) const; + + Origin originValue() const; + Repeat repeatValue() const; + Qt::Alignment alignmentValue() const; + PositionMode positionValue() const; + Attachment attachmentValue() const; + int styleFeaturesValue() const; + + bool intValue(int *i, const char *unit = 0) const; + bool realValue(qreal *r, const char *unit = 0) const; + + QSize sizeValue() const; + QRect rectValue() const; + QString uriValue() const; + QIcon iconValue() const; + + void borderImageValue(QString *image, int *cuts, TileMode *h, TileMode *v) const; +}; +QT_CSS_DECLARE_TYPEINFO(Declaration, Q_MOVABLE_TYPE) + +const quint64 PseudoClass_Unknown = Q_UINT64_C(0x0000000000000000); +const quint64 PseudoClass_Enabled = Q_UINT64_C(0x0000000000000001); +const quint64 PseudoClass_Disabled = Q_UINT64_C(0x0000000000000002); +const quint64 PseudoClass_Pressed = Q_UINT64_C(0x0000000000000004); +const quint64 PseudoClass_Focus = Q_UINT64_C(0x0000000000000008); +const quint64 PseudoClass_Hover = Q_UINT64_C(0x0000000000000010); +const quint64 PseudoClass_Checked = Q_UINT64_C(0x0000000000000020); +const quint64 PseudoClass_Unchecked = Q_UINT64_C(0x0000000000000040); +const quint64 PseudoClass_Indeterminate = Q_UINT64_C(0x0000000000000080); +const quint64 PseudoClass_Unspecified = Q_UINT64_C(0x0000000000000100); +const quint64 PseudoClass_Selected = Q_UINT64_C(0x0000000000000200); +const quint64 PseudoClass_Horizontal = Q_UINT64_C(0x0000000000000400); +const quint64 PseudoClass_Vertical = Q_UINT64_C(0x0000000000000800); +const quint64 PseudoClass_Window = Q_UINT64_C(0x0000000000001000); +const quint64 PseudoClass_Children = Q_UINT64_C(0x0000000000002000); +const quint64 PseudoClass_Sibling = Q_UINT64_C(0x0000000000004000); +const quint64 PseudoClass_Default = Q_UINT64_C(0x0000000000008000); +const quint64 PseudoClass_First = Q_UINT64_C(0x0000000000010000); +const quint64 PseudoClass_Last = Q_UINT64_C(0x0000000000020000); +const quint64 PseudoClass_Middle = Q_UINT64_C(0x0000000000040000); +const quint64 PseudoClass_OnlyOne = Q_UINT64_C(0x0000000000080000); +const quint64 PseudoClass_PreviousSelected = Q_UINT64_C(0x0000000000100000); +const quint64 PseudoClass_NextSelected = Q_UINT64_C(0x0000000000200000); +const quint64 PseudoClass_Flat = Q_UINT64_C(0x0000000000400000); +const quint64 PseudoClass_Left = Q_UINT64_C(0x0000000000800000); +const quint64 PseudoClass_Right = Q_UINT64_C(0x0000000001000000); +const quint64 PseudoClass_Top = Q_UINT64_C(0x0000000002000000); +const quint64 PseudoClass_Bottom = Q_UINT64_C(0x0000000004000000); +const quint64 PseudoClass_Exclusive = Q_UINT64_C(0x0000000008000000); +const quint64 PseudoClass_NonExclusive = Q_UINT64_C(0x0000000010000000); +const quint64 PseudoClass_Frameless = Q_UINT64_C(0x0000000020000000); +const quint64 PseudoClass_ReadOnly = Q_UINT64_C(0x0000000040000000); +const quint64 PseudoClass_Active = Q_UINT64_C(0x0000000080000000); +const quint64 PseudoClass_Closable = Q_UINT64_C(0x0000000100000000); +const quint64 PseudoClass_Movable = Q_UINT64_C(0x0000000200000000); +const quint64 PseudoClass_Floatable = Q_UINT64_C(0x0000000400000000); +const quint64 PseudoClass_Minimized = Q_UINT64_C(0x0000000800000000); +const quint64 PseudoClass_Maximized = Q_UINT64_C(0x0000001000000000); +const quint64 PseudoClass_On = Q_UINT64_C(0x0000002000000000); +const quint64 PseudoClass_Off = Q_UINT64_C(0x0000004000000000); +const quint64 PseudoClass_Editable = Q_UINT64_C(0x0000008000000000); +const quint64 PseudoClass_Item = Q_UINT64_C(0x0000010000000000); +const quint64 PseudoClass_Closed = Q_UINT64_C(0x0000020000000000); +const quint64 PseudoClass_Open = Q_UINT64_C(0x0000040000000000); +const quint64 PseudoClass_EditFocus = Q_UINT64_C(0x0000080000000000); +const quint64 PseudoClass_Alternate = Q_UINT64_C(0x0000100000000000); +// The Any specifier is never generated, but can be used as a wildcard in searches. +const quint64 PseudoClass_Any = Q_UINT64_C(0x0000ffffffffffff); +const int NumPseudos = 45; + +struct Pseudo +{ + Pseudo() : type(0), negated(false) { } + quint64 type; + QString name; + QString function; + bool negated; +}; +QT_CSS_DECLARE_TYPEINFO(Pseudo, Q_MOVABLE_TYPE) + +struct AttributeSelector +{ + enum ValueMatchType { + NoMatch, + MatchEqual, + MatchIncludes, + MatchDashMatch, + MatchBeginsWith, + MatchEndsWith, + MatchContains + }; + inline AttributeSelector() : valueMatchCriterium(NoMatch) {} + + QString name; + QString value; + ValueMatchType valueMatchCriterium; +}; +QT_CSS_DECLARE_TYPEINFO(AttributeSelector, Q_MOVABLE_TYPE) + +struct BasicSelector +{ + inline BasicSelector() : relationToNext(NoRelation) {} + + enum Relation { + NoRelation, + MatchNextSelectorIfAncestor, + MatchNextSelectorIfParent, + MatchNextSelectorIfDirectAdjecent, + MatchNextSelectorIfIndirectAdjecent, + }; + + QString elementName; + + QStringList ids; + QVector pseudos; + QVector attributeSelectors; + + Relation relationToNext; +}; +QT_CSS_DECLARE_TYPEINFO(BasicSelector, Q_MOVABLE_TYPE) + +struct Q_GUI_EXPORT Selector +{ + QVector basicSelectors; + int specificity() const; + quint64 pseudoClass(quint64 *negated = 0) const; + QString pseudoElement() const; +}; +QT_CSS_DECLARE_TYPEINFO(Selector, Q_MOVABLE_TYPE) + +struct StyleRule +{ + StyleRule() : order(0) { } + QVector selectors; + QVector declarations; + int order; +}; +QT_CSS_DECLARE_TYPEINFO(StyleRule, Q_MOVABLE_TYPE) + +struct MediaRule +{ + QStringList media; + QVector styleRules; +}; +QT_CSS_DECLARE_TYPEINFO(MediaRule, Q_MOVABLE_TYPE) + +struct PageRule +{ + QString selector; + QVector declarations; +}; +QT_CSS_DECLARE_TYPEINFO(PageRule, Q_MOVABLE_TYPE) + +struct ImportRule +{ + QString href; + QStringList media; +}; +QT_CSS_DECLARE_TYPEINFO(ImportRule, Q_MOVABLE_TYPE) + +enum StyleSheetOrigin { + StyleSheetOrigin_Unspecified, + StyleSheetOrigin_UserAgent, + StyleSheetOrigin_User, + StyleSheetOrigin_Author, + StyleSheetOrigin_Inline +}; + +struct StyleSheet +{ + StyleSheet() : origin(StyleSheetOrigin_Unspecified), depth(0) { } + QVector styleRules; //only contains rules that are not indexed + QVector mediaRules; + QVector pageRules; + QVector importRules; + StyleSheetOrigin origin; + int depth; // applicable only for inline style sheets + QMultiHash nameIndex; + QMultiHash idIndex; + + Q_GUI_EXPORT void buildIndexes(Qt::CaseSensitivity nameCaseSensitivity = Qt::CaseSensitive); +}; +QT_CSS_DECLARE_TYPEINFO(StyleSheet, Q_MOVABLE_TYPE) + + +class Q_GUI_EXPORT StyleSelector +{ +public: + StyleSelector() : nameCaseSensitivity(Qt::CaseSensitive) {} + virtual ~StyleSelector(); + + union NodePtr { + void *ptr; + int id; + }; + + QVector styleRulesForNode(NodePtr node); + QVector declarationsForNode(NodePtr node, const char *extraPseudo = 0); + + virtual bool nodeNameEquals(NodePtr node, const QString& nodeName) const; + virtual QString attribute(NodePtr node, const QString &name) const = 0; + virtual bool hasAttributes(NodePtr node) const = 0; + virtual QStringList nodeIds(NodePtr node) const; + virtual QStringList nodeNames(NodePtr node) const = 0; + virtual bool isNullNode(NodePtr node) const = 0; + virtual NodePtr parentNode(NodePtr node) const = 0; + virtual NodePtr previousSiblingNode(NodePtr node) const = 0; + virtual NodePtr duplicateNode(NodePtr node) const = 0; + virtual void freeNode(NodePtr node) const = 0; + + QVector styleSheets; + QString medium; + Qt::CaseSensitivity nameCaseSensitivity; +private: + void matchRule(NodePtr node, const StyleRule &rules, StyleSheetOrigin origin, + int depth, QMap *weightedRules); + bool selectorMatches(const Selector &rule, NodePtr node); + bool basicSelectorMatches(const BasicSelector &rule, NodePtr node); +}; + +enum TokenType { + NONE, + + S, + + CDO, + CDC, + INCLUDES, + DASHMATCH, + BEGINSWITH, + ENDSWITH, + CONTAINS, + + LBRACE, + PLUS, + GREATER, + COMMA, + TILDE, + + STRING, + INVALID, + + IDENT, + + HASH, + + ATKEYWORD_SYM, + + EXCLAMATION_SYM, + + LENGTH, + + PERCENTAGE, + NUMBER, + + FUNCTION, + + COLON, + SEMICOLON, + RBRACE, + SLASH, + MINUS, + DOT, + STAR, + LBRACKET, + RBRACKET, + EQUAL, + LPAREN, + RPAREN, + OR +}; + +struct Symbol +{ + inline Symbol() : token(NONE), start(0), len(-1) {} + TokenType token; + QString text; + int start, len; + Q_GUI_EXPORT QString lexem() const; +}; +QT_CSS_DECLARE_TYPEINFO(Symbol, Q_MOVABLE_TYPE) + +class Q_GUI_EXPORT Scanner +{ +public: + static QString preprocess(const QString &input, bool *hasEscapeSequences = 0); + static void scan(const QString &preprocessedInput, QVector *symbols); +}; + +class Q_GUI_EXPORT Parser +{ +public: + Parser(); + explicit Parser(const QString &css, bool file = false); + + void init(const QString &css, bool file = false); + bool parse(StyleSheet *styleSheet, Qt::CaseSensitivity nameCaseSensitivity = Qt::CaseSensitive); + Symbol errorSymbol(); + + bool parseImport(ImportRule *importRule); + bool parseMedia(MediaRule *mediaRule); + bool parseMedium(QStringList *media); + bool parsePage(PageRule *pageRule); + bool parsePseudoPage(QString *selector); + bool parseNextOperator(Value *value); + bool parseCombinator(BasicSelector::Relation *relation); + bool parseProperty(Declaration *decl); + bool parseRuleset(StyleRule *styleRule); + bool parseSelector(Selector *sel); + bool parseSimpleSelector(BasicSelector *basicSel); + bool parseClass(QString *name); + bool parseElementName(QString *name); + bool parseAttrib(AttributeSelector *attr); + bool parsePseudo(Pseudo *pseudo); + bool parseNextDeclaration(Declaration *declaration); + bool parsePrio(Declaration *declaration); + bool parseExpr(QVector *values); + bool parseTerm(Value *value); + bool parseFunction(QString *name, QString *args); + bool parseHexColor(QColor *col); + bool testAndParseUri(QString *uri); + + inline bool testRuleset() { return testSelector(); } + inline bool testSelector() { return testSimpleSelector(); } + inline bool parseNextSelector(Selector *sel) { if (!testSelector()) return recordError(); return parseSelector(sel); } + bool testSimpleSelector(); + inline bool parseNextSimpleSelector(BasicSelector *basicSel) { if (!testSimpleSelector()) return recordError(); return parseSimpleSelector(basicSel); } + inline bool testElementName() { return test(IDENT) || test(STAR); } + inline bool testClass() { return test(DOT); } + inline bool testAttrib() { return test(LBRACKET); } + inline bool testPseudo() { return test(COLON); } + inline bool testMedium() { return test(IDENT); } + inline bool parseNextMedium(QStringList *media) { if (!testMedium()) return recordError(); return parseMedium(media); } + inline bool testPseudoPage() { return test(COLON); } + inline bool testImport() { return testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("import")); } + inline bool testMedia() { return testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("media")); } + inline bool testPage() { return testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("page")); } + inline bool testCombinator() { return test(PLUS) || test(GREATER) || test(TILDE) || test(S); } + inline bool testProperty() { return test(IDENT); } + bool testTerm(); + inline bool testExpr() { return testTerm(); } + inline bool parseNextExpr(QVector *values) { if (!testExpr()) return recordError(); return parseExpr(values); } + bool testPrio(); + inline bool testHexColor() { return test(HASH); } + inline bool testFunction() { return test(FUNCTION); } + inline bool parseNextFunction(QString *name, QString *args) { if (!testFunction()) return recordError(); return parseFunction(name, args); } + + inline bool lookupElementName() const { return lookup() == IDENT || lookup() == STAR; } + + inline void skipSpace() { while (test(S)) {}; } + + inline bool hasNext() const { return index < symbols.count(); } + inline TokenType next() { return symbols.at(index++).token; } + bool next(TokenType t); + bool test(TokenType t); + inline void prev() { index--; } + inline const Symbol &symbol() const { return symbols.at(index - 1); } + inline QString lexem() const { return symbol().lexem(); } + QString unquotedLexem() const; + QString lexemUntil(TokenType t); + bool until(TokenType target, TokenType target2 = NONE); + inline TokenType lookup() const { + return (index - 1) < symbols.count() ? symbols.at(index - 1).token : NONE; + } + + bool testTokenAndEndsWith(TokenType t, QLatin1String str); + + inline bool recordError() { errorIndex = index; return false; } + + QVector symbols; + int index; + int errorIndex; + bool hasEscapeSequences; + QString sourcePath; +}; + +struct Q_GUI_EXPORT ValueExtractor +{ + ValueExtractor(const QVector &declarations, const QPalette & = QPalette()); + + bool extractFont(QFont *font, int *fontSizeAdjustment); + bool extractBackground(QBrush *, QString *, Repeat *, Qt::Alignment *, QCss::Origin *, QCss::Attachment *, + QCss::Origin *); + bool extractGeometry(int *w, int *h, int *minw, int *minh, int *maxw, int *maxh); + bool extractPosition(int *l, int *t, int *r, int *b, QCss::Origin *, Qt::Alignment *, + QCss::PositionMode *, Qt::Alignment *); + bool extractBox(int *margins, int *paddings, int *spacing = 0); + bool extractBorder(int *borders, QBrush *colors, BorderStyle *Styles, QSize *radii); + bool extractOutline(int *borders, QBrush *colors, BorderStyle *Styles, QSize *radii, int *offsets); + bool extractPalette(QBrush *fg, QBrush *sfg, QBrush *sbg, QBrush *abg); + int extractStyleFeatures(); + bool extractImage(QIcon *icon, Qt::Alignment *a, QSize *size); + + int lengthValue(const Declaration &decl); + +private: + void extractFont(); + void borderValue(const Declaration &decl, int *width, QCss::BorderStyle *style, QBrush *color); + LengthData lengthValue(const Value& v); + void lengthValues(const Declaration &decl, int *m); + QSize sizeValue(const Declaration &decl); + void sizeValues(const Declaration &decl, QSize *radii); + + QVector declarations; + QFont f; + int adjustment; + int fontExtracted; + QPalette pal; +}; + +} // namespace QCss + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( QCss::BackgroundData ) +Q_DECLARE_METATYPE( QCss::LengthData ) +Q_DECLARE_METATYPE( QCss::BorderData ) + +#undef QT_CSS_DECLARE_TYPEINFO + +#endif // QT_NO_CSSPARSER + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcssutil_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcssutil_p.h new file mode 100644 index 000000000..3184b7fa2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcssutil_p.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCSSUTIL_P_H +#define QCSSUTIL_P_H + +#include "QtCore/qglobal.h" + +#ifndef QT_NO_CSSPARSER + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qcssparser_p.h" +#include "QtCore/qsize.h" + +QT_BEGIN_NAMESPACE + +class QPainter; + +extern void qDrawEdge(QPainter *p, qreal x1, qreal y1, qreal x2, qreal y2, qreal dw1, qreal dw2, + QCss::Edge edge, QCss::BorderStyle style, QBrush c); + +extern void qDrawRoundedCorners(QPainter *p, qreal x1, qreal y1, qreal x2, qreal y2, + const QSizeF& r1, const QSizeF& r2, + QCss::Edge edge, QCss::BorderStyle s, QBrush c); + +extern void Q_GUI_EXPORT qDrawBorder(QPainter *p, const QRect &rect, const QCss::BorderStyle *styles, + const int *borders, const QBrush *colors, const QSize *radii); + +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/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcursor_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcursor_p.h new file mode 100644 index 000000000..37245a793 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qcursor_p.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCURSOR_P_H +#define QCURSOR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qatomic.h" +#include "QtCore/qnamespace.h" +#include "QtGui/qpixmap.h" + + +QT_BEGIN_NAMESPACE + + +class QBitmap; +class QCursorData { +public: + QCursorData(Qt::CursorShape s = Qt::ArrowCursor); + ~QCursorData(); + + static void initialize(); + static void cleanup(); + + QAtomicInt ref; + Qt::CursorShape cshape; + QBitmap *bm, *bmm; + QPixmap pixmap; + short hx, hy; + static bool initialized; + void update(); + static QCursorData *setBitmap(const QBitmap &bitmap, const QBitmap &mask, int hotX, int hotY, + qreal devicePixelRatio); +}; + +extern QCursorData *qt_cursorTable[Qt::LastCursor + 1]; // qcursor.cpp + +QT_END_NAMESPACE + +#endif // QCURSOR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdatabuffer_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdatabuffer_p.h new file mode 100644 index 000000000..7cac2ac35 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdatabuffer_p.h @@ -0,0 +1,151 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDATABUFFER_P_H +#define QDATABUFFER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qbytearray.h" + +#include + +QT_BEGIN_NAMESPACE + +template class QDataBuffer +{ + Q_DISABLE_COPY(QDataBuffer) +public: + QDataBuffer(int res) + { + capacity = res; + if (res) { + buffer = (Type*) malloc(capacity * sizeof(Type)); + Q_CHECK_PTR(buffer); + } else { + buffer = 0; + } + siz = 0; + } + + ~QDataBuffer() + { + if (buffer) + free(buffer); + } + + inline void reset() { siz = 0; } + + inline bool isEmpty() const { return siz==0; } + + inline int size() const { return siz; } + inline Type *data() const { return buffer; } + + inline Type &at(int i) { Q_ASSERT(i >= 0 && i < siz); return buffer[i]; } + inline const Type &at(int i) const { Q_ASSERT(i >= 0 && i < siz); return buffer[i]; } + inline Type &last() { Q_ASSERT(!isEmpty()); return buffer[siz-1]; } + inline const Type &last() const { Q_ASSERT(!isEmpty()); return buffer[siz-1]; } + inline Type &first() { Q_ASSERT(!isEmpty()); return buffer[0]; } + inline const Type &first() const { Q_ASSERT(!isEmpty()); return buffer[0]; } + + inline void add(const Type &t) { + reserve(siz + 1); + buffer[siz] = t; + ++siz; + } + + inline void pop_back() { + Q_ASSERT(siz > 0); + --siz; + } + + inline void resize(int size) { + reserve(size); + siz = size; + } + + inline void reserve(int size) { + if (size > capacity) { + if (capacity == 0) + capacity = 1; + while (capacity < size) + capacity *= 2; + buffer = (Type*) realloc(buffer, capacity * sizeof(Type)); + Q_CHECK_PTR(buffer); + } + } + + inline void shrink(int size) { + capacity = size; + if (size) { + buffer = (Type*) realloc(buffer, capacity * sizeof(Type)); + Q_CHECK_PTR(buffer); + } else { + free(buffer); + buffer = 0; + } + } + + inline void swap(QDataBuffer &other) { + qSwap(capacity, other.capacity); + qSwap(siz, other.siz); + qSwap(buffer, other.buffer); + } + + inline QDataBuffer &operator<<(const Type &t) { add(t); return *this; } + +private: + int capacity; + int siz; + Type *buffer; +}; + +QT_END_NAMESPACE + +#endif // QDATABUFFER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdistancefield_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdistancefield_p.h new file mode 100644 index 000000000..27ab84332 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdistancefield_p.h @@ -0,0 +1,131 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtDeclarative 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDISTANCEFIELD_H +#define QDISTANCEFIELD_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +bool Q_GUI_EXPORT qt_fontHasNarrowOutlines(const QRawFont &f); +bool Q_GUI_EXPORT qt_fontHasNarrowOutlines(QFontEngine *fontEngine); + +int Q_GUI_EXPORT QT_DISTANCEFIELD_BASEFONTSIZE(bool narrowOutlineFont); +int Q_GUI_EXPORT QT_DISTANCEFIELD_TILESIZE(bool narrowOutlineFont); +int Q_GUI_EXPORT QT_DISTANCEFIELD_SCALE(bool narrowOutlineFont); +int Q_GUI_EXPORT QT_DISTANCEFIELD_RADIUS(bool narrowOutlineFont); +int Q_GUI_EXPORT QT_DISTANCEFIELD_HIGHGLYPHCOUNT(); + +class Q_GUI_EXPORT QDistanceFieldData : public QSharedData +{ +public: + QDistanceFieldData() : glyph(0), width(0), height(0), nbytes(0), data(0) {} + QDistanceFieldData(const QDistanceFieldData &other); + ~QDistanceFieldData(); + + static QDistanceFieldData *create(const QSize &size); + static QDistanceFieldData *create(const QPainterPath &path, bool doubleResolution); + + glyph_t glyph; + int width; + int height; + int nbytes; + uchar *data; +}; + +class Q_GUI_EXPORT QDistanceField +{ +public: + QDistanceField(); + QDistanceField(int width, int height); + QDistanceField(const QRawFont &font, glyph_t glyph, bool doubleResolution = false); + QDistanceField(QFontEngine *fontEngine, glyph_t glyph, bool doubleResolution = false); + QDistanceField(const QPainterPath &path, glyph_t glyph, bool doubleResolution = false); + QDistanceField(const QDistanceField &other); + + bool isNull() const; + + glyph_t glyph() const; + void setGlyph(const QRawFont &font, glyph_t glyph, bool doubleResolution = false); + void setGlyph(QFontEngine *fontEngine, glyph_t glyph, bool doubleResolution = false); + + int width() const; + int height() const; + + QDistanceField copy(const QRect &rect = QRect()) const; + inline QDistanceField copy(int x, int y, int w, int h) const + { return copy(QRect(x, y, w, h)); } + + uchar *bits(); + const uchar *bits() const; + const uchar *constBits() const; + + uchar *scanLine(int); + const uchar *scanLine(int) const; + const uchar *constScanLine(int) const; + + QImage toImage(QImage::Format format = QImage::Format_ARGB32_Premultiplied) const; + +private: + QDistanceField(QDistanceFieldData *data); + QSharedDataPointer d; + + friend class QDistanceFieldData; +}; + +QT_END_NAMESPACE + +#endif // QDISTANCEFIELD_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdnd_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdnd_p.h new file mode 100644 index 000000000..6f2ec4625 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdnd_p.h @@ -0,0 +1,152 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDND_P_H +#define QDND_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qobject.h" +#include "QtCore/qmap.h" +#include "QtCore/qmimedata.h" +#include "QtGui/qdrag.h" +#include "QtGui/qpixmap.h" +#include "QtGui/qcursor.h" +#include "QtGui/qwindow.h" +#include "QtCore/qpoint.h" +#include "private/qobject_p.h" +#include "QtGui/qbackingstore.h" +QT_BEGIN_NAMESPACE + +class QEventLoop; +class QMouseEvent; +class QPlatformDrag; + +#if !(defined(QT_NO_DRAGANDDROP) && defined(QT_NO_CLIPBOARD)) + +class Q_GUI_EXPORT QInternalMimeData : public QMimeData +{ + Q_OBJECT +public: + QInternalMimeData(); + ~QInternalMimeData(); + + bool hasFormat(const QString &mimeType) const Q_DECL_OVERRIDE; + QStringList formats() const Q_DECL_OVERRIDE; + static bool canReadData(const QString &mimeType); + + + static QStringList formatsHelper(const QMimeData *data); + static bool hasFormatHelper(const QString &mimeType, const QMimeData *data); + static QByteArray renderDataHelper(const QString &mimeType, const QMimeData *data); + +protected: + QVariant retrieveData(const QString &mimeType, QVariant::Type type) const Q_DECL_OVERRIDE; + + virtual bool hasFormat_sys(const QString &mimeType) const = 0; + virtual QStringList formats_sys() const = 0; + virtual QVariant retrieveData_sys(const QString &mimeType, QVariant::Type type) const = 0; +}; + +#endif // !(defined(QT_NO_DRAGANDDROP) && defined(QT_NO_CLIPBOARD)) + +#ifndef QT_NO_DRAGANDDROP + +class QDragPrivate : public QObjectPrivate +{ +public: + QDragPrivate() + : source(0) + , target(0) + , data(0) + { } + QObject *source; + QObject *target; + QMimeData *data; + QPixmap pixmap; + QPoint hotspot; + Qt::DropAction executed_action; + Qt::DropActions supported_actions; + Qt::DropAction default_action; + QMap customCursors; +}; + +class Q_GUI_EXPORT QDragManager : public QObject { + Q_OBJECT + +public: + QDragManager(); + ~QDragManager(); + static QDragManager *self(); + + Qt::DropAction drag(QDrag *); + + void setCurrentTarget(QObject *target, bool dropped = false); + QObject *currentTarget() const; + + QDrag *object() const { return m_object; } + QObject *source() const; + +private: + QMimeData *m_platformDropData; + QObject *m_currentDropTarget; + QPlatformDrag *m_platformDrag; + QDrag *m_object; + + static QDragManager *m_instance; + Q_DISABLE_COPY(QDragManager) +}; + + +#endif // !QT_NO_DRAGANDDROP + + +QT_END_NAMESPACE + +#endif // QDND_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_mips_dsp_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_mips_dsp_p.h new file mode 100644 index 000000000..36c4af273 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_mips_dsp_p.h @@ -0,0 +1,215 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Imagination Technologies Limited, www.imgtec.com +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDRAWHELPER_MIPS_DSP_P_H +#define QDRAWHELPER_MIPS_DSP_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +#if defined(QT_COMPILER_SUPPORTS_MIPS_DSP) + +extern "C" void qt_memfill32_asm_mips_dsp(quint32 *dest, quint32 value, int count); + +extern "C" void comp_func_SourceOver_asm_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void comp_func_solid_DestinationOver_dsp_asm_x2(uint *dest, int length, uint color); + +extern "C" void comp_func_solid_Source_dsp_asm_x2(uint *dest, int length, uint color, uint const_alpha); + +extern "C" void comp_func_DestinationOver_dsp_asm_x2(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void comp_func_solid_SourceIn_dsp_asm_x2(uint *dest, int length, uint color, uint const_alpha); + +extern "C" void comp_func_SourceIn_dsp_asm_x2(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void comp_func_solid_DestinationIn_dsp_asm_x2(uint *dest, int length, uint a); + +extern "C" void comp_func_DestinationIn_dsp_asm_x2(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void comp_func_DestinationOut_dsp_asm_x2(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void comp_func_solid_SourceAtop_dsp_asm_x2(uint *dest, int length, uint color, uint const_alpha); + +extern "C" void comp_func_SourceAtop_dsp_asm_x2(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void comp_func_solid_DestinationAtop_dsp_asm_x2(uint *dest, int length, uint color, uint const_alpha); + +extern "C" void comp_func_DestinationAtop_dsp_asm_x2(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void comp_func_solid_XOR_dsp_asm_x2(uint *dest, int length, uint color, uint const_alpha); + +extern "C" void comp_func_XOR_dsp_asm_x2(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void comp_func_solid_SourceOut_dsp_asm_x2(uint *dest, int length, uint color, uint const_alpha); + +extern "C" void comp_func_SourceOut_dsp_asm_x2(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void comp_func_Source_dsp_asm_x2(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void qt_blend_argb32_on_argb32_mips_dsp_asm_x2(uint *dest, const uint *src, int length, uint const_alpha); + +extern "C" void qt_blend_argb32_on_argb32_const_alpha_256_mips_dsp_asm(uint *dest, const uint *src, int length); + +extern "C" void qt_blend_rgb16_on_rgb16_const_alpha_256_mips_dsp_asm(quint16 *dest, const quint16 *src, int length); + +extern "C" void qt_blend_rgb16_on_rgb16_mips_dsp_asm(quint16 *dest, const quint16 *src, int length, uint const_alpha); + +extern "C" uint * destfetchARGB32_asm_mips_dsp(uint *buffer, const uint *data, int length); + +extern "C" uint * qt_destStoreARGB32_asm_mips_dsp(uint *buffer, const uint *data, int length); + +extern "C" uint * fetchUntransformed_888_asm_mips_dsp(uint *buffer, const uchar *line, int length); + +extern "C" uint * fetchUntransformed_444_asm_mips_dsp(uint *buffer, const uchar *line, int length); + +extern "C" uint * fetchUntransformed_argb8565_premultiplied_asm_mips_dsp(uint *buffer, const uchar *line, int length); + +void qt_blend_argb32_on_argb32_mips_dsp(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + +void qt_blend_rgb32_on_rgb32_mips_dsp(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + +void qt_blend_rgb16_on_rgb16_mips_dsp(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + +void comp_func_Source_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha); + +uint * QT_FASTCALL qt_destFetchARGB32_mips_dsp(uint *buffer, + QRasterBuffer *rasterBuffer, + int x, int y, int length); + +void QT_FASTCALL qt_destStoreARGB32_mips_dsp(QRasterBuffer *rasterBuffer, int x, int y, + const uint *buffer, int length); + +void QT_FASTCALL comp_func_solid_Source_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_solid_SourceOver_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_solid_DestinationOver_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_solid_SourceOver_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_solid_DestinationOver_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_DestinationOver_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha); + +void QT_FASTCALL comp_func_solid_SourceIn_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_SourceIn_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha); + +void QT_FASTCALL comp_func_solid_DestinationIn_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_DestinationIn_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha); + +void QT_FASTCALL comp_func_solid_DestinationOut_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_DestinationOut_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha); + +void QT_FASTCALL comp_func_solid_SourceAtop_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_SourceAtop_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha); + +void QT_FASTCALL comp_func_solid_DestinationAtop_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_DestinationAtop_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha); + +void QT_FASTCALL comp_func_solid_XOR_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_solid_SourceOut_mips_dsp(uint *dest, int length, uint color, uint const_alpha); + +void QT_FASTCALL comp_func_SourceOut_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha); + +void QT_FASTCALL comp_func_XOR_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha); + +const uint * QT_FASTCALL qt_fetchUntransformed_888_mips_dsp (uint *buffer, + const Operator *, + const QSpanData *data, + int y, int x, int length); + +const uint * QT_FASTCALL qt_fetchUntransformed_444_mips_dsp (uint *buffer, + const Operator *, + const QSpanData *data, + int y, int x, int length); + +const uint * QT_FASTCALL qt_fetchUntransformed_argb8565_premultiplied_mips_dsp (uint *buffer, + const Operator *, + const QSpanData *data, + int y, int x, int length); + + + +#if defined(__MIPS_DSPR2__) + +extern "C" void qt_blend_rgb16_on_rgb16_mips_dspr2_asm(quint16 *dest, const quint16 *src, int length, uint const_alpha); + +void qt_blend_rgb16_on_rgb16_mips_dspr2(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + +const uint *QT_FASTCALL qt_fetchUntransformedRGB16_mips_dspr2(uint *buffer, const Operator *, + const QSpanData *data, int y, int x, + int length); +#endif // defined(__MIPS_DSPR2__) + +#endif // QT_COMPILER_SUPPORTS_MIPS_DSP + +QT_END_NAMESPACE + +#endif // QDRAWHELPER_MIPS_DSP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_neon_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_neon_p.h new file mode 100644 index 000000000..40475a9bd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_neon_p.h @@ -0,0 +1,147 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDRAWHELPER_NEON_P_H +#define QDRAWHELPER_NEON_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +#ifdef __ARM_NEON__ + +void qt_blend_argb32_on_argb32_neon(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + +void qt_blend_rgb32_on_rgb32_neon(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + +void qt_blend_argb32_on_rgb16_neon(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + +void qt_blend_argb32_on_argb32_scanline_neon(uint *dest, + const uint *src, + int length, + uint const_alpha); + +void qt_blend_rgb16_on_argb32_neon(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + +void qt_blend_rgb16_on_rgb16_neon(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + +void qt_alphamapblit_quint16_neon(QRasterBuffer *rasterBuffer, + int x, int y, const QRgba64 &color, + const uchar *bitmap, + int mapWidth, int mapHeight, int mapStride, + const QClipData *clip, bool /*useGammaCorrection*/); + +void qt_scale_image_argb32_on_rgb16_neon(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, int srch, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + int const_alpha); + +void qt_scale_image_rgb16_on_rgb16_neon(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, int srch, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + int const_alpha); + +void qt_transform_image_argb32_on_rgb16_neon(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + const QTransform &targetRectTransform, + int const_alpha); + +void qt_transform_image_rgb16_on_rgb16_neon(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + const QTransform &targetRectTransform, + int const_alpha); + +void qt_memfill32_neon(quint32 *dest, quint32 value, int count); +void qt_memrotate90_16_neon(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl); +void qt_memrotate270_16_neon(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl); + +uint * QT_FASTCALL qt_destFetchRGB16_neon(uint *buffer, + QRasterBuffer *rasterBuffer, + int x, int y, int length); + +void QT_FASTCALL qt_destStoreRGB16_neon(QRasterBuffer *rasterBuffer, + int x, int y, const uint *buffer, int length); + +void QT_FASTCALL comp_func_solid_SourceOver_neon(uint *destPixels, int length, uint color, uint const_alpha); +void QT_FASTCALL comp_func_Plus_neon(uint *dst, const uint *src, int length, uint const_alpha); + +const uint * QT_FASTCALL qt_fetchUntransformed_888_neon(uint *buffer, const Operator *, const QSpanData *data, + int y, int x, int length); + +#endif // __ARM_NEON__ + +QT_END_NAMESPACE + +#endif // QDRAWHELPER_NEON_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_p.h new file mode 100644 index 000000000..ccfc9a288 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_p.h @@ -0,0 +1,1239 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDRAWHELPER_P_H +#define QDRAWHELPER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qmath.h" +#include "QtGui/qcolor.h" +#include "QtGui/qpainter.h" +#include "QtGui/qimage.h" +#include "QtGui/qrgba64.h" +#ifndef QT_FT_BEGIN_HEADER +#define QT_FT_BEGIN_HEADER +#define QT_FT_END_HEADER +#endif +#include "private/qrasterdefs_p.h" +#include + +#include + +QT_BEGIN_NAMESPACE + +#if defined(Q_CC_GNU) +# define Q_STATIC_TEMPLATE_FUNCTION static +# define Q_DECL_RESTRICT __restrict__ +#elif defined(Q_CC_MSVC) +# define Q_STATIC_TEMPLATE_FUNCTION static +# define Q_DECL_RESTRICT __restrict +#else +# define Q_STATIC_TEMPLATE_FUNCTION static +# define Q_DECL_RESTRICT +#endif + +static const uint AMASK = 0xff000000; +static const uint RMASK = 0x00ff0000; +static const uint GMASK = 0x0000ff00; +static const uint BMASK = 0x000000ff; + +/******************************************************************************* + * QSpan + * + * duplicate definition of FT_Span + */ +typedef QT_FT_Span QSpan; + +struct QSolidData; +struct QTextureData; +struct QGradientData; +struct QLinearGradientData; +struct QRadialGradientData; +struct QConicalGradientData; +struct QSpanData; +class QGradient; +class QRasterBuffer; +class QClipData; +class QRasterPaintEngineState; + +typedef QT_FT_SpanFunc ProcessSpans; +typedef void (*BitmapBlitFunc)(QRasterBuffer *rasterBuffer, + int x, int y, const QRgba64 &color, + const uchar *bitmap, + int mapWidth, int mapHeight, int mapStride); + +typedef void (*AlphamapBlitFunc)(QRasterBuffer *rasterBuffer, + int x, int y, const QRgba64 &color, + const uchar *bitmap, + int mapWidth, int mapHeight, int mapStride, + const QClipData *clip, bool useGammaCorrection); + +typedef void (*AlphaRGBBlitFunc)(QRasterBuffer *rasterBuffer, + int x, int y, const QRgba64 &color, + const uint *rgbmask, + int mapWidth, int mapHeight, int mapStride, + const QClipData *clip, bool useGammaCorrection); + +typedef void (*RectFillFunc)(QRasterBuffer *rasterBuffer, + int x, int y, int width, int height, + const QRgba64 &color); + +typedef void (*SrcOverBlendFunc)(uchar *destPixels, int dbpl, + const uchar *src, int spbl, + int w, int h, + int const_alpha); + +typedef void (*SrcOverScaleFunc)(uchar *destPixels, int dbpl, + const uchar *src, int spbl, int srch, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clipRect, + int const_alpha); + +typedef void (*SrcOverTransformFunc)(uchar *destPixels, int dbpl, + const uchar *src, int spbl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clipRect, + const QTransform &targetRectTransform, + int const_alpha); + +typedef void (*MemRotateFunc)(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl); + +struct DrawHelper { + ProcessSpans blendColor; + ProcessSpans blendGradient; + BitmapBlitFunc bitmapBlit; + AlphamapBlitFunc alphamapBlit; + AlphaRGBBlitFunc alphaRGBBlit; + RectFillFunc fillRect; +}; + +extern SrcOverBlendFunc qBlendFunctions[QImage::NImageFormats][QImage::NImageFormats]; +extern SrcOverScaleFunc qScaleFunctions[QImage::NImageFormats][QImage::NImageFormats]; +extern SrcOverTransformFunc qTransformFunctions[QImage::NImageFormats][QImage::NImageFormats]; + +extern DrawHelper qDrawHelper[QImage::NImageFormats]; + +void qBlendTexture(int count, const QSpan *spans, void *userData); +extern void qt_memfill64(quint64 *dest, quint64 value, int count); +extern void qt_memfill32(quint32 *dest, quint32 value, int count); +extern void qt_memfill16(quint16 *dest, quint16 value, int count); + +typedef void (QT_FASTCALL *CompositionFunction)(uint *Q_DECL_RESTRICT dest, const uint *Q_DECL_RESTRICT src, int length, uint const_alpha); +typedef void (QT_FASTCALL *CompositionFunction64)(QRgba64 *Q_DECL_RESTRICT dest, const QRgba64 *Q_DECL_RESTRICT src, int length, uint const_alpha); +typedef void (QT_FASTCALL *CompositionFunctionSolid)(uint *dest, int length, uint color, uint const_alpha); +typedef void (QT_FASTCALL *CompositionFunctionSolid64)(QRgba64 *dest, int length, QRgba64 color, uint const_alpha); + +struct LinearGradientValues +{ + qreal dx; + qreal dy; + qreal l; + qreal off; +}; + +struct RadialGradientValues +{ + qreal dx; + qreal dy; + qreal dr; + qreal sqrfr; + qreal a; + qreal inv2a; + bool extended; +}; + +struct Operator; +typedef uint* (QT_FASTCALL *DestFetchProc)(uint *buffer, QRasterBuffer *rasterBuffer, int x, int y, int length); +typedef QRgba64* (QT_FASTCALL *DestFetchProc64)(QRgba64 *buffer, QRasterBuffer *rasterBuffer, int x, int y, int length); +typedef void (QT_FASTCALL *DestStoreProc)(QRasterBuffer *rasterBuffer, int x, int y, const uint *buffer, int length); +typedef void (QT_FASTCALL *DestStoreProc64)(QRasterBuffer *rasterBuffer, int x, int y, const QRgba64 *buffer, int length); +typedef const uint* (QT_FASTCALL *SourceFetchProc)(uint *buffer, const Operator *o, const QSpanData *data, int y, int x, int length); +typedef const QRgba64* (QT_FASTCALL *SourceFetchProc64)(QRgba64 *buffer, const Operator *o, const QSpanData *data, int y, int x, int length); + +struct Operator +{ + QPainter::CompositionMode mode; + DestFetchProc destFetch; + DestStoreProc destStore; + SourceFetchProc srcFetch; + CompositionFunctionSolid funcSolid; + CompositionFunction func; + + DestFetchProc64 destFetch64; + DestStoreProc64 destStore64; + SourceFetchProc64 srcFetch64; + CompositionFunctionSolid64 funcSolid64; + CompositionFunction64 func64; + + union { + LinearGradientValues linear; + RadialGradientValues radial; + }; +}; + +class QRasterPaintEngine; + +struct QSolidData +{ + QRgba64 color; +}; + +struct QLinearGradientData +{ + struct { + qreal x; + qreal y; + } origin; + struct { + qreal x; + qreal y; + } end; +}; + +struct QRadialGradientData +{ + struct { + qreal x; + qreal y; + qreal radius; + } center; + struct { + qreal x; + qreal y; + qreal radius; + } focal; +}; + +struct QConicalGradientData +{ + struct { + qreal x; + qreal y; + } center; + qreal angle; +}; + +struct QGradientData +{ + QGradient::Spread spread; + + union { + QLinearGradientData linear; + QRadialGradientData radial; + QConicalGradientData conical; + }; + +#define GRADIENT_STOPTABLE_SIZE 1024 +#define GRADIENT_STOPTABLE_SIZE_SHIFT 10 + + const QRgba64 *colorTable64; //[GRADIENT_STOPTABLE_SIZE]; + const QRgb *colorTable32; //[GRADIENT_STOPTABLE_SIZE]; + + uint alphaColor : 1; +}; + +struct QTextureData +{ + const uchar *imageData; + const uchar *scanLine(int y) const { return imageData + y*bytesPerLine; } + + int width; + int height; + // clip rect + int x1; + int y1; + int x2; + int y2; + int bytesPerLine; + QImage::Format format; + const QVector *colorTable; + bool hasAlpha; + enum Type { + Plain, + Tiled + }; + Type type; + int const_alpha; +}; + +struct QSpanData +{ + QSpanData() : tempImage(0) {} + ~QSpanData() { delete tempImage; } + + QRasterBuffer *rasterBuffer; + ProcessSpans blend; + ProcessSpans unclipped_blend; + BitmapBlitFunc bitmapBlit; + AlphamapBlitFunc alphamapBlit; + AlphaRGBBlitFunc alphaRGBBlit; + RectFillFunc fillRect; + qreal m11, m12, m13, m21, m22, m23, m33, dx, dy; // inverse xform matrix + const QClipData *clip; + enum Type { + None, + Solid, + LinearGradient, + RadialGradient, + ConicalGradient, + Texture + } type : 8; + int txop : 8; + int fast_matrix : 1; + bool bilinear; + QImage *tempImage; + union { + QSolidData solid; + QGradientData gradient; + QTextureData texture; + }; + class Pinnable { + protected: + ~Pinnable() {} + }; // QSharedPointer is not supported + QSharedPointer cachedGradient; + + + void init(QRasterBuffer *rb, const QRasterPaintEngine *pe); + void setup(const QBrush &brush, int alpha, QPainter::CompositionMode compositionMode); + void setupMatrix(const QTransform &matrix, int bilinear); + void initTexture(const QImage *image, int alpha, QTextureData::Type = QTextureData::Plain, const QRect &sourceRect = QRect()); + void adjustSpanMethods(); +}; + +static inline uint qt_gradient_clamp(const QGradientData *data, int ipos) +{ + if (ipos < 0 || ipos >= GRADIENT_STOPTABLE_SIZE) { + if (data->spread == QGradient::RepeatSpread) { + ipos = ipos % GRADIENT_STOPTABLE_SIZE; + ipos = ipos < 0 ? GRADIENT_STOPTABLE_SIZE + ipos : ipos; + } else if (data->spread == QGradient::ReflectSpread) { + const int limit = GRADIENT_STOPTABLE_SIZE * 2; + ipos = ipos % limit; + ipos = ipos < 0 ? limit + ipos : ipos; + ipos = ipos >= GRADIENT_STOPTABLE_SIZE ? limit - 1 - ipos : ipos; + } else { + if (ipos < 0) + ipos = 0; + else if (ipos >= GRADIENT_STOPTABLE_SIZE) + ipos = GRADIENT_STOPTABLE_SIZE-1; + } + } + + Q_ASSERT(ipos >= 0); + Q_ASSERT(ipos < GRADIENT_STOPTABLE_SIZE); + + return ipos; +} + +static inline uint qt_gradient_pixel(const QGradientData *data, qreal pos) +{ + int ipos = int(pos * (GRADIENT_STOPTABLE_SIZE - 1) + qreal(0.5)); + return data->colorTable32[qt_gradient_clamp(data, ipos)]; +} + +static inline const QRgba64& qt_gradient_pixel64(const QGradientData *data, qreal pos) +{ + int ipos = int(pos * (GRADIENT_STOPTABLE_SIZE - 1) + qreal(0.5)); + return data->colorTable64[qt_gradient_clamp(data, ipos)]; +} + +static inline qreal qRadialDeterminant(qreal a, qreal b, qreal c) +{ + return (b * b) - (4 * a * c); +} + +template static +const BlendType * QT_FASTCALL qt_fetch_radial_gradient_template(BlendType *buffer, const Operator *op, + const QSpanData *data, int y, int x, int length) +{ + // avoid division by zero + if (qFuzzyIsNull(op->radial.a)) { + RadialFetchFunc::memfill(buffer, RadialFetchFunc::null(), length); + return buffer; + } + + const BlendType *b = buffer; + qreal rx = data->m21 * (y + qreal(0.5)) + + data->dx + data->m11 * (x + qreal(0.5)); + qreal ry = data->m22 * (y + qreal(0.5)) + + data->dy + data->m12 * (x + qreal(0.5)); + bool affine = !data->m13 && !data->m23; + + BlendType *end = buffer + length; + if (affine) { + rx -= data->gradient.radial.focal.x; + ry -= data->gradient.radial.focal.y; + + qreal inv_a = 1 / qreal(2 * op->radial.a); + + const qreal delta_rx = data->m11; + const qreal delta_ry = data->m12; + + qreal b = 2*(op->radial.dr*data->gradient.radial.focal.radius + rx * op->radial.dx + ry * op->radial.dy); + qreal delta_b = 2*(delta_rx * op->radial.dx + delta_ry * op->radial.dy); + const qreal b_delta_b = 2 * b * delta_b; + const qreal delta_b_delta_b = 2 * delta_b * delta_b; + + const qreal bb = b * b; + const qreal delta_bb = delta_b * delta_b; + + b *= inv_a; + delta_b *= inv_a; + + const qreal rxrxryry = rx * rx + ry * ry; + const qreal delta_rxrxryry = delta_rx * delta_rx + delta_ry * delta_ry; + const qreal rx_plus_ry = 2*(rx * delta_rx + ry * delta_ry); + const qreal delta_rx_plus_ry = 2 * delta_rxrxryry; + + inv_a *= inv_a; + + qreal det = (bb - 4 * op->radial.a * (op->radial.sqrfr - rxrxryry)) * inv_a; + qreal delta_det = (b_delta_b + delta_bb + 4 * op->radial.a * (rx_plus_ry + delta_rxrxryry)) * inv_a; + const qreal delta_delta_det = (delta_b_delta_b + 4 * op->radial.a * delta_rx_plus_ry) * inv_a; + + RadialFetchFunc::fetch(buffer, end, op, data, det, delta_det, delta_delta_det, b, delta_b); + } else { + qreal rw = data->m23 * (y + qreal(0.5)) + + data->m33 + data->m13 * (x + qreal(0.5)); + + while (buffer < end) { + if (rw == 0) { + *buffer = 0; + } else { + qreal invRw = 1 / rw; + qreal gx = rx * invRw - data->gradient.radial.focal.x; + qreal gy = ry * invRw - data->gradient.radial.focal.y; + qreal b = 2*(op->radial.dr*data->gradient.radial.focal.radius + gx*op->radial.dx + gy*op->radial.dy); + qreal det = qRadialDeterminant(op->radial.a, b, op->radial.sqrfr - (gx*gx + gy*gy)); + + BlendType result = RadialFetchFunc::null(); + if (det >= 0) { + qreal detSqrt = qSqrt(det); + + qreal s0 = (-b - detSqrt) * op->radial.inv2a; + qreal s1 = (-b + detSqrt) * op->radial.inv2a; + + qreal s = qMax(s0, s1); + + if (data->gradient.radial.focal.radius + op->radial.dr * s >= 0) + result = RadialFetchFunc::fetchSingle(data->gradient, s); + } + + *buffer = result; + } + + rx += data->m11; + ry += data->m12; + rw += data->m13; + + ++buffer; + } + } + + return b; +} + +template +class QRadialFetchSimd +{ +public: + static uint null() { return 0; } + static uint fetchSingle(const QGradientData& gradient, qreal v) + { + return qt_gradient_pixel(&gradient, v); + } + static void memfill(uint *buffer, uint fill, int length) + { + qt_memfill32(buffer, fill, length); + } + static void fetch(uint *buffer, uint *end, const Operator *op, const QSpanData *data, qreal det, + qreal delta_det, qreal delta_delta_det, qreal b, qreal delta_b) + { + typename Simd::Vect_buffer_f det_vec; + typename Simd::Vect_buffer_f delta_det4_vec; + typename Simd::Vect_buffer_f b_vec; + + for (int i = 0; i < 4; ++i) { + det_vec.f[i] = det; + delta_det4_vec.f[i] = 4 * delta_det; + b_vec.f[i] = b; + + det += delta_det; + delta_det += delta_delta_det; + b += delta_b; + } + + const typename Simd::Float32x4 v_delta_delta_det16 = Simd::v_dup(16 * delta_delta_det); + const typename Simd::Float32x4 v_delta_delta_det6 = Simd::v_dup(6 * delta_delta_det); + const typename Simd::Float32x4 v_delta_b4 = Simd::v_dup(4 * delta_b); + + const typename Simd::Float32x4 v_r0 = Simd::v_dup(data->gradient.radial.focal.radius); + const typename Simd::Float32x4 v_dr = Simd::v_dup(op->radial.dr); + + const typename Simd::Float32x4 v_min = Simd::v_dup(0.0f); + const typename Simd::Float32x4 v_max = Simd::v_dup(float(GRADIENT_STOPTABLE_SIZE-1)); + const typename Simd::Float32x4 v_half = Simd::v_dup(0.5f); + + const typename Simd::Int32x4 v_repeat_mask = Simd::v_dup(~(uint(0xffffff) << GRADIENT_STOPTABLE_SIZE_SHIFT)); + const typename Simd::Int32x4 v_reflect_mask = Simd::v_dup(~(uint(0xffffff) << (GRADIENT_STOPTABLE_SIZE_SHIFT+1))); + + const typename Simd::Int32x4 v_reflect_limit = Simd::v_dup(2 * GRADIENT_STOPTABLE_SIZE - 1); + + const int extended_mask = op->radial.extended ? 0x0 : ~0x0; + +#define FETCH_RADIAL_LOOP_PROLOGUE \ + while (buffer < end) { \ + typename Simd::Vect_buffer_i v_buffer_mask; \ + v_buffer_mask.v = Simd::v_greaterOrEqual(det_vec.v, v_min); \ + const typename Simd::Float32x4 v_index_local = Simd::v_sub(Simd::v_sqrt(Simd::v_max(v_min, det_vec.v)), b_vec.v); \ + const typename Simd::Float32x4 v_index = Simd::v_add(Simd::v_mul(v_index_local, v_max), v_half); \ + v_buffer_mask.v = Simd::v_and(v_buffer_mask.v, Simd::v_greaterOrEqual(Simd::v_add(v_r0, Simd::v_mul(v_dr, v_index_local)), v_min)); \ + typename Simd::Vect_buffer_i index_vec; +#define FETCH_RADIAL_LOOP_CLAMP_REPEAT \ + index_vec.v = Simd::v_and(v_repeat_mask, Simd::v_toInt(v_index)); +#define FETCH_RADIAL_LOOP_CLAMP_REFLECT \ + const typename Simd::Int32x4 v_index_i = Simd::v_and(v_reflect_mask, Simd::v_toInt(v_index)); \ + const typename Simd::Int32x4 v_index_i_inv = Simd::v_sub(v_reflect_limit, v_index_i); \ + index_vec.v = Simd::v_min_16(v_index_i, v_index_i_inv); +#define FETCH_RADIAL_LOOP_CLAMP_PAD \ + index_vec.v = Simd::v_toInt(Simd::v_min(v_max, Simd::v_max(v_min, v_index))); +#define FETCH_RADIAL_LOOP_EPILOGUE \ + det_vec.v = Simd::v_add(Simd::v_add(det_vec.v, delta_det4_vec.v), v_delta_delta_det6); \ + delta_det4_vec.v = Simd::v_add(delta_det4_vec.v, v_delta_delta_det16); \ + b_vec.v = Simd::v_add(b_vec.v, v_delta_b4); \ + for (int i = 0; i < 4; ++i) \ + *buffer++ = (extended_mask | v_buffer_mask.i[i]) & data->gradient.colorTable32[index_vec.i[i]]; \ + } + +#define FETCH_RADIAL_LOOP(FETCH_RADIAL_LOOP_CLAMP) \ + FETCH_RADIAL_LOOP_PROLOGUE \ + FETCH_RADIAL_LOOP_CLAMP \ + FETCH_RADIAL_LOOP_EPILOGUE + + switch (data->gradient.spread) { + case QGradient::RepeatSpread: + FETCH_RADIAL_LOOP(FETCH_RADIAL_LOOP_CLAMP_REPEAT) + break; + case QGradient::ReflectSpread: + FETCH_RADIAL_LOOP(FETCH_RADIAL_LOOP_CLAMP_REFLECT) + break; + case QGradient::PadSpread: + FETCH_RADIAL_LOOP(FETCH_RADIAL_LOOP_CLAMP_PAD) + break; + default: + Q_ASSERT(false); + } + } +}; + +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; + + x = ((x >> 8) & 0xff00ff) * a + ((y >> 8) & 0xff00ff) * b; + x = (x + ((x >> 8) & 0xff00ff) + 0x800080); + x &= 0xff00ff00; + x |= t; + return x; +} + +#if Q_PROCESSOR_WORDSIZE == 8 // 64-bit versions + +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; + t &= 0x00ff00ff00ff00ff; + return (uint(t)) | (uint(t >> 24)); +} + +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)); +} + +#else // 32-bit versions + +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; + + x = ((x >> 8) & 0xff00ff) * a + ((y >> 8) & 0xff00ff) * b; + x &= 0xff00ff00; + x |= t; + return x; +} + +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; + + x = ((x >> 8) & 0xff00ff) * a; + x = (x + ((x >> 8) & 0xff00ff) + 0x800080); + x &= 0xff00ff00; + x |= t; + return x; +} +#endif + +static Q_ALWAYS_INLINE void blend_pixel(quint32 &dst, const quint32 src) +{ + if (src >= 0xff000000) + dst = src; + else if (src != 0) + dst = src + BYTE_MUL(dst, qAlpha(~src)); +} + +static Q_ALWAYS_INLINE void blend_pixel(quint32 &dst, const quint32 src, const int const_alpha) +{ + if (src != 0) { + const quint32 s = BYTE_MUL(src, const_alpha); + dst = s + BYTE_MUL(dst, qAlpha(~s)); + } +} + +#if defined(__SSE2__) +static Q_ALWAYS_INLINE uint interpolate_4_pixels_sse2(__m128i vt, __m128i vb, uint distx, uint disty) +{ + // First interpolate top and bottom pixels in parallel. + vt = _mm_unpacklo_epi8(vt, _mm_setzero_si128()); + vb = _mm_unpacklo_epi8(vb, _mm_setzero_si128()); + vt = _mm_mullo_epi16(vt, _mm_set1_epi16(256 - disty)); + vb = _mm_mullo_epi16(vb, _mm_set1_epi16(disty)); + __m128i vlr = _mm_add_epi16(vt, vb); + vlr = _mm_srli_epi16(vlr, 8); + // vlr now contains the result of the first two interpolate calls vlr = unpacked((xright << 64) | xleft) + + // Now the last interpolate between left and right.. + const __m128i vidistx = _mm_shufflelo_epi16(_mm_cvtsi32_si128(256 - distx), _MM_SHUFFLE(0, 0, 0, 0)); + const __m128i vdistx = _mm_shufflelo_epi16(_mm_cvtsi32_si128(distx), _MM_SHUFFLE(0, 0, 0, 0)); + const __m128i vmulx = _mm_unpacklo_epi16(vidistx, vdistx); + vlr = _mm_unpacklo_epi16(vlr, _mm_srli_si128(vlr, 8)); + // vlr now contains the colors of left and right interleaved { la, ra, lr, rr, lg, rg, lb, rb } + vlr = _mm_madd_epi16(vlr, vmulx); // Multiply and horizontal add. + vlr = _mm_srli_epi32(vlr, 8); + vlr = _mm_packs_epi32(vlr, vlr); + vlr = _mm_packus_epi16(vlr, vlr); + return _mm_cvtsi128_si32(vlr); +} + +static inline uint interpolate_4_pixels(uint tl, uint tr, uint bl, uint br, uint distx, uint disty) +{ + __m128i vt = _mm_unpacklo_epi32(_mm_cvtsi32_si128(tl), _mm_cvtsi32_si128(tr)); + __m128i vb = _mm_unpacklo_epi32(_mm_cvtsi32_si128(bl), _mm_cvtsi32_si128(br)); + return interpolate_4_pixels_sse2(vt, vb, distx, disty); +} + +static inline uint interpolate_4_pixels(const uint t[], const uint b[], uint distx, uint disty) +{ + __m128i vt = _mm_loadl_epi64((const __m128i*)t); + __m128i vb = _mm_loadl_epi64((const __m128i*)b); + return interpolate_4_pixels_sse2(vt, vb, distx, disty); +} +#elif defined(__ARM_NEON__) +static Q_ALWAYS_INLINE uint interpolate_4_pixels_neon(uint32x2_t vt32, uint32x2_t vb32, uint distx, uint disty) +{ + uint16x8_t vt16 = vmovl_u8(vreinterpret_u8_u32(vt32)); + uint16x8_t vb16 = vmovl_u8(vreinterpret_u8_u32(vb32)); + vt16 = vmulq_n_u16(vt16, 256 - disty); + vt16 = vmlaq_n_u16(vt16, vb16, disty); + vt16 = vshrq_n_u16(vt16, 8); + uint16x4_t vl16 = vget_low_u16(vt16); + uint16x4_t vr16 = vget_high_u16(vt16); + vl16 = vmul_n_u16(vl16, 256 - distx); + vl16 = vmla_n_u16(vl16, vr16, distx); + vl16 = vshr_n_u16(vl16, 8); + uint8x8_t vr = vmovn_u16(vcombine_u16(vl16, vl16)); + return vget_lane_u32(vreinterpret_u32_u8(vr), 0); +} + +static inline uint interpolate_4_pixels(uint tl, uint tr, uint bl, uint br, uint distx, uint disty) +{ + uint32x2_t vt32 = vmov_n_u32(tl); + uint32x2_t vb32 = vmov_n_u32(bl); + vt32 = vset_lane_u32(tr, vt32, 1); + vb32 = vset_lane_u32(br, vb32, 1); + return interpolate_4_pixels_neon(vt32, vb32, distx, disty); +} + +static inline uint interpolate_4_pixels(const uint t[], const uint b[], uint distx, uint disty) +{ + uint32x2_t vt32 = vld1_u32(t); + uint32x2_t vb32 = vld1_u32(b); + return interpolate_4_pixels_neon(vt32, vb32, distx, disty); +} +#else +static inline uint interpolate_4_pixels(uint tl, uint tr, uint bl, uint br, uint distx, uint disty) +{ + uint idistx = 256 - distx; + uint idisty = 256 - disty; + uint xtop = INTERPOLATE_PIXEL_256(tl, idistx, tr, distx); + uint xbot = INTERPOLATE_PIXEL_256(bl, idistx, br, distx); + return INTERPOLATE_PIXEL_256(xtop, idisty, xbot, disty); +} + +static inline uint interpolate_4_pixels(const uint t[], const uint b[], uint distx, uint disty) +{ + return interpolate_4_pixels(t[0], t[1], b[0], b[1], distx, disty); +} +#endif + +#if Q_BYTE_ORDER == Q_BIG_ENDIAN +static Q_ALWAYS_INLINE quint32 RGBA2ARGB(quint32 x) { + quint32 rgb = x >> 8; + quint32 a = x << 24; + return a | rgb; +} + +static Q_ALWAYS_INLINE quint32 ARGB2RGBA(quint32 x) { + quint32 rgb = x << 8; + quint32 a = x >> 24; + return a | rgb; +} +#else +static Q_ALWAYS_INLINE quint32 RGBA2ARGB(quint32 x) { + // RGBA8888 is ABGR32 on little endian. + quint32 ag = x & 0xff00ff00; + quint32 rg = x & 0x00ff00ff; + return ag | (rg << 16) | (rg >> 16); +} + +static Q_ALWAYS_INLINE quint32 ARGB2RGBA(quint32 x) { + return RGBA2ARGB(x); +} +#endif + +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; +} + +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; +} + +// qt_div_255 is a fast rounded division by 255 using an approximation that is accurate for all positive 16-bit integers +static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE int qt_div_255(int x) { return (x + (x>>8) + 0x80) >> 8; } +static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_div_65535(uint x) { return (x + (x>>16) + 0x8000U) >> 16; } + +static Q_ALWAYS_INLINE uint qAlphaRgb30(uint c) +{ + uint a = c >> 30; + a |= a << 2; + a |= a << 4; + return a; +} + +struct quint24 { + quint24(uint value); + operator uint() const; + uchar data[3]; +}; + +inline quint24::quint24(uint value) +{ + data[0] = uchar(value >> 16); + data[1] = uchar(value >> 8); + data[2] = uchar(value); +} + +inline quint24::operator uint() const +{ + return data[2] | (data[1] << 8) | (data[0] << 16); +} + +template Q_STATIC_TEMPLATE_FUNCTION +void qt_memfill(T *dest, T value, int count); + +template<> inline void qt_memfill(quint64 *dest, quint64 color, int count) +{ + qt_memfill64(dest, color, count); +} + +template<> inline void qt_memfill(quint32 *dest, quint32 color, int count) +{ + qt_memfill32(dest, color, count); +} + +template<> inline void qt_memfill(quint16 *dest, quint16 color, int count) +{ + qt_memfill16(dest, color, count); +} + +template<> inline void qt_memfill(quint8 *dest, quint8 color, int count) +{ + memset(dest, color, count); +} + +template +inline void qt_memfill(T *dest, T value, int count) +{ + if (!count) + return; + + int n = (count + 7) / 8; + switch (count & 0x07) + { + case 0: do { *dest++ = value; Q_FALLTHROUGH(); + case 7: *dest++ = value; Q_FALLTHROUGH(); + case 6: *dest++ = value; Q_FALLTHROUGH(); + case 5: *dest++ = value; Q_FALLTHROUGH(); + case 4: *dest++ = value; Q_FALLTHROUGH(); + case 3: *dest++ = value; Q_FALLTHROUGH(); + case 2: *dest++ = value; Q_FALLTHROUGH(); + case 1: *dest++ = value; + } while (--n > 0); + } +} + +template Q_STATIC_TEMPLATE_FUNCTION +inline void qt_rectfill(T *dest, T value, + int x, int y, int width, int height, int stride) +{ + char *d = reinterpret_cast(dest + x) + y * stride; + if (uint(stride) == (width * sizeof(T))) { + qt_memfill(reinterpret_cast(d), value, width * height); + } else { + for (int j = 0; j < height; ++j) { + dest = reinterpret_cast(d); + qt_memfill(dest, value, width); + d += stride; + } + } +} + +#define QT_MEMFILL_UINT(dest, length, color) \ + qt_memfill(dest, color, length); + +#define QT_MEMFILL_USHORT(dest, length, color) \ + qt_memfill(dest, color, length); + +#define QT_MEMCPY_REV_UINT(dest, src, length) \ +do { \ + /* Duff's device */ \ + uint *_d = (uint*)(dest) + length; \ + const uint *_s = (uint*)(src) + length; \ + int n = ((length) + 7) / 8; \ + switch ((length) & 0x07) \ + { \ + case 0: do { *--_d = *--_s; Q_FALLTHROUGH(); \ + case 7: *--_d = *--_s; Q_FALLTHROUGH(); \ + case 6: *--_d = *--_s; Q_FALLTHROUGH(); \ + case 5: *--_d = *--_s; Q_FALLTHROUGH(); \ + case 4: *--_d = *--_s; Q_FALLTHROUGH(); \ + case 3: *--_d = *--_s; Q_FALLTHROUGH(); \ + case 2: *--_d = *--_s; Q_FALLTHROUGH(); \ + case 1: *--_d = *--_s; \ + } while (--n > 0); \ + } \ +} while (false) + +#define QT_MEMCPY_USHORT(dest, src, length) \ +do { \ + /* Duff's device */ \ + ushort *_d = (ushort*)(dest); \ + const ushort *_s = (const ushort*)(src); \ + int n = ((length) + 7) / 8; \ + switch ((length) & 0x07) \ + { \ + case 0: do { *_d++ = *_s++; Q_FALLTHROUGH(); \ + case 7: *_d++ = *_s++; Q_FALLTHROUGH(); \ + case 6: *_d++ = *_s++; Q_FALLTHROUGH(); \ + case 5: *_d++ = *_s++; Q_FALLTHROUGH(); \ + case 4: *_d++ = *_s++; Q_FALLTHROUGH(); \ + case 3: *_d++ = *_s++; Q_FALLTHROUGH(); \ + case 2: *_d++ = *_s++; Q_FALLTHROUGH(); \ + case 1: *_d++ = *_s++; \ + } while (--n > 0); \ + } \ +} while (false) + +inline ushort qConvertRgb32To16(uint c) +{ + return (((c) >> 3) & 0x001f) + | (((c) >> 5) & 0x07e0) + | (((c) >> 8) & 0xf800); +} + +inline QRgb qConvertRgb16To32(uint c) +{ + return 0xff000000 + | ((((c) << 3) & 0xf8) | (((c) >> 2) & 0x7)) + | ((((c) << 5) & 0xfc00) | (((c) >> 1) & 0x300)) + | ((((c) << 8) & 0xf80000) | (((c) << 3) & 0x70000)); +} + +enum QtPixelOrder { + PixelOrderRGB, + PixelOrderBGR +}; + +template inline uint qConvertArgb32ToA2rgb30(QRgb); + +template inline uint qConvertRgb32ToRgb30(QRgb); + +template inline QRgb qConvertA2rgb30ToArgb32(uint c); + +// A combined unpremultiply and premultiply with new simplified alpha. +// Needed when alpha loses precision relative to other colors during conversion (ARGB32 -> A2RGB30). +template +inline QRgb qRepremultiply(QRgb p) +{ + const uint alpha = qAlpha(p); + if (alpha == 255 || alpha == 0) + return p; + p = qUnpremultiply(p); + Q_CONSTEXPR uint mult = 255 / (255 >> Shift); + const uint newAlpha = mult * (alpha >> Shift); + p = (p & ~0xff000000) | (newAlpha<<24); + return qPremultiply(p); +} + +template +inline QRgba64 qRepremultiply(QRgba64 p) +{ + const uint alpha = p.alpha(); + if (alpha == 65535 || alpha == 0) + return p; + p = p.unpremultiplied(); + Q_CONSTEXPR uint mult = 65535 / (65535 >> Shift); + p.setAlpha(mult * (alpha >> Shift)); + return p.premultiplied(); +} + +template<> +inline uint qConvertArgb32ToA2rgb30(QRgb c) +{ + c = qRepremultiply<6>(c); + return (c & 0xc0000000) + | (((c << 22) & 0x3fc00000) | ((c << 14) & 0x00300000)) + | (((c << 4) & 0x000ff000) | ((c >> 4) & 0x00000c00)) + | (((c >> 14) & 0x000003fc) | ((c >> 22) & 0x00000003)); +} + +template<> +inline uint qConvertArgb32ToA2rgb30(QRgb c) +{ + c = qRepremultiply<6>(c); + return (c & 0xc0000000) + | (((c << 6) & 0x3fc00000) | ((c >> 2) & 0x00300000)) + | (((c << 4) & 0x000ff000) | ((c >> 4) & 0x00000c00)) + | (((c << 2) & 0x000003fc) | ((c >> 6) & 0x00000003)); +} + +template<> +inline uint qConvertRgb32ToRgb30(QRgb c) +{ + return 0xc0000000 + | (((c << 22) & 0x3fc00000) | ((c << 14) & 0x00300000)) + | (((c << 4) & 0x000ff000) | ((c >> 4) & 0x00000c00)) + | (((c >> 14) & 0x000003fc) | ((c >> 22) & 0x00000003)); +} + +template<> +inline uint qConvertRgb32ToRgb30(QRgb c) +{ + return 0xc0000000 + | (((c << 6) & 0x3fc00000) | ((c >> 2) & 0x00300000)) + | (((c << 4) & 0x000ff000) | ((c >> 4) & 0x00000c00)) + | (((c << 2) & 0x000003fc) | ((c >> 6) & 0x00000003)); +} + +template<> +inline QRgb qConvertA2rgb30ToArgb32(uint c) +{ + uint a = c >> 30; + a |= a << 2; + a |= a << 4; + return (a << 24) + | ((c << 14) & 0x00ff0000) + | ((c >> 4) & 0x0000ff00) + | ((c >> 22) & 0x000000ff); +} + +template<> +inline QRgb qConvertA2rgb30ToArgb32(uint c) +{ + uint a = c >> 30; + a |= a << 2; + a |= a << 4; + return (a << 24) + | ((c >> 6) & 0x00ff0000) + | ((c >> 4) & 0x0000ff00) + | ((c >> 2) & 0x000000ff); +} + +template inline QRgba64 qConvertA2rgb30ToRgb64(uint rgb); + +template<> +inline QRgba64 qConvertA2rgb30ToRgb64(uint rgb) +{ + quint16 alpha = rgb >> 30; + quint16 blue = (rgb >> 20) & 0x3ff; + quint16 green = (rgb >> 10) & 0x3ff; + quint16 red = rgb & 0x3ff; + // Expand the range. + alpha |= (alpha << 2); + alpha |= (alpha << 4); + alpha |= (alpha << 8); + red = (red << 6) | (red >> 4); + green = (green << 6) | (green >> 4); + blue = (blue << 6) | (blue >> 4); + return qRgba64(red, green, blue, alpha); +} + +template<> +inline QRgba64 qConvertA2rgb30ToRgb64(uint rgb) +{ + quint16 alpha = rgb >> 30; + quint16 red = (rgb >> 20) & 0x3ff; + quint16 green = (rgb >> 10) & 0x3ff; + quint16 blue = rgb & 0x3ff; + // Expand the range. + alpha |= (alpha << 2); + alpha |= (alpha << 4); + alpha |= (alpha << 8); + red = (red << 6) | (red >> 4); + green = (green << 6) | (green >> 4); + blue = (blue << 6) | (blue >> 4); + return qRgba64(red, green, blue, alpha); +} + +template inline unsigned int qConvertRgb64ToRgb30(QRgba64); + +template<> +inline unsigned int qConvertRgb64ToRgb30(QRgba64 c) +{ + c = qRepremultiply<14>(c); + const uint a = c.alpha() >> 14; + const uint r = c.red() >> 6; + const uint g = c.green() >> 6; + const uint b = c.blue() >> 6; + return (a << 30) | (b << 20) | (g << 10) | r; +} + +template<> +inline unsigned int qConvertRgb64ToRgb30(QRgba64 c) +{ + c = qRepremultiply<14>(c); + const uint a = c.alpha() >> 14; + const uint r = c.red() >> 6; + const uint g = c.green() >> 6; + const uint b = c.blue() >> 6; + return (a << 30) | (r << 20) | (g << 10) | b; +} + +inline uint qRgbSwapRgb30(uint c) +{ + const uint ag = c & 0xc00ffc00; + const uint rb = c & 0x3ff003ff; + return ag | (rb << 20) | (rb >> 20); +} + +inline int qRed565(quint16 rgb) { + const int r = (rgb & 0xf800); + return (r >> 8) | (r >> 13); +} + +inline int qGreen565(quint16 rgb) { + const int g = (rgb & 0x07e0); + return (g >> 3) | (g >> 9); +} + +inline int qBlue565(quint16 rgb) { + const int b = (rgb & 0x001f); + return (b << 3) | (b >> 2); +} + + +static Q_ALWAYS_INLINE const uint *qt_convertARGB32ToARGB32PM(uint *buffer, const uint *src, int count) +{ + for (int i = 0; i < count; ++i) + buffer[i] = qPremultiply(src[i]); + return buffer; +} + +static Q_ALWAYS_INLINE const uint *qt_convertRGBA8888ToARGB32PM(uint *buffer, const uint *src, int count) +{ + for (int i = 0; i < count; ++i) + buffer[i] = qPremultiply(RGBA2ARGB(src[i])); + return buffer; +} + + +const uint qt_bayer_matrix[16][16] = { + { 0x1, 0xc0, 0x30, 0xf0, 0xc, 0xcc, 0x3c, 0xfc, + 0x3, 0xc3, 0x33, 0xf3, 0xf, 0xcf, 0x3f, 0xff}, + { 0x80, 0x40, 0xb0, 0x70, 0x8c, 0x4c, 0xbc, 0x7c, + 0x83, 0x43, 0xb3, 0x73, 0x8f, 0x4f, 0xbf, 0x7f}, + { 0x20, 0xe0, 0x10, 0xd0, 0x2c, 0xec, 0x1c, 0xdc, + 0x23, 0xe3, 0x13, 0xd3, 0x2f, 0xef, 0x1f, 0xdf}, + { 0xa0, 0x60, 0x90, 0x50, 0xac, 0x6c, 0x9c, 0x5c, + 0xa3, 0x63, 0x93, 0x53, 0xaf, 0x6f, 0x9f, 0x5f}, + { 0x8, 0xc8, 0x38, 0xf8, 0x4, 0xc4, 0x34, 0xf4, + 0xb, 0xcb, 0x3b, 0xfb, 0x7, 0xc7, 0x37, 0xf7}, + { 0x88, 0x48, 0xb8, 0x78, 0x84, 0x44, 0xb4, 0x74, + 0x8b, 0x4b, 0xbb, 0x7b, 0x87, 0x47, 0xb7, 0x77}, + { 0x28, 0xe8, 0x18, 0xd8, 0x24, 0xe4, 0x14, 0xd4, + 0x2b, 0xeb, 0x1b, 0xdb, 0x27, 0xe7, 0x17, 0xd7}, + { 0xa8, 0x68, 0x98, 0x58, 0xa4, 0x64, 0x94, 0x54, + 0xab, 0x6b, 0x9b, 0x5b, 0xa7, 0x67, 0x97, 0x57}, + { 0x2, 0xc2, 0x32, 0xf2, 0xe, 0xce, 0x3e, 0xfe, + 0x1, 0xc1, 0x31, 0xf1, 0xd, 0xcd, 0x3d, 0xfd}, + { 0x82, 0x42, 0xb2, 0x72, 0x8e, 0x4e, 0xbe, 0x7e, + 0x81, 0x41, 0xb1, 0x71, 0x8d, 0x4d, 0xbd, 0x7d}, + { 0x22, 0xe2, 0x12, 0xd2, 0x2e, 0xee, 0x1e, 0xde, + 0x21, 0xe1, 0x11, 0xd1, 0x2d, 0xed, 0x1d, 0xdd}, + { 0xa2, 0x62, 0x92, 0x52, 0xae, 0x6e, 0x9e, 0x5e, + 0xa1, 0x61, 0x91, 0x51, 0xad, 0x6d, 0x9d, 0x5d}, + { 0xa, 0xca, 0x3a, 0xfa, 0x6, 0xc6, 0x36, 0xf6, + 0x9, 0xc9, 0x39, 0xf9, 0x5, 0xc5, 0x35, 0xf5}, + { 0x8a, 0x4a, 0xba, 0x7a, 0x86, 0x46, 0xb6, 0x76, + 0x89, 0x49, 0xb9, 0x79, 0x85, 0x45, 0xb5, 0x75}, + { 0x2a, 0xea, 0x1a, 0xda, 0x26, 0xe6, 0x16, 0xd6, + 0x29, 0xe9, 0x19, 0xd9, 0x25, 0xe5, 0x15, 0xd5}, + { 0xaa, 0x6a, 0x9a, 0x5a, 0xa6, 0x66, 0x96, 0x56, + 0xa9, 0x69, 0x99, 0x59, 0xa5, 0x65, 0x95, 0x55} +}; + +#define ARGB_COMBINE_ALPHA(argb, alpha) \ + ((((argb >> 24) * alpha) >> 8) << 24) | (argb & 0x00ffffff) + + +#if Q_PROCESSOR_WORDSIZE == 8 // 64-bit versions +#define AMIX(mask) (qMin(((qint64(s)&mask) + (qint64(d)&mask)), qint64(mask))) +#define MIX(mask) (qMin(((qint64(s)&mask) + (qint64(d)&mask)), qint64(mask))) +#else // 32 bits +// The mask for alpha can overflow over 32 bits +#define AMIX(mask) quint32(qMin(((qint64(s)&mask) + (qint64(d)&mask)), qint64(mask))) +#define MIX(mask) (qMin(((quint32(s)&mask) + (quint32(d)&mask)), quint32(mask))) +#endif + +inline int comp_func_Plus_one_pixel_const_alpha(uint d, const uint s, const uint const_alpha, const uint one_minus_const_alpha) +{ + const int result = (AMIX(AMASK) | MIX(RMASK) | MIX(GMASK) | MIX(BMASK)); + return INTERPOLATE_PIXEL_255(result, const_alpha, d, one_minus_const_alpha); +} + +inline int comp_func_Plus_one_pixel(uint d, const uint s) +{ + const int result = (AMIX(AMASK) | MIX(RMASK) | MIX(GMASK) | MIX(BMASK)); + return result; +} + +#undef MIX +#undef AMIX + +struct QDitherInfo { + int x; + int y; +}; + +typedef const uint *(QT_FASTCALL *ConvertFunc)(uint *buffer, const uint *src, int count, + const QVector *clut, QDitherInfo *dither); +typedef const QRgba64 *(QT_FASTCALL *ConvertFunc64)(QRgba64 *buffer, const uint *src, int count, + const QVector *clut, QDitherInfo *dither); + +struct QPixelLayout +{ + // Bits per pixel + enum BPP { + BPPNone, + BPP1MSB, + BPP1LSB, + BPP8, + BPP16, + BPP24, + BPP32, + BPPCount + }; + + // All numbers in bits. + uchar redWidth; + uchar redShift; + uchar greenWidth; + uchar greenShift; + uchar blueWidth; + uchar blueShift; + uchar alphaWidth; + uchar alphaShift; + bool premultiplied; + BPP bpp; + ConvertFunc convertToARGB32PM; + ConvertFunc convertFromARGB32PM; + ConvertFunc convertFromRGB32; + ConvertFunc64 convertToARGB64PM; +}; + +typedef const uint *(QT_FASTCALL *FetchPixelsFunc)(uint *buffer, const uchar *src, int index, int count); +typedef void (QT_FASTCALL *StorePixelsFunc)(uchar *dest, const uint *src, int index, int count); + +extern QPixelLayout qPixelLayouts[QImage::NImageFormats]; +extern const FetchPixelsFunc qFetchPixels[QPixelLayout::BPPCount]; +extern StorePixelsFunc qStorePixels[QPixelLayout::BPPCount]; + +extern MemRotateFunc qMemRotateFunctions[QPixelLayout::BPPCount][3]; + + +QT_END_NAMESPACE + +#endif // QDRAWHELPER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_x86_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_x86_p.h new file mode 100644 index 000000000..cefc21399 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawhelper_x86_p.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDRAWHELPER_X86_P_H +#define QDRAWHELPER_X86_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +#ifdef __SSE2__ +void qt_memfill32(quint32 *dest, quint32 value, int count); +void qt_memfill16(quint16 *dest, quint16 value, int count); +void qt_bitmapblit32_sse2(QRasterBuffer *rasterBuffer, int x, int y, + const QRgba64 &color, + const uchar *src, int width, int height, int stride); +void qt_bitmapblit8888_sse2(QRasterBuffer *rasterBuffer, int x, int y, + const QRgba64 &color, + const uchar *src, int width, int height, int stride); +void qt_bitmapblit16_sse2(QRasterBuffer *rasterBuffer, int x, int y, + const QRgba64 &color, + const uchar *src, int width, int height, int stride); +void qt_blend_argb32_on_argb32_sse2(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); +void qt_blend_rgb32_on_rgb32_sse2(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + +extern CompositionFunction qt_functionForMode_SSE2[]; +extern CompositionFunctionSolid qt_functionForModeSolid_SSE2[]; +#endif // __SSE2__ + +static const int numCompositionFunctions = 38; + +QT_END_NAMESPACE + +#endif // QDRAWHELPER_X86_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawingprimitive_sse2_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawingprimitive_sse2_p.h new file mode 100644 index 000000000..93e4b9f57 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qdrawingprimitive_sse2_p.h @@ -0,0 +1,291 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDRAWINGPRIMITIVE_SSE2_P_H +#define QDRAWINGPRIMITIVE_SSE2_P_H + +#include +#include +#include "qdrawhelper_p.h" + +#ifdef __SSE2__ + +// +// 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. +// + +QT_BEGIN_NAMESPACE + +/* + * Multiply the components of pixelVector by alphaChannel + * Each 32bits components of alphaChannel must be in the form 0x00AA00AA + * colorMask must have 0x00ff00ff on each 32 bits component + * half must have the value 128 (0x80) for each 32 bits compnent + */ +#define BYTE_MUL_SSE2(result, pixelVector, alphaChannel, colorMask, half) \ +{ \ + /* 1. separate the colors in 2 vectors so each color is on 16 bits \ + (in order to be multiplied by the alpha \ + each 32 bit of dstVectorAG are in the form 0x00AA00GG \ + each 32 bit of dstVectorRB are in the form 0x00RR00BB */\ + __m128i pixelVectorAG = _mm_srli_epi16(pixelVector, 8); \ + __m128i pixelVectorRB = _mm_and_si128(pixelVector, colorMask); \ + \ + /* 2. multiply the vectors by the alpha channel */\ + pixelVectorAG = _mm_mullo_epi16(pixelVectorAG, alphaChannel); \ + pixelVectorRB = _mm_mullo_epi16(pixelVectorRB, alphaChannel); \ + \ + /* 3. divide by 255, that's the tricky part. \ + we do it like for BYTE_MUL(), with bit shift: X/255 ~= (X + X/256 + rounding)/256 */ \ + /** so first (X + X/256 + rounding) */\ + pixelVectorRB = _mm_add_epi16(pixelVectorRB, _mm_srli_epi16(pixelVectorRB, 8)); \ + pixelVectorRB = _mm_add_epi16(pixelVectorRB, half); \ + pixelVectorAG = _mm_add_epi16(pixelVectorAG, _mm_srli_epi16(pixelVectorAG, 8)); \ + pixelVectorAG = _mm_add_epi16(pixelVectorAG, half); \ + \ + /** second divide by 256 */\ + pixelVectorRB = _mm_srli_epi16(pixelVectorRB, 8); \ + /** for AG, we could >> 8 to divide followed by << 8 to put the \ + bytes in the correct position. By masking instead, we execute \ + only one instruction */\ + pixelVectorAG = _mm_andnot_si128(colorMask, pixelVectorAG); \ + \ + /* 4. combine the 2 pairs of colors */ \ + result = _mm_or_si128(pixelVectorAG, pixelVectorRB); \ +} + +/* + * Each 32bits components of alphaChannel must be in the form 0x00AA00AA + * oneMinusAlphaChannel must be 255 - alpha for each 32 bits component + * colorMask must have 0x00ff00ff on each 32 bits component + * half must have the value 128 (0x80) for each 32 bits compnent + */ +#define INTERPOLATE_PIXEL_255_SSE2(result, srcVector, dstVector, alphaChannel, oneMinusAlphaChannel, colorMask, half) { \ + /* interpolate AG */\ + __m128i srcVectorAG = _mm_srli_epi16(srcVector, 8); \ + __m128i dstVectorAG = _mm_srli_epi16(dstVector, 8); \ + __m128i srcVectorAGalpha = _mm_mullo_epi16(srcVectorAG, alphaChannel); \ + __m128i dstVectorAGoneMinusAlphalpha = _mm_mullo_epi16(dstVectorAG, oneMinusAlphaChannel); \ + __m128i finalAG = _mm_add_epi16(srcVectorAGalpha, dstVectorAGoneMinusAlphalpha); \ + finalAG = _mm_add_epi16(finalAG, _mm_srli_epi16(finalAG, 8)); \ + finalAG = _mm_add_epi16(finalAG, half); \ + finalAG = _mm_andnot_si128(colorMask, finalAG); \ + \ + /* interpolate RB */\ + __m128i srcVectorRB = _mm_and_si128(srcVector, colorMask); \ + __m128i dstVectorRB = _mm_and_si128(dstVector, colorMask); \ + __m128i srcVectorRBalpha = _mm_mullo_epi16(srcVectorRB, alphaChannel); \ + __m128i dstVectorRBoneMinusAlphalpha = _mm_mullo_epi16(dstVectorRB, oneMinusAlphaChannel); \ + __m128i finalRB = _mm_add_epi16(srcVectorRBalpha, dstVectorRBoneMinusAlphalpha); \ + finalRB = _mm_add_epi16(finalRB, _mm_srli_epi16(finalRB, 8)); \ + finalRB = _mm_add_epi16(finalRB, half); \ + finalRB = _mm_srli_epi16(finalRB, 8); \ + \ + /* combine */\ + result = _mm_or_si128(finalAG, finalRB); \ +} + +// same as BLEND_SOURCE_OVER_ARGB32_SSE2, but for one vector srcVector +#define BLEND_SOURCE_OVER_ARGB32_SSE2_helper(dst, srcVector, nullVector, half, one, colorMask, alphaMask) { \ + const __m128i srcVectorAlpha = _mm_and_si128(srcVector, alphaMask); \ + if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, alphaMask)) == 0xffff) { \ + /* all opaque */ \ + _mm_store_si128((__m128i *)&dst[x], srcVector); \ + } else if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, nullVector)) != 0xffff) { \ + /* not fully transparent */ \ + /* extract the alpha channel on 2 x 16 bits */ \ + /* so we have room for the multiplication */ \ + /* each 32 bits will be in the form 0x00AA00AA */ \ + /* with A being the 1 - alpha */ \ + __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); \ + alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); \ + alphaChannel = _mm_sub_epi16(one, alphaChannel); \ + \ + const __m128i dstVector = _mm_load_si128((__m128i *)&dst[x]); \ + __m128i destMultipliedByOneMinusAlpha; \ + BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ + \ + /* result = s + d * (1-alpha) */\ + const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ + _mm_store_si128((__m128i *)&dst[x], result); \ + } \ + } + + +// Basically blend src over dst with the const alpha defined as constAlphaVector. +// nullVector, half, one, colorMask are constant across the whole image/texture, and should be defined as: +//const __m128i nullVector = _mm_set1_epi32(0); +//const __m128i half = _mm_set1_epi16(0x80); +//const __m128i one = _mm_set1_epi16(0xff); +//const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); +//const __m128i alphaMask = _mm_set1_epi32(0xff000000); +// +// The computation being done is: +// result = s + d * (1-alpha) +// with shortcuts if fully opaque or fully transparent. +#define BLEND_SOURCE_OVER_ARGB32_SSE2(dst, src, length, nullVector, half, one, colorMask, alphaMask) { \ + int x = 0; \ +\ + /* First, get dst aligned. */ \ + ALIGNMENT_PROLOGUE_16BYTES(dst, x, length) { \ + blend_pixel(dst[x], src[x]); \ + } \ +\ + for (; x < length-3; x += 4) { \ + const __m128i srcVector = _mm_loadu_si128((const __m128i *)&src[x]); \ + BLEND_SOURCE_OVER_ARGB32_SSE2_helper(dst, srcVector, nullVector, half, one, colorMask, alphaMask) \ + } \ + SIMD_EPILOGUE(x, length, 3) { \ + blend_pixel(dst[x], src[x]); \ + } \ +} + +// Basically blend src over dst with the const alpha defined as constAlphaVector. +// nullVector, half, one, colorMask are constant across the whole image/texture, and should be defined as: +//const __m128i nullVector = _mm_set1_epi32(0); +//const __m128i half = _mm_set1_epi16(0x80); +//const __m128i one = _mm_set1_epi16(0xff); +//const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); +// +// The computation being done is: +// dest = (s + d * sia) * ca + d * cia +// = s * ca + d * (sia * ca + cia) +// = s * ca + d * (1 - sa*ca) +#define BLEND_SOURCE_OVER_ARGB32_WITH_CONST_ALPHA_SSE2(dst, src, length, nullVector, half, one, colorMask, constAlphaVector) \ +{ \ + int x = 0; \ +\ + ALIGNMENT_PROLOGUE_16BYTES(dst, x, length) { \ + blend_pixel(dst[x], src[x], const_alpha); \ + } \ +\ + for (; x < length-3; x += 4) { \ + __m128i srcVector = _mm_loadu_si128((const __m128i *)&src[x]); \ + if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVector, nullVector)) != 0xffff) { \ + BYTE_MUL_SSE2(srcVector, srcVector, constAlphaVector, colorMask, half); \ +\ + __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); \ + alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); \ + alphaChannel = _mm_sub_epi16(one, alphaChannel); \ + \ + const __m128i dstVector = _mm_load_si128((__m128i *)&dst[x]); \ + __m128i destMultipliedByOneMinusAlpha; \ + BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ + \ + const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ + _mm_store_si128((__m128i *)&dst[x], result); \ + } \ + } \ + SIMD_EPILOGUE(x, length, 3) { \ + blend_pixel(dst[x], src[x], const_alpha); \ + } \ +} + +QT_END_NAMESPACE + +#endif // __SSE2__ + +QT_BEGIN_NAMESPACE +#if QT_COMPILER_SUPPORTS_HERE(SSE4_1) +QT_FUNCTION_TARGET(SSE4_1) +inline QRgb qUnpremultiply_sse4(QRgb p) +{ + const uint alpha = qAlpha(p); + if (alpha == 255 || alpha == 0) + return p; + const uint invAlpha = qt_inv_premul_factor[alpha]; + const __m128i via = _mm_set1_epi32(invAlpha); + const __m128i vr = _mm_set1_epi32(0x8000); + __m128i vl = _mm_cvtepu8_epi32(_mm_cvtsi32_si128(p)); + vl = _mm_mullo_epi32(vl, via); + vl = _mm_add_epi32(vl, vr); + vl = _mm_srai_epi32(vl, 16); + vl = _mm_insert_epi32(vl, alpha, 3); + vl = _mm_packus_epi32(vl, vl); + vl = _mm_packus_epi16(vl, vl); + return _mm_cvtsi128_si32(vl); +} + +template +QT_FUNCTION_TARGET(SSE4_1) +inline uint qConvertArgb32ToA2rgb30_sse4(QRgb p) +{ + const uint alpha = qAlpha(p); + if (alpha == 255) + return qConvertRgb32ToRgb30(p); + if (alpha == 0) + return 0; + Q_CONSTEXPR uint mult = 255 / (255 >> 6); + const uint invAlpha = qt_inv_premul_factor[alpha]; + const uint newalpha = (alpha >> 6); + const __m128i via = _mm_set1_epi32(invAlpha); + const __m128i vna = _mm_set1_epi32(mult * newalpha); + const __m128i vr1 = _mm_set1_epi32(0x1000); + const __m128i vr2 = _mm_set1_epi32(0x80); + __m128i vl = _mm_cvtepu8_epi32(_mm_cvtsi32_si128(p)); + vl = _mm_mullo_epi32(vl, via); + vl = _mm_add_epi32(vl, vr1); + vl = _mm_srli_epi32(vl, 14); + vl = _mm_mullo_epi32(vl, vna); + vl = _mm_add_epi32(vl, _mm_srli_epi32(vl, 8)); + vl = _mm_add_epi32(vl, vr2); + vl = _mm_srli_epi32(vl, 8); + vl = _mm_packus_epi32(vl, vl); + uint rgb30 = (newalpha << 30); + rgb30 |= ((uint)_mm_extract_epi16(vl, 1)) << 10; + if (PixelOrder == PixelOrderRGB) { + rgb30 |= ((uint)_mm_extract_epi16(vl, 2)) << 20; + rgb30 |= ((uint)_mm_extract_epi16(vl, 0)); + } else { + rgb30 |= ((uint)_mm_extract_epi16(vl, 0)) << 20; + rgb30 |= ((uint)_mm_extract_epi16(vl, 2)); + } + return rgb30; +} +#endif +QT_END_NAMESPACE + +#endif // QDRAWINGPRIMITIVE_SSE2_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qemulationpaintengine_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qemulationpaintengine_p.h new file mode 100644 index 000000000..a2eb9b008 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qemulationpaintengine_p.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEMULATIONPAINTENGINE_P_H +#define QEMULATIONPAINTENGINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + + +class QEmulationPaintEngine : public QPaintEngineEx +{ +public: + QEmulationPaintEngine(QPaintEngineEx *engine); + + bool begin(QPaintDevice *pdev) override; + bool end() override; + + Type type() const override; + QPainterState *createState(QPainterState *orig) const override; + + void fill(const QVectorPath &path, const QBrush &brush) override; + void stroke(const QVectorPath &path, const QPen &pen) override; + void clip(const QVectorPath &path, Qt::ClipOperation op) override; + + void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) override; + void drawTextItem(const QPointF &p, const QTextItem &textItem) override; + void drawStaticTextItem(QStaticTextItem *item) override; + void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s) override; + void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags) override; + + void clipEnabledChanged() override; + void penChanged() override; + void brushChanged() override; + void brushOriginChanged() override; + void opacityChanged() override; + void compositionModeChanged() override; + void renderHintsChanged() override; + void transformChanged() override; + + void setState(QPainterState *s) override; + + void beginNativePainting() override; + void endNativePainting() override; + + uint flags() const override { return QPaintEngineEx::IsEmulationEngine | QPaintEngineEx::DoNotEmulate; } + + inline QPainterState *state() { return (QPainterState *)QPaintEngine::state; } + inline const QPainterState *state() const { return (const QPainterState *)QPaintEngine::state; } + + QPaintEngineEx *real_engine; +private: + void fillBGRect(const QRectF &r); +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qevent_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qevent_p.h new file mode 100644 index 000000000..7df4a1e25 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qevent_p.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEVENT_P_H +#define QEVENT_P_H + +#include +#include +#include + + +QT_BEGIN_NAMESPACE + +// +// 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. +// + +class QTouchEventTouchPointPrivate +{ +public: + inline QTouchEventTouchPointPrivate(int id) + : ref(1), + id(id), + state(Qt::TouchPointReleased), + pressure(-1), + rotation(0), + ellipseDiameters(0, 0) + { } + + inline QTouchEventTouchPointPrivate *detach() + { + QTouchEventTouchPointPrivate *d = new QTouchEventTouchPointPrivate(*this); + d->ref.store(1); + if (!this->ref.deref()) + delete this; + return d; + } + + QAtomicInt ref; + int id; + QPointingDeviceUniqueId uniqueId; + Qt::TouchPointStates state; + QPointF pos, scenePos, screenPos, normalizedPos, + startPos, startScenePos, startScreenPos, startNormalizedPos, + lastPos, lastScenePos, lastScreenPos, lastNormalizedPos; + qreal pressure; + qreal rotation; + QSizeF ellipseDiameters; + QVector2D velocity; + QTouchEvent::TouchPoint::InfoFlags flags; + QVector rawScreenPositions; +}; + +#if QT_CONFIG(tabletevent) +class QTabletEventPrivate +{ +public: + inline QTabletEventPrivate(Qt::MouseButton button, Qt::MouseButtons buttons) + : b(button), + buttonState(buttons) + { } + + Qt::MouseButton b; + Qt::MouseButtons buttonState; +}; +#endif // QT_CONFIG(tabletevent) + +QT_END_NAMESPACE + +#endif // QEVENT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfixed_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfixed_p.h new file mode 100644 index 000000000..846592881 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfixed_p.h @@ -0,0 +1,221 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFIXED_P_H +#define QFIXED_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qdebug.h" +#include "QtCore/qpoint.h" +#include "QtCore/qsize.h" + +QT_BEGIN_NAMESPACE + +struct QFixed { +private: + Q_DECL_CONSTEXPR QFixed(int val, int) : val(val) {} // 2nd int is just a dummy for disambiguation +public: + Q_DECL_CONSTEXPR QFixed() : val(0) {} + Q_DECL_CONSTEXPR QFixed(int i) : val(i * 64) {} + Q_DECL_CONSTEXPR QFixed(long i) : val(i * 64) {} + QFixed &operator=(int i) { val = i * 64; return *this; } + QFixed &operator=(long i) { val = i * 64; return *this; } + + Q_DECL_CONSTEXPR static QFixed fromReal(qreal r) { return fromFixed((int)(r*qreal(64))); } + Q_DECL_CONSTEXPR static QFixed fromFixed(int fixed) { return QFixed(fixed,0); } // uses private ctor + + Q_DECL_CONSTEXPR inline int value() const { return val; } + inline void setValue(int value) { val = value; } + + Q_DECL_CONSTEXPR inline int toInt() const { return (((val)+32) & -64)>>6; } + Q_DECL_CONSTEXPR inline qreal toReal() const { return ((qreal)val)/(qreal)64; } + + Q_DECL_CONSTEXPR inline int truncate() const { return val>>6; } + Q_DECL_CONSTEXPR inline QFixed round() const { return fromFixed(((val)+32) & -64); } + Q_DECL_CONSTEXPR inline QFixed floor() const { return fromFixed((val) & -64); } + Q_DECL_CONSTEXPR inline QFixed ceil() const { return fromFixed((val+63) & -64); } + + Q_DECL_CONSTEXPR inline QFixed operator+(int i) const { return fromFixed(val + i * 64); } + Q_DECL_CONSTEXPR inline QFixed operator+(uint i) const { return fromFixed((val + (i<<6))); } + Q_DECL_CONSTEXPR inline QFixed operator+(const QFixed &other) const { return fromFixed((val + other.val)); } + inline QFixed &operator+=(int i) { val += i * 64; return *this; } + inline QFixed &operator+=(uint i) { val += (i<<6); return *this; } + inline QFixed &operator+=(const QFixed &other) { val += other.val; return *this; } + Q_DECL_CONSTEXPR inline QFixed operator-(int i) const { return fromFixed(val - i * 64); } + Q_DECL_CONSTEXPR inline QFixed operator-(uint i) const { return fromFixed((val - (i<<6))); } + Q_DECL_CONSTEXPR inline QFixed operator-(const QFixed &other) const { return fromFixed((val - other.val)); } + inline QFixed &operator-=(int i) { val -= i * 64; return *this; } + inline QFixed &operator-=(uint i) { val -= (i<<6); return *this; } + inline QFixed &operator-=(const QFixed &other) { val -= other.val; return *this; } + Q_DECL_CONSTEXPR inline QFixed operator-() const { return fromFixed(-val); } + + Q_DECL_CONSTEXPR inline bool operator==(const QFixed &other) const { return val == other.val; } + Q_DECL_CONSTEXPR inline bool operator!=(const QFixed &other) const { return val != other.val; } + Q_DECL_CONSTEXPR inline bool operator<(const QFixed &other) const { return val < other.val; } + Q_DECL_CONSTEXPR inline bool operator>(const QFixed &other) const { return val > other.val; } + Q_DECL_CONSTEXPR inline bool operator<=(const QFixed &other) const { return val <= other.val; } + Q_DECL_CONSTEXPR inline bool operator>=(const QFixed &other) const { return val >= other.val; } + Q_DECL_CONSTEXPR inline bool operator!() const { return !val; } + + inline QFixed &operator/=(int x) { val /= x; return *this; } + inline QFixed &operator/=(const QFixed &o) { + if (o.val == 0) { + val = 0x7FFFFFFFL; + } else { + bool neg = false; + qint64 a = val; + qint64 b = o.val; + if (a < 0) { a = -a; neg = true; } + if (b < 0) { b = -b; neg = !neg; } + + int res = (int)(((a << 6) + (b >> 1)) / b); + + val = (neg ? -res : res); + } + return *this; + } + Q_DECL_CONSTEXPR inline QFixed operator/(int d) const { return fromFixed(val/d); } + inline QFixed operator/(QFixed b) const { QFixed f = *this; return (f /= b); } + inline QFixed operator>>(int d) const { QFixed f = *this; f.val >>= d; return f; } + inline QFixed &operator*=(int i) { val *= i; return *this; } + inline QFixed &operator*=(uint i) { val *= i; return *this; } + inline QFixed &operator*=(const QFixed &o) { + bool neg = false; + qint64 a = val; + qint64 b = o.val; + if (a < 0) { a = -a; neg = true; } + if (b < 0) { b = -b; neg = !neg; } + + int res = (int)((a * b + 0x20L) >> 6); + val = neg ? -res : res; + return *this; + } + Q_DECL_CONSTEXPR inline QFixed operator*(int i) const { return fromFixed(val * i); } + Q_DECL_CONSTEXPR inline QFixed operator*(uint i) const { return fromFixed(val * i); } + inline QFixed operator*(const QFixed &o) const { QFixed f = *this; return (f *= o); } + +private: + Q_DECL_CONSTEXPR QFixed(qreal i) : val((int)(i*qreal(64))) {} + QFixed &operator=(qreal i) { val = (int)(i*qreal(64)); return *this; } + Q_DECL_CONSTEXPR inline QFixed operator+(qreal i) const { return fromFixed((val + (int)(i*qreal(64)))); } + inline QFixed &operator+=(qreal i) { val += (int)(i*64); return *this; } + Q_DECL_CONSTEXPR inline QFixed operator-(qreal i) const { return fromFixed((val - (int)(i*qreal(64)))); } + inline QFixed &operator-=(qreal i) { val -= (int)(i*64); return *this; } + inline QFixed &operator/=(qreal r) { val = (int)(val/r); return *this; } + Q_DECL_CONSTEXPR inline QFixed operator/(qreal d) const { return fromFixed((int)(val/d)); } + inline QFixed &operator*=(qreal d) { val = (int) (val*d); return *this; } + Q_DECL_CONSTEXPR inline QFixed operator*(qreal d) const { return fromFixed((int) (val*d)); } + int val; +}; +Q_DECLARE_TYPEINFO(QFixed, Q_PRIMITIVE_TYPE); + +#define QFIXED_MAX (INT_MAX/256) + +Q_DECL_CONSTEXPR inline int qRound(const QFixed &f) { return f.toInt(); } +Q_DECL_CONSTEXPR inline int qFloor(const QFixed &f) { return f.floor().truncate(); } + +Q_DECL_CONSTEXPR inline QFixed operator*(int i, const QFixed &d) { return d*i; } +Q_DECL_CONSTEXPR inline QFixed operator+(int i, const QFixed &d) { return d+i; } +Q_DECL_CONSTEXPR inline QFixed operator-(int i, const QFixed &d) { return -(d-i); } +Q_DECL_CONSTEXPR inline QFixed operator*(uint i, const QFixed &d) { return d*i; } +Q_DECL_CONSTEXPR inline QFixed operator+(uint i, const QFixed &d) { return d+i; } +Q_DECL_CONSTEXPR inline QFixed operator-(uint i, const QFixed &d) { return -(d-i); } +// Q_DECL_CONSTEXPR inline QFixed operator*(qreal d, const QFixed &d2) { return d2*d; } + +Q_DECL_CONSTEXPR inline bool operator==(const QFixed &f, int i) { return f.value() == i * 64; } +Q_DECL_CONSTEXPR inline bool operator==(int i, const QFixed &f) { return f.value() == i * 64; } +Q_DECL_CONSTEXPR inline bool operator!=(const QFixed &f, int i) { return f.value() != i * 64; } +Q_DECL_CONSTEXPR inline bool operator!=(int i, const QFixed &f) { return f.value() != i * 64; } +Q_DECL_CONSTEXPR inline bool operator<=(const QFixed &f, int i) { return f.value() <= i * 64; } +Q_DECL_CONSTEXPR inline bool operator<=(int i, const QFixed &f) { return i * 64 <= f.value(); } +Q_DECL_CONSTEXPR inline bool operator>=(const QFixed &f, int i) { return f.value() >= i * 64; } +Q_DECL_CONSTEXPR inline bool operator>=(int i, const QFixed &f) { return i * 64 >= f.value(); } +Q_DECL_CONSTEXPR inline bool operator<(const QFixed &f, int i) { return f.value() < i * 64; } +Q_DECL_CONSTEXPR inline bool operator<(int i, const QFixed &f) { return i * 64 < f.value(); } +Q_DECL_CONSTEXPR inline bool operator>(const QFixed &f, int i) { return f.value() > i * 64; } +Q_DECL_CONSTEXPR inline bool operator>(int i, const QFixed &f) { return i * 64 > f.value(); } + +#ifndef QT_NO_DEBUG_STREAM +inline QDebug &operator<<(QDebug &dbg, const QFixed &f) +{ return dbg << f.toReal(); } +#endif + +struct QFixedPoint { + QFixed x; + QFixed y; + Q_DECL_CONSTEXPR inline QFixedPoint() {} + Q_DECL_CONSTEXPR inline QFixedPoint(const QFixed &_x, const QFixed &_y) : x(_x), y(_y) {} + Q_DECL_CONSTEXPR QPointF toPointF() const { return QPointF(x.toReal(), y.toReal()); } + Q_DECL_CONSTEXPR static QFixedPoint fromPointF(const QPointF &p) { + return QFixedPoint(QFixed::fromReal(p.x()), QFixed::fromReal(p.y())); + } +}; +Q_DECLARE_TYPEINFO(QFixedPoint, Q_PRIMITIVE_TYPE); + +Q_DECL_CONSTEXPR inline QFixedPoint operator-(const QFixedPoint &p1, const QFixedPoint &p2) +{ return QFixedPoint(p1.x - p2.x, p1.y - p2.y); } +Q_DECL_CONSTEXPR inline QFixedPoint operator+(const QFixedPoint &p1, const QFixedPoint &p2) +{ return QFixedPoint(p1.x + p2.x, p1.y + p2.y); } + +struct QFixedSize { + QFixed width; + QFixed height; + Q_DECL_CONSTEXPR QFixedSize() {} + Q_DECL_CONSTEXPR QFixedSize(QFixed _width, QFixed _height) : width(_width), height(_height) {} + Q_DECL_CONSTEXPR QSizeF toSizeF() const { return QSizeF(width.toReal(), height.toReal()); } + Q_DECL_CONSTEXPR static QFixedSize fromSizeF(const QSizeF &s) { + return QFixedSize(QFixed::fromReal(s.width()), QFixed::fromReal(s.height())); + } +}; +Q_DECLARE_TYPEINFO(QFixedSize, Q_PRIMITIVE_TYPE); + +QT_END_NAMESPACE + +#endif // QTEXTENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfont_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfont_p.h new file mode 100644 index 000000000..9e5d0b432 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfont_p.h @@ -0,0 +1,302 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONT_P_H +#define QFONT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtGui/qfont.h" +#include "QtCore/qmap.h" +#include "QtCore/qhash.h" +#include "QtCore/qobject.h" +#include "QtCore/qstringlist.h" +#include +#include "private/qfixed_p.h" + +QT_BEGIN_NAMESPACE + +// forwards +class QFontCache; +class QFontEngine; + +struct QFontDef +{ + inline QFontDef() + : pointSize(-1.0), pixelSize(-1), + styleStrategy(QFont::PreferDefault), styleHint(QFont::AnyStyle), + weight(50), fixedPitch(false), style(QFont::StyleNormal), stretch(QFont::AnyStretch), + hintingPreference(QFont::PreferDefaultHinting), ignorePitch(true), + fixedPitchComputed(0), reserved(0) + { + } + + QString family; + QString styleName; + + QStringList fallBackFamilies; + + qreal pointSize; + qreal pixelSize; + + uint styleStrategy : 16; + uint styleHint : 8; + + uint weight : 7; // 0-99 + uint fixedPitch : 1; + uint style : 2; + uint stretch : 12; // 0-4000 + + uint hintingPreference : 2; + uint ignorePitch : 1; + uint fixedPitchComputed : 1; // for Mac OS X only + int reserved : 14; // for future extensions + + bool exactMatch(const QFontDef &other) const; + bool operator==(const QFontDef &other) const + { + return pixelSize == other.pixelSize + && weight == other.weight + && style == other.style + && stretch == other.stretch + && styleHint == other.styleHint + && styleStrategy == other.styleStrategy + && ignorePitch == other.ignorePitch && fixedPitch == other.fixedPitch + && family == other.family + && styleName == other.styleName + && hintingPreference == other.hintingPreference + ; + } + inline bool operator<(const QFontDef &other) const + { + if (pixelSize != other.pixelSize) return pixelSize < other.pixelSize; + if (weight != other.weight) return weight < other.weight; + if (style != other.style) return style < other.style; + if (stretch != other.stretch) return stretch < other.stretch; + if (styleHint != other.styleHint) return styleHint < other.styleHint; + if (styleStrategy != other.styleStrategy) return styleStrategy < other.styleStrategy; + if (family != other.family) return family < other.family; + if (styleName != other.styleName) + return styleName < other.styleName; + if (hintingPreference != other.hintingPreference) return hintingPreference < other.hintingPreference; + + + if (ignorePitch != other.ignorePitch) return ignorePitch < other.ignorePitch; + if (fixedPitch != other.fixedPitch) return fixedPitch < other.fixedPitch; + return false; + } +}; + +inline uint qHash(const QFontDef &fd, uint seed = 0) Q_DECL_NOTHROW +{ + return qHash(qRound64(fd.pixelSize*10000)) // use only 4 fractional digits + ^ qHash(fd.weight) + ^ qHash(fd.style) + ^ qHash(fd.stretch) + ^ qHash(fd.styleHint) + ^ qHash(fd.styleStrategy) + ^ qHash(fd.ignorePitch) + ^ qHash(fd.fixedPitch) + ^ qHash(fd.family, seed) + ^ qHash(fd.styleName) + ^ qHash(fd.hintingPreference) + ; +} + +class QFontEngineData +{ +public: + QFontEngineData(); + ~QFontEngineData(); + + QAtomicInt ref; + const int fontCacheId; + + QFontEngine *engines[QChar::ScriptCount]; + +private: + Q_DISABLE_COPY(QFontEngineData) +}; + + +class Q_GUI_EXPORT QFontPrivate +{ +public: + + QFontPrivate(); + QFontPrivate(const QFontPrivate &other); + ~QFontPrivate(); + + QFontEngine *engineForScript(int script) const; + void alterCharForCapitalization(QChar &c) const; + + QAtomicInt ref; + QFontDef request; + mutable QFontEngineData *engineData; + int dpi; + int screen; + + uint underline : 1; + uint overline : 1; + uint strikeOut : 1; + uint kerning : 1; + uint capital : 3; + bool letterSpacingIsAbsolute : 1; + + QFixed letterSpacing; + QFixed wordSpacing; + + mutable QFontPrivate *scFont; + QFont smallCapsFont() const { return QFont(smallCapsFontPrivate()); } + QFontPrivate *smallCapsFontPrivate() const; + + static QFontPrivate *get(const QFont &font) + { + return font.d.data(); + } + + void resolve(uint mask, const QFontPrivate *other); + + static void detachButKeepEngineData(QFont *font); + +private: + QFontPrivate &operator=(const QFontPrivate &) { return *this; } +}; + + +class Q_AUTOTEST_EXPORT QFontCache : public QObject +{ +public: + // note: these static functions work on a per-thread basis + static QFontCache *instance(); + static void cleanup(); + + QFontCache(); + ~QFontCache(); + + int id() const { return m_id; } + + void clear(); + + struct Key { + Key() : script(0), multi(0), screen(0) { } + Key(const QFontDef &d, uchar c, bool m = 0, uchar s = 0) + : def(d), script(c), multi(m), screen(s) { } + + QFontDef def; + uchar script; + uchar multi: 1; + uchar screen: 7; + + inline bool operator<(const Key &other) const + { + if (script != other.script) return script < other.script; + if (screen != other.screen) return screen < other.screen; + if (multi != other.multi) return multi < other.multi; + if (multi && def.fallBackFamilies.size() != other.def.fallBackFamilies.size()) + return def.fallBackFamilies.size() < other.def.fallBackFamilies.size(); + return def < other.def; + } + inline bool operator==(const Key &other) const + { + return script == other.script + && screen == other.screen + && multi == other.multi + && (!multi || def.fallBackFamilies == other.def.fallBackFamilies) + && def == other.def; + } + }; + + // QFontEngineData cache + typedef QMap EngineDataCache; + EngineDataCache engineDataCache; + + QFontEngineData *findEngineData(const QFontDef &def) const; + void insertEngineData(const QFontDef &def, QFontEngineData *engineData); + + // QFontEngine cache + struct Engine { + Engine() : data(0), timestamp(0), hits(0) { } + Engine(QFontEngine *d) : data(d), timestamp(0), hits(0) { } + + QFontEngine *data; + uint timestamp; + uint hits; + }; + + typedef QMap EngineCache; + EngineCache engineCache; + QHash engineCacheCount; + + QFontEngine *findEngine(const Key &key); + + void updateHitCountAndTimeStamp(Engine &value); + void insertEngine(const Key &key, QFontEngine *engine, bool insertMulti = false); + +private: + void increaseCost(uint cost); + void decreaseCost(uint cost); + void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE; + void decreaseCache(); + + static const uint min_cost; + uint total_cost, max_cost; + uint current_timestamp; + bool fast; + int timer_id; + const int m_id; +}; + +Q_GUI_EXPORT int qt_defaultDpiX(); +Q_GUI_EXPORT int qt_defaultDpiY(); +Q_GUI_EXPORT int qt_defaultDpi(); + +QT_END_NAMESPACE + +#endif // QFONT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontengine_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontengine_p.h new file mode 100644 index 000000000..514e9424b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontengine_p.h @@ -0,0 +1,511 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONTENGINE_P_H +#define QFONTENGINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qatomic.h" +#include +#include +#include +#include "private/qtextengine_p.h" +#include "private/qfont_p.h" + +QT_BEGIN_NAMESPACE + +class QPainterPath; +class QFontEngineGlyphCache; + +struct QGlyphLayout; + +#define MAKE_TAG(ch1, ch2, ch3, ch4) (\ + (((quint32)(ch1)) << 24) | \ + (((quint32)(ch2)) << 16) | \ + (((quint32)(ch3)) << 8) | \ + ((quint32)(ch4)) \ + ) + +// ### this only used in getPointInOutline(), refactor it and then remove these magic numbers +enum HB_Compat_Error { + Err_Ok = 0x0000, + Err_Not_Covered = 0xFFFF, + Err_Invalid_Argument = 0x1A66, + Err_Invalid_SubTable_Format = 0x157F, + Err_Invalid_SubTable = 0x1570 +}; + +typedef void (*qt_destroy_func_t) (void *user_data); +typedef bool (*qt_get_font_table_func_t) (void *user_data, uint tag, uchar *buffer, uint *length); + +class Q_GUI_EXPORT QFontEngine +{ +public: + enum Type { + Box, + Multi, + + // MS Windows types + Win, + + // Apple Mac OS types + Mac, + + // QWS types + Freetype, + QPF1, + QPF2, + Proxy, + + DirectWrite, + + TestFontEngine = 0x1000 + }; + + enum GlyphFormat { + Format_None, + Format_Render = Format_None, + Format_Mono, + Format_A8, + Format_A32, + Format_ARGB + }; + + enum ShaperFlag { + DesignMetrics = 0x0002, + GlyphIndicesOnly = 0x0004 + }; + Q_DECLARE_FLAGS(ShaperFlags, ShaperFlag) + + virtual ~QFontEngine(); + + inline Type type() const { return m_type; } + + // all of these are in unscaled metrics if the engine supports uncsaled metrics, + // otherwise in design metrics + struct Properties { + QByteArray postscriptName; + QByteArray copyright; + QRectF boundingBox; + QFixed emSquare; + QFixed ascent; + QFixed descent; + QFixed leading; + QFixed italicAngle; + QFixed capHeight; + QFixed lineWidth; + }; + virtual Properties properties() const; + virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics); + QByteArray getSfntTable(uint tag) const; + virtual bool getSfntTableData(uint tag, uchar *buffer, uint *length) const; + + struct FaceId { + FaceId() : index(0), encoding(0) {} + QByteArray filename; + QByteArray uuid; + int index; + int encoding; + }; + virtual FaceId faceId() const { return FaceId(); } + enum SynthesizedFlags { + SynthesizedItalic = 0x1, + SynthesizedBold = 0x2, + SynthesizedStretch = 0x4 + }; + virtual int synthesized() const { return 0; } + virtual bool supportsSubPixelPositions() const { return false; } + virtual QFixed subPixelPositionForX(QFixed x) const; + + virtual QFixed emSquareSize() const { return ascent(); } + + /* returns 0 as glyph index for non existent glyphs */ + virtual glyph_t glyphIndex(uint ucs4) const = 0; + virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const = 0; + virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const {} + virtual void doKerning(QGlyphLayout *, ShaperFlags) const; + + virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs, + QPainterPath *path, QTextItem::RenderFlags flags); + + void getGlyphPositions(const QGlyphLayout &glyphs, const QTransform &matrix, QTextItem::RenderFlags flags, + QVarLengthArray &glyphs_out, QVarLengthArray &positions); + + virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags); + void addBitmapFontToPath(qreal x, qreal y, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags); + /** + * Create a qimage with the alpha values for the glyph. + * Returns an image indexed_8 with index values ranging from 0=fully transparent to 255=opaque + */ + // ### Refactor this into a smaller and more flexible API. + virtual QImage alphaMapForGlyph(glyph_t); + virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition); + 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(), + QPoint *offset = 0); + virtual void unlockAlphaMapForGlyph(); + virtual bool hasInternalCaching() const { return false; } + + virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, QFixed /*subPixelPosition*/, const QTransform &matrix, GlyphFormat /*format*/) + { + return boundingBox(glyph, matrix); + } + + virtual void removeGlyphFromCache(glyph_t); + + virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) = 0; + virtual glyph_metrics_t boundingBox(glyph_t glyph) = 0; + virtual glyph_metrics_t boundingBox(glyph_t glyph, const QTransform &matrix); + glyph_metrics_t tightBoundingBox(const QGlyphLayout &glyphs); + + virtual QFixed ascent() const = 0; + virtual QFixed capHeight() const = 0; + virtual QFixed descent() const = 0; + virtual QFixed leading() const = 0; + virtual QFixed xHeight() const; + virtual QFixed averageCharWidth() const; + + virtual QFixed lineThickness() const; + virtual QFixed underlinePosition() const; + + virtual qreal maxCharWidth() const = 0; + virtual qreal minLeftBearing() const; + virtual qreal minRightBearing() const; + + virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0); + + inline bool canRender(uint ucs4) const { return glyphIndex(ucs4) != 0; } + virtual bool canRender(const QChar *str, int len) const; + + virtual bool supportsTransformation(const QTransform &transform) const; + + virtual int glyphCount() const; + virtual int glyphMargin(GlyphFormat format) { return format == Format_A32 ? 2 : 0; } + + virtual QFontEngine *cloneWithSize(qreal /*pixelSize*/) const { return 0; } + + virtual Qt::HANDLE handle() const; + + void *harfbuzzFont() const; + void *harfbuzzFace() const; + bool supportsScript(QChar::Script script) const; + + virtual int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints); + + void clearGlyphCache(const void *key); + void setGlyphCache(const void *key, QFontEngineGlyphCache *data); + QFontEngineGlyphCache *glyphCache(const void *key, GlyphFormat format, const QTransform &transform) const; + + static const uchar *getCMap(const uchar *table, uint tableSize, bool *isSymbolFont, int *cmapSize); + static quint32 getTrueTypeGlyphIndex(const uchar *cmap, int cmapSize, uint unicode); + + static QByteArray convertToPostscriptFontFamilyName(const QByteArray &fontFamily); + + virtual bool hasUnreliableGlyphOutline() const; + virtual bool expectsGammaCorrectedBlending() const; + + enum HintStyle { + HintNone, + HintLight, + HintMedium, + HintFull + }; + virtual void setDefaultHintStyle(HintStyle) { } + + enum SubpixelAntialiasingType { + Subpixel_None, + Subpixel_RGB, + Subpixel_BGR, + Subpixel_VRGB, + Subpixel_VBGR + }; + +private: + const Type m_type; + +public: + QAtomicInt ref; + QFontDef fontDef; + + class Holder { // replace by std::unique_ptr once available + void *ptr; + qt_destroy_func_t destroy_func; + public: + Holder() : ptr(nullptr), destroy_func(nullptr) {} + explicit Holder(void *p, qt_destroy_func_t d) : ptr(p), destroy_func(d) {} + ~Holder() { if (ptr && destroy_func) destroy_func(ptr); } + Holder(Holder &&other) Q_DECL_NOTHROW + : ptr(other.ptr), + destroy_func(other.destroy_func) + { + other.ptr = nullptr; + other.destroy_func = nullptr; + } + Holder &operator=(Holder &&other) Q_DECL_NOTHROW + { swap(other); return *this; } + + void swap(Holder &other) Q_DECL_NOTHROW + { + qSwap(ptr, other.ptr); + qSwap(destroy_func, other.destroy_func); + } + + void *get() const Q_DECL_NOTHROW { return ptr; } + void *release() Q_DECL_NOTHROW { + void *result = ptr; + ptr = nullptr; + destroy_func = nullptr; + return result; + } + void reset() Q_DECL_NOTHROW { Holder().swap(*this); } + qt_destroy_func_t get_deleter() const Q_DECL_NOTHROW { return destroy_func; } + + bool operator!() const Q_DECL_NOTHROW { return !ptr; } + }; + + mutable Holder font_; // \ NOTE: Declared before m_glyphCaches, so font_, face_ + mutable Holder face_; // / are destroyed _after_ m_glyphCaches is destroyed. + + struct FaceData { + void *user_data; + qt_get_font_table_func_t get_font_table; + } faceData; + + uint cache_cost; // amount of mem used in bytes by the font + uint fsType : 16; + bool symbol; + bool isSmoothlyScalable; + struct KernPair { + uint left_right; + QFixed adjust; + + inline bool operator<(const KernPair &other) const + { + return left_right < other.left_right; + } + }; + QVector kerning_pairs; + void loadKerningPairs(QFixed scalingFactor); + + GlyphFormat glyphFormat; + QImage currentlyLockedAlphaMap; + int m_subPixelPositionCount; // Number of positions within a single pixel for this cache + + inline QVariant userData() const { return m_userData; } + +protected: + explicit QFontEngine(Type type); + + QFixed lastRightBearing(const QGlyphLayout &glyphs, bool round = false); + + inline void setUserData(const QVariant &userData) { m_userData = userData; } + QFixed calculatedCapHeight() const; + +private: + struct GlyphCacheEntry { + GlyphCacheEntry(); + GlyphCacheEntry(const GlyphCacheEntry &); + ~GlyphCacheEntry(); + + GlyphCacheEntry &operator=(const GlyphCacheEntry &); + + QExplicitlySharedDataPointer cache; + bool operator==(const GlyphCacheEntry &other) const { return cache == other.cache; } + }; + typedef QLinkedList GlyphCaches; + mutable QHash m_glyphCaches; + +private: + QVariant m_userData; + + mutable qreal m_minLeftBearing; + mutable qreal m_minRightBearing; + +}; +Q_DECLARE_TYPEINFO(QFontEngine::KernPair, Q_PRIMITIVE_TYPE); + +Q_DECLARE_OPERATORS_FOR_FLAGS(QFontEngine::ShaperFlags) + +inline bool operator ==(const QFontEngine::FaceId &f1, const QFontEngine::FaceId &f2) +{ + return f1.index == f2.index && f1.encoding == f2.encoding && f1.filename == f2.filename && f1.uuid == f2.uuid; +} + +inline uint qHash(const QFontEngine::FaceId &f, uint seed = 0) + Q_DECL_NOEXCEPT_EXPR(noexcept(qHash(f.filename))) +{ + QtPrivate::QHashCombine hash; + seed = hash(seed, f.filename); + seed = hash(seed, f.uuid); + seed = hash(seed, f.index); + seed = hash(seed, f.encoding); + return seed; +} + + +class QGlyph; + + + +class QFontEngineBox : public QFontEngine +{ +public: + QFontEngineBox(int size); + ~QFontEngineBox(); + + virtual glyph_t glyphIndex(uint ucs4) const Q_DECL_OVERRIDE; + virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const Q_DECL_OVERRIDE; + virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const Q_DECL_OVERRIDE; + + void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si); + virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags) Q_DECL_OVERRIDE; + + virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) Q_DECL_OVERRIDE; + virtual glyph_metrics_t boundingBox(glyph_t glyph) Q_DECL_OVERRIDE; + virtual QFontEngine *cloneWithSize(qreal pixelSize) const Q_DECL_OVERRIDE; + + virtual QFixed ascent() const Q_DECL_OVERRIDE; + virtual QFixed capHeight() const Q_DECL_OVERRIDE; + virtual QFixed descent() const Q_DECL_OVERRIDE; + virtual QFixed leading() const Q_DECL_OVERRIDE; + virtual qreal maxCharWidth() const Q_DECL_OVERRIDE; + virtual qreal minLeftBearing() const Q_DECL_OVERRIDE { return 0; } + virtual qreal minRightBearing() const Q_DECL_OVERRIDE { return 0; } + virtual QImage alphaMapForGlyph(glyph_t) Q_DECL_OVERRIDE; + + virtual bool canRender(const QChar *string, int len) const Q_DECL_OVERRIDE; + + inline int size() const { return _size; } + +protected: + explicit QFontEngineBox(Type type, int size); + +private: + friend class QFontPrivate; + int _size; +}; + +class Q_GUI_EXPORT QFontEngineMulti : public QFontEngine +{ +public: + explicit QFontEngineMulti(QFontEngine *engine, int script, const QStringList &fallbackFamilies = QStringList()); + ~QFontEngineMulti(); + + virtual glyph_t glyphIndex(uint ucs4) const Q_DECL_OVERRIDE; + virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const Q_DECL_OVERRIDE; + + virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) Q_DECL_OVERRIDE; + virtual glyph_metrics_t boundingBox(glyph_t glyph) Q_DECL_OVERRIDE; + + virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const Q_DECL_OVERRIDE; + virtual void doKerning(QGlyphLayout *, ShaperFlags) const Q_DECL_OVERRIDE; + virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags) Q_DECL_OVERRIDE; + virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0) Q_DECL_OVERRIDE; + + virtual QFixed ascent() const Q_DECL_OVERRIDE; + virtual QFixed capHeight() const Q_DECL_OVERRIDE; + virtual QFixed descent() const Q_DECL_OVERRIDE; + virtual QFixed leading() const Q_DECL_OVERRIDE; + virtual QFixed xHeight() const Q_DECL_OVERRIDE; + virtual QFixed averageCharWidth() const Q_DECL_OVERRIDE; + virtual QImage alphaMapForGlyph(glyph_t) Q_DECL_OVERRIDE; + virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition) Q_DECL_OVERRIDE; + virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t) Q_DECL_OVERRIDE; + virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t) Q_DECL_OVERRIDE; + virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t) Q_DECL_OVERRIDE; + + virtual QFixed lineThickness() const Q_DECL_OVERRIDE; + virtual QFixed underlinePosition() const Q_DECL_OVERRIDE; + virtual qreal maxCharWidth() const Q_DECL_OVERRIDE; + virtual qreal minLeftBearing() const Q_DECL_OVERRIDE; + virtual qreal minRightBearing() const Q_DECL_OVERRIDE; + + virtual bool canRender(const QChar *string, int len) const Q_DECL_OVERRIDE; + + inline int fallbackFamilyCount() const { return m_fallbackFamilies.size(); } + inline QString fallbackFamilyAt(int at) const { return m_fallbackFamilies.at(at); } + + void setFallbackFamiliesList(const QStringList &fallbackFamilies); + + inline QFontEngine *engine(int at) const + { Q_ASSERT(at < m_engines.size()); return m_engines.at(at); } + + void ensureEngineAt(int at); + + static QFontEngine *createMultiFontEngine(QFontEngine *fe, int script); + +protected: + virtual void ensureFallbackFamiliesQueried(); + virtual bool shouldLoadFontEngineForCharacter(int at, uint ucs4) const; + virtual QFontEngine *loadEngine(int at); + +private: + QVector m_engines; + QStringList m_fallbackFamilies; + const int m_script; + bool m_fallbackFamiliesQueried; +}; + +class QTestFontEngine : public QFontEngineBox +{ +public: + QTestFontEngine(int size); +}; + +QT_END_NAMESPACE + + + +#endif // QFONTENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontengine_qpf2_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontengine_qpf2_p.h new file mode 100644 index 000000000..e5c38ffba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontengine_qpf2_p.h @@ -0,0 +1,241 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONTENGINE_QPF2_P_H +#define QFONTENGINE_QPF2_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +#include +#include +#include +#include + +#include "qfontengine_p.h" + +#include + +QT_BEGIN_NAMESPACE + +class QFontEngine; +class QFreetypeFace; +class QBuffer; + +class Q_GUI_EXPORT QFontEngineQPF2 : public QFontEngine +{ +public: + // if you add new tags please make sure to update the tables in + // qpfutil.cpp and tools/makeqpf/qpf2.cpp + enum HeaderTag { + Tag_FontName, // 0 string + Tag_FileName, // 1 string + Tag_FileIndex, // 2 quint32 + Tag_FontRevision, // 3 quint32 + Tag_FreeText, // 4 string + Tag_Ascent, // 5 QFixed + Tag_Descent, // 6 QFixed + Tag_Leading, // 7 QFixed + Tag_XHeight, // 8 QFixed + Tag_AverageCharWidth, // 9 QFixed + Tag_MaxCharWidth, // 10 QFixed + Tag_LineThickness, // 11 QFixed + Tag_MinLeftBearing, // 12 QFixed + Tag_MinRightBearing, // 13 QFixed + Tag_UnderlinePosition, // 14 QFixed + Tag_GlyphFormat, // 15 quint8 + Tag_PixelSize, // 16 quint8 + Tag_Weight, // 17 quint8 + Tag_Style, // 18 quint8 + Tag_EndOfHeader, // 19 string + Tag_WritingSystems, // 20 bitfield + + NumTags + }; + + enum TagType { + StringType, + FixedType, + UInt8Type, + UInt32Type, + BitFieldType + }; + + struct Tag + { + quint16 tag; + quint16 size; + }; + + enum GlyphFormat { + BitmapGlyphs = 1, + AlphamapGlyphs = 8 + }; + + enum { + CurrentMajorVersion = 2, + CurrentMinorVersion = 0 + }; + + // The CMap is identical to the TrueType CMap table format + // The GMap table is a normal array with the total number of + // covered glyphs in the TrueType font + enum BlockTag { + CMapBlock, + GMapBlock, + GlyphBlock + }; + + struct Header + { + char magic[4]; // 'QPF2' + quint32 lock; // values: 0 = unlocked, 0xffffffff = read-only, otherwise qws client id of locking process + quint8 majorVersion; + quint8 minorVersion; + quint16 dataSize; + }; + + struct Block + { + quint16 tag; + quint16 pad; + quint32 dataSize; + }; + + struct Glyph + { + quint8 width; + quint8 height; + quint8 bytesPerLine; + qint8 x; + qint8 y; + qint8 advance; + }; + + QFontEngineQPF2(const QFontDef &def, const QByteArray &data); + ~QFontEngineQPF2(); + + FaceId faceId() const Q_DECL_OVERRIDE { return face_id; } + bool getSfntTableData(uint tag, uchar *buffer, uint *length) const Q_DECL_OVERRIDE; + + virtual glyph_t glyphIndex(uint ucs4) const Q_DECL_OVERRIDE; + bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const Q_DECL_OVERRIDE; + void recalcAdvances(QGlyphLayout *, ShaperFlags) const Q_DECL_OVERRIDE; + + void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags) Q_DECL_OVERRIDE; + QImage alphaMapForGlyph(glyph_t t) Q_DECL_OVERRIDE; + + glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) Q_DECL_OVERRIDE; + glyph_metrics_t boundingBox(glyph_t glyph) Q_DECL_OVERRIDE; + + QFixed ascent() const Q_DECL_OVERRIDE; + QFixed capHeight() const Q_DECL_OVERRIDE; + QFixed descent() const Q_DECL_OVERRIDE; + QFixed leading() const Q_DECL_OVERRIDE; + qreal maxCharWidth() const Q_DECL_OVERRIDE; + qreal minLeftBearing() const Q_DECL_OVERRIDE; + qreal minRightBearing() const Q_DECL_OVERRIDE; + QFixed underlinePosition() const Q_DECL_OVERRIDE; + QFixed lineThickness() const Q_DECL_OVERRIDE; + + virtual int glyphCount() const Q_DECL_OVERRIDE { return glyphMapEntries; } + + bool isValid() const; + + const Glyph *findGlyph(glyph_t g) const; + + static bool verifyHeader(const uchar *data, int size); + static QVariant extractHeaderField(const uchar *data, HeaderTag tag); + +private: + + const uchar *fontData; + int dataSize; + const uchar *cmap; + quint32 cmapOffset; + int cmapSize; + quint32 glyphMapOffset; + quint32 glyphMapEntries; + quint32 glyphDataOffset; + quint32 glyphDataSize; + QString internalFileName; + QString encodedFileName; + bool readOnly; + + FaceId face_id; + QByteArray freetypeCMapTable; + mutable bool kerning_pairs_loaded; +}; + +struct QPF2Generator +{ + QPF2Generator(QBuffer *device, QFontEngine *engine) + : dev(device), fe(engine) {} + + void generate(); + void writeHeader(); + void writeGMap(); + void writeBlock(QFontEngineQPF2::BlockTag tag, const QByteArray &data); + + void writeTaggedString(QFontEngineQPF2::HeaderTag tag, const QByteArray &string); + void writeTaggedUInt32(QFontEngineQPF2::HeaderTag tag, quint32 value); + void writeTaggedUInt8(QFontEngineQPF2::HeaderTag tag, quint8 value); + void writeTaggedQFixed(QFontEngineQPF2::HeaderTag tag, QFixed value); + + void writeUInt16(quint16 value) { value = qToBigEndian(value); dev->write((const char *)&value, sizeof(value)); } + void writeUInt32(quint32 value) { value = qToBigEndian(value); dev->write((const char *)&value, sizeof(value)); } + void writeUInt8(quint8 value) { dev->write((const char *)&value, sizeof(value)); } + void writeInt8(qint8 value) { dev->write((const char *)&value, sizeof(value)); } + + void align4() { while (dev->pos() & 3) { dev->putChar('\0'); } } + + QBuffer *dev; + QFontEngine *fe; +}; + +QT_END_NAMESPACE + +#endif // QFONTENGINE_QPF2_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontengineglyphcache_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontengineglyphcache_p.h new file mode 100644 index 000000000..fd5db1ecf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontengineglyphcache_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONTENGINEGLYPHCACHE_P_H +#define QFONTENGINEGLYPHCACHE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + + +#include +#include "QtCore/qatomic.h" +#include +#include "private/qfont_p.h" +#include "private/qfontengine_p.h" + + + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QFontEngineGlyphCache: public QSharedData +{ +public: + QFontEngineGlyphCache(QFontEngine::GlyphFormat format, const QTransform &matrix) : m_format(format), m_transform(matrix) + { + Q_ASSERT(m_format != QFontEngine::Format_None); + } + + virtual ~QFontEngineGlyphCache(); + + QFontEngine::GlyphFormat glyphFormat() const { return m_format; } + const QTransform &transform() const { return m_transform; } + + QFontEngine::GlyphFormat m_format; + QTransform m_transform; +}; +typedef QHash > GlyphPointerHash; +typedef QHash > GlyphIntHash; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontsubset_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontsubset_p.h new file mode 100644 index 000000000..e7c6053be --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfontsubset_p.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONTSUBSET_P_H +#define QFONTSUBSET_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "private/qfontengine_p.h" + +QT_BEGIN_NAMESPACE + +class QFontSubset +{ +public: + explicit QFontSubset(QFontEngine *fe, int obj_id = 0) + : object_id(obj_id), noEmbed(false), fontEngine(fe), downloaded_glyphs(0), standard_font(false) + { + fontEngine->ref.ref(); +#ifndef QT_NO_PDF + addGlyph(0); +#endif + } + ~QFontSubset() { + if (!fontEngine->ref.deref()) + delete fontEngine; + } + + QByteArray toTruetype() const; +#ifndef QT_NO_PDF + QByteArray widthArray() const; + QByteArray createToUnicodeMap() const; + QVector getReverseMap() const; + QByteArray glyphName(unsigned int glyph, const QVector &reverseMap) const; + + static QByteArray glyphName(unsigned short unicode, bool symbol); + + int addGlyph(int index); +#endif + const int object_id; + bool noEmbed; + QFontEngine *fontEngine; + QVector glyph_indices; + mutable int downloaded_glyphs; + mutable bool standard_font; + int nGlyphs() const { return glyph_indices.size(); } + mutable QFixed emSquare; + mutable QVector widths; +}; + +QT_END_NAMESPACE + +#endif // QFONTSUBSET_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfragmentmap_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfragmentmap_p.h new file mode 100644 index 000000000..35f60ac96 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qfragmentmap_p.h @@ -0,0 +1,885 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFRAGMENTMAP_P_H +#define QFRAGMENTMAP_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +template +class QFragment +{ +public: + quint32 parent; + quint32 left; + quint32 right; + quint32 color; + quint32 size_left_array[N]; + quint32 size_array[N]; + enum {size_array_max = N }; +}; + +template +class QFragmentMapData +{ + enum Color { Red, Black }; +public: + QFragmentMapData(); + ~QFragmentMapData(); + + void init(); + + class Header + { + public: + quint32 root; // this relies on being at the same position as parent in the fragment struct + quint32 tag; + quint32 freelist; + quint32 node_count; + quint32 allocated; + }; + + + enum {fragmentSize = sizeof(Fragment) }; + + + int length(uint field = 0) const; + + + inline Fragment *fragment(uint index) { + return (fragments + index); + } + inline const Fragment *fragment(uint index) const { + return (fragments + index); + } + + + inline Fragment &F(uint index) { return fragments[index] ; } + inline const Fragment &F(uint index) const { return fragments[index] ; } + + inline bool isRoot(uint index) const { + return !fragment(index)->parent; + } + + inline uint position(uint node, uint field = 0) const { + Q_ASSERT(field < Fragment::size_array_max); + const Fragment *f = fragment(node); + uint offset = f->size_left_array[field]; + while (f->parent) { + uint p = f->parent; + f = fragment(p); + if (f->right == node) + offset += f->size_left_array[field] + f->size_array[field]; + node = p; + } + return offset; + } + inline uint sizeRight(uint node, uint field = 0) const { + Q_ASSERT(field < Fragment::size_array_max); + uint sr = 0; + const Fragment *f = fragment(node); + node = f->right; + while (node) { + f = fragment(node); + sr += f->size_left_array[field] + f->size_array[field]; + node = f->right; + } + return sr; + } + inline uint sizeLeft(uint node, uint field = 0) const { + Q_ASSERT(field < Fragment::size_array_max); + return fragment(node)->size_left_array[field]; + } + + + inline uint size(uint node, uint field = 0) const { + Q_ASSERT(field < Fragment::size_array_max); + return fragment(node)->size_array[field]; + } + + inline void setSize(uint node, int new_size, uint field = 0) { + Q_ASSERT(field < Fragment::size_array_max); + Fragment *f = fragment(node); + int diff = new_size - f->size_array[field]; + f->size_array[field] = new_size; + while (f->parent) { + uint p = f->parent; + f = fragment(p); + if (f->left == node) + f->size_left_array[field] += diff; + node = p; + } + } + + + uint findNode(int k, uint field = 0) const; + + uint insert_single(int key, uint length); + uint erase_single(uint f); + + uint minimum(uint n) const { + while (n && fragment(n)->left) + n = fragment(n)->left; + return n; + } + + uint maximum(uint n) const { + while (n && fragment(n)->right) + n = fragment(n)->right; + return n; + } + + uint next(uint n) const; + uint previous(uint n) const; + + inline uint root() const { + Q_ASSERT(!head->root || !fragment(head->root)->parent); + return head->root; + } + inline void setRoot(uint new_root) { + Q_ASSERT(!head->root || !fragment(new_root)->parent); + head->root = new_root; + } + + inline bool isValid(uint n) const { + return n > 0 && n != head->freelist; + } + + union { + Header *head; + Fragment *fragments; + }; + +private: + + void rotateLeft(uint x); + void rotateRight(uint x); + void rebalance(uint x); + void removeAndRebalance(uint z); + + uint createFragment(); + void freeFragment(uint f); + +}; + +template +QFragmentMapData::QFragmentMapData() + : fragments(0) +{ + init(); +} + +template +void QFragmentMapData::init() +{ + // the following code will realloc an existing fragment or create a new one. + // it will also ignore errors when shrinking an existing fragment. + Fragment *newFragments = (Fragment *)realloc(fragments, 64*fragmentSize); + if (newFragments) { + fragments = newFragments; + head->allocated = 64; + } + Q_CHECK_PTR(fragments); + + head->tag = (((quint32)'p') << 24) | (((quint32)'m') << 16) | (((quint32)'a') << 8) | 'p'; //TAG('p', 'm', 'a', 'p'); + head->root = 0; + head->freelist = 1; + head->node_count = 0; + // mark all items to the right as unused + F(head->freelist).right = 0; +} + +template +QFragmentMapData::~QFragmentMapData() +{ + free(fragments); +} + +template +uint QFragmentMapData::createFragment() +{ + Q_ASSERT(head->freelist <= head->allocated); + + uint freePos = head->freelist; + if (freePos == head->allocated) { + // need to create some free space + auto blockInfo = qCalculateGrowingBlockSize(freePos + 1, fragmentSize); + Fragment *newFragments = (Fragment *)realloc(fragments, blockInfo.size); + Q_CHECK_PTR(newFragments); + fragments = newFragments; + head->allocated = quint32(blockInfo.elementCount); + F(freePos).right = 0; + } + + uint nextPos = F(freePos).right; + if (!nextPos) { + nextPos = freePos+1; + if (nextPos < head->allocated) + F(nextPos).right = 0; + } + + head->freelist = nextPos; + + ++head->node_count; + + return freePos; +} + +template +void QFragmentMapData::freeFragment(uint i) +{ + F(i).right = head->freelist; + head->freelist = i; + + --head->node_count; +} + + +template +uint QFragmentMapData::next(uint n) const { + Q_ASSERT(n); + if (F(n).right) { + n = F(n).right; + while (F(n).left) + n = F(n).left; + } else { + uint y = F(n).parent; + while (F(n).parent && n == F(y).right) { + n = y; + y = F(y).parent; + } + n = y; + } + return n; +} + +template +uint QFragmentMapData::previous(uint n) const { + if (!n) + return maximum(root()); + + if (F(n).left) { + n = F(n).left; + while (F(n).right) + n = F(n).right; + } else { + uint y = F(n).parent; + while (F(n).parent && n == F(y).left) { + n = y; + y = F(y).parent; + } + n = y; + } + return n; +} + + +/* + x y + \ / \ + y --> x b + / \ \ + a b a +*/ +template +void QFragmentMapData::rotateLeft(uint x) +{ + uint p = F(x).parent; + uint y = F(x).right; + + + if (y) { + F(x).right = F(y).left; + if (F(y).left) + F(F(y).left).parent = x; + F(y).left = x; + F(y).parent = p; + } else { + F(x).right = 0; + } + if (!p) { + Q_ASSERT(head->root == x); + head->root = y; + } + else if (x == F(p).left) + F(p).left = y; + else + F(p).right = y; + F(x).parent = y; + for (uint field = 0; field < Fragment::size_array_max; ++field) + F(y).size_left_array[field] += F(x).size_left_array[field] + F(x).size_array[field]; +} + + +/* + x y + / / \ + y --> a x + / \ / + a b b +*/ +template +void QFragmentMapData::rotateRight(uint x) +{ + uint y = F(x).left; + uint p = F(x).parent; + + if (y) { + F(x).left = F(y).right; + if (F(y).right) + F(F(y).right).parent = x; + F(y).right = x; + F(y).parent = p; + } else { + F(x).left = 0; + } + if (!p) { + Q_ASSERT(head->root == x); + head->root = y; + } + else if (x == F(p).right) + F(p).right = y; + else + F(p).left = y; + F(x).parent = y; + for (uint field = 0; field < Fragment::size_array_max; ++field) + F(x).size_left_array[field] -= F(y).size_left_array[field] + F(y).size_array[field]; +} + + +template +void QFragmentMapData::rebalance(uint x) +{ + F(x).color = Red; + + while (F(x).parent && F(F(x).parent).color == Red) { + uint p = F(x).parent; + uint pp = F(p).parent; + Q_ASSERT(pp); + if (p == F(pp).left) { + uint y = F(pp).right; + if (y && F(y).color == Red) { + F(p).color = Black; + F(y).color = Black; + F(pp).color = Red; + x = pp; + } else { + if (x == F(p).right) { + x = p; + rotateLeft(x); + p = F(x).parent; + pp = F(p).parent; + } + F(p).color = Black; + if (pp) { + F(pp).color = Red; + rotateRight(pp); + } + } + } else { + uint y = F(pp).left; + if (y && F(y).color == Red) { + F(p).color = Black; + F(y).color = Black; + F(pp).color = Red; + x = pp; + } else { + if (x == F(p).left) { + x = p; + rotateRight(x); + p = F(x).parent; + pp = F(p).parent; + } + F(p).color = Black; + if (pp) { + F(pp).color = Red; + rotateLeft(pp); + } + } + } + } + F(root()).color = Black; +} + + +template +uint QFragmentMapData::erase_single(uint z) +{ + uint w = previous(z); + uint y = z; + uint x; + uint p; + + if (!F(y).left) { + x = F(y).right; + } else if (!F(y).right) { + x = F(y).left; + } else { + y = F(y).right; + while (F(y).left) + y = F(y).left; + x = F(y).right; + } + + if (y != z) { + F(F(z).left).parent = y; + F(y).left = F(z).left; + for (uint field = 0; field < Fragment::size_array_max; ++field) + F(y).size_left_array[field] = F(z).size_left_array[field]; + if (y != F(z).right) { + /* + z y + / \ / \ + a b a b + / / + ... --> ... + / / + y x + / \ + 0 x + */ + p = F(y).parent; + if (x) + F(x).parent = p; + F(p).left = x; + F(y).right = F(z).right; + F(F(z).right).parent = y; + uint n = p; + while (n != y) { + for (uint field = 0; field < Fragment::size_array_max; ++field) + F(n).size_left_array[field] -= F(y).size_array[field]; + n = F(n).parent; + } + } else { + /* + z y + / \ / \ + a y --> a x + / \ + 0 x + */ + p = y; + } + uint zp = F(z).parent; + if (!zp) { + Q_ASSERT(head->root == z); + head->root = y; + } else if (F(zp).left == z) { + F(zp).left = y; + for (uint field = 0; field < Fragment::size_array_max; ++field) + F(zp).size_left_array[field] -= F(z).size_array[field]; + } else { + F(zp).right = y; + } + F(y).parent = zp; + // Swap the colors + uint c = F(y).color; + F(y).color = F(z).color; + F(z).color = c; + y = z; + } else { + /* + p p p p + / / \ \ + z --> x z --> x + | | + x x + */ + p = F(z).parent; + if (x) + F(x).parent = p; + if (!p) { + Q_ASSERT(head->root == z); + head->root = x; + } else if (F(p).left == z) { + F(p).left = x; + for (uint field = 0; field < Fragment::size_array_max; ++field) + F(p).size_left_array[field] -= F(z).size_array[field]; + } else { + F(p).right = x; + } + } + uint n = z; + while (F(n).parent) { + uint p = F(n).parent; + if (F(p).left == n) { + for (uint field = 0; field < Fragment::size_array_max; ++field) + F(p).size_left_array[field] -= F(z).size_array[field]; + } + n = p; + } + + freeFragment(z); + + + if (F(y).color != Red) { + while (F(x).parent && (x == 0 || F(x).color == Black)) { + if (x == F(p).left) { + uint w = F(p).right; + if (F(w).color == Red) { + F(w).color = Black; + F(p).color = Red; + rotateLeft(p); + w = F(p).right; + } + if ((F(w).left == 0 || F(F(w).left).color == Black) && + (F(w).right == 0 || F(F(w).right).color == Black)) { + F(w).color = Red; + x = p; + p = F(x).parent; + } else { + if (F(w).right == 0 || F(F(w).right).color == Black) { + if (F(w).left) + F(F(w).left).color = Black; + F(w).color = Red; + rotateRight(F(p).right); + w = F(p).right; + } + F(w).color = F(p).color; + F(p).color = Black; + if (F(w).right) + F(F(w).right).color = Black; + rotateLeft(p); + break; + } + } else { + uint w = F(p).left; + if (F(w).color == Red) { + F(w).color = Black; + F(p).color = Red; + rotateRight(p); + w = F(p).left; + } + if ((F(w).right == 0 || F(F(w).right).color == Black) && + (F(w).left == 0 || F(F(w).left).color == Black)) { + F(w).color = Red; + x = p; + p = F(x).parent; + } else { + if (F(w).left == 0 || F(F(w).left).color == Black) { + if (F(w).right) + F(F(w).right).color = Black; + F(w).color = Red; + rotateLeft(F(p).left); + w = F(p).left; + } + F(w).color = F(p).color; + F(p).color = Black; + if (F(w).left) + F(F(w).left).color = Black; + rotateRight(p); + break; + } + } + } + if (x) + F(x).color = Black; + } + + return w; +} + +template +uint QFragmentMapData::findNode(int k, uint field) const +{ + Q_ASSERT(field < Fragment::size_array_max); + uint x = root(); + + uint s = k; + while (x) { + if (sizeLeft(x, field) <= s) { + if (s < sizeLeft(x, field) + size(x, field)) + return x; + s -= sizeLeft(x, field) + size(x, field); + x = F(x).right; + } else { + x = F(x).left; + } + } + return 0; +} + +template +uint QFragmentMapData::insert_single(int key, uint length) +{ + Q_ASSERT(!findNode(key) || (int)this->position(findNode(key)) == key); + + uint z = createFragment(); + + F(z).left = 0; + F(z).right = 0; + F(z).size_array[0] = length; + for (uint field = 1; field < Fragment::size_array_max; ++field) + F(z).size_array[field] = 1; + for (uint field = 0; field < Fragment::size_array_max; ++field) + F(z).size_left_array[field] = 0; + + uint y = 0; + uint x = root(); + + Q_ASSERT(!x || F(x).parent == 0); + + uint s = key; + bool right = false; + while (x) { + y = x; + if (s <= F(x).size_left_array[0]) { + x = F(x).left; + right = false; + } else { + s -= F(x).size_left_array[0] + F(x).size_array[0]; + x = F(x).right; + right = true; + } + } + + F(z).parent = y; + if (!y) { + head->root = z; + } else if (!right) { + F(y).left = z; + for (uint field = 0; field < Fragment::size_array_max; ++field) + F(y).size_left_array[field] = F(z).size_array[field]; + } else { + F(y).right = z; + } + while (y && F(y).parent) { + uint p = F(y).parent; + if (F(p).left == y) { + for (uint field = 0; field < Fragment::size_array_max; ++field) + F(p).size_left_array[field] += F(z).size_array[field]; + } + y = p; + } + rebalance(z); + + return z; +} + + +template +int QFragmentMapData::length(uint field) const { + uint root = this->root(); + return root ? sizeLeft(root, field) + size(root, field) + sizeRight(root, field) : 0; +} + + +template // NOTE: must inherit QFragment +class QFragmentMap +{ +public: + class Iterator + { + public: + QFragmentMap *pt; + quint32 n; + + Iterator() : pt(0), n(0) {} + Iterator(QFragmentMap *p, int node) : pt(p), n(node) {} + Iterator(const Iterator& it) : pt(it.pt), n(it.n) {} + + inline bool atEnd() const { return !n; } + + bool operator==(const Iterator& it) const { return pt == it.pt && n == it.n; } + bool operator!=(const Iterator& it) const { return pt != it.pt || n != it.n; } + bool operator<(const Iterator &it) const { return position() < it.position(); } + + Fragment *operator*() { Q_ASSERT(!atEnd()); return pt->fragment(n); } + const Fragment *operator*() const { Q_ASSERT(!atEnd()); return pt->fragment(n); } + Fragment *operator->() { Q_ASSERT(!atEnd()); return pt->fragment(n); } + const Fragment *operator->() const { Q_ASSERT(!atEnd()); return pt->fragment(n); } + + int position() const { Q_ASSERT(!atEnd()); return pt->data.position(n); } + const Fragment *value() const { Q_ASSERT(!atEnd()); return pt->fragment(n); } + Fragment *value() { Q_ASSERT(!atEnd()); return pt->fragment(n); } + + Iterator& operator++() { + n = pt->data.next(n); + return *this; + } + Iterator& operator--() { + n = pt->data.previous(n); + return *this; + } + + }; + + + class ConstIterator + { + public: + const QFragmentMap *pt; + quint32 n; + + /** + * Functions + */ + ConstIterator() : pt(0), n(0) {} + ConstIterator(const QFragmentMap *p, int node) : pt(p), n(node) {} + ConstIterator(const ConstIterator& it) : pt(it.pt), n(it.n) {} + ConstIterator(const Iterator& it) : pt(it.pt), n(it.n) {} + + inline bool atEnd() const { return !n; } + + bool operator==(const ConstIterator& it) const { return pt == it.pt && n == it.n; } + bool operator!=(const ConstIterator& it) const { return pt != it.pt || n != it.n; } + bool operator<(const ConstIterator &it) const { return position() < it.position(); } + + const Fragment *operator*() const { Q_ASSERT(!atEnd()); return pt->fragment(n); } + const Fragment *operator->() const { Q_ASSERT(!atEnd()); return pt->fragment(n); } + + int position() const { Q_ASSERT(!atEnd()); return pt->data.position(n); } + int size() const { Q_ASSERT(!atEnd()); return pt->data.size(n); } + const Fragment *value() const { Q_ASSERT(!atEnd()); return pt->fragment(n); } + + ConstIterator& operator++() { + n = pt->data.next(n); + return *this; + } + ConstIterator& operator--() { + n = pt->data.previous(n); + return *this; + } + }; + + + QFragmentMap() {} + ~QFragmentMap() + { + if (!data.fragments) + return; // in case of out-of-memory, we won't have fragments + for (Iterator it = begin(); !it.atEnd(); ++it) + it.value()->free(); + } + + inline void clear() { + for (Iterator it = begin(); !it.atEnd(); ++it) + it.value()->free(); + data.init(); + } + + inline Iterator begin() { return Iterator(this, data.minimum(data.root())); } + inline Iterator end() { return Iterator(this, 0); } + inline ConstIterator begin() const { return ConstIterator(this, data.minimum(data.root())); } + inline ConstIterator end() const { return ConstIterator(this, 0); } + + inline ConstIterator last() const { return ConstIterator(this, data.maximum(data.root())); } + + inline bool isEmpty() const { return data.head->node_count == 0; } + inline int numNodes() const { return data.head->node_count; } + int length(uint field = 0) const { return data.length(field); } + + Iterator find(int k, uint field = 0) { return Iterator(this, data.findNode(k, field)); } + ConstIterator find(int k, uint field = 0) const { return ConstIterator(this, data.findNode(k, field)); } + + uint findNode(int k, uint field = 0) const { return data.findNode(k, field); } + + uint insert_single(int key, uint length) + { + uint f = data.insert_single(key, length); + if (f != 0) { + Fragment *frag = fragment(f); + Q_ASSERT(frag); + frag->initialize(); + } + return f; + } + uint erase_single(uint f) + { + if (f != 0) { + Fragment *frag = fragment(f); + Q_ASSERT(frag); + frag->free(); + } + return data.erase_single(f); + } + + inline Fragment *fragment(uint index) { + Q_ASSERT(index != 0); + return data.fragment(index); + } + inline const Fragment *fragment(uint index) const { + Q_ASSERT(index != 0); + return data.fragment(index); + } + inline uint position(uint node, uint field = 0) const { return data.position(node, field); } + inline bool isValid(uint n) const { return data.isValid(n); } + inline uint next(uint n) const { return data.next(n); } + inline uint previous(uint n) const { return data.previous(n); } + inline uint size(uint node, uint field = 0) const { return data.size(node, field); } + inline void setSize(uint node, int new_size, uint field = 0) + { data.setSize(node, new_size, field); + if (node != 0 && field == 0) { + Fragment *frag = fragment(node); + Q_ASSERT(frag); + frag->invalidate(); + } + } + + inline int firstNode() const { return data.minimum(data.root()); } + +private: + friend class Iterator; + friend class ConstIterator; + + QFragmentMapData data; + + QFragmentMap(const QFragmentMap& m); + QFragmentMap& operator= (const QFragmentMap& m); +}; + +QT_END_NAMESPACE + +#endif // QFRAGMENTMAP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qglyphrun_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qglyphrun_p.h new file mode 100644 index 000000000..5b6bdad64 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qglyphrun_p.h @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGLYPHRUN_P_H +#define QGLYPHRUN_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qglyphrun.h" +#include "qrawfont.h" + +#include + +#if !defined(QT_NO_RAWFONT) + +QT_BEGIN_NAMESPACE + +class QGlyphRunPrivate: public QSharedData +{ +public: + QGlyphRunPrivate() + : flags(0) + , glyphIndexData(glyphIndexes.constData()) + , glyphIndexDataSize(0) + , glyphPositionData(glyphPositions.constData()) + , glyphPositionDataSize(0) + , textRangeStart(-1) + , textRangeEnd(-1) + { + } + + QGlyphRunPrivate(const QGlyphRunPrivate &other) + : QSharedData(other) + , glyphIndexes(other.glyphIndexes) + , glyphPositions(other.glyphPositions) + , rawFont(other.rawFont) + , boundingRect(other.boundingRect) + , flags(other.flags) + , glyphIndexData(other.glyphIndexData) + , glyphIndexDataSize(other.glyphIndexDataSize) + , glyphPositionData(other.glyphPositionData) + , glyphPositionDataSize(other.glyphPositionDataSize) + , textRangeStart(other.textRangeStart) + , textRangeEnd(other.textRangeEnd) + { + } + + QVector glyphIndexes; + QVector glyphPositions; + QRawFont rawFont; + QRectF boundingRect; + + QGlyphRun::GlyphRunFlags flags; + + const quint32 *glyphIndexData; + int glyphIndexDataSize; + + const QPointF *glyphPositionData; + int glyphPositionDataSize; + + int textRangeStart; + int textRangeEnd; + + static QGlyphRunPrivate *get(const QGlyphRun &glyphRun) + { + return glyphRun.d.data(); + } +}; + +QT_END_NAMESPACE + +#endif // QT_NO_RAWFONT + +#endif // QGLYPHRUN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qgrayraster_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qgrayraster_p.h new file mode 100644 index 000000000..86d54d437 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qgrayraster_p.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/***************************************************************************/ +/* */ +/* qgrayraster_p.h, derived from ftgrays.h */ +/* */ +/* FreeType smooth renderer declaration */ +/* */ +/* Copyright 1996-2001 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, ../../3rdparty/freetype/docs/FTL.TXT. By continuing to use, */ +/* modify, or distribute this file you indicate that you have read */ +/* the license and understand and accept it fully. */ +/***************************************************************************/ + + +#ifndef __FTGRAYS_H__ +#define __FTGRAYS_H__ + +/* +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +*/ + +#ifdef __cplusplus + extern "C" { +#endif + + +#include + + /*************************************************************************/ + /* */ + /* To make ftgrays.h independent from configuration files we check */ + /* whether QT_FT_EXPORT_VAR has been defined already. */ + /* */ + /* On some systems and compilers (Win32 mostly), an extra keyword is */ + /* necessary to compile the library as a DLL. */ + /* */ +#ifndef QT_FT_EXPORT_VAR +#define QT_FT_EXPORT_VAR( x ) extern x +#endif + +/* Minimum buffer size for raster object, that accounts + for TWorker and TCell sizes.*/ +#define MINIMUM_POOL_SIZE 8192 + + QT_FT_EXPORT_VAR( const QT_FT_Raster_Funcs ) qt_ft_grays_raster; + + +#ifdef __cplusplus + } +#endif + +#endif /* __FTGRAYS_H__ */ + +/* END */ diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qgridlayoutengine_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qgridlayoutengine_p.h new file mode 100644 index 000000000..5f0cc5da7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qgridlayoutengine_p.h @@ -0,0 +1,483 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRIDLAYOUTENGINE_P_H +#define QGRIDLAYOUTENGINE_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 graphics view layout classes. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qalgorithms.h" +#include "qbitarray.h" +#include "qlist.h" +#include "qmap.h" +#include "qpair.h" +#include +#include +#include +#include +#include "qlayoutpolicy_p.h" +#include "qabstractlayoutstyleinfo_p.h" + +// #define QGRIDLAYOUTENGINE_DEBUG + +QT_BEGIN_NAMESPACE + +class QStyle; +class QWidget; + +// ### deal with Descent in a similar way +enum { + MinimumSize = Qt::MinimumSize, + PreferredSize = Qt::PreferredSize, + MaximumSize = Qt::MaximumSize, + NSizes +}; + +// do not reorder +enum { + Hor, + Ver, + NOrientations +}; + +// do not reorder +enum LayoutSide { + Left, + Top, + Right, + Bottom +}; + +enum { + NoConstraint, + HorizontalConstraint, // Width depends on the height + VerticalConstraint, // Height depends on the width + UnknownConstraint, // need to update cache + UnfeasibleConstraint // not feasible, it be has some items with Vertical and others with Horizontal constraints +}; + +template +class QLayoutParameter +{ +public: + enum State { Default, User, Cached }; + + inline QLayoutParameter() : q_value(T()), q_state(Default) {} + inline QLayoutParameter(T value, State state = Default) : q_value(value), q_state(state) {} + + inline void setUserValue(T value) { + q_value = value; + q_state = User; + } + inline void setCachedValue(T value) const { + if (q_state != User) { + q_value = value; + q_state = Cached; + } + } + inline T value() const { return q_value; } + inline T value(T defaultValue) const { return isUser() ? q_value : defaultValue; } + inline bool isDefault() const { return q_state == Default; } + inline bool isUser() const { return q_state == User; } + inline bool isCached() const { return q_state == Cached; } + +private: + mutable T q_value; + mutable State q_state; +}; + +class QStretchParameter : public QLayoutParameter +{ +public: + QStretchParameter() : QLayoutParameter(-1) {} + +}; + +class Q_GUI_EXPORT QGridLayoutBox +{ +public: + inline QGridLayoutBox() + : q_minimumSize(0), q_preferredSize(0), q_maximumSize(FLT_MAX), + q_minimumDescent(-1), q_minimumAscent(-1) {} + + void add(const QGridLayoutBox &other, int stretch, qreal spacing); + void combine(const QGridLayoutBox &other); + void normalize(); + +#ifdef QGRIDLAYOUTENGINE_DEBUG + void dump(int indent = 0) const; +#endif + // This code could use the union-struct-array trick, but a compiler + // bug prevents this from working. + qreal q_minimumSize; + qreal q_preferredSize; + qreal q_maximumSize; + qreal q_minimumDescent; + qreal q_minimumAscent; + inline qreal &q_sizes(int which) + { + qreal *t; + switch (which) { + case Qt::MinimumSize: + t = &q_minimumSize; + break; + case Qt::PreferredSize: + t = &q_preferredSize; + break; + case Qt::MaximumSize: + t = &q_maximumSize; + break; + case Qt::MinimumDescent: + t = &q_minimumDescent; + break; + case (Qt::MinimumDescent + 1): + t = &q_minimumAscent; + break; + default: + t = 0; + break; + } + return *t; + } + inline const qreal &q_sizes(int which) const + { + const qreal *t; + switch (which) { + case Qt::MinimumSize: + t = &q_minimumSize; + break; + case Qt::PreferredSize: + t = &q_preferredSize; + break; + case Qt::MaximumSize: + t = &q_maximumSize; + break; + case Qt::MinimumDescent: + t = &q_minimumDescent; + break; + case (Qt::MinimumDescent + 1): + t = &q_minimumAscent; + break; + default: + t = 0; + break; + } + return *t; + } +}; +Q_DECLARE_TYPEINFO(QGridLayoutBox, Q_MOVABLE_TYPE); // cannot be Q_PRIMITIVE_TYPE, as q_maximumSize, say, is != 0 + +bool operator==(const QGridLayoutBox &box1, const QGridLayoutBox &box2); +inline bool operator!=(const QGridLayoutBox &box1, const QGridLayoutBox &box2) + { return !operator==(box1, box2); } + +class QGridLayoutMultiCellData +{ +public: + inline QGridLayoutMultiCellData() : q_stretch(-1) {} + + QGridLayoutBox q_box; + int q_stretch; +}; + +typedef QMap, QGridLayoutMultiCellData> MultiCellMap; + +class QGridLayoutRowInfo; + +class QGridLayoutRowData +{ +public: + void reset(int count); + void distributeMultiCells(const QGridLayoutRowInfo &rowInfo, bool snapToPixelGrid); + void calculateGeometries(int start, int end, qreal targetSize, qreal *positions, qreal *sizes, + qreal *descents, const QGridLayoutBox &totalBox, + const QGridLayoutRowInfo &rowInfo, bool snapToPixelGrid); + QGridLayoutBox totalBox(int start, int end) const; + void stealBox(int start, int end, int which, qreal *positions, qreal *sizes); + +#ifdef QGRIDLAYOUTENGINE_DEBUG + void dump(int indent = 0) const; +#endif + + QBitArray ignore; // ### rename q_ + QVector boxes; + MultiCellMap multiCellMap; + QVector stretches; + QVector spacings; + bool hasIgnoreFlag; +}; + +class QGridLayoutRowInfo +{ +public: + inline QGridLayoutRowInfo() : count(0) {} + + void insertOrRemoveRows(int row, int delta); + +#ifdef QGRIDLAYOUTENGINE_DEBUG + void dump(int indent = 0) const; +#endif + + int count; + QVector stretches; + QVector > spacings; + QVector alignments; + QVector boxes; +}; + + +class Q_GUI_EXPORT QGridLayoutItem +{ +public: + QGridLayoutItem(int row, int column, int rowSpan = 1, int columnSpan = 1, + Qt::Alignment alignment = 0); + virtual ~QGridLayoutItem() {} + + inline int firstRow() const { return q_firstRows[Ver]; } + inline int firstColumn() const { return q_firstRows[Hor]; } + inline int rowSpan() const { return q_rowSpans[Ver]; } + inline int columnSpan() const { return q_rowSpans[Hor]; } + inline int lastRow() const { return firstRow() + rowSpan() - 1; } + inline int lastColumn() const { return firstColumn() + columnSpan() - 1; } + + int firstRow(Qt::Orientation orientation) const; + int firstColumn(Qt::Orientation orientation) const; + int lastRow(Qt::Orientation orientation) const; + int lastColumn(Qt::Orientation orientation) const; + int rowSpan(Qt::Orientation orientation) const; + int columnSpan(Qt::Orientation orientation) const; + void setFirstRow(int row, Qt::Orientation orientation = Qt::Vertical); + void setRowSpan(int rowSpan, Qt::Orientation orientation = Qt::Vertical); + + int stretchFactor(Qt::Orientation orientation) const; + void setStretchFactor(int stretch, Qt::Orientation orientation); + + inline Qt::Alignment alignment() const { return q_alignment; } + inline void setAlignment(Qt::Alignment alignment) { q_alignment = alignment; } + + virtual QLayoutPolicy::Policy sizePolicy(Qt::Orientation orientation) const = 0; + virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint) const = 0; + virtual bool isIgnored() const { return false; } + + virtual void setGeometry(const QRectF &rect) = 0; + /* + returns true if the size policy returns true for either hasHeightForWidth() + or hasWidthForHeight() + */ + virtual bool hasDynamicConstraint() const { return false; } + virtual Qt::Orientation dynamicConstraintOrientation() const { return Qt::Horizontal; } + + + virtual QLayoutPolicy::ControlTypes controlTypes(LayoutSide side) const; + + QRectF geometryWithin(qreal x, qreal y, qreal width, qreal height, qreal rowDescent, Qt::Alignment align, bool snapToPixelGrid) const; + QGridLayoutBox box(Qt::Orientation orientation, bool snapToPixelGrid, qreal constraint = -1.0) const; + + + void transpose(); + void insertOrRemoveRows(int row, int delta, Qt::Orientation orientation = Qt::Vertical); + QSizeF effectiveMaxSize(const QSizeF &constraint) const; + +#ifdef QGRIDLAYOUTENGINE_DEBUG + void dump(int indent = 0) const; +#endif + +private: + int q_firstRows[NOrientations]; + int q_rowSpans[NOrientations]; + int q_stretches[NOrientations]; + Qt::Alignment q_alignment; + +}; + +class Q_GUI_EXPORT QGridLayoutEngine +{ +public: + QGridLayoutEngine(Qt::Alignment defaultAlignment = Qt::Alignment(0), bool snapToPixelGrid = false); + inline ~QGridLayoutEngine() { qDeleteAll(q_items); } + + int rowCount(Qt::Orientation orientation) const; + int columnCount(Qt::Orientation orientation) const; + inline int rowCount() const { return q_infos[Ver].count; } + inline int columnCount() const { return q_infos[Hor].count; } + // returns the number of items inserted, which may be less than (rowCount * columnCount) + int itemCount() const; + QGridLayoutItem *itemAt(int index) const; + + int effectiveFirstRow(Qt::Orientation orientation = Qt::Vertical) const; + int effectiveLastRow(Qt::Orientation orientation = Qt::Vertical) const; + + void setSpacing(qreal spacing, Qt::Orientations orientations); + qreal spacing(Qt::Orientation orientation, const QAbstractLayoutStyleInfo *styleInfo) const; + // ### setSpacingAfterRow(), spacingAfterRow() + void setRowSpacing(int row, qreal spacing, Qt::Orientation orientation = Qt::Vertical); + qreal rowSpacing(int row, Qt::Orientation orientation = Qt::Vertical) const; + + void setRowStretchFactor(int row, int stretch, Qt::Orientation orientation = Qt::Vertical); + int rowStretchFactor(int row, Qt::Orientation orientation = Qt::Vertical) const; + + void setRowSizeHint(Qt::SizeHint which, int row, qreal size, + Qt::Orientation orientation = Qt::Vertical); + qreal rowSizeHint(Qt::SizeHint which, int row, + Qt::Orientation orientation = Qt::Vertical) const; + + void setRowAlignment(int row, Qt::Alignment alignment, Qt::Orientation orientation); + Qt::Alignment rowAlignment(int row, Qt::Orientation orientation) const; + + Qt::Alignment effectiveAlignment(const QGridLayoutItem *layoutItem) const; + + + void insertItem(QGridLayoutItem *item, int index); + void addItem(QGridLayoutItem *item); + void removeItem(QGridLayoutItem *item); + void deleteItems() + { + const QList oldItems = q_items; + q_items.clear(); // q_items are used as input when the grid is regenerated in removeRows + // The following calls to removeRows are suboptimal + int rows = rowCount(Qt::Vertical); + removeRows(0, rows, Qt::Vertical); + rows = rowCount(Qt::Horizontal); + removeRows(0, rows, Qt::Horizontal); + qDeleteAll(oldItems); + } + + QGridLayoutItem *itemAt(int row, int column, Qt::Orientation orientation = Qt::Vertical) const; + inline void insertRow(int row, Qt::Orientation orientation = Qt::Vertical) + { insertOrRemoveRows(row, +1, orientation); } + inline void removeRows(int row, int count, Qt::Orientation orientation) + { insertOrRemoveRows(row, -count, orientation); } + + void invalidate(); + void setGeometries(const QRectF &contentsGeometry, const QAbstractLayoutStyleInfo *styleInfo); + QRectF cellRect(const QRectF &contentsGeometry, int row, int column, int rowSpan, int columnSpan, + const QAbstractLayoutStyleInfo *styleInfo) const; + QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint, + const QAbstractLayoutStyleInfo *styleInfo) const; + + // heightForWidth / widthForHeight support + QSizeF dynamicallyConstrainedSizeHint(Qt::SizeHint which, const QSizeF &constraint) const; + bool ensureDynamicConstraint() const; + bool hasDynamicConstraint() const; + Qt::Orientation constraintOrientation() const; + + + QLayoutPolicy::ControlTypes controlTypes(LayoutSide side) const; + void transpose(); + void setVisualDirection(Qt::LayoutDirection direction); + Qt::LayoutDirection visualDirection() const; +#ifdef QGRIDLAYOUTENGINE_DEBUG + void dump(int indent = 0) const; +#endif + +private: + static int grossRoundUp(int n) { return ((n + 2) | 0x3) - 2; } + + void maybeExpandGrid(int row, int column, Qt::Orientation orientation = Qt::Vertical); + void regenerateGrid(); + inline int internalGridRowCount() const { return grossRoundUp(rowCount()); } + inline int internalGridColumnCount() const { return grossRoundUp(columnCount()); } + void setItemAt(int row, int column, QGridLayoutItem *item); + void insertOrRemoveRows(int row, int delta, Qt::Orientation orientation = Qt::Vertical); + void fillRowData(QGridLayoutRowData *rowData, + const qreal *colPositions, const qreal *colSizes, + Qt::Orientation orientation, + const QAbstractLayoutStyleInfo *styleInfo) const; + void ensureEffectiveFirstAndLastRows() const; + void ensureColumnAndRowData(QGridLayoutRowData *rowData, QGridLayoutBox *totalBox, + const qreal *colPositions, const qreal *colSizes, + Qt::Orientation orientation, + const QAbstractLayoutStyleInfo *styleInfo) const; + + void ensureGeometries(const QSizeF &size, const QAbstractLayoutStyleInfo *styleInfo) const; +protected: + QList q_items; +private: + // User input + QVector q_grid; + QLayoutParameter q_defaultSpacings[NOrientations]; + QGridLayoutRowInfo q_infos[NOrientations]; + Qt::LayoutDirection m_visualDirection; + + // Configuration + Qt::Alignment m_defaultAlignment; + unsigned m_snapToPixelGrid : 1; + + // Lazily computed from the above user input + mutable int q_cachedEffectiveFirstRows[NOrientations]; + mutable int q_cachedEffectiveLastRows[NOrientations]; + mutable quint8 q_cachedConstraintOrientation : 3; + + // this is useful to cache + mutable QGridLayoutBox q_totalBoxes[NOrientations]; + enum { + NotCached = -2, // Cache is empty. Happens when the engine is invalidated. + CachedWithNoConstraint = -1 // cache has a totalBox without any HFW/WFH constraints. + // >= 0 // cache has a totalBox with this specific constraint. + }; + mutable qreal q_totalBoxCachedConstraints[NOrientations]; // holds the constraint used for the cached totalBox + + // Layout item input + mutable QGridLayoutRowData q_columnData; + mutable QGridLayoutRowData q_rowData; + + // Output + mutable QSizeF q_cachedSize; + mutable QVector q_xx; + mutable QVector q_yy; + mutable QVector q_widths; + mutable QVector q_heights; + mutable QVector q_descents; + + friend class QGridLayoutItem; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qguiapplication_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qguiapplication_p.h new file mode 100644 index 000000000..d67ab61ff --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qguiapplication_p.h @@ -0,0 +1,338 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGUIAPPLICATION_P_H +#define QGUIAPPLICATION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include +#include + +#include + +#include +#include +#include "private/qshortcutmap_p.h" +#include + +QT_BEGIN_NAMESPACE + +class QColorProfile; +class QPlatformIntegration; +class QPlatformTheme; +class QPlatformDragQtResponse; +#ifndef QT_NO_DRAGANDDROP +class QDrag; +#endif // QT_NO_DRAGANDDROP +class QInputDeviceManager; + +class Q_GUI_EXPORT QGuiApplicationPrivate : public QCoreApplicationPrivate +{ + Q_DECLARE_PUBLIC(QGuiApplication) +public: + QGuiApplicationPrivate(int &argc, char **argv, int flags); + ~QGuiApplicationPrivate(); + + void init(); + + void createPlatformIntegration(); + void createEventDispatcher() Q_DECL_OVERRIDE; + void eventDispatcherReady() Q_DECL_OVERRIDE; + + virtual void notifyLayoutDirectionChange(); + virtual void notifyActiveWindowChange(QWindow *previous); + + virtual bool shouldQuit() Q_DECL_OVERRIDE; + + bool shouldQuitInternal(const QWindowList &processedWindows); + virtual bool tryCloseAllWindows(); + + static Qt::KeyboardModifiers modifier_buttons; + static Qt::MouseButtons mouse_buttons; + + static QPlatformIntegration *platform_integration; + + static QPlatformIntegration *platformIntegration() + { return platform_integration; } + + static QPlatformTheme *platform_theme; + + static QPlatformTheme *platformTheme() + { return platform_theme; } + + static QAbstractEventDispatcher *qt_qpa_core_dispatcher() + { + if (QCoreApplication::instance()) + return QCoreApplication::instance()->d_func()->threadData->eventDispatcher.load(); + else + return 0; + } + + static void processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent *e); + static void processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent *e); + static void processWheelEvent(QWindowSystemInterfacePrivate::WheelEvent *e); + static void processTouchEvent(QWindowSystemInterfacePrivate::TouchEvent *e); + + static void processCloseEvent(QWindowSystemInterfacePrivate::CloseEvent *e); + + static void processGeometryChangeEvent(QWindowSystemInterfacePrivate::GeometryChangeEvent *e); + + static void processEnterEvent(QWindowSystemInterfacePrivate::EnterEvent *e); + static void processLeaveEvent(QWindowSystemInterfacePrivate::LeaveEvent *e); + + static void processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent *e); + static void processWindowStateChangedEvent(QWindowSystemInterfacePrivate::WindowStateChangedEvent *e); + static void processWindowScreenChangedEvent(QWindowSystemInterfacePrivate::WindowScreenChangedEvent *e); + + static void processSafeAreaMarginsChangedEvent(QWindowSystemInterfacePrivate::SafeAreaMarginsChangedEvent *e); + + static void processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *e); + + static void updateFilteredScreenOrientation(QScreen *screen); + static void reportScreenOrientationChange(QScreen *screen); + static void reportScreenOrientationChange(QWindowSystemInterfacePrivate::ScreenOrientationEvent *e); + static void reportGeometryChange(QWindowSystemInterfacePrivate::ScreenGeometryEvent *e); + static void reportLogicalDotsPerInchChange(QWindowSystemInterfacePrivate::ScreenLogicalDotsPerInchEvent *e); + static void reportRefreshRateChange(QWindowSystemInterfacePrivate::ScreenRefreshRateEvent *e); + static void processThemeChanged(QWindowSystemInterfacePrivate::ThemeChangeEvent *tce); + + static void processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent *e); + + static void processFileOpenEvent(QWindowSystemInterfacePrivate::FileOpenEvent *e); + + static void processTabletEvent(QWindowSystemInterfacePrivate::TabletEvent *e); + static void processTabletEnterProximityEvent(QWindowSystemInterfacePrivate::TabletEnterProximityEvent *e); + static void processTabletLeaveProximityEvent(QWindowSystemInterfacePrivate::TabletLeaveProximityEvent *e); + +#ifndef QT_NO_GESTURES + static void processGestureEvent(QWindowSystemInterfacePrivate::GestureEvent *e); +#endif + + static void processPlatformPanelEvent(QWindowSystemInterfacePrivate::PlatformPanelEvent *e); +#ifndef QT_NO_CONTEXTMENU + static void processContextMenuEvent(QWindowSystemInterfacePrivate::ContextMenuEvent *e); +#endif + +#ifndef QT_NO_DRAGANDDROP + static QPlatformDragQtResponse processDrag(QWindow *w, const QMimeData *dropData, const QPoint &p, Qt::DropActions supportedActions); + static QPlatformDropQtResponse processDrop(QWindow *w, const QMimeData *dropData, const QPoint &p, Qt::DropActions supportedActions); +#endif + + static bool processNativeEvent(QWindow *window, const QByteArray &eventType, void *message, long *result); + + static void sendQWindowEventToQPlatformWindow(QWindow *window, QEvent *event); + + static inline Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment) + { + if (!(alignment & Qt::AlignHorizontal_Mask)) + alignment |= Qt::AlignLeft; + if (!(alignment & Qt::AlignAbsolute) && (alignment & (Qt::AlignLeft | Qt::AlignRight))) { + if (direction == Qt::RightToLeft) + alignment ^= (Qt::AlignLeft | Qt::AlignRight); + alignment |= Qt::AlignAbsolute; + } + return alignment; + } + + static void emitLastWindowClosed(); + + QPixmap getPixmapCursor(Qt::CursorShape cshape); + + void _q_updateFocusObject(QObject *object); + + static QGuiApplicationPrivate *instance() { return self; } + + static QIcon *app_icon; + static QString *platform_name; + static QString *displayName; + static QString *desktopFileName; + + QWindowList modalWindowList; + static void showModalWindow(QWindow *window); + static void hideModalWindow(QWindow *window); + static void updateBlockedStatus(QWindow *window); + virtual bool isWindowBlocked(QWindow *window, QWindow **blockingWindow = 0) const; + virtual bool popupActive() { return false; } + + static Qt::MouseButtons buttons; + static ulong mousePressTime; + static Qt::MouseButton mousePressButton; + static int mousePressX; + static int mousePressY; + static int mouse_double_click_distance; + static QPointF lastCursorPosition; + static QWindow *currentMouseWindow; + static QWindow *currentMousePressWindow; + static Qt::ApplicationState applicationState; + static bool highDpiScalingUpdated; + + struct TabletPointData { + TabletPointData(qint64 devId = 0) : deviceId(devId), state(Qt::NoButton), target(Q_NULLPTR) {} + qint64 deviceId; + Qt::MouseButtons state; + QWindow *target; + }; + static QVector tabletDevicePoints; + static TabletPointData &tabletDevicePoint(qint64 deviceId); + +#ifndef QT_NO_CLIPBOARD + static QClipboard *qt_clipboard; +#endif + + static QPalette *app_pal; + + static QWindowList window_list; + static QWindow *focus_window; + +#ifndef QT_NO_CURSOR + QList cursor_list; +#endif + static QList screen_list; + + static QFont *app_font; + + static QString styleOverride; + static QStyleHints *styleHints; + static bool obey_desktop_settings; + QInputMethod *inputMethod; + + QString firstWindowTitle; + QIcon forcedWindowIcon; + + static QList generic_plugin_list; +#ifndef QT_NO_SHORTCUT + QShortcutMap shortcutMap; +#endif + +#ifndef QT_NO_SESSIONMANAGER + static bool is_fallback_session_management_enabled; + QSessionManager *session_manager; + bool is_session_restored; + bool is_saving_session; + void commitData(); + void saveState(); +#endif + + struct ActiveTouchPointsKey { + ActiveTouchPointsKey(QTouchDevice *dev, int id) : device(dev), touchPointId(id) { } + QTouchDevice *device; + int touchPointId; + }; + struct ActiveTouchPointsValue { + QPointer window; + QPointer target; + QTouchEvent::TouchPoint touchPoint; + }; + QHash activeTouchPoints; + QEvent::Type lastTouchType; + struct SynthesizedMouseData { + SynthesizedMouseData(const QPointF &p, const QPointF &sp, QWindow *w) + : pos(p), screenPos(sp), window(w) { } + QPointF pos; + QPointF screenPos; + QPointer window; + }; + QHash synthesizedMousePoints; + + static int mouseEventCaps(QMouseEvent *event); + static QVector2D mouseEventVelocity(QMouseEvent *event); + static void setMouseEventCapsAndVelocity(QMouseEvent *event, int caps, const QVector2D &velocity); + + static Qt::MouseEventSource mouseEventSource(const QMouseEvent *event); + static void setMouseEventSource(QMouseEvent *event, Qt::MouseEventSource source); + + static Qt::MouseEventFlags mouseEventFlags(const QMouseEvent *event); + static void setMouseEventFlags(QMouseEvent *event, Qt::MouseEventFlags flags); + + static QInputDeviceManager *inputDeviceManager(); + + const QColorProfile *colorProfileForA8Text(); + const QColorProfile *colorProfileForA32Text(); + + // hook reimplemented in QApplication to apply the QStyle function on the QIcon + virtual QPixmap applyQIconStyleHelper(QIcon::Mode, const QPixmap &basePixmap) const { return basePixmap; } + + virtual void notifyWindowIconChanged(); + + static void applyWindowGeometrySpecificationTo(QWindow *window); + + static void setApplicationState(Qt::ApplicationState state, bool forcePropagate = false); + +protected: + virtual void notifyThemeChanged(); + bool tryCloseRemainingWindows(QWindowList processedWindows); +#ifndef QT_NO_DRAGANDDROP + virtual void notifyDragStarted(const QDrag *); +#endif // QT_NO_DRAGANDDROP + +private: + friend class QDragManager; + + static QGuiApplicationPrivate *self; + static QTouchDevice *m_fakeTouchDevice; + static int m_fakeMouseSourcePointId; + QAtomicPointer m_a8ColorProfile; + QAtomicPointer m_a32ColorProfile; + + bool ownGlobalShareContext; + + static QInputDeviceManager *m_inputDeviceManager; +}; + +Q_GUI_EXPORT uint qHash(const QGuiApplicationPrivate::ActiveTouchPointsKey &k); + +Q_GUI_EXPORT bool operator==(const QGuiApplicationPrivate::ActiveTouchPointsKey &a, + const QGuiApplicationPrivate::ActiveTouchPointsKey &b); + +QT_END_NAMESPACE + +#endif // QGUIAPPLICATION_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qharfbuzzng_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qharfbuzzng_p.h new file mode 100644 index 000000000..fabf222ba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qharfbuzzng_p.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2013 Konstantin Ritt +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHARFBUZZNG_P_H +#define QHARFBUZZNG_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_REQUIRE_CONFIG(harfbuzz); + +#include + +#include + +QT_BEGIN_NAMESPACE + +class QFontEngine; + +// Unicode + +Q_GUI_EXPORT hb_script_t hb_qt_script_to_script(QChar::Script script); +Q_GUI_EXPORT QChar::Script hb_qt_script_from_script(hb_script_t script); + +Q_GUI_EXPORT hb_unicode_funcs_t *hb_qt_get_unicode_funcs(); + + +// Font + +Q_GUI_EXPORT hb_font_funcs_t *hb_qt_get_font_funcs(); + +Q_GUI_EXPORT hb_face_t *hb_qt_face_get_for_engine(QFontEngine *fe); +Q_GUI_EXPORT hb_font_t *hb_qt_font_get_for_engine(QFontEngine *fe); + +Q_GUI_EXPORT void hb_qt_font_set_use_design_metrics(hb_font_t *font, uint value); +Q_GUI_EXPORT uint hb_qt_font_get_use_design_metrics(hb_font_t *font); + +QT_END_NAMESPACE + +#endif // QHARFBUZZNG_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qhexstring_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qhexstring_p.h new file mode 100644 index 000000000..d30a8eeee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qhexstring_p.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include + +#ifndef QHEXSTRING_P_H +#define QHEXSTRING_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. +// + +QT_BEGIN_NAMESPACE + +// internal helper. Converts an integer value to a unique string token +template + struct HexString +{ + inline HexString(const T t) + : val(t) + {} + + inline void write(QChar *&dest) const + { + const ushort hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + const char *c = reinterpret_cast(&val); + for (uint i = 0; i < sizeof(T); ++i) { + *dest++ = hexChars[*c & 0xf]; + *dest++ = hexChars[(*c & 0xf0) >> 4]; + ++c; + } + } + const T val; +}; + +// specialization to enable fast concatenating of our string tokens to a string +template + struct QConcatenable > +{ + typedef HexString type; + enum { ExactSize = true }; + static int size(const HexString &) { return sizeof(T) * 2; } + static inline void appendTo(const HexString &str, QChar *&out) { str.write(out); } + typedef QString ConvertTo; +}; + +QT_END_NAMESPACE + +#endif // QHEXSTRING_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qhighdpiscaling_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qhighdpiscaling_p.h new file mode 100644 index 000000000..83fc9452c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qhighdpiscaling_p.h @@ -0,0 +1,546 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHIGHDPISCALING_P_H +#define QHIGHDPISCALING_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +Q_DECLARE_LOGGING_CATEGORY(lcScaling); + +class QScreen; +class QPlatformScreen; +typedef QPair QDpi; + +#ifndef QT_NO_HIGHDPISCALING +class Q_GUI_EXPORT QHighDpiScaling { +public: + static void initHighDpiScaling(); + static void updateHighDpiScaling(); + static void setGlobalFactor(qreal factor); + static void setScreenFactor(QScreen *window, qreal factor); + + static bool isActive() { return m_active; } + static qreal factor(const QWindow *window); + static qreal factor(const QScreen *screen); + static qreal factor(const QPlatformScreen *platformScreen); + static QPoint origin(const QScreen *screen); + static QPoint origin(const QPlatformScreen *platformScreen); + static QPoint mapPositionFromNative(const QPoint &pos, const QPlatformScreen *platformScreen); + static QPoint mapPositionToNative(const QPoint &pos, const QPlatformScreen *platformScreen); + static QDpi logicalDpi(); + +private: + static qreal screenSubfactor(const QPlatformScreen *screen); + + static qreal m_factor; + static bool m_active; + static bool m_usePixelDensity; + static bool m_globalScalingActive; + static bool m_pixelDensityScalingActive; + static bool m_screenFactorSet; + static QDpi m_logicalDpi; +}; + +// Coordinate system conversion functions: +// QHighDpi::fromNativePixels : from physical(screen/backing) to logical pixels +// QHighDpi::toNativePixels : from logical to physical pixels + +namespace QHighDpi { + +inline QPointF fromNative(const QPointF &pos, qreal scaleFactor, const QPointF &origin) +{ + return (pos - origin) / scaleFactor + origin; +} + +inline QPointF toNative(const QPointF &pos, qreal scaleFactor, const QPointF &origin) +{ + return (pos - origin) * scaleFactor + origin; +} + +inline QPoint fromNative(const QPoint &pos, qreal scaleFactor, const QPoint &origin) +{ + return (pos - origin) / scaleFactor + origin; +} + +inline QPoint toNative(const QPoint &pos, qreal scaleFactor, const QPoint &origin) +{ + return (pos - origin) * scaleFactor + origin; +} + +inline QPoint fromNative(const QPoint &pos, qreal scaleFactor) +{ + return pos / scaleFactor; +} + +inline QPoint toNative(const QPoint &pos, qreal scaleFactor) +{ + return pos * scaleFactor; +} + +inline QSize fromNative(const QSize &size, qreal scaleFactor) +{ + return size / scaleFactor; // TODO: should we round up? +} + +inline QSize toNative(const QSize &size, qreal scaleFactor) +{ + return size * scaleFactor; +} + +inline QSizeF fromNative(const QSizeF &size, qreal scaleFactor) +{ + return size / scaleFactor; +} + +inline QSizeF toNative(const QSizeF &size, qreal scaleFactor) +{ + return size * scaleFactor; +} + +inline QRect fromNative(const QRect &rect, qreal scaleFactor, const QPoint &origin) +{ + return QRect(fromNative(rect.topLeft(), scaleFactor, origin), fromNative(rect.size(), scaleFactor)); +} + +inline QRect toNative(const QRect &rect, qreal scaleFactor, const QPoint &origin) +{ + return QRect(toNative(rect.topLeft(), scaleFactor, origin), toNative(rect.size(), scaleFactor)); + +} + +inline QRect fromNative(const QRect &rect, const QScreen *screen, const QPoint &screenOrigin) +{ + return fromNative(rect, QHighDpiScaling::factor(screen), screenOrigin); +} + +inline QRect fromNativeScreenGeometry(const QRect &nativeScreenGeometry, const QScreen *screen) +{ + return QRect(nativeScreenGeometry.topLeft(), + fromNative(nativeScreenGeometry.size(), QHighDpiScaling::factor(screen))); +} + +inline QPoint fromNativeLocalPosition(const QPoint &pos, const QWindow *window) +{ + const qreal scaleFactor = QHighDpiScaling::factor(window); + return pos / scaleFactor; +} + +inline QPoint toNativeLocalPosition(const QPoint &pos, const QWindow *window) +{ + const qreal scaleFactor = QHighDpiScaling::factor(window); + return pos * scaleFactor; +} + +inline QPointF fromNativeLocalPosition(const QPointF &pos, const QWindow *window) +{ + const qreal scaleFactor = QHighDpiScaling::factor(window); + return pos / scaleFactor; +} + +inline QPointF toNativeLocalPosition(const QPointF &pos, const QWindow *window) +{ + const qreal scaleFactor = QHighDpiScaling::factor(window); + return pos * scaleFactor; +} + +inline QRect fromNativePixels(const QRect &pixelRect, const QPlatformScreen *platformScreen) +{ + const qreal scaleFactor = QHighDpiScaling::factor(platformScreen); + const QPoint origin = QHighDpiScaling::origin(platformScreen); + return QRect(fromNative(pixelRect.topLeft(), scaleFactor, origin), + fromNative(pixelRect.size(), scaleFactor)); +} + +inline QRect toNativePixels(const QRect &pointRect, const QPlatformScreen *platformScreen) +{ + const qreal scaleFactor = QHighDpiScaling::factor(platformScreen); + const QPoint origin = QHighDpiScaling::origin(platformScreen); + return QRect(toNative(pointRect.topLeft(), scaleFactor, origin), + toNative(pointRect.size(), scaleFactor)); +} + +inline QRect fromNativePixels(const QRect &pixelRect, const QScreen *screen) +{ + const qreal scaleFactor = QHighDpiScaling::factor(screen); + const QPoint origin = QHighDpiScaling::origin(screen); + return QRect(fromNative(pixelRect.topLeft(), scaleFactor, origin), + fromNative(pixelRect.size(), scaleFactor)); +} + +inline QRect toNativePixels(const QRect &pointRect, const QScreen *screen) +{ + const qreal scaleFactor = QHighDpiScaling::factor(screen); + const QPoint origin = QHighDpiScaling::origin(screen); + return QRect(toNative(pointRect.topLeft(), scaleFactor, origin), + toNative(pointRect.size(), scaleFactor)); +} + +inline QRect fromNativePixels(const QRect &pixelRect, const QWindow *window) +{ + if (window && window->isTopLevel() && window->screen()) { + return fromNativePixels(pixelRect, window->screen()); + } else { + const qreal scaleFactor = QHighDpiScaling::factor(window); + return QRect(pixelRect.topLeft() / scaleFactor, fromNative(pixelRect.size(), scaleFactor)); + } +} + +inline QRectF toNativePixels(const QRectF &pointRect, const QScreen *screen) +{ + const qreal scaleFactor = QHighDpiScaling::factor(screen); + const QPoint origin = QHighDpiScaling::origin(screen); + return QRectF(toNative(pointRect.topLeft(), scaleFactor, origin), + toNative(pointRect.size(), scaleFactor)); +} + +inline QRect toNativePixels(const QRect &pointRect, const QWindow *window) +{ + if (window && window->isTopLevel() && window->screen()) { + return toNativePixels(pointRect, window->screen()); + } else { + const qreal scaleFactor = QHighDpiScaling::factor(window); + return QRect(pointRect.topLeft() * scaleFactor, toNative(pointRect.size(), scaleFactor)); + } +} + +inline QRectF fromNativePixels(const QRectF &pixelRect, const QScreen *screen) +{ + const qreal scaleFactor = QHighDpiScaling::factor(screen); + const QPoint origin = QHighDpiScaling::origin(screen); + return QRectF(fromNative(pixelRect.topLeft(), scaleFactor, origin), + fromNative(pixelRect.size(), scaleFactor)); +} + +inline QRectF fromNativePixels(const QRectF &pixelRect, const QWindow *window) +{ + if (window && window->isTopLevel() && window->screen()) { + return fromNativePixels(pixelRect, window->screen()); + } else { + const qreal scaleFactor = QHighDpiScaling::factor(window); + return QRectF(pixelRect.topLeft() / scaleFactor, pixelRect.size() / scaleFactor); + } +} + +inline QRectF toNativePixels(const QRectF &pointRect, const QWindow *window) +{ + if (window && window->isTopLevel() && window->screen()) { + return toNativePixels(pointRect, window->screen()); + } else { + const qreal scaleFactor = QHighDpiScaling::factor(window); + return QRectF(pointRect.topLeft() * scaleFactor, pointRect.size() * scaleFactor); + } +} + +inline QSize fromNativePixels(const QSize &pixelSize, const QWindow *window) +{ + return pixelSize / QHighDpiScaling::factor(window); +} + +inline QSize toNativePixels(const QSize &pointSize, const QWindow *window) +{ + return pointSize * QHighDpiScaling::factor(window); +} + +inline QSizeF fromNativePixels(const QSizeF &pixelSize, const QWindow *window) +{ + return pixelSize / QHighDpiScaling::factor(window); +} + +inline QSizeF toNativePixels(const QSizeF &pointSize, const QWindow *window) +{ + return pointSize * QHighDpiScaling::factor(window); +} + +inline QPoint fromNativePixels(const QPoint &pixelPoint, const QScreen *screen) +{ + return fromNative(pixelPoint, QHighDpiScaling::factor(screen), QHighDpiScaling::origin(screen)); +} + +inline QPoint fromNativePixels(const QPoint &pixelPoint, const QWindow *window) +{ + if (window && window->isTopLevel() && window->screen()) + return fromNativePixels(pixelPoint, window->screen()); + else + return pixelPoint / QHighDpiScaling::factor(window); +} + +inline QPoint toNativePixels(const QPoint &pointPoint, const QScreen *screen) +{ + return toNative(pointPoint, QHighDpiScaling::factor(screen), QHighDpiScaling::origin(screen)); +} + +inline QPoint toNativePixels(const QPoint &pointPoint, const QWindow *window) +{ + if (window && window->isTopLevel() && window->screen()) + return toNativePixels(pointPoint, window->screen()); + else + return pointPoint * QHighDpiScaling::factor(window); +} + +inline QPointF fromNativePixels(const QPointF &pixelPoint, const QScreen *screen) +{ + return fromNative(pixelPoint, QHighDpiScaling::factor(screen), QHighDpiScaling::origin(screen)); +} + +inline QPointF fromNativePixels(const QPointF &pixelPoint, const QWindow *window) +{ + if (window && window->isTopLevel() && window->screen()) + return fromNativePixels(pixelPoint, window->screen()); + else + return pixelPoint / QHighDpiScaling::factor(window); +} + +inline QPointF toNativePixels(const QPointF &pointPoint, const QScreen *screen) +{ + return toNative(pointPoint, QHighDpiScaling::factor(screen), QHighDpiScaling::origin(screen)); +} + +inline QPointF toNativePixels(const QPointF &pointPoint, const QWindow *window) +{ + if (window && window->isTopLevel() && window->screen()) + return toNativePixels(pointPoint, window->screen()); + else + return pointPoint * QHighDpiScaling::factor(window); +} + +inline QMargins fromNativePixels(const QMargins &pixelMargins, const QWindow *window) +{ + const qreal scaleFactor = QHighDpiScaling::factor(window); + return QMargins(pixelMargins.left() / scaleFactor, pixelMargins.top() / scaleFactor, + pixelMargins.right() / scaleFactor, pixelMargins.bottom() / scaleFactor); +} + +inline QMargins toNativePixels(const QMargins &pointMargins, const QWindow *window) +{ + const qreal scaleFactor = QHighDpiScaling::factor(window); + return QMargins(pointMargins.left() * scaleFactor, pointMargins.top() * scaleFactor, + pointMargins.right() * scaleFactor, pointMargins.bottom() * scaleFactor); +} + +inline QRegion fromNativeLocalRegion(const QRegion &pixelRegion, const QWindow *window) +{ + if (!QHighDpiScaling::isActive()) + return pixelRegion; + + qreal scaleFactor = QHighDpiScaling::factor(window); + QRegion pointRegion; + for (const QRect &rect : pixelRegion) { + pointRegion += QRect(fromNative(rect.topLeft(), scaleFactor), + fromNative(rect.size(), scaleFactor)); + } + return pointRegion; +} + +// When mapping expose events to Qt rects: round top/left towards the origin and +// bottom/right away from the origin, making sure that we cover the whole window. +inline QRegion fromNativeLocalExposedRegion(const QRegion &pixelRegion, const QWindow *window) +{ + if (!QHighDpiScaling::isActive()) + return pixelRegion; + + const qreal scaleFactor = QHighDpiScaling::factor(window); + QRegion pointRegion; + for (const QRectF &rect : pixelRegion) { + const QPointF topLeftP = rect.topLeft() / scaleFactor; + const QSizeF sizeP = rect.size() / scaleFactor; + pointRegion += QRect(QPoint(qFloor(topLeftP.x()), qFloor(topLeftP.y())), + QPoint(qCeil(topLeftP.x() + sizeP.width() - 1.0), + qCeil(topLeftP.y() + sizeP.height() - 1.0))); + } + return pointRegion; +} + +inline QRegion toNativeLocalRegion(const QRegion &pointRegion, const QWindow *window) +{ + if (!QHighDpiScaling::isActive()) + return pointRegion; + + qreal scaleFactor = QHighDpiScaling::factor(window); + QRegion pixelRegon; + for (const QRect &rect : pointRegion) { + pixelRegon += QRect(toNative(rect.topLeft(), scaleFactor), + toNative(rect.size(), scaleFactor)); + } + return pixelRegon; +} + +// Any T that has operator/() +template +T fromNativePixels(const T &pixelValue, const QWindow *window) +{ + if (!QHighDpiScaling::isActive()) + return pixelValue; + + return pixelValue / QHighDpiScaling::factor(window); + +} + + //##### ????? +template +T fromNativePixels(const T &pixelValue, const QScreen *screen) +{ + if (!QHighDpiScaling::isActive()) + return pixelValue; + + return pixelValue / QHighDpiScaling::factor(screen); + +} + +// Any T that has operator*() +template +T toNativePixels(const T &pointValue, const QWindow *window) +{ + if (!QHighDpiScaling::isActive()) + return pointValue; + + return pointValue * QHighDpiScaling::factor(window); +} + +template +T toNativePixels(const T &pointValue, const QScreen *screen) +{ + if (!QHighDpiScaling::isActive()) + return pointValue; + + return pointValue * QHighDpiScaling::factor(screen); +} + + +// Any QVector where T has operator/() +template +QVector fromNativePixels(const QVector &pixelValues, const QWindow *window) +{ + if (!QHighDpiScaling::isActive()) + return pixelValues; + + QVector pointValues; + pointValues.reserve(pixelValues.size()); + const auto factor = QHighDpiScaling::factor(window); + for (const T &pixelValue : pixelValues) + pointValues.append(pixelValue / factor); + return pointValues; +} + +// Any QVector where T has operator*() +template +QVector toNativePixels(const QVector &pointValues, const QWindow *window) +{ + if (!QHighDpiScaling::isActive()) + return pointValues; + + QVector pixelValues; + pixelValues.reserve(pointValues.size()); + const auto factor = QHighDpiScaling::factor(window); + for (const T &pointValue : pointValues) + pixelValues.append(pointValue * factor); + return pixelValues; +} + +} // namespace QHighDpi +#else // QT_NO_HIGHDPISCALING +class Q_GUI_EXPORT QHighDpiScaling { +public: + static inline void initHighDpiScaling() {} + static inline void updateHighDpiScaling() {} + static inline void setGlobalFactor(qreal) {} + static inline void setScreenFactor(QScreen *, qreal) {} + + static inline bool isActive() { return false; } + static inline qreal factor(const QWindow *) { return 1.0; } + static inline qreal factor(const QScreen *) { return 1.0; } + static inline qreal factor(const QPlatformScreen *) { return 1.0; } + static inline QPoint origin(const QScreen *) { return QPoint(); } + static inline QPoint origin(const QPlatformScreen *) { return QPoint(); } + static inline QPoint mapPositionFromNative(const QPoint &pos, const QPlatformScreen *) { return pos; } + static inline QPoint mapPositionToNative(const QPoint &pos, const QPlatformScreen *) { return pos; } + static inline QDpi logicalDpi() { return QDpi(-1,-1); } +}; + +namespace QHighDpi { + template inline + T toNative(const T &value, ...) { return value; } + template inline + T fromNative(const T &value, ...) { return value; } + + template inline + T fromNativeLocalPosition(const T &value, ...) { return value; } + template inline + T toNativeLocalPosition(const T &value, ...) { return value; } + + template inline + T fromNativeLocalRegion(const T &value, ...) { return value; } + template inline + T fromNativeLocalExposedRegion(const T &value, ...) { return value; } + template inline + T toNativeLocalRegion(const T &value, ...) { return value; } + + template inline + T fromNativeScreenGeometry(const T &value, ...) { return value; } + + template inline + T toNativePixels(const T &value, const U*) {return value;} + template inline + T fromNativePixels(const T &value, const U*) {return value;} +} +#endif // QT_NO_HIGHDPISCALING +QT_END_NAMESPACE + +#endif // QHIGHDPISCALING_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qicon_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qicon_p.h new file mode 100644 index 000000000..aa358e88a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qicon_p.h @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QICON_P_H +#define QICON_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include + +#ifndef QT_NO_ICON +QT_BEGIN_NAMESPACE + +class QIconPrivate +{ +public: + explicit QIconPrivate(QIconEngine *e); + + ~QIconPrivate() { + delete engine; + } + + qreal pixmapDevicePixelRatio(qreal displayDevicePixelRatio, const QSize &requestedSize, const QSize &actualSize); + + QIconEngine *engine; + + QAtomicInt ref; + int serialNum; + int detach_no; + bool is_mask; +}; + + +struct QPixmapIconEngineEntry +{ + QPixmapIconEngineEntry():mode(QIcon::Normal), state(QIcon::Off){} + QPixmapIconEngineEntry(const QPixmap &pm, QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off) + :pixmap(pm), size(pm.size()), mode(m), state(s){} + QPixmapIconEngineEntry(const QString &file, const QSize &sz = QSize(), QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off) + :fileName(file), size(sz), mode(m), state(s){} + QPixmapIconEngineEntry(const QString &file, const QImage &image, QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off); + QPixmap pixmap; + QString fileName; + QSize size; + QIcon::Mode mode; + QIcon::State state; + bool isNull() const {return (fileName.isEmpty() && pixmap.isNull()); } +}; +Q_DECLARE_TYPEINFO(QPixmapIconEngineEntry, Q_MOVABLE_TYPE); + +inline QPixmapIconEngineEntry::QPixmapIconEngineEntry(const QString &file, const QImage &image, QIcon::Mode m, QIcon::State s) + : fileName(file), size(image.size()), mode(m), state(s) +{ + pixmap.convertFromImage(image); + // Reset the devicePixelRatio. The pixmap may be loaded from a @2x file, + // but be used as a 1x pixmap by QIcon. + pixmap.setDevicePixelRatio(1.0); +} + +class Q_GUI_EXPORT QPixmapIconEngine : public QIconEngine { +public: + QPixmapIconEngine(); + QPixmapIconEngine(const QPixmapIconEngine &); + ~QPixmapIconEngine(); + void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + QPixmapIconEngineEntry *bestMatch(const QSize &size, QIcon::Mode mode, QIcon::State state, bool sizeOnly); + QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + + QString key() const Q_DECL_OVERRIDE; + QIconEngine *clone() const Q_DECL_OVERRIDE; + bool read(QDataStream &in) Q_DECL_OVERRIDE; + bool write(QDataStream &out) const Q_DECL_OVERRIDE; + void virtual_hook(int id, void *data) Q_DECL_OVERRIDE; + +private: + QPixmapIconEngineEntry *tryMatch(const QSize &size, QIcon::Mode mode, QIcon::State state); + QVector pixmaps; + + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &s, const QIcon &icon); + friend class QIconThemeEngine; +}; + +QT_END_NAMESPACE +#endif //QT_NO_ICON +#endif // QICON_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qiconloader_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qiconloader_p.h new file mode 100644 index 000000000..5f3a3ef94 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qiconloader_p.h @@ -0,0 +1,207 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QICONLOADER_P_H +#define QICONLOADER_P_H + +#include + +#ifndef QT_NO_ICON +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QIconLoader; + +struct QIconDirInfo +{ + enum Type { Fixed, Scalable, Threshold }; + QIconDirInfo(const QString &_path = QString()) : + path(_path), + size(0), + maxSize(0), + minSize(0), + threshold(0), + scale(1), + type(Threshold) {} + QString path; + short size; + short maxSize; + short minSize; + short threshold; + short scale; + Type type; +}; +Q_DECLARE_TYPEINFO(QIconDirInfo, Q_MOVABLE_TYPE); + +class QIconLoaderEngineEntry + { +public: + virtual ~QIconLoaderEngineEntry() {} + virtual QPixmap pixmap(const QSize &size, + QIcon::Mode mode, + QIcon::State state) = 0; + QString filename; + QIconDirInfo dir; +}; + +struct ScalableEntry : public QIconLoaderEngineEntry +{ + QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + QIcon svgIcon; +}; + +struct PixmapEntry : public QIconLoaderEngineEntry +{ + QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + QPixmap basePixmap; +}; + +typedef QList QThemeIconEntries; + +struct QThemeIconInfo +{ + QThemeIconEntries entries; + QString iconName; +}; + +class QIconLoaderEngine : public QIconEngine +{ +public: + QIconLoaderEngine(const QString& iconName = QString()); + ~QIconLoaderEngine(); + + void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + QIconEngine *clone() const Q_DECL_OVERRIDE; + bool read(QDataStream &in) Q_DECL_OVERRIDE; + bool write(QDataStream &out) const Q_DECL_OVERRIDE; + +private: + QString key() const Q_DECL_OVERRIDE; + bool hasIcon() const; + void ensureLoaded(); + void virtual_hook(int id, void *data) Q_DECL_OVERRIDE; + QIconLoaderEngineEntry *entryForSize(const QSize &size, int scale = 1); + + QIconLoaderEngine(const QIconLoaderEngine &other); + QThemeIconInfo m_info; + QString m_iconName; + uint m_key; + + friend class QIconLoader; +}; + +class QIconCacheGtkReader; + +class QIconTheme +{ +public: + QIconTheme(const QString &name); + QIconTheme() : m_valid(false) {} + QStringList parents() { return m_parents; } + QVector keyList() { return m_keyList; } + QStringList contentDirs() { return m_contentDirs; } + bool isValid() { return m_valid; } +private: + QStringList m_contentDirs; + QVector m_keyList; + QStringList m_parents; + bool m_valid; +public: + QVector> m_gtkCaches; +}; + +class Q_GUI_EXPORT QIconLoader +{ +public: + QIconLoader(); + QThemeIconInfo loadIcon(const QString &iconName) const; + uint themeKey() const { return m_themeKey; } + + QString themeName() const { return m_userTheme.isEmpty() ? m_systemTheme : m_userTheme; } + void setThemeName(const QString &themeName); + QIconTheme theme() { return themeList.value(themeName()); } + void setThemeSearchPath(const QStringList &searchPaths); + QStringList themeSearchPaths() const; + QIconDirInfo dirInfo(int dirindex); + static QIconLoader *instance(); + void updateSystemTheme(); + void invalidateKey() { m_themeKey++; } + void ensureInitialized(); + bool hasUserTheme() const { return !m_userTheme.isEmpty(); } + +private: + QThemeIconInfo findIconHelper(const QString &themeName, + const QString &iconName, + QStringList &visited) const; + uint m_themeKey; + bool m_supportsSvg; + bool m_initialized; + + mutable QString m_userTheme; + mutable QString m_systemTheme; + mutable QStringList m_iconDirs; + mutable QHash themeList; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_ICON + +#endif // QICONLOADER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qimage_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qimage_p.h new file mode 100644 index 000000000..775ab6d54 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qimage_p.h @@ -0,0 +1,220 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIMAGE_P_H +#define QIMAGE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class QImageWriter; + +struct Q_GUI_EXPORT QImageData { // internal image data + QImageData(); + ~QImageData(); + static QImageData *create(const QSize &size, QImage::Format format); + static QImageData *create(uchar *data, int w, int h, int bpl, QImage::Format format, bool readOnly, QImageCleanupFunction cleanupFunction = 0, void *cleanupInfo = 0); + + QAtomicInt ref; + + int width; + int height; + int depth; + int nbytes; // number of bytes data + qreal devicePixelRatio; + QVector colortable; + uchar *data; + QImage::Format format; + int bytes_per_line; + int ser_no; // serial number + int detach_no; + + qreal dpmx; // dots per meter X (or 0) + qreal dpmy; // dots per meter Y (or 0) + QPoint offset; // offset in pixels + + uint own_data : 1; + uint ro_data : 1; + uint has_alpha_clut : 1; + uint is_cached : 1; + uint is_locked : 1; + + QImageCleanupFunction cleanupFunction; + void* cleanupInfo; + + bool checkForAlphaPixels() const; + + // Convert the image in-place, minimizing memory reallocation + // Return false if the conversion cannot be done in-place. + bool convertInPlace(QImage::Format newFormat, Qt::ImageConversionFlags); + + QMap text; + + bool doImageIO(const QImage *image, QImageWriter* io, int quality) const; + + QPaintEngine *paintEngine; +}; + +typedef void (*Image_Converter)(QImageData *dest, const QImageData *src, Qt::ImageConversionFlags); +typedef bool (*InPlace_Image_Converter)(QImageData *data, Qt::ImageConversionFlags); + +extern Image_Converter qimage_converter_map[QImage::NImageFormats][QImage::NImageFormats]; +extern InPlace_Image_Converter qimage_inplace_converter_map[QImage::NImageFormats][QImage::NImageFormats]; + +void convert_generic(QImageData *dest, const QImageData *src, Qt::ImageConversionFlags); +bool convert_generic_inplace(QImageData *data, QImage::Format dst_format, Qt::ImageConversionFlags); + +void dither_to_Mono(QImageData *dst, const QImageData *src, Qt::ImageConversionFlags flags, bool fromalpha); + +const uchar *qt_get_bitflip_array(); +Q_GUI_EXPORT void qGamma_correct_back_to_linear_cs(QImage *image); + +#if defined(_M_ARM) // QTBUG-42038 +#pragma optimize("", off) +#endif +inline int qt_depthForFormat(QImage::Format format) +{ + int depth = 0; + switch(format) { + case QImage::Format_Invalid: + case QImage::NImageFormats: + Q_UNREACHABLE(); + case QImage::Format_Mono: + case QImage::Format_MonoLSB: + depth = 1; + break; + case QImage::Format_Indexed8: + case QImage::Format_Alpha8: + case QImage::Format_Grayscale8: + depth = 8; + break; + case QImage::Format_RGB32: + case QImage::Format_ARGB32: + case QImage::Format_ARGB32_Premultiplied: + case QImage::Format_RGBX8888: + case QImage::Format_RGBA8888: + case QImage::Format_RGBA8888_Premultiplied: + case QImage::Format_BGR30: + case QImage::Format_A2BGR30_Premultiplied: + case QImage::Format_RGB30: + case QImage::Format_A2RGB30_Premultiplied: + depth = 32; + break; + case QImage::Format_RGB555: + case QImage::Format_RGB16: + case QImage::Format_RGB444: + case QImage::Format_ARGB4444_Premultiplied: + depth = 16; + break; + case QImage::Format_RGB666: + case QImage::Format_ARGB6666_Premultiplied: + case QImage::Format_ARGB8565_Premultiplied: + case QImage::Format_ARGB8555_Premultiplied: + case QImage::Format_RGB888: + depth = 24; + break; + } + return depth; +} + +#if defined(_M_ARM) +#pragma optimize("", on) +#endif + +inline QImage::Format qt_alphaVersion(QImage::Format format) +{ + switch (format) { + case QImage::Format_RGB16: + return QImage::Format_ARGB8565_Premultiplied; + case QImage::Format_RGB555: + return QImage::Format_ARGB8555_Premultiplied; + case QImage::Format_RGB666: + return QImage::Format_ARGB6666_Premultiplied; + case QImage::Format_RGB444: + return QImage::Format_ARGB4444_Premultiplied; + case QImage::Format_RGBX8888: + return QImage::Format_RGBA8888_Premultiplied; + case QImage::Format_BGR30: + return QImage::Format_A2BGR30_Premultiplied; + case QImage::Format_RGB30: + return QImage::Format_A2RGB30_Premultiplied; + default: + break; + } + return QImage::Format_ARGB32_Premultiplied; +} + +inline QImage::Format qt_maybeAlphaVersionWithSameDepth(QImage::Format format) +{ + const QImage::Format toFormat = qt_alphaVersion(format); + return qt_depthForFormat(format) == qt_depthForFormat(toFormat) ? toFormat : format; +} + +inline QImage::Format qt_alphaVersionForPainting(QImage::Format format) +{ + QImage::Format toFormat = qt_alphaVersion(format); +#if defined(__ARM_NEON__) || defined(__SSE2__) + // If we are switching depth anyway and we have optimized ARGB32PM routines, upgrade to that. + if (qt_depthForFormat(format) != qt_depthForFormat(toFormat)) + toFormat = QImage::Format_ARGB32_Premultiplied; +#endif + return toFormat; +} + +Q_GUI_EXPORT QMap qt_getImageText(const QImage &image, const QString &description); +Q_GUI_EXPORT QMap qt_getImageTextFromDescription(const QString &description); + +QT_END_NAMESPACE + +#endif // QIMAGE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qimagepixmapcleanuphooks_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qimagepixmapcleanuphooks_p.h new file mode 100644 index 000000000..29144c665 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qimagepixmapcleanuphooks_p.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIMAGEPIXMAP_CLEANUPHOOKS_P_H +#define QIMAGEPIXMAP_CLEANUPHOOKS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +typedef void (*_qt_image_cleanup_hook_64)(qint64); +typedef void (*_qt_pixmap_cleanup_hook_pmd)(QPlatformPixmap*); + + +class QImagePixmapCleanupHooks; + +class Q_GUI_EXPORT QImagePixmapCleanupHooks +{ +public: + static QImagePixmapCleanupHooks *instance(); + + static void enableCleanupHooks(const QImage &image); + static void enableCleanupHooks(const QPixmap &pixmap); + static void enableCleanupHooks(QPlatformPixmap *handle); + + static bool isImageCached(const QImage &image); + static bool isPixmapCached(const QPixmap &pixmap); + + // Gets called when a pixmap data is about to be modified: + void addPlatformPixmapModificationHook(_qt_pixmap_cleanup_hook_pmd); + + // Gets called when a pixmap data is about to be destroyed: + void addPlatformPixmapDestructionHook(_qt_pixmap_cleanup_hook_pmd); + + // Gets called when an image is about to be modified or destroyed: + void addImageHook(_qt_image_cleanup_hook_64); + + void removePlatformPixmapModificationHook(_qt_pixmap_cleanup_hook_pmd); + void removePlatformPixmapDestructionHook(_qt_pixmap_cleanup_hook_pmd); + void removeImageHook(_qt_image_cleanup_hook_64); + + static void executePlatformPixmapModificationHooks(QPlatformPixmap*); + static void executePlatformPixmapDestructionHooks(QPlatformPixmap*); + static void executeImageHooks(qint64 key); + +private: + QList<_qt_image_cleanup_hook_64> imageHooks; + QList<_qt_pixmap_cleanup_hook_pmd> pixmapModificationHooks; + QList<_qt_pixmap_cleanup_hook_pmd> pixmapDestructionHooks; +}; + +QT_END_NAMESPACE + +#endif // QIMAGEPIXMAP_CLEANUPHOOKS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qimagescale_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qimagescale_p.h new file mode 100644 index 000000000..415623a57 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qimagescale_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QIMAGESCALE_P_H +#define QIMAGESCALE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +/* + This version accepts only supported formats. +*/ +QImage qSmoothScaleImage(const QImage &img, int w, int h); + +namespace QImageScale { + struct QImageScaleInfo { + int *xpoints; + const unsigned int **ypoints; + int *xapoints, *yapoints; + int xup_yup; + }; +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputcontrol_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputcontrol_p.h new file mode 100644 index 000000000..b4c1ca8f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputcontrol_p.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QINPUTCONTROL_P_H +#define QINPUTCONTROL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QKeyEvent; +class Q_GUI_EXPORT QInputControl : public QObject +{ + Q_OBJECT +public: + enum Type { + LineEdit, + TextEdit + }; + + explicit QInputControl(Type type, QObject *parent = nullptr); + + bool isAcceptableInput(const QKeyEvent *event) const; + static bool isCommonTextEditShortcut(const QKeyEvent *ke); + +protected: + explicit QInputControl(Type type, QObjectPrivate &dd, QObject *parent = nullptr); + +private: + const Type m_type; +}; + +QT_END_NAMESPACE + +#endif // QINPUTCONTROL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputdevicemanager_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputdevicemanager_p.h new file mode 100644 index 000000000..ddf1e6bef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputdevicemanager_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QINPUTDEVICEMANAGER_P_H +#define QINPUTDEVICEMANAGER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QInputDeviceManagerPrivate; + +class Q_GUI_EXPORT QInputDeviceManager : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QInputDeviceManager) + +public: + enum DeviceType { + DeviceTypeUnknown, + DeviceTypePointer, + DeviceTypeKeyboard, + DeviceTypeTouch, + DeviceTypeTablet + }; + + QInputDeviceManager(QObject *parent = 0); + + int deviceCount(DeviceType type) const; + + void setCursorPos(const QPoint &pos); + + Qt::KeyboardModifiers keyboardModifiers() const; + void setKeyboardModifiers(Qt::KeyboardModifiers modsBeforeEvent, int key); + +signals: + void deviceListChanged(QInputDeviceManager::DeviceType type); + void cursorPositionChangeRequested(const QPoint &pos); +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QInputDeviceManager::DeviceType) + +#endif // QINPUTDEVICEMANAGER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputdevicemanager_p_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputdevicemanager_p_p.h new file mode 100644 index 000000000..0a91252fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputdevicemanager_p_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QINPUTDEVICEMANAGER_P_P_H +#define QINPUTDEVICEMANAGER_P_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include "qinputdevicemanager_p.h" + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QInputDeviceManagerPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QInputDeviceManager) + +public: + static QInputDeviceManagerPrivate *get(QInputDeviceManager *mgr) { return mgr->d_func(); } + + int deviceCount(QInputDeviceManager::DeviceType type) const; + void setDeviceCount(QInputDeviceManager::DeviceType type, int count); + + QMap m_deviceCount; + + Qt::KeyboardModifiers keyboardModifiers; +}; + +QT_END_NAMESPACE + +#endif // QINPUTDEVICEMANAGER_P_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputmethod_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputmethod_p.h new file mode 100644 index 000000000..81723bbe3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qinputmethod_p.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QINPUTMETHOD_P_H +#define QINPUTMETHOD_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QInputMethodPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QInputMethod) + +public: + inline QInputMethodPrivate() : testContext(0) + {} + QPlatformInputContext *platformInputContext() const + { + return testContext ? testContext : QGuiApplicationPrivate::platformIntegration()->inputContext(); + } + static inline QInputMethodPrivate *get(QInputMethod *inputMethod) + { + return inputMethod->d_func(); + } + + void _q_connectFocusObject(); + void _q_checkFocusObject(QObject *object); + bool objectAcceptsInputMethod(QObject *object); + + QTransform inputItemTransform; + QRectF inputRectangle; + QPlatformInputContext *testContext; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qkeymapper_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qkeymapper_p.h new file mode 100644 index 000000000..aeec7b741 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qkeymapper_p.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QKEYMAPPER_P_H +#define QKEYMAPPER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include + + +QT_BEGIN_NAMESPACE + +class QKeyMapperPrivate; +class Q_GUI_EXPORT QKeyMapper : public QObject +{ + Q_OBJECT +public: + explicit QKeyMapper(); + ~QKeyMapper(); + + static QKeyMapper *instance(); + static void changeKeyboard(); + static QList possibleKeys(QKeyEvent *e); + +private: + friend QKeyMapperPrivate *qt_keymapper_private(); + Q_DECLARE_PRIVATE(QKeyMapper) + Q_DISABLE_COPY(QKeyMapper) +}; + +struct KeyboardLayoutItem; +class QKeyEvent; + +class QKeyMapperPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QKeyMapper) +public: + QKeyMapperPrivate(); + ~QKeyMapperPrivate(); + + void clearMappings(); + QList possibleKeys(QKeyEvent *e); + + QLocale keyboardInputLocale; + Qt::LayoutDirection keyboardInputDirection; +}; + +QKeyMapperPrivate *qt_keymapper_private(); // from qkeymapper.cpp + +QT_END_NAMESPACE + +#endif // QKEYMAPPER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qkeysequence_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qkeysequence_p.h new file mode 100644 index 000000000..8ba86c31b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qkeysequence_p.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QKEYSEQUENCE_P_H +#define QKEYSEQUENCE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qkeysequence.h" + +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SHORTCUT +struct QKeyBinding +{ + QKeySequence::StandardKey standardKey; + uchar priority; + uint shortcut; + uint platform; +}; + +class QKeySequencePrivate +{ +public: + enum { MaxKeyCount = 4 }; // also used in QKeySequenceEdit + inline QKeySequencePrivate() : ref(1) + { + std::fill_n(key, uint(MaxKeyCount), 0); + } + inline QKeySequencePrivate(const QKeySequencePrivate ©) : ref(1) + { + std::copy(copy.key, copy.key + MaxKeyCount, + QT_MAKE_CHECKED_ARRAY_ITERATOR(key, MaxKeyCount)); + } + QAtomicInt ref; + int key[MaxKeyCount]; + static QString encodeString(int key, QKeySequence::SequenceFormat format); + // used in dbusmenu + Q_GUI_EXPORT static QString keyName(int key, QKeySequence::SequenceFormat format); + static int decodeString(const QString &keyStr, QKeySequence::SequenceFormat format); +}; +#endif // QT_NO_SHORTCUT + +QT_END_NAMESPACE + +#endif //QKEYSEQUENCE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qlayoutpolicy_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qlayoutpolicy_p.h new file mode 100644 index 000000000..a729a57e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qlayoutpolicy_p.h @@ -0,0 +1,195 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Layouts 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLAYOUTPOLICY_H +#define QLAYOUTPOLICY_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#ifndef QT_NO_DATASTREAM +# include +#endif + +QT_BEGIN_NAMESPACE + + +class QVariant; + +class Q_GUI_EXPORT QLayoutPolicy +{ + Q_ENUMS(Policy) + +public: + enum PolicyFlag { + GrowFlag = 1, + ExpandFlag = 2, + ShrinkFlag = 4, + IgnoreFlag = 8 + }; + + enum Policy { + Fixed = 0, + Minimum = GrowFlag, + Maximum = ShrinkFlag, + Preferred = GrowFlag | ShrinkFlag, + MinimumExpanding = GrowFlag | ExpandFlag, + Expanding = GrowFlag | ShrinkFlag | ExpandFlag, + Ignored = ShrinkFlag | GrowFlag | IgnoreFlag + }; + + enum ControlType { + DefaultType = 0x00000001, + ButtonBox = 0x00000002, + CheckBox = 0x00000004, + ComboBox = 0x00000008, + Frame = 0x00000010, + GroupBox = 0x00000020, + Label = 0x00000040, + Line = 0x00000080, + LineEdit = 0x00000100, + PushButton = 0x00000200, + RadioButton = 0x00000400, + Slider = 0x00000800, + SpinBox = 0x00001000, + TabWidget = 0x00002000, + ToolButton = 0x00004000 + }; + Q_DECLARE_FLAGS(ControlTypes, ControlType) + + QLayoutPolicy() : data(0) { } + + QLayoutPolicy(Policy horizontal, Policy vertical, ControlType type = DefaultType) + : data(0) { + bits.horPolicy = horizontal; + bits.verPolicy = vertical; + setControlType(type); + } + Policy horizontalPolicy() const { return static_cast(bits.horPolicy); } + Policy verticalPolicy() const { return static_cast(bits.verPolicy); } + ControlType controlType() const; + + void setHorizontalPolicy(Policy d) { bits.horPolicy = d; } + void setVerticalPolicy(Policy d) { bits.verPolicy = d; } + void setControlType(ControlType type); + + Qt::Orientations expandingDirections() const { + Qt::Orientations result; + if (verticalPolicy() & ExpandFlag) + result |= Qt::Vertical; + if (horizontalPolicy() & ExpandFlag) + result |= Qt::Horizontal; + return result; + } + + void setHeightForWidth(bool b) { bits.hfw = b; } + bool hasHeightForWidth() const { return bits.hfw; } + void setWidthForHeight(bool b) { bits.wfh = b; } + bool hasWidthForHeight() const { return bits.wfh; } + + bool operator==(const QLayoutPolicy& s) const { return data == s.data; } + bool operator!=(const QLayoutPolicy& s) const { return data != s.data; } + + int horizontalStretch() const { return static_cast(bits.horStretch); } + int verticalStretch() const { return static_cast(bits.verStretch); } + void setHorizontalStretch(int stretchFactor) { bits.horStretch = static_cast(qBound(0, stretchFactor, 255)); } + void setVerticalStretch(int stretchFactor) { bits.verStretch = static_cast(qBound(0, stretchFactor, 255)); } + + void transpose(); + + +private: +#ifndef QT_NO_DATASTREAM + friend QDataStream &operator<<(QDataStream &, const QLayoutPolicy &); + friend QDataStream &operator>>(QDataStream &, QLayoutPolicy &); +#endif + QLayoutPolicy(int i) : data(i) { } + + union { + struct { + quint32 horStretch : 8; + quint32 verStretch : 8; + quint32 horPolicy : 4; + quint32 verPolicy : 4; + quint32 ctype : 5; + quint32 hfw : 1; + quint32 wfh : 1; + quint32 padding : 1; // feel free to use + } bits; + quint32 data; + }; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QLayoutPolicy::ControlTypes) + +#ifndef QT_NO_DATASTREAM +QDataStream &operator<<(QDataStream &, const QLayoutPolicy &); +QDataStream &operator>>(QDataStream &, QLayoutPolicy &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +QDebug operator<<(QDebug dbg, const QLayoutPolicy &); +#endif + +inline void QLayoutPolicy::transpose() { + Policy hData = horizontalPolicy(); + Policy vData = verticalPolicy(); + int hStretch = horizontalStretch(); + int vStretch = verticalStretch(); + setHorizontalPolicy(vData); + setVerticalPolicy(hData); + setHorizontalStretch(vStretch); + setVerticalStretch(hStretch); +} + +QT_END_NAMESPACE + +#endif // QLAYOUTPOLICY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qmath_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qmath_p.h new file mode 100644 index 000000000..7cc361211 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qmath_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMATH_P_H +#define QMATH_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +static const qreal Q_PI = qreal(M_PI); // pi +static const qreal Q_MM_PER_INCH = 25.4; + +QT_END_NAMESPACE + +#endif // QMATH_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qmemrotate_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qmemrotate_p.h new file mode 100644 index 000000000..9bc3fd101 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qmemrotate_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMEMROTATE_P_H +#define QMEMROTATE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "private/qdrawhelper_p.h" + +QT_BEGIN_NAMESPACE + +#define QT_DECL_MEMROTATE(type) \ + void Q_GUI_EXPORT qt_memrotate90(const type*, int, int, int, type*, int); \ + void Q_GUI_EXPORT qt_memrotate180(const type*, int, int, int, type*, int); \ + void Q_GUI_EXPORT qt_memrotate270(const type*, int, int, int, type*, int) + +QT_DECL_MEMROTATE(quint32); +QT_DECL_MEMROTATE(quint16); +QT_DECL_MEMROTATE(quint24); +QT_DECL_MEMROTATE(quint8); + +#undef QT_DECL_MEMROTATE + +QT_END_NAMESPACE + +#endif // QMEMROTATE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengl2pexvertexarray_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengl2pexvertexarray_p.h new file mode 100644 index 000000000..5dc060ff3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengl2pexvertexarray_p.h @@ -0,0 +1,168 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// 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. +// + +#ifndef QOPENGL2PEXVERTEXARRAY_P_H +#define QOPENGL2PEXVERTEXARRAY_P_H + +#include +#include + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLPoint +{ +public: + QOpenGLPoint(GLfloat new_x, GLfloat new_y) : + x(new_x), y(new_y) {}; + + QOpenGLPoint(const QPointF &p) : + x(p.x()), y(p.y()) {}; + + QOpenGLPoint(const QPointF* p) : + x(p->x()), y(p->y()) {}; + + GLfloat x; + GLfloat y; + + operator QPointF() {return QPointF(x,y);} + operator QPointF() const {return QPointF(x,y);} +}; + +struct QOpenGLRect +{ + QOpenGLRect(const QRectF &r) + : left(r.left()), top(r.top()), right(r.right()), bottom(r.bottom()) {} + + QOpenGLRect(GLfloat l, GLfloat t, GLfloat r, GLfloat b) + : left(l), top(t), right(r), bottom(b) {} + + GLfloat left; + GLfloat top; + GLfloat right; + GLfloat bottom; + + operator QRectF() const {return QRectF(left, top, right-left, bottom-top);} +}; + +class QOpenGL2PEXVertexArray +{ +public: + QOpenGL2PEXVertexArray() : + vertexArray(0), vertexArrayStops(0), + 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); + } + + inline void addQuad(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(left, bottom) + << QOpenGLPoint(right, bottom); + + } + + inline void addVertex(const GLfloat x, const GLfloat y) + { + vertexArray.add(QOpenGLPoint(x, y)); + } + + void addPath(const QVectorPath &path, GLfloat curveInverseScale, bool outline = true); + void clear(); + + QOpenGLPoint* data() {return vertexArray.data();} + int *stops() const { return vertexArrayStops.data(); } + int stopCount() const { return vertexArrayStops.size(); } + QOpenGLRect boundingRect() const; + + int vertexCount() const { return vertexArray.size(); } + + void lineToArray(const GLfloat x, const GLfloat y); + +private: + QDataBuffer vertexArray; + QDataBuffer vertexArrayStops; + + GLfloat maxX; + GLfloat maxY; + GLfloat minX; + GLfloat minY; + bool boundingRectDirty; + void addClosingLine(int index); + void addCentroid(const QVectorPath &path, int subPathIndex); +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengl_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengl_p.h new file mode 100644 index 000000000..cda062eac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengl_p.h @@ -0,0 +1,143 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGL_P_H +#define QOPENGL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QJsonDocument; + +class Q_GUI_EXPORT QOpenGLExtensionMatcher +{ +public: + QOpenGLExtensionMatcher(); + + bool match(const QByteArray &extension) const + { + return m_extensions.contains(extension); + } + + QSet extensions() const { return m_extensions; } + +private: + QSet m_extensions; +}; + +class Q_GUI_EXPORT QOpenGLConfig +{ +public: + struct Q_GUI_EXPORT Gpu { + Gpu() : vendorId(0), deviceId(0) {} + bool isValid() const { return deviceId || !glVendor.isEmpty(); } + bool equals(const Gpu &other) const { + return vendorId == other.vendorId && deviceId == other.deviceId && driverVersion == other.driverVersion + && driverDescription == other.driverDescription && glVendor == other.glVendor; + } + + uint vendorId; + uint deviceId; + QVersionNumber driverVersion; + QByteArray driverDescription; + QByteArray glVendor; + + static Gpu fromDevice(uint vendorId, uint deviceId, QVersionNumber driverVersion, const QByteArray &driverDescription) { + Gpu gpu; + gpu.vendorId = vendorId; + gpu.deviceId = deviceId; + gpu.driverVersion = driverVersion; + gpu.driverDescription = driverDescription; + return gpu; + } + + static Gpu fromGLVendor(const QByteArray &glVendor) { + Gpu gpu; + gpu.glVendor = glVendor; + return gpu; + } + + static Gpu fromContext(); + }; + + static QSet gpuFeatures(const Gpu &gpu, + const QString &osName, const QVersionNumber &kernelVersion, const QString &osVersion, + const QJsonDocument &doc); + static QSet gpuFeatures(const Gpu &gpu, + const QString &osName, const QVersionNumber &kernelVersion, const QString &osVersion, + const QString &fileName); + static QSet gpuFeatures(const Gpu &gpu, const QJsonDocument &doc); + static QSet gpuFeatures(const Gpu &gpu, const QString &fileName); +}; + +inline bool operator==(const QOpenGLConfig::Gpu &a, const QOpenGLConfig::Gpu &b) +{ + return a.equals(b); +} + +inline bool operator!=(const QOpenGLConfig::Gpu &a, const QOpenGLConfig::Gpu &b) +{ + return !a.equals(b); +} + +inline uint qHash(const QOpenGLConfig::Gpu &gpu) +{ + return qHash(gpu.vendorId) + qHash(gpu.deviceId) + qHash(gpu.driverVersion); +} + +QT_END_NAMESPACE + +#endif // QOPENGL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglcontext_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglcontext_p.h new file mode 100644 index 000000000..64bf55bee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglcontext_p.h @@ -0,0 +1,298 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLCONTEXT_P_H +#define QOPENGLCONTEXT_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 + +#ifndef QT_NO_OPENGL + +#include "qopengl.h" +#include "qopenglcontext.h" +#include +#include + +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class QOpenGLFunctions; +class QOpenGLContext; +class QOpenGLFramebufferObject; +class QOpenGLMultiGroupSharedResource; + +class Q_GUI_EXPORT QOpenGLSharedResource +{ +public: + QOpenGLSharedResource(QOpenGLContextGroup *group); + virtual ~QOpenGLSharedResource() = 0; + + QOpenGLContextGroup *group() const { return m_group; } + + // schedule the resource for deletion at an appropriate time + void free(); + +protected: + // the resource's share group no longer exists, invalidate the resource + virtual void invalidateResource() = 0; + + // a valid context in the group is current, free the resource + virtual void freeResource(QOpenGLContext *context) = 0; + +private: + QOpenGLContextGroup *m_group; + + friend class QOpenGLContextGroup; + friend class QOpenGLContextGroupPrivate; + friend class QOpenGLMultiGroupSharedResource; + + Q_DISABLE_COPY(QOpenGLSharedResource) +}; + +class Q_GUI_EXPORT QOpenGLSharedResourceGuard : public QOpenGLSharedResource +{ +public: + typedef void (*FreeResourceFunc)(QOpenGLFunctions *functions, GLuint id); + QOpenGLSharedResourceGuard(QOpenGLContext *context, GLuint id, FreeResourceFunc func) + : QOpenGLSharedResource(context->shareGroup()) + , m_id(id) + , m_func(func) + { + } + + GLuint id() const { return m_id; } + +protected: + void invalidateResource() Q_DECL_OVERRIDE + { + m_id = 0; + } + + void freeResource(QOpenGLContext *context) Q_DECL_OVERRIDE; + +private: + GLuint m_id; + FreeResourceFunc m_func; +}; + +class Q_GUI_EXPORT QOpenGLContextGroupPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QOpenGLContextGroup) +public: + QOpenGLContextGroupPrivate() + : m_context(0) + , m_mutex(QMutex::Recursive) + , m_refs(0) + { + } + + void addContext(QOpenGLContext *ctx); + void removeContext(QOpenGLContext *ctx); + + void cleanup(); + + void deletePendingResources(QOpenGLContext *ctx); + + QOpenGLContext *m_context; + + QList m_shares; + QMutex m_mutex; + + QHash m_resources; + QAtomicInt m_refs; + + QList m_sharedResources; + QList m_pendingDeletion; +}; + +class Q_GUI_EXPORT QOpenGLMultiGroupSharedResource +{ +public: + QOpenGLMultiGroupSharedResource(); + ~QOpenGLMultiGroupSharedResource(); + + void insert(QOpenGLContext *context, QOpenGLSharedResource *value); + void cleanup(QOpenGLContextGroup *group, QOpenGLSharedResource *value); + + QOpenGLSharedResource *value(QOpenGLContext *context); + + QList resources() const; + + template + T *value(QOpenGLContext *context) { + QOpenGLContextGroup *group = context->shareGroup(); + // Have to use our own mutex here, not the group's, since + // m_groups has to be protected too against any concurrent access. + QMutexLocker locker(&m_mutex); + T *resource = static_cast(group->d_func()->m_resources.value(this, 0)); + if (!resource) { + resource = new T(context); + insert(context, resource); + } + return resource; + } + +private: + QAtomicInt active; + QList m_groups; + QMutex m_mutex; +}; + +class QPaintEngineEx; +class QOpenGLFunctions; +class QOpenGLTextureHelper; + +class Q_GUI_EXPORT QOpenGLContextPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QOpenGLContext) +public: + QOpenGLContextPrivate() + : qGLContextHandle(0) + , qGLContextDeleteFunction(0) + , platformGLContext(0) + , shareContext(0) + , shareGroup(0) + , screen(0) + , surface(0) + , functions(0) + , textureFunctions(0) + , max_texture_size(-1) + , workaround_brokenFBOReadBack(false) + , workaround_brokenTexSubImage(false) + , workaround_missingPrecisionQualifiers(false) + , active_engine(0) + , qgl_current_fbo_invalid(false) + , qgl_current_fbo(Q_NULLPTR) + , defaultFboRedirect(0) + { + requestedFormat = QSurfaceFormat::defaultFormat(); + } + + virtual ~QOpenGLContextPrivate() + { + //do not delete the QOpenGLContext handle here as it is deleted in + //QWidgetPrivate::deleteTLSysExtra() + } + + mutable QHash versionFunctions; + mutable QOpenGLVersionFunctionsStorage versionFunctionsStorage; + mutable QSet externalVersionFunctions; + + void *qGLContextHandle; + void (*qGLContextDeleteFunction)(void *handle); + + QSurfaceFormat requestedFormat; + QPlatformOpenGLContext *platformGLContext; + QOpenGLContext *shareContext; + QOpenGLContextGroup *shareGroup; + QScreen *screen; + QSurface *surface; + QOpenGLFunctions *functions; + mutable QSet extensionNames; + QOpenGLTextureHelper* textureFunctions; + + GLint max_texture_size; + + bool workaround_brokenFBOReadBack; + bool workaround_brokenTexSubImage; + bool workaround_missingPrecisionQualifiers; + + QPaintEngineEx *active_engine; + + bool qgl_current_fbo_invalid; + + // Set and unset in QOpenGLFramebufferObject::bind()/unbind(). + // (Only meaningful for QOGLFBO since an FBO might be bound by other means) + // Saves us from querying the driver for the current FBO in most paths. + QOpenGLFramebufferObject *qgl_current_fbo; + + QVariant nativeHandle; + GLuint defaultFboRedirect; + + static QOpenGLContext *setCurrentContext(QOpenGLContext *context); + + int maxTextureSize(); + + static QOpenGLContextPrivate *get(QOpenGLContext *context) + { + return context ? context->d_func() : Q_NULLPTR; + } + +#if !defined(QT_NO_DEBUG) + static bool toggleMakeCurrentTracker(QOpenGLContext *context, bool value) + { + QMutexLocker locker(&makeCurrentTrackerMutex); + bool old = makeCurrentTracker.value(context, false); + makeCurrentTracker.insert(context, value); + return old; + } + static void cleanMakeCurrentTracker(QOpenGLContext *context) + { + QMutexLocker locker(&makeCurrentTrackerMutex); + makeCurrentTracker.remove(context); + } + static QHash makeCurrentTracker; + static QMutex makeCurrentTrackerMutex; +#endif + + void _q_screenDestroyed(QObject *object); +}; + +Q_GUI_EXPORT void qt_gl_set_global_share_context(QOpenGLContext *context); +Q_GUI_EXPORT QOpenGLContext *qt_gl_global_share_context(); + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL +#endif // QOPENGLCONTEXT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglcustomshaderstage_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglcustomshaderstage_p.h new file mode 100644 index 000000000..f4a71af88 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglcustomshaderstage_p.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGL_CUSTOM_SHADER_STAGE_H +#define QOPENGL_CUSTOM_SHADER_STAGE_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + + +class QPainter; +class QOpenGLCustomShaderStagePrivate; +class Q_GUI_EXPORT QOpenGLCustomShaderStage +{ + Q_DECLARE_PRIVATE(QOpenGLCustomShaderStage) +public: + QOpenGLCustomShaderStage(); + virtual ~QOpenGLCustomShaderStage(); + virtual void setUniforms(QOpenGLShaderProgram*) {} + + void setUniformsDirty(); + + bool setOnPainter(QPainter*); + void removeFromPainter(QPainter*); + QByteArray source() const; + + void setInactive(); +protected: + void setSource(const QByteArray&); + +private: + QOpenGLCustomShaderStagePrivate* d_ptr; + + Q_DISABLE_COPY(QOpenGLCustomShaderStage) +}; + + +QT_END_NAMESPACE + + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglengineshadermanager_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglengineshadermanager_p.h new file mode 100644 index 000000000..377501457 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglengineshadermanager_p.h @@ -0,0 +1,511 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// 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. +// + +/* + VERTEX SHADERS + ============== + + Vertex shaders are specified as multiple (partial) shaders. On desktop, + this works fine. On ES, QOpenGLShader & QOpenGLShaderProgram will make partial + shaders work by concatenating the source in each QOpenGLShader and compiling + it as a single shader. This is abstracted nicely by QOpenGLShaderProgram and + the GL2 engine doesn't need to worry about it. + + Generally, there's two vertex shader objects. The position shaders are + the ones which set gl_Position. There's also two "main" vertex shaders, + one which just calls the position shader and another which also passes + through some texture coordinates from a vertex attribute array to a + varying. These texture coordinates are used for mask position in text + rendering and for the source coordinates in drawImage/drawPixmap. There's + also a "Simple" vertex shader for rendering a solid colour (used to render + into the stencil buffer where the actual colour value is discarded). + + The position shaders for brushes look scary. This is because many of the + calculations which logically belong in the fragment shader have been moved + into the vertex shader to improve performance. This is why the position + calculation is in a separate shader. Not only does it calculate the + position, but it also calculates some data to be passed to the fragment + shader as a varying. It is optimal to move as much of the calculation as + possible into the vertex shader as this is executed less often. + + The varyings passed to the fragment shaders are interpolated (which is + cheap). Unfortunately, GL will apply perspective correction to the + interpolation calusing errors. To get around this, the vertex shader must + apply perspective correction itself and set the w-value of gl_Position to + zero. That way, GL will be tricked into thinking it doesn't need to apply a + perspective correction and use linear interpolation instead (which is what + we want). Of course, if the brush transform is affeine, no perspective + correction is needed and a simpler vertex shader can be used instead. + + So there are the following "main" vertex shaders: + qopenglslMainVertexShader + qopenglslMainWithTexCoordsVertexShader + + And the following position vertex shaders: + qopenglslPositionOnlyVertexShader + qopenglslPositionWithTextureBrushVertexShader + qopenglslPositionWithPatternBrushVertexShader + qopenglslPositionWithLinearGradientBrushVertexShader + qopenglslPositionWithRadialGradientBrushVertexShader + qopenglslPositionWithConicalGradientBrushVertexShader + qopenglslAffinePositionWithTextureBrushVertexShader + qopenglslAffinePositionWithPatternBrushVertexShader + qopenglslAffinePositionWithLinearGradientBrushVertexShader + qopenglslAffinePositionWithRadialGradientBrushVertexShader + qopenglslAffinePositionWithConicalGradientBrushVertexShader + + Leading to 23 possible vertex shaders + + + FRAGMENT SHADERS + ================ + + Fragment shaders are also specified as multiple (partial) shaders. The + different fragment shaders represent the different stages in Qt's fragment + pipeline. There are 1-3 stages in this pipeline: First stage is to get the + fragment's colour value. The next stage is to get the fragment's mask value + (coverage value for anti-aliasing) and the final stage is to blend the + incoming fragment with the background (for composition modes not supported + by GL). + + Of these, the first stage will always be present. If Qt doesn't need to + apply anti-aliasing (because it's off or handled by multisampling) then + the coverage value doesn't need to be applied. (Note: There are two types + of mask, one for regular anti-aliasing and one for sub-pixel anti- + aliasing.) If the composition mode is one which GL supports natively then + the blending stage doesn't need to be applied. + + As eash stage can have multiple implementations, they are abstracted as + GLSL function calls with the following signatures: + + Brushes & image drawing are implementations of "qcolorp vec4 srcPixel()": + qopenglslImageSrcFragShader + qopenglslImageSrcWithPatternFragShader + qopenglslNonPremultipliedImageSrcFragShader + qopenglslSolidBrushSrcFragShader + qopenglslTextureBrushSrcFragShader + qopenglslTextureBrushWithPatternFragShader + qopenglslPatternBrushSrcFragShader + qopenglslLinearGradientBrushSrcFragShader + qopenglslRadialGradientBrushSrcFragShader + qopenglslConicalGradientBrushSrcFragShader + NOTE: It is assumed the colour returned by srcPixel() is pre-multiplied + + Masks are implementations of "qcolorp vec4 applyMask(qcolorp vec4 src)": + qopenglslMaskFragmentShader + qopenglslRgbMaskFragmentShaderPass1 + qopenglslRgbMaskFragmentShaderPass2 + qopenglslRgbMaskWithGammaFragmentShader + + Composition modes are "qcolorp vec4 compose(qcolorp vec4 src)": + qopenglslColorBurnCompositionModeFragmentShader + qopenglslColorDodgeCompositionModeFragmentShader + qopenglslDarkenCompositionModeFragmentShader + qopenglslDifferenceCompositionModeFragmentShader + qopenglslExclusionCompositionModeFragmentShader + qopenglslHardLightCompositionModeFragmentShader + qopenglslLightenCompositionModeFragmentShader + qopenglslMultiplyCompositionModeFragmentShader + qopenglslOverlayCompositionModeFragmentShader + qopenglslScreenCompositionModeFragmentShader + qopenglslSoftLightCompositionModeFragmentShader + + + Note: In the future, some GLSL compilers will support an extension allowing + a new 'color' precision specifier. To support this, qcolorp is used for + all color components so it can be defined to colorp or lowp depending upon + the implementation. + + So there are differnt frament shader main functions, depending on the + number & type of pipelines the fragment needs to go through. + + The choice of which main() fragment shader string to use depends on: + - Use of global opacity + - Brush style (some brushes apply opacity themselves) + - Use & type of mask (TODO: Need to support high quality anti-aliasing & text) + - Use of non-GL Composition mode + + Leading to the following fragment shader main functions: + gl_FragColor = compose(applyMask(srcPixel()*globalOpacity)); + gl_FragColor = compose(applyMask(srcPixel())); + gl_FragColor = applyMask(srcPixel()*globalOpacity); + gl_FragColor = applyMask(srcPixel()); + gl_FragColor = compose(srcPixel()*globalOpacity); + gl_FragColor = compose(srcPixel()); + gl_FragColor = srcPixel()*globalOpacity; + gl_FragColor = srcPixel(); + + Called: + qopenglslMainFragmentShader_CMO + qopenglslMainFragmentShader_CM + qopenglslMainFragmentShader_MO + qopenglslMainFragmentShader_M + qopenglslMainFragmentShader_CO + qopenglslMainFragmentShader_C + qopenglslMainFragmentShader_O + qopenglslMainFragmentShader + + Where: + M = Mask + C = Composition + O = Global Opacity + + + CUSTOM SHADER CODE + ================== + + The use of custom shader code is supported by the engine for drawImage and + drawPixmap calls. This is implemented via hooks in the fragment pipeline. + + The custom shader is passed to the engine as a partial fragment shader + (QOpenGLCustomShaderStage). The shader will implement a pre-defined method name + which Qt's fragment pipeline will call: + + lowp vec4 customShader(lowp sampler2d imageTexture, highp vec2 textureCoords) + + The provided src and srcCoords parameters can be used to sample from the + source image. + + Transformations, clipping, opacity, and composition modes set using QPainter + will be respected when using the custom shader hook. +*/ + +#ifndef QOPENGLENGINE_SHADER_MANAGER_H +#define QOPENGLENGINE_SHADER_MANAGER_H + +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + + + +/* +struct QOpenGLEngineCachedShaderProg +{ + QOpenGLEngineCachedShaderProg(QOpenGLEngineShaderManager::ShaderName vertexMain, + QOpenGLEngineShaderManager::ShaderName vertexPosition, + QOpenGLEngineShaderManager::ShaderName fragMain, + QOpenGLEngineShaderManager::ShaderName pixelSrc, + QOpenGLEngineShaderManager::ShaderName mask, + QOpenGLEngineShaderManager::ShaderName composition); + + int cacheKey; + QOpenGLShaderProgram* program; +} +*/ + +static const GLuint QT_VERTEX_COORDS_ATTR = 0; +static const GLuint QT_TEXTURE_COORDS_ATTR = 1; +static const GLuint QT_OPACITY_ATTR = 2; +static const GLuint QT_PMV_MATRIX_1_ATTR = 3; +static const GLuint QT_PMV_MATRIX_2_ATTR = 4; +static const GLuint QT_PMV_MATRIX_3_ATTR = 5; + +class QOpenGLEngineShaderProg; + +class Q_GUI_EXPORT QOpenGLEngineSharedShaders +{ + Q_GADGET +public: + + enum SnippetName { + MainVertexShader, + MainWithTexCoordsVertexShader, + MainWithTexCoordsAndOpacityVertexShader, + + // UntransformedPositionVertexShader must be first in the list: + UntransformedPositionVertexShader, + PositionOnlyVertexShader, + ComplexGeometryPositionOnlyVertexShader, + PositionWithPatternBrushVertexShader, + PositionWithLinearGradientBrushVertexShader, + PositionWithConicalGradientBrushVertexShader, + PositionWithRadialGradientBrushVertexShader, + PositionWithTextureBrushVertexShader, + AffinePositionWithPatternBrushVertexShader, + AffinePositionWithLinearGradientBrushVertexShader, + AffinePositionWithConicalGradientBrushVertexShader, + AffinePositionWithRadialGradientBrushVertexShader, + AffinePositionWithTextureBrushVertexShader, + + // MainFragmentShader_CMO must be first in the list: + MainFragmentShader_CMO, + MainFragmentShader_CM, + MainFragmentShader_MO, + MainFragmentShader_M, + MainFragmentShader_CO, + MainFragmentShader_C, + MainFragmentShader_O, + MainFragmentShader, + MainFragmentShader_ImageArrays, + + // ImageSrcFragmentShader must be first in the list:: + ImageSrcFragmentShader, + ImageSrcWithPatternFragmentShader, + NonPremultipliedImageSrcFragmentShader, + GrayscaleImageSrcFragmentShader, + AlphaImageSrcFragmentShader, + CustomImageSrcFragmentShader, + SolidBrushSrcFragmentShader, + TextureBrushSrcFragmentShader, + TextureBrushSrcWithPatternFragmentShader, + PatternBrushSrcFragmentShader, + LinearGradientBrushSrcFragmentShader, + RadialGradientBrushSrcFragmentShader, + ConicalGradientBrushSrcFragmentShader, + ShockingPinkSrcFragmentShader, + + // NoMaskFragmentShader must be first in the list: + NoMaskFragmentShader, + MaskFragmentShader, + RgbMaskFragmentShaderPass1, + RgbMaskFragmentShaderPass2, + RgbMaskWithGammaFragmentShader, + + // NoCompositionModeFragmentShader must be first in the list: + NoCompositionModeFragmentShader, + MultiplyCompositionModeFragmentShader, + ScreenCompositionModeFragmentShader, + OverlayCompositionModeFragmentShader, + DarkenCompositionModeFragmentShader, + LightenCompositionModeFragmentShader, + ColorDodgeCompositionModeFragmentShader, + ColorBurnCompositionModeFragmentShader, + HardLightCompositionModeFragmentShader, + SoftLightCompositionModeFragmentShader, + DifferenceCompositionModeFragmentShader, + ExclusionCompositionModeFragmentShader, + + TotalSnippetCount, InvalidSnippetName + }; +#if defined (QT_DEBUG) + Q_ENUM(SnippetName) + static QByteArray snippetNameStr(SnippetName snippetName); +#endif + +/* + // These allow the ShaderName enum to be used as a cache key + const int mainVertexOffset = 0; + const int positionVertexOffset = (1<<2) - PositionOnlyVertexShader; + const int mainFragOffset = (1<<6) - MainFragmentShader_CMO; + const int srcPixelOffset = (1<<10) - ImageSrcFragmentShader; + const int maskOffset = (1<<14) - NoMaskShader; + const int compositionOffset = (1 << 16) - MultiplyCompositionModeFragmentShader; +*/ + + QOpenGLEngineSharedShaders(QOpenGLContext *context); + ~QOpenGLEngineSharedShaders(); + + QOpenGLShaderProgram *simpleProgram() { return simpleShaderProg; } + QOpenGLShaderProgram *blitProgram() { return blitShaderProg; } + // Compile the program if it's not already in the cache, return the item in the cache. + QOpenGLEngineShaderProg *findProgramInCache(const QOpenGLEngineShaderProg &prog); + // Compile the custom shader if it's not already in the cache, return the item in the cache. + + static QOpenGLEngineSharedShaders *shadersForContext(QOpenGLContext *context); + + // Ideally, this would be static and cleanup all programs in all contexts which + // contain the custom code. Currently it is just a hint and we rely on deleted + // custom shaders being cleaned up by being kicked out of the cache when it's + // full. + void cleanupCustomStage(QOpenGLCustomShaderStage* stage); + +private: + QOpenGLShaderProgram *blitShaderProg; + QOpenGLShaderProgram *simpleShaderProg; + QList cachedPrograms; + + static const char* qShaderSnippets[TotalSnippetCount]; +}; + + +class QOpenGLEngineShaderProg +{ +public: + QOpenGLEngineShaderProg() : program(0) {} + + ~QOpenGLEngineShaderProg() { + if (program) + delete program; + } + + QOpenGLEngineSharedShaders::SnippetName mainVertexShader; + QOpenGLEngineSharedShaders::SnippetName positionVertexShader; + QOpenGLEngineSharedShaders::SnippetName mainFragShader; + QOpenGLEngineSharedShaders::SnippetName srcPixelFragShader; + QOpenGLEngineSharedShaders::SnippetName maskFragShader; + QOpenGLEngineSharedShaders::SnippetName compositionFragShader; + + QByteArray customStageSource; //TODO: Decent cache key for custom stages + QOpenGLShaderProgram* program; + + QVector uniformLocations; + + bool useTextureCoords; + bool useOpacityAttribute; + bool usePmvMatrixAttribute; + + bool operator==(const QOpenGLEngineShaderProg& other) const { + // We don't care about the program + return ( mainVertexShader == other.mainVertexShader && + positionVertexShader == other.positionVertexShader && + mainFragShader == other.mainFragShader && + srcPixelFragShader == other.srcPixelFragShader && + maskFragShader == other.maskFragShader && + compositionFragShader == other.compositionFragShader && + customStageSource == other.customStageSource + ); + } +}; + +class Q_GUI_EXPORT QOpenGLEngineShaderManager : public QObject +{ + Q_OBJECT +public: + QOpenGLEngineShaderManager(QOpenGLContext* context); + ~QOpenGLEngineShaderManager(); + + enum MaskType {NoMask, PixelMask, SubPixelMaskPass1, SubPixelMaskPass2, SubPixelWithGammaMask}; + enum PixelSrcType { + ImageSrc = Qt::TexturePattern+1, + NonPremultipliedImageSrc = Qt::TexturePattern+2, + PatternSrc = Qt::TexturePattern+3, + TextureSrcWithPattern = Qt::TexturePattern+4, + GrayscaleImageSrc = Qt::TexturePattern+5, + AlphaImageSrc = Qt::TexturePattern+6, + }; + + enum Uniform { + ImageTexture, + PatternColor, + GlobalOpacity, + Depth, + MaskTexture, + FragmentColor, + LinearData, + Angle, + HalfViewportSize, + Fmp, + Fmp2MRadius2, + Inverse2Fmp2MRadius2, + SqrFr, + BRadius, + InvertedTextureSize, + BrushTransform, + BrushTexture, + Matrix, + NumUniforms + }; + + enum OpacityMode { + NoOpacity, + UniformOpacity, + AttributeOpacity + }; + + // There are optimizations we can do, depending on the brush transform: + // 1) May not have to apply perspective-correction + // 2) Can use lower precision for matrix + void optimiseForBrushTransform(QTransform::TransformationType transformType); + void setSrcPixelType(Qt::BrushStyle); + void setSrcPixelType(PixelSrcType); // For non-brush sources, like pixmaps & images + void setOpacityMode(OpacityMode); + void setMaskType(MaskType); + void setCompositionMode(QPainter::CompositionMode); + void setCustomStage(QOpenGLCustomShaderStage* stage); + void removeCustomStage(); + + GLuint getUniformLocation(Uniform id); + + void setDirty(); // someone has manually changed the current shader program + bool useCorrectShaderProg(); // returns true if the shader program needed to be changed + + void useSimpleProgram(); + void useBlitProgram(); + void setHasComplexGeometry(bool hasComplexGeometry) + { + complexGeometry = hasComplexGeometry; + shaderProgNeedsChanging = true; + } + bool hasComplexGeometry() const + { + return complexGeometry; + } + + QOpenGLShaderProgram* currentProgram(); // Returns pointer to the shader the manager has chosen + QOpenGLShaderProgram* simpleProgram(); // Used to draw into e.g. stencil buffers + QOpenGLShaderProgram* blitProgram(); // Used to blit a texture into the framebuffer + + QOpenGLEngineSharedShaders* sharedShaders; + +private: + QOpenGLContext* ctx; + bool shaderProgNeedsChanging; + bool complexGeometry; + + // Current state variables which influence the choice of shader: + QTransform brushTransform; + int srcPixelType; + OpacityMode opacityMode; + MaskType maskType; + QPainter::CompositionMode compositionMode; + QOpenGLCustomShaderStage* customSrcStage; + + QOpenGLEngineShaderProg* currentShaderProg; +}; + +QT_END_NAMESPACE + +#endif //QOPENGLENGINE_SHADER_MANAGER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglengineshadersource_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglengineshadersource_p.h new file mode 100644 index 000000000..a16564383 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglengineshadersource_p.h @@ -0,0 +1,1029 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// 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. +// + + +#ifndef QOPENGL_ENGINE_SHADER_SOURCE_H +#define QOPENGL_ENGINE_SHADER_SOURCE_H + +#include +#include "qopenglengineshadermanager_p.h" + +QT_BEGIN_NAMESPACE + + +static const char* const qopenglslMainVertexShader = "\n\ + void setPosition(); \n\ + void main(void) \n\ + { \n\ + setPosition(); \n\ + }\n"; + +static const char* const qopenglslMainWithTexCoordsVertexShader = "\n\ + attribute highp vec2 textureCoordArray; \n\ + varying highp vec2 textureCoords; \n\ + void setPosition(); \n\ + void main(void) \n\ + { \n\ + setPosition(); \n\ + textureCoords = textureCoordArray; \n\ + }\n"; + +static const char* const qopenglslMainWithTexCoordsAndOpacityVertexShader = "\n\ + attribute highp vec2 textureCoordArray; \n\ + attribute lowp float opacityArray; \n\ + varying highp vec2 textureCoords; \n\ + varying lowp float opacity; \n\ + void setPosition(); \n\ + void main(void) \n\ + { \n\ + setPosition(); \n\ + textureCoords = textureCoordArray; \n\ + opacity = opacityArray; \n\ + }\n"; + +// NOTE: We let GL do the perspective correction so texture lookups in the fragment +// shader are also perspective corrected. +static const char* const qopenglslPositionOnlyVertexShader = "\n\ + attribute highp vec2 vertexCoordsArray; \n\ + attribute highp vec3 pmvMatrix1; \n\ + attribute highp vec3 pmvMatrix2; \n\ + attribute highp vec3 pmvMatrix3; \n\ + void setPosition(void) \n\ + { \n\ + highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position = vec4(transformedPos.xy, 0.0, transformedPos.z); \n\ + }\n"; + +static const char* const qopenglslComplexGeometryPositionOnlyVertexShader = "\n\ + uniform highp mat3 matrix; \n\ + attribute highp vec2 vertexCoordsArray; \n\ + void setPosition(void) \n\ + { \n\ + gl_Position = vec4(matrix * vec3(vertexCoordsArray, 1), 1);\n\ + } \n"; + +static const char* const qopenglslUntransformedPositionVertexShader = "\n\ + attribute highp vec4 vertexCoordsArray; \n\ + void setPosition(void) \n\ + { \n\ + gl_Position = vertexCoordsArray; \n\ + }\n"; + +// Pattern Brush - This assumes the texture size is 8x8 and thus, the inverted size is 0.125 +static const char* const qopenglslPositionWithPatternBrushVertexShader = "\n\ + attribute highp vec2 vertexCoordsArray; \n\ + attribute highp vec3 pmvMatrix1; \n\ + attribute highp vec3 pmvMatrix2; \n\ + attribute highp vec3 pmvMatrix3; \n\ + uniform mediump vec2 halfViewportSize; \n\ + uniform highp vec2 invertedTextureSize; \n\ + uniform highp mat3 brushTransform; \n\ + varying highp vec2 patternTexCoords; \n\ + void setPosition(void) \n\ + { \n\ + highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position.xy = transformedPos.xy / transformedPos.z; \n\ + mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\ + mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1.0); \n\ + mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\ + gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\ + patternTexCoords.xy = (hTexCoords.xy * 0.125) * invertedHTexCoordsZ; \n\ + }\n"; + +static const char* const qopenglslAffinePositionWithPatternBrushVertexShader + = qopenglslPositionWithPatternBrushVertexShader; + +static const char* const qopenglslPatternBrushSrcFragmentShader = "\n\ + uniform sampler2D brushTexture; \n\ + uniform lowp vec4 patternColor; \n\ + varying highp vec2 patternTexCoords;\n\ + lowp vec4 srcPixel() \n\ + { \n\ + return patternColor * (1.0 - texture2D(brushTexture, patternTexCoords).r); \n\ + }\n"; + + +// Linear Gradient Brush +static const char* const qopenglslPositionWithLinearGradientBrushVertexShader = "\n\ + attribute highp vec2 vertexCoordsArray; \n\ + attribute highp vec3 pmvMatrix1; \n\ + attribute highp vec3 pmvMatrix2; \n\ + attribute highp vec3 pmvMatrix3; \n\ + uniform mediump vec2 halfViewportSize; \n\ + uniform highp vec3 linearData; \n\ + uniform highp mat3 brushTransform; \n\ + varying mediump float index; \n\ + void setPosition() \n\ + { \n\ + highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position.xy = transformedPos.xy / transformedPos.z; \n\ + mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\ + mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\ + mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\ + gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\ + index = (dot(linearData.xy, hTexCoords.xy) * linearData.z) * invertedHTexCoordsZ; \n\ + }\n"; + +static const char* const qopenglslAffinePositionWithLinearGradientBrushVertexShader + = qopenglslPositionWithLinearGradientBrushVertexShader; + +static const char* const qopenglslLinearGradientBrushSrcFragmentShader = "\n\ + uniform sampler2D brushTexture; \n\ + varying mediump float index; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + mediump vec2 val = vec2(index, 0.5); \n\ + return texture2D(brushTexture, val); \n\ + }\n"; + + +// Conical Gradient Brush +static const char* const qopenglslPositionWithConicalGradientBrushVertexShader = "\n\ + attribute highp vec2 vertexCoordsArray; \n\ + attribute highp vec3 pmvMatrix1; \n\ + attribute highp vec3 pmvMatrix2; \n\ + attribute highp vec3 pmvMatrix3; \n\ + uniform mediump vec2 halfViewportSize; \n\ + uniform highp mat3 brushTransform; \n\ + varying highp vec2 A; \n\ + void setPosition(void) \n\ + { \n\ + highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position.xy = transformedPos.xy / transformedPos.z; \n\ + mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\ + mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\ + mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\ + gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\ + A = hTexCoords.xy * invertedHTexCoordsZ; \n\ + }\n"; + +static const char* const qopenglslAffinePositionWithConicalGradientBrushVertexShader + = qopenglslPositionWithConicalGradientBrushVertexShader; + +static const char* const qopenglslConicalGradientBrushSrcFragmentShader = "\n\ + #define INVERSE_2PI 0.1591549430918953358 \n\ + uniform sampler2D brushTexture; \n\ + uniform mediump float angle; \n\ + varying highp vec2 A; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + highp float t; \n\ + if (abs(A.y) == abs(A.x)) \n\ + t = (atan(-A.y + 0.002, A.x) + angle) * INVERSE_2PI; \n\ + else \n\ + t = (atan(-A.y, A.x) + angle) * INVERSE_2PI; \n\ + return texture2D(brushTexture, vec2(t - floor(t), 0.5)); \n\ + }\n"; + + +// Radial Gradient Brush +static const char* const qopenglslPositionWithRadialGradientBrushVertexShader = "\n\ + attribute highp vec2 vertexCoordsArray;\n\ + attribute highp vec3 pmvMatrix1; \n\ + attribute highp vec3 pmvMatrix2; \n\ + attribute highp vec3 pmvMatrix3; \n\ + uniform mediump vec2 halfViewportSize; \n\ + uniform highp mat3 brushTransform; \n\ + uniform highp vec2 fmp; \n\ + uniform mediump vec3 bradius; \n\ + varying highp float b; \n\ + varying highp vec2 A; \n\ + void setPosition(void) \n\ + {\n\ + highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position.xy = transformedPos.xy / transformedPos.z; \n\ + mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\ + mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\ + mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\ + gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\ + A = hTexCoords.xy * invertedHTexCoordsZ; \n\ + b = bradius.x + 2.0 * dot(A, fmp); \n\ + }\n"; + +static const char* const qopenglslAffinePositionWithRadialGradientBrushVertexShader + = qopenglslPositionWithRadialGradientBrushVertexShader; + +static const char* const qopenglslRadialGradientBrushSrcFragmentShader = "\n\ + uniform sampler2D brushTexture; \n\ + uniform highp float fmp2_m_radius2; \n\ + uniform highp float inverse_2_fmp2_m_radius2; \n\ + uniform highp float sqrfr; \n\ + varying highp float b; \n\ + varying highp vec2 A; \n\ + uniform mediump vec3 bradius; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + highp float c = sqrfr-dot(A, A); \n\ + highp float det = b*b - 4.0*fmp2_m_radius2*c; \n\ + lowp vec4 result = vec4(0.0); \n\ + if (det >= 0.0) { \n\ + highp float detSqrt = sqrt(det); \n\ + highp float w = max((-b - detSqrt) * inverse_2_fmp2_m_radius2, (-b + detSqrt) * inverse_2_fmp2_m_radius2); \n\ + if (bradius.y + w * bradius.z >= 0.0) \n\ + result = texture2D(brushTexture, vec2(w, 0.5)); \n\ + } \n\ + return result; \n\ + }\n"; + + +// Texture Brush +static const char* const qopenglslPositionWithTextureBrushVertexShader = "\n\ + attribute highp vec2 vertexCoordsArray; \n\ + attribute highp vec3 pmvMatrix1; \n\ + attribute highp vec3 pmvMatrix2; \n\ + attribute highp vec3 pmvMatrix3; \n\ + uniform mediump vec2 halfViewportSize; \n\ + uniform highp vec2 invertedTextureSize; \n\ + uniform highp mat3 brushTransform; \n\ + varying highp vec2 brushTextureCoords; \n\ + void setPosition(void) \n\ + { \n\ + highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position.xy = transformedPos.xy / transformedPos.z; \n\ + mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\ + mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\ + mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\ + gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\ + brushTextureCoords.xy = (hTexCoords.xy * invertedTextureSize) * gl_Position.w; \n\ + }\n"; + +static const char* const qopenglslAffinePositionWithTextureBrushVertexShader + = qopenglslPositionWithTextureBrushVertexShader; + +// OpenGL ES does not support GL_REPEAT wrap modes for NPOT textures. So instead, +// we emulate GL_REPEAT by only taking the fractional part of the texture coords. +// TODO: Special case POT textures which don't need this emulation +static const char* const qopenglslTextureBrushSrcFragmentShader_ES = "\n\ + varying highp vec2 brushTextureCoords; \n\ + uniform sampler2D brushTexture; \n\ + lowp vec4 srcPixel() { \n\ + return texture2D(brushTexture, fract(brushTextureCoords)); \n\ + }\n"; + +static const char* const qopenglslTextureBrushSrcFragmentShader_desktop = "\n\ + varying highp vec2 brushTextureCoords; \n\ + uniform sampler2D brushTexture; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + return texture2D(brushTexture, brushTextureCoords); \n\ + }\n"; + +static const char* const qopenglslTextureBrushSrcWithPatternFragmentShader = "\n\ + varying highp vec2 brushTextureCoords; \n\ + uniform lowp vec4 patternColor; \n\ + uniform sampler2D brushTexture; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + return patternColor * (1.0 - texture2D(brushTexture, brushTextureCoords).r); \n\ + }\n"; + +// Solid Fill Brush +static const char* const qopenglslSolidBrushSrcFragmentShader = "\n\ + uniform lowp vec4 fragmentColor; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + return fragmentColor; \n\ + }\n"; + +static const char* const qopenglslImageSrcFragmentShader = "\n\ + varying highp vec2 textureCoords; \n\ + uniform sampler2D imageTexture; \n\ + lowp vec4 srcPixel() \n\ + { \n" + "return texture2D(imageTexture, textureCoords); \n" + "}\n"; + +static const char* const qopenglslCustomSrcFragmentShader = "\n\ + varying highp vec2 textureCoords; \n\ + uniform sampler2D imageTexture; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + return customShader(imageTexture, textureCoords); \n\ + }\n"; + +static const char* const qopenglslImageSrcWithPatternFragmentShader = "\n\ + varying highp vec2 textureCoords; \n\ + uniform lowp vec4 patternColor; \n\ + uniform sampler2D imageTexture; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + return patternColor * (1.0 - texture2D(imageTexture, textureCoords).r); \n\ + }\n"; + +static const char* const qopenglslNonPremultipliedImageSrcFragmentShader = "\n\ + varying highp vec2 textureCoords; \n\ + uniform sampler2D imageTexture; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + lowp vec4 sample = texture2D(imageTexture, textureCoords); \n\ + sample.rgb = sample.rgb * sample.a; \n\ + return sample; \n\ + }\n"; + +static const char* const qopenglslGrayscaleImageSrcFragmentShader = "\n\ + varying highp vec2 textureCoords; \n\ + uniform sampler2D imageTexture; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + return texture2D(imageTexture, textureCoords).rrra; \n\ + }\n"; + +static const char* const qopenglslAlphaImageSrcFragmentShader = "\n\ + varying highp vec2 textureCoords; \n\ + uniform sampler2D imageTexture; \n\ + lowp vec4 srcPixel() \n\ + { \n\ + return vec4(0, 0, 0, texture2D(imageTexture, textureCoords).r); \n\ + }\n"; + +static const char* const qopenglslShockingPinkSrcFragmentShader = "\n\ + lowp vec4 srcPixel() \n\ + { \n\ + return vec4(0.98, 0.06, 0.75, 1.0); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_ImageArrays = "\n\ + varying lowp float opacity; \n\ + lowp vec4 srcPixel(); \n\ + void main() \n\ + { \n\ + gl_FragColor = srcPixel() * opacity; \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_CMO = "\n\ + uniform lowp float globalOpacity; \n\ + lowp vec4 srcPixel(); \n\ + lowp vec4 applyMask(lowp vec4); \n\ + lowp vec4 compose(lowp vec4); \n\ + void main() \n\ + { \n\ + gl_FragColor = applyMask(compose(srcPixel()*globalOpacity))); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_CM = "\n\ + lowp vec4 srcPixel(); \n\ + lowp vec4 applyMask(lowp vec4); \n\ + lowp vec4 compose(lowp vec4); \n\ + void main() \n\ + { \n\ + gl_FragColor = applyMask(compose(srcPixel())); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_MO = "\n\ + uniform lowp float globalOpacity; \n\ + lowp vec4 srcPixel(); \n\ + lowp vec4 applyMask(lowp vec4); \n\ + void main() \n\ + { \n\ + gl_FragColor = applyMask(srcPixel()*globalOpacity); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_M = "\n\ + lowp vec4 srcPixel(); \n\ + lowp vec4 applyMask(lowp vec4); \n\ + void main() \n\ + { \n\ + gl_FragColor = applyMask(srcPixel()); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_CO = "\n\ + uniform lowp float globalOpacity; \n\ + lowp vec4 srcPixel(); \n\ + lowp vec4 compose(lowp vec4); \n\ + void main() \n\ + { \n\ + gl_FragColor = compose(srcPixel()*globalOpacity); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_C = "\n\ + lowp vec4 srcPixel(); \n\ + lowp vec4 compose(lowp vec4); \n\ + void main() \n\ + { \n\ + gl_FragColor = compose(srcPixel()); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_O = "\n\ + uniform lowp float globalOpacity; \n\ + lowp vec4 srcPixel(); \n\ + void main() \n\ + { \n\ + gl_FragColor = srcPixel()*globalOpacity; \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader = "\n\ + lowp vec4 srcPixel(); \n\ + void main() \n\ + { \n\ + gl_FragColor = srcPixel(); \n\ + }\n"; + +static const char* const qopenglslMaskFragmentShader = "\n\ + varying highp vec2 textureCoords;\n\ + uniform sampler2D maskTexture;\n\ + lowp vec4 applyMask(lowp vec4 src) \n\ + {\n\ + lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\ + return src * mask.a; \n\ + }\n"; + +// For source over with subpixel antialiasing, the final color is calculated per component as follows +// (.a is alpha component, .c is red, green or blue component): +// alpha = src.a * mask.c * opacity +// dest.c = dest.c * (1 - alpha) + src.c * alpha +// +// In the first pass, calculate: dest.c = dest.c * (1 - alpha) with blend funcs: zero, 1 - source color +// In the second pass, calculate: dest.c = dest.c + src.c * alpha with blend funcs: one, one +// +// If source is a solid color (src is constant), only the first pass is needed, with blend funcs: constant, 1 - source color + +// For source composition with subpixel antialiasing, the final color is calculated per component as follows: +// alpha = src.a * mask.c * opacity +// dest.c = dest.c * (1 - mask.c) + src.c * alpha +// + +static const char* const qopenglslRgbMaskFragmentShaderPass1 = "\n\ + varying highp vec2 textureCoords;\n\ + uniform sampler2D maskTexture;\n\ + lowp vec4 applyMask(lowp vec4 src) \n\ + { \n\ + lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\ + return src.a * mask; \n\ + }\n"; + +static const char* const qopenglslRgbMaskFragmentShaderPass2 = "\n\ + varying highp vec2 textureCoords;\n\ + uniform sampler2D maskTexture;\n\ + lowp vec4 applyMask(lowp vec4 src) \n\ + { \n\ + lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\ + return src * mask; \n\ + }\n"; + +/* + Left to implement: + RgbMaskFragmentShader, + RgbMaskWithGammaFragmentShader, + + MultiplyCompositionModeFragmentShader, + ScreenCompositionModeFragmentShader, + OverlayCompositionModeFragmentShader, + DarkenCompositionModeFragmentShader, + LightenCompositionModeFragmentShader, + ColorDodgeCompositionModeFragmentShader, + ColorBurnCompositionModeFragmentShader, + HardLightCompositionModeFragmentShader, + SoftLightCompositionModeFragmentShader, + DifferenceCompositionModeFragmentShader, + ExclusionCompositionModeFragmentShader, +*/ + +/* + OpenGL 3.2+ Core Profile shaders + The following shader snippets are copies of the snippets above + but use the modern GLSL 1.5 keywords. New shaders should make + a snippet for both profiles and add them appropriately in the + shader manager. +*/ +static const char* const qopenglslMainVertexShader_core = + "#version 150 core\n\ + void setPosition(); \n\ + void main(void) \n\ + { \n\ + setPosition(); \n\ + }\n"; + +static const char* const qopenglslMainWithTexCoordsVertexShader_core = + "#version 150 core\n\ + in vec2 textureCoordArray; \n\ + out vec2 textureCoords; \n\ + void setPosition(); \n\ + void main(void) \n\ + { \n\ + setPosition(); \n\ + textureCoords = textureCoordArray; \n\ + }\n"; + +static const char* const qopenglslMainWithTexCoordsAndOpacityVertexShader_core = + "#version 150 core\n\ + in vec2 textureCoordArray; \n\ + in float opacityArray; \n\ + out vec2 textureCoords; \n\ + out float opacity; \n\ + void setPosition(); \n\ + void main(void) \n\ + { \n\ + setPosition(); \n\ + textureCoords = textureCoordArray; \n\ + opacity = opacityArray; \n\ + }\n"; + +// NOTE: We let GL do the perspective correction so texture lookups in the fragment +// shader are also perspective corrected. +static const char* const qopenglslPositionOnlyVertexShader_core = "\n\ + in vec2 vertexCoordsArray; \n\ + in vec3 pmvMatrix1; \n\ + in vec3 pmvMatrix2; \n\ + in vec3 pmvMatrix3; \n\ + void setPosition(void) \n\ + { \n\ + mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position = vec4(transformedPos.xy, 0.0, transformedPos.z); \n\ + }\n"; + +static const char* const qopenglslComplexGeometryPositionOnlyVertexShader_core = "\n\ + in vec2 vertexCoordsArray; \n\ + uniform mat3 matrix; \n\ + void setPosition(void) \n\ + { \n\ + gl_Position = vec4(matrix * vec3(vertexCoordsArray, 1), 1);\n\ + } \n"; + +static const char* const qopenglslUntransformedPositionVertexShader_core = "\n\ + in vec4 vertexCoordsArray; \n\ + void setPosition(void) \n\ + { \n\ + gl_Position = vertexCoordsArray; \n\ + }\n"; + +// Pattern Brush - This assumes the texture size is 8x8 and thus, the inverted size is 0.125 +static const char* const qopenglslPositionWithPatternBrushVertexShader_core = "\n\ + in vec2 vertexCoordsArray; \n\ + in vec3 pmvMatrix1; \n\ + in vec3 pmvMatrix2; \n\ + in vec3 pmvMatrix3; \n\ + out vec2 patternTexCoords; \n\ + uniform vec2 halfViewportSize; \n\ + uniform vec2 invertedTextureSize; \n\ + uniform mat3 brushTransform; \n\ + void setPosition(void) \n\ + { \n\ + mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position.xy = transformedPos.xy / transformedPos.z; \n\ + vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\ + vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1.0); \n\ + float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\ + gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\ + patternTexCoords.xy = (hTexCoords.xy * 0.125) * invertedHTexCoordsZ; \n\ + }\n"; + +static const char* const qopenglslAffinePositionWithPatternBrushVertexShader_core + = qopenglslPositionWithPatternBrushVertexShader_core; + +static const char* const qopenglslPatternBrushSrcFragmentShader_core = "\n\ + in vec2 patternTexCoords;\n\ + uniform sampler2D brushTexture; \n\ + uniform vec4 patternColor; \n\ + vec4 srcPixel() \n\ + { \n\ + return patternColor * (1.0 - texture(brushTexture, patternTexCoords).r); \n\ + }\n"; + + +// Linear Gradient Brush +static const char* const qopenglslPositionWithLinearGradientBrushVertexShader_core = "\n\ + in vec2 vertexCoordsArray; \n\ + in vec3 pmvMatrix1; \n\ + in vec3 pmvMatrix2; \n\ + in vec3 pmvMatrix3; \n\ + out float index; \n\ + uniform vec2 halfViewportSize; \n\ + uniform vec3 linearData; \n\ + uniform mat3 brushTransform; \n\ + void setPosition() \n\ + { \n\ + mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position.xy = transformedPos.xy / transformedPos.z; \n\ + vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\ + vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\ + float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\ + gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\ + index = (dot(linearData.xy, hTexCoords.xy) * linearData.z) * invertedHTexCoordsZ; \n\ + }\n"; + +static const char* const qopenglslAffinePositionWithLinearGradientBrushVertexShader_core + = qopenglslPositionWithLinearGradientBrushVertexShader_core; + +static const char* const qopenglslLinearGradientBrushSrcFragmentShader_core = "\n\ + uniform sampler2D brushTexture; \n\ + in float index; \n\ + vec4 srcPixel() \n\ + { \n\ + vec2 val = vec2(index, 0.5); \n\ + return texture(brushTexture, val); \n\ + }\n"; + + +// Conical Gradient Brush +static const char* const qopenglslPositionWithConicalGradientBrushVertexShader_core = "\n\ + in vec2 vertexCoordsArray; \n\ + in vec3 pmvMatrix1; \n\ + in vec3 pmvMatrix2; \n\ + in vec3 pmvMatrix3; \n\ + out vec2 A; \n\ + uniform vec2 halfViewportSize; \n\ + uniform mat3 brushTransform; \n\ + void setPosition(void) \n\ + { \n\ + mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position.xy = transformedPos.xy / transformedPos.z; \n\ + vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\ + vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\ + float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\ + gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\ + A = hTexCoords.xy * invertedHTexCoordsZ; \n\ + }\n"; + +static const char* const qopenglslAffinePositionWithConicalGradientBrushVertexShader_core + = qopenglslPositionWithConicalGradientBrushVertexShader_core; + +static const char* const qopenglslConicalGradientBrushSrcFragmentShader_core = "\n\ + #define INVERSE_2PI 0.1591549430918953358 \n\ + in vec2 A; \n\ + uniform sampler2D brushTexture; \n\ + uniform float angle; \n\ + vec4 srcPixel() \n\ + { \n\ + float t; \n\ + if (abs(A.y) == abs(A.x)) \n\ + t = (atan(-A.y + 0.002, A.x) + angle) * INVERSE_2PI; \n\ + else \n\ + t = (atan(-A.y, A.x) + angle) * INVERSE_2PI; \n\ + return texture(brushTexture, vec2(t - floor(t), 0.5)); \n\ + }\n"; + + +// Radial Gradient Brush +static const char* const qopenglslPositionWithRadialGradientBrushVertexShader_core = "\n\ + in vec2 vertexCoordsArray;\n\ + in vec3 pmvMatrix1; \n\ + in vec3 pmvMatrix2; \n\ + in vec3 pmvMatrix3; \n\ + out float b; \n\ + out vec2 A; \n\ + uniform vec2 halfViewportSize; \n\ + uniform mat3 brushTransform; \n\ + uniform vec2 fmp; \n\ + uniform vec3 bradius; \n\ + void setPosition(void) \n\ + {\n\ + mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position.xy = transformedPos.xy / transformedPos.z; \n\ + vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\ + vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\ + float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\ + gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\ + A = hTexCoords.xy * invertedHTexCoordsZ; \n\ + b = bradius.x + 2.0 * dot(A, fmp); \n\ + }\n"; + +static const char* const qopenglslAffinePositionWithRadialGradientBrushVertexShader_core + = qopenglslPositionWithRadialGradientBrushVertexShader_core; + +static const char* const qopenglslRadialGradientBrushSrcFragmentShader_core = "\n\ + in float b; \n\ + in vec2 A; \n\ + uniform sampler2D brushTexture; \n\ + uniform float fmp2_m_radius2; \n\ + uniform float inverse_2_fmp2_m_radius2; \n\ + uniform float sqrfr; \n\ + uniform vec3 bradius; \n\ + \n\ + vec4 srcPixel() \n\ + { \n\ + float c = sqrfr-dot(A, A); \n\ + float det = b*b - 4.0*fmp2_m_radius2*c; \n\ + vec4 result = vec4(0.0); \n\ + if (det >= 0.0) { \n\ + float detSqrt = sqrt(det); \n\ + float w = max((-b - detSqrt) * inverse_2_fmp2_m_radius2, (-b + detSqrt) * inverse_2_fmp2_m_radius2); \n\ + if (bradius.y + w * bradius.z >= 0.0) \n\ + result = texture(brushTexture, vec2(w, 0.5)); \n\ + } \n\ + return result; \n\ + }\n"; + + +// Texture Brush +static const char* const qopenglslPositionWithTextureBrushVertexShader_core = "\n\ + in vec2 vertexCoordsArray; \n\ + in vec3 pmvMatrix1; \n\ + in vec3 pmvMatrix2; \n\ + in vec3 pmvMatrix3; \n\ + out vec2 brushTextureCoords; \n\ + uniform vec2 halfViewportSize; \n\ + uniform vec2 invertedTextureSize; \n\ + uniform mat3 brushTransform; \n\ + \n\ + void setPosition(void) \n\ + { \n\ + mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\ + vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\ + gl_Position.xy = transformedPos.xy / transformedPos.z; \n\ + vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\ + vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\ + float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\ + gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\ + brushTextureCoords.xy = (hTexCoords.xy * invertedTextureSize) * gl_Position.w; \n\ + }\n"; + +static const char* const qopenglslAffinePositionWithTextureBrushVertexShader_core + = qopenglslPositionWithTextureBrushVertexShader_core; + +static const char* const qopenglslTextureBrushSrcFragmentShader_desktop_core = "\n\ + in vec2 brushTextureCoords; \n\ + uniform sampler2D brushTexture; \n\ + vec4 srcPixel() \n\ + { \n\ + return texture(brushTexture, brushTextureCoords); \n\ + }\n"; + +static const char* const qopenglslTextureBrushSrcWithPatternFragmentShader_core = "\n\ + in vec2 brushTextureCoords; \n\ + uniform vec4 patternColor; \n\ + uniform sampler2D brushTexture; \n\ + vec4 srcPixel() \n\ + { \n\ + return patternColor * (1.0 - texture(brushTexture, brushTextureCoords).r); \n\ + }\n"; + +// Solid Fill Brush +static const char* const qopenglslSolidBrushSrcFragmentShader_core = "\n\ + uniform vec4 fragmentColor; \n\ + vec4 srcPixel() \n\ + { \n\ + return fragmentColor; \n\ + }\n"; + +static const char* const qopenglslImageSrcFragmentShader_core = "\n\ + in vec2 textureCoords; \n\ + uniform sampler2D imageTexture; \n\ + vec4 srcPixel() \n\ + { \n\ + return texture(imageTexture, textureCoords); \n\ + }\n"; + +static const char* const qopenglslCustomSrcFragmentShader_core = "\n\ + in vec2 textureCoords; \n\ + uniform sampler2D imageTexture; \n\ + vec4 srcPixel() \n\ + { \n\ + return customShader(imageTexture, textureCoords); \n\ + }\n"; + +static const char* const qopenglslImageSrcWithPatternFragmentShader_core = "\n\ + in vec2 textureCoords; \n\ + uniform vec4 patternColor; \n\ + uniform sampler2D imageTexture; \n\ + vec4 srcPixel() \n\ + { \n\ + return patternColor * (1.0 - texture(imageTexture, textureCoords).r); \n\ + }\n"; + +static const char* const qopenglslNonPremultipliedImageSrcFragmentShader_core = "\n\ + in vec2 textureCoords; \n\ + uniform sampler2D imageTexture; \n\ + vec4 srcPixel() \n\ + { \n\ + vec4 sample = texture(imageTexture, textureCoords); \n\ + sample.rgb = sample.rgb * sample.a; \n\ + return sample; \n\ + }\n"; + +static const char* const qopenglslGrayscaleImageSrcFragmentShader_core = "\n\ + in vec2 textureCoords; \n\ + uniform sampler2D imageTexture; \n\ + vec4 srcPixel() \n\ + { \n\ + return texture(imageTexture, textureCoords).rrra; \n\ + }\n"; + +static const char* const qopenglslAlphaImageSrcFragmentShader_core = "\n\ + in vec2 textureCoords; \n\ + uniform sampler2D imageTexture; \n\ + vec4 srcPixel() \n\ + { \n\ + return vec4(0, 0, 0, texture(imageTexture, textureCoords).r); \n\ + }\n"; + +static const char* const qopenglslShockingPinkSrcFragmentShader_core = "\n\ + vec4 srcPixel() \n\ + { \n\ + return vec4(0.98, 0.06, 0.75, 1.0); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_ImageArrays_core = + "#version 150 core\n\ + in float opacity; \n\ + out vec4 fragColor; \n\ + vec4 srcPixel(); \n\ + void main() \n\ + { \n\ + fragColor = srcPixel() * opacity; \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_CMO_core = + "#version 150 core\n\ + out vec4 fragColor; \n\ + uniform float globalOpacity; \n\ + vec4 srcPixel(); \n\ + vec4 applyMask(vec4); \n\ + vec4 compose(vec4); \n\ + void main() \n\ + { \n\ + fragColor = applyMask(compose(srcPixel()*globalOpacity))); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_CM_core = + "#version 150 core\n\ + out vec4 fragColor; \n\ + vec4 srcPixel(); \n\ + vec4 applyMask(vec4); \n\ + vec4 compose(vec4); \n\ + void main() \n\ + { \n\ + fragColor = applyMask(compose(srcPixel())); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_MO_core = + "#version 150 core\n\ + out vec4 fragColor; \n\ + uniform float globalOpacity; \n\ + vec4 srcPixel(); \n\ + vec4 applyMask(vec4); \n\ + void main() \n\ + { \n\ + fragColor = applyMask(srcPixel()*globalOpacity); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_M_core = + "#version 150 core\n\ + out vec4 fragColor; \n\ + vec4 srcPixel(); \n\ + vec4 applyMask(vec4); \n\ + void main() \n\ + { \n\ + fragColor = applyMask(srcPixel()); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_CO_core = + "#version 150 core\n\ + out vec4 fragColor; \n\ + uniform float globalOpacity; \n\ + vec4 srcPixel(); \n\ + vec4 compose(vec4); \n\ + void main() \n\ + { \n\ + fragColor = compose(srcPixel()*globalOpacity); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_C_core = + "#version 150 core\n\ + out vec4 fragColor; \n\ + vec4 srcPixel(); \n\ + vec4 compose(vec4); \n\ + void main() \n\ + { \n\ + fragColor = compose(srcPixel()); \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_O_core = + "#version 150 core\n\ + out vec4 fragColor; \n\ + uniform float globalOpacity; \n\ + vec4 srcPixel(); \n\ + void main() \n\ + { \n\ + fragColor = srcPixel()*globalOpacity; \n\ + }\n"; + +static const char* const qopenglslMainFragmentShader_core = + "#version 150 core\n\ + out vec4 fragColor; \n\ + vec4 srcPixel(); \n\ + void main() \n\ + { \n\ + fragColor = srcPixel(); \n\ + }\n"; + +static const char* const qopenglslMaskFragmentShader_core = "\n\ + in vec2 textureCoords;\n\ + uniform sampler2D maskTexture;\n\ + vec4 applyMask(vec4 src) \n\ + {\n\ + vec4 mask = texture(maskTexture, textureCoords); \n\ + return src * mask.r; \n\ + }\n"; + +// For source over with subpixel antialiasing, the final color is calculated per component as follows +// (.a is alpha component, .c is red, green or blue component): +// alpha = src.a * mask.c * opacity +// dest.c = dest.c * (1 - alpha) + src.c * alpha +// +// In the first pass, calculate: dest.c = dest.c * (1 - alpha) with blend funcs: zero, 1 - source color +// In the second pass, calculate: dest.c = dest.c + src.c * alpha with blend funcs: one, one +// +// If source is a solid color (src is constant), only the first pass is needed, with blend funcs: constant, 1 - source color + +// For source composition with subpixel antialiasing, the final color is calculated per component as follows: +// alpha = src.a * mask.c * opacity +// dest.c = dest.c * (1 - mask.c) + src.c * alpha +// + +static const char* const qopenglslRgbMaskFragmentShaderPass1_core = "\n\ + in vec2 textureCoords;\n\ + uniform sampler2D maskTexture;\n\ + vec4 applyMask(vec4 src) \n\ + { \n\ + vec4 mask = texture(maskTexture, textureCoords); \n\ + return src.a * mask; \n\ + }\n"; + +static const char* const qopenglslRgbMaskFragmentShaderPass2_core = "\n\ + in vec2 textureCoords;\n\ + uniform sampler2D maskTexture;\n\ + vec4 applyMask(vec4 src) \n\ + { \n\ + vec4 mask = texture(maskTexture, textureCoords); \n\ + return src * mask; \n\ + }\n"; + +/* + Left to implement: + RgbMaskFragmentShader_core, + RgbMaskWithGammaFragmentShader_core, + + MultiplyCompositionModeFragmentShader_core, + ScreenCompositionModeFragmentShader_core, + OverlayCompositionModeFragmentShader_core, + DarkenCompositionModeFragmentShader_core, + LightenCompositionModeFragmentShader_core, + ColorDodgeCompositionModeFragmentShader_core, + ColorBurnCompositionModeFragmentShader_core, + HardLightCompositionModeFragmentShader_core, + SoftLightCompositionModeFragmentShader_core, + DifferenceCompositionModeFragmentShader_core, + ExclusionCompositionModeFragmentShader_core, +*/ + +QT_END_NAMESPACE + +#endif // GLGC_SHADER_SOURCE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglextensions_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglextensions_p.h new file mode 100644 index 000000000..a5f1a2cc8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglextensions_p.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGL_EXTENSIONS_P_H +#define QOPENGL_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. +// + +#include +#include "qopenglextrafunctions.h" + +QT_BEGIN_NAMESPACE + +class QOpenGLExtensionsPrivate; + +class Q_GUI_EXPORT QOpenGLExtensions : public QOpenGLExtraFunctions +{ + Q_DECLARE_PRIVATE(QOpenGLExtensions) +public: + QOpenGLExtensions(); + QOpenGLExtensions(QOpenGLContext *context); + ~QOpenGLExtensions() {} + + enum OpenGLExtension { + TextureRectangle = 0x00000001, + GenerateMipmap = 0x00000002, + TextureCompression = 0x00000004, + MirroredRepeat = 0x00000008, + FramebufferMultisample = 0x00000010, + StencilTwoSide = 0x00000020, + StencilWrap = 0x00000040, + PackedDepthStencil = 0x00000080, + NVFloatBuffer = 0x00000100, + PixelBufferObject = 0x00000200, + FramebufferBlit = 0x00000400, + BGRATextureFormat = 0x00000800, + DDSTextureCompression = 0x00001000, + ETC1TextureCompression = 0x00002000, + PVRTCTextureCompression = 0x00004000, + ElementIndexUint = 0x00008000, + Depth24 = 0x00010000, + SRGBFrameBuffer = 0x00020000, + MapBuffer = 0x00040000, + GeometryShaders = 0x00080000, + MapBufferRange = 0x00100000, + Sized8Formats = 0x00200000, + DiscardFramebuffer = 0x00400000, + Sized16Formats = 0x00800000 + }; + Q_DECLARE_FLAGS(OpenGLExtensions, OpenGLExtension) + + OpenGLExtensions openGLExtensions(); + bool hasOpenGLExtension(QOpenGLExtensions::OpenGLExtension extension) const; + + GLvoid *glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, GLvoid *data); + void glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); + + void flushShared(); + + QOpenGLExtensionsPrivate *d() const; + +private: + static bool isInitialized(const QOpenGLFunctionsPrivate *d) { return d != 0; } +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLExtensions::OpenGLExtensions) + +class QOpenGLExtensionsPrivate : public QOpenGLExtraFunctionsPrivate +{ +public: + explicit QOpenGLExtensionsPrivate(QOpenGLContext *ctx); + + GLvoid* (QOPENGLF_APIENTRYP MapBuffer)(GLenum target, GLenum access); + void (QOPENGLF_APIENTRYP GetBufferSubData)(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, GLvoid *data); + void (QOPENGLF_APIENTRYP DiscardFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments); + + bool flushVendorChecked; + bool flushIsSufficientToSyncContexts; +}; + +inline QOpenGLExtensionsPrivate *QOpenGLExtensions::d() const +{ + return static_cast(d_ptr); +} + +inline GLvoid *QOpenGLExtensions::glMapBuffer(GLenum target, GLenum access) +{ + Q_D(QOpenGLExtensions); + Q_ASSERT(QOpenGLExtensions::isInitialized(d)); + GLvoid *result = d->MapBuffer(target, access); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtensions::glGetBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, GLvoid *data) +{ + Q_D(QOpenGLExtensions); + Q_ASSERT(QOpenGLExtensions::isInitialized(d)); + d->GetBufferSubData(target, offset, size, data); + Q_OPENGL_FUNCTIONS_DEBUG +} + + +inline void QOpenGLExtensions::glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments) +{ + Q_D(QOpenGLExtensions); + Q_ASSERT(QOpenGLExtensions::isInitialized(d)); + d->DiscardFramebuffer(target,numAttachments, attachments); + Q_OPENGL_FUNCTIONS_DEBUG +} +QT_END_NAMESPACE + +#endif // QOPENGL_EXTENSIONS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglframebufferobject_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglframebufferobject_p.h new file mode 100644 index 000000000..778a38b82 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglframebufferobject_p.h @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLFRAMEBUFFEROBJECT_P_H +#define QOPENGLFRAMEBUFFEROBJECT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLFramebufferObjectFormatPrivate +{ +public: + QOpenGLFramebufferObjectFormatPrivate() + : ref(1), + samples(0), + attachment(QOpenGLFramebufferObject::NoAttachment), + target(GL_TEXTURE_2D), + mipmap(false) + { +#ifndef QT_OPENGL_ES_2 + // There is nothing that says QOpenGLFramebufferObjectFormat needs a current + // context, so we need a fallback just to be safe, even though in pratice there + // will usually be a context current. + QOpenGLContext *ctx = QOpenGLContext::currentContext(); + const bool isES = ctx ? ctx->isOpenGLES() : QOpenGLContext::openGLModuleType() != QOpenGLContext::LibGL; + internal_format = isES ? GL_RGBA : GL_RGBA8; +#else + internal_format = GL_RGBA; +#endif + } + QOpenGLFramebufferObjectFormatPrivate + (const QOpenGLFramebufferObjectFormatPrivate *other) + : ref(1), + samples(other->samples), + attachment(other->attachment), + target(other->target), + internal_format(other->internal_format), + mipmap(other->mipmap) + { + } + bool equals(const QOpenGLFramebufferObjectFormatPrivate *other) + { + return samples == other->samples && + attachment == other->attachment && + target == other->target && + internal_format == other->internal_format && + mipmap == other->mipmap; + } + + QAtomicInt ref; + int samples; + QOpenGLFramebufferObject::Attachment attachment; + GLenum target; + GLenum internal_format; + uint mipmap : 1; +}; + +class QOpenGLFramebufferObjectPrivate +{ +public: + QOpenGLFramebufferObjectPrivate() : fbo_guard(0), depth_buffer_guard(0) + , stencil_buffer_guard(0) + , valid(false) {} + ~QOpenGLFramebufferObjectPrivate() {} + + void init(QOpenGLFramebufferObject *q, const QSize &size, + QOpenGLFramebufferObject::Attachment attachment, + GLenum texture_target, GLenum internal_format, + GLint samples = 0, bool mipmap = false); + void initTexture(int idx); + void initColorBuffer(int idx, GLint *samples); + void initDepthStencilAttachments(QOpenGLContext *ctx, QOpenGLFramebufferObject::Attachment attachment); + + bool checkFramebufferStatus(QOpenGLContext *ctx) const; + QOpenGLSharedResourceGuard *fbo_guard; + QOpenGLSharedResourceGuard *depth_buffer_guard; + QOpenGLSharedResourceGuard *stencil_buffer_guard; + GLenum target; + QSize dsSize; + QOpenGLFramebufferObjectFormat format; + int requestedSamples; + uint valid : 1; + QOpenGLFramebufferObject::Attachment fbo_attachment; + QOpenGLExtensions funcs; + + struct ColorAttachment { + ColorAttachment() : internalFormat(0), guard(0) { } + ColorAttachment(const QSize &size, GLenum internalFormat) + : size(size), internalFormat(internalFormat), guard(0) { } + QSize size; + GLenum internalFormat; + QOpenGLSharedResourceGuard *guard; + }; + QVector colorAttachments; + + inline GLuint fbo() const { return fbo_guard ? fbo_guard->id() : 0; } +}; + + +QT_END_NAMESPACE + +#endif // QOPENGLFRAMEBUFFEROBJECT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglgradientcache_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglgradientcache_p.h new file mode 100644 index 000000000..a2ed85c06 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglgradientcache_p.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLGRADIENTCACHE_P_H +#define QOPENGLGRADIENTCACHE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGL2GradientCache : public QOpenGLSharedResource +{ + struct CacheInfo + { + inline CacheInfo(QGradientStops s, qreal op, QGradient::InterpolationMode mode) : + stops(qMove(s)), opacity(op), interpolationMode(mode) {} + + GLuint texId; + QGradientStops stops; + qreal opacity; + QGradient::InterpolationMode interpolationMode; + }; + + typedef QMultiHash QOpenGLGradientColorTableHash; + +public: + static QOpenGL2GradientCache *cacheForContext(QOpenGLContext *context); + + QOpenGL2GradientCache(QOpenGLContext *); + ~QOpenGL2GradientCache(); + + GLuint getBuffer(const QGradient &gradient, qreal opacity); + inline int paletteSize() const { return 1024; } + + void invalidateResource() Q_DECL_OVERRIDE; + void freeResource(QOpenGLContext *ctx) Q_DECL_OVERRIDE; + +private: + inline int maxCacheSize() const { return 60; } + inline void generateGradientColorTable(const QGradient& gradient, + QRgba64 *colorTable, + int size, qreal opacity) const; + inline void generateGradientColorTable(const QGradient& gradient, + uint *colorTable, + int size, qreal opacity) const; + GLuint addCacheElement(quint64 hash_val, const QGradient &gradient, qreal opacity); + void cleanCache(); + + QOpenGLGradientColorTableHash cache; + QMutex m_mutex; +}; + +QT_END_NAMESPACE + +#endif // QOPENGLGRADIENTCACHE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglpaintdevice_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglpaintdevice_p.h new file mode 100644 index 000000000..3683ebeba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglpaintdevice_p.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGL_PAINTDEVICE_P_H +#define QOPENGL_PAINTDEVICE_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. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLContext; +class QPaintEngine; + +class Q_GUI_EXPORT QOpenGLPaintDevicePrivate +{ +public: + QOpenGLPaintDevicePrivate(const QSize &size); + virtual ~QOpenGLPaintDevicePrivate(); + + static QOpenGLPaintDevicePrivate *get(QOpenGLPaintDevice *dev) { return dev->d_func(); } + + virtual void beginPaint() { } + virtual void endPaint() { } + +public: + QSize size; + QOpenGLContext *ctx; + + qreal dpmx; + qreal dpmy; + qreal devicePixelRatio; + + bool flipped; + + QPaintEngine *engine; +}; + +QT_END_NAMESPACE + +#endif // QOPENGL_PAINTDEVICE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglpaintengine_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglpaintengine_p.h new file mode 100644 index 000000000..679b3c055 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglpaintengine_p.h @@ -0,0 +1,396 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLPAINTENGINE_P_H +#define QOPENGLPAINTENGINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +enum EngineMode { + ImageDrawingMode, + TextDrawingMode, + BrushDrawingMode, + ImageArrayDrawingMode, + ImageOpacityArrayDrawingMode +}; + +QT_BEGIN_NAMESPACE + +#define GL_STENCIL_HIGH_BIT GLuint(0x80) +#define QT_UNKNOWN_TEXTURE_UNIT GLuint(-1) +#define QT_DEFAULT_TEXTURE_UNIT GLuint(0) +#define QT_BRUSH_TEXTURE_UNIT GLuint(0) +#define QT_IMAGE_TEXTURE_UNIT GLuint(0) //Can be the same as brush texture unit +#define QT_MASK_TEXTURE_UNIT GLuint(1) +#define QT_BACKGROUND_TEXTURE_UNIT GLuint(2) + +class QOpenGL2PaintEngineExPrivate; + +class QOpenGL2PaintEngineState : public QPainterState +{ +public: + QOpenGL2PaintEngineState(QOpenGL2PaintEngineState &other); + QOpenGL2PaintEngineState(); + ~QOpenGL2PaintEngineState(); + + uint isNew : 1; + uint needsClipBufferClear : 1; + uint clipTestEnabled : 1; + uint canRestoreClip : 1; + uint matrixChanged : 1; + uint compositionModeChanged : 1; + uint opacityChanged : 1; + uint renderHintsChanged : 1; + uint clipChanged : 1; + uint currentClip : 8; + + QRect rectangleClip; +}; + +class Q_GUI_EXPORT QOpenGL2PaintEngineEx : public QPaintEngineEx +{ + Q_DECLARE_PRIVATE(QOpenGL2PaintEngineEx) +public: + QOpenGL2PaintEngineEx(); + ~QOpenGL2PaintEngineEx(); + + bool begin(QPaintDevice *device) Q_DECL_OVERRIDE; + void ensureActive(); + bool end() Q_DECL_OVERRIDE; + + virtual void clipEnabledChanged() Q_DECL_OVERRIDE; + virtual void penChanged() Q_DECL_OVERRIDE; + virtual void brushChanged() Q_DECL_OVERRIDE; + virtual void brushOriginChanged() Q_DECL_OVERRIDE; + virtual void opacityChanged() Q_DECL_OVERRIDE; + virtual void compositionModeChanged() Q_DECL_OVERRIDE; + virtual void renderHintsChanged() Q_DECL_OVERRIDE; + virtual void transformChanged() Q_DECL_OVERRIDE; + + virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) Q_DECL_OVERRIDE; + virtual void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, + QPainter::PixmapFragmentHints hints) Q_DECL_OVERRIDE; + virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, + Qt::ImageConversionFlags flags = Qt::AutoColor) Q_DECL_OVERRIDE; + virtual void drawTextItem(const QPointF &p, const QTextItem &textItem) Q_DECL_OVERRIDE; + virtual void fill(const QVectorPath &path, const QBrush &brush) Q_DECL_OVERRIDE; + virtual void stroke(const QVectorPath &path, const QPen &pen) Q_DECL_OVERRIDE; + virtual void clip(const QVectorPath &path, Qt::ClipOperation op) Q_DECL_OVERRIDE; + + virtual void drawStaticTextItem(QStaticTextItem *textItem) Q_DECL_OVERRIDE; + + bool drawTexture(const QRectF &r, GLuint textureId, const QSize &size, const QRectF &sr); + + Type type() const Q_DECL_OVERRIDE { return OpenGL2; } + + virtual void setState(QPainterState *s) Q_DECL_OVERRIDE; + virtual QPainterState *createState(QPainterState *orig) const Q_DECL_OVERRIDE; + inline QOpenGL2PaintEngineState *state() { + return static_cast(QPaintEngineEx::state()); + } + inline const QOpenGL2PaintEngineState *state() const { + return static_cast(QPaintEngineEx::state()); + } + + void beginNativePainting() Q_DECL_OVERRIDE; + void endNativePainting() Q_DECL_OVERRIDE; + + void invalidateState(); + + void setRenderTextActive(bool); + + bool isNativePaintingActive() const; + bool requiresPretransformedGlyphPositions(QFontEngine *, const QTransform &) const Q_DECL_OVERRIDE { return false; } + bool shouldDrawCachedGlyphs(QFontEngine *, const QTransform &) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QOpenGL2PaintEngineEx) + + friend class QOpenGLEngineShaderManager; +}; + +// This probably needs to grow to GL_MAX_VERTEX_ATTRIBS, but 3 is ok for now as that's +// all the GL2 engine uses: +#define QT_GL_VERTEX_ARRAY_TRACKED_COUNT 3 + +class QOpenGL2PaintEngineExPrivate : public QPaintEngineExPrivate +{ + Q_DECLARE_PUBLIC(QOpenGL2PaintEngineEx) +public: + enum StencilFillMode { + OddEvenFillMode, + WindingFillMode, + TriStripStrokeFillMode + }; + + QOpenGL2PaintEngineExPrivate(QOpenGL2PaintEngineEx *q_ptr) : + q(q_ptr), + shaderManager(0), + width(0), height(0), + ctx(0), + useSystemClip(true), + elementIndicesVBOId(0), + opacityArray(0), + snapToPixelGrid(false), + nativePaintingActive(false), + inverseScale(1), + lastTextureUnitUsed(QT_UNKNOWN_TEXTURE_UNIT), + vertexBuffer(QOpenGLBuffer::VertexBuffer), + texCoordBuffer(QOpenGLBuffer::VertexBuffer), + opacityBuffer(QOpenGLBuffer::VertexBuffer), + indexBuffer(QOpenGLBuffer::IndexBuffer) + { } + + ~QOpenGL2PaintEngineExPrivate(); + + void updateBrushTexture(); + void updateBrushUniforms(); + void updateMatrix(); + void updateCompositionMode(); + + enum TextureUpdateMode { UpdateIfNeeded, ForceUpdate }; + template + void updateTexture(GLenum textureUnit, const T &texture, GLenum wrapMode, GLenum filterMode, TextureUpdateMode updateMode = UpdateIfNeeded); + template + GLuint bindTexture(const T &texture); + void activateTextureUnit(GLenum textureUnit); + + void resetGLState(); + + // fill, stroke, drawTexture, drawPixmaps & drawCachedGlyphs are the main rendering entry-points, + // however writeClip can also be thought of as en entry point as it does similar things. + void fill(const QVectorPath &path); + void stroke(const QVectorPath &path, const QPen &pen); + void drawTexture(const QOpenGLRect& dest, const QOpenGLRect& src, const QSize &textureSize, bool opaque, bool pattern = false); + void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, + QPainter::PixmapFragmentHints hints); + void drawCachedGlyphs(QFontEngine::GlyphFormat glyphFormat, QStaticTextItem *staticTextItem); + + // Calls glVertexAttributePointer if the pointer has changed + inline void uploadData(unsigned int arrayIndex, const GLfloat *data, GLuint count); + inline bool uploadIndexData(const void *data, GLenum indexValueType, GLuint count); + + // draws whatever is in the vertex array: + void drawVertexArrays(const float *data, int *stops, int stopCount, GLenum primitive); + void drawVertexArrays(QOpenGL2PEXVertexArray &vertexArray, GLenum primitive) { + drawVertexArrays((const float *) vertexArray.data(), vertexArray.stops(), vertexArray.stopCount(), primitive); + } + + // Composites the bounding rect onto dest buffer: + void composite(const QOpenGLRect& boundingRect); + + // Calls drawVertexArrays to render into stencil buffer: + void fillStencilWithVertexArray(const float *data, int count, int *stops, int stopCount, const QOpenGLRect &bounds, StencilFillMode mode); + void fillStencilWithVertexArray(QOpenGL2PEXVertexArray& vertexArray, bool useWindingFill) { + fillStencilWithVertexArray((const float *) vertexArray.data(), 0, vertexArray.stops(), vertexArray.stopCount(), + vertexArray.boundingRect(), + useWindingFill ? WindingFillMode : OddEvenFillMode); + } + + 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); + } + + void clearClip(uint value); + void writeClip(const QVectorPath &path, uint value); + void resetClipIfNeeded(); + + void updateClipScissorTest(); + void setScissor(const QRect &rect); + void regenerateClip(); + void systemStateChanged() Q_DECL_OVERRIDE; + + void setVertexAttribArrayEnabled(int arrayIndex, bool enabled = true); + void syncGlState(); + + static QOpenGLEngineShaderManager* shaderManagerForEngine(QOpenGL2PaintEngineEx *engine) { return engine->d_func()->shaderManager; } + static QOpenGL2PaintEngineExPrivate *getData(QOpenGL2PaintEngineEx *engine) { return engine->d_func(); } + static void cleanupVectorPath(QPaintEngineEx *engine, void *data); + + QOpenGLExtensions funcs; + + QOpenGL2PaintEngineEx* q; + QOpenGLEngineShaderManager* shaderManager; + QOpenGLPaintDevice* device; + int width, height; + QOpenGLContext *ctx; + EngineMode mode; + QFontEngine::GlyphFormat glyphCacheFormat; + + bool vertexAttributeArraysEnabledState[QT_GL_VERTEX_ARRAY_TRACKED_COUNT]; + + // Dirty flags + bool matrixDirty; // Implies matrix uniforms are also dirty + bool compositionModeDirty; + bool brushTextureDirty; + bool brushUniformsDirty; + bool opacityUniformDirty; + bool matrixUniformDirty; + + bool stencilClean; // Has the stencil not been used for clipping so far? + bool useSystemClip; + QRegion dirtyStencilRegion; + QRect currentScissorBounds; + uint maxClip; + + QBrush currentBrush; // May not be the state's brush! + const QBrush noBrush; + + QImage currentBrushImage; + + QOpenGL2PEXVertexArray vertexCoordinateArray; + QOpenGL2PEXVertexArray textureCoordinateArray; + QVector elementIndices; + GLuint elementIndicesVBOId; + QDataBuffer opacityArray; + GLfloat staticVertexCoordinateArray[8]; + GLfloat staticTextureCoordinateArray[8]; + + bool snapToPixelGrid; + bool nativePaintingActive; + GLfloat pmvMatrix[3][3]; + GLfloat inverseScale; + + GLenum lastTextureUnitUsed; + GLuint lastTextureUsed; + + QOpenGLVertexArrayObject vao; + QOpenGLBuffer vertexBuffer; + QOpenGLBuffer texCoordBuffer; + QOpenGLBuffer opacityBuffer; + QOpenGLBuffer indexBuffer; + + bool needsSync; + bool multisamplingAlwaysEnabled; + + QTriangulatingStroker stroker; + QDashedStrokeProcessor dasher; + + QVector unusedVBOSToClean; + QVector unusedIBOSToClean; + + const GLfloat *vertexAttribPointers[3]; +}; + + +void QOpenGL2PaintEngineExPrivate::uploadData(unsigned int arrayIndex, const GLfloat *data, GLuint count) +{ + Q_ASSERT(arrayIndex < 3); + + // If a vertex array object is created we have a profile that supports them + // and we will upload the data via a QOpenGLBuffer. Otherwise we will use + // the legacy way of uploading the data via glVertexAttribPointer. + if (vao.isCreated()) { + if (arrayIndex == QT_VERTEX_COORDS_ATTR) { + vertexBuffer.bind(); + vertexBuffer.allocate(data, count * sizeof(float)); + } + if (arrayIndex == QT_TEXTURE_COORDS_ATTR) { + texCoordBuffer.bind(); + texCoordBuffer.allocate(data, count * sizeof(float)); + } + if (arrayIndex == QT_OPACITY_ATTR) { + opacityBuffer.bind(); + opacityBuffer.allocate(data, count * sizeof(float)); + } + if (arrayIndex == QT_OPACITY_ATTR) + funcs.glVertexAttribPointer(arrayIndex, 1, GL_FLOAT, GL_FALSE, 0, 0); + else + funcs.glVertexAttribPointer(arrayIndex, 2, GL_FLOAT, GL_FALSE, 0, 0); + } else { + // If we already uploaded the data we don't have to do it again + if (data == vertexAttribPointers[arrayIndex]) + return; + + // Store the data in cache and upload it to the graphics card. + vertexAttribPointers[arrayIndex] = data; + if (arrayIndex == QT_OPACITY_ATTR) + funcs.glVertexAttribPointer(arrayIndex, 1, GL_FLOAT, GL_FALSE, 0, data); + else + funcs.glVertexAttribPointer(arrayIndex, 2, GL_FLOAT, GL_FALSE, 0, data); + } +} + +bool QOpenGL2PaintEngineExPrivate::uploadIndexData(const void *data, GLenum indexValueType, GLuint count) +{ + // Follow the uploadData() logic: VBOs are used only when VAO support is available. + // Otherwise the legacy client-side pointer path is used. + if (vao.isCreated()) { + Q_ASSERT(indexValueType == GL_UNSIGNED_SHORT || indexValueType == GL_UNSIGNED_INT); + indexBuffer.bind(); + indexBuffer.allocate(data, count * (indexValueType == GL_UNSIGNED_SHORT ? sizeof(quint16) : sizeof(quint32))); + return true; + } + return false; +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglprogrambinarycache_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglprogrambinarycache_p.h new file mode 100644 index 000000000..a0e1f91e2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglprogrambinarycache_p.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLPROGRAMBINARYCACHE_P_H +#define QOPENGLPROGRAMBINARYCACHE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLProgramBinaryCache +{ +public: + struct ShaderDesc { + ShaderDesc() { } + ShaderDesc(QOpenGLShader::ShaderType type, const QByteArray &source = QByteArray()) + : type(type), source(source) + { } + QOpenGLShader::ShaderType type; + QByteArray source; + }; + struct ProgramDesc { + QVector shaders; + }; + + QOpenGLProgramBinaryCache(); + + bool load(const QByteArray &cacheKey, uint programId); + void save(const QByteArray &cacheKey, uint programId); + +private: + QString cacheFileName(const QByteArray &cacheKey) const; + bool verifyHeader(const QByteArray &buf) const; + bool setProgramBinary(uint programId, uint blobFormat, const void *p, uint blobSize); + + QString m_cacheDir; + bool m_cacheWritable; + struct MemCacheEntry { + MemCacheEntry(const void *p, int size, uint format) + : blob(reinterpret_cast(p), size), + format(format) + { } + QByteArray blob; + uint format; + }; + QCache m_memCache; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglqueryhelper_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglqueryhelper_p.h new file mode 100644 index 000000000..60dbf9c74 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglqueryhelper_p.h @@ -0,0 +1,186 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLQUERYHELPER_P_H +#define QOPENGLQUERYHELPER_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 + +#if !defined(QT_OPENGL_ES_2) + +#include + +QT_BEGIN_NAMESPACE + +// Helper class used by QOpenGLTimerQuery and later will be used by +// QOpenGLOcclusionQuery +class QOpenGLQueryHelper +{ +public: + QOpenGLQueryHelper(QOpenGLContext *context) + : GetQueryObjectuiv(0), + GetQueryObjectiv(0), + GetQueryiv(0), + EndQuery(0), + BeginQuery(0), + IsQuery(0), + DeleteQueries(0), + GenQueries(0), + GetInteger64v(0), + GetQueryObjectui64v(0), + GetQueryObjecti64v(0), + QueryCounter(0) + { + Q_ASSERT(context); + + // Core in OpenGL >=1.5 + GetQueryObjectuiv = reinterpret_cast(context->getProcAddress("glGetQueryObjectuiv")); + GetQueryObjectiv = reinterpret_cast(context->getProcAddress("glGetQueryObjectiv")); + GetQueryiv = reinterpret_cast(context->getProcAddress("glGetQueryiv")); + EndQuery = reinterpret_cast(context->getProcAddress("glEndQuery")); + BeginQuery = reinterpret_cast(context->getProcAddress("glBeginQuery")); + IsQuery = reinterpret_cast(context->getProcAddress("glIsQuery")); + DeleteQueries = reinterpret_cast(context->getProcAddress("glDeleteQueries")); + GenQueries = reinterpret_cast(context->getProcAddress("glGenQueries")); + + // Core in OpenGL >=3.2 + GetInteger64v = reinterpret_cast(context->getProcAddress("glGetInteger64v")); + + // Core in OpenGL >=3.3 / ARB_timer_query + GetQueryObjectui64v = reinterpret_cast(context->getProcAddress("glGetQueryObjectui64v")); + GetQueryObjecti64v = reinterpret_cast(context->getProcAddress("glGetQueryObjecti64v")); + QueryCounter = reinterpret_cast(context->getProcAddress("glQueryCounter")); + } + + inline void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) + { + GetQueryObjectuiv(id, pname, params); + } + + inline void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) + { + GetQueryObjectiv(id, pname, params); + } + + inline void glGetQueryiv(GLenum target, GLenum pname, GLint *params) + { + GetQueryiv(target, pname, params); + } + + inline void glEndQuery(GLenum target) + { + EndQuery(target); + } + + inline void glBeginQuery(GLenum target, GLuint id) + { + BeginQuery(target, id); + } + + inline GLboolean glIsQuery(GLuint id) + { + return IsQuery(id); + } + + inline void glDeleteQueries(GLsizei n, const GLuint *ids) + { + DeleteQueries(n, ids); + } + + inline void glGenQueries(GLsizei n, GLuint *ids) + { + GenQueries(n, ids); + } + + inline void glGetInteger64v(GLenum pname, GLint64 *params) + { + GetInteger64v(pname, params); + } + + inline void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) + { + GetQueryObjectui64v(id, pname, params); + } + + inline void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) + { + GetQueryObjecti64v(id, pname, params); + } + + inline void glQueryCounter(GLuint id, GLenum target) + { + QueryCounter(id, target); + } + +private: + // Core in OpenGL >=1.5 + void (QOPENGLF_APIENTRYP GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetQueryObjectiv)(GLuint id, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetQueryiv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP EndQuery)(GLenum target); + void (QOPENGLF_APIENTRYP BeginQuery)(GLenum target, GLuint id); + GLboolean (QOPENGLF_APIENTRYP IsQuery)(GLuint id); + void (QOPENGLF_APIENTRYP DeleteQueries)(GLsizei n, const GLuint *ids); + void (QOPENGLF_APIENTRYP GenQueries)(GLsizei n, GLuint *ids); + + // Core in OpenGL >=3.2 + void (QOPENGLF_APIENTRYP GetInteger64v)(GLenum pname, GLint64 *params); + + // Core in OpenGL >=3.3 and provided by ARB_timer_query + void (QOPENGLF_APIENTRYP GetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 *params); + void (QOPENGLF_APIENTRYP GetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 *params); + void (QOPENGLF_APIENTRYP QueryCounter)(GLuint id, GLenum target); +}; + +QT_END_NAMESPACE + +#endif + +#endif // QOPENGLQUERYHELPER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglshadercache_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglshadercache_p.h new file mode 100644 index 000000000..0f730602b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglshadercache_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// 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. +// + +#ifndef QOPENGLSHADERCACHE_P_H +#define QOPENGLSHADERCACHE_P_H + +#include + +QT_BEGIN_NAMESPACE + + +class QOpenGLShaderProgram; +class QOpenGLContext; + +class CachedShader +{ +public: + inline CachedShader(const QByteArray &, const QByteArray &) + {} + + inline bool isCached() + { + return false; + } + + inline bool load(QOpenGLShaderProgram *, QOpenGLContext *) + { + return false; + } + + inline bool store(QOpenGLShaderProgram *, QOpenGLContext *) + { + return false; + } +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltexture_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltexture_p.h new file mode 100644 index 000000000..f7694f77b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltexture_p.h @@ -0,0 +1,180 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTOPENGLTEXTURE_P_H +#define QABSTRACTOPENGLTEXTURE_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. +// + +#ifndef QT_NO_OPENGL + +#include +#include "private/qobject_p.h" +#include "qopengltexture.h" +#include "qopengl.h" + +#include + +namespace { +inline double qLog2(const double x) +{ + return std::log(x) / std::log(2.0); +} +} + +QT_BEGIN_NAMESPACE + +class QOpenGLContext; +class QOpenGLTextureHelper; +class QOpenGLFunctions; + +class QOpenGLTexturePrivate +{ +public: + QOpenGLTexturePrivate(QOpenGLTexture::Target textureTarget, + QOpenGLTexture *qq); + ~QOpenGLTexturePrivate(); + + Q_DECLARE_PUBLIC(QOpenGLTexture) + + void resetFuncs(QOpenGLTextureHelper *funcs); + void initializeOpenGLFunctions(); + + bool create(); + void destroy(); + + void bind(); + void bind(uint unit, QOpenGLTexture::TextureUnitReset reset = QOpenGLTexture::DontResetTextureUnit); + void release(); + void release(uint unit, QOpenGLTexture::TextureUnitReset reset = QOpenGLTexture::DontResetTextureUnit); + bool isBound() const; + bool isBound(uint unit) const; + + void allocateStorage(QOpenGLTexture::PixelFormat pixelFormat, QOpenGLTexture::PixelType pixelType); + void allocateMutableStorage(QOpenGLTexture::PixelFormat pixelFormat, QOpenGLTexture::PixelType pixelType); + void allocateImmutableStorage(); + void setData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, + QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, + const void *data, const QOpenGLPixelTransferOptions * const options); + void setCompressedData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, + int dataSize, const void *data, + const QOpenGLPixelTransferOptions * const options); + + + void setWrapMode(QOpenGLTexture::WrapMode mode); + void setWrapMode(QOpenGLTexture::CoordinateDirection direction, QOpenGLTexture::WrapMode mode); + QOpenGLTexture::WrapMode wrapMode(QOpenGLTexture::CoordinateDirection direction) const; + + QOpenGLTexture *createTextureView(QOpenGLTexture::Target target, QOpenGLTexture::TextureFormat viewFormat, + int minimumMipmapLevel, int maximumMipmapLevel, + int minimumLayer, int maximumLayer) const; + + int evaluateMipLevels() const; + + inline int maximumMipLevelCount() const + { + return 1 + std::floor(qLog2(qMax(dimensions[0], qMax(dimensions[1], dimensions[2])))); + } + + static inline int mipLevelSize(int mipLevel, int baseLevelSize) + { + return std::floor(double(qMax(1, baseLevelSize >> mipLevel))); + } + + bool isUsingImmutableStorage() const; + + QOpenGLTexture *q_ptr; + QOpenGLContext *context; + QOpenGLTexture::Target target; + QOpenGLTexture::BindingTarget bindingTarget; + GLuint textureId; + QOpenGLTexture::TextureFormat format; + QOpenGLTexture::TextureFormatClass formatClass; + int dimensions[3]; + int requestedMipLevels; + int mipLevels; + int layers; + int faces; + + int samples; + bool fixedSamplePositions; + + int baseLevel; + int maxLevel; + + QOpenGLTexture::SwizzleValue swizzleMask[4]; + QOpenGLTexture::DepthStencilMode depthStencilMode; + QOpenGLTexture::ComparisonFunction comparisonFunction; + QOpenGLTexture::ComparisonMode comparisonMode; + + QOpenGLTexture::Filter minFilter; + QOpenGLTexture::Filter magFilter; + float maxAnisotropy; + QOpenGLTexture::WrapMode wrapModes[3]; + QVariantList borderColor; + float minLevelOfDetail; + float maxLevelOfDetail; + float levelOfDetailBias; + + bool textureView; + bool autoGenerateMipMaps; + bool storageAllocated; + + QOpenGLTextureHelper *texFuncs; + QOpenGLFunctions *functions; + + QOpenGLTexture::Features features; +}; + +QT_END_NAMESPACE + +#undef Q_CALL_MEMBER_FUNCTION + +#endif // QT_NO_OPENGL + +#endif // QABSTRACTOPENGLTEXTURE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltexturecache_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltexturecache_p.h new file mode 100644 index 000000000..4a438c8d9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltexturecache_p.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// 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. +// + +#ifndef QOPENGLTEXTURECACHE_P_H +#define QOPENGLTEXTURECACHE_P_H + +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLCachedTexture; + +class Q_GUI_EXPORT QOpenGLTextureCache : public QOpenGLSharedResource +{ +public: + static QOpenGLTextureCache *cacheForContext(QOpenGLContext *context); + + QOpenGLTextureCache(QOpenGLContext *); + ~QOpenGLTextureCache(); + + enum BindOption { + NoBindOption = 0x0000, + PremultipliedAlphaBindOption = 0x0001, + UseRedFor8BitBindOption = 0x0002, + }; + Q_DECLARE_FLAGS(BindOptions, BindOption) + + GLuint bindTexture(QOpenGLContext *context, const QPixmap &pixmap, QOpenGLTextureCache::BindOptions options = PremultipliedAlphaBindOption); + GLuint bindTexture(QOpenGLContext *context, const QImage &image, QOpenGLTextureCache::BindOptions options = PremultipliedAlphaBindOption); + + void invalidate(qint64 key); + + void invalidateResource() Q_DECL_OVERRIDE; + void freeResource(QOpenGLContext *ctx) Q_DECL_OVERRIDE; + +private: + GLuint bindTexture(QOpenGLContext *context, qint64 key, const QImage &image, QOpenGLTextureCache::BindOptions options); + + QMutex m_mutex; + QCache m_cache; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLTextureCache::BindOptions) + +class QOpenGLCachedTexture +{ +public: + QOpenGLCachedTexture(GLuint id, QOpenGLTextureCache::BindOptions options, QOpenGLContext *context); + ~QOpenGLCachedTexture() { m_resource->free(); } + + GLuint id() const { return m_resource->id(); } + QOpenGLTextureCache::BindOptions options() const { return m_options; } + +private: + QOpenGLSharedResourceGuard *m_resource; + QOpenGLTextureCache::BindOptions m_options; +}; + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltextureglyphcache_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltextureglyphcache_p.h new file mode 100644 index 000000000..6a1550dbe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltextureglyphcache_p.h @@ -0,0 +1,176 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLTEXTUREGLYPHCACHE_P_H +#define QOPENGLTEXTUREGLYPHCACHE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include + +// #define QT_GL_TEXTURE_GLYPH_CACHE_DEBUG + +QT_BEGIN_NAMESPACE + +class QOpenGL2PaintEngineExPrivate; + +class QOpenGLGlyphTexture : public QOpenGLSharedResource +{ +public: + explicit QOpenGLGlyphTexture(QOpenGLContext *ctx) + : QOpenGLSharedResource(ctx->shareGroup()) + , m_width(0) + , m_height(0) + { + if (!ctx->d_func()->workaround_brokenFBOReadBack) + QOpenGLFunctions(ctx).glGenFramebuffers(1, &m_fbo); + +#ifdef QT_GL_TEXTURE_GLYPH_CACHE_DEBUG + qDebug(" -> QOpenGLGlyphTexture() %p for context %p.", this, ctx); +#endif + } + + void freeResource(QOpenGLContext *context) Q_DECL_OVERRIDE + { + QOpenGLContext *ctx = context; +#ifdef QT_GL_TEXTURE_GLYPH_CACHE_DEBUG + qDebug("~QOpenGLGlyphTexture() %p for context %p.", this, ctx); +#endif + if (!ctx->d_func()->workaround_brokenFBOReadBack) + ctx->functions()->glDeleteFramebuffers(1, &m_fbo); + if (m_width || m_height) + ctx->functions()->glDeleteTextures(1, &m_texture); + } + + void invalidateResource() Q_DECL_OVERRIDE + { + m_texture = 0; + m_fbo = 0; + m_width = 0; + m_height = 0; + } + + GLuint m_texture; + GLuint m_fbo; + int m_width; + int m_height; +}; + +class Q_GUI_EXPORT QOpenGLTextureGlyphCache : public QImageTextureGlyphCache +{ +public: + QOpenGLTextureGlyphCache(QFontEngine::GlyphFormat glyphFormat, const QTransform &matrix); + ~QOpenGLTextureGlyphCache(); + + virtual void createTextureData(int width, int height) Q_DECL_OVERRIDE; + virtual void resizeTextureData(int width, int height) Q_DECL_OVERRIDE; + virtual void fillTexture(const Coord &c, glyph_t glyph, QFixed subPixelPosition) Q_DECL_OVERRIDE; + virtual int glyphPadding() const Q_DECL_OVERRIDE; + virtual int maxTextureWidth() const Q_DECL_OVERRIDE; + virtual int maxTextureHeight() const Q_DECL_OVERRIDE; + + inline GLuint texture() const { + QOpenGLTextureGlyphCache *that = const_cast(this); + QOpenGLGlyphTexture *glyphTexture = that->m_textureResource; + return glyphTexture ? glyphTexture->m_texture : 0; + } + + inline int width() const { + QOpenGLTextureGlyphCache *that = const_cast(this); + QOpenGLGlyphTexture *glyphTexture = that->m_textureResource; + return glyphTexture ? glyphTexture->m_width : 0; + } + inline int height() const { + QOpenGLTextureGlyphCache *that = const_cast(this); + QOpenGLGlyphTexture *glyphTexture = that->m_textureResource; + return glyphTexture ? glyphTexture->m_height : 0; + } + + inline void setPaintEnginePrivate(QOpenGL2PaintEngineExPrivate *p) { pex = p; } + + inline const QOpenGLContextGroup *contextGroup() const { return m_textureResource ? m_textureResource->group() : 0; } + + inline int serialNumber() const { return m_serialNumber; } + + enum FilterMode { + Nearest, + Linear + }; + FilterMode filterMode() const { return m_filterMode; } + void setFilterMode(FilterMode m) { m_filterMode = m; } + + void clear(); + +private: + void setupVertexAttribs(); + + QOpenGLGlyphTexture *m_textureResource; + + QOpenGL2PaintEngineExPrivate *pex; + QOpenGLShaderProgram *m_blitProgram; + FilterMode m_filterMode; + + GLfloat m_vertexCoordinateArray[8]; + GLfloat m_textureCoordinateArray[8]; + + int m_serialNumber; + + QOpenGLBuffer m_buffer; + QOpenGLVertexArrayObject m_vao; +}; + +QT_END_NAMESPACE + +#endif // QOPENGLTEXTUREGLYPHCACHE_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltexturehelper_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltexturehelper_p.h new file mode 100644 index 000000000..00f6f9e5a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopengltexturehelper_p.h @@ -0,0 +1,797 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLTEXTUREHELPER_P_H +#define QOPENGLTEXTUREHELPER_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 + +#ifndef QT_NO_OPENGL + +#include "qopengl.h" +#include "qopenglpixeltransferoptions.h" +#include "qopengltexture.h" +#include "qopenglfunctions.h" + +QT_BEGIN_NAMESPACE + +// Constants for OpenGL and OpenGL ES 3.0+ which are not available with OpenGL ES 2.0. +#ifndef GL_TEXTURE_BASE_LEVEL +#define GL_TEXTURE_BASE_LEVEL 0x813C +#endif +#ifndef GL_TEXTURE_MAX_LEVEL +#define GL_TEXTURE_MAX_LEVEL 0x813D +#endif +#ifndef GL_TEXTURE_COMPARE_MODE +#define GL_TEXTURE_COMPARE_MODE 0x884C +#endif +#ifndef GL_TEXTURE_COMPARE_FUNC +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#endif + +// use GL_APICALL only on Android + __clang__ +#if !defined(Q_OS_ANDROID) || !defined(__clang__) +# undef GL_APICALL +# define GL_APICALL +#elif !defined(GL_APICALL) +# define GL_APICALL +#endif + +class QOpenGLContext; + +class QOpenGLTextureHelper +{ +public: + QOpenGLTextureHelper(QOpenGLContext *context); + + // DSA-like API. Will either use real DSA or our emulation + inline void glTextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param) + { + (this->*TextureParameteri)(texture, target, bindingTarget, pname, param); + } + + inline void glTextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, const GLint *params) + { + (this->*TextureParameteriv)(texture, target, bindingTarget, pname, params); + } + + inline void glTextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param) + { + (this->*TextureParameterf)(texture, target, bindingTarget, pname, param); + } + + inline void glTextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, const GLfloat *params) + { + (this->*TextureParameterfv)(texture, target, bindingTarget, pname, params); + } + + inline void glGenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget) + { + (this->*GenerateTextureMipmap)(texture, target, bindingTarget); + } + + inline void glTextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, + GLsizei width, GLsizei height, GLsizei depth) + { + (this->*TextureStorage3D)(texture, target, bindingTarget, levels, internalFormat, width, height, depth); + } + + inline void glTextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, + GLsizei width, GLsizei height) + { + (this->*TextureStorage2D)(texture, target, bindingTarget, levels, internalFormat, width, height); + } + + inline void glTextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, + GLsizei width) + { + (this->*TextureStorage1D)(texture, target, bindingTarget, levels, internalFormat, width); + } + + inline void glTextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations) + { + (this->*TextureStorage3DMultisample)(texture, target, bindingTarget, samples, internalFormat, width, height, depth, fixedSampleLocations); + } + + inline void glTextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, + GLsizei width, GLsizei height, GLboolean fixedSampleLocations) + { + (this->*TextureStorage2DMultisample)(texture, target, bindingTarget, samples, internalFormat, width, height, fixedSampleLocations); + } + + inline void glTextureImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) + { + (this->*TextureImage3D)(texture, target, bindingTarget, level, internalFormat, width, height, depth, border, format, type, pixels); + } + + inline void glTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) + { + (this->*TextureImage2D)(texture, target, bindingTarget, level, internalFormat, width, height, border, format, type, pixels); + } + + inline void glTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) + { + (this->*TextureImage1D)(texture, target, bindingTarget, level, internalFormat, width, border, format, type, pixels); + } + + inline void glTextureSubImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + const GLvoid *pixels, const QOpenGLPixelTransferOptions * const options = 0) + { + if (options) { + QOpenGLPixelTransferOptions oldOptions = savePixelUploadOptions(); + setPixelUploadOptions(*options); + (this->*TextureSubImage3D)(texture, target, bindingTarget, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + setPixelUploadOptions(oldOptions); + } else { + (this->*TextureSubImage3D)(texture, target, bindingTarget, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + } + } + + inline void glTextureSubImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, GLenum format, GLenum type, + const GLvoid *pixels, const QOpenGLPixelTransferOptions * const options = 0) + { + if (options) { + QOpenGLPixelTransferOptions oldOptions = savePixelUploadOptions(); + setPixelUploadOptions(*options); + (this->*TextureSubImage2D)(texture, target, bindingTarget, level, xoffset, yoffset, width, height, format, type, pixels); + setPixelUploadOptions(oldOptions); + } else { + (this->*TextureSubImage2D)(texture, target, bindingTarget, level, xoffset, yoffset, width, height, format, type, pixels); + } + } + + inline void glTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, + GLsizei width, GLenum format, GLenum type, + const GLvoid *pixels, const QOpenGLPixelTransferOptions * const options = 0) + { + if (options) { + QOpenGLPixelTransferOptions oldOptions = savePixelUploadOptions(); + setPixelUploadOptions(*options); + (this->*TextureSubImage1D)(texture, target, bindingTarget, level, xoffset, width, format, type, pixels); + setPixelUploadOptions(oldOptions); + } else { + (this->*TextureSubImage1D)(texture, target, bindingTarget, level, xoffset, width, format, type, pixels); + } + } + + inline void glTextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations) + { + (this->*TextureImage3DMultisample)(texture, target, bindingTarget, samples, internalFormat, width, height, depth, fixedSampleLocations); + } + + inline void glTextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, + GLsizei width, GLsizei height, GLboolean fixedSampleLocations) + { + (this->*TextureImage2DMultisample)(texture, target, bindingTarget, samples, internalFormat, width, height, fixedSampleLocations); + } + + inline void glCompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, const GLvoid *bits, + const QOpenGLPixelTransferOptions * const options = 0) + { + if (options) { + QOpenGLPixelTransferOptions oldOptions = savePixelUploadOptions(); + setPixelUploadOptions(*options); + (this->*CompressedTextureSubImage1D)(texture, target, bindingTarget, level, xoffset, width, format, imageSize, bits); + setPixelUploadOptions(oldOptions); + } else { + (this->*CompressedTextureSubImage1D)(texture, target, bindingTarget, level, xoffset, width, format, imageSize, bits); + } + } + + inline void glCompressedTextureSubImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, const GLvoid *bits, + const QOpenGLPixelTransferOptions * const options = 0) + { + if (options) { + QOpenGLPixelTransferOptions oldOptions = savePixelUploadOptions(); + setPixelUploadOptions(*options); + (this->*CompressedTextureSubImage2D)(texture, target, bindingTarget, level, xoffset, yoffset, width, height, format, imageSize, bits); + setPixelUploadOptions(oldOptions); + } else { + (this->*CompressedTextureSubImage2D)(texture, target, bindingTarget, level, xoffset, yoffset, width, height, format, imageSize, bits); + } + } + + inline void glCompressedTextureSubImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLsizei imageSize, const GLvoid *bits, + const QOpenGLPixelTransferOptions * const options = 0) + { + if (options) { + QOpenGLPixelTransferOptions oldOptions = savePixelUploadOptions(); + setPixelUploadOptions(*options); + (this->*CompressedTextureSubImage3D)(texture, target, bindingTarget, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits); + setPixelUploadOptions(oldOptions); + } else { + (this->*CompressedTextureSubImage3D)(texture, target, bindingTarget, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits); + } + } + + inline void glCompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLenum internalFormat, GLsizei width, + GLint border, GLsizei imageSize, const GLvoid *bits, + const QOpenGLPixelTransferOptions * const options = 0) + { + if (options) { + QOpenGLPixelTransferOptions oldOptions = savePixelUploadOptions(); + setPixelUploadOptions(*options); + (this->*CompressedTextureImage1D)(texture, target, bindingTarget, level, internalFormat, width, border, imageSize, bits); + setPixelUploadOptions(oldOptions); + } else { + (this->*CompressedTextureImage1D)(texture, target, bindingTarget, level, internalFormat, width, border, imageSize, bits); + } + } + + inline void glCompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLenum internalFormat, GLsizei width, GLsizei height, + GLint border, GLsizei imageSize, const GLvoid *bits, + const QOpenGLPixelTransferOptions * const options = 0) + + { + if (options) { + QOpenGLPixelTransferOptions oldOptions = savePixelUploadOptions(); + setPixelUploadOptions(*options); + (this->*CompressedTextureImage2D)(texture, target, bindingTarget, level, internalFormat, width, height, border, imageSize, bits); + setPixelUploadOptions(oldOptions); + } else { + (this->*CompressedTextureImage2D)(texture, target, bindingTarget, level, internalFormat, width, height, border, imageSize, bits); + } + } + + inline void glCompressedTextureImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLsizei imageSize, const GLvoid *bits, + const QOpenGLPixelTransferOptions * const options = 0) + { + if (options) { + QOpenGLPixelTransferOptions oldOptions = savePixelUploadOptions(); + setPixelUploadOptions(*options); + (this->*CompressedTextureImage3D)(texture, target, bindingTarget, level, internalFormat, width, height, depth, border, imageSize, bits); + setPixelUploadOptions(oldOptions); + } else { + (this->*CompressedTextureImage3D)(texture, target, bindingTarget, level, internalFormat, width, height, depth, border, imageSize, bits); + } + } + +private: + // DSA wrapper (so we can use pointer to member function as switch) + void dsa_TextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param); + + void dsa_TextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, const GLint *params); + + void dsa_TextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param); + + void dsa_TextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, const GLfloat *params); + + void dsa_GenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget); + + void dsa_TextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, + GLsizei width, GLsizei height, GLsizei depth); + + void dsa_TextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, + GLsizei width, GLsizei height); + + void dsa_TextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, + GLsizei width); + + void dsa_TextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + + void dsa_TextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, + GLsizei width, GLsizei height, GLboolean fixedSampleLocations); + + void dsa_TextureImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + void dsa_TextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + void dsa_TextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + void dsa_TextureSubImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + + void dsa_TextureSubImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + + void dsa_TextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, + GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + + void dsa_TextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + + void dsa_TextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, + GLsizei width, GLsizei height, GLboolean fixedSampleLocations); + + void dsa_CompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, const GLvoid *bits); + + void dsa_CompressedTextureSubImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, const GLvoid *bits); + + void dsa_CompressedTextureSubImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLsizei imageSize, const GLvoid *bits); + + void dsa_CompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLenum internalFormat, GLsizei width, + GLint border, GLsizei imageSize, const GLvoid *bits); + + void dsa_CompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLenum internalFormat, GLsizei width, GLsizei height, + GLint border, GLsizei imageSize, const GLvoid *bits); + + void dsa_CompressedTextureImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLsizei imageSize, const GLvoid *bits); + + // DSA emulation API + void qt_TextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param); + + void qt_TextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, const GLint *params); + + void qt_TextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param); + + void qt_TextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, const GLfloat *params); + + void qt_GenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget); + + void qt_TextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, + GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth); + + void qt_TextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, + GLenum internalFormat, GLsizei width, GLsizei height); + + void qt_TextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, + GLenum internalFormat, GLsizei width); + + void qt_TextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, + GLenum internalFormat, GLsizei width, GLsizei height, + GLsizei depth, GLboolean fixedSampleLocations); + + void qt_TextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, + GLenum internalFormat, GLsizei width, GLsizei height, + GLboolean fixedSampleLocations); + + void qt_TextureImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLenum format, GLenum type, + const GLvoid *pixels); + + void qt_TextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, + const GLvoid *pixels); + + void qt_TextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLint border, GLenum format, GLenum type, + const GLvoid *pixels); + + void qt_TextureSubImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLenum type, const GLvoid *pixels); + + void qt_TextureSubImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, const GLvoid *pixels); + + void qt_TextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLenum type, const GLvoid *pixels); + + void qt_TextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, + GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, + GLboolean fixedSampleLocations); + + void qt_TextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, + GLint internalFormat, GLsizei width, GLsizei height, + GLboolean fixedSampleLocations); + + void qt_CompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLsizei width, GLenum format, + GLsizei imageSize, const GLvoid *bits); + + void qt_CompressedTextureSubImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, const GLvoid *bits); + + void qt_CompressedTextureSubImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, + GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLsizei imageSize, const GLvoid *bits); + + void qt_CompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLint border, + GLsizei imageSize, const GLvoid *bits); + + void qt_CompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLsizei height, GLint border, + GLsizei imageSize, const GLvoid *bits); + + void qt_CompressedTextureImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLint border, + GLsizei imageSize, const GLvoid *bits); + +public: + // Raw OpenGL functions, resolved and used by our DSA-like static functions if no EXT_direct_state_access is available + + // OpenGL 1.0 + inline void glTexImage1D(GLenum target, GLint level, GLint internalFormat, + GLsizei width, GLint border, + GLenum format, GLenum type, const GLvoid *pixels) + { + TexImage1D(target, level, internalFormat, width, border, format, type, pixels); + } + + // OpenGL 1.1 + inline void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, + GLenum format, GLenum type, const GLvoid *pixels) + { + TexSubImage1D(target, level, xoffset, width, format, type, pixels); + } + + // OpenGL 1.2 + inline void glTexImage3D(GLenum target, GLint level, GLint internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLint border, + GLenum format, GLenum type, const GLvoid *pixels) + { + TexImage3D(target, level, internalFormat, width, height, depth, border, format, type, pixels); + } + + inline 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) + { + TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + } + + // OpenGL 1.3 + inline void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) + { + GetCompressedTexImage(target, level, img); + } + + inline void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, const GLvoid *data) + { + CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); + } + + inline void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) + { + CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); + } + + inline 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) + { + CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); + } + + inline void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLsizei width, + GLint border, GLsizei imageSize, const GLvoid *data) + { + CompressedTexImage1D(target, level, internalFormat, width, border, imageSize, data); + } + + inline void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, + GLint border, GLsizei imageSize, const GLvoid *data) + { + CompressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data); + } + + inline void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalFormat, + GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLsizei imageSize, const GLvoid *data) + { + CompressedTexImage3D(target, level, internalFormat, width, height, depth, border, imageSize, data); + } + + inline void glActiveTexture(GLenum texture) + { + ActiveTexture(texture); + } + + // OpenGL 3.0 + inline void glGenerateMipmap(GLenum target) + { + GenerateMipmap(target); + } + + // OpenGL 3.2 + inline void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalFormat, + GLsizei width, GLsizei height, GLsizei depth, + GLboolean fixedSampleLocations) + { + TexImage3DMultisample(target, samples, internalFormat, width, height, depth, fixedSampleLocations); + } + + inline void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalFormat, + GLsizei width, GLsizei height, + GLboolean fixedSampleLocations) + { + TexImage2DMultisample(target, samples, internalFormat, width, height, fixedSampleLocations); + } + + // OpenGL 4.2 + inline void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth) + { + TexStorage3D(target, levels, internalFormat, width, height, depth); + } + + inline void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height) + { + TexStorage2D(target, levels, internalFormat, width, height); + } + + inline void glTexStorage1D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width) + { + TexStorage1D(target, levels, internalFormat, width); + } + + // OpenGL 4.3 + inline void glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations) + { + TexStorage3DMultisample(target, samples, internalFormat, width, height, depth, fixedSampleLocations); + } + + inline void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalFormat, + GLsizei width, GLsizei height, GLboolean fixedSampleLocations) + { + TexStorage2DMultisample(target, samples, internalFormat, width, height, fixedSampleLocations); + } + + inline void glTexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer, + GLintptr offset, GLsizeiptr size) + { + TexBufferRange(target, internalFormat, buffer, offset, size); + } + + inline void glTextureView(GLuint texture, GLenum target, GLuint origTexture, GLenum internalFormat, + GLuint minLevel, GLuint numLevels, GLuint minLayer, GLuint numLayers) + { + TextureView(texture, target, origTexture, internalFormat, minLevel, numLevels, minLayer, numLayers); + } + + // Helper functions + inline QOpenGLPixelTransferOptions savePixelUploadOptions() + { + QOpenGLPixelTransferOptions options; + int val = 0; + functions->glGetIntegerv(GL_UNPACK_ALIGNMENT, &val); + options.setAlignment(val); +#if !defined(QT_OPENGL_ES_2) + functions->glGetIntegerv(GL_UNPACK_SKIP_IMAGES, &val); + options.setSkipImages(val); + functions->glGetIntegerv(GL_UNPACK_SKIP_ROWS, &val); + options.setSkipRows(val); + functions->glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &val); + options.setSkipPixels(val); + functions->glGetIntegerv(GL_UNPACK_IMAGE_HEIGHT, &val); + options.setImageHeight(val); + functions->glGetIntegerv(GL_UNPACK_ROW_LENGTH, &val); + options.setRowLength(val); + GLboolean b = GL_FALSE; + functions->glGetBooleanv(GL_UNPACK_LSB_FIRST, &b); + options.setLeastSignificantByteFirst(b); + functions->glGetBooleanv(GL_UNPACK_SWAP_BYTES, &b); + options.setSwapBytesEnabled(b); +#endif + return options; + } + + inline void setPixelUploadOptions(const QOpenGLPixelTransferOptions &options) + { + functions->glPixelStorei(GL_UNPACK_ALIGNMENT, options.alignment()); +#if !defined(QT_OPENGL_ES_2) + functions->glPixelStorei(GL_UNPACK_SKIP_IMAGES, options.skipImages()); + functions->glPixelStorei(GL_UNPACK_SKIP_ROWS, options.skipRows()); + functions->glPixelStorei(GL_UNPACK_SKIP_PIXELS, options.skipPixels()); + functions->glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, options.imageHeight()); + functions->glPixelStorei(GL_UNPACK_ROW_LENGTH, options.rowLength()); + functions->glPixelStorei(GL_UNPACK_LSB_FIRST, options.isLeastSignificantBitFirst()); + functions->glPixelStorei(GL_UNPACK_SWAP_BYTES, options.isSwapBytesEnabled()); +#endif + } + + QOpenGLFunctions *functions; +private: + // Typedefs and pointers to member functions used to switch between EXT_direct_state_access and our own emulated DSA. + // The argument match the corresponding GL function, but there's an extra "GLenum bindingTarget" which gets used with + // the DSA emulation -- it contains the right GL_BINDING_TEXTURE_X to use. + typedef void (QOpenGLTextureHelper::*TextureParameteriMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param); + typedef void (QOpenGLTextureHelper::*TextureParameterivMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, const GLint *params); + typedef void (QOpenGLTextureHelper::*TextureParameterfMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param); + typedef void (QOpenGLTextureHelper::*TextureParameterfvMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, const GLfloat *params); + typedef void (QOpenGLTextureHelper::*GenerateTextureMipmapMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget); + typedef void (QOpenGLTextureHelper::*TextureStorage3DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth); + typedef void (QOpenGLTextureHelper::*TextureStorage2DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height); + typedef void (QOpenGLTextureHelper::*TextureStorage1DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width); + typedef void (QOpenGLTextureHelper::*TextureStorage3DMultisampleMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + typedef void (QOpenGLTextureHelper::*TextureStorage2DMultisampleMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); + typedef void (QOpenGLTextureHelper::*TextureImage3DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + typedef void (QOpenGLTextureHelper::*TextureImage2DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + typedef void (QOpenGLTextureHelper::*TextureImage1DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + typedef void (QOpenGLTextureHelper::*TextureSubImage3DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + typedef void (QOpenGLTextureHelper::*TextureSubImage2DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + typedef void (QOpenGLTextureHelper::*TextureSubImage1DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + typedef void (QOpenGLTextureHelper::*TextureImage3DMultisampleMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + typedef void (QOpenGLTextureHelper::*TextureImage2DMultisampleMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); + typedef void (QOpenGLTextureHelper::*CompressedTextureSubImage1DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); + typedef void (QOpenGLTextureHelper::*CompressedTextureSubImage2DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); + typedef void (QOpenGLTextureHelper::*CompressedTextureSubImage3DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); + typedef void (QOpenGLTextureHelper::*CompressedTextureImage1DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); + typedef void (QOpenGLTextureHelper::*CompressedTextureImage2DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); + typedef void (QOpenGLTextureHelper::*CompressedTextureImage3DMemberFunc)(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); + + + TextureParameteriMemberFunc TextureParameteri; + TextureParameterivMemberFunc TextureParameteriv; + TextureParameterfMemberFunc TextureParameterf; + TextureParameterfvMemberFunc TextureParameterfv; + GenerateTextureMipmapMemberFunc GenerateTextureMipmap; + TextureStorage3DMemberFunc TextureStorage3D; + TextureStorage2DMemberFunc TextureStorage2D; + TextureStorage1DMemberFunc TextureStorage1D; + TextureStorage3DMultisampleMemberFunc TextureStorage3DMultisample; + TextureStorage2DMultisampleMemberFunc TextureStorage2DMultisample; + TextureImage3DMemberFunc TextureImage3D; + TextureImage2DMemberFunc TextureImage2D; + TextureImage1DMemberFunc TextureImage1D; + TextureSubImage3DMemberFunc TextureSubImage3D; + TextureSubImage2DMemberFunc TextureSubImage2D; + TextureSubImage1DMemberFunc TextureSubImage1D; + TextureImage3DMultisampleMemberFunc TextureImage3DMultisample; + TextureImage2DMultisampleMemberFunc TextureImage2DMultisample; + CompressedTextureSubImage1DMemberFunc CompressedTextureSubImage1D; + CompressedTextureSubImage2DMemberFunc CompressedTextureSubImage2D; + CompressedTextureSubImage3DMemberFunc CompressedTextureSubImage3D; + CompressedTextureImage1DMemberFunc CompressedTextureImage1D; + CompressedTextureImage2DMemberFunc CompressedTextureImage2D; + CompressedTextureImage3DMemberFunc CompressedTextureImage3D; + + // Raw function pointers for core and DSA functions + + // EXT_direct_state_access used when DSA is available + void (QOPENGLF_APIENTRYP TextureParameteriEXT)(GLuint texture, GLenum target, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP TextureParameterivEXT)(GLuint texture, GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP TextureParameterfEXT)(GLuint texture, GLenum target, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP TextureParameterfvEXT)(GLuint texture, GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP GenerateTextureMipmapEXT)(GLuint texture, GLenum target); + 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); + 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 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 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 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 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 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); + + + // Plus some missing ones that are in the NV_texture_multisample extension instead + 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); + + // OpenGL 1.0 + void (QOPENGLF_APIENTRYP TexImage1D)(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.1 + void (QOPENGLF_APIENTRYP TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.2 + 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); + 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); + + // OpenGL 1.3 + 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); + GL_APICALL 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); + GL_APICALL 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); + GL_APICALL void (QOPENGLF_APIENTRYP ActiveTexture)(GLenum texture); + + // OpenGL 3.0 + GL_APICALL void (QOPENGLF_APIENTRYP GenerateMipmap)(GLenum target); + + // OpenGL 3.2 + 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); + + // OpenGL 4.2 + 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); + + // OpenGL 4.3 + 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 TextureView)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +}; + +QT_END_NAMESPACE + +#undef Q_CALL_MEMBER_FUNCTION + +#endif // QT_NO_OPENGL + +#endif // QOPENGLTEXTUREHELPER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglversionfunctionsfactory_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglversionfunctionsfactory_p.h new file mode 100644 index 000000000..469a9cc62 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglversionfunctionsfactory_p.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 + +// +// 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 + +#ifndef QT_NO_OPENGL + +#include + +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/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglvertexarrayobject_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglvertexarrayobject_p.h new file mode 100644 index 000000000..937921765 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qopenglvertexarrayobject_p.h @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Sean Harmer +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLVERTEXARRAYOBJECT_P_H +#define QOPENGLVERTEXARRAYOBJECT_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. +// + +#include + +#ifndef QT_NO_OPENGL + +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLVertexArrayObjectHelper; +class QOpenGLContext; + +void Q_GUI_EXPORT qtInitializeVertexArrayObjectHelper(QOpenGLVertexArrayObjectHelper *helper, QOpenGLContext *context); + +class QOpenGLVertexArrayObjectHelper +{ + Q_DISABLE_COPY(QOpenGLVertexArrayObjectHelper) + +public: + explicit inline QOpenGLVertexArrayObjectHelper(QOpenGLContext *context) + : GenVertexArrays(Q_NULLPTR) + , DeleteVertexArrays(Q_NULLPTR) + , BindVertexArray(Q_NULLPTR) + , IsVertexArray(Q_NULLPTR) + { + qtInitializeVertexArrayObjectHelper(this, context); + } + + inline bool isValid() const + { + return GenVertexArrays && DeleteVertexArrays && BindVertexArray && IsVertexArray; + } + + inline void glGenVertexArrays(GLsizei n, GLuint *arrays) const + { + GenVertexArrays(n, arrays); + } + + inline void glDeleteVertexArrays(GLsizei n, const GLuint *arrays) const + { + DeleteVertexArrays(n, arrays); + } + + inline void glBindVertexArray(GLuint array) const + { + BindVertexArray(array); + } + + inline GLboolean glIsVertexArray(GLuint array) const + { + return IsVertexArray(array); + } + +private: + friend void Q_GUI_EXPORT qtInitializeVertexArrayObjectHelper(QOpenGLVertexArrayObjectHelper *helper, QOpenGLContext *context); + + // Function signatures are equivalent between desktop core, ARB, APPLE, ES 3 and ES 2 extensions + typedef void (QOPENGLF_APIENTRYP qt_GenVertexArrays_t)(GLsizei n, GLuint *arrays); + typedef void (QOPENGLF_APIENTRYP qt_DeleteVertexArrays_t)(GLsizei n, const GLuint *arrays); + typedef void (QOPENGLF_APIENTRYP qt_BindVertexArray_t)(GLuint array); + typedef GLboolean (QOPENGLF_APIENTRYP qt_IsVertexArray_t)(GLuint array); + + qt_GenVertexArrays_t GenVertexArrays; + qt_DeleteVertexArrays_t DeleteVertexArrays; + qt_BindVertexArray_t BindVertexArray; + qt_IsVertexArray_t IsVertexArray; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif // QOPENGLVERTEXARRAYOBJECT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qoutlinemapper_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qoutlinemapper_p.h new file mode 100644 index 000000000..71999fbde --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qoutlinemapper_p.h @@ -0,0 +1,215 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOUTLINEMAPPER_P_H +#define QOUTLINEMAPPER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include +#include + +#define QT_FT_BEGIN_HEADER +#define QT_FT_END_HEADER + +#include +#include +#include "qpaintengineex_p.h" + +QT_BEGIN_NAMESPACE + +// This limitations comes from qgrayraster.c. Any higher and +// rasterization of shapes will produce incorrect results. +const int QT_RASTER_COORD_LIMIT = 32767; + +//#define QT_DEBUG_CONVERT + +Q_GUI_EXPORT bool qt_scaleForTransform(const QTransform &transform, qreal *scale); + +/******************************************************************************** + * class QOutlineMapper + * + * Used to map between QPainterPath and the QT_FT_Outline structure used by the + * freetype scanconvertor. + * + * The outline mapper uses a path iterator to get points from the path, + * so that it is possible to transform the points as they are converted. The + * callback can be a noop, translate or full-fledged xform. (Tests indicated + * that using a C callback was low cost). + */ +class QOutlineMapper +{ +public: + QOutlineMapper() : + m_element_types(0), + m_elements(0), + m_points(0), + m_tags(0), + m_contours(0), + m_in_clip_elements(false) + { + } + + /*! + Sets up the matrix to be used for conversion. This also + sets up the qt_path_iterator function that is used as a callback + to get points. + */ + void setMatrix(const QTransform &m) + { + m_transform = m; + + qreal scale; + qt_scaleForTransform(m, &scale); + m_curve_threshold = scale == 0 ? qreal(0.25) : (qreal(0.25) / scale); + } + + void beginOutline(Qt::FillRule fillRule) + { +#ifdef QT_DEBUG_CONVERT + printf("QOutlineMapper::beginOutline rule=%d\n", fillRule); +#endif + m_valid = true; + m_elements.reset(); + m_element_types.reset(); + m_points.reset(); + m_tags.reset(); + m_contours.reset(); + m_outline.flags = fillRule == Qt::WindingFill + ? QT_FT_OUTLINE_NONE + : QT_FT_OUTLINE_EVEN_ODD_FILL; + m_subpath_start = 0; + } + + void endOutline(); + + void clipElements(const QPointF *points, const QPainterPath::ElementType *types, int count); + + void convertElements(const QPointF *points, const QPainterPath::ElementType *types, int count); + + inline void moveTo(const QPointF &pt) { +#ifdef QT_DEBUG_CONVERT + printf("QOutlineMapper::moveTo() (%f, %f)\n", pt.x(), pt.y()); +#endif + closeSubpath(); + m_subpath_start = m_elements.size(); + m_elements << pt; + m_element_types << QPainterPath::MoveToElement; + } + + inline void lineTo(const QPointF &pt) { +#ifdef QT_DEBUG_CONVERT + printf("QOutlineMapper::lineTo() (%f, %f)\n", pt.x(), pt.y()); +#endif + m_elements.add(pt); + m_element_types << QPainterPath::LineToElement; + } + + void curveTo(const QPointF &cp1, const QPointF &cp2, const QPointF &ep); + + inline void closeSubpath() { + int element_count = m_elements.size(); + if (element_count > 0) { + if (m_elements.at(element_count-1) != m_elements.at(m_subpath_start)) { +#ifdef QT_DEBUG_CONVERT + printf(" - implicitly closing\n"); +#endif + // Put the object on the stack to avoid the odd case where + // lineTo reallocs the databuffer and the QPointF & will + // be invalidated. + QPointF pt = m_elements.at(m_subpath_start); + + // only do lineTo if we have element_type array... + if (m_element_types.size()) + lineTo(pt); + else + m_elements << pt; + + } + } + } + + QT_FT_Outline *outline() { + if (m_valid) + return &m_outline; + return 0; + } + + QT_FT_Outline *convertPath(const QPainterPath &path); + QT_FT_Outline *convertPath(const QVectorPath &path); + + inline QPainterPath::ElementType *elementTypes() const { return m_element_types.size() == 0 ? 0 : m_element_types.data(); } + +public: + QDataBuffer m_element_types; + QDataBuffer m_elements; + QDataBuffer m_points; + QDataBuffer m_tags; + QDataBuffer m_contours; + + QRect m_clip_rect; + QRectF controlPointRect; // only valid after endOutline() + + QT_FT_Outline m_outline; + + int m_subpath_start; + + QTransform m_transform; + + qreal m_curve_threshold; + + bool m_valid; + bool m_in_clip_elements; +}; + +QT_END_NAMESPACE + +#endif // QOUTLINEMAPPER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpagedpaintdevice_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpagedpaintdevice_p.h new file mode 100644 index 000000000..a993ea4ca --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpagedpaintdevice_p.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAGEDPAINTDEVICE_P_H +#define QPAGEDPAINTDEVICE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QPagedPaintDevicePrivate +{ +public: + QPagedPaintDevicePrivate() + : m_pageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF(0, 0, 0, 0)), + fromPage(0), + toPage(0), + pageOrderAscending(true), + printSelectionOnly(false) + { + } + + virtual ~QPagedPaintDevicePrivate(); + + // ### Qt6 Remove these and make public class methods virtual + virtual bool setPageLayout(const QPageLayout &newPageLayout) + { + m_pageLayout = newPageLayout; + return m_pageLayout.isEquivalentTo(newPageLayout);; + } + + virtual bool setPageSize(const QPageSize &pageSize) + { + m_pageLayout.setPageSize(pageSize); + return m_pageLayout.pageSize().isEquivalentTo(pageSize); + } + + virtual bool setPageOrientation(QPageLayout::Orientation orientation) + { + m_pageLayout.setOrientation(orientation); + return m_pageLayout.orientation() == orientation; + } + + virtual bool setPageMargins(const QMarginsF &margins) + { + return setPageMargins(margins, m_pageLayout.units()); + } + + virtual bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units) + { + m_pageLayout.setUnits(units); + m_pageLayout.setMargins(margins); + return m_pageLayout.margins() == margins && m_pageLayout.units() == units; + } + + virtual QPageLayout pageLayout() const + { + return m_pageLayout; + } + + static inline QPagedPaintDevicePrivate *get(QPagedPaintDevice *pd) { return pd->d; } + + QPageLayout m_pageLayout; + + // These are currently required to keep QPrinter functionality working in QTextDocument::print() + int fromPage; + int toPage; + bool pageOrderAscending; + bool printSelectionOnly; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintdevicewindow_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintdevicewindow_p.h new file mode 100644 index 000000000..a16b83689 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintdevicewindow_p.h @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTDEVICEWINDOW_P_H +#define QPAINTDEVICEWINDOW_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QPaintDeviceWindowPrivate : public QWindowPrivate +{ + Q_DECLARE_PUBLIC(QPaintDeviceWindow) + +public: + virtual void beginPaint(const QRegion ®ion) + { + Q_UNUSED(region); + } + + virtual void endPaint() + { + } + + virtual void flush(const QRegion ®ion) + { + Q_UNUSED(region); + } + + bool paint(const QRegion ®ion) + { + Q_Q(QPaintDeviceWindow); + QRegion toPaint = region & dirtyRegion; + if (toPaint.isEmpty()) + return false; + + // Clear the region now. The overridden functions may call update(). + dirtyRegion -= toPaint; + + beginPaint(toPaint); + + QPaintEvent paintEvent(toPaint); + q->paintEvent(&paintEvent); + + endPaint(); + + return true; + } + + void doFlush(const QRegion ®ion) + { + QRegion toFlush = region; + if (paint(toFlush)) + flush(toFlush); + } + + void handleUpdateEvent() + { + if (dirtyRegion.isEmpty()) + return; + doFlush(dirtyRegion); + } + + void markWindowAsDirty() + { + Q_Q(QPaintDeviceWindow); + dirtyRegion += QRect(QPoint(0, 0), q->size()); + } + +private: + QRegion dirtyRegion; +}; + + +QT_END_NAMESPACE + +#endif //QPAINTDEVICEWINDOW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_blitter_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_blitter_p.h new file mode 100644 index 000000000..40f5347b2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_blitter_p.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTENGINE_BLITTER_P_H +#define QPAINTENGINE_BLITTER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "private/qpaintengine_raster_p.h" + +#ifndef QT_NO_BLITTABLE +QT_BEGIN_NAMESPACE + +class QBlitterPaintEnginePrivate; +class QBlittablePlatformPixmap; +class QBlittable; + +class Q_GUI_EXPORT QBlitterPaintEngine : public QRasterPaintEngine +{ + Q_DECLARE_PRIVATE(QBlitterPaintEngine) +public: + QBlitterPaintEngine(QBlittablePlatformPixmap *p); + + virtual QPaintEngine::Type type() const Q_DECL_OVERRIDE + { return Blitter; } + + virtual bool begin(QPaintDevice *pdev) Q_DECL_OVERRIDE; + virtual bool end() Q_DECL_OVERRIDE; + + // Call down into QBlittable + void fill(const QVectorPath &path, const QBrush &brush) Q_DECL_OVERRIDE; + void fillRect(const QRectF &rect, const QBrush &brush) Q_DECL_OVERRIDE; + void fillRect(const QRectF &rect, const QColor &color) Q_DECL_OVERRIDE; + void drawRects(const QRect *rects, int rectCount) Q_DECL_OVERRIDE; + void drawRects(const QRectF *rects, int rectCount) Q_DECL_OVERRIDE; + void drawPixmap(const QPointF &p, const QPixmap &pm) Q_DECL_OVERRIDE; + void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) Q_DECL_OVERRIDE; + + // State tracking + void setState(QPainterState *s) Q_DECL_OVERRIDE; + virtual void clipEnabledChanged() Q_DECL_OVERRIDE; + virtual void penChanged() Q_DECL_OVERRIDE; + virtual void brushChanged() Q_DECL_OVERRIDE; + virtual void opacityChanged() Q_DECL_OVERRIDE; + virtual void compositionModeChanged() Q_DECL_OVERRIDE; + virtual void renderHintsChanged() Q_DECL_OVERRIDE; + virtual void transformChanged() Q_DECL_OVERRIDE; + + // Override to lock the QBlittable before using raster + void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode) Q_DECL_OVERRIDE; + void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode) Q_DECL_OVERRIDE; + void fillPath(const QPainterPath &path, QSpanData *fillData) Q_DECL_OVERRIDE; + void fillPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode) Q_DECL_OVERRIDE; + void drawEllipse(const QRectF &rect) Q_DECL_OVERRIDE; + void drawImage(const QPointF &p, const QImage &img) Q_DECL_OVERRIDE; + void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, + Qt::ImageConversionFlags flags = Qt::AutoColor) Q_DECL_OVERRIDE; + void drawTiledPixmap(const QRectF &r, const QPixmap &pm, const QPointF &sr) Q_DECL_OVERRIDE; + void drawTextItem(const QPointF &p, const QTextItem &textItem) Q_DECL_OVERRIDE; + void drawPoints(const QPointF *points, int pointCount) Q_DECL_OVERRIDE; + void drawPoints(const QPoint *points, int pointCount) Q_DECL_OVERRIDE; + void stroke(const QVectorPath &path, const QPen &pen) Q_DECL_OVERRIDE; + void drawStaticTextItem(QStaticTextItem *) Q_DECL_OVERRIDE; + bool drawCachedGlyphs(int numGlyphs, const glyph_t *glyphs, const QFixedPoint *positions, + QFontEngine *fontEngine) Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE +#endif //QT_NO_BLITTABLE +#endif // QPAINTENGINE_BLITTER_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_p.h new file mode 100644 index 000000000..9d511f9ba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_p.h @@ -0,0 +1,130 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTENGINE_P_H +#define QPAINTENGINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtGui/qpainter.h" +#include "QtGui/qpaintengine.h" +#include "QtGui/qregion.h" +#include "private/qobject_p.h" + +QT_BEGIN_NAMESPACE + +class QPaintDevice; + +class Q_GUI_EXPORT QPaintEnginePrivate +{ + Q_DECLARE_PUBLIC(QPaintEngine) +public: + QPaintEnginePrivate() : pdev(0), q_ptr(0), currentClipDevice(0), hasSystemTransform(0), + hasSystemViewport(0) {} + virtual ~QPaintEnginePrivate(); + + QPaintDevice *pdev; + QPaintEngine *q_ptr; + QRegion systemClip; + QRect systemRect; + QRegion systemViewport; + QTransform systemTransform; + QPaintDevice *currentClipDevice; + uint hasSystemTransform : 1; + uint hasSystemViewport : 1; + + inline void transformSystemClip() + { + if (systemClip.isEmpty()) + return; + + if (hasSystemTransform) { + if (systemTransform.type() <= QTransform::TxTranslate) + systemClip.translate(qRound(systemTransform.dx()), qRound(systemTransform.dy())); + else + systemClip = systemTransform.map(systemClip); + } + + // Make sure we're inside the viewport. + if (hasSystemViewport) { + systemClip &= systemViewport; + if (systemClip.isEmpty()) { + // We don't want to paint without system clip, so set it to 1 pixel :) + systemClip = QRect(systemViewport.boundingRect().topLeft(), QSize(1, 1)); + } + } + } + + inline void setSystemTransform(const QTransform &xform) + { + systemTransform = xform; + if ((hasSystemTransform = !xform.isIdentity()) || hasSystemViewport) + transformSystemClip(); + systemStateChanged(); + } + + inline void setSystemViewport(const QRegion ®ion) + { + systemViewport = region; + hasSystemViewport = !systemViewport.isEmpty(); + } + + virtual void systemStateChanged() { } + + void drawBoxTextItem(const QPointF &p, const QTextItemInt &ti); + + static QPaintEnginePrivate *get(QPaintEngine *paintEngine) { return paintEngine->d_func(); } + + virtual QPaintEngine *aggregateEngine() { return 0; } + virtual Qt::HANDLE nativeHandle() { return 0; } +}; + +QT_END_NAMESPACE + +#endif // QPAINTENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_pic_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_pic_p.h new file mode 100644 index 000000000..7c690c149 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_pic_p.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTENGINE_PIC_P_H +#define QPAINTENGINE_PIC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#ifndef QT_NO_PICTURE + +QT_BEGIN_NAMESPACE + +class QPicturePaintEnginePrivate; +class QBuffer; + +class QPicturePaintEngine : public QPaintEngine +{ + Q_DECLARE_PRIVATE(QPicturePaintEngine) +public: + QPicturePaintEngine(); + ~QPicturePaintEngine(); + + bool begin(QPaintDevice *pdev) Q_DECL_OVERRIDE; + bool end() Q_DECL_OVERRIDE; + + void updateState(const QPaintEngineState &state) Q_DECL_OVERRIDE; + + void updatePen(const QPen &pen); + void updateBrush(const QBrush &brush); + void updateBrushOrigin(const QPointF &origin); + void updateFont(const QFont &font); + void updateBackground(Qt::BGMode bgmode, const QBrush &bgBrush); + void updateMatrix(const QTransform &matrix); + void updateClipRegion(const QRegion ®ion, Qt::ClipOperation op); + void updateClipPath(const QPainterPath &path, Qt::ClipOperation op); + void updateRenderHints(QPainter::RenderHints hints); + void updateCompositionMode(QPainter::CompositionMode cmode); + void updateClipEnabled(bool enabled); + void updateOpacity(qreal opacity); + + void drawEllipse(const QRectF &rect) Q_DECL_OVERRIDE; + void drawPath(const QPainterPath &path) Q_DECL_OVERRIDE; + void drawPolygon(const QPointF *points, int numPoints, PolygonDrawMode mode) Q_DECL_OVERRIDE; + using QPaintEngine::drawPolygon; + + void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) Q_DECL_OVERRIDE; + void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s) Q_DECL_OVERRIDE; + void drawImage(const QRectF &r, const QImage &image, const QRectF &sr, + Qt::ImageConversionFlags flags = Qt::AutoColor) Q_DECL_OVERRIDE; + void drawTextItem(const QPointF &p, const QTextItem &ti) Q_DECL_OVERRIDE; + + Type type() const Q_DECL_OVERRIDE { return Picture; } + +protected: + QPicturePaintEngine(QPaintEnginePrivate &dptr); + +private: + Q_DISABLE_COPY(QPicturePaintEngine) + + void writeCmdLength(int pos, const QRectF &r, bool corr); +}; + +QT_END_NAMESPACE + +#endif // QT_NO_PICTURE + +#endif // QPAINTENGINE_PIC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_raster_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_raster_p.h new file mode 100644 index 000000000..d0b82b3a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengine_raster_p.h @@ -0,0 +1,500 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTENGINE_RASTER_P_H +#define QPAINTENGINE_RASTER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "private/qpaintengineex_p.h" +#include "QtGui/qpainterpath.h" +#include "private/qdatabuffer_p.h" +#include "private/qdrawhelper_p.h" +#include "private/qpaintengine_p.h" +#include "private/qrasterizer_p.h" +#include "private/qstroker_p.h" +#include "private/qpainter_p.h" +#include "private/qtextureglyphcache_p.h" +#include "private/qoutlinemapper_p.h" + +#include + +QT_BEGIN_NAMESPACE + +class QOutlineMapper; +class QRasterPaintEnginePrivate; +class QRasterBuffer; +class QClipData; + +class QRasterPaintEngineState : public QPainterState +{ +public: + QRasterPaintEngineState(QRasterPaintEngineState &other); + QRasterPaintEngineState(); + ~QRasterPaintEngineState(); + + + QPen lastPen; + QSpanData penData; + QStrokerOps *stroker; + uint strokeFlags; + + QBrush lastBrush; + QSpanData brushData; + uint fillFlags; + + uint pixmapFlags; + int intOpacity; + + qreal txscale; + + QClipData *clip; +// QRect clipRect; +// QRegion clipRegion; + +// QPainter::RenderHints hints; +// QPainter::CompositionMode compositionMode; + + uint dirty; + + struct Flags { + uint has_clip_ownership : 1; // should delete the clip member.. + uint fast_pen : 1; // cosmetic 1-width pens, using midpoint drawlines + uint non_complex_pen : 1; // can use rasterizer, rather than stroker + uint antialiased : 1; + uint bilinear : 1; + uint legacy_rounding : 1; + uint fast_text : 1; + uint int_xform : 1; + uint tx_noshear : 1; + uint fast_images : 1; + }; + + union { + Flags flags; + uint flag_bits; + }; +}; + + + + +/******************************************************************************* + * QRasterPaintEngine + */ +class Q_GUI_EXPORT QRasterPaintEngine : public QPaintEngineEx +{ + Q_DECLARE_PRIVATE(QRasterPaintEngine) +public: + + QRasterPaintEngine(QPaintDevice *device); + ~QRasterPaintEngine(); + bool begin(QPaintDevice *device) Q_DECL_OVERRIDE; + bool end() Q_DECL_OVERRIDE; + + void penChanged() Q_DECL_OVERRIDE; + void brushChanged() Q_DECL_OVERRIDE; + void brushOriginChanged() Q_DECL_OVERRIDE; + void opacityChanged() Q_DECL_OVERRIDE; + void compositionModeChanged() Q_DECL_OVERRIDE; + void renderHintsChanged() Q_DECL_OVERRIDE; + void transformChanged() Q_DECL_OVERRIDE; + void clipEnabledChanged() Q_DECL_OVERRIDE; + + void setState(QPainterState *s) Q_DECL_OVERRIDE; + QPainterState *createState(QPainterState *orig) const Q_DECL_OVERRIDE; + inline QRasterPaintEngineState *state() { + return static_cast(QPaintEngineEx::state()); + } + inline const QRasterPaintEngineState *state() const { + return static_cast(QPaintEngineEx::state()); + } + + void updateBrush(const QBrush &brush); + void updatePen(const QPen &pen); + + void updateMatrix(const QTransform &matrix); + + virtual void fillPath(const QPainterPath &path, QSpanData *fillData); + virtual void fillPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode); + + void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode) Q_DECL_OVERRIDE; + void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode) Q_DECL_OVERRIDE; + + void drawEllipse(const QRectF &rect) Q_DECL_OVERRIDE; + + void fillRect(const QRectF &rect, const QBrush &brush) Q_DECL_OVERRIDE; + void fillRect(const QRectF &rect, const QColor &color) Q_DECL_OVERRIDE; + + void drawRects(const QRect *rects, int rectCount) Q_DECL_OVERRIDE; + void drawRects(const QRectF *rects, int rectCount) Q_DECL_OVERRIDE; + + void drawPixmap(const QPointF &p, const QPixmap &pm) Q_DECL_OVERRIDE; + void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) Q_DECL_OVERRIDE; + void drawImage(const QPointF &p, const QImage &img) Q_DECL_OVERRIDE; + void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, + Qt::ImageConversionFlags flags = Qt::AutoColor) Q_DECL_OVERRIDE; + void drawTiledPixmap(const QRectF &r, const QPixmap &pm, const QPointF &sr) Q_DECL_OVERRIDE; + void drawTextItem(const QPointF &p, const QTextItem &textItem) Q_DECL_OVERRIDE; + + void drawLines(const QLine *line, int lineCount) Q_DECL_OVERRIDE; + void drawLines(const QLineF *line, int lineCount) Q_DECL_OVERRIDE; + + void drawPoints(const QPointF *points, int pointCount) Q_DECL_OVERRIDE; + void drawPoints(const QPoint *points, int pointCount) Q_DECL_OVERRIDE; + + void stroke(const QVectorPath &path, const QPen &pen) Q_DECL_OVERRIDE; + void fill(const QVectorPath &path, const QBrush &brush) Q_DECL_OVERRIDE; + + void clip(const QVectorPath &path, Qt::ClipOperation op) Q_DECL_OVERRIDE; + void clip(const QRect &rect, Qt::ClipOperation op) Q_DECL_OVERRIDE; + void clip(const QRegion ®ion, Qt::ClipOperation op) Q_DECL_OVERRIDE; + inline const QClipData *clipData() const; + + void drawStaticTextItem(QStaticTextItem *textItem) Q_DECL_OVERRIDE; + virtual bool drawCachedGlyphs(int numGlyphs, const glyph_t *glyphs, const QFixedPoint *positions, + QFontEngine *fontEngine); + + enum ClipType { + RectClip, + ComplexClip + }; + ClipType clipType() const; + QRect clipBoundingRect() const; + + void releaseBuffer(); + + QSize size() const; + +#ifndef QT_NO_DEBUG + void saveBuffer(const QString &s) const; +#endif + + +#ifdef Q_OS_WIN + void setDC(HDC hdc); + HDC getDC() const; + void releaseDC(HDC hdc) const; + static bool clearTypeFontsEnabled(); +#endif + + QRasterBuffer *rasterBuffer(); + void alphaPenBlt(const void* src, int bpl, int depth, int rx,int ry,int w,int h, bool useGammaCorrection); + + Type type() const Q_DECL_OVERRIDE { return Raster; } + + QPoint coordinateOffset() const Q_DECL_OVERRIDE; + + bool requiresPretransformedGlyphPositions(QFontEngine *fontEngine, const QTransform &m) const Q_DECL_OVERRIDE; + bool shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &m) const Q_DECL_OVERRIDE; + +protected: + QRasterPaintEngine(QRasterPaintEnginePrivate &d, QPaintDevice *); +private: + friend struct QSpanData; + friend class QBlitterPaintEngine; + friend class QBlitterPaintEnginePrivate; + void init(); + + void fillRect(const QRectF &rect, QSpanData *data); + void drawBitmap(const QPointF &pos, const QImage &image, QSpanData *fill); + + bool setClipRectInDeviceCoords(const QRect &r, Qt::ClipOperation op); + + QRect toNormalizedFillRect(const QRectF &rect); + + inline void ensureBrush(const QBrush &brush) { + if (!qbrush_fast_equals(state()->lastBrush, brush) || state()->fillFlags) + updateBrush(brush); + } + inline void ensureBrush() { ensureBrush(state()->brush); } + + inline void ensurePen(const QPen &pen) { + if (!qpen_fast_equals(state()->lastPen, pen) || (pen.style() != Qt::NoPen && state()->strokeFlags)) + updatePen(pen); + } + inline void ensurePen() { ensurePen(state()->pen); } + + void updateOutlineMapper(); + inline void ensureOutlineMapper(); + + void updateRasterState(); + inline void ensureRasterState() { + if (state()->dirty) + updateRasterState(); + } +}; + + +/******************************************************************************* + * QRasterPaintEnginePrivate + */ +class QRasterPaintEnginePrivate : public QPaintEngineExPrivate +{ + Q_DECLARE_PUBLIC(QRasterPaintEngine) +public: + QRasterPaintEnginePrivate(); + + void rasterizeLine_dashed(QLineF line, qreal width, + int *dashIndex, qreal *dashOffset, bool *inDash); + void rasterize(QT_FT_Outline *outline, ProcessSpans callback, QSpanData *spanData, QRasterBuffer *rasterBuffer); + void rasterize(QT_FT_Outline *outline, ProcessSpans callback, void *userData, QRasterBuffer *rasterBuffer); + void updateMatrixData(QSpanData *spanData, const QBrush &brush, const QTransform &brushMatrix); + + void systemStateChanged() override; + + void drawImage(const QPointF &pt, const QImage &img, SrcOverBlendFunc func, + const QRect &clip, int alpha, const QRect &sr = QRect()); + + QTransform brushMatrix() const { + Q_Q(const QRasterPaintEngine); + const QRasterPaintEngineState *s = q->state(); + QTransform m(s->matrix); + m.translate(s->brushOrigin.x(), s->brushOrigin.y()); + return m; + } + + bool isUnclipped_normalized(const QRect &rect) const; + bool isUnclipped(const QRect &rect, int penWidth) const; + bool isUnclipped(const QRectF &rect, int penWidth) const; + ProcessSpans getPenFunc(const QRectF &rect, const QSpanData *data) const; + ProcessSpans getBrushFunc(const QRect &rect, const QSpanData *data) const; + ProcessSpans getBrushFunc(const QRectF &rect, const QSpanData *data) const; + + inline const QClipData *clip() const; + + void initializeRasterizer(QSpanData *data); + + void recalculateFastImages(); + bool canUseFastImageBlending(QPainter::CompositionMode mode, const QImage &image) const; + + QPaintDevice *device; + QScopedPointer outlineMapper; + QScopedPointer rasterBuffer; + +#if defined (Q_OS_WIN) + HDC hdc; +#endif + + QRect deviceRect; + QRect deviceRectUnclipped; + + QStroker basicStroker; + QScopedPointer dashStroker; + + QScopedPointer grayRaster; + + QDataBuffer cachedLines; + QSpanData image_filler; + QSpanData image_filler_xform; + QSpanData solid_color_filler; + + + QFontEngine::GlyphFormat glyphCacheFormat; + + QScopedPointer baseClip; + + int deviceDepth; + + uint mono_surface : 1; + uint outlinemapper_xform_dirty : 1; + + QScopedPointer rasterizer; +}; + + +class QClipData { +public: + QClipData(int height); + ~QClipData(); + + int clipSpanHeight; + struct ClipLine { + int count; + QSpan *spans; + } *m_clipLines; + + void initialize(); + + inline ClipLine *clipLines() { + if (!m_clipLines) + initialize(); + return m_clipLines; + } + + inline QSpan *spans() { + if (!m_spans) + initialize(); + return m_spans; + } + + int allocated; + int count; + QSpan *m_spans; + int xmin, xmax, ymin, ymax; + + QRect clipRect; + QRegion clipRegion; + + uint enabled : 1; + uint hasRectClip : 1; + uint hasRegionClip : 1; + + void appendSpan(int x, int length, int y, int coverage); + void appendSpans(const QSpan *s, int num); + + // ### Should optimize and actually kill the QSpans if the rect is + // ### a subset of The current region. Thus the "fast" clipspan + // ### callback can be used + void setClipRect(const QRect &rect); + void setClipRegion(const QRegion ®ion); + void fixup(); +}; + +inline void QClipData::appendSpan(int x, int length, int y, int coverage) +{ + Q_ASSERT(m_spans); // initialize() has to be called prior to adding spans.. + + if (count == allocated) { + allocated *= 2; + m_spans = (QSpan *)realloc(m_spans, allocated*sizeof(QSpan)); + } + m_spans[count].x = x; + m_spans[count].len = length; + m_spans[count].y = y; + m_spans[count].coverage = coverage; + ++count; +} + +inline void QClipData::appendSpans(const QSpan *s, int num) +{ + Q_ASSERT(m_spans); + + if (count + num > allocated) { + do { + allocated *= 2; + } while (count + num > allocated); + m_spans = (QSpan *)realloc(m_spans, allocated*sizeof(QSpan)); + } + memcpy(m_spans+count, s, num*sizeof(QSpan)); + count += num; +} + +/******************************************************************************* + * QRasterBuffer + */ +class QRasterBuffer +{ +public: + QRasterBuffer() : m_width(0), m_height(0), m_buffer(0) { init(); } + + ~QRasterBuffer(); + + void init(); + + QImage::Format prepare(QImage *image); + QImage::Format prepare(QPixmap *pix); + void prepare(int w, int h); + void prepareBuffer(int w, int h); + + void resetBuffer(int val=0); + + uchar *scanLine(int y) { Q_ASSERT(y>=0); Q_ASSERT(youtlinemapper_xform_dirty) + updateOutlineMapper(); +} + +inline const QClipData *QRasterPaintEnginePrivate::clip() const { + Q_Q(const QRasterPaintEngine); + if (q->state() && q->state()->clip && q->state()->clip->enabled) + return q->state()->clip; + return baseClip.data(); +} + +inline const QClipData *QRasterPaintEngine::clipData() const { + Q_D(const QRasterPaintEngine); + if (state() && state()->clip && state()->clip->enabled) + return state()->clip; + return d->baseClip.data(); +} + +QT_END_NAMESPACE +#endif // QPAINTENGINE_RASTER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengineex_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengineex_p.h new file mode 100644 index 000000000..7c2c98140 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpaintengineex_p.h @@ -0,0 +1,183 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTENGINEEX_P_H +#define QPAINTENGINEEX_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include +#include +#include +#include + + +QT_BEGIN_NAMESPACE + + +class QPainterState; +class QPaintEngineExPrivate; +class QStaticTextItem; +struct StrokeHandler; + +#ifndef QT_NO_DEBUG_STREAM +QDebug Q_GUI_EXPORT &operator<<(QDebug &, const QVectorPath &path); +#endif + +class Q_GUI_EXPORT QPaintEngineEx : public QPaintEngine +{ + Q_DECLARE_PRIVATE(QPaintEngineEx) +public: + QPaintEngineEx(); + + virtual QPainterState *createState(QPainterState *orig) const; + + virtual void draw(const QVectorPath &path); + virtual void fill(const QVectorPath &path, const QBrush &brush) = 0; + virtual void stroke(const QVectorPath &path, const QPen &pen); + + virtual void clip(const QVectorPath &path, Qt::ClipOperation op) = 0; + virtual void clip(const QRect &rect, Qt::ClipOperation op); + virtual void clip(const QRegion ®ion, Qt::ClipOperation op); + virtual void clip(const QPainterPath &path, Qt::ClipOperation op); + + virtual void clipEnabledChanged() = 0; + virtual void penChanged() = 0; + virtual void brushChanged() = 0; + virtual void brushOriginChanged() = 0; + virtual void opacityChanged() = 0; + virtual void compositionModeChanged() = 0; + virtual void renderHintsChanged() = 0; + virtual void transformChanged() = 0; + + virtual void fillRect(const QRectF &rect, const QBrush &brush); + virtual void fillRect(const QRectF &rect, const QColor &color); + + virtual void drawRoundedRect(const QRectF &rect, qreal xrad, qreal yrad, Qt::SizeMode mode); + + virtual void drawRects(const QRect *rects, int rectCount) Q_DECL_OVERRIDE; + virtual void drawRects(const QRectF *rects, int rectCount) Q_DECL_OVERRIDE; + + virtual void drawLines(const QLine *lines, int lineCount) Q_DECL_OVERRIDE; + virtual void drawLines(const QLineF *lines, int lineCount) Q_DECL_OVERRIDE; + + virtual void drawEllipse(const QRectF &r) Q_DECL_OVERRIDE; + virtual void drawEllipse(const QRect &r) Q_DECL_OVERRIDE; + + virtual void drawPath(const QPainterPath &path) Q_DECL_OVERRIDE; + + virtual void drawPoints(const QPointF *points, int pointCount) Q_DECL_OVERRIDE; + virtual void drawPoints(const QPoint *points, int pointCount) Q_DECL_OVERRIDE; + + virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode) Q_DECL_OVERRIDE; + virtual void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode) Q_DECL_OVERRIDE; + + virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) Q_DECL_OVERRIDE = 0; + virtual void drawPixmap(const QPointF &pos, const QPixmap &pm); + + virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, + Qt::ImageConversionFlags flags = Qt::AutoColor) Q_DECL_OVERRIDE = 0; + virtual void drawImage(const QPointF &pos, const QImage &image); + + virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s) Q_DECL_OVERRIDE; + + virtual void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, + QFlags hints); + + virtual void updateState(const QPaintEngineState &state) Q_DECL_OVERRIDE; + + virtual void drawStaticTextItem(QStaticTextItem *); + + virtual void setState(QPainterState *s); + inline QPainterState *state() { return static_cast(QPaintEngine::state); } + inline const QPainterState *state() const { return static_cast(QPaintEngine::state); } + + virtual void sync() {} + + virtual void beginNativePainting() {} + virtual void endNativePainting() {} + + // These flags are needed in the implementation of paint buffers. + enum Flags + { + DoNotEmulate = 0x01, // If set, QPainter will not wrap this engine in an emulation engine. + IsEmulationEngine = 0x02 // If set, this object is a QEmulationEngine. + }; + virtual uint flags() const {return 0;} + virtual bool requiresPretransformedGlyphPositions(QFontEngine *fontEngine, const QTransform &m) const; + virtual bool shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &m) const; + +protected: + QPaintEngineEx(QPaintEngineExPrivate &data); +}; + +class Q_GUI_EXPORT QPaintEngineExPrivate : public QPaintEnginePrivate +{ + Q_DECLARE_PUBLIC(QPaintEngineEx) +public: + QPaintEngineExPrivate(); + ~QPaintEngineExPrivate(); + + void replayClipOperations(); + bool hasClipOperations() const; + + QStroker stroker; + QDashStroker dasher; + StrokeHandler *strokeHandler; + QStrokerOps *activeStroker; + QPen strokerPen; + + QRect exDeviceRect; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpainter_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpainter_p.h new file mode 100644 index 000000000..2d4457731 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpainter_p.h @@ -0,0 +1,277 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTER_P_H +#define QPAINTER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtGui/qbrush.h" +#include "QtGui/qfont.h" +#include "QtGui/qpen.h" +#include "QtGui/qregion.h" +#include "QtGui/qmatrix.h" +#include "QtGui/qpainter.h" +#include "QtGui/qpainterpath.h" +#include "QtGui/qpaintengine.h" + +#include + +QT_BEGIN_NAMESPACE + +class QPaintEngine; +class QEmulationPaintEngine; +class QPaintEngineEx; +struct QFixedPoint; + +struct QTLWExtra; + +struct DataPtrContainer { + void *ptr; +}; + +inline const void *data_ptr(const QTransform &t) { return (const DataPtrContainer *) &t; } +inline bool qtransform_fast_equals(const QTransform &a, const QTransform &b) { return data_ptr(a) == data_ptr(b); } + +// QPen inline functions... +inline QPen::DataPtr &data_ptr(const QPen &p) { return const_cast(p).data_ptr(); } +inline bool qpen_fast_equals(const QPen &a, const QPen &b) { return data_ptr(a) == data_ptr(b); } +inline QBrush qpen_brush(const QPen &p) { return data_ptr(p)->brush; } +inline qreal qpen_widthf(const QPen &p) { return data_ptr(p)->width; } +inline Qt::PenStyle qpen_style(const QPen &p) { return data_ptr(p)->style; } +inline Qt::PenCapStyle qpen_capStyle(const QPen &p) { return data_ptr(p)->capStyle; } +inline Qt::PenJoinStyle qpen_joinStyle(const QPen &p) { return data_ptr(p)->joinStyle; } + +// QBrush inline functions... +inline QBrush::DataPtr &data_ptr(const QBrush &p) { return const_cast(p).data_ptr(); } +inline bool qbrush_fast_equals(const QBrush &a, const QBrush &b) { return data_ptr(a) == data_ptr(b); } +inline Qt::BrushStyle qbrush_style(const QBrush &b) { return data_ptr(b)->style; } +inline const QColor &qbrush_color(const QBrush &b) { return data_ptr(b)->color; } +inline bool qbrush_has_transform(const QBrush &b) { return data_ptr(b)->transform.type() > QTransform::TxNone; } + +class QPainterClipInfo +{ +public: + QPainterClipInfo() {} // for QVector, don't use + enum ClipType { RegionClip, PathClip, RectClip, RectFClip }; + + QPainterClipInfo(const QPainterPath &p, Qt::ClipOperation op, const QTransform &m) : + clipType(PathClip), matrix(m), operation(op), path(p) { } + + QPainterClipInfo(const QRegion &r, Qt::ClipOperation op, const QTransform &m) : + clipType(RegionClip), matrix(m), operation(op), region(r) { } + + QPainterClipInfo(const QRect &r, Qt::ClipOperation op, const QTransform &m) : + clipType(RectClip), matrix(m), operation(op), rect(r) { } + + QPainterClipInfo(const QRectF &r, Qt::ClipOperation op, const QTransform &m) : + clipType(RectFClip), matrix(m), operation(op), rectf(r) { } + + ClipType clipType; + QTransform matrix; + Qt::ClipOperation operation; + QPainterPath path; + QRegion region; + QRect rect; + QRectF rectf; + + // ### +// union { +// QRegionData *d; +// QPainterPathPrivate *pathData; + +// struct { +// int x, y, w, h; +// } rectData; +// struct { +// qreal x, y, w, h; +// } rectFData; +// }; + +}; + +Q_DECLARE_TYPEINFO(QPainterClipInfo, Q_MOVABLE_TYPE); + +class Q_GUI_EXPORT QPainterState : public QPaintEngineState +{ +public: + QPainterState(); + QPainterState(const QPainterState *s); + virtual ~QPainterState(); + void init(QPainter *p); + + QPointF brushOrigin; + QFont font; + QFont deviceFont; + QPen pen; + QBrush brush; + QBrush bgBrush; // background brush + QRegion clipRegion; + QPainterPath clipPath; + Qt::ClipOperation clipOperation; + QPainter::RenderHints renderHints; + QVector clipInfo; // ### Make me smaller and faster to copy around... + QTransform worldMatrix; // World transformation matrix, not window and viewport + QTransform matrix; // Complete transformation matrix, + QTransform redirectionMatrix; + int wx, wy, ww, wh; // window rectangle + int vx, vy, vw, vh; // viewport rectangle + qreal opacity; + + uint WxF:1; // World transformation + uint VxF:1; // View transformation + uint clipEnabled:1; + + Qt::BGMode bgMode; + QPainter *painter; + Qt::LayoutDirection layoutDirection; + QPainter::CompositionMode composition_mode; + uint emulationSpecifier; + uint changeFlags; +}; + +struct QPainterDummyState +{ + QFont font; + QPen pen; + QBrush brush; + QTransform transform; +}; + +class QRawFont; +class QPainterPrivate +{ + Q_DECLARE_PUBLIC(QPainter) +public: + QPainterPrivate(QPainter *painter) + : q_ptr(painter), d_ptrs(0), state(0), dummyState(0), txinv(0), inDestructor(false), d_ptrs_size(0), + refcount(1), device(0), original_device(0), helper_device(0), engine(0), emulationEngine(0), + extended(0) + { + } + + ~QPainterPrivate(); + + QPainter *q_ptr; + QPainterPrivate **d_ptrs; + + QPainterState *state; + QVector states; + + mutable QPainterDummyState *dummyState; + + QTransform invMatrix; + uint txinv:1; + uint inDestructor : 1; + uint d_ptrs_size; + uint refcount; + + enum DrawOperation { StrokeDraw = 0x1, + FillDraw = 0x2, + StrokeAndFillDraw = 0x3 + }; + + QPainterDummyState *fakeState() const { + if (!dummyState) + dummyState = new QPainterDummyState(); + return dummyState; + } + + void updateEmulationSpecifier(QPainterState *s); + void updateStateImpl(QPainterState *state); + void updateState(QPainterState *state); + + void draw_helper(const QPainterPath &path, DrawOperation operation = StrokeAndFillDraw); + void drawStretchedGradient(const QPainterPath &path, DrawOperation operation); + void drawOpaqueBackground(const QPainterPath &path, DrawOperation operation); + void drawTextItem(const QPointF &p, const QTextItem &_ti, QTextEngine *textEngine); + +#if !defined(QT_NO_RAWFONT) + void drawGlyphs(const quint32 *glyphArray, QFixedPoint *positionArray, int glyphCount, + QFontEngine *fontEngine, bool overline = false, bool underline = false, + bool strikeOut = false); +#endif + + void updateMatrix(); + void updateInvMatrix(); + + void checkEmulation(); + + static QPainterPrivate *get(QPainter *painter) + { + return painter->d_ptr.data(); + } + + QTransform viewTransform() const; + qreal effectiveDevicePixelRatio() const; + QTransform hidpiScaleTransform() const; + static bool attachPainterPrivate(QPainter *q, QPaintDevice *pdev); + void detachPainterPrivate(QPainter *q); + + QPaintDevice *device; + QPaintDevice *original_device; + QPaintDevice *helper_device; + QPaintEngine *engine; + QEmulationPaintEngine *emulationEngine; + QPaintEngineEx *extended; + QBrush colorBrush; // for fill with solid color +}; + +Q_GUI_EXPORT void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivate::DrawOperation operation); + +QString qt_generate_brush_key(const QBrush &brush); + +inline bool qt_pen_is_cosmetic(const QPen &pen, QPainter::RenderHints hints) +{ + return pen.isCosmetic() || (const_cast(pen).data_ptr()->defaultWidth && (hints & QPainter::Qt4CompatiblePainting)); +} + +QT_END_NAMESPACE + +#endif // QPAINTER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpainterpath_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpainterpath_p.h new file mode 100644 index 000000000..92d9a4ea6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpainterpath_p.h @@ -0,0 +1,298 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTERPATH_P_H +#define QPAINTERPATH_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtGui/qpainterpath.h" +#include "QtGui/qregion.h" +#include "QtCore/qlist.h" +#include "QtCore/qvarlengtharray.h" + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class QPainterPathPrivate +{ +public: + friend class QPainterPath; + friend class QPainterPathData; + friend class QPainterPathStroker; + friend class QPainterPathStrokerPrivate; + friend class QMatrix; + friend class QTransform; + friend class QVectorPath; + friend struct QPainterPathPrivateDeleter; +#ifndef QT_NO_DATASTREAM + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QPainterPath &); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPainterPath &); +#endif + + QPainterPathPrivate() : ref(1) {} + +private: + QAtomicInt ref; + QVector elements; +}; + +class QPainterPathStrokerPrivate +{ +public: + QPainterPathStrokerPrivate(); + + QStroker stroker; + QVector dashPattern; + qreal dashOffset; +}; + +class QPolygonF; +class QVectorPathConverter; + +class QVectorPathConverter +{ +public: + QVectorPathConverter(const QVector &path, uint fillRule, bool convex) + : pathData(path, fillRule, convex), + path(pathData.points.data(), path.size(), + pathData.elements.data(), pathData.flags) {} + + const QVectorPath &vectorPath() { + return path; + } + + struct QVectorPathData { + QVectorPathData(const QVector &path, uint fillRule, bool convex) + : elements(path.size()), + points(path.size() * 2), + flags(0) + { + int ptsPos = 0; + bool isLines = true; + for (int i=0; i elements; + QVarLengthArray points; + uint flags; + }; + + QVectorPathData pathData; + QVectorPath path; + +private: + Q_DISABLE_COPY(QVectorPathConverter) +}; + +class QPainterPathData : public QPainterPathPrivate +{ +public: + QPainterPathData() : + cStart(0), + fillRule(Qt::OddEvenFill), + dirtyBounds(false), + dirtyControlBounds(false), + pathConverter(0) + { + require_moveTo = false; + convex = false; + } + + QPainterPathData(const QPainterPathData &other) : + QPainterPathPrivate(), cStart(other.cStart), fillRule(other.fillRule), + bounds(other.bounds), + controlBounds(other.controlBounds), + dirtyBounds(other.dirtyBounds), + dirtyControlBounds(other.dirtyControlBounds), + convex(other.convex), + pathConverter(0) + { + require_moveTo = false; + elements = other.elements; + } + + ~QPainterPathData() { + delete pathConverter; + } + + inline bool isClosed() const; + inline void close(); + inline void maybeMoveTo(); + + const QVectorPath &vectorPath() { + if (!pathConverter) + pathConverter = new QVectorPathConverter(elements, fillRule, convex); + return pathConverter->path; + } + + int cStart; + Qt::FillRule fillRule; + + QRectF bounds; + QRectF controlBounds; + + uint require_moveTo : 1; + uint dirtyBounds : 1; + uint dirtyControlBounds : 1; + uint convex : 1; + + QVectorPathConverter *pathConverter; +}; + + +inline const QPainterPath QVectorPath::convertToPainterPath() const +{ + QPainterPath path; + path.ensureData(); + QPainterPathData *data = path.d_func(); + data->elements.reserve(m_count); + int index = 0; + data->elements[0].x = m_points[index++]; + data->elements[0].y = m_points[index++]; + + if (m_elements) { + data->elements[0].type = m_elements[0]; + for (int i=1; ielements << element; + } + } else { + data->elements[0].type = QPainterPath::MoveToElement; + for (int i=1; ielements << element; + } + } + + if (m_hints & OddEvenFill) + data->fillRule = Qt::OddEvenFill; + else + data->fillRule = Qt::WindingFill; + return path; +} + +void Q_GUI_EXPORT qt_find_ellipse_coords(const QRectF &r, qreal angle, qreal length, + QPointF* startPoint, QPointF *endPoint); + +inline bool QPainterPathData::isClosed() const +{ + const QPainterPath::Element &first = elements.at(cStart); + const QPainterPath::Element &last = elements.last(); + return first.x == last.x && first.y == last.y; +} + +inline void QPainterPathData::close() +{ + Q_ASSERT(ref.load() == 1); + require_moveTo = true; + const QPainterPath::Element &first = elements.at(cStart); + QPainterPath::Element &last = elements.last(); + if (first.x != last.x || first.y != last.y) { + if (qFuzzyCompare(first.x, last.x) && qFuzzyCompare(first.y, last.y)) { + last.x = first.x; + last.y = first.y; + } else { + QPainterPath::Element e = { first.x, first.y, QPainterPath::LineToElement }; + elements << e; + } + } +} + +inline void QPainterPathData::maybeMoveTo() +{ + if (require_moveTo) { + QPainterPath::Element e = elements.last(); + e.type = QPainterPath::MoveToElement; + elements.append(e); + require_moveTo = false; + } +} + +#define KAPPA qreal(0.5522847498) + + +QT_END_NAMESPACE + +#endif // QPAINTERPATH_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpathclipper_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpathclipper_p.h new file mode 100644 index 000000000..64e684e1a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpathclipper_p.h @@ -0,0 +1,488 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPATHCLIPPER_P_H +#define QPATHCLIPPER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#include +#include +#include + +QT_BEGIN_NAMESPACE + + +class QWingedEdge; + +class Q_GUI_EXPORT QPathClipper +{ +public: + enum Operation { + BoolAnd, + BoolOr, + BoolSub, + Simplify + }; +public: + QPathClipper(const QPainterPath &subject, + const QPainterPath &clip); + + QPainterPath clip(Operation op = BoolAnd); + + bool intersect(); + bool contains(); + + static bool pathToRect(const QPainterPath &path, QRectF *rect = 0); + static QPainterPath intersect(const QPainterPath &path, const QRectF &rect); + +private: + Q_DISABLE_COPY(QPathClipper) + + enum ClipperMode { + ClipMode, // do the full clip + CheckMode // for contains/intersects (only interested in whether the result path is non-empty) + }; + + bool handleCrossingEdges(QWingedEdge &list, qreal y, ClipperMode mode); + bool doClip(QWingedEdge &list, ClipperMode mode); + + QPainterPath subjectPath; + QPainterPath clipPath; + Operation op; + + int aMask; + int bMask; +}; + +struct QPathVertex +{ +public: + QPathVertex(const QPointF &p = QPointF(), int e = -1); + operator QPointF() const; + + int edge; + + qreal x; + qreal y; +}; + +class QPathEdge +{ +public: + enum Traversal { + RightTraversal, + LeftTraversal + }; + + enum Direction { + Forward, + Backward + }; + + enum Type { + Line, + Curve + }; + + explicit QPathEdge(int a = -1, int b = -1); + + mutable int flag; + + int windingA; + int windingB; + + int first; + int second; + + double angle; + double invAngle; + + int next(Traversal traversal, Direction direction) const; + + void setNext(Traversal traversal, Direction direction, int next); + void setNext(Direction direction, int next); + + Direction directionTo(int vertex) const; + int vertex(Direction direction) const; + +private: + int m_next[2][2]; +}; + +class QPathSegments +{ +public: + struct Intersection { + qreal t; + int vertex; + int next; + + bool operator<(const Intersection &o) const { + return t < o.t; + } + }; + + struct Segment { + Segment(int pathId, int vertexA, int vertexB) + : path(pathId) + , va(vertexA) + , vb(vertexB) + , intersection(-1) + { + } + + int path; + + // vertices + int va; + int vb; + + // intersection index + int intersection; + + QRectF bounds; + }; + + + QPathSegments(int reserve); + + void setPath(const QPainterPath &path); + void addPath(const QPainterPath &path); + + int intersections() const; + int segments() const; + int points() const; + + const Segment &segmentAt(int index) const; + const QLineF lineAt(int index) const; + const QRectF &elementBounds(int index) const; + int pathId(int index) const; + + const QPointF &pointAt(int vertex) const; + int addPoint(const QPointF &point); + + const Intersection *intersectionAt(int index) const; + void addIntersection(int index, const Intersection &intersection); + + void mergePoints(); + +private: + QDataBuffer m_points; + QDataBuffer m_segments; + QDataBuffer m_intersections; + + int m_pathId; +}; + +class Q_AUTOTEST_EXPORT QWingedEdge +{ +public: + struct TraversalStatus + { + int edge; + QPathEdge::Traversal traversal; + QPathEdge::Direction direction; + + void flipDirection(); + void flipTraversal(); + + void flip(); + }; + + QWingedEdge(); + QWingedEdge(const QPainterPath &subject, const QPainterPath &clip); + + void simplify(); + QPainterPath toPath() const; + + int edgeCount() const; + + QPathEdge *edge(int edge); + const QPathEdge *edge(int edge) const; + + int vertexCount() const; + + int addVertex(const QPointF &p); + + QPathVertex *vertex(int vertex); + const QPathVertex *vertex(int vertex) const; + + TraversalStatus next(const TraversalStatus &status) const; + + int addEdge(const QPointF &a, const QPointF &b); + int addEdge(int vertexA, int vertexB); + + bool isInside(qreal x, qreal y) const; + + static QPathEdge::Traversal flip(QPathEdge::Traversal traversal); + static QPathEdge::Direction flip(QPathEdge::Direction direction); + +private: + void intersectAndAdd(); + + void printNode(int i, FILE *handle); + + void removeEdge(int ei); + + int insert(const QPathVertex &vertex); + TraversalStatus findInsertStatus(int vertex, int edge) const; + + qreal delta(int vertex, int a, int b) const; + + QDataBuffer m_edges; + QDataBuffer m_vertices; + + QVector m_splitPoints; + + QPathSegments m_segments; +}; + +inline QPathEdge::QPathEdge(int a, int b) + : flag(0) + , windingA(0) + , windingB(0) + , first(a) + , second(b) + , angle(0) + , invAngle(0) +{ + m_next[0][0] = -1; + m_next[1][0] = -1; + m_next[0][0] = -1; + m_next[1][0] = -1; +} + +inline int QPathEdge::next(Traversal traversal, Direction direction) const +{ + return m_next[int(traversal)][int(direction)]; +} + +inline void QPathEdge::setNext(Traversal traversal, Direction direction, int next) +{ + m_next[int(traversal)][int(direction)] = next; +} + +inline void QPathEdge::setNext(Direction direction, int next) +{ + m_next[0][int(direction)] = next; + m_next[1][int(direction)] = next; +} + +inline QPathEdge::Direction QPathEdge::directionTo(int vertex) const +{ + return first == vertex ? Backward : Forward; +} + +inline int QPathEdge::vertex(Direction direction) const +{ + return direction == Backward ? first : second; +} + +inline QPathVertex::QPathVertex(const QPointF &p, int e) + : edge(e) + , x(p.x()) + , y(p.y()) +{ +} + +inline QPathVertex::operator QPointF() const +{ + return QPointF(x, y); +} + +inline QPathSegments::QPathSegments(int reserve) : + m_points(reserve), + m_segments(reserve), + m_intersections(reserve), + m_pathId(0) +{ +} + +inline int QPathSegments::segments() const +{ + return m_segments.size(); +} + +inline int QPathSegments::points() const +{ + return m_points.size(); +} + +inline const QPointF &QPathSegments::pointAt(int i) const +{ + return m_points.at(i); +} + +inline int QPathSegments::addPoint(const QPointF &point) +{ + m_points << point; + return m_points.size() - 1; +} + +inline const QPathSegments::Segment &QPathSegments::segmentAt(int index) const +{ + return m_segments.at(index); +} + +inline const QLineF QPathSegments::lineAt(int index) const +{ + const Segment &segment = m_segments.at(index); + return QLineF(m_points.at(segment.va), m_points.at(segment.vb)); +} + +inline const QRectF &QPathSegments::elementBounds(int index) const +{ + return m_segments.at(index).bounds; +} + +inline int QPathSegments::pathId(int index) const +{ + return m_segments.at(index).path; +} + +inline const QPathSegments::Intersection *QPathSegments::intersectionAt(int index) const +{ + const int intersection = m_segments.at(index).intersection; + if (intersection < 0) + return 0; + else + return &m_intersections.at(intersection); +} + +inline int QPathSegments::intersections() const +{ + return m_intersections.size(); +} + +inline void QPathSegments::addIntersection(int index, const Intersection &intersection) +{ + m_intersections << intersection; + + Segment &segment = m_segments.at(index); + if (segment.intersection < 0) { + segment.intersection = m_intersections.size() - 1; + } else { + Intersection *isect = &m_intersections.at(segment.intersection); + + while (isect->next != 0) + isect += isect->next; + + isect->next = (m_intersections.size() - 1) - (isect - m_intersections.data()); + } +} + +inline int QWingedEdge::edgeCount() const +{ + return m_edges.size(); +} + +inline QPathEdge *QWingedEdge::edge(int edge) +{ + return edge < 0 ? 0 : &m_edges.at(edge); +} + +inline const QPathEdge *QWingedEdge::edge(int edge) const +{ + return edge < 0 ? 0 : &m_edges.at(edge); +} + +inline int QWingedEdge::vertexCount() const +{ + return m_vertices.size(); +} + +inline int QWingedEdge::addVertex(const QPointF &p) +{ + m_vertices << p; + return m_vertices.size() - 1; +} + +inline QPathVertex *QWingedEdge::vertex(int vertex) +{ + return vertex < 0 ? 0 : &m_vertices.at(vertex); +} + +inline const QPathVertex *QWingedEdge::vertex(int vertex) const +{ + return vertex < 0 ? 0 : &m_vertices.at(vertex); +} + +inline QPathEdge::Traversal QWingedEdge::flip(QPathEdge::Traversal traversal) +{ + return traversal == QPathEdge::RightTraversal ? QPathEdge::LeftTraversal : QPathEdge::RightTraversal; +} + +inline void QWingedEdge::TraversalStatus::flipTraversal() +{ + traversal = QWingedEdge::flip(traversal); +} + +inline QPathEdge::Direction QWingedEdge::flip(QPathEdge::Direction direction) +{ + return direction == QPathEdge::Forward ? QPathEdge::Backward : QPathEdge::Forward; +} + +inline void QWingedEdge::TraversalStatus::flipDirection() +{ + direction = QWingedEdge::flip(direction); +} + +inline void QWingedEdge::TraversalStatus::flip() +{ + flipDirection(); + flipTraversal(); +} + +QT_END_NAMESPACE + +#endif // QPATHCLIPPER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpathsimplifier_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpathsimplifier_p.h new file mode 100644 index 000000000..6ef298f6b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpathsimplifier_p.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtDeclarative 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPATHSIMPLIFIER_P_H +#define QPATHSIMPLIFIER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +// The returned vertices are in 8:8 fixed point format. The path is assumed to be in the range (-128, 128)x(-128, 128). +void qSimplifyPath(const QVectorPath &path, QDataBuffer &vertices, QDataBuffer &indices, const QTransform &matrix = QTransform()); +void qSimplifyPath(const QPainterPath &path, QDataBuffer &vertices, QDataBuffer &indices, const QTransform &matrix = QTransform()); + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpdf_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpdf_p.h new file mode 100644 index 000000000..a6aa2940c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpdf_p.h @@ -0,0 +1,325 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPDF_P_H +#define QPDF_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 + +#ifndef QT_NO_PDF + +#include "QtGui/qmatrix.h" +#include "QtCore/qstring.h" +#include "QtCore/qvector.h" +#include "private/qstroker_p.h" +#include "private/qpaintengine_p.h" +#include "private/qfontengine_p.h" +#include "private/qfontsubset_p.h" +#include "qpagelayout.h" + +QT_BEGIN_NAMESPACE + +const char *qt_real_to_string(qreal val, char *buf); +const char *qt_int_to_string(int val, char *buf); + +namespace QPdf { + + class ByteStream + { + public: + // fileBacking means that ByteStream will buffer the contents on disk + // if the size exceeds a certain threshold. In this case, if a byte + // array was passed in, its contents may no longer correspond to the + // ByteStream contents. + explicit ByteStream(bool fileBacking = false); + explicit ByteStream(QByteArray *ba, bool fileBacking = false); + ~ByteStream(); + ByteStream &operator <<(char chr); + ByteStream &operator <<(const char *str); + ByteStream &operator <<(const QByteArray &str); + ByteStream &operator <<(const ByteStream &src); + ByteStream &operator <<(qreal val); + ByteStream &operator <<(int val); + ByteStream &operator <<(const QPointF &p); + // Note that the stream may be invalidated by calls that insert data. + QIODevice *stream(); + void clear(); + + static inline int maxMemorySize() { return 100000000; } + static inline int chunkSize() { return 10000000; } + + protected: + void constructor_helper(QIODevice *dev); + void constructor_helper(QByteArray *ba); + + private: + void prepareBuffer(); + + private: + QIODevice *dev; + QByteArray ba; + bool fileBackingEnabled; + bool fileBackingActive; + bool handleDirty; + }; + + enum PathFlags { + ClipPath, + FillPath, + StrokePath, + FillAndStrokePath + }; + QByteArray generatePath(const QPainterPath &path, const QTransform &matrix, PathFlags flags); + QByteArray generateMatrix(const QTransform &matrix); + QByteArray generateDashes(const QPen &pen); + QByteArray patternForBrush(const QBrush &b); + + struct Stroker { + Stroker(); + void setPen(const QPen &pen, QPainter::RenderHints hints); + void strokePath(const QPainterPath &path); + ByteStream *stream; + bool first; + QTransform matrix; + bool cosmeticPen; + private: + QStroker basicStroker; + QDashStroker dashStroker; + QStrokerOps *stroker; + }; + + QByteArray ascii85Encode(const QByteArray &input); + + const char *toHex(ushort u, char *buffer); + const char *toHex(uchar u, char *buffer); + +} + + +class QPdfPage : public QPdf::ByteStream +{ +public: + QPdfPage(); + + QVector images; + QVector graphicStates; + QVector patterns; + QVector fonts; + QVector annotations; + + void streamImage(int w, int h, int object); + + QSize pageSize; +private: +}; + +class QPdfWriter; +class QPdfEnginePrivate; + +class Q_GUI_EXPORT QPdfEngine : public QPaintEngine +{ + Q_DECLARE_PRIVATE(QPdfEngine) + friend class QPdfWriter; +public: + QPdfEngine(); + QPdfEngine(QPdfEnginePrivate &d); + ~QPdfEngine() {} + + void setOutputFilename(const QString &filename); + + void setResolution(int resolution); + int resolution() const; + + // reimplementations QPaintEngine + bool begin(QPaintDevice *pdev) Q_DECL_OVERRIDE; + bool end() Q_DECL_OVERRIDE; + + void drawPoints(const QPointF *points, int pointCount) Q_DECL_OVERRIDE; + void drawLines(const QLineF *lines, int lineCount) Q_DECL_OVERRIDE; + void drawRects(const QRectF *rects, int rectCount) Q_DECL_OVERRIDE; + void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode) Q_DECL_OVERRIDE; + void drawPath (const QPainterPath & path) Q_DECL_OVERRIDE; + + void drawTextItem(const QPointF &p, const QTextItem &textItem) Q_DECL_OVERRIDE; + + void drawPixmap (const QRectF & rectangle, const QPixmap & pixmap, const QRectF & sr) Q_DECL_OVERRIDE; + void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, + Qt::ImageConversionFlags flags = Qt::AutoColor) Q_DECL_OVERRIDE; + void drawTiledPixmap (const QRectF & rectangle, const QPixmap & pixmap, const QPointF & point) Q_DECL_OVERRIDE; + + void drawHyperlink(const QRectF &r, const QUrl &url); + + void updateState(const QPaintEngineState &state) Q_DECL_OVERRIDE; + + int metric(QPaintDevice::PaintDeviceMetric metricType) const; + Type type() const Q_DECL_OVERRIDE; + // end reimplementations QPaintEngine + + // Printer stuff... + bool newPage(); + + // Page layout stuff + void setPageLayout(const QPageLayout &pageLayout); + void setPageSize(const QPageSize &pageSize); + void setPageOrientation(QPageLayout::Orientation orientation); + void setPageMargins(const QMarginsF &margins, QPageLayout::Unit units = QPageLayout::Point); + + QPageLayout pageLayout() const; + + void setPen(); + void setBrush(); + void setupGraphicsState(QPaintEngine::DirtyFlags flags); + +private: + void updateClipPath(const QPainterPath & path, Qt::ClipOperation op); +}; + +class Q_GUI_EXPORT QPdfEnginePrivate : public QPaintEnginePrivate +{ + Q_DECLARE_PUBLIC(QPdfEngine) +public: + QPdfEnginePrivate(); + ~QPdfEnginePrivate(); + + inline uint requestObject() { return currentObject++; } + + void writeHeader(); + void writeTail(); + + int addImage(const QImage &image, bool *bitmap, qint64 serial_no); + int addConstantAlphaObject(int brushAlpha, int penAlpha = 255); + int addBrushPattern(const QTransform &matrix, bool *specifyColor, int *gStateObject); + + void drawTextItem(const QPointF &p, const QTextItemInt &ti); + + QTransform pageMatrix() const; + + void newPage(); + + int currentObject; + + QPdfPage* currentPage; + QPdf::Stroker stroker; + + QPointF brushOrigin; + QBrush brush; + QPen pen; + QVector clips; + bool clipEnabled; + bool allClipped; + bool hasPen; + bool hasBrush; + bool simplePen; + qreal opacity; + + QHash fonts; + + QPaintDevice *pdev; + + // the device the output is in the end streamed to. + QIODevice *outDevice; + bool ownsDevice; + + // printer options + QString outputFileName; + QString title; + QString creator; + bool embedFonts; + int resolution; + bool grayscale; + + // Page layout: size, orientation and margins + QPageLayout m_pageLayout; + +private: + int gradientBrush(const QBrush &b, const QTransform &matrix, int *gStateObject); + int generateGradientShader(const QGradient *gradient, const QTransform &matrix, bool alpha = false); + int generateLinearGradientShader(const QLinearGradient *lg, const QTransform &matrix, bool alpha); + int generateRadialGradientShader(const QRadialGradient *gradient, const QTransform &matrix, bool alpha); + int createShadingFunction(const QGradient *gradient, int from, int to, bool reflect, bool alpha); + + void writeInfo(); + void writePageRoot(); + void writeFonts(); + void embedFont(QFontSubset *font); + + QVector xrefPositions; + QDataStream* stream; + int streampos; + + int writeImage(const QByteArray &data, int width, int height, int depth, + int maskObject, int softMaskObject, bool dct = false, bool isMono = false); + void writePage(); + + int addXrefEntry(int object, bool printostr = true); + void printString(const QString &string); + void xprintf(const char* fmt, ...); + inline void write(const QByteArray &data) { + stream->writeRawData(data.constData(), data.size()); + streampos += data.size(); + } + + int writeCompressed(const char *src, int len); + inline int writeCompressed(const QByteArray &data) { return writeCompressed(data.constData(), data.length()); } + int writeCompressed(QIODevice *dev); + + // various PDF objects + int pageRoot, catalog, info, graphicsState, patternColorSpace; + QVector pages; + QHash imageCache; + QHash, uint > alphaCache; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_PDF + +#endif // QPDF_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpen_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpen_p.h new file mode 100644 index 000000000..2098be5a5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpen_p.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPEN_P_H +#define QPEN_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +class QPenPrivate { +public: + QPenPrivate(const QBrush &brush, qreal width, Qt::PenStyle, Qt::PenCapStyle, + Qt::PenJoinStyle _joinStyle, bool defaultWidth = true); + QAtomicInt ref; + qreal width; + QBrush brush; + Qt::PenStyle style; + Qt::PenCapStyle capStyle; + Qt::PenJoinStyle joinStyle; + mutable QVector dashPattern; + qreal dashOffset; + qreal miterLimit; + uint cosmetic : 1; + uint defaultWidth : 1; // default-constructed width? used for cosmetic pen compatibility +}; + +QT_END_NAMESPACE + +#endif // QPEN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpicture_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpicture_p.h new file mode 100644 index 000000000..67db9aa35 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpicture_p.h @@ -0,0 +1,169 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPICTURE_P_H +#define QPICTURE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtCore/qatomic.h" +#include "QtCore/qbuffer.h" +#include "QtCore/qobjectdefs.h" +#include "QtCore/qvector.h" +#include "QtGui/qpicture.h" +#include "QtGui/qpixmap.h" +#include "QtGui/qpen.h" +#include "QtGui/qbrush.h" +#include "QtCore/qrect.h" +#include "private/qobject_p.h" + +QT_BEGIN_NAMESPACE + +class QPaintEngine; + +extern const char *qt_mfhdr_tag; + +class QPicturePrivate +{ + friend class QPicturePaintEngine; + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &s, const QPicture &r); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &s, QPicture &r); + +public: + enum PaintCommand { + PdcNOP = 0, // + PdcDrawPoint = 1, // point + PdcDrawFirst = PdcDrawPoint, + PdcMoveTo = 2, // point + PdcLineTo = 3, // point + PdcDrawLine = 4, // point,point + PdcDrawRect = 5, // rect + PdcDrawRoundRect = 6, // rect,ival,ival + PdcDrawEllipse = 7, // rect + PdcDrawArc = 8, // rect,ival,ival + PdcDrawPie = 9, // rect,ival,ival + PdcDrawChord = 10, // rect,ival,ival + PdcDrawLineSegments = 11, // ptarr + PdcDrawPolyline = 12, // ptarr + PdcDrawPolygon = 13, // ptarr,ival + PdcDrawCubicBezier = 14, // ptarr + PdcDrawText = 15, // point,str + PdcDrawTextFormatted = 16, // rect,ival,str + PdcDrawPixmap = 17, // rect,pixmap + PdcDrawImage = 18, // rect,image + PdcDrawText2 = 19, // point,str + PdcDrawText2Formatted = 20, // rect,ival,str + PdcDrawTextItem = 21, // pos,text,font,flags + PdcDrawLast = PdcDrawTextItem, + PdcDrawPoints = 22, // ptarr,ival,ival + PdcDrawWinFocusRect = 23, // rect,color + PdcDrawTiledPixmap = 24, // rect,pixmap,point + PdcDrawPath = 25, // path + + // no painting commands below PdcDrawLast. + + PdcBegin = 30, // + PdcEnd = 31, // + PdcSave = 32, // + PdcRestore = 33, // + PdcSetdev = 34, // device - PRIVATE + PdcSetBkColor = 40, // color + PdcSetBkMode = 41, // ival + PdcSetROP = 42, // ival + PdcSetBrushOrigin = 43, // point + PdcSetFont = 45, // font + PdcSetPen = 46, // pen + PdcSetBrush = 47, // brush + PdcSetTabStops = 48, // ival + PdcSetTabArray = 49, // ival,ivec + PdcSetUnit = 50, // ival + PdcSetVXform = 51, // ival + PdcSetWindow = 52, // rect + PdcSetViewport = 53, // rect + PdcSetWXform = 54, // ival + PdcSetWMatrix = 55, // matrix,ival + PdcSaveWMatrix = 56, + PdcRestoreWMatrix = 57, + PdcSetClip = 60, // ival + PdcSetClipRegion = 61, // rgn + PdcSetClipPath = 62, // path + PdcSetRenderHint = 63, // ival + PdcSetCompositionMode = 64, // ival + PdcSetClipEnabled = 65, // bool + PdcSetOpacity = 66, // qreal + + PdcReservedStart = 0, // codes 0-199 are reserved + PdcReservedStop = 199 // for Qt + }; + + QPicturePrivate(); + QPicturePrivate(const QPicturePrivate &other); + QAtomicInt ref; + + bool checkFormat(); + void resetFormat(); + + QBuffer pictb; + int trecs; + bool formatOk; + int formatMajor; + int formatMinor; + QRect brect; + QRect override_rect; + QScopedPointer paintEngine; + bool in_memory_only; + QVector image_list; + QVector pixmap_list; + QList brush_list; + QList pen_list; +}; + +QT_END_NAMESPACE + +#endif // QPICTURE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpixmap_blitter_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpixmap_blitter_p.h new file mode 100644 index 000000000..9889cfb8e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpixmap_blitter_p.h @@ -0,0 +1,212 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPIXMAP_BLITTER_P_H +#define QPIXMAP_BLITTER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#ifndef QT_NO_BLITTABLE +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QBlittablePlatformPixmap : public QPlatformPixmap +{ +// Q_DECLARE_PRIVATE(QBlittablePlatformPixmap) +public: + QBlittablePlatformPixmap(); + ~QBlittablePlatformPixmap(); + + virtual QBlittable *createBlittable(const QSize &size, bool alpha) const = 0; + QBlittable *blittable() const; + void setBlittable(QBlittable *blittable); + + void resize(int width, int height) Q_DECL_OVERRIDE; + int metric(QPaintDevice::PaintDeviceMetric metric) const Q_DECL_OVERRIDE; + void fill(const QColor &color) Q_DECL_OVERRIDE; + QImage *buffer() Q_DECL_OVERRIDE; + QImage toImage() const Q_DECL_OVERRIDE; + bool hasAlphaChannel() const Q_DECL_OVERRIDE; + void fromImage(const QImage &image, Qt::ImageConversionFlags flags) Q_DECL_OVERRIDE; + qreal devicePixelRatio() const Q_DECL_OVERRIDE; + void setDevicePixelRatio(qreal scaleFactor) Q_DECL_OVERRIDE; + + QPaintEngine *paintEngine() const Q_DECL_OVERRIDE; + + void markRasterOverlay(const QRectF &); + void markRasterOverlay(const QPointF &, const QTextItem &); + void markRasterOverlay(const QVectorPath &); + void markRasterOverlay(const QPainterPath &); + void markRasterOverlay(const QRect *rects, int rectCount); + void markRasterOverlay(const QRectF *rects, int rectCount); + void markRasterOverlay(const QPointF *points, int pointCount); + void markRasterOverlay(const QPoint *points, int pointCount); + void unmarkRasterOverlay(const QRectF &); + +#ifdef QT_BLITTER_RASTEROVERLAY + void mergeOverlay(); + void unmergeOverlay(); + QImage *overlay(); + +#endif //QT_BLITTER_RASTEROVERLAY +protected: + QScopedPointer m_engine; + QScopedPointer m_blittable; + bool m_alpha; + qreal m_devicePixelRatio; + +#ifdef QT_BLITTER_RASTEROVERLAY + QImage *m_rasterOverlay; + QImage *m_unmergedCopy; + QColor m_overlayColor; + + void markRasterOverlayImpl(const QRectF &); + void unmarkRasterOverlayImpl(const QRectF &); + QRectF clipAndTransformRect(const QRectF &) const; +#endif //QT_BLITTER_RASTEROVERLAY + +}; + +inline void QBlittablePlatformPixmap::markRasterOverlay(const QRectF &rect) +{ +#ifdef QT_BLITTER_RASTEROVERLAY + markRasterOverlayImpl(rect); +#else + Q_UNUSED(rect) +#endif +} + +inline void QBlittablePlatformPixmap::markRasterOverlay(const QVectorPath &path) +{ +#ifdef QT_BLITTER_RASTEROVERLAY + markRasterOverlayImpl(path.convertToPainterPath().boundingRect()); +#else + Q_UNUSED(path) +#endif +} + +inline void QBlittablePlatformPixmap::markRasterOverlay(const QPointF &pos, const QTextItem &ti) +{ +#ifdef QT_BLITTER_RASTEROVERLAY + QFontMetricsF fm(ti.font()); + QRectF rect = fm.tightBoundingRect(ti.text()); + rect.moveBottomLeft(pos); + markRasterOverlay(rect); +#else + Q_UNUSED(pos) + Q_UNUSED(ti) +#endif +} + +inline void QBlittablePlatformPixmap::markRasterOverlay(const QRect *rects, int rectCount) +{ +#ifdef QT_BLITTER_RASTEROVERLAY + for (int i = 0; i < rectCount; i++) { + markRasterOverlay(rects[i]); + } +#else + Q_UNUSED(rects) + Q_UNUSED(rectCount) +#endif +} +inline void QBlittablePlatformPixmap::markRasterOverlay(const QRectF *rects, int rectCount) +{ +#ifdef QT_BLITTER_RASTEROVERLAY + for (int i = 0; i < rectCount; i++) { + markRasterOverlay(rects[i]); + } +#else + Q_UNUSED(rects) + Q_UNUSED(rectCount) +#endif +} + +inline void QBlittablePlatformPixmap::markRasterOverlay(const QPointF *points, int pointCount) +{ +#ifdef QT_BLITTER_RASTEROVERLAY +#error "not ported yet" +#else + Q_UNUSED(points); + Q_UNUSED(pointCount); +#endif +} + +inline void QBlittablePlatformPixmap::markRasterOverlay(const QPoint *points, int pointCount) +{ +#ifdef QT_BLITTER_RASTEROVERLAY +#error "not ported yet" +#else + Q_UNUSED(points); + Q_UNUSED(pointCount); +#endif +} + +inline void QBlittablePlatformPixmap::markRasterOverlay(const QPainterPath& path) +{ +#ifdef QT_BLITTER_RASTEROVERLAY +#error "not ported yet" +#else + Q_UNUSED(path); +#endif +} + +inline void QBlittablePlatformPixmap::unmarkRasterOverlay(const QRectF &rect) +{ +#ifdef QT_BLITTER_RASTEROVERLAY + unmarkRasterOverlayImpl(rect); +#else + Q_UNUSED(rect) +#endif +} + +QT_END_NAMESPACE +#endif // QT_NO_BLITTABLE +#endif // QPIXMAP_BLITTER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpixmap_raster_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpixmap_raster_p.h new file mode 100644 index 000000000..6ea965a32 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpixmap_raster_p.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPIXMAP_RASTER_P_H +#define QPIXMAP_RASTER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QRasterPlatformPixmap : public QPlatformPixmap +{ +public: + QRasterPlatformPixmap(PixelType type); + ~QRasterPlatformPixmap(); + + QPlatformPixmap *createCompatiblePlatformPixmap() const Q_DECL_OVERRIDE; + + void resize(int width, int height) Q_DECL_OVERRIDE; + bool fromData(const uchar *buffer, uint len, const char *format, Qt::ImageConversionFlags flags) Q_DECL_OVERRIDE; + void fromImage(const QImage &image, Qt::ImageConversionFlags flags) Q_DECL_OVERRIDE; + void fromImageInPlace(QImage &image, Qt::ImageConversionFlags flags) Q_DECL_OVERRIDE; + void fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags) Q_DECL_OVERRIDE; + + void copy(const QPlatformPixmap *data, const QRect &rect) Q_DECL_OVERRIDE; + bool scroll(int dx, int dy, const QRect &rect) Q_DECL_OVERRIDE; + void fill(const QColor &color) Q_DECL_OVERRIDE; + bool hasAlphaChannel() const Q_DECL_OVERRIDE; + QImage toImage() const Q_DECL_OVERRIDE; + QImage toImage(const QRect &rect) const Q_DECL_OVERRIDE; + QPaintEngine* paintEngine() const Q_DECL_OVERRIDE; + QImage* buffer() Q_DECL_OVERRIDE; + qreal devicePixelRatio() const Q_DECL_OVERRIDE; + void setDevicePixelRatio(qreal scaleFactor) Q_DECL_OVERRIDE; + + +protected: + int metric(QPaintDevice::PaintDeviceMetric metric) const Q_DECL_OVERRIDE; + void createPixmapForImage(QImage sourceImage, Qt::ImageConversionFlags flags); + void setImage(const QImage &image); + QImage image; + static QImage::Format systemOpaqueFormat(); + +private: + friend class QPixmap; + friend class QBitmap; + friend class QPixmapCacheEntry; + friend class QRasterPaintEngine; +}; + +QT_END_NAMESPACE + +#endif // QPIXMAP_RASTER_P_H + + diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpixmapcache_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpixmapcache_p.h new file mode 100644 index 000000000..3c5736751 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpixmapcache_p.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPIXMAPCACHE_P_H +#define QPIXMAPCACHE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qpixmapcache.h" +#include "qpaintengine.h" +#include +#include +#include "qcache.h" + +QT_BEGIN_NAMESPACE + +uint qHash(const QPixmapCache::Key &k); + +class QPixmapCache::KeyData +{ +public: + KeyData() : isValid(true), key(0), ref(1) {} + KeyData(const KeyData &other) + : isValid(other.isValid), key(other.key), ref(1) {} + ~KeyData() {} + + bool isValid; + int key; + int ref; +}; + +// XXX: hw: is this a general concept we need to abstract? +class QPixmapCacheEntry : public QPixmap +{ +public: + QPixmapCacheEntry(const QPixmapCache::Key &key, const QPixmap &pix) : QPixmap(pix), key(key) + { + QPlatformPixmap *pd = handle(); + if (pd && pd->classId() == QPlatformPixmap::RasterClass) { + QRasterPlatformPixmap *d = static_cast(pd); + if (!d->image.isNull() && d->image.d->paintEngine + && !d->image.d->paintEngine->isActive()) + { + delete d->image.d->paintEngine; + d->image.d->paintEngine = 0; + } + } + } + ~QPixmapCacheEntry(); + QPixmapCache::Key key; +}; + +QT_END_NAMESPACE + +#endif // QPIXMAPCACHE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpnghandler_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpnghandler_p.h new file mode 100644 index 000000000..4ca716e7c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpnghandler_p.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPNGHANDLER_P_H +#define QPNGHANDLER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtGui/qimageiohandler.h" + +#ifndef QT_NO_IMAGEFORMAT_PNG + +QT_BEGIN_NAMESPACE + +class QPngHandlerPrivate; +class QPngHandler : public QImageIOHandler +{ +public: + QPngHandler(); + ~QPngHandler(); + + bool canRead() const override; + bool read(QImage *image) override; + bool write(const QImage &image) override; + + QByteArray name() const override; + + QVariant option(ImageOption option) const override; + void setOption(ImageOption option, const QVariant &value) override; + bool supportsOption(ImageOption option) const override; + + static bool canRead(QIODevice *device); + +private: + QPngHandlerPrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_IMAGEFORMAT_PNG +#endif // QPNGHANDLER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpolygonclipper_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpolygonclipper_p.h new file mode 100644 index 000000000..04a31111c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qpolygonclipper_p.h @@ -0,0 +1,316 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPOLYGONCLIPPER_P_H +#define QPOLYGONCLIPPER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "private/qdatabuffer_p.h" + +QT_BEGIN_NAMESPACE + +/* based on sutherland-hodgman line-by-line clipping, as described in + Computer Graphics and Principles */ +template class QPolygonClipper +{ +public: + QPolygonClipper() : + buffer1(0), buffer2(0) + { + x1 = y1 = x2 = y2 = 0; + } + + ~QPolygonClipper() + { + } + + void setBoundingRect(const QRect bounds) + { + x1 = bounds.x(); + x2 = bounds.x() + bounds.width(); + y1 = bounds.y(); + y2 = bounds.y() + bounds.height(); + } + + QRect boundingRect() + { + return QRect(QPoint(x1, y1), QPoint(x2, y2)); + } + + inline OutType intersectLeft(const OutType &p1, const OutType &p2) + { + OutType t; + qreal dy = (p1.y - p2.y) / qreal(p1.x - p2.x); + t.x = x1; + t.y = static_cast(p2.y + (x1 - p2.x) * dy); + return t; + } + + + inline OutType intersectRight(const OutType &p1, const OutType &p2) + { + OutType t; + qreal dy = (p1.y - p2.y) / qreal(p1.x - p2.x); + t.x = x2; + t.y = static_cast(p2.y + (x2 - p2.x) * dy); + return t; + } + + + inline OutType intersectTop(const OutType &p1, const OutType &p2) + { + OutType t; + qreal dx = (p1.x - p2.x) / qreal(p1.y - p2.y); + t.x = static_cast(p2.x + (y1 - p2.y) * dx); + t.y = y1; + return t; + } + + + inline OutType intersectBottom(const OutType &p1, const OutType &p2) + { + OutType t; + qreal dx = (p1.x - p2.x) / qreal(p1.y - p2.y); + t.x = static_cast(p2.x + (y2 - p2.y) * dx); + t.y = y2; + return t; + } + + + void clipPolygon(const InType *inPoints, int inCount, OutType **outPoints, int *outCount, + bool closePolygon = true) + { + Q_ASSERT(outPoints); + Q_ASSERT(outCount); + + if (inCount < 2) { + *outCount = 0; + return; + } + + buffer1.reset(); + buffer2.reset(); + + QDataBuffer *source = &buffer1; + QDataBuffer *clipped = &buffer2; + + // Gather some info since we are iterating through the points anyway.. + bool doLeft = false, doRight = false, doTop = false, doBottom = false; + OutType ot; + for (int i=0; iadd(ot); + + if (ot.x < x1) + doLeft = true; + else if (ot.x > x2) + doRight = true; + if (ot.y < y1) + doTop = true; + else if (ot.y > y2) + doBottom = true; + } + + if (doLeft && clipped->size() > 1) { + QDataBuffer *tmp = source; + source = clipped; + clipped = tmp; + clipped->reset(); + int lastPos, start; + if (closePolygon) { + lastPos = source->size() - 1; + start = 0; + } else { + lastPos = 0; + start = 1; + if (source->at(0).x >= x1) + clipped->add(source->at(0)); + } + for (int i=start; iat(i); + const OutType &ppt = source->at(lastPos); + + if (cpt.x >= x1) { + if (ppt.x >= x1) { + clipped->add(cpt); + } else { + clipped->add(intersectLeft(cpt, ppt)); + clipped->add(cpt); + } + } else if (ppt.x >= x1) { + clipped->add(intersectLeft(cpt, ppt)); + } + lastPos = i; + } + } + + if (doRight && clipped->size() > 1) { + QDataBuffer *tmp = source; + source = clipped; + clipped = tmp; + clipped->reset(); + int lastPos, start; + if (closePolygon) { + lastPos = source->size() - 1; + start = 0; + } else { + lastPos = 0; + start = 1; + if (source->at(0).x <= x2) + clipped->add(source->at(0)); + } + for (int i=start; isize(); ++i) { + const OutType &cpt = source->at(i); + const OutType &ppt = source->at(lastPos); + + if (cpt.x <= x2) { + if (ppt.x <= x2) { + clipped->add(cpt); + } else { + clipped->add(intersectRight(cpt, ppt)); + clipped->add(cpt); + } + } else if (ppt.x <= x2) { + clipped->add(intersectRight(cpt, ppt)); + } + + lastPos = i; + } + + } + + if (doTop && clipped->size() > 1) { + QDataBuffer *tmp = source; + source = clipped; + clipped = tmp; + clipped->reset(); + int lastPos, start; + if (closePolygon) { + lastPos = source->size() - 1; + start = 0; + } else { + lastPos = 0; + start = 1; + if (source->at(0).y >= y1) + clipped->add(source->at(0)); + } + for (int i=start; isize(); ++i) { + const OutType &cpt = source->at(i); + const OutType &ppt = source->at(lastPos); + + if (cpt.y >= y1) { + if (ppt.y >= y1) { + clipped->add(cpt); + } else { + clipped->add(intersectTop(cpt, ppt)); + clipped->add(cpt); + } + } else if (ppt.y >= y1) { + clipped->add(intersectTop(cpt, ppt)); + } + + lastPos = i; + } + } + + if (doBottom && clipped->size() > 1) { + QDataBuffer *tmp = source; + source = clipped; + clipped = tmp; + clipped->reset(); + int lastPos, start; + if (closePolygon) { + lastPos = source->size() - 1; + start = 0; + } else { + lastPos = 0; + start = 1; + if (source->at(0).y <= y2) + clipped->add(source->at(0)); + } + for (int i=start; isize(); ++i) { + const OutType &cpt = source->at(i); + const OutType &ppt = source->at(lastPos); + + if (cpt.y <= y2) { + if (ppt.y <= y2) { + clipped->add(cpt); + } else { + clipped->add(intersectBottom(cpt, ppt)); + clipped->add(cpt); + } + } else if (ppt.y <= y2) { + clipped->add(intersectBottom(cpt, ppt)); + } + lastPos = i; + } + } + + if (closePolygon && clipped->size() > 0) { + // close clipped polygon + if (clipped->at(0).x != clipped->at(clipped->size()-1).x || + clipped->at(0).y != clipped->at(clipped->size()-1).y) { + OutType ot = clipped->at(0); + clipped->add(ot); + } + } + *outCount = clipped->size(); + *outPoints = clipped->data(); + } + +private: + int x1, x2, y1, y2; + QDataBuffer buffer1; + QDataBuffer buffer2; +}; + +QT_END_NAMESPACE + +#endif // QPOLYGONCLIPPER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qppmhandler_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qppmhandler_p.h new file mode 100644 index 000000000..1c6fbd686 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qppmhandler_p.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPPMHANDLER_P_H +#define QPPMHANDLER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "QtGui/qimageiohandler.h" + +#ifndef QT_NO_IMAGEFORMAT_PPM + +QT_BEGIN_NAMESPACE + +class QByteArray; +class QPpmHandler : public QImageIOHandler +{ +public: + QPpmHandler(); + bool canRead() const override; + bool read(QImage *image) override; + bool write(const QImage &image) override; + + QByteArray name() const override; + + static bool canRead(QIODevice *device, QByteArray *subType = 0); + + QVariant option(ImageOption option) const override; + void setOption(ImageOption option, const QVariant &value) override; + bool supportsOption(ImageOption option) const override; + +private: + bool readHeader(); + enum State { + Ready, + ReadHeader, + Error + }; + State state; + char type; + int width; + int height; + int mcc; + mutable QByteArray subType; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_IMAGEFORMAT_PPM + +#endif // QPPMHANDLER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrasterdefs_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrasterdefs_p.h new file mode 100644 index 000000000..bf57a84c2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrasterdefs_p.h @@ -0,0 +1,1277 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/***************************************************************************/ +/* */ +/* ftimage.h */ +/* */ +/* FreeType glyph image formats and default raster interface */ +/* (specification). */ +/* */ +/* Copyright 1996-2001, 2002, 2003, 2004 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* Note: A `raster' is simply a scan-line converter, used to render */ + /* QT_FT_Outlines into QT_FT_Bitmaps. */ + /* */ + /*************************************************************************/ + + +#ifndef __QT_FTIMAGE_H__ +#define __QT_FTIMAGE_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. +*/ + +QT_FT_BEGIN_HEADER + + /*************************************************************************/ + /* */ + /*
*/ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Pos */ + /* */ + /* */ + /* The type QT_FT_Pos is a 32-bit integer used to store vectorial */ + /* coordinates. Depending on the context, these can represent */ + /* distances in integer font units, or 16,16, or 26.6 fixed float */ + /* pixel coordinates. */ + /* */ + typedef signed int QT_FT_Pos; + + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Vector */ + /* */ + /* */ + /* A simple structure used to store a 2D vector; coordinates are of */ + /* the QT_FT_Pos type. */ + /* */ + /* */ + /* x :: The horizontal coordinate. */ + /* y :: The vertical coordinate. */ + /* */ + typedef struct QT_FT_Vector_ + { + QT_FT_Pos x; + QT_FT_Pos y; + + } QT_FT_Vector; + + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_BBox */ + /* */ + /* */ + /* A structure used to hold an outline's bounding box, i.e., the */ + /* coordinates of its extrema in the horizontal and vertical */ + /* directions. */ + /* */ + /* */ + /* xMin :: The horizontal minimum (left-most). */ + /* */ + /* yMin :: The vertical minimum (bottom-most). */ + /* */ + /* xMax :: The horizontal maximum (right-most). */ + /* */ + /* yMax :: The vertical maximum (top-most). */ + /* */ + typedef struct QT_FT_BBox_ + { + QT_FT_Pos xMin, yMin; + QT_FT_Pos xMax, yMax; + + } QT_FT_BBox; + + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Pixel_Mode */ + /* */ + /* */ + /* An enumeration type used to describe the format of pixels in a */ + /* given bitmap. Note that additional formats may be added in the */ + /* future. */ + /* */ + /* */ + /* QT_FT_PIXEL_MODE_NONE :: */ + /* Value 0 is reserved. */ + /* */ + /* QT_FT_PIXEL_MODE_MONO :: */ + /* A monochrome bitmap, using 1 bit per pixel. Note that pixels */ + /* are stored in most-significant order (MSB), which means that */ + /* the left-most pixel in a byte has value 128. */ + /* */ + /* QT_FT_PIXEL_MODE_GRAY :: */ + /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ + /* images. Each pixel is stored in one byte. Note that the number */ + /* of value "gray" levels is stored in the `num_bytes' field of */ + /* the @QT_FT_Bitmap structure (it generally is 256). */ + /* */ + /* QT_FT_PIXEL_MODE_GRAY2 :: */ + /* A 2-bit/pixel bitmap, used to represent embedded anti-aliased */ + /* bitmaps in font files according to the OpenType specification. */ + /* We haven't found a single font using this format, however. */ + /* */ + /* QT_FT_PIXEL_MODE_GRAY4 :: */ + /* A 4-bit/pixel bitmap, used to represent embedded anti-aliased */ + /* bitmaps in font files according to the OpenType specification. */ + /* We haven't found a single font using this format, however. */ + /* */ + /* QT_FT_PIXEL_MODE_LCD :: */ + /* An 8-bit bitmap, used to represent RGB or BGR decimated glyph */ + /* images used for display on LCD displays; the bitmap's width is */ + /* three times wider than the original glyph image. See also */ + /* @QT_FT_RENDER_MODE_LCD. */ + /* */ + /* QT_FT_PIXEL_MODE_LCD_V :: */ + /* An 8-bit bitmap, used to represent RGB or BGR decimated glyph */ + /* images used for display on rotated LCD displays; the bitmap's */ + /* height is three times taller than the original glyph image. */ + /* See also @QT_FT_RENDER_MODE_LCD_V. */ + /* */ + typedef enum QT_FT_Pixel_Mode_ + { + QT_FT_PIXEL_MODE_NONE = 0, + QT_FT_PIXEL_MODE_MONO, + QT_FT_PIXEL_MODE_GRAY, + QT_FT_PIXEL_MODE_GRAY2, + QT_FT_PIXEL_MODE_GRAY4, + QT_FT_PIXEL_MODE_LCD, + QT_FT_PIXEL_MODE_LCD_V, + + QT_FT_PIXEL_MODE_MAX /* do not remove */ + + } QT_FT_Pixel_Mode; + + + /*************************************************************************/ + /* */ + /* */ + /* qt_ft_pixel_mode_xxx */ + /* */ + /* */ + /* A list of deprecated constants. Use the corresponding */ + /* @QT_FT_Pixel_Mode values instead. */ + /* */ + /* */ + /* qt_ft_pixel_mode_none :: see @QT_FT_PIXEL_MODE_NONE */ + /* qt_ft_pixel_mode_mono :: see @QT_FT_PIXEL_MODE_MONO */ + /* qt_ft_pixel_mode_grays :: see @QT_FT_PIXEL_MODE_GRAY */ + /* qt_ft_pixel_mode_pal2 :: see @QT_FT_PIXEL_MODE_GRAY2 */ + /* qt_ft_pixel_mode_pal4 :: see @QT_FT_PIXEL_MODE_GRAY4 */ + /* */ +#define qt_ft_pixel_mode_none QT_FT_PIXEL_MODE_NONE +#define qt_ft_pixel_mode_mono QT_FT_PIXEL_MODE_MONO +#define qt_ft_pixel_mode_grays QT_FT_PIXEL_MODE_GRAY +#define qt_ft_pixel_mode_pal2 QT_FT_PIXEL_MODE_GRAY2 +#define qt_ft_pixel_mode_pal4 QT_FT_PIXEL_MODE_GRAY4 + + /* */ + +#if 0 + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Palette_Mode */ + /* */ + /* */ + /* THIS TYPE IS DEPRECATED. DO NOT USE IT! */ + /* */ + /* An enumeration type used to describe the format of a bitmap */ + /* palette, used with qt_ft_pixel_mode_pal4 and qt_ft_pixel_mode_pal8. */ + /* */ + /* */ + /* qt_ft_palette_mode_rgb :: The palette is an array of 3-bytes RGB */ + /* records. */ + /* */ + /* qt_ft_palette_mode_rgba :: The palette is an array of 4-bytes RGBA */ + /* records. */ + /* */ + /* */ + /* As qt_ft_pixel_mode_pal2, pal4 and pal8 are currently unused by */ + /* FreeType, these types are not handled by the library itself. */ + /* */ + typedef enum QT_FT_Palette_Mode_ + { + qt_ft_palette_mode_rgb = 0, + qt_ft_palette_mode_rgba, + + qt_ft_palettte_mode_max /* do not remove */ + + } QT_FT_Palette_Mode; + + /* */ + +#endif + + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Bitmap */ + /* */ + /* */ + /* A structure used to describe a bitmap or pixmap to the raster. */ + /* Note that we now manage pixmaps of various depths through the */ + /* `pixel_mode' field. */ + /* */ + /* */ + /* rows :: The number of bitmap rows. */ + /* */ + /* width :: The number of pixels in bitmap row. */ + /* */ + /* pitch :: The pitch's absolute value is the number of bytes */ + /* taken by one bitmap row, including padding. */ + /* However, the pitch is positive when the bitmap has */ + /* a `down' flow, and negative when it has an `up' */ + /* flow. In all cases, the pitch is an offset to add */ + /* to a bitmap pointer in order to go down one row. */ + /* */ + /* buffer :: A typeless pointer to the bitmap buffer. This */ + /* value should be aligned on 32-bit boundaries in */ + /* most cases. */ + /* */ + /* num_grays :: This field is only used with */ + /* `QT_FT_PIXEL_MODE_GRAY'; it gives the number of gray */ + /* levels used in the bitmap. */ + /* */ + /* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ + /* See @QT_FT_Pixel_Mode for possible values. */ + /* */ + /* palette_mode :: This field is only used with paletted pixel modes; */ + /* it indicates how the palette is stored. */ + /* */ + /* palette :: A typeless pointer to the bitmap palette; only */ + /* used for paletted pixel modes. */ + /* */ + /* */ + /* For now, the only pixel mode supported by FreeType are mono and */ + /* grays. However, drivers might be added in the future to support */ + /* more `colorful' options. */ + /* */ + /* When using pixel modes pal2, pal4 and pal8 with a void `palette' */ + /* field, a gray pixmap with respectively 4, 16, and 256 levels of */ + /* gray is assumed. This, in order to be compatible with some */ + /* embedded bitmap formats defined in the TrueType specification. */ + /* */ + /* Note that no font was found presenting such embedded bitmaps, so */ + /* this is currently completely unhandled by the library. */ + /* */ + typedef struct QT_FT_Bitmap_ + { + int rows; + int width; + int pitch; + unsigned char* buffer; + short num_grays; + char pixel_mode; + char palette_mode; + void* palette; + + } QT_FT_Bitmap; + + + /*************************************************************************/ + /* */ + /*
*/ + /* outline_processing */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Outline */ + /* */ + /* */ + /* This structure is used to describe an outline to the scan-line */ + /* converter. */ + /* */ + /* */ + /* n_contours :: The number of contours in the outline. */ + /* */ + /* n_points :: The number of points in the outline. */ + /* */ + /* points :: A pointer to an array of `n_points' QT_FT_Vector */ + /* elements, giving the outline's point coordinates. */ + /* */ + /* tags :: A pointer to an array of `n_points' chars, giving */ + /* each outline point's type. If bit 0 is unset, the */ + /* point is `off' the curve, i.e. a Bezier control */ + /* point, while it is `on' when set. */ + /* */ + /* Bit 1 is meaningful for `off' points only. If set, */ + /* it indicates a third-order Bezier arc control point; */ + /* and a second-order control point if unset. */ + /* */ + /* contours :: An array of `n_contours' shorts, giving the end */ + /* point of each contour within the outline. For */ + /* example, the first contour is defined by the points */ + /* `0' to `contours[0]', the second one is defined by */ + /* the points `contours[0]+1' to `contours[1]', etc. */ + /* */ + /* flags :: A set of bit flags used to characterize the outline */ + /* and give hints to the scan-converter and hinter on */ + /* how to convert/grid-fit it. See QT_FT_Outline_Flags. */ + /* */ + typedef struct QT_FT_Outline_ + { + int n_contours; /* number of contours in glyph */ + int n_points; /* number of points in the glyph */ + + QT_FT_Vector* points; /* the outline's points */ + char* tags; /* the points flags */ + int* contours; /* the contour end points */ + + int flags; /* outline masks */ + + } QT_FT_Outline; + + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_OUTLINE_FLAGS */ + /* */ + /* */ + /* A list of bit-field constants use for the flags in an outline's */ + /* `flags' field. */ + /* */ + /* */ + /* QT_FT_OUTLINE_NONE :: Value 0 is reserved. */ + /* */ + /* QT_FT_OUTLINE_OWNER :: If set, this flag indicates that the */ + /* outline's field arrays (i.e. */ + /* `points', `flags' & `contours') are */ + /* `owned' by the outline object, and */ + /* should thus be freed when it is */ + /* destroyed. */ + /* */ + /* QT_FT_OUTLINE_EVEN_ODD_FILL :: By default, outlines are filled using */ + /* the non-zero winding rule. If set to */ + /* 1, the outline will be filled using */ + /* the even-odd fill rule (only works */ + /* with the smooth raster). */ + /* */ + /* QT_FT_OUTLINE_REVERSE_FILL :: By default, outside contours of an */ + /* outline are oriented in clock-wise */ + /* direction, as defined in the TrueType */ + /* specification. This flag is set if */ + /* the outline uses the opposite */ + /* direction (typically for Type 1 */ + /* fonts). This flag is ignored by the */ + /* scan-converter. However, it is very */ + /* important for the auto-hinter. */ + /* */ + /* QT_FT_OUTLINE_IGNORE_DROPOUTS :: By default, the scan converter will */ + /* try to detect drop-outs in an outline */ + /* and correct the glyph bitmap to */ + /* ensure consistent shape continuity. */ + /* If set, this flag hints the scan-line */ + /* converter to ignore such cases. */ + /* */ + /* QT_FT_OUTLINE_HIGH_PRECISION :: This flag indicates that the */ + /* scan-line converter should try to */ + /* convert this outline to bitmaps with */ + /* the highest possible quality. It is */ + /* typically set for small character */ + /* sizes. Note that this is only a */ + /* hint, that might be completely */ + /* ignored by a given scan-converter. */ + /* */ + /* QT_FT_OUTLINE_SINGLE_PASS :: This flag is set to force a given */ + /* scan-converter to only use a single */ + /* pass over the outline to render a */ + /* bitmap glyph image. Normally, it is */ + /* set for very large character sizes. */ + /* It is only a hint, that might be */ + /* completely ignored by a given */ + /* scan-converter. */ + /* */ +#define QT_FT_OUTLINE_NONE 0x0 +#define QT_FT_OUTLINE_OWNER 0x1 +#define QT_FT_OUTLINE_EVEN_ODD_FILL 0x2 +#define QT_FT_OUTLINE_REVERSE_FILL 0x4 +#define QT_FT_OUTLINE_IGNORE_DROPOUTS 0x8 + +#define QT_FT_OUTLINE_HIGH_PRECISION 0x100 +#define QT_FT_OUTLINE_SINGLE_PASS 0x200 + + + /************************************************************************* + * + * @enum: + * qt_ft_outline_flags + * + * @description: + * These constants are deprecated. Please use the corresponding + * @QT_FT_OUTLINE_FLAGS values. + * + * @values: + * qt_ft_outline_none :: See @QT_FT_OUTLINE_NONE. + * qt_ft_outline_owner :: See @QT_FT_OUTLINE_OWNER. + * qt_ft_outline_even_odd_fill :: See @QT_FT_OUTLINE_EVEN_ODD_FILL. + * qt_ft_outline_reverse_fill :: See @QT_FT_OUTLINE_REVERSE_FILL. + * qt_ft_outline_ignore_dropouts :: See @QT_FT_OUTLINE_IGNORE_DROPOUTS. + * qt_ft_outline_high_precision :: See @QT_FT_OUTLINE_HIGH_PRECISION. + * qt_ft_outline_single_pass :: See @QT_FT_OUTLINE_SINGLE_PASS. + */ +#define qt_ft_outline_none QT_FT_OUTLINE_NONE +#define qt_ft_outline_owner QT_FT_OUTLINE_OWNER +#define qt_ft_outline_even_odd_fill QT_FT_OUTLINE_EVEN_ODD_FILL +#define qt_ft_outline_reverse_fill QT_FT_OUTLINE_REVERSE_FILL +#define qt_ft_outline_ignore_dropouts QT_FT_OUTLINE_IGNORE_DROPOUTS +#define qt_ft_outline_high_precision QT_FT_OUTLINE_HIGH_PRECISION +#define qt_ft_outline_single_pass QT_FT_OUTLINE_SINGLE_PASS + + /* */ + +#define QT_FT_CURVE_TAG( flag ) ( flag & 3 ) + +#define QT_FT_CURVE_TAG_ON 1 +#define QT_FT_CURVE_TAG_CONIC 0 +#define QT_FT_CURVE_TAG_CUBIC 2 + +#define QT_FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */ +#define QT_FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */ + +#define QT_FT_CURVE_TAG_TOUCH_BOTH ( QT_FT_CURVE_TAG_TOUCH_X | \ + QT_FT_CURVE_TAG_TOUCH_Y ) + +#define QT_FT_Curve_Tag_On QT_FT_CURVE_TAG_ON +#define QT_FT_Curve_Tag_Conic QT_FT_CURVE_TAG_CONIC +#define QT_FT_Curve_Tag_Cubic QT_FT_CURVE_TAG_CUBIC +#define QT_FT_Curve_Tag_Touch_X QT_FT_CURVE_TAG_TOUCH_X +#define QT_FT_Curve_Tag_Touch_Y QT_FT_CURVE_TAG_TOUCH_Y + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Outline_MoveToFunc */ + /* */ + /* */ + /* A function pointer type used to describe the signature of a `move */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `move to' is emitted to start a new contour in an outline. */ + /* */ + /* */ + /* to :: A pointer to the target point of the `move to'. */ + /* */ + /* user :: A typeless pointer which is passed from the caller of the */ + /* decomposition function. */ + /* */ + /* */ + /* Error code. 0 means success. */ + /* */ + typedef int + (*QT_FT_Outline_MoveToFunc)( QT_FT_Vector* to, + void* user ); + +#define QT_FT_Outline_MoveTo_Func QT_FT_Outline_MoveToFunc + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Outline_LineToFunc */ + /* */ + /* */ + /* A function pointer type used to describe the signature of a `line */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `line to' is emitted to indicate a segment in the outline. */ + /* */ + /* */ + /* to :: A pointer to the target point of the `line to'. */ + /* */ + /* user :: A typeless pointer which is passed from the caller of the */ + /* decomposition function. */ + /* */ + /* */ + /* Error code. 0 means success. */ + /* */ + typedef int + (*QT_FT_Outline_LineToFunc)( QT_FT_Vector* to, + void* user ); + +#define QT_FT_Outline_LineTo_Func QT_FT_Outline_LineToFunc + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Outline_ConicToFunc */ + /* */ + /* */ + /* A function pointer type use to describe the signature of a `conic */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `conic to' is emitted to indicate a second-order Bezier arc in */ + /* the outline. */ + /* */ + /* */ + /* control :: An intermediate control point between the last position */ + /* and the new target in `to'. */ + /* */ + /* to :: A pointer to the target end point of the conic arc. */ + /* */ + /* user :: A typeless pointer which is passed from the caller of */ + /* the decomposition function. */ + /* */ + /* */ + /* Error code. 0 means success. */ + /* */ + typedef int + (*QT_FT_Outline_ConicToFunc)( QT_FT_Vector* control, + QT_FT_Vector* to, + void* user ); + +#define QT_FT_Outline_ConicTo_Func QT_FT_Outline_ConicToFunc + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Outline_CubicToFunc */ + /* */ + /* */ + /* A function pointer type used to describe the signature of a `cubic */ + /* to' function during outline walking/decomposition. */ + /* */ + /* A `cubic to' is emitted to indicate a third-order Bezier arc. */ + /* */ + /* */ + /* control1 :: A pointer to the first Bezier control point. */ + /* */ + /* control2 :: A pointer to the second Bezier control point. */ + /* */ + /* to :: A pointer to the target end point. */ + /* */ + /* user :: A typeless pointer which is passed from the caller of */ + /* the decomposition function. */ + /* */ + /* */ + /* Error code. 0 means success. */ + /* */ + typedef int + (*QT_FT_Outline_CubicToFunc)( QT_FT_Vector* control1, + QT_FT_Vector* control2, + QT_FT_Vector* to, + void* user ); + +#define QT_FT_Outline_CubicTo_Func QT_FT_Outline_CubicToFunc + + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Outline_Funcs */ + /* */ + /* */ + /* A structure to hold various function pointers used during outline */ + /* decomposition in order to emit segments, conic, and cubic Beziers, */ + /* as well as `move to' and `close to' operations. */ + /* */ + /* */ + /* move_to :: The `move to' emitter. */ + /* */ + /* line_to :: The segment emitter. */ + /* */ + /* conic_to :: The second-order Bezier arc emitter. */ + /* */ + /* cubic_to :: The third-order Bezier arc emitter. */ + /* */ + /* shift :: The shift that is applied to coordinates before they */ + /* are sent to the emitter. */ + /* */ + /* delta :: The delta that is applied to coordinates before they */ + /* are sent to the emitter, but after the shift. */ + /* */ + /* */ + /* The point coordinates sent to the emitters are the transformed */ + /* version of the original coordinates (this is important for high */ + /* accuracy during scan-conversion). The transformation is simple: */ + /* */ + /* x' = (x << shift) - delta */ + /* y' = (x << shift) - delta */ + /* */ + /* Set the value of `shift' and `delta' to 0 to get the original */ + /* point coordinates. */ + /* */ + typedef struct QT_FT_Outline_Funcs_ + { + QT_FT_Outline_MoveToFunc move_to; + QT_FT_Outline_LineToFunc line_to; + QT_FT_Outline_ConicToFunc conic_to; + QT_FT_Outline_CubicToFunc cubic_to; + + int shift; + QT_FT_Pos delta; + + } QT_FT_Outline_Funcs; + + + /*************************************************************************/ + /* */ + /*
*/ + /* basic_types */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_IMAGE_TAG */ + /* */ + /* */ + /* This macro converts four letter tags into an unsigned long. */ + /* */ + /* */ + /* Since many 16bit compilers don't like 32bit enumerations, you */ + /* should redefine this macro in case of problems to something like */ + /* this: */ + /* */ + /* #define QT_FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ + /* */ + /* to get a simple enumeration without assigning special numbers. */ + /* */ +#ifndef QT_FT_IMAGE_TAG +#define QT_FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ + value = ( ( (unsigned long)_x1 << 24 ) | \ + ( (unsigned long)_x2 << 16 ) | \ + ( (unsigned long)_x3 << 8 ) | \ + (unsigned long)_x4 ) +#endif /* QT_FT_IMAGE_TAG */ + + + /*************************************************************************/ + /* */ + /* */ + /* QT_FT_Glyph_Format */ + /* */ + /* */ + /* An enumeration type used to describe the format of a given glyph */ + /* image. Note that this version of FreeType only supports two image */ + /* formats, even though future font drivers will be able to register */ + /* their own format. */ + /* */ + /* */ + /* QT_FT_GLYPH_FORMAT_NONE :: */ + /* The value 0 is reserved and does describe a glyph format. */ + /* */ + /* QT_FT_GLYPH_FORMAT_COMPOSITE :: */ + /* The glyph image is a composite of several other images. This */ + /* format is _only_ used with @QT_FT_LOAD_NO_RECURSE, and is used to */ + /* report compound glyphs (like accented characters). */ + /* */ + /* QT_FT_GLYPH_FORMAT_BITMAP :: */ + /* The glyph image is a bitmap, and can be described as an */ + /* @QT_FT_Bitmap. You generally need to access the `bitmap' field of */ + /* the @QT_FT_GlyphSlotRec structure to read it. */ + /* */ + /* QT_FT_GLYPH_FORMAT_OUTLINE :: */ + /* The glyph image is a vertorial outline made of line segments */ + /* and Bezier arcs; it can be described as an @QT_FT_Outline; you */ + /* generally want to access the `outline' field of the */ + /* @QT_FT_GlyphSlotRec structure to read it. */ + /* */ + /* QT_FT_GLYPH_FORMAT_PLOTTER :: */ + /* The glyph image is a vectorial path with no inside/outside */ + /* contours. Some Type 1 fonts, like those in the Hershey family, */ + /* contain glyphs in this format. These are described as */ + /* @QT_FT_Outline, but FreeType isn't currently capable of rendering */ + /* them correctly. */ + /* */ + typedef enum QT_FT_Glyph_Format_ + { + QT_FT_IMAGE_TAG( QT_FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), + + QT_FT_IMAGE_TAG( QT_FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), + QT_FT_IMAGE_TAG( QT_FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), + QT_FT_IMAGE_TAG( QT_FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), + QT_FT_IMAGE_TAG( QT_FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) + + } QT_FT_Glyph_Format; + + + /*************************************************************************/ + /* */ + /* */ + /* qt_ft_glyph_format_xxx */ + /* */ + /* */ + /* A list of decprecated constants. Use the corresponding */ + /* @QT_FT_Glyph_Format values instead. */ + /* */ + /* */ + /* qt_ft_glyph_format_none :: see @QT_FT_GLYPH_FORMAT_NONE */ + /* qt_ft_glyph_format_composite :: see @QT_FT_GLYPH_FORMAT_COMPOSITE */ + /* qt_ft_glyph_format_bitmap :: see @QT_FT_GLYPH_FORMAT_BITMAP */ + /* qt_ft_glyph_format_outline :: see @QT_FT_GLYPH_FORMAT_OUTLINE */ + /* qt_ft_glyph_format_plotter :: see @QT_FT_GLYPH_FORMAT_PLOTTER */ + /* */ +#define qt_ft_glyph_format_none QT_FT_GLYPH_FORMAT_NONE +#define qt_ft_glyph_format_composite QT_FT_GLYPH_FORMAT_COMPOSITE +#define qt_ft_glyph_format_bitmap QT_FT_GLYPH_FORMAT_BITMAP +#define qt_ft_glyph_format_outline QT_FT_GLYPH_FORMAT_OUTLINE +#define qt_ft_glyph_format_plotter QT_FT_GLYPH_FORMAT_PLOTTER + + + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + /***** *****/ + /***** R A S T E R D E F I N I T I O N S *****/ + /***** *****/ + /*************************************************************************/ + /*************************************************************************/ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* A raster is a scan converter, in charge of rendering an outline into */ + /* a a bitmap. This section contains the public API for rasters. */ + /* */ + /* Note that in FreeType 2, all rasters are now encapsulated within */ + /* specific modules called `renderers'. See `freetype/ftrender.h' for */ + /* more details on renderers. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /*
*/ + /* raster */ + /* */ + /* */ + /* Scanline converter */ + /* */ + /* <Abstract> */ + /* How vectorial outlines are converted into bitmaps and pixmaps. */ + /* */ + /* <Description> */ + /* This section contains technical definitions. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* <Type> */ + /* QT_FT_Raster */ + /* */ + /* <Description> */ + /* A handle (pointer) to a raster object. Each object can be used */ + /* independently to convert an outline into a bitmap or pixmap. */ + /* */ + typedef struct TRaster_ *QT_FT_Raster; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* QT_FT_Span */ + /* */ + /* <Description> */ + /* A structure used to model a single span of gray (or black) pixels */ + /* when rendering a monochrome or anti-aliased bitmap. */ + /* */ + /* <Fields> */ + /* x :: The span's horizontal start position. */ + /* */ + /* len :: The span's length in pixels. */ + /* */ + /* coverage :: The span color/coverage, ranging from 0 (background) */ + /* to 255 (foreground). Only used for anti-aliased */ + /* rendering. */ + /* */ + /* <Note> */ + /* This structure is used by the span drawing callback type named */ + /* QT_FT_SpanFunc which takes the y-coordinate of the span as a */ + /* a parameter. */ + /* */ + /* The coverage value is always between 0 and 255, even if the number */ + /* of gray levels have been set through QT_FT_Set_Gray_Levels(). */ + /* */ + typedef struct QT_FT_Span_ + { + short x; + unsigned short len; + short y; + unsigned char coverage; + } QT_FT_Span; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* QT_FT_SpanFunc */ + /* */ + /* <Description> */ + /* A function used as a call-back by the anti-aliased renderer in */ + /* order to let client applications draw themselves the gray pixel */ + /* spans on each scan line. */ + /* */ + /* <Input> */ + /* y :: The scanline's y-coordinate. */ + /* */ + /* count :: The number of spans to draw on this scanline. */ + /* */ + /* spans :: A table of `count' spans to draw on the scanline. */ + /* */ + /* user :: User-supplied data that is passed to the callback. */ + /* */ + /* <Note> */ + /* This callback allows client applications to directly render the */ + /* gray spans of the anti-aliased bitmap to any kind of surfaces. */ + /* */ + /* This can be used to write anti-aliased outlines directly to a */ + /* given background bitmap, and even perform translucency. */ + /* */ + /* Note that the `count' field cannot be greater than a fixed value */ + /* defined by the QT_FT_MAX_GRAY_SPANS configuration macro in */ + /* ftoption.h. By default, this value is set to 32, which means that */ + /* if there are more than 32 spans on a given scanline, the callback */ + /* will be called several times with the same `y' parameter in order */ + /* to draw all callbacks. */ + /* */ + /* Otherwise, the callback is only called once per scan-line, and */ + /* only for those scanlines that do have `gray' pixels on them. */ + /* */ + typedef void + (*QT_FT_SpanFunc)(int count, + const QT_FT_Span* spans, + void* worker); + +#define QT_FT_Raster_Span_Func QT_FT_SpanFunc + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* QT_FT_Raster_BitTest_Func */ + /* */ + /* <Description> */ + /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ + /* */ + /* A function used as a call-back by the monochrome scan-converter */ + /* to test whether a given target pixel is already set to the drawing */ + /* `color'. These tests are crucial to implement drop-out control */ + /* per-se the TrueType spec. */ + /* */ + /* <Input> */ + /* y :: The pixel's y-coordinate. */ + /* */ + /* x :: The pixel's x-coordinate. */ + /* */ + /* user :: User-supplied data that is passed to the callback. */ + /* */ + /* <Return> */ + /* 1 if the pixel is `set', 0 otherwise. */ + /* */ + typedef int + (*QT_FT_Raster_BitTest_Func)( int y, + int x, + void* user ); + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* QT_FT_Raster_BitSet_Func */ + /* */ + /* <Description> */ + /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ + /* */ + /* A function used as a call-back by the monochrome scan-converter */ + /* to set an individual target pixel. This is crucial to implement */ + /* drop-out control according to the TrueType specification. */ + /* */ + /* <Input> */ + /* y :: The pixel's y-coordinate. */ + /* */ + /* x :: The pixel's x-coordinate. */ + /* */ + /* user :: User-supplied data that is passed to the callback. */ + /* */ + /* <Return> */ + /* 1 if the pixel is `set', 0 otherwise. */ + /* */ + typedef void + (*QT_FT_Raster_BitSet_Func)( int y, + int x, + void* user ); + + + /*************************************************************************/ + /* */ + /* <Enum> */ + /* QT_FT_RASTER_FLAG_XXX */ + /* */ + /* <Description> */ + /* A list of bit flag constants as used in the `flags' field of a */ + /* @QT_FT_Raster_Params structure. */ + /* */ + /* <Values> */ + /* QT_FT_RASTER_FLAG_DEFAULT :: This value is 0. */ + /* */ + /* QT_FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ + /* anti-aliased glyph image should be */ + /* generated. Otherwise, it will be */ + /* monochrome (1-bit). */ + /* */ + /* QT_FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ + /* rendering. In this mode, client */ + /* applications must provide their own span */ + /* callback. This lets them directly */ + /* draw or compose over an existing bitmap. */ + /* If this bit is not set, the target */ + /* pixmap's buffer _must_ be zeroed before */ + /* rendering. */ + /* */ + /* Note that for now, direct rendering is */ + /* only possible with anti-aliased glyphs. */ + /* */ + /* QT_FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ + /* rendering mode. If set, the output will */ + /* be clipped to a box specified in the */ + /* "clip_box" field of the QT_FT_Raster_Params */ + /* structure. */ + /* */ + /* Note that by default, the glyph bitmap */ + /* is clipped to the target pixmap, except */ + /* in direct rendering mode where all spans */ + /* are generated if no clipping box is set. */ + /* */ +#define QT_FT_RASTER_FLAG_DEFAULT 0x0 +#define QT_FT_RASTER_FLAG_AA 0x1 +#define QT_FT_RASTER_FLAG_DIRECT 0x2 +#define QT_FT_RASTER_FLAG_CLIP 0x4 + + /* deprecated */ +#define qt_ft_raster_flag_default QT_FT_RASTER_FLAG_DEFAULT +#define qt_ft_raster_flag_aa QT_FT_RASTER_FLAG_AA +#define qt_ft_raster_flag_direct QT_FT_RASTER_FLAG_DIRECT +#define qt_ft_raster_flag_clip QT_FT_RASTER_FLAG_CLIP + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* QT_FT_Raster_Params */ + /* */ + /* <Description> */ + /* A structure to hold the arguments used by a raster's render */ + /* function. */ + /* */ + /* <Fields> */ + /* target :: The target bitmap. */ + /* */ + /* source :: A pointer to the source glyph image (e.g. an */ + /* QT_FT_Outline). */ + /* */ + /* flags :: The rendering flags. */ + /* */ + /* gray_spans :: The gray span drawing callback. */ + /* */ + /* black_spans :: The black span drawing callback. */ + /* */ + /* bit_test :: The bit test callback. UNIMPLEMENTED! */ + /* */ + /* bit_set :: The bit set callback. UNIMPLEMENTED! */ + /* */ + /* user :: User-supplied data that is passed to each drawing */ + /* callback. */ + /* */ + /* clip_box :: An optional clipping box. It is only used in */ + /* direct rendering mode. Note that coordinates here */ + /* should be expressed in _integer_ pixels (and not in */ + /* 26.6 fixed-point units). */ + /* */ + /* <Note> */ + /* An anti-aliased glyph bitmap is drawn if the QT_FT_RASTER_FLAG_AA bit */ + /* flag is set in the `flags' field, otherwise a monochrome bitmap */ + /* will be generated. */ + /* */ + /* If the QT_FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ + /* raster will call the `gray_spans' callback to draw gray pixel */ + /* spans, in the case of an aa glyph bitmap, it will call */ + /* `black_spans', and `bit_test' and `bit_set' in the case of a */ + /* monochrome bitmap. This allows direct composition over a */ + /* pre-existing bitmap through user-provided callbacks to perform the */ + /* span drawing/composition. */ + /* */ + /* Note that the `bit_test' and `bit_set' callbacks are required when */ + /* rendering a monochrome bitmap, as they are crucial to implement */ + /* correct drop-out control as defined in the TrueType specification. */ + /* */ + typedef struct QT_FT_Raster_Params_ + { + QT_FT_Bitmap* target; + void* source; + int flags; + QT_FT_SpanFunc gray_spans; + QT_FT_SpanFunc black_spans; + QT_FT_Raster_BitTest_Func bit_test; /* doesn't work! */ + QT_FT_Raster_BitSet_Func bit_set; /* doesn't work! */ + void* user; + QT_FT_BBox clip_box; + int skip_spans; + + } QT_FT_Raster_Params; + + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* QT_FT_Raster_NewFunc */ + /* */ + /* <Description> */ + /* A function used to create a new raster object. */ + /* */ + /* <Input> */ + /* memory :: A handle to the memory allocator. */ + /* */ + /* <Output> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* <Return> */ + /* Error code. 0 means success. */ + /* */ + /* <Note> */ + /* The `memory' parameter is a typeless pointer in order to avoid */ + /* un-wanted dependencies on the rest of the FreeType code. In */ + /* practice, it is a QT_FT_Memory, i.e., a handle to the standard */ + /* FreeType memory allocator. However, this field can be completely */ + /* ignored by a given raster implementation. */ + /* */ + typedef int + (*QT_FT_Raster_NewFunc)( QT_FT_Raster* raster ); + +#define QT_FT_Raster_New_Func QT_FT_Raster_NewFunc + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* QT_FT_Raster_DoneFunc */ + /* */ + /* <Description> */ + /* A function used to destroy a given raster object. */ + /* */ + /* <Input> */ + /* raster :: A handle to the raster object. */ + /* */ + typedef void + (*QT_FT_Raster_DoneFunc)( QT_FT_Raster raster ); + +#define QT_FT_Raster_Done_Func QT_FT_Raster_DoneFunc + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* QT_FT_Raster_ResetFunc */ + /* */ + /* <Description> */ + /* FreeType provides an area of memory called the `render pool', */ + /* available to all registered rasters. This pool can be freely used */ + /* during a given scan-conversion but is shared by all rasters. Its */ + /* content is thus transient. */ + /* */ + /* This function is called each time the render pool changes, or just */ + /* after a new raster object is created. */ + /* */ + /* <Input> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* pool_base :: The address in memory of the render pool. */ + /* */ + /* pool_size :: The size in bytes of the render pool. */ + /* */ + /* <Note> */ + /* Rasters can ignore the render pool and rely on dynamic memory */ + /* allocation if they want to (a handle to the memory allocator is */ + /* passed to the raster constructor). However, this is not */ + /* recommended for efficiency purposes. */ + /* */ + typedef void + (*QT_FT_Raster_ResetFunc)( QT_FT_Raster raster, + unsigned char* pool_base, + unsigned long pool_size ); + +#define QT_FT_Raster_Reset_Func QT_FT_Raster_ResetFunc + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* QT_FT_Raster_SetModeFunc */ + /* */ + /* <Description> */ + /* This function is a generic facility to change modes or attributes */ + /* in a given raster. This can be used for debugging purposes, or */ + /* simply to allow implementation-specific `features' in a given */ + /* raster module. */ + /* */ + /* <Input> */ + /* raster :: A handle to the new raster object. */ + /* */ + /* mode :: A 4-byte tag used to name the mode or property. */ + /* */ + /* args :: A pointer to the new mode/property to use. */ + /* */ + typedef int + (*QT_FT_Raster_SetModeFunc)( QT_FT_Raster raster, + unsigned long mode, + void* args ); + +#define QT_FT_Raster_Set_Mode_Func QT_FT_Raster_SetModeFunc + + /*************************************************************************/ + /* */ + /* <FuncType> */ + /* QT_FT_Raster_RenderFunc */ + /* */ + /* <Description> */ + /* Invokes a given raster to scan-convert a given glyph image into a */ + /* target bitmap. */ + /* */ + /* <Input> */ + /* raster :: A handle to the raster object. */ + /* */ + /* params :: A pointer to a QT_FT_Raster_Params structure used to store */ + /* the rendering parameters. */ + /* */ + /* <Return> */ + /* Error code. 0 means success. */ + /* */ + /* <Note> */ + /* The exact format of the source image depends on the raster's glyph */ + /* format defined in its QT_FT_Raster_Funcs structure. It can be an */ + /* QT_FT_Outline or anything else in order to support a large array of */ + /* glyph formats. */ + /* */ + /* Note also that the render function can fail and return a */ + /* QT_FT_Err_Unimplemented_Feature error code if the raster used does */ + /* not support direct composition. */ + /* */ + /* XXX: For now, the standard raster doesn't support direct */ + /* composition but this should change for the final release (see */ + /* the files demos/src/ftgrays.c and demos/src/ftgrays2.c for */ + /* examples of distinct implementations which support direct */ + /* composition). */ + /* */ + typedef int + (*QT_FT_Raster_RenderFunc)( QT_FT_Raster raster, + QT_FT_Raster_Params* params ); + +#define QT_FT_Raster_Render_Func QT_FT_Raster_RenderFunc + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* QT_FT_Raster_Funcs */ + /* */ + /* <Description> */ + /* A structure used to describe a given raster class to the library. */ + /* */ + /* <Fields> */ + /* glyph_format :: The supported glyph format for this raster. */ + /* */ + /* raster_new :: The raster constructor. */ + /* */ + /* raster_reset :: Used to reset the render pool within the raster. */ + /* */ + /* raster_render :: A function to render a glyph into a given bitmap. */ + /* */ + /* raster_done :: The raster destructor. */ + /* */ + typedef struct QT_FT_Raster_Funcs_ + { + QT_FT_Glyph_Format glyph_format; + QT_FT_Raster_NewFunc raster_new; + QT_FT_Raster_ResetFunc raster_reset; + QT_FT_Raster_SetModeFunc raster_set_mode; + QT_FT_Raster_RenderFunc raster_render; + QT_FT_Raster_DoneFunc raster_done; + + } QT_FT_Raster_Funcs; + + + /* */ + + +QT_FT_END_HEADER + +#endif /* __FTIMAGE_H__ */ + + +/* END */ diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrasterizer_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrasterizer_p.h new file mode 100644 index 000000000..955577f4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrasterizer_p.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRASTERIZER_P_H +#define QRASTERIZER_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 <QtGui/private/qtguiglobal_p.h> +#include "QtGui/qpainter.h" + +#include <private/qdrawhelper_p.h> +#include <private/qrasterdefs_p.h> + +QT_BEGIN_NAMESPACE + +struct QSpanData; +class QRasterBuffer; +class QRasterizerPrivate; + +class +QRasterizer +{ +public: + QRasterizer(); + ~QRasterizer(); + + void setAntialiased(bool antialiased); + void setClipRect(const QRect &clipRect); + void setLegacyRoundingEnabled(bool legacyRoundingEnabled); + + void initialize(ProcessSpans blend, void *data); + + void rasterize(const QT_FT_Outline *outline, Qt::FillRule fillRule); + void rasterize(const QPainterPath &path, Qt::FillRule fillRule); + + // width should be in units of |a-b| + void rasterizeLine(const QPointF &a, const QPointF &b, qreal width, bool squareCap = false); + +private: + QRasterizerPrivate *d; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrawfont_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrawfont_p.h new file mode 100644 index 000000000..0fc8739bf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrawfont_p.h @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRAWFONTPRIVATE_P_H +#define QRAWFONTPRIVATE_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 <QtGui/private/qtguiglobal_p.h> +#include "qrawfont.h" + +#include "qfontengine_p.h" +#include <QtCore/qthread.h> +#include <QtCore/qthreadstorage.h> + +#if !defined(QT_NO_RAWFONT) + +QT_BEGIN_NAMESPACE + +namespace { class CustomFontFileLoader; } +class Q_GUI_EXPORT QRawFontPrivate +{ +public: + QRawFontPrivate() + : fontEngine(0) + , hintingPreference(QFont::PreferDefaultHinting) + , thread(0) + {} + + QRawFontPrivate(const QRawFontPrivate &other) + : fontEngine(other.fontEngine) + , hintingPreference(other.hintingPreference) + , thread(other.thread) + { +#ifndef QT_NO_DEBUG + Q_ASSERT(fontEngine == 0 || thread == QThread::currentThread()); +#endif + if (fontEngine != 0) + fontEngine->ref.ref(); + } + + ~QRawFontPrivate() + { +#ifndef QT_NO_DEBUG + Q_ASSERT(ref.load() == 0); +#endif + cleanUp(); + } + + inline void cleanUp() + { + setFontEngine(0); + hintingPreference = QFont::PreferDefaultHinting; + } + + inline bool isValid() const + { +#ifndef QT_NO_DEBUG + Q_ASSERT(fontEngine == 0 || thread == QThread::currentThread()); +#endif + return fontEngine != 0; + } + + inline void setFontEngine(QFontEngine *engine) + { +#ifndef QT_NO_DEBUG + Q_ASSERT(fontEngine == 0 || thread == QThread::currentThread()); +#endif + if (fontEngine == engine) + return; + + if (fontEngine != 0) { + if (!fontEngine->ref.deref()) + delete fontEngine; +#ifndef QT_NO_DEBUG + thread = 0; +#endif + } + + fontEngine = engine; + + if (fontEngine != 0) { + fontEngine->ref.ref(); +#ifndef QT_NO_DEBUG + thread = QThread::currentThread(); + Q_ASSERT(thread); +#endif + } + } + + void loadFromData(const QByteArray &fontData, + qreal pixelSize, + QFont::HintingPreference hintingPreference); + + static QRawFontPrivate *get(const QRawFont &font) { return font.d.data(); } + + QFontEngine *fontEngine; + QFont::HintingPreference hintingPreference; + QAtomicInt ref; + +private: + QThread *thread; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_RAWFONT + +#endif // QRAWFONTPRIVATE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrbtree_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrbtree_p.h new file mode 100644 index 000000000..d3ee23a91 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrbtree_p.h @@ -0,0 +1,571 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRBTREE_P_H +#define QRBTREE_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 <QtGui/private/qtguiglobal_p.h> + +QT_BEGIN_NAMESPACE + +template <class T> +struct QRBTree +{ + struct Node + { + inline Node() : parent(0), left(0), right(0), red(true) { } + inline ~Node() {if (left) delete left; if (right) delete right;} + T data; + Node *parent; + Node *left; + Node *right; + bool red; + }; + + inline QRBTree() : root(0), freeList(0) { } + inline ~QRBTree(); + + inline void clear(); + + void attachBefore(Node *parent, Node *child); + void attachAfter(Node *parent, Node *child); + + inline Node *front(Node *node) const; + inline Node *back(Node *node) const; + Node *next(Node *node) const; + Node *previous(Node *node) const; + + inline void deleteNode(Node *&node); + inline Node *newNode(); + + // Return 1 if 'left' comes after 'right', 0 if equal, and -1 otherwise. + // 'left' and 'right' cannot be null. + int order(Node *left, Node *right); + inline bool validate() const; + +private: + void rotateLeft(Node *node); + void rotateRight(Node *node); + void update(Node *node); + + inline void attachLeft(Node *parent, Node *child); + inline void attachRight(Node *parent, Node *child); + + int blackDepth(Node *top) const; + bool checkRedBlackProperty(Node *top) const; + + void swapNodes(Node *n1, Node *n2); + void detach(Node *node); + + // 'node' must be black. rebalance will reduce the depth of black nodes by one in the sibling tree. + void rebalance(Node *node); + +public: + Node *root; +private: + Node *freeList; +}; + +template <class T> +inline QRBTree<T>::~QRBTree() +{ + clear(); + while (freeList) { + // Avoid recursively calling the destructor, as this list may become large. + Node *next = freeList->right; + freeList->right = 0; + delete freeList; + freeList = next; + } +} + +template <class T> +inline void QRBTree<T>::clear() +{ + if (root) + delete root; + root = 0; +} + +template <class T> +void QRBTree<T>::rotateLeft(Node *node) +{ + // | | // + // N B // + // / \ / \ // + // A B ---> N D // + // / \ / \ // + // C D A C // + + Node *&ref = (node->parent ? (node == node->parent->left ? node->parent->left : node->parent->right) : root); + ref = node->right; + node->right->parent = node->parent; + + // : // + // N // + // / :| // + // A B // + // / \ // + // C D // + + node->right = ref->left; + if (ref->left) + ref->left->parent = node; + + // : | // + // N B // + // / \ : \ // + // A C D // + + ref->left = node; + node->parent = ref; + + // | // + // B // + // / \ // + // N D // + // / \ // + // A C // +} + +template <class T> +void QRBTree<T>::rotateRight(Node *node) +{ + // | | // + // N A // + // / \ / \ // + // A B ---> C N // + // / \ / \ // + // C D D B // + + Node *&ref = (node->parent ? (node == node->parent->left ? node->parent->left : node->parent->right) : root); + ref = node->left; + node->left->parent = node->parent; + + node->left = ref->right; + if (ref->right) + ref->right->parent = node; + + ref->right = node; + node->parent = ref; +} + +template <class T> +void QRBTree<T>::update(Node *node) // call this after inserting a node +{ + for (;;) { + Node *parent = node->parent; + + // if the node is the root, color it black + if (!parent) { + node->red = false; + return; + } + + // if the parent is black, the node can be left red + if (!parent->red) + return; + + // at this point, the parent is red and cannot be the root + Node *grandpa = parent->parent; + Q_ASSERT(grandpa); + + Node *uncle = (parent == grandpa->left ? grandpa->right : grandpa->left); + if (uncle && uncle->red) { + // grandpa's black, parent and uncle are red. + // let parent and uncle be black, grandpa red and recursively update grandpa. + Q_ASSERT(!grandpa->red); + parent->red = false; + uncle->red = false; + grandpa->red = true; + node = grandpa; + continue; + } + + // at this point, uncle is black + if (node == parent->right && parent == grandpa->left) + rotateLeft(node = parent); + else if (node == parent->left && parent == grandpa->right) + rotateRight(node = parent); + parent = node->parent; + + if (parent == grandpa->left) { + rotateRight(grandpa); + parent->red = false; + grandpa->red = true; + } else { + rotateLeft(grandpa); + parent->red = false; + grandpa->red = true; + } + return; + } +} + +template <class T> +inline void QRBTree<T>::attachLeft(Node *parent, Node *child) +{ + Q_ASSERT(!parent->left); + parent->left = child; + child->parent = parent; + update(child); +} + +template <class T> +inline void QRBTree<T>::attachRight(Node *parent, Node *child) +{ + Q_ASSERT(!parent->right); + parent->right = child; + child->parent = parent; + update(child); +} + +template <class T> +void QRBTree<T>::attachBefore(Node *parent, Node *child) +{ + if (!root) + update(root = child); + else if (!parent) + attachRight(back(root), child); + else if (parent->left) + attachRight(back(parent->left), child); + else + attachLeft(parent, child); +} + +template <class T> +void QRBTree<T>::attachAfter(Node *parent, Node *child) +{ + if (!root) + update(root = child); + else if (!parent) + attachLeft(front(root), child); + else if (parent->right) + attachLeft(front(parent->right), child); + else + attachRight(parent, child); +} + +template <class T> +void QRBTree<T>::swapNodes(Node *n1, Node *n2) +{ + // Since iterators must not be invalidated, it is not sufficient to only swap the data. + if (n1->parent == n2) { + n1->parent = n2->parent; + n2->parent = n1; + } else if (n2->parent == n1) { + n2->parent = n1->parent; + n1->parent = n2; + } else { + qSwap(n1->parent, n2->parent); + } + + qSwap(n1->left, n2->left); + qSwap(n1->right, n2->right); + qSwap(n1->red, n2->red); + + if (n1->parent) { + if (n1->parent->left == n2) + n1->parent->left = n1; + else + n1->parent->right = n1; + } else { + root = n1; + } + + if (n2->parent) { + if (n2->parent->left == n1) + n2->parent->left = n2; + else + n2->parent->right = n2; + } else { + root = n2; + } + + if (n1->left) + n1->left->parent = n1; + if (n1->right) + n1->right->parent = n1; + + if (n2->left) + n2->left->parent = n2; + if (n2->right) + n2->right->parent = n2; +} + +template <class T> +void QRBTree<T>::detach(Node *node) // call this before removing a node. +{ + if (node->right) + swapNodes(node, front(node->right)); + + Node *child = (node->left ? node->left : node->right); + + if (!node->red) { + if (child && child->red) + child->red = false; + else + rebalance(node); + } + + Node *&ref = (node->parent ? (node == node->parent->left ? node->parent->left : node->parent->right) : root); + ref = child; + if (child) + child->parent = node->parent; + node->left = node->right = node->parent = 0; +} + +// 'node' must be black. rebalance will reduce the depth of black nodes by one in the sibling tree. +template <class T> +void QRBTree<T>::rebalance(Node *node) +{ + Q_ASSERT(!node->red); + for (;;) { + if (!node->parent) + return; + + // at this point, node is not a parent, it is black, thus it must have a sibling. + Node *sibling = (node == node->parent->left ? node->parent->right : node->parent->left); + Q_ASSERT(sibling); + + if (sibling->red) { + sibling->red = false; + node->parent->red = true; + if (node == node->parent->left) + rotateLeft(node->parent); + else + rotateRight(node->parent); + sibling = (node == node->parent->left ? node->parent->right : node->parent->left); + Q_ASSERT(sibling); + } + + // at this point, the sibling is black. + Q_ASSERT(!sibling->red); + + if ((!sibling->left || !sibling->left->red) && (!sibling->right || !sibling->right->red)) { + bool parentWasRed = node->parent->red; + sibling->red = true; + node->parent->red = false; + if (parentWasRed) + return; + node = node->parent; + continue; + } + + // at this point, at least one of the sibling's children is red. + + if (node == node->parent->left) { + if (!sibling->right || !sibling->right->red) { + Q_ASSERT(sibling->left); + sibling->red = true; + sibling->left->red = false; + rotateRight(sibling); + + sibling = sibling->parent; + Q_ASSERT(sibling); + } + sibling->red = node->parent->red; + node->parent->red = false; + + Q_ASSERT(sibling->right->red); + sibling->right->red = false; + rotateLeft(node->parent); + } else { + if (!sibling->left || !sibling->left->red) { + Q_ASSERT(sibling->right); + sibling->red = true; + sibling->right->red = false; + rotateLeft(sibling); + + sibling = sibling->parent; + Q_ASSERT(sibling); + } + sibling->red = node->parent->red; + node->parent->red = false; + + Q_ASSERT(sibling->left->red); + sibling->left->red = false; + rotateRight(node->parent); + } + return; + } +} + +template <class T> +inline typename QRBTree<T>::Node *QRBTree<T>::front(Node *node) const +{ + while (node->left) + node = node->left; + return node; +} + +template <class T> +inline typename QRBTree<T>::Node *QRBTree<T>::back(Node *node) const +{ + while (node->right) + node = node->right; + return node; +} + +template <class T> +typename QRBTree<T>::Node *QRBTree<T>::next(Node *node) const +{ + if (node->right) + return front(node->right); + while (node->parent && node == node->parent->right) + node = node->parent; + return node->parent; +} + +template <class T> +typename QRBTree<T>::Node *QRBTree<T>::previous(Node *node) const +{ + if (node->left) + return back(node->left); + while (node->parent && node == node->parent->left) + node = node->parent; + return node->parent; +} + +template <class T> +int QRBTree<T>::blackDepth(Node *top) const +{ + if (!top) + return 0; + int leftDepth = blackDepth(top->left); + int rightDepth = blackDepth(top->right); + if (leftDepth != rightDepth) + return -1; + if (!top->red) + ++leftDepth; + return leftDepth; +} + +template <class T> +bool QRBTree<T>::checkRedBlackProperty(Node *top) const +{ + if (!top) + return true; + if (top->left && !checkRedBlackProperty(top->left)) + return false; + if (top->right && !checkRedBlackProperty(top->right)) + return false; + return !(top->red && ((top->left && top->left->red) || (top->right && top->right->red))); +} + +template <class T> +inline bool QRBTree<T>::validate() const +{ + return checkRedBlackProperty(root) && blackDepth(root) != -1; +} + +template <class T> +inline void QRBTree<T>::deleteNode(Node *&node) +{ + Q_ASSERT(node); + detach(node); + node->right = freeList; + freeList = node; + node = 0; +} + +template <class T> +inline typename QRBTree<T>::Node *QRBTree<T>::newNode() +{ + if (freeList) { + Node *node = freeList; + freeList = freeList->right; + node->parent = node->left = node->right = 0; + node->red = true; + return node; + } + return new Node; +} + +// Return 1 if 'left' comes after 'right', 0 if equal, and -1 otherwise. +// 'left' and 'right' cannot be null. +template <class T> +int QRBTree<T>::order(Node *left, Node *right) +{ + Q_ASSERT(left && right); + if (left == right) + return 0; + + QVector<Node *> leftAncestors; + QVector<Node *> rightAncestors; + while (left) { + leftAncestors.push_back(left); + left = left->parent; + } + while (right) { + rightAncestors.push_back(right); + right = right->parent; + } + Q_ASSERT(leftAncestors.back() == root && rightAncestors.back() == root); + + while (!leftAncestors.empty() && !rightAncestors.empty() && leftAncestors.back() == rightAncestors.back()) { + leftAncestors.pop_back(); + rightAncestors.pop_back(); + } + + if (!leftAncestors.empty()) + return (leftAncestors.back() == leftAncestors.back()->parent->left ? -1 : 1); + + if (!rightAncestors.empty()) + return (rightAncestors.back() == rightAncestors.back()->parent->right ? -1 : 1); + + // The code should never reach this point. + Q_ASSERT(!leftAncestors.empty() || !rightAncestors.empty()); + return 0; +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrgba64_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrgba64_p.h new file mode 100644 index 000000000..7776a5b08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qrgba64_p.h @@ -0,0 +1,305 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRGBA64_P_H +#define QRGBA64_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 <QtGui/private/qtguiglobal_p.h> +#include <QtGui/qrgba64.h> +#include <QtGui/private/qdrawhelper_p.h> +#include <private/qsimd_p.h> + +QT_BEGIN_NAMESPACE + +inline QRgba64 combineAlpha256(QRgba64 rgba64, uint alpha256) +{ + return QRgba64::fromRgba64(rgba64.red(), rgba64.green(), rgba64.blue(), (rgba64.alpha() * alpha256) >> 8); +} + +inline QRgba64 multiplyAlpha256(QRgba64 rgba64, uint alpha256) +{ + return QRgba64::fromRgba64((rgba64.red() * alpha256) >> 8, + (rgba64.green() * alpha256) >> 8, + (rgba64.blue() * alpha256) >> 8, + (rgba64.alpha() * alpha256) >> 8); +} + +inline QRgba64 multiplyAlpha65535(QRgba64 rgba64, uint alpha65535) +{ + return QRgba64::fromRgba64(qt_div_65535(rgba64.red() * alpha65535), + qt_div_65535(rgba64.green() * alpha65535), + qt_div_65535(rgba64.blue() * alpha65535), + qt_div_65535(rgba64.alpha() * alpha65535)); +} + +#ifdef __SSE2__ +Q_ALWAYS_INLINE __m128i multiplyAlpha65535(__m128i rgba64, __m128i va) +{ + __m128i vs = rgba64; + vs = _mm_unpacklo_epi16(_mm_mullo_epi16(vs, va), _mm_mulhi_epu16(vs, va)); + vs = _mm_add_epi32(vs, _mm_srli_epi32(vs, 16)); + vs = _mm_add_epi32(vs, _mm_set1_epi32(0x8000)); + vs = _mm_srai_epi32(vs, 16); + vs = _mm_packs_epi32(vs, _mm_setzero_si128()); + return vs; +} +Q_ALWAYS_INLINE __m128i multiplyAlpha65535(__m128i rgba64, uint alpha65535) +{ + const __m128i va = _mm_shufflelo_epi16(_mm_cvtsi32_si128(alpha65535), _MM_SHUFFLE(0, 0, 0, 0)); + return multiplyAlpha65535(rgba64, va); +} +#endif + +#if defined(__ARM_NEON__) +Q_ALWAYS_INLINE uint16x4_t multiplyAlpha65535(uint16x4_t rgba64, uint16x4_t alpha65535) +{ + uint32x4_t vs32 = vmull_u16(rgba64, alpha65535); // vs = vs * alpha + vs32 = vsraq_n_u32(vs32, vs32, 16); // vs = vs + (vs >> 16) + return vrshrn_n_u32(vs32, 16); // vs = (vs + 0x8000) >> 16 +} +Q_ALWAYS_INLINE uint16x4_t multiplyAlpha65535(uint16x4_t rgba64, uint alpha65535) +{ + uint32x4_t vs32 = vmull_n_u16(rgba64, alpha65535); // vs = vs * alpha + vs32 = vsraq_n_u32(vs32, vs32, 16); // vs = vs + (vs >> 16) + return vrshrn_n_u32(vs32, 16); // vs = (vs + 0x8000) >> 16 +} +#endif + +template<typename T> +inline T multiplyAlpha255(T rgba64, uint alpha255) +{ +#if defined(__SSE2__) || defined(__ARM_NEON__) + return multiplyAlpha65535(rgba64, alpha255 * 257); +#else + return QRgba64::fromRgba64(qt_div_255(rgba64.red() * alpha255), + qt_div_255(rgba64.green() * alpha255), + qt_div_255(rgba64.blue() * alpha255), + qt_div_255(rgba64.alpha() * alpha255)); +#endif +} + +inline QRgba64 interpolate256(QRgba64 x, uint alpha1, QRgba64 y, uint alpha2) +{ + return QRgba64::fromRgba64(multiplyAlpha256(x, alpha1) + multiplyAlpha256(y, alpha2)); +} + +inline QRgba64 interpolate255(QRgba64 x, uint alpha1, QRgba64 y, uint alpha2) +{ + return QRgba64::fromRgba64(multiplyAlpha255(x, alpha1) + multiplyAlpha255(y, alpha2)); +} + +#if defined __SSE2__ +Q_ALWAYS_INLINE __m128i interpolate255(__m128i x, uint alpha1, __m128i y, uint alpha2) +{ + return _mm_add_epi32(multiplyAlpha255(x, alpha1), multiplyAlpha255(y, alpha2)); +} +#endif + +#if defined __ARM_NEON__ +Q_ALWAYS_INLINE uint16x4_t interpolate255(uint16x4_t x, uint alpha1, uint16x4_t y, uint alpha2) +{ + return vadd_u16(multiplyAlpha255(x, alpha1), multiplyAlpha255(y, alpha2)); +} +#endif + +inline QRgba64 interpolate65535(QRgba64 x, uint alpha1, QRgba64 y, uint alpha2) +{ + return QRgba64::fromRgba64(multiplyAlpha65535(x, alpha1) + multiplyAlpha65535(y, alpha2)); +} + +#if defined __SSE2__ +Q_ALWAYS_INLINE __m128i interpolate65535(__m128i x, uint alpha1, __m128i y, uint alpha2) +{ + return _mm_add_epi32(multiplyAlpha65535(x, alpha1), multiplyAlpha65535(y, alpha2)); +} +// alpha2 below is const-ref because otherwise MSVC2013 complains that it can't 16-byte align the argument. +Q_ALWAYS_INLINE __m128i interpolate65535(__m128i x, __m128i alpha1, __m128i y, const __m128i &alpha2) +{ + return _mm_add_epi32(multiplyAlpha65535(x, alpha1), multiplyAlpha65535(y, alpha2)); +} +#endif + +#if defined __ARM_NEON__ +Q_ALWAYS_INLINE uint16x4_t interpolate65535(uint16x4_t x, uint alpha1, uint16x4_t y, uint alpha2) +{ + return vadd_u16(multiplyAlpha65535(x, alpha1), multiplyAlpha65535(y, alpha2)); +} +Q_ALWAYS_INLINE uint16x4_t interpolate65535(uint16x4_t x, uint16x4_t alpha1, uint16x4_t y, uint16x4_t alpha2) +{ + return vadd_u16(multiplyAlpha65535(x, alpha1), multiplyAlpha65535(y, alpha2)); +} +#endif + +inline QRgba64 addWithSaturation(QRgba64 a, QRgba64 b) +{ + return QRgba64::fromRgba64(qMin(a.red() + b.red(), 65535), + qMin(a.green() + b.green(), 65535), + qMin(a.blue() + b.blue(), 65535), + qMin(a.alpha() + b.alpha(), 65535)); +} + +#if defined __SSE2__ +Q_ALWAYS_INLINE uint toArgb32(__m128i v) +{ + v = _mm_unpacklo_epi16(v, _mm_setzero_si128()); + v = _mm_add_epi32(v, _mm_set1_epi32(128)); + v = _mm_sub_epi32(v, _mm_srli_epi32(v, 8)); + v = _mm_srli_epi32(v, 8); + v = _mm_packs_epi32(v, v); + v = _mm_packus_epi16(v, v); + return _mm_cvtsi128_si32(v); +} +#elif defined __ARM_NEON__ +Q_ALWAYS_INLINE uint toArgb32(uint16x4_t v) +{ + v = vsub_u16(v, vrshr_n_u16(v, 8)); + v = vrshr_n_u16(v, 8); + uint8x8_t v8 = vmovn_u16(vcombine_u16(v, v)); + return vget_lane_u32(vreinterpret_u32_u8(v8), 0); +} +#endif + +inline uint toArgb32(QRgba64 rgba64) +{ +#if defined __SSE2__ + __m128i v = _mm_loadl_epi64((const __m128i *)&rgba64); + v = _mm_shufflelo_epi16(v, _MM_SHUFFLE(3, 0, 1, 2)); + return toArgb32(v); +#elif defined __ARM_NEON__ + uint16x4_t v = vreinterpret_u16_u64(vld1_u64(reinterpret_cast<const uint64_t *>(&rgba64))); +#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN + const uint8x8_t shuffleMask = { 4, 5, 2, 3, 0, 1, 6, 7 }; + v = vreinterpret_u16_u8(vtbl1_u8(vreinterpret_u8_u16(v), shuffleMask)); +#else + v = vext_u16(v, v, 3); +#endif + return toArgb32(v); +#else + return rgba64.toArgb32(); +#endif +} + +inline uint toRgba8888(QRgba64 rgba64) +{ +#if defined __SSE2__ + __m128i v = _mm_loadl_epi64((const __m128i *)&rgba64); + return toArgb32(v); +#elif defined __ARM_NEON__ + uint16x4_t v = vreinterpret_u16_u64(vld1_u64(reinterpret_cast<const uint64_t *>(&rgba64))); + return toArgb32(v); +#else + return ARGB2RGBA(toArgb32(rgba64)); +#endif +} + +#if defined(__SSE2__) +Q_ALWAYS_INLINE __m128i addWithSaturation(__m128i a, __m128i b) +{ + return _mm_adds_epu16(a, b); +} +#endif + +#if defined(__ARM_NEON__) +Q_ALWAYS_INLINE uint16x4_t addWithSaturation(uint16x4_t a, uint16x4_t b) +{ + return vqmovn_u32(vaddl_u16(a, b)); +} +#endif + +inline QRgba64 rgbBlend(QRgba64 d, QRgba64 s, uint rgbAlpha) +{ + QRgba64 blend; +#if defined(__SSE2__) + __m128i vd = _mm_loadl_epi64((const __m128i *)&d); + __m128i vs = _mm_loadl_epi64((const __m128i *)&s); + __m128i va = _mm_cvtsi32_si128(rgbAlpha); + va = _mm_unpacklo_epi8(va, va); + va = _mm_shufflelo_epi16(va, _MM_SHUFFLE(3, 0, 1, 2)); + __m128i vb = _mm_xor_si128(_mm_set1_epi16(-1), va); + + vs = _mm_unpacklo_epi16(_mm_mullo_epi16(vs, va), _mm_mulhi_epu16(vs, va)); + vd = _mm_unpacklo_epi16(_mm_mullo_epi16(vd, vb), _mm_mulhi_epu16(vd, vb)); + vd = _mm_add_epi32(vd, vs); + vd = _mm_add_epi32(vd, _mm_srli_epi32(vd, 16)); + vd = _mm_add_epi32(vd, _mm_set1_epi32(0x8000)); + vd = _mm_srai_epi32(vd, 16); + vd = _mm_packs_epi32(vd, _mm_setzero_si128()); + + _mm_storel_epi64((__m128i *)&blend, vd); +#elif defined(__ARM_NEON__) + uint16x4_t vd = vreinterpret_u16_u64(vmov_n_u64(d)); + uint16x4_t vs = vreinterpret_u16_u64(vmov_n_u64(s)); + uint8x8_t va8 = vreinterpret_u8_u32(vmov_n_u32(ARGB2RGBA(rgbAlpha))); + uint16x4_t va = vreinterpret_u16_u8(vzip_u8(va8, va8).val[0]); + uint16x4_t vb = vdup_n_u16(0xffff); + vb = vsub_u16(vb, va); + + uint32x4_t vs32 = vmull_u16(vs, va); + uint32x4_t vd32 = vmull_u16(vd, vb); + vd32 = vaddq_u32(vd32, vs32); + vd32 = vsraq_n_u32(vd32, vd32, 16); + vd = vrshrn_n_u32(vd32, 16); + vst1_u64(reinterpret_cast<uint64_t *>(&blend), vreinterpret_u64_u16(vd)); +#else + const int mr = qRed(rgbAlpha); + const int mg = qGreen(rgbAlpha); + const int mb = qBlue(rgbAlpha); + blend.setRed (qt_div_255(s.red() * mr + d.red() * (255 - mr))); + blend.setGreen(qt_div_255(s.green() * mg + d.green() * (255 - mg))); + blend.setBlue (qt_div_255(s.blue() * mb + d.blue() * (255 - mb))); + blend.setAlpha(s.alpha()); +#endif + return blend; +} + + +QT_END_NAMESPACE + +#endif // QRGBA64_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qscreen_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qscreen_p.h new file mode 100644 index 000000000..f31658355 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qscreen_p.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCREEN_P_H +#define QSCREEN_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 <QtGui/private/qtguiglobal_p.h> +#include <QtGui/qscreen.h> +#include <qpa/qplatformscreen.h> +#include "qhighdpiscaling_p.h" + +#include <QtCore/private/qobject_p.h> + +QT_BEGIN_NAMESPACE + +class QScreenPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QScreen) +public: + QScreenPrivate() + : platformScreen(0) + , orientationUpdateMask(0) + { + } + + void setPlatformScreen(QPlatformScreen *screen); + void updateHighDpi() + { + geometry = platformScreen->deviceIndependentGeometry(); + availableGeometry = QHighDpi::fromNative(platformScreen->availableGeometry(), QHighDpiScaling::factor(platformScreen), geometry.topLeft()); + } + + void updatePrimaryOrientation(); + + QPlatformScreen *platformScreen; + + Qt::ScreenOrientations orientationUpdateMask; + Qt::ScreenOrientation orientation; + Qt::ScreenOrientation filteredOrientation; + Qt::ScreenOrientation primaryOrientation; + QRect geometry; + QRect availableGeometry; + QDpi logicalDpi; + qreal refreshRate; +}; + +QT_END_NAMESPACE + +#endif // QSCREEN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qsessionmanager_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qsessionmanager_p.h new file mode 100644 index 000000000..954443430 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qsessionmanager_p.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Samuel Gaist <samuel.gaist@edeltech.ch> +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSESSIONMANAGER_P_H +#define QSESSIONMANAGER_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 <QtGui/private/qtguiglobal_p.h> +#include <private/qobject_p.h> +#include <QtCore/qstring.h> +#include <QtCore/qstringlist.h> + +#ifndef QT_NO_SESSIONMANAGER + +QT_BEGIN_NAMESPACE + +class QPlatformSessionManager; + +class QSessionManagerPrivate : public QObjectPrivate +{ +public: + QSessionManagerPrivate(const QString &id, + const QString &key); + + virtual ~QSessionManagerPrivate(); + + QPlatformSessionManager *platformSessionManager; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SESSIONMANAGER + +#endif // QSESSIONMANAGER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qshapedpixmapdndwindow_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qshapedpixmapdndwindow_p.h new file mode 100644 index 000000000..2c25ca7c7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qshapedpixmapdndwindow_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSHAPEDPIXMAPDNDWINDOW_H +#define QSHAPEDPIXMAPDNDWINDOW_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 <QtGui/private/qtguiglobal_p.h> +#include <QtGui/QRasterWindow> +#include <QtGui/QPixmap> + +QT_BEGIN_NAMESPACE + +class QShapedPixmapWindow : public QRasterWindow +{ + Q_OBJECT +public: + explicit QShapedPixmapWindow(QScreen *screen = 0); + ~QShapedPixmapWindow(); + + void setUseCompositing(bool on) { m_useCompositing = on; } + void setPixmap(const QPixmap &pixmap); + void setHotspot(const QPoint &hotspot); + + void updateGeometry(const QPoint &pos); + +protected: + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + +private: + QPixmap m_pixmap; + QPoint m_hotSpot; + bool m_useCompositing; +}; + +QT_END_NAMESPACE + +#endif // QSHAPEDPIXMAPDNDWINDOW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qshortcutmap_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qshortcutmap_p.h new file mode 100644 index 000000000..8fc68229f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qshortcutmap_p.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSHORTCUTMAP_P_H +#define QSHORTCUTMAP_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 <QtGui/private/qtguiglobal_p.h> +#include "QtGui/qkeysequence.h" +#include "QtCore/qvector.h" +#include "QtCore/qscopedpointer.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SHORTCUT + +// To enable dump output uncomment below +//#define Dump_QShortcutMap + +class QKeyEvent; +struct QShortcutEntry; +class QShortcutMapPrivate; +class QObject; + +class Q_GUI_EXPORT QShortcutMap +{ + Q_DECLARE_PRIVATE(QShortcutMap) +public: + QShortcutMap(); + ~QShortcutMap(); + + typedef bool (*ContextMatcher)(QObject *object, Qt::ShortcutContext context); + + int addShortcut(QObject *owner, const QKeySequence &key, Qt::ShortcutContext context, ContextMatcher matcher); + int removeShortcut(int id, QObject *owner, const QKeySequence &key = QKeySequence()); + int setShortcutEnabled(bool enable, int id, QObject *owner, const QKeySequence &key = QKeySequence()); + int setShortcutAutoRepeat(bool on, int id, QObject *owner, const QKeySequence &key = QKeySequence()); + + QKeySequence::SequenceMatch state(); + + bool tryShortcut(QKeyEvent *e); + bool hasShortcutForKeySequence(const QKeySequence &seq) const; + +#ifdef Dump_QShortcutMap + void dumpMap() const; +#endif + +private: + void resetState(); + QKeySequence::SequenceMatch nextState(QKeyEvent *e); + void dispatchEvent(QKeyEvent *e); + + QKeySequence::SequenceMatch find(QKeyEvent *e, int ignoredModifiers = 0); + QKeySequence::SequenceMatch matches(const QKeySequence &seq1, const QKeySequence &seq2) const; + QVector<const QShortcutEntry *> matches() const; + void createNewSequences(QKeyEvent *e, QVector<QKeySequence> &ksl, int ignoredModifiers); + void clearSequence(QVector<QKeySequence> &ksl); + int translateModifiers(Qt::KeyboardModifiers modifiers); + + QScopedPointer<QShortcutMapPrivate> d_ptr; +}; + +#endif // QT_NO_SHORTCUT + +QT_END_NAMESPACE + +#endif // QSHORTCUTMAP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qsimpledrag_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qsimpledrag_p.h new file mode 100644 index 000000000..0b8a0bc70 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qsimpledrag_p.h @@ -0,0 +1,144 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIMPLEDRAG_P_H +#define QSIMPLEDRAG_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 <QtGui/private/qtguiglobal_p.h> +#include <qpa/qplatformdrag.h> + +#include <QtCore/QObject> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_DRAGANDDROP + +class QMouseEvent; +class QWindow; +class QEventLoop; +class QDropData; +class QShapedPixmapWindow; +class QScreen; + +class Q_GUI_EXPORT QBasicDrag : public QPlatformDrag, public QObject +{ +public: + virtual ~QBasicDrag(); + + virtual Qt::DropAction drag(QDrag *drag) Q_DECL_OVERRIDE; + void cancelDrag() Q_DECL_OVERRIDE; + + virtual bool eventFilter(QObject *o, QEvent *e) Q_DECL_OVERRIDE; + +protected: + QBasicDrag(); + + virtual void startDrag(); + virtual void cancel(); + virtual void move(const QPoint &globalPos) = 0; + virtual void drop(const QPoint &globalPos) = 0; + virtual void endDrag(); + + + void moveShapedPixmapWindow(const QPoint &deviceIndependentPosition); + QShapedPixmapWindow *shapedPixmapWindow() const { return m_drag_icon_window; } + void recreateShapedPixmapWindow(QScreen *screen, const QPoint &pos); + void updateCursor(Qt::DropAction action); + + bool canDrop() const { return m_can_drop; } + void setCanDrop(bool c) { m_can_drop = c; } + + bool useCompositing() const { return m_useCompositing; } + void setUseCompositing(bool on) { m_useCompositing = on; } + + void setScreen(QScreen *screen) { m_screen = screen; } + + Qt::DropAction executedDropAction() const { return m_executed_drop_action; } + void setExecutedDropAction(Qt::DropAction da) { m_executed_drop_action = da; } + + QDrag *drag() const { return m_drag; } + +private: + void enableEventFilter(); + void disableEventFilter(); + void restoreCursor(); + void exitDndEventLoop(); + + bool m_restoreCursor; + QEventLoop *m_eventLoop; + Qt::DropAction m_executed_drop_action; + bool m_can_drop; + QDrag *m_drag; + QShapedPixmapWindow *m_drag_icon_window; + bool m_useCompositing; + QScreen *m_screen; +}; + +class Q_GUI_EXPORT QSimpleDrag : public QBasicDrag +{ +public: + QSimpleDrag(); + virtual QMimeData *platformDropData() Q_DECL_OVERRIDE; + +protected: + virtual void startDrag() Q_DECL_OVERRIDE; + virtual void cancel() Q_DECL_OVERRIDE; + virtual void move(const QPoint &globalPos) Q_DECL_OVERRIDE; + virtual void drop(const QPoint &globalPos) Q_DECL_OVERRIDE; + +private: + QWindow *m_current_window; +}; + +#endif // QT_NO_DRAGANDDROP + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qstandarditemmodel_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qstandarditemmodel_p.h new file mode 100644 index 000000000..516cce861 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qstandarditemmodel_p.h @@ -0,0 +1,218 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTANDARDITEMMODEL_P_H +#define QSTANDARDITEMMODEL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtGui/private/qtguiglobal_p.h> +#include "private/qabstractitemmodel_p.h" + +#ifndef QT_NO_STANDARDITEMMODEL + +#include <QtCore/qlist.h> +#include <QtCore/qpair.h> +#include <QtCore/qstack.h> +#include <QtCore/qvariant.h> +#include <QtCore/qvector.h> + +QT_BEGIN_NAMESPACE + +class QStandardItemData +{ +public: + inline QStandardItemData() : role(-1) {} + inline QStandardItemData(int r, const QVariant &v) : role(r), value(v) {} + int role; + QVariant value; + inline bool operator==(const QStandardItemData &other) const { return role == other.role && value == other.value; } +}; +Q_DECLARE_TYPEINFO(QStandardItemData, Q_MOVABLE_TYPE); + +#ifndef QT_NO_DATASTREAM + +inline QDataStream &operator>>(QDataStream &in, QStandardItemData &data) +{ + in >> data.role; + in >> data.value; + return in; +} + +inline QDataStream &operator<<(QDataStream &out, const QStandardItemData &data) +{ + out << data.role; + out << data.value; + return out; +} + +#endif // QT_NO_DATASTREAM + +class QStandardItemPrivate +{ + Q_DECLARE_PUBLIC(QStandardItem) +public: + inline QStandardItemPrivate() + : model(0), + parent(0), + rows(0), + columns(0), + q_ptr(0), + lastIndexOf(2) + { } + + inline int childIndex(int row, int column) const { + if ((row < 0) || (column < 0) + || (row >= rowCount()) || (column >= columnCount())) { + return -1; + } + return (row * columnCount()) + column; + } + inline int childIndex(const QStandardItem *child) { + int start = qMax(0, lastIndexOf -2); + lastIndexOf = children.indexOf(const_cast<QStandardItem*>(child), start); + if (lastIndexOf == -1 && start != 0) + lastIndexOf = children.lastIndexOf(const_cast<QStandardItem*>(child), start); + return lastIndexOf; + } + QPair<int, int> position() const; + void setChild(int row, int column, QStandardItem *item, + bool emitChanged = false); + inline int rowCount() const { + return rows; + } + inline int columnCount() const { + return columns; + } + void childDeleted(QStandardItem *child); + + void setModel(QStandardItemModel *mod); + + inline void setParentAndModel( + QStandardItem *par, + QStandardItemModel *mod) { + setModel(mod); + parent = par; + } + + void changeFlags(bool enable, Qt::ItemFlags f); + void setItemData(const QMap<int, QVariant> &roles); + const QMap<int, QVariant> itemData() const; + + bool insertRows(int row, int count, const QList<QStandardItem*> &items); + bool insertRows(int row, const QList<QStandardItem*> &items); + bool insertColumns(int column, int count, const QList<QStandardItem*> &items); + + void sortChildren(int column, Qt::SortOrder order); + + QStandardItemModel *model; + QStandardItem *parent; + QVector<QStandardItemData> values; + QVector<QStandardItem*> children; + int rows; + int columns; + + QStandardItem *q_ptr; + + int lastIndexOf; +}; + +class QStandardItemModelPrivate : public QAbstractItemModelPrivate +{ + Q_DECLARE_PUBLIC(QStandardItemModel) + +public: + QStandardItemModelPrivate(); + virtual ~QStandardItemModelPrivate(); + + void init(); + + inline QStandardItem *createItem() const { + return itemPrototype ? itemPrototype->clone() : new QStandardItem; + } + + inline QStandardItem *itemFromIndex(const QModelIndex &index) const { + Q_Q(const QStandardItemModel); + if (!index.isValid()) + return root.data(); + if (index.model() != q) + return 0; + QStandardItem *parent = static_cast<QStandardItem*>(index.internalPointer()); + if (parent == 0) + return 0; + return parent->child(index.row(), index.column()); + } + + void sort(QStandardItem *parent, int column, Qt::SortOrder order); + void itemChanged(QStandardItem *item); + void rowsAboutToBeInserted(QStandardItem *parent, int start, int end); + void columnsAboutToBeInserted(QStandardItem *parent, int start, int end); + void rowsAboutToBeRemoved(QStandardItem *parent, int start, int end); + void columnsAboutToBeRemoved(QStandardItem *parent, int start, int end); + void rowsInserted(QStandardItem *parent, int row, int count); + void columnsInserted(QStandardItem *parent, int column, int count); + void rowsRemoved(QStandardItem *parent, int row, int count); + void columnsRemoved(QStandardItem *parent, int column, int count); + + void _q_emitItemChanged(const QModelIndex &topLeft, + const QModelIndex &bottomRight); + + void decodeDataRecursive(QDataStream &stream, QStandardItem *item); + + QVector<QStandardItem*> columnHeaderItems; + QVector<QStandardItem*> rowHeaderItems; + QScopedPointer<QStandardItem> root; + const QStandardItem *itemPrototype; + int sortRole; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_STANDARDITEMMODEL + +#endif // QSTANDARDITEMMODEL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qstatictext_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qstatictext_p.h new file mode 100644 index 000000000..dda566a22 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qstatictext_p.h @@ -0,0 +1,170 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTATICTEXT_P_H +#define QSTATICTEXT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include <QtGui/private/qtguiglobal_p.h> +#include "qstatictext.h" + +#include <private/qtextureglyphcache_p.h> +#include <QtGui/qcolor.h> + +QT_BEGIN_NAMESPACE + +// ### Qt 6: Unexport again, if QOpenGLStaticTextUserData (the one from QtOpenGL) is gone by then +class Q_GUI_EXPORT QStaticTextUserData +{ +public: + enum Type { + NoUserData, + OpenGLUserData + }; + + QStaticTextUserData(Type t) : ref(0), type(t) {} + virtual ~QStaticTextUserData(); + + QAtomicInt ref; + Type type; +}; + +class Q_GUI_EXPORT QStaticTextItem +{ +public: + QStaticTextItem() : useBackendOptimizations(false), + userDataNeedsUpdate(0), usesRawFont(0), + m_fontEngine(0), m_userData(0) {} + + void setUserData(QStaticTextUserData *newUserData) + { + m_userData = newUserData; + } + QStaticTextUserData *userData() const { return m_userData.data(); } + + void setFontEngine(QFontEngine *fe) + { + m_fontEngine = fe; + } + + QFontEngine *fontEngine() const { return m_fontEngine.data(); } + + union { + QFixedPoint *glyphPositions; // 8 bytes per glyph + int positionOffset; + }; + union { + glyph_t *glyphs; // 4 bytes per glyph + int glyphOffset; + }; + // ================= + // 12 bytes per glyph + + // 8 bytes for pointers + int numGlyphs; // 4 bytes per item + QFont font; // 8 bytes per item + QColor color; // 10 bytes per item + char useBackendOptimizations : 1; // 1 byte per item + char userDataNeedsUpdate : 1; // + char usesRawFont : 1; // + +private: // private to avoid abuse + QExplicitlySharedDataPointer<QFontEngine> m_fontEngine; // 4 bytes per item + QExplicitlySharedDataPointer<QStaticTextUserData> m_userData; // 8 bytes per item + // ================ + // 43 bytes per item +}; +Q_DECLARE_TYPEINFO(QStaticTextItem, Q_MOVABLE_TYPE); + +class QStaticText; +class Q_AUTOTEST_EXPORT QStaticTextPrivate +{ +public: + QStaticTextPrivate(); + QStaticTextPrivate(const QStaticTextPrivate &other); + ~QStaticTextPrivate(); + + void init(); + void paintText(const QPointF &pos, QPainter *p); + + void invalidate() + { + needsRelayout = true; + } + + QAtomicInt ref; // 4 bytes per text + + QString text; // 4 bytes per text + QFont font; // 8 bytes per text + qreal textWidth; // 8 bytes per text + QSizeF actualSize; // 16 bytes per text + QPointF position; // 16 bytes per text + + QTransform matrix; // 80 bytes per text + QStaticTextItem *items; // 4 bytes per text + int itemCount; // 4 bytes per text + + glyph_t *glyphPool; // 4 bytes per text + QFixedPoint *positionPool; // 4 bytes per text + + QTextOption textOption; // 28 bytes per text + + unsigned char needsRelayout : 1; // 1 byte per text + unsigned char useBackendOptimizations : 1; + unsigned char textFormat : 2; + unsigned char untransformedCoordinates : 1; + // ================ + // 191 bytes per text + + static QStaticTextPrivate *get(const QStaticText *q); +}; + +QT_END_NAMESPACE + +#endif // QSTATICTEXT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qstroker_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qstroker_p.h new file mode 100644 index 000000000..1a7c184e1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qstroker_p.h @@ -0,0 +1,394 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTROKER_P_H +#define QSTROKER_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 <QtGui/private/qtguiglobal_p.h> +#include "QtGui/qpainterpath.h" +#include "private/qdatabuffer_p.h" +#include "private/qnumeric_p.h" + +QT_BEGIN_NAMESPACE + +// #define QFIXED_IS_26_6 + +#if defined QFIXED_IS_26_6 +typedef int qfixed; +#define qt_real_to_fixed(real) qfixed(real * 64) +#define qt_int_to_fixed(real) qfixed(int(real) << 6) +#define qt_fixed_to_real(fixed) qreal(fixed / qreal(64)) +#define qt_fixed_to_int(fixed) int(fixed >> 6) +struct qfixed2d +{ + qfixed x; + qfixed y; + + bool operator==(const qfixed2d &other) const { return x == other.x && y == other.y; } +}; +#elif defined QFIXED_IS_32_32 +typedef qint64 qfixed; +#define qt_real_to_fixed(real) qfixed(real * double(qint64(1) << 32)) +#define qt_fixed_to_real(fixed) qreal(fixed / double(qint64(1) << 32)) +struct qfixed2d +{ + qfixed x; + qfixed y; + + bool operator==(const qfixed2d &other) const { return x == other.x && y == other.y; } +}; +#elif defined QFIXED_IS_16_16 +typedef int qfixed; +#define qt_real_to_fixed(real) qfixed(real * qreal(1 << 16)) +#define qt_fixed_to_real(fixed) qreal(fixed / qreal(1 << 16)) +struct qfixed2d +{ + qfixed x; + qfixed y; + + bool operator==(const qfixed2d &other) const { return x == other.x && y == other.y; } +}; +#else +typedef qreal qfixed; +#define qt_real_to_fixed(real) qfixed(real) +#define qt_fixed_to_real(fixed) fixed +struct qfixed2d +{ + qfixed x; + qfixed y; + + bool operator==(const qfixed2d &other) const { return qFuzzyCompare(x, other.x) + && qFuzzyCompare(y, other.y); } +}; +#endif + +#define QT_PATH_KAPPA 0.5522847498 + +QPointF qt_curves_for_arc(const QRectF &rect, qreal startAngle, qreal sweepLength, + QPointF *controlPoints, int *point_count); + +qreal qt_t_for_arc_angle(qreal angle); + +typedef void (*qStrokerMoveToHook)(qfixed x, qfixed y, void *data); +typedef void (*qStrokerLineToHook)(qfixed x, qfixed y, void *data); +typedef void (*qStrokerCubicToHook)(qfixed c1x, qfixed c1y, + qfixed c2x, qfixed c2y, + qfixed ex, qfixed ey, + void *data); + +// qtransform.cpp +Q_GUI_EXPORT bool qt_scaleForTransform(const QTransform &transform, qreal *scale); + +class Q_GUI_EXPORT QStrokerOps +{ +public: + struct Element { + QPainterPath::ElementType type; + qfixed x; + qfixed y; + + inline bool isMoveTo() const { return type == QPainterPath::MoveToElement; } + inline bool isLineTo() const { return type == QPainterPath::LineToElement; } + inline bool isCurveTo() const { return type == QPainterPath::CurveToElement; } + + operator qfixed2d () { qfixed2d pt = { x, y }; return pt; } + }; + + QStrokerOps(); + virtual ~QStrokerOps(); + + void setMoveToHook(qStrokerMoveToHook moveToHook) { m_moveTo = moveToHook; } + void setLineToHook(qStrokerLineToHook lineToHook) { m_lineTo = lineToHook; } + void setCubicToHook(qStrokerCubicToHook cubicToHook) { m_cubicTo = cubicToHook; } + + virtual void begin(void *customData); + virtual void end(); + + inline void moveTo(qfixed x, qfixed y); + inline void lineTo(qfixed x, qfixed y); + inline void cubicTo(qfixed x1, qfixed y1, qfixed x2, qfixed y2, qfixed ex, qfixed ey); + + void strokePath(const QPainterPath &path, void *data, const QTransform &matrix); + void strokePolygon(const QPointF *points, int pointCount, bool implicit_close, + void *data, const QTransform &matrix); + void strokeEllipse(const QRectF &ellipse, void *data, const QTransform &matrix); + + QRectF clipRect() const { return m_clip_rect; } + void setClipRect(const QRectF &clip) { m_clip_rect = clip; } + + void setCurveThresholdFromTransform(const QTransform &transform) + { + qreal scale; + qt_scaleForTransform(transform, &scale); + m_dashThreshold = scale == 0 ? qreal(0.5) : (qreal(0.5) / scale); + } + + void setCurveThreshold(qfixed threshold) { m_curveThreshold = threshold; } + qfixed curveThreshold() const { return m_curveThreshold; } + +protected: + inline void emitMoveTo(qfixed x, qfixed y); + inline void emitLineTo(qfixed x, qfixed y); + inline void emitCubicTo(qfixed c1x, qfixed c1y, qfixed c2x, qfixed c2y, qfixed ex, qfixed ey); + + virtual void processCurrentSubpath() = 0; + QDataBuffer<Element> m_elements; + + QRectF m_clip_rect; + qfixed m_curveThreshold; + qfixed m_dashThreshold; + + void *m_customData; + qStrokerMoveToHook m_moveTo; + qStrokerLineToHook m_lineTo; + qStrokerCubicToHook m_cubicTo; + +}; + +class Q_GUI_EXPORT QStroker : public QStrokerOps +{ +public: + + enum LineJoinMode { + FlatJoin, + SquareJoin, + MiterJoin, + RoundJoin, + RoundCap, + SvgMiterJoin + }; + + QStroker(); + ~QStroker(); + + void setStrokeWidth(qfixed width) { m_strokeWidth = width; m_curveThreshold = qt_real_to_fixed(width > 4 ? 1.0/width : 0.25); } + qfixed strokeWidth() const { return m_strokeWidth; } + + void setCapStyle(Qt::PenCapStyle capStyle) { m_capStyle = joinModeForCap(capStyle); } + Qt::PenCapStyle capStyle() const { return capForJoinMode(m_capStyle); } + LineJoinMode capStyleMode() const { return m_capStyle; } + + void setJoinStyle(Qt::PenJoinStyle style) { m_joinStyle = joinModeForJoin(style); } + Qt::PenJoinStyle joinStyle() const { return joinForJoinMode(m_joinStyle); } + LineJoinMode joinStyleMode() const { return m_joinStyle; } + + void setMiterLimit(qfixed length) { m_miterLimit = length; } + qfixed miterLimit() const { return m_miterLimit; } + + void joinPoints(qfixed x, qfixed y, const QLineF &nextLine, LineJoinMode join); + inline void emitMoveTo(qfixed x, qfixed y); + inline void emitLineTo(qfixed x, qfixed y); + inline void emitCubicTo(qfixed c1x, qfixed c1y, qfixed c2x, qfixed c2y, qfixed ex, qfixed ey); + +protected: + static Qt::PenCapStyle capForJoinMode(LineJoinMode mode); + static LineJoinMode joinModeForCap(Qt::PenCapStyle); + + static Qt::PenJoinStyle joinForJoinMode(LineJoinMode mode); + static LineJoinMode joinModeForJoin(Qt::PenJoinStyle joinStyle); + + void processCurrentSubpath() override; + + qfixed m_strokeWidth; + qfixed m_miterLimit; + + LineJoinMode m_capStyle; + LineJoinMode m_joinStyle; + + qfixed m_back1X; + qfixed m_back1Y; + + qfixed m_back2X; + qfixed m_back2Y; +}; + +class Q_GUI_EXPORT QDashStroker : public QStrokerOps +{ +public: + QDashStroker(QStroker *stroker); + ~QDashStroker(); + + QStroker *stroker() const { return m_stroker; } + + static QVector<qfixed> patternForStyle(Qt::PenStyle style); + + void setDashPattern(const QVector<qfixed> &dashPattern) { m_dashPattern = dashPattern; } + QVector<qfixed> dashPattern() const { return m_dashPattern; } + + void setDashOffset(qreal offset) { m_dashOffset = offset; } + qreal dashOffset() const { return m_dashOffset; } + + void begin(void *data) override; + void end() override; + + inline void setStrokeWidth(qreal width) { m_stroke_width = width; } + inline void setMiterLimit(qreal limit) { m_miter_limit = limit; } + +protected: + void processCurrentSubpath() override; + + QStroker *m_stroker; + QVector<qfixed> m_dashPattern; + qreal m_dashOffset; + + qreal m_stroke_width; + qreal m_miter_limit; +}; + + +/******************************************************************************* + * QStrokerOps inline membmers + */ + +inline void QStrokerOps::emitMoveTo(qfixed x, qfixed y) +{ + Q_ASSERT(m_moveTo); + m_moveTo(x, y, m_customData); +} + +inline void QStrokerOps::emitLineTo(qfixed x, qfixed y) +{ + Q_ASSERT(m_lineTo); + m_lineTo(x, y, m_customData); +} + +inline void QStrokerOps::emitCubicTo(qfixed c1x, qfixed c1y, qfixed c2x, qfixed c2y, qfixed ex, qfixed ey) +{ + Q_ASSERT(m_cubicTo); + m_cubicTo(c1x, c1y, c2x, c2y, ex, ey, m_customData); +} + +inline void QStrokerOps::moveTo(qfixed x, qfixed y) +{ + if (m_elements.size()>1) + processCurrentSubpath(); + m_elements.reset(); + Element e = { QPainterPath::MoveToElement, x, y }; + m_elements.add(e); +} + +inline void QStrokerOps::lineTo(qfixed x, qfixed y) +{ + Element e = { QPainterPath::LineToElement, x, y }; + m_elements.add(e); +} + +inline void QStrokerOps::cubicTo(qfixed x1, qfixed y1, qfixed x2, qfixed y2, qfixed ex, qfixed ey) +{ + Element c1 = { QPainterPath::CurveToElement, x1, y1 }; + Element c2 = { QPainterPath::CurveToDataElement, x2, y2 }; + Element e = { QPainterPath::CurveToDataElement, ex, ey }; + m_elements.add(c1); + m_elements.add(c2); + m_elements.add(e); +} + +/******************************************************************************* + * QStroker inline members + */ +inline void QStroker::emitMoveTo(qfixed x, qfixed y) +{ + m_back2X = m_back1X; + m_back2Y = m_back1Y; + m_back1X = x; + m_back1Y = y; + QStrokerOps::emitMoveTo(x, y); +} + +inline void QStroker::emitLineTo(qfixed x, qfixed y) +{ + m_back2X = m_back1X; + m_back2Y = m_back1Y; + m_back1X = x; + m_back1Y = y; + QStrokerOps::emitLineTo(x, y); +} + +inline void QStroker::emitCubicTo(qfixed c1x, qfixed c1y, + qfixed c2x, qfixed c2y, + qfixed ex, qfixed ey) +{ + if (c2x == ex && c2y == ey) { + if (c1x == ex && c1y == ey) { + m_back2X = m_back1X; + m_back2Y = m_back1Y; + } else { + m_back2X = c1x; + m_back2Y = c1y; + } + } else { + m_back2X = c2x; + m_back2Y = c2y; + } + m_back1X = ex; + m_back1Y = ey; + QStrokerOps::emitCubicTo(c1x, c1y, c2x, c2y, ex, ey); +} + +/******************************************************************************* + * QDashStroker inline members + */ +inline void QDashStroker::begin(void *data) +{ + if (m_stroker) + m_stroker->begin(data); + QStrokerOps::begin(data); +} + +inline void QDashStroker::end() +{ + QStrokerOps::end(); + if (m_stroker) + m_stroker->end(); +} + +QT_END_NAMESPACE + +#endif // QSTROKER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qt_gui_pch.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qt_gui_pch.h new file mode 100644 index 000000000..db12ba107 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qt_gui_pch.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* + * This is a precompiled header file for use in Xcode / Mac GCC / + * GCC >= 3.4 / VC to greatly speed the building of Qt. It may also be + * of use to people developing their own project, but it is probably + * better to define your own header. Use of this header is currently + * UNSUPPORTED. + */ + +// from corelib/global/qt_pch.h +#if defined __cplusplus +#include <qtguiglobal.h> + + +#ifdef Q_OS_WIN +# define _POSIX_ +# include <limits.h> +# undef _POSIX_ +#endif + +#include <qcoreapplication.h> +#include <qlist.h> +#include <qvariant.h> // All moc genereated code has this include +#include <qobject.h> +#include <qregexp.h> +#include <qstring.h> +#include <qstringlist.h> +#include <qtextcodec.h> + +#include <qguiapplication.h> +#include <qbitmap.h> +#include <qcursor.h> +#include <qevent.h> +#include <qimage.h> +#include <qpainter.h> +#include <qpixmap.h> +#include <qtimer.h> + +#include <stdlib.h> + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qt_mips_asm_dsp_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qt_mips_asm_dsp_p.h new file mode 100644 index 000000000..1393a3566 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qt_mips_asm_dsp_p.h @@ -0,0 +1,426 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Imagination Technologies Limited, www.imgtec.com +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QT_MIPS_ASM_DSP_H +#define QT_MIPS_ASM_DSP_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. +// + +#if 0 +#pragma qt_sync_stop_processing +#endif + +#define zero $0 +#define AT $1 +#define v0 $2 +#define v1 $3 +#define a0 $4 +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define t0 $8 +#define t1 $9 +#define t2 $10 +#define t3 $11 +#define t4 $12 +#define t5 $13 +#define t6 $14 +#define t7 $15 +#define s0 $16 +#define s1 $17 +#define s2 $18 +#define s3 $19 +#define s4 $20 +#define s5 $21 +#define s6 $22 +#define s7 $23 +#define t8 $24 +#define t9 $25 +#define k0 $26 +#define k1 $27 +#define gp $28 +#define sp $29 +#define fp $30 +#define s8 $30 +#define ra $31 + +/* + * LEAF_MIPS32R2 - declare leaf_mips32r2 routine + */ +#define LEAF_MIPS32R2(symbol) \ + .globl symbol; \ + .align 2; \ + .type symbol,@function; \ + .ent symbol,0; \ +symbol: .frame sp, 0, ra; \ + .set arch=mips32r2; \ + .set noreorder; + +/* + * LEAF_MIPS_DSP - declare leaf_mips_dsp routine + */ +#define LEAF_MIPS_DSP(symbol) \ +LEAF_MIPS32R2(symbol) \ + .set dsp; + +/* + * LEAF_MIPS_DSPR2 - declare leaf_mips_dspr2 routine + */ +#define LEAF_MIPS_DSPR2(symbol) \ +LEAF_MIPS32R2(symbol) \ + .set dspr2; + +/* + * END - mark end of function + */ +#define END(function) \ + .set reorder; \ + .end function; \ + .size function,.-function + +/* + * BYTE_MUL operation on two pixels (in_1 and in_2) with two + * multiplicator bytes, repl_a1 and repl_a2, which should be + * prepered with: + * replv.ph repl_a1, a1 + * replv.ph repl_a2, a2 + * to became such as: + * repl_a1 = | 00 | a1 | 00 | a1 | + * repl_a2 = | 00 | a2 | 00 | a2 | + * + * rounding_factor must have following value: + * li rounding_factor, 0x00800080 + * + * scratch(n) - temporary registers + * + * in_const: 1 -> (default) causes that in_1, in_2 + * registers will remain unchanged after usage + * 0 -> (or anything different then 1) causes + * that registers repl_a1, repl_a2 remain + * unchanged after usage + */ +.macro BYTE_MUL_x2 in_1, in_2, out_1, out_2 \ + repl_a1, repl_a2, rounding_factor, \ + scratch1, scratch2, scratch3, scratch4, \ + in_const = 1 + muleu_s.ph.qbl \scratch1, \in_1, \repl_a1 + muleu_s.ph.qbr \scratch2, \in_1, \repl_a1 + muleu_s.ph.qbl \scratch3, \in_2, \repl_a2 + muleu_s.ph.qbr \scratch4, \in_2, \repl_a2 + +.if \in_const == 1 + preceu.ph.qbla \repl_a1, \scratch1 + preceu.ph.qbla \repl_a2, \scratch2 + preceu.ph.qbla \out_1, \scratch3 + preceu.ph.qbla \out_2, \scratch4 + + addu \scratch1, \repl_a1, \scratch1 + addu \scratch2, \repl_a2, \scratch2 +.else + preceu.ph.qbla \in_1, \scratch1 + preceu.ph.qbla \in_2, \scratch2 + preceu.ph.qbla \out_1, \scratch3 + preceu.ph.qbla \out_2, \scratch4 + + addu \scratch1, \in_1, \scratch1 + addu \scratch2, \in_2, \scratch2 +.endif + + addu \out_1, \out_1, \scratch3 + addu \out_2, \out_2, \scratch4 + + addu \scratch1, \scratch1, \rounding_factor + addu \scratch2, \scratch2, \rounding_factor + addu \scratch3, \out_1, \rounding_factor + addu \scratch4, \out_2, \rounding_factor + + precrq.qb.ph \out_1, \scratch1, \scratch2 + precrq.qb.ph \out_2, \scratch3, \scratch4 + +.endm + +/* + * BYTE_MUL operation on one pixel (in_1) with + * multiplicator byte, repl_a1, which should be + * prepered with: + * replv.ph repl_a1, a1 + * to became such as: + * repl_a1 = | 00 | a1 | 00 | a1 | + * + * rounding_factor must have following value: + * li rounding_factor, 0x00800080 + * + * scratch(n) - temporary registers + */ +.macro BYTE_MUL in_1, out_1, \ + repl_a1, rounding_factor, \ + scratch1, scratch2, scratch3, scratch4 + muleu_s.ph.qbl \scratch1, \in_1, \repl_a1 + muleu_s.ph.qbr \scratch2, \in_1, \repl_a1 + + preceu.ph.qbla \scratch3, \scratch1 + preceu.ph.qbla \scratch4, \scratch2 + + addu \scratch1, \scratch1, \scratch3 + addu \scratch1, \scratch1, \rounding_factor + + addu \scratch2, \scratch2, \scratch4 + addu \scratch2, \scratch2, \rounding_factor + + precrq.qb.ph \out_1, \scratch1, \scratch2 + +.endm + +/* + * macro for INTERPOLATE_PIXEL_255 operation + * in_1 - First value to multiply + * mul_1 - Multiplicator byte for first value + * in_2 - Second value to multiply + * mul_2 - Multiplicator byte for second value + * rounding_factor and andi_factor should be prepared + * as: + * li rounding_factor, 0x00800080 + * li andi_factor, 0xff00ff00 + * scratch(n) - temporary registers + */ +.macro INTERPOLATE_PIXEL_255 in_1, mul_1, \ + in_2, mul_2, \ + out_1, \ + rounding_factor, andi_factor \ + scratch1, scratch2, scratch3, scratch4 +# x part + preceu.ph.qbra \scratch1, \in_1 + preceu.ph.qbra \scratch2, \in_2 + mul \scratch1, \scratch1, \mul_1 + mul \scratch2, \scratch2, \mul_2 +# x>>8 part + preceu.ph.qbla \scratch3, \in_1 + preceu.ph.qbla \scratch4, \in_2 + mul \scratch3, \scratch3, \mul_1 + mul \scratch4, \scratch4, \mul_2 +# x part + addu \scratch1, \scratch1, \scratch2 + preceu.ph.qbla \scratch2, \scratch1 + addu \scratch1, \scratch1, \scratch2 + addu \scratch1, \scratch1, \rounding_factor + preceu.ph.qbla \scratch1, \scratch1 +# x>>8 part + addu \scratch3, \scratch3, \scratch4 + preceu.ph.qbla \scratch4, \scratch3 + addu \scratch3, \scratch3, \scratch4 + addu \scratch3, \scratch3, \rounding_factor + and \scratch3, \scratch3, \andi_factor + + or \out_1, \scratch1, \scratch3 +.endm + +/* + * Checks if stack offset is big enough for storing/restoring regs_num + * number of register to/from stack. Stack offset must be greater than + * or equal to the number of bytes needed for storing registers (regs_num*4). + * Since MIPS ABI allows usage of first 16 bytes of stack frame (this is + * preserved for input arguments of the functions, already stored in a0-a3), + * stack size can be further optimized by utilizing this space. + */ +.macro CHECK_STACK_OFFSET regs_num, stack_offset +.if \stack_offset < \regs_num * 4 - 16 +.error "Stack offset too small." +.endif +.endm + +/* + * Saves set of registers on stack. Maximum number of registers that + * can be saved on stack is limitted to 14 (a0-a3, v0-v1 and s0-s7). + * Stack offset is number of bytes that are added to stack pointer (sp) + * before registers are pushed in order to provide enough space on stack + * (offset must be multiple of 4, and must be big enough, as described by + * CHECK_STACK_OFFSET macro). This macro is intended to be used in + * combination with RESTORE_REGS_FROM_STACK macro. Example: + * SAVE_REGS_ON_STACK 4, v0, v1, s0, s1 + * RESTORE_REGS_FROM_STACK 4, v0, v1, s0, s1 + */ +.macro SAVE_REGS_ON_STACK stack_offset = 0, r1, \ + r2 = 0, r3 = 0, r4 = 0, \ + r5 = 0, r6 = 0, r7 = 0, \ + r8 = 0, r9 = 0, r10 = 0, \ + r11 = 0, r12 = 0, r13 = 0, \ + r14 = 0 + .if (\stack_offset < 0) || (\stack_offset - (\stack_offset / 4) * 4) + .error "Stack offset must be positive and multiple of 4." + .endif + .if \stack_offset != 0 + addiu sp, sp, -\stack_offset + .endif + sw \r1, 0(sp) + .if \r2 != 0 + sw \r2, 4(sp) + .endif + .if \r3 != 0 + sw \r3, 8(sp) + .endif + .if \r4 != 0 + sw \r4, 12(sp) + .endif + .if \r5 != 0 + CHECK_STACK_OFFSET 5, \stack_offset + sw \r5, 16(sp) + .endif + .if \r6 != 0 + CHECK_STACK_OFFSET 6, \stack_offset + sw \r6, 20(sp) + .endif + .if \r7 != 0 + CHECK_STACK_OFFSET 7, \stack_offset + sw \r7, 24(sp) + .endif + .if \r8 != 0 + CHECK_STACK_OFFSET 8, \stack_offset + sw \r8, 28(sp) + .endif + .if \r9 != 0 + CHECK_STACK_OFFSET 9, \stack_offset + sw \r9, 32(sp) + .endif + .if \r10 != 0 + CHECK_STACK_OFFSET 10, \stack_offset + sw \r10, 36(sp) + .endif + .if \r11 != 0 + CHECK_STACK_OFFSET 11, \stack_offset + sw \r11, 40(sp) + .endif + .if \r12 != 0 + CHECK_STACK_OFFSET 12, \stack_offset + sw \r12, 44(sp) + .endif + .if \r13 != 0 + CHECK_STACK_OFFSET 13, \stack_offset + sw \r13, 48(sp) + .endif + .if \r14 != 0 + CHECK_STACK_OFFSET 14, \stack_offset + sw \r14, 52(sp) + .endif +.endm + +/* + * Restores set of registers from stack. Maximum number of registers that + * can be restored from stack is limitted to 14 (a0-a3, v0-v1 and s0-s7). + * Stack offset is number of bytes that are added to stack pointer (sp) + * after registers are restored (offset must be multiple of 4, and must + * be big enough, as described by CHECK_STACK_OFFSET macro). This macro is + * intended to be used in combination with RESTORE_REGS_FROM_STACK macro. + * Example: + * SAVE_REGS_ON_STACK 4, v0, v1, s0, s1 + * RESTORE_REGS_FROM_STACK 4, v0, v1, s0, s1 + */ +.macro RESTORE_REGS_FROM_STACK stack_offset = 0, r1, \ + r2 = 0, r3 = 0, r4 = 0, \ + r5 = 0, r6 = 0, r7 = 0, \ + r8 = 0, r9 = 0, r10 = 0, \ + r11 = 0, r12 = 0, r13 = 0, \ + r14 = 0 + .if (\stack_offset < 0) || (\stack_offset - (\stack_offset/4)*4) + .error "Stack offset must be pozitive and multiple of 4." + .endif + lw \r1, 0(sp) + .if \r2 != 0 + lw \r2, 4(sp) + .endif + .if \r3 != 0 + lw \r3, 8(sp) + .endif + .if \r4 != 0 + lw \r4, 12(sp) + .endif + .if \r5 != 0 + CHECK_STACK_OFFSET 5, \stack_offset + lw \r5, 16(sp) + .endif + .if \r6 != 0 + CHECK_STACK_OFFSET 6, \stack_offset + lw \r6, 20(sp) + .endif + .if \r7 != 0 + CHECK_STACK_OFFSET 7, \stack_offset + lw \r7, 24(sp) + .endif + .if \r8 != 0 + CHECK_STACK_OFFSET 8, \stack_offset + lw \r8, 28(sp) + .endif + .if \r9 != 0 + CHECK_STACK_OFFSET 9, \stack_offset + lw \r9, 32(sp) + .endif + .if \r10 != 0 + CHECK_STACK_OFFSET 10, \stack_offset + lw \r10, 36(sp) + .endif + .if \r11 != 0 + CHECK_STACK_OFFSET 11, \stack_offset + lw \r11, 40(sp) + .endif + .if \r12 != 0 + CHECK_STACK_OFFSET 12, \stack_offset + lw \r12, 44(sp) + .endif + .if \r13 != 0 + CHECK_STACK_OFFSET 13, \stack_offset + lw \r13, 48(sp) + .endif + .if \r14 != 0 + CHECK_STACK_OFFSET 14, \stack_offset + lw \r14, 52(sp) + .endif + .if \stack_offset != 0 + addiu sp, sp, \stack_offset + .endif +.endm + +#endif // QT_MIPS_ASM_DSP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextcursor_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextcursor_p.h new file mode 100644 index 000000000..3569317b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextcursor_p.h @@ -0,0 +1,126 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTCURSOR_P_H +#define QTEXTCURSOR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtGui/private/qtguiglobal_p.h> +#include "qtextcursor.h" +#include "qtextdocument.h" +#include "qtextdocument_p.h" +#include <private/qtextformat_p.h> +#include "qtextobject.h" + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QTextCursorPrivate : public QSharedData +{ +public: + QTextCursorPrivate(QTextDocumentPrivate *p); + QTextCursorPrivate(const QTextCursorPrivate &rhs); + ~QTextCursorPrivate(); + + static inline QTextCursorPrivate *getPrivate(QTextCursor *c) { return c->d; } + + enum AdjustResult { CursorMoved, CursorUnchanged }; + AdjustResult adjustPosition(int positionOfChange, int charsAddedOrRemoved, QTextUndoCommand::Operation op); + + void adjustCursor(QTextCursor::MoveOperation m); + + void remove(); + void clearCells(QTextTable *table, int startRow, int startCol, int numRows, int numCols, QTextUndoCommand::Operation op); + inline bool setPosition(int newPosition) { + Q_ASSERT(newPosition >= 0 && newPosition < priv->length()); + bool moved = position != newPosition; + if (moved) { + position = newPosition; + currentCharFormat = -1; + } + return moved; + } + void setX(); + bool canDelete(int pos) const; + + void insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat); + bool movePosition(QTextCursor::MoveOperation op, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); + + inline QTextBlock block() const + { return QTextBlock(priv, priv->blockMap().findNode(position)); } + inline QTextBlockFormat blockFormat() const + { return block().blockFormat(); } + + QTextLayout *blockLayout(QTextBlock &block) const; + + QTextTable *complexSelectionTable() const; + void selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const; + + void setBlockCharFormat(const QTextCharFormat &format, QTextDocumentPrivate::FormatChangeMode changeMode); + void setBlockFormat(const QTextBlockFormat &format, QTextDocumentPrivate::FormatChangeMode changeMode); + void setCharFormat(const QTextCharFormat &format, QTextDocumentPrivate::FormatChangeMode changeMode); + + void aboutToRemoveCell(int from, int to); + + static QTextCursor fromPosition(QTextDocumentPrivate *d, int pos) + { return QTextCursor(d, pos); } + + QTextDocumentPrivate *priv; + qreal x; + int position; + int anchor; + int adjusted_anchor; + int currentCharFormat; + uint visualNavigation : 1; + uint keepPositionOnInsert : 1; + uint changed : 1; +}; + +QT_END_NAMESPACE + +#endif // QTEXTCURSOR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextdocument_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextdocument_p.h new file mode 100644 index 000000000..cad9131fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextdocument_p.h @@ -0,0 +1,411 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTDOCUMENT_P_H +#define QTEXTDOCUMENT_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 <QtGui/private/qtguiglobal_p.h> +#include "QtCore/qstring.h" +#include "QtCore/qvector.h" +#include "QtCore/qlist.h" +#include "private/qobject_p.h" +#include "private/qfragmentmap_p.h" +#include "QtGui/qtextlayout.h" +#include "QtGui/qtextoption.h" +#include "private/qtextformat_p.h" +#include "QtGui/qtextdocument.h" +#include "QtGui/qtextobject.h" +#include "QtGui/qtextcursor.h" +#include "QtCore/qmap.h" +#include "QtCore/qvariant.h" +#include "QtCore/qurl.h" +#include "private/qcssparser_p.h" + +// #define QT_QMAP_DEBUG + +#ifdef QT_QMAP_DEBUG +#include <iostream> +#endif + +QT_BEGIN_NAMESPACE + +class QTextFormatCollection; +class QTextFormat; +class QTextBlockFormat; +class QTextCursorPrivate; +class QAbstractTextDocumentLayout; +class QTextDocument; +class QTextFrame; + +#define QTextBeginningOfFrame QChar(0xfdd0) +#define QTextEndOfFrame QChar(0xfdd1) + +class QTextFragmentData : public QFragment<> +{ +public: + inline void initialize() {} + inline void invalidate() const {} + inline void free() {} + int stringPosition; + int format; +}; + +class QTextBlockData : public QFragment<3> +{ +public: + inline void initialize() + { layout = 0; userData = 0; userState = -1; revision = 0; hidden = 0; } + void invalidate() const; + inline void free() + { delete layout; layout = 0; delete userData; userData = 0; } + + mutable int format; + // ##### probably store a QTextEngine * here! + mutable QTextLayout *layout; + mutable QTextBlockUserData *userData; + mutable int userState; + mutable int revision : 31; + mutable uint hidden : 1; +}; + + +class QAbstractUndoItem; + +class QTextUndoCommand +{ +public: + enum Command { + Inserted = 0, + Removed = 1, + CharFormatChanged = 2, + BlockFormatChanged = 3, + BlockInserted = 4, + BlockRemoved = 5, + BlockAdded = 6, + BlockDeleted = 7, + GroupFormatChange = 8, + CursorMoved = 9, + Custom = 256 + }; + enum Operation { + KeepCursor = 0, + MoveCursor = 1 + }; + quint16 command; + uint block_part : 1; // all commands that are part of an undo block (including the first and the last one) have this set to 1 + uint block_end : 1; // the last command in an undo block has this set to 1. + uint block_padding : 6; // padding since block used to be a quint8 + quint8 operation; + int format; + quint32 strPos; + quint32 pos; + union { + int blockFormat; + quint32 length; + QAbstractUndoItem *custom; + int objectIndex; + }; + quint32 revision; + + bool tryMerge(const QTextUndoCommand &other); +}; +Q_DECLARE_TYPEINFO(QTextUndoCommand, Q_PRIMITIVE_TYPE); + +class Q_GUI_EXPORT QTextDocumentPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QTextDocument) +public: + typedef QFragmentMap<QTextFragmentData> FragmentMap; + typedef FragmentMap::ConstIterator FragmentIterator; + typedef QFragmentMap<QTextBlockData> BlockMap; + + QTextDocumentPrivate(); + ~QTextDocumentPrivate(); + + void init(); + void clear(); + + void setLayout(QAbstractTextDocumentLayout *layout); + + void insert(int pos, const QString &text, int format); + void insert(int pos, int strPos, int strLength, int format); + int insertBlock(int pos, int blockFormat, int charFormat, QTextUndoCommand::Operation = QTextUndoCommand::MoveCursor); + int insertBlock(QChar blockSeparator, int pos, int blockFormat, int charFormat, + QTextUndoCommand::Operation op = QTextUndoCommand::MoveCursor); + + void move(int from, int to, int length, QTextUndoCommand::Operation = QTextUndoCommand::MoveCursor); + void remove(int pos, int length, QTextUndoCommand::Operation = QTextUndoCommand::MoveCursor); + + void aboutToRemoveCell(int cursorFrom, int cursorEnd); + + QTextFrame *insertFrame(int start, int end, const QTextFrameFormat &format); + void removeFrame(QTextFrame *frame); + + enum FormatChangeMode { MergeFormat, SetFormat, SetFormatAndPreserveObjectIndices }; + + void setCharFormat(int pos, int length, const QTextCharFormat &newFormat, FormatChangeMode mode = SetFormat); + void setBlockFormat(const QTextBlock &from, const QTextBlock &to, + const QTextBlockFormat &newFormat, FormatChangeMode mode = SetFormat); + + void emitUndoAvailable(bool available); + void emitRedoAvailable(bool available); + + int undoRedo(bool undo); + inline void undo() { undoRedo(true); } + inline void redo() { undoRedo(false); } + void appendUndoItem(QAbstractUndoItem *); + inline void beginEditBlock() { if (0 == editBlock++) ++revision; } + void joinPreviousEditBlock(); + void endEditBlock(); + void finishEdit(); + inline bool isInEditBlock() const { return editBlock; } + void enableUndoRedo(bool enable); + inline bool isUndoRedoEnabled() const { return undoEnabled; } + + inline bool isUndoAvailable() const { return undoEnabled && undoState > 0; } + inline bool isRedoAvailable() const { return undoEnabled && undoState < undoStack.size(); } + + inline int availableUndoSteps() const { return undoEnabled ? undoState : 0; } + inline int availableRedoSteps() const { return undoEnabled ? qMax(undoStack.size() - undoState - 1, 0) : 0; } + + inline QString buffer() const { return text; } + QString plainText() const; + inline int length() const { return fragments.length(); } + + inline QTextFormatCollection *formatCollection() { return &formats; } + inline const QTextFormatCollection *formatCollection() const { return &formats; } + inline QAbstractTextDocumentLayout *layout() const { return lout; } + + inline FragmentIterator find(int pos) const { return fragments.find(pos); } + inline FragmentIterator begin() const { return fragments.begin(); } + inline FragmentIterator end() const { return fragments.end(); } + + inline QTextBlock blocksBegin() const { return QTextBlock(const_cast<QTextDocumentPrivate *>(this), blocks.firstNode()); } + inline QTextBlock blocksEnd() const { return QTextBlock(const_cast<QTextDocumentPrivate *>(this), 0); } + inline QTextBlock blocksFind(int pos) const { return QTextBlock(const_cast<QTextDocumentPrivate *>(this), blocks.findNode(pos)); } + int blockCharFormatIndex(int node) const; + + inline int numBlocks() const { return blocks.numNodes(); } + + const BlockMap &blockMap() const { return blocks; } + const FragmentMap &fragmentMap() const { return fragments; } + BlockMap &blockMap() { return blocks; } + FragmentMap &fragmentMap() { return fragments; } + + static const QTextBlockData *block(const QTextBlock &it) { return it.p->blocks.fragment(it.n); } + + int nextCursorPosition(int position, QTextLayout::CursorMode mode) const; + int previousCursorPosition(int position, QTextLayout::CursorMode mode) const; + int leftCursorPosition(int position) const; + int rightCursorPosition(int position) const; + + void changeObjectFormat(QTextObject *group, int format); + + void setModified(bool m); + inline bool isModified() const { return modified; } + + inline QFont defaultFont() const { return formats.defaultFont(); } + inline void setDefaultFont(const QFont &f) { formats.setDefaultFont(f); } + + void clearUndoRedoStacks(QTextDocument::Stacks stacksToClear, bool emitSignals = false); + +private: + bool split(int pos); + bool unite(uint f); + + void insert_string(int pos, uint strPos, uint length, int format, QTextUndoCommand::Operation op); + int insert_block(int pos, uint strPos, int format, int blockformat, QTextUndoCommand::Operation op, int command); + int remove_string(int pos, uint length, QTextUndoCommand::Operation op); + int remove_block(int pos, int *blockformat, int command, QTextUndoCommand::Operation op); + + void insert_frame(QTextFrame *f); + void scan_frames(int pos, int charsRemoved, int charsAdded); + static void clearFrame(QTextFrame *f); + + void adjustDocumentChangesAndCursors(int from, int addedOrRemoved, QTextUndoCommand::Operation op); + + bool wasUndoAvailable; + bool wasRedoAvailable; + +public: + void documentChange(int from, int length); + + inline void addCursor(QTextCursorPrivate *c) { cursors.append(c); } + inline void removeCursor(QTextCursorPrivate *c) { cursors.removeAll(c); } + + QTextFrame *frameAt(int pos) const; + QTextFrame *rootFrame() const; + + QTextObject *objectForIndex(int objectIndex) const; + QTextObject *objectForFormat(int formatIndex) const; + QTextObject *objectForFormat(const QTextFormat &f) const; + + QTextObject *createObject(const QTextFormat &newFormat, int objectIndex = -1); + void deleteObject(QTextObject *object); + + QTextDocument *document() { return q_func(); } + const QTextDocument *document() const { return q_func(); } + + bool ensureMaximumBlockCount(); + +private: + QTextDocumentPrivate(const QTextDocumentPrivate& m); + QTextDocumentPrivate& operator= (const QTextDocumentPrivate& m); + + void appendUndoItem(const QTextUndoCommand &c); + + void contentsChanged(); + + void compressPieceTable(); + + QString text; + uint unreachableCharacterCount; + + QVector<QTextUndoCommand> undoStack; + bool undoEnabled; + int undoState; + int revision; + // position in undo stack of the last setModified(false) call + int modifiedState; + bool modified; + + int editBlock; + int editBlockCursorPosition; + int docChangeFrom; + int docChangeOldLength; + int docChangeLength; + bool framesDirty; + + QTextFormatCollection formats; + mutable QTextFrame *rtFrame; + QAbstractTextDocumentLayout *lout; + FragmentMap fragments; + BlockMap blocks; + int initialBlockCharFormatIndex; + + QList<QTextCursorPrivate *> cursors; + QMap<int, QTextObject *> objects; + QMap<QUrl, QVariant> resources; + QMap<QUrl, QVariant> cachedResources; + QString defaultStyleSheet; + + int lastBlockCount; + +public: + QTextOption defaultTextOption; + Qt::CursorMoveStyle defaultCursorMoveStyle; +#ifndef QT_NO_CSSPARSER + QCss::StyleSheet parsedDefaultStyleSheet; +#endif + int maximumBlockCount; + uint needsEnsureMaximumBlockCount : 1; + uint inContentsChange : 1; + uint blockCursorAdjustment : 1; + QSizeF pageSize; + QString title; + QString url; + qreal indentWidth; + qreal documentMargin; + QUrl baseUrl; + + void mergeCachedResources(const QTextDocumentPrivate *priv); + + friend class QTextHtmlExporter; + friend class QTextCursor; +}; + +class QTextTable; +class QTextHtmlExporter +{ +public: + QTextHtmlExporter(const QTextDocument *_doc); + + enum ExportMode { + ExportEntireDocument, + ExportFragment + }; + + QString toHtml(const QByteArray &encoding, ExportMode mode = ExportEntireDocument); + +private: + enum StyleMode { EmitStyleTag, OmitStyleTag }; + enum FrameType { TextFrame, TableFrame, RootFrame }; + + void emitFrame(const QTextFrame::Iterator &frameIt); + void emitTextFrame(const QTextFrame *frame); + void emitBlock(const QTextBlock &block); + void emitTable(const QTextTable *table); + void emitFragment(const QTextFragment &fragment); + + void emitBlockAttributes(const QTextBlock &block); + bool emitCharFormatStyle(const QTextCharFormat &format); + void emitTextLength(const char *attribute, const QTextLength &length); + void emitAlignment(Qt::Alignment alignment); + void emitFloatStyle(QTextFrameFormat::Position pos, StyleMode mode = EmitStyleTag); + void emitMargins(const QString &top, const QString &bottom, const QString &left, const QString &right); + void emitAttribute(const char *attribute, const QString &value); + void emitFrameStyle(const QTextFrameFormat &format, FrameType frameType); + void emitBorderStyle(QTextFrameFormat::BorderStyle style); + void emitPageBreakPolicy(QTextFormat::PageBreakFlags policy); + + void emitFontFamily(const QString &family); + + void emitBackgroundAttribute(const QTextFormat &format); + QString findUrlForImage(const QTextDocument *doc, qint64 cacheKey, bool isPixmap); + + QString html; + QTextCharFormat defaultCharFormat; + const QTextDocument *doc; + bool fragmentMarkers; +}; + +QT_END_NAMESPACE + +#endif // QTEXTDOCUMENT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextdocumentfragment_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextdocumentfragment_p.h new file mode 100644 index 000000000..e8699545f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextdocumentfragment_p.h @@ -0,0 +1,243 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTDOCUMENTFRAGMENT_P_H +#define QTEXTDOCUMENTFRAGMENT_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 <QtGui/private/qtguiglobal_p.h> +#include "QtGui/qtextdocument.h" +#include "private/qtexthtmlparser_p.h" +#include "private/qtextdocument_p.h" +#include "QtGui/qtexttable.h" +#include "QtCore/qatomic.h" +#include "QtCore/qlist.h" +#include "QtCore/qmap.h" +#include "QtCore/qpointer.h" +#include "QtCore/qvarlengtharray.h" +#include "QtCore/qdatastream.h" + +QT_BEGIN_NAMESPACE + +class QTextDocumentFragmentPrivate; + +class QTextCopyHelper +{ +public: + QTextCopyHelper(const QTextCursor &_source, const QTextCursor &_destination, bool forceCharFormat = false, const QTextCharFormat &fmt = QTextCharFormat()); + + void copy(); + +private: + void appendFragments(int pos, int endPos); + int appendFragment(int pos, int endPos, int objectIndex = -1); + int convertFormatIndex(const QTextFormat &oldFormat, int objectIndexToSet = -1); + inline int convertFormatIndex(int oldFormatIndex, int objectIndexToSet = -1) + { return convertFormatIndex(src->formatCollection()->format(oldFormatIndex), objectIndexToSet); } + inline QTextFormat convertFormat(const QTextFormat &fmt) + { return dst->formatCollection()->format(convertFormatIndex(fmt)); } + + int insertPos; + + bool forceCharFormat; + int primaryCharFormatIndex; + + QTextCursor cursor; + QTextDocumentPrivate *dst; + QTextDocumentPrivate *src; + QTextFormatCollection &formatCollection; + const QString originalText; + QMap<int, int> objectIndexMap; +}; + +class QTextDocumentFragmentPrivate +{ +public: + QTextDocumentFragmentPrivate(const QTextCursor &cursor = QTextCursor()); + inline ~QTextDocumentFragmentPrivate() { delete doc; } + + void insert(QTextCursor &cursor) const; + + QAtomicInt ref; + QTextDocument *doc; + + uint importedFromPlainText : 1; +private: + Q_DISABLE_COPY(QTextDocumentFragmentPrivate) +}; + +#ifndef QT_NO_TEXTHTMLPARSER + +class QTextHtmlImporter : public QTextHtmlParser +{ + struct Table; +public: + enum ImportMode { + ImportToFragment, + ImportToDocument + }; + + QTextHtmlImporter(QTextDocument *_doc, const QString &html, + ImportMode mode, + const QTextDocument *resourceProvider = 0); + + void import(); + +private: + bool closeTag(); + + Table scanTable(int tableNodeIdx); + + enum ProcessNodeResult { ContinueWithNextNode, ContinueWithCurrentNode, ContinueWithNextSibling }; + + void appendBlock(const QTextBlockFormat &format, QTextCharFormat charFmt = QTextCharFormat()); + bool appendNodeText(); + + ProcessNodeResult processBlockNode(); + ProcessNodeResult processSpecialNodes(); + + struct List + { + inline List() : listNode(0) {} + QTextListFormat format; + int listNode; + QPointer<QTextList> list; + }; + friend class QTypeInfo<List>; + QVector<List> lists; + int indent; + + // insert a named anchor the next time we emit a char format, + // either in a block or in regular text + QStringList namedAnchors; + +#ifdef Q_CC_SUN + friend struct QTextHtmlImporter::Table; +#endif + struct TableCellIterator + { + inline TableCellIterator(QTextTable *t = 0) : table(t), row(0), column(0) {} + + inline TableCellIterator &operator++() { + if (atEnd()) + return *this; + do { + const QTextTableCell cell = table->cellAt(row, column); + if (!cell.isValid()) + break; + column += cell.columnSpan(); + if (column >= table->columns()) { + column = 0; + ++row; + } + } while (row < table->rows() && table->cellAt(row, column).row() != row); + + return *this; + } + + inline bool atEnd() const { return table == 0 || row >= table->rows(); } + + QTextTableCell cell() const { return table->cellAt(row, column); } + + QTextTable *table; + int row; + int column; + }; + friend class QTypeInfo<TableCellIterator>; + + friend struct Table; + struct Table + { + Table() : isTextFrame(false), rows(0), columns(0), currentRow(0), lastIndent(0) {} + QPointer<QTextFrame> frame; + bool isTextFrame; + int rows; + int columns; + int currentRow; // ... for buggy html (see html_skipCell testcase) + TableCellIterator currentCell; + int lastIndent; + }; + friend class QTypeInfo<Table>; + QVector<Table> tables; + + struct RowColSpanInfo + { + int row, col; + int rowSpan, colSpan; + }; + friend class QTypeInfo<RowColSpanInfo>; + + enum WhiteSpace + { + RemoveWhiteSpace, + CollapseWhiteSpace, + PreserveWhiteSpace + }; + + WhiteSpace compressNextWhitespace; + + QTextDocument *doc; + QTextCursor cursor; + QTextHtmlParserNode::WhiteSpaceMode wsm; + ImportMode importMode; + bool hasBlock; + bool forceBlockMerging; + bool blockTagClosed; + int currentNodeIdx; + const QTextHtmlParserNode *currentNode; +}; +Q_DECLARE_TYPEINFO(QTextHtmlImporter::List, Q_MOVABLE_TYPE); +Q_DECLARE_TYPEINFO(QTextHtmlImporter::TableCellIterator, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(QTextHtmlImporter::Table, Q_MOVABLE_TYPE); +Q_DECLARE_TYPEINFO(QTextHtmlImporter::RowColSpanInfo, Q_PRIMITIVE_TYPE); + +QT_END_NAMESPACE +#endif // QT_NO_TEXTHTMLPARSER + +#endif // QTEXTDOCUMENTFRAGMENT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextdocumentlayout_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextdocumentlayout_p.h new file mode 100644 index 000000000..710c49628 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextdocumentlayout_p.h @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTDOCUMENTLAYOUT_P_H +#define QTEXTDOCUMENTLAYOUT_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 <QtGui/private/qtguiglobal_p.h> +#include "QtGui/qabstracttextdocumentlayout.h" +#include "QtGui/qtextoption.h" +#include "QtGui/qtextobject.h" + +QT_BEGIN_NAMESPACE + +class QTextListFormat; +class QTextTableCell; +class QTextDocumentLayoutPrivate; + +class Q_GUI_EXPORT QTextDocumentLayout : public QAbstractTextDocumentLayout +{ + Q_DECLARE_PRIVATE(QTextDocumentLayout) + Q_OBJECT + Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth) + Q_PROPERTY(qreal idealWidth READ idealWidth) + Q_PROPERTY(bool contentHasAlignment READ contentHasAlignment) +public: + explicit QTextDocumentLayout(QTextDocument *doc); + + // from the abstract layout + void draw(QPainter *painter, const PaintContext &context) Q_DECL_OVERRIDE; + int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const Q_DECL_OVERRIDE; + + int pageCount() const Q_DECL_OVERRIDE; + QSizeF documentSize() const Q_DECL_OVERRIDE; + + void setCursorWidth(int width); + int cursorWidth() const; + + // internal, to support the ugly FixedColumnWidth wordwrap mode in QTextEdit + void setFixedColumnWidth(int width); + + // internal for QTextEdit's NoWrap mode + void setViewport(const QRectF &viewport); + + virtual QRectF frameBoundingRect(QTextFrame *frame) const Q_DECL_OVERRIDE; + virtual QRectF blockBoundingRect(const QTextBlock &block) const Q_DECL_OVERRIDE; + QRectF tableBoundingRect(QTextTable *table) const; + QRectF tableCellBoundingRect(QTextTable *table, const QTextTableCell &cell) const; + + // #### + int layoutStatus() const; + int dynamicPageCount() const; + QSizeF dynamicDocumentSize() const; + void ensureLayouted(qreal); + + qreal idealWidth() const; + + bool contentHasAlignment() const; + +protected: + void documentChanged(int from, int oldLength, int length) Q_DECL_OVERRIDE; + void resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format) Q_DECL_OVERRIDE; + void positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format) Q_DECL_OVERRIDE; + void drawInlineObject(QPainter *p, const QRectF &rect, QTextInlineObject item, + int posInDocument, const QTextFormat &format) Q_DECL_OVERRIDE; + virtual void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE; +private: + QRectF doLayout(int from, int oldLength, int length); + void layoutFinished(); +}; + +QT_END_NAMESPACE + +#endif // QTEXTDOCUMENTLAYOUT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextengine_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextengine_p.h new file mode 100644 index 000000000..f49e2638f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextengine_p.h @@ -0,0 +1,721 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTENGINE_P_H +#define QTEXTENGINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtGui/private/qtguiglobal_p.h> +#include "QtCore/qstring.h" +#include "QtCore/qvarlengtharray.h" +#include "QtCore/qnamespace.h" +#include "QtGui/qtextlayout.h" +#include "private/qtextformat_p.h" +#include "private/qfont_p.h" +#include "QtCore/qvector.h" +#include "QtGui/qpaintengine.h" +#include "QtGui/qtextobject.h" +#include "QtGui/qtextoption.h" +#include "QtGui/qtextcursor.h" +#include "QtCore/qset.h" +#include "QtCore/qdebug.h" +#ifndef QT_BUILD_COMPAT_LIB +#include "private/qtextdocument_p.h" +#endif + +#include "private/qfixed_p.h" + +#include <private/qunicodetools_p.h> + +#include <stdlib.h> + +QT_BEGIN_NAMESPACE + +class QFontPrivate; +class QFontEngine; + +class QString; +class QPainter; + +class QAbstractTextDocumentLayout; + +typedef quint32 glyph_t; + +// this uses the same coordinate system as Qt, but a different one to freetype. +// * y is usually negative, and is equal to the ascent. +// * negative yoff means the following stuff is drawn higher up. +// the characters bounding rect is given by QRect(x,y,width,height), its advance by +// xoo and yoff +struct Q_GUI_EXPORT glyph_metrics_t +{ + inline glyph_metrics_t() + : x(100000), y(100000) {} + inline glyph_metrics_t(QFixed _x, QFixed _y, QFixed _width, QFixed _height, QFixed _xoff, QFixed _yoff) + : x(_x), + y(_y), + width(_width), + height(_height), + xoff(_xoff), + yoff(_yoff) + {} + QFixed x; + QFixed y; + QFixed width; + QFixed height; + QFixed xoff; + QFixed yoff; + + glyph_metrics_t transformed(const QTransform &xform) const; + inline bool isValid() const {return x != 100000 && y != 100000;} + + inline QFixed leftBearing() const + { + if (!isValid()) + return QFixed(); + + return x; + } + + inline QFixed rightBearing() const + { + if (!isValid()) + return QFixed(); + + return xoff - x - width; + } +}; +Q_DECLARE_TYPEINFO(glyph_metrics_t, Q_PRIMITIVE_TYPE); + +struct Q_AUTOTEST_EXPORT QScriptAnalysis +{ + enum Flags { + None = 0, + Lowercase = 1, + Uppercase = 2, + SmallCaps = 3, + LineOrParagraphSeparator = 4, + Space = 5, + SpaceTabOrObject = Space, + Tab = 6, + TabOrObject = Tab, + Object = 7 + }; + unsigned short script : 7; + unsigned short bidiLevel : 6; // Unicode Bidi algorithm embedding level (0-61) + unsigned short flags : 3; + inline bool operator == (const QScriptAnalysis &other) const { + return script == other.script && bidiLevel == other.bidiLevel && flags == other.flags; + } +}; +Q_DECLARE_TYPEINFO(QScriptAnalysis, Q_PRIMITIVE_TYPE); + +struct QGlyphJustification +{ + inline QGlyphJustification() + : type(0), nKashidas(0), space_18d6(0) + {} + + enum JustificationType { + JustifyNone, + JustifySpace, + JustifyKashida + }; + + uint type :2; + uint nKashidas : 6; // more do not make sense... + uint space_18d6 : 24; +}; +Q_DECLARE_TYPEINFO(QGlyphJustification, Q_PRIMITIVE_TYPE); + +struct QGlyphAttributes { + uchar clusterStart : 1; + uchar dontPrint : 1; + uchar justification : 4; + uchar reserved : 2; +}; +Q_STATIC_ASSERT(sizeof(QGlyphAttributes) == 1); +Q_DECLARE_TYPEINFO(QGlyphAttributes, Q_PRIMITIVE_TYPE); + +struct QGlyphLayout +{ + enum { + SpaceNeeded = sizeof(glyph_t) + sizeof(QFixed) + sizeof(QFixedPoint) + + sizeof(QGlyphAttributes) + sizeof(QGlyphJustification) + }; + + // init to 0 not needed, done when shaping + QFixedPoint *offsets; // 8 bytes per element + glyph_t *glyphs; // 4 bytes per element + QFixed *advances; // 4 bytes per element + QGlyphJustification *justifications; // 4 bytes per element + QGlyphAttributes *attributes; // 1 byte per element + + int numGlyphs; + + inline QGlyphLayout() : numGlyphs(0) {} + + inline explicit QGlyphLayout(char *address, int totalGlyphs) + { + offsets = reinterpret_cast<QFixedPoint *>(address); + int offset = totalGlyphs * sizeof(QFixedPoint); + glyphs = reinterpret_cast<glyph_t *>(address + offset); + offset += totalGlyphs * sizeof(glyph_t); + advances = reinterpret_cast<QFixed *>(address + offset); + offset += totalGlyphs * sizeof(QFixed); + justifications = reinterpret_cast<QGlyphJustification *>(address + offset); + offset += totalGlyphs * sizeof(QGlyphJustification); + attributes = reinterpret_cast<QGlyphAttributes *>(address + offset); + numGlyphs = totalGlyphs; + } + + inline QGlyphLayout mid(int position, int n = -1) const { + QGlyphLayout copy = *this; + copy.glyphs += position; + copy.advances += position; + copy.offsets += position; + copy.justifications += position; + copy.attributes += position; + if (n == -1) + copy.numGlyphs -= position; + else + copy.numGlyphs = n; + return copy; + } + + inline QFixed effectiveAdvance(int item) const + { return (advances[item] + QFixed::fromFixed(justifications[item].space_18d6)) * !attributes[item].dontPrint; } + + inline void clear(int first = 0, int last = -1) { + if (last == -1) + last = numGlyphs; + if (first == 0 && last == numGlyphs + && reinterpret_cast<char *>(offsets + numGlyphs) == reinterpret_cast<char *>(glyphs)) { + memset(offsets, 0, (numGlyphs * SpaceNeeded)); + } else { + const int num = last - first; + memset(offsets + first, 0, num * sizeof(QFixedPoint)); + memset(glyphs + first, 0, num * sizeof(glyph_t)); + memset(advances + first, 0, num * sizeof(QFixed)); + memset(justifications + first, 0, num * sizeof(QGlyphJustification)); + memset(attributes + first, 0, num * sizeof(QGlyphAttributes)); + } + } + + inline char *data() { + return reinterpret_cast<char *>(offsets); + } + + void grow(char *address, int totalGlyphs); +}; + +class QVarLengthGlyphLayoutArray : private QVarLengthArray<void *>, public QGlyphLayout +{ +private: + typedef QVarLengthArray<void *> Array; +public: + QVarLengthGlyphLayoutArray(int totalGlyphs) + : Array((totalGlyphs * SpaceNeeded) / sizeof(void *) + 1) + , QGlyphLayout(reinterpret_cast<char *>(Array::data()), totalGlyphs) + { + memset(Array::data(), 0, Array::size() * sizeof(void *)); + } + + void resize(int totalGlyphs) + { + Array::resize((totalGlyphs * SpaceNeeded) / sizeof(void *) + 1); + + *((QGlyphLayout *)this) = QGlyphLayout(reinterpret_cast<char *>(Array::data()), totalGlyphs); + memset(Array::data(), 0, Array::size() * sizeof(void *)); + } +}; + +template <int N> struct QGlyphLayoutArray : public QGlyphLayout +{ +public: + QGlyphLayoutArray() + : QGlyphLayout(reinterpret_cast<char *>(buffer), N) + { + memset(buffer, 0, sizeof(buffer)); + } + +private: + void *buffer[(N * SpaceNeeded) / sizeof(void *) + 1]; +}; + +struct QScriptItem; +/// Internal QTextItem +class QTextItemInt : public QTextItem +{ +public: + inline QTextItemInt() + : justified(false), underlineStyle(QTextCharFormat::NoUnderline), num_chars(0), chars(0), + logClusters(0), f(0), fontEngine(0) + {} + QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFormat &format = QTextCharFormat()); + QTextItemInt(const QGlyphLayout &g, QFont *font, const QChar *chars, int numChars, QFontEngine *fe, + const QTextCharFormat &format = QTextCharFormat()); + + /// copy the structure items, adjusting the glyphs arrays to the right subarrays. + /// the width of the returned QTextItemInt is not adjusted, for speed reasons + QTextItemInt midItem(QFontEngine *fontEngine, int firstGlyphIndex, int numGlyphs) const; + void initWithScriptItem(const QScriptItem &si); + + QFixed descent; + QFixed ascent; + QFixed width; + + RenderFlags flags; + bool justified; + QTextCharFormat::UnderlineStyle underlineStyle; + const QTextCharFormat charFormat; + int num_chars; + const QChar *chars; + const unsigned short *logClusters; + const QFont *f; + + QGlyphLayout glyphs; + QFontEngine *fontEngine; +}; + +struct Q_AUTOTEST_EXPORT QScriptItem +{ + inline QScriptItem() + : position(0), + num_glyphs(0), descent(-1), ascent(-1), leading(-1), width(-1), + glyph_data_offset(0) {} + inline QScriptItem(int p, const QScriptAnalysis &a) + : position(p), analysis(a), + num_glyphs(0), descent(-1), ascent(-1), leading(-1), width(-1), + glyph_data_offset(0) {} + + int position; + QScriptAnalysis analysis; + unsigned short num_glyphs; + QFixed descent; + QFixed ascent; + QFixed leading; + QFixed width; + int glyph_data_offset; + QFixed height() const { return ascent + descent; } +}; + + +Q_DECLARE_TYPEINFO(QScriptItem, Q_MOVABLE_TYPE); + +typedef QVector<QScriptItem> QScriptItemArray; + +struct Q_AUTOTEST_EXPORT QScriptLine +{ + // created and filled in QTextLine::layout_helper + QScriptLine() + : from(0), trailingSpaces(0), length(0), + justified(0), gridfitted(0), + hasTrailingSpaces(0), leadingIncluded(0) {} + QFixed descent; + QFixed ascent; + QFixed leading; + QFixed x; + QFixed y; + QFixed width; + QFixed textWidth; + QFixed textAdvance; + int from; + unsigned short trailingSpaces; + signed int length : 28; + mutable uint justified : 1; + mutable uint gridfitted : 1; + uint hasTrailingSpaces : 1; + uint leadingIncluded : 1; + QFixed height() const { return ascent + descent + + (leadingIncluded? qMax(QFixed(),leading) : QFixed()); } + QFixed base() const { return ascent; } + void setDefaultHeight(QTextEngine *eng); + void operator+=(const QScriptLine &other); +}; +Q_DECLARE_TYPEINFO(QScriptLine, Q_PRIMITIVE_TYPE); + + +inline void QScriptLine::operator+=(const QScriptLine &other) +{ + leading= qMax(leading + ascent, other.leading + other.ascent) - qMax(ascent, other.ascent); + descent = qMax(descent, other.descent); + ascent = qMax(ascent, other.ascent); + textWidth += other.textWidth; + length += other.length; +} + +typedef QVector<QScriptLine> QScriptLineArray; + +class QFontPrivate; +class QTextFormatCollection; + +class Q_GUI_EXPORT QTextEngine { +public: + enum LayoutState { + LayoutEmpty, + InLayout, + LayoutFailed + }; + struct Q_GUI_EXPORT LayoutData { + LayoutData(const QString &str, void **stack_memory, int mem_size); + LayoutData(); + ~LayoutData(); + mutable QScriptItemArray items; + int allocated; + int available_glyphs; + void **memory; + unsigned short *logClustersPtr; + QGlyphLayout glyphLayout; + mutable int used; + uint hasBidi : 1; + uint layoutState : 2; + uint memory_on_stack : 1; + uint haveCharAttributes : 1; + QString string; + bool reallocate(int totalGlyphs); + }; + + struct ItemDecoration { + ItemDecoration() {} // for QVector, don't use + ItemDecoration(qreal x1, qreal x2, qreal y, const QPen &pen): + x1(x1), x2(x2), y(y), pen(pen) {} + + qreal x1; + qreal x2; + qreal y; + QPen pen; + }; + + typedef QVector<ItemDecoration> ItemDecorationList; + + QTextEngine(); + QTextEngine(const QString &str, const QFont &f); + ~QTextEngine(); + + enum Mode { + WidthOnly = 0x07 + }; + + void invalidate(); + void clearLineData(); + + void validate() const; + void itemize() const; + + bool isRightToLeft() const; + static void bidiReorder(int numRuns, const quint8 *levels, int *visualOrder); + + const QCharAttributes *attributes() const; + + void shape(int item) const; + + void justify(const QScriptLine &si); + QFixed alignLine(const QScriptLine &line); + + QFixed width(int charFrom, int numChars) const; + glyph_metrics_t boundingBox(int from, int len) const; + glyph_metrics_t tightBoundingBox(int from, int len) const; + + int length(int item) const { + const QScriptItem &si = layoutData->items[item]; + int from = si.position; + item++; + return (item < layoutData->items.size() ? layoutData->items[item].position : layoutData->string.length()) - from; + } + int length(const QScriptItem *si) const { + int end; + if (si + 1 < layoutData->items.constData()+ layoutData->items.size()) + end = (si+1)->position; + else + end = layoutData->string.length(); + return end - si->position; + } + + QFontEngine *fontEngine(const QScriptItem &si, QFixed *ascent = 0, QFixed *descent = 0, QFixed *leading = 0) const; + QFont font(const QScriptItem &si) const; + inline QFont font() const { return fnt; } + + /** + * Returns a pointer to an array of log clusters, offset at the script item. + * Each item in the array is a unsigned short. For each character in the original string there is an entry in the table + * so there is a one to one correlation in indexes between the original text and the index in the logcluster. + * The value of each item is the position in the glyphs array. Multiple similar pointers in the logclusters array imply + * that one glyph is used for more than one character. + * \sa glyphs() + */ + inline unsigned short *logClusters(const QScriptItem *si) const + { return layoutData->logClustersPtr+si->position; } + /** + * Returns an array of QGlyphLayout items, offset at the script item. + * Each item in the array matches one glyph in the text, storing the advance, position etc. + * The returned item's length equals to the number of available glyphs. This may be more + * than what was actually shaped. + * \sa logClusters() + */ + inline QGlyphLayout availableGlyphs(const QScriptItem *si) const { + return layoutData->glyphLayout.mid(si->glyph_data_offset); + } + /** + * Returns an array of QGlyphLayout items, offset at the script item. + * Each item in the array matches one glyph in the text, storing the advance, position etc. + * The returned item's length equals to the number of shaped glyphs. + * \sa logClusters() + */ + inline QGlyphLayout shapedGlyphs(const QScriptItem *si) const { + return layoutData->glyphLayout.mid(si->glyph_data_offset, si->num_glyphs); + } + + inline bool ensureSpace(int nGlyphs) const { + if (layoutData->glyphLayout.numGlyphs - layoutData->used < nGlyphs) + return layoutData->reallocate((((layoutData->used + nGlyphs)*3/2 + 15) >> 4) << 4); + return true; + } + + void freeMemory(); + + int findItem(int strPos, int firstItem = 0) const; + inline QTextFormatCollection *formatCollection() const { + if (block.docHandle()) + return block.docHandle()->formatCollection(); + return specialData ? specialData->formatCollection.data() : 0; + } + QTextCharFormat format(const QScriptItem *si) const; + inline QAbstractTextDocumentLayout *docLayout() const { + Q_ASSERT(block.docHandle()); + return block.docHandle()->document()->documentLayout(); + } + int formatIndex(const QScriptItem *si) const; + + /// returns the width of tab at index (in the tabs array) with the tab-start at position x + QFixed calculateTabWidth(int index, QFixed x) const; + + mutable QScriptLineArray lines; + +private: + struct FontEngineCache { + FontEngineCache(); + mutable QFontEngine *prevFontEngine; + mutable QFontEngine *prevScaledFontEngine; + mutable int prevScript; + mutable int prevPosition; + mutable int prevLength; + inline void reset() { + prevFontEngine = 0; + prevScaledFontEngine = 0; + prevScript = -1; + prevPosition = -1; + prevLength = -1; + } + }; + mutable FontEngineCache feCache; + +public: + QString text; + mutable QFont fnt; +#ifndef QT_NO_RAWFONT + QRawFont rawFont; +#endif + QTextBlock block; + + QTextOption option; + + QFixed minWidth; + QFixed maxWidth; + QPointF position; + uint ignoreBidi : 1; + uint cacheGlyphs : 1; + uint stackEngine : 1; + uint forceJustification : 1; + uint visualMovement : 1; + uint delayDecorations: 1; +#ifndef QT_NO_RAWFONT + uint useRawFont : 1; +#endif + + mutable LayoutData *layoutData; + + ItemDecorationList underlineList; + ItemDecorationList strikeOutList; + ItemDecorationList overlineList; + + inline bool visualCursorMovement() const + { return visualMovement || (block.docHandle() && block.docHandle()->defaultCursorMoveStyle == Qt::VisualMoveStyle); } + + 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->formats.isEmpty()); } + inline QVector<QTextLayout::FormatRange> formats() const + { return specialData ? specialData->formats : QVector<QTextLayout::FormatRange>(); } + void setFormats(const QVector<QTextLayout::FormatRange> &formats); + +private: + static void init(QTextEngine *e); + + struct SpecialData { + int preeditPosition; + QString preeditText; + QVector<QTextLayout::FormatRange> formats; + QVector<QTextCharFormat> resolvedFormats; + // only used when no docHandle is available + QScopedPointer<QTextFormatCollection> formatCollection; + }; + SpecialData *specialData; + + void indexFormats(); + void resolveFormats() const; + +public: + bool atWordSeparator(int position) const; + + QString elidedText(Qt::TextElideMode mode, const QFixed &width, int flags = 0, int from = 0, int count = -1) const; + + void shapeLine(const QScriptLine &line); + QFixed leadingSpaceWidth(const QScriptLine &line); + + QFixed offsetInLigature(const QScriptItem *si, int pos, int max, int glyph_pos); + int positionInLigature(const QScriptItem *si, int end, QFixed x, QFixed edge, int glyph_pos, bool cursorOnCharacter); + int previousLogicalPosition(int oldPos) const; + int nextLogicalPosition(int oldPos) const; + int lineNumberForTextPosition(int pos); + int positionAfterVisualMovement(int oldPos, QTextCursor::MoveOperation op); + void insertionPointsForLine(int lineNum, QVector<int> &insertionPoints); + void resetFontEngineCache(); + + void enableDelayDecorations(bool enable = true) { delayDecorations = enable; } + + void addUnderline(QPainter *painter, const QLineF &line); + void addStrikeOut(QPainter *painter, const QLineF &line); + void addOverline(QPainter *painter, const QLineF &line); + + void drawDecorations(QPainter *painter); + void clearDecorations(); + void adjustUnderlines(); + +private: + void addItemDecoration(QPainter *painter, const QLineF &line, ItemDecorationList *decorationList); + void adjustUnderlines(ItemDecorationList::iterator start, + ItemDecorationList::iterator end, + qreal underlinePos, qreal penWidth); + void drawItemDecorationList(QPainter *painter, const ItemDecorationList &decorationList); + void setBoundary(int strPos) const; + void addRequiredBoundaries() const; + void shapeText(int item) const; +#if QT_CONFIG(harfbuzz) + int shapeTextWithHarfbuzzNG(const QScriptItem &si, + const ushort *string, + int itemLength, + QFontEngine *fontEngine, + const QVector<uint> &itemBoundaries, + bool kerningEnabled, + bool hasLetterSpacing) const; +#endif + int shapeTextWithHarfbuzz(const QScriptItem &si, const ushort *string, int itemLength, QFontEngine *fontEngine, const QVector<uint> &itemBoundaries, bool kerningEnabled) 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); +}; + +class Q_GUI_EXPORT QStackTextEngine : public QTextEngine { +public: + enum { MemSize = 256*40/sizeof(void *) }; + QStackTextEngine(const QString &string, const QFont &f); + LayoutData _layoutData; + void *_memory[MemSize]; +}; +Q_DECLARE_TYPEINFO(QTextEngine::ItemDecoration, Q_MOVABLE_TYPE); + +struct QTextLineItemIterator +{ + QTextLineItemIterator(QTextEngine *eng, int lineNum, const QPointF &pos = QPointF(), + const QTextLayout::FormatRange *_selection = 0); + + inline bool atEnd() const { return logicalItem >= nItems - 1; } + inline bool atBeginning() const { return logicalItem <= 0; } + QScriptItem &next(); + + bool getSelectionBounds(QFixed *selectionX, QFixed *selectionWidth) const; + inline bool isOutsideSelection() const { + QFixed tmp1, tmp2; + return !getSelectionBounds(&tmp1, &tmp2); + } + + QTextEngine *eng; + + QFixed x; + const QScriptLine &line; + QScriptItem *si; + + const int lineNum; + const int lineEnd; + const int firstItem; + const int lastItem; + const int nItems; + int logicalItem; + int item; + int itemLength; + + int glyphsStart; + int glyphsEnd; + int itemStart; + int itemEnd; + + QFixed itemWidth; + + QVarLengthArray<int> visualOrder; + + const QTextLayout::FormatRange *selection; +}; + +QT_END_NAMESPACE + +#endif // QTEXTENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextformat_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextformat_p.h new file mode 100644 index 000000000..3557c17a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextformat_p.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTFORMAT_P_H +#define QTEXTFORMAT_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 <QtGui/private/qtguiglobal_p.h> +#include "QtGui/qtextformat.h" +#include "QtCore/qvector.h" + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QTextFormatCollection +{ +public: + QTextFormatCollection() {} + ~QTextFormatCollection(); + + void clear(); + + inline QTextFormat objectFormat(int objectIndex) const + { return format(objectFormatIndex(objectIndex)); } + inline void setObjectFormat(int objectIndex, const QTextFormat &format) + { setObjectFormatIndex(objectIndex, indexForFormat(format)); } + + int objectFormatIndex(int objectIndex) const; + void setObjectFormatIndex(int objectIndex, int formatIndex); + + int createObjectIndex(const QTextFormat &f); + + int indexForFormat(const QTextFormat &f); + bool hasFormatCached(const QTextFormat &format) const; + + QTextFormat format(int idx) const; + inline QTextBlockFormat blockFormat(int index) const + { return format(index).toBlockFormat(); } + inline QTextCharFormat charFormat(int index) const + { return format(index).toCharFormat(); } + inline QTextListFormat listFormat(int index) const + { return format(index).toListFormat(); } + inline QTextTableFormat tableFormat(int index) const + { return format(index).toTableFormat(); } + inline QTextImageFormat imageFormat(int index) const + { return format(index).toImageFormat(); } + + inline int numFormats() const { return formats.count(); } + + typedef QVector<QTextFormat> FormatVector; + + FormatVector formats; + QVector<qint32> objFormats; + QMultiHash<uint,int> hashes; + + inline QFont defaultFont() const { return defaultFnt; } + void setDefaultFont(const QFont &f); + +private: + QFont defaultFnt; + + Q_DISABLE_COPY(QTextFormatCollection) +}; + +QT_END_NAMESPACE + +#endif // QTEXTFORMAT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtexthtmlparser_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtexthtmlparser_p.h new file mode 100644 index 000000000..77bfa685c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtexthtmlparser_p.h @@ -0,0 +1,348 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTHTMLPARSER_P_H +#define QTEXTHTMLPARSER_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 <QtGui/private/qtguiglobal_p.h> +#include "QtCore/qvector.h" +#include "QtGui/qbrush.h" +#include "QtGui/qcolor.h" +#include "QtGui/qfont.h" +#include "QtGui/qtextdocument.h" +#include "QtGui/qtextcursor.h" +#include "private/qtextformat_p.h" +#include "private/qtextdocument_p.h" +#include "private/qcssparser_p.h" + +#ifndef QT_NO_TEXTHTMLPARSER + +QT_BEGIN_NAMESPACE + +enum QTextHTMLElements { + Html_unknown = -1, + Html_qt = 0, + Html_body, + + Html_a, + Html_em, + Html_i, + Html_big, + Html_small, + Html_strong, + Html_b, + Html_cite, + Html_address, + Html_var, + Html_dfn, + + Html_h1, + Html_h2, + Html_h3, + Html_h4, + Html_h5, + Html_h6, + Html_p, + Html_center, + + Html_font, + + Html_ul, + Html_ol, + Html_li, + + Html_code, + Html_tt, + Html_kbd, + Html_samp, + + Html_img, + Html_br, + Html_hr, + + Html_sub, + Html_sup, + + Html_pre, + Html_blockquote, + Html_head, + Html_div, + Html_span, + Html_dl, + Html_dt, + Html_dd, + Html_u, + Html_s, + Html_nobr, + + // tables + Html_table, + Html_tr, + Html_td, + Html_th, + Html_thead, + Html_tbody, + Html_tfoot, + Html_caption, + + // misc... + Html_html, + Html_style, + Html_title, + Html_meta, + Html_link, + Html_script, + + Html_NumElements +}; + +struct QTextHtmlElement +{ + const char name[11]; + QTextHTMLElements id; + enum DisplayMode { DisplayBlock, DisplayInline, DisplayTable, DisplayNone } displayMode; +}; + +class QTextHtmlParser; + +struct QTextHtmlParserNode { + enum WhiteSpaceMode { + WhiteSpaceNormal, + WhiteSpacePre, + WhiteSpaceNoWrap, + WhiteSpacePreWrap, + WhiteSpaceModeUndefined = -1 + }; + + QTextHtmlParserNode(); + QString tag; + QString text; + QStringList attributes; + int parent; + QVector<int> children; + QTextHTMLElements id; + QTextCharFormat charFormat; + QTextBlockFormat blockFormat; + uint cssFloat : 2; + uint hasOwnListStyle : 1; + uint hasOwnLineHeightType : 1; + uint hasCssListIndent : 1; + uint isEmptyParagraph : 1; + uint isTextFrame : 1; + uint isRootFrame : 1; + uint displayMode : 3; // QTextHtmlElement::DisplayMode + uint hasHref : 1; + QTextListFormat::Style listStyle; + QString textListNumberPrefix; + QString textListNumberSuffix; + QString imageName; + qreal imageWidth; + qreal imageHeight; + QTextLength width; + QTextLength height; + qreal tableBorder; + int tableCellRowSpan; + int tableCellColSpan; + qreal tableCellSpacing; + qreal tableCellPadding; + QBrush borderBrush; + QTextFrameFormat::BorderStyle borderStyle; + int userState; + + int cssListIndent; + + WhiteSpaceMode wsm; + + inline bool isListStart() const + { return id == Html_ol || id == Html_ul; } + inline bool isTableCell() const + { return id == Html_td || id == Html_th; } + inline bool isBlock() const + { return displayMode == QTextHtmlElement::DisplayBlock; } + + inline bool isNotSelfNesting() const + { return id == Html_p || id == Html_li; } + + inline bool allowedInContext(int parentId) const + { + switch (id) { + case Html_dd: + case Html_dt: return (parentId == Html_dl); + case Html_tr: return (parentId == Html_table + || parentId == Html_thead + || parentId == Html_tbody + || parentId == Html_tfoot + ); + case Html_th: + case Html_td: return (parentId == Html_tr); + case Html_thead: + case Html_tbody: + case Html_tfoot: return (parentId == Html_table); + case Html_caption: return (parentId == Html_table); + case Html_body: return parentId != Html_head; + default: break; + } + return true; + } + + inline bool mayNotHaveChildren() const + { return id == Html_img || id == Html_hr || id == Html_br || id == Html_meta; } + + void initializeProperties(const QTextHtmlParserNode *parent, const QTextHtmlParser *parser); + + inline int uncollapsedMargin(int mar) const { return margin[mar]; } + + bool isNestedList(const QTextHtmlParser *parser) const; + + void parseStyleAttribute(const QString &value, const QTextDocument *resourceProvider); + +#if QT_CONFIG(cssparser) + void applyCssDeclarations(const QVector<QCss::Declaration> &declarations, const QTextDocument *resourceProvider); + + void setListStyle(const QVector<QCss::Value> &cssValues); +#endif + + void applyBackgroundImage(const QString &url, const QTextDocument *resourceProvider); + + bool hasOnlyWhitespace() const; + + int margin[4]; + int padding[4]; + + friend class QTextHtmlParser; +}; +Q_DECLARE_TYPEINFO(QTextHtmlParserNode, Q_MOVABLE_TYPE); + + +class QTextHtmlParser +{ +public: + enum Margin { + MarginTop, + MarginRight, + MarginBottom, + MarginLeft + }; + + inline const QTextHtmlParserNode &at(int i) const { return nodes.at(i); } + inline QTextHtmlParserNode &operator[](int i) { return nodes[i]; } + inline int count() const { return nodes.count(); } + inline int last() const { return nodes.count()-1; } + int depth(int i) const; + int topMargin(int i) const; + int bottomMargin(int i) const; + inline int leftMargin(int i) const { return margin(i, MarginLeft); } + inline int rightMargin(int i) const { return margin(i, MarginRight); } + + inline int topPadding(int i) const { return at(i).padding[MarginTop]; } + inline int bottomPadding(int i) const { return at(i).padding[MarginBottom]; } + inline int leftPadding(int i) const { return at(i).padding[MarginLeft]; } + inline int rightPadding(int i) const { return at(i).padding[MarginRight]; } + + void dumpHtml(); + + void parse(const QString &text, const QTextDocument *resourceProvider); + + static int lookupElement(const QString &element); +protected: + QTextHtmlParserNode *newNode(int parent); + QVector<QTextHtmlParserNode> nodes; + QString txt; + int pos, len; + + bool textEditMode; + + void parse(); + void parseTag(); + void parseCloseTag(); + void parseExclamationTag(); + QString parseEntity(); + QString parseWord(); + QTextHtmlParserNode *resolveParent(); + void resolveNode(); + QStringList parseAttributes(); + void applyAttributes(const QStringList &attributes); + void eatSpace(); + inline bool hasPrefix(QChar c, int lookahead = 0) const + {return pos + lookahead < len && txt.at(pos) == c; } + int margin(int i, int mar) const; + + bool nodeIsChildOf(int i, QTextHTMLElements id) const; + + +#if QT_CONFIG(cssparser) + QVector<QCss::Declaration> declarationsForNode(int node) const; + void resolveStyleSheetImports(const QCss::StyleSheet &sheet); + void importStyleSheet(const QString &href); + + struct ExternalStyleSheet + { + inline ExternalStyleSheet() {} + inline ExternalStyleSheet(const QString &_url, const QCss::StyleSheet &_sheet) + : url(_url), sheet(_sheet) {} + QString url; + QCss::StyleSheet sheet; + }; + friend class QTypeInfo<ExternalStyleSheet>; + QVector<ExternalStyleSheet> externalStyleSheets; + QVector<QCss::StyleSheet> inlineStyleSheets; +#endif + + const QTextDocument *resourceProvider; +}; +#if QT_CONFIG(cssparser) +Q_DECLARE_TYPEINFO(QTextHtmlParser::ExternalStyleSheet, Q_MOVABLE_TYPE); +#endif + +QT_END_NAMESPACE + +#endif // QT_NO_TEXTHTMLPARSER + +#endif // QTEXTHTMLPARSER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextimagehandler_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextimagehandler_p.h new file mode 100644 index 000000000..a22c91ecb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextimagehandler_p.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTIMAGEHANDLER_P_H +#define QTEXTIMAGEHANDLER_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 <QtGui/private/qtguiglobal_p.h> +#include "QtCore/qobject.h" +#include "QtGui/qabstracttextdocumentlayout.h" + +QT_BEGIN_NAMESPACE + +class QTextImageFormat; + +class Q_GUI_EXPORT QTextImageHandler : public QObject, + public QTextObjectInterface +{ + Q_OBJECT + Q_INTERFACES(QTextObjectInterface) +public: + explicit QTextImageHandler(QObject *parent = 0); + + virtual QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) Q_DECL_OVERRIDE; + virtual void drawObject(QPainter *p, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) Q_DECL_OVERRIDE; + QImage image(QTextDocument *doc, const QTextImageFormat &imageFormat); +}; + +QT_END_NAMESPACE + +#endif // QTEXTIMAGEHANDLER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextobject_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextobject_p.h new file mode 100644 index 000000000..81ab023cc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextobject_p.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTOBJECT_P_H +#define QTEXTOBJECT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtGui/private/qtguiglobal_p.h> +#include "QtGui/qtextobject.h" +#include "private/qobject_p.h" +#include "QtGui/qtextdocument.h" + +QT_BEGIN_NAMESPACE + +class QTextDocumentPrivate; + +class QTextObjectPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QTextObject) +public: + QTextObjectPrivate(QTextDocument *doc) + : pieceTable(doc->d_func()), objectIndex(-1) + { + } + QTextDocumentPrivate *pieceTable; + int objectIndex; +}; + +class QTextBlockGroupPrivate : public QTextObjectPrivate +{ + Q_DECLARE_PUBLIC(QTextBlockGroup) +public: + QTextBlockGroupPrivate(QTextDocument *doc) + : QTextObjectPrivate(doc) + { + } + typedef QList<QTextBlock> BlockList; + BlockList blocks; + void markBlocksDirty(); +}; + +class QTextFrameLayoutData; + +class QTextFramePrivate : public QTextObjectPrivate +{ + friend class QTextDocumentPrivate; + Q_DECLARE_PUBLIC(QTextFrame) +public: + QTextFramePrivate(QTextDocument *doc) + : QTextObjectPrivate(doc), fragment_start(0), fragment_end(0), parentFrame(0), layoutData(0) + { + } + virtual void fragmentAdded(QChar type, uint fragment); + virtual void fragmentRemoved(QChar type, uint fragment); + void remove_me(); + + uint fragment_start; + uint fragment_end; + + QTextFrame *parentFrame; + QList<QTextFrame *> childFrames; + QTextFrameLayoutData *layoutData; +}; + +QT_END_NAMESPACE + +#endif // QTEXTOBJECT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextodfwriter_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextodfwriter_p.h new file mode 100644 index 000000000..d0dd7d2b5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextodfwriter_p.h @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTODFWRITER_H +#define QTEXTODFWRITER_H + +#include <QtGui/private/qtguiglobal_p.h> + +#ifndef QT_NO_TEXTODFWRITER + +// +// 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/QXmlStreamWriter> +#include <QtCore/qset.h> +#include <QtCore/qstack.h> + +#include "qtextdocument_p.h" +#include "qtextdocumentwriter.h" + +QT_BEGIN_NAMESPACE + +class QTextDocumentPrivate; +class QTextCursor; +class QTextBlock; +class QIODevice; +class QXmlStreamWriter; +class QTextOdfWriterPrivate; +class QTextBlockFormat; +class QTextCharFormat; +class QTextListFormat; +class QTextFrameFormat; +class QTextTableCellFormat; +class QTextFrame; +class QTextFragment; +class QOutputStrategy; + +class Q_AUTOTEST_EXPORT QTextOdfWriter { +public: + QTextOdfWriter(const QTextDocument &document, QIODevice *device); + bool writeAll(); + + void setCodec(QTextCodec *codec) { m_codec = codec; } + void setCreateArchive(bool on) { m_createArchive = on; } + bool createArchive() const { return m_createArchive; } + + void writeBlock(QXmlStreamWriter &writer, const QTextBlock &block); + void writeFormats(QXmlStreamWriter &writer, const QSet<int> &formatIds) const; + void writeBlockFormat(QXmlStreamWriter &writer, QTextBlockFormat format, int formatIndex) const; + void writeCharacterFormat(QXmlStreamWriter &writer, QTextCharFormat format, int formatIndex) const; + void writeListFormat(QXmlStreamWriter &writer, QTextListFormat format, int formatIndex) const; + void writeFrameFormat(QXmlStreamWriter &writer, QTextFrameFormat format, int formatIndex) const; + void writeTableCellFormat(QXmlStreamWriter &writer, QTextTableCellFormat format, int formatIndex) const; + void writeFrame(QXmlStreamWriter &writer, const QTextFrame *frame); + void writeInlineCharacter(QXmlStreamWriter &writer, const QTextFragment &fragment) const; + + const QString officeNS, textNS, styleNS, foNS, tableNS, drawNS, xlinkNS, svgNS; +private: + const QTextDocument *m_document; + QIODevice *m_device; + + QOutputStrategy *m_strategy; + QTextCodec *m_codec; + bool m_createArchive; + + QStack<QTextList *> m_listStack; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_TEXTODFWRITER +#endif // QTEXTODFWRITER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtexttable_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtexttable_p.h new file mode 100644 index 000000000..848537272 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtexttable_p.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTTABLE_P_H +#define QTEXTTABLE_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 <QtGui/private/qtguiglobal_p.h> +#include "private/qtextobject_p.h" +#include "private/qtextdocument_p.h" + +QT_BEGIN_NAMESPACE + +class QTextTablePrivate : public QTextFramePrivate +{ + Q_DECLARE_PUBLIC(QTextTable) +public: + QTextTablePrivate(QTextDocument *document) : QTextFramePrivate(document), grid(0), nRows(0), nCols(0), dirty(true), blockFragmentUpdates(false) {} + ~QTextTablePrivate(); + + static QTextTable *createTable(QTextDocumentPrivate *, int pos, int rows, int cols, const QTextTableFormat &tableFormat); + void fragmentAdded(QChar type, uint fragment) Q_DECL_OVERRIDE; + void fragmentRemoved(QChar type, uint fragment) Q_DECL_OVERRIDE; + + void update() const; + + int findCellIndex(int fragment) const; + + QVector<int> cells; + // symmetric to cells array and maps to indecs in grid, + // used for fast-lookup for row/column by fragment + mutable QVector<int> cellIndices; + mutable int *grid; + mutable int nRows; + mutable int nCols; + mutable bool dirty; + bool blockFragmentUpdates; +}; + +QT_END_NAMESPACE + +#endif // QTEXTTABLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextureglyphcache_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextureglyphcache_p.h new file mode 100644 index 000000000..25253b496 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtextureglyphcache_p.h @@ -0,0 +1,184 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTUREGLYPHCACHE_P_H +#define QTEXTUREGLYPHCACHE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtGui/private/qtguiglobal_p.h> +#include <qhash.h> +#include <qimage.h> +#include <qobject.h> +#include <qtransform.h> + +#include <private/qfontengineglyphcache_p.h> + +#ifndef QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH +#define QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH 256 +#endif + +struct glyph_metrics_t; +typedef unsigned int glyph_t; + + +QT_BEGIN_NAMESPACE + +class QTextItemInt; + +class Q_GUI_EXPORT QTextureGlyphCache : public QFontEngineGlyphCache +{ +public: + QTextureGlyphCache(QFontEngine::GlyphFormat format, const QTransform &matrix) + : QFontEngineGlyphCache(format, matrix), m_current_fontengine(0), + m_w(0), m_h(0), m_cx(0), m_cy(0), m_currentRowHeight(0) + { } + + ~QTextureGlyphCache(); + + struct GlyphAndSubPixelPosition + { + GlyphAndSubPixelPosition(glyph_t g, QFixed spp) : glyph(g), subPixelPosition(spp) {} + + bool operator==(const GlyphAndSubPixelPosition &other) const + { + return glyph == other.glyph && subPixelPosition == other.subPixelPosition; + } + + glyph_t glyph; + QFixed subPixelPosition; + }; + + struct Coord { + int x; + int y; + int w; + int h; + + int baseLineX; + int baseLineY; + + bool isNull() const + { + return w == 0 || h == 0; + } + }; + + bool populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs, + const QFixedPoint *positions); + bool hasPendingGlyphs() const { return !m_pendingGlyphs.isEmpty(); }; + void fillInPendingGlyphs(); + + virtual void createTextureData(int width, int height) = 0; + virtual void resizeTextureData(int width, int height) = 0; + virtual int glyphPadding() const { return 0; } + + virtual void beginFillTexture() { } + virtual void fillTexture(const Coord &coord, glyph_t glyph, QFixed subPixelPosition) = 0; + virtual void endFillTexture() { } + + inline void createCache(int width, int height) { + m_w = width; + m_h = height; + createTextureData(width, height); + } + + inline void resizeCache(int width, int height) + { + resizeTextureData(width, height); + m_w = width; + m_h = height; + } + + inline bool isNull() const { return m_h == 0; } + + QHash<GlyphAndSubPixelPosition, Coord> coords; + virtual int maxTextureWidth() const { return QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH; } + virtual int maxTextureHeight() const { return -1; } + + QImage textureMapForGlyph(glyph_t g, QFixed subPixelPosition) const; + +protected: + int calculateSubPixelPositionCount(glyph_t) const; + + QFontEngine *m_current_fontengine; + QHash<GlyphAndSubPixelPosition, Coord> m_pendingGlyphs; + + int m_w; // image width + int m_h; // image height + int m_cx; // current x + int m_cy; // current y + int m_currentRowHeight; // Height of last row +}; + +inline uint qHash(const QTextureGlyphCache::GlyphAndSubPixelPosition &g) +{ + return (g.glyph << 8) | (g.subPixelPosition * 10).round().toInt(); +} + + +class Q_GUI_EXPORT QImageTextureGlyphCache : public QTextureGlyphCache +{ +public: + QImageTextureGlyphCache(QFontEngine::GlyphFormat format, const QTransform &matrix) + : QTextureGlyphCache(format, matrix) { } + ~QImageTextureGlyphCache(); + + virtual void createTextureData(int width, int height) Q_DECL_OVERRIDE; + virtual void resizeTextureData(int width, int height) Q_DECL_OVERRIDE; + virtual void fillTexture(const Coord &c, glyph_t glyph, QFixed subPixelPosition) Q_DECL_OVERRIDE; + + inline const QImage &image() const { return m_image; } + +private: + QImage m_image; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtgui-config_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtgui-config_p.h new file mode 100644 index 000000000..636b76a60 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtgui-config_p.h @@ -0,0 +1,44 @@ +#define QT_FEATURE_xcb -1 +#define QT_FEATURE_accessibility_atspi_bridge -1 +#define QT_FEATURE_angle_d3d11_qdtd 1 +#define QT_FEATURE_direct2d 1 +#define QT_FEATURE_directfb -1 +#define QT_FEATURE_directwrite 1 +#define QT_FEATURE_directwrite2 1 +#define QT_FEATURE_egl 1 +#define QT_FEATURE_egl_x11 -1 +#define QT_FEATURE_eglfs -1 +#define QT_FEATURE_eglfs_brcm -1 +#define QT_FEATURE_eglfs_egldevice -1 +#define QT_FEATURE_eglfs_gbm -1 +#define QT_FEATURE_eglfs_mali -1 +#define QT_FEATURE_eglfs_openwfd -1 +#define QT_FEATURE_eglfs_rcar -1 +#define QT_FEATURE_eglfs_viv -1 +#define QT_FEATURE_eglfs_viv_wl -1 +#define QT_FEATURE_evdev -1 +#define QT_FEATURE_fontconfig -1 +#define QT_FEATURE_freetype 1 +#define QT_FEATURE_gif 1 +#define QT_FEATURE_harfbuzz 1 +#define QT_FEATURE_ico 1 +#define QT_FEATURE_integrityfb -1 +#define QT_FEATURE_integrityhid -1 +#define QT_FEATURE_jpeg 1 +#define QT_FEATURE_kms -1 +#define QT_FEATURE_libinput -1 +#define QT_FEATURE_libinput_axis_api -1 +#define QT_FEATURE_linuxfb -1 +#define QT_FEATURE_mirclient -1 +#define QT_FEATURE_mtdev -1 +#define QT_FEATURE_multiprocess 1 +#define QT_FEATURE_png 1 +#define QT_FEATURE_system_freetype -1 +#define QT_FEATURE_system_harfbuzz -1 +#define QT_FEATURE_system_jpeg -1 +#define QT_FEATURE_system_png -1 +#define QT_FEATURE_system_xcb -1 +#define QT_FEATURE_tslib -1 +#define QT_FEATURE_vnc -1 +#define QT_FEATURE_xkbcommon_evdev -1 +#define QT_FEATURE_xlib -1 diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtguiglobal_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtguiglobal_p.h new file mode 100644 index 000000000..d2c0b3c5d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtguiglobal_p.h @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTGUIGLOBAL_P_H +#define QTGUIGLOBAL_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 <QtGui/qtguiglobal.h> +#include <QtCore/private/qglobal_p.h> +#include <QtGui/private/qtgui-config_p.h> + +#endif // QTGUIGLOBAL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtouchdevice_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtouchdevice_p.h new file mode 100644 index 000000000..18d2af46a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtouchdevice_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTOUCHDEVICE_P_H +#define QTOUCHDEVICE_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 <QtGui/private/qtguiglobal_p.h> +#include <QtGui/qtouchdevice.h> + +QT_BEGIN_NAMESPACE + + +class QTouchDevicePrivate +{ +public: + QTouchDevicePrivate() + : type(QTouchDevice::TouchScreen), + caps(QTouchDevice::Position), + maxTouchPoints(1) + { + static quint8 nextId = 2; // device 0 is not used, device 1 is for mouse device + id = nextId++; + } + + QTouchDevice::DeviceType type; + QTouchDevice::Capabilities caps; + QString name; + int maxTouchPoints; + quint8 id; + + static void registerDevice(const QTouchDevice *dev); + static void unregisterDevice(const QTouchDevice *dev); + static bool isRegistered(const QTouchDevice *dev); + static QTouchDevicePrivate *get(QTouchDevice *q) { return q->d; } +}; + +QT_END_NAMESPACE + +#endif // QTOUCHDEVICE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtriangulatingstroker_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtriangulatingstroker_p.h new file mode 100644 index 000000000..2b0f08972 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtriangulatingstroker_p.h @@ -0,0 +1,171 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTRIANGULATINGSTROKER_P_H +#define QTRIANGULATINGSTROKER_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 <QtGui/private/qtguiglobal_p.h> +#include <private/qdatabuffer_p.h> +#include <qvarlengtharray.h> +#include <private/qvectorpath_p.h> +#include <private/qbezier_p.h> +#include <private/qnumeric_p.h> +#include <private/qmath_p.h> + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QTriangulatingStroker +{ +public: + QTriangulatingStroker() : m_vertices(0), m_cx(0), m_cy(0), m_nvx(0), m_nvy(0), m_width(1), m_miter_limit(2), + m_roundness(0), m_sin_theta(0), m_cos_theta(0), m_inv_scale(1), m_curvyness_mul(1), m_curvyness_add(0), + m_join_style(Qt::BevelJoin), m_cap_style(Qt::SquareCap) {} + + void process(const QVectorPath &path, const QPen &pen, const QRectF &clip, QPainter::RenderHints hints); + + inline int vertexCount() const { return m_vertices.size(); } + inline const float *vertices() const { return m_vertices.data(); } + + inline void setInvScale(qreal invScale) { m_inv_scale = invScale; } + +private: + inline void emitLineSegment(float x, float y, float nx, float ny); + void moveTo(const qreal *pts); + inline void lineTo(const qreal *pts); + void cubicTo(const qreal *pts); + void join(const qreal *pts); + inline void normalVector(float x1, float y1, float x2, float y2, float *nx, float *ny); + void endCap(const qreal *pts); + void arcPoints(float cx, float cy, float fromX, float fromY, float toX, float toY, QVarLengthArray<float> &points); + void endCapOrJoinClosed(const qreal *start, const qreal *cur, bool implicitClose, bool endsAtStart); + + + QDataBuffer<float> m_vertices; + + float m_cx, m_cy; // current points + float m_nvx, m_nvy; // normal vector... + float m_width; + qreal m_miter_limit; + + int m_roundness; // Number of line segments in a round join + qreal m_sin_theta; // sin(m_roundness / 360); + qreal m_cos_theta; // cos(m_roundness / 360); + qreal m_inv_scale; + float m_curvyness_mul; + float m_curvyness_add; + + Qt::PenJoinStyle m_join_style; + Qt::PenCapStyle m_cap_style; +}; + +class Q_GUI_EXPORT QDashedStrokeProcessor +{ +public: + QDashedStrokeProcessor(); + + void process(const QVectorPath &path, const QPen &pen, const QRectF &clip, QPainter::RenderHints hints); + + inline void addElement(QPainterPath::ElementType type, qreal x, qreal y) { + m_points.add(x); + m_points.add(y); + m_types.add(type); + } + + inline int elementCount() const { return m_types.size(); } + inline qreal *points() const { return m_points.data(); } + inline QPainterPath::ElementType *elementTypes() const { return m_types.data(); } + + inline void setInvScale(qreal invScale) { m_inv_scale = invScale; } + +private: + QDataBuffer<qreal> m_points; + QDataBuffer<QPainterPath::ElementType> m_types; + QDashStroker m_dash_stroker; + qreal m_inv_scale; +}; + +inline void QTriangulatingStroker::normalVector(float x1, float y1, float x2, float y2, + float *nx, float *ny) +{ + float dx = x2 - x1; + float dy = y2 - y1; + Q_ASSERT(dx != 0 || dy != 0); + + float pw; + + if (dx == 0) + pw = m_width / std::abs(dy); + else if (dy == 0) + pw = m_width / std::abs(dx); + else + pw = m_width / std::sqrt(dx*dx + dy*dy); + + *nx = -dy * pw; + *ny = dx * pw; +} + +inline void QTriangulatingStroker::emitLineSegment(float x, float y, float vx, float vy) +{ + m_vertices.add(x + vx); + m_vertices.add(y + vy); + m_vertices.add(x - vx); + m_vertices.add(y - vy); +} + +void QTriangulatingStroker::lineTo(const qreal *pts) +{ + emitLineSegment(pts[0], pts[1], m_nvx, m_nvy); + m_cx = pts[0]; + m_cy = pts[1]; +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtriangulator_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtriangulator_p.h new file mode 100644 index 000000000..8f043fc92 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qtriangulator_p.h @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTRIANGULATOR_P_H +#define QTRIANGULATOR_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 <QtGui/private/qtguiglobal_p.h> +#include <QtCore/qvector.h> +#include <QtGui/private/qvectorpath_p.h> + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QVertexIndexVector +{ +public: + enum Type { + UnsignedInt, + UnsignedShort + }; + + inline Type type() const { return t; } + + inline void setDataUint(const QVector<quint32> &data) + { + t = UnsignedInt; + indices32 = data; + } + + inline void setDataUshort(const QVector<quint16> &data) + { + t = UnsignedShort; + indices16 = data; + } + + inline const void* data() const + { + if (t == UnsignedInt) + return indices32.data(); + return indices16.data(); + } + + inline int size() const + { + if (t == UnsignedInt) + return indices32.size(); + return indices16.size(); + } + + inline QVertexIndexVector &operator = (const QVertexIndexVector &other) + { + if (t == UnsignedInt) + indices32 = other.indices32; + else + indices16 = other.indices16; + + t = other.t; + return *this; + } + +private: + + Type t; + QVector<quint32> indices32; + QVector<quint16> indices16; +}; + +struct Q_GUI_EXPORT QTriangleSet +{ + inline QTriangleSet() { } + inline QTriangleSet(const QTriangleSet &other) : vertices(other.vertices), indices(other.indices) { } + QTriangleSet &operator = (const QTriangleSet &other) {vertices = other.vertices; indices = other.indices; return *this;} + + // The vertices of a triangle are given by: (x[i[n]], y[i[n]]), (x[j[n]], y[j[n]]), (x[k[n]], y[k[n]]), n = 0, 1, ... + QVector<qreal> vertices; // [x[0], y[0], x[1], y[1], x[2], ...] + QVertexIndexVector indices; // [i[0], j[0], k[0], i[1], j[1], k[1], i[2], ...] +}; + +struct Q_GUI_EXPORT QPolylineSet +{ + inline QPolylineSet() { } + inline QPolylineSet(const QPolylineSet &other) : vertices(other.vertices), indices(other.indices) { } + QPolylineSet &operator = (const QPolylineSet &other) {vertices = other.vertices; indices = other.indices; return *this;} + + QVector<qreal> vertices; // [x[0], y[0], x[1], y[1], x[2], ...] + QVertexIndexVector indices; // End of polyline is marked with -1. +}; + +// The vertex coordinates of the returned triangle set will be rounded to a grid with a mesh size +// of 1/32. The polygon is first transformed, then scaled by 32, the coordinates are rounded to +// integers, the polygon is triangulated, and then scaled back by 1/32. +// 'hint' should be a combination of QVectorPath::Hints. +// 'lod' is the level of detail. Default is 1. Curves are split into more lines when 'lod' is higher. +QTriangleSet Q_GUI_EXPORT qTriangulate(const qreal *polygon, int count, + uint hint = QVectorPath::PolygonHint | QVectorPath::OddEvenFill, + const QTransform &matrix = QTransform(), + bool allowUintIndices = true); +QTriangleSet Q_GUI_EXPORT qTriangulate(const QVectorPath &path, const QTransform &matrix = QTransform(), + qreal lod = 1, bool allowUintIndices = true); +QTriangleSet Q_GUI_EXPORT qTriangulate(const QPainterPath &path, const QTransform &matrix = QTransform(), + qreal lod = 1, bool allowUintIndices = true); +QPolylineSet qPolyline(const QVectorPath &path, const QTransform &matrix = QTransform(), + qreal lod = 1, bool allowUintIndices = true); +QPolylineSet Q_GUI_EXPORT qPolyline(const QPainterPath &path, const QTransform &matrix = QTransform(), + qreal lod = 1, bool allowUintIndices = true); + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qvectorpath_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qvectorpath_p.h new file mode 100644 index 000000000..d1b08ed42 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qvectorpath_p.h @@ -0,0 +1,213 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVECTORPATH_P_H +#define QVECTORPATH_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 <QtGui/private/qtguiglobal_p.h> +#include <QtGui/qpaintengine.h> + +#include <private/qpaintengine_p.h> +#include <private/qstroker_p.h> +#include <private/qpainter_p.h> + + +QT_BEGIN_NAMESPACE + + +class QPaintEngineEx; + +typedef void (*qvectorpath_cache_cleanup)(QPaintEngineEx *engine, void *data); + +struct QRealRect { + qreal x1, y1, x2, y2; +}; + +class Q_GUI_EXPORT QVectorPath +{ +public: + enum Hint { + // Shape hints, in 0x000000ff, access using shape() + AreaShapeMask = 0x0001, // shape covers an area + NonConvexShapeMask = 0x0002, // shape is not convex + CurvedShapeMask = 0x0004, // shape contains curves... + LinesShapeMask = 0x0008, + RectangleShapeMask = 0x0010, + ShapeMask = 0x001f, + + // Shape hints merged into basic shapes.. + LinesHint = LinesShapeMask, + RectangleHint = AreaShapeMask | RectangleShapeMask, + EllipseHint = AreaShapeMask | CurvedShapeMask, + ConvexPolygonHint = AreaShapeMask, + PolygonHint = AreaShapeMask | NonConvexShapeMask, + RoundedRectHint = AreaShapeMask | CurvedShapeMask, + ArbitraryShapeHint = AreaShapeMask | NonConvexShapeMask | CurvedShapeMask, + + // Other hints + IsCachedHint = 0x0100, // Set if the cache hint is set + ShouldUseCacheHint = 0x0200, // Set if the path should be cached when possible.. + ControlPointRect = 0x0400, // Set if the control point rect has been calculated... + + // Shape rendering specifiers... + OddEvenFill = 0x1000, + WindingFill = 0x2000, + ImplicitClose = 0x4000 + }; + + // ### Falcon: introduca a struct XY for points so lars is not so confused... + QVectorPath(const qreal *points, + int count, + const QPainterPath::ElementType *elements = 0, + uint hints = ArbitraryShapeHint) + : m_elements(elements), + m_points(points), + m_count(count), + m_hints(hints) + { + } + + ~QVectorPath(); + + QRectF controlPointRect() const; + + inline Hint shape() const { return (Hint) (m_hints & ShapeMask); } + inline bool isConvex() const { return (m_hints & NonConvexShapeMask) == 0; } + inline bool isCurved() const { return m_hints & CurvedShapeMask; } + + inline bool isCacheable() const { return m_hints & ShouldUseCacheHint; } + inline bool hasImplicitClose() const { return m_hints & ImplicitClose; } + inline bool hasWindingFill() const { return m_hints & WindingFill; } + + inline void makeCacheable() const { m_hints |= ShouldUseCacheHint; m_cache = 0; } + inline uint hints() const { return m_hints; } + + inline const QPainterPath::ElementType *elements() const { return m_elements; } + inline const qreal *points() const { return m_points; } + inline bool isEmpty() const { return m_points == 0; } + + inline int elementCount() const { return m_count; } + inline const QPainterPath convertToPainterPath() const; + + static inline uint polygonFlags(QPaintEngine::PolygonDrawMode mode) + { + switch (mode) { + case QPaintEngine::ConvexMode: return ConvexPolygonHint | ImplicitClose; + case QPaintEngine::OddEvenMode: return PolygonHint | OddEvenFill | ImplicitClose; + case QPaintEngine::WindingMode: return PolygonHint | WindingFill | ImplicitClose; + case QPaintEngine::PolylineMode: return PolygonHint; + default: return 0; + } + } + + struct CacheEntry { + QPaintEngineEx *engine; + void *data; + qvectorpath_cache_cleanup cleanup; + CacheEntry *next; + }; + + CacheEntry *addCacheData(QPaintEngineEx *engine, void *data, qvectorpath_cache_cleanup cleanup) const; + inline CacheEntry *lookupCacheData(QPaintEngineEx *engine) const { + Q_ASSERT(m_hints & ShouldUseCacheHint); + CacheEntry *e = m_cache; + while (e) { + if (e->engine == engine) + return e; + e = e->next; + } + return 0; + } + + template <typename T> static inline bool isRect(const T *pts, int elementCount) { + return (elementCount == 5 // 5-point polygon, check for closed rect + && pts[0] == pts[8] && pts[1] == pts[9] // last point == first point + && pts[0] == pts[6] && pts[2] == pts[4] // x values equal + && pts[1] == pts[3] && pts[5] == pts[7] // y values equal... + && pts[0] < pts[4] && pts[1] < pts[5] + ) || + (elementCount == 4 // 4-point polygon, check for unclosed rect + && pts[0] == pts[6] && pts[2] == pts[4] // x values equal + && pts[1] == pts[3] && pts[5] == pts[7] // y values equal... + && pts[0] < pts[4] && pts[1] < pts[5] + ); + } + + inline bool isRect() const + { + const QPainterPath::ElementType * const types = elements(); + + return (shape() == QVectorPath::RectangleHint) + || (isRect(points(), elementCount()) + && (!types || (types[0] == QPainterPath::MoveToElement + && types[1] == QPainterPath::LineToElement + && types[2] == QPainterPath::LineToElement + && types[3] == QPainterPath::LineToElement))); + } + + +private: + Q_DISABLE_COPY(QVectorPath) + + const QPainterPath::ElementType *m_elements; + const qreal *m_points; + const int m_count; + + mutable uint m_hints; + mutable QRealRect m_cp_rect; + + mutable CacheEntry *m_cache; +}; + +Q_GUI_EXPORT const QVectorPath &qtVectorPathForPath(const QPainterPath &path); + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qwindow_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qwindow_p.h new file mode 100644 index 000000000..568aa1e2f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qwindow_p.h @@ -0,0 +1,204 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOW_P_H +#define QWINDOW_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 <QtGui/private/qtguiglobal_p.h> +#include <QtGui/qscreen.h> +#include <QtGui/qwindow.h> +#include <qpa/qplatformwindow.h> + +#include <QtCore/private/qobject_p.h> +#include <QtCore/qelapsedtimer.h> +#include <QtGui/QIcon> + +QT_BEGIN_NAMESPACE + +#define QWINDOWSIZE_MAX ((1<<24)-1) + +class Q_GUI_EXPORT QWindowPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QWindow) + +public: + enum PositionPolicy + { + WindowFrameInclusive, + WindowFrameExclusive + }; + + QWindowPrivate() + : QObjectPrivate() + , surfaceType(QWindow::RasterSurface) + , windowFlags(Qt::Window) + , parentWindow(0) + , platformWindow(0) + , visible(false) + , visibilityOnDestroy(false) + , exposed(false) + , windowState(Qt::WindowNoState) + , visibility(QWindow::Hidden) + , resizeEventPending(true) + , receivedExpose(false) + , positionPolicy(WindowFrameExclusive) + , positionAutomatic(true) + , contentOrientation(Qt::PrimaryOrientation) + , opacity(qreal(1.0)) + , minimumSize(0, 0) + , maximumSize(QWINDOWSIZE_MAX, QWINDOWSIZE_MAX) + , modality(Qt::NonModal) + , blockedByModalWindow(false) + , updateRequestPending(false) + , updateTimer(0) + , transientParent(0) + , topLevelScreen(0) +#ifndef QT_NO_CURSOR + , cursor(Qt::ArrowCursor) + , hasCursor(false) +#endif + , compositing(false) + { + isWindow = true; + } + + ~QWindowPrivate() + { + } + + void init(QScreen *targetScreen = nullptr); + + void maybeQuitOnLastWindowClosed(); +#ifndef QT_NO_CURSOR + void setCursor(const QCursor *c = 0); + bool applyCursor(); +#endif + + void deliverUpdateRequest(); + + QPoint globalPosition() const; + + QWindow *topLevelWindow() const; + + virtual QWindow *eventReceiver() { Q_Q(QWindow); return q; } + + void updateVisibility(); + void _q_clearAlert(); + + enum SiblingPosition { PositionTop, PositionBottom }; + void updateSiblingPosition(SiblingPosition); + + bool windowRecreationRequired(QScreen *newScreen) const; + void create(bool recursive, WId nativeHandle = 0); + void destroy(); + void setTopLevelScreen(QScreen *newScreen, bool recreate); + void connectToScreen(QScreen *topLevelScreen); + void disconnectFromScreen(); + void emitScreenChangedRecursion(QScreen *newScreen); + QScreen *screenForGeometry(const QRect &rect); + + virtual void clearFocusObject(); + virtual QRectF closestAcceptableGeometry(const QRectF &rect) const; + + virtual void processSafeAreaMarginsChanged() {}; + + bool isPopup() const { return (windowFlags & Qt::WindowType_Mask) == Qt::Popup; } + + static QWindowPrivate *get(QWindow *window) { return window->d_func(); } + + QWindow::SurfaceType surfaceType; + Qt::WindowFlags windowFlags; + QWindow *parentWindow; + QPlatformWindow *platformWindow; + bool visible; + bool visibilityOnDestroy; + bool exposed; + QSurfaceFormat requestedFormat; + QString windowTitle; + QString windowFilePath; + 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; + QSize baseSize; + QSize sizeIncrement; + + Qt::WindowModality modality; + bool blockedByModalWindow; + + bool updateRequestPending; + int updateTimer; + + QPointer<QWindow> transientParent; + QPointer<QScreen> topLevelScreen; + +#ifndef QT_NO_CURSOR + QCursor cursor; + bool hasCursor; +#endif + + bool compositing; + QElapsedTimer lastComposeTime; +}; + + +QT_END_NAMESPACE + +#endif // QWINDOW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qxbmhandler_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qxbmhandler_p.h new file mode 100644 index 000000000..26439af52 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qxbmhandler_p.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QXBMHANDLER_P_H +#define QXBMHANDLER_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 <QtGui/private/qtguiglobal_p.h> +#include "QtGui/qimageiohandler.h" + +#ifndef QT_NO_IMAGEFORMAT_XBM + +QT_BEGIN_NAMESPACE + +class QXbmHandler : public QImageIOHandler +{ +public: + QXbmHandler(); + bool canRead() const override; + bool read(QImage *image) override; + bool write(const QImage &image) override; + + QByteArray name() const override; + + static bool canRead(QIODevice *device); + + QVariant option(ImageOption option) const override; + void setOption(ImageOption option, const QVariant &value) override; + bool supportsOption(ImageOption option) const override; + +private: + bool readHeader(); + enum State { + Ready, + ReadHeader, + Error + }; + State state; + int width; + int height; + QString fileName; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_IMAGEFORMAT_XBM + +#endif // QXBMHANDLER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qxpmhandler_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qxpmhandler_p.h new file mode 100644 index 000000000..f118bf230 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qxpmhandler_p.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QXPMHANDLER_P_H +#define QXPMHANDLER_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 <QtGui/private/qtguiglobal_p.h> +#include "QtGui/qimageiohandler.h" + +#ifndef QT_NO_IMAGEFORMAT_XPM + +QT_BEGIN_NAMESPACE + +class QXpmHandler : public QImageIOHandler +{ +public: + QXpmHandler(); + bool canRead() const override; + bool read(QImage *image) override; + bool write(const QImage &image) override; + + static bool canRead(QIODevice *device); + + QByteArray name() const override; + + QVariant option(ImageOption option) const override; + void setOption(ImageOption option, const QVariant &value) override; + bool supportsOption(ImageOption option) const override; + +private: + bool readHeader(); + bool readImage(QImage *image); + enum State { + Ready, + ReadHeader, + Error + }; + State state; + int width; + int height; + int ncols; + int cpp; + QByteArray buffer; + int index; + QString fileName; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_IMAGEFORMAT_XPM + +#endif // QXPMHANDLER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qzipreader_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qzipreader_p.h new file mode 100644 index 000000000..eed6ee6a6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qzipreader_p.h @@ -0,0 +1,127 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QZIPREADER_H +#define QZIPREADER_H + +#include <QtGui/private/qtguiglobal_p.h> +#include <QtCore/qglobal.h> + +#ifndef QT_NO_TEXTODFWRITER + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QZipReader class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtCore/qdatetime.h> +#include <QtCore/qfile.h> +#include <QtCore/qstring.h> + +QT_BEGIN_NAMESPACE + +class QZipReaderPrivate; + +class Q_GUI_EXPORT QZipReader +{ +public: + explicit QZipReader(const QString &fileName, QIODevice::OpenMode mode = QIODevice::ReadOnly ); + + explicit QZipReader(QIODevice *device); + ~QZipReader(); + + QIODevice* device() const; + + bool isReadable() const; + bool exists() const; + + struct FileInfo + { + FileInfo() Q_DECL_NOTHROW + : isDir(false), isFile(false), isSymLink(false), crc(0), size(0) + {} + + bool isValid() const Q_DECL_NOTHROW { return isDir || isFile || isSymLink; } + + QString filePath; + uint isDir : 1; + uint isFile : 1; + uint isSymLink : 1; + QFile::Permissions permissions; + uint crc; + qint64 size; + QDateTime lastModified; + }; + + QVector<FileInfo> fileInfoList() const; + int count() const; + + FileInfo entryInfoAt(int index) const; + QByteArray fileData(const QString &fileName) const; + bool extractAll(const QString &destinationDir) const; + + enum Status { + NoError, + FileReadError, + FileOpenError, + FilePermissionsError, + FileError + }; + + Status status() const; + + void close(); + +private: + QZipReaderPrivate *d; + Q_DISABLE_COPY(QZipReader) +}; +Q_DECLARE_TYPEINFO(QZipReader::FileInfo, Q_MOVABLE_TYPE); +Q_DECLARE_TYPEINFO(QZipReader::Status, Q_PRIMITIVE_TYPE); + +QT_END_NAMESPACE + +#endif // QT_NO_TEXTODFWRITER +#endif // QZIPREADER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qzipwriter_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qzipwriter_p.h new file mode 100644 index 000000000..433bbab31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/private/qzipwriter_p.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QZIPWRITER_H +#define QZIPWRITER_H + +#include <QtGui/private/qtguiglobal_p.h> + +#ifndef QT_NO_TEXTODFWRITER + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QZipWriter class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtCore/qstring.h> +#include <QtCore/qfile.h> + +QT_BEGIN_NAMESPACE + +class QZipWriterPrivate; + + +class Q_GUI_EXPORT QZipWriter +{ +public: + explicit QZipWriter(const QString &fileName, QIODevice::OpenMode mode = (QIODevice::WriteOnly | QIODevice::Truncate) ); + + explicit QZipWriter(QIODevice *device); + ~QZipWriter(); + + QIODevice* device() const; + + bool isWritable() const; + bool exists() const; + + enum Status { + NoError, + FileWriteError, + FileOpenError, + FilePermissionsError, + FileError + }; + + Status status() const; + + enum CompressionPolicy { + AlwaysCompress, + NeverCompress, + AutoCompress + }; + + void setCompressionPolicy(CompressionPolicy policy); + CompressionPolicy compressionPolicy() const; + + void setCreationPermissions(QFile::Permissions permissions); + QFile::Permissions creationPermissions() const; + + void addFile(const QString &fileName, const QByteArray &data); + + void addFile(const QString &fileName, QIODevice *device); + + void addDirectory(const QString &dirName); + + void addSymLink(const QString &fileName, const QString &destination); + + void close(); +private: + QZipWriterPrivate *d; + Q_DISABLE_COPY(QZipWriter) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_TEXTODFWRITER +#endif // QZIPWRITER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformaccessibility.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformaccessibility.h new file mode 100644 index 000000000..5d668c2bd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformaccessibility.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QPLATFORMACCESSIBILITY_H +#define QPLATFORMACCESSIBILITY_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 <QtGui/qtguiglobal.h> + +#ifndef QT_NO_ACCESSIBILITY + +#include <QtCore/qobject.h> +#include <QtGui/qaccessible.h> + +QT_BEGIN_NAMESPACE + + +class Q_GUI_EXPORT QPlatformAccessibility +{ +public: + QPlatformAccessibility(); + + virtual ~QPlatformAccessibility(); + virtual void notifyAccessibilityUpdate(QAccessibleEvent *event); + virtual void setRootObject(QObject *o); + virtual void initialize(); + virtual void cleanup(); + + inline bool isActive() const { return m_active; } + void setActive(bool active); + +private: + bool m_active; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_ACCESSIBILITY + +#endif // QPLATFORMACCESSIBILITY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformbackingstore.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformbackingstore.h new file mode 100644 index 000000000..ec56aaa00 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformbackingstore.h @@ -0,0 +1,160 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMBACKINGSTORE_H +#define QPLATFORMBACKINGSTORE_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 <QtGui/qtguiglobal.h> +#include <QtCore/qrect.h> +#include <QtCore/qobject.h> + +#include <QtGui/qwindow.h> +#include <QtGui/qregion.h> +#include <QtGui/qopengl.h> + +QT_BEGIN_NAMESPACE + + +class QRegion; +class QRect; +class QPoint; +class QImage; +class QPlatformBackingStorePrivate; +class QPlatformWindow; +class QPlatformTextureList; +class QPlatformTextureListPrivate; +class QOpenGLContext; +class QPlatformGraphicsBuffer; + +#ifndef QT_NO_OPENGL +class Q_GUI_EXPORT QPlatformTextureList : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPlatformTextureList) +public: + enum Flag { + StacksOnTop = 0x01 + }; + Q_DECLARE_FLAGS(Flags, Flag) + + explicit QPlatformTextureList(QObject *parent = 0); + ~QPlatformTextureList(); + + int count() const; + bool isEmpty() const { return count() == 0; } + GLuint textureId(int index) const; + QRect geometry(int index) const; + QRect clipRect(int index) const; + void *source(int index); + Flags flags(int index) const; + void lock(bool on); + bool isLocked() const; + + void appendTexture(void *source, GLuint textureId, const QRect &geometry, + const QRect &clipRect = QRect(), Flags flags = 0); + void clear(); + + Q_SIGNALS: + void locked(bool); +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QPlatformTextureList::Flags) +#endif + +class Q_GUI_EXPORT QPlatformBackingStore +{ +public: + explicit QPlatformBackingStore(QWindow *window); + virtual ~QPlatformBackingStore(); + + QWindow *window() const; + QBackingStore *backingStore() const; + + virtual QPaintDevice *paintDevice() = 0; + + // 'window' can be a child window, in which case 'region' is in child window coordinates and + // offset is the (child) window's offset in relation to the window surface. + virtual void flush(QWindow *window, const QRegion ®ion, const QPoint &offset) = 0; +#ifndef QT_NO_OPENGL + virtual void composeAndFlush(QWindow *window, const QRegion ®ion, const QPoint &offset, + QPlatformTextureList *textures, QOpenGLContext *context, + bool translucentBackground); +#endif + virtual QImage toImage() const; +#ifndef QT_NO_OPENGL + enum TextureFlag { + TextureSwizzle = 0x01, + TextureFlip = 0x02, + TexturePremultiplied = 0x04, + }; + Q_DECLARE_FLAGS(TextureFlags, TextureFlag) + virtual GLuint toTexture(const QRegion &dirtyRegion, QSize *textureSize, TextureFlags *flags) const; +#endif + + virtual QPlatformGraphicsBuffer *graphicsBuffer() const; + + virtual void resize(const QSize &size, const QRegion &staticContents) = 0; + + virtual bool scroll(const QRegion &area, int dx, int dy); + + virtual void beginPaint(const QRegion &); + virtual void endPaint(); + +private: + QPlatformBackingStorePrivate *d_ptr; + + void setBackingStore(QBackingStore *); + friend class QBackingStore; +}; + +#ifndef QT_NO_OPENGL +Q_DECLARE_OPERATORS_FOR_FLAGS(QPlatformBackingStore::TextureFlags) +#endif + +QT_END_NAMESPACE + +#endif // QPLATFORMBACKINGSTORE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformclipboard.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformclipboard.h new file mode 100644 index 000000000..60733b0a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformclipboard.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMCLIPBOARD_H +#define QPLATFORMCLIPBOARD_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 <QtGui/qtguiglobal.h> + +#ifndef QT_NO_CLIPBOARD + +#include <QtGui/QClipboard> + +QT_BEGIN_NAMESPACE + + +class Q_GUI_EXPORT QPlatformClipboard +{ +public: + virtual ~QPlatformClipboard(); + + 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; + virtual bool ownsMode(QClipboard::Mode mode) const; + void emitChanged(QClipboard::Mode mode); +}; + +QT_END_NAMESPACE + +#endif // QT_NO_CLIPBOARD + +#endif //QPLATFORMCLIPBOARD_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformcursor.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformcursor.h new file mode 100644 index 000000000..dddd9e583 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformcursor.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QPLATFORMCURSOR_H +#define QPLATFORMCURSOR_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 <QtGui/qtguiglobal.h> +#include <QtCore/QList> +#include <QtGui/QImage> +#include <QtGui/QMouseEvent> +#include <QtCore/QWeakPointer> +#include <QtCore/QObject> +#include <qpa/qplatformscreen.h> +#include <QtGui/QCursor> + +QT_BEGIN_NAMESPACE + + +// Cursor graphics management +class Q_GUI_EXPORT QPlatformCursorImage { +public: + QPlatformCursorImage(const uchar *data, const uchar *mask, int width, int height, int hotX, int hotY) + { set(data, mask, width, height, hotX, hotY); } + QImage * image() { return &cursorImage; } + QPoint hotspot() const { return hot; } + void set(const uchar *data, const uchar *mask, int width, int height, int hotX, int hotY); + void set(const QImage &image, int hx, int hy); + void set(Qt::CursorShape); +private: + static void createSystemCursor(int id); + QImage cursorImage; + QPoint hot; +}; + +class Q_GUI_EXPORT QPlatformCursor : public QObject { +public: + QPlatformCursor(); + + // input methods + virtual void pointerEvent(const QMouseEvent & event) { Q_UNUSED(event); } +#ifndef QT_NO_CURSOR + virtual void changeCursor(QCursor * windowCursor, QWindow * window) = 0; +#endif + virtual QPoint pos() const; + virtual void setPos(const QPoint &pos); + +private: + friend void qt_qpa_set_cursor(QWidget * w, bool force); + friend class QApplicationPrivate; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMCURSOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformdialoghelper.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformdialoghelper.h new file mode 100644 index 000000000..ed88c19c8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformdialoghelper.h @@ -0,0 +1,481 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDIALOGHELPER_H +#define QPLATFORMDIALOGHELPER_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 <QtGui/qtguiglobal.h> +#include <QtCore/QtGlobal> +#include <QtCore/QObject> +#include <QtCore/QList> +#include <QtCore/QSharedDataPointer> +#include <QtCore/QSharedPointer> +#include <QtCore/QDir> +#include <QtCore/QUrl> +#include <QtGui/QRgb> + +QT_BEGIN_NAMESPACE + + +class QString; +class QColor; +class QFont; +class QWindow; +class QVariant; +class QUrl; +class QColorDialogOptionsPrivate; +class QFontDialogOptionsPrivate; +class QFileDialogOptionsPrivate; +class QMessageDialogOptionsPrivate; + +#define QPLATFORMDIALOGHELPERS_HAS_CREATE + +class Q_GUI_EXPORT QPlatformDialogHelper : public QObject +{ + Q_OBJECT +public: + enum StyleHint { + }; + enum DialogCode { Rejected, Accepted }; + + enum StandardButton { + // keep this in sync with QDialogButtonBox::StandardButton and QMessageBox::StandardButton + NoButton = 0x00000000, + Ok = 0x00000400, + Save = 0x00000800, + SaveAll = 0x00001000, + Open = 0x00002000, + Yes = 0x00004000, + YesToAll = 0x00008000, + No = 0x00010000, + NoToAll = 0x00020000, + Abort = 0x00040000, + Retry = 0x00080000, + Ignore = 0x00100000, + Close = 0x00200000, + Cancel = 0x00400000, + Discard = 0x00800000, + Help = 0x01000000, + Apply = 0x02000000, + Reset = 0x04000000, + RestoreDefaults = 0x08000000, + + + FirstButton = Ok, // internal + LastButton = RestoreDefaults, // internal + LowestBit = 10, // internal: log2(FirstButton) + HighestBit = 27 // internal: log2(LastButton) + }; + + Q_DECLARE_FLAGS(StandardButtons, StandardButton) + Q_FLAG(StandardButtons) + + enum ButtonRole { + // keep this in sync with QDialogButtonBox::ButtonRole and QMessageBox::ButtonRole + // TODO Qt 6: make the enum copies explicit, and make InvalidRole == 0 so that + // AcceptRole can be or'ed with flags, and EOL can be the same as InvalidRole (null-termination) + InvalidRole = -1, + AcceptRole, + RejectRole, + DestructiveRole, + ActionRole, + HelpRole, + YesRole, + NoRole, + ResetRole, + ApplyRole, + + NRoles, + + RoleMask = 0x0FFFFFFF, + AlternateRole = 0x10000000, + Stretch = 0x20000000, + Reverse = 0x40000000, + EOL = InvalidRole + }; + Q_ENUM(ButtonRole) + + enum ButtonLayout { + // keep this in sync with QDialogButtonBox::ButtonLayout and QMessageBox::ButtonLayout + UnknownLayout = -1, + WinLayout, + MacLayout, + KdeLayout, + GnomeLayout, + MacModelessLayout + }; + + QPlatformDialogHelper(); + virtual ~QPlatformDialogHelper(); + + virtual QVariant styleHint(StyleHint hint) const; + + virtual void exec() = 0; + virtual bool show(Qt::WindowFlags windowFlags, + Qt::WindowModality windowModality, + QWindow *parent) = 0; + virtual void hide() = 0; + + static QVariant defaultStyleHint(QPlatformDialogHelper::StyleHint hint); + + static const int *buttonLayout(Qt::Orientation orientation = Qt::Horizontal, ButtonLayout policy = UnknownLayout); + static ButtonRole buttonRole(StandardButton button); + +Q_SIGNALS: + void accept(); + void reject(); +}; + +QT_END_NAMESPACE +Q_DECLARE_METATYPE(QPlatformDialogHelper::StandardButton) +Q_DECLARE_METATYPE(QPlatformDialogHelper::ButtonRole) +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QColorDialogOptions +{ + Q_GADGET + Q_DISABLE_COPY(QColorDialogOptions) +protected: + explicit QColorDialogOptions(QColorDialogOptionsPrivate *dd); + ~QColorDialogOptions(); +public: + enum ColorDialogOption { + ShowAlphaChannel = 0x00000001, + NoButtons = 0x00000002, + DontUseNativeDialog = 0x00000004 + }; + + Q_DECLARE_FLAGS(ColorDialogOptions, ColorDialogOption) + Q_FLAG(ColorDialogOptions) + + static QSharedPointer<QColorDialogOptions> create(); + QSharedPointer<QColorDialogOptions> clone() const; + + QString windowTitle() const; + void setWindowTitle(const QString &); + + void setOption(ColorDialogOption option, bool on = true); + bool testOption(ColorDialogOption option) const; + void setOptions(ColorDialogOptions options); + ColorDialogOptions options() const; + + static int customColorCount(); + static QRgb customColor(int index); + static QRgb *customColors(); + static void setCustomColor(int index, QRgb color); + + static QRgb *standardColors(); + static QRgb standardColor(int index); + static void setStandardColor(int index, QRgb color); + +private: + QColorDialogOptionsPrivate *d; +}; + +class Q_GUI_EXPORT QPlatformColorDialogHelper : public QPlatformDialogHelper +{ + Q_OBJECT +public: + const QSharedPointer<QColorDialogOptions> &options() const; + void setOptions(const QSharedPointer<QColorDialogOptions> &options); + + virtual void setCurrentColor(const QColor &) = 0; + virtual QColor currentColor() const = 0; + +Q_SIGNALS: + void currentColorChanged(const QColor &color); + void colorSelected(const QColor &color); + +private: + QSharedPointer<QColorDialogOptions> m_options; +}; + +class Q_GUI_EXPORT QFontDialogOptions +{ + Q_GADGET + Q_DISABLE_COPY(QFontDialogOptions) +protected: + explicit QFontDialogOptions(QFontDialogOptionsPrivate *dd); + ~QFontDialogOptions(); + +public: + enum FontDialogOption { + NoButtons = 0x00000001, + DontUseNativeDialog = 0x00000002, + ScalableFonts = 0x00000004, + NonScalableFonts = 0x00000008, + MonospacedFonts = 0x00000010, + ProportionalFonts = 0x00000020 + }; + + Q_DECLARE_FLAGS(FontDialogOptions, FontDialogOption) + Q_FLAG(FontDialogOptions) + + static QSharedPointer<QFontDialogOptions> create(); + QSharedPointer<QFontDialogOptions> clone() const; + + QString windowTitle() const; + void setWindowTitle(const QString &); + + void setOption(FontDialogOption option, bool on = true); + bool testOption(FontDialogOption option) const; + void setOptions(FontDialogOptions options); + FontDialogOptions options() const; + +private: + QFontDialogOptionsPrivate *d; +}; + +class Q_GUI_EXPORT QPlatformFontDialogHelper : public QPlatformDialogHelper +{ + Q_OBJECT +public: + virtual void setCurrentFont(const QFont &) = 0; + virtual QFont currentFont() const = 0; + + const QSharedPointer<QFontDialogOptions> &options() const; + void setOptions(const QSharedPointer<QFontDialogOptions> &options); + +Q_SIGNALS: + void currentFontChanged(const QFont &font); + void fontSelected(const QFont &font); + +private: + QSharedPointer<QFontDialogOptions> m_options; +}; + +class Q_GUI_EXPORT QFileDialogOptions +{ + Q_GADGET + Q_DISABLE_COPY(QFileDialogOptions) +protected: + QFileDialogOptions(QFileDialogOptionsPrivate *dd); + ~QFileDialogOptions(); + +public: + enum ViewMode { Detail, List }; + Q_ENUM(ViewMode) + + enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly }; + Q_ENUM(FileMode) + + enum AcceptMode { AcceptOpen, AcceptSave }; + Q_ENUM(AcceptMode) + + enum DialogLabel { LookIn, FileName, FileType, Accept, Reject, DialogLabelCount }; + Q_ENUM(DialogLabel) + + enum FileDialogOption + { + ShowDirsOnly = 0x00000001, + DontResolveSymlinks = 0x00000002, + DontConfirmOverwrite = 0x00000004, + DontUseSheet = 0x00000008, + DontUseNativeDialog = 0x00000010, + ReadOnly = 0x00000020, + HideNameFilterDetails = 0x00000040, + DontUseCustomDirectoryIcons = 0x00000080 + }; + Q_DECLARE_FLAGS(FileDialogOptions, FileDialogOption) + Q_FLAG(FileDialogOptions) + + static QSharedPointer<QFileDialogOptions> create(); + QSharedPointer<QFileDialogOptions> clone() const; + + QString windowTitle() const; + void setWindowTitle(const QString &); + + void setOption(FileDialogOption option, bool on = true); + bool testOption(FileDialogOption option) const; + void setOptions(FileDialogOptions options); + FileDialogOptions options() const; + + QDir::Filters filter() const; + void setFilter(QDir::Filters filters); + + void setViewMode(ViewMode mode); + ViewMode viewMode() const; + + void setFileMode(FileMode mode); + FileMode fileMode() const; + + void setAcceptMode(AcceptMode mode); + AcceptMode acceptMode() const; + + void setSidebarUrls(const QList<QUrl> &urls); + QList<QUrl> sidebarUrls() const; + + bool useDefaultNameFilters() const; + void setUseDefaultNameFilters(bool d); + + void setNameFilters(const QStringList &filters); + QStringList nameFilters() const; + + void setMimeTypeFilters(const QStringList &filters); + QStringList mimeTypeFilters() const; + + void setDefaultSuffix(const QString &suffix); + QString defaultSuffix() const; + + void setHistory(const QStringList &paths); + QStringList history() const; + + void setLabelText(DialogLabel label, const QString &text); + QString labelText(DialogLabel label) const; + bool isLabelExplicitlySet(DialogLabel label); + + QUrl initialDirectory() const; + void setInitialDirectory(const QUrl &); + + QString initiallySelectedMimeTypeFilter() const; + void setInitiallySelectedMimeTypeFilter(const QString &); + + QString initiallySelectedNameFilter() const; + void setInitiallySelectedNameFilter(const QString &); + + QList<QUrl> initiallySelectedFiles() const; + void setInitiallySelectedFiles(const QList<QUrl> &); + + void setSupportedSchemes(const QStringList &schemes); + QStringList supportedSchemes() const; + + static QString defaultNameFilterString(); + +private: + QFileDialogOptionsPrivate *d; +}; + +class Q_GUI_EXPORT QPlatformFileDialogHelper : public QPlatformDialogHelper +{ + Q_OBJECT +public: + virtual bool defaultNameFilterDisables() const = 0; + virtual void setDirectory(const QUrl &directory) = 0; + virtual QUrl directory() const = 0; + virtual void selectFile(const QUrl &filename) = 0; + virtual QList<QUrl> selectedFiles() const = 0; + virtual void setFilter() = 0; + virtual void selectMimeTypeFilter(const QString &filter); + virtual void selectNameFilter(const QString &filter) = 0; + virtual QString selectedMimeTypeFilter() const; + virtual QString selectedNameFilter() const = 0; + + virtual bool isSupportedUrl(const QUrl &url) const; + + const QSharedPointer<QFileDialogOptions> &options() const; + void setOptions(const QSharedPointer<QFileDialogOptions> &options); + + static QStringList cleanFilterList(const QString &filter); + static const char *filterRegExp; + +Q_SIGNALS: + void fileSelected(const QUrl &file); + void filesSelected(const QList<QUrl> &files); + void currentChanged(const QUrl &path); + void directoryEntered(const QUrl &directory); + void filterSelected(const QString &filter); + +private: + QSharedPointer<QFileDialogOptions> m_options; +}; + +class Q_GUI_EXPORT QMessageDialogOptions +{ + Q_GADGET + Q_DISABLE_COPY(QMessageDialogOptions) +protected: + QMessageDialogOptions(QMessageDialogOptionsPrivate *dd); + ~QMessageDialogOptions(); + +public: + // Keep in sync with QMessageBox::Icon + enum Icon { NoIcon, Information, Warning, Critical, Question }; + Q_ENUM(Icon) + + static QSharedPointer<QMessageDialogOptions> create(); + QSharedPointer<QMessageDialogOptions> clone() const; + + QString windowTitle() const; + void setWindowTitle(const QString &); + + void setIcon(Icon icon); + Icon icon() const; + + void setText(const QString &text); + QString text() const; + + void setInformativeText(const QString &text); + QString informativeText() const; + + void setDetailedText(const QString &text); + QString detailedText() const; + + void setStandardButtons(QPlatformDialogHelper::StandardButtons buttons); + QPlatformDialogHelper::StandardButtons standardButtons() const; + +private: + QMessageDialogOptionsPrivate *d; +}; + +class Q_GUI_EXPORT QPlatformMessageDialogHelper : public QPlatformDialogHelper +{ + Q_OBJECT +public: + const QSharedPointer<QMessageDialogOptions> &options() const; + void setOptions(const QSharedPointer<QMessageDialogOptions> &options); + +Q_SIGNALS: + void clicked(QPlatformDialogHelper::StandardButton button, QPlatformDialogHelper::ButtonRole role); + +private: + QSharedPointer<QMessageDialogOptions> m_options; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMDIALOGHELPER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformdrag.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformdrag.h new file mode 100644 index 000000000..560f984a5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformdrag.h @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDRAG_H +#define QPLATFORMDRAG_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 <QtGui/qtguiglobal.h> +#include <QtGui/QPixmap> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_DRAGANDDROP + +class QMimeData; +class QMouseEvent; +class QDrag; +class QObject; +class QEvent; +class QPlatformDragPrivate; + +class Q_GUI_EXPORT QPlatformDropQtResponse +{ +public: + QPlatformDropQtResponse(bool accepted, Qt::DropAction acceptedAction); + bool isAccepted() const; + Qt::DropAction acceptedAction() const; + +private: + bool m_accepted; + Qt::DropAction m_accepted_action; + +}; + +class Q_GUI_EXPORT QPlatformDragQtResponse : public QPlatformDropQtResponse +{ +public: + QPlatformDragQtResponse(bool accepted, Qt::DropAction acceptedAction, QRect answerRect); + + QRect answerRect() const; + +private: + QRect m_answer_rect; +}; + +class Q_GUI_EXPORT QPlatformDrag +{ + Q_DECLARE_PRIVATE(QPlatformDrag) +public: + QPlatformDrag(); + virtual ~QPlatformDrag(); + + QDrag *currentDrag() const; + virtual QMimeData *platformDropData() = 0; + + virtual Qt::DropAction drag(QDrag *m_drag) = 0; + virtual void cancelDrag(); + void updateAction(Qt::DropAction action); + + virtual Qt::DropAction defaultAction(Qt::DropActions possibleActions, Qt::KeyboardModifiers modifiers) const; + + static QPixmap defaultPixmap(); + + virtual bool ownsDragObject() const; + +private: + QPlatformDragPrivate *d_ptr; + + Q_DISABLE_COPY(QPlatformDrag) +}; + +#endif // QT_NO_DRAGANDDROP + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformfontdatabase.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformfontdatabase.h new file mode 100644 index 000000000..f4558129a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformfontdatabase.h @@ -0,0 +1,146 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMFONTDATABASE_H +#define QPLATFORMFONTDATABASE_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 <QtGui/qtguiglobal.h> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QtCore/QList> +#if QT_DEPRECATED_SINCE(5, 5) +#include <QtCore/QHash> +#endif +#include <QtGui/QFontDatabase> +#include <QtGui/private/qfontengine_p.h> +#include <QtGui/private/qfont_p.h> + +QT_BEGIN_NAMESPACE + + +class QWritingSystemsPrivate; + +class Q_GUI_EXPORT QSupportedWritingSystems +{ +public: + + QSupportedWritingSystems(); + QSupportedWritingSystems(const QSupportedWritingSystems &other); + QSupportedWritingSystems &operator=(const QSupportedWritingSystems &other); + ~QSupportedWritingSystems(); + + void setSupported(QFontDatabase::WritingSystem, bool supported = true); + bool supported(QFontDatabase::WritingSystem) const; + +private: + void detach(); + + QWritingSystemsPrivate *d; + + friend Q_GUI_EXPORT bool operator==(const QSupportedWritingSystems &, const QSupportedWritingSystems &); + friend Q_GUI_EXPORT bool operator!=(const QSupportedWritingSystems &, const QSupportedWritingSystems &); +#ifndef QT_NO_DEBUG_STREAM + friend Q_GUI_EXPORT QDebug operator<<(QDebug, const QSupportedWritingSystems &); +#endif +}; + +Q_GUI_EXPORT bool operator==(const QSupportedWritingSystems &, const QSupportedWritingSystems &); +Q_GUI_EXPORT bool operator!=(const QSupportedWritingSystems &, const QSupportedWritingSystems &); + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QSupportedWritingSystems &); +#endif + +class QFontRequestPrivate; +class QFontEngineMulti; + +class Q_GUI_EXPORT QPlatformFontDatabase +{ +public: + virtual ~QPlatformFontDatabase(); + virtual void populateFontDatabase(); + virtual bool populateFamilyAliases() { return false; } + virtual void populateFamily(const QString &familyName); + virtual void invalidate(); + + virtual QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script); + virtual QFontEngine *fontEngine(const QFontDef &fontDef, 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); + + virtual QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference); + + virtual QString fontDir() const; + + virtual QFont defaultFont() const; + virtual bool isPrivateFontFamily(const QString &family) const; + + virtual QString resolveFontFamilyAlias(const QString &family) const; + virtual bool fontsAlwaysScalable() const; + virtual QList<int> standardSizes() const; + + // helper + static QSupportedWritingSystems writingSystemsFromTrueTypeBits(quint32 unicodeRange[4], quint32 codePageRange[2]); + static QFont::Weight weightFromInteger(int weight); + + //callback + static void registerQPF2Font(const QByteArray &dataArray, void *handle); + static void registerFont(const QString &familyname, const QString &stylename, + const QString &foundryname, QFont::Weight weight, + QFont::Style style, QFont::Stretch stretch, bool antialiased, + bool scalable, int pixelSize, bool fixedPitch, + const QSupportedWritingSystems &writingSystems, void *handle); + + static void registerFontFamily(const QString &familyName); + static void registerAliasToFontFamily(const QString &familyName, const QString &alias); +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMFONTDATABASE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformgraphicsbuffer.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformgraphicsbuffer.h new file mode 100644 index 000000000..0aeef946e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformgraphicsbuffer.h @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMGRAPHICSBUFFER_H +#define QPLATFORMGRAPHICSBUFFER_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 <QtGui/qtguiglobal.h> +#include <QtCore/QSize> +#include <QtCore/QRect> +#include <QtGui/QPixelFormat> +#include <QtCore/qflags.h> +#include <QtCore/QObject> + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QPlatformGraphicsBuffer : public QObject +{ +Q_OBJECT +public: + enum AccessType + { + None = 0x00, + SWReadAccess = 0x01, + SWWriteAccess = 0x02, + TextureAccess = 0x04, + HWCompositor = 0x08 + }; + Q_DECLARE_FLAGS(AccessTypes, AccessType); + + enum Origin { + OriginBottomLeft, + OriginTopLeft + }; + + virtual ~QPlatformGraphicsBuffer(); + + AccessTypes isLocked() const { return m_lock_access; } + bool lock(AccessTypes access, const QRect &rect = QRect()); + void unlock(); + + virtual bool bindToTexture(const QRect &rect = QRect()) const; + + virtual const uchar *data() const; + virtual uchar *data(); + virtual int bytesPerLine() const; + int byteCount() const; + + virtual Origin origin() const; + + QSize size() const { return m_size; } + QPixelFormat format() const { return m_format; } + +Q_SIGNALS: + void unlocked(AccessTypes previousAccessTypes); + +protected: + QPlatformGraphicsBuffer(const QSize &size, const QPixelFormat &format); + + virtual bool doLock(AccessTypes access, const QRect &rect = QRect()) = 0; + virtual void doUnlock() = 0; + +private: + QSize m_size; + QPixelFormat m_format; + AccessTypes m_lock_access; +}; + +QT_END_NAMESPACE + +#endif //QPLATFORMGRAPHICSBUFFER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformgraphicsbufferhelper.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformgraphicsbufferhelper.h new file mode 100644 index 000000000..5b7daff65 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformgraphicsbufferhelper.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtPlatformSupport 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMGRAPHICSBUFFERHELPER_H +#define QPLATFORMGRAPHICSBUFFERHELPER_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qpa/qplatformgraphicsbuffer.h> + +QT_BEGIN_NAMESPACE + +namespace QPlatformGraphicsBufferHelper { + bool lockAndBindToTexture(QPlatformGraphicsBuffer *graphicsBuffer, bool *swizzleRandB, bool *premultipliedB, const QRect &rect = QRect()); + bool bindSWToTexture(const QPlatformGraphicsBuffer *graphicsBuffer, bool *swizzleRandB = Q_NULLPTR, bool *premultipliedB = Q_NULLPTR, const QRect &rect = QRect()); +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontext.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontext.h new file mode 100644 index 000000000..26d40cd2c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontext.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMINPUTCONTEXT_H +#define QPLATFORMINPUTCONTEXT_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 <QtGui/qtguiglobal.h> +#include <QtGui/qinputmethod.h> + +QT_BEGIN_NAMESPACE + +class QPlatformInputContextPrivate; + +class Q_GUI_EXPORT QPlatformInputContext : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPlatformInputContext) + +public: + enum Capability { + HiddenTextCapability = 0x1 + }; + + QPlatformInputContext(); + virtual ~QPlatformInputContext(); + + virtual bool isValid() const; + virtual bool hasCapability(Capability capability) const; + + virtual void reset(); + virtual void commit(); + virtual void update(Qt::InputMethodQueries); + virtual void invokeAction(QInputMethod::Action, int cursorPosition); + virtual bool filterEvent(const QEvent *event); + virtual QRectF keyboardRect() const; + void emitKeyboardRectChanged(); + + virtual bool isAnimating() const; + void emitAnimatingChanged(); + + virtual void showInputPanel(); + virtual void hideInputPanel(); + virtual bool isInputPanelVisible() const; + void emitInputPanelVisibleChanged(); + + virtual QLocale locale() const; + void emitLocaleChanged(); + virtual Qt::LayoutDirection inputDirection() const; + void emitInputDirectionChanged(Qt::LayoutDirection newDirection); + + virtual void setFocusObject(QObject *object); + bool inputMethodAccepted() const; + + static void setSelectionOnFocusObject(const QPointF &anchorPos, const QPointF &cursorPos); + +private: + friend class QGuiApplication; + friend class QGuiApplicationPrivate; + friend class QInputMethod; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMINPUTCONTEXT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontext_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontext_p.h new file mode 100644 index 000000000..c4f4b97d0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontext_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMINPUTCONTEXT_P_H +#define QPLATFORMINPUTCONTEXT_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 <QtGui/private/qtguiglobal_p.h> +#include <private/qobject_p.h> + +QT_BEGIN_NAMESPACE + +class QPlatformInputContextPrivate: public QObjectPrivate +{ +public: + QPlatformInputContextPrivate() {} + ~QPlatformInputContextPrivate() {} + + static void setInputMethodAccepted(bool accepted); + static bool inputMethodAccepted(); + + static bool s_inputMethodAccepted; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontextfactory_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontextfactory_p.h new file mode 100644 index 000000000..881421ce4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontextfactory_p.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMINPUTCONTEXTFACTORY_H +#define QPLATFORMINPUTCONTEXTFACTORY_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 <QtGui/private/qtguiglobal_p.h> +#include <QtCore/qstringlist.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformInputContext; + +class Q_GUI_EXPORT QPlatformInputContextFactory +{ +public: + static QStringList keys(); + static QString requested(); + static QPlatformInputContext *create(const QString &key); + static QPlatformInputContext *create(); +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMINPUTCONTEXTFACTORY_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontextplugin_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontextplugin_p.h new file mode 100644 index 000000000..3f45df922 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatforminputcontextplugin_p.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMINPUTCONTEXTPLUGIN_H +#define QPLATFORMINPUTCONTEXTPLUGIN_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 <QtGui/private/qtguiglobal_p.h> +#include <QtCore/qplugin.h> +#include <QtCore/qfactoryinterface.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformInputContext; + +#define QPlatformInputContextFactoryInterface_iid "org.qt-project.Qt.QPlatformInputContextFactoryInterface.5.1" + +class Q_GUI_EXPORT QPlatformInputContextPlugin : public QObject +{ + Q_OBJECT +public: + explicit QPlatformInputContextPlugin(QObject *parent = 0); + ~QPlatformInputContextPlugin(); + + virtual QPlatformInputContext *create(const QString &key, const QStringList ¶mList) = 0; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMINPUTCONTEXTPLUGIN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformintegration.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformintegration.h new file mode 100644 index 000000000..0449e0b4c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformintegration.h @@ -0,0 +1,199 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMINTEGRATION_H +#define QPLATFORMINTEGRATION_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 <QtGui/qtguiglobal.h> +#include <QtGui/qwindowdefs.h> +#include <qpa/qplatformscreen.h> +#include <QtGui/qsurfaceformat.h> +#include <QtGui/qopenglcontext.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformWindow; +class QWindow; +class QPlatformBackingStore; +class QPlatformFontDatabase; +class QPlatformClipboard; +class QPlatformNativeInterface; +class QPlatformDrag; +class QPlatformOpenGLContext; +class QGuiGLFormat; +class QAbstractEventDispatcher; +class QPlatformInputContext; +class QPlatformAccessibility; +class QPlatformTheme; +class QPlatformDialogHelper; +class QPlatformSharedGraphicsCache; +class QPlatformServices; +class QPlatformSessionManager; +class QKeyEvent; +class QPlatformOffscreenSurface; +class QOffscreenSurface; + +class Q_GUI_EXPORT QPlatformIntegration +{ +public: + enum Capability { + ThreadedPixmaps = 1, + OpenGL, + ThreadedOpenGL, + SharedGraphicsCache, + BufferQueueingOpenGL, + WindowMasks, + MultipleWindows, + ApplicationState, + ForeignWindows, + NonFullScreenWindows, + NativeWidgets, + WindowManagement, + SyncState, + RasterGLSurface, + AllGLFunctionsQueryable, + ApplicationIcon, + SwitchableWidgetComposition + }; + + virtual ~QPlatformIntegration() { } + + virtual bool hasCapability(Capability cap) const; + + virtual QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const; + virtual QPlatformWindow *createPlatformWindow(QWindow *window) const = 0; + virtual QPlatformWindow *createForeignWindow(QWindow *, WId) const { return 0; } + virtual QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const = 0; +#ifndef QT_NO_OPENGL + virtual QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const; +#endif + virtual QPlatformSharedGraphicsCache *createPlatformSharedGraphicsCache(const char *cacheId) const; + virtual QPaintEngine *createImagePaintEngine(QPaintDevice *paintDevice) const; + +// Event dispatcher: + virtual QAbstractEventDispatcher *createEventDispatcher() const = 0; + virtual void initialize(); + virtual void destroy(); + +//Deeper window system integrations + virtual QPlatformFontDatabase *fontDatabase() const; +#ifndef QT_NO_CLIPBOARD + virtual QPlatformClipboard *clipboard() const; +#endif +#ifndef QT_NO_DRAGANDDROP + virtual QPlatformDrag *drag() const; +#endif + virtual QPlatformInputContext *inputContext() const; +#ifndef QT_NO_ACCESSIBILITY + virtual QPlatformAccessibility *accessibility() const; +#endif + + // Access native handles. The window handle is already available from Wid; + virtual QPlatformNativeInterface *nativeInterface() const; + + virtual QPlatformServices *services() const; + + enum StyleHint { + CursorFlashTime, + KeyboardInputInterval, + MouseDoubleClickInterval, + StartDragDistance, + StartDragTime, + KeyboardAutoRepeatRate, + ShowIsFullScreen, + PasswordMaskDelay, + FontSmoothingGamma, + StartDragVelocity, + UseRtlExtensions, + PasswordMaskCharacter, + SetFocusOnTouchRelease, + ShowIsMaximized, + MousePressAndHoldInterval, + TabFocusBehavior, + ReplayMousePressOutsidePopup, + ItemViewActivateItemOnSingleClick, + UiEffects, + WheelScrollLines, + }; + + virtual QVariant styleHint(StyleHint hint) const; + virtual Qt::WindowState defaultWindowState(Qt::WindowFlags) const; + + virtual Qt::KeyboardModifiers queryKeyboardModifiers() const; + virtual QList<int> possibleKeys(const QKeyEvent *) const; + + virtual QStringList themeNames() const; + virtual QPlatformTheme *createPlatformTheme(const QString &name) const; + + virtual QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface) const; + +#ifndef QT_NO_SESSIONMANAGER + virtual QPlatformSessionManager *createPlatformSessionManager(const QString &id, const QString &key) const; +#endif + + virtual void sync(); + +#ifndef QT_NO_OPENGL + virtual QOpenGLContext::OpenGLModuleType openGLModuleType(); +#endif + virtual void setApplicationIcon(const QIcon &icon) const; + + void removeScreen(QScreen *screen); + + virtual void beep() const; + +protected: + void screenAdded(QPlatformScreen *screen, bool isPrimary = false); + void destroyScreen(QPlatformScreen *screen); + void setPrimaryScreen(QPlatformScreen *newPrimary); +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMINTEGRATION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformintegrationfactory_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformintegrationfactory_p.h new file mode 100644 index 000000000..22c77ce8b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformintegrationfactory_p.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMINTEGRATIONFACTORY_H +#define QPLATFORMINTEGRATIONFACTORY_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 <QtGui/private/qtguiglobal_p.h> +#include <QtCore/qstringlist.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformIntegration; + +class Q_GUI_EXPORT QPlatformIntegrationFactory +{ +public: + static QStringList keys(const QString &platformPluginPath = QString()); + static QPlatformIntegration *create(const QString &name, const QStringList &args, int &argc, char **argv, const QString &platformPluginPath = QString()); +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMINTEGRATIONFACTORY_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformintegrationplugin.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformintegrationplugin.h new file mode 100644 index 000000000..f1136965b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformintegrationplugin.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMINTEGRATIONPLUGIN_H +#define QPLATFORMINTEGRATIONPLUGIN_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 <QtGui/qtguiglobal.h> +#include <QtCore/qplugin.h> +#include <QtCore/qfactoryinterface.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformIntegration; + +#define QPlatformIntegrationFactoryInterface_iid "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3" + +class Q_GUI_EXPORT QPlatformIntegrationPlugin : public QObject +{ + Q_OBJECT +public: + explicit QPlatformIntegrationPlugin(QObject *parent = 0); + ~QPlatformIntegrationPlugin(); + + virtual QPlatformIntegration *create(const QString &key, const QStringList ¶mList); + virtual QPlatformIntegration *create(const QString &key, const QStringList ¶mList, int &argc, char **argv); +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMINTEGRATIONPLUGIN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformmenu.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformmenu.h new file mode 100644 index 000000000..f8561445b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformmenu.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author James Turner <james.turner@kdab.com> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMMENU_H +#define QPLATFORMMENU_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 <QtGui/qtguiglobal.h> +#include <QtCore/qpointer.h> +#include <QtGui/QFont> +#include <QtGui/QKeySequence> +#include <QtGui/QIcon> + +QT_BEGIN_NAMESPACE + +class QPlatformMenu; +class Q_GUI_EXPORT QPlatformMenuItem : public QObject +{ +Q_OBJECT +public: + // copied from, and must stay in sync with, QAction menu roles. + enum MenuRole { NoRole = 0, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole, + AboutRole, PreferencesRole, QuitRole, + // However these roles are private, perhaps temporarily. + // They could be added as public QAction roles if necessary. + CutRole, CopyRole, PasteRole, SelectAllRole, + RoleCount }; + Q_ENUM(MenuRole) + + virtual void setTag(quintptr tag) = 0; + virtual quintptr tag()const = 0; + + virtual void setText(const QString &text) = 0; + virtual void setIcon(const QIcon &icon) = 0; + virtual void setMenu(QPlatformMenu *menu) = 0; + virtual void setVisible(bool isVisible) = 0; + 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; +#ifndef QT_NO_SHORTCUT + virtual void setShortcut(const QKeySequence& shortcut) = 0; +#endif + virtual void setEnabled(bool enabled) = 0; + virtual void setIconSize(int size) = 0; + virtual void setNativeContents(WId item) { Q_UNUSED(item); } + virtual void setHasExclusiveGroup(bool hasExclusiveGroup) { Q_UNUSED(hasExclusiveGroup); } + +Q_SIGNALS: + void activated(); + void hovered(); +}; + +class Q_GUI_EXPORT QPlatformMenu : public QObject +{ +Q_OBJECT +public: + enum MenuType { DefaultMenu = 0, EditMenu }; + Q_ENUM(MenuType) + + virtual void insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before) = 0; + virtual void removeMenuItem(QPlatformMenuItem *menuItem) = 0; + virtual void syncMenuItem(QPlatformMenuItem *menuItem) = 0; + virtual void syncSeparatorsCollapsible(bool enable) = 0; + + virtual void setTag(quintptr tag) = 0; + 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 bool isEnabled() const { return true; } + 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 setMenuType(MenuType type) { Q_UNUSED(type); } + + virtual void showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item) + { + Q_UNUSED(parentWindow); + Q_UNUSED(targetRect); + Q_UNUSED(item); + setVisible(true); + } + + virtual void dismiss() { } // Closes this and all its related menu popups + + virtual QPlatformMenuItem *menuItemAt(int position) const = 0; + virtual QPlatformMenuItem *menuItemForTag(quintptr tag) const = 0; + + virtual QPlatformMenuItem *createMenuItem() const; + virtual QPlatformMenu *createSubMenu() const; +Q_SIGNALS: + void aboutToShow(); + void aboutToHide(); +}; + +class Q_GUI_EXPORT QPlatformMenuBar : public QObject +{ +Q_OBJECT +public: + virtual void insertMenu(QPlatformMenu *menu, QPlatformMenu *before) = 0; + virtual void removeMenu(QPlatformMenu *menu) = 0; + virtual void syncMenu(QPlatformMenu *menuItem) = 0; + virtual void handleReparent(QWindow *newParentWindow) = 0; + + virtual QPlatformMenu *menuForTag(quintptr tag) const = 0; + virtual QPlatformMenu *createMenu() const; +}; + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformnativeinterface.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformnativeinterface.h new file mode 100644 index 000000000..95d6a03db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformnativeinterface.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMNATIVEINTERFACE_H +#define QPLATFORMNATIVEINTERFACE_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 <QtGui/qtguiglobal.h> +#include <QtGui/qwindowdefs.h> +#include <QtCore/QObject> +#include <QtCore/QVariant> + +QT_BEGIN_NAMESPACE + + +class QOpenGLContext; +class QScreen; +class QWindow; +class QPlatformWindow; +class QBackingStore; + +class Q_GUI_EXPORT QPlatformNativeInterface : public QObject +{ + Q_OBJECT +public: + virtual void *nativeResourceForIntegration(const QByteArray &resource); + virtual void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context); + virtual void *nativeResourceForScreen(const QByteArray &resource, QScreen *screen); + virtual void *nativeResourceForWindow(const QByteArray &resource, QWindow *window); + virtual void *nativeResourceForBackingStore(const QByteArray &resource, QBackingStore *backingStore); +#ifndef QT_NO_CURSOR + virtual void *nativeResourceForCursor(const QByteArray &resource, const QCursor &cursor); +#endif + + typedef void * (*NativeResourceForIntegrationFunction)(); + typedef void * (*NativeResourceForContextFunction)(QOpenGLContext *context); + typedef void * (*NativeResourceForScreenFunction)(QScreen *screen); + typedef void * (*NativeResourceForWindowFunction)(QWindow *window); + typedef void * (*NativeResourceForBackingStoreFunction)(QBackingStore *backingStore); + virtual NativeResourceForIntegrationFunction nativeResourceFunctionForIntegration(const QByteArray &resource); + virtual NativeResourceForContextFunction nativeResourceFunctionForContext(const QByteArray &resource); + virtual NativeResourceForScreenFunction nativeResourceFunctionForScreen(const QByteArray &resource); + virtual NativeResourceForWindowFunction nativeResourceFunctionForWindow(const QByteArray &resource); + virtual NativeResourceForBackingStoreFunction nativeResourceFunctionForBackingStore(const QByteArray &resource); + + virtual QFunctionPointer platformFunction(const QByteArray &function) const; + + virtual QVariantMap windowProperties(QPlatformWindow *window) const; + virtual QVariant windowProperty(QPlatformWindow *window, const QString &name) const; + virtual QVariant windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) const; + virtual void setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value); + +Q_SIGNALS: + void windowPropertyChanged(QPlatformWindow *window, const QString &propertyName); +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMNATIVEINTERFACE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformoffscreensurface.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformoffscreensurface.h new file mode 100644 index 000000000..7f2e0d475 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformoffscreensurface.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.h> +#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 Q_DECL_OVERRIDE; + virtual bool isValid() const; + +protected: + QScopedPointer<QPlatformOffscreenSurfacePrivate> d_ptr; +private: + Q_DISABLE_COPY(QPlatformOffscreenSurface) +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMOFFSCREENSURFACE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformopenglcontext.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformopenglcontext.h new file mode 100644 index 000000000..f307cc14f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformopenglcontext.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMOPENGLCONTEXT_H +#define QPLATFORMOPENGLCONTEXT_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 <QtGui/qtguiglobal.h> +#include <QtCore/qnamespace.h> + +#ifndef QT_NO_OPENGL + +#include <QtGui/qsurfaceformat.h> +#include <QtGui/qwindow.h> +#include <QtGui/qopengl.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformOpenGLContextPrivate; + +class Q_GUI_EXPORT QPlatformOpenGLContext +{ + Q_DECLARE_PRIVATE(QPlatformOpenGLContext) +public: + QPlatformOpenGLContext(); + virtual ~QPlatformOpenGLContext(); + + virtual void initialize(); + + virtual QSurfaceFormat format() const = 0; + + virtual void swapBuffers(QPlatformSurface *surface) = 0; + + virtual GLuint defaultFramebufferObject(QPlatformSurface *surface) const; + + virtual bool makeCurrent(QPlatformSurface *surface) = 0; + virtual void doneCurrent() = 0; + + virtual bool isSharing() const { return false; } + virtual bool isValid() const { return true; } + + virtual QFunctionPointer getProcAddress(const char *procName) = 0; + + QOpenGLContext *context() const; + + static bool parseOpenGLVersion(const QByteArray &versionString, int &major, int &minor); + +private: + friend class QOpenGLContext; + + QScopedPointer<QPlatformOpenGLContextPrivate> d_ptr; + + void setContext(QOpenGLContext *context); + + Q_DISABLE_COPY(QPlatformOpenGLContext) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif // QPLATFORMOPENGLCONTEXT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformpixmap.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformpixmap.h new file mode 100644 index 000000000..8513755cc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformpixmap.h @@ -0,0 +1,166 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMPIXMAP_H +#define QPLATFORMPIXMAP_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 <QtGui/qtguiglobal.h> +#include <QtGui/qpixmap.h> +#include <QtCore/qatomic.h> + +QT_BEGIN_NAMESPACE + + +class QImageReader; + +class Q_GUI_EXPORT QPlatformPixmap +{ +public: + enum PixelType { + // WARNING: Do not change the first two + // Must match QPixmap::Type + PixmapType, BitmapType + }; + + enum ClassId { RasterClass, DirectFBClass, + BlitterClass, Direct2DClass, + CustomClass = 1024 }; + + QPlatformPixmap(PixelType pixelType, int classId); + virtual ~QPlatformPixmap(); + + virtual QPlatformPixmap *createCompatiblePlatformPixmap() const; + + virtual void resize(int width, int height) = 0; + virtual void fromImage(const QImage &image, + Qt::ImageConversionFlags flags) = 0; + virtual void fromImageInPlace(QImage &image, + Qt::ImageConversionFlags flags) + { + fromImage(image, flags); + } + + virtual void fromImageReader(QImageReader *imageReader, + Qt::ImageConversionFlags flags); + + virtual bool fromFile(const QString &filename, const char *format, + Qt::ImageConversionFlags flags); + virtual bool fromData(const uchar *buffer, uint len, const char *format, + Qt::ImageConversionFlags flags); + + virtual void copy(const QPlatformPixmap *data, const QRect &rect); + virtual bool scroll(int dx, int dy, const QRect &rect); + + virtual int metric(QPaintDevice::PaintDeviceMetric metric) const = 0; + virtual void fill(const QColor &color) = 0; + + virtual bool hasAlphaChannel() const = 0; + virtual QPixmap transformed(const QTransform &matrix, + Qt::TransformationMode mode) const; + + virtual QImage toImage() const = 0; + virtual QImage toImage(const QRect &rect) const; + virtual QPaintEngine* paintEngine() const = 0; + + inline int serialNumber() const { return ser_no; } + + inline PixelType pixelType() const { return type; } + inline ClassId classId() const { return static_cast<ClassId>(id); } + + virtual qreal devicePixelRatio() const = 0; + virtual void setDevicePixelRatio(qreal scaleFactor) = 0; + + virtual QImage* buffer(); + + inline int width() const { return w; } + inline int height() const { return h; } + inline int colorCount() const { return metric(QPaintDevice::PdmNumColors); } + inline int depth() const { return d; } + inline bool isNull() const { return is_null; } + inline qint64 cacheKey() const { + int classKey = id; + if (classKey >= 1024) + classKey = -(classKey >> 10); + return ((((qint64) classKey) << 56) + | (((qint64) ser_no) << 32) + | ((qint64) detach_no)); + } + + static QPlatformPixmap *create(int w, int h, PixelType type); + +protected: + + void setSerialNumber(int serNo); + void setDetachNumber(int detNo); + int w; + int h; + int d; + bool is_null; + +private: + friend class QPixmap; + friend class QImagePixmapCleanupHooks; // Needs to set is_cached + friend class QOpenGLTextureCache; //Needs to check the reference count + friend class QExplicitlySharedDataPointer<QPlatformPixmap>; + + QAtomicInt ref; + int detach_no; + + PixelType type; + int id; + int ser_no; + uint is_cached; +}; + +# define QT_XFORM_TYPE_MSBFIRST 0 +# define QT_XFORM_TYPE_LSBFIRST 1 +extern bool qt_xForm_helper(const QTransform&, int, int, int, uchar*, int, int, int, const uchar*, int, int, int); + +QT_END_NAMESPACE + +#endif // QPLATFORMPIXMAP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformscreen.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformscreen.h new file mode 100644 index 000000000..97fe3fed0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformscreen.h @@ -0,0 +1,172 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMSCREEN_H +#define QPLATFORMSCREEN_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 <QtGui/qtguiglobal.h> +#include <QtCore/qmetatype.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qcoreevent.h> +#include <QtCore/qvariant.h> +#include <QtCore/qrect.h> +#include <QtCore/qobject.h> + +#include <QtGui/qcursor.h> +#include <QtGui/qimage.h> +#include <QtGui/qwindowdefs.h> +#include <qpa/qplatformpixmap.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformBackingStore; +class QPlatformScreenPrivate; +class QPlatformWindow; +class QPlatformCursor; +class QScreen; +class QSurfaceFormat; + +typedef QPair<qreal, qreal> QDpi; + + +class Q_GUI_EXPORT QPlatformScreen +{ + Q_DECLARE_PRIVATE(QPlatformScreen) + +public: + enum SubpixelAntialiasingType { // copied from qfontengine_p.h since we can't include private headers + Subpixel_None, + Subpixel_RGB, + Subpixel_BGR, + Subpixel_VRGB, + Subpixel_VBGR + }; + + enum PowerState { + PowerStateOn, + PowerStateStandby, + PowerStateSuspend, + PowerStateOff + }; + + struct Mode { + QSize size; + qreal refreshRate; + }; + + QPlatformScreen(); + virtual ~QPlatformScreen(); + + virtual QPixmap grabWindow(WId window, int x, int y, int width, int height) const; + + virtual QRect geometry() const = 0; + virtual QRect availableGeometry() const {return geometry();} + + virtual int depth() const = 0; + virtual QImage::Format format() const = 0; + + virtual QSizeF physicalSize() const; + virtual QDpi logicalDpi() const; + virtual qreal devicePixelRatio() const; + virtual qreal pixelDensity() const; + + virtual qreal refreshRate() const; + + virtual Qt::ScreenOrientation nativeOrientation() const; + virtual Qt::ScreenOrientation orientation() const; + virtual void setOrientationUpdateMask(Qt::ScreenOrientations mask); + + virtual QWindow *topLevelAt(const QPoint &point) const; + virtual QList<QPlatformScreen *> virtualSiblings() const; + const QPlatformScreen *screenForPosition(const QPoint &point) const; + + QScreen *screen() const; + + //jl: should this function be in QPlatformIntegration + //jl: maybe screenForWindow is a better name? + static QPlatformScreen *platformScreenForWindow(const QWindow *window); + + virtual QString name() const { return QString(); } + + virtual QString manufacturer() const; + virtual QString model() const; + virtual QString serialNumber() const; + + virtual QPlatformCursor *cursor() const; + virtual SubpixelAntialiasingType subpixelAntialiasingTypeHint() const; + + virtual PowerState powerState() const; + virtual void setPowerState(PowerState state); + + virtual QVector<Mode> modes() const; + + virtual int currentMode() const; + virtual int preferredMode() const; + + static int angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b); + static QTransform transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target); + static QRect mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect); + + // The platform screen's geometry in device independent coordinates + QRect deviceIndependentGeometry() const; + +protected: + void resizeMaximizedWindows(); + + QScopedPointer<QPlatformScreenPrivate> d_ptr; + +private: + Q_DISABLE_COPY(QPlatformScreen) + + friend class QScreenPrivate; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMSCREEN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformscreen_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformscreen_p.h new file mode 100644 index 000000000..d5dc7b471 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformscreen_p.h @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMSCREEN_P_H +#define QPLATFORMSCREEN_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 <QtGui/private/qtguiglobal_p.h> + +QT_BEGIN_NAMESPACE + +class QScreen; + +class QPlatformScreenPrivate +{ +public: + QPointer<QScreen> screen; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMSCREEN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformservices.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformservices.h new file mode 100644 index 000000000..339bbfde3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformservices.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMSERVICES_H +#define QPLATFORMSERVICES_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 <QtGui/qtguiglobal.h> + +QT_BEGIN_NAMESPACE + +class QUrl; + +class Q_GUI_EXPORT QPlatformServices +{ +public: + QPlatformServices(); + virtual ~QPlatformServices() { } + + virtual bool openUrl(const QUrl &url); + virtual bool openDocument(const QUrl &url); + + virtual QByteArray desktopEnvironment() const; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMSERVICES_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsessionmanager.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsessionmanager.h new file mode 100644 index 000000000..ca7cab389 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsessionmanager.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Samuel Gaist <samuel.gaist@edeltech.ch> +** Copyright (C) 2013 Teo Mrnjavac <teo@kde.org> +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMSESSIONMANAGER_H +#define QPLATFORMSESSIONMANAGER_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 <QtGui/qtguiglobal.h> +#include <QtCore/qmetatype.h> +#include <QtCore/qnamespace.h> + +#include <QtGui/qsessionmanager.h> + +#ifndef QT_NO_SESSIONMANAGER + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QPlatformSessionManager +{ +public: + explicit QPlatformSessionManager(const QString &id, const QString &key); + virtual ~QPlatformSessionManager(); + + virtual QString sessionId() const; + virtual QString sessionKey() const; + + virtual bool allowsInteraction(); + virtual bool allowsErrorInteraction(); + virtual void release(); + + virtual void cancel(); + + virtual void setRestartHint(QSessionManager::RestartHint restartHint); + virtual QSessionManager::RestartHint restartHint() const; + + virtual void setRestartCommand(const QStringList &command); + virtual QStringList restartCommand() const; + virtual void setDiscardCommand(const QStringList &command); + virtual QStringList discardCommand() const; + + virtual void setManagerProperty(const QString &name, const QString &value); + virtual void setManagerProperty(const QString &name, const QStringList &value); + + virtual bool isPhase2() const; + virtual void requestPhase2(); + + void appCommitData(); + void appSaveState(); + +protected: + QString m_sessionId; + QString m_sessionKey; + +private: + QStringList m_restartCommand; + QStringList m_discardCommand; + QSessionManager::RestartHint m_restartHint; + + Q_DISABLE_COPY(QPlatformSessionManager) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SESSIONMANAGER + +#endif // QPLATFORMSESSIONMANAGER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsharedgraphicscache.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsharedgraphicscache.h new file mode 100644 index 000000000..e11d2f41a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsharedgraphicscache.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMSHAREDGRAPHICSCACHE_H +#define QPLATFORMSHAREDGRAPHICSCACHE_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 <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> +#include <QtGui/qimage.h> + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QPlatformSharedGraphicsCache: public QObject +{ + Q_OBJECT +public: + enum PixelFormat + { + Alpha8 + }; + + enum BufferType + { + OpenGLTexture + }; + + explicit QPlatformSharedGraphicsCache(QObject *parent = 0) : QObject(parent) {} + + virtual void beginRequestBatch() = 0; + virtual void ensureCacheInitialized(const QByteArray &cacheId, BufferType bufferType, + PixelFormat pixelFormat) = 0; + virtual void requestItems(const QByteArray &cacheId, const QVector<quint32> &itemIds) = 0; + virtual void insertItems(const QByteArray &cacheId, + const QVector<quint32> &itemIds, + const QVector<QImage> &items) = 0; + virtual void releaseItems(const QByteArray &cacheId, const QVector<quint32> &itemIds) = 0; + virtual void endRequestBatch() = 0; + + virtual bool requestBatchStarted() const = 0; + + virtual uint textureIdForBuffer(void *bufferId) = 0; + virtual void referenceBuffer(void *bufferId) = 0; + virtual bool dereferenceBuffer(void *bufferId) = 0; + virtual QSize sizeOfBuffer(void *bufferId) = 0; + virtual void *eglImageForBuffer(void *bufferId) = 0; + +Q_SIGNALS: + void itemsMissing(const QByteArray &cacheId, const QVector<quint32> &itemIds); + void itemsAvailable(const QByteArray &cacheId, void *bufferId, + const QVector<quint32> &itemIds, const QVector<QPoint> &positionsInBuffer); + void itemsInvalidated(const QByteArray &cacheId, const QVector<quint32> &itemIds); + void itemsUpdated(const QByteArray &cacheId, void *bufferId, + const QVector<quint32> &itemIds, const QVector<QPoint> &positionsInBuffer); +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMSHAREDGRAPHICSCACHE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsurface.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsurface.h new file mode 100644 index 000000000..5a1e4fe82 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsurface.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMSURFACE_H +#define QPLATFORMSURFACE_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 <QtGui/qtguiglobal.h> +#include <QtCore/qnamespace.h> +#include <QtGui/qsurface.h> +#include <QtGui/qsurfaceformat.h> + +QT_BEGIN_NAMESPACE + + +class Q_GUI_EXPORT QPlatformSurface +{ +public: + virtual ~QPlatformSurface(); + virtual QSurfaceFormat format() const = 0; + + QSurface *surface() const; + +private: + explicit QPlatformSurface(QSurface *surface); + + QSurface *m_surface; + + friend class QPlatformWindow; + friend class QPlatformOffscreenSurface; +}; + +QT_END_NAMESPACE + +#endif //QPLATFORMSURFACE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsystemtrayicon.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsystemtrayicon.h new file mode 100644 index 000000000..c52dbfbd7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformsystemtrayicon.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2012 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMSYSTEMTRAYICON_H +#define QPLATFORMSYSTEMTRAYICON_H + +#include <QtGui/qtguiglobal.h> +#include "QtCore/qobject.h" + +#ifndef QT_NO_SYSTEMTRAYICON + +QT_BEGIN_NAMESPACE + +class QPlatformMenu; +class QIcon; +class QString; +class QRect; + +class Q_GUI_EXPORT QPlatformSystemTrayIcon : public QObject +{ + Q_OBJECT +public: + enum ActivationReason { + Unknown, + Context, + DoubleClick, + Trigger, + MiddleClick + }; + Q_ENUM(ActivationReason) + + enum MessageIcon { NoIcon, Information, Warning, Critical }; + Q_ENUM(MessageIcon) + + QPlatformSystemTrayIcon(); + ~QPlatformSystemTrayIcon(); + + virtual void init() = 0; + virtual void cleanup() = 0; + virtual void updateIcon(const QIcon &icon) = 0; + virtual void updateToolTip(const QString &tooltip) = 0; + virtual void updateMenu(QPlatformMenu *menu) = 0; + virtual QRect geometry() const = 0; + virtual void showMessage(const QString &title, const QString &msg, + const QIcon &icon, MessageIcon iconType, int msecs) = 0; + + virtual bool isSystemTrayAvailable() const = 0; + virtual bool supportsMessages() const = 0; + + virtual QPlatformMenu *createMenu() const; + +Q_SIGNALS: + void activated(QPlatformSystemTrayIcon::ActivationReason reason); + void messageClicked(); +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SYSTEMTRAYICON + +#endif // QSYSTEMTRAYICON_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformtheme.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformtheme.h new file mode 100644 index 000000000..2ba2f8669 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformtheme.h @@ -0,0 +1,330 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMTHEME_H +#define QPLATFORMTHEME_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 <QtGui/qtguiglobal.h> +#include <QtCore/QScopedPointer> +#include <QtGui/QKeySequence> + +QT_BEGIN_NAMESPACE + +class QIcon; +class QIconEngine; +class QMenu; +class QMenuBar; +class QPlatformMenuItem; +class QPlatformMenu; +class QPlatformMenuBar; +class QPlatformDialogHelper; +class QPlatformSystemTrayIcon; +class QPlatformThemePrivate; +class QVariant; +class QPalette; +class QFont; +class QPixmap; +class QSizeF; +class QFileInfo; + +class Q_GUI_EXPORT QPlatformTheme +{ + Q_DECLARE_PRIVATE(QPlatformTheme) +public: + enum ThemeHint { + CursorFlashTime, + KeyboardInputInterval, + MouseDoubleClickInterval, + StartDragDistance, + StartDragTime, + KeyboardAutoRepeatRate, + PasswordMaskDelay, + StartDragVelocity, + TextCursorWidth, + DropShadow, + MaximumScrollBarDragDistance, + ToolButtonStyle, + ToolBarIconSize, + ItemViewActivateItemOnSingleClick, + SystemIconThemeName, + SystemIconFallbackThemeName, + IconThemeSearchPaths, + StyleNames, + WindowAutoPlacement, + DialogButtonBoxLayout, + DialogButtonBoxButtonsHaveIcons, + UseFullScreenForPopupMenu, + KeyboardScheme, + UiEffects, + SpellCheckUnderlineStyle, +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + TabFocusBehavior, +#else + TabAllWidgets, + TabFocusBehavior = TabAllWidgets, +#endif + IconPixmapSizes, + PasswordMaskCharacter, + DialogSnapToDefaultButton, + ContextMenuOnMouseRelease, + MousePressAndHoldInterval, + MouseDoubleClickDistance, + WheelScrollLines, + TouchDoubleTapDistance + }; + + enum DialogType { + FileDialog, + ColorDialog, + FontDialog, + MessageDialog + }; + + enum Palette { + SystemPalette, + ToolTipPalette, + ToolButtonPalette, + ButtonPalette, + CheckBoxPalette, + RadioButtonPalette, + HeaderPalette, + ComboBoxPalette, + ItemViewPalette, + MessageBoxLabelPelette, + MessageBoxLabelPalette = MessageBoxLabelPelette, + TabBarPalette, + LabelPalette, + GroupBoxPalette, + MenuPalette, + MenuBarPalette, + TextEditPalette, + TextLineEditPalette, + NPalettes + }; + + enum Font { + SystemFont, + MenuFont, + MenuBarFont, + MenuItemFont, + MessageBoxFont, + LabelFont, + TipLabelFont, + StatusBarFont, + TitleBarFont, + MdiSubWindowTitleFont, + DockWidgetTitleFont, + PushButtonFont, + CheckBoxFont, + RadioButtonFont, + ToolButtonFont, + ItemViewFont, + ListViewFont, + HeaderViewFont, + ListBoxFont, + ComboMenuItemFont, + ComboLineEditFont, + SmallFont, + MiniFont, + FixedFont, + GroupBoxTitleFont, + TabButtonFont, + EditorFont, + NFonts + }; + + enum StandardPixmap { // Keep in sync with QStyle::StandardPixmap + TitleBarMenuButton, + TitleBarMinButton, + TitleBarMaxButton, + TitleBarCloseButton, + TitleBarNormalButton, + TitleBarShadeButton, + TitleBarUnshadeButton, + TitleBarContextHelpButton, + DockWidgetCloseButton, + MessageBoxInformation, + MessageBoxWarning, + MessageBoxCritical, + MessageBoxQuestion, + DesktopIcon, + TrashIcon, + ComputerIcon, + DriveFDIcon, + DriveHDIcon, + DriveCDIcon, + DriveDVDIcon, + DriveNetIcon, + DirOpenIcon, + DirClosedIcon, + DirLinkIcon, + DirLinkOpenIcon, + FileIcon, + FileLinkIcon, + ToolBarHorizontalExtensionButton, + ToolBarVerticalExtensionButton, + FileDialogStart, + FileDialogEnd, + FileDialogToParent, + FileDialogNewFolder, + FileDialogDetailedView, + FileDialogInfoView, + FileDialogContentsView, + FileDialogListView, + FileDialogBack, + DirIcon, + DialogOkButton, + DialogCancelButton, + DialogHelpButton, + DialogOpenButton, + DialogSaveButton, + DialogCloseButton, + DialogApplyButton, + DialogResetButton, + DialogDiscardButton, + DialogYesButton, + DialogNoButton, + ArrowUp, + ArrowDown, + ArrowLeft, + ArrowRight, + ArrowBack, + ArrowForward, + DirHomeIcon, + CommandLink, + VistaShield, + BrowserReload, + BrowserStop, + MediaPlay, + MediaStop, + MediaPause, + MediaSkipForward, + MediaSkipBackward, + MediaSeekForward, + MediaSeekBackward, + MediaVolume, + MediaVolumeMuted, + LineEditClearButton, + // do not add any values below/greater than this + CustomBase = 0xf0000000 + }; + + enum KeyboardSchemes + { + WindowsKeyboardScheme, + MacKeyboardScheme, + X11KeyboardScheme, + KdeKeyboardScheme, + GnomeKeyboardScheme, + CdeKeyboardScheme + }; + + enum UiEffect + { + GeneralUiEffect = 0x1, + AnimateMenuUiEffect = 0x2, + FadeMenuUiEffect = 0x4, + AnimateComboUiEffect = 0x8, + AnimateTooltipUiEffect = 0x10, + FadeTooltipUiEffect = 0x20, + AnimateToolBoxUiEffect = 0x40, + HoverEffect = 0x80 + }; + + enum IconOption { + DontUseCustomDirectoryIcons = 0x01 + }; + Q_DECLARE_FLAGS(IconOptions, IconOption) + + explicit QPlatformTheme(); + virtual ~QPlatformTheme(); + + virtual QPlatformMenuItem* createPlatformMenuItem() const; + virtual QPlatformMenu* createPlatformMenu() const; + virtual QPlatformMenuBar* createPlatformMenuBar() const; + virtual void showPlatformMenuBar() {} + + virtual bool usePlatformNativeDialog(DialogType type) const; + virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const; + +#ifndef QT_NO_SYSTEMTRAYICON + virtual QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const; +#endif + + virtual const QPalette *palette(Palette type = SystemPalette) const; + + virtual const QFont *font(Font type = SystemFont) const; + + virtual QVariant themeHint(ThemeHint hint) const; + + virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const; + virtual QIcon fileIcon(const QFileInfo &fileInfo, + QPlatformTheme::IconOptions iconOptions = 0) const; + virtual QIconEngine *createIconEngine(const QString &iconName) const; + +#ifndef QT_NO_SHORTCUT + virtual QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const; +#endif + + virtual QString standardButtonText(int button) const; + virtual QKeySequence standardButtonShortcut(int button) const; + + static QVariant defaultThemeHint(ThemeHint hint); + static QString defaultStandardButtonText(int button); + static QString removeMnemonics(const QString &original); + +protected: + explicit QPlatformTheme(QPlatformThemePrivate *priv); + QScopedPointer<QPlatformThemePrivate> d_ptr; +private: + Q_DISABLE_COPY(QPlatformTheme) +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMTHEME_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformtheme_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformtheme_p.h new file mode 100644 index 000000000..73deb890b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformtheme_p.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMTHEME_P_H +#define QPLATFORMTHEME_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 <QtGui/private/qtguiglobal_p.h> +#include "private/qkeysequence_p.h" + +QT_BEGIN_NAMESPACE + +class QPalette; + +class Q_GUI_EXPORT QPlatformThemePrivate +{ +public: + QPlatformThemePrivate(); + + virtual ~QPlatformThemePrivate(); + + void initializeSystemPalette(); + +#ifndef QT_NO_SHORTCUT + static const QKeyBinding keyBindings[]; + static const uint numberOfKeyBindings; +#endif + + static unsigned currentKeyPlatforms(); + + QPalette *systemPalette; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMTHEME_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformthemefactory_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformthemefactory_p.h new file mode 100644 index 000000000..c312eadf2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformthemefactory_p.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMTHEMEFACTORY_H +#define QPLATFORMTHEMEFACTORY_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 <QtGui/private/qtguiglobal_p.h> +#include <QtCore/qstringlist.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformTheme; + +class Q_GUI_EXPORT QPlatformThemeFactory +{ +public: + static QStringList keys(const QString &platformPluginPath = QString()); + static QPlatformTheme *create(const QString &key, const QString &platformPluginPath = QString()); +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMTHEMEFACTORY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformthemeplugin.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformthemeplugin.h new file mode 100644 index 000000000..7b5687994 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformthemeplugin.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMTHEMEPLUGIN_H +#define QPLATFORMTHEMEPLUGIN_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 <QtGui/qtguiglobal.h> +#include <QtCore/qplugin.h> +#include <QtCore/qfactoryinterface.h> + +QT_BEGIN_NAMESPACE + +class QPlatformTheme; + +#define QPlatformThemeFactoryInterface_iid "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1" + +class Q_GUI_EXPORT QPlatformThemePlugin : public QObject +{ + Q_OBJECT +public: + explicit QPlatformThemePlugin(QObject *parent = 0); + ~QPlatformThemePlugin(); + + virtual QPlatformTheme *create(const QString &key, const QStringList ¶mList) = 0; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMTHEMEPLUGIN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformwindow.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformwindow.h new file mode 100644 index 000000000..2bee55c7e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformwindow.h @@ -0,0 +1,167 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QPLATFORMWINDOW_H +#define QPLATFORMWINDOW_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 <QtGui/qtguiglobal.h> +#include <QtCore/qscopedpointer.h> +#include <QtCore/qrect.h> +#include <QtCore/qmargins.h> +#include <QtCore/qstring.h> +#include <QtGui/qwindowdefs.h> +#include <QtGui/qwindow.h> +#include <qpa/qplatformopenglcontext.h> +#include <qpa/qplatformsurface.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformScreen; +class QPlatformWindowPrivate; +class QWindow; +class QIcon; +class QRegion; + +class Q_GUI_EXPORT QPlatformWindow : public QPlatformSurface +{ + Q_DECLARE_PRIVATE(QPlatformWindow) +public: + explicit QPlatformWindow(QWindow *window); + virtual ~QPlatformWindow(); + + QWindow *window() const; + QPlatformWindow *parent() const; + + QPlatformScreen *screen() const; + + virtual QSurfaceFormat format() const Q_DECL_OVERRIDE; + + virtual void setGeometry(const QRect &rect); + virtual QRect geometry() const; + virtual QRect normalGeometry() const; + + virtual QMargins frameMargins() const; + virtual QMargins safeAreaMargins() const; + + virtual void setVisible(bool visible); + virtual void setWindowFlags(Qt::WindowFlags flags); + virtual void setWindowState(Qt::WindowState state); + + virtual WId winId() const; + virtual void setParent(const QPlatformWindow *window); + + virtual void setWindowTitle(const QString &title); + virtual void setWindowFilePath(const QString &title); + virtual void setWindowIcon(const QIcon &icon); + virtual void raise(); + virtual void lower(); + + virtual bool isExposed() const; + virtual bool isActive() const; + virtual bool isAncestorOf(const QPlatformWindow *child) const; + virtual bool isEmbedded() const; + virtual bool isForeignWindow() const { return window()->type() == Qt::ForeignWindow; }; + virtual QPoint mapToGlobal(const QPoint &pos) const; + virtual QPoint mapFromGlobal(const QPoint &pos) const; + + virtual void propagateSizeHints(); + + virtual void setOpacity(qreal level); + virtual void setMask(const QRegion ®ion); + virtual void requestActivateWindow(); + + virtual void handleContentOrientationChange(Qt::ScreenOrientation orientation); + + virtual qreal devicePixelRatio() const; + + virtual bool setKeyboardGrabEnabled(bool grab); + virtual bool setMouseGrabEnabled(bool grab); + + virtual bool setWindowModified(bool modified); + + virtual void windowEvent(QEvent *event); + + virtual bool startSystemResize(const QPoint &pos, Qt::Corner corner); + + virtual void setFrameStrutEventsEnabled(bool enabled); + virtual bool frameStrutEventsEnabled() const; + + virtual void setAlertState(bool enabled); + virtual bool isAlertState() const; + + virtual void invalidateSurface(); + + static QRect initialGeometry(const QWindow *w, + const QRect &initialGeometry, int defaultWidth, int defaultHeight); + + virtual void requestUpdate(); + + // Window property accessors. Platform plugins should use these + // instead of accessing QWindow directly. + QSize windowMinimumSize() const; + QSize windowMaximumSize() const; + QSize windowBaseSize() const; + QSize windowSizeIncrement() const; + QRect windowGeometry() const; + QRect windowFrameGeometry() const; + QRectF windowClosestAcceptableGeometry(const QRectF &nativeRect) const; + static QRectF closestAcceptableGeometry(const QWindow *w, const QRectF &nativeRect); + +protected: + static QString formatWindowTitle(const QString &title, const QString &separator); + QPlatformScreen *screenForGeometry(const QRect &newGeometry) const; + static QSize constrainWindowSize(const QSize &size); + + QScopedPointer<QPlatformWindowPrivate> d_ptr; +private: + Q_DISABLE_COPY(QPlatformWindow) +}; + +QT_END_NAMESPACE + +#endif //QPLATFORMWINDOW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformwindow_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformwindow_p.h new file mode 100644 index 000000000..62ecd61d9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qplatformwindow_p.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMWINDOW_P_H +#define QPLATFORMWINDOW_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 <QtGui/private/qtguiglobal_p.h> +#include <QtCore/qrect.h> + +QT_BEGIN_NAMESPACE + +class QPlatformWindowPrivate +{ +public: + QRect rect; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMWINDOW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qwindowsysteminterface.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qwindowsysteminterface.h new file mode 100644 index 000000000..fb428233a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qwindowsysteminterface.h @@ -0,0 +1,262 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QWINDOWSYSTEMINTERFACE_H +#define QWINDOWSYSTEMINTERFACE_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 <QtGui/qtguiglobal.h> +#include <QtCore/QTime> +#include <QtGui/qwindowdefs.h> +#include <QtCore/QEvent> +#include <QtCore/QAbstractEventDispatcher> +#include <QtGui/QScreen> +#include <QtGui/QWindow> +#include <QtCore/QWeakPointer> +#include <QtCore/QMutex> +#include <QtGui/QTouchEvent> +#include <QtCore/QEventLoop> +#include <QtGui/QVector2D> + +QT_BEGIN_NAMESPACE + +class QMimeData; +class QTouchDevice; +class QPlatformDragQtResponse; +class QPlatformDropQtResponse; + + +class Q_GUI_EXPORT QWindowSystemInterface +{ +public: + struct SynchronousDelivery {}; + struct AsynchronousDelivery {}; + struct DefaultDelivery {}; + + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleMouseEvent(QWindow *window, const QPointF &local, const QPointF &global, Qt::MouseButtons b, + Qt::KeyboardModifiers mods = Qt::NoModifier, + Qt::MouseEventSource source = Qt::MouseEventNotSynthesized); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleMouseEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, Qt::MouseButtons b, + Qt::KeyboardModifiers mods = Qt::NoModifier, + Qt::MouseEventSource source = Qt::MouseEventNotSynthesized); + static void handleFrameStrutMouseEvent(QWindow *window, const QPointF &local, const QPointF &global, Qt::MouseButtons b, + Qt::KeyboardModifiers mods = Qt::NoModifier, + Qt::MouseEventSource source = Qt::MouseEventNotSynthesized); + static void handleFrameStrutMouseEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, Qt::MouseButtons b, + Qt::KeyboardModifiers mods = Qt::NoModifier, + Qt::MouseEventSource source = Qt::MouseEventNotSynthesized); + + static bool handleShortcutEvent(QWindow *window, ulong timestamp, int k, Qt::KeyboardModifiers mods, quint32 nativeScanCode, + quint32 nativeVirtualKey, quint32 nativeModifiers, const QString & text = QString(), bool autorep = false, ushort count = 1); + + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static bool handleKeyEvent(QWindow *window, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text = QString(), bool autorep = false, ushort count = 1); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static bool handleKeyEvent(QWindow *window, ulong timestamp, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text = QString(), bool autorep = false, ushort count = 1); + + static bool handleExtendedKeyEvent(QWindow *window, QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, + quint32 nativeScanCode, quint32 nativeVirtualKey, + quint32 nativeModifiers, + const QString& text = QString(), bool autorep = false, + ushort count = 1, bool tryShortcutOverride = true); + static bool handleExtendedKeyEvent(QWindow *window, ulong timestamp, QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, + quint32 nativeScanCode, quint32 nativeVirtualKey, + quint32 nativeModifiers, + const QString& text = QString(), bool autorep = false, + ushort count = 1, bool tryShortcutOverride = true); + static void handleWheelEvent(QWindow *window, const QPointF &local, const QPointF &global, + QPoint pixelDelta, QPoint angleDelta, + Qt::KeyboardModifiers mods = Qt::NoModifier, + Qt::ScrollPhase phase = Qt::NoScrollPhase, + Qt::MouseEventSource source = Qt::MouseEventNotSynthesized); + static void handleWheelEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, + QPoint pixelDelta, QPoint angleDelta, + Qt::KeyboardModifiers mods = Qt::NoModifier, + Qt::ScrollPhase phase = Qt::NoScrollPhase, + Qt::MouseEventSource source = Qt::MouseEventNotSynthesized, + bool inverted = false); + + // Wheel event compatibility functions. Will be removed: do not use. + static void handleWheelEvent(QWindow *window, const QPointF &local, const QPointF &global, int d, Qt::Orientation o, Qt::KeyboardModifiers mods = Qt::NoModifier); + static void handleWheelEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, int d, Qt::Orientation o, Qt::KeyboardModifiers mods = Qt::NoModifier); + + struct TouchPoint { + TouchPoint() : id(0), uniqueId(-1), pressure(0), rotation(0), state(Qt::TouchPointStationary) { } + int id; // for application use + qint64 uniqueId; // for TUIO: object/token ID; otherwise empty + // TODO for TUIO 2.0: add registerPointerUniqueID(QPointingDeviceUniqueId) + QPointF normalPosition; // touch device coordinates, (0 to 1, 0 to 1) + QRectF area; // dimensions of the elliptical contact patch, unrotated, and centered at position in screen coordinates + // width is the horizontal diameter, height is the vertical diameter + qreal pressure; // 0 to 1 + qreal rotation; // rotation applied to the elliptical contact patch + // 0 means pointing straight up; 0 if unknown (like QTabletEvent::rotation) + Qt::TouchPointState state; //Qt::TouchPoint{Pressed|Moved|Stationary|Released} + QVector2D velocity; // in screen coordinate system, pixels / seconds + QTouchEvent::TouchPoint::InfoFlags flags; + QVector<QPointF> rawPositions; // in screen coordinates + }; + + static void registerTouchDevice(const QTouchDevice *device); + static void unregisterTouchDevice(const QTouchDevice *device); + static bool isTouchDeviceRegistered(const QTouchDevice *device); + + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleTouchEvent(QWindow *window, QTouchDevice *device, + const QList<struct TouchPoint> &points, Qt::KeyboardModifiers mods = Qt::NoModifier); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleTouchEvent(QWindow *window, ulong timestamp, QTouchDevice *device, + const QList<struct TouchPoint> &points, Qt::KeyboardModifiers mods = Qt::NoModifier); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleTouchCancelEvent(QWindow *window, QTouchDevice *device, Qt::KeyboardModifiers mods = Qt::NoModifier); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleTouchCancelEvent(QWindow *window, ulong timestamp, QTouchDevice *device, Qt::KeyboardModifiers mods = Qt::NoModifier); + + // rect is relative to parent + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleGeometryChange(QWindow *window, const QRect &newRect, const QRect &oldRect = QRect()); + + // region is in local coordinates, do not confuse with geometry which is parent-relative + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleExposeEvent(QWindow *window, const QRegion ®ion); + + static void handleCloseEvent(QWindow *window, bool *accepted = Q_NULLPTR); + + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleEnterEvent(QWindow *window, const QPointF &local = QPointF(), const QPointF& global = QPointF()); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleLeaveEvent(QWindow *window); + static void handleEnterLeaveEvent(QWindow *enter, QWindow *leave, const QPointF &local = QPointF(), const QPointF& global = QPointF()); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleWindowActivated(QWindow *window, Qt::FocusReason r = Qt::OtherFocusReason); + + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleWindowStateChanged(QWindow *window, Qt::WindowState newState, int oldState = -1); + static void handleWindowScreenChanged(QWindow *window, QScreen *newScreen); + + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleSafeAreaMarginsChanged(QWindow *window); + + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleApplicationStateChanged(Qt::ApplicationState newState, bool forcePropagate = false); + +#ifndef QT_NO_DRAGANDDROP + // Drag and drop. These events are sent immediately. + static QPlatformDragQtResponse handleDrag(QWindow *window, const QMimeData *dropData, const QPoint &p, Qt::DropActions supportedActions); + static QPlatformDropQtResponse handleDrop(QWindow *window, const QMimeData *dropData, const QPoint &p, Qt::DropActions supportedActions); +#endif + + static bool handleNativeEvent(QWindow *window, const QByteArray &eventType, void *message, long *result); + + // Changes to the screen + static void handleScreenOrientationChange(QScreen *screen, Qt::ScreenOrientation newOrientation); + static void handleScreenGeometryChange(QScreen *screen, const QRect &newGeometry, const QRect &newAvailableGeometry); + static void handleScreenLogicalDotsPerInchChange(QScreen *screen, qreal newDpiX, qreal newDpiY); + static void handleScreenRefreshRateChange(QScreen *screen, qreal newRefreshRate); + + static void handleThemeChange(QWindow *window); + + static void handleFileOpenEvent(const QString& fileName); + static void handleFileOpenEvent(const QUrl &url); + + static void handleTabletEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, + int device, int pointerType, Qt::MouseButtons buttons, qreal pressure, int xTilt, int yTilt, + qreal tangentialPressure, qreal rotation, int z, qint64 uid, + Qt::KeyboardModifiers modifiers = Qt::NoModifier); + static void handleTabletEvent(QWindow *window, const QPointF &local, const QPointF &global, + int device, int pointerType, Qt::MouseButtons buttons, qreal pressure, int xTilt, int yTilt, + qreal tangentialPressure, qreal rotation, int z, qint64 uid, + Qt::KeyboardModifiers modifiers = Qt::NoModifier); + static void handleTabletEvent(QWindow *window, 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, + Qt::KeyboardModifiers modifiers = Qt::NoModifier); // ### remove in Qt 6 + static void handleTabletEvent(QWindow *window, 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, + Qt::KeyboardModifiers modifiers = Qt::NoModifier); // ### remove in Qt 6 + static void handleTabletEnterProximityEvent(ulong timestamp, int device, int pointerType, qint64 uid); + static void handleTabletEnterProximityEvent(int device, int pointerType, qint64 uid); + static void handleTabletLeaveProximityEvent(ulong timestamp, int device, int pointerType, qint64 uid); + static void handleTabletLeaveProximityEvent(int device, int pointerType, qint64 uid); + +#ifndef QT_NO_GESTURES + static void handleGestureEvent(QWindow *window, ulong timestamp, Qt::NativeGestureType type, + QPointF &local, QPointF &global); + static void handleGestureEventWithRealValue(QWindow *window, ulong timestamp, Qt::NativeGestureType type, + qreal value, QPointF &local, QPointF &global); + static void handleGestureEventWithSequenceIdAndValue(QWindow *window, ulong timestamp,Qt::NativeGestureType type, + ulong sequenceId, quint64 value, QPointF &local, QPointF &global); +#endif // QT_NO_GESTURES + + static void handlePlatformPanelEvent(QWindow *window); +#ifndef QT_NO_CONTEXTMENU + static void handleContextMenuEvent(QWindow *window, bool mouseTriggered, + const QPoint &pos, const QPoint &globalPos, + Qt::KeyboardModifiers modifiers); +#endif +#if QT_CONFIG(whatsthis) + static void handleEnterWhatsThisEvent(); +#endif + + // For event dispatcher implementations + static bool sendWindowSystemEvents(QEventLoop::ProcessEventsFlags flags); + static void setSynchronousWindowSystemEvents(bool enable); + static bool flushWindowSystemEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents); + static void deferredFlushWindowSystemEvents(QEventLoop::ProcessEventsFlags flags); + static int windowSystemEventsQueued(); + static bool nonUserInputEventsQueued(); +}; + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QWindowSystemInterface::TouchPoint &p); +#endif + +QT_END_NAMESPACE + +#endif // QWINDOWSYSTEMINTERFACE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qwindowsysteminterface_p.h b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qwindowsysteminterface_p.h new file mode 100644 index 000000000..5b41ccc3a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/5.9.4/QtGui/qpa/qwindowsysteminterface_p.h @@ -0,0 +1,546 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QWINDOWSYSTEMINTERFACE_P_H +#define QWINDOWSYSTEMINTERFACE_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 <QtGui/private/qtguiglobal_p.h> +#include "qwindowsysteminterface.h" + +#include <QElapsedTimer> +#include <QPointer> +#include <QMutex> +#include <QList> +#include <QWaitCondition> +#include <QAtomicInt> + +QT_BEGIN_NAMESPACE + +class QWindowSystemEventHandler; + +class Q_GUI_EXPORT QWindowSystemInterfacePrivate { +public: + enum EventType { + UserInputEvent = 0x100, + Close = UserInputEvent | 0x01, + GeometryChange = 0x02, + Enter = UserInputEvent | 0x03, + Leave = UserInputEvent | 0x04, + ActivatedWindow = 0x05, + WindowStateChanged = 0x06, + Mouse = UserInputEvent | 0x07, + FrameStrutMouse = UserInputEvent | 0x08, + Wheel = UserInputEvent | 0x09, + Key = UserInputEvent | 0x0a, + Touch = UserInputEvent | 0x0b, + ScreenOrientation = 0x0c, + ScreenGeometry = 0x0d, + ScreenAvailableGeometry = 0x0e, + ScreenLogicalDotsPerInch = 0x0f, + ScreenRefreshRate = 0x10, + ThemeChange = 0x11, + Expose = 0x12, + FileOpen = UserInputEvent | 0x13, + Tablet = UserInputEvent | 0x14, + TabletEnterProximity = UserInputEvent | 0x15, + TabletLeaveProximity = UserInputEvent | 0x16, + PlatformPanel = UserInputEvent | 0x17, + ContextMenu = UserInputEvent | 0x18, + EnterWhatsThisMode = UserInputEvent | 0x19, +#ifndef QT_NO_GESTURES + Gesture = UserInputEvent | 0x1a, +#endif + ApplicationStateChanged = 0x19, + FlushEvents = 0x20, + WindowScreenChanged = 0x21, + SafeAreaMarginsChanged = 0x22 + }; + + class WindowSystemEvent { + public: + enum { + Synthetic = 0x1, + NullWindow = 0x2 + }; + + explicit WindowSystemEvent(EventType t) + : type(t), flags(0), eventAccepted(true) { } + virtual ~WindowSystemEvent() { } + + bool synthetic() const { return flags & Synthetic; } + bool nullWindow() const { return flags & NullWindow; } + + EventType type; + int flags; + bool eventAccepted; + }; + + class CloseEvent : public WindowSystemEvent { + public: + explicit CloseEvent(QWindow *w, bool *a = 0) + : WindowSystemEvent(Close), window(w), accepted(a) + { } + QPointer<QWindow> window; + bool *accepted; + }; + + class GeometryChangeEvent : public WindowSystemEvent { + public: + GeometryChangeEvent(QWindow *window, const QRect &newGeometry, const QRect &oldGeometry) + : WindowSystemEvent(GeometryChange), window(window), newGeometry(newGeometry), oldGeometry(oldGeometry) + { } + QPointer<QWindow> window; + QRect newGeometry; + QRect oldGeometry; + }; + + class EnterEvent : public WindowSystemEvent { + public: + explicit EnterEvent(QWindow *enter, const QPointF &local, const QPointF &global) + : WindowSystemEvent(Enter), enter(enter), localPos(local), globalPos(global) + { } + QPointer<QWindow> enter; + const QPointF localPos; + const QPointF globalPos; + }; + + class LeaveEvent : public WindowSystemEvent { + public: + explicit LeaveEvent(QWindow *leave) + : WindowSystemEvent(Leave), leave(leave) + { } + QPointer<QWindow> leave; + }; + + class ActivatedWindowEvent : public WindowSystemEvent { + public: + explicit ActivatedWindowEvent(QWindow *activatedWindow, Qt::FocusReason r) + : WindowSystemEvent(ActivatedWindow), activated(activatedWindow), reason(r) + { } + QPointer<QWindow> activated; + Qt::FocusReason reason; + }; + + class WindowStateChangedEvent : public WindowSystemEvent { + public: + WindowStateChangedEvent(QWindow *_window, Qt::WindowState _newState, Qt::WindowState _oldState) + : WindowSystemEvent(WindowStateChanged), window(_window), newState(_newState), oldState(_oldState) + { } + + QPointer<QWindow> window; + Qt::WindowState newState; + Qt::WindowState oldState; + }; + + class WindowScreenChangedEvent : public WindowSystemEvent { + public: + WindowScreenChangedEvent(QWindow *w, QScreen *s) + : WindowSystemEvent(WindowScreenChanged), window(w), screen(s) + { } + + QPointer<QWindow> window; + QPointer<QScreen> screen; + }; + + class SafeAreaMarginsChangedEvent : public WindowSystemEvent { + public: + SafeAreaMarginsChangedEvent(QWindow *w) + : WindowSystemEvent(SafeAreaMarginsChanged), window(w) + { } + + QPointer<QWindow> window; + }; + + class ApplicationStateChangedEvent : public WindowSystemEvent { + public: + ApplicationStateChangedEvent(Qt::ApplicationState newState, bool forcePropagate = false) + : WindowSystemEvent(ApplicationStateChanged), newState(newState), forcePropagate(forcePropagate) + { } + + Qt::ApplicationState newState; + bool forcePropagate; + }; + + class FlushEventsEvent : public WindowSystemEvent { + public: + FlushEventsEvent(QEventLoop::ProcessEventsFlags f = QEventLoop::AllEvents) + : WindowSystemEvent(FlushEvents) + , flags(f) + { } + QEventLoop::ProcessEventsFlags flags; + }; + + class UserEvent : public WindowSystemEvent { + public: + UserEvent(QWindow * w, ulong time, EventType t) + : WindowSystemEvent(t), window(w), timestamp(time) + { + if (!w) + flags |= NullWindow; + } + QPointer<QWindow> window; + unsigned long timestamp; + }; + + class InputEvent: public UserEvent { + public: + InputEvent(QWindow * w, ulong time, EventType t, Qt::KeyboardModifiers mods) + : UserEvent(w, time, t), modifiers(mods) {} + Qt::KeyboardModifiers modifiers; + }; + + class MouseEvent : public InputEvent { + public: + MouseEvent(QWindow * w, ulong time, const QPointF &local, const QPointF &global, + Qt::MouseButtons b, Qt::KeyboardModifiers mods, + Qt::MouseEventSource src = Qt::MouseEventNotSynthesized) + : InputEvent(w, time, Mouse, mods), localPos(local), globalPos(global), buttons(b), source(src) { } + MouseEvent(QWindow * w, ulong time, EventType t, const QPointF &local, const QPointF &global, + Qt::MouseButtons b, Qt::KeyboardModifiers mods, + Qt::MouseEventSource src = Qt::MouseEventNotSynthesized) + : InputEvent(w, time, t, mods), localPos(local), globalPos(global), buttons(b), source(src) { } + QPointF localPos; + QPointF globalPos; + Qt::MouseButtons buttons; + Qt::MouseEventSource source; + }; + + class WheelEvent : public InputEvent { + public: + WheelEvent(QWindow *w, ulong time, const QPointF &local, const QPointF &global, QPoint pixelD, QPoint angleD, int qt4D, Qt::Orientation qt4O, + Qt::KeyboardModifiers mods, Qt::ScrollPhase phase = Qt::NoScrollPhase, Qt::MouseEventSource src = Qt::MouseEventNotSynthesized, bool inverted = false); + QPoint pixelDelta; + QPoint angleDelta; + int qt4Delta; + Qt::Orientation qt4Orientation; + QPointF localPos; + QPointF globalPos; + Qt::ScrollPhase phase; + Qt::MouseEventSource source; + bool inverted; + }; + + class KeyEvent : public InputEvent { + public: + KeyEvent(QWindow *w, ulong time, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text = QString(), bool autorep = false, ushort count = 1) + :InputEvent(w, time, Key, mods), key(k), unicode(text), repeat(autorep), + repeatCount(count), keyType(t), + nativeScanCode(0), nativeVirtualKey(0), nativeModifiers(0) { } + KeyEvent(QWindow *w, ulong time, QEvent::Type t, int k, Qt::KeyboardModifiers mods, + quint32 nativeSC, quint32 nativeVK, quint32 nativeMods, + const QString & text = QString(), bool autorep = false, ushort count = 1) + :InputEvent(w, time, Key, mods), key(k), unicode(text), repeat(autorep), + repeatCount(count), keyType(t), + nativeScanCode(nativeSC), nativeVirtualKey(nativeVK), nativeModifiers(nativeMods) { } + int key; + QString unicode; + bool repeat; + ushort repeatCount; + QEvent::Type keyType; + quint32 nativeScanCode; + quint32 nativeVirtualKey; + quint32 nativeModifiers; + }; + + class TouchEvent : public InputEvent { + public: + TouchEvent(QWindow *w, ulong time, QEvent::Type t, QTouchDevice *dev, + const QList<QTouchEvent::TouchPoint> &p, Qt::KeyboardModifiers mods) + :InputEvent(w, time, Touch, mods), device(dev), points(p), touchType(t) { } + QTouchDevice *device; + QList<QTouchEvent::TouchPoint> points; + QEvent::Type touchType; + }; + + class ScreenOrientationEvent : public WindowSystemEvent { + public: + ScreenOrientationEvent(QScreen *s, Qt::ScreenOrientation o) + : WindowSystemEvent(ScreenOrientation), screen(s), orientation(o) { } + QPointer<QScreen> screen; + Qt::ScreenOrientation orientation; + }; + + class ScreenGeometryEvent : public WindowSystemEvent { + public: + ScreenGeometryEvent(QScreen *s, const QRect &g, const QRect &ag) + : WindowSystemEvent(ScreenGeometry), screen(s), geometry(g), availableGeometry(ag) { } + QPointer<QScreen> screen; + QRect geometry; + QRect availableGeometry; + }; + + class ScreenLogicalDotsPerInchEvent : public WindowSystemEvent { + public: + ScreenLogicalDotsPerInchEvent(QScreen *s, qreal dx, qreal dy) + : WindowSystemEvent(ScreenLogicalDotsPerInch), screen(s), dpiX(dx), dpiY(dy) { } + QPointer<QScreen> screen; + qreal dpiX; + qreal dpiY; + }; + + class ScreenRefreshRateEvent : public WindowSystemEvent { + public: + ScreenRefreshRateEvent(QScreen *s, qreal r) + : WindowSystemEvent(ScreenRefreshRate), screen(s), rate(r) { } + QPointer<QScreen> screen; + qreal rate; + }; + + class ThemeChangeEvent : public WindowSystemEvent { + public: + explicit ThemeChangeEvent(QWindow * w) + : WindowSystemEvent(ThemeChange), window(w) { } + QPointer<QWindow> window; + }; + + class ExposeEvent : public WindowSystemEvent { + public: + ExposeEvent(QWindow *window, const QRegion ®ion); + QPointer<QWindow> window; + bool isExposed; + QRegion region; + }; + + class FileOpenEvent : public WindowSystemEvent { + public: + FileOpenEvent(const QString& fileName) + : WindowSystemEvent(FileOpen), url(QUrl::fromLocalFile(fileName)) + { } + FileOpenEvent(const QUrl &url) + : WindowSystemEvent(FileOpen), url(url) + { } + QUrl url; + }; + + class TabletEvent : public InputEvent { + public: + static void handleTabletEvent(QWindow *w, const QPointF &local, const QPointF &global, + int device, int pointerType, Qt::MouseButtons buttons, qreal pressure, int xTilt, int yTilt, + qreal tangentialPressure, qreal rotation, int z, qint64 uid, + Qt::KeyboardModifiers modifiers = Qt::NoModifier); + static void setPlatformSynthesizesMouse(bool v); + + TabletEvent(QWindow *w, ulong time, const QPointF &local, const QPointF &global, + int device, int pointerType, Qt::MouseButtons b, qreal pressure, int xTilt, int yTilt, qreal tpressure, + qreal rotation, int z, qint64 uid, Qt::KeyboardModifiers mods) + : InputEvent(w, time, Tablet, mods), + buttons(b), local(local), global(global), device(device), pointerType(pointerType), + pressure(pressure), xTilt(xTilt), yTilt(yTilt), tangentialPressure(tpressure), + rotation(rotation), z(z), uid(uid) { } + Qt::MouseButtons buttons; + QPointF local; + QPointF global; + int device; + int pointerType; + qreal pressure; + int xTilt; + int yTilt; + qreal tangentialPressure; + qreal rotation; + int z; + qint64 uid; + static bool platformSynthesizesMouse; + }; + + class TabletEnterProximityEvent : public InputEvent { + public: + TabletEnterProximityEvent(ulong time, int device, int pointerType, qint64 uid) + : InputEvent(0, time, TabletEnterProximity, Qt::NoModifier), + device(device), pointerType(pointerType), uid(uid) { } + int device; + int pointerType; + qint64 uid; + }; + + class TabletLeaveProximityEvent : public InputEvent { + public: + TabletLeaveProximityEvent(ulong time, int device, int pointerType, qint64 uid) + : InputEvent(0, time, TabletLeaveProximity, Qt::NoModifier), + device(device), pointerType(pointerType), uid(uid) { } + int device; + int pointerType; + qint64 uid; + }; + + class PlatformPanelEvent : public WindowSystemEvent { + public: + explicit PlatformPanelEvent(QWindow *w) + : WindowSystemEvent(PlatformPanel), window(w) { } + QPointer<QWindow> window; + }; + +#ifndef QT_NO_CONTEXTMENU + class ContextMenuEvent : public WindowSystemEvent { + public: + explicit ContextMenuEvent(QWindow *w, bool mouseTriggered, const QPoint &pos, + const QPoint &globalPos, Qt::KeyboardModifiers modifiers) + : WindowSystemEvent(ContextMenu), window(w), mouseTriggered(mouseTriggered), pos(pos), + globalPos(globalPos), modifiers(modifiers) { } + QPointer<QWindow> window; + bool mouseTriggered; + QPoint pos; // Only valid if triggered by mouse + QPoint globalPos; // Only valid if triggered by mouse + Qt::KeyboardModifiers modifiers; + }; +#endif + +#ifndef QT_NO_GESTURES + class GestureEvent : public InputEvent { + public: + GestureEvent(QWindow *window, ulong time, Qt::NativeGestureType type, QPointF pos, QPointF globalPos) + : InputEvent(window, time, Gesture, Qt::NoModifier), type(type), pos(pos), globalPos(globalPos), + realValue(0), sequenceId(0), intValue(0) { } + Qt::NativeGestureType type; + QPointF pos; + QPointF globalPos; + // Mac + qreal realValue; + // Windows + ulong sequenceId; + quint64 intValue; + }; +#endif + + class WindowSystemEventList { + QList<WindowSystemEvent *> impl; + mutable QMutex mutex; + public: + WindowSystemEventList() : impl(), mutex() {} + ~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() + { const QMutexLocker locker(&mutex); return impl.empty() ? 0 : impl.takeFirst(); } + WindowSystemEvent *takeFirstNonUserInputOrReturnNull() + { + const QMutexLocker locker(&mutex); + for (int i = 0; i < impl.size(); ++i) + if (!(impl.at(i)->type & QWindowSystemInterfacePrivate::UserInputEvent)) + return impl.takeAt(i); + return 0; + } + bool nonUserInputEventsQueued() + { + const QMutexLocker locker(&mutex); + for (int i = 0; i < impl.size(); ++i) + if (!(impl.at(i)->type & QWindowSystemInterfacePrivate::UserInputEvent)) + return true; + return false; + } + void append(WindowSystemEvent *e) + { const QMutexLocker locker(&mutex); impl.append(e); } + int count() const + { const QMutexLocker locker(&mutex); return impl.count(); } + WindowSystemEvent *peekAtFirstOfType(EventType t) const + { + const QMutexLocker locker(&mutex); + for (int i = 0; i < impl.size(); ++i) { + if (impl.at(i)->type == t) + return impl.at(i); + } + return 0; + } + void remove(const WindowSystemEvent *e) + { + const QMutexLocker locker(&mutex); + for (int i = 0; i < impl.size(); ++i) { + if (impl.at(i) == e) { + delete impl.takeAt(i); + break; + } + } + } + private: + Q_DISABLE_COPY(WindowSystemEventList) + }; + + static WindowSystemEventList windowSystemEventQueue; + + static int windowSystemEventsQueued(); + static bool nonUserInputEventsQueued(); + static WindowSystemEvent *getWindowSystemEvent(); + static WindowSystemEvent *getNonUserInputWindowSystemEvent(); + static WindowSystemEvent *peekWindowSystemEvent(EventType t); + static void removeWindowSystemEvent(WindowSystemEvent *event); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static bool handleWindowSystemEvent(WindowSystemEvent *ev); + +public: + static QElapsedTimer eventTime; + static bool synchronousWindowSystemEvents; + + static QWaitCondition eventsFlushed; + static QMutex flushEventMutex; + static QAtomicInt eventAccepted; + + static QList<QTouchEvent::TouchPoint> + fromNativeTouchPoints(const QList<QWindowSystemInterface::TouchPoint> &points, + const QWindow *window, quint8 deviceId, QEvent::Type *type = Q_NULLPTR); + static QList<QWindowSystemInterface::TouchPoint> + toNativeTouchPoints(const QList<QTouchEvent::TouchPoint>& pointList, + const QWindow *window); + + static void installWindowSystemEventHandler(QWindowSystemEventHandler *handler); + static void removeWindowSystemEventhandler(QWindowSystemEventHandler *handler); + static QWindowSystemEventHandler *eventHandler; +}; + +class Q_GUI_EXPORT QWindowSystemEventHandler +{ +public: + virtual ~QWindowSystemEventHandler(); + virtual bool sendEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *event); +}; + +QT_END_NAMESPACE + +#endif // QWINDOWSYSTEMINTERFACE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAbstractTextDocumentLayout b/qrenderdoc/3rdparty/qt/include/QtGui/QAbstractTextDocumentLayout new file mode 100644 index 000000000..0f49e55e5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAbstractTextDocumentLayout @@ -0,0 +1 @@ +#include "qabstracttextdocumentlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAbstractUndoItem b/qrenderdoc/3rdparty/qt/include/QtGui/QAbstractUndoItem new file mode 100644 index 000000000..387917eed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAbstractUndoItem @@ -0,0 +1 @@ +#include "qtextdocument.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessible b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessible new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessible @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleActionInterface b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleActionInterface new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleActionInterface @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleApplication b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleApplication new file mode 100644 index 000000000..2f5a27aaa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleApplication @@ -0,0 +1 @@ +#include "qaccessibleobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleBridge b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleBridge new file mode 100644 index 000000000..e79b9b3d2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleBridge @@ -0,0 +1 @@ +#include "qaccessiblebridge.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleBridgePlugin b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleBridgePlugin new file mode 100644 index 000000000..e79b9b3d2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleBridgePlugin @@ -0,0 +1 @@ +#include "qaccessiblebridge.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleEditableTextInterface b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleEditableTextInterface new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleEditableTextInterface @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleEvent new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleEvent @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleImageInterface b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleImageInterface new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleImageInterface @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleInterface b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleInterface new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleInterface @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleObject b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleObject new file mode 100644 index 000000000..2f5a27aaa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleObject @@ -0,0 +1 @@ +#include "qaccessibleobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessiblePlugin b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessiblePlugin new file mode 100644 index 000000000..330bba625 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessiblePlugin @@ -0,0 +1 @@ +#include "qaccessibleplugin.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleStateChangeEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleStateChangeEvent new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleStateChangeEvent @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTableCellInterface b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTableCellInterface new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTableCellInterface @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTableInterface b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTableInterface new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTableInterface @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTableModelChangeEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTableModelChangeEvent new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTableModelChangeEvent @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextCursorEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextCursorEvent new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextCursorEvent @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextInsertEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextInsertEvent new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextInsertEvent @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextInterface b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextInterface new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextInterface @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextRemoveEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextRemoveEvent new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextRemoveEvent @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextSelectionEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextSelectionEvent new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextSelectionEvent @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextUpdateEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextUpdateEvent new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleTextUpdateEvent @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleValueChangeEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleValueChangeEvent new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleValueChangeEvent @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleValueInterface b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleValueInterface new file mode 100644 index 000000000..b265d8d46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QAccessibleValueInterface @@ -0,0 +1 @@ +#include "qaccessible.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QActionEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QActionEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QActionEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QApplicationStateChangeEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QApplicationStateChangeEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QApplicationStateChangeEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QBackingStore b/qrenderdoc/3rdparty/qt/include/QtGui/QBackingStore new file mode 100644 index 000000000..38d3a38c1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QBackingStore @@ -0,0 +1 @@ +#include "qbackingstore.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QBitmap b/qrenderdoc/3rdparty/qt/include/QtGui/QBitmap new file mode 100644 index 000000000..c24b7aea9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QBitmap @@ -0,0 +1 @@ +#include "qbitmap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QBrush b/qrenderdoc/3rdparty/qt/include/QtGui/QBrush new file mode 100644 index 000000000..3e1695520 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QBrush @@ -0,0 +1 @@ +#include "qbrush.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QBrushData b/qrenderdoc/3rdparty/qt/include/QtGui/QBrushData new file mode 100644 index 000000000..3e1695520 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QBrushData @@ -0,0 +1 @@ +#include "qbrush.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QClipboard b/qrenderdoc/3rdparty/qt/include/QtGui/QClipboard new file mode 100644 index 000000000..2a8f711b2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QClipboard @@ -0,0 +1 @@ +#include "qclipboard.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QCloseEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QCloseEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QCloseEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QColor b/qrenderdoc/3rdparty/qt/include/QtGui/QColor new file mode 100644 index 000000000..c41d44455 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QColor @@ -0,0 +1 @@ +#include "qcolor.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QConicalGradient b/qrenderdoc/3rdparty/qt/include/QtGui/QConicalGradient new file mode 100644 index 000000000..3e1695520 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QConicalGradient @@ -0,0 +1 @@ +#include "qbrush.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QContextMenuEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QContextMenuEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QContextMenuEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QCursor b/qrenderdoc/3rdparty/qt/include/QtGui/QCursor new file mode 100644 index 000000000..828573d69 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QCursor @@ -0,0 +1 @@ +#include "qcursor.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QDesktopServices b/qrenderdoc/3rdparty/qt/include/QtGui/QDesktopServices new file mode 100644 index 000000000..31fa1d647 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QDesktopServices @@ -0,0 +1 @@ +#include "qdesktopservices.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QDoubleValidator b/qrenderdoc/3rdparty/qt/include/QtGui/QDoubleValidator new file mode 100644 index 000000000..c83840c4e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QDoubleValidator @@ -0,0 +1 @@ +#include "qvalidator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QDrag b/qrenderdoc/3rdparty/qt/include/QtGui/QDrag new file mode 100644 index 000000000..846b8a121 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QDrag @@ -0,0 +1 @@ +#include "qdrag.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QDragEnterEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QDragEnterEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QDragEnterEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QDragLeaveEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QDragLeaveEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QDragLeaveEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QDragMoveEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QDragMoveEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QDragMoveEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QDropEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QDropEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QDropEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QEnterEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QEnterEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QEnterEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QExposeEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QExposeEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QExposeEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QFileOpenEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QFileOpenEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QFileOpenEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QFocusEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QFocusEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QFocusEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QFont b/qrenderdoc/3rdparty/qt/include/QtGui/QFont new file mode 100644 index 000000000..1a063092f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QFont @@ -0,0 +1 @@ +#include "qfont.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QFontDatabase b/qrenderdoc/3rdparty/qt/include/QtGui/QFontDatabase new file mode 100644 index 000000000..129732b7d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QFontDatabase @@ -0,0 +1 @@ +#include "qfontdatabase.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QFontInfo b/qrenderdoc/3rdparty/qt/include/QtGui/QFontInfo new file mode 100644 index 000000000..fe191645c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QFontInfo @@ -0,0 +1 @@ +#include "qfontinfo.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QFontMetrics b/qrenderdoc/3rdparty/qt/include/QtGui/QFontMetrics new file mode 100644 index 000000000..270eff5bc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QFontMetrics @@ -0,0 +1 @@ +#include "qfontmetrics.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QFontMetricsF b/qrenderdoc/3rdparty/qt/include/QtGui/QFontMetricsF new file mode 100644 index 000000000..270eff5bc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QFontMetricsF @@ -0,0 +1 @@ +#include "qfontmetrics.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QGenericMatrix b/qrenderdoc/3rdparty/qt/include/QtGui/QGenericMatrix new file mode 100644 index 000000000..34a0507eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QGenericMatrix @@ -0,0 +1 @@ +#include "qgenericmatrix.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QGenericPlugin b/qrenderdoc/3rdparty/qt/include/QtGui/QGenericPlugin new file mode 100644 index 000000000..441fef48b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QGenericPlugin @@ -0,0 +1 @@ +#include "qgenericplugin.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QGenericPluginFactory b/qrenderdoc/3rdparty/qt/include/QtGui/QGenericPluginFactory new file mode 100644 index 000000000..642f92389 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QGenericPluginFactory @@ -0,0 +1 @@ +#include "qgenericpluginfactory.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QGlyphRun b/qrenderdoc/3rdparty/qt/include/QtGui/QGlyphRun new file mode 100644 index 000000000..f4a0a4cd0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QGlyphRun @@ -0,0 +1 @@ +#include "qglyphrun.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QGradient b/qrenderdoc/3rdparty/qt/include/QtGui/QGradient new file mode 100644 index 000000000..3e1695520 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QGradient @@ -0,0 +1 @@ +#include "qbrush.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QGradientStop b/qrenderdoc/3rdparty/qt/include/QtGui/QGradientStop new file mode 100644 index 000000000..3e1695520 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QGradientStop @@ -0,0 +1 @@ +#include "qbrush.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QGradientStops b/qrenderdoc/3rdparty/qt/include/QtGui/QGradientStops new file mode 100644 index 000000000..3e1695520 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QGradientStops @@ -0,0 +1 @@ +#include "qbrush.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QGuiApplication b/qrenderdoc/3rdparty/qt/include/QtGui/QGuiApplication new file mode 100644 index 000000000..0337e2526 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QGuiApplication @@ -0,0 +1 @@ +#include "qguiapplication.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QHelpEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QHelpEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QHelpEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QHideEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QHideEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QHideEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QHoverEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QHoverEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QHoverEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QIcon b/qrenderdoc/3rdparty/qt/include/QtGui/QIcon new file mode 100644 index 000000000..e41add8cf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QIcon @@ -0,0 +1 @@ +#include "qicon.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QIconDragEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QIconDragEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QIconDragEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QIconEngine b/qrenderdoc/3rdparty/qt/include/QtGui/QIconEngine new file mode 100644 index 000000000..254f3419b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QIconEngine @@ -0,0 +1 @@ +#include "qiconengine.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QIconEnginePlugin b/qrenderdoc/3rdparty/qt/include/QtGui/QIconEnginePlugin new file mode 100644 index 000000000..6ff8cf1f6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QIconEnginePlugin @@ -0,0 +1 @@ +#include "qiconengineplugin.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QIconEngineV2 b/qrenderdoc/3rdparty/qt/include/QtGui/QIconEngineV2 new file mode 100644 index 000000000..254f3419b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QIconEngineV2 @@ -0,0 +1 @@ +#include "qiconengine.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QImage b/qrenderdoc/3rdparty/qt/include/QtGui/QImage new file mode 100644 index 000000000..b6977bc29 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QImage @@ -0,0 +1 @@ +#include "qimage.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QImageCleanupFunction b/qrenderdoc/3rdparty/qt/include/QtGui/QImageCleanupFunction new file mode 100644 index 000000000..b6977bc29 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QImageCleanupFunction @@ -0,0 +1 @@ +#include "qimage.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QImageIOHandler b/qrenderdoc/3rdparty/qt/include/QtGui/QImageIOHandler new file mode 100644 index 000000000..f8a75c461 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QImageIOHandler @@ -0,0 +1 @@ +#include "qimageiohandler.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QImageIOPlugin b/qrenderdoc/3rdparty/qt/include/QtGui/QImageIOPlugin new file mode 100644 index 000000000..f8a75c461 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QImageIOPlugin @@ -0,0 +1 @@ +#include "qimageiohandler.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QImageReader b/qrenderdoc/3rdparty/qt/include/QtGui/QImageReader new file mode 100644 index 000000000..7b206291f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QImageReader @@ -0,0 +1 @@ +#include "qimagereader.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QImageTextKeyLang b/qrenderdoc/3rdparty/qt/include/QtGui/QImageTextKeyLang new file mode 100644 index 000000000..b6977bc29 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QImageTextKeyLang @@ -0,0 +1 @@ +#include "qimage.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QImageWriter b/qrenderdoc/3rdparty/qt/include/QtGui/QImageWriter new file mode 100644 index 000000000..e5b29a9d1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QImageWriter @@ -0,0 +1 @@ +#include "qimagewriter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QInputEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QInputEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QInputEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QInputMethod b/qrenderdoc/3rdparty/qt/include/QtGui/QInputMethod new file mode 100644 index 000000000..b4640294a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QInputMethod @@ -0,0 +1 @@ +#include "qinputmethod.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QInputMethodEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QInputMethodEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QInputMethodEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QInputMethodQueryEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QInputMethodQueryEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QInputMethodQueryEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QIntValidator b/qrenderdoc/3rdparty/qt/include/QtGui/QIntValidator new file mode 100644 index 000000000..c83840c4e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QIntValidator @@ -0,0 +1 @@ +#include "qvalidator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QKeyEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QKeyEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QKeyEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QKeySequence b/qrenderdoc/3rdparty/qt/include/QtGui/QKeySequence new file mode 100644 index 000000000..2fadb4ef0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QKeySequence @@ -0,0 +1 @@ +#include "qkeysequence.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QLinearGradient b/qrenderdoc/3rdparty/qt/include/QtGui/QLinearGradient new file mode 100644 index 000000000..3e1695520 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QLinearGradient @@ -0,0 +1 @@ +#include "qbrush.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QList b/qrenderdoc/3rdparty/qt/include/QtGui/QList new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QList @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix new file mode 100644 index 000000000..3e49868e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix @@ -0,0 +1 @@ +#include "qmatrix.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix2x2 b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix2x2 new file mode 100644 index 000000000..34a0507eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix2x2 @@ -0,0 +1 @@ +#include "qgenericmatrix.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix2x3 b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix2x3 new file mode 100644 index 000000000..34a0507eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix2x3 @@ -0,0 +1 @@ +#include "qgenericmatrix.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix2x4 b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix2x4 new file mode 100644 index 000000000..34a0507eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix2x4 @@ -0,0 +1 @@ +#include "qgenericmatrix.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix3x2 b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix3x2 new file mode 100644 index 000000000..34a0507eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix3x2 @@ -0,0 +1 @@ +#include "qgenericmatrix.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix3x3 b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix3x3 new file mode 100644 index 000000000..34a0507eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix3x3 @@ -0,0 +1 @@ +#include "qgenericmatrix.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix3x4 b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix3x4 new file mode 100644 index 000000000..34a0507eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix3x4 @@ -0,0 +1 @@ +#include "qgenericmatrix.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix4x2 b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix4x2 new file mode 100644 index 000000000..34a0507eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix4x2 @@ -0,0 +1 @@ +#include "qgenericmatrix.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix4x3 b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix4x3 new file mode 100644 index 000000000..34a0507eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix4x3 @@ -0,0 +1 @@ +#include "qgenericmatrix.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix4x4 b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix4x4 new file mode 100644 index 000000000..126fb724a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMatrix4x4 @@ -0,0 +1 @@ +#include "qmatrix4x4.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMouseEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QMouseEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMouseEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMoveEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QMoveEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMoveEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QMovie b/qrenderdoc/3rdparty/qt/include/QtGui/QMovie new file mode 100644 index 000000000..9b244ce00 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QMovie @@ -0,0 +1 @@ +#include "qmovie.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QNativeGestureEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QNativeGestureEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QNativeGestureEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOffscreenSurface b/qrenderdoc/3rdparty/qt/include/QtGui/QOffscreenSurface new file mode 100644 index 000000000..e69f40783 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOffscreenSurface @@ -0,0 +1 @@ +#include "qoffscreensurface.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLBuffer b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLBuffer new file mode 100644 index 000000000..f0b857424 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLBuffer @@ -0,0 +1 @@ +#include "qopenglbuffer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLContext b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLContext new file mode 100644 index 000000000..6120063e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLContext @@ -0,0 +1 @@ +#include "qopenglcontext.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLContextGroup b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLContextGroup new file mode 100644 index 000000000..6120063e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLContextGroup @@ -0,0 +1 @@ +#include "qopenglcontext.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLDebugLogger b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLDebugLogger new file mode 100644 index 000000000..64dc17871 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLDebugLogger @@ -0,0 +1 @@ +#include "qopengldebug.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLDebugMessage b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLDebugMessage new file mode 100644 index 000000000..64dc17871 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLDebugMessage @@ -0,0 +1 @@ +#include "qopengldebug.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLExtraFunctions b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLExtraFunctions new file mode 100644 index 000000000..b965639d4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLExtraFunctions @@ -0,0 +1 @@ +#include "qopenglextrafunctions.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLExtraFunctionsPrivate b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLExtraFunctionsPrivate new file mode 100644 index 000000000..b965639d4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLExtraFunctionsPrivate @@ -0,0 +1 @@ +#include "qopenglextrafunctions.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFramebufferObject b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFramebufferObject new file mode 100644 index 000000000..35309be0a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFramebufferObject @@ -0,0 +1 @@ +#include "qopenglframebufferobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFramebufferObjectFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFramebufferObjectFormat new file mode 100644 index 000000000..35309be0a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFramebufferObjectFormat @@ -0,0 +1 @@ +#include "qopenglframebufferobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions new file mode 100644 index 000000000..808cfaf6d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions @@ -0,0 +1 @@ +#include "qopenglfunctions.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctionsPrivate b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctionsPrivate new file mode 100644 index 000000000..808cfaf6d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctionsPrivate @@ -0,0 +1 @@ +#include "qopenglfunctions.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_0 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_0 new file mode 100644 index 000000000..e468cabb8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_0 @@ -0,0 +1 @@ +#include "qopenglfunctions_1_0.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_1 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_1 new file mode 100644 index 000000000..9bd4e9448 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_1 @@ -0,0 +1 @@ +#include "qopenglfunctions_1_1.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_2 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_2 new file mode 100644 index 000000000..72c383717 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_2 @@ -0,0 +1 @@ +#include "qopenglfunctions_1_2.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_3 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_3 new file mode 100644 index 000000000..7016e0b85 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_3 @@ -0,0 +1 @@ +#include "qopenglfunctions_1_3.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_4 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_4 new file mode 100644 index 000000000..d713cb7d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_4 @@ -0,0 +1 @@ +#include "qopenglfunctions_1_4.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_5 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_5 new file mode 100644 index 000000000..815f90bbb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_1_5 @@ -0,0 +1 @@ +#include "qopenglfunctions_1_5.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_2_0 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_2_0 new file mode 100644 index 000000000..7373153f0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_2_0 @@ -0,0 +1 @@ +#include "qopenglfunctions_2_0.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_2_1 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_2_1 new file mode 100644 index 000000000..8af5bee76 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_2_1 @@ -0,0 +1 @@ +#include "qopenglfunctions_2_1.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_0 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_0 new file mode 100644 index 000000000..bc3b41f3f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_0 @@ -0,0 +1 @@ +#include "qopenglfunctions_3_0.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_1 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_1 new file mode 100644 index 000000000..9e53b0819 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_1 @@ -0,0 +1 @@ +#include "qopenglfunctions_3_1.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_2_Compatibility b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_2_Compatibility new file mode 100644 index 000000000..280b8872d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_2_Compatibility @@ -0,0 +1 @@ +#include "qopenglfunctions_3_2_compatibility.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_2_Core b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_2_Core new file mode 100644 index 000000000..47534a4f0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_2_Core @@ -0,0 +1 @@ +#include "qopenglfunctions_3_2_core.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_3_Compatibility b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_3_Compatibility new file mode 100644 index 000000000..0c3017556 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_3_Compatibility @@ -0,0 +1 @@ +#include "qopenglfunctions_3_3_compatibility.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_3_Core b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_3_Core new file mode 100644 index 000000000..4bf5594a0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_3_3_Core @@ -0,0 +1 @@ +#include "qopenglfunctions_3_3_core.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_0_Compatibility b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_0_Compatibility new file mode 100644 index 000000000..ed52a864b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_0_Compatibility @@ -0,0 +1 @@ +#include "qopenglfunctions_4_0_compatibility.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_0_Core b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_0_Core new file mode 100644 index 000000000..6ddb1a7bf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_0_Core @@ -0,0 +1 @@ +#include "qopenglfunctions_4_0_core.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_1_Compatibility b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_1_Compatibility new file mode 100644 index 000000000..8c3fd7024 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_1_Compatibility @@ -0,0 +1 @@ +#include "qopenglfunctions_4_1_compatibility.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_1_Core b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_1_Core new file mode 100644 index 000000000..1d2b6604c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_1_Core @@ -0,0 +1 @@ +#include "qopenglfunctions_4_1_core.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_2_Compatibility b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_2_Compatibility new file mode 100644 index 000000000..3982cc524 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_2_Compatibility @@ -0,0 +1 @@ +#include "qopenglfunctions_4_2_compatibility.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_2_Core b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_2_Core new file mode 100644 index 000000000..2aa283c69 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_2_Core @@ -0,0 +1 @@ +#include "qopenglfunctions_4_2_core.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_3_Compatibility b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_3_Compatibility new file mode 100644 index 000000000..d7014b059 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_3_Compatibility @@ -0,0 +1 @@ +#include "qopenglfunctions_4_3_compatibility.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_3_Core b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_3_Core new file mode 100644 index 000000000..2cb0df72a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_3_Core @@ -0,0 +1 @@ +#include "qopenglfunctions_4_3_core.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_4_Compatibility b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_4_Compatibility new file mode 100644 index 000000000..2ac39b8cb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_4_Compatibility @@ -0,0 +1 @@ +#include "qopenglfunctions_4_4_compatibility.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_4_Core b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_4_Core new file mode 100644 index 000000000..ad5cdcdf1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_4_Core @@ -0,0 +1 @@ +#include "qopenglfunctions_4_4_core.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_5_Compatibility b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_5_Compatibility new file mode 100644 index 000000000..fc2fcb6bb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_5_Compatibility @@ -0,0 +1 @@ +#include "qopenglfunctions_4_5_compatibility.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_5_Core b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_5_Core new file mode 100644 index 000000000..7a65eb2ee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_4_5_Core @@ -0,0 +1 @@ +#include "qopenglfunctions_4_5_core.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_ES2 b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_ES2 new file mode 100644 index 000000000..375d19724 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLFunctions_ES2 @@ -0,0 +1 @@ +#include "qopenglfunctions_es2.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLPaintDevice b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLPaintDevice new file mode 100644 index 000000000..e55debb32 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLPaintDevice @@ -0,0 +1 @@ +#include "qopenglpaintdevice.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLPixelTransferOptions b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLPixelTransferOptions new file mode 100644 index 000000000..547db69de --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLPixelTransferOptions @@ -0,0 +1 @@ +#include "qopenglpixeltransferoptions.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLShader b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLShader new file mode 100644 index 000000000..23c16000f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLShader @@ -0,0 +1 @@ +#include "qopenglshaderprogram.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLShaderProgram b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLShaderProgram new file mode 100644 index 000000000..23c16000f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLShaderProgram @@ -0,0 +1 @@ +#include "qopenglshaderprogram.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTexture b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTexture new file mode 100644 index 000000000..6ff7e4dc8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTexture @@ -0,0 +1 @@ +#include "qopengltexture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTextureBlitter b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTextureBlitter new file mode 100644 index 000000000..70a4cb832 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTextureBlitter @@ -0,0 +1 @@ +#include "qopengltextureblitter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTimeMonitor b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTimeMonitor new file mode 100644 index 000000000..f147ac60d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTimeMonitor @@ -0,0 +1 @@ +#include "qopengltimerquery.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTimerQuery b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTimerQuery new file mode 100644 index 000000000..f147ac60d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLTimerQuery @@ -0,0 +1 @@ +#include "qopengltimerquery.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLVersionFunctions b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLVersionFunctions new file mode 100644 index 000000000..1ad7c890e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLVersionFunctions @@ -0,0 +1 @@ +#include "qopenglversionfunctions.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLVersionProfile b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLVersionProfile new file mode 100644 index 000000000..6120063e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLVersionProfile @@ -0,0 +1 @@ +#include "qopenglcontext.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLVertexArrayObject b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLVertexArrayObject new file mode 100644 index 000000000..0b5052749 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLVertexArrayObject @@ -0,0 +1 @@ +#include "qopenglvertexarrayobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLWindow b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLWindow new file mode 100644 index 000000000..f3596ebb7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QOpenGLWindow @@ -0,0 +1 @@ +#include "qopenglwindow.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPageLayout b/qrenderdoc/3rdparty/qt/include/QtGui/QPageLayout new file mode 100644 index 000000000..278cef516 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPageLayout @@ -0,0 +1 @@ +#include "qpagelayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPageSize b/qrenderdoc/3rdparty/qt/include/QtGui/QPageSize new file mode 100644 index 000000000..8d0d37972 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPageSize @@ -0,0 +1 @@ +#include "qpagesize.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPagedPaintDevice b/qrenderdoc/3rdparty/qt/include/QtGui/QPagedPaintDevice new file mode 100644 index 000000000..85e639bac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPagedPaintDevice @@ -0,0 +1 @@ +#include "qpagedpaintdevice.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPaintDevice b/qrenderdoc/3rdparty/qt/include/QtGui/QPaintDevice new file mode 100644 index 000000000..3d545fc82 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPaintDevice @@ -0,0 +1 @@ +#include "qpaintdevice.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPaintDeviceWindow b/qrenderdoc/3rdparty/qt/include/QtGui/QPaintDeviceWindow new file mode 100644 index 000000000..f67a3a184 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPaintDeviceWindow @@ -0,0 +1 @@ +#include "qpaintdevicewindow.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPaintEngine b/qrenderdoc/3rdparty/qt/include/QtGui/QPaintEngine new file mode 100644 index 000000000..86d94139f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPaintEngine @@ -0,0 +1 @@ +#include "qpaintengine.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPaintEngineState b/qrenderdoc/3rdparty/qt/include/QtGui/QPaintEngineState new file mode 100644 index 000000000..86d94139f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPaintEngineState @@ -0,0 +1 @@ +#include "qpaintengine.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPaintEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QPaintEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPaintEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPainter b/qrenderdoc/3rdparty/qt/include/QtGui/QPainter new file mode 100644 index 000000000..49371ffd9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPainter @@ -0,0 +1 @@ +#include "qpainter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPainterPath b/qrenderdoc/3rdparty/qt/include/QtGui/QPainterPath new file mode 100644 index 000000000..42ce5ca58 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPainterPath @@ -0,0 +1 @@ +#include "qpainterpath.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPainterPathStroker b/qrenderdoc/3rdparty/qt/include/QtGui/QPainterPathStroker new file mode 100644 index 000000000..42ce5ca58 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPainterPathStroker @@ -0,0 +1 @@ +#include "qpainterpath.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPalette b/qrenderdoc/3rdparty/qt/include/QtGui/QPalette new file mode 100644 index 000000000..1346c8992 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPalette @@ -0,0 +1 @@ +#include "qpalette.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPdfWriter b/qrenderdoc/3rdparty/qt/include/QtGui/QPdfWriter new file mode 100644 index 000000000..e25c3967a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPdfWriter @@ -0,0 +1 @@ +#include "qpdfwriter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPen b/qrenderdoc/3rdparty/qt/include/QtGui/QPen new file mode 100644 index 000000000..275da9577 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPen @@ -0,0 +1 @@ +#include "qpen.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPicture b/qrenderdoc/3rdparty/qt/include/QtGui/QPicture new file mode 100644 index 000000000..a023fcf2f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPicture @@ -0,0 +1 @@ +#include "qpicture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPictureFormatPlugin b/qrenderdoc/3rdparty/qt/include/QtGui/QPictureFormatPlugin new file mode 100644 index 000000000..25d5f614c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPictureFormatPlugin @@ -0,0 +1 @@ +#include "qpictureformatplugin.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPictureIO b/qrenderdoc/3rdparty/qt/include/QtGui/QPictureIO new file mode 100644 index 000000000..a023fcf2f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPictureIO @@ -0,0 +1 @@ +#include "qpicture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPixelFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QPixelFormat new file mode 100644 index 000000000..2dcf47917 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPixelFormat @@ -0,0 +1 @@ +#include "qpixelformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPixmap b/qrenderdoc/3rdparty/qt/include/QtGui/QPixmap new file mode 100644 index 000000000..0726df13e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPixmap @@ -0,0 +1 @@ +#include "qpixmap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPixmapCache b/qrenderdoc/3rdparty/qt/include/QtGui/QPixmapCache new file mode 100644 index 000000000..4423ef8d9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPixmapCache @@ -0,0 +1 @@ +#include "qpixmapcache.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPlatformSurfaceEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QPlatformSurfaceEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPlatformSurfaceEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPointingDeviceUniqueId b/qrenderdoc/3rdparty/qt/include/QtGui/QPointingDeviceUniqueId new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPointingDeviceUniqueId @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPolygon b/qrenderdoc/3rdparty/qt/include/QtGui/QPolygon new file mode 100644 index 000000000..9fa86772a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPolygon @@ -0,0 +1 @@ +#include "qpolygon.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QPolygonF b/qrenderdoc/3rdparty/qt/include/QtGui/QPolygonF new file mode 100644 index 000000000..9fa86772a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QPolygonF @@ -0,0 +1 @@ +#include "qpolygon.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QQuaternion b/qrenderdoc/3rdparty/qt/include/QtGui/QQuaternion new file mode 100644 index 000000000..a094de76f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QQuaternion @@ -0,0 +1 @@ +#include "qquaternion.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QRadialGradient b/qrenderdoc/3rdparty/qt/include/QtGui/QRadialGradient new file mode 100644 index 000000000..3e1695520 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QRadialGradient @@ -0,0 +1 @@ +#include "qbrush.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QRasterWindow b/qrenderdoc/3rdparty/qt/include/QtGui/QRasterWindow new file mode 100644 index 000000000..b3a31a259 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QRasterWindow @@ -0,0 +1 @@ +#include "qrasterwindow.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QRawFont b/qrenderdoc/3rdparty/qt/include/QtGui/QRawFont new file mode 100644 index 000000000..a9be53d2b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QRawFont @@ -0,0 +1 @@ +#include "qrawfont.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QRegExpValidator b/qrenderdoc/3rdparty/qt/include/QtGui/QRegExpValidator new file mode 100644 index 000000000..c83840c4e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QRegExpValidator @@ -0,0 +1 @@ +#include "qvalidator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QRegion b/qrenderdoc/3rdparty/qt/include/QtGui/QRegion new file mode 100644 index 000000000..9743f8ac5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QRegion @@ -0,0 +1 @@ +#include "qregion.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QRegularExpressionValidator b/qrenderdoc/3rdparty/qt/include/QtGui/QRegularExpressionValidator new file mode 100644 index 000000000..c83840c4e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QRegularExpressionValidator @@ -0,0 +1 @@ +#include "qvalidator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QResizeEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QResizeEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QResizeEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QRgb b/qrenderdoc/3rdparty/qt/include/QtGui/QRgb new file mode 100644 index 000000000..a0d9ec7ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QRgb @@ -0,0 +1 @@ +#include "qrgb.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QRgba64 b/qrenderdoc/3rdparty/qt/include/QtGui/QRgba64 new file mode 100644 index 000000000..ae3762192 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QRgba64 @@ -0,0 +1 @@ +#include "qrgba64.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QScreen b/qrenderdoc/3rdparty/qt/include/QtGui/QScreen new file mode 100644 index 000000000..60f965ba5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QScreen @@ -0,0 +1 @@ +#include "qscreen.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QScreenOrientationChangeEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QScreenOrientationChangeEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QScreenOrientationChangeEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QScrollEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QScrollEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QScrollEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QScrollPrepareEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QScrollPrepareEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QScrollPrepareEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QSessionManager b/qrenderdoc/3rdparty/qt/include/QtGui/QSessionManager new file mode 100644 index 000000000..79f7e2886 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QSessionManager @@ -0,0 +1 @@ +#include "qsessionmanager.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QShortcutEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QShortcutEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QShortcutEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QShowEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QShowEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QShowEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QStandardItem b/qrenderdoc/3rdparty/qt/include/QtGui/QStandardItem new file mode 100644 index 000000000..cd92364a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QStandardItem @@ -0,0 +1 @@ +#include "qstandarditemmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QStandardItemModel b/qrenderdoc/3rdparty/qt/include/QtGui/QStandardItemModel new file mode 100644 index 000000000..cd92364a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QStandardItemModel @@ -0,0 +1 @@ +#include "qstandarditemmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QStaticText b/qrenderdoc/3rdparty/qt/include/QtGui/QStaticText new file mode 100644 index 000000000..e02a70395 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QStaticText @@ -0,0 +1 @@ +#include "qstatictext.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QStatusTipEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QStatusTipEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QStatusTipEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QStyleHints b/qrenderdoc/3rdparty/qt/include/QtGui/QStyleHints new file mode 100644 index 000000000..414b11ec0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QStyleHints @@ -0,0 +1 @@ +#include "qstylehints.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QSurface b/qrenderdoc/3rdparty/qt/include/QtGui/QSurface new file mode 100644 index 000000000..7461ec362 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QSurface @@ -0,0 +1 @@ +#include "qsurface.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QSurfaceFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QSurfaceFormat new file mode 100644 index 000000000..2d833ab3a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QSurfaceFormat @@ -0,0 +1 @@ +#include "qsurfaceformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QSyntaxHighlighter b/qrenderdoc/3rdparty/qt/include/QtGui/QSyntaxHighlighter new file mode 100644 index 000000000..1469367c7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QSyntaxHighlighter @@ -0,0 +1 @@ +#include "qsyntaxhighlighter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTabletEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QTabletEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTabletEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlock b/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlock new file mode 100644 index 000000000..0fdbdf8f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlock @@ -0,0 +1 @@ +#include "qtextobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlockFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlockFormat new file mode 100644 index 000000000..8367d9834 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlockFormat @@ -0,0 +1 @@ +#include "qtextformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlockGroup b/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlockGroup new file mode 100644 index 000000000..0fdbdf8f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlockGroup @@ -0,0 +1 @@ +#include "qtextobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlockUserData b/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlockUserData new file mode 100644 index 000000000..0fdbdf8f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextBlockUserData @@ -0,0 +1 @@ +#include "qtextobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextCharFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QTextCharFormat new file mode 100644 index 000000000..8367d9834 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextCharFormat @@ -0,0 +1 @@ +#include "qtextformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextCursor b/qrenderdoc/3rdparty/qt/include/QtGui/QTextCursor new file mode 100644 index 000000000..ac3741718 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextCursor @@ -0,0 +1 @@ +#include "qtextcursor.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextDocument b/qrenderdoc/3rdparty/qt/include/QtGui/QTextDocument new file mode 100644 index 000000000..387917eed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextDocument @@ -0,0 +1 @@ +#include "qtextdocument.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextDocumentFragment b/qrenderdoc/3rdparty/qt/include/QtGui/QTextDocumentFragment new file mode 100644 index 000000000..d4a5094fc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextDocumentFragment @@ -0,0 +1 @@ +#include "qtextdocumentfragment.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextDocumentWriter b/qrenderdoc/3rdparty/qt/include/QtGui/QTextDocumentWriter new file mode 100644 index 000000000..c3afa64b5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextDocumentWriter @@ -0,0 +1 @@ +#include "qtextdocumentwriter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QTextFormat new file mode 100644 index 000000000..8367d9834 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextFormat @@ -0,0 +1 @@ +#include "qtextformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextFragment b/qrenderdoc/3rdparty/qt/include/QtGui/QTextFragment new file mode 100644 index 000000000..0fdbdf8f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextFragment @@ -0,0 +1 @@ +#include "qtextobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextFrame b/qrenderdoc/3rdparty/qt/include/QtGui/QTextFrame new file mode 100644 index 000000000..0fdbdf8f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextFrame @@ -0,0 +1 @@ +#include "qtextobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextFrameFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QTextFrameFormat new file mode 100644 index 000000000..8367d9834 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextFrameFormat @@ -0,0 +1 @@ +#include "qtextformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextFrameLayoutData b/qrenderdoc/3rdparty/qt/include/QtGui/QTextFrameLayoutData new file mode 100644 index 000000000..0fdbdf8f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextFrameLayoutData @@ -0,0 +1 @@ +#include "qtextobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextImageFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QTextImageFormat new file mode 100644 index 000000000..8367d9834 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextImageFormat @@ -0,0 +1 @@ +#include "qtextformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextInlineObject b/qrenderdoc/3rdparty/qt/include/QtGui/QTextInlineObject new file mode 100644 index 000000000..d7b9c9648 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextInlineObject @@ -0,0 +1 @@ +#include "qtextlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextItem b/qrenderdoc/3rdparty/qt/include/QtGui/QTextItem new file mode 100644 index 000000000..86d94139f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextItem @@ -0,0 +1 @@ +#include "qpaintengine.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextLayout b/qrenderdoc/3rdparty/qt/include/QtGui/QTextLayout new file mode 100644 index 000000000..d7b9c9648 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextLayout @@ -0,0 +1 @@ +#include "qtextlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextLength b/qrenderdoc/3rdparty/qt/include/QtGui/QTextLength new file mode 100644 index 000000000..8367d9834 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextLength @@ -0,0 +1 @@ +#include "qtextformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextLine b/qrenderdoc/3rdparty/qt/include/QtGui/QTextLine new file mode 100644 index 000000000..d7b9c9648 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextLine @@ -0,0 +1 @@ +#include "qtextlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextList b/qrenderdoc/3rdparty/qt/include/QtGui/QTextList new file mode 100644 index 000000000..ea7a8e2b3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextList @@ -0,0 +1 @@ +#include "qtextlist.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextListFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QTextListFormat new file mode 100644 index 000000000..8367d9834 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextListFormat @@ -0,0 +1 @@ +#include "qtextformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextObject b/qrenderdoc/3rdparty/qt/include/QtGui/QTextObject new file mode 100644 index 000000000..0fdbdf8f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextObject @@ -0,0 +1 @@ +#include "qtextobject.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextObjectInterface b/qrenderdoc/3rdparty/qt/include/QtGui/QTextObjectInterface new file mode 100644 index 000000000..0f49e55e5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextObjectInterface @@ -0,0 +1 @@ +#include "qabstracttextdocumentlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextOption b/qrenderdoc/3rdparty/qt/include/QtGui/QTextOption new file mode 100644 index 000000000..de086044e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextOption @@ -0,0 +1 @@ +#include "qtextoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextTable b/qrenderdoc/3rdparty/qt/include/QtGui/QTextTable new file mode 100644 index 000000000..b6c99d77a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextTable @@ -0,0 +1 @@ +#include "qtexttable.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextTableCell b/qrenderdoc/3rdparty/qt/include/QtGui/QTextTableCell new file mode 100644 index 000000000..b6c99d77a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextTableCell @@ -0,0 +1 @@ +#include "qtexttable.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextTableCellFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QTextTableCellFormat new file mode 100644 index 000000000..8367d9834 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextTableCellFormat @@ -0,0 +1 @@ +#include "qtextformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTextTableFormat b/qrenderdoc/3rdparty/qt/include/QtGui/QTextTableFormat new file mode 100644 index 000000000..8367d9834 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTextTableFormat @@ -0,0 +1 @@ +#include "qtextformat.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QToolBarChangeEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QToolBarChangeEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QToolBarChangeEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTouchDevice b/qrenderdoc/3rdparty/qt/include/QtGui/QTouchDevice new file mode 100644 index 000000000..3a04a5bb4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTouchDevice @@ -0,0 +1 @@ +#include "qtouchdevice.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTouchEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QTouchEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTouchEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QTransform b/qrenderdoc/3rdparty/qt/include/QtGui/QTransform new file mode 100644 index 000000000..3be104965 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QTransform @@ -0,0 +1 @@ +#include "qtransform.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QValidator b/qrenderdoc/3rdparty/qt/include/QtGui/QValidator new file mode 100644 index 000000000..c83840c4e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QValidator @@ -0,0 +1 @@ +#include "qvalidator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QVector2D b/qrenderdoc/3rdparty/qt/include/QtGui/QVector2D new file mode 100644 index 000000000..55fb4e74e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QVector2D @@ -0,0 +1 @@ +#include "qvector2d.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QVector3D b/qrenderdoc/3rdparty/qt/include/QtGui/QVector3D new file mode 100644 index 000000000..475f70ce4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QVector3D @@ -0,0 +1 @@ +#include "qvector3d.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QVector4D b/qrenderdoc/3rdparty/qt/include/QtGui/QVector4D new file mode 100644 index 000000000..c91d630c1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QVector4D @@ -0,0 +1 @@ +#include "qvector4d.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QWhatsThisClickedEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QWhatsThisClickedEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QWhatsThisClickedEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QWheelEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QWheelEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QWheelEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QWidgetList b/qrenderdoc/3rdparty/qt/include/QtGui/QWidgetList new file mode 100644 index 000000000..b2fdc9e1e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QWidgetList @@ -0,0 +1 @@ +#include "qwindowdefs.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QWidgetMapper b/qrenderdoc/3rdparty/qt/include/QtGui/QWidgetMapper new file mode 100644 index 000000000..b2fdc9e1e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QWidgetMapper @@ -0,0 +1 @@ +#include "qwindowdefs.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QWidgetSet b/qrenderdoc/3rdparty/qt/include/QtGui/QWidgetSet new file mode 100644 index 000000000..b2fdc9e1e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QWidgetSet @@ -0,0 +1 @@ +#include "qwindowdefs.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QWindow b/qrenderdoc/3rdparty/qt/include/QtGui/QWindow new file mode 100644 index 000000000..b90677df7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QWindow @@ -0,0 +1 @@ +#include "qwindow.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QWindowList b/qrenderdoc/3rdparty/qt/include/QtGui/QWindowList new file mode 100644 index 000000000..b2fdc9e1e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QWindowList @@ -0,0 +1 @@ +#include "qwindowdefs.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QWindowStateChangeEvent b/qrenderdoc/3rdparty/qt/include/QtGui/QWindowStateChangeEvent new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QWindowStateChangeEvent @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QtEvents b/qrenderdoc/3rdparty/qt/include/QtGui/QtEvents new file mode 100644 index 000000000..5630dcfed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QtEvents @@ -0,0 +1 @@ +#include "qevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QtGui b/qrenderdoc/3rdparty/qt/include/QtGui/QtGui new file mode 100644 index 000000000..bb0fd72b9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QtGui @@ -0,0 +1,109 @@ +#ifndef QT_QTGUI_MODULE_H +#define QT_QTGUI_MODULE_H +#include <QtGui/QtGuiDepends> +#include "qtguiglobal.h" +#include "qabstracttextdocumentlayout.h" +#include "qaccessible.h" +#include "qaccessiblebridge.h" +#include "qaccessibleobject.h" +#include "qaccessibleplugin.h" +#include "qbackingstore.h" +#include "qbitmap.h" +#include "qbrush.h" +#include "qclipboard.h" +#include "qcolor.h" +#include "qcursor.h" +#include "qdesktopservices.h" +#include "qdrag.h" +#include "qevent.h" +#include "qfont.h" +#include "qfontdatabase.h" +#include "qfontinfo.h" +#include "qfontmetrics.h" +#include "qgenericmatrix.h" +#include "qgenericplugin.h" +#include "qgenericpluginfactory.h" +#include "qglyphrun.h" +#include "qguiapplication.h" +#include "qicon.h" +#include "qiconengine.h" +#include "qiconengineplugin.h" +#include "qimage.h" +#include "qimageiohandler.h" +#include "qimagereader.h" +#include "qimagewriter.h" +#include "qinputmethod.h" +#include "qkeysequence.h" +#include "qmatrix.h" +#include "qmatrix4x4.h" +#if QT_CONFIG(movie) +#include "qmovie.h" +#endif +#include "qoffscreensurface.h" +#include "qopengl.h" +#include "qopenglbuffer.h" +#include "qopenglcontext.h" +#include "qopengldebug.h" +#include "qopenglextrafunctions.h" +#include "qopenglframebufferobject.h" +#include "qopenglfunctions.h" +#include "qopenglpaintdevice.h" +#include "qopenglpixeltransferoptions.h" +#include "qopenglshaderprogram.h" +#include "qopengltexture.h" +#include "qopengltextureblitter.h" +#include "qopengltimerquery.h" +#include "qopenglversionfunctions.h" +#include "qopenglvertexarrayobject.h" +#include "qopenglwindow.h" +#include "qpagedpaintdevice.h" +#include "qpagelayout.h" +#include "qpagesize.h" +#include "qpaintdevice.h" +#include "qpaintdevicewindow.h" +#include "qpaintengine.h" +#include "qpainter.h" +#include "qpainterpath.h" +#include "qpalette.h" +#include "qpdfwriter.h" +#include "qpen.h" +#include "qpicture.h" +#include "qpictureformatplugin.h" +#include "qpixelformat.h" +#include "qpixmap.h" +#include "qpixmapcache.h" +#include "qpolygon.h" +#include "qquaternion.h" +#include "qrasterwindow.h" +#include "qrawfont.h" +#include "qregion.h" +#include "qrgb.h" +#include "qrgba64.h" +#include "qscreen.h" +#include "qsessionmanager.h" +#include "qstandarditemmodel.h" +#include "qstatictext.h" +#include "qstylehints.h" +#include "qsurface.h" +#include "qsurfaceformat.h" +#include "qsyntaxhighlighter.h" +#include "qtextcursor.h" +#include "qtextdocument.h" +#include "qtextdocumentfragment.h" +#include "qtextdocumentwriter.h" +#include "qtextformat.h" +#include "qtextlayout.h" +#include "qtextlist.h" +#include "qtextobject.h" +#include "qtextoption.h" +#include "qtexttable.h" +#include "qtouchdevice.h" +#include "qtransform.h" +#include "qvalidator.h" +#include "qvector2d.h" +#include "qvector3d.h" +#include "qvector4d.h" +#include "qwindow.h" +#include "qwindowdefs.h" +#include "qtguiversion.h" +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QtGuiDepends b/qrenderdoc/3rdparty/qt/include/QtGui/QtGuiDepends new file mode 100644 index 000000000..7611c06ee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QtGuiDepends @@ -0,0 +1,4 @@ +/* This file was generated by qmake with the info from <root>/src/gui/gui.pro. */ +#ifdef __cplusplus /* create empty PCH in C mode */ +#include <QtCore/QtCore> +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/QtGuiVersion b/qrenderdoc/3rdparty/qt/include/QtGui/QtGuiVersion new file mode 100644 index 000000000..c3ffe7cd3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/QtGuiVersion @@ -0,0 +1 @@ +#include "qtguiversion.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qabstracttextdocumentlayout.h b/qrenderdoc/3rdparty/qt/include/QtGui/qabstracttextdocumentlayout.h new file mode 100644 index 000000000..438ad6e70 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qabstracttextdocumentlayout.h @@ -0,0 +1,150 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTTEXTDOCUMENTLAYOUT_H +#define QABSTRACTTEXTDOCUMENTLAYOUT_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> +#include <QtGui/qtextlayout.h> +#include <QtGui/qtextdocument.h> +#include <QtGui/qtextcursor.h> +#include <QtGui/qpalette.h> + +QT_BEGIN_NAMESPACE + + +class QAbstractTextDocumentLayoutPrivate; +class QTextBlock; +class QTextObjectInterface; +class QTextFrame; + +class Q_GUI_EXPORT QAbstractTextDocumentLayout : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QAbstractTextDocumentLayout) + +public: + explicit QAbstractTextDocumentLayout(QTextDocument *doc); + ~QAbstractTextDocumentLayout(); + + struct Selection + { + QTextCursor cursor; + QTextCharFormat format; + }; + + struct PaintContext + { + PaintContext() + : cursorPosition(-1) + {} + int cursorPosition; + QPalette palette; + QRectF clip; + QVector<Selection> selections; + }; + + virtual void draw(QPainter *painter, const PaintContext &context) = 0; + virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0; + + QString anchorAt(const QPointF& pos) const; + QString imageAt(const QPointF &pos) const; + QTextFormat formatAt(const QPointF &pos) const; + + virtual int pageCount() const = 0; + virtual QSizeF documentSize() const = 0; + + virtual QRectF frameBoundingRect(QTextFrame *frame) const = 0; + virtual QRectF blockBoundingRect(const QTextBlock &block) const = 0; + + void setPaintDevice(QPaintDevice *device); + QPaintDevice *paintDevice() const; + + QTextDocument *document() const; + + void registerHandler(int objectType, QObject *component); + void unregisterHandler(int objectType, QObject *component = Q_NULLPTR); + QTextObjectInterface *handlerForObject(int objectType) const; + +Q_SIGNALS: + void update(const QRectF & = QRectF(0., 0., 1000000000., 1000000000.)); + void updateBlock(const QTextBlock &block); + void documentSizeChanged(const QSizeF &newSize); + void pageCountChanged(int newPages); + +protected: + QAbstractTextDocumentLayout(QAbstractTextDocumentLayoutPrivate &, QTextDocument *); + + virtual void documentChanged(int from, int charsRemoved, int charsAdded) = 0; + + virtual void resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format); + virtual void positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format); + virtual void drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format); + + int formatIndex(int pos); + QTextCharFormat format(int pos); + +private: + friend class QWidgetTextControl; + friend class QTextDocument; + friend class QTextDocumentPrivate; + friend class QTextEngine; + friend class QTextLayout; + friend class QTextLine; + Q_PRIVATE_SLOT(d_func(), void _q_handlerDestroyed(QObject *obj)) + Q_PRIVATE_SLOT(d_func(), int _q_dynamicPageCountSlot()) + Q_PRIVATE_SLOT(d_func(), QSizeF _q_dynamicDocumentSizeSlot()) +}; +Q_DECLARE_TYPEINFO(QAbstractTextDocumentLayout::Selection, Q_RELOCATABLE_TYPE); +Q_DECLARE_TYPEINFO(QAbstractTextDocumentLayout::PaintContext, Q_RELOCATABLE_TYPE); + +class Q_GUI_EXPORT QTextObjectInterface +{ +public: + virtual ~QTextObjectInterface(); + virtual QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0; + virtual void drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0; +}; + +Q_DECLARE_INTERFACE(QTextObjectInterface, "org.qt-project.Qt.QTextObjectInterface") + +QT_END_NAMESPACE + +#endif // QABSTRACTTEXTDOCUMENTLAYOUT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qaccessible.h b/qrenderdoc/3rdparty/qt/include/QtGui/qaccessible.h new file mode 100644 index 000000000..27756d764 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qaccessible.h @@ -0,0 +1,995 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_ACCESSIBILITY +#ifndef QACCESSIBLE_H +#define QACCESSIBLE_H + +#include <QtCore/qcoreapplication.h> +#include <QtCore/qdebug.h> +#include <QtCore/qglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qrect.h> +#include <QtCore/qset.h> +#include <QtCore/qvector.h> +#include <QtCore/qvariant.h> +#include <QtGui/qcolor.h> +#include <QtGui/qevent.h> + +#include <stdlib.h> + +QT_BEGIN_NAMESPACE + +class QAccessibleInterface; +class QAccessibleEvent; +class QWindow; +class QTextCursor; + +class Q_GUI_EXPORT QAccessible +{ + Q_GADGET +public: + + enum Event { + SoundPlayed = 0x0001, + Alert = 0x0002, + ForegroundChanged = 0x0003, + MenuStart = 0x0004, + MenuEnd = 0x0005, + PopupMenuStart = 0x0006, + PopupMenuEnd = 0x0007, + ContextHelpStart = 0x000C, + ContextHelpEnd = 0x000D, + DragDropStart = 0x000E, + DragDropEnd = 0x000F, + DialogStart = 0x0010, + DialogEnd = 0x0011, + ScrollingStart = 0x0012, + ScrollingEnd = 0x0013, + + MenuCommand = 0x0018, + + // Values from IAccessible2 + ActionChanged = 0x0101, + ActiveDescendantChanged = 0x0102, + AttributeChanged = 0x0103, + DocumentContentChanged = 0x0104, + DocumentLoadComplete = 0x0105, + DocumentLoadStopped = 0x0106, + DocumentReload = 0x0107, + HyperlinkEndIndexChanged = 0x0108, + HyperlinkNumberOfAnchorsChanged = 0x0109, + HyperlinkSelectedLinkChanged = 0x010A, + HypertextLinkActivated = 0x010B, + HypertextLinkSelected = 0x010C, + HyperlinkStartIndexChanged = 0x010D, + HypertextChanged = 0x010E, + HypertextNLinksChanged = 0x010F, + ObjectAttributeChanged = 0x0110, + PageChanged = 0x0111, + SectionChanged = 0x0112, + TableCaptionChanged = 0x0113, + TableColumnDescriptionChanged = 0x0114, + TableColumnHeaderChanged = 0x0115, + TableModelChanged = 0x0116, + TableRowDescriptionChanged = 0x0117, + TableRowHeaderChanged = 0x0118, + TableSummaryChanged = 0x0119, + TextAttributeChanged = 0x011A, + TextCaretMoved = 0x011B, + // TextChanged = 0x011C, is deprecated in IA2, use TextUpdated + TextColumnChanged = 0x011D, + TextInserted = 0x011E, + TextRemoved = 0x011F, + TextUpdated = 0x0120, + TextSelectionChanged = 0x0121, + VisibleDataChanged = 0x0122, + + ObjectCreated = 0x8000, + ObjectDestroyed = 0x8001, + ObjectShow = 0x8002, + ObjectHide = 0x8003, + ObjectReorder = 0x8004, + Focus = 0x8005, + Selection = 0x8006, + SelectionAdd = 0x8007, + SelectionRemove = 0x8008, + SelectionWithin = 0x8009, + StateChanged = 0x800A, + LocationChanged = 0x800B, + NameChanged = 0x800C, + DescriptionChanged = 0x800D, + ValueChanged = 0x800E, + ParentChanged = 0x800F, + HelpChanged = 0x80A0, + DefaultActionChanged = 0x80B0, + AcceleratorChanged = 0x80C0, + + InvalidEvent + }; + Q_ENUM(Event) + + // 64 bit enums seem hard on some platforms (windows...) + // which makes using a bit field a sensible alternative + struct State { + // http://msdn.microsoft.com/en-us/library/ms697270.aspx + quint64 disabled : 1; // used to be Unavailable + quint64 selected : 1; + quint64 focusable : 1; + quint64 focused : 1; + quint64 pressed : 1; + quint64 checkable : 1; + quint64 checked : 1; + quint64 checkStateMixed : 1; // used to be Mixed + quint64 readOnly : 1; + quint64 hotTracked : 1; + quint64 defaultButton : 1; + quint64 expanded : 1; + quint64 collapsed : 1; + quint64 busy : 1; + quint64 expandable : 1; + quint64 marqueed : 1; + quint64 animated : 1; + quint64 invisible : 1; + quint64 offscreen : 1; + quint64 sizeable : 1; + quint64 movable : 1; + quint64 selfVoicing : 1; + quint64 selectable : 1; + quint64 linked : 1; + quint64 traversed : 1; + quint64 multiSelectable : 1; + quint64 extSelectable : 1; + quint64 passwordEdit : 1; // used to be Protected + quint64 hasPopup : 1; + quint64 modal : 1; + + // IA2 - we chose to not add some IA2 states for now + // Below the ones that seem helpful + quint64 active : 1; + quint64 invalid : 1; // = defunct + quint64 editable : 1; + quint64 multiLine : 1; + quint64 selectableText : 1; + quint64 supportsAutoCompletion : 1; + + quint64 searchEdit : 1; + + // quint64 horizontal : 1; + // quint64 vertical : 1; + // quint64 invalidEntry : 1; + // quint64 managesDescendants : 1; + // quint64 singleLine : 1; // we have multi line, this is redundant. + // quint64 stale : 1; + // quint64 transient : 1; + // quint64 pinned : 1; + + // Apple - see http://mattgemmell.com/2010/12/19/accessibility-for-iphone-and-ipad-apps/ + // quint64 playsSound : 1; + // quint64 summaryElement : 1; + // quint64 updatesFrequently : 1; + // quint64 adjustable : 1; + // more and not included here: http://developer.apple.com/library/mac/#documentation/UserExperience/Reference/Accessibility_RoleAttribute_Ref/Attributes.html + + // MSAA + // quint64 alertLow : 1; + // quint64 alertMedium : 1; + // quint64 alertHigh : 1; + + State() { + memset(this, 0, sizeof(State)); + } + }; + + + + + + enum Role { + NoRole = 0x00000000, + TitleBar = 0x00000001, + MenuBar = 0x00000002, + ScrollBar = 0x00000003, + Grip = 0x00000004, + Sound = 0x00000005, + Cursor = 0x00000006, + Caret = 0x00000007, + AlertMessage = 0x00000008, + Window = 0x00000009, + Client = 0x0000000A, + PopupMenu = 0x0000000B, + MenuItem = 0x0000000C, + ToolTip = 0x0000000D, + Application = 0x0000000E, + Document = 0x0000000F, + Pane = 0x00000010, + Chart = 0x00000011, + Dialog = 0x00000012, + Border = 0x00000013, + Grouping = 0x00000014, + Separator = 0x00000015, + ToolBar = 0x00000016, + StatusBar = 0x00000017, + Table = 0x00000018, + ColumnHeader = 0x00000019, + RowHeader = 0x0000001A, + Column = 0x0000001B, + Row = 0x0000001C, + Cell = 0x0000001D, + Link = 0x0000001E, + HelpBalloon = 0x0000001F, + Assistant = 0x00000020, + List = 0x00000021, + ListItem = 0x00000022, + Tree = 0x00000023, + TreeItem = 0x00000024, + PageTab = 0x00000025, + PropertyPage = 0x00000026, + Indicator = 0x00000027, + Graphic = 0x00000028, + StaticText = 0x00000029, + EditableText = 0x0000002A, // Editable, selectable, etc. + Button = 0x0000002B, +#ifndef Q_QDOC + PushButton = Button, // deprecated +#endif + CheckBox = 0x0000002C, + RadioButton = 0x0000002D, + ComboBox = 0x0000002E, + // DropList = 0x0000002F, + ProgressBar = 0x00000030, + Dial = 0x00000031, + HotkeyField = 0x00000032, + Slider = 0x00000033, + SpinBox = 0x00000034, + Canvas = 0x00000035, // Diagram for MSAA + Animation = 0x00000036, + Equation = 0x00000037, + ButtonDropDown = 0x00000038, // The object represents a button that expands a grid. + ButtonMenu = 0x00000039, + ButtonDropGrid = 0x0000003A, + Whitespace = 0x0000003B, // The object represents blank space between other objects. + PageTabList = 0x0000003C, + Clock = 0x0000003D, + Splitter = 0x0000003E, + // Reserved space in case MSAA roles needs to be added + + // Additional Qt roles where enum value does not map directly to MSAA: + LayeredPane = 0x00000080, + Terminal = 0x00000081, + Desktop = 0x00000082, + Paragraph = 0x00000083, + WebDocument = 0x00000084, + Section = 0x00000085, + + // IAccessible2 roles + // IA2_ROLE_CANVAS = 0x401, ### Qt 6 use this one instead of Canvas above + // IA2_ROLE_CAPTION = 0x402, + // IA2_ROLE_CHECK_MENU_ITEM = 0x403, + ColorChooser = 0x404, + // IA2_ROLE_DATE_EDITOR = 0x405, + // IA2_ROLE_DESKTOP_ICON = 0x406, + // IA2_ROLE_DESKTOP_PANE = 0x407, + // IA2_ROLE_DIRECTORY_PANE = 0x408, + // IA2_ROLE_EDITBAR = 0x409, + // IA2_ROLE_EMBEDDED_OBJECT = 0x40A, + // IA2_ROLE_ENDNOTE = 0x40B, + // IA2_ROLE_FILE_CHOOSER = 0x40C, + // IA2_ROLE_FONT_CHOOSER = 0x40D, + Footer = 0x40E, + // IA2_ROLE_FOOTNOTE = 0x40F, + Form = 0x410, + // some platforms (windows and at-spi) use Frame for regular windows + // because window was taken for tool/dock windows by MSAA + // Frame = 0x411, + // IA2_ROLE_GLASS_PANE = 0x412, + // IA2_ROLE_HEADER = 0x413, + Heading = 0x414, + // IA2_ROLE_ICON = 0x415, + // IA2_ROLE_IMAGE_MAP = 0x416, + // IA2_ROLE_INPUT_METHOD_WINDOW = 0x417, + // IA2_ROLE_INTERNAL_FRAME = 0x418, + // IA2_ROLE_LABEL = 0x419, + // IA2_ROLE_LAYERED_PANE = 0x41A, + Note = 0x41B, + // IA2_ROLE_OPTION_PANE = 0x41C, + // IA2_ROLE_PAGE = 0x41D, + // IA2_ROLE_PARAGRAPH = 0x42E, + // IA2_ROLE_RADIO_MENU_ITEM = 0x41F, + // IA2_ROLE_REDUNDANT_OBJECT = 0x420, + // IA2_ROLE_ROOT_PANE = 0x421, + // IA2_ROLE_RULER = 0x422, + // IA2_ROLE_SCROLL_PANE = 0x423, + // IA2_ROLE_SECTION = 0x424, + // IA2_ROLE_SHAPE = 0x425, + // IA2_ROLE_SPLIT_PANE = 0x426, + // IA2_ROLE_TEAR_OFF_MENU = 0x427, + // IA2_ROLE_TERMINAL = 0x428, + // IA2_ROLE_TEXT_FRAME = 0x429, + // IA2_ROLE_TOGGLE_BUTTON = 0x42A, + // IA2_ROLE_VIEW_PORT = 0x42B, + ComplementaryContent = 0x42C, + + UserRole = 0x0000ffff + }; + Q_ENUM(Role) + + enum Text { + Name = 0, + Description, + Value, + Help, + Accelerator, + DebugDescription, + UserText = 0x0000ffff + }; + + enum RelationFlag { + Label = 0x00000001, + Labelled = 0x00000002, + Controller = 0x00000004, + Controlled = 0x00000008, + AllRelations = 0xffffffff + }; + Q_DECLARE_FLAGS(Relation, RelationFlag) + + enum InterfaceType + { + TextInterface, + EditableTextInterface, + ValueInterface, + ActionInterface, + ImageInterface, + TableInterface, + TableCellInterface + }; + + enum TextBoundaryType { + CharBoundary, + WordBoundary, + SentenceBoundary, + ParagraphBoundary, + LineBoundary, + NoBoundary + }; + + typedef QAccessibleInterface*(*InterfaceFactory)(const QString &key, QObject*); + typedef void(*UpdateHandler)(QAccessibleEvent *event); + typedef void(*RootObjectHandler)(QObject*); + + typedef unsigned Id; + + static void installFactory(InterfaceFactory); + static void removeFactory(InterfaceFactory); + static UpdateHandler installUpdateHandler(UpdateHandler); + static RootObjectHandler installRootObjectHandler(RootObjectHandler); + + class Q_GUI_EXPORT ActivationObserver + { + public: + virtual ~ActivationObserver(); + virtual void accessibilityActiveChanged(bool active) = 0; + }; + static void installActivationObserver(ActivationObserver *); + static void removeActivationObserver(ActivationObserver *); + + static QAccessibleInterface *queryAccessibleInterface(QObject *); + static Id uniqueId(QAccessibleInterface *iface); + static QAccessibleInterface *accessibleInterface(Id uniqueId); + static Id registerAccessibleInterface(QAccessibleInterface *iface); + static void deleteAccessibleInterface(Id uniqueId); + + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED static inline void updateAccessibility(QObject *object, int child, Event reason); +#endif + static void updateAccessibility(QAccessibleEvent *event); + + static bool isActive(); + static void setActive(bool active); + static void setRootObject(QObject *object); + + static void cleanup(); + + static QPair< int, int > qAccessibleTextBoundaryHelper(const QTextCursor &cursor, TextBoundaryType boundaryType); + +private: + static UpdateHandler updateHandler; + static RootObjectHandler rootObjectHandler; + + QAccessible() {} + + friend class QAccessibleCache; +}; + +Q_GUI_EXPORT bool operator==(const QAccessible::State &first, const QAccessible::State &second); + +Q_DECLARE_OPERATORS_FOR_FLAGS(QAccessible::Relation) + +class QAccessible2Interface; +class QAccessibleTextInterface; +class QAccessibleEditableTextInterface; +class QAccessibleValueInterface; +class QAccessibleActionInterface; +class QAccessibleImageInterface; +class QAccessibleTableInterface; +class QAccessibleTableCellInterface; +class QAccessibleTableModelChangeEvent; + +class Q_GUI_EXPORT QAccessibleInterface +{ +protected: + virtual ~QAccessibleInterface(); + +public: + // check for valid pointers + virtual bool isValid() const = 0; + virtual QObject *object() const = 0; + virtual QWindow *window() const; + + // relations + virtual QVector<QPair<QAccessibleInterface*, QAccessible::Relation> > relations(QAccessible::Relation match = QAccessible::AllRelations) const; + virtual QAccessibleInterface *focusChild() const; + + virtual QAccessibleInterface *childAt(int x, int y) const = 0; + + // navigation, hierarchy + virtual QAccessibleInterface *parent() const = 0; + virtual QAccessibleInterface *child(int index) const = 0; + virtual int childCount() const = 0; + virtual int indexOfChild(const QAccessibleInterface *) const = 0; + + // properties and state + virtual QString text(QAccessible::Text t) const = 0; + virtual void setText(QAccessible::Text t, const QString &text) = 0; + virtual QRect rect() const = 0; + virtual QAccessible::Role role() const = 0; + virtual QAccessible::State state() const = 0; + + virtual QColor foregroundColor() const; + virtual QColor backgroundColor() const; + + inline QAccessibleTextInterface *textInterface() + { return reinterpret_cast<QAccessibleTextInterface *>(interface_cast(QAccessible::TextInterface)); } + + inline QAccessibleEditableTextInterface *editableTextInterface() + { return reinterpret_cast<QAccessibleEditableTextInterface *>(interface_cast(QAccessible::EditableTextInterface)); } + + inline QAccessibleValueInterface *valueInterface() + { return reinterpret_cast<QAccessibleValueInterface *>(interface_cast(QAccessible::ValueInterface)); } + + inline QAccessibleActionInterface *actionInterface() + { return reinterpret_cast<QAccessibleActionInterface *>(interface_cast(QAccessible::ActionInterface)); } + + inline QAccessibleImageInterface *imageInterface() + { return reinterpret_cast<QAccessibleImageInterface *>(interface_cast(QAccessible::ImageInterface)); } + + inline QAccessibleTableInterface *tableInterface() + { return reinterpret_cast<QAccessibleTableInterface *>(interface_cast(QAccessible::TableInterface)); } + + inline QAccessibleTableCellInterface *tableCellInterface() + { return reinterpret_cast<QAccessibleTableCellInterface *>(interface_cast(QAccessible::TableCellInterface)); } + + virtual void virtual_hook(int id, void *data); + + virtual void *interface_cast(QAccessible::InterfaceType) + { return Q_NULLPTR; } + +protected: + friend class QAccessibleCache; +}; + +class Q_GUI_EXPORT QAccessibleTextInterface +{ +public: + virtual ~QAccessibleTextInterface(); + // selection + virtual void selection(int selectionIndex, int *startOffset, int *endOffset) const = 0; + virtual int selectionCount() const = 0; + virtual void addSelection(int startOffset, int endOffset) = 0; + virtual void removeSelection(int selectionIndex) = 0; + virtual void setSelection(int selectionIndex, int startOffset, int endOffset) = 0; + + // cursor + virtual int cursorPosition() const = 0; + virtual void setCursorPosition(int position) = 0; + + // text + virtual QString text(int startOffset, int endOffset) const = 0; + virtual QString textBeforeOffset(int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const; + virtual QString textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const; + virtual QString textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const; + virtual int characterCount() const = 0; + + // character <-> geometry + virtual QRect characterRect(int offset) const = 0; + virtual int offsetAtPoint(const QPoint &point) const = 0; + + virtual void scrollToSubstring(int startIndex, int endIndex) = 0; + virtual QString attributes(int offset, int *startOffset, int *endOffset) const = 0; +}; + +class Q_GUI_EXPORT QAccessibleEditableTextInterface +{ +public: + virtual ~QAccessibleEditableTextInterface(); + + virtual void deleteText(int startOffset, int endOffset) = 0; + virtual void insertText(int offset, const QString &text) = 0; + virtual void replaceText(int startOffset, int endOffset, const QString &text) = 0; +}; + +class Q_GUI_EXPORT QAccessibleValueInterface +{ +public: + virtual ~QAccessibleValueInterface(); + + virtual QVariant currentValue() const = 0; + virtual void setCurrentValue(const QVariant &value) = 0; + virtual QVariant maximumValue() const = 0; + virtual QVariant minimumValue() const = 0; + virtual QVariant minimumStepSize() const = 0; +}; + +class Q_GUI_EXPORT QAccessibleTableCellInterface +{ +public: + virtual ~QAccessibleTableCellInterface(); + + virtual bool isSelected() const = 0; + + virtual QList<QAccessibleInterface*> columnHeaderCells() const = 0; + virtual QList<QAccessibleInterface*> rowHeaderCells() const = 0; + virtual int columnIndex() const = 0; + virtual int rowIndex() const = 0; + virtual int columnExtent() const = 0; + virtual int rowExtent() const = 0; + + virtual QAccessibleInterface* table() const = 0; +}; + +class Q_GUI_EXPORT QAccessibleTableInterface +{ +public: + virtual ~QAccessibleTableInterface(); + + virtual QAccessibleInterface *caption() const = 0; + virtual QAccessibleInterface *summary() const = 0; + + virtual QAccessibleInterface *cellAt (int row, int column) const = 0; + virtual int selectedCellCount() const = 0; + virtual QList<QAccessibleInterface*> selectedCells() const = 0; + + virtual QString columnDescription(int column) const = 0; + virtual QString rowDescription(int row) const = 0; + virtual int selectedColumnCount() const = 0; + virtual int selectedRowCount() const = 0; + virtual int columnCount() const = 0; + virtual int rowCount() const = 0; + virtual QList<int> selectedColumns() const = 0; + virtual QList<int> selectedRows() const = 0; + virtual bool isColumnSelected(int column) const = 0; + virtual bool isRowSelected(int row) const = 0; + virtual bool selectRow(int row) = 0; + virtual bool selectColumn(int column) = 0; + virtual bool unselectRow(int row) = 0; + virtual bool unselectColumn(int column) = 0; + + virtual void modelChange(QAccessibleTableModelChangeEvent *event) = 0; + +protected: +friend class QAbstractItemView; +friend class QAbstractItemViewPrivate; +}; + +class Q_GUI_EXPORT QAccessibleActionInterface +{ + Q_DECLARE_TR_FUNCTIONS(QAccessibleActionInterface) +public: + virtual ~QAccessibleActionInterface(); + + virtual QStringList actionNames() const = 0; + virtual QString localizedActionName(const QString &name) const; + virtual QString localizedActionDescription(const QString &name) const; + virtual void doAction(const QString &actionName) = 0; + virtual QStringList keyBindingsForAction(const QString &actionName) const = 0; + + static const QString &pressAction(); + static const QString &increaseAction(); + static const QString &decreaseAction(); + static const QString &showMenuAction(); + static const QString &setFocusAction(); + static const QString &toggleAction(); + static QString scrollLeftAction(); + static QString scrollRightAction(); + static QString scrollUpAction(); + static QString scrollDownAction(); + static QString nextPageAction(); + static QString previousPageAction(); +}; + +class Q_GUI_EXPORT QAccessibleImageInterface +{ +public: + virtual ~QAccessibleImageInterface(); + + virtual QString imageDescription() const = 0; + virtual QSize imageSize() const = 0; + virtual QPoint imagePosition() const = 0; +}; + + +class Q_GUI_EXPORT QAccessibleEvent +{ + Q_DISABLE_COPY(QAccessibleEvent) +public: + + inline QAccessibleEvent(QObject *obj, QAccessible::Event typ) + : m_type(typ), m_object(obj), m_child(-1) + { + Q_ASSERT(obj); + // All events below have a subclass of QAccessibleEvent. + // Use the subclass, since it's expected that it's possible to cast to that. + Q_ASSERT(m_type != QAccessible::ValueChanged); + Q_ASSERT(m_type != QAccessible::StateChanged); + Q_ASSERT(m_type != QAccessible::TextCaretMoved); + Q_ASSERT(m_type != QAccessible::TextSelectionChanged); + Q_ASSERT(m_type != QAccessible::TextInserted); + Q_ASSERT(m_type != QAccessible::TextRemoved); + Q_ASSERT(m_type != QAccessible::TextUpdated); + Q_ASSERT(m_type != QAccessible::TableModelChanged); + } + + inline QAccessibleEvent(QAccessibleInterface *iface, QAccessible::Event typ) + : m_type(typ), m_object(Q_NULLPTR) + { + Q_ASSERT(iface); + Q_ASSERT(m_type != QAccessible::ValueChanged); + Q_ASSERT(m_type != QAccessible::StateChanged); + Q_ASSERT(m_type != QAccessible::TextCaretMoved); + Q_ASSERT(m_type != QAccessible::TextSelectionChanged); + Q_ASSERT(m_type != QAccessible::TextInserted); + Q_ASSERT(m_type != QAccessible::TextRemoved); + Q_ASSERT(m_type != QAccessible::TextUpdated); + Q_ASSERT(m_type != QAccessible::TableModelChanged); + m_uniqueId = QAccessible::uniqueId(iface); + } + + virtual ~QAccessibleEvent(); + + QAccessible::Event type() const { return m_type; } + QObject *object() const { return m_object; } + QAccessible::Id uniqueId() const; + + void setChild(int chld) { m_child = chld; } + int child() const { return m_child; } + + virtual QAccessibleInterface *accessibleInterface() const; + +protected: + QAccessible::Event m_type; + QObject *m_object; + union { + int m_child; + QAccessible::Id m_uniqueId; + }; + +}; + +class Q_GUI_EXPORT QAccessibleStateChangeEvent :public QAccessibleEvent +{ +public: + inline QAccessibleStateChangeEvent(QObject *obj, QAccessible::State state) + : QAccessibleEvent(obj, QAccessible::InvalidEvent), m_changedStates(state) + { + m_type = QAccessible::StateChanged; + } + inline QAccessibleStateChangeEvent(QAccessibleInterface *iface, QAccessible::State state) + : QAccessibleEvent(iface, QAccessible::InvalidEvent), m_changedStates(state) + { + m_type = QAccessible::StateChanged; + } + ~QAccessibleStateChangeEvent(); + + QAccessible::State changedStates() const { + return m_changedStates; + } + +protected: + QAccessible::State m_changedStates; +}; + +// Update the cursor and optionally the selection. +class Q_GUI_EXPORT QAccessibleTextCursorEvent : public QAccessibleEvent +{ +public: + inline QAccessibleTextCursorEvent(QObject *obj, int cursorPos) + : QAccessibleEvent(obj, QAccessible::InvalidEvent) + , m_cursorPosition(cursorPos) + { + m_type = QAccessible::TextCaretMoved; + } + inline QAccessibleTextCursorEvent(QAccessibleInterface *iface, int cursorPos) + : QAccessibleEvent(iface, QAccessible::InvalidEvent) + , m_cursorPosition(cursorPos) + { + m_type = QAccessible::TextCaretMoved; + } + + ~QAccessibleTextCursorEvent(); + + void setCursorPosition(int position) { m_cursorPosition = position; } + int cursorPosition() const { return m_cursorPosition; } + +protected: + int m_cursorPosition; +}; + +// Updates the cursor position simultaneously. By default the cursor is set to the end of the selection. +class Q_GUI_EXPORT QAccessibleTextSelectionEvent : public QAccessibleTextCursorEvent +{ +public: + inline QAccessibleTextSelectionEvent(QObject *obj, int start, int end) + : QAccessibleTextCursorEvent(obj, (start == -1) ? 0 : end) + , m_selectionStart(start), m_selectionEnd(end) + { + m_type = QAccessible::TextSelectionChanged; + } + inline QAccessibleTextSelectionEvent(QAccessibleInterface *iface, int start, int end) + : QAccessibleTextCursorEvent(iface, (start == -1) ? 0 : end) + , m_selectionStart(start), m_selectionEnd(end) + { + m_type = QAccessible::TextSelectionChanged; + } + + ~QAccessibleTextSelectionEvent(); + + void setSelection(int start, int end) { + m_selectionStart = start; + m_selectionEnd = end; + } + + int selectionStart() const { return m_selectionStart; } + int selectionEnd() const { return m_selectionEnd; } + +protected: + int m_selectionStart; + int m_selectionEnd; +}; + +class Q_GUI_EXPORT QAccessibleTextInsertEvent : public QAccessibleTextCursorEvent +{ +public: + inline QAccessibleTextInsertEvent(QObject *obj, int position, const QString &text) + : QAccessibleTextCursorEvent(obj, position + text.length()) + , m_position(position), m_text(text) + { + m_type = QAccessible::TextInserted; + } + inline QAccessibleTextInsertEvent(QAccessibleInterface *iface, int position, const QString &text) + : QAccessibleTextCursorEvent(iface, position + text.length()) + , m_position(position), m_text(text) + { + m_type = QAccessible::TextInserted; + } + + ~QAccessibleTextInsertEvent(); + + QString textInserted() const { + return m_text; + } + int changePosition() const { + return m_position; + } + +protected: + int m_position; + QString m_text; +}; + +class Q_GUI_EXPORT QAccessibleTextRemoveEvent : public QAccessibleTextCursorEvent +{ +public: + inline QAccessibleTextRemoveEvent(QObject *obj, int position, const QString &text) + : QAccessibleTextCursorEvent(obj, position) + , m_position(position), m_text(text) + { + m_type = QAccessible::TextRemoved; + } + inline QAccessibleTextRemoveEvent(QAccessibleInterface *iface, int position, const QString &text) + : QAccessibleTextCursorEvent(iface, position) + , m_position(position), m_text(text) + { + m_type = QAccessible::TextRemoved; + } + + ~QAccessibleTextRemoveEvent(); + + QString textRemoved() const { + return m_text; + } + int changePosition() const { + return m_position; + } + +protected: + int m_position; + QString m_text; +}; + +class Q_GUI_EXPORT QAccessibleTextUpdateEvent : public QAccessibleTextCursorEvent +{ +public: + inline QAccessibleTextUpdateEvent(QObject *obj, int position, const QString &oldText, const QString &text) + : QAccessibleTextCursorEvent(obj, position + text.length()) + , m_position(position), m_oldText(oldText), m_text(text) + { + m_type = QAccessible::TextUpdated; + } + inline QAccessibleTextUpdateEvent(QAccessibleInterface *iface, int position, const QString &oldText, const QString &text) + : QAccessibleTextCursorEvent(iface, position + text.length()) + , m_position(position), m_oldText(oldText), m_text(text) + { + m_type = QAccessible::TextUpdated; + } + + ~QAccessibleTextUpdateEvent(); + + QString textRemoved() const { + return m_oldText; + } + QString textInserted() const { + return m_text; + } + int changePosition() const { + return m_position; + } + +protected: + int m_position; + QString m_oldText; + QString m_text; +}; + +class Q_GUI_EXPORT QAccessibleValueChangeEvent : public QAccessibleEvent +{ +public: + inline QAccessibleValueChangeEvent(QObject *obj, const QVariant &val) + : QAccessibleEvent(obj, QAccessible::InvalidEvent) + , m_value(val) + { + m_type = QAccessible::ValueChanged; + } + inline QAccessibleValueChangeEvent(QAccessibleInterface *iface, const QVariant &val) + : QAccessibleEvent(iface, QAccessible::InvalidEvent) + , m_value(val) + { + m_type = QAccessible::ValueChanged; + } + + ~QAccessibleValueChangeEvent(); + + void setValue(const QVariant & val) { m_value= val; } + QVariant value() const { return m_value; } + +protected: + QVariant m_value; +}; + +class Q_GUI_EXPORT QAccessibleTableModelChangeEvent : public QAccessibleEvent +{ +public: + enum ModelChangeType { + ModelReset, + DataChanged, + RowsInserted, + ColumnsInserted, + RowsRemoved, + ColumnsRemoved + }; + + inline QAccessibleTableModelChangeEvent(QObject *obj, ModelChangeType changeType) + : QAccessibleEvent(obj, QAccessible::InvalidEvent) + , m_modelChangeType(changeType) + , m_firstRow(-1), m_firstColumn(-1), m_lastRow(-1), m_lastColumn(-1) + { + m_type = QAccessible::TableModelChanged; + } + inline QAccessibleTableModelChangeEvent(QAccessibleInterface *iface, ModelChangeType changeType) + : QAccessibleEvent(iface, QAccessible::InvalidEvent) + , m_modelChangeType(changeType) + , m_firstRow(-1), m_firstColumn(-1), m_lastRow(-1), m_lastColumn(-1) + { + m_type = QAccessible::TableModelChanged; + } + + ~QAccessibleTableModelChangeEvent(); + + void setModelChangeType(ModelChangeType changeType) { m_modelChangeType = changeType; } + ModelChangeType modelChangeType() const { return m_modelChangeType; } + + void setFirstRow(int row) { m_firstRow = row; } + void setFirstColumn(int col) { m_firstColumn = col; } + void setLastRow(int row) { m_lastRow = row; } + void setLastColumn(int col) { m_lastColumn = col; } + int firstRow() const { return m_firstRow; } + int firstColumn() const { return m_firstColumn; } + int lastRow() const { return m_lastRow; } + int lastColumn() const { return m_lastColumn; } + +protected: + ModelChangeType m_modelChangeType; + int m_firstRow; + int m_firstColumn; + int m_lastRow; + int m_lastColumn; +}; + +#define QAccessibleInterface_iid "org.qt-project.Qt.QAccessibleInterface" +Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid) + +Q_GUI_EXPORT const char *qAccessibleRoleString(QAccessible::Role role); +Q_GUI_EXPORT const char *qAccessibleEventString(QAccessible::Event event); +Q_GUI_EXPORT QString qAccessibleLocalizedActionDescription(const QString &actionName); + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug d, const QAccessibleInterface *iface); +Q_GUI_EXPORT QDebug operator<<(QDebug d, const QAccessibleEvent &ev); +#endif + +#if QT_DEPRECATED_SINCE(5, 0) +inline void QAccessible::updateAccessibility(QObject *object, int child, Event reason) +{ + Q_ASSERT(object); + + QAccessibleEvent ev(object, reason); + ev.setChild(child); + updateAccessibility(&ev); +} +#endif + +QT_END_NAMESPACE + +#endif // QACCESSIBLE_H +#endif //!QT_NO_ACCESSIBILITY diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qaccessiblebridge.h b/qrenderdoc/3rdparty/qt/include/QtGui/qaccessiblebridge.h new file mode 100644 index 000000000..7429716e6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qaccessiblebridge.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACCESSIBLEBRIDGE_H +#define QACCESSIBLEBRIDGE_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qplugin.h> +#include <QtCore/qfactoryinterface.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ACCESSIBILITY + +class QAccessibleInterface; +class QAccessibleEvent; + +class QAccessibleBridge +{ +public: + virtual ~QAccessibleBridge() {} + virtual void setRootObject(QAccessibleInterface *) = 0; + virtual void notifyAccessibilityUpdate(QAccessibleEvent *event) = 0; +}; + +#define QAccessibleBridgeFactoryInterface_iid "org.qt-project.Qt.QAccessibleBridgeFactoryInterface" + +class Q_GUI_EXPORT QAccessibleBridgePlugin : public QObject +{ + Q_OBJECT +public: + explicit QAccessibleBridgePlugin(QObject *parent = Q_NULLPTR); + ~QAccessibleBridgePlugin(); + + virtual QAccessibleBridge *create(const QString &key) = 0; +}; + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif // QACCESSIBLEBRIDGE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qaccessibleobject.h b/qrenderdoc/3rdparty/qt/include/QtGui/qaccessibleobject.h new file mode 100644 index 000000000..dd69dcb08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qaccessibleobject.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACCESSIBLEOBJECT_H +#define QACCESSIBLEOBJECT_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qaccessible.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ACCESSIBILITY + +class QAccessibleObjectPrivate; +class QObject; + +class Q_GUI_EXPORT QAccessibleObject : public QAccessibleInterface +{ +public: + explicit QAccessibleObject(QObject *object); + + bool isValid() const Q_DECL_OVERRIDE; + QObject *object() const Q_DECL_OVERRIDE; + + // properties + QRect rect() const Q_DECL_OVERRIDE; + void setText(QAccessible::Text t, const QString &text) Q_DECL_OVERRIDE; + QAccessibleInterface *childAt(int x, int y) const Q_DECL_OVERRIDE; + +protected: + virtual ~QAccessibleObject(); + +private: + QAccessibleObjectPrivate *d; + Q_DISABLE_COPY(QAccessibleObject) +}; + +class Q_GUI_EXPORT QAccessibleApplication : public QAccessibleObject +{ +public: + QAccessibleApplication(); + + QWindow *window() const Q_DECL_OVERRIDE; + // relations + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface*) const Q_DECL_OVERRIDE; + QAccessibleInterface *focusChild() const Q_DECL_OVERRIDE; + + // navigation + QAccessibleInterface *parent() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + + // properties and state + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + QAccessible::Role role() const Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; +}; + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif // QACCESSIBLEOBJECT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qaccessibleplugin.h b/qrenderdoc/3rdparty/qt/include/QtGui/qaccessibleplugin.h new file mode 100644 index 000000000..09d4c542d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qaccessibleplugin.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACCESSIBLEPLUGIN_H +#define QACCESSIBLEPLUGIN_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qaccessible.h> +#include <QtCore/qfactoryinterface.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ACCESSIBILITY + +class QStringList; +class QAccessibleInterface; + +#define QAccessibleFactoryInterface_iid "org.qt-project.Qt.QAccessibleFactoryInterface" + +class QAccessiblePluginPrivate; + +class Q_GUI_EXPORT QAccessiblePlugin : public QObject +{ + Q_OBJECT +public: + explicit QAccessiblePlugin(QObject *parent = Q_NULLPTR); + ~QAccessiblePlugin(); + + virtual QAccessibleInterface *create(const QString &key, QObject *object) = 0; +}; + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif // QACCESSIBLEPLUGIN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qbackingstore.h b/qrenderdoc/3rdparty/qt/include/QtGui/qbackingstore.h new file mode 100644 index 000000000..2ba6e1c90 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qbackingstore.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBACKINGSTORE_H +#define QBACKINGSTORE_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qrect.h> + +#include <QtGui/qwindow.h> +#include <QtGui/qregion.h> + +QT_BEGIN_NAMESPACE + + +class QRegion; +class QRect; +class QPoint; +class QImage; +class QBackingStorePrivate; +class QPlatformBackingStore; + +class Q_GUI_EXPORT QBackingStore +{ +public: + explicit QBackingStore(QWindow *window); + ~QBackingStore(); + + QWindow *window() const; + + QPaintDevice *paintDevice(); + + // 'window' can be a child window, in which case 'region' is in child window coordinates and + // offset is the (child) window's offset in relation to the window surface. + void flush(const QRegion ®ion, QWindow *window = Q_NULLPTR, const QPoint &offset = QPoint()); + + void resize(const QSize &size); + QSize size() const; + + bool scroll(const QRegion &area, int dx, int dy); + + void beginPaint(const QRegion &); + void endPaint(); + + void setStaticContents(const QRegion ®ion); + QRegion staticContents() const; + bool hasStaticContents() const; + + QPlatformBackingStore *handle() const; + +private: + QScopedPointer<QBackingStorePrivate> d_ptr; +}; + +QT_END_NAMESPACE + +#endif // QBACKINGSTORE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qbitmap.h b/qrenderdoc/3rdparty/qt/include/QtGui/qbitmap.h new file mode 100644 index 000000000..def59b3f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qbitmap.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBITMAP_H +#define QBITMAP_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qpixmap.h> + +QT_BEGIN_NAMESPACE + + +class QVariant; + +class Q_GUI_EXPORT QBitmap : public QPixmap +{ +public: + QBitmap(); + QBitmap(const QPixmap &); + QBitmap(int w, int h); + explicit QBitmap(const QSize &); + explicit QBitmap(const QString &fileName, const char *format = Q_NULLPTR); + // ### Qt 6: don't inherit QPixmap +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QBitmap(const QBitmap &other) : QPixmap(other) {} + // QBitmap(QBitmap &&other) : QPixmap(std::move(other)) {} // QPixmap doesn't, yet, have a move ctor + QBitmap &operator=(const QBitmap &other) { QPixmap::operator=(other); return *this; } + QBitmap &operator=(QBitmap &&other) Q_DECL_NOTHROW { QPixmap::operator=(std::move(other)); return *this; } + ~QBitmap(); +#endif + + QBitmap &operator=(const QPixmap &); + inline void swap(QBitmap &other) { QPixmap::swap(other); } // prevent QBitmap<->QPixmap swaps + operator QVariant() const; + + inline void clear() { fill(Qt::color0); } + + static QBitmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor); + static QBitmap fromData(const QSize &size, const uchar *bits, + QImage::Format monoFormat = QImage::Format_MonoLSB); + + QBitmap transformed(const QMatrix &) const; + QBitmap transformed(const QTransform &matrix) const; + + typedef QExplicitlySharedDataPointer<QPlatformPixmap> DataPtr; +}; +Q_DECLARE_SHARED(QBitmap) + +QT_END_NAMESPACE + +#endif // QBITMAP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qbrush.h b/qrenderdoc/3rdparty/qt/include/QtGui/qbrush.h new file mode 100644 index 000000000..e5cff9cc9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qbrush.h @@ -0,0 +1,320 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBRUSH_H +#define QBRUSH_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qpair.h> +#include <QtCore/qpoint.h> +#include <QtCore/qvector.h> +#include <QtCore/qscopedpointer.h> +#include <QtGui/qcolor.h> +#include <QtGui/qmatrix.h> +#include <QtGui/qtransform.h> +#include <QtGui/qimage.h> +#include <QtGui/qpixmap.h> + +QT_BEGIN_NAMESPACE + + +struct QBrushData; +class QPixmap; +class QGradient; +class QVariant; +struct QBrushDataPointerDeleter; + +class Q_GUI_EXPORT QBrush +{ +public: + QBrush(); + QBrush(Qt::BrushStyle bs); + QBrush(const QColor &color, Qt::BrushStyle bs=Qt::SolidPattern); + QBrush(Qt::GlobalColor color, Qt::BrushStyle bs=Qt::SolidPattern); + + QBrush(const QColor &color, const QPixmap &pixmap); + QBrush(Qt::GlobalColor color, const QPixmap &pixmap); + QBrush(const QPixmap &pixmap); + QBrush(const QImage &image); + + QBrush(const QBrush &brush); + + QBrush(const QGradient &gradient); + + ~QBrush(); + QBrush &operator=(const QBrush &brush); +#ifdef Q_COMPILER_RVALUE_REFS + inline QBrush &operator=(QBrush &&other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); return *this; } +#endif + inline void swap(QBrush &other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); } + + operator QVariant() const; + + inline Qt::BrushStyle style() const; + void setStyle(Qt::BrushStyle); + + inline const QMatrix &matrix() const; + void setMatrix(const QMatrix &mat); + + inline QTransform transform() const; + void setTransform(const QTransform &); + + QPixmap texture() const; + void setTexture(const QPixmap &pixmap); + + QImage textureImage() const; + void setTextureImage(const QImage &image); + + inline const QColor &color() const; + void setColor(const QColor &color); + inline void setColor(Qt::GlobalColor color); + + const QGradient *gradient() const; + + bool isOpaque() const; + + bool operator==(const QBrush &b) const; + inline bool operator!=(const QBrush &b) const { return !(operator==(b)); } + +private: + friend class QRasterPaintEngine; + friend class QRasterPaintEnginePrivate; + friend struct QSpanData; + friend class QPainter; + friend bool Q_GUI_EXPORT qHasPixmapTexture(const QBrush& brush); + void detach(Qt::BrushStyle newStyle); + void init(const QColor &color, Qt::BrushStyle bs); + QScopedPointer<QBrushData, QBrushDataPointerDeleter> d; + void cleanUp(QBrushData *x); + +public: + inline bool isDetached() const; + typedef QScopedPointer<QBrushData, QBrushDataPointerDeleter> DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +inline void QBrush::setColor(Qt::GlobalColor acolor) +{ setColor(QColor(acolor)); } + +Q_DECLARE_SHARED(QBrush) + +/***************************************************************************** + QBrush stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QBrush &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QBrush &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QBrush &); +#endif + +struct QBrushData +{ + QAtomicInt ref; + Qt::BrushStyle style; + QColor color; + QTransform transform; +}; + +inline Qt::BrushStyle QBrush::style() const { return d->style; } +inline const QColor &QBrush::color() const { return d->color; } +inline const QMatrix &QBrush::matrix() const { return d->transform.toAffine(); } +inline QTransform QBrush::transform() const { return d->transform; } +inline bool QBrush::isDetached() const { return d->ref.load() == 1; } + + +/******************************************************************************* + * QGradients + */ +class QGradientPrivate; + +typedef QPair<qreal, QColor> QGradientStop; +typedef QVector<QGradientStop> QGradientStops; + +class Q_GUI_EXPORT QGradient +{ + Q_GADGET +public: + enum Type { + LinearGradient, + RadialGradient, + ConicalGradient, + NoGradient + }; + Q_ENUM(Type) + + enum Spread { + PadSpread, + ReflectSpread, + RepeatSpread + }; + Q_ENUM(Spread) + + enum CoordinateMode { + LogicalMode, + StretchToDeviceMode, + ObjectBoundingMode + }; + Q_ENUM(CoordinateMode) + + enum InterpolationMode { + ColorInterpolation, + ComponentInterpolation + }; + + QGradient(); + + Type type() const { return m_type; } + + inline void setSpread(Spread spread); + Spread spread() const { return m_spread; } + + void setColorAt(qreal pos, const QColor &color); + + void setStops(const QGradientStops &stops); + QGradientStops stops() const; + + CoordinateMode coordinateMode() const; + void setCoordinateMode(CoordinateMode mode); + + InterpolationMode interpolationMode() const; + void setInterpolationMode(InterpolationMode mode); + + bool operator==(const QGradient &gradient) const; + inline bool operator!=(const QGradient &other) const + { return !operator==(other); } + +private: + friend class QLinearGradient; + friend class QRadialGradient; + friend class QConicalGradient; + friend class QBrush; + + Type m_type; + Spread m_spread; + QGradientStops m_stops; + union { + struct { + qreal x1, y1, x2, y2; + } linear; + struct { + qreal cx, cy, fx, fy, cradius; + } radial; + struct { + qreal cx, cy, angle; + } conical; + } m_data; + void *dummy; // ### Qt 6: replace with actual content (CoordinateMode, InterpolationMode, ...) +}; + +inline void QGradient::setSpread(Spread aspread) +{ m_spread = aspread; } + +class Q_GUI_EXPORT QLinearGradient : public QGradient +{ +public: + QLinearGradient(); + QLinearGradient(const QPointF &start, const QPointF &finalStop); + QLinearGradient(qreal xStart, qreal yStart, qreal xFinalStop, qreal yFinalStop); + + QPointF start() const; + void setStart(const QPointF &start); + inline void setStart(qreal x, qreal y) { setStart(QPointF(x, y)); } + + QPointF finalStop() const; + void setFinalStop(const QPointF &stop); + inline void setFinalStop(qreal x, qreal y) { setFinalStop(QPointF(x, y)); } +}; + + +class Q_GUI_EXPORT QRadialGradient : public QGradient +{ +public: + QRadialGradient(); + QRadialGradient(const QPointF ¢er, qreal radius, const QPointF &focalPoint); + QRadialGradient(qreal cx, qreal cy, qreal radius, qreal fx, qreal fy); + + QRadialGradient(const QPointF ¢er, qreal radius); + QRadialGradient(qreal cx, qreal cy, qreal radius); + + QRadialGradient(const QPointF ¢er, qreal centerRadius, const QPointF &focalPoint, qreal focalRadius); + QRadialGradient(qreal cx, qreal cy, qreal centerRadius, qreal fx, qreal fy, qreal focalRadius); + + QPointF center() const; + void setCenter(const QPointF ¢er); + inline void setCenter(qreal x, qreal y) { setCenter(QPointF(x, y)); } + + QPointF focalPoint() const; + void setFocalPoint(const QPointF &focalPoint); + inline void setFocalPoint(qreal x, qreal y) { setFocalPoint(QPointF(x, y)); } + + qreal radius() const; + void setRadius(qreal radius); + + qreal centerRadius() const; + void setCenterRadius(qreal radius); + + qreal focalRadius() const; + void setFocalRadius(qreal radius); +}; + + +class Q_GUI_EXPORT QConicalGradient : public QGradient +{ +public: + QConicalGradient(); + QConicalGradient(const QPointF ¢er, qreal startAngle); + QConicalGradient(qreal cx, qreal cy, qreal startAngle); + + QPointF center() const; + void setCenter(const QPointF ¢er); + inline void setCenter(qreal x, qreal y) { setCenter(QPointF(x, y)); } + + qreal angle() const; + void setAngle(qreal angle); +}; + +QT_END_NAMESPACE + +#endif // QBRUSH_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qclipboard.h b/qrenderdoc/3rdparty/qt/include/QtGui/qclipboard.h new file mode 100644 index 000000000..e91444d3d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qclipboard.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCLIPBOARD_H +#define QCLIPBOARD_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_CLIPBOARD + +class QMimeData; +class QImage; +class QPixmap; + +class Q_GUI_EXPORT QClipboard : public QObject +{ + Q_OBJECT +private: + explicit QClipboard(QObject *parent); + ~QClipboard(); + +public: + enum Mode { Clipboard, Selection, FindBuffer, LastMode = FindBuffer }; + + void clear(Mode mode = Clipboard); + + bool supportsSelection() const; + bool supportsFindBuffer() const; + + bool ownsSelection() const; + bool ownsClipboard() const; + bool ownsFindBuffer() const; + + QString text(Mode mode = Clipboard) const; + QString text(QString& subtype, Mode mode = Clipboard) const; + void setText(const QString &, Mode mode = Clipboard); + + const QMimeData *mimeData(Mode mode = Clipboard ) const; + void setMimeData(QMimeData *data, Mode mode = Clipboard); + + QImage image(Mode mode = Clipboard) const; + QPixmap pixmap(Mode mode = Clipboard) const; + void setImage(const QImage &, Mode mode = Clipboard); + void setPixmap(const QPixmap &, Mode mode = Clipboard); + +Q_SIGNALS: + void changed(QClipboard::Mode mode); + void selectionChanged(); + void findBufferChanged(); + void dataChanged(); + +protected: + friend class QApplication; + friend class QApplicationPrivate; + friend class QGuiApplication; + friend class QBaseApplication; + friend class QDragManager; + friend class QPlatformClipboard; + +private: + Q_DISABLE_COPY(QClipboard) + + bool supportsMode(Mode mode) const; + bool ownsMode(Mode mode) const; + void emitChanged(Mode mode); +}; + +#endif // QT_NO_CLIPBOARD + +QT_END_NAMESPACE + +#endif // QCLIPBOARD_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qcolor.h b/qrenderdoc/3rdparty/qt/include/QtGui/qcolor.h new file mode 100644 index 000000000..83a93e25e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qcolor.h @@ -0,0 +1,303 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOLOR_H +#define QCOLOR_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qrgb.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qstringlist.h> +#include <QtGui/qrgba64.h> + +QT_BEGIN_NAMESPACE + + +class QColor; +class QColormap; +class QVariant; + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QColor &); +#endif +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QColor &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QColor &); +#endif + +class Q_GUI_EXPORT QColor +{ +public: + enum Spec { Invalid, Rgb, Hsv, Cmyk, Hsl }; + enum NameFormat { HexRgb, HexArgb }; + + inline QColor() Q_DECL_NOTHROW; + QColor(Qt::GlobalColor color) Q_DECL_NOTHROW; + inline QColor(int r, int g, int b, int a = 255); + QColor(QRgb rgb) Q_DECL_NOTHROW; + QColor(QRgba64 rgba64) Q_DECL_NOTHROW; + inline QColor(const QString& name); + inline QColor(const char *aname) : QColor(QLatin1String(aname)) {} + inline QColor(QLatin1String name); + QColor(Spec spec) Q_DECL_NOTHROW; + +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + inline QColor(const QColor &color) Q_DECL_NOTHROW; // ### Qt 6: remove all of these, the trivial ones are fine. +# ifdef Q_COMPILER_RVALUE_REFS + QColor(QColor &&other) Q_DECL_NOTHROW : cspec(other.cspec), ct(other.ct) {} + QColor &operator=(QColor &&other) Q_DECL_NOTHROW + { cspec = other.cspec; ct = other.ct; return *this; } +# endif + QColor &operator=(const QColor &) Q_DECL_NOTHROW; +#endif // Qt < 6 + + QColor &operator=(Qt::GlobalColor color) Q_DECL_NOTHROW; + + bool isValid() const Q_DECL_NOTHROW; + + // ### Qt 6: merge overloads + QString name() const; + QString name(NameFormat format) const; + + void setNamedColor(const QString& name); + void setNamedColor(QLatin1String name); + + static QStringList colorNames(); + + inline Spec spec() const Q_DECL_NOTHROW + { return cspec; } + + int alpha() const Q_DECL_NOTHROW; + void setAlpha(int alpha); + + qreal alphaF() const Q_DECL_NOTHROW; + void setAlphaF(qreal alpha); + + int red() const Q_DECL_NOTHROW; + int green() const Q_DECL_NOTHROW; + int blue() const Q_DECL_NOTHROW; + void setRed(int red); + void setGreen(int green); + void setBlue(int blue); + + qreal redF() const Q_DECL_NOTHROW; + qreal greenF() const Q_DECL_NOTHROW; + qreal blueF() const Q_DECL_NOTHROW; + void setRedF(qreal red); + void setGreenF(qreal green); + void setBlueF(qreal blue); + + void getRgb(int *r, int *g, int *b, int *a = Q_NULLPTR) const; + void setRgb(int r, int g, int b, int a = 255); + + void getRgbF(qreal *r, qreal *g, qreal *b, qreal *a = Q_NULLPTR) const; + void setRgbF(qreal r, qreal g, qreal b, qreal a = 1.0); + + QRgba64 rgba64() const Q_DECL_NOTHROW; + void setRgba64(QRgba64 rgba) Q_DECL_NOTHROW; + + QRgb rgba() const Q_DECL_NOTHROW; + void setRgba(QRgb rgba) Q_DECL_NOTHROW; + + QRgb rgb() const Q_DECL_NOTHROW; + void setRgb(QRgb rgb) Q_DECL_NOTHROW; + + int hue() const Q_DECL_NOTHROW; // 0 <= hue < 360 + int saturation() const Q_DECL_NOTHROW; + int hsvHue() const Q_DECL_NOTHROW; // 0 <= hue < 360 + int hsvSaturation() const Q_DECL_NOTHROW; + int value() const Q_DECL_NOTHROW; + + qreal hueF() const Q_DECL_NOTHROW; // 0.0 <= hueF < 360.0 + qreal saturationF() const Q_DECL_NOTHROW; + qreal hsvHueF() const Q_DECL_NOTHROW; // 0.0 <= hueF < 360.0 + qreal hsvSaturationF() const Q_DECL_NOTHROW; + qreal valueF() const Q_DECL_NOTHROW; + + void getHsv(int *h, int *s, int *v, int *a = Q_NULLPTR) const; + void setHsv(int h, int s, int v, int a = 255); + + void getHsvF(qreal *h, qreal *s, qreal *v, qreal *a = Q_NULLPTR) const; + void setHsvF(qreal h, qreal s, qreal v, qreal a = 1.0); + + int cyan() const Q_DECL_NOTHROW; + int magenta() const Q_DECL_NOTHROW; + int yellow() const Q_DECL_NOTHROW; + int black() const Q_DECL_NOTHROW; + + qreal cyanF() const Q_DECL_NOTHROW; + qreal magentaF() const Q_DECL_NOTHROW; + qreal yellowF() const Q_DECL_NOTHROW; + qreal blackF() const Q_DECL_NOTHROW; + + void getCmyk(int *c, int *m, int *y, int *k, int *a = Q_NULLPTR); + void setCmyk(int c, int m, int y, int k, int a = 255); + + void getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *a = Q_NULLPTR); + void setCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0); + + int hslHue() const Q_DECL_NOTHROW; // 0 <= hue < 360 + int hslSaturation() const Q_DECL_NOTHROW; + int lightness() const Q_DECL_NOTHROW; + + qreal hslHueF() const Q_DECL_NOTHROW; // 0.0 <= hueF < 360.0 + qreal hslSaturationF() const Q_DECL_NOTHROW; + qreal lightnessF() const Q_DECL_NOTHROW; + + void getHsl(int *h, int *s, int *l, int *a = Q_NULLPTR) const; + void setHsl(int h, int s, int l, int a = 255); + + void getHslF(qreal *h, qreal *s, qreal *l, qreal *a = Q_NULLPTR) const; + void setHslF(qreal h, qreal s, qreal l, qreal a = 1.0); + + QColor toRgb() const Q_DECL_NOTHROW; + QColor toHsv() const Q_DECL_NOTHROW; + QColor toCmyk() const Q_DECL_NOTHROW; + QColor toHsl() const Q_DECL_NOTHROW; + + Q_REQUIRED_RESULT QColor convertTo(Spec colorSpec) const Q_DECL_NOTHROW; + + static QColor fromRgb(QRgb rgb) Q_DECL_NOTHROW; + static QColor fromRgba(QRgb rgba) Q_DECL_NOTHROW; + + static QColor fromRgb(int r, int g, int b, int a = 255); + static QColor fromRgbF(qreal r, qreal g, qreal b, qreal a = 1.0); + + static QColor fromRgba64(ushort r, ushort g, ushort b, ushort a = USHRT_MAX) Q_DECL_NOTHROW; + static QColor fromRgba64(QRgba64 rgba) Q_DECL_NOTHROW; + + static QColor fromHsv(int h, int s, int v, int a = 255); + static QColor fromHsvF(qreal h, qreal s, qreal v, qreal a = 1.0); + + static QColor fromCmyk(int c, int m, int y, int k, int a = 255); + static QColor fromCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0); + + static QColor fromHsl(int h, int s, int l, int a = 255); + static QColor fromHslF(qreal h, qreal s, qreal l, qreal a = 1.0); + + Q_REQUIRED_RESULT QColor light(int f = 150) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT QColor lighter(int f = 150) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT QColor dark(int f = 200) const Q_DECL_NOTHROW; + Q_REQUIRED_RESULT QColor darker(int f = 200) const Q_DECL_NOTHROW; + + bool operator==(const QColor &c) const Q_DECL_NOTHROW; + bool operator!=(const QColor &c) const Q_DECL_NOTHROW; + + operator QVariant() const; + + static bool isValidColor(const QString &name); + static bool isValidColor(QLatin1String) Q_DECL_NOTHROW; + +private: + + void invalidate() Q_DECL_NOTHROW; + template <typename String> + bool setColorFromString(const String &name); + + Spec cspec; + union { + struct { + ushort alpha; + ushort red; + ushort green; + ushort blue; + ushort pad; + } argb; + struct { + ushort alpha; + ushort hue; + ushort saturation; + ushort value; + ushort pad; + } ahsv; + struct { + ushort alpha; + ushort cyan; + ushort magenta; + ushort yellow; + ushort black; + } acmyk; + struct { + ushort alpha; + ushort hue; + ushort saturation; + ushort lightness; + ushort pad; + } ahsl; + ushort array[5]; + } ct; + + friend class QColormap; +#ifndef QT_NO_DATASTREAM + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QColor &); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QColor &); +#endif +}; +Q_DECLARE_TYPEINFO(QColor, QT_VERSION >= QT_VERSION_CHECK(6,0,0) ? Q_MOVABLE_TYPE : Q_RELOCATABLE_TYPE); + +inline QColor::QColor() Q_DECL_NOTHROW +{ invalidate(); } + +inline QColor::QColor(int r, int g, int b, int a) +{ setRgb(r, g, b, a); } + +inline QColor::QColor(QLatin1String aname) +{ setNamedColor(aname); } + +inline QColor::QColor(const QString& aname) +{ setNamedColor(aname); } + +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) +inline QColor::QColor(const QColor &acolor) Q_DECL_NOTHROW + : cspec(acolor.cspec) +{ ct.argb = acolor.ct.argb; } +#endif + +inline bool QColor::isValid() const Q_DECL_NOTHROW +{ return cspec != Invalid; } + +inline QColor QColor::lighter(int f) const Q_DECL_NOTHROW +{ return light(f); } + +inline QColor QColor::darker(int f) const Q_DECL_NOTHROW +{ return dark(f); } + +QT_END_NAMESPACE + +#endif // QCOLOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qcursor.h b/qrenderdoc/3rdparty/qt/include/QtGui/qcursor.h new file mode 100644 index 000000000..c7e9188e5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qcursor.h @@ -0,0 +1,135 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCURSOR_H +#define QCURSOR_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qpoint.h> +#include <QtGui/qwindowdefs.h> + +QT_BEGIN_NAMESPACE + + +class QVariant; +class QScreen; + +/* + ### The fake cursor has to go first with old qdoc. +*/ +#ifdef QT_NO_CURSOR + +class Q_GUI_EXPORT QCursor +{ +public: + static QPoint pos(); + static QPoint pos(const QScreen *screen); + static void setPos(int x, int y); + static void setPos(QScreen *screen, int x, int y); + inline static void setPos(const QPoint &p) { setPos(p.x(), p.y()); } +private: + QCursor(); +}; + +#endif // QT_NO_CURSOR + +#ifndef QT_NO_CURSOR + +class QCursorData; +class QBitmap; +class QPixmap; + + +class Q_GUI_EXPORT QCursor +{ +public: + QCursor(); + QCursor(Qt::CursorShape shape); + QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX=-1, int hotY=-1); + QCursor(const QPixmap &pixmap, int hotX=-1, int hotY=-1); + QCursor(const QCursor &cursor); + ~QCursor(); + QCursor &operator=(const QCursor &cursor); +#ifdef Q_COMPILER_RVALUE_REFS + QCursor(QCursor &&other) Q_DECL_NOTHROW : d(other.d) { other.d = Q_NULLPTR; } + inline QCursor &operator=(QCursor &&other) Q_DECL_NOTHROW + { swap(other); return *this; } +#endif + + void swap(QCursor &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + operator QVariant() const; + + Qt::CursorShape shape() const; + void setShape(Qt::CursorShape newShape); + + const QBitmap *bitmap() const; + const QBitmap *mask() const; + QPixmap pixmap() const; + QPoint hotSpot() const; + + static QPoint pos(); + static QPoint pos(const QScreen *screen); + static void setPos(int x, int y); + 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; +}; +Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QCursor) + +/***************************************************************************** + QCursor stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &outS, const QCursor &cursor); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &inS, QCursor &cursor); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QCursor &); +#endif + +#endif // QT_NO_CURSOR + +QT_END_NAMESPACE + +#endif // QCURSOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qdesktopservices.h b/qrenderdoc/3rdparty/qt/include/QtGui/qdesktopservices.h new file mode 100644 index 000000000..21705e275 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qdesktopservices.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDESKTOPSERVICES_H +#define QDESKTOPSERVICES_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qstring.h> +#include <QtCore/qstandardpaths.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_DESKTOPSERVICES + +class QStringList; +class QUrl; +class QObject; + +class Q_GUI_EXPORT QDesktopServices +{ +public: + static bool openUrl(const QUrl &url); + static void setUrlHandler(const QString &scheme, QObject *receiver, const char *method); + static void unsetUrlHandler(const QString &scheme); + +#if QT_DEPRECATED_SINCE(5, 0) + //Must match QStandardPaths::StandardLocation + enum StandardLocation { + DesktopLocation, + DocumentsLocation, + FontsLocation, + ApplicationsLocation, + MusicLocation, + MoviesLocation, + PicturesLocation, + TempLocation, + HomeLocation, + DataLocation, + CacheLocation + }; + + QT_DEPRECATED static QString storageLocation(StandardLocation type) { + return storageLocationImpl(static_cast<QStandardPaths::StandardLocation>(type)); + } + QT_DEPRECATED static QString displayName(StandardLocation type) { + return QStandardPaths::displayName(static_cast<QStandardPaths::StandardLocation>(type)); + } +#endif +private: + static QString storageLocationImpl(QStandardPaths::StandardLocation type); +}; + +#endif // QT_NO_DESKTOPSERVICES + +QT_END_NAMESPACE + +#endif // QDESKTOPSERVICES_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qdrag.h b/qrenderdoc/3rdparty/qt/include/QtGui/qdrag.h new file mode 100644 index 000000000..a8288e1b5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qdrag.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDRAG_H +#define QDRAG_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_DRAGANDDROP +class QMimeData; +class QDragPrivate; +class QPixmap; +class QPoint; +class QDragManager; + + +class Q_GUI_EXPORT QDrag : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QDrag) +public: + explicit QDrag(QObject *dragSource); + ~QDrag(); + + void setMimeData(QMimeData *data); + QMimeData *mimeData() const; + + void setPixmap(const QPixmap &); + QPixmap pixmap() const; + + void setHotSpot(const QPoint &hotspot); + QPoint hotSpot() const; + + QObject *source() const; + QObject *target() const; + + Qt::DropAction start(Qt::DropActions supportedActions = Qt::CopyAction); + Qt::DropAction exec(Qt::DropActions supportedActions = Qt::MoveAction); + Qt::DropAction exec(Qt::DropActions supportedActions, Qt::DropAction defaultAction); + + void setDragCursor(const QPixmap &cursor, Qt::DropAction action); + QPixmap dragCursor(Qt::DropAction action) const; + + Qt::DropActions supportedActions() const; + Qt::DropAction defaultAction() const; + + static void cancel(); + +Q_SIGNALS: + void actionChanged(Qt::DropAction action); + void targetChanged(QObject *newTarget); + +private: + friend class QDragManager; + Q_DISABLE_COPY(QDrag) +}; + +#endif // QT_NO_DRAGANDDROP + +QT_END_NAMESPACE + +#endif // QDRAG_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qevent.h b/qrenderdoc/3rdparty/qt/include/QtGui/qevent.h new file mode 100644 index 000000000..b8f86acd7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qevent.h @@ -0,0 +1,1054 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEVENT_H +#define QEVENT_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qwindowdefs.h> +#include <QtGui/qregion.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qstring.h> +#include <QtGui/qkeysequence.h> +#include <QtCore/qcoreevent.h> +#include <QtCore/qvariant.h> +#include <QtCore/qmap.h> // ### Qt 6: Remove +#include <QtCore/qvector.h> +#include <QtCore/qset.h> // ### Qt 6: Remove +#include <QtCore/qurl.h> +#include <QtCore/qfile.h> // ### Qt 6: Replace by <QtCore/qiodevice.h> and forward declare QFile +#include <QtGui/qvector2d.h> +#include <QtGui/qtouchdevice.h> // ### Qt 6: Replace by forward declaration + +QT_BEGIN_NAMESPACE + + +class QAction; +#ifndef QT_NO_GESTURES +class QGesture; +#endif +class QScreen; + +class Q_GUI_EXPORT QInputEvent : public QEvent +{ +public: + explicit QInputEvent(Type type, Qt::KeyboardModifiers modifiers = Qt::NoModifier); + ~QInputEvent(); + inline Qt::KeyboardModifiers modifiers() const { return modState; } + inline void setModifiers(Qt::KeyboardModifiers amodifiers) { modState = amodifiers; } + inline ulong timestamp() const { return ts; } + inline void setTimestamp(ulong atimestamp) { ts = atimestamp; } +protected: + Qt::KeyboardModifiers modState; + ulong ts; +}; + +class Q_GUI_EXPORT QEnterEvent : public QEvent +{ +public: + QEnterEvent(const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos); + ~QEnterEvent(); + +#ifndef QT_NO_INTEGER_EVENT_COORDINATES + inline QPoint pos() const { return l.toPoint(); } + inline QPoint globalPos() const { return s.toPoint(); } + inline int x() const { return qRound(l.x()); } + inline int y() const { return qRound(l.y()); } + inline int globalX() const { return qRound(s.x()); } + inline int globalY() const { return qRound(s.y()); } +#endif + const QPointF &localPos() const { return l; } + const QPointF &windowPos() const { return w; } + const QPointF &screenPos() const { return s; } + +protected: + QPointF l, w, s; +}; + +class Q_GUI_EXPORT QMouseEvent : public QInputEvent +{ +public: + QMouseEvent(Type type, const QPointF &localPos, Qt::MouseButton button, + Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); + QMouseEvent(Type type, const QPointF &localPos, const QPointF &screenPos, + Qt::MouseButton button, Qt::MouseButtons buttons, + Qt::KeyboardModifiers modifiers); + QMouseEvent(Type type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, + Qt::MouseButton button, Qt::MouseButtons buttons, + Qt::KeyboardModifiers modifiers); + QMouseEvent(Type type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, + Qt::MouseButton button, Qt::MouseButtons buttons, + Qt::KeyboardModifiers modifiers, Qt::MouseEventSource source); + ~QMouseEvent(); + +#ifndef QT_NO_INTEGER_EVENT_COORDINATES + inline QPoint pos() const { return l.toPoint(); } + inline QPoint globalPos() const { return s.toPoint(); } + inline int x() const { return qRound(l.x()); } + inline int y() const { return qRound(l.y()); } + inline int globalX() const { return qRound(s.x()); } + inline int globalY() const { return qRound(s.y()); } +#endif + const QPointF &localPos() const { return l; } + const QPointF &windowPos() const { return w; } + const QPointF &screenPos() const { return s; } + + inline Qt::MouseButton button() const { return b; } + inline Qt::MouseButtons buttons() const { return mouseState; } + + inline void setLocalPos(const QPointF &localPosition) { l = localPosition; } + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline QPointF posF() const { return l; } +#endif + + Qt::MouseEventSource source() const; + Qt::MouseEventFlags flags() const; + +protected: + QPointF l, w, s; + Qt::MouseButton b; + Qt::MouseButtons mouseState; + int caps; + QVector2D velocity; + + friend class QGuiApplicationPrivate; +}; + +class Q_GUI_EXPORT QHoverEvent : public QInputEvent +{ +public: + QHoverEvent(Type type, const QPointF &pos, const QPointF &oldPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier); + ~QHoverEvent(); + +#ifndef QT_NO_INTEGER_EVENT_COORDINATES + inline QPoint pos() const { return p.toPoint(); } + inline QPoint oldPos() const { return op.toPoint(); } +#endif + + inline const QPointF &posF() const { return p; } + inline const QPointF &oldPosF() const { return op; } + +protected: + QPointF p, op; +}; + +#if QT_CONFIG(wheelevent) +class Q_GUI_EXPORT QWheelEvent : public QInputEvent +{ +public: + enum { DefaultDeltasPerStep = 120 }; + + QWheelEvent(const QPointF &pos, int delta, + Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, + Qt::Orientation orient = Qt::Vertical); + QWheelEvent(const QPointF &pos, const QPointF& globalPos, int delta, + Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, + Qt::Orientation orient = Qt::Vertical); + QWheelEvent(const QPointF &pos, const QPointF& globalPos, + QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, + Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); + QWheelEvent(const QPointF &pos, const QPointF& globalPos, + QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, + Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase); + QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, + int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, + Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source); + QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, + int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, + Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source, bool inverted); + ~QWheelEvent(); + + + inline QPoint pixelDelta() const { return pixelD; } + inline QPoint angleDelta() const { return angleD; } + + inline int delta() const { return qt4D; } + inline Qt::Orientation orientation() const { return qt4O; } + +#ifndef QT_NO_INTEGER_EVENT_COORDINATES + inline QPoint pos() const { return p.toPoint(); } + inline QPoint globalPos() const { return g.toPoint(); } + inline int x() const { return p.x(); } + inline int y() const { return p.y(); } + inline int globalX() const { return g.x(); } + inline int globalY() const { return g.y(); } +#endif + inline const QPointF &posF() const { return p; } + inline const QPointF &globalPosF() const { return g; } + + inline Qt::MouseButtons buttons() const { return mouseState; } + + inline Qt::ScrollPhase phase() const { return Qt::ScrollPhase(ph); } + inline bool inverted() const { return invertedScrolling; } + + Qt::MouseEventSource source() const { return Qt::MouseEventSource(src); } + +protected: + QPointF p; + QPointF g; + QPoint pixelD; + QPoint angleD; + int qt4D; + Qt::Orientation qt4O; + Qt::MouseButtons mouseState; + uint ph : 2; + uint src: 2; + bool invertedScrolling : 1; + int reserved : 27; + + friend class QApplication; +}; +#endif + +#if QT_CONFIG(tabletevent) +class Q_GUI_EXPORT QTabletEvent : public QInputEvent +{ + Q_GADGET +public: + enum TabletDevice { NoDevice, Puck, Stylus, Airbrush, FourDMouse, + XFreeEraser /*internal*/, RotationStylus }; + Q_ENUM(TabletDevice) + enum PointerType { UnknownPointer, Pen, Cursor, Eraser }; + Q_ENUM(PointerType) + QTabletEvent(Type t, const QPointF &pos, const QPointF &globalPos, + int device, int pointerType, qreal pressure, int xTilt, int yTilt, + qreal tangentialPressure, qreal rotation, int z, + Qt::KeyboardModifiers keyState, qint64 uniqueID); // ### remove in Qt 6 + QTabletEvent(Type t, const QPointF &pos, const QPointF &globalPos, + int device, int pointerType, qreal pressure, int xTilt, int yTilt, + qreal tangentialPressure, qreal rotation, int z, + Qt::KeyboardModifiers keyState, qint64 uniqueID, + Qt::MouseButton button, Qt::MouseButtons buttons); + ~QTabletEvent(); + + inline QPoint pos() const { return mPos.toPoint(); } + inline QPoint globalPos() const { return mGPos.toPoint(); } +#if QT_DEPRECATED_SINCE(5,0) + QT_DEPRECATED inline const QPointF &hiResGlobalPos() const { return mPos; } +#endif + + inline const QPointF &posF() const { return mPos; } + inline const QPointF &globalPosF() const { return mGPos; } + + inline int x() const { return qRound(mPos.x()); } + inline int y() const { return qRound(mPos.y()); } + inline int globalX() const { return qRound(mGPos.x()); } + inline int globalY() const { return qRound(mGPos.y()); } + inline qreal hiResGlobalX() const { return mGPos.x(); } + inline qreal hiResGlobalY() const { return mGPos.y(); } + inline TabletDevice device() const { return TabletDevice(mDev); } + inline PointerType pointerType() const { return PointerType(mPointerType); } + inline qint64 uniqueId() const { return mUnique; } + inline qreal pressure() const { return mPress; } + inline int z() const { return mZ; } + inline qreal tangentialPressure() const { return mTangential; } + inline qreal rotation() const { return mRot; } + inline int xTilt() const { return mXT; } + inline int yTilt() const { return mYT; } + Qt::MouseButton button() const; + Qt::MouseButtons buttons() const; + +protected: + QPointF mPos, mGPos; + int mDev, mPointerType, mXT, mYT, mZ; + qreal mPress, mTangential, mRot; + qint64 mUnique; + + // QTabletEventPrivate for extra storage. + // ### Qt 6: QPointingEvent will have Buttons, QTabletEvent will inherit + void *mExtra; +}; +#endif // QT_CONFIG(tabletevent) + +#ifndef QT_NO_GESTURES +class Q_GUI_EXPORT QNativeGestureEvent : public QInputEvent +{ +public: + QNativeGestureEvent(Qt::NativeGestureType type, const QPointF &localPos, const QPointF &windowPos, + const QPointF &screenPos, qreal value, ulong sequenceId, quint64 intArgument); + Qt::NativeGestureType gestureType() const { return mGestureType; } + qreal value() const { return mRealValue; } + +#ifndef QT_NO_INTEGER_EVENT_COORDINATES + inline const QPoint pos() const { return mLocalPos.toPoint(); } + inline const QPoint globalPos() const { return mScreenPos.toPoint(); } +#endif + const QPointF &localPos() const { return mLocalPos; } + const QPointF &windowPos() const { return mWindowPos; } + const QPointF &screenPos() const { return mScreenPos; } + +protected: + Qt::NativeGestureType mGestureType; + QPointF mLocalPos; + QPointF mWindowPos; + QPointF mScreenPos; + qreal mRealValue; + ulong mSequenceId; + quint64 mIntValue; +}; +#endif // QT_NO_GESTURES + +class Q_GUI_EXPORT QKeyEvent : public QInputEvent +{ +public: + QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text = QString(), + bool autorep = false, ushort count = 1); + QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, + quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, + const QString &text = QString(), bool autorep = false, ushort count = 1); + ~QKeyEvent(); + + int key() const { return k; } +#ifndef QT_NO_SHORTCUT + bool matches(QKeySequence::StandardKey key) const; +#endif + Qt::KeyboardModifiers modifiers() const; + inline QString text() const { return txt; } + inline bool isAutoRepeat() const { return autor; } + inline int count() const { return int(c); } + + inline quint32 nativeScanCode() const { return nScanCode; } + inline quint32 nativeVirtualKey() const { return nVirtualKey; } + inline quint32 nativeModifiers() const { return nModifiers; } + + // Functions for the extended key event information +#if QT_DEPRECATED_SINCE(5, 0) + static inline QKeyEvent *createExtendedKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, + quint32 nativeScanCode, quint32 nativeVirtualKey, + quint32 nativeModifiers, + const QString& text = QString(), bool autorep = false, + ushort count = 1) + { + return new QKeyEvent(type, key, modifiers, + nativeScanCode, nativeVirtualKey, nativeModifiers, + text, autorep, count); + } + + inline bool hasExtendedInfo() const { return true; } +#endif + +protected: + QString txt; + int k; + quint32 nScanCode; + quint32 nVirtualKey; + quint32 nModifiers; + ushort c; + ushort autor:1; + // ushort reserved:15; +}; + + +class Q_GUI_EXPORT QFocusEvent : public QEvent +{ +public: + explicit QFocusEvent(Type type, Qt::FocusReason reason=Qt::OtherFocusReason); + ~QFocusEvent(); + + inline bool gotFocus() const { return type() == FocusIn; } + inline bool lostFocus() const { return type() == FocusOut; } + + Qt::FocusReason reason() const; + +private: + Qt::FocusReason m_reason; +}; + + +class Q_GUI_EXPORT QPaintEvent : public QEvent +{ +public: + explicit QPaintEvent(const QRegion& paintRegion); + explicit QPaintEvent(const QRect &paintRect); + ~QPaintEvent(); + + inline const QRect &rect() const { return m_rect; } + inline const QRegion ®ion() const { return m_region; } + +protected: + QRect m_rect; + QRegion m_region; + bool m_erased; +}; + +class Q_GUI_EXPORT QMoveEvent : public QEvent +{ +public: + QMoveEvent(const QPoint &pos, const QPoint &oldPos); + ~QMoveEvent(); + + inline const QPoint &pos() const { return p; } + inline const QPoint &oldPos() const { return oldp;} +protected: + QPoint p, oldp; + friend class QApplication; +}; + +class Q_GUI_EXPORT QExposeEvent : public QEvent +{ +public: + explicit QExposeEvent(const QRegion &rgn); + ~QExposeEvent(); + + inline const QRegion ®ion() const { return rgn; } + +protected: + QRegion rgn; +}; + +class Q_GUI_EXPORT QPlatformSurfaceEvent : public QEvent +{ +public: + enum SurfaceEventType { + SurfaceCreated, + SurfaceAboutToBeDestroyed + }; + + explicit QPlatformSurfaceEvent(SurfaceEventType surfaceEventType); + ~QPlatformSurfaceEvent(); + + inline SurfaceEventType surfaceEventType() const { return m_surfaceEventType; } + +protected: + SurfaceEventType m_surfaceEventType; +}; + +class Q_GUI_EXPORT QResizeEvent : public QEvent +{ +public: + QResizeEvent(const QSize &size, const QSize &oldSize); + ~QResizeEvent(); + + inline const QSize &size() const { return s; } + inline const QSize &oldSize()const { return olds;} +protected: + QSize s, olds; + friend class QApplication; +}; + + +class Q_GUI_EXPORT QCloseEvent : public QEvent +{ +public: + QCloseEvent(); + ~QCloseEvent(); +}; + + +class Q_GUI_EXPORT QIconDragEvent : public QEvent +{ +public: + QIconDragEvent(); + ~QIconDragEvent(); +}; + + +class Q_GUI_EXPORT QShowEvent : public QEvent +{ +public: + QShowEvent(); + ~QShowEvent(); +}; + + +class Q_GUI_EXPORT QHideEvent : public QEvent +{ +public: + QHideEvent(); + ~QHideEvent(); +}; + +#ifndef QT_NO_CONTEXTMENU +class Q_GUI_EXPORT QContextMenuEvent : public QInputEvent +{ +public: + enum Reason { Mouse, Keyboard, Other }; + + QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos, + Qt::KeyboardModifiers modifiers); + QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos); + QContextMenuEvent(Reason reason, const QPoint &pos); + ~QContextMenuEvent(); + + inline int x() const { return p.x(); } + inline int y() const { return p.y(); } + inline int globalX() const { return gp.x(); } + inline int globalY() const { return gp.y(); } + + inline const QPoint& pos() const { return p; } + inline const QPoint& globalPos() const { return gp; } + + inline Reason reason() const { return Reason(reas); } + +protected: + QPoint p; + QPoint gp; + uint reas : 8; +}; +#endif // QT_NO_CONTEXTMENU + +#ifndef QT_NO_INPUTMETHOD +class Q_GUI_EXPORT QInputMethodEvent : public QEvent +{ +public: + enum AttributeType { + TextFormat, + Cursor, + Language, + Ruby, + Selection + }; + class Attribute { + public: + Attribute(AttributeType typ, int s, int l, QVariant val) : type(typ), start(s), length(l), value(qMove(val)) {} + Attribute(AttributeType typ, int s, int l) : type(typ), start(s), length(l), value() {} + + AttributeType type; + int start; + int length; + QVariant value; + }; + QInputMethodEvent(); + QInputMethodEvent(const QString &preeditText, const QList<Attribute> &attributes); + ~QInputMethodEvent(); + + void setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0); + inline const QList<Attribute> &attributes() const { return attrs; } + inline const QString &preeditString() const { return preedit; } + + inline const QString &commitString() const { return commit; } + inline int replacementStart() const { return replace_from; } + inline int replacementLength() const { return replace_length; } + + QInputMethodEvent(const QInputMethodEvent &other); + +private: + QString preedit; + QList<Attribute> attrs; + QString commit; + int replace_from; + int replace_length; +}; +Q_DECLARE_TYPEINFO(QInputMethodEvent::Attribute, Q_MOVABLE_TYPE); + +class Q_GUI_EXPORT QInputMethodQueryEvent : public QEvent +{ +public: + explicit QInputMethodQueryEvent(Qt::InputMethodQueries queries); + ~QInputMethodQueryEvent(); + + Qt::InputMethodQueries queries() const { return m_queries; } + + void setValue(Qt::InputMethodQuery query, const QVariant &value); + QVariant value(Qt::InputMethodQuery query) const; +private: + Qt::InputMethodQueries m_queries; + struct QueryPair { + Qt::InputMethodQuery query; + QVariant value; + }; + friend QTypeInfo<QueryPair>; + QVector<QueryPair> m_values; +}; +Q_DECLARE_TYPEINFO(QInputMethodQueryEvent::QueryPair, Q_MOVABLE_TYPE); + +#endif // QT_NO_INPUTMETHOD + +#ifndef QT_NO_DRAGANDDROP + +class QMimeData; + +class Q_GUI_EXPORT QDropEvent : public QEvent +{ +public: + QDropEvent(const QPointF& pos, Qt::DropActions actions, const QMimeData *data, + Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = Drop); + ~QDropEvent(); + + inline QPoint pos() const { return p.toPoint(); } + inline const QPointF &posF() const { return p; } + inline Qt::MouseButtons mouseButtons() const { return mouseState; } + inline Qt::KeyboardModifiers keyboardModifiers() const { return modState; } + + inline Qt::DropActions possibleActions() const { return act; } + inline Qt::DropAction proposedAction() const { return default_action; } + inline void acceptProposedAction() { drop_action = default_action; accept(); } + + inline Qt::DropAction dropAction() const { return drop_action; } + void setDropAction(Qt::DropAction action); + + QObject* source() const; + inline const QMimeData *mimeData() const { return mdata; } + +protected: + friend class QApplication; + QPointF p; + Qt::MouseButtons mouseState; + Qt::KeyboardModifiers modState; + Qt::DropActions act; + Qt::DropAction drop_action; + Qt::DropAction default_action; + const QMimeData *mdata; +}; + + +class Q_GUI_EXPORT QDragMoveEvent : public QDropEvent +{ +public: + QDragMoveEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, + Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = DragMove); + ~QDragMoveEvent(); + + inline QRect answerRect() const { return rect; } + + inline void accept() { QDropEvent::accept(); } + inline void ignore() { QDropEvent::ignore(); } + + inline void accept(const QRect & r) { accept(); rect = r; } + inline void ignore(const QRect & r) { ignore(); rect = r; } + +protected: + QRect rect; +}; + + +class Q_GUI_EXPORT QDragEnterEvent : public QDragMoveEvent +{ +public: + QDragEnterEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, + Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); + ~QDragEnterEvent(); +}; + + +class Q_GUI_EXPORT QDragLeaveEvent : public QEvent +{ +public: + QDragLeaveEvent(); + ~QDragLeaveEvent(); +}; +#endif // QT_NO_DRAGANDDROP + + +class Q_GUI_EXPORT QHelpEvent : public QEvent +{ +public: + QHelpEvent(Type type, const QPoint &pos, const QPoint &globalPos); + ~QHelpEvent(); + + inline int x() const { return p.x(); } + inline int y() const { return p.y(); } + inline int globalX() const { return gp.x(); } + inline int globalY() const { return gp.y(); } + + inline const QPoint& pos() const { return p; } + inline const QPoint& globalPos() const { return gp; } + +private: + QPoint p; + QPoint gp; +}; + +#ifndef QT_NO_STATUSTIP +class Q_GUI_EXPORT QStatusTipEvent : public QEvent +{ +public: + explicit QStatusTipEvent(const QString &tip); + ~QStatusTipEvent(); + + inline QString tip() const { return s; } +private: + QString s; +}; +#endif + +#if QT_CONFIG(whatsthis) +class Q_GUI_EXPORT QWhatsThisClickedEvent : public QEvent +{ +public: + explicit QWhatsThisClickedEvent(const QString &href); + ~QWhatsThisClickedEvent(); + + inline QString href() const { return s; } +private: + QString s; +}; +#endif + +#ifndef QT_NO_ACTION +class Q_GUI_EXPORT QActionEvent : public QEvent +{ + QAction *act, *bef; +public: + QActionEvent(int type, QAction *action, QAction *before = Q_NULLPTR); + ~QActionEvent(); + + inline QAction *action() const { return act; } + inline QAction *before() const { return bef; } +}; +#endif + +class Q_GUI_EXPORT QFileOpenEvent : public QEvent +{ +public: + explicit QFileOpenEvent(const QString &file); + explicit QFileOpenEvent(const QUrl &url); + ~QFileOpenEvent(); + + inline QString file() const { return f; } + QUrl url() const { return m_url; } + bool openFile(QFile &file, QIODevice::OpenMode flags) const; +private: + QString f; + QUrl m_url; +}; + +#ifndef QT_NO_TOOLBAR +class Q_GUI_EXPORT QToolBarChangeEvent : public QEvent +{ +public: + explicit QToolBarChangeEvent(bool t); + ~QToolBarChangeEvent(); + + inline bool toggle() const { return tog; } +private: + uint tog : 1; +}; +#endif + +#ifndef QT_NO_SHORTCUT +class Q_GUI_EXPORT QShortcutEvent : public QEvent +{ +public: + QShortcutEvent(const QKeySequence &key, int id, bool ambiguous = false); + ~QShortcutEvent(); + + inline const QKeySequence &key() const { return sequence; } + inline int shortcutId() const { return sid; } + inline bool isAmbiguous() const { return ambig; } +protected: + QKeySequence sequence; + bool ambig; + int sid; +}; +#endif + +class Q_GUI_EXPORT QWindowStateChangeEvent: public QEvent +{ +public: + explicit QWindowStateChangeEvent(Qt::WindowStates aOldState, bool isOverride = false); + ~QWindowStateChangeEvent(); + + inline Qt::WindowStates oldState() const { return ostate; } + bool isOverride() const; + +private: + Qt::WindowStates ostate; + bool m_override; +}; + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QEvent *); +#endif + +#ifndef QT_NO_SHORTCUT +inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);} +inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);} +#endif // QT_NO_SHORTCUT + +class Q_GUI_EXPORT QPointingDeviceUniqueId +{ + Q_GADGET + Q_PROPERTY(qint64 numericId READ numericId CONSTANT) +public: + Q_ALWAYS_INLINE + Q_DECL_CONSTEXPR QPointingDeviceUniqueId() Q_DECL_NOTHROW : m_numericId(-1) {} + // compiler-generated copy/move ctor/assignment operators are ok! + // compiler-generated dtor is ok! + + static QPointingDeviceUniqueId fromNumericId(qint64 id); + + Q_ALWAYS_INLINE Q_DECL_CONSTEXPR bool isValid() const Q_DECL_NOTHROW { return m_numericId != -1; } + qint64 numericId() const Q_DECL_NOTHROW; + +private: + // TODO: for TUIO 2, or any other type of complex token ID, an internal + // array (or hash) can be added to hold additional properties. + // In this case, m_numericId will then turn into an index into that array (or hash). + qint64 m_numericId; +}; +Q_DECLARE_TYPEINFO(QPointingDeviceUniqueId, Q_MOVABLE_TYPE); +template <> class QList<QPointingDeviceUniqueId> {}; // to prevent instantiation: use QVector instead + +Q_GUI_EXPORT bool operator==(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs) Q_DECL_NOTHROW; +inline bool operator!=(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs) Q_DECL_NOTHROW +{ return !operator==(lhs, rhs); } +Q_GUI_EXPORT uint qHash(QPointingDeviceUniqueId key, uint seed = 0) Q_DECL_NOTHROW; + + + +class QTouchEventTouchPointPrivate; +class Q_GUI_EXPORT QTouchEvent : public QInputEvent +{ +public: + class Q_GUI_EXPORT TouchPoint + { + public: + enum InfoFlag { + Pen = 0x0001, + Token = 0x0002 + }; +#ifndef Q_MOC_RUN + // otherwise moc gives + // Error: Meta object features not supported for nested classes + Q_DECLARE_FLAGS(InfoFlags, InfoFlag) +#endif + + explicit TouchPoint(int id = -1); + TouchPoint(const TouchPoint &other); +#ifdef Q_COMPILER_RVALUE_REFS + TouchPoint(TouchPoint &&other) Q_DECL_NOEXCEPT + : d(Q_NULLPTR) + { qSwap(d, other.d); } + TouchPoint &operator=(TouchPoint &&other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); return *this; } +#endif + ~TouchPoint(); + + TouchPoint &operator=(const TouchPoint &other) + { if ( d != other.d ) { TouchPoint copy(other); swap(copy); } return *this; } + + void swap(TouchPoint &other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); } + + int id() const; + QPointingDeviceUniqueId uniqueId() const; + + Qt::TouchPointState state() const; + + QPointF pos() const; + QPointF startPos() const; + QPointF lastPos() const; + + QPointF scenePos() const; + QPointF startScenePos() const; + QPointF lastScenePos() const; + + QPointF screenPos() const; + QPointF startScreenPos() const; + QPointF lastScreenPos() const; + + QPointF normalizedPos() const; + QPointF startNormalizedPos() const; + QPointF lastNormalizedPos() const; + + QRectF rect() const; + QRectF sceneRect() const; + QRectF screenRect() const; + + qreal pressure() const; + qreal rotation() const; + QSizeF ellipseDiameters() const; + + QVector2D velocity() const; + InfoFlags flags() const; + QVector<QPointF> rawScreenPositions() const; + + // internal + void setId(int id); + void setUniqueId(qint64 uid); + void setState(Qt::TouchPointStates state); + void setPos(const QPointF &pos); + void setScenePos(const QPointF &scenePos); + void setScreenPos(const QPointF &screenPos); + void setNormalizedPos(const QPointF &normalizedPos); + void setStartPos(const QPointF &startPos); + void setStartScenePos(const QPointF &startScenePos); + void setStartScreenPos(const QPointF &startScreenPos); + void setStartNormalizedPos(const QPointF &startNormalizedPos); + void setLastPos(const QPointF &lastPos); + void setLastScenePos(const QPointF &lastScenePos); + void setLastScreenPos(const QPointF &lastScreenPos); + void setLastNormalizedPos(const QPointF &lastNormalizedPos); + void setRect(const QRectF &rect); // deprecated + void setSceneRect(const QRectF &sceneRect); // deprecated + void setScreenRect(const QRectF &screenRect); // deprecated + void setPressure(qreal pressure); + void setRotation(qreal angle); + void setEllipseDiameters(const QSizeF &dia); + void setVelocity(const QVector2D &v); + void setFlags(InfoFlags flags); + void setRawScreenPositions(const QVector<QPointF> &positions); + + private: + QTouchEventTouchPointPrivate *d; + friend class QGuiApplication; + friend class QGuiApplicationPrivate; + friend class QApplication; + friend class QApplicationPrivate; + }; + +#if QT_DEPRECATED_SINCE(5, 0) + enum DeviceType { + TouchScreen, + TouchPad + }; +#endif + + explicit QTouchEvent(QEvent::Type eventType, + QTouchDevice *device = Q_NULLPTR, + Qt::KeyboardModifiers modifiers = Qt::NoModifier, + Qt::TouchPointStates touchPointStates = Qt::TouchPointStates(), + const QList<QTouchEvent::TouchPoint> &touchPoints = QList<QTouchEvent::TouchPoint>()); + ~QTouchEvent(); + + inline QWindow *window() const { return _window; } + inline QObject *target() const { return _target; } +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline QTouchEvent::DeviceType deviceType() const { return static_cast<DeviceType>(int(_device->type())); } +#endif + inline Qt::TouchPointStates touchPointStates() const { return _touchPointStates; } + inline const QList<QTouchEvent::TouchPoint> &touchPoints() const { return _touchPoints; } + inline QTouchDevice *device() const { return _device; } + + // internal + inline void setWindow(QWindow *awindow) { _window = awindow; } + inline void setTarget(QObject *atarget) { _target = atarget; } + inline void setTouchPointStates(Qt::TouchPointStates aTouchPointStates) { _touchPointStates = aTouchPointStates; } + inline void setTouchPoints(const QList<QTouchEvent::TouchPoint> &atouchPoints) { _touchPoints = atouchPoints; } + inline void setDevice(QTouchDevice *adevice) { _device = adevice; } + +protected: + QWindow *_window; + QObject *_target; + QTouchDevice *_device; + Qt::TouchPointStates _touchPointStates; + QList<QTouchEvent::TouchPoint> _touchPoints; + + friend class QGuiApplication; + friend class QGuiApplicationPrivate; + friend class QApplication; + friend class QApplicationPrivate; +#ifndef QT_NO_GRAPHICSVIEW + friend class QGraphicsScenePrivate; // direct access to _touchPoints +#endif +}; +Q_DECLARE_TYPEINFO(QTouchEvent::TouchPoint, Q_MOVABLE_TYPE); +Q_DECLARE_OPERATORS_FOR_FLAGS(QTouchEvent::TouchPoint::InfoFlags) + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QTouchEvent::TouchPoint &); +#endif + +class Q_GUI_EXPORT QScrollPrepareEvent : public QEvent +{ +public: + explicit QScrollPrepareEvent(const QPointF &startPos); + ~QScrollPrepareEvent(); + + QPointF startPos() const; + + QSizeF viewportSize() const; + QRectF contentPosRange() const; + QPointF contentPos() const; + + void setViewportSize(const QSizeF &size); + void setContentPosRange(const QRectF &rect); + void setContentPos(const QPointF &pos); + +private: + QObject* m_target; // Qt 6 remove. + QPointF m_startPos; + QSizeF m_viewportSize; + QRectF m_contentPosRange; + QPointF m_contentPos; +}; + + +class Q_GUI_EXPORT QScrollEvent : public QEvent +{ +public: + enum ScrollState + { + ScrollStarted, + ScrollUpdated, + ScrollFinished + }; + + QScrollEvent(const QPointF &contentPos, const QPointF &overshoot, ScrollState scrollState); + ~QScrollEvent(); + + QPointF contentPos() const; + QPointF overshootDistance() const; + ScrollState scrollState() const; + +private: + QPointF m_contentPos; + QPointF m_overshoot; + QScrollEvent::ScrollState m_state; +}; + +class Q_GUI_EXPORT QScreenOrientationChangeEvent : public QEvent +{ +public: + QScreenOrientationChangeEvent(QScreen *screen, Qt::ScreenOrientation orientation); + ~QScreenOrientationChangeEvent(); + + QScreen *screen() const; + Qt::ScreenOrientation orientation() const; + +private: + QScreen *m_screen; + Qt::ScreenOrientation m_orientation; +}; + +class Q_GUI_EXPORT QApplicationStateChangeEvent : public QEvent +{ +public: + explicit QApplicationStateChangeEvent(Qt::ApplicationState state); + Qt::ApplicationState applicationState() const; + +private: + Qt::ApplicationState m_applicationState; +}; + +QT_END_NAMESPACE + +#endif // QEVENT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qfont.h b/qrenderdoc/3rdparty/qt/include/QtGui/qfont.h new file mode 100644 index 000000000..6f0dd27fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qfont.h @@ -0,0 +1,361 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONT_H +#define QFONT_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qwindowdefs.h> +#include <QtCore/qstring.h> +#include <QtCore/qsharedpointer.h> + + +QT_BEGIN_NAMESPACE + + +class QFontPrivate; /* don't touch */ +class QStringList; +class QVariant; + +class Q_GUI_EXPORT QFont +{ + Q_GADGET +public: + enum StyleHint { + Helvetica, SansSerif = Helvetica, + Times, Serif = Times, + Courier, TypeWriter = Courier, + OldEnglish, Decorative = OldEnglish, + System, + AnyStyle, + Cursive, + Monospace, + Fantasy + }; + + enum StyleStrategy { + PreferDefault = 0x0001, + PreferBitmap = 0x0002, + PreferDevice = 0x0004, + PreferOutline = 0x0008, + ForceOutline = 0x0010, + PreferMatch = 0x0020, + PreferQuality = 0x0040, + PreferAntialias = 0x0080, + NoAntialias = 0x0100, + OpenGLCompatible = 0x0200, + ForceIntegerMetrics = 0x0400, + NoSubpixelAntialias = 0x0800, + NoFontMerging = 0x8000 + }; + Q_ENUM(StyleStrategy) + + enum HintingPreference { + PreferDefaultHinting = 0, + PreferNoHinting = 1, + PreferVerticalHinting = 2, + PreferFullHinting = 3 + }; + + // Mapping OpenType weight value. + enum Weight { + Thin = 0, // 100 + ExtraLight = 12, // 200 + Light = 25, // 300 + Normal = 50, // 400 + Medium = 57, // 500 + DemiBold = 63, // 600 + Bold = 75, // 700 + ExtraBold = 81, // 800 + Black = 87 // 900 + }; + + enum Style { + StyleNormal, + StyleItalic, + StyleOblique + }; + + enum Stretch { + AnyStretch = 0, + UltraCondensed = 50, + ExtraCondensed = 62, + Condensed = 75, + SemiCondensed = 87, + Unstretched = 100, + SemiExpanded = 112, + Expanded = 125, + ExtraExpanded = 150, + UltraExpanded = 200 + }; + + enum Capitalization { + MixedCase, + AllUppercase, + AllLowercase, + SmallCaps, + Capitalize + }; + + enum SpacingType { + PercentageSpacing, + AbsoluteSpacing + }; + + enum ResolveProperties { + FamilyResolved = 0x0001, + SizeResolved = 0x0002, + StyleHintResolved = 0x0004, + StyleStrategyResolved = 0x0008, + WeightResolved = 0x0010, + StyleResolved = 0x0020, + UnderlineResolved = 0x0040, + OverlineResolved = 0x0080, + StrikeOutResolved = 0x0100, + FixedPitchResolved = 0x0200, + StretchResolved = 0x0400, + KerningResolved = 0x0800, + CapitalizationResolved = 0x1000, + LetterSpacingResolved = 0x2000, + WordSpacingResolved = 0x4000, + HintingPreferenceResolved = 0x8000, + StyleNameResolved = 0x10000, + AllPropertiesResolved = 0x1ffff + }; + + QFont(); + QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false); + QFont(const QFont &, QPaintDevice *pd); + QFont(const QFont &); + ~QFont(); + + void swap(QFont &other) + { qSwap(d, other.d); qSwap(resolve_mask, other.resolve_mask); } + + QString family() const; + void setFamily(const QString &); + + QString styleName() const; + void setStyleName(const QString &); + + int pointSize() const; + void setPointSize(int); + qreal pointSizeF() const; + void setPointSizeF(qreal); + + int pixelSize() const; + void setPixelSize(int); + + int weight() const; + void setWeight(int); + + inline bool bold() const; + inline void setBold(bool); + + void setStyle(Style style); + Style style() const; + + inline bool italic() const; + inline void setItalic(bool b); + + bool underline() const; + void setUnderline(bool); + + bool overline() const; + void setOverline(bool); + + bool strikeOut() const; + void setStrikeOut(bool); + + bool fixedPitch() const; + void setFixedPitch(bool); + + bool kerning() const; + void setKerning(bool); + + StyleHint styleHint() const; + StyleStrategy styleStrategy() const; + void setStyleHint(StyleHint, StyleStrategy = PreferDefault); + void setStyleStrategy(StyleStrategy s); + + int stretch() const; + void setStretch(int); + + qreal letterSpacing() const; + SpacingType letterSpacingType() const; + void setLetterSpacing(SpacingType type, qreal spacing); + + qreal wordSpacing() const; + void setWordSpacing(qreal spacing); + + void setCapitalization(Capitalization); + Capitalization capitalization() const; + + void setHintingPreference(HintingPreference hintingPreference); + HintingPreference hintingPreference() const; + +#if QT_DEPRECATED_SINCE(5, 5) + bool rawMode() const; + void setRawMode(bool); +#endif + + // dupicated from QFontInfo + bool exactMatch() const; + + QFont &operator=(const QFont &); + bool operator==(const QFont &) const; + bool operator!=(const QFont &) const; + bool operator<(const QFont &) const; + operator QVariant() const; + bool isCopyOf(const QFont &) const; +#ifdef Q_COMPILER_RVALUE_REFS + inline QFont &operator=(QFont &&other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); qSwap(resolve_mask, other.resolve_mask); return *this; } +#endif + +#if QT_DEPRECATED_SINCE(5, 3) + // needed for X11 + QT_DEPRECATED void setRawName(const QString &); + QT_DEPRECATED QString rawName() const; +#endif + + QString key() const; + + QString toString() const; + bool fromString(const QString &); + + static QString substitute(const QString &); + static QStringList substitutes(const QString &); + static QStringList substitutions(); + static void insertSubstitution(const QString&, const QString &); + static void insertSubstitutions(const QString&, const QStringList &); + static void removeSubstitutions(const QString &); +#if QT_DEPRECATED_SINCE(5, 0) + static QT_DEPRECATED void removeSubstitution(const QString &family) { removeSubstitutions(family); } +#endif + static void initialize(); + static void cleanup(); + static void cacheStatistics(); + + QString defaultFamily() const; + QString lastResortFamily() const; + QString lastResortFont() const; + + QFont resolve(const QFont &) const; + inline uint resolve() const { return resolve_mask; } + inline void resolve(uint mask) { resolve_mask = mask; } + +private: + explicit QFont(QFontPrivate *); + + void detach(); + + + friend class QFontPrivate; + friend class QFontDialogPrivate; + friend class QFontMetrics; + friend class QFontMetricsF; + friend class QFontInfo; + friend class QPainter; + friend class QPainterPrivate; + friend class QApplication; + friend class QWidget; + friend class QWidgetPrivate; + friend class QTextLayout; + friend class QTextEngine; + friend class QStackTextEngine; + friend class QTextLine; + friend struct QScriptLine; + friend class QOpenGLContext; + friend class QWin32PaintEngine; + friend class QAlphaPaintEngine; + friend class QPainterPath; + friend class QTextItemInt; + friend class QPicturePaintEngine; + friend class QPainterReplayer; + friend class QPaintBufferEngine; + friend class QCommandLinkButtonPrivate; + friend class QFontEngine; + +#ifndef QT_NO_DATASTREAM + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QFont &); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QFont &); +#endif + + QExplicitlySharedDataPointer<QFontPrivate> d; + uint resolve_mask; +}; + +Q_DECLARE_SHARED(QFont) + +Q_GUI_EXPORT uint qHash(const QFont &font, uint seed = 0) Q_DECL_NOTHROW; + +inline bool QFont::bold() const +{ return weight() > Medium; } + + +inline void QFont::setBold(bool enable) +{ setWeight(enable ? Bold : Normal); } + +inline bool QFont::italic() const +{ + return (style() != StyleNormal); +} + +inline void QFont::setItalic(bool b) { + setStyle(b ? StyleItalic : StyleNormal); +} + + +/***************************************************************************** + QFont stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QFont &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QFont &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QFont &); +#endif + +QT_END_NAMESPACE + +#endif // QFONT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qfontdatabase.h b/qrenderdoc/3rdparty/qt/include/QtGui/qfontdatabase.h new file mode 100644 index 000000000..e6aef493b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qfontdatabase.h @@ -0,0 +1,178 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONTDATABASE_H +#define QFONTDATABASE_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qwindowdefs.h> +#include <QtCore/qstring.h> +#include <QtGui/qfont.h> + +QT_BEGIN_NAMESPACE + + +class QStringList; +template <class T> class QList; +struct QFontDef; +class QFontEngine; + +class QFontDatabasePrivate; + +class Q_GUI_EXPORT QFontDatabase +{ + Q_GADGET +public: + // do not re-order or delete entries from this enum without updating the + // QPF2 format and makeqpf!! + enum WritingSystem { + Any, + + Latin, + Greek, + Cyrillic, + Armenian, + Hebrew, + Arabic, + Syriac, + Thaana, + Devanagari, + Bengali, + Gurmukhi, + Gujarati, + Oriya, + Tamil, + Telugu, + Kannada, + Malayalam, + Sinhala, + Thai, + Lao, + Tibetan, + Myanmar, + Georgian, + Khmer, + SimplifiedChinese, + TraditionalChinese, + Japanese, + Korean, + Vietnamese, + + Symbol, + Other = Symbol, + + Ogham, + Runic, + Nko, + + WritingSystemsCount + }; + Q_ENUM(WritingSystem) + + enum SystemFont { + GeneralFont, + FixedFont, + TitleFont, + SmallestReadableFont + }; + Q_ENUM(SystemFont) + + static QList<int> standardSizes(); + + QFontDatabase(); + + QList<WritingSystem> writingSystems() const; + QList<WritingSystem> writingSystems(const QString &family) const; + + QStringList families(WritingSystem writingSystem = Any) const; + QStringList styles(const QString &family) const; + QList<int> pointSizes(const QString &family, const QString &style = QString()); + QList<int> smoothSizes(const QString &family, const QString &style); + QString styleString(const QFont &font); + QString styleString(const QFontInfo &fontInfo); + + QFont font(const QString &family, const QString &style, int pointSize) const; + + bool isBitmapScalable(const QString &family, const QString &style = QString()) const; + bool isSmoothlyScalable(const QString &family, const QString &style = QString()) const; + bool isScalable(const QString &family, const QString &style = QString()) const; + bool isFixedPitch(const QString &family, const QString &style = QString()) const; + + bool italic(const QString &family, const QString &style) const; + bool bold(const QString &family, const QString &style) const; + int weight(const QString &family, const QString &style) const; + + bool hasFamily(const QString &family) const; + bool isPrivateFamily(const QString &family) const; + + static QString writingSystemName(WritingSystem writingSystem); + static QString writingSystemSample(WritingSystem writingSystem); + + static int addApplicationFont(const QString &fileName); + static int addApplicationFontFromData(const QByteArray &fontData); + static QStringList applicationFontFamilies(int id); + static bool removeApplicationFont(int id); + static bool removeAllApplicationFonts(); + +#if QT_DEPRECATED_SINCE(5, 2) + QT_DEPRECATED static bool supportsThreadedFontRendering(); +#endif + + static QFont systemFont(SystemFont type); + +private: + static void createDatabase(); + static void parseFontName(const QString &name, QString &foundry, QString &family); + static QString resolveFontFamilyAlias(const QString &family); + static QFontEngine *findFont(const QFontDef &request, int script); + static void load(const QFontPrivate *d, int script); + + friend struct QFontDef; + friend class QFontPrivate; + friend class QFontDialog; + friend class QFontDialogPrivate; + friend class QFontEngineMulti; + friend class QRawFont; + + QFontDatabasePrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QFONTDATABASE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qfontinfo.h b/qrenderdoc/3rdparty/qt/include/QtGui/qfontinfo.h new file mode 100644 index 000000000..f5e05775b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qfontinfo.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONTINFO_H +#define QFONTINFO_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qfont.h> +#include <QtCore/qsharedpointer.h> + +QT_BEGIN_NAMESPACE + + +class Q_GUI_EXPORT QFontInfo +{ +public: + QFontInfo(const QFont &); + QFontInfo(const QFontInfo &); + ~QFontInfo(); + + QFontInfo &operator=(const QFontInfo &); + + void swap(QFontInfo &other) { qSwap(d, other.d); } + + QString family() const; + QString styleName() const; + int pixelSize() const; + int pointSize() const; + qreal pointSizeF() const; + bool italic() const; + QFont::Style style() const; + int weight() const; + inline bool bold() const { return weight() > QFont::Normal; } + bool underline() const; + bool overline() const; + bool strikeOut() const; + bool fixedPitch() const; + QFont::StyleHint styleHint() const; +#if QT_DEPRECATED_SINCE(5, 5) + bool rawMode() const; +#endif + + bool exactMatch() const; + +private: + QExplicitlySharedDataPointer<QFontPrivate> d; +}; + +Q_DECLARE_SHARED(QFontInfo) + +QT_END_NAMESPACE + +#endif // QFONTINFO_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qfontmetrics.h b/qrenderdoc/3rdparty/qt/include/QtGui/qfontmetrics.h new file mode 100644 index 000000000..3eac30909 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qfontmetrics.h @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONTMETRICS_H +#define QFONTMETRICS_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qfont.h> +#include <QtCore/qsharedpointer.h> +#ifndef QT_INCLUDE_COMPAT +#include <QtCore/qrect.h> +#endif + +QT_BEGIN_NAMESPACE + + + +class QTextCodec; +class QRect; + + +class Q_GUI_EXPORT QFontMetrics +{ +public: + explicit QFontMetrics(const QFont &); + QFontMetrics(const QFont &, QPaintDevice *pd); + QFontMetrics(const QFontMetrics &); + ~QFontMetrics(); + + QFontMetrics &operator=(const QFontMetrics &); +#ifdef Q_COMPILER_RVALUE_REFS + inline QFontMetrics &operator=(QFontMetrics &&other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); return *this; } +#endif + + void swap(QFontMetrics &other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); } + + int ascent() const; + int capHeight() const; + int descent() const; + int height() const; + int leading() const; + int lineSpacing() const; + int minLeftBearing() const; + int minRightBearing() const; + int maxWidth() const; + + int xHeight() const; + int averageCharWidth() const; + + bool inFont(QChar) const; + bool inFontUcs4(uint ucs4) const; + + int leftBearing(QChar) const; + int rightBearing(QChar) const; + int width(const QString &, int len = -1) const; + int width(const QString &, int len, int flags) const; + + int width(QChar) const; +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + QT_DEPRECATED int charWidth(const QString &str, int pos) const; +#endif + + QRect boundingRect(QChar) const; + + QRect boundingRect(const QString &text) const; + QRect boundingRect(const QRect &r, int flags, const QString &text, int tabstops = 0, int *tabarray = Q_NULLPTR) const; + inline QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text, + int tabstops = 0, int *tabarray = Q_NULLPTR) const + { return boundingRect(QRect(x, y, w, h), flags, text, tabstops, tabarray); } + QSize size(int flags, const QString& str, int tabstops = 0, int *tabarray = Q_NULLPTR) const; + + QRect tightBoundingRect(const QString &text) const; + + QString elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags = 0) const; + + int underlinePos() const; + int overlinePos() const; + int strikeOutPos() const; + int lineWidth() const; + + bool operator==(const QFontMetrics &other) const; + inline bool operator !=(const QFontMetrics &other) const { return !operator==(other); } + +private: + friend class QFontMetricsF; + friend class QStackTextEngine; + + QExplicitlySharedDataPointer<QFontPrivate> d; +}; + +Q_DECLARE_SHARED(QFontMetrics) + +class Q_GUI_EXPORT QFontMetricsF +{ +public: + explicit QFontMetricsF(const QFont &); + QFontMetricsF(const QFont &, QPaintDevice *pd); + QFontMetricsF(const QFontMetrics &); + QFontMetricsF(const QFontMetricsF &); + ~QFontMetricsF(); + + QFontMetricsF &operator=(const QFontMetricsF &); + QFontMetricsF &operator=(const QFontMetrics &); +#ifdef Q_COMPILER_RVALUE_REFS + inline QFontMetricsF &operator=(QFontMetricsF &&other) + { qSwap(d, other.d); return *this; } +#endif + + void swap(QFontMetricsF &other) { qSwap(d, other.d); } + + qreal ascent() const; + qreal capHeight() const; + qreal descent() const; + qreal height() const; + qreal leading() const; + qreal lineSpacing() const; + qreal minLeftBearing() const; + qreal minRightBearing() const; + qreal maxWidth() const; + + qreal xHeight() const; + qreal averageCharWidth() const; + + bool inFont(QChar) const; + bool inFontUcs4(uint ucs4) const; + + qreal leftBearing(QChar) const; + qreal rightBearing(QChar) const; + qreal width(const QString &string) const; + + qreal width(QChar) const; + + QRectF boundingRect(const QString &string) const; + QRectF boundingRect(QChar) const; + QRectF boundingRect(const QRectF &r, int flags, const QString& string, int tabstops = 0, int *tabarray = Q_NULLPTR) const; + QSizeF size(int flags, const QString& str, int tabstops = 0, int *tabarray = Q_NULLPTR) const; + + QRectF tightBoundingRect(const QString &text) const; + + QString elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const; + + qreal underlinePos() const; + qreal overlinePos() const; + qreal strikeOutPos() const; + qreal lineWidth() const; + + bool operator==(const QFontMetricsF &other) const; + inline bool operator !=(const QFontMetricsF &other) const { return !operator==(other); } + +private: + QExplicitlySharedDataPointer<QFontPrivate> d; +}; + +Q_DECLARE_SHARED(QFontMetricsF) + +QT_END_NAMESPACE + +#endif // QFONTMETRICS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qgenericmatrix.h b/qrenderdoc/3rdparty/qt/include/QtGui/qgenericmatrix.h new file mode 100644 index 000000000..6a2a9e5ba --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qgenericmatrix.h @@ -0,0 +1,403 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGENERICMATRIX_H +#define QGENERICMATRIX_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qmetatype.h> +#include <QtCore/qdebug.h> +#include <QtCore/qdatastream.h> + +QT_BEGIN_NAMESPACE + + +template <int N, int M, typename T> +class QGenericMatrix +{ +public: + QGenericMatrix(); + explicit QGenericMatrix(Qt::Initialization) {} + explicit QGenericMatrix(const T *values); + + const T& operator()(int row, int column) const; + T& operator()(int row, int column); + + bool isIdentity() const; + void setToIdentity(); + + void fill(T value); + + Q_REQUIRED_RESULT QGenericMatrix<M, N, T> transposed() const; + + QGenericMatrix<N, M, T>& operator+=(const QGenericMatrix<N, M, T>& other); + QGenericMatrix<N, M, T>& operator-=(const QGenericMatrix<N, M, T>& other); + QGenericMatrix<N, M, T>& operator*=(T factor); + QGenericMatrix<N, M, T>& operator/=(T divisor); + bool operator==(const QGenericMatrix<N, M, T>& other) const; + bool operator!=(const QGenericMatrix<N, M, T>& other) const; + + void copyDataTo(T *values) const; + + T *data() { return *m; } + const T *data() const { return *m; } + const T *constData() const { return *m; } + +#if !defined(Q_NO_TEMPLATE_FRIENDS) + template<int NN, int MM, typename TT> + friend QGenericMatrix<NN, MM, TT> operator+(const QGenericMatrix<NN, MM, TT>& m1, const QGenericMatrix<NN, MM, TT>& m2); + template<int NN, int MM, typename TT> + friend QGenericMatrix<NN, MM, TT> operator-(const QGenericMatrix<NN, MM, TT>& m1, const QGenericMatrix<NN, MM, TT>& m2); + template<int NN, int M1, int M2, typename TT> + friend QGenericMatrix<M1, M2, TT> operator*(const QGenericMatrix<NN, M2, TT>& m1, const QGenericMatrix<M1, NN, TT>& m2); + template<int NN, int MM, typename TT> + friend QGenericMatrix<NN, MM, TT> operator-(const QGenericMatrix<NN, MM, TT>& matrix); + template<int NN, int MM, typename TT> + friend QGenericMatrix<NN, MM, TT> operator*(TT factor, const QGenericMatrix<NN, MM, TT>& matrix); + template<int NN, int MM, typename TT> + friend QGenericMatrix<NN, MM, TT> operator*(const QGenericMatrix<NN, MM, TT>& matrix, TT factor); + template<int NN, int MM, typename TT> + friend QGenericMatrix<NN, MM, TT> operator/(const QGenericMatrix<NN, MM, TT>& matrix, TT divisor); + +private: +#endif + T m[N][M]; // Column-major order to match OpenGL. + +#if !defined(Q_NO_TEMPLATE_FRIENDS) + template <int NN, int MM, typename TT> + friend class QGenericMatrix; +#endif +}; +template <int N, int M, typename T> +class QTypeInfo<QGenericMatrix<N, M, T> > + : public QTypeInfoMerger<QGenericMatrix<N, M, T>, T> +{ +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) +public: + enum { + isStatic = true, + }; // at least Q_RELOCATABLE_TYPE, for BC during Qt 5 +#endif +}; + +template <int N, int M, typename T> +Q_INLINE_TEMPLATE QGenericMatrix<N, M, T>::QGenericMatrix() +{ + setToIdentity(); +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T>::QGenericMatrix(const T *values) +{ + for (int col = 0; col < N; ++col) + for (int row = 0; row < M; ++row) + m[col][row] = values[row * N + col]; +} + +template <int N, int M, typename T> +Q_INLINE_TEMPLATE const T& QGenericMatrix<N, M, T>::operator()(int row, int column) const +{ + Q_ASSERT(row >= 0 && row < M && column >= 0 && column < N); + return m[column][row]; +} + +template <int N, int M, typename T> +Q_INLINE_TEMPLATE T& QGenericMatrix<N, M, T>::operator()(int row, int column) +{ + Q_ASSERT(row >= 0 && row < M && column >= 0 && column < N); + return m[column][row]; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE bool QGenericMatrix<N, M, T>::isIdentity() const +{ + for (int col = 0; col < N; ++col) { + for (int row = 0; row < M; ++row) { + if (row == col) { + if (m[col][row] != 1.0f) + return false; + } else { + if (m[col][row] != 0.0f) + return false; + } + } + } + return true; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE void QGenericMatrix<N, M, T>::setToIdentity() +{ + for (int col = 0; col < N; ++col) { + for (int row = 0; row < M; ++row) { + if (row == col) + m[col][row] = 1.0f; + else + m[col][row] = 0.0f; + } + } +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE void QGenericMatrix<N, M, T>::fill(T value) +{ + for (int col = 0; col < N; ++col) + for (int row = 0; row < M; ++row) + m[col][row] = value; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<M, N, T> QGenericMatrix<N, M, T>::transposed() const +{ + QGenericMatrix<M, N, T> result(Qt::Uninitialized); + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + result.m[row][col] = m[col][row]; + return result; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T>& QGenericMatrix<N, M, T>::operator+=(const QGenericMatrix<N, M, T>& other) +{ + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + m[col][row] += other.m[col][row]; + return *this; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T>& QGenericMatrix<N, M, T>::operator-=(const QGenericMatrix<N, M, T>& other) +{ + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + m[col][row] -= other.m[col][row]; + return *this; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T>& QGenericMatrix<N, M, T>::operator*=(T factor) +{ + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + m[col][row] *= factor; + return *this; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE bool QGenericMatrix<N, M, T>::operator==(const QGenericMatrix<N, M, T>& other) const +{ + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) { + if (m[col][row] != other.m[col][row]) + return false; + } + return true; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE bool QGenericMatrix<N, M, T>::operator!=(const QGenericMatrix<N, M, T>& other) const +{ + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) { + if (m[col][row] != other.m[col][row]) + return true; + } + return false; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T>& QGenericMatrix<N, M, T>::operator/=(T divisor) +{ + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + m[col][row] /= divisor; + return *this; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T> operator+(const QGenericMatrix<N, M, T>& m1, const QGenericMatrix<N, M, T>& m2) +{ + QGenericMatrix<N, M, T> result(Qt::Uninitialized); + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + result.m[col][row] = m1.m[col][row] + m2.m[col][row]; + return result; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T> operator-(const QGenericMatrix<N, M, T>& m1, const QGenericMatrix<N, M, T>& m2) +{ + QGenericMatrix<N, M, T> result(Qt::Uninitialized); + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + result.m[col][row] = m1.m[col][row] - m2.m[col][row]; + return result; +} + +template <int N, int M1, int M2, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<M1, M2, T> operator*(const QGenericMatrix<N, M2, T>& m1, const QGenericMatrix<M1, N, T>& m2) +{ + QGenericMatrix<M1, M2, T> result(Qt::Uninitialized); + for (int row = 0; row < M2; ++row) { + for (int col = 0; col < M1; ++col) { + T sum(0.0f); + for (int j = 0; j < N; ++j) + sum += m1.m[j][row] * m2.m[col][j]; + result.m[col][row] = sum; + } + } + return result; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T> operator-(const QGenericMatrix<N, M, T>& matrix) +{ + QGenericMatrix<N, M, T> result(Qt::Uninitialized); + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + result.m[col][row] = -matrix.m[col][row]; + return result; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T> operator*(T factor, const QGenericMatrix<N, M, T>& matrix) +{ + QGenericMatrix<N, M, T> result(Qt::Uninitialized); + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + result.m[col][row] = matrix.m[col][row] * factor; + return result; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T> operator*(const QGenericMatrix<N, M, T>& matrix, T factor) +{ + QGenericMatrix<N, M, T> result(Qt::Uninitialized); + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + result.m[col][row] = matrix.m[col][row] * factor; + return result; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE QGenericMatrix<N, M, T> operator/(const QGenericMatrix<N, M, T>& matrix, T divisor) +{ + QGenericMatrix<N, M, T> result(Qt::Uninitialized); + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + result.m[col][row] = matrix.m[col][row] / divisor; + return result; +} + +template <int N, int M, typename T> +Q_OUTOFLINE_TEMPLATE void QGenericMatrix<N, M, T>::copyDataTo(T *values) const +{ + for (int col = 0; col < N; ++col) + for (int row = 0; row < M; ++row) + values[row * N + col] = T(m[col][row]); +} + +// Define aliases for the useful variants of QGenericMatrix. +typedef QGenericMatrix<2, 2, float> QMatrix2x2; +typedef QGenericMatrix<2, 3, float> QMatrix2x3; +typedef QGenericMatrix<2, 4, float> QMatrix2x4; +typedef QGenericMatrix<3, 2, float> QMatrix3x2; +typedef QGenericMatrix<3, 3, float> QMatrix3x3; +typedef QGenericMatrix<3, 4, float> QMatrix3x4; +typedef QGenericMatrix<4, 2, float> QMatrix4x2; +typedef QGenericMatrix<4, 3, float> QMatrix4x3; + +#ifndef QT_NO_DEBUG_STREAM + +template <int N, int M, typename T> +QDebug operator<<(QDebug dbg, const QGenericMatrix<N, M, T> &m) +{ + QDebugStateSaver saver(dbg); + dbg.nospace() << "QGenericMatrix<" << N << ", " << M + << ", " << QTypeInfo<T>::name() + << ">(" << endl << qSetFieldWidth(10); + for (int row = 0; row < M; ++row) { + for (int col = 0; col < N; ++col) + dbg << m(row, col); + dbg << endl; + } + dbg << qSetFieldWidth(0) << ')'; + return dbg; +} + +#endif + +#ifndef QT_NO_DATASTREAM + +template <int N, int M, typename T> +QDataStream &operator<<(QDataStream &stream, const QGenericMatrix<N, M, T> &matrix) +{ + for (int row = 0; row < M; ++row) + for (int col = 0; col < N; ++col) + stream << double(matrix(row, col)); + return stream; +} + +template <int N, int M, typename T> +QDataStream &operator>>(QDataStream &stream, QGenericMatrix<N, M, T> &matrix) +{ + double x; + for (int row = 0; row < M; ++row) { + for (int col = 0; col < N; ++col) { + stream >> x; + matrix(row, col) = T(x); + } + } + return stream; +} + +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QMatrix2x2) +Q_DECLARE_METATYPE(QMatrix2x3) +Q_DECLARE_METATYPE(QMatrix2x4) +Q_DECLARE_METATYPE(QMatrix3x2) +Q_DECLARE_METATYPE(QMatrix3x3) +Q_DECLARE_METATYPE(QMatrix3x4) +Q_DECLARE_METATYPE(QMatrix4x2) +Q_DECLARE_METATYPE(QMatrix4x3) + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qgenericplugin.h b/qrenderdoc/3rdparty/qt/include/QtGui/qgenericplugin.h new file mode 100644 index 000000000..e8aa2e6f3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qgenericplugin.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGENERICPLUGIN_H +#define QGENERICPLUGIN_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qplugin.h> +#include <QtCore/qfactoryinterface.h> + +QT_BEGIN_NAMESPACE + +#define QGenericPluginFactoryInterface_iid "org.qt-project.Qt.QGenericPluginFactoryInterface" + +class Q_GUI_EXPORT QGenericPlugin : public QObject +{ + Q_OBJECT +public: + explicit QGenericPlugin(QObject *parent = Q_NULLPTR); + ~QGenericPlugin(); + + virtual QObject* create(const QString& name, const QString &spec) = 0; +}; + +QT_END_NAMESPACE + +#endif // QGENERICPLUGIN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qgenericpluginfactory.h b/qrenderdoc/3rdparty/qt/include/QtGui/qgenericpluginfactory.h new file mode 100644 index 000000000..9cc77a059 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qgenericpluginfactory.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGENERICPLUGINFACTORY_H +#define QGENERICPLUGINFACTORY_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qstringlist.h> + +QT_BEGIN_NAMESPACE + + +class QString; +class QObject; + +class Q_GUI_EXPORT QGenericPluginFactory +{ +public: + static QStringList keys(); + static QObject *create(const QString&, const QString &); +}; + +QT_END_NAMESPACE + +#endif // QGENERICPLUGINFACTORY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qglyphrun.h b/qrenderdoc/3rdparty/qt/include/QtGui/qglyphrun.h new file mode 100644 index 000000000..6182c4f74 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qglyphrun.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGLYPHRUN_H +#define QGLYPHRUN_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qsharedpointer.h> +#include <QtCore/qvector.h> +#include <QtCore/qpoint.h> +#include <QtGui/qrawfont.h> + +#if !defined(QT_NO_RAWFONT) + +QT_BEGIN_NAMESPACE + + +class QGlyphRunPrivate; +class Q_GUI_EXPORT QGlyphRun +{ +public: + enum GlyphRunFlag { + Overline = 0x01, + Underline = 0x02, + StrikeOut = 0x04, + RightToLeft = 0x08, + SplitLigature = 0x10 + }; + Q_DECLARE_FLAGS(GlyphRunFlags, GlyphRunFlag) + + QGlyphRun(); + QGlyphRun(const QGlyphRun &other); +#ifdef Q_COMPILER_RVALUE_REFS + QGlyphRun &operator=(QGlyphRun &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QGlyphRun &operator=(const QGlyphRun &other); + ~QGlyphRun(); + + void swap(QGlyphRun &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + QRawFont rawFont() const; + void setRawFont(const QRawFont &rawFont); + + void setRawData(const quint32 *glyphIndexArray, + const QPointF *glyphPositionArray, + int size); + + QVector<quint32> glyphIndexes() const; + void setGlyphIndexes(const QVector<quint32> &glyphIndexes); + + QVector<QPointF> positions() const; + void setPositions(const QVector<QPointF> &positions); + + void clear(); + + bool operator==(const QGlyphRun &other) const; + inline bool operator!=(const QGlyphRun &other) const + { return !operator==(other); } + + void setOverline(bool overline); + bool overline() const; + + void setUnderline(bool underline); + bool underline() const; + + void setStrikeOut(bool strikeOut); + bool strikeOut() const; + + void setRightToLeft(bool on); + bool isRightToLeft() const; + + void setFlag(GlyphRunFlag flag, bool enabled = true); + void setFlags(GlyphRunFlags flags); + GlyphRunFlags flags() const; + + void setBoundingRect(const QRectF &boundingRect); + QRectF boundingRect() const; + + bool isEmpty() const; + +private: + friend class QGlyphRunPrivate; + friend class QTextLine; + + QGlyphRun operator+(const QGlyphRun &other) const; + QGlyphRun &operator+=(const QGlyphRun &other); + + void detach(); + QExplicitlySharedDataPointer<QGlyphRunPrivate> d; +}; + +Q_DECLARE_SHARED(QGlyphRun) + +QT_END_NAMESPACE + +#endif // QT_NO_RAWFONT + +#endif // QGLYPHRUN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qguiapplication.h b/qrenderdoc/3rdparty/qt/include/QtGui/qguiapplication.h new file mode 100644 index 000000000..672197022 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qguiapplication.h @@ -0,0 +1,213 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGUIAPPLICATION_H +#define QGUIAPPLICATION_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qcoreapplication.h> +#include <QtGui/qwindowdefs.h> +#include <QtGui/qinputmethod.h> +#include <QtCore/qlocale.h> +#include <QtCore/qpoint.h> +#include <QtCore/qsize.h> + +QT_BEGIN_NAMESPACE + + +class QSessionManager; +class QGuiApplicationPrivate; +class QPlatformNativeInterface; +class QPlatformIntegration; +class QPalette; +class QScreen; +class QStyleHints; + +#if defined(qApp) +#undef qApp +#endif +#define qApp (static_cast<QGuiApplication *>(QCoreApplication::instance())) + +#if defined(qGuiApp) +#undef qGuiApp +#endif +#define qGuiApp (static_cast<QGuiApplication *>(QCoreApplication::instance())) + +class Q_GUI_EXPORT QGuiApplication : public QCoreApplication +{ + Q_OBJECT + Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon) + Q_PROPERTY(QString applicationDisplayName READ applicationDisplayName WRITE setApplicationDisplayName NOTIFY applicationDisplayNameChanged) + Q_PROPERTY(QString desktopFileName READ desktopFileName WRITE setDesktopFileName) + Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged) + Q_PROPERTY(QString platformName READ platformName STORED false) + Q_PROPERTY(bool quitOnLastWindowClosed READ quitOnLastWindowClosed WRITE setQuitOnLastWindowClosed) + Q_PROPERTY(QScreen *primaryScreen READ primaryScreen NOTIFY primaryScreenChanged STORED false) + +public: +#ifdef Q_QDOC + QGuiApplication(int &argc, char **argv); +#else + QGuiApplication(int &argc, char **argv, int = ApplicationFlags); +#endif + virtual ~QGuiApplication(); + + static void setApplicationDisplayName(const QString &name); + static QString applicationDisplayName(); + + static void setDesktopFileName(const QString &name); + static QString desktopFileName(); + + static QWindowList allWindows(); + static QWindowList topLevelWindows(); + static QWindow *topLevelAt(const QPoint &pos); + + static void setWindowIcon(const QIcon &icon); + static QIcon windowIcon(); + + static QString platformName(); + + static QWindow *modalWindow(); + + static QWindow *focusWindow(); + static QObject *focusObject(); + + static QScreen *primaryScreen(); + static QList<QScreen *> screens(); + qreal devicePixelRatio() const; + +#ifndef QT_NO_CURSOR + static QCursor *overrideCursor(); + static void setOverrideCursor(const QCursor &); + static void changeOverrideCursor(const QCursor &); + static void restoreOverrideCursor(); +#endif + + static QFont font(); + static void setFont(const QFont &); + +#ifndef QT_NO_CLIPBOARD + static QClipboard *clipboard(); +#endif + + static QPalette palette(); + static void setPalette(const QPalette &pal); + + static Qt::KeyboardModifiers keyboardModifiers(); + static Qt::KeyboardModifiers queryKeyboardModifiers(); + static Qt::MouseButtons mouseButtons(); + + static void setLayoutDirection(Qt::LayoutDirection direction); + static Qt::LayoutDirection layoutDirection(); + + static inline bool isRightToLeft() { return layoutDirection() == Qt::RightToLeft; } + static inline bool isLeftToRight() { return layoutDirection() == Qt::LeftToRight; } + + static QStyleHints *styleHints(); + static void setDesktopSettingsAware(bool on); + static bool desktopSettingsAware(); + + static QInputMethod *inputMethod(); + + static QPlatformNativeInterface *platformNativeInterface(); + + static QFunctionPointer platformFunction(const QByteArray &function); + + static void setQuitOnLastWindowClosed(bool quit); + static bool quitOnLastWindowClosed(); + + static Qt::ApplicationState applicationState(); + + static int exec(); + bool notify(QObject *, QEvent *) Q_DECL_OVERRIDE; + +#ifndef QT_NO_SESSIONMANAGER + // session management + bool isSessionRestored() const; + QString sessionId() const; + QString sessionKey() const; + bool isSavingSession() const; + + static bool isFallbackSessionManagementEnabled(); + static void setFallbackSessionManagementEnabled(bool); +#endif + + static void sync(); +Q_SIGNALS: + void fontDatabaseChanged(); + void screenAdded(QScreen *screen); + void screenRemoved(QScreen *screen); + void primaryScreenChanged(QScreen *screen); + void lastWindowClosed(); + void focusObjectChanged(QObject *focusObject); + void focusWindowChanged(QWindow *focusWindow); + void applicationStateChanged(Qt::ApplicationState state); + void layoutDirectionChanged(Qt::LayoutDirection direction); +#ifndef QT_NO_SESSIONMANAGER + void commitDataRequest(QSessionManager &sessionManager); + void saveStateRequest(QSessionManager &sessionManager); +#endif + void paletteChanged(const QPalette &pal); + void applicationDisplayNameChanged(); + +protected: + bool event(QEvent *) Q_DECL_OVERRIDE; + bool compressEvent(QEvent *, QObject *receiver, QPostEventList *) Q_DECL_OVERRIDE; + + QGuiApplication(QGuiApplicationPrivate &p); + +private: + Q_DISABLE_COPY(QGuiApplication) + Q_DECLARE_PRIVATE(QGuiApplication) + + Q_PRIVATE_SLOT(d_func(), void _q_updateFocusObject(QObject *object)) + +#ifndef QT_NO_GESTURES + friend class QGestureManager; +#endif + friend class QFontDatabasePrivate; + friend class QPlatformIntegration; +#ifndef QT_NO_SESSIONMANAGER + friend class QPlatformSessionManager; +#endif +}; + +QT_END_NAMESPACE + +#endif // QGUIAPPLICATION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qicon.h b/qrenderdoc/3rdparty/qt/include/QtGui/qicon.h new file mode 100644 index 000000000..40d3e92af --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qicon.h @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QICON_H +#define QICON_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qsize.h> +#include <QtCore/qlist.h> +#include <QtGui/qpixmap.h> + +QT_BEGIN_NAMESPACE + + +class QIconPrivate; +class QIconEngine; + +class Q_GUI_EXPORT QIcon +{ +public: + enum Mode { Normal, Disabled, Active, Selected }; + enum State { On, Off }; + + QIcon() Q_DECL_NOEXCEPT; + QIcon(const QPixmap &pixmap); + QIcon(const QIcon &other); +#ifdef Q_COMPILER_RVALUE_REFS + QIcon(QIcon &&other) Q_DECL_NOEXCEPT + : d(other.d) + { other.d = Q_NULLPTR; } +#endif + explicit QIcon(const QString &fileName); // file or resource name + explicit QIcon(QIconEngine *engine); + ~QIcon(); + QIcon &operator=(const QIcon &other); +#ifdef Q_COMPILER_RVALUE_REFS + inline QIcon &operator=(QIcon &&other) Q_DECL_NOEXCEPT + { swap(other); return *this; } +#endif + inline void swap(QIcon &other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); } + + operator QVariant() const; + + QPixmap pixmap(const QSize &size, Mode mode = Normal, State state = Off) const; + inline QPixmap pixmap(int w, int h, Mode mode = Normal, State state = Off) const + { return pixmap(QSize(w, h), mode, state); } + inline QPixmap pixmap(int extent, Mode mode = Normal, State state = Off) const + { return pixmap(QSize(extent, extent), mode, state); } + QPixmap pixmap(QWindow *window, const QSize &size, Mode mode = Normal, State state = Off) const; + + QSize actualSize(const QSize &size, Mode mode = Normal, State state = Off) const; + QSize actualSize(QWindow *window, const QSize &size, Mode mode = Normal, State state = Off) const; + + QString name() const; + + void paint(QPainter *painter, const QRect &rect, Qt::Alignment alignment = Qt::AlignCenter, Mode mode = Normal, State state = Off) const; + inline void paint(QPainter *painter, int x, int y, int w, int h, Qt::Alignment alignment = Qt::AlignCenter, Mode mode = Normal, State state = Off) const + { paint(painter, QRect(x, y, w, h), alignment, mode, state); } + + bool isNull() const; + bool isDetached() const; + void detach(); + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline int serialNumber() const { return cacheKey() >> 32; } +#endif + qint64 cacheKey() const; + + void addPixmap(const QPixmap &pixmap, Mode mode = Normal, State state = Off); + void addFile(const QString &fileName, const QSize &size = QSize(), Mode mode = Normal, State state = Off); + + QList<QSize> availableSizes(Mode mode = Normal, State state = Off) const; + + void setIsMask(bool isMask); + bool isMask() const; + + static QIcon fromTheme(const QString &name); + static QIcon fromTheme(const QString &name, const QIcon &fallback); + static bool hasThemeIcon(const QString &name); + + static QStringList themeSearchPaths(); + static void setThemeSearchPaths(const QStringList &searchpath); + + static QString themeName(); + static void setThemeName(const QString &path); + + Q_DUMMY_COMPARISON_OPERATOR(QIcon) + +private: + QIconPrivate *d; +#if !defined(QT_NO_DATASTREAM) + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QIcon &); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QIcon &); +#endif + +public: + typedef QIconPrivate * DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +Q_DECLARE_SHARED(QIcon) + +#if !defined(QT_NO_DATASTREAM) +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QIcon &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QIcon &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QIcon &); +#endif + +Q_GUI_EXPORT QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio = Q_NULLPTR); + +QT_END_NAMESPACE + +#endif // QICON_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qiconengine.h b/qrenderdoc/3rdparty/qt/include/QtGui/qiconengine.h new file mode 100644 index 000000000..0c67ef268 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qiconengine.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QICONENGINE_H +#define QICONENGINE_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qlist.h> +#include <QtGui/qicon.h> + +QT_BEGIN_NAMESPACE + + +class Q_GUI_EXPORT QIconEngine +{ +public: + QIconEngine(); + QIconEngine(const QIconEngine &other); // ### Qt6: make protected + virtual ~QIconEngine(); + virtual void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) = 0; + virtual QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state); + virtual QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state); + + virtual void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state); + virtual void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state); + + virtual QString key() const; + virtual QIconEngine *clone() const = 0; + virtual bool read(QDataStream &in); + virtual bool write(QDataStream &out) const; + + enum IconEngineHook { AvailableSizesHook = 1, IconNameHook, IsNullHook, ScaledPixmapHook }; + + struct AvailableSizesArgument + { + QIcon::Mode mode; + QIcon::State state; + QList<QSize> sizes; + }; + + virtual QList<QSize> availableSizes(QIcon::Mode mode = QIcon::Normal, + QIcon::State state = QIcon::Off) const; + + virtual QString iconName() const; + bool isNull() const; // ### Qt6 make virtual + QPixmap scaledPixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale); // ### Qt6 make virtual + + struct ScaledPixmapArgument + { + QSize size; + QIcon::Mode mode; + QIcon::State state; + qreal scale; + QPixmap pixmap; + }; + + virtual void virtual_hook(int id, void *data); + +private: + QIconEngine &operator=(const QIconEngine &other) Q_DECL_EQ_DELETE; +}; + +#if QT_DEPRECATED_SINCE(5, 0) +typedef QIconEngine QIconEngineV2; +#endif + +QT_END_NAMESPACE + +#endif // QICONENGINE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qiconengineplugin.h b/qrenderdoc/3rdparty/qt/include/QtGui/qiconengineplugin.h new file mode 100644 index 000000000..7a01d3731 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qiconengineplugin.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QICONENGINEPLUGIN_H +#define QICONENGINEPLUGIN_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qplugin.h> +#include <QtCore/qfactoryinterface.h> + +QT_BEGIN_NAMESPACE + + +class QIconEngine; + +#define QIconEngineFactoryInterface_iid "org.qt-project.Qt.QIconEngineFactoryInterface" + +class Q_GUI_EXPORT QIconEnginePlugin : public QObject +{ + Q_OBJECT +public: + QIconEnginePlugin(QObject *parent = Q_NULLPTR); + ~QIconEnginePlugin(); + + virtual QIconEngine *create(const QString &filename = QString()) = 0; +}; + +QT_END_NAMESPACE + +#endif // QICONENGINEPLUGIN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qimage.h b/qrenderdoc/3rdparty/qt/include/QtGui/qimage.h new file mode 100644 index 000000000..225ef3d2e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qimage.h @@ -0,0 +1,489 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIMAGE_H +#define QIMAGE_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qcolor.h> +#include <QtGui/qrgb.h> +#include <QtGui/qpaintdevice.h> +#include <QtGui/qpixelformat.h> +#include <QtGui/qtransform.h> +#include <QtCore/qbytearray.h> +#include <QtCore/qrect.h> +#include <QtCore/qstring.h> + +#if QT_DEPRECATED_SINCE(5, 0) +#include <QtCore/qstringlist.h> +#endif + +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) +Q_FORWARD_DECLARE_MUTABLE_CG_TYPE(CGImage); +#endif + +QT_BEGIN_NAMESPACE + + +class QIODevice; +class QStringList; +class QMatrix; +class QTransform; +class QVariant; +template <class T> class QList; +template <class T> class QVector; + +struct QImageData; +class QImageDataMisc; // internal +#if QT_DEPRECATED_SINCE(5, 0) +class QImageTextKeyLang { +public: + QT_DEPRECATED QImageTextKeyLang(const char* k, const char* l) : key(k), lang(l) { } + QT_DEPRECATED QImageTextKeyLang() { } + + QByteArray key; + QByteArray lang; + + bool operator< (const QImageTextKeyLang& other) const + { return key < other.key || (key==other.key && lang < other.lang); } + bool operator== (const QImageTextKeyLang& other) const + { return key==other.key && lang==other.lang; } + inline bool operator!= (const QImageTextKeyLang &other) const + { return !operator==(other); } +private: + friend class QImage; + QImageTextKeyLang(bool /*dummy*/) {} +}; +#endif + +typedef void (*QImageCleanupFunction)(void*); + +class Q_GUI_EXPORT QImage : public QPaintDevice +{ +public: + enum InvertMode { InvertRgb, InvertRgba }; + enum Format { + Format_Invalid, + Format_Mono, + Format_MonoLSB, + Format_Indexed8, + Format_RGB32, + Format_ARGB32, + Format_ARGB32_Premultiplied, + Format_RGB16, + Format_ARGB8565_Premultiplied, + Format_RGB666, + Format_ARGB6666_Premultiplied, + Format_RGB555, + Format_ARGB8555_Premultiplied, + Format_RGB888, + Format_RGB444, + Format_ARGB4444_Premultiplied, + Format_RGBX8888, + Format_RGBA8888, + Format_RGBA8888_Premultiplied, + Format_BGR30, + Format_A2BGR30_Premultiplied, + Format_RGB30, + Format_A2RGB30_Premultiplied, + Format_Alpha8, + Format_Grayscale8, +#if 0 + // reserved for future use + Format_Grayscale16, +#endif +#ifndef Q_QDOC + NImageFormats +#endif + }; + + QImage() Q_DECL_NOEXCEPT; + QImage(const QSize &size, Format format); + QImage(int width, int height, Format format); + QImage(uchar *data, int width, int height, Format format, QImageCleanupFunction cleanupFunction = Q_NULLPTR, void *cleanupInfo = Q_NULLPTR); + QImage(const uchar *data, int width, int height, Format format, QImageCleanupFunction cleanupFunction = Q_NULLPTR, void *cleanupInfo = Q_NULLPTR); + QImage(uchar *data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction = Q_NULLPTR, void *cleanupInfo = Q_NULLPTR); + QImage(const uchar *data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction = Q_NULLPTR, void *cleanupInfo = Q_NULLPTR); + +#ifndef QT_NO_IMAGEFORMAT_XPM + explicit QImage(const char * const xpm[]); +#endif + explicit QImage(const QString &fileName, const char *format = Q_NULLPTR); + + QImage(const QImage &); +#ifdef Q_COMPILER_RVALUE_REFS + inline QImage(QImage &&other) Q_DECL_NOEXCEPT + : QPaintDevice(), d(Q_NULLPTR) + { qSwap(d, other.d); } +#endif + ~QImage(); + + QImage &operator=(const QImage &); +#ifdef Q_COMPILER_RVALUE_REFS + inline QImage &operator=(QImage &&other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); return *this; } +#endif + inline void swap(QImage &other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); } + + bool isNull() const; + + int devType() const Q_DECL_OVERRIDE; + + bool operator==(const QImage &) const; + bool operator!=(const QImage &) const; + operator QVariant() const; + void detach(); + bool isDetached() const; + + QImage copy(const QRect &rect = QRect()) const; + inline QImage copy(int x, int y, int w, int h) const + { return copy(QRect(x, y, w, h)); } + + Format format() const; + +#if defined(Q_COMPILER_REF_QUALIFIERS) && !defined(QT_COMPILING_QIMAGE_COMPAT_CPP) + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QImage convertToFormat(Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) const & + { return convertToFormat_helper(f, flags); } + Q_REQUIRED_RESULT Q_ALWAYS_INLINE QImage convertToFormat(Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) && + { + if (convertToFormat_inplace(f, flags)) + return std::move(*this); + else + return convertToFormat_helper(f, flags); + } +#else + Q_REQUIRED_RESULT QImage convertToFormat(Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) const; +#endif + Q_REQUIRED_RESULT QImage convertToFormat(Format f, const QVector<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const; + bool reinterpretAsFormat(Format f); + + int width() const; + int height() const; + QSize size() const; + QRect rect() const; + + int depth() const; + int colorCount() const; + int bitPlaneCount() const; + + QRgb color(int i) const; + void setColor(int i, QRgb c); + void setColorCount(int); + + bool allGray() const; + bool isGrayscale() const; + + uchar *bits(); + const uchar *bits() const; + const uchar *constBits() const; + + int byteCount() const; + + uchar *scanLine(int); + const uchar *scanLine(int) const; + const uchar *constScanLine(int) const; + int bytesPerLine() const; + + bool valid(int x, int y) const; + bool valid(const QPoint &pt) const; + + int pixelIndex(int x, int y) const; + int pixelIndex(const QPoint &pt) const; + + QRgb pixel(int x, int y) const; + QRgb pixel(const QPoint &pt) const; + + void setPixel(int x, int y, uint index_or_rgb); + void setPixel(const QPoint &pt, uint index_or_rgb); + + QColor pixelColor(int x, int y) const; + QColor pixelColor(const QPoint &pt) const; + + void setPixelColor(int x, int y, const QColor &c); + void setPixelColor(const QPoint &pt, const QColor &c); + + QVector<QRgb> colorTable() const; +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + void setColorTable(const QVector<QRgb> &colors); +#else + void setColorTable(const QVector<QRgb> colors); +#endif + + qreal devicePixelRatio() const; + void setDevicePixelRatio(qreal scaleFactor); + + void fill(uint pixel); + void fill(const QColor &color); + void fill(Qt::GlobalColor color); + + + bool hasAlphaChannel() const; + void setAlphaChannel(const QImage &alphaChannel); + QImage alphaChannel() const; + QImage createAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const; +#ifndef QT_NO_IMAGE_HEURISTIC_MASK + QImage createHeuristicMask(bool clipTight = true) const; +#endif + QImage createMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const; + + inline QImage scaled(int w, int h, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio, + Qt::TransformationMode mode = Qt::FastTransformation) const + { return scaled(QSize(w, h), aspectMode, mode); } + QImage scaled(const QSize &s, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio, + Qt::TransformationMode mode = Qt::FastTransformation) const; + QImage scaledToWidth(int w, Qt::TransformationMode mode = Qt::FastTransformation) const; + QImage scaledToHeight(int h, Qt::TransformationMode mode = Qt::FastTransformation) const; + QImage transformed(const QMatrix &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const; + static QMatrix trueMatrix(const QMatrix &, int w, int h); + QImage transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const; + static QTransform trueMatrix(const QTransform &, int w, int h); +#if defined(Q_COMPILER_REF_QUALIFIERS) && !defined(QT_COMPILING_QIMAGE_COMPAT_CPP) + QImage mirrored(bool horizontally = false, bool vertically = true) const & + { return mirrored_helper(horizontally, vertically); } + QImage &&mirrored(bool horizontally = false, bool vertically = true) && + { mirrored_inplace(horizontally, vertically); return qMove(*this); } + QImage rgbSwapped() const & + { return rgbSwapped_helper(); } + QImage &&rgbSwapped() && + { rgbSwapped_inplace(); return qMove(*this); } +#else + QImage mirrored(bool horizontally = false, bool vertically = true) const; + QImage rgbSwapped() const; +#endif + void invertPixels(InvertMode = InvertRgb); + + + bool load(QIODevice *device, const char* format); + bool load(const QString &fileName, const char *format = Q_NULLPTR); + bool loadFromData(const uchar *buf, int len, const char *format = Q_NULLPTR); + inline bool loadFromData(const QByteArray &data, const char *aformat = Q_NULLPTR) + { return loadFromData(reinterpret_cast<const uchar *>(data.constData()), data.size(), aformat); } + + bool save(const QString &fileName, const char *format = Q_NULLPTR, int quality = -1) const; + bool save(QIODevice *device, const char *format = Q_NULLPTR, int quality = -1) const; + + static QImage fromData(const uchar *data, int size, const char *format = Q_NULLPTR); + inline static QImage fromData(const QByteArray &data, const char *format = Q_NULLPTR) + { return fromData(reinterpret_cast<const uchar *>(data.constData()), data.size(), format); } + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline int serialNumber() const { return cacheKey() >> 32; } +#endif + qint64 cacheKey() const; + + QPaintEngine *paintEngine() const Q_DECL_OVERRIDE; + + // Auxiliary data + int dotsPerMeterX() const; + int dotsPerMeterY() const; + void setDotsPerMeterX(int); + void setDotsPerMeterY(int); + QPoint offset() const; + void setOffset(const QPoint&); + + QStringList textKeys() const; + QString text(const QString &key = QString()) const; + void setText(const QString &key, const QString &value); + + QPixelFormat pixelFormat() const Q_DECL_NOTHROW; + static QPixelFormat toPixelFormat(QImage::Format format) Q_DECL_NOTHROW; + static QImage::Format toImageFormat(QPixelFormat format) Q_DECL_NOTHROW; + + // Platform spesific conversion functions +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + CGImageRef toCGImage() const Q_DECL_CF_RETURNS_RETAINED; +#endif + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline QString text(const char *key, const char *lang = Q_NULLPTR) const; + QT_DEPRECATED inline QList<QImageTextKeyLang> textList() const; + QT_DEPRECATED inline QStringList textLanguages() const; + QT_DEPRECATED inline QString text(const QImageTextKeyLang&) const; + QT_DEPRECATED inline void setText(const char* key, const char* lang, const QString&); +#endif + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline int numColors() const; + QT_DEPRECATED inline void setNumColors(int); + QT_DEPRECATED inline int numBytes() const; +#endif + +protected: + virtual int metric(PaintDeviceMetric metric) const Q_DECL_OVERRIDE; + QImage mirrored_helper(bool horizontal, bool vertical) const; + QImage rgbSwapped_helper() const; + void mirrored_inplace(bool horizontal, bool vertical); + void rgbSwapped_inplace(); + QImage convertToFormat_helper(Format format, Qt::ImageConversionFlags flags) const; + bool convertToFormat_inplace(Format format, Qt::ImageConversionFlags flags); + QImage smoothScaled(int w, int h) const; + +private: + friend class QWSOnScreenSurface; + QImageData *d; + + friend class QRasterPlatformPixmap; + friend class QBlittablePlatformPixmap; + friend class QPixmapCacheEntry; + +public: + typedef QImageData * DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +Q_DECLARE_SHARED(QImage) + +// Inline functions... + +inline bool QImage::valid(const QPoint &pt) const { return valid(pt.x(), pt.y()); } +inline int QImage::pixelIndex(const QPoint &pt) const { return pixelIndex(pt.x(), pt.y());} +inline QRgb QImage::pixel(const QPoint &pt) const { return pixel(pt.x(), pt.y()); } +inline void QImage::setPixel(const QPoint &pt, uint index_or_rgb) { setPixel(pt.x(), pt.y(), index_or_rgb); } +inline QColor QImage::pixelColor(const QPoint &pt) const { return pixelColor(pt.x(), pt.y()); } +inline void QImage::setPixelColor(const QPoint &pt, const QColor &c) { setPixelColor(pt.x(), pt.y(), c); } + +#if QT_DEPRECATED_SINCE(5, 0) + +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED + +inline QString QImage::text(const char* key, const char* lang) const +{ + if (!d) + return QString(); + QString k = QString::fromLatin1(key); + if (lang && *lang) + k += QLatin1Char('/') + QString::fromLatin1(lang); + return text(k); +} + +inline QList<QImageTextKeyLang> QImage::textList() const +{ + QList<QImageTextKeyLang> imageTextKeys; + if (!d) + return imageTextKeys; + QStringList keys = textKeys(); + for (int i = 0; i < keys.size(); ++i) { + int index = keys.at(i).indexOf(QLatin1Char('/')); + if (index > 0) { + QImageTextKeyLang tkl(true); + tkl.key = keys.at(i).left(index).toLatin1(); + tkl.lang = keys.at(i).mid(index+1).toLatin1(); + imageTextKeys += tkl; + } + } + + return imageTextKeys; +} + +inline QStringList QImage::textLanguages() const +{ + if (!d) + return QStringList(); + QStringList keys = textKeys(); + QStringList languages; + for (int i = 0; i < keys.size(); ++i) { + int index = keys.at(i).indexOf(QLatin1Char('/')); + if (index > 0) + languages += keys.at(i).mid(index+1); + } + + return languages; +} + +inline QString QImage::text(const QImageTextKeyLang&kl) const +{ + if (!d) + return QString(); + QString k = QString::fromLatin1(kl.key.constData()); + if (!kl.lang.isEmpty()) + k += QLatin1Char('/') + QString::fromLatin1(kl.lang.constData()); + return text(k); +} + +inline void QImage::setText(const char* key, const char* lang, const QString &s) +{ + if (!d) + return; + detach(); + + // In case detach() ran out of memory + if (!d) + return; + + QString k = QString::fromLatin1(key); + if (lang && *lang) + k += QLatin1Char('/') + QString::fromLatin1(lang); + setText(k, s); +} + +QT_WARNING_POP + +inline int QImage::numColors() const +{ + return colorCount(); +} + +inline void QImage::setNumColors(int n) +{ + setColorCount(n); +} + +inline int QImage::numBytes() const +{ + return byteCount(); +} +#endif + +// QImage stream functions + +#if !defined(QT_NO_DATASTREAM) +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QImage &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QImage &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QImage &); +#endif + + +QT_END_NAMESPACE + +#endif // QIMAGE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qimageiohandler.h b/qrenderdoc/3rdparty/qt/include/QtGui/qimageiohandler.h new file mode 100644 index 000000000..baf985325 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qimageiohandler.h @@ -0,0 +1,163 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIMAGEIOHANDLER_H +#define QIMAGEIOHANDLER_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qiodevice.h> +#include <QtCore/qplugin.h> +#include <QtCore/qfactoryinterface.h> +#include <QtCore/qscopedpointer.h> + +QT_BEGIN_NAMESPACE + + +class QImage; +class QRect; +class QSize; +class QVariant; + +class QImageIOHandlerPrivate; +class Q_GUI_EXPORT QImageIOHandler +{ + Q_DECLARE_PRIVATE(QImageIOHandler) +public: + QImageIOHandler(); + virtual ~QImageIOHandler(); + + void setDevice(QIODevice *device); + QIODevice *device() const; + + void setFormat(const QByteArray &format); + void setFormat(const QByteArray &format) const; + QByteArray format() const; + + virtual QByteArray name() const; + + virtual bool canRead() const = 0; + virtual bool read(QImage *image) = 0; + virtual bool write(const QImage &image); + + enum ImageOption { + Size, + ClipRect, + Description, + ScaledClipRect, + ScaledSize, + CompressionRatio, + Gamma, + Quality, + Name, + SubType, + IncrementalReading, + Endianness, + Animation, + BackgroundColor, + ImageFormat, + SupportedSubTypes, + OptimizedWrite, + ProgressiveScanWrite, + ImageTransformation +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + , TransformedByDefault +#endif + }; + + enum Transformation { + TransformationNone = 0, + TransformationMirror = 1, + TransformationFlip = 2, + TransformationRotate180 = TransformationMirror | TransformationFlip, + TransformationRotate90 = 4, + TransformationMirrorAndRotate90 = TransformationMirror | TransformationRotate90, + TransformationFlipAndRotate90 = TransformationFlip | TransformationRotate90, + TransformationRotate270 = TransformationRotate180 | TransformationRotate90 + }; + Q_DECLARE_FLAGS(Transformations, Transformation) + + virtual QVariant option(ImageOption option) const; + virtual void setOption(ImageOption option, const QVariant &value); + virtual bool supportsOption(ImageOption option) const; + + // incremental loading + virtual bool jumpToNextImage(); + virtual bool jumpToImage(int imageNumber); + virtual int loopCount() const; + virtual int imageCount() const; + virtual int nextImageDelay() const; + virtual int currentImageNumber() const; + virtual QRect currentImageRect() const; + +protected: + QImageIOHandler(QImageIOHandlerPrivate &dd); + QScopedPointer<QImageIOHandlerPrivate> d_ptr; +private: + Q_DISABLE_COPY(QImageIOHandler) +}; + +#ifndef QT_NO_IMAGEFORMATPLUGIN + +#define QImageIOHandlerFactoryInterface_iid "org.qt-project.Qt.QImageIOHandlerFactoryInterface" + +class Q_GUI_EXPORT QImageIOPlugin : public QObject +{ + Q_OBJECT +public: + explicit QImageIOPlugin(QObject *parent = Q_NULLPTR); + virtual ~QImageIOPlugin(); + + enum Capability { + CanRead = 0x1, + CanWrite = 0x2, + CanReadIncremental = 0x4 + }; + Q_DECLARE_FLAGS(Capabilities, Capability) + + virtual Capabilities capabilities(QIODevice *device, const QByteArray &format) const = 0; + virtual QImageIOHandler *create(QIODevice *device, const QByteArray &format = QByteArray()) const = 0; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QImageIOPlugin::Capabilities) + +#endif // QT_NO_IMAGEFORMATPLUGIN + +QT_END_NAMESPACE + +#endif // QIMAGEIOHANDLER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qimagereader.h b/qrenderdoc/3rdparty/qt/include/QtGui/qimagereader.h new file mode 100644 index 000000000..9d6c1e0b1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qimagereader.h @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIMAGEREADER_H +#define QIMAGEREADER_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qbytearray.h> +#include <QtCore/qcoreapplication.h> +#include <QtGui/qimage.h> +#include <QtGui/qimageiohandler.h> + +QT_BEGIN_NAMESPACE + + +class QColor; +class QIODevice; +class QRect; +class QSize; +class QStringList; + +class QImageReaderPrivate; +class Q_GUI_EXPORT QImageReader +{ + Q_DECLARE_TR_FUNCTIONS(QImageReader) +public: + enum ImageReaderError { + UnknownError, + FileNotFoundError, + DeviceError, + UnsupportedFormatError, + InvalidDataError + }; + + QImageReader(); + explicit QImageReader(QIODevice *device, const QByteArray &format = QByteArray()); + explicit QImageReader(const QString &fileName, const QByteArray &format = QByteArray()); + ~QImageReader(); + + void setFormat(const QByteArray &format); + QByteArray format() const; + + void setAutoDetectImageFormat(bool enabled); + bool autoDetectImageFormat() const; + + void setDecideFormatFromContent(bool ignored); + bool decideFormatFromContent() const; + + void setDevice(QIODevice *device); + QIODevice *device() const; + + void setFileName(const QString &fileName); + QString fileName() const; + + QSize size() const; + + QImage::Format imageFormat() const; + + QStringList textKeys() const; + QString text(const QString &key) const; + + void setClipRect(const QRect &rect); + QRect clipRect() const; + + void setScaledSize(const QSize &size); + QSize scaledSize() const; + + void setQuality(int quality); + int quality() const; + + void setScaledClipRect(const QRect &rect); + QRect scaledClipRect() const; + + void setBackgroundColor(const QColor &color); + QColor backgroundColor() const; + + bool supportsAnimation() const; + + QImageIOHandler::Transformations transformation() const; + + void setAutoTransform(bool enabled); + bool autoTransform() const; + + void setGamma(float gamma); + float gamma() const; + + QByteArray subType() const; + QList<QByteArray> supportedSubTypes() const; + + bool canRead() const; + QImage read(); + bool read(QImage *image); + + bool jumpToNextImage(); + bool jumpToImage(int imageNumber); + int loopCount() const; + int imageCount() const; + int nextImageDelay() const; + int currentImageNumber() const; + QRect currentImageRect() const; + + ImageReaderError error() const; + QString errorString() const; + + bool supportsOption(QImageIOHandler::ImageOption option) const; + + static QByteArray imageFormat(const QString &fileName); + static QByteArray imageFormat(QIODevice *device); + static QList<QByteArray> supportedImageFormats(); + static QList<QByteArray> supportedMimeTypes(); + +private: + Q_DISABLE_COPY(QImageReader) + QImageReaderPrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QIMAGEREADER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qimagewriter.h b/qrenderdoc/3rdparty/qt/include/QtGui/qimagewriter.h new file mode 100644 index 000000000..58f8c5147 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qimagewriter.h @@ -0,0 +1,126 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIMAGEWRITER_H +#define QIMAGEWRITER_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qbytearray.h> +#include <QtCore/qcoreapplication.h> +#include <QtCore/qlist.h> +#include <QtGui/qimageiohandler.h> + +QT_BEGIN_NAMESPACE + + +class QIODevice; +class QImage; + +class QImageWriterPrivate; +class Q_GUI_EXPORT QImageWriter +{ + Q_DECLARE_TR_FUNCTIONS(QImageWriter) +public: + enum ImageWriterError { + UnknownError, + DeviceError, + UnsupportedFormatError + }; + + QImageWriter(); + explicit QImageWriter(QIODevice *device, const QByteArray &format); + explicit QImageWriter(const QString &fileName, const QByteArray &format = QByteArray()); + ~QImageWriter(); + + void setFormat(const QByteArray &format); + QByteArray format() const; + + void setDevice(QIODevice *device); + QIODevice *device() const; + + void setFileName(const QString &fileName); + QString fileName() const; + + void setQuality(int quality); + int quality() const; + + void setCompression(int compression); + int compression() const; + + void setGamma(float gamma); + float gamma() const; + + void setSubType(const QByteArray &type); + QByteArray subType() const; + QList<QByteArray> supportedSubTypes() const; + + void setOptimizedWrite(bool optimize); + bool optimizedWrite() const; + + void setProgressiveScanWrite(bool progressive); + bool progressiveScanWrite() const; + + QImageIOHandler::Transformations transformation() const; + void setTransformation(QImageIOHandler::Transformations orientation); + + // Obsolete as of 4.1 + void setDescription(const QString &description); + QString description() const; + + void setText(const QString &key, const QString &text); + + bool canWrite() const; + bool write(const QImage &image); + + ImageWriterError error() const; + QString errorString() const; + + bool supportsOption(QImageIOHandler::ImageOption option) const; + + static QList<QByteArray> supportedImageFormats(); + static QList<QByteArray> supportedMimeTypes(); + +private: + Q_DISABLE_COPY(QImageWriter) + QImageWriterPrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QIMAGEWRITER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qinputmethod.h b/qrenderdoc/3rdparty/qt/include/QtGui/qinputmethod.h new file mode 100644 index 000000000..efdefb6e5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qinputmethod.h @@ -0,0 +1,129 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QINPUTMETHOD_H +#define QINPUTMETHOD_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> + +QT_BEGIN_NAMESPACE + +class QInputMethodPrivate; +class QWindow; +class QRectF; +class QTransform; +class QInputMethodQueryEvent; + +class Q_GUI_EXPORT QInputMethod : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QInputMethod) + Q_PROPERTY(QRectF cursorRectangle READ cursorRectangle NOTIFY cursorRectangleChanged) + Q_PROPERTY(QRectF anchorRectangle READ anchorRectangle NOTIFY anchorRectangleChanged) + Q_PROPERTY(QRectF keyboardRectangle READ keyboardRectangle NOTIFY keyboardRectangleChanged) + Q_PROPERTY(QRectF inputItemClipRectangle READ inputItemClipRectangle NOTIFY inputItemClipRectangleChanged) + Q_PROPERTY(bool visible READ isVisible NOTIFY visibleChanged) + Q_PROPERTY(bool animating READ isAnimating NOTIFY animatingChanged) + Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged) + Q_PROPERTY(Qt::LayoutDirection inputDirection READ inputDirection NOTIFY inputDirectionChanged) + +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? + QRectF anchorRectangle() const; // ### ditto + + // keyboard geometry in window coords + QRectF keyboardRectangle() const; + + QRectF inputItemClipRectangle() const; + + enum Action { + Click, + ContextMenu + }; + Q_ENUM(Action) + + bool isVisible() const; + void setVisible(bool visible); + + bool isAnimating() const; + + QLocale locale() const; + Qt::LayoutDirection inputDirection() const; + + static QVariant queryFocusObject(Qt::InputMethodQuery query, QVariant argument); // ### Qt 6: QVariant by const-ref + +public Q_SLOTS: + void show(); + void hide(); + + void update(Qt::InputMethodQueries queries); + void reset(); + void commit(); + + void invokeAction(Action a, int cursorPosition); + +Q_SIGNALS: + void cursorRectangleChanged(); + void anchorRectangleChanged(); + void keyboardRectangleChanged(); + void inputItemClipRectangleChanged(); + void visibleChanged(); + void animatingChanged(); + void localeChanged(); + void inputDirectionChanged(Qt::LayoutDirection newDirection); + +private: + friend class QGuiApplication; + friend class QGuiApplicationPrivate; + friend class QPlatformInputContext; + QInputMethod(); + ~QInputMethod(); +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qkeysequence.h b/qrenderdoc/3rdparty/qt/include/QtGui/qkeysequence.h new file mode 100644 index 000000000..6bdfd84ca --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qkeysequence.h @@ -0,0 +1,245 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QKEYSEQUENCE_H +#define QKEYSEQUENCE_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qstring.h> +#include <QtCore/qobjectdefs.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_SHORTCUT + +class QKeySequence; + +/***************************************************************************** + QKeySequence stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &in, const QKeySequence &ks); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &out, QKeySequence &ks); +#endif + +#ifdef Q_QDOC +void qt_set_sequence_auto_mnemonic(bool b); +#endif + +class QVariant; +class QKeySequencePrivate; + +Q_GUI_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QKeySequence &key, uint seed = 0) Q_DECL_NOTHROW; + +class Q_GUI_EXPORT QKeySequence +{ + Q_GADGET + +public: + enum StandardKey { + UnknownKey, + HelpContents, + WhatsThis, + Open, + Close, + Save, + New, + Delete, + Cut, + Copy, + Paste, + Undo, + Redo, + Back, + Forward, + Refresh, + ZoomIn, + ZoomOut, + Print, + AddTab, + NextChild, + PreviousChild, + Find, + FindNext, + FindPrevious, + Replace, + SelectAll, + Bold, + Italic, + Underline, + MoveToNextChar, + MoveToPreviousChar, + MoveToNextWord, + MoveToPreviousWord, + MoveToNextLine, + MoveToPreviousLine, + MoveToNextPage, + MoveToPreviousPage, + MoveToStartOfLine, + MoveToEndOfLine, + MoveToStartOfBlock, + MoveToEndOfBlock, + MoveToStartOfDocument, + MoveToEndOfDocument, + SelectNextChar, + SelectPreviousChar, + SelectNextWord, + SelectPreviousWord, + SelectNextLine, + SelectPreviousLine, + SelectNextPage, + SelectPreviousPage, + SelectStartOfLine, + SelectEndOfLine, + SelectStartOfBlock, + SelectEndOfBlock, + SelectStartOfDocument, + SelectEndOfDocument, + DeleteStartOfWord, + DeleteEndOfWord, + DeleteEndOfLine, + InsertParagraphSeparator, + InsertLineSeparator, + SaveAs, + Preferences, + Quit, + FullScreen, + Deselect, + DeleteCompleteLine, + Backspace, + Cancel + }; + Q_ENUM(StandardKey) + + enum SequenceFormat { + NativeText, + PortableText + }; + + QKeySequence(); + QKeySequence(const QString &key, SequenceFormat format = NativeText); + QKeySequence(int k1, int k2 = 0, int k3 = 0, int k4 = 0); + QKeySequence(const QKeySequence &ks); + QKeySequence(StandardKey key); + ~QKeySequence(); + + int count() const; + bool isEmpty() const; + + enum SequenceMatch { + NoMatch, + PartialMatch, + ExactMatch + }; + + 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); + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED operator QString() const { return toString(QKeySequence::NativeText); } + QT_DEPRECATED operator int() const { if (1 <= count()) return operator [](0); return 0; } +#endif + operator QVariant() const; + int operator[](uint i) const; + QKeySequence &operator=(const QKeySequence &other); +#ifdef Q_COMPILER_RVALUE_REFS + QKeySequence &operator=(QKeySequence &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + void swap(QKeySequence &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool operator==(const QKeySequence &other) const; + inline bool operator!= (const QKeySequence &other) const + { return !(*this == other); } + bool operator< (const QKeySequence &ks) const; + inline bool operator> (const QKeySequence &other) const + { return other < *this; } + inline bool operator<= (const QKeySequence &other) const + { return !(other < *this); } + inline bool operator>= (const QKeySequence &other) const + { return !(*this < other); } + + bool isDetached() const; +private: + static int decodeString(const QString &ks); + static QString encodeString(int key); + int assign(const QString &str); + int assign(const QString &str, SequenceFormat format); + void setKey(int key, int index); + + QKeySequencePrivate *d; + + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &in, const QKeySequence &ks); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &in, QKeySequence &ks); + friend Q_GUI_EXPORT uint qHash(const QKeySequence &key, uint seed) Q_DECL_NOTHROW; + friend class QShortcutMap; + friend class QShortcut; + +public: + typedef QKeySequencePrivate * DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +Q_DECLARE_SHARED(QKeySequence) + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QKeySequence &); +#endif + +#else + +class Q_GUI_EXPORT QKeySequence +{ +public: + QKeySequence() {} + QKeySequence(int) {} +}; + +#endif // QT_NO_SHORTCUT + +QT_END_NAMESPACE + +#endif // QKEYSEQUENCE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qmatrix.h b/qrenderdoc/3rdparty/qt/include/QtGui/qmatrix.h new file mode 100644 index 000000000..15e0ab5be --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qmatrix.h @@ -0,0 +1,194 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMATRIX_H +#define QMATRIX_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qpolygon.h> +#include <QtGui/qregion.h> +#include <QtGui/qwindowdefs.h> +#include <QtCore/qline.h> +#include <QtCore/qpoint.h> +#include <QtCore/qrect.h> + +QT_BEGIN_NAMESPACE + + +class QPainterPath; +class QVariant; + +class Q_GUI_EXPORT QMatrix // 2D transform matrix +{ +public: + inline explicit QMatrix(Qt::Initialization) {} + QMatrix(); + QMatrix(qreal m11, qreal m12, qreal m21, qreal m22, + qreal dx, qreal dy); + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + // ### Qt 6: remove; the compiler-generated ones are fine! + QMatrix &operator=(QMatrix &&other) Q_DECL_NOTHROW // = default + { memcpy(this, &other, sizeof(QMatrix)); return *this; } + QMatrix &operator=(const QMatrix &) Q_DECL_NOTHROW; // = default + QMatrix(QMatrix &&other) Q_DECL_NOTHROW // = default + { memcpy(this, &other, sizeof(QMatrix)); } + QMatrix(const QMatrix &other) Q_DECL_NOTHROW; // = default +#endif + + void setMatrix(qreal m11, qreal m12, qreal m21, qreal m22, + qreal dx, qreal dy); + + qreal m11() const { return _m11; } + qreal m12() const { return _m12; } + qreal m21() const { return _m21; } + qreal m22() const { return _m22; } + qreal dx() const { return _dx; } + qreal dy() const { return _dy; } + + void map(int x, int y, int *tx, int *ty) const; + void map(qreal x, qreal y, qreal *tx, qreal *ty) const; + QRect mapRect(const QRect &) const; + QRectF mapRect(const QRectF &) const; + + QPoint map(const QPoint &p) const; + QPointF map(const QPointF&p) const; + QLine map(const QLine &l) const; + QLineF map(const QLineF &l) const; + QPolygonF map(const QPolygonF &a) const; + QPolygon map(const QPolygon &a) const; + QRegion map(const QRegion &r) const; + QPainterPath map(const QPainterPath &p) const; + QPolygon mapToPolygon(const QRect &r) const; + + void reset(); + inline bool isIdentity() const; + + QMatrix &translate(qreal dx, qreal dy); + QMatrix &scale(qreal sx, qreal sy); + QMatrix &shear(qreal sh, qreal sv); + QMatrix &rotate(qreal a); + + bool isInvertible() const { return !qFuzzyIsNull(_m11*_m22 - _m12*_m21); } + qreal determinant() const { return _m11*_m22 - _m12*_m21; } + + Q_REQUIRED_RESULT QMatrix inverted(bool *invertible = Q_NULLPTR) const; + + bool operator==(const QMatrix &) const; + bool operator!=(const QMatrix &) const; + + QMatrix &operator*=(const QMatrix &); + QMatrix operator*(const QMatrix &o) const; + + operator QVariant() const; + +private: + inline QMatrix(bool) + : _m11(1.) + , _m12(0.) + , _m21(0.) + , _m22(1.) + , _dx(0.) + , _dy(0.) {} + inline QMatrix(qreal am11, qreal am12, qreal am21, qreal am22, qreal adx, qreal ady, bool) + : _m11(am11) + , _m12(am12) + , _m21(am21) + , _m22(am22) + , _dx(adx) + , _dy(ady) {} + friend class QTransform; + qreal _m11, _m12; + qreal _m21, _m22; + qreal _dx, _dy; +}; +Q_DECLARE_TYPEINFO(QMatrix, Q_MOVABLE_TYPE); + +Q_GUI_EXPORT Q_DECL_CONST_FUNCTION uint qHash(const QMatrix &key, uint seed = 0) Q_DECL_NOTHROW; + +// mathematical semantics +inline QPoint operator*(const QPoint &p, const QMatrix &m) +{ return m.map(p); } +inline QPointF operator*(const QPointF &p, const QMatrix &m) +{ return m.map(p); } +inline QLineF operator*(const QLineF &l, const QMatrix &m) +{ return m.map(l); } +inline QLine operator*(const QLine &l, const QMatrix &m) +{ return m.map(l); } +inline QPolygon operator *(const QPolygon &a, const QMatrix &m) +{ return m.map(a); } +inline QPolygonF operator *(const QPolygonF &a, const QMatrix &m) +{ return m.map(a); } +inline QRegion operator *(const QRegion &r, const QMatrix &m) +{ return m.map(r); } +Q_GUI_EXPORT QPainterPath operator *(const QPainterPath &p, const QMatrix &m); + +inline bool QMatrix::isIdentity() const +{ + return qFuzzyIsNull(_m11 - 1) && qFuzzyIsNull(_m22 - 1) && qFuzzyIsNull(_m12) + && qFuzzyIsNull(_m21) && qFuzzyIsNull(_dx) && qFuzzyIsNull(_dy); +} + +inline bool qFuzzyCompare(const QMatrix& m1, const QMatrix& m2) +{ + return qFuzzyCompare(m1.m11(), m2.m11()) + && qFuzzyCompare(m1.m12(), m2.m12()) + && qFuzzyCompare(m1.m21(), m2.m21()) + && qFuzzyCompare(m1.m22(), m2.m22()) + && qFuzzyCompare(m1.dx(), m2.dx()) + && qFuzzyCompare(m1.dy(), m2.dy()); +} + + +/***************************************************************************** + QMatrix stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QMatrix &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QMatrix &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QMatrix &); +#endif + +QT_END_NAMESPACE + +#endif // QMATRIX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qmatrix4x4.h b/qrenderdoc/3rdparty/qt/include/QtGui/qmatrix4x4.h new file mode 100644 index 000000000..4db96d07c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qmatrix4x4.h @@ -0,0 +1,1142 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMATRIX4X4_H +#define QMATRIX4X4_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qvector3d.h> +#include <QtGui/qvector4d.h> +#include <QtGui/qquaternion.h> +#include <QtGui/qgenericmatrix.h> +#include <QtCore/qrect.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_MATRIX4X4 + +class QMatrix; +class QTransform; +class QVariant; + +class Q_GUI_EXPORT QMatrix4x4 +{ +public: + inline QMatrix4x4() { setToIdentity(); } + explicit QMatrix4x4(Qt::Initialization) : flagBits(General) {} + explicit QMatrix4x4(const float *values); + inline QMatrix4x4(float m11, float m12, float m13, float m14, + float m21, float m22, float m23, float m24, + float m31, float m32, float m33, float m34, + float m41, float m42, float m43, float m44); + + template <int N, int M> + explicit QMatrix4x4(const QGenericMatrix<N, M, float>& matrix); + + QMatrix4x4(const float *values, int cols, int rows); + QMatrix4x4(const QTransform& transform); + QMatrix4x4(const QMatrix& matrix); + + inline const float& operator()(int row, int column) const; + inline float& operator()(int row, int column); + +#ifndef QT_NO_VECTOR4D + inline QVector4D column(int index) const; + inline void setColumn(int index, const QVector4D& value); + + inline QVector4D row(int index) const; + inline void setRow(int index, const QVector4D& value); +#endif + + inline bool isAffine() const; + + inline bool isIdentity() const; + inline void setToIdentity(); + + inline void fill(float value); + + double determinant() const; + QMatrix4x4 inverted(bool *invertible = Q_NULLPTR) const; + QMatrix4x4 transposed() const; + QMatrix3x3 normalMatrix() const; + + inline QMatrix4x4& operator+=(const QMatrix4x4& other); + inline QMatrix4x4& operator-=(const QMatrix4x4& other); + inline QMatrix4x4& operator*=(const QMatrix4x4& other); + inline QMatrix4x4& operator*=(float factor); + QMatrix4x4& operator/=(float divisor); + inline bool operator==(const QMatrix4x4& other) const; + inline bool operator!=(const QMatrix4x4& other) const; + + friend QMatrix4x4 operator+(const QMatrix4x4& m1, const QMatrix4x4& m2); + friend QMatrix4x4 operator-(const QMatrix4x4& m1, const QMatrix4x4& m2); + friend QMatrix4x4 operator*(const QMatrix4x4& m1, const QMatrix4x4& m2); +#ifndef QT_NO_VECTOR3D + friend QVector3D operator*(const QMatrix4x4& matrix, const QVector3D& vector); + friend QVector3D operator*(const QVector3D& vector, const QMatrix4x4& matrix); +#endif +#ifndef QT_NO_VECTOR4D + friend QVector4D operator*(const QVector4D& vector, const QMatrix4x4& matrix); + friend QVector4D operator*(const QMatrix4x4& matrix, const QVector4D& vector); +#endif + friend QPoint operator*(const QPoint& point, const QMatrix4x4& matrix); + friend QPointF operator*(const QPointF& point, const QMatrix4x4& matrix); + friend QMatrix4x4 operator-(const QMatrix4x4& matrix); + friend QPoint operator*(const QMatrix4x4& matrix, const QPoint& point); + friend QPointF operator*(const QMatrix4x4& matrix, const QPointF& point); + friend QMatrix4x4 operator*(float factor, const QMatrix4x4& matrix); + friend QMatrix4x4 operator*(const QMatrix4x4& matrix, float factor); + friend Q_GUI_EXPORT QMatrix4x4 operator/(const QMatrix4x4& matrix, float divisor); + + friend inline bool qFuzzyCompare(const QMatrix4x4& m1, const QMatrix4x4& m2); + +#ifndef QT_NO_VECTOR3D + void scale(const QVector3D& vector); + void translate(const QVector3D& vector); + void rotate(float angle, const QVector3D& vector); +#endif + void scale(float x, float y); + void scale(float x, float y, float z); + void scale(float factor); + void translate(float x, float y); + void translate(float x, float y, float z); + void rotate(float angle, float x, float y, float z = 0.0f); +#ifndef QT_NO_QUATERNION + void rotate(const QQuaternion& quaternion); +#endif + + void ortho(const QRect& rect); + void ortho(const QRectF& rect); + void ortho(float left, float right, float bottom, float top, float nearPlane, float farPlane); + void frustum(float left, float right, float bottom, float top, float nearPlane, float farPlane); + void perspective(float verticalAngle, float aspectRatio, float nearPlane, float farPlane); +#ifndef QT_NO_VECTOR3D + void lookAt(const QVector3D& eye, const QVector3D& center, const QVector3D& up); +#endif + void viewport(const QRectF &rect); + void viewport(float left, float bottom, float width, float height, float nearPlane = 0.0f, float farPlane = 1.0f); + void flipCoordinates(); + + void copyDataTo(float *values) const; + + QMatrix toAffine() const; + QTransform toTransform() const; + QTransform toTransform(float distanceToPlane) const; + + QPoint map(const QPoint& point) const; + QPointF map(const QPointF& point) const; +#ifndef QT_NO_VECTOR3D + QVector3D map(const QVector3D& point) const; + QVector3D mapVector(const QVector3D& vector) const; +#endif +#ifndef QT_NO_VECTOR4D + QVector4D map(const QVector4D& point) const; +#endif + QRect mapRect(const QRect& rect) const; + QRectF mapRect(const QRectF& rect) const; + + template <int N, int M> + QGenericMatrix<N, M, float> toGenericMatrix() const; + + inline float *data(); + inline const float *data() const { return *m; } + inline const float *constData() const { return *m; } + + void optimize(); + + operator QVariant() const; + +#ifndef QT_NO_DEBUG_STREAM + friend Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QMatrix4x4 &m); +#endif + +private: + float m[4][4]; // Column-major order to match OpenGL. + int flagBits; // Flag bits from the enum below. + + // When matrices are multiplied, the flag bits are or-ed together. + enum { + Identity = 0x0000, // Identity matrix + Translation = 0x0001, // Contains a translation + Scale = 0x0002, // Contains a scale + Rotation2D = 0x0004, // Contains a rotation about the Z axis + Rotation = 0x0008, // Contains an arbitrary rotation + Perspective = 0x0010, // Last row is different from (0, 0, 0, 1) + General = 0x001f // General matrix, unknown contents + }; + + // Construct without initializing identity matrix. + explicit QMatrix4x4(int) { } + + QMatrix4x4 orthonormalInverse() const; + + void projectedRotate(float angle, float x, float y, float z); + + friend class QGraphicsRotation; +}; + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wfloat-equal") +QT_WARNING_DISABLE_GCC("-Wfloat-equal") +Q_DECLARE_TYPEINFO(QMatrix4x4, Q_MOVABLE_TYPE); + +inline QMatrix4x4::QMatrix4x4 + (float m11, float m12, float m13, float m14, + float m21, float m22, float m23, float m24, + float m31, float m32, float m33, float m34, + float m41, float m42, float m43, float m44) +{ + m[0][0] = m11; m[0][1] = m21; m[0][2] = m31; m[0][3] = m41; + m[1][0] = m12; m[1][1] = m22; m[1][2] = m32; m[1][3] = m42; + m[2][0] = m13; m[2][1] = m23; m[2][2] = m33; m[2][3] = m43; + m[3][0] = m14; m[3][1] = m24; m[3][2] = m34; m[3][3] = m44; + flagBits = General; +} + +template <int N, int M> +Q_INLINE_TEMPLATE QMatrix4x4::QMatrix4x4 + (const QGenericMatrix<N, M, float>& matrix) +{ + const float *values = matrix.constData(); + for (int matrixCol = 0; matrixCol < 4; ++matrixCol) { + for (int matrixRow = 0; matrixRow < 4; ++matrixRow) { + if (matrixCol < N && matrixRow < M) + m[matrixCol][matrixRow] = values[matrixCol * M + matrixRow]; + else if (matrixCol == matrixRow) + m[matrixCol][matrixRow] = 1.0f; + else + m[matrixCol][matrixRow] = 0.0f; + } + } + flagBits = General; +} + +template <int N, int M> +QGenericMatrix<N, M, float> QMatrix4x4::toGenericMatrix() const +{ + QGenericMatrix<N, M, float> result; + float *values = result.data(); + for (int matrixCol = 0; matrixCol < N; ++matrixCol) { + for (int matrixRow = 0; matrixRow < M; ++matrixRow) { + if (matrixCol < 4 && matrixRow < 4) + values[matrixCol * M + matrixRow] = m[matrixCol][matrixRow]; + else if (matrixCol == matrixRow) + values[matrixCol * M + matrixRow] = 1.0f; + else + values[matrixCol * M + matrixRow] = 0.0f; + } + } + return result; +} + +inline const float& QMatrix4x4::operator()(int aRow, int aColumn) const +{ + Q_ASSERT(aRow >= 0 && aRow < 4 && aColumn >= 0 && aColumn < 4); + return m[aColumn][aRow]; +} + +inline float& QMatrix4x4::operator()(int aRow, int aColumn) +{ + Q_ASSERT(aRow >= 0 && aRow < 4 && aColumn >= 0 && aColumn < 4); + flagBits = General; + return m[aColumn][aRow]; +} + +#ifndef QT_NO_VECTOR4D +inline QVector4D QMatrix4x4::column(int index) const +{ + Q_ASSERT(index >= 0 && index < 4); + return QVector4D(m[index][0], m[index][1], m[index][2], m[index][3]); +} + +inline void QMatrix4x4::setColumn(int index, const QVector4D& value) +{ + Q_ASSERT(index >= 0 && index < 4); + m[index][0] = value.x(); + m[index][1] = value.y(); + m[index][2] = value.z(); + m[index][3] = value.w(); + flagBits = General; +} + +inline QVector4D QMatrix4x4::row(int index) const +{ + Q_ASSERT(index >= 0 && index < 4); + return QVector4D(m[0][index], m[1][index], m[2][index], m[3][index]); +} + +inline void QMatrix4x4::setRow(int index, const QVector4D& value) +{ + Q_ASSERT(index >= 0 && index < 4); + m[0][index] = value.x(); + m[1][index] = value.y(); + m[2][index] = value.z(); + m[3][index] = value.w(); + flagBits = General; +} +#endif + +Q_GUI_EXPORT QMatrix4x4 operator/(const QMatrix4x4& matrix, float divisor); + +inline bool QMatrix4x4::isAffine() const +{ + return m[0][3] == 0.0f && m[1][3] == 0.0f && m[2][3] == 0.0f && m[3][3] == 1.0f; +} + +inline bool QMatrix4x4::isIdentity() const +{ + if (flagBits == Identity) + return true; + if (m[0][0] != 1.0f || m[0][1] != 0.0f || m[0][2] != 0.0f) + return false; + if (m[0][3] != 0.0f || m[1][0] != 0.0f || m[1][1] != 1.0f) + return false; + if (m[1][2] != 0.0f || m[1][3] != 0.0f || m[2][0] != 0.0f) + return false; + if (m[2][1] != 0.0f || m[2][2] != 1.0f || m[2][3] != 0.0f) + return false; + if (m[3][0] != 0.0f || m[3][1] != 0.0f || m[3][2] != 0.0f) + return false; + return (m[3][3] == 1.0f); +} + +inline void QMatrix4x4::setToIdentity() +{ + m[0][0] = 1.0f; + m[0][1] = 0.0f; + m[0][2] = 0.0f; + m[0][3] = 0.0f; + m[1][0] = 0.0f; + m[1][1] = 1.0f; + m[1][2] = 0.0f; + m[1][3] = 0.0f; + m[2][0] = 0.0f; + m[2][1] = 0.0f; + m[2][2] = 1.0f; + m[2][3] = 0.0f; + m[3][0] = 0.0f; + m[3][1] = 0.0f; + m[3][2] = 0.0f; + m[3][3] = 1.0f; + flagBits = Identity; +} + +inline void QMatrix4x4::fill(float value) +{ + m[0][0] = value; + m[0][1] = value; + m[0][2] = value; + m[0][3] = value; + m[1][0] = value; + m[1][1] = value; + m[1][2] = value; + m[1][3] = value; + m[2][0] = value; + m[2][1] = value; + m[2][2] = value; + m[2][3] = value; + m[3][0] = value; + m[3][1] = value; + m[3][2] = value; + m[3][3] = value; + flagBits = General; +} + +inline QMatrix4x4& QMatrix4x4::operator+=(const QMatrix4x4& other) +{ + m[0][0] += other.m[0][0]; + m[0][1] += other.m[0][1]; + m[0][2] += other.m[0][2]; + m[0][3] += other.m[0][3]; + m[1][0] += other.m[1][0]; + m[1][1] += other.m[1][1]; + m[1][2] += other.m[1][2]; + m[1][3] += other.m[1][3]; + m[2][0] += other.m[2][0]; + m[2][1] += other.m[2][1]; + m[2][2] += other.m[2][2]; + m[2][3] += other.m[2][3]; + m[3][0] += other.m[3][0]; + m[3][1] += other.m[3][1]; + m[3][2] += other.m[3][2]; + m[3][3] += other.m[3][3]; + flagBits = General; + return *this; +} + +inline QMatrix4x4& QMatrix4x4::operator-=(const QMatrix4x4& other) +{ + m[0][0] -= other.m[0][0]; + m[0][1] -= other.m[0][1]; + m[0][2] -= other.m[0][2]; + m[0][3] -= other.m[0][3]; + m[1][0] -= other.m[1][0]; + m[1][1] -= other.m[1][1]; + m[1][2] -= other.m[1][2]; + m[1][3] -= other.m[1][3]; + m[2][0] -= other.m[2][0]; + m[2][1] -= other.m[2][1]; + m[2][2] -= other.m[2][2]; + m[2][3] -= other.m[2][3]; + m[3][0] -= other.m[3][0]; + m[3][1] -= other.m[3][1]; + m[3][2] -= other.m[3][2]; + m[3][3] -= other.m[3][3]; + flagBits = General; + return *this; +} + +inline QMatrix4x4& QMatrix4x4::operator*=(const QMatrix4x4& o) +{ + const QMatrix4x4 other = o; // prevent aliasing when &o == this ### Qt 6: take o by value + flagBits |= other.flagBits; + + if (flagBits < Rotation2D) { + m[3][0] += m[0][0] * other.m[3][0]; + m[3][1] += m[1][1] * other.m[3][1]; + m[3][2] += m[2][2] * other.m[3][2]; + + m[0][0] *= other.m[0][0]; + m[1][1] *= other.m[1][1]; + m[2][2] *= other.m[2][2]; + return *this; + } + + float m0, m1, m2; + m0 = m[0][0] * other.m[0][0] + + m[1][0] * other.m[0][1] + + m[2][0] * other.m[0][2] + + m[3][0] * other.m[0][3]; + m1 = m[0][0] * other.m[1][0] + + m[1][0] * other.m[1][1] + + m[2][0] * other.m[1][2] + + m[3][0] * other.m[1][3]; + m2 = m[0][0] * other.m[2][0] + + m[1][0] * other.m[2][1] + + m[2][0] * other.m[2][2] + + m[3][0] * other.m[2][3]; + m[3][0] = m[0][0] * other.m[3][0] + + m[1][0] * other.m[3][1] + + m[2][0] * other.m[3][2] + + m[3][0] * other.m[3][3]; + m[0][0] = m0; + m[1][0] = m1; + m[2][0] = m2; + + m0 = m[0][1] * other.m[0][0] + + m[1][1] * other.m[0][1] + + m[2][1] * other.m[0][2] + + m[3][1] * other.m[0][3]; + m1 = m[0][1] * other.m[1][0] + + m[1][1] * other.m[1][1] + + m[2][1] * other.m[1][2] + + m[3][1] * other.m[1][3]; + m2 = m[0][1] * other.m[2][0] + + m[1][1] * other.m[2][1] + + m[2][1] * other.m[2][2] + + m[3][1] * other.m[2][3]; + m[3][1] = m[0][1] * other.m[3][0] + + m[1][1] * other.m[3][1] + + m[2][1] * other.m[3][2] + + m[3][1] * other.m[3][3]; + m[0][1] = m0; + m[1][1] = m1; + m[2][1] = m2; + + m0 = m[0][2] * other.m[0][0] + + m[1][2] * other.m[0][1] + + m[2][2] * other.m[0][2] + + m[3][2] * other.m[0][3]; + m1 = m[0][2] * other.m[1][0] + + m[1][2] * other.m[1][1] + + m[2][2] * other.m[1][2] + + m[3][2] * other.m[1][3]; + m2 = m[0][2] * other.m[2][0] + + m[1][2] * other.m[2][1] + + m[2][2] * other.m[2][2] + + m[3][2] * other.m[2][3]; + m[3][2] = m[0][2] * other.m[3][0] + + m[1][2] * other.m[3][1] + + m[2][2] * other.m[3][2] + + m[3][2] * other.m[3][3]; + m[0][2] = m0; + m[1][2] = m1; + m[2][2] = m2; + + m0 = m[0][3] * other.m[0][0] + + m[1][3] * other.m[0][1] + + m[2][3] * other.m[0][2] + + m[3][3] * other.m[0][3]; + m1 = m[0][3] * other.m[1][0] + + m[1][3] * other.m[1][1] + + m[2][3] * other.m[1][2] + + m[3][3] * other.m[1][3]; + m2 = m[0][3] * other.m[2][0] + + m[1][3] * other.m[2][1] + + m[2][3] * other.m[2][2] + + m[3][3] * other.m[2][3]; + m[3][3] = m[0][3] * other.m[3][0] + + m[1][3] * other.m[3][1] + + m[2][3] * other.m[3][2] + + m[3][3] * other.m[3][3]; + m[0][3] = m0; + m[1][3] = m1; + m[2][3] = m2; + return *this; +} + +inline QMatrix4x4& QMatrix4x4::operator*=(float factor) +{ + m[0][0] *= factor; + m[0][1] *= factor; + m[0][2] *= factor; + m[0][3] *= factor; + m[1][0] *= factor; + m[1][1] *= factor; + m[1][2] *= factor; + m[1][3] *= factor; + m[2][0] *= factor; + m[2][1] *= factor; + m[2][2] *= factor; + m[2][3] *= factor; + m[3][0] *= factor; + m[3][1] *= factor; + m[3][2] *= factor; + m[3][3] *= factor; + flagBits = General; + return *this; +} + +inline bool QMatrix4x4::operator==(const QMatrix4x4& other) const +{ + return m[0][0] == other.m[0][0] && + m[0][1] == other.m[0][1] && + m[0][2] == other.m[0][2] && + m[0][3] == other.m[0][3] && + m[1][0] == other.m[1][0] && + m[1][1] == other.m[1][1] && + m[1][2] == other.m[1][2] && + m[1][3] == other.m[1][3] && + m[2][0] == other.m[2][0] && + m[2][1] == other.m[2][1] && + m[2][2] == other.m[2][2] && + m[2][3] == other.m[2][3] && + m[3][0] == other.m[3][0] && + m[3][1] == other.m[3][1] && + m[3][2] == other.m[3][2] && + m[3][3] == other.m[3][3]; +} + +inline bool QMatrix4x4::operator!=(const QMatrix4x4& other) const +{ + return m[0][0] != other.m[0][0] || + m[0][1] != other.m[0][1] || + m[0][2] != other.m[0][2] || + m[0][3] != other.m[0][3] || + m[1][0] != other.m[1][0] || + m[1][1] != other.m[1][1] || + m[1][2] != other.m[1][2] || + m[1][3] != other.m[1][3] || + m[2][0] != other.m[2][0] || + m[2][1] != other.m[2][1] || + m[2][2] != other.m[2][2] || + m[2][3] != other.m[2][3] || + m[3][0] != other.m[3][0] || + m[3][1] != other.m[3][1] || + m[3][2] != other.m[3][2] || + m[3][3] != other.m[3][3]; +} + +inline QMatrix4x4 operator+(const QMatrix4x4& m1, const QMatrix4x4& m2) +{ + QMatrix4x4 m(1); + m.m[0][0] = m1.m[0][0] + m2.m[0][0]; + m.m[0][1] = m1.m[0][1] + m2.m[0][1]; + m.m[0][2] = m1.m[0][2] + m2.m[0][2]; + m.m[0][3] = m1.m[0][3] + m2.m[0][3]; + m.m[1][0] = m1.m[1][0] + m2.m[1][0]; + m.m[1][1] = m1.m[1][1] + m2.m[1][1]; + m.m[1][2] = m1.m[1][2] + m2.m[1][2]; + m.m[1][3] = m1.m[1][3] + m2.m[1][3]; + m.m[2][0] = m1.m[2][0] + m2.m[2][0]; + m.m[2][1] = m1.m[2][1] + m2.m[2][1]; + m.m[2][2] = m1.m[2][2] + m2.m[2][2]; + m.m[2][3] = m1.m[2][3] + m2.m[2][3]; + m.m[3][0] = m1.m[3][0] + m2.m[3][0]; + m.m[3][1] = m1.m[3][1] + m2.m[3][1]; + m.m[3][2] = m1.m[3][2] + m2.m[3][2]; + m.m[3][3] = m1.m[3][3] + m2.m[3][3]; + m.flagBits = QMatrix4x4::General; + return m; +} + +inline QMatrix4x4 operator-(const QMatrix4x4& m1, const QMatrix4x4& m2) +{ + QMatrix4x4 m(1); + m.m[0][0] = m1.m[0][0] - m2.m[0][0]; + m.m[0][1] = m1.m[0][1] - m2.m[0][1]; + m.m[0][2] = m1.m[0][2] - m2.m[0][2]; + m.m[0][3] = m1.m[0][3] - m2.m[0][3]; + m.m[1][0] = m1.m[1][0] - m2.m[1][0]; + m.m[1][1] = m1.m[1][1] - m2.m[1][1]; + m.m[1][2] = m1.m[1][2] - m2.m[1][2]; + m.m[1][3] = m1.m[1][3] - m2.m[1][3]; + m.m[2][0] = m1.m[2][0] - m2.m[2][0]; + m.m[2][1] = m1.m[2][1] - m2.m[2][1]; + m.m[2][2] = m1.m[2][2] - m2.m[2][2]; + m.m[2][3] = m1.m[2][3] - m2.m[2][3]; + m.m[3][0] = m1.m[3][0] - m2.m[3][0]; + m.m[3][1] = m1.m[3][1] - m2.m[3][1]; + m.m[3][2] = m1.m[3][2] - m2.m[3][2]; + m.m[3][3] = m1.m[3][3] - m2.m[3][3]; + m.flagBits = QMatrix4x4::General; + return m; +} + +inline QMatrix4x4 operator*(const QMatrix4x4& m1, const QMatrix4x4& m2) +{ + int flagBits = m1.flagBits | m2.flagBits; + if (flagBits < QMatrix4x4::Rotation2D) { + QMatrix4x4 m = m1; + m.m[3][0] += m.m[0][0] * m2.m[3][0]; + m.m[3][1] += m.m[1][1] * m2.m[3][1]; + m.m[3][2] += m.m[2][2] * m2.m[3][2]; + + m.m[0][0] *= m2.m[0][0]; + m.m[1][1] *= m2.m[1][1]; + m.m[2][2] *= m2.m[2][2]; + m.flagBits = flagBits; + return m; + } + + QMatrix4x4 m(1); + m.m[0][0] = m1.m[0][0] * m2.m[0][0] + + m1.m[1][0] * m2.m[0][1] + + m1.m[2][0] * m2.m[0][2] + + m1.m[3][0] * m2.m[0][3]; + m.m[0][1] = m1.m[0][1] * m2.m[0][0] + + m1.m[1][1] * m2.m[0][1] + + m1.m[2][1] * m2.m[0][2] + + m1.m[3][1] * m2.m[0][3]; + m.m[0][2] = m1.m[0][2] * m2.m[0][0] + + m1.m[1][2] * m2.m[0][1] + + m1.m[2][2] * m2.m[0][2] + + m1.m[3][2] * m2.m[0][3]; + m.m[0][3] = m1.m[0][3] * m2.m[0][0] + + m1.m[1][3] * m2.m[0][1] + + m1.m[2][3] * m2.m[0][2] + + m1.m[3][3] * m2.m[0][3]; + + m.m[1][0] = m1.m[0][0] * m2.m[1][0] + + m1.m[1][0] * m2.m[1][1] + + m1.m[2][0] * m2.m[1][2] + + m1.m[3][0] * m2.m[1][3]; + m.m[1][1] = m1.m[0][1] * m2.m[1][0] + + m1.m[1][1] * m2.m[1][1] + + m1.m[2][1] * m2.m[1][2] + + m1.m[3][1] * m2.m[1][3]; + m.m[1][2] = m1.m[0][2] * m2.m[1][0] + + m1.m[1][2] * m2.m[1][1] + + m1.m[2][2] * m2.m[1][2] + + m1.m[3][2] * m2.m[1][3]; + m.m[1][3] = m1.m[0][3] * m2.m[1][0] + + m1.m[1][3] * m2.m[1][1] + + m1.m[2][3] * m2.m[1][2] + + m1.m[3][3] * m2.m[1][3]; + + m.m[2][0] = m1.m[0][0] * m2.m[2][0] + + m1.m[1][0] * m2.m[2][1] + + m1.m[2][0] * m2.m[2][2] + + m1.m[3][0] * m2.m[2][3]; + m.m[2][1] = m1.m[0][1] * m2.m[2][0] + + m1.m[1][1] * m2.m[2][1] + + m1.m[2][1] * m2.m[2][2] + + m1.m[3][1] * m2.m[2][3]; + m.m[2][2] = m1.m[0][2] * m2.m[2][0] + + m1.m[1][2] * m2.m[2][1] + + m1.m[2][2] * m2.m[2][2] + + m1.m[3][2] * m2.m[2][3]; + m.m[2][3] = m1.m[0][3] * m2.m[2][0] + + m1.m[1][3] * m2.m[2][1] + + m1.m[2][3] * m2.m[2][2] + + m1.m[3][3] * m2.m[2][3]; + + m.m[3][0] = m1.m[0][0] * m2.m[3][0] + + m1.m[1][0] * m2.m[3][1] + + m1.m[2][0] * m2.m[3][2] + + m1.m[3][0] * m2.m[3][3]; + m.m[3][1] = m1.m[0][1] * m2.m[3][0] + + m1.m[1][1] * m2.m[3][1] + + m1.m[2][1] * m2.m[3][2] + + m1.m[3][1] * m2.m[3][3]; + m.m[3][2] = m1.m[0][2] * m2.m[3][0] + + m1.m[1][2] * m2.m[3][1] + + m1.m[2][2] * m2.m[3][2] + + m1.m[3][2] * m2.m[3][3]; + m.m[3][3] = m1.m[0][3] * m2.m[3][0] + + m1.m[1][3] * m2.m[3][1] + + m1.m[2][3] * m2.m[3][2] + + m1.m[3][3] * m2.m[3][3]; + m.flagBits = flagBits; + return m; +} + +#ifndef QT_NO_VECTOR3D + +inline QVector3D operator*(const QVector3D& vector, const QMatrix4x4& matrix) +{ + float x, y, z, w; + x = vector.x() * matrix.m[0][0] + + vector.y() * matrix.m[0][1] + + vector.z() * matrix.m[0][2] + + matrix.m[0][3]; + y = vector.x() * matrix.m[1][0] + + vector.y() * matrix.m[1][1] + + vector.z() * matrix.m[1][2] + + matrix.m[1][3]; + z = vector.x() * matrix.m[2][0] + + vector.y() * matrix.m[2][1] + + vector.z() * matrix.m[2][2] + + matrix.m[2][3]; + w = vector.x() * matrix.m[3][0] + + vector.y() * matrix.m[3][1] + + vector.z() * matrix.m[3][2] + + matrix.m[3][3]; + if (w == 1.0f) + return QVector3D(x, y, z); + else + return QVector3D(x / w, y / w, z / w); +} + +inline QVector3D operator*(const QMatrix4x4& matrix, const QVector3D& vector) +{ + float x, y, z, w; + if (matrix.flagBits == QMatrix4x4::Identity) { + return vector; + } else if (matrix.flagBits < QMatrix4x4::Rotation2D) { + // Translation | Scale + return QVector3D(vector.x() * matrix.m[0][0] + matrix.m[3][0], + vector.y() * matrix.m[1][1] + matrix.m[3][1], + vector.z() * matrix.m[2][2] + matrix.m[3][2]); + } else if (matrix.flagBits < QMatrix4x4::Rotation) { + // Translation | Scale | Rotation2D + return QVector3D(vector.x() * matrix.m[0][0] + vector.y() * matrix.m[1][0] + matrix.m[3][0], + vector.x() * matrix.m[0][1] + vector.y() * matrix.m[1][1] + matrix.m[3][1], + vector.z() * matrix.m[2][2] + matrix.m[3][2]); + } else { + x = vector.x() * matrix.m[0][0] + + vector.y() * matrix.m[1][0] + + vector.z() * matrix.m[2][0] + + matrix.m[3][0]; + y = vector.x() * matrix.m[0][1] + + vector.y() * matrix.m[1][1] + + vector.z() * matrix.m[2][1] + + matrix.m[3][1]; + z = vector.x() * matrix.m[0][2] + + vector.y() * matrix.m[1][2] + + vector.z() * matrix.m[2][2] + + matrix.m[3][2]; + w = vector.x() * matrix.m[0][3] + + vector.y() * matrix.m[1][3] + + vector.z() * matrix.m[2][3] + + matrix.m[3][3]; + if (w == 1.0f) + return QVector3D(x, y, z); + else + return QVector3D(x / w, y / w, z / w); + } +} + +#endif + +#ifndef QT_NO_VECTOR4D + +inline QVector4D operator*(const QVector4D& vector, const QMatrix4x4& matrix) +{ + float x, y, z, w; + x = vector.x() * matrix.m[0][0] + + vector.y() * matrix.m[0][1] + + vector.z() * matrix.m[0][2] + + vector.w() * matrix.m[0][3]; + y = vector.x() * matrix.m[1][0] + + vector.y() * matrix.m[1][1] + + vector.z() * matrix.m[1][2] + + vector.w() * matrix.m[1][3]; + z = vector.x() * matrix.m[2][0] + + vector.y() * matrix.m[2][1] + + vector.z() * matrix.m[2][2] + + vector.w() * matrix.m[2][3]; + w = vector.x() * matrix.m[3][0] + + vector.y() * matrix.m[3][1] + + vector.z() * matrix.m[3][2] + + vector.w() * matrix.m[3][3]; + return QVector4D(x, y, z, w); +} + +inline QVector4D operator*(const QMatrix4x4& matrix, const QVector4D& vector) +{ + float x, y, z, w; + x = vector.x() * matrix.m[0][0] + + vector.y() * matrix.m[1][0] + + vector.z() * matrix.m[2][0] + + vector.w() * matrix.m[3][0]; + y = vector.x() * matrix.m[0][1] + + vector.y() * matrix.m[1][1] + + vector.z() * matrix.m[2][1] + + vector.w() * matrix.m[3][1]; + z = vector.x() * matrix.m[0][2] + + vector.y() * matrix.m[1][2] + + vector.z() * matrix.m[2][2] + + vector.w() * matrix.m[3][2]; + w = vector.x() * matrix.m[0][3] + + vector.y() * matrix.m[1][3] + + vector.z() * matrix.m[2][3] + + vector.w() * matrix.m[3][3]; + return QVector4D(x, y, z, w); +} + +#endif + +inline QPoint operator*(const QPoint& point, const QMatrix4x4& matrix) +{ + float xin, yin; + float x, y, w; + xin = point.x(); + yin = point.y(); + x = xin * matrix.m[0][0] + + yin * matrix.m[0][1] + + matrix.m[0][3]; + y = xin * matrix.m[1][0] + + yin * matrix.m[1][1] + + matrix.m[1][3]; + w = xin * matrix.m[3][0] + + yin * matrix.m[3][1] + + matrix.m[3][3]; + if (w == 1.0f) + return QPoint(qRound(x), qRound(y)); + else + return QPoint(qRound(x / w), qRound(y / w)); +} + +inline QPointF operator*(const QPointF& point, const QMatrix4x4& matrix) +{ + float xin, yin; + float x, y, w; + xin = point.x(); + yin = point.y(); + x = xin * matrix.m[0][0] + + yin * matrix.m[0][1] + + matrix.m[0][3]; + y = xin * matrix.m[1][0] + + yin * matrix.m[1][1] + + matrix.m[1][3]; + w = xin * matrix.m[3][0] + + yin * matrix.m[3][1] + + matrix.m[3][3]; + if (w == 1.0f) { + return QPointF(qreal(x), qreal(y)); + } else { + return QPointF(qreal(x / w), qreal(y / w)); + } +} + +inline QPoint operator*(const QMatrix4x4& matrix, const QPoint& point) +{ + float xin, yin; + float x, y, w; + xin = point.x(); + yin = point.y(); + if (matrix.flagBits == QMatrix4x4::Identity) { + return point; + } else if (matrix.flagBits < QMatrix4x4::Rotation2D) { + // Translation | Scale + return QPoint(qRound(xin * matrix.m[0][0] + matrix.m[3][0]), + qRound(yin * matrix.m[1][1] + matrix.m[3][1])); + } else if (matrix.flagBits < QMatrix4x4::Perspective) { + return QPoint(qRound(xin * matrix.m[0][0] + yin * matrix.m[1][0] + matrix.m[3][0]), + qRound(xin * matrix.m[0][1] + yin * matrix.m[1][1] + matrix.m[3][1])); + } else { + x = xin * matrix.m[0][0] + + yin * matrix.m[1][0] + + matrix.m[3][0]; + y = xin * matrix.m[0][1] + + yin * matrix.m[1][1] + + matrix.m[3][1]; + w = xin * matrix.m[0][3] + + yin * matrix.m[1][3] + + matrix.m[3][3]; + if (w == 1.0f) + return QPoint(qRound(x), qRound(y)); + else + return QPoint(qRound(x / w), qRound(y / w)); + } +} + +inline QPointF operator*(const QMatrix4x4& matrix, const QPointF& point) +{ + qreal xin, yin; + qreal x, y, w; + xin = point.x(); + yin = point.y(); + if (matrix.flagBits == QMatrix4x4::Identity) { + return point; + } else if (matrix.flagBits < QMatrix4x4::Rotation2D) { + // Translation | Scale + return QPointF(xin * qreal(matrix.m[0][0]) + qreal(matrix.m[3][0]), + yin * qreal(matrix.m[1][1]) + qreal(matrix.m[3][1])); + } else if (matrix.flagBits < QMatrix4x4::Perspective) { + return QPointF(xin * qreal(matrix.m[0][0]) + yin * qreal(matrix.m[1][0]) + + qreal(matrix.m[3][0]), + xin * qreal(matrix.m[0][1]) + yin * qreal(matrix.m[1][1]) + + qreal(matrix.m[3][1])); + } else { + x = xin * qreal(matrix.m[0][0]) + + yin * qreal(matrix.m[1][0]) + + qreal(matrix.m[3][0]); + y = xin * qreal(matrix.m[0][1]) + + yin * qreal(matrix.m[1][1]) + + qreal(matrix.m[3][1]); + w = xin * qreal(matrix.m[0][3]) + + yin * qreal(matrix.m[1][3]) + + qreal(matrix.m[3][3]); + if (w == 1.0) { + return QPointF(qreal(x), qreal(y)); + } else { + return QPointF(qreal(x / w), qreal(y / w)); + } + } +} + +inline QMatrix4x4 operator-(const QMatrix4x4& matrix) +{ + QMatrix4x4 m(1); + m.m[0][0] = -matrix.m[0][0]; + m.m[0][1] = -matrix.m[0][1]; + m.m[0][2] = -matrix.m[0][2]; + m.m[0][3] = -matrix.m[0][3]; + m.m[1][0] = -matrix.m[1][0]; + m.m[1][1] = -matrix.m[1][1]; + m.m[1][2] = -matrix.m[1][2]; + m.m[1][3] = -matrix.m[1][3]; + m.m[2][0] = -matrix.m[2][0]; + m.m[2][1] = -matrix.m[2][1]; + m.m[2][2] = -matrix.m[2][2]; + m.m[2][3] = -matrix.m[2][3]; + m.m[3][0] = -matrix.m[3][0]; + m.m[3][1] = -matrix.m[3][1]; + m.m[3][2] = -matrix.m[3][2]; + m.m[3][3] = -matrix.m[3][3]; + m.flagBits = QMatrix4x4::General; + return m; +} + +inline QMatrix4x4 operator*(float factor, const QMatrix4x4& matrix) +{ + QMatrix4x4 m(1); + m.m[0][0] = matrix.m[0][0] * factor; + m.m[0][1] = matrix.m[0][1] * factor; + m.m[0][2] = matrix.m[0][2] * factor; + m.m[0][3] = matrix.m[0][3] * factor; + m.m[1][0] = matrix.m[1][0] * factor; + m.m[1][1] = matrix.m[1][1] * factor; + m.m[1][2] = matrix.m[1][2] * factor; + m.m[1][3] = matrix.m[1][3] * factor; + m.m[2][0] = matrix.m[2][0] * factor; + m.m[2][1] = matrix.m[2][1] * factor; + m.m[2][2] = matrix.m[2][2] * factor; + m.m[2][3] = matrix.m[2][3] * factor; + m.m[3][0] = matrix.m[3][0] * factor; + m.m[3][1] = matrix.m[3][1] * factor; + m.m[3][2] = matrix.m[3][2] * factor; + m.m[3][3] = matrix.m[3][3] * factor; + m.flagBits = QMatrix4x4::General; + return m; +} + +inline QMatrix4x4 operator*(const QMatrix4x4& matrix, float factor) +{ + QMatrix4x4 m(1); + m.m[0][0] = matrix.m[0][0] * factor; + m.m[0][1] = matrix.m[0][1] * factor; + m.m[0][2] = matrix.m[0][2] * factor; + m.m[0][3] = matrix.m[0][3] * factor; + m.m[1][0] = matrix.m[1][0] * factor; + m.m[1][1] = matrix.m[1][1] * factor; + m.m[1][2] = matrix.m[1][2] * factor; + m.m[1][3] = matrix.m[1][3] * factor; + m.m[2][0] = matrix.m[2][0] * factor; + m.m[2][1] = matrix.m[2][1] * factor; + m.m[2][2] = matrix.m[2][2] * factor; + m.m[2][3] = matrix.m[2][3] * factor; + m.m[3][0] = matrix.m[3][0] * factor; + m.m[3][1] = matrix.m[3][1] * factor; + m.m[3][2] = matrix.m[3][2] * factor; + m.m[3][3] = matrix.m[3][3] * factor; + m.flagBits = QMatrix4x4::General; + return m; +} + +inline bool qFuzzyCompare(const QMatrix4x4& m1, const QMatrix4x4& m2) +{ + return qFuzzyCompare(m1.m[0][0], m2.m[0][0]) && + qFuzzyCompare(m1.m[0][1], m2.m[0][1]) && + qFuzzyCompare(m1.m[0][2], m2.m[0][2]) && + qFuzzyCompare(m1.m[0][3], m2.m[0][3]) && + qFuzzyCompare(m1.m[1][0], m2.m[1][0]) && + qFuzzyCompare(m1.m[1][1], m2.m[1][1]) && + qFuzzyCompare(m1.m[1][2], m2.m[1][2]) && + qFuzzyCompare(m1.m[1][3], m2.m[1][3]) && + qFuzzyCompare(m1.m[2][0], m2.m[2][0]) && + qFuzzyCompare(m1.m[2][1], m2.m[2][1]) && + qFuzzyCompare(m1.m[2][2], m2.m[2][2]) && + qFuzzyCompare(m1.m[2][3], m2.m[2][3]) && + qFuzzyCompare(m1.m[3][0], m2.m[3][0]) && + qFuzzyCompare(m1.m[3][1], m2.m[3][1]) && + qFuzzyCompare(m1.m[3][2], m2.m[3][2]) && + qFuzzyCompare(m1.m[3][3], m2.m[3][3]); +} + +inline QPoint QMatrix4x4::map(const QPoint& point) const +{ + return *this * point; +} + +inline QPointF QMatrix4x4::map(const QPointF& point) const +{ + return *this * point; +} + +#ifndef QT_NO_VECTOR3D + +inline QVector3D QMatrix4x4::map(const QVector3D& point) const +{ + return *this * point; +} + +inline QVector3D QMatrix4x4::mapVector(const QVector3D& vector) const +{ + if (flagBits < Scale) { + // Translation + return vector; + } else if (flagBits < Rotation2D) { + // Translation | Scale + return QVector3D(vector.x() * m[0][0], + vector.y() * m[1][1], + vector.z() * m[2][2]); + } else { + return QVector3D(vector.x() * m[0][0] + + vector.y() * m[1][0] + + vector.z() * m[2][0], + vector.x() * m[0][1] + + vector.y() * m[1][1] + + vector.z() * m[2][1], + vector.x() * m[0][2] + + vector.y() * m[1][2] + + vector.z() * m[2][2]); + } +} + +#endif + +#ifndef QT_NO_VECTOR4D + +inline QVector4D QMatrix4x4::map(const QVector4D& point) const +{ + return *this * point; +} + +#endif + +inline float *QMatrix4x4::data() +{ + // We have to assume that the caller will modify the matrix elements, + // so we flip it over to "General" mode. + flagBits = General; + return *m; +} + +inline void QMatrix4x4::viewport(const QRectF &rect) +{ + viewport(rect.x(), rect.y(), rect.width(), rect.height()); +} + +QT_WARNING_POP + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QMatrix4x4 &m); +#endif + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QMatrix4x4 &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QMatrix4x4 &); +#endif + +#if QT_DEPRECATED_SINCE(5, 0) +template <int N, int M> +QT_DEPRECATED QMatrix4x4 qGenericMatrixToMatrix4x4(const QGenericMatrix<N, M, float>& matrix) +{ + return QMatrix4x4(matrix.constData(), N, M); +} + +template <int N, int M> +QT_DEPRECATED QGenericMatrix<N, M, float> qGenericMatrixFromMatrix4x4(const QMatrix4x4& matrix) +{ + QGenericMatrix<N, M, float> result; + const float *m = matrix.constData(); + float *values = result.data(); + for (int col = 0; col < N; ++col) { + for (int row = 0; row < M; ++row) { + if (col < 4 && row < 4) + values[col * M + row] = m[col * 4 + row]; + else if (col == row) + values[col * M + row] = 1.0f; + else + values[col * M + row] = 0.0f; + } + } + return result; +} +#endif + +#endif + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qmovie.h b/qrenderdoc/3rdparty/qt/include/QtGui/qmovie.h new file mode 100644 index 000000000..930d50289 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qmovie.h @@ -0,0 +1,146 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMOVIE_H +#define QMOVIE_H + +#include <QtGui/qtguiglobal.h> + +#include <QtCore/qobject.h> +#include <QtCore/qbytearray.h> +#include <QtCore/qlist.h> +#include <QtGui/qimagereader.h> + +QT_REQUIRE_CONFIG(movie); + +QT_BEGIN_NAMESPACE + +class QByteArray; +class QColor; +class QIODevice; +class QImage; +class QPixmap; +class QRect; +class QSize; + +class QMoviePrivate; +class Q_GUI_EXPORT QMovie : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QMovie) + Q_PROPERTY(int speed READ speed WRITE setSpeed) + Q_PROPERTY(CacheMode cacheMode READ cacheMode WRITE setCacheMode) +public: + enum MovieState { + NotRunning, + Paused, + Running + }; + Q_ENUM(MovieState) + enum CacheMode { + CacheNone, + CacheAll + }; + Q_ENUM(CacheMode) + + explicit QMovie(QObject *parent = Q_NULLPTR); + explicit QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = Q_NULLPTR); + explicit QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = Q_NULLPTR); + ~QMovie(); + + static QList<QByteArray> supportedFormats(); + + void setDevice(QIODevice *device); + QIODevice *device() const; + + void setFileName(const QString &fileName); + QString fileName() const; + + void setFormat(const QByteArray &format); + QByteArray format() const; + + void setBackgroundColor(const QColor &color); + QColor backgroundColor() const; + + MovieState state() const; + + QRect frameRect() const; + QImage currentImage() const; + QPixmap currentPixmap() const; + + bool isValid() const; + + bool jumpToFrame(int frameNumber); + int loopCount() const; + int frameCount() const; + int nextFrameDelay() const; + int currentFrameNumber() const; + + int speed() const; + + QSize scaledSize(); + void setScaledSize(const QSize &size); + + CacheMode cacheMode() const; + void setCacheMode(CacheMode mode); + +Q_SIGNALS: + void started(); + void resized(const QSize &size); + void updated(const QRect &rect); + void stateChanged(QMovie::MovieState state); + void error(QImageReader::ImageReaderError error); + void finished(); + void frameChanged(int frameNumber); + +public Q_SLOTS: + void start(); + bool jumpToNextFrame(); + void setPaused(bool paused); + void stop(); + void setSpeed(int percentSpeed); + +private: + Q_DISABLE_COPY(QMovie) + Q_PRIVATE_SLOT(d_func(), void _q_loadNextFrame()) +}; + +QT_END_NAMESPACE + +#endif // QMOVIE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qoffscreensurface.h b/qrenderdoc/3rdparty/qt/include/QtGui/qoffscreensurface.h new file mode 100644 index 000000000..35c498c89 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qoffscreensurface.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOFFSCREENSURFACE_H +#define QOFFSCREENSURFACE_H + +#include <QtGui/qtguiglobal.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 = Q_NULLPTR); + virtual ~QOffscreenSurface(); + + SurfaceType surfaceType() const Q_DECL_OVERRIDE; + + void create(); + void destroy(); + + bool isValid() const; + + void setFormat(const QSurfaceFormat &format); + QSurfaceFormat format() const Q_DECL_OVERRIDE; + QSurfaceFormat requestedFormat() const; + + QSize size() const Q_DECL_OVERRIDE; + + QScreen *screen() const; + void setScreen(QScreen *screen); + + QPlatformOffscreenSurface *handle() const; + + void *nativeHandle() const; + void setNativeHandle(void *handle); + +Q_SIGNALS: + void screenChanged(QScreen *screen); + +private Q_SLOTS: + void screenDestroyed(QObject *screen); + +private: + + QPlatformSurface *surfaceHandle() const Q_DECL_OVERRIDE; + + Q_DISABLE_COPY(QOffscreenSurface) +}; + +QT_END_NAMESPACE + +#endif // QOFFSCREENSURFACE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopengl.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopengl.h new file mode 100644 index 000000000..b5df68a3a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopengl.h @@ -0,0 +1,315 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGL_H +#define QOPENGL_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +// Windows always needs this to ensure that APIENTRY gets defined +#if defined(Q_OS_WIN) +# include <QtCore/qt_windows.h> +#endif + +// Note: Apple 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_IOS) || defined(Q_OS_TVOS) +# if defined(QT_OPENGL_ES_3) +# include <OpenGLES/ES3/gl.h> +# include <OpenGLES/ES3/glext.h> +# else +# include <OpenGLES/ES2/gl.h> +# include <OpenGLES/ES2/glext.h> +# endif + +/* + 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; + +# elif !defined(Q_OS_DARWIN) // "uncontrolled" ES2 platforms + +// In "es2" builds (QT_OPENGL_ES_2) additional defines indicate GLES 3.0 or +// higher is available *at build time*. In this case include the corresponding +// header. These are backwards compatible and it should be safe to include +// headers on top of each other, meaning that applications can include gl2.h +// even if gl31.h gets included here. + +// NB! The fact that Qt was built against an SDK with GLES 2 only does not mean +// applications cannot be deployed on a GLES 3 system. Therefore +// QOpenGLFunctions and friends must do everything dynamically and must not rely +// on these macros, except in special cases for controlled build/run environments. + +// Some Khronos headers use the ext proto guard in the standard headers as well, +// which is bad. Work it around, but avoid spilling over to the ext header. +# ifndef GL_GLEXT_PROTOTYPES +# define GL_GLEXT_PROTOTYPES +# define QGL_TEMP_GLEXT_PROTO +# endif + +# if defined(QT_OPENGL_ES_3_1) +# include <GLES3/gl31.h> +# elif defined(QT_OPENGL_ES_3) +# include <GLES3/gl3.h> +# else +# include <GLES2/gl2.h> +#endif + +# ifdef QGL_TEMP_GLEXT_PROTO +# undef GL_GLEXT_PROTOTYPES +# undef QGL_TEMP_GLEXT_PROTO +# endif + +/* + Some GLES2 implementations (like the one on Harmattan) are missing the + typedef for GLchar. Work around it here by adding it. The Kkronos headers + specify GLChar as a typedef to char, so if an implementation already + provides it, then this doesn't do any harm. +*/ +typedef char GLchar; + +# include <QtGui/qopengles2ext.h> +# endif // Q_OS_MAC +#else // non-ES2 platforms +# if defined(Q_OS_MAC) +# include <OpenGL/gl.h> +# define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED +# include <OpenGL/gl3.h> +# include <OpenGL/glext.h> +# else +# define GL_GLEXT_LEGACY // Prevents GL/gl.h from #including system glext.h +// Some Khronos headers use the ext proto guard in the standard headers as well, +// which is bad. Work it around, but avoid spilling over to the ext header. +# ifndef GL_GLEXT_PROTOTYPES +# define GL_GLEXT_PROTOTYPES +# include <GL/gl.h> +# undef GL_GLEXT_PROTOTYPES +# else +# include <GL/gl.h> +# endif +# include <QtGui/qopenglext.h> +# endif // Q_OS_MAC +#endif // QT_OPENGL_ES_2 + +// Desktops can support OpenGL 4. +#if !defined(QT_OPENGL_ES_2) +#define QT_OPENGL_3 +#define QT_OPENGL_3_2 +#define QT_OPENGL_4 +# if !defined(Q_OS_MAC) +# define QT_OPENGL_4_3 +# endif +#endif + +QT_BEGIN_NAMESPACE + + +// When all else fails we provide sensible fallbacks - this is needed to +// allow compilation on OS X 10.6 +#if !defined(QT_OPENGL_ES_2) + +// OS X 10.6 doesn't define these which are needed below +// OS X 10.7 and later defien them in gl3.h +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + + +// This block is copied from glext.h and defines the types needed by +// a few extension classes. + +#include <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; +# ifdef Q_OS_DARWIN +typedef void *GLhandleARB; +# else +typedef unsigned int GLhandleARB; +# endif // Q_OS_DARWIN +#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__) || (defined(_MSC_VER) && _MSC_VER >= 1600)) +#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,const 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,const 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 + +#endif // QOPENGL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglbuffer.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglbuffer.h new file mode 100644 index 000000000..f2dfec3bb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglbuffer.h @@ -0,0 +1,145 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLBUFFER_H +#define QOPENGLBUFFER_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#include <QtCore/qscopedpointer.h> +#include <QtGui/qopengl.h> + +QT_BEGIN_NAMESPACE + + +class QOpenGLBufferPrivate; + +class Q_GUI_EXPORT QOpenGLBuffer +{ +public: + enum Type + { + VertexBuffer = 0x8892, // GL_ARRAY_BUFFER + IndexBuffer = 0x8893, // GL_ELEMENT_ARRAY_BUFFER + PixelPackBuffer = 0x88EB, // GL_PIXEL_PACK_BUFFER + PixelUnpackBuffer = 0x88EC // GL_PIXEL_UNPACK_BUFFER + }; + + QOpenGLBuffer(); + explicit QOpenGLBuffer(QOpenGLBuffer::Type type); + QOpenGLBuffer(const QOpenGLBuffer &other); + ~QOpenGLBuffer(); + + QOpenGLBuffer &operator=(const QOpenGLBuffer &other); + + enum UsagePattern + { + StreamDraw = 0x88E0, // GL_STREAM_DRAW + StreamRead = 0x88E1, // GL_STREAM_READ + StreamCopy = 0x88E2, // GL_STREAM_COPY + StaticDraw = 0x88E4, // GL_STATIC_DRAW + StaticRead = 0x88E5, // GL_STATIC_READ + StaticCopy = 0x88E6, // GL_STATIC_COPY + DynamicDraw = 0x88E8, // GL_DYNAMIC_DRAW + DynamicRead = 0x88E9, // GL_DYNAMIC_READ + DynamicCopy = 0x88EA // GL_DYNAMIC_COPY + }; + + enum Access + { + ReadOnly = 0x88B8, // GL_READ_ONLY + WriteOnly = 0x88B9, // GL_WRITE_ONLY + ReadWrite = 0x88BA // GL_READ_WRITE + }; + + enum RangeAccessFlag + { + RangeRead = 0x0001, // GL_MAP_READ_BIT + RangeWrite = 0x0002, // GL_MAP_WRITE_BIT + RangeInvalidate = 0x0004, // GL_MAP_INVALIDATE_RANGE_BIT + RangeInvalidateBuffer = 0x0008, // GL_MAP_INVALIDATE_BUFFER_BIT + RangeFlushExplicit = 0x0010, // GL_MAP_FLUSH_EXPLICIT_BIT + RangeUnsynchronized = 0x0020 // GL_MAP_UNSYNCHRONIZED_BIT + }; + Q_DECLARE_FLAGS(RangeAccessFlags, RangeAccessFlag) + + QOpenGLBuffer::Type type() const; + + QOpenGLBuffer::UsagePattern usagePattern() const; + void setUsagePattern(QOpenGLBuffer::UsagePattern value); + + bool create(); + bool isCreated() const; + + void destroy(); + + bool bind(); + void release(); + + static void release(QOpenGLBuffer::Type type); + + GLuint bufferId() const; + + int size() const; + + bool read(int offset, void *data, int count); + void write(int offset, const void *data, int count); + + void allocate(const void *data, int count); + inline void allocate(int count) { allocate(Q_NULLPTR, count); } + + void *map(QOpenGLBuffer::Access access); + void *mapRange(int offset, int count, QOpenGLBuffer::RangeAccessFlags access); + bool unmap(); + +private: + QOpenGLBufferPrivate *d_ptr; + + Q_DECLARE_PRIVATE(QOpenGLBuffer) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLBuffer::RangeAccessFlags) + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglcontext.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglcontext.h new file mode 100644 index 000000000..3ec9ce318 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglcontext.h @@ -0,0 +1,256 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLCONTEXT_H +#define QOPENGLCONTEXT_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#include <QtCore/qnamespace.h> +#include <QtCore/QObject> +#include <QtCore/QScopedPointer> + +#include <QtGui/QSurfaceFormat> + +#ifdef __GLEW_H__ +#if defined(Q_CC_GNU) +#warning qopenglfunctions.h is not compatible with GLEW, GLEW defines will be undefined +#warning To use GLEW with Qt, do not include <qopengl.h> or <QOpenGLFunctions> after glew.h +#endif +#endif + +#include <QtGui/qopengl.h> +#include <QtGui/qopenglversionfunctions.h> + +#if QT_DEPRECATED_SINCE(5, 6) +#include <QtCore/qhash.h> +#endif +#include <QtCore/qhashfunctions.h> +#include <QtCore/qpair.h> +#include <QtCore/qvariant.h> + +QT_BEGIN_NAMESPACE + +class QOpenGLContextPrivate; +class QOpenGLContextGroupPrivate; +class QOpenGLFunctions; +class QOpenGLExtraFunctions; +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 = 0) +{ + 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 + Q_DECLARE_PRIVATE(QOpenGLContextGroup) +public: + ~QOpenGLContextGroup(); + + QList<QOpenGLContext *> shares() const; + + static QOpenGLContextGroup *currentContextGroup(); + +private: + QOpenGLContextGroup(); + + friend class QOpenGLContext; + friend class QOpenGLContextGroupResourceBase; + friend class QOpenGLSharedResource; + friend class QOpenGLMultiGroupSharedResource; +}; + + +class QOpenGLTextureHelper; + +class Q_GUI_EXPORT QOpenGLContext : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QOpenGLContext) +public: + explicit QOpenGLContext(QObject *parent = Q_NULLPTR); + ~QOpenGLContext(); + + void setFormat(const QSurfaceFormat &format); + void setShareContext(QOpenGLContext *shareContext); + void setScreen(QScreen *screen); + void setNativeHandle(const QVariant &handle); + + bool create(); + bool isValid() const; + + QSurfaceFormat format() const; + QOpenGLContext *shareContext() const; + QOpenGLContextGroup *shareGroup() const; + QScreen *screen() const; + QVariant nativeHandle() const; + + GLuint defaultFramebufferObject() const; + + bool makeCurrent(QSurface *surface); + void doneCurrent(); + + void swapBuffers(QSurface *surface); + QFunctionPointer getProcAddress(const QByteArray &procName) const; + QFunctionPointer getProcAddress(const char *procName) const; + + QSurface *surface() const; + + static QOpenGLContext *currentContext(); + static bool areSharing(QOpenGLContext *first, QOpenGLContext *second); + + QPlatformOpenGLContext *handle() const; + QPlatformOpenGLContext *shareHandle() const; + + QOpenGLFunctions *functions() const; + QOpenGLExtraFunctions *extraFunctions() 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; + + static void *openGLModuleHandle(); + + enum OpenGLModuleType { + LibGL, + LibGLES + }; + + static OpenGLModuleType openGLModuleType(); + + bool isOpenGLES() const; + + static bool supportsThreadedOpenGL(); + static QOpenGLContext *globalShareContext(); + +Q_SIGNALS: + void aboutToBeDestroyed(); + +private: + friend class QGLContext; + friend class QGLPixelBuffer; + friend class QOpenGLContextResourceBase; + friend class QOpenGLPaintDevice; + friend class QOpenGLGlyphTexture; + friend class QOpenGLTextureGlyphCache; + friend class QOpenGLEngineShaderManager; + friend class QOpenGLFramebufferObject; + friend class QOpenGLFramebufferObjectPrivate; + friend class QOpenGL2PaintEngineEx; + friend class QOpenGL2PaintEngineExPrivate; + friend class QSGDistanceFieldGlyphCache; + friend class QWidgetPrivate; + friend class QAbstractOpenGLFunctionsPrivate; + friend class QOpenGLTexturePrivate; + + void *qGLContextHandle() const; + void setQGLContextHandle(void *handle,void (*qGLContextDeleteFunction)(void *)); + void deleteQGLContext(); + + QOpenGLVersionFunctionsStorage* functionsBackendStorage() const; + void insertExternalFunctions(QAbstractOpenGLFunctions *f); + void removeExternalFunctions(QAbstractOpenGLFunctions *f); + + QOpenGLTextureHelper* textureFunctions() const; + void setTextureFunctions(QOpenGLTextureHelper* textureFuncs); + + void destroy(); + + Q_PRIVATE_SLOT(d_func(), void _q_screenDestroyed(QObject *object)) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif // QOPENGLCONTEXT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopengldebug.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopengldebug.h new file mode 100644 index 000000000..6b10c3629 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopengldebug.h @@ -0,0 +1,223 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLDEBUG_H +#define QOPENGLDEBUG_H + +#include <QtGui/qtguiglobal.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> + +#if defined(Q_CLANG_QDOC) +#undef GLuint +typedef unsigned int GLuint; +#endif + +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 &operator=(const QOpenGLDebugMessage &debugMessage); +#ifdef Q_COMPILER_RVALUE_REFS + QOpenGLDebugMessage &operator=(QOpenGLDebugMessage &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + ~QOpenGLDebugMessage(); + + void swap(QOpenGLDebugMessage &other) Q_DECL_NOTHROW { qSwap(d, other.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_PROPERTY(LoggingMode loggingMode READ loggingMode) + +public: + enum LoggingMode { + AsynchronousLogging, + SynchronousLogging + }; + Q_ENUM(LoggingMode) + + explicit QOpenGLDebugLogger(QObject *parent = Q_NULLPTR); + ~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/qrenderdoc/3rdparty/qt/include/QtGui/qopengles2ext.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopengles2ext.h new file mode 100644 index 000000000..8ff50a924 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopengles2ext.h @@ -0,0 +1,3304 @@ +#ifndef __gl2ext_h_ +#define __gl2ext_h_ 1 + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#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 + +/* +** Copyright (c) 2013-2017 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 +** without limitation the rights to use, copy, modify, merge, publish, +** 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. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ +/* +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +/* Generated on date 20170331 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: _nomatch_^ + * Default extensions included: gles2 + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 +typedef void (GL_APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlendBarrierKHR (void); +#endif +#endif /* GL_KHR_blend_equation_advanced */ + +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#endif /* GL_KHR_blend_equation_advanced_coherent */ + +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_SAMPLER 0x82E6 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); +GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); +#endif +#endif /* GL_KHR_debug */ + +#ifndef GL_KHR_no_error +#define GL_KHR_no_error 1 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#endif /* GL_KHR_no_error */ + +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 +#endif /* GL_KHR_robust_buffer_access_behavior */ + +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 +#define GL_CONTEXT_ROBUST_ACCESS_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void); +GL_APICALL void GL_APIENTRY glReadnPixelsKHR (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvKHR (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivKHR (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GL_APICALL void GL_APIENTRY glGetnUniformuivKHR (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#endif +#endif /* GL_KHR_robustness */ + +#ifndef GL_KHR_texture_compression_astc_hdr +#define GL_KHR_texture_compression_astc_hdr 1 +#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 /* GL_KHR_texture_compression_astc_hdr */ + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif /* GL_KHR_texture_compression_astc_ldr */ + +#ifndef GL_KHR_texture_compression_astc_sliced_3d +#define GL_KHR_texture_compression_astc_sliced_3d 1 +#endif /* GL_KHR_texture_compression_astc_sliced_3d */ + +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +typedef void *GLeglImageOES; +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +#endif /* GL_OES_EGL_image */ + +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#endif /* GL_OES_EGL_image_external */ + +#ifndef GL_OES_EGL_image_external_essl3 +#define GL_OES_EGL_image_external_essl3 1 +#endif /* GL_OES_EGL_image_external_essl3 */ + +#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture +#define GL_OES_compressed_ETC1_RGB8_sub_texture 1 +#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */ + +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#define GL_ETC1_RGB8_OES 0x8D64 +#endif /* GL_OES_compressed_ETC1_RGB8_texture */ + +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#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 /* GL_OES_compressed_paletted_texture */ + +#ifndef GL_OES_copy_image +#define GL_OES_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAOESPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataOES (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 +#endif /* GL_OES_copy_image */ + +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif /* GL_OES_depth24 */ + +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif /* GL_OES_depth32 */ + +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif /* GL_OES_depth_texture */ + +#ifndef GL_OES_draw_buffers_indexed +#define GL_OES_draw_buffers_indexed 1 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +typedef void (GL_APIENTRYP PFNGLENABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiOES (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciOES (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiOES (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index); +#endif +#endif /* GL_OES_draw_buffers_indexed */ + +#ifndef GL_OES_draw_elements_base_vertex +#define GL_OES_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexOES (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +#endif +#endif /* GL_OES_draw_elements_base_vertex */ + +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif /* GL_OES_element_index_uint */ + +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif /* GL_OES_fbo_render_mipmap */ + +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif /* GL_OES_fragment_precision_high */ + +#ifndef GL_OES_geometry_point_size +#define GL_OES_geometry_point_size 1 +#endif /* GL_OES_geometry_point_size */ + +#ifndef GL_OES_geometry_shader +#define GL_OES_geometry_shader 1 +#define GL_GEOMETRY_SHADER_OES 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F +#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E +#define GL_LINES_ADJACENCY_OES 0x000A +#define GL_LINE_STRIP_ADJACENCY_OES 0x000B +#define GL_TRIANGLES_ADJACENCY_OES 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E +#define GL_UNDEFINED_VERTEX_OES 0x8260 +#define GL_PRIMITIVES_GENERATED_OES 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureOES (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_OES_geometry_shader */ + +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#endif +#endif /* GL_OES_get_program_binary */ + +#ifndef GL_OES_gpu_shader5 +#define GL_OES_gpu_shader5 1 +#endif /* GL_OES_gpu_shader5 */ + +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_OES_mapbuffer */ + +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif /* GL_OES_packed_depth_stencil */ + +#ifndef GL_OES_primitive_bounding_box +#define GL_OES_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxOES (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_OES_primitive_bounding_box */ + +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#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 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 +#endif /* GL_OES_required_internalformat */ + +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif /* GL_OES_rgb8_rgba8 */ + +#ifndef GL_OES_sample_shading +#define GL_OES_sample_shading 1 +#define GL_SAMPLE_SHADING_OES 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37 +typedef void (GL_APIENTRYP PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMinSampleShadingOES (GLfloat value); +#endif +#endif /* GL_OES_sample_shading */ + +#ifndef GL_OES_sample_variables +#define GL_OES_sample_variables 1 +#endif /* GL_OES_sample_variables */ + +#ifndef GL_OES_shader_image_atomic +#define GL_OES_shader_image_atomic 1 +#endif /* GL_OES_shader_image_atomic */ + +#ifndef GL_OES_shader_io_blocks +#define GL_OES_shader_io_blocks 1 +#endif /* GL_OES_shader_io_blocks */ + +#ifndef GL_OES_shader_multisample_interpolation +#define GL_OES_shader_multisample_interpolation 1 +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D +#endif /* GL_OES_shader_multisample_interpolation */ + +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif /* GL_OES_standard_derivatives */ + +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif /* GL_OES_stencil1 */ + +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif /* GL_OES_stencil4 */ + +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif /* GL_OES_surfaceless_context */ + +#ifndef GL_OES_tessellation_point_size +#define GL_OES_tessellation_point_size 1 +#endif /* GL_OES_tessellation_point_size */ + +#ifndef GL_OES_tessellation_shader +#define GL_OES_tessellation_shader 1 +#define GL_PATCHES_OES 0x000E +#define GL_PATCH_VERTICES_OES 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75 +#define GL_TESS_GEN_MODE_OES 0x8E76 +#define GL_TESS_GEN_SPACING_OES 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78 +#define GL_TESS_GEN_POINT_MODE_OES 0x8E79 +#define GL_ISOLINES_OES 0x8E7A +#define GL_QUADS_OES 0x0007 +#define GL_FRACTIONAL_ODD_OES 0x8E7B +#define GL_FRACTIONAL_EVEN_OES 0x8E7C +#define GL_MAX_PATCH_VERTICES_OES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221 +#define GL_IS_PER_PATCH_OES 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308 +#define GL_TESS_CONTROL_SHADER_OES 0x8E88 +#define GL_TESS_EVALUATION_SHADER_OES 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriOES (GLenum pname, GLint value); +#endif +#endif /* GL_OES_tessellation_shader */ + +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +#endif /* GL_OES_texture_3D */ + +#ifndef GL_OES_texture_border_clamp +#define GL_OES_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_OES 0x1004 +#define GL_CLAMP_TO_BORDER_OES 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivOES (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivOES (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_OES_texture_border_clamp */ + +#ifndef GL_OES_texture_buffer +#define GL_OES_texture_buffer 1 +#define GL_TEXTURE_BUFFER_OES 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F +#define GL_SAMPLER_BUFFER_OES 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8 +#define GL_IMAGE_BUFFER_OES 0x9051 +#define GL_INT_IMAGE_BUFFER_OES 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D +#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_OES_texture_buffer */ + +#ifndef GL_OES_texture_compression_astc +#define GL_OES_texture_compression_astc 1 +#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0 +#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1 +#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2 +#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3 +#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4 +#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5 +#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6 +#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7 +#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8 +#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9 +#endif /* GL_OES_texture_compression_astc */ + +#ifndef GL_OES_texture_cube_map_array +#define GL_OES_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A +#endif /* GL_OES_texture_cube_map_array */ + +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif /* GL_OES_texture_float */ + +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif /* GL_OES_texture_float_linear */ + +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#define GL_HALF_FLOAT_OES 0x8D61 +#endif /* GL_OES_texture_half_float */ + +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif /* GL_OES_texture_half_float_linear */ + +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif /* GL_OES_texture_npot */ + +#ifndef GL_OES_texture_stencil8 +#define GL_OES_texture_stencil8 1 +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 +#endif /* GL_OES_texture_stencil8 */ + +#ifndef GL_OES_texture_storage_multisample_2d_array +#define GL_OES_texture_storage_multisample_2d_array 1 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#endif +#endif /* GL_OES_texture_storage_multisample_2d_array */ + +#ifndef GL_OES_texture_view +#define GL_OES_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_OES_texture_view */ + +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +#endif /* GL_OES_vertex_array_object */ + +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif /* GL_OES_vertex_half_float */ + +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif /* GL_OES_vertex_type_10_10_10_2 */ + +#ifndef GL_OES_viewport_array +#define GL_OES_viewport_array 1 +#define GL_MAX_VIEWPORTS_OES 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data); +#endif +#endif /* GL_OES_viewport_array */ + +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif /* GL_AMD_compressed_3DC_texture */ + +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif /* GL_AMD_compressed_ATC_texture */ + +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#define GL_Z400_BINARY_AMD 0x8740 +#endif /* GL_AMD_program_binary_Z400 */ + +#ifndef GL_ANDROID_extension_pack_es31a +#define GL_ANDROID_extension_pack_es31a 1 +#endif /* GL_ANDROID_extension_pack_es31a */ + +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif /* GL_ANGLE_depth_texture */ + +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_ANGLE_framebuffer_blit */ + +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_ANGLE_framebuffer_multisample */ + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +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); +#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 +#endif /* GL_ANGLE_instanced_arrays */ + +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif /* GL_ANGLE_pack_reverse_row_order */ + +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif /* GL_ANGLE_program_binary */ + +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif /* GL_ANGLE_texture_compression_dxt3 */ + +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif /* GL_ANGLE_texture_compression_dxt5 */ + +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif /* GL_ANGLE_texture_usage */ + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); +#endif +#endif /* GL_ANGLE_translated_shader_source */ + +#ifndef GL_APPLE_clip_distance +#define GL_APPLE_clip_distance 1 +#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32 +#define GL_CLIP_DISTANCE0_APPLE 0x3000 +#define GL_CLIP_DISTANCE1_APPLE 0x3001 +#define GL_CLIP_DISTANCE2_APPLE 0x3002 +#define GL_CLIP_DISTANCE3_APPLE 0x3003 +#define GL_CLIP_DISTANCE4_APPLE 0x3004 +#define GL_CLIP_DISTANCE5_APPLE 0x3005 +#define GL_CLIP_DISTANCE6_APPLE 0x3006 +#define GL_CLIP_DISTANCE7_APPLE 0x3007 +#endif /* GL_APPLE_clip_distance */ + +#ifndef GL_APPLE_color_buffer_packed_float +#define GL_APPLE_color_buffer_packed_float 1 +#endif /* GL_APPLE_color_buffer_packed_float */ + +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +#endif /* GL_APPLE_copy_texture_levels */ + +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif +#endif /* GL_APPLE_framebuffer_multisample */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_RAW_422_APPLE 0x8A51 +#endif /* GL_APPLE_rgb_422 */ + +#ifndef GL_APPLE_sync +#define GL_APPLE_sync 1 +#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 +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); +#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 +#endif /* GL_APPLE_sync */ + +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 +#endif /* GL_APPLE_texture_format_BGRA8888 */ + +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif /* GL_APPLE_texture_max_level */ + +#ifndef GL_APPLE_texture_packed_float +#define GL_APPLE_texture_packed_float 1 +#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B +#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E +#define GL_R11F_G11F_B10F_APPLE 0x8C3A +#define GL_RGB9_E5_APPLE 0x8C3D +#endif /* GL_APPLE_texture_packed_float */ + +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif /* GL_ARM_mali_program_binary */ + +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif /* GL_ARM_mali_shader_binary */ + +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif /* GL_ARM_rgba8 */ + +#ifndef GL_ARM_shader_framebuffer_fetch +#define GL_ARM_shader_framebuffer_fetch 1 +#define GL_FETCH_PER_SAMPLE_ARM 0x8F65 +#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66 +#endif /* GL_ARM_shader_framebuffer_fetch */ + +#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil +#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1 +#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */ + +#ifndef GL_DMP_program_binary +#define GL_DMP_program_binary 1 +#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251 +#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252 +#define GL_DMP_PROGRAM_BINARY_DMP 0x9253 +#endif /* GL_DMP_program_binary */ + +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#define GL_SHADER_BINARY_DMP 0x9250 +#endif /* GL_DMP_shader_binary */ + +#ifndef GL_EXT_YUV_target +#define GL_EXT_YUV_target 1 +#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7 +#endif /* GL_EXT_YUV_target */ + +#ifndef GL_EXT_base_instance +#define GL_EXT_base_instance 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#endif +#endif /* GL_EXT_base_instance */ + +#ifndef GL_EXT_blend_func_extended +#define GL_EXT_blend_func_extended 1 +#define GL_SRC1_COLOR_EXT 0x88F9 +#define GL_SRC1_ALPHA_EXT 0x8589 +#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB +#define GL_SRC_ALPHA_SATURATE_EXT 0x0308 +#define GL_LOCATION_INDEX_EXT 0x930F +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetFragDataIndexEXT (GLuint program, const GLchar *name); +#endif +#endif /* GL_EXT_blend_func_extended */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_buffer_storage +#define GL_EXT_buffer_storage 1 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT_EXT 0x0040 +#define GL_MAP_COHERENT_BIT_EXT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100 +#define GL_CLIENT_STORAGE_BIT_EXT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F +#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220 +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#endif +#endif /* GL_EXT_buffer_storage */ + +#ifndef GL_EXT_clear_texture +#define GL_EXT_clear_texture 1 +typedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#endif +#endif /* GL_EXT_clear_texture */ + +#ifndef GL_EXT_clip_cull_distance +#define GL_EXT_clip_cull_distance 1 +#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32 +#define GL_MAX_CULL_DISTANCES_EXT 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA +#define GL_CLIP_DISTANCE0_EXT 0x3000 +#define GL_CLIP_DISTANCE1_EXT 0x3001 +#define GL_CLIP_DISTANCE2_EXT 0x3002 +#define GL_CLIP_DISTANCE3_EXT 0x3003 +#define GL_CLIP_DISTANCE4_EXT 0x3004 +#define GL_CLIP_DISTANCE5_EXT 0x3005 +#define GL_CLIP_DISTANCE6_EXT 0x3006 +#define GL_CLIP_DISTANCE7_EXT 0x3007 +#endif /* GL_EXT_clip_cull_distance */ + +#ifndef GL_EXT_color_buffer_float +#define GL_EXT_color_buffer_float 1 +#endif /* GL_EXT_color_buffer_float */ + +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif /* GL_EXT_color_buffer_half_float */ + +#ifndef GL_EXT_conservative_depth +#define GL_EXT_conservative_depth 1 +#endif /* GL_EXT_conservative_depth */ + +#ifndef GL_EXT_copy_image +#define GL_EXT_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAEXTPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataEXT (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 +#endif /* GL_EXT_copy_image */ + +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif +#endif /* GL_EXT_debug_label */ + +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +#endif /* GL_EXT_discard_framebuffer */ + +#ifndef GL_EXT_disjoint_timer_query +#define GL_EXT_disjoint_timer_query 1 +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +#endif +#endif /* GL_EXT_disjoint_timer_query */ + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 +#define GL_DRAW_BUFFER0_EXT 0x8825 +#define GL_DRAW_BUFFER1_EXT 0x8826 +#define GL_DRAW_BUFFER2_EXT 0x8827 +#define GL_DRAW_BUFFER3_EXT 0x8828 +#define GL_DRAW_BUFFER4_EXT 0x8829 +#define GL_DRAW_BUFFER5_EXT 0x882A +#define GL_DRAW_BUFFER6_EXT 0x882B +#define GL_DRAW_BUFFER7_EXT 0x882C +#define GL_DRAW_BUFFER8_EXT 0x882D +#define GL_DRAW_BUFFER9_EXT 0x882E +#define GL_DRAW_BUFFER10_EXT 0x882F +#define GL_DRAW_BUFFER11_EXT 0x8830 +#define GL_DRAW_BUFFER12_EXT 0x8831 +#define GL_DRAW_BUFFER13_EXT 0x8832 +#define GL_DRAW_BUFFER14_EXT 0x8833 +#define GL_DRAW_BUFFER15_EXT 0x8834 +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_EXT_draw_buffers */ + +#ifndef GL_EXT_draw_buffers_indexed +#define GL_EXT_draw_buffers_indexed 1 +typedef void (GL_APIENTRYP PFNGLENABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiEXT (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index); +#endif +#endif /* GL_EXT_draw_buffers_indexed */ + +#ifndef GL_EXT_draw_elements_base_vertex +#define GL_EXT_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +#endif +#endif /* GL_EXT_draw_elements_base_vertex */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_transform_feedback +#define GL_EXT_draw_transform_feedback 1 +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id); +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackEXT (GLenum mode, GLuint id); +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount); +#endif +#endif /* GL_EXT_draw_transform_feedback */ + +#ifndef GL_EXT_float_blend +#define GL_EXT_float_blend 1 +#endif /* GL_EXT_float_blend */ + +#ifndef GL_EXT_geometry_point_size +#define GL_EXT_geometry_point_size 1 +#endif /* GL_EXT_geometry_point_size */ + +#ifndef GL_EXT_geometry_shader +#define GL_EXT_geometry_shader 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F +#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_UNDEFINED_VERTEX_EXT 0x8260 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_EXT_geometry_shader */ + +#ifndef GL_EXT_gpu_shader5 +#define GL_EXT_gpu_shader5 1 +#endif /* GL_EXT_gpu_shader5 */ + +#ifndef GL_EXT_instanced_arrays +#define GL_EXT_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_instanced_arrays */ + +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#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 +typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#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 +#endif /* GL_EXT_map_buffer_range */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#endif +#endif /* GL_EXT_multi_draw_arrays */ + +#ifndef GL_EXT_multi_draw_indirect +#define GL_EXT_multi_draw_indirect 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#endif +#endif /* GL_EXT_multi_draw_indirect */ + +#ifndef GL_EXT_multisampled_compatibility +#define GL_EXT_multisampled_compatibility 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#endif /* GL_EXT_multisampled_compatibility */ + +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_EXT_multisampled_render_to_texture */ + +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#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 +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); +#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 +#endif /* GL_EXT_multiview_draw_buffers */ + +#ifndef GL_EXT_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#endif /* GL_EXT_occlusion_query_boolean */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_EXT_polygon_offset_clamp */ + +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 +#endif /* GL_EXT_post_depth_coverage */ + +#ifndef GL_EXT_primitive_bounding_box +#define GL_EXT_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_EXT_primitive_bounding_box */ + +#ifndef GL_EXT_protected_textures +#define GL_EXT_protected_textures 1 +#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010 +#define GL_TEXTURE_PROTECTED_EXT 0x8BFA +#endif /* GL_EXT_protected_textures */ + +#ifndef GL_EXT_pvrtc_sRGB +#define GL_EXT_pvrtc_sRGB 1 +#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 +#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 +#endif /* GL_EXT_pvrtc_sRGB */ + +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C +typedef void (GL_APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif /* GL_EXT_read_format_bgra */ + +#ifndef GL_EXT_render_snorm +#define GL_EXT_render_snorm 1 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM_EXT 0x8F98 +#define GL_RG16_SNORM_EXT 0x8F99 +#define GL_RGBA16_SNORM_EXT 0x8F9B +#endif /* GL_EXT_render_snorm */ + +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +#endif /* GL_EXT_robustness */ + +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif /* GL_EXT_sRGB */ + +#ifndef GL_EXT_sRGB_write_control +#define GL_EXT_sRGB_write_control 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#endif /* GL_EXT_sRGB_write_control */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_EXT_separate_shader_objects */ + +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#endif /* GL_EXT_shader_framebuffer_fetch */ + +#ifndef GL_EXT_shader_group_vote +#define GL_EXT_shader_group_vote 1 +#endif /* GL_EXT_shader_group_vote */ + +#ifndef GL_EXT_shader_implicit_conversions +#define GL_EXT_shader_implicit_conversions 1 +#endif /* GL_EXT_shader_implicit_conversions */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shader_io_blocks +#define GL_EXT_shader_io_blocks 1 +#endif /* GL_EXT_shader_io_blocks */ + +#ifndef GL_EXT_shader_non_constant_global_initializers +#define GL_EXT_shader_non_constant_global_initializers 1 +#endif /* GL_EXT_shader_non_constant_global_initializers */ + +#ifndef GL_EXT_shader_pixel_local_storage +#define GL_EXT_shader_pixel_local_storage 1 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67 +#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64 +#endif /* GL_EXT_shader_pixel_local_storage */ + +#ifndef GL_EXT_shader_pixel_local_storage2 +#define GL_EXT_shader_pixel_local_storage2 1 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651 +#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size); +typedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target); +typedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size); +GL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target); +GL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values); +#endif +#endif /* GL_EXT_shader_pixel_local_storage2 */ + +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif /* GL_EXT_shader_texture_lod */ + +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 +#endif /* GL_EXT_shadow_samplers */ + +#ifndef GL_EXT_sparse_texture +#define GL_EXT_sparse_texture 1 +#define GL_TEXTURE_SPARSE_EXT 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7 +#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_3D 0x806F +#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9 +typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#endif +#endif /* GL_EXT_sparse_texture */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_tessellation_point_size +#define GL_EXT_tessellation_point_size 1 +#endif /* GL_EXT_tessellation_point_size */ + +#ifndef GL_EXT_tessellation_shader +#define GL_EXT_tessellation_shader 1 +#define GL_PATCHES_EXT 0x000E +#define GL_PATCH_VERTICES_EXT 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75 +#define GL_TESS_GEN_MODE_EXT 0x8E76 +#define GL_TESS_GEN_SPACING_EXT 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78 +#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79 +#define GL_ISOLINES_EXT 0x8E7A +#define GL_QUADS_EXT 0x0007 +#define GL_FRACTIONAL_ODD_EXT 0x8E7B +#define GL_FRACTIONAL_EVEN_EXT 0x8E7C +#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_IS_PER_PATCH_EXT 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308 +#define GL_TESS_CONTROL_SHADER_EXT 0x8E88 +#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriEXT (GLenum pname, GLint value); +#endif +#endif /* GL_EXT_tessellation_shader */ + +#ifndef GL_EXT_texture_border_clamp +#define GL_EXT_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_EXT_texture_border_clamp */ + +#ifndef GL_EXT_texture_buffer +#define GL_EXT_texture_buffer 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D +#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_EXT_texture_buffer */ + +#ifndef GL_EXT_texture_compression_astc_decode_mode +#define GL_EXT_texture_compression_astc_decode_mode 1 +#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69 +#endif /* GL_EXT_texture_compression_astc_decode_mode */ + +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif /* GL_EXT_texture_compression_dxt1 */ + +#ifndef GL_EXT_texture_compression_s3tc +#define GL_EXT_texture_compression_s3tc 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_cube_map_array +#define GL_EXT_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#endif /* GL_EXT_texture_cube_map_array */ + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif /* GL_EXT_texture_filter_anisotropic */ + +#ifndef GL_EXT_texture_filter_minmax +#define GL_EXT_texture_filter_minmax 1 +#endif /* GL_EXT_texture_filter_minmax */ + +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif /* GL_EXT_texture_format_BGRA8888 */ + +#ifndef GL_EXT_texture_norm16 +#define GL_EXT_texture_norm16 1 +#define GL_R16_EXT 0x822A +#define GL_RG16_EXT 0x822C +#define GL_RGBA16_EXT 0x805B +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM_EXT 0x8F9A +#endif /* GL_EXT_texture_norm16 */ + +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif /* GL_EXT_texture_rg */ + +#ifndef GL_EXT_texture_sRGB_R8 +#define GL_EXT_texture_sRGB_R8 1 +#define GL_SR8_EXT 0x8FBD +#endif /* GL_EXT_texture_sRGB_R8 */ + +#ifndef GL_EXT_texture_sRGB_RG8 +#define GL_EXT_texture_sRGB_RG8 1 +#define GL_SRG8_EXT 0x8FBE +#endif /* GL_EXT_texture_sRGB_RG8 */ + +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#endif /* GL_EXT_texture_sRGB_decode */ + +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif /* GL_EXT_texture_type_2_10_10_10_REV */ + +#ifndef GL_EXT_texture_view +#define GL_EXT_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_EXT_texture_view */ + +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 +#endif /* GL_EXT_unpack_subimage */ + +#ifndef GL_EXT_window_rectangles +#define GL_EXT_window_rectangles 1 +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 +typedef void (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_FJ_shader_binary_GCCSO 1 +#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 +#endif /* GL_FJ_shader_binary_GCCSO */ + +#ifndef GL_IMG_bindless_texture +#define GL_IMG_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleIMG (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glUniformHandleui64IMG (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#endif +#endif /* GL_IMG_bindless_texture */ + +#ifndef GL_IMG_framebuffer_downsample +#define GL_IMG_framebuffer_downsample 1 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C +#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D +#define GL_DOWNSAMPLE_SCALES_IMG 0x913E +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +GL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#endif +#endif /* GL_IMG_framebuffer_downsample */ + +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_IMG_multisampled_render_to_texture */ + +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif /* GL_IMG_program_binary */ + +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif /* GL_IMG_read_format */ + +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#define GL_SGX_BINARY_IMG 0x8C0A +#endif /* GL_IMG_shader_binary */ + +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif /* GL_IMG_texture_compression_pvrtc */ + +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_IMG_texture_compression_pvrtc2 1 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif /* GL_IMG_texture_compression_pvrtc2 */ + +#ifndef GL_IMG_texture_filter_cubic +#define GL_IMG_texture_filter_cubic 1 +#define GL_CUBIC_IMG 0x9139 +#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A +#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B +#endif /* GL_IMG_texture_filter_cubic */ + +#ifndef GL_INTEL_conservative_rasterization +#define GL_INTEL_conservative_rasterization 1 +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#endif /* GL_INTEL_conservative_rasterization */ + +#ifndef GL_INTEL_framebuffer_CMAA +#define GL_INTEL_framebuffer_CMAA 1 +typedef void (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void); +#endif +#endif /* GL_INTEL_framebuffer_CMAA */ + +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +typedef void (GL_APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (GL_APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (GL_APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GL_APICALL void GL_APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +GL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GL_APICALL void GL_APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#endif +#endif /* GL_INTEL_performance_query */ + +#ifndef GL_MESA_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers +#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1 +#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */ + +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (GL_APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (GL_APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleNV (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GL_APICALL GLuint64 GL_APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GL_APICALL void GL_APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GL_APICALL void GL_APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GL_APICALL GLboolean GL_APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GL_APICALL GLboolean GL_APIENTRY glIsImageHandleResidentNV (GLuint64 handle); +#endif +#endif /* GL_NV_bindless_texture */ + +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLUE_NV 0x1905 +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_NV 0x9299 +#define GL_CONJOINT_NV 0x9284 +#define GL_CONTRAST_NV 0x92A1 +#define GL_DARKEN_NV 0x9297 +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISJOINT_NV 0x9283 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_GREEN_NV 0x1904 +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MULTIPLY_NV 0x9294 +#define GL_OVERLAY_NV 0x9296 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_RED_NV 0x1903 +#define GL_SCREEN_NV 0x9295 +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_XOR_NV 0x1506 +typedef void (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glBlendBarrierNV (void); +#endif +#endif /* GL_NV_blend_equation_advanced */ + +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#endif /* GL_NV_blend_equation_advanced_coherent */ + +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +typedef void (GL_APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GL_APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GL_APICALL void GL_APIENTRY glEndConditionalRenderNV (void); +#endif +#endif /* GL_NV_conditional_render */ + +#ifndef GL_NV_conservative_raster +#define GL_NV_conservative_raster 1 +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 +typedef void (GL_APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#ifndef GL_NV_conservative_raster_pre_snap_triangles +#define GL_NV_conservative_raster_pre_snap_triangles 1 +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F +typedef void (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_copy_buffer +#define GL_NV_copy_buffer 1 +#define GL_COPY_READ_BUFFER_NV 0x8F36 +#define GL_COPY_WRITE_BUFFER_NV 0x8F37 +typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#endif +#endif /* GL_NV_copy_buffer */ + +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +#endif /* GL_NV_coverage_sample */ + +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif /* GL_NV_depth_nonlinear */ + +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_NV_draw_buffers */ + +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#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 void *indices, GLsizei primcount); +#endif +#endif /* GL_NV_draw_instanced */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +typedef void (GL_APIENTRY *GLVULKANPROCNV)(void); +typedef void (GL_APIENTRYP PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +typedef GLVULKANPROCNV (GL_APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name); +typedef void (GL_APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GL_APICALL GLVULKANPROCNV GL_APIENTRY glGetVkProcAddrNV (const GLchar *name); +GL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_explicit_attrib_location +#define GL_NV_explicit_attrib_location 1 +#endif /* GL_NV_explicit_attrib_location */ + +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#endif /* GL_NV_fbo_color_attachments */ + +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition); +#endif +#endif /* GL_NV_fence */ + +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 +#define GL_FILL_RECTANGLE_NV 0x933C +#endif /* GL_NV_fill_rectangle */ + +#ifndef GL_NV_fragment_coverage_to_color +#define GL_NV_fragment_coverage_to_color 1 +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE +typedef void (GL_APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFragmentCoverageColorNV (GLuint color); +#endif +#endif /* GL_NV_fragment_coverage_to_color */ + +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 +#endif /* GL_NV_fragment_shader_interlock */ + +#ifndef GL_NV_framebuffer_blit +#define GL_NV_framebuffer_blit 1 +#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 +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_NV_framebuffer_blit */ + +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 +typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufsize, GLfloat *v); +typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v); +GL_APICALL void GL_APIENTRY glGetCoverageModulationTableNV (GLsizei bufsize, GLfloat *v); +GL_APICALL void GL_APIENTRY glCoverageModulationNV (GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample */ + +#ifndef GL_NV_generate_mipmap_sRGB +#define GL_NV_generate_mipmap_sRGB 1 +#endif /* GL_NV_generate_mipmap_sRGB */ + +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 +#endif /* GL_NV_geometry_shader_passthrough */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 +typedef khronos_int64_t GLint64EXT; +typedef khronos_uint64_t GLuint64EXT; +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +#define GL_PATCHES 0x000E +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_image_formats +#define GL_NV_image_formats 1 +#endif /* GL_NV_image_formats */ + +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); +#endif +#endif /* GL_NV_instanced_arrays */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_CONFORMANT_NV 0x9374 +typedef void (GL_APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params); +#endif +#endif /* GL_NV_internalformat_sample_query */ + +#ifndef GL_NV_non_square_matrices +#define GL_NV_non_square_matrices 1 +#define GL_FLOAT_MAT2x3_NV 0x8B65 +#define GL_FLOAT_MAT2x4_NV 0x8B66 +#define GL_FLOAT_MAT3x2_NV 0x8B67 +#define GL_FLOAT_MAT3x4_NV 0x8B68 +#define GL_FLOAT_MAT4x2_NV 0x8B69 +#define GL_FLOAT_MAT4x3_NV 0x8B6A +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_NV_non_square_matrices */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_FILE_NAME_NV 0x9074 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FILL_MASK_NV 0x9081 +#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_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_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_AFFINE_3D_NV 0x9094 +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_UTF8_NV 0x909A +#define GL_UTF16_NV 0x909B +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_SQUARE_NV 0x90A3 +#define GL_ROUND_NV 0x90A4 +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_BEVEL_NV 0x90A6 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_RECT_NV 0xF6 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_ARC_TO_NV 0xFE +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_BOLD_BIT_NV 0x01 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#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_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 +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_FRAGMENT_INPUT_NV 0x936D +typedef GLuint (GL_APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GL_APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (GL_APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (GL_APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (GL_APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (GL_APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GL_APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (GL_APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GL_APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (GL_APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (GL_APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (GL_APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (GL_APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range); +GL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GL_APICALL GLboolean GL_APIENTRY glIsPathNV (GLuint path); +GL_APICALL void GL_APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GL_APICALL void GL_APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GL_APICALL void GL_APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GL_APICALL void GL_APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GL_APICALL void GL_APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GL_APICALL void GL_APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GL_APICALL void GL_APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GL_APICALL void GL_APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathCoverDepthFuncNV (GLenum func); +GL_APICALL void GL_APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GL_APICALL void GL_APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GL_APICALL void GL_APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GL_APICALL void GL_APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GL_APICALL void GL_APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GL_APICALL GLboolean GL_APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GL_APICALL GLboolean GL_APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GL_APICALL GLfloat GL_APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GL_APICALL GLboolean GL_APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GL_APICALL void GL_APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params); +#endif +#endif /* GL_NV_path_rendering */ + +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 +#define GL_SHARED_EDGE_NV 0xC0 +#endif /* GL_NV_path_rendering_shared_edge */ + +#ifndef GL_NV_polygon_mode +#define GL_NV_polygon_mode 1 +#define GL_POLYGON_MODE_NV 0x0B40 +#define GL_POLYGON_OFFSET_POINT_NV 0x2A01 +#define GL_POLYGON_OFFSET_LINE_NV 0x2A02 +#define GL_POINT_NV 0x1B00 +#define GL_LINE_NV 0x1B01 +#define GL_FILL_NV 0x1B02 +typedef void (GL_APIENTRYP PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPolygonModeNV (GLenum face, GLenum mode); +#endif +#endif /* GL_NV_polygon_mode */ + +#ifndef GL_NV_read_buffer +#define GL_NV_read_buffer 1 +#define GL_READ_BUFFER_NV 0x0C02 +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +#endif /* GL_NV_read_buffer */ + +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif /* GL_NV_read_buffer_front */ + +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif /* GL_NV_read_depth */ + +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif /* GL_NV_read_depth_stencil */ + +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif /* GL_NV_read_stencil */ + +#ifndef GL_NV_sRGB_formats +#define GL_NV_sRGB_formats 1 +#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_sRGB_formats */ + +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glResolveDepthValuesNV (void); +#endif +#endif /* GL_NV_sample_locations */ + +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 +#endif /* GL_NV_sample_mask_override_coverage */ + +#ifndef GL_NV_shader_atomic_fp16_vector +#define GL_NV_shader_atomic_fp16_vector 1 +#endif /* GL_NV_shader_atomic_fp16_vector */ + +#ifndef GL_NV_shader_noperspective_interpolation +#define GL_NV_shader_noperspective_interpolation 1 +#endif /* GL_NV_shader_noperspective_interpolation */ + +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 +#endif /* GL_NV_shadow_samplers_array */ + +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 +#endif /* GL_NV_shadow_samplers_cube */ + +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D +#endif /* GL_NV_texture_border_clamp */ + +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif /* GL_NV_texture_compression_s3tc_update */ + +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif /* GL_NV_texture_npot_2D_mipmap */ + +#ifndef GL_NV_viewport_array +#define GL_NV_viewport_array 1 +#define GL_MAX_VIEWPORTS_NV 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLENABLEINVPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEINVPROC) (GLenum target, GLuint index); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDINVPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvNV (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvNV (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvNV (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vNV (GLenum target, GLuint index, GLfloat *data); +GL_APICALL void GL_APIENTRY glEnableiNV (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiNV (GLenum target, GLuint index); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index); +#endif +#endif /* GL_NV_viewport_array */ + +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 +#endif /* GL_NV_viewport_array2 */ + +#ifndef GL_NV_viewport_swizzle +#define GL_NV_viewport_swizzle 1 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B +typedef void (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#endif +#endif /* GL_NV_viewport_swizzle */ + +#ifndef GL_OVR_multiview +#define GL_OVR_multiview 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_MAX_VIEWS_OVR 0x9631 +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview */ + +#ifndef GL_OVR_multiview2 +#define GL_OVR_multiview2 1 +#endif /* GL_OVR_multiview2 */ + +#ifndef GL_OVR_multiview_multisampled_render_to_texture +#define GL_OVR_multiview_multisampled_render_to_texture 1 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview_multisampled_render_to_texture */ + +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +#endif /* GL_QCOM_alpha_test */ + +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#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_binning_control */ + +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +#endif /* GL_QCOM_driver_control */ + +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params); +#endif +#endif /* GL_QCOM_extended_get */ + +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +#endif /* GL_QCOM_extended_get2 */ + +#ifndef GL_QCOM_framebuffer_foveated +#define GL_QCOM_framebuffer_foveated 1 +#define GL_FOVEATION_ENABLE_BIT_QCOM 0x00000001 +#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFoveationConfigQCOM (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +GL_APICALL void GL_APIENTRY glFramebufferFoveationParametersQCOM (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_framebuffer_foveated */ + +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif /* GL_QCOM_perfmon_global_mode */ + +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +#endif /* GL_QCOM_tiled_rendering */ + +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif /* GL_QCOM_writeonly_rendering */ + +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif /* GL_VIV_shader_binary */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglext.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglext.h new file mode 100644 index 000000000..b8b0c31f3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglext.h @@ -0,0 +1,12263 @@ +#ifndef __glext_h_ +#define __glext_h_ 1 + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2013-2017 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 +** without limitation the rights to use, copy, modify, merge, publish, +** 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. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ +/* +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include <windows.h> +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20170325 + +/* Generated C header for: + * API: gl + * Profile: compatibility + * Versions considered: .* + * Versions emitted: 1\.[2-9]|[234]\.[0-9] + * Default extensions included: gl + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_RESCALE_NORMAL 0x803A +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *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 void *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *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 void *pixels); +GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_VERSION_1_2 */ + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +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 void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *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 void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTexture (GLenum texture); +GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); +GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img); +GLAPI void APIENTRY glClientActiveTexture (GLenum texture); +GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s); +GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s); +GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s); +GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s); +GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t); +GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t); +GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t); +GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t); +GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r); +GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m); +GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m); +GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m); +GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m); +#endif +#endif /* GL_VERSION_1_3 */ + +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_GENERATE_MIPMAP 0x8191 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_FOG_COORDINATE_SOURCE 0x8450 +#define GL_FOG_COORDINATE 0x8451 +#define GL_FRAGMENT_DEPTH 0x8452 +#define GL_CURRENT_FOG_COORDINATE 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 +#define GL_FOG_COORDINATE_ARRAY 0x8457 +#define GL_COLOR_SUM 0x8458 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D +#define GL_SECONDARY_COLOR_ARRAY 0x845E +#define GL_TEXTURE_FILTER_CONTROL 0x8500 +#define GL_DEPTH_TEXTURE_MODE 0x884B +#define GL_COMPARE_R_TO_TEXTURE 0x884E +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +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 void *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); +typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +#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 drawcount); +GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *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); +GLAPI void APIENTRY glFogCoordf (GLfloat coord); +GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord); +GLAPI void APIENTRY glFogCoordd (GLdouble coord); +GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord); +GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue); +GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v); +GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue); +GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v); +GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue); +GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v); +GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue); +GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v); +GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue); +GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v); +GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue); +GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v); +GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue); +GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v); +GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue); +GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v); +GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y); +GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v); +GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y); +GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v); +GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y); +GLAPI void APIENTRY glWindowPos2iv (const GLint *v); +GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y); +GLAPI void APIENTRY glWindowPos2sv (const GLshort *v); +GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v); +GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v); +GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z); +GLAPI void APIENTRY glWindowPos3iv (const GLint *v); +GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glWindowPos3sv (const GLshort *v); +GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void APIENTRY glBlendEquation (GLenum mode); +#endif +#endif /* GL_VERSION_1_4 */ + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 +#include <stddef.h> +typedef ptrdiff_t GLsizeiptr; +typedef ptrdiff_t GLintptr; +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#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 +#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E +#define GL_FOG_COORD_SRC 0x8450 +#define GL_FOG_COORD 0x8451 +#define GL_CURRENT_FOG_COORD 0x8453 +#define GL_FOG_COORD_ARRAY_TYPE 0x8454 +#define GL_FOG_COORD_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORD_ARRAY_POINTER 0x8456 +#define GL_FOG_COORD_ARRAY 0x8457 +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D +#define GL_SRC0_RGB 0x8580 +#define GL_SRC1_RGB 0x8581 +#define GL_SRC2_RGB 0x8582 +#define GL_SRC0_ALPHA 0x8588 +#define GL_SRC2_ALPHA 0x858A +typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data); +typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids); +GLAPI GLboolean APIENTRY glIsQuery (GLuint id); +GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id); +GLAPI void APIENTRY glEndQuery (GLenum target); +GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params); +GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer); +GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data); +GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access); +GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target); +GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_VERSION_1_5 */ + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 +typedef char GLchar; +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_POINT_SPRITE 0x8861 +#define GL_COORD_REPLACE 0x8862 +#define GL_MAX_TEXTURE_COORDS 0x8871 +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs); +GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader); +GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); +GLAPI void APIENTRY glCompileShader (GLuint shader); +GLAPI GLuint APIENTRY glCreateProgram (void); +GLAPI GLuint APIENTRY glCreateShader (GLenum type); +GLAPI void APIENTRY glDeleteProgram (GLuint program); +GLAPI void APIENTRY glDeleteShader (GLuint shader); +GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader); +GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index); +GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index); +GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); +GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); +GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); +GLAPI GLboolean APIENTRY glIsProgram (GLuint program); +GLAPI GLboolean APIENTRY glIsShader (GLuint shader); +GLAPI void APIENTRY glLinkProgram (GLuint program); +GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GLAPI void APIENTRY glUseProgram (GLuint program); +GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0); +GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glUniform1i (GLint location, GLint v0); +GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glValidateProgram (GLuint program); +GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); +GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x); +GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +#endif +#endif /* GL_VERSION_2_0 */ + +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 1 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F +#define GL_SLUMINANCE_ALPHA 0x8C44 +#define GL_SLUMINANCE8_ALPHA8 0x8C45 +#define GL_SLUMINANCE 0x8C46 +#define GL_SLUMINANCE8 0x8C47 +#define GL_COMPRESSED_SLUMINANCE 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_VERSION_2_1 */ + +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 +typedef unsigned short GLhalf; +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_INDEX 0x8222 +#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_CLAMP_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_ALPHA_INTEGER 0x8D97 +typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data); +typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data); +typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value); +typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value); +typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value); +typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array); +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data); +GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data); +GLAPI void APIENTRY glEnablei (GLenum target, GLuint index); +GLAPI void APIENTRY glDisablei (GLenum target, GLuint index); +GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index); +GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode); +GLAPI void APIENTRY glEndTransformFeedback (void); +GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp); +GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode); +GLAPI void APIENTRY glEndConditionalRender (void); +GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params); +GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x); +GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y); +GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z); +GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x); +GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y); +GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v); +GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params); +GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name); +GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name); +GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0); +GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index); +GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); +GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); +GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer); +GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); +GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); +GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target); +GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glGenerateMipmap (GLenum target); +GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glBindVertexArray (GLuint array); +GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays); +GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays); +GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array); +#endif +#endif /* GL_VERSION_3_0 */ + +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFFu +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); +typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index); +GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); +GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName); +GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +#endif +#endif /* GL_VERSION_3_1 */ + +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 +typedef struct __GLsync *GLsync; +#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 +typedef uint64_t GLuint64; +typedef int64_t GLint64; +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_DEPTH_CLAMP 0x864F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 +typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode); +typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync); +typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync); +typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data); +typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +GLAPI void APIENTRY glProvokingVertex (GLenum mode); +GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags); +GLAPI GLboolean APIENTRY glIsSync (GLsync sync); +GLAPI void APIENTRY glDeleteSync (GLsync sync); +GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data); +GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data); +GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val); +GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask); +#endif +#endif /* GL_VERSION_3_2 */ + +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_SRC1_COLOR 0x88F9 +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 +#define GL_INT_2_10_10_10_REV 0x8D9F +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers); +typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers); +typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler); +typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers); +GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers); +GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler); +GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler); +GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param); +GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param); +GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param); +GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param); +GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param); +GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param); +GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params); +GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target); +GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params); +GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor); +GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value); +GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value); +GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value); +GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value); +GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value); +GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value); +GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color); +GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color); +GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color); +GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color); +GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color); +GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color); +#endif +#endif /* GL_VERSION_3_3 */ + +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_PATCHES 0x000E +#define GL_PATCH_VERTICES 0x8E72 +#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 +#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 +#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_GEN_MODE 0x8E76 +#define GL_TESS_GEN_SPACING 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 +#define GL_TESS_GEN_POINT_MODE 0x8E79 +#define GL_ISOLINES 0x8E7A +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value); +typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect); +typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); +typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params); +typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name); +typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices); +typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values); +typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values); +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids); +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); +typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMinSampleShading (GLfloat value); +GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode); +GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst); +GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect); +GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect); +GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x); +GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y); +GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params); +GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name); +GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name); +GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices); +GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params); +GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values); +GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value); +GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values); +GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id); +GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids); +GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids); +GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id); +GLAPI void APIENTRY glPauseTransformFeedback (void); +GLAPI void APIENTRY glResumeTransformFeedback (void); +GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id); +GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream); +GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id); +GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index); +GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params); +#endif +#endif /* GL_VERSION_4_0 */ + +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 +#define GL_FIXED 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#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 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_RGB565 0x8D62 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_MAX_VIEWPORTS 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_UNDEFINED_VERTEX 0x8260 +typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); +typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings); +typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines); +typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f); +typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReleaseShaderCompiler (void); +GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); +GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f); +GLAPI void APIENTRY glClearDepthf (GLfloat d); +GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value); +GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program); +GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program); +GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings); +GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline); +GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines); +GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines); +GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline); +GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params); +GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0); +GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0); +GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0); +GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0); +GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1); +GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline); +GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v); +GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v); +GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f); +GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data); +GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data); +#endif +#endif /* GL_VERSION_4_1 */ + +#ifndef GL_VERSION_4_2 +#define GL_VERSION_4_2 1 +#define GL_COPY_READ_BUFFER_BINDING 0x8F36 +#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 +#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 +#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 +#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 +#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 +#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A +#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B +#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C +#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D +#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 +#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 +#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB +#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 +#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_MAX_IMAGE_SAMPLES 0x906D +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +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); +typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); +typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +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); +GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); +GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers); +GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount); +GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +#endif +#endif /* GL_VERSION_4_2 */ + +#ifndef GL_VERSION_4_3 +#define GL_VERSION_4_3 1 +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E +#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 +#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_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_COMPUTE_WORK_GROUP_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 +#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_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_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_MAX_LABEL_LENGTH 0x82E8 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#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 +#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_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 +#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 +#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 +#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 0x00002000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#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 +#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 +#define GL_VERTEX_BINDING_BUFFER 0x8F4F +#define GL_DISPLAY_LIST 0x82E7 +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 PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); +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); +typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); +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); +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); +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); +typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +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 PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +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 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); +#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 glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect); +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); +GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); +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); +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); +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); +GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +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 glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +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 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 +#endif /* GL_VERSION_4_3 */ + +#ifndef GL_VERSION_4_4 +#define GL_VERSION_4_4 1 +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A +#define GL_MAP_PERSISTENT_BIT 0x0040 +#define GL_MAP_COHERENT_BIT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_LOCATION_COMPONENT 0x934A +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 +typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers); +typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers); +typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers); +GLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +GLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures); +GLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers); +GLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures); +GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +#endif +#endif /* GL_VERSION_4_4 */ + +#ifndef GL_VERSION_4_5 +#define GL_VERSION_4_5 1 +#define GL_CONTEXT_LOST 0x0507 +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_ZERO_TO_ONE 0x935F +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_DEPTH_MODE 0x935D +#define GL_QUERY_WAIT_INVERTED 0x8E17 +#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 +#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 +#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A +#define GL_MAX_CULL_DISTANCES 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA +#define GL_TEXTURE_TARGET 0x1006 +#define GL_QUERY_TARGET 0x82EA +#define GL_GUILTY_CONTEXT_RESET 0x8253 +#define GL_INNOCENT_CONTEXT_RESET 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET 0x8252 +#define GL_NO_RESET_NOTIFICATION 0x8261 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004 +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC +typedef void (APIENTRYP PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth); +typedef void (APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint *param); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param); +typedef void (APIENTRYP PFNGLCREATEBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access); +typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void **params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +typedef void (APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum buf); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum src); +typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); +typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint *textures); +typedef void (APIENTRYP PFNGLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat *param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture); +typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels); +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index); +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index); +typedef void (APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); +typedef void (APIENTRYP PFNGLCREATESAMPLERSPROC) (GLsizei n, GLuint *samplers); +typedef void (APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines); +typedef void (APIENTRYP PFNGLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +typedef void (APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers); +typedef void (APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC) (void); +typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLsizei bufSize, void *pixels); +typedef void (APIENTRYP PFNGLGETNTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +typedef void (APIENTRYP PFNGLGETNUNIFORMDVPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +typedef void (APIENTRYP PFNGLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (APIENTRYP PFNGLGETNMAPDVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +typedef void (APIENTRYP PFNGLGETNMAPFVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +typedef void (APIENTRYP PFNGLGETNMAPIVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +typedef void (APIENTRYP PFNGLGETNPIXELMAPFVPROC) (GLenum map, GLsizei bufSize, GLfloat *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVPROC) (GLenum map, GLsizei bufSize, GLuint *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVPROC) (GLenum map, GLsizei bufSize, GLushort *values); +typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEPROC) (GLsizei bufSize, GLubyte *pattern); +typedef void (APIENTRYP PFNGLGETNCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +typedef void (APIENTRYP PFNGLGETNHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +typedef void (APIENTRYP PFNGLGETNMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +typedef void (APIENTRYP PFNGLTEXTUREBARRIERPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClipControl (GLenum origin, GLenum depth); +GLAPI void APIENTRY glCreateTransformFeedbacks (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glTransformFeedbackBufferBase (GLuint xfb, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackBufferRange (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glGetTransformFeedbackiv (GLuint xfb, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetTransformFeedbacki_v (GLuint xfb, GLenum pname, GLuint index, GLint *param); +GLAPI void APIENTRY glGetTransformFeedbacki64_v (GLuint xfb, GLenum pname, GLuint index, GLint64 *param); +GLAPI void APIENTRY glCreateBuffers (GLsizei n, GLuint *buffers); +GLAPI void APIENTRY glNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI void APIENTRY glNamedBufferData (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +GLAPI void APIENTRY glNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void APIENTRY glCopyNamedBufferSubData (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glClearNamedBufferData (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearNamedBufferSubData (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI void *APIENTRY glMapNamedBuffer (GLuint buffer, GLenum access); +GLAPI void *APIENTRY glMapNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI GLboolean APIENTRY glUnmapNamedBuffer (GLuint buffer); +GLAPI void APIENTRY glFlushMappedNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glGetNamedBufferParameteriv (GLuint buffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetNamedBufferParameteri64v (GLuint buffer, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glGetNamedBufferPointerv (GLuint buffer, GLenum pname, void **params); +GLAPI void APIENTRY glGetNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +GLAPI void APIENTRY glCreateFramebuffers (GLsizei n, GLuint *framebuffers); +GLAPI void APIENTRY glNamedFramebufferRenderbuffer (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glNamedFramebufferParameteri (GLuint framebuffer, GLenum pname, GLint param); +GLAPI void APIENTRY glNamedFramebufferTexture (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTextureLayer (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void APIENTRY glNamedFramebufferDrawBuffer (GLuint framebuffer, GLenum buf); +GLAPI void APIENTRY glNamedFramebufferDrawBuffers (GLuint framebuffer, GLsizei n, const GLenum *bufs); +GLAPI void APIENTRY glNamedFramebufferReadBuffer (GLuint framebuffer, GLenum src); +GLAPI void APIENTRY glInvalidateNamedFramebufferData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); +GLAPI void APIENTRY glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI void APIENTRY glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI void APIENTRY glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI void APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI void APIENTRY glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI GLenum APIENTRY glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target); +GLAPI void APIENTRY glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameteriv (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glCreateRenderbuffers (GLsizei n, GLuint *renderbuffers); +GLAPI void APIENTRY glNamedRenderbufferStorage (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisample (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetNamedRenderbufferParameteriv (GLuint renderbuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glCreateTextures (GLenum target, GLsizei n, GLuint *textures); +GLAPI void APIENTRY glTextureBuffer (GLuint texture, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glTextureBufferRange (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glTextureStorage1D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTextureStorage2D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTextureStorage3D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glTextureStorage2DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTextureStorage3DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCompressedTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCopyTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glCopyTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTextureParameterf (GLuint texture, GLenum pname, GLfloat param); +GLAPI void APIENTRY glTextureParameterfv (GLuint texture, GLenum pname, const GLfloat *param); +GLAPI void APIENTRY glTextureParameteri (GLuint texture, GLenum pname, GLint param); +GLAPI void APIENTRY glTextureParameterIiv (GLuint texture, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTextureParameterIuiv (GLuint texture, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glTextureParameteriv (GLuint texture, GLenum pname, const GLint *param); +GLAPI void APIENTRY glGenerateTextureMipmap (GLuint texture); +GLAPI void APIENTRY glBindTextureUnit (GLuint unit, GLuint texture); +GLAPI void APIENTRY glGetTextureImage (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +GLAPI void APIENTRY glGetCompressedTextureImage (GLuint texture, GLint level, GLsizei bufSize, void *pixels); +GLAPI void APIENTRY glGetTextureLevelParameterfv (GLuint texture, GLint level, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTextureLevelParameteriv (GLuint texture, GLint level, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTextureParameterfv (GLuint texture, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTextureParameterIiv (GLuint texture, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTextureParameterIuiv (GLuint texture, GLenum pname, GLuint *params); +GLAPI void APIENTRY glGetTextureParameteriv (GLuint texture, GLenum pname, GLint *params); +GLAPI void APIENTRY glCreateVertexArrays (GLsizei n, GLuint *arrays); +GLAPI void APIENTRY glDisableVertexArrayAttrib (GLuint vaobj, GLuint index); +GLAPI void APIENTRY glEnableVertexArrayAttrib (GLuint vaobj, GLuint index); +GLAPI void APIENTRY glVertexArrayElementBuffer (GLuint vaobj, GLuint buffer); +GLAPI void APIENTRY glVertexArrayVertexBuffer (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI void APIENTRY glVertexArrayVertexBuffers (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +GLAPI void APIENTRY glVertexArrayAttribBinding (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +GLAPI void APIENTRY glVertexArrayAttribFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayAttribIFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayAttribLFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor); +GLAPI void APIENTRY glGetVertexArrayiv (GLuint vaobj, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetVertexArrayIndexediv (GLuint vaobj, GLuint index, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetVertexArrayIndexed64iv (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); +GLAPI void APIENTRY glCreateSamplers (GLsizei n, GLuint *samplers); +GLAPI void APIENTRY glCreateProgramPipelines (GLsizei n, GLuint *pipelines); +GLAPI void APIENTRY glCreateQueries (GLenum target, GLsizei n, GLuint *ids); +GLAPI void APIENTRY glGetQueryBufferObjecti64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI void APIENTRY glGetQueryBufferObjectiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI void APIENTRY glGetQueryBufferObjectui64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI void APIENTRY glGetQueryBufferObjectuiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI void APIENTRY glMemoryBarrierByRegion (GLbitfield barriers); +GLAPI void APIENTRY glGetTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +GLAPI void APIENTRY glGetCompressedTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); +GLAPI GLenum APIENTRY glGetGraphicsResetStatus (void); +GLAPI void APIENTRY glGetnCompressedTexImage (GLenum target, GLint lod, GLsizei bufSize, void *pixels); +GLAPI void APIENTRY glGetnTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +GLAPI void APIENTRY glGetnUniformdv (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +GLAPI void APIENTRY glGetnUniformfv (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI void APIENTRY glGetnUniformiv (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI void APIENTRY glGetnUniformuiv (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI void APIENTRY glReadnPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI void APIENTRY glGetnMapdv (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +GLAPI void APIENTRY glGetnMapfv (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +GLAPI void APIENTRY glGetnMapiv (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +GLAPI void APIENTRY glGetnPixelMapfv (GLenum map, GLsizei bufSize, GLfloat *values); +GLAPI void APIENTRY glGetnPixelMapuiv (GLenum map, GLsizei bufSize, GLuint *values); +GLAPI void APIENTRY glGetnPixelMapusv (GLenum map, GLsizei bufSize, GLushort *values); +GLAPI void APIENTRY glGetnPolygonStipple (GLsizei bufSize, GLubyte *pattern); +GLAPI void APIENTRY glGetnColorTable (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +GLAPI void APIENTRY glGetnConvolutionFilter (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +GLAPI void APIENTRY glGetnSeparableFilter (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +GLAPI void APIENTRY glGetnHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI void APIENTRY glGetnMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI void APIENTRY glTextureBarrier (void); +#endif +#endif /* GL_VERSION_4_5 */ + +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 1 +#endif /* GL_ARB_ES2_compatibility */ + +#ifndef GL_ARB_ES3_1_compatibility +#define GL_ARB_ES3_1_compatibility 1 +#endif /* GL_ARB_ES3_1_compatibility */ + +#ifndef GL_ARB_ES3_2_compatibility +#define GL_ARB_ES3_2_compatibility 1 +#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE +#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381 +#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382 +typedef void (APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPrimitiveBoundingBoxARB (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_ARB_ES3_2_compatibility */ + +#ifndef GL_ARB_ES3_compatibility +#define GL_ARB_ES3_compatibility 1 +#endif /* GL_ARB_ES3_compatibility */ + +#ifndef GL_ARB_arrays_of_arrays +#define GL_ARB_arrays_of_arrays 1 +#endif /* GL_ARB_arrays_of_arrays */ + +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 +#endif /* GL_ARB_base_instance */ + +#ifndef GL_ARB_bindless_texture +#define GL_ARB_bindless_texture 1 +typedef uint64_t GLuint64EXT; +#define GL_UNSIGNED_INT64_ARB 0x140F +typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture); +typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture); +GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler); +GLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle); +GLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle); +GLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access); +GLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle); +GLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value); +GLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value); +GLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle); +GLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle); +GLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x); +GLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params); +#endif +#endif /* GL_ARB_bindless_texture */ + +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 +#endif /* GL_ARB_blend_func_extended */ + +#ifndef GL_ARB_buffer_storage +#define GL_ARB_buffer_storage 1 +#endif /* GL_ARB_buffer_storage */ + +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 +struct _cl_context; +struct _cl_event; +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 +typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags); +#endif +#endif /* GL_ARB_cl_event */ + +#ifndef GL_ARB_clear_buffer_object +#define GL_ARB_clear_buffer_object 1 +#endif /* GL_ARB_clear_buffer_object */ + +#ifndef GL_ARB_clear_texture +#define GL_ARB_clear_texture 1 +#endif /* GL_ARB_clear_texture */ + +#ifndef GL_ARB_clip_control +#define GL_ARB_clip_control 1 +#endif /* GL_ARB_clip_control */ + +#ifndef GL_ARB_color_buffer_float +#define GL_ARB_color_buffer_float 1 +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_FIXED_ONLY_ARB 0x891D +typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp); +#endif +#endif /* GL_ARB_color_buffer_float */ + +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 +#endif /* GL_ARB_compatibility */ + +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 1 +#endif /* GL_ARB_compressed_texture_pixel_storage */ + +#ifndef GL_ARB_compute_shader +#define GL_ARB_compute_shader 1 +#endif /* GL_ARB_compute_shader */ + +#ifndef GL_ARB_compute_variable_group_size +#define GL_ARB_compute_variable_group_size 1 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); +#endif +#endif /* GL_ARB_compute_variable_group_size */ + +#ifndef GL_ARB_conditional_render_inverted +#define GL_ARB_conditional_render_inverted 1 +#endif /* GL_ARB_conditional_render_inverted */ + +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 +#endif /* GL_ARB_conservative_depth */ + +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 +#endif /* GL_ARB_copy_buffer */ + +#ifndef GL_ARB_copy_image +#define GL_ARB_copy_image 1 +#endif /* GL_ARB_copy_image */ + +#ifndef GL_ARB_cull_distance +#define GL_ARB_cull_distance 1 +#endif /* GL_ARB_cull_distance */ + +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 +#define GL_DEBUG_SOURCE_API_ARB 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A +#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B +#define GL_DEBUG_TYPE_ERROR_ARB 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 +#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 +#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +#endif +#endif /* GL_ARB_debug_output */ + +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 +#endif /* GL_ARB_depth_buffer_float */ + +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 +#endif /* GL_ARB_depth_clamp */ + +#ifndef GL_ARB_depth_texture +#define GL_ARB_depth_texture 1 +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#endif /* GL_ARB_depth_texture */ + +#ifndef GL_ARB_derivative_control +#define GL_ARB_derivative_control 1 +#endif /* GL_ARB_derivative_control */ + +#ifndef GL_ARB_direct_state_access +#define GL_ARB_direct_state_access 1 +#endif /* GL_ARB_direct_state_access */ + +#ifndef GL_ARB_draw_buffers +#define GL_ARB_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER15_ARB 0x8834 +typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_ARB_draw_buffers */ + +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 +typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode); +GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst); +GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif +#endif /* GL_ARB_draw_buffers_blend */ + +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 +#endif /* GL_ARB_draw_elements_base_vertex */ + +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 +#endif /* GL_ARB_draw_indirect */ + +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_ARB_draw_instanced */ + +#ifndef GL_ARB_enhanced_layouts +#define GL_ARB_enhanced_layouts 1 +#endif /* GL_ARB_enhanced_layouts */ + +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 +#endif /* GL_ARB_explicit_attrib_location */ + +#ifndef GL_ARB_explicit_uniform_location +#define GL_ARB_explicit_uniform_location 1 +#endif /* GL_ARB_explicit_uniform_location */ + +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 +#endif /* GL_ARB_fragment_coord_conventions */ + +#ifndef GL_ARB_fragment_layer_viewport +#define GL_ARB_fragment_layer_viewport 1 +#endif /* GL_ARB_fragment_layer_viewport */ + +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 +#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF +typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string); +typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string); +GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program); +GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs); +GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs); +GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params); +GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params); +GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params); +GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params); +GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, void *string); +GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program); +#endif +#endif /* GL_ARB_fragment_program */ + +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 +#endif /* GL_ARB_fragment_program_shadow */ + +#ifndef GL_ARB_fragment_shader +#define GL_ARB_fragment_shader 1 +#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B +#endif /* GL_ARB_fragment_shader */ + +#ifndef GL_ARB_fragment_shader_interlock +#define GL_ARB_fragment_shader_interlock 1 +#endif /* GL_ARB_fragment_shader_interlock */ + +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_ARB_framebuffer_no_attachments 1 +#endif /* GL_ARB_framebuffer_no_attachments */ + +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 +#endif /* GL_ARB_framebuffer_object */ + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 +#endif /* GL_ARB_framebuffer_sRGB */ + +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 +#define GL_LINES_ADJACENCY_ARB 0x000A +#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B +#define GL_TRIANGLES_ADJACENCY_ARB 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 +#define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value); +GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif +#endif /* GL_ARB_geometry_shader4 */ + +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 +#endif /* GL_ARB_get_program_binary */ + +#ifndef GL_ARB_get_texture_sub_image +#define GL_ARB_get_texture_sub_image 1 +#endif /* GL_ARB_get_texture_sub_image */ + +#ifndef GL_ARB_gl_spirv +#define GL_ARB_gl_spirv 1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551 +#define GL_SPIR_V_BINARY_ARB 0x9552 +typedef void (APIENTRYP PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpecializeShaderARB (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +#endif +#endif /* GL_ARB_gl_spirv */ + +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 +#endif /* GL_ARB_gpu_shader5 */ + +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 +#endif /* GL_ARB_gpu_shader_fp64 */ + +#ifndef GL_ARB_gpu_shader_int64 +#define GL_ARB_gpu_shader_int64 1 +#define GL_INT64_ARB 0x140E +#define GL_INT64_VEC2_ARB 0x8FE9 +#define GL_INT64_VEC3_ARB 0x8FEA +#define GL_INT64_VEC4_ARB 0x8FEB +#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 +typedef void (APIENTRYP PFNGLUNIFORM1I64ARBPROC) (GLint location, GLint64 x); +typedef void (APIENTRYP PFNGLUNIFORM2I64ARBPROC) (GLint location, GLint64 x, GLint64 y); +typedef void (APIENTRYP PFNGLUNIFORM3I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z); +typedef void (APIENTRYP PFNGLUNIFORM4I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +typedef void (APIENTRYP PFNGLUNIFORM1I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM2I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM3I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM4I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM1UI64ARBPROC) (GLint location, GLuint64 x); +typedef void (APIENTRYP PFNGLUNIFORM2UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y); +typedef void (APIENTRYP PFNGLUNIFORM3UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +typedef void (APIENTRYP PFNGLUNIFORM4UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +typedef void (APIENTRYP PFNGLUNIFORM1UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM2UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM3UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM4UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLGETUNIFORMI64VARBPROC) (GLuint program, GLint location, GLint64 *params); +typedef void (APIENTRYP PFNGLGETUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLuint64 *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint64 *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC) (GLuint program, GLint location, GLint64 x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC) (GLuint program, GLint location, GLuint64 x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniform1i64ARB (GLint location, GLint64 x); +GLAPI void APIENTRY glUniform2i64ARB (GLint location, GLint64 x, GLint64 y); +GLAPI void APIENTRY glUniform3i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z); +GLAPI void APIENTRY glUniform4i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +GLAPI void APIENTRY glUniform1i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform2i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform3i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform4i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform1ui64ARB (GLint location, GLuint64 x); +GLAPI void APIENTRY glUniform2ui64ARB (GLint location, GLuint64 x, GLuint64 y); +GLAPI void APIENTRY glUniform3ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +GLAPI void APIENTRY glUniform4ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +GLAPI void APIENTRY glUniform1ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glUniform2ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glUniform3ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glUniform4ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glGetUniformi64vARB (GLuint program, GLint location, GLint64 *params); +GLAPI void APIENTRY glGetUniformui64vARB (GLuint program, GLint location, GLuint64 *params); +GLAPI void APIENTRY glGetnUniformi64vARB (GLuint program, GLint location, GLsizei bufSize, GLint64 *params); +GLAPI void APIENTRY glGetnUniformui64vARB (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); +GLAPI void APIENTRY glProgramUniform1i64ARB (GLuint program, GLint location, GLint64 x); +GLAPI void APIENTRY glProgramUniform2i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y); +GLAPI void APIENTRY glProgramUniform3i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); +GLAPI void APIENTRY glProgramUniform4i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +GLAPI void APIENTRY glProgramUniform1i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform2i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform3i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform4i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform1ui64ARB (GLuint program, GLint location, GLuint64 x); +GLAPI void APIENTRY glProgramUniform2ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y); +GLAPI void APIENTRY glProgramUniform3ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +GLAPI void APIENTRY glProgramUniform4ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +GLAPI void APIENTRY glProgramUniform1ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniform2ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniform3ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniform4ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +#endif +#endif /* GL_ARB_gpu_shader_int64 */ + +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 +typedef unsigned short GLhalfARB; +#define GL_HALF_FLOAT_ARB 0x140B +#endif /* GL_ARB_half_float_pixel */ + +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 +#endif /* GL_ARB_half_float_vertex */ + +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_EQUATION 0x8009 +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, void *table); +GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params); +GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params); +GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image); +GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glResetHistogram (GLenum target); +GLAPI void APIENTRY glResetMinmax (GLenum target); +#endif +#endif /* GL_ARB_imaging */ + +#ifndef GL_ARB_indirect_parameters +#define GL_ARB_indirect_parameters 1 +#define GL_PARAMETER_BUFFER_ARB 0x80EE +#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_ARB_indirect_parameters */ + +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor); +#endif +#endif /* GL_ARB_instanced_arrays */ + +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 +#endif /* GL_ARB_internalformat_query */ + +#ifndef GL_ARB_internalformat_query2 +#define GL_ARB_internalformat_query2 1 +#define GL_SRGB_DECODE_ARB 0x8299 +#endif /* GL_ARB_internalformat_query2 */ + +#ifndef GL_ARB_invalidate_subdata +#define GL_ARB_invalidate_subdata 1 +#endif /* GL_ARB_invalidate_subdata */ + +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 +#endif /* GL_ARB_map_buffer_alignment */ + +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 +#endif /* GL_ARB_map_buffer_range */ + +#ifndef GL_ARB_matrix_palette +#define GL_ARB_matrix_palette 1 +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 +typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index); +GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices); +GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices); +GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices); +GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_ARB_matrix_palette */ + +#ifndef GL_ARB_multi_bind +#define GL_ARB_multi_bind 1 +#endif /* GL_ARB_multi_bind */ + +#ifndef GL_ARB_multi_draw_indirect +#define GL_ARB_multi_draw_indirect 1 +#endif /* GL_ARB_multi_draw_indirect */ + +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleCoverageARB (GLfloat value, GLboolean invert); +#endif +#endif /* GL_ARB_multisample */ + +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTextureARB (GLenum texture); +GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture); +GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s); +GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s); +GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s); +GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s); +GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t); +GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t); +GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t); +GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t); +GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r); +GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v); +#endif +#endif /* GL_ARB_multitexture */ + +#ifndef GL_ARB_occlusion_query +#define GL_ARB_occlusion_query 1 +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_SAMPLES_PASSED_ARB 0x8914 +typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids); +GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id); +GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id); +GLAPI void APIENTRY glEndQueryARB (GLenum target); +GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params); +#endif +#endif /* GL_ARB_occlusion_query */ + +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 +#endif /* GL_ARB_occlusion_query2 */ + +#ifndef GL_ARB_parallel_shader_compile +#define GL_ARB_parallel_shader_compile 1 +#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0 +#define GL_COMPLETION_STATUS_ARB 0x91B1 +typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMaxShaderCompilerThreadsARB (GLuint count); +#endif +#endif /* GL_ARB_parallel_shader_compile */ + +#ifndef GL_ARB_pipeline_statistics_query +#define GL_ARB_pipeline_statistics_query 1 +#define GL_VERTICES_SUBMITTED_ARB 0x82EE +#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7 +#endif /* GL_ARB_pipeline_statistics_query */ + +#ifndef GL_ARB_pixel_buffer_object +#define GL_ARB_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#endif /* GL_ARB_pixel_buffer_object */ + +#ifndef GL_ARB_point_parameters +#define GL_ARB_point_parameters 1 +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 +typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params); +#endif +#endif /* GL_ARB_point_parameters */ + +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 +#endif /* GL_ARB_point_sprite */ + +#ifndef GL_ARB_post_depth_coverage +#define GL_ARB_post_depth_coverage 1 +#endif /* GL_ARB_post_depth_coverage */ + +#ifndef GL_ARB_program_interface_query +#define GL_ARB_program_interface_query 1 +#endif /* GL_ARB_program_interface_query */ + +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 +#endif /* GL_ARB_provoking_vertex */ + +#ifndef GL_ARB_query_buffer_object +#define GL_ARB_query_buffer_object 1 +#endif /* GL_ARB_query_buffer_object */ + +#ifndef GL_ARB_robust_buffer_access_behavior +#define GL_ARB_robust_buffer_access_behavior 1 +#endif /* GL_ARB_robust_buffer_access_behavior */ + +#ifndef GL_ARB_robustness +#define GL_ARB_robustness 1 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); +typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img); +typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values); +typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern); +typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void); +GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); +GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img); +GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values); +GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values); +GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values); +GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern); +GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +#endif +#endif /* GL_ARB_robustness */ + +#ifndef GL_ARB_robustness_isolation +#define GL_ARB_robustness_isolation 1 +#endif /* GL_ARB_robustness_isolation */ + +#ifndef GL_ARB_sample_locations +#define GL_ARB_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340 +#define GL_SAMPLE_LOCATION_ARB 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343 +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferSampleLocationsfvARB (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvARB (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glEvaluateDepthValuesARB (void); +#endif +#endif /* GL_ARB_sample_locations */ + +#ifndef GL_ARB_sample_shading +#define GL_ARB_sample_shading 1 +#define GL_SAMPLE_SHADING_ARB 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value); +#endif +#endif /* GL_ARB_sample_shading */ + +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 +#endif /* GL_ARB_sampler_objects */ + +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 +#endif /* GL_ARB_seamless_cube_map */ + +#ifndef GL_ARB_seamless_cubemap_per_texture +#define GL_ARB_seamless_cubemap_per_texture 1 +#endif /* GL_ARB_seamless_cubemap_per_texture */ + +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 +#endif /* GL_ARB_separate_shader_objects */ + +#ifndef GL_ARB_shader_atomic_counter_ops +#define GL_ARB_shader_atomic_counter_ops 1 +#endif /* GL_ARB_shader_atomic_counter_ops */ + +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 +#endif /* GL_ARB_shader_atomic_counters */ + +#ifndef GL_ARB_shader_ballot +#define GL_ARB_shader_ballot 1 +#endif /* GL_ARB_shader_ballot */ + +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 +#endif /* GL_ARB_shader_bit_encoding */ + +#ifndef GL_ARB_shader_clock +#define GL_ARB_shader_clock 1 +#endif /* GL_ARB_shader_clock */ + +#ifndef GL_ARB_shader_draw_parameters +#define GL_ARB_shader_draw_parameters 1 +#endif /* GL_ARB_shader_draw_parameters */ + +#ifndef GL_ARB_shader_group_vote +#define GL_ARB_shader_group_vote 1 +#endif /* GL_ARB_shader_group_vote */ + +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 +#endif /* GL_ARB_shader_image_load_store */ + +#ifndef GL_ARB_shader_image_size +#define GL_ARB_shader_image_size 1 +#endif /* GL_ARB_shader_image_size */ + +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif +typedef char GLcharARB; +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 +#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 +typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname); +typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); +typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); +typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj); +GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname); +GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj); +GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType); +GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); +GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj); +GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void); +GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj); +GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj); +GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj); +GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj); +GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0); +GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0); +GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name); +GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params); +GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params); +GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +#endif +#endif /* GL_ARB_shader_objects */ + +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 +#endif /* GL_ARB_shader_precision */ + +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 +#endif /* GL_ARB_shader_stencil_export */ + +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_ARB_shader_storage_buffer_object 1 +#endif /* GL_ARB_shader_storage_buffer_object */ + +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 +#endif /* GL_ARB_shader_subroutine */ + +#ifndef GL_ARB_shader_texture_image_samples +#define GL_ARB_shader_texture_image_samples 1 +#endif /* GL_ARB_shader_texture_image_samples */ + +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 +#endif /* GL_ARB_shader_texture_lod */ + +#ifndef GL_ARB_shader_viewport_layer_array +#define GL_ARB_shader_viewport_layer_array 1 +#endif /* GL_ARB_shader_viewport_layer_array */ + +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#endif /* GL_ARB_shading_language_100 */ + +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 +#endif /* GL_ARB_shading_language_420pack */ + +#ifndef GL_ARB_shading_language_include +#define GL_ARB_shading_language_include 1 +#define GL_SHADER_INCLUDE_ARB 0x8DAE +#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 +#define GL_NAMED_STRING_TYPE_ARB 0x8DEA +typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); +typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length); +typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); +typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); +typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name); +GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length); +GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name); +GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); +GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params); +#endif +#endif /* GL_ARB_shading_language_include */ + +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 +#endif /* GL_ARB_shading_language_packing */ + +#ifndef GL_ARB_shadow +#define GL_ARB_shadow 1 +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#endif /* GL_ARB_shadow */ + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#endif /* GL_ARB_shadow_ambient */ + +#ifndef GL_ARB_sparse_buffer +#define GL_ARB_sparse_buffer 1 +#define GL_SPARSE_STORAGE_BIT_ARB 0x0400 +#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8 +typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTARBPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferPageCommitmentARB (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); +GLAPI void APIENTRY glNamedBufferPageCommitmentEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +GLAPI void APIENTRY glNamedBufferPageCommitmentARB (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +#endif +#endif /* GL_ARB_sparse_buffer */ + +#ifndef GL_ARB_sparse_texture +#define GL_ARB_sparse_texture 1 +#define GL_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 +typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#endif +#endif /* GL_ARB_sparse_texture */ + +#ifndef GL_ARB_sparse_texture2 +#define GL_ARB_sparse_texture2 1 +#endif /* GL_ARB_sparse_texture2 */ + +#ifndef GL_ARB_sparse_texture_clamp +#define GL_ARB_sparse_texture_clamp 1 +#endif /* GL_ARB_sparse_texture_clamp */ + +#ifndef GL_ARB_stencil_texturing +#define GL_ARB_stencil_texturing 1 +#endif /* GL_ARB_stencil_texturing */ + +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 +#endif /* GL_ARB_sync */ + +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 +#endif /* GL_ARB_tessellation_shader */ + +#ifndef GL_ARB_texture_barrier +#define GL_ARB_texture_barrier 1 +#endif /* GL_ARB_texture_barrier */ + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#endif /* GL_ARB_texture_border_clamp */ + +#ifndef GL_ARB_texture_buffer_object +#define GL_ARB_texture_buffer_object 1 +#define GL_TEXTURE_BUFFER_ARB 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E +typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer); +#endif +#endif /* GL_ARB_texture_buffer_object */ + +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 +#endif /* GL_ARB_texture_buffer_object_rgb32 */ + +#ifndef GL_ARB_texture_buffer_range +#define GL_ARB_texture_buffer_range 1 +#endif /* GL_ARB_texture_buffer_range */ + +#ifndef GL_ARB_texture_compression +#define GL_ARB_texture_compression 1 +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, void *img); +#endif +#endif /* GL_ARB_texture_compression */ + +#ifndef GL_ARB_texture_compression_bptc +#define GL_ARB_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F +#endif /* GL_ARB_texture_compression_bptc */ + +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 +#endif /* GL_ARB_texture_compression_rgtc */ + +#ifndef GL_ARB_texture_cube_map +#define GL_ARB_texture_cube_map 1 +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#endif /* GL_ARB_texture_cube_map */ + +#ifndef GL_ARB_texture_cube_map_array +#define GL_ARB_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F +#endif /* GL_ARB_texture_cube_map_array */ + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 +#endif /* GL_ARB_texture_env_add */ + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#endif /* GL_ARB_texture_env_combine */ + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 +#endif /* GL_ARB_texture_env_crossbar */ + +#ifndef GL_ARB_texture_env_dot3 +#define GL_ARB_texture_env_dot3 1 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGBA_ARB 0x86AF +#endif /* GL_ARB_texture_env_dot3 */ + +#ifndef GL_ARB_texture_filter_minmax +#define GL_ARB_texture_filter_minmax 1 +#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366 +#define GL_WEIGHTED_AVERAGE_ARB 0x9367 +#endif /* GL_ARB_texture_filter_minmax */ + +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGB32F_ARB 0x8815 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_RGBA16F_ARB 0x881A +#define GL_RGB16F_ARB 0x881B +#define GL_ALPHA16F_ARB 0x881C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#endif /* GL_ARB_texture_float */ + +#ifndef GL_ARB_texture_gather +#define GL_ARB_texture_gather 1 +#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 /* GL_ARB_texture_gather */ + +#ifndef GL_ARB_texture_mirror_clamp_to_edge +#define GL_ARB_texture_mirror_clamp_to_edge 1 +#endif /* GL_ARB_texture_mirror_clamp_to_edge */ + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#endif /* GL_ARB_texture_mirrored_repeat */ + +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 +#endif /* GL_ARB_texture_multisample */ + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 +#endif /* GL_ARB_texture_non_power_of_two */ + +#ifndef GL_ARB_texture_query_levels +#define GL_ARB_texture_query_levels 1 +#endif /* GL_ARB_texture_query_levels */ + +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 +#endif /* GL_ARB_texture_query_lod */ + +#ifndef GL_ARB_texture_rectangle +#define GL_ARB_texture_rectangle 1 +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#endif /* GL_ARB_texture_rectangle */ + +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 +#endif /* GL_ARB_texture_rg */ + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 +#endif /* GL_ARB_texture_rgb10_a2ui */ + +#ifndef GL_ARB_texture_stencil8 +#define GL_ARB_texture_stencil8 1 +#endif /* GL_ARB_texture_stencil8 */ + +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 +#endif /* GL_ARB_texture_storage */ + +#ifndef GL_ARB_texture_storage_multisample +#define GL_ARB_texture_storage_multisample 1 +#endif /* GL_ARB_texture_storage_multisample */ + +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 +#endif /* GL_ARB_texture_swizzle */ + +#ifndef GL_ARB_texture_view +#define GL_ARB_texture_view 1 +#endif /* GL_ARB_texture_view */ + +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 +#endif /* GL_ARB_timer_query */ + +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 +#endif /* GL_ARB_transform_feedback2 */ + +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 +#endif /* GL_ARB_transform_feedback3 */ + +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 +#endif /* GL_ARB_transform_feedback_instanced */ + +#ifndef GL_ARB_transform_feedback_overflow_query +#define GL_ARB_transform_feedback_overflow_query 1 +#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED +#endif /* GL_ARB_transform_feedback_overflow_query */ + +#ifndef GL_ARB_transpose_matrix +#define GL_ARB_transpose_matrix 1 +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m); +GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m); +GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m); +GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m); +#endif +#endif /* GL_ARB_transpose_matrix */ + +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 +#endif /* GL_ARB_uniform_buffer_object */ + +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 +#endif /* GL_ARB_vertex_array_bgra */ + +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 +#endif /* GL_ARB_vertex_array_object */ + +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 +#endif /* GL_ARB_vertex_attrib_64bit */ + +#ifndef GL_ARB_vertex_attrib_binding +#define GL_ARB_vertex_attrib_binding 1 +#endif /* GL_ARB_vertex_attrib_binding */ + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F +typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); +typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); +typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); +typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); +typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); +typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); +typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); +typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); +typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights); +GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights); +GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights); +GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights); +GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights); +GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights); +GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights); +GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights); +GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glVertexBlendARB (GLint count); +#endif +#endif /* GL_ARB_vertex_blend */ + +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 +typedef ptrdiff_t GLsizeiptrARB; +typedef ptrdiff_t GLintptrARB; +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_READ_WRITE_ARB 0x88BA +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_COPY_ARB 0x88EA +typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +typedef void *(APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer); +GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers); +GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers); +GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer); +GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); +GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +GLAPI void *APIENTRY glMapBufferARB (GLenum target, GLenum access); +GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target); +GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_ARB_vertex_buffer_object */ + +#ifndef GL_ARB_vertex_program +#define GL_ARB_vertex_program 1 +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void **pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x); +GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x); +GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index); +GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index); +GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, void **pointer); +#endif +#endif /* GL_ARB_vertex_program */ + +#ifndef GL_ARB_vertex_shader +#define GL_ARB_vertex_shader 1 +#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name); +GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name); +#endif +#endif /* GL_ARB_vertex_shader */ + +#ifndef GL_ARB_vertex_type_10f_11f_11f_rev +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 +#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */ + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 +#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ + +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 +#endif /* GL_ARB_viewport_array */ + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 +typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y); +GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v); +GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y); +GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v); +GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y); +GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v); +GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y); +GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v); +GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v); +GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v); +GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z); +GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v); +GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v); +#endif +#endif /* GL_ARB_window_pos */ + +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 +typedef void (APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendBarrierKHR (void); +#endif +#endif /* GL_KHR_blend_equation_advanced */ + +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#endif /* GL_KHR_blend_equation_advanced_coherent */ + +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +#endif /* GL_KHR_debug */ + +#ifndef GL_KHR_no_error +#define GL_KHR_no_error 1 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#endif /* GL_KHR_no_error */ + +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 +#endif /* GL_KHR_robust_buffer_access_behavior */ + +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 +#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 +#endif /* GL_KHR_robustness */ + +#ifndef GL_KHR_texture_compression_astc_hdr +#define GL_KHR_texture_compression_astc_hdr 1 +#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 /* GL_KHR_texture_compression_astc_hdr */ + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif /* GL_KHR_texture_compression_astc_ldr */ + +#ifndef GL_KHR_texture_compression_astc_sliced_3d +#define GL_KHR_texture_compression_astc_sliced_3d 1 +#endif /* GL_KHR_texture_compression_astc_sliced_3d */ + +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 +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, GLbyte y); +typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y, GLbyte z); +typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z, GLbyte w); +typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords); +#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, GLbyte y); +GLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y, GLbyte z); +GLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z, GLbyte w); +GLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords); +#endif +#endif /* GL_OES_byte_coordinates */ + +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#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 /* GL_OES_compressed_paletted_texture */ + +#ifndef GL_OES_fixed_point +#define GL_OES_fixed_point 1 +typedef GLint GLfixed; +#define GL_FIXED_OES 0x140C +typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); +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 PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); +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 PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +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 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 PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +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 PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, 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 PFNGLACCUMXOESPROC) (GLenum op, GLfixed value); +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 PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); +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 PFNGLEVALCOORD1XOESPROC) (GLfixed u); +typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); +typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, 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 PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component); +typedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component); +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 PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords); +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 PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); +typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +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 PFNGLTEXCOORD1XOESPROC) (GLfixed s); +typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); +typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x); +typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref); +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 glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f); +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 glGetFixedvOES (GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +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 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 glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz); +GLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +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 glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexEnvxvOES (GLenum target, 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 glAccumxOES (GLenum op, GLfixed value); +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 glColor3xOES (GLfixed red, GLfixed green, GLfixed blue); +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 glEvalCoord1xOES (GLfixed u); +GLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords); +GLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v); +GLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer); +GLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, 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 glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glIndexxOES (GLfixed component); +GLAPI void APIENTRY glIndexxvOES (const GLfixed *component); +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 glMultTransposeMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s); +GLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t); +GLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +GLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords); +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 glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities); +GLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y); +GLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +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 glTexCoord1xOES (GLfixed s); +GLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t); +GLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r); +GLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glVertex2xOES (GLfixed x); +GLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y); +GLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords); +#endif +#endif /* GL_OES_fixed_point */ + +#ifndef GL_OES_query_matrix +#define GL_OES_query_matrix 1 +typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLbitfield APIENTRY glQueryMatrixxOES (GLfixed *mantissa, GLint *exponent); +#endif +#endif /* GL_OES_query_matrix */ + +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#endif /* GL_OES_read_format */ + +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 +typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth); +typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); +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 PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); +typedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClearDepthfOES (GLclampf depth); +GLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation); +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 glGetClipPlanefOES (GLenum plane, GLfloat *equation); +GLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +#endif +#endif /* GL_OES_single_precision */ + +#ifndef GL_3DFX_multisample +#define GL_3DFX_multisample 1 +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#endif /* GL_3DFX_multisample */ + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 +typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask); +#endif +#endif /* GL_3DFX_tbuffer */ + +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_3DFX_texture_compression_FXT1 1 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#endif /* GL_3DFX_texture_compression_FXT1 */ + +#ifndef GL_AMD_blend_minmax_factor +#define GL_AMD_blend_minmax_factor 1 +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FACTOR_MAX_AMD 0x901D +#endif /* GL_AMD_blend_minmax_factor */ + +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 +#endif /* GL_AMD_conservative_depth */ + +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 +typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); +#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 +#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 +#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 +#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 +#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A +#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B +#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C +#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D +#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E +#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F +#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 +typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); +GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +#endif +#endif /* GL_AMD_debug_output */ + +#ifndef GL_AMD_depth_clamp_separate +#define GL_AMD_depth_clamp_separate 1 +#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E +#define GL_DEPTH_CLAMP_FAR_AMD 0x901F +#endif /* GL_AMD_depth_clamp_separate */ + +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 +typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst); +GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode); +GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +#endif +#endif /* GL_AMD_draw_buffers_blend */ + +#ifndef GL_AMD_framebuffer_sample_positions +#define GL_AMD_framebuffer_sample_positions 1 +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F +#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE +#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF +#define GL_ALL_PIXELS_AMD 0xFFFFFFFF +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC) (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC) (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferSamplePositionsfvAMD (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +GLAPI void APIENTRY glNamedFramebufferSamplePositionsfvAMD (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +GLAPI void APIENTRY glGetFramebufferParameterfvAMD (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +GLAPI void APIENTRY glGetNamedFramebufferParameterfvAMD (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +#endif +#endif /* GL_AMD_framebuffer_sample_positions */ + +#ifndef GL_AMD_gcn_shader +#define GL_AMD_gcn_shader 1 +#endif /* GL_AMD_gcn_shader */ + +#ifndef GL_AMD_gpu_shader_half_float +#define GL_AMD_gpu_shader_half_float 1 +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +#define GL_FLOAT16_MAT2_AMD 0x91C5 +#define GL_FLOAT16_MAT3_AMD 0x91C6 +#define GL_FLOAT16_MAT4_AMD 0x91C7 +#define GL_FLOAT16_MAT2x3_AMD 0x91C8 +#define GL_FLOAT16_MAT2x4_AMD 0x91C9 +#define GL_FLOAT16_MAT3x2_AMD 0x91CA +#define GL_FLOAT16_MAT3x4_AMD 0x91CB +#define GL_FLOAT16_MAT4x2_AMD 0x91CC +#define GL_FLOAT16_MAT4x3_AMD 0x91CD +#endif /* GL_AMD_gpu_shader_half_float */ + +#ifndef GL_AMD_gpu_shader_int64 +#define GL_AMD_gpu_shader_int64 1 +typedef int64_t GLint64EXT; +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 +typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params); +GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_AMD_gpu_shader_int64 */ + +#ifndef GL_AMD_interleaved_elements +#define GL_AMD_interleaved_elements 1 +#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 +#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 +typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param); +#endif +#endif /* GL_AMD_interleaved_elements */ + +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); +#endif +#endif /* GL_AMD_multi_draw_indirect */ + +#ifndef GL_AMD_name_gen_delete +#define GL_AMD_name_gen_delete 1 +#define GL_DATA_BUFFER_AMD 0x9151 +#define GL_PERFORMANCE_MONITOR_AMD 0x9152 +#define GL_QUERY_OBJECT_AMD 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 +#define GL_SAMPLER_OBJECT_AMD 0x9155 +typedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names); +typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names); +typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names); +GLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names); +GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name); +#endif +#endif /* GL_AMD_name_gen_delete */ + +#ifndef GL_AMD_occlusion_query_event +#define GL_AMD_occlusion_query_event 1 +#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 +#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 +#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 +#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF +typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param); +#endif +#endif /* GL_AMD_occlusion_query_event */ + +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_pinned_memory +#define GL_AMD_pinned_memory 1 +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 +#endif /* GL_AMD_pinned_memory */ + +#ifndef GL_AMD_query_buffer_object +#define GL_AMD_query_buffer_object 1 +#define GL_QUERY_BUFFER_AMD 0x9192 +#define GL_QUERY_BUFFER_BINDING_AMD 0x9193 +#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 +#endif /* GL_AMD_query_buffer_object */ + +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 +typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val); +#endif +#endif /* GL_AMD_sample_positions */ + +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 +#endif /* GL_AMD_seamless_cubemap_per_texture */ + +#ifndef GL_AMD_shader_atomic_counter_ops +#define GL_AMD_shader_atomic_counter_ops 1 +#endif /* GL_AMD_shader_atomic_counter_ops */ + +#ifndef GL_AMD_shader_ballot +#define GL_AMD_shader_ballot 1 +#endif /* GL_AMD_shader_ballot */ + +#ifndef GL_AMD_shader_explicit_vertex_parameter +#define GL_AMD_shader_explicit_vertex_parameter 1 +#endif /* GL_AMD_shader_explicit_vertex_parameter */ + +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 +#endif /* GL_AMD_shader_stencil_export */ + +#ifndef GL_AMD_shader_trinary_minmax +#define GL_AMD_shader_trinary_minmax 1 +#endif /* GL_AMD_shader_trinary_minmax */ + +#ifndef GL_AMD_sparse_texture +#define GL_AMD_sparse_texture 1 +#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 +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); +#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 +#endif /* GL_AMD_sparse_texture */ + +#ifndef GL_AMD_stencil_operation_extended +#define GL_AMD_stencil_operation_extended 1 +#define GL_SET_AMD 0x874A +#define GL_REPLACE_VALUE_AMD 0x874B +#define GL_STENCIL_OP_VALUE_AMD 0x874C +#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D +typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilOpValueAMD (GLenum face, GLuint value); +#endif +#endif /* GL_AMD_stencil_operation_extended */ + +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 +#endif /* GL_AMD_texture_texture4 */ + +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 +#endif /* GL_AMD_transform_feedback3_lines_triangles */ + +#ifndef GL_AMD_transform_feedback4 +#define GL_AMD_transform_feedback4 1 +#define GL_STREAM_RASTERIZATION_AMD 0x91A0 +#endif /* GL_AMD_transform_feedback4 */ + +#ifndef GL_AMD_vertex_shader_layer +#define GL_AMD_vertex_shader_layer 1 +#endif /* GL_AMD_vertex_shader_layer */ + +#ifndef GL_AMD_vertex_shader_tessellator +#define GL_AMD_vertex_shader_tessellator 1 +#define GL_SAMPLER_BUFFER_AMD 0x9001 +#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 +#define GL_TESSELLATION_MODE_AMD 0x9004 +#define GL_TESSELLATION_FACTOR_AMD 0x9005 +#define GL_DISCRETE_AMD 0x9006 +#define GL_CONTINUOUS_AMD 0x9007 +typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); +typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor); +GLAPI void APIENTRY glTessellationModeAMD (GLenum mode); +#endif +#endif /* GL_AMD_vertex_shader_tessellator */ + +#ifndef GL_AMD_vertex_shader_viewport_index +#define GL_AMD_vertex_shader_viewport_index 1 +#endif /* GL_AMD_vertex_shader_viewport_index */ + +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 +#endif /* GL_APPLE_aux_depth_stencil */ + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#endif /* GL_APPLE_client_storage */ + +#ifndef GL_APPLE_element_array +#define GL_APPLE_element_array 1 +#define GL_ELEMENT_ARRAY_APPLE 0x8A0C +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E +typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer); +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const void *pointer); +GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count); +GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +#endif +#endif /* GL_APPLE_element_array */ + +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B +typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences); +typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); +typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences); +GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences); +GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence); +GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence); +GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence); +GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence); +GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name); +GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name); +#endif +#endif /* GL_APPLE_fence */ + +#ifndef GL_APPLE_float_pixels +#define GL_APPLE_float_pixels 1 +#define GL_HALF_APPLE 0x140B +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F +#define GL_COLOR_FLOAT_APPLE 0x8A0F +#endif /* GL_APPLE_float_pixels */ + +#ifndef GL_APPLE_flush_buffer_range +#define GL_APPLE_flush_buffer_range 1 +#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 +typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_APPLE_flush_buffer_range */ + +#ifndef GL_APPLE_object_purgeable +#define GL_APPLE_object_purgeable 1 +#define GL_BUFFER_OBJECT_APPLE 0x85B3 +#define GL_RELEASED_APPLE 0x8A19 +#define GL_VOLATILE_APPLE 0x8A1A +#define GL_RETAINED_APPLE 0x8A1B +#define GL_UNDEFINED_APPLE 0x8A1C +#define GL_PURGEABLE_APPLE 0x8A1D +typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); +typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option); +GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option); +GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params); +#endif +#endif /* GL_APPLE_object_purgeable */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_RAW_422_APPLE 0x8A51 +#endif /* GL_APPLE_rgb_422 */ + +#ifndef GL_APPLE_row_bytes +#define GL_APPLE_row_bytes 1 +#define GL_PACK_ROW_BYTES_APPLE 0x8A15 +#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 +#endif /* GL_APPLE_row_bytes */ + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#endif /* GL_APPLE_specular_vector */ + +#ifndef GL_APPLE_texture_range +#define GL_APPLE_texture_range 1 +#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 +#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 +#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC +#define GL_STORAGE_PRIVATE_APPLE 0x85BD +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF +typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const void *pointer); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const void *pointer); +GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_APPLE_texture_range */ + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#endif /* GL_APPLE_transform_hint */ + +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array); +GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays); +GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays); +GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array); +#endif +#endif /* GL_APPLE_vertex_array_object */ + +#ifndef GL_APPLE_vertex_array_range +#define GL_APPLE_vertex_array_range 1 +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E +#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer); +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer); +typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, void *pointer); +GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer); +GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param); +#endif +#endif /* GL_APPLE_vertex_array_range */ + +#ifndef GL_APPLE_vertex_program_evaluators +#define GL_APPLE_vertex_program_evaluators 1 +#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 +#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 +#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 +#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 +#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 +#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 +#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 +#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 +#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 +#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname); +GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname); +GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname); +GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); +GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); +GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); +GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); +#endif +#endif /* GL_APPLE_vertex_program_evaluators */ + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 +#define GL_YCBCR_422_APPLE 0x85B9 +#endif /* GL_APPLE_ycbcr_422 */ + +#ifndef GL_ATI_draw_buffers +#define GL_ATI_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15_ATI 0x8834 +typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_ATI_draw_buffers */ + +#ifndef GL_ATI_element_array +#define GL_ATI_element_array 1 +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer); +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerATI (GLenum type, const void *pointer); +GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count); +GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count); +#endif +#endif /* GL_ATI_element_array */ + +#ifndef GL_ATI_envmap_bumpmap +#define GL_ATI_envmap_bumpmap 1 +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_DUDV_ATI 0x8779 +#define GL_DU8DV8_ATI 0x877A +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_TARGET_ATI 0x877C +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param); +GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param); +GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param); +GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param); +#endif +#endif /* GL_ATI_envmap_bumpmap */ + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_2_ATI 0x8923 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_2_ATI 0x8943 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_MOV_ATI 0x8961 +#define GL_ADD_ATI 0x8963 +#define GL_MUL_ATI 0x8964 +#define GL_SUB_ATI 0x8965 +#define GL_DOT3_ATI 0x8966 +#define GL_DOT4_ATI 0x8967 +#define GL_MAD_ATI 0x8968 +#define GL_LERP_ATI 0x8969 +#define GL_CND_ATI 0x896A +#define GL_CND0_ATI 0x896B +#define GL_DOT2_ADD_ATI 0x896C +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_RED_BIT_ATI 0x00000001 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); +typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); +typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (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); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range); +GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id); +GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id); +GLAPI void APIENTRY glBeginFragmentShaderATI (void); +GLAPI void APIENTRY glEndFragmentShaderATI (void); +GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle); +GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle); +GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +GLAPI void APIENTRY 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); +GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +GLAPI void APIENTRY 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); +GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value); +#endif +#endif /* GL_ATI_fragment_shader */ + +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 +typedef void *(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void *APIENTRY glMapObjectBufferATI (GLuint buffer); +GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer); +#endif +#endif /* GL_ATI_map_object_buffer */ + +#ifndef GL_ATI_meminfo +#define GL_ATI_meminfo 1 +#define GL_VBO_FREE_MEMORY_ATI 0x87FB +#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC +#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD +#endif /* GL_ATI_meminfo */ + +#ifndef GL_ATI_pixel_format_float +#define GL_ATI_pixel_format_float 1 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 +#endif /* GL_ATI_pixel_format_float */ + +#ifndef GL_ATI_pn_triangles +#define GL_ATI_pn_triangles 1 +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 +typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param); +GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param); +#endif +#endif /* GL_ATI_pn_triangles */ + +#ifndef GL_ATI_separate_stencil +#define GL_ATI_separate_stencil 1 +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#endif +#endif /* GL_ATI_separate_stencil */ + +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#endif /* GL_ATI_text_fragment_shader */ + +#ifndef GL_ATI_texture_env_combine3 +#define GL_ATI_texture_env_combine3 1 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#endif /* GL_ATI_texture_env_combine3 */ + +#ifndef GL_ATI_texture_float +#define GL_ATI_texture_float 1 +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#endif /* GL_ATI_texture_float */ + +#ifndef GL_ATI_texture_mirror_once +#define GL_ATI_texture_mirror_once 1 +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#endif /* GL_ATI_texture_mirror_once */ + +#ifndef GL_ATI_vertex_array_object +#define GL_ATI_vertex_array_object 1 +#define GL_STATIC_ATI 0x8760 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_PRESERVE_ATI 0x8762 +#define GL_DISCARD_ATI 0x8763 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage); +typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage); +GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer); +GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); +GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer); +GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params); +GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params); +#endif +#endif /* GL_ATI_vertex_array_object */ + +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 +typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params); +#endif +#endif /* GL_ATI_vertex_attrib_array_object */ + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SOURCE_ATI 0x8774 +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); +typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x); +GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x); +GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x); +GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x); +GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y); +GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z); +GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords); +GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz); +GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz); +GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream); +GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param); +GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param); +#endif +#endif /* GL_ATI_vertex_streams */ + +#ifndef GL_EXT_422_pixels +#define GL_EXT_422_pixels 1 +#define GL_422_EXT 0x80CC +#define GL_422_REV_EXT 0x80CD +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_REV_AVERAGE_EXT 0x80CF +#endif /* GL_EXT_422_pixels */ + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 +#define GL_ABGR_EXT 0x8000 +#endif /* GL_EXT_abgr */ + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 +#endif /* GL_EXT_bgra */ + +#ifndef GL_EXT_bindable_uniform +#define GL_EXT_bindable_uniform 1 +#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 +#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 +#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF +typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); +typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); +typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer); +GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location); +GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location); +#endif +#endif /* GL_EXT_bindable_uniform */ + +#ifndef GL_EXT_blend_color +#define GL_EXT_blend_color 1 +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 +typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendColorEXT (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +#endif +#endif /* GL_EXT_blend_color */ + +#ifndef GL_EXT_blend_equation_separate +#define GL_EXT_blend_equation_separate 1 +#define GL_BLEND_EQUATION_RGB_EXT 0x8009 +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha); +#endif +#endif /* GL_EXT_blend_equation_separate */ + +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif +#endif /* GL_EXT_blend_func_separate */ + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 +#endif /* GL_EXT_blend_logic_op */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_BLEND_EQUATION_EXT 0x8009 +typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationEXT (GLenum mode); +#endif +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#endif /* GL_EXT_blend_subtract */ + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#endif /* GL_EXT_clip_volume_hint */ + +#ifndef GL_EXT_cmyka +#define GL_EXT_cmyka 1 +#define GL_CMYK_EXT 0x800C +#define GL_CMYKA_EXT 0x800D +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#endif /* GL_EXT_cmyka */ + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 +typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#endif +#endif /* GL_EXT_color_subtable */ + +#ifndef GL_EXT_compiled_vertex_array +#define GL_EXT_compiled_vertex_array 1 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count); +GLAPI void APIENTRY glUnlockArraysEXT (void); +#endif +#endif /* GL_EXT_compiled_vertex_array */ + +#ifndef GL_EXT_convolution +#define GL_EXT_convolution 1 +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params); +GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params); +GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image); +GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +#endif +#endif /* GL_EXT_convolution */ + +#ifndef GL_EXT_coordinate_frame +#define GL_EXT_coordinate_frame 1 +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP2_BINORMAL_EXT 0x8447 +typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); +typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); +typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); +typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); +typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); +typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); +typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); +typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); +typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); +typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); +typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz); +GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v); +GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz); +GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v); +GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz); +GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v); +GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz); +GLAPI void APIENTRY glTangent3ivEXT (const GLint *v); +GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz); +GLAPI void APIENTRY glTangent3svEXT (const GLshort *v); +GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz); +GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v); +GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz); +GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v); +GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz); +GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v); +GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz); +GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v); +GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz); +GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v); +GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_coordinate_frame */ + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_EXT_copy_texture */ + +#ifndef GL_EXT_cull_vertex +#define GL_EXT_cull_vertex 1 +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC +typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params); +GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params); +#endif +#endif /* GL_EXT_cull_vertex */ + +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif +#endif /* GL_EXT_debug_label */ + +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GLAPI void APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_bounds_test +#define GL_EXT_depth_bounds_test 1 +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BOUNDS_EXT 0x8891 +typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax); +#endif +#endif /* GL_EXT_depth_bounds_test */ + +#ifndef GL_EXT_direct_state_access +#define GL_EXT_direct_state_access 1 +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F +typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); +typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data); +typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data); +typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data); +typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img); +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params); +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); +typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param); +typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +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); +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); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI void APIENTRY glMatrixPopEXT (GLenum mode); +GLAPI void APIENTRY glMatrixPushEXT (GLenum mode); +GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask); +GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask); +GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture); +GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); +GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param); +GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params); +GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params); +GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data); +GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data); +GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data); +GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index); +GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index); +GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index); +GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data); +GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data); +GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img); +GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img); +GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access); +GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer); +GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params); +GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params); +GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params); +GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params); +GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params); +GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); +GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params); +GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string); +GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target); +GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target); +GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target); +GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode); +GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs); +GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode); +GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array); +GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array); +GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index); +GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index); +GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param); +GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param); +GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param); +GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x); +GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y); +GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +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); +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); +GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_direct_state_access */ + +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 +typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +#endif +#endif /* GL_EXT_draw_buffers2 */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_range_elements +#define GL_EXT_draw_range_elements 1 +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +#endif +#endif /* GL_EXT_draw_range_elements */ + +#ifndef GL_EXT_fog_coord +#define GL_EXT_fog_coord 1 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); +typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord); +GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord); +GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord); +GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord); +GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_fog_coord */ + +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_EXT_framebuffer_blit */ + +#ifndef GL_EXT_framebuffer_multisample +#define GL_EXT_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_EXT_framebuffer_multisample */ + +#ifndef GL_EXT_framebuffer_multisample_blit_scaled +#define GL_EXT_framebuffer_multisample_blit_scaled 1 +#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA +#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB +#endif /* GL_EXT_framebuffer_multisample_blit_scaled */ + +#ifndef GL_EXT_framebuffer_object +#define GL_EXT_framebuffer_object 1 +#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); +typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer); +GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers); +GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers); +GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer); +GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer); +GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers); +GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers); +GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target); +GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target); +#endif +#endif /* GL_EXT_framebuffer_object */ + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#endif /* GL_EXT_framebuffer_sRGB */ + +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +#endif +#endif /* GL_EXT_geometry_shader4 */ + +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +#endif +#endif /* GL_EXT_gpu_program_parameters */ + +#ifndef GL_EXT_gpu_shader4 +#define GL_EXT_gpu_shader4 1 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 +typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params); +GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name); +GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0); +GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value); +#endif +#endif /* GL_EXT_gpu_shader4 */ + +#ifndef GL_EXT_histogram +#define GL_EXT_histogram 1 +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glResetHistogramEXT (GLenum target); +GLAPI void APIENTRY glResetMinmaxEXT (GLenum target); +#endif +#endif /* GL_EXT_histogram */ + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#endif /* GL_EXT_index_array_formats */ + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 +typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref); +#endif +#endif /* GL_EXT_index_func */ + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode); +#endif +#endif /* GL_EXT_index_material */ + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 +#endif /* GL_EXT_index_texture */ + +#ifndef GL_EXT_light_texture +#define GL_EXT_light_texture 1 +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_ATTENUATION_EXT 0x834D +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 +typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); +typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glApplyTextureEXT (GLenum mode); +GLAPI void APIENTRY glTextureLightEXT (GLenum pname); +GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode); +#endif +#endif /* GL_EXT_light_texture */ + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 +#endif /* GL_EXT_misc_attribute */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#endif +#endif /* GL_EXT_multi_draw_arrays */ + +#ifndef GL_EXT_multisample +#define GL_EXT_multisample 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_1PASS_EXT 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert); +GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern); +#endif +#endif /* GL_EXT_multisample */ + +#ifndef GL_EXT_packed_depth_stencil +#define GL_EXT_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#endif /* GL_EXT_packed_depth_stencil */ + +#ifndef GL_EXT_packed_float +#define GL_EXT_packed_float 1 +#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#endif /* GL_EXT_packed_float */ + +#ifndef GL_EXT_packed_pixels +#define GL_EXT_packed_pixels 1 +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#endif /* GL_EXT_packed_pixels */ + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data); +GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +#endif +#endif /* GL_EXT_paletted_texture */ + +#ifndef GL_EXT_pixel_buffer_object +#define GL_EXT_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF +#endif /* GL_EXT_pixel_buffer_object */ + +#ifndef GL_EXT_pixel_transform +#define GL_EXT_pixel_transform 1 +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_CUBIC_EXT 0x8334 +#define GL_AVERAGE_EXT 0x8335 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +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); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param); +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 +#endif /* GL_EXT_pixel_transform */ + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 +#endif /* GL_EXT_pixel_transform_color_table */ + +#ifndef GL_EXT_point_parameters +#define GL_EXT_point_parameters 1 +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params); +#endif +#endif /* GL_EXT_point_parameters */ + +#ifndef GL_EXT_polygon_offset +#define GL_EXT_polygon_offset 1 +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias); +#endif +#endif /* GL_EXT_polygon_offset */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_EXT_polygon_offset_clamp */ + +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 +#endif /* GL_EXT_post_depth_coverage */ + +#ifndef GL_EXT_provoking_vertex +#define GL_EXT_provoking_vertex 1 +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_PROVOKING_VERTEX_EXT 0x8E4F +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode); +#endif +#endif /* GL_EXT_provoking_vertex */ + +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C +typedef void (APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 +#define GL_RESCALE_NORMAL_EXT 0x803A +#endif /* GL_EXT_rescale_normal */ + +#ifndef GL_EXT_secondary_color +#define GL_EXT_secondary_color 1 +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue); +GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v); +GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue); +GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v); +GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue); +GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v); +GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue); +GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v); +GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue); +GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v); +GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue); +GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v); +GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue); +GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v); +GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue); +GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v); +GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_secondary_color */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D +typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); +typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program); +GLAPI void APIENTRY glActiveProgramEXT (GLuint program); +GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string); +#endif +#endif /* GL_EXT_separate_shader_objects */ + +#ifndef GL_EXT_separate_specular_color +#define GL_EXT_separate_specular_color 1 +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#endif /* GL_EXT_separate_specular_color */ + +#ifndef GL_EXT_shader_image_load_formatted +#define GL_EXT_shader_image_load_formatted 1 +#endif /* GL_EXT_shader_image_load_formatted */ + +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 +#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 +#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A +#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B +#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C +#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D +#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E +#define GL_IMAGE_1D_EXT 0x904C +#define GL_IMAGE_2D_EXT 0x904D +#define GL_IMAGE_3D_EXT 0x904E +#define GL_IMAGE_2D_RECT_EXT 0x904F +#define GL_IMAGE_CUBE_EXT 0x9050 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_IMAGE_1D_ARRAY_EXT 0x9052 +#define GL_IMAGE_2D_ARRAY_EXT 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 +#define GL_INT_IMAGE_1D_EXT 0x9057 +#define GL_INT_IMAGE_2D_EXT 0x9058 +#define GL_INT_IMAGE_3D_EXT 0x9059 +#define GL_INT_IMAGE_2D_RECT_EXT 0x905A +#define GL_INT_IMAGE_CUBE_EXT 0x905B +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D +#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C +#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D +#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 +#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 +#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers); +#endif +#endif /* GL_EXT_shader_image_load_store */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 +#endif /* GL_EXT_shadow_funcs */ + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#endif /* GL_EXT_shared_texture_palette */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_stencil_clear_tag +#define GL_EXT_stencil_clear_tag 1 +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 +typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag); +#endif +#endif /* GL_EXT_stencil_clear_tag */ + +#ifndef GL_EXT_stencil_two_side +#define GL_EXT_stencil_two_side 1 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 +typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face); +#endif +#endif /* GL_EXT_stencil_two_side */ + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 +#endif /* GL_EXT_stencil_wrap */ + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +#endif +#endif /* GL_EXT_subtexture */ + +#ifndef GL_EXT_texture +#define GL_EXT_texture 1 +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16_EXT 0x803E +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16_EXT 0x804D +#define GL_RGB2_EXT 0x804E +#define GL_RGB4_EXT 0x804F +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8_EXT 0x8051 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16_EXT 0x8054 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGBA8_EXT 0x8058 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16_EXT 0x805B +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_REPLACE_EXT 0x8062 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#endif /* GL_EXT_texture */ + +#ifndef GL_EXT_texture3D +#define GL_EXT_texture3D 1 +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +#endif +#endif /* GL_EXT_texture3D */ + +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +#endif +#endif /* GL_EXT_texture_array */ + +#ifndef GL_EXT_texture_buffer_object +#define GL_EXT_texture_buffer_object 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E +typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +#endif +#endif /* GL_EXT_texture_buffer_object */ + +#ifndef GL_EXT_texture_compression_latc +#define GL_EXT_texture_compression_latc 1 +#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 +#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 +#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#endif /* GL_EXT_texture_compression_latc */ + +#ifndef GL_EXT_texture_compression_rgtc +#define GL_EXT_texture_compression_rgtc 1 +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#endif /* GL_EXT_texture_compression_rgtc */ + +#ifndef GL_EXT_texture_compression_s3tc +#define GL_EXT_texture_compression_s3tc 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_cube_map +#define GL_EXT_texture_cube_map 1 +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#endif /* GL_EXT_texture_cube_map */ + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 +#endif /* GL_EXT_texture_env_add */ + +#ifndef GL_EXT_texture_env_combine +#define GL_EXT_texture_env_combine 1 +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A +#endif /* GL_EXT_texture_env_combine */ + +#ifndef GL_EXT_texture_env_dot3 +#define GL_EXT_texture_env_dot3 1 +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT3_RGBA_EXT 0x8741 +#endif /* GL_EXT_texture_env_dot3 */ + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif /* GL_EXT_texture_filter_anisotropic */ + +#ifndef GL_EXT_texture_filter_minmax +#define GL_EXT_texture_filter_minmax 1 +#endif /* GL_EXT_texture_filter_minmax */ + +#ifndef GL_EXT_texture_integer +#define GL_EXT_texture_integer 1 +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGB8UI_EXT 0x8D7D +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGB32I_EXT 0x8D83 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGB16I_EXT 0x8D89 +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGB8I_EXT 0x8D8F +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); +typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha); +GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha); +#endif +#endif /* GL_EXT_texture_integer */ + +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#endif /* GL_EXT_texture_lod_bias */ + +#ifndef GL_EXT_texture_mirror_clamp +#define GL_EXT_texture_mirror_clamp 1 +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#endif /* GL_EXT_texture_mirror_clamp */ + +#ifndef GL_EXT_texture_object +#define GL_EXT_texture_object 1 +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A +typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); +typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); +typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture); +GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures); +GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures); +GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture); +GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities); +#endif +#endif /* GL_EXT_texture_object */ + +#ifndef GL_EXT_texture_perturb_normal +#define GL_EXT_texture_perturb_normal 1 +#define GL_PERTURB_EXT 0x85AE +#define GL_TEXTURE_NORMAL_EXT 0x85AF +typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureNormalEXT (GLenum mode); +#endif +#endif /* GL_EXT_texture_perturb_normal */ + +#ifndef GL_EXT_texture_sRGB +#define GL_EXT_texture_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#endif /* GL_EXT_texture_sRGB */ + +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#endif /* GL_EXT_texture_sRGB_decode */ + +#ifndef GL_EXT_texture_shared_exponent +#define GL_EXT_texture_shared_exponent 1 +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#endif /* GL_EXT_texture_shared_exponent */ + +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 +#define GL_ALPHA_SNORM 0x9010 +#define GL_LUMINANCE_SNORM 0x9011 +#define GL_LUMINANCE_ALPHA_SNORM 0x9012 +#define GL_INTENSITY_SNORM 0x9013 +#define GL_ALPHA8_SNORM 0x9014 +#define GL_LUMINANCE8_SNORM 0x9015 +#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 +#define GL_INTENSITY8_SNORM 0x9017 +#define GL_ALPHA16_SNORM 0x9018 +#define GL_LUMINANCE16_SNORM 0x9019 +#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A +#define GL_INTENSITY16_SNORM 0x901B +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#endif /* GL_EXT_texture_snorm */ + +#ifndef GL_EXT_texture_swizzle +#define GL_EXT_texture_swizzle 1 +#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 +#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 +#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 +#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 +#endif /* GL_EXT_texture_swizzle */ + +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 +#define GL_TIME_ELAPSED_EXT 0x88BF +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +#endif +#endif /* GL_EXT_timer_query */ + +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F +#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 +#define GL_RASTERIZER_DISCARD_EXT 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode); +GLAPI void APIENTRY glEndTransformFeedbackEXT (void); +GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +#endif +#endif /* GL_EXT_transform_feedback */ + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); +typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, void **params); +typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glArrayElementEXT (GLint i); +GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count); +GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer); +GLAPI void APIENTRY glGetPointervEXT (GLenum pname, void **params); +GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +#endif +#endif /* GL_EXT_vertex_array */ + +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 +#endif /* GL_EXT_vertex_array_bgra */ + +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4_EXT 0x8FFE +#define GL_DOUBLE_MAT2_EXT 0x8F46 +#define GL_DOUBLE_MAT3_EXT 0x8F47 +#define GL_DOUBLE_MAT4_EXT 0x8F48 +#define GL_DOUBLE_MAT2x3_EXT 0x8F49 +#define GL_DOUBLE_MAT2x4_EXT 0x8F4A +#define GL_DOUBLE_MAT3x2_EXT 0x8F4B +#define GL_DOUBLE_MAT3x4_EXT 0x8F4C +#define GL_DOUBLE_MAT4x2_EXT 0x8F4D +#define GL_DOUBLE_MAT4x3_EXT 0x8F4E +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params); +#endif +#endif /* GL_EXT_vertex_attrib_64bit */ + +#ifndef GL_EXT_vertex_shader +#define GL_EXT_vertex_shader 1 +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_SUB_EXT 0x8796 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MOV_EXT 0x8799 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_SCALAR_EXT 0x87BE +#define GL_VECTOR_EXT 0x87BF +#define GL_MATRIX_EXT 0x87C0 +#define GL_VARIANT_EXT 0x87C1 +#define GL_INVARIANT_EXT 0x87C2 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_EXT 0x87C4 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_X_EXT 0x87D5 +#define GL_Y_EXT 0x87D6 +#define GL_Z_EXT 0x87D7 +#define GL_W_EXT 0x87D8 +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_ZERO_EXT 0x87DD +#define GL_ONE_EXT 0x87DE +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); +typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); +typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); +typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); +typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr); +typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr); +typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); +typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); +typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); +typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); +typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); +typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); +typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); +typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); +typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr); +typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value); +typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); +typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data); +typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginVertexShaderEXT (void); +GLAPI void APIENTRY glEndVertexShaderEXT (void); +GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id); +GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range); +GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id); +GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1); +GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num); +GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num); +GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const void *addr); +GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const void *addr); +GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr); +GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr); +GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr); +GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr); +GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr); +GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr); +GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr); +GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr); +GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const void *addr); +GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id); +GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id); +GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value); +GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value); +GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value); +GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value); +GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value); +GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap); +GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); +GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data); +GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data); +GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, void **data); +GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); +GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data); +GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data); +GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); +GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data); +GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data); +#endif +#endif /* GL_EXT_vertex_shader */ + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_EXT 0x850A +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight); +GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight); +GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_vertex_weighting */ + +#ifndef GL_EXT_window_rectangles +#define GL_EXT_window_rectangles 1 +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 +typedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 +#define GL_SYNC_X11_FENCE_EXT 0x90E1 +typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +#endif +#endif /* GL_EXT_x11_sync_object */ + +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 +typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameTerminatorGREMEDY (void); +#endif +#endif /* GL_GREMEDY_frame_terminator */ + +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 +typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const void *string); +#endif +#endif /* GL_GREMEDY_string_marker */ + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#endif /* GL_HP_convolution_border_modes */ + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_CUBIC_HP 0x815F +#define GL_AVERAGE_HP 0x8160 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params); +#endif +#endif /* GL_HP_image_transform */ + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#endif /* GL_HP_occlusion_test */ + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#endif /* GL_HP_texture_lighting */ + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 +#define GL_CULL_VERTEX_IBM 103050 +#endif /* GL_IBM_cull_vertex */ + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 +typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride); +#endif +#endif /* GL_IBM_multimode_draw_arrays */ + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#endif /* GL_IBM_rasterpos_clip */ + +#ifndef GL_IBM_static_data +#define GL_IBM_static_data 1 +#define GL_ALL_STATIC_DATA_IBM 103060 +#define GL_STATIC_VERTEX_ARRAY_IBM 103061 +typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushStaticDataIBM (GLenum target); +#endif +#endif /* GL_IBM_static_data */ + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_IBM_texture_mirrored_repeat 1 +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#endif /* GL_IBM_texture_mirrored_repeat */ + +#ifndef GL_IBM_vertex_array_lists +#define GL_IBM_vertex_array_lists 1 +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 +typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride); +GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +#endif +#endif /* GL_IBM_vertex_array_lists */ + +#ifndef GL_INGR_blend_func_separate +#define GL_INGR_blend_func_separate 1 +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif +#endif /* GL_INGR_blend_func_separate */ + +#ifndef GL_INGR_color_clamp +#define GL_INGR_color_clamp 1 +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#endif /* GL_INGR_color_clamp */ + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 +#define GL_INTERLACE_READ_INGR 0x8568 +#endif /* GL_INGR_interlace_read */ + +#ifndef GL_INTEL_conservative_rasterization +#define GL_INTEL_conservative_rasterization 1 +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#endif /* GL_INTEL_conservative_rasterization */ + +#ifndef GL_INTEL_fragment_shader_ordering +#define GL_INTEL_fragment_shader_ordering 1 +#endif /* GL_INTEL_fragment_shader_ordering */ + +#ifndef GL_INTEL_framebuffer_CMAA +#define GL_INTEL_framebuffer_CMAA 1 +typedef void (APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void); +#endif +#endif /* GL_INTEL_framebuffer_CMAA */ + +#ifndef GL_INTEL_map_texture +#define GL_INTEL_map_texture 1 +#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 +typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level); +typedef void *(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSyncTextureINTEL (GLuint texture); +GLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level); +GLAPI void *APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout); +#endif +#endif /* GL_INTEL_map_texture */ + +#ifndef GL_INTEL_parallel_arrays +#define GL_INTEL_parallel_arrays 1 +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 +typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer); +typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void **pointer); +typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const void **pointer); +GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const void **pointer); +GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const void **pointer); +GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void **pointer); +#endif +#endif /* GL_INTEL_parallel_arrays */ + +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#endif +#endif /* GL_INTEL_performance_query */ + +#ifndef GL_MESAX_texture_stack +#define GL_MESAX_texture_stack 1 +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D +#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E +#endif /* GL_MESAX_texture_stack */ + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 +#define GL_PACK_INVERT_MESA 0x8758 +#endif /* GL_MESA_pack_invert */ + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 +typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glResizeBuffersMESA (void); +#endif +#endif /* GL_MESA_resize_buffers */ + +#ifndef GL_MESA_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 +typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y); +GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v); +GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y); +GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v); +GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y); +GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v); +GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y); +GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v); +GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v); +GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v); +GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z); +GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v); +GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v); +GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v); +GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v); +GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v); +GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v); +#endif +#endif /* GL_MESA_window_pos */ + +#ifndef GL_MESA_ycbcr_texture +#define GL_MESA_ycbcr_texture 1 +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_YCBCR_MESA 0x8757 +#endif /* GL_MESA_ycbcr_texture */ + +#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers +#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1 +#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */ + +#ifndef GL_NVX_conditional_render +#define GL_NVX_conditional_render 1 +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id); +GLAPI void APIENTRY glEndConditionalRenderNVX (void); +#endif +#endif /* GL_NVX_conditional_render */ + +#ifndef GL_NVX_gpu_memory_info +#define GL_NVX_gpu_memory_info 1 +#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 +#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 +#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 +#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A +#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B +#endif /* GL_NVX_gpu_memory_info */ + +#ifndef GL_NVX_linked_gpu_multicast +#define GL_NVX_linked_gpu_multicast 1 +#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800 +#define GL_MAX_LGPU_GPUS_NVX 0x92BA +typedef void (APIENTRYP PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (APIENTRYP PFNGLLGPUCOPYIMAGESUBDATANVXPROC) (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLLGPUINTERLOCKNVXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLGPUNamedBufferSubDataNVX (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void APIENTRY glLGPUCopyImageSubDataNVX (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glLGPUInterlockNVX (void); +#endif +#endif /* GL_NVX_linked_gpu_multicast */ + +#ifndef GL_NV_alpha_to_coverage_dither_control +#define GL_NV_alpha_to_coverage_dither_control 1 +#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D +#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E +#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F +#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF +typedef void (APIENTRYP PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAlphaToCoverageDitherControlNV (GLenum mode); +#endif +#endif /* GL_NV_alpha_to_coverage_dither_control */ + +#ifndef GL_NV_bindless_multi_draw_indirect +#define GL_NV_bindless_multi_draw_indirect 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +#endif +#endif /* GL_NV_bindless_multi_draw_indirect */ + +#ifndef GL_NV_bindless_multi_draw_indirect_count +#define GL_NV_bindless_multi_draw_indirect_count 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessCountNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessCountNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +#endif +#endif /* GL_NV_bindless_multi_draw_indirect_count */ + +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture); +GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle); +#endif +#endif /* GL_NV_bindless_texture */ + +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLUE_NV 0x1905 +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_NV 0x9299 +#define GL_CONJOINT_NV 0x9284 +#define GL_CONTRAST_NV 0x92A1 +#define GL_DARKEN_NV 0x9297 +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISJOINT_NV 0x9283 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_GREEN_NV 0x1904 +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MULTIPLY_NV 0x9294 +#define GL_OVERLAY_NV 0x9296 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_RED_NV 0x1903 +#define GL_SCREEN_NV 0x9295 +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_XOR_NV 0x1506 +typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GLAPI void APIENTRY glBlendBarrierNV (void); +#endif +#endif /* GL_NV_blend_equation_advanced */ + +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#endif /* GL_NV_blend_equation_advanced_coherent */ + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 +#endif /* GL_NV_blend_square */ + +#ifndef GL_NV_clip_space_w_scaling +#define GL_NV_clip_space_w_scaling 1 +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E +typedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#ifndef GL_NV_command_list +#define GL_NV_command_list 1 +#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 +#define GL_NOP_COMMAND_NV 0x0001 +#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002 +#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003 +#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004 +#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005 +#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006 +#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007 +#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008 +#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009 +#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A +#define GL_BLEND_COLOR_COMMAND_NV 0x000B +#define GL_STENCIL_REF_COMMAND_NV 0x000C +#define GL_LINE_WIDTH_COMMAND_NV 0x000D +#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E +#define GL_ALPHA_REF_COMMAND_NV 0x000F +#define GL_VIEWPORT_COMMAND_NV 0x0010 +#define GL_SCISSOR_COMMAND_NV 0x0011 +#define GL_FRONT_FACE_COMMAND_NV 0x0012 +typedef void (APIENTRYP PFNGLCREATESTATESNVPROC) (GLsizei n, GLuint *states); +typedef void (APIENTRYP PFNGLDELETESTATESNVPROC) (GLsizei n, const GLuint *states); +typedef GLboolean (APIENTRYP PFNGLISSTATENVPROC) (GLuint state); +typedef void (APIENTRYP PFNGLSTATECAPTURENVPROC) (GLuint state, GLenum mode); +typedef GLuint (APIENTRYP PFNGLGETCOMMANDHEADERNVPROC) (GLenum tokenID, GLuint size); +typedef GLushort (APIENTRYP PFNGLGETSTAGEINDEXNVPROC) (GLenum shadertype); +typedef void (APIENTRYP PFNGLDRAWCOMMANDSNVPROC) (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count); +typedef void (APIENTRYP PFNGLDRAWCOMMANDSADDRESSNVPROC) (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count); +typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESNVPROC) (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC) (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +typedef void (APIENTRYP PFNGLCREATECOMMANDLISTSNVPROC) (GLsizei n, GLuint *lists); +typedef void (APIENTRYP PFNGLDELETECOMMANDLISTSNVPROC) (GLsizei n, const GLuint *lists); +typedef GLboolean (APIENTRYP PFNGLISCOMMANDLISTNVPROC) (GLuint list); +typedef void (APIENTRYP PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC) (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +typedef void (APIENTRYP PFNGLCOMMANDLISTSEGMENTSNVPROC) (GLuint list, GLuint segments); +typedef void (APIENTRYP PFNGLCOMPILECOMMANDLISTNVPROC) (GLuint list); +typedef void (APIENTRYP PFNGLCALLCOMMANDLISTNVPROC) (GLuint list); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCreateStatesNV (GLsizei n, GLuint *states); +GLAPI void APIENTRY glDeleteStatesNV (GLsizei n, const GLuint *states); +GLAPI GLboolean APIENTRY glIsStateNV (GLuint state); +GLAPI void APIENTRY glStateCaptureNV (GLuint state, GLenum mode); +GLAPI GLuint APIENTRY glGetCommandHeaderNV (GLenum tokenID, GLuint size); +GLAPI GLushort APIENTRY glGetStageIndexNV (GLenum shadertype); +GLAPI void APIENTRY glDrawCommandsNV (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count); +GLAPI void APIENTRY glDrawCommandsAddressNV (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count); +GLAPI void APIENTRY glDrawCommandsStatesNV (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI void APIENTRY glDrawCommandsStatesAddressNV (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI void APIENTRY glCreateCommandListsNV (GLsizei n, GLuint *lists); +GLAPI void APIENTRY glDeleteCommandListsNV (GLsizei n, const GLuint *lists); +GLAPI GLboolean APIENTRY glIsCommandListNV (GLuint list); +GLAPI void APIENTRY glListDrawCommandsStatesClientNV (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI void APIENTRY glCommandListSegmentsNV (GLuint list, GLuint segments); +GLAPI void APIENTRY glCompileCommandListNV (GLuint list); +GLAPI void APIENTRY glCallCommandListNV (GLuint list); +#endif +#endif /* GL_NV_command_list */ + +#ifndef GL_NV_compute_program5 +#define GL_NV_compute_program5 1 +#define GL_COMPUTE_PROGRAM_NV 0x90FB +#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC +#endif /* GL_NV_compute_program5 */ + +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GLAPI void APIENTRY glEndConditionalRenderNV (void); +#endif +#endif /* GL_NV_conditional_render */ + +#ifndef GL_NV_conservative_raster +#define GL_NV_conservative_raster 1 +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 +typedef void (APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#ifndef GL_NV_conservative_raster_dilate +#define GL_NV_conservative_raster_dilate 1 +#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379 +#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A +#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B +typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC) (GLenum pname, GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConservativeRasterParameterfNV (GLenum pname, GLfloat value); +#endif +#endif /* GL_NV_conservative_raster_dilate */ + +#ifndef GL_NV_conservative_raster_pre_snap_triangles +#define GL_NV_conservative_raster_pre_snap_triangles 1 +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F +typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_copy_depth_to_color +#define GL_NV_copy_depth_to_color 1 +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#endif /* GL_NV_copy_depth_to_color */ + +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 +typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY 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); +#endif +#endif /* GL_NV_copy_image */ + +#ifndef GL_NV_deep_texture3D +#define GL_NV_deep_texture3D 1 +#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 +#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 +#endif /* GL_NV_deep_texture3D */ + +#ifndef GL_NV_depth_buffer_float +#define GL_NV_depth_buffer_float 1 +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF +typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); +typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar); +GLAPI void APIENTRY glClearDepthdNV (GLdouble depth); +GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax); +#endif +#endif /* GL_NV_depth_buffer_float */ + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 +#define GL_DEPTH_CLAMP_NV 0x864F +#endif /* GL_NV_depth_clamp */ + +#ifndef GL_NV_draw_texture +#define GL_NV_draw_texture 1 +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); +#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 +#endif /* GL_NV_draw_texture */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +typedef void (APIENTRY *GLVULKANPROCNV)(void); +typedef void (APIENTRYP PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +typedef GLVULKANPROCNV (APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name); +typedef void (APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GLAPI GLVULKANPROCNV APIENTRY glGetVkProcAddrNV (const GLchar *name); +GLAPI void APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore); +GLAPI void APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore); +GLAPI void APIENTRY glSignalVkFenceNV (GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_evaluators +#define GL_NV_evaluators 1 +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points); +typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points); +typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points); +GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points); +GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode); +#endif +#endif /* GL_NV_evaluators */ + +#ifndef GL_NV_explicit_multisample +#define GL_NV_explicit_multisample 1 +#define GL_SAMPLE_POSITION_NV 0x8E50 +#define GL_SAMPLE_MASK_NV 0x8E51 +#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 +#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 +#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 +#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 +#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 +#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 +#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 +#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val); +typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); +typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val); +GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask); +GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer); +#endif +#endif /* GL_NV_explicit_multisample */ + +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence); +GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence); +GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GLAPI void APIENTRY glFinishFenceNV (GLuint fence); +GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition); +#endif +#endif /* GL_NV_fence */ + +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 +#define GL_FILL_RECTANGLE_NV 0x933C +#endif /* GL_NV_fill_rectangle */ + +#ifndef GL_NV_float_buffer +#define GL_NV_float_buffer 1 +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#endif /* GL_NV_float_buffer */ + +#ifndef GL_NV_fog_distance +#define GL_NV_fog_distance 1 +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_EYE_RADIAL_NV 0x855B +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +#endif /* GL_NV_fog_distance */ + +#ifndef GL_NV_fragment_coverage_to_color +#define GL_NV_fragment_coverage_to_color 1 +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE +typedef void (APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFragmentCoverageColorNV (GLuint color); +#endif +#endif /* GL_NV_fragment_coverage_to_color */ + +#ifndef GL_NV_fragment_program +#define GL_NV_fragment_program 1 +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat 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); +#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 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 +#endif /* GL_NV_fragment_program */ + +#ifndef GL_NV_fragment_program2 +#define GL_NV_fragment_program2 1 +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#endif /* GL_NV_fragment_program2 */ + +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 +#endif /* GL_NV_fragment_program4 */ + +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 +#endif /* GL_NV_fragment_program_option */ + +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 +#endif /* GL_NV_fragment_shader_interlock */ + +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 +typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v); +typedef void (APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufsize, GLfloat *v); +typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v); +GLAPI void APIENTRY glGetCoverageModulationTableNV (GLsizei bufsize, GLfloat *v); +GLAPI void APIENTRY glCoverageModulationNV (GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_NV_framebuffer_multisample_coverage 1 +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample_coverage */ + +#ifndef GL_NV_geometry_program4 +#define GL_NV_geometry_program4 1 +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 +#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 +typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit); +GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif +#endif /* GL_NV_geometry_program4 */ + +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 +#endif /* GL_NV_geometry_shader4 */ + +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 +#endif /* GL_NV_geometry_shader_passthrough */ + +#ifndef GL_NV_gpu_multicast +#define GL_NV_gpu_multicast 1 +#define GL_PER_GPU_STORAGE_BIT_NV 0x0800 +#define GL_MULTICAST_GPUS_NV 0x92BA +#define GL_RENDER_GPU_MASK_NV 0x9558 +#define GL_PER_GPU_STORAGE_NV 0x9548 +#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549 +typedef void (APIENTRYP PFNGLRENDERGPUMASKNVPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLMULTICASTBUFFERSUBDATANVPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data); +typedef void (APIENTRYP PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC) (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLMULTICASTCOPYIMAGESUBDATANVPROC) (GLuint srcGpu, GLbitfield dstGpuMask, 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); +typedef void (APIENTRYP PFNGLMULTICASTBLITFRAMEBUFFERNVPROC) (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void (APIENTRYP PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTICASTBARRIERNVPROC) (void); +typedef void (APIENTRYP PFNGLMULTICASTWAITSYNCNVPROC) (GLuint signalGpu, GLbitfield waitGpuMask); +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint64 *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderGpuMaskNV (GLbitfield mask); +GLAPI void APIENTRY glMulticastBufferSubDataNV (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data); +GLAPI void APIENTRY glMulticastCopyBufferSubDataNV (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glMulticastCopyImageSubDataNV (GLuint srcGpu, GLbitfield dstGpuMask, 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); +GLAPI void APIENTRY glMulticastBlitFramebufferNV (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI void APIENTRY glMulticastFramebufferSampleLocationsfvNV (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glMulticastBarrierNV (void); +GLAPI void APIENTRY glMulticastWaitSyncNV (GLuint signalGpu, GLbitfield waitGpuMask); +GLAPI void APIENTRY glMulticastGetQueryObjectivNV (GLuint gpu, GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glMulticastGetQueryObjectuivNV (GLuint gpu, GLuint id, GLenum pname, GLuint *params); +GLAPI void APIENTRY glMulticastGetQueryObjecti64vNV (GLuint gpu, GLuint id, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glMulticastGetQueryObjectui64vNV (GLuint gpu, GLuint id, GLenum pname, GLuint64 *params); +#endif +#endif /* GL_NV_gpu_multicast */ + +#ifndef GL_NV_gpu_program4 +#define GL_NV_gpu_program4 1 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 +#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 +#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 +#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params); +GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params); +GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params); +GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params); +GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params); +GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params); +GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params); +GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params); +#endif +#endif /* GL_NV_gpu_program4 */ + +#ifndef GL_NV_gpu_program5 +#define GL_NV_gpu_program5 1 +#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C +#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F +#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 +#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 +typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param); +#endif +#endif /* GL_NV_gpu_program5 */ + +#ifndef GL_NV_gpu_program5_mem_extended +#define GL_NV_gpu_program5_mem_extended 1 +#endif /* GL_NV_gpu_program5_mem_extended */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 +typedef unsigned short GLhalfNV; +#define GL_HALF_FLOAT_NV 0x140B +typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y); +typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); +typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s); +typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t); +typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); +typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y); +GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z); +GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); +GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s); +GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t); +GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r); +GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s); +GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t); +GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); +GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog); +GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog); +GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight); +GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight); +GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x); +GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y); +GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +#endif +#endif /* GL_NV_half_float */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_CONFORMANT_NV 0x9374 +typedef void (APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params); +#endif +#endif /* GL_NV_internalformat_sample_query */ + +#ifndef GL_NV_light_max_exponent +#define GL_NV_light_max_exponent 1 +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#endif /* GL_NV_light_max_exponent */ + +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 +#endif /* GL_NV_multisample_coverage */ + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#endif /* GL_NV_multisample_filter_hint */ + +#ifndef GL_NV_occlusion_query +#define GL_NV_occlusion_query 1 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void); +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids); +GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id); +GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id); +GLAPI void APIENTRY glEndOcclusionQueryNV (void); +GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params); +#endif +#endif /* GL_NV_occlusion_query */ + +#ifndef GL_NV_packed_depth_stencil +#define GL_NV_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#endif /* GL_NV_packed_depth_stencil */ + +#ifndef GL_NV_parameter_buffer_object +#define GL_NV_parameter_buffer_object 1 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 +#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 +#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 +#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 +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); +#ifdef GL_GLEXT_PROTOTYPES +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 +#endif /* GL_NV_parameter_buffer_object */ + +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 +#endif /* GL_NV_parameter_buffer_object2 */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_FILE_NAME_NV 0x9074 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FILL_MASK_NV 0x9081 +#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_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_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_AFFINE_3D_NV 0x9094 +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_UTF8_NV 0x909A +#define GL_UTF16_NV 0x909B +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_SQUARE_NV 0x90A3 +#define GL_ROUND_NV 0x90A4 +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_BEVEL_NV 0x90A6 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_RECT_NV 0xF6 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_ARC_TO_NV 0xFE +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_BOLD_BIT_NV 0x01 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#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_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 +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_2_BYTES_NV 0x1407 +#define GL_3_BYTES_NV 0x1408 +#define GL_4_BYTES_NV 0x1409 +#define GL_EYE_LINEAR_NV 0x2400 +#define GL_OBJECT_LINEAR_NV 0x2401 +#define GL_CONSTANT_NV 0x8576 +#define GL_PATH_FOG_GEN_MODE_NV 0x90AC +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2 +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_FRAGMENT_INPUT_NV 0x936D +typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params); +typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); +typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC) (GLenum genMode); +typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint *value); +typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat *value); +typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint *value); +typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range); +GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GLAPI GLboolean APIENTRY glIsPathNV (GLuint path); +GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func); +GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GLAPI void APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GLAPI void APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount[2]); +GLAPI GLenum APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI void APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GLAPI void APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params); +GLAPI void APIENTRY glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); +GLAPI void APIENTRY glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); +GLAPI void APIENTRY glPathFogGenNV (GLenum genMode); +GLAPI void APIENTRY glGetPathColorGenivNV (GLenum color, GLenum pname, GLint *value); +GLAPI void APIENTRY glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat *value); +GLAPI void APIENTRY glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint *value); +GLAPI void APIENTRY glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat *value); +#endif +#endif /* GL_NV_path_rendering */ + +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 +#define GL_SHARED_EDGE_NV 0xC0 +#endif /* GL_NV_path_rendering_shared_edge */ + +#ifndef GL_NV_pixel_data_range +#define GL_NV_pixel_data_range 1 +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D +typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const void *pointer); +typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const void *pointer); +GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target); +#endif +#endif /* GL_NV_pixel_data_range */ + +#ifndef GL_NV_point_sprite +#define GL_NV_point_sprite 1 +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param); +GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params); +#endif +#endif /* GL_NV_point_sprite */ + +#ifndef GL_NV_present_video +#define GL_NV_present_video 1 +#define GL_FRAME_NV 0x8E26 +#define GL_FIELDS_NV 0x8E27 +#define GL_CURRENT_TIME_NV 0x8E28 +#define GL_NUM_FILL_STREAMS_NV 0x8E29 +#define GL_PRESENT_TIME_NV 0x8E2A +#define GL_PRESENT_DURATION_NV 0x8E2B +typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); +typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (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); +typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); +GLAPI void APIENTRY 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); +GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params); +GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params); +GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params); +#endif +#endif /* GL_NV_present_video */ + +#ifndef GL_NV_primitive_restart +#define GL_NV_primitive_restart 1 +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void); +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPrimitiveRestartNV (void); +GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index); +#endif +#endif /* GL_NV_primitive_restart */ + +#ifndef GL_NV_register_combiners +#define GL_NV_register_combiners 1 +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_SPARE0_NV 0x852E +#define GL_SPARE1_NV 0x852F +#define GL_DISCARD_NV 0x8530 +#define GL_E_TIMES_F_NV 0x8531 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param); +GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params); +GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param); +GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_register_combiners */ + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params); +#endif +#endif /* GL_NV_register_combiners2 */ + +#ifndef GL_NV_robustness_video_memory_purge +#define GL_NV_robustness_video_memory_purge 1 +#define GL_PURGED_CONTEXT_RESET_NV 0x92BB +#endif /* GL_NV_robustness_video_memory_purge */ + +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glResolveDepthValuesNV (void); +#endif +#endif /* GL_NV_sample_locations */ + +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 +#endif /* GL_NV_sample_mask_override_coverage */ + +#ifndef GL_NV_shader_atomic_counters +#define GL_NV_shader_atomic_counters 1 +#endif /* GL_NV_shader_atomic_counters */ + +#ifndef GL_NV_shader_atomic_float +#define GL_NV_shader_atomic_float 1 +#endif /* GL_NV_shader_atomic_float */ + +#ifndef GL_NV_shader_atomic_float64 +#define GL_NV_shader_atomic_float64 1 +#endif /* GL_NV_shader_atomic_float64 */ + +#ifndef GL_NV_shader_atomic_fp16_vector +#define GL_NV_shader_atomic_fp16_vector 1 +#endif /* GL_NV_shader_atomic_fp16_vector */ + +#ifndef GL_NV_shader_atomic_int64 +#define GL_NV_shader_atomic_int64 1 +#endif /* GL_NV_shader_atomic_int64 */ + +#ifndef GL_NV_shader_buffer_load +#define GL_NV_shader_buffer_load 1 +#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D +#define GL_GPU_ADDRESS_NV 0x8F34 +#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 +typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); +typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); +typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); +typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); +typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); +typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result); +typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); +typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access); +GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target); +GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target); +GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access); +GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer); +GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer); +GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params); +GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params); +GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result); +GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value); +GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value); +GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_shader_buffer_load */ + +#ifndef GL_NV_shader_buffer_store +#define GL_NV_shader_buffer_store 1 +#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 +#endif /* GL_NV_shader_buffer_store */ + +#ifndef GL_NV_shader_storage_buffer_object +#define GL_NV_shader_storage_buffer_object 1 +#endif /* GL_NV_shader_storage_buffer_object */ + +#ifndef GL_NV_shader_thread_group +#define GL_NV_shader_thread_group 1 +#define GL_WARP_SIZE_NV 0x9339 +#define GL_WARPS_PER_SM_NV 0x933A +#define GL_SM_COUNT_NV 0x933B +#endif /* GL_NV_shader_thread_group */ + +#ifndef GL_NV_shader_thread_shuffle +#define GL_NV_shader_thread_shuffle 1 +#endif /* GL_NV_shader_thread_shuffle */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_tessellation_program5 +#define GL_NV_tessellation_program5 1 +#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 +#define GL_TESS_CONTROL_PROGRAM_NV 0x891E +#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F +#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 +#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 +#endif /* GL_NV_tessellation_program5 */ + +#ifndef GL_NV_texgen_emboss +#define GL_NV_texgen_emboss 1 +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_MAP_NV 0x855F +#endif /* GL_NV_texgen_emboss */ + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 +#endif /* GL_NV_texgen_reflection */ + +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 +typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureBarrierNV (void); +#endif +#endif /* GL_NV_texture_barrier */ + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 +#endif /* GL_NV_texture_compression_vtc */ + +#ifndef GL_NV_texture_env_combine4 +#define GL_NV_texture_env_combine4 1 +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B +#endif /* GL_NV_texture_env_combine4 */ + +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F +#endif /* GL_NV_texture_expand_normal */ + +#ifndef GL_NV_texture_multisample +#define GL_NV_texture_multisample 1 +#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 +#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +#endif +#endif /* GL_NV_texture_multisample */ + +#ifndef GL_NV_texture_rectangle +#define GL_NV_texture_rectangle 1 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#endif /* GL_NV_texture_rectangle */ + +#ifndef GL_NV_texture_shader +#define GL_NV_texture_shader 1 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_CULL_MODES_NV 0x86E0 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_HILO_NV 0x86F4 +#define GL_DSDT_NV 0x86F5 +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_HILO16_NV 0x86F8 +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_HI_SCALE_NV 0x870E +#define GL_LO_SCALE_NV 0x870F +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_SCALE_NV 0x8711 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_HI_BIAS_NV 0x8714 +#define GL_LO_BIAS_NV 0x8715 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DT_BIAS_NV 0x8717 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#endif /* GL_NV_texture_shader */ + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#endif /* GL_NV_texture_shader2 */ + +#ifndef GL_NV_texture_shader3 +#define GL_NV_texture_shader3 1 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_HILO8_NV 0x885E +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#endif /* GL_NV_texture_shader3 */ + +#ifndef GL_NV_transform_feedback +#define GL_NV_transform_feedback 1 +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#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_COMPONENTS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F +#define GL_LAYER_NV 0x8DAA +#define GL_NEXT_BUFFER_NV -2 +#define GL_SKIP_COMPONENTS4_NV -3 +#define GL_SKIP_COMPONENTS3_NV -4 +#define GL_SKIP_COMPONENTS2_NV -5 +#define GL_SKIP_COMPONENTS1_NV -6 +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLenum bufferMode); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); +typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode); +GLAPI void APIENTRY glEndTransformFeedbackNV (void); +GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLsizei count, const GLint *attribs, GLenum bufferMode); +GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); +GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name); +GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location); +GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); +#endif +#endif /* GL_NV_transform_feedback */ + +#ifndef GL_NV_transform_feedback2 +#define GL_NV_transform_feedback2 1 +#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids); +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id); +GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids); +GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids); +GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id); +GLAPI void APIENTRY glPauseTransformFeedbackNV (void); +GLAPI void APIENTRY glResumeTransformFeedbackNV (void); +GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id); +#endif +#endif /* GL_NV_transform_feedback2 */ + +#ifndef GL_NV_uniform_buffer_unified_memory +#define GL_NV_uniform_buffer_unified_memory 1 +#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E +#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F +#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370 +#endif /* GL_NV_uniform_buffer_unified_memory */ + +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 +typedef GLintptr GLvdpauSurfaceNV; +#define GL_SURFACE_STATE_NV 0x86EB +#define GL_SURFACE_REGISTERED_NV 0x86FD +#define GL_SURFACE_MAPPED_NV 0x8700 +#define GL_WRITE_DISCARD_NV 0x88BE +typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void *getProcAddress); +typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void); +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); +typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); +typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAddress); +GLAPI void APIENTRY glVDPAUFiniNV (void); +GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface); +GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface); +GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access); +GLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); +GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); +#endif +#endif /* GL_NV_vdpau_interop */ + +#ifndef GL_NV_vertex_array_range +#define GL_NV_vertex_array_range 1 +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); +GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const void *pointer); +#endif +#endif /* GL_NV_vertex_array_range */ + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#endif /* GL_NV_vertex_array_range2 */ + +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x); +GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y); +GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x); +GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y); +GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params); +GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params); +GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride); +#endif +#endif /* GL_NV_vertex_attrib_integer_64bit */ + +#ifndef GL_NV_vertex_buffer_unified_memory +#define GL_NV_vertex_buffer_unified_memory 1 +#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E +#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F +#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 +#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 +#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 +#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 +#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 +#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 +#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 +#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 +#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 +#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 +#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A +#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B +#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C +#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D +#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E +#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F +#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 +#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 +#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 +#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 +#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 +#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 +#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 +typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); +typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride); +GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride); +GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride); +GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride); +GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result); +#endif +#endif /* GL_NV_vertex_buffer_unified_memory */ + +#ifndef GL_NV_vertex_program +#define GL_NV_vertex_program 1 +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_IDENTITY_NV 0x862A +#define GL_INVERSE_NV 0x862B +#define GL_TRANSPOSE_NV 0x862C +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_NV 0x8637 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); +typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); +typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); +typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void **pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences); +GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id); +GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs); +GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params); +GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs); +GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program); +GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, void **pointer); +GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id); +GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program); +GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v); +GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v); +GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs); +GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform); +GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x); +GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x); +GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v); +#endif +#endif /* GL_NV_vertex_program */ + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 +#endif /* GL_NV_vertex_program1_1 */ + +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 +#endif /* GL_NV_vertex_program2 */ + +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 +#endif /* GL_NV_vertex_program2_option */ + +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 +#endif /* GL_NV_vertex_program3 */ + +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x); +GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y); +GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z); +GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x); +GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y); +GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params); +#endif +#endif /* GL_NV_vertex_program4 */ + +#ifndef GL_NV_video_capture +#define GL_NV_video_capture 1 +#define GL_VIDEO_BUFFER_NV 0x9020 +#define GL_VIDEO_BUFFER_BINDING_NV 0x9021 +#define GL_FIELD_UPPER_NV 0x9022 +#define GL_FIELD_LOWER_NV 0x9023 +#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 +#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 +#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 +#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 +#define GL_VIDEO_BUFFER_PITCH_NV 0x9028 +#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 +#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A +#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B +#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C +#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D +#define GL_PARTIAL_SUCCESS_NV 0x902E +#define GL_SUCCESS_NV 0x902F +#define GL_FAILURE_NV 0x9030 +#define GL_YCBYCR8_422_NV 0x9031 +#define GL_YCBAYCR8A_4224_NV 0x9032 +#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 +#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 +#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 +#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 +#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 +#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 +#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 +#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A +#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B +#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C +typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); +typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot); +GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot); +GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); +GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); +GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); +GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); +#endif +#endif /* GL_NV_video_capture */ + +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 +#endif /* GL_NV_viewport_array2 */ + +#ifndef GL_NV_viewport_swizzle +#define GL_NV_viewport_swizzle 1 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B +typedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#endif +#endif /* GL_NV_viewport_swizzle */ + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 +#endif /* GL_OML_interlace */ + +#ifndef GL_OML_resample +#define GL_OML_resample 1 +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#endif /* GL_OML_resample */ + +#ifndef GL_OML_subsample +#define GL_OML_subsample 1 +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#endif /* GL_OML_subsample */ + +#ifndef GL_OVR_multiview +#define GL_OVR_multiview 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_MAX_VIEWS_OVR 0x9631 +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview */ + +#ifndef GL_OVR_multiview2 +#define GL_OVR_multiview2 1 +#endif /* GL_OVR_multiview2 */ + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode); +#endif +#endif /* GL_PGI_misc_hints */ + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#endif /* GL_PGI_vertex_hints */ + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#endif /* GL_REND_screen_coordinates */ + +#ifndef GL_S3_s3tc +#define GL_S3_s3tc 1 +#define GL_RGB_S3TC 0x83A0 +#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 /* GL_S3_s3tc */ + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C +typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points); +#endif +#endif /* GL_SGIS_detail_texture */ + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points); +#endif +#endif /* GL_SGIS_fog_function */ + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#endif /* GL_SGIS_generate_mipmap */ + +#ifndef GL_SGIS_multisample +#define GL_SGIS_multisample 1 +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC +typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert); +GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern); +#endif +#endif /* GL_SGIS_multisample */ + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param); +GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params); +GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params); +GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params); +#endif +#endif /* GL_SGIS_pixel_texture */ + +#ifndef GL_SGIS_point_line_texgen +#define GL_SGIS_point_line_texgen 1 +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#endif /* GL_SGIS_point_line_texgen */ + +#ifndef GL_SGIS_point_parameters +#define GL_SGIS_point_parameters 1 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params); +#endif +#endif /* GL_SGIS_point_parameters */ + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 +typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points); +#endif +#endif /* GL_SGIS_sharpen_texture */ + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (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 void *pixels); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY 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 void *pixels); +#endif +#endif /* GL_SGIS_texture4D */ + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#endif /* GL_SGIS_texture_border_clamp */ + +#ifndef GL_SGIS_texture_color_mask +#define GL_SGIS_texture_color_mask 1 +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#endif +#endif /* GL_SGIS_texture_color_mask */ + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#endif /* GL_SGIS_texture_edge_clamp */ + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 +#define GL_FILTER4_SGIS 0x8146 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); +typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights); +GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +#endif +#endif /* GL_SGIS_texture_filter4 */ + +#ifndef GL_SGIS_texture_lod +#define GL_SGIS_texture_lod 1 +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#endif /* GL_SGIS_texture_lod */ + +#ifndef GL_SGIS_texture_select +#define GL_SGIS_texture_select 1 +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#endif /* GL_SGIS_texture_select */ + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 +#define GL_ASYNC_MARKER_SGIX 0x8329 +typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker); +typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); +typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); +typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); +typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); +typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker); +GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp); +GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp); +GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range); +GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range); +GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker); +#endif +#endif /* GL_SGIX_async */ + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#endif /* GL_SGIX_async_histogram */ + +#ifndef GL_SGIX_async_pixel +#define GL_SGIX_async_pixel 1 +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#endif /* GL_SGIX_async_pixel */ + +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_SGIX_blend_alpha_minmax 1 +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_MAX_SGIX 0x8321 +#endif /* GL_SGIX_blend_alpha_minmax */ + +#ifndef GL_SGIX_calligraphic_fragment +#define GL_SGIX_calligraphic_fragment 1 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#endif /* GL_SGIX_calligraphic_fragment */ + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#endif /* GL_SGIX_clipmap */ + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#endif /* GL_SGIX_convolution_accuracy */ + +#ifndef GL_SGIX_depth_pass_instrument +#define GL_SGIX_depth_pass_instrument 1 +#endif /* GL_SGIX_depth_pass_instrument */ + +#ifndef GL_SGIX_depth_texture +#define GL_SGIX_depth_texture 1 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#endif /* GL_SGIX_depth_texture */ + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 +typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushRasterSGIX (void); +#endif +#endif /* GL_SGIX_flush_raster */ + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#endif /* GL_SGIX_fog_offset */ + +#ifndef GL_SGIX_fragment_lighting +#define GL_SGIX_fragment_lighting 1 +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode); +GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params); +GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params); +GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params); +GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params); +GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param); +#endif +#endif /* GL_SGIX_fragment_lighting */ + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameZoomSGIX (GLint factor); +#endif +#endif /* GL_SGIX_framezoom */ + +#ifndef GL_SGIX_igloo_interface +#define GL_SGIX_igloo_interface 1 +typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const void *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const void *params); +#endif +#endif /* GL_SGIX_igloo_interface */ + +#ifndef GL_SGIX_instruments +#define GL_SGIX_instruments 1 +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); +typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); +typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); +typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); +GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer); +GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p); +GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker); +GLAPI void APIENTRY glStartInstrumentsSGIX (void); +GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker); +#endif +#endif /* GL_SGIX_instruments */ + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 +#define GL_INTERLACE_SGIX 0x8094 +#endif /* GL_SGIX_interlace */ + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#endif /* GL_SGIX_ir_instrument1 */ + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 +#define GL_LIST_PRIORITY_SGIX 0x8182 +typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params); +GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param); +GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param); +GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params); +#endif +#endif /* GL_SGIX_list_priority */ + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode); +#endif +#endif /* GL_SGIX_pixel_texture */ + +#ifndef GL_SGIX_pixel_tiles +#define GL_SGIX_pixel_tiles 1 +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#endif /* GL_SGIX_pixel_tiles */ + +#ifndef GL_SGIX_polynomial_ffd +#define GL_SGIX_polynomial_ffd 1 +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (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); +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (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); +typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY 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); +GLAPI void APIENTRY 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); +GLAPI void APIENTRY glDeformSGIX (GLbitfield mask); +GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask); +#endif +#endif /* GL_SGIX_polynomial_ffd */ + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation); +#endif +#endif /* GL_SGIX_reference_plane */ + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#endif /* GL_SGIX_resample */ + +#ifndef GL_SGIX_scalebias_hint +#define GL_SGIX_scalebias_hint 1 +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#endif /* GL_SGIX_scalebias_hint */ + +#ifndef GL_SGIX_shadow +#define GL_SGIX_shadow 1 +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#endif /* GL_SGIX_shadow */ + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#endif /* GL_SGIX_shadow_ambient */ + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param); +GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param); +GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params); +#endif +#endif /* GL_SGIX_sprite */ + +#ifndef GL_SGIX_subsample +#define GL_SGIX_subsample 1 +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#endif /* GL_SGIX_subsample */ + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 +typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTagSampleBufferSGIX (void); +#endif +#endif /* GL_SGIX_tag_sample_buffer */ + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#endif /* GL_SGIX_texture_add_env */ + +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_SGIX_texture_coordinate_clamp 1 +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#endif /* GL_SGIX_texture_coordinate_clamp */ + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#endif /* GL_SGIX_texture_lod_bias */ + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#endif /* GL_SGIX_texture_multi_buffer */ + +#ifndef GL_SGIX_texture_scale_bias +#define GL_SGIX_texture_scale_bias 1 +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#endif /* GL_SGIX_texture_scale_bias */ + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#endif /* GL_SGIX_vertex_preclip */ + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#endif /* GL_SGIX_ycrcb */ + +#ifndef GL_SGIX_ycrcb_subsample +#define GL_SGIX_ycrcb_subsample 1 +#endif /* GL_SGIX_ycrcb_subsample */ + +#ifndef GL_SGIX_ycrcba +#define GL_SGIX_ycrcba 1 +#define GL_YCRCB_SGIX 0x8318 +#define GL_YCRCBA_SGIX 0x8319 +#endif /* GL_SGIX_ycrcba */ + +#ifndef GL_SGI_color_matrix +#define GL_SGI_color_matrix 1 +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#endif /* GL_SGI_color_matrix */ + +#ifndef GL_SGI_color_table +#define GL_SGI_color_table 1 +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF +typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table); +GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params); +#endif +#endif /* GL_SGI_color_table */ + +#ifndef GL_SGI_texture_color_table +#define GL_SGI_texture_color_table 1 +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#endif /* GL_SGI_texture_color_table */ + +#ifndef GL_SUNX_constant_data +#define GL_SUNX_constant_data 1 +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFinishTextureSUNX (void); +#endif +#endif /* GL_SUNX_constant_data */ + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 +#define GL_WRAP_BORDER_SUN 0x81D4 +#endif /* GL_SUN_convolution_border_modes */ + +#ifndef GL_SUN_global_alpha +#define GL_SUN_global_alpha 1 +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor); +GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor); +GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor); +GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor); +GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor); +GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor); +GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor); +GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor); +#endif +#endif /* GL_SUN_global_alpha */ + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 +typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width); +#endif +#endif /* GL_SUN_mesh_array */ + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 +#define GL_SLICE_ACCUM_SUN 0x85CC +#endif /* GL_SUN_slice_accum */ + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 +#define GL_RESTART_SUN 0x0001 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void **pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code); +GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code); +GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code); +GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code); +GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code); +GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code); +GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void **pointer); +#endif +#endif /* GL_SUN_triangle_list */ + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (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); +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (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); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v); +GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v); +GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY 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); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY 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); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY 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); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +#endif +#endif /* GL_SUN_vertex */ + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB +#endif /* GL_WIN_phong_shading */ + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#endif /* GL_WIN_specular_fog */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglextrafunctions.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglextrafunctions.h new file mode 100644 index 000000000..1b3606858 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglextrafunctions.h @@ -0,0 +1,2028 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLEXTRAFUNCTIONS_H +#define QOPENGLEXTRAFUNCTIONS_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#include <QtGui/qopenglfunctions.h> + +// MemoryBarrier is a macro on some architectures on Windows +#ifdef Q_OS_WIN +#pragma push_macro("MemoryBarrier") +#undef MemoryBarrier +#endif + +QT_BEGIN_NAMESPACE + +class QOpenGLExtraFunctionsPrivate; + +#undef glReadBuffer +#undef glDrawRangeElements +#undef glTexImage3D +#undef glTexSubImage3D +#undef glCopyTexSubImage3D +#undef glCompressedTexImage3D +#undef glCompressedTexSubImage3D +#undef glGenQueries +#undef glDeleteQueries +#undef glIsQuery +#undef glBeginQuery +#undef glEndQuery +#undef glGetQueryiv +#undef glGetQueryObjectuiv +#undef glUnmapBuffer +#undef glGetBufferPointerv +#undef glDrawBuffers +#undef glUniformMatrix2x3fv +#undef glUniformMatrix3x2fv +#undef glUniformMatrix2x4fv +#undef glUniformMatrix4x2fv +#undef glUniformMatrix3x4fv +#undef glUniformMatrix4x3fv +#undef glBlitFramebuffer +#undef glRenderbufferStorageMultisample +#undef glFramebufferTextureLayer +#undef glMapBufferRange +#undef glFlushMappedBufferRange +#undef glBindVertexArray +#undef glDeleteVertexArrays +#undef glGenVertexArrays +#undef glIsVertexArray +#undef glGetIntegeri_v +#undef glBeginTransformFeedback +#undef glEndTransformFeedback +#undef glBindBufferRange +#undef glBindBufferBase +#undef glTransformFeedbackVaryings +#undef glGetTransformFeedbackVarying +#undef glVertexAttribIPointer +#undef glGetVertexAttribIiv +#undef glGetVertexAttribIuiv +#undef glVertexAttribI4i +#undef glVertexAttribI4ui +#undef glVertexAttribI4iv +#undef glVertexAttribI4uiv +#undef glGetUniformuiv +#undef glGetFragDataLocation +#undef glUniform1ui +#undef glUniform2ui +#undef glUniform3ui +#undef glUniform4ui +#undef glUniform1uiv +#undef glUniform2uiv +#undef glUniform3uiv +#undef glUniform4uiv +#undef glClearBufferiv +#undef glClearBufferuiv +#undef glClearBufferfv +#undef glClearBufferfi +#undef glGetStringi +#undef glCopyBufferSubData +#undef glGetUniformIndices +#undef glGetActiveUniformsiv +#undef glGetUniformBlockIndex +#undef glGetActiveUniformBlockiv +#undef glGetActiveUniformBlockName +#undef glUniformBlockBinding +#undef glDrawArraysInstanced +#undef glDrawElementsInstanced +#undef glFenceSync +#undef glIsSync +#undef glDeleteSync +#undef glClientWaitSync +#undef glWaitSync +#undef glGetInteger64v +#undef glGetSynciv +#undef glGetInteger64i_v +#undef glGetBufferParameteri64v +#undef glGenSamplers +#undef glDeleteSamplers +#undef glIsSampler +#undef glBindSampler +#undef glSamplerParameteri +#undef glSamplerParameteriv +#undef glSamplerParameterf +#undef glSamplerParameterfv +#undef glGetSamplerParameteriv +#undef glGetSamplerParameterfv +#undef glVertexAttribDivisor +#undef glBindTransformFeedback +#undef glDeleteTransformFeedbacks +#undef glGenTransformFeedbacks +#undef glIsTransformFeedback +#undef glPauseTransformFeedback +#undef glResumeTransformFeedback +#undef glGetProgramBinary +#undef glProgramBinary +#undef glProgramParameteri +#undef glInvalidateFramebuffer +#undef glInvalidateSubFramebuffer +#undef glTexStorage2D +#undef glTexStorage3D +#undef glGetInternalformativ + +#undef glDispatchCompute +#undef glDispatchComputeIndirect +#undef glDrawArraysIndirect +#undef glDrawElementsIndirect +#undef glFramebufferParameteri +#undef glGetFramebufferParameteriv +#undef glGetProgramInterfaceiv +#undef glGetProgramResourceIndex +#undef glGetProgramResourceName +#undef glGetProgramResourceiv +#undef glGetProgramResourceLocation +#undef glUseProgramStages +#undef glActiveShaderProgram +#undef glCreateShaderProgramv +#undef glBindProgramPipeline +#undef glDeleteProgramPipelines +#undef glGenProgramPipelines +#undef glIsProgramPipeline +#undef glGetProgramPipelineiv +#undef glProgramUniform1i +#undef glProgramUniform2i +#undef glProgramUniform3i +#undef glProgramUniform4i +#undef glProgramUniform1ui +#undef glProgramUniform2ui +#undef glProgramUniform3ui +#undef glProgramUniform4ui +#undef glProgramUniform1f +#undef glProgramUniform2f +#undef glProgramUniform3f +#undef glProgramUniform4f +#undef glProgramUniform1iv +#undef glProgramUniform2iv +#undef glProgramUniform3iv +#undef glProgramUniform4iv +#undef glProgramUniform1uiv +#undef glProgramUniform2uiv +#undef glProgramUniform3uiv +#undef glProgramUniform4uiv +#undef glProgramUniform1fv +#undef glProgramUniform2fv +#undef glProgramUniform3fv +#undef glProgramUniform4fv +#undef glProgramUniformMatrix2fv +#undef glProgramUniformMatrix3fv +#undef glProgramUniformMatrix4fv +#undef glProgramUniformMatrix2x3fv +#undef glProgramUniformMatrix3x2fv +#undef glProgramUniformMatrix2x4fv +#undef glProgramUniformMatrix4x2fv +#undef glProgramUniformMatrix3x4fv +#undef glProgramUniformMatrix4x3fv +#undef glValidateProgramPipeline +#undef glGetProgramPipelineInfoLog +#undef glBindImageTexture +#undef glGetBooleani_v +#undef glMemoryBarrier +#undef glMemoryBarrierByRegion +#undef glTexStorage2DMultisample +#undef glGetMultisamplefv +#undef glSampleMaski +#undef glGetTexLevelParameteriv +#undef glGetTexLevelParameterfv +#undef glBindVertexBuffer +#undef glVertexAttribFormat +#undef glVertexAttribIFormat +#undef glVertexAttribBinding +#undef glVertexBindingDivisor + +class Q_GUI_EXPORT QOpenGLExtraFunctions : public QOpenGLFunctions +{ + Q_DECLARE_PRIVATE(QOpenGLExtraFunctions) + +public: + QOpenGLExtraFunctions(); + QOpenGLExtraFunctions(QOpenGLContext *context); + ~QOpenGLExtraFunctions() {} + + // GLES3 + void glReadBuffer(GLenum mode); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); + void glGenQueries(GLsizei n, GLuint *ids); + void glDeleteQueries(GLsizei n, const GLuint *ids); + GLboolean glIsQuery(GLuint id); + void glBeginQuery(GLenum target, GLuint id); + void glEndQuery(GLenum target); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + GLboolean glUnmapBuffer(GLenum target); + void glGetBufferPointerv(GLenum target, GLenum pname, void **params); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void *glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + void glBindVertexArray(GLuint array); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + GLboolean glIsVertexArray(GLuint array); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glBeginTransformFeedback(GLenum primitiveMode); + void glEndTransformFeedback(void); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glVertexAttribI4iv(GLuint index, const GLint *v); + void glVertexAttribI4uiv(GLuint index, const GLuint *v); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glUniform1ui(GLint location, GLuint v0); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + const GLubyte *glGetStringi(GLenum name, GLuint index); + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + GLboolean glIsSync(GLsync sync); + void glDeleteSync(GLsync sync); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glGetInteger64v(GLenum pname, GLint64 *data); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGenSamplers(GLsizei count, GLuint *samplers); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + GLboolean glIsSampler(GLuint sampler); + void glBindSampler(GLuint unit, GLuint sampler); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + void glBindTransformFeedback(GLenum target, GLuint id); + void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); + void glGenTransformFeedbacks(GLsizei n, GLuint *ids); + GLboolean glIsTransformFeedback(GLuint id); + void glPauseTransformFeedback(void); + void glResumeTransformFeedback(void); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); + void glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); + void glProgramParameteri(GLuint program, GLenum pname, GLint value); + void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments); + void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); + + // GLES 3.1 + void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + void glDispatchComputeIndirect(GLintptr indirect); + void glDrawArraysIndirect(GLenum mode, const void *indirect); + void glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect); + void glFramebufferParameteri(GLenum target, GLenum pname, GLint param); + void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params); + GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name); + void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); + void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); + GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name); + void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + void glActiveShaderProgram(GLuint pipeline, GLuint program); + GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const*strings); + void glBindProgramPipeline(GLuint pipeline); + void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines); + void glGenProgramPipelines(GLsizei n, GLuint *pipelines); + GLboolean glIsProgramPipeline(GLuint pipeline); + void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params); + void glProgramUniform1i(GLuint program, GLint location, GLint v0); + void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); + void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); + void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); + void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); + void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniformMatrix2fv(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 glProgramUniformMatrix4fv(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 glProgramUniformMatrix3x2fv(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 glProgramUniformMatrix4x2fv(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 glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glValidateProgramPipeline(GLuint pipeline); + void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glMemoryBarrier(GLbitfield barriers); + void glMemoryBarrierByRegion(GLbitfield barriers); + void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glSampleMaski(GLuint maskNumber, GLbitfield mask); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + void glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex); + void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor); + +private: + static bool isInitialized(const QOpenGLExtraFunctionsPrivate *d) { return d != Q_NULLPTR; } +}; + + +#define QT_OPENGL_DECLARE_FUNCTIONS(ret, name, args) \ + ret (QOPENGLF_APIENTRYP name)args; +#define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1 + +#define QT_OPENGL_DECLARE(FUNCTIONS) \ +public: \ + struct Functions { \ + FUNCTIONS(QT_OPENGL_DECLARE_FUNCTIONS) \ + }; \ + union { \ + QFunctionPointer functions[FUNCTIONS(QT_OPENGL_COUNT_FUNCTIONS)]; \ + Functions f; \ + }; \ +private: \ + void init(QOpenGLContext *context); + +class QOpenGLExtraFunctionsPrivate : public QOpenGLFunctionsPrivate +{ +public: + QOpenGLExtraFunctionsPrivate(QOpenGLContext *ctx); + + // GLES3 +#define QT_OPENGL_EXTRA_FUNCTIONS(F) \ + F(void, ReadBuffer, (GLenum mode)) \ + F(void, DrawRangeElements, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)) \ + F(void, TexImage3D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)) \ + F(void, TexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) \ + F(void, CopyTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, CompressedTexImage3D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)) \ + F(void, CompressedTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) \ + F(void, GenQueries, (GLsizei n, GLuint *ids)) \ + F(void, DeleteQueries, (GLsizei n, const GLuint *ids)) \ + F(GLboolean, IsQuery, (GLuint id)) \ + F(void, BeginQuery, (GLenum target, GLuint id)) \ + F(void, EndQuery, (GLenum target)) \ + F(void, GetQueryiv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, GetQueryObjectuiv, (GLuint id, GLenum pname, GLuint *params)) \ + F(GLboolean, UnmapBuffer, (GLenum target)) \ + F(void, GetBufferPointerv, (GLenum target, GLenum pname, void **params)) \ + F(void, DrawBuffers, (GLsizei n, const GLenum *bufs)) \ + F(void, UniformMatrix2x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix3x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix2x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix4x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix3x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix4x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, BlitFramebuffer, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) \ + F(void, RenderbufferStorageMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \ + F(void, FramebufferTextureLayer, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) \ + F(void *,MapBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)) \ + F(void, FlushMappedBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length)) \ + F(void, BindVertexArray, (GLuint array)) \ + F(void, DeleteVertexArrays, (GLsizei n, const GLuint *arrays)) \ + F(void, GenVertexArrays, (GLsizei n, GLuint *arrays)) \ + F(GLboolean, IsVertexArray, (GLuint array)) \ + F(void, GetIntegeri_v, (GLenum target, GLuint index, GLint *data)) \ + F(void, BeginTransformFeedback, (GLenum primitiveMode)) \ + F(void, EndTransformFeedback, (void)) \ + F(void, BindBufferRange, (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) \ + F(void, BindBufferBase, (GLenum target, GLuint index, GLuint buffer)) \ + F(void, TransformFeedbackVaryings, (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode)) \ + F(void, GetTransformFeedbackVarying, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) \ + F(void, VertexAttribIPointer, (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)) \ + F(void, GetVertexAttribIiv, (GLuint index, GLenum pname, GLint *params)) \ + F(void, GetVertexAttribIuiv, (GLuint index, GLenum pname, GLuint *params)) \ + F(void, VertexAttribI4i, (GLuint index, GLint x, GLint y, GLint z, GLint w)) \ + F(void, VertexAttribI4ui, (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) \ + F(void, VertexAttribI4iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttribI4uiv, (GLuint index, const GLuint *v)) \ + F(void, GetUniformuiv, (GLuint program, GLint location, GLuint *params)) \ + F(GLint, GetFragDataLocation, (GLuint program, const GLchar *name)) \ + F(void, Uniform1ui, (GLint location, GLuint v0)) \ + F(void, Uniform2ui, (GLint location, GLuint v0, GLuint v1)) \ + F(void, Uniform3ui, (GLint location, GLuint v0, GLuint v1, GLuint v2)) \ + F(void, Uniform4ui, (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \ + F(void, Uniform1uiv, (GLint location, GLsizei count, const GLuint *value)) \ + F(void, Uniform2uiv, (GLint location, GLsizei count, const GLuint *value)) \ + F(void, Uniform3uiv, (GLint location, GLsizei count, const GLuint *value)) \ + F(void, Uniform4uiv, (GLint location, GLsizei count, const GLuint *value)) \ + F(void, ClearBufferiv, (GLenum buffer, GLint drawbuffer, const GLint *value)) \ + F(void, ClearBufferuiv, (GLenum buffer, GLint drawbuffer, const GLuint *value)) \ + F(void, ClearBufferfv, (GLenum buffer, GLint drawbuffer, const GLfloat *value)) \ + F(void, ClearBufferfi, (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) \ + F(const GLubyte *, GetStringi, (GLenum name, GLuint index)) \ + F(void, CopyBufferSubData, (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) \ + F(void, GetUniformIndices, (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices)) \ + F(void, GetActiveUniformsiv, (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)) \ + F(GLuint, GetUniformBlockIndex, (GLuint program, const GLchar *uniformBlockName)) \ + F(void, GetActiveUniformBlockiv, (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)) \ + F(void, GetActiveUniformBlockName, (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)) \ + F(void, UniformBlockBinding, (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)) \ + F(void, DrawArraysInstanced, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)) \ + F(void, DrawElementsInstanced, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount)) \ + F(GLsync, FenceSync, (GLenum condition, GLbitfield flags)) \ + F(GLboolean, IsSync, (GLsync sync)) \ + F(void, DeleteSync, (GLsync sync)) \ + F(GLenum, ClientWaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \ + F(void, WaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \ + F(void, GetInteger64v, (GLenum pname, GLint64 *data)) \ + F(void, GetSynciv, (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)) \ + F(void, GetInteger64i_v, (GLenum target, GLuint index, GLint64 *data)) \ + F(void, GetBufferParameteri64v, (GLenum target, GLenum pname, GLint64 *params)) \ + F(void, GenSamplers, (GLsizei count, GLuint *samplers)) \ + F(void, DeleteSamplers, (GLsizei count, const GLuint *samplers)) \ + F(GLboolean, IsSampler, (GLuint sampler)) \ + F(void, BindSampler, (GLuint unit, GLuint sampler)) \ + F(void, SamplerParameteri, (GLuint sampler, GLenum pname, GLint param)) \ + F(void, SamplerParameteriv, (GLuint sampler, GLenum pname, const GLint *param)) \ + F(void, SamplerParameterf, (GLuint sampler, GLenum pname, GLfloat param)) \ + F(void, SamplerParameterfv, (GLuint sampler, GLenum pname, const GLfloat *param)) \ + F(void, GetSamplerParameteriv, (GLuint sampler, GLenum pname, GLint *params)) \ + F(void, GetSamplerParameterfv, (GLuint sampler, GLenum pname, GLfloat *params)) \ + F(void, VertexAttribDivisor, (GLuint index, GLuint divisor)) \ + F(void, BindTransformFeedback, (GLenum target, GLuint id)) \ + F(void, DeleteTransformFeedbacks, (GLsizei n, const GLuint *ids)) \ + F(void, GenTransformFeedbacks, (GLsizei n, GLuint *ids)) \ + F(GLboolean, IsTransformFeedback, (GLuint id)) \ + F(void, PauseTransformFeedback, (void)) \ + F(void, ResumeTransformFeedback, (void)) \ + F(void, GetProgramBinary, (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)) \ + F(void, ProgramBinary, (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)) \ + F(void, ProgramParameteri, (GLuint program, GLenum pname, GLint value)) \ + F(void, InvalidateFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments)) \ + F(void, InvalidateSubFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, TexStorage2D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \ + F(void, TexStorage3D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \ + F(void, GetInternalformativ, (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)) \ + F(void, DispatchCompute, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)) \ + F(void, DispatchComputeIndirect, (GLintptr indirect)) \ + F(void, DrawArraysIndirect, (GLenum mode, const void *indirect)) \ + F(void, DrawElementsIndirect, (GLenum mode, GLenum type, const void *indirect)) \ + F(void, FramebufferParameteri, (GLenum target, GLenum pname, GLint param)) \ + F(void, GetFramebufferParameteriv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, GetProgramInterfaceiv, (GLuint program, GLenum programInterface, GLenum pname, GLint *params)) \ + F(GLuint, GetProgramResourceIndex, (GLuint program, GLenum programInterface, const GLchar *name)) \ + F(void, GetProgramResourceName, (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)) \ + F(void, GetProgramResourceiv, (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params)) \ + F(GLint, GetProgramResourceLocation, (GLuint program, GLenum programInterface, const GLchar *name)) \ + F(void, UseProgramStages, (GLuint pipeline, GLbitfield stages, GLuint program)) \ + F(void, ActiveShaderProgram, (GLuint pipeline, GLuint program)) \ + F(GLuint, CreateShaderProgramv, (GLenum type, GLsizei count, const GLchar *const*strings)) \ + F(void, BindProgramPipeline, (GLuint pipeline)) \ + F(void, DeleteProgramPipelines, (GLsizei n, const GLuint *pipelines)) \ + F(void, GenProgramPipelines, (GLsizei n, GLuint *pipelines)) \ + F(GLboolean, IsProgramPipeline, (GLuint pipeline)) \ + F(void, GetProgramPipelineiv, (GLuint pipeline, GLenum pname, GLint *params)) \ + F(void, ProgramUniform1i, (GLuint program, GLint location, GLint v0)) \ + F(void, ProgramUniform2i, (GLuint program, GLint location, GLint v0, GLint v1)) \ + F(void, ProgramUniform3i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)) \ + F(void, ProgramUniform4i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) \ + F(void, ProgramUniform1ui, (GLuint program, GLint location, GLuint v0)) \ + F(void, ProgramUniform2ui, (GLuint program, GLint location, GLuint v0, GLuint v1)) \ + F(void, ProgramUniform3ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)) \ + F(void, ProgramUniform4ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \ + F(void, ProgramUniform1f, (GLuint program, GLint location, GLfloat v0)) \ + F(void, ProgramUniform2f, (GLuint program, GLint location, GLfloat v0, GLfloat v1)) \ + F(void, ProgramUniform3f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) \ + F(void, ProgramUniform4f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) \ + F(void, ProgramUniform1iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \ + F(void, ProgramUniform2iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \ + F(void, ProgramUniform3iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \ + F(void, ProgramUniform4iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \ + F(void, ProgramUniform1uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \ + F(void, ProgramUniform2uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \ + F(void, ProgramUniform3uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \ + F(void, ProgramUniform4uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \ + F(void, ProgramUniform1fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \ + F(void, ProgramUniform2fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \ + F(void, ProgramUniform3fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \ + F(void, ProgramUniform4fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \ + F(void, ProgramUniformMatrix2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix2x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix3x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix2x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix4x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix3x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix4x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ValidateProgramPipeline, (GLuint pipeline)) \ + F(void, GetProgramPipelineInfoLog, (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \ + F(void, BindImageTexture, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)) \ + F(void, GetBooleani_v, (GLenum target, GLuint index, GLboolean *data)) \ + F(void, MemoryBarrier, (GLbitfield barriers)) \ + F(void, MemoryBarrierByRegion, (GLbitfield barriers)) \ + F(void, TexStorage2DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \ + F(void, GetMultisamplefv, (GLenum pname, GLuint index, GLfloat *val)) \ + F(void, SampleMaski, (GLuint maskNumber, GLbitfield mask)) \ + F(void, GetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint *params)) \ + F(void, GetTexLevelParameterfv, (GLenum target, GLint level, GLenum pname, GLfloat *params)) \ + F(void, BindVertexBuffer, (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)) \ + F(void, VertexAttribFormat, (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)) \ + F(void, VertexAttribIFormat, (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) \ + F(void, VertexAttribBinding, (GLuint attribindex, GLuint bindingindex)) \ + F(void, VertexBindingDivisor, (GLuint bindingindex, GLuint divisor)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_EXTRA_FUNCTIONS) +}; + +// GLES 3.0 and 3.1 + +inline void QOpenGLExtraFunctions::glBeginQuery(GLenum target, GLuint id) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BeginQuery(target, id); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glBeginTransformFeedback(GLenum primitiveMode) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BeginTransformFeedback(primitiveMode); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BindBufferBase(target, index, buffer); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BindBufferRange(target, index, buffer, offset, size); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glBindSampler(GLuint unit, GLuint sampler) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BindSampler(unit, sampler); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glBindTransformFeedback(GLenum target, GLuint id) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BindTransformFeedback(target, id); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glBindVertexArray(GLuint array) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BindVertexArray(array); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ClearBufferfv(buffer, drawbuffer, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ClearBufferiv(buffer, drawbuffer, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ClearBufferuiv(buffer, drawbuffer, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLenum QOpenGLExtraFunctions::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLenum result = d->f.ClientWaitSync(sync, flags, timeout); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtraFunctions::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDeleteQueries(GLsizei n, const GLuint * ids) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DeleteQueries(n, ids); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDeleteSamplers(GLsizei count, const GLuint * samplers) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DeleteSamplers(count, samplers); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDeleteSync(GLsync sync) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DeleteSync(sync); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDeleteTransformFeedbacks(GLsizei n, const GLuint * ids) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DeleteTransformFeedbacks(n, ids); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDeleteVertexArrays(GLsizei n, const GLuint * arrays) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DeleteVertexArrays(n, arrays); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DrawArraysInstanced(mode, first, count, instancecount); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDrawBuffers(GLsizei n, const GLenum * bufs) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DrawBuffers(n, bufs); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DrawElementsInstanced(mode, count, type, indices, instancecount); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DrawRangeElements(mode, start, end, count, type, indices); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glEndQuery(GLenum target) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.EndQuery(target); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glEndTransformFeedback() +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.EndTransformFeedback(); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLsync QOpenGLExtraFunctions::glFenceSync(GLenum condition, GLbitfield flags) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLsync result = d->f.FenceSync(condition, flags); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtraFunctions::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.FlushMappedBufferRange(target, offset, length); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.FramebufferTextureLayer(target, attachment, texture, level, layer); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGenQueries(GLsizei n, GLuint* ids) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GenQueries(n, ids); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGenSamplers(GLsizei count, GLuint* samplers) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GenSamplers(count, samplers); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGenTransformFeedbacks(GLsizei n, GLuint* ids) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GenTransformFeedbacks(n, ids); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGenVertexArrays(GLsizei n, GLuint* arrays) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GenVertexArrays(n, arrays); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetBufferParameteri64v(target, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetBufferPointerv(GLenum target, GLenum pname, void ** params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetBufferPointerv(target, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLint QOpenGLExtraFunctions::glGetFragDataLocation(GLuint program, const GLchar * name) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLint result = d->f.GetFragDataLocation(program, name); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtraFunctions::glGetInteger64i_v(GLenum target, GLuint index, GLint64* data) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetInteger64i_v(target, index, data); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetInteger64v(GLenum pname, GLint64* data) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetInteger64v(pname, data); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetIntegeri_v(GLenum target, GLuint index, GLint* data) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetIntegeri_v(target, index, data); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetInternalformativ(target, internalformat, pname, bufSize, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void * binary) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetQueryObjectuiv(id, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetQueryiv(GLenum target, GLenum pname, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetQueryiv(target, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetSamplerParameterfv(sampler, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetSamplerParameteriv(sampler, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline const GLubyte * QOpenGLExtraFunctions::glGetStringi(GLenum name, GLuint index) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + const GLubyte * result = d->f.GetStringi(name, index); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtraFunctions::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetSynciv(sync, pname, bufSize, length, values); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLuint QOpenGLExtraFunctions::glGetUniformBlockIndex(GLuint program, const GLchar * uniformBlockName) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLuint result = d->f.GetUniformBlockIndex(program, uniformBlockName); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtraFunctions::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint* uniformIndices) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetUniformuiv(GLuint program, GLint location, GLuint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetUniformuiv(program, location, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetVertexAttribIiv(index, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetVertexAttribIuiv(index, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.InvalidateFramebuffer(target, numAttachments, attachments); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLboolean QOpenGLExtraFunctions::glIsQuery(GLuint id) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLboolean result = d->f.IsQuery(id); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLboolean QOpenGLExtraFunctions::glIsSampler(GLuint sampler) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLboolean result = d->f.IsSampler(sampler); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLboolean QOpenGLExtraFunctions::glIsSync(GLsync sync) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLboolean result = d->f.IsSync(sync); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLboolean QOpenGLExtraFunctions::glIsTransformFeedback(GLuint id) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLboolean result = d->f.IsTransformFeedback(id); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLboolean QOpenGLExtraFunctions::glIsVertexArray(GLuint array) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLboolean result = d->f.IsVertexArray(array); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void * QOpenGLExtraFunctions::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + void *result = d->f.MapBufferRange(target, offset, length, access); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtraFunctions::glPauseTransformFeedback() +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.PauseTransformFeedback(); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramBinary(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramBinary(program, binaryFormat, binary, length); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramParameteri(program, pname, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glReadBuffer(GLenum src) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ReadBuffer(src); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.RenderbufferStorageMultisample(target, samples, internalformat, width, height); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glResumeTransformFeedback() +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ResumeTransformFeedback(); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.SamplerParameterf(sampler, pname, param); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat * param) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.SamplerParameterfv(sampler, pname, param); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.SamplerParameteri(sampler, pname, param); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint * param) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.SamplerParameteriv(sampler, pname, param); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.TexStorage2D(target, levels, internalformat, width, height); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.TexStorage3D(target, levels, internalformat, width, height, depth); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniform1ui(GLint location, GLuint v0) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.Uniform1ui(location, v0); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniform1uiv(GLint location, GLsizei count, const GLuint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.Uniform1uiv(location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.Uniform2ui(location, v0, v1); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniform2uiv(GLint location, GLsizei count, const GLuint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.Uniform2uiv(location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.Uniform3ui(location, v0, v1, v2); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniform3uiv(GLint location, GLsizei count, const GLuint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.Uniform3uiv(location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.Uniform4ui(location, v0, v1, v2, v3); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniform4uiv(GLint location, GLsizei count, const GLuint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.Uniform4uiv(location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.UniformMatrix2x3fv(location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.UniformMatrix2x4fv(location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.UniformMatrix3x2fv(location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.UniformMatrix3x4fv(location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.UniformMatrix4x2fv(location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.UniformMatrix4x3fv(location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLboolean QOpenGLExtraFunctions::glUnmapBuffer(GLenum target) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLboolean result = d->f.UnmapBuffer(target); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtraFunctions::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.VertexAttribDivisor(index, divisor); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.VertexAttribI4i(index, x, y, z, w); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glVertexAttribI4iv(GLuint index, const GLint * v) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.VertexAttribI4iv(index, v); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.VertexAttribI4ui(index, x, y, z, w); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glVertexAttribI4uiv(GLuint index, const GLuint * v) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.VertexAttribI4uiv(index, v); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.VertexAttribIPointer(index, size, type, stride, pointer); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.WaitSync(sync, flags, timeout); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ActiveShaderProgram(pipeline, program); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BindImageTexture(unit, texture, level, layered, layer, access, format); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glBindProgramPipeline(GLuint pipeline) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BindProgramPipeline(pipeline); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.BindVertexBuffer(bindingindex, buffer, offset, stride); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLuint QOpenGLExtraFunctions::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const* strings) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLuint result = d->f.CreateShaderProgramv(type, count, strings); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtraFunctions::glDeleteProgramPipelines(GLsizei n, const GLuint * pipelines) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DeleteProgramPipelines(n, pipelines); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DispatchCompute(num_groups_x, num_groups_y, num_groups_z); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDispatchComputeIndirect(GLintptr indirect) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DispatchComputeIndirect(indirect); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDrawArraysIndirect(GLenum mode, const void * indirect) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DrawArraysIndirect(mode, indirect); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glDrawElementsIndirect(GLenum mode, GLenum type, const void * indirect) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.DrawElementsIndirect(mode, type, indirect); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.FramebufferParameteri(target, pname, param); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGenProgramPipelines(GLsizei n, GLuint* pipelines) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GenProgramPipelines(n, pipelines); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetBooleani_v(GLenum target, GLuint index, GLboolean* data) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetBooleani_v(target, index, data); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetFramebufferParameteriv(target, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat* val) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetMultisamplefv(pname, index, val); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetProgramInterfaceiv(program, programInterface, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetProgramPipelineiv(pipeline, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLuint QOpenGLExtraFunctions::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar * name) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLuint result = d->f.GetProgramResourceIndex(program, programInterface, name); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLint QOpenGLExtraFunctions::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar * name) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLint result = d->f.GetProgramResourceLocation(program, programInterface, name); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtraFunctions::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar* name) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetProgramResourceName(program, programInterface, index, bufSize, length, name); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei* length, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetTexLevelParameterfv(target, level, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.GetTexLevelParameteriv(target, level, pname, params); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLboolean QOpenGLExtraFunctions::glIsProgramPipeline(GLuint pipeline) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + GLboolean result = d->f.IsProgramPipeline(pipeline); + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLExtraFunctions::glMemoryBarrier(GLbitfield barriers) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.MemoryBarrier(barriers); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glMemoryBarrierByRegion(GLbitfield barriers) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.MemoryBarrierByRegion(barriers); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform1f(program, location, v0); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform1fv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform1i(program, location, v0); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform1iv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform1ui(program, location, v0); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform1uiv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform2f(program, location, v0, v1); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform2fv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform2i(program, location, v0, v1); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform2iv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform2ui(program, location, v0, v1); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform2uiv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform3f(program, location, v0, v1, v2); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform3fv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform3i(program, location, v0, v1, v2); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform3iv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform3ui(program, location, v0, v1, v2); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform3uiv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform4f(program, location, v0, v1, v2, v3); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform4fv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform4i(program, location, v0, v1, v2, v3); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform4iv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform4ui(program, location, v0, v1, v2, v3); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniform4uiv(program, location, count, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniformMatrix2fv(program, location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniformMatrix2x3fv(program, location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniformMatrix2x4fv(program, location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniformMatrix3fv(program, location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniformMatrix3x2fv(program, location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniformMatrix3x4fv(program, location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniformMatrix4fv(program, location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniformMatrix4x2fv(program, location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ProgramUniformMatrix4x3fv(program, location, count, transpose, value); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glSampleMaski(GLuint maskNumber, GLbitfield mask) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.SampleMaski(maskNumber, mask); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.UseProgramStages(pipeline, stages, program); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glValidateProgramPipeline(GLuint pipeline) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.ValidateProgramPipeline(pipeline); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.VertexAttribBinding(attribindex, bindingindex); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.VertexAttribFormat(attribindex, size, type, normalized, relativeoffset); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.VertexAttribIFormat(attribindex, size, type, relativeoffset); + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLExtraFunctions::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) +{ + Q_D(QOpenGLExtraFunctions); + Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d)); + d->f.VertexBindingDivisor(bindingindex, divisor); + Q_OPENGL_FUNCTIONS_DEBUG +} + +QT_END_NAMESPACE + +#undef QT_OPENGL_DECLARE_FUNCTIONS +#undef QT_OPENGL_COUNT_FUNCTIONS +#undef QT_OPENGL_DECLARE + +#ifdef Q_OS_WIN +#pragma pop_macro("MemoryBarrier") +#endif + +#endif // QT_NO_OPENGL + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglframebufferobject.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglframebufferobject.h new file mode 100644 index 000000000..b9e61e9ee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglframebufferobject.h @@ -0,0 +1,190 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLFRAMEBUFFEROBJECT_H +#define QOPENGLFRAMEBUFFEROBJECT_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#include <QtGui/qopengl.h> +#include <QtGui/qpaintdevice.h> + +#include <QtCore/qscopedpointer.h> + +QT_BEGIN_NAMESPACE + + +class QOpenGLFramebufferObjectPrivate; +class QOpenGLFramebufferObjectFormat; + +class Q_GUI_EXPORT QOpenGLFramebufferObject +{ + Q_DECLARE_PRIVATE(QOpenGLFramebufferObject) +public: + enum Attachment { + NoAttachment, + CombinedDepthStencil, + Depth + }; + + explicit QOpenGLFramebufferObject(const QSize &size, GLenum target = GL_TEXTURE_2D); + QOpenGLFramebufferObject(int width, int height, GLenum target = GL_TEXTURE_2D); + + QOpenGLFramebufferObject(const QSize &size, Attachment attachment, + GLenum target = GL_TEXTURE_2D, GLenum internalFormat = 0); + QOpenGLFramebufferObject(int width, int height, Attachment attachment, + GLenum target = GL_TEXTURE_2D, GLenum internalFormat = 0); + + QOpenGLFramebufferObject(const QSize &size, const QOpenGLFramebufferObjectFormat &format); + QOpenGLFramebufferObject(int width, int height, const QOpenGLFramebufferObjectFormat &format); + + virtual ~QOpenGLFramebufferObject(); + + void addColorAttachment(const QSize &size, GLenum internalFormat = 0); + void addColorAttachment(int width, int height, GLenum internalFormat = 0); + + QOpenGLFramebufferObjectFormat format() const; + + bool isValid() const; + bool isBound() const; + bool bind(); + bool release(); + + int width() const { return size().width(); } + int height() const { return size().height(); } + + GLuint texture() const; + QVector<GLuint> textures() const; + + GLuint takeTexture(); + GLuint takeTexture(int colorAttachmentIndex); + + QSize size() const; + QVector<QSize> sizes() const; + + QImage toImage() const; + QImage toImage(bool flipped) const; + QImage toImage(bool flipped, int colorAttachmentIndex) const; + + Attachment attachment() const; + void setAttachment(Attachment attachment); + + GLuint handle() const; + + static bool bindDefault(); + + static bool hasOpenGLFramebufferObjects(); + + static bool hasOpenGLFramebufferBlit(); + + enum FramebufferRestorePolicy { + DontRestoreFramebufferBinding, + RestoreFramebufferBindingToDefault, + RestoreFrameBufferBinding + }; + + static void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, + QOpenGLFramebufferObject *source, const QRect &sourceRect, + GLbitfield buffers, + GLenum filter, + int readColorAttachmentIndex, + int drawColorAttachmentIndex, + FramebufferRestorePolicy restorePolicy); + static void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, + QOpenGLFramebufferObject *source, const QRect &sourceRect, + GLbitfield buffers, + GLenum filter, + int readColorAttachmentIndex, + int drawColorAttachmentIndex); + static void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, + QOpenGLFramebufferObject *source, const QRect &sourceRect, + GLbitfield buffers = GL_COLOR_BUFFER_BIT, + GLenum filter = GL_NEAREST); + static void blitFramebuffer(QOpenGLFramebufferObject *target, + QOpenGLFramebufferObject *source, + GLbitfield buffers = GL_COLOR_BUFFER_BIT, + GLenum filter = GL_NEAREST); + +private: + Q_DISABLE_COPY(QOpenGLFramebufferObject) + QScopedPointer<QOpenGLFramebufferObjectPrivate> d_ptr; + friend class QOpenGLPaintDevice; + friend class QOpenGLFBOGLPaintDevice; +}; + +class QOpenGLFramebufferObjectFormatPrivate; +class Q_GUI_EXPORT QOpenGLFramebufferObjectFormat +{ +public: + QOpenGLFramebufferObjectFormat(); + QOpenGLFramebufferObjectFormat(const QOpenGLFramebufferObjectFormat &other); + QOpenGLFramebufferObjectFormat &operator=(const QOpenGLFramebufferObjectFormat &other); + ~QOpenGLFramebufferObjectFormat(); + + void setSamples(int samples); + int samples() const; + + void setMipmap(bool enabled); + bool mipmap() const; + + void setAttachment(QOpenGLFramebufferObject::Attachment attachment); + QOpenGLFramebufferObject::Attachment attachment() const; + + void setTextureTarget(GLenum target); + GLenum textureTarget() const; + + void setInternalTextureFormat(GLenum internalTextureFormat); + GLenum internalTextureFormat() const; + + bool operator==(const QOpenGLFramebufferObjectFormat& other) const; + bool operator!=(const QOpenGLFramebufferObjectFormat& other) const; + +private: + QOpenGLFramebufferObjectFormatPrivate *d; + + void detach(); +}; + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif // QOPENGLFRAMEBUFFEROBJECT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions.h new file mode 100644 index 000000000..0a5de2c9a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions.h @@ -0,0 +1,2179 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLFUNCTIONS_H +#define QOPENGLFUNCTIONS_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#ifdef __GLEW_H__ +#if defined(Q_CC_GNU) +#warning qopenglfunctions.h is not compatible with GLEW, GLEW defines will be undefined +#warning To use GLEW with Qt, do not include <qopengl.h> or <QOpenGLFunctions> after glew.h +#endif +#endif + +#include <QtGui/qopengl.h> +#include <QtGui/qopenglcontext.h> + +//#define Q_ENABLE_OPENGL_FUNCTIONS_DEBUG + +#ifdef QT_OPENGL_ES +typedef double GLdouble; +#endif + +#ifdef Q_ENABLE_OPENGL_FUNCTIONS_DEBUG +#include <stdio.h> +#define Q_OPENGL_FUNCTIONS_DEBUG \ + GLenum error = glGetError(); \ + if (error != GL_NO_ERROR) { \ + unsigned clamped = qMin(unsigned(error - GL_INVALID_ENUM), 4U); \ + const char *errors[] = { "GL_INVALID_ENUM", "GL_INVALID_VALUE", "GL_INVALID_OPERATION", "Unknown" }; \ + printf("GL error at %s:%d: %s\n", __FILE__, __LINE__, errors[clamped]); \ + int *value = 0; \ + *value = 0; \ + } +#else +#define Q_OPENGL_FUNCTIONS_DEBUG +#endif + +QT_BEGIN_NAMESPACE + +struct QOpenGLFunctionsPrivate; + +// Undefine any macros from GLEW, qopenglextensions_p.h, etc that +// may interfere with the definition of QOpenGLFunctions. +#undef glBindTexture +#undef glBlendFunc +#undef glClear +#undef glClearColor +#undef glClearStencil +#undef glColorMask +#undef glCopyTexImage2D +#undef glCopyTexSubImage2D +#undef glCullFace +#undef glDeleteTextures +#undef glDepthFunc +#undef glDepthMask +#undef glDisable +#undef glDrawArrays +#undef glDrawElements +#undef glEnable +#undef glFinish +#undef glFlush +#undef glFrontFace +#undef glGenTextures +#undef glGetBooleanv +#undef glGetError +#undef glGetFloatv +#undef glGetIntegerv +#undef glGetString +#undef glGetTexParameterfv +#undef glGetTexParameteriv +#undef glHint +#undef glIsEnabled +#undef glIsTexture +#undef glLineWidth +#undef glPixelStorei +#undef glPolygonOffset +#undef glReadPixels +#undef glScissor +#undef glStencilFunc +#undef glStencilMask +#undef glStencilOp +#undef glTexImage2D +#undef glTexParameterf +#undef glTexParameterfv +#undef glTexParameteri +#undef glTexParameteriv +#undef glTexSubImage2D +#undef glViewport + +#undef glActiveTexture +#undef glAttachShader +#undef glBindAttribLocation +#undef glBindBuffer +#undef glBindFramebuffer +#undef glBindRenderbuffer +#undef glBlendColor +#undef glBlendEquation +#undef glBlendEquationSeparate +#undef glBlendFuncSeparate +#undef glBufferData +#undef glBufferSubData +#undef glCheckFramebufferStatus +#undef glClearDepthf +#undef glCompileShader +#undef glCompressedTexImage2D +#undef glCompressedTexSubImage2D +#undef glCreateProgram +#undef glCreateShader +#undef glDeleteBuffers +#undef glDeleteFramebuffers +#undef glDeleteProgram +#undef glDeleteRenderbuffers +#undef glDeleteShader +#undef glDepthRangef +#undef glDetachShader +#undef glDisableVertexAttribArray +#undef glEnableVertexAttribArray +#undef glFramebufferRenderbuffer +#undef glFramebufferTexture2D +#undef glGenBuffers +#undef glGenerateMipmap +#undef glGenFramebuffers +#undef glGenRenderbuffers +#undef glGetActiveAttrib +#undef glGetActiveUniform +#undef glGetAttachedShaders +#undef glGetAttribLocation +#undef glGetBufferParameteriv +#undef glGetFramebufferAttachmentParameteriv +#undef glGetProgramiv +#undef glGetProgramInfoLog +#undef glGetRenderbufferParameteriv +#undef glGetShaderiv +#undef glGetShaderInfoLog +#undef glGetShaderPrecisionFormat +#undef glGetShaderSource +#undef glGetUniformfv +#undef glGetUniformiv +#undef glGetUniformLocation +#undef glGetVertexAttribfv +#undef glGetVertexAttribiv +#undef glGetVertexAttribPointerv +#undef glIsBuffer +#undef glIsFramebuffer +#undef glIsProgram +#undef glIsRenderbuffer +#undef glIsShader +#undef glLinkProgram +#undef glReleaseShaderCompiler +#undef glRenderbufferStorage +#undef glSampleCoverage +#undef glShaderBinary +#undef glShaderSource +#undef glStencilFuncSeparate +#undef glStencilMaskSeparate +#undef glStencilOpSeparate +#undef glUniform1f +#undef glUniform1fv +#undef glUniform1i +#undef glUniform1iv +#undef glUniform2f +#undef glUniform2fv +#undef glUniform2i +#undef glUniform2iv +#undef glUniform3f +#undef glUniform3fv +#undef glUniform3i +#undef glUniform3iv +#undef glUniform4f +#undef glUniform4fv +#undef glUniform4i +#undef glUniform4iv +#undef glUniformMatrix2fv +#undef glUniformMatrix3fv +#undef glUniformMatrix4fv +#undef glUseProgram +#undef glValidateProgram +#undef glVertexAttrib1f +#undef glVertexAttrib1fv +#undef glVertexAttrib2f +#undef glVertexAttrib2fv +#undef glVertexAttrib3f +#undef glVertexAttrib3fv +#undef glVertexAttrib4f +#undef glVertexAttrib4fv +#undef glVertexAttribPointer + +#undef glTexLevelParameteriv + +class Q_GUI_EXPORT QOpenGLFunctions +{ +public: + QOpenGLFunctions(); + explicit QOpenGLFunctions(QOpenGLContext *context); + ~QOpenGLFunctions() {} + + enum OpenGLFeature + { + Multitexture = 0x0001, + Shaders = 0x0002, + Buffers = 0x0004, + Framebuffers = 0x0008, + BlendColor = 0x0010, + BlendEquation = 0x0020, + BlendEquationSeparate = 0x0040, + BlendFuncSeparate = 0x0080, + BlendSubtract = 0x0100, + CompressedTextures = 0x0200, + Multisample = 0x0400, + StencilSeparate = 0x0800, + NPOTTextures = 0x1000, + NPOTTextureRepeat = 0x2000, + FixedFunctionPipeline = 0x4000, + TextureRGFormats = 0x8000, + MultipleRenderTargets = 0x10000 + }; + Q_DECLARE_FLAGS(OpenGLFeatures, OpenGLFeature) + + QOpenGLFunctions::OpenGLFeatures openGLFeatures() const; + bool hasOpenGLFeature(QOpenGLFunctions::OpenGLFeature feature) const; + + void initializeOpenGLFunctions(); + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED void initializeGLFunctions() { initializeOpenGLFunctions(); } +#endif + + // GLES2 + OpenGL1 common subset + void glBindTexture(GLenum target, GLuint texture); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glClear(GLbitfield mask); + void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + void glClearStencil(GLint s); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + 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); + void glCullFace(GLenum mode); + void glDeleteTextures(GLsizei n, const GLuint* textures); + void glDepthFunc(GLenum func); + void glDepthMask(GLboolean flag); + void glDisable(GLenum cap); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); + void glEnable(GLenum cap); + void glFinish(); + void glFlush(); + void glFrontFace(GLenum mode); + void glGenTextures(GLsizei n, GLuint* textures); + void glGetBooleanv(GLenum pname, GLboolean* params); + GLenum glGetError(); + void glGetFloatv(GLenum pname, GLfloat* params); + void glGetIntegerv(GLenum pname, GLint* params); + const GLubyte *glGetString(GLenum name); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint* params); + void glHint(GLenum target, GLenum mode); + GLboolean glIsEnabled(GLenum cap); + GLboolean glIsTexture(GLuint texture); + void glLineWidth(GLfloat width); + 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 glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glStencilMask(GLuint mask); + void glStencilOp(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 glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + + // GL(ES)2 + void glActiveTexture(GLenum texture); + void glAttachShader(GLuint program, GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const char* name); + void glBindBuffer(GLenum target, GLuint buffer); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + void glBlendEquation(GLenum mode); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + void glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBufferData(GLenum target, qopengl_GLsizeiptr size, const void* data, GLenum usage); + void glBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, const void* data); + GLenum glCheckFramebufferStatus(GLenum target); + void glClearDepthf(GLclampf depth); + void glCompileShader(GLuint shader); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); + GLuint glCreateProgram(); + GLuint glCreateShader(GLenum type); + 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 glDepthRangef(GLclampf zNear, GLclampf zFar); + void glDetachShader(GLuint program, GLuint shader); + void glDisableVertexAttribArray(GLuint index); + void glEnableVertexAttribArray(GLuint index); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glGenBuffers(GLsizei n, GLuint* buffers); + void glGenerateMipmap(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint* framebuffers); + void glGenRenderbuffers(GLsizei n, GLuint* renderbuffers); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name); + void glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); + GLint glGetAttribLocation(GLuint program, const char* name); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params); + void glGetProgramiv(GLuint program, GLenum pname, GLint* params); + void glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* 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, char* infolog); + void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); + void glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source); + void glGetUniformfv(GLuint program, GLint location, GLfloat* params); + void glGetUniformiv(GLuint program, GLint location, GLint* params); + GLint glGetUniformLocation(GLuint program, const char* name); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer); + GLboolean glIsBuffer(GLuint buffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + GLboolean glIsProgram(GLuint program); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + GLboolean glIsShader(GLuint shader); + void glLinkProgram(GLuint program); + void glReleaseShaderCompiler(); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glSampleCoverage(GLclampf value, GLboolean invert); + void glShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLint length); + void glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); + 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 void* ptr); + +protected: + QOpenGLFunctionsPrivate *d_ptr; + static bool isInitialized(const QOpenGLFunctionsPrivate *d) { return d != Q_NULLPTR; } +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLFunctions::OpenGLFeatures) + +#define QT_OPENGL_DECLARE_FUNCTIONS(ret, name, args) \ + ret (QOPENGLF_APIENTRYP name)args; +#define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1 + +#define QT_OPENGL_DECLARE(FUNCTIONS) \ +public: \ + struct Functions { \ + FUNCTIONS(QT_OPENGL_DECLARE_FUNCTIONS) \ + }; \ + union { \ + QFunctionPointer functions[FUNCTIONS(QT_OPENGL_COUNT_FUNCTIONS)]; \ + Functions f; \ + }; \ +private: \ + void init(QOpenGLContext *context); + +struct QOpenGLFunctionsPrivate +{ + QOpenGLFunctionsPrivate(QOpenGLContext *ctx); + +#define QT_OPENGL_FUNCTIONS(F) \ + F(void, BindTexture, (GLenum target, GLuint texture)) \ + F(void, BlendFunc, (GLenum sfactor, GLenum dfactor)) \ + F(void, Clear, (GLbitfield mask)) \ + F(void, ClearColor, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)) \ + F(void, ClearDepthf, (GLclampf depth)) \ + F(void, ClearStencil, (GLint s)) \ + F(void, ColorMask, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)) \ + F(void, CopyTexImage2D, (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)) \ + F(void, CopyTexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, CullFace, (GLenum mode)) \ + F(void, DeleteTextures, (GLsizei n, const GLuint* textures)) \ + F(void, DepthFunc, (GLenum func)) \ + F(void, DepthMask, (GLboolean flag)) \ + F(void, DepthRangef, (GLclampf nearVal, GLclampf farVal)) \ + F(void, Disable, (GLenum cap)) \ + F(void, DrawArrays, (GLenum mode, GLint first, GLsizei count)) \ + F(void, DrawElements, (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)) \ + F(void, Enable, (GLenum cap)) \ + F(void, Finish, ()) \ + F(void, Flush, ()) \ + F(void, FrontFace, (GLenum mode)) \ + F(void, GenTextures, (GLsizei n, GLuint* textures)) \ + F(void, GetBooleanv, (GLenum pname, GLboolean* params)) \ + F(GLenum, GetError, ()) \ + F(void, GetFloatv, (GLenum pname, GLfloat* params)) \ + F(void, GetIntegerv, (GLenum pname, GLint* params)) \ + F(const GLubyte *, GetString, (GLenum name)) \ + F(void, GetTexParameterfv, (GLenum target, GLenum pname, GLfloat* params)) \ + F(void, GetTexParameteriv, (GLenum target, GLenum pname, GLint* params)) \ + F(void, Hint, (GLenum target, GLenum mode)) \ + F(GLboolean, IsEnabled, (GLenum cap)) \ + F(GLboolean, IsTexture, (GLuint texture)) \ + F(void, LineWidth, (GLfloat width)) \ + F(void, PixelStorei, (GLenum pname, GLint param)) \ + F(void, PolygonOffset, (GLfloat factor, GLfloat units)) \ + F(void, ReadPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)) \ + F(void, Scissor, (GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, StencilFunc, (GLenum func, GLint ref, GLuint mask)) \ + F(void, StencilMask, (GLuint mask)) \ + F(void, StencilOp, (GLenum fail, GLenum zfail, GLenum zpass)) \ + F(void, TexImage2D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)) \ + F(void, TexParameterf, (GLenum target, GLenum pname, GLfloat param)) \ + F(void, TexParameterfv, (GLenum target, GLenum pname, const GLfloat* params)) \ + F(void, TexParameteri, (GLenum target, GLenum pname, GLint param)) \ + F(void, TexParameteriv, (GLenum target, GLenum pname, const GLint* params)) \ + F(void, TexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)) \ + F(void, Viewport, (GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, ActiveTexture, (GLenum texture)) \ + F(void, AttachShader, (GLuint program, GLuint shader)) \ + F(void, BindAttribLocation, (GLuint program, GLuint index, const char* name)) \ + F(void, BindBuffer, (GLenum target, GLuint buffer)) \ + F(void, BindFramebuffer, (GLenum target, GLuint framebuffer)) \ + F(void, BindRenderbuffer, (GLenum target, GLuint renderbuffer)) \ + F(void, BlendColor, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)) \ + F(void, BlendEquation, (GLenum mode)) \ + F(void, BlendEquationSeparate, (GLenum modeRGB, GLenum modeAlpha)) \ + F(void, BlendFuncSeparate, (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) \ + F(void, BufferData, (GLenum target, qopengl_GLsizeiptr size, const void* data, GLenum usage)) \ + F(void, BufferSubData, (GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, const void* data)) \ + F(GLenum, CheckFramebufferStatus, (GLenum target)) \ + F(void, CompileShader, (GLuint shader)) \ + F(void, CompressedTexImage2D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data)) \ + F(void, CompressedTexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data)) \ + F(GLuint, CreateProgram, ()) \ + F(GLuint, CreateShader, (GLenum type)) \ + F(void, DeleteBuffers, (GLsizei n, const GLuint* buffers)) \ + F(void, DeleteFramebuffers, (GLsizei n, const GLuint* framebuffers)) \ + F(void, DeleteProgram, (GLuint program)) \ + F(void, DeleteRenderbuffers, (GLsizei n, const GLuint* renderbuffers)) \ + F(void, DeleteShader, (GLuint shader)) \ + F(void, DetachShader, (GLuint program, GLuint shader)) \ + F(void, DisableVertexAttribArray, (GLuint index)) \ + F(void, EnableVertexAttribArray, (GLuint index)) \ + F(void, FramebufferRenderbuffer, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) \ + F(void, FramebufferTexture2D, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) \ + F(void, GenBuffers, (GLsizei n, GLuint* buffers)) \ + F(void, GenerateMipmap, (GLenum target)) \ + F(void, GenFramebuffers, (GLsizei n, GLuint* framebuffers)) \ + F(void, GenRenderbuffers, (GLsizei n, GLuint* renderbuffers)) \ + F(void, GetActiveAttrib, (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)) \ + F(void, GetActiveUniform, (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)) \ + F(void, GetAttachedShaders, (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)) \ + F(GLint, GetAttribLocation, (GLuint program, const char* name)) \ + F(void, GetBufferParameteriv, (GLenum target, GLenum pname, GLint* params)) \ + F(void, GetFramebufferAttachmentParameteriv, (GLenum target, GLenum attachment, GLenum pname, GLint* params)) \ + F(void, GetProgramiv, (GLuint program, GLenum pname, GLint* params)) \ + F(void, GetProgramInfoLog, (GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)) \ + F(void, GetRenderbufferParameteriv, (GLenum target, GLenum pname, GLint* params)) \ + F(void, GetShaderiv, (GLuint shader, GLenum pname, GLint* params)) \ + F(void, GetShaderInfoLog, (GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)) \ + F(void, GetShaderPrecisionFormat, (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)) \ + F(void, GetShaderSource, (GLuint shader, GLsizei bufsize, GLsizei* length, char* source)) \ + F(void, GetUniformfv, (GLuint program, GLint location, GLfloat* params)) \ + F(void, GetUniformiv, (GLuint program, GLint location, GLint* params)) \ + F(GLint, GetUniformLocation, (GLuint program, const char* name)) \ + F(void, GetVertexAttribfv, (GLuint index, GLenum pname, GLfloat* params)) \ + F(void, GetVertexAttribiv, (GLuint index, GLenum pname, GLint* params)) \ + F(void, GetVertexAttribPointerv, (GLuint index, GLenum pname, void** pointer)) \ + F(GLboolean, IsBuffer, (GLuint buffer)) \ + F(GLboolean, IsFramebuffer, (GLuint framebuffer)) \ + F(GLboolean, IsProgram, (GLuint program)) \ + F(GLboolean, IsRenderbuffer, (GLuint renderbuffer)) \ + F(GLboolean, IsShader, (GLuint shader)) \ + F(void, LinkProgram, (GLuint program)) \ + F(void, ReleaseShaderCompiler, ()) \ + F(void, RenderbufferStorage, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) \ + F(void, SampleCoverage, (GLclampf value, GLboolean invert)) \ + F(void, ShaderBinary, (GLint n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLint length)) \ + F(void, ShaderSource, (GLuint shader, GLsizei count, const char** string, const GLint* length)) \ + F(void, StencilFuncSeparate, (GLenum face, GLenum func, GLint ref, GLuint mask)) \ + F(void, StencilMaskSeparate, (GLenum face, GLuint mask)) \ + F(void, StencilOpSeparate, (GLenum face, GLenum fail, GLenum zfail, GLenum zpass)) \ + F(void, Uniform1f, (GLint location, GLfloat x)) \ + F(void, Uniform1fv, (GLint location, GLsizei count, const GLfloat* v)) \ + F(void, Uniform1i, (GLint location, GLint x)) \ + F(void, Uniform1iv, (GLint location, GLsizei count, const GLint* v)) \ + F(void, Uniform2f, (GLint location, GLfloat x, GLfloat y)) \ + F(void, Uniform2fv, (GLint location, GLsizei count, const GLfloat* v)) \ + F(void, Uniform2i, (GLint location, GLint x, GLint y)) \ + F(void, Uniform2iv, (GLint location, GLsizei count, const GLint* v)) \ + F(void, Uniform3f, (GLint location, GLfloat x, GLfloat y, GLfloat z)) \ + F(void, Uniform3fv, (GLint location, GLsizei count, const GLfloat* v)) \ + F(void, Uniform3i, (GLint location, GLint x, GLint y, GLint z)) \ + F(void, Uniform3iv, (GLint location, GLsizei count, const GLint* v)) \ + F(void, Uniform4f, (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) \ + F(void, Uniform4fv, (GLint location, GLsizei count, const GLfloat* v)) \ + F(void, Uniform4i, (GLint location, GLint x, GLint y, GLint z, GLint w)) \ + F(void, Uniform4iv, (GLint location, GLsizei count, const GLint* v)) \ + F(void, UniformMatrix2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)) \ + F(void, UniformMatrix3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)) \ + F(void, UniformMatrix4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)) \ + F(void, UseProgram, (GLuint program)) \ + F(void, ValidateProgram, (GLuint program)) \ + F(void, VertexAttrib1f, (GLuint indx, GLfloat x)) \ + F(void, VertexAttrib1fv, (GLuint indx, const GLfloat* values)) \ + F(void, VertexAttrib2f, (GLuint indx, GLfloat x, GLfloat y)) \ + F(void, VertexAttrib2fv, (GLuint indx, const GLfloat* values)) \ + F(void, VertexAttrib3f, (GLuint indx, GLfloat x, GLfloat y, GLfloat z)) \ + F(void, VertexAttrib3fv, (GLuint indx, const GLfloat* values)) \ + F(void, VertexAttrib4f, (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) \ + F(void, VertexAttrib4fv, (GLuint indx, const GLfloat* values)) \ + F(void, VertexAttribPointer, (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr)) \ + F(void, ClearDepth, (GLdouble depth)) \ + F(void, DepthRange, (GLdouble zNear, GLdouble zFar)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_FUNCTIONS) +}; + +// GLES2 + OpenGL1 common subset + +inline void QOpenGLFunctions::glBindTexture(GLenum target, GLuint texture) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBindTexture(target, texture); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BindTexture(target, texture); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBlendFunc(sfactor, dfactor); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BlendFunc(sfactor, dfactor); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glClear(GLbitfield mask) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glClear(mask); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Clear(mask); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glClearColor(red, green, blue, alpha); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.ClearColor(red, green, blue, alpha); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glClearStencil(GLint s) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glClearStencil(s); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.ClearStencil(s); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glColorMask(red, green, blue, alpha); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.ColorMask(red, green, blue, alpha); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glCopyTexImage2D(target, level, internalformat, x, y, width,height, border); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.CopyTexImage2D(target, level, internalformat, x, y, width,height, border); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glCullFace(GLenum mode) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glCullFace(mode); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.CullFace(mode); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDeleteTextures(GLsizei n, const GLuint* textures) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDeleteTextures(n, textures); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DeleteTextures(n, textures); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDepthFunc(GLenum func) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDepthFunc(func); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DepthFunc(func); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDepthMask(GLboolean flag) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDepthMask(flag); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DepthMask(flag); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDisable(GLenum cap) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDisable(cap); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Disable(cap); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDrawArrays(mode, first, count); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DrawArrays(mode, first, count); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDrawElements(mode, count, type, indices); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DrawElements(mode, count, type, indices); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glEnable(GLenum cap) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glEnable(cap); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Enable(cap); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glFinish() +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glFinish(); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Finish(); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glFlush() +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glFlush(); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Flush(); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glFrontFace(GLenum mode) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glFrontFace(mode); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.FrontFace(mode); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGenTextures(GLsizei n, GLuint* textures) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGenTextures(n, textures); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GenTextures(n, textures); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetBooleanv(GLenum pname, GLboolean* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetBooleanv(pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetBooleanv(pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLenum QOpenGLFunctions::glGetError() +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLenum result = ::glGetError(); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLenum result = d_ptr->f.GetError(); +#endif + return result; +} + +inline void QOpenGLFunctions::glGetFloatv(GLenum pname, GLfloat* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetFloatv(pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetFloatv(pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetIntegerv(GLenum pname, GLint* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetIntegerv(pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetIntegerv(pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline const GLubyte *QOpenGLFunctions::glGetString(GLenum name) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + const GLubyte *result = ::glGetString(name); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + const GLubyte *result = d_ptr->f.GetString(name); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLFunctions::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetTexParameterfv(target, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetTexParameterfv(target, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetTexParameteriv(target, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetTexParameteriv(target, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glHint(GLenum target, GLenum mode) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glHint(target, mode); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Hint(target, mode); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLboolean QOpenGLFunctions::glIsEnabled(GLenum cap) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLboolean result = ::glIsEnabled(cap); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLboolean result = d_ptr->f.IsEnabled(cap); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLboolean QOpenGLFunctions::glIsTexture(GLuint texture) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLboolean result = ::glIsTexture(texture); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLboolean result = d_ptr->f.IsTexture(texture); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLFunctions::glLineWidth(GLfloat width) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glLineWidth(width); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.LineWidth(width); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glPixelStorei(GLenum pname, GLint param) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glPixelStorei(pname, param); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.PixelStorei(pname, param); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glPolygonOffset(GLfloat factor, GLfloat units) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glPolygonOffset(factor, units); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.PolygonOffset(factor, units); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glReadPixels(x, y, width, height, format, type, pixels); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.ReadPixels(x, y, width, height, format, type, pixels); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glScissor(x, y, width, height); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Scissor(x, y, width, height); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glStencilFunc(func, ref, mask); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.StencilFunc(func, ref, mask); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glStencilMask(GLuint mask) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glStencilMask(mask); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.StencilMask(mask); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glStencilOp(fail, zfail, zpass); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.StencilOp(fail, zfail, zpass); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glTexImage2D(target, level, internalformat, width,height, border, format, type, pixels); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.TexImage2D(target, level, internalformat, width,height, border, format, type, pixels); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glTexParameterf(target, pname, param); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.TexParameterf(target, pname, param); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glTexParameterfv(target, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.TexParameterfv(target, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glTexParameteri(target, pname, param); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.TexParameteri(target, pname, param); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glTexParameteriv(GLenum target, GLenum pname, const GLint* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glTexParameteriv(target, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.TexParameteriv(target, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glViewport(x, y, width, height); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Viewport(x, y, width, height); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +// GL(ES)2 + +inline void QOpenGLFunctions::glActiveTexture(GLenum texture) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glActiveTexture(texture); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.ActiveTexture(texture); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glAttachShader(GLuint program, GLuint shader) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glAttachShader(program, shader); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.AttachShader(program, shader); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBindAttribLocation(GLuint program, GLuint index, const char* name) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBindAttribLocation(program, index, name); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BindAttribLocation(program, index, name); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBindBuffer(GLenum target, GLuint buffer) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBindBuffer(target, buffer); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BindBuffer(target, buffer); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + if (framebuffer == 0) + framebuffer = QOpenGLContext::currentContext()->defaultFramebufferObject(); +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBindFramebuffer(target, framebuffer); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BindFramebuffer(target, framebuffer); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBindRenderbuffer(target, renderbuffer); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BindRenderbuffer(target, renderbuffer); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBlendColor(red, green, blue, alpha); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BlendColor(red, green, blue, alpha); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBlendEquation(GLenum mode) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBlendEquation(mode); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BlendEquation(mode); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBlendEquationSeparate(modeRGB, modeAlpha); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BlendEquationSeparate(modeRGB, modeAlpha); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBufferData(GLenum target, qopengl_GLsizeiptr size, const void* data, GLenum usage) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBufferData(target, size, data, usage); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BufferData(target, size, data, usage); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, const void* data) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glBufferSubData(target, offset, size, data); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.BufferSubData(target, offset, size, data); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLenum QOpenGLFunctions::glCheckFramebufferStatus(GLenum target) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLenum result = ::glCheckFramebufferStatus(target); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLenum result = d_ptr->f.CheckFramebufferStatus(target); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLFunctions::glClearDepthf(GLclampf depth) +{ +#if defined(QT_OPENGL_ES) && defined(Q_OS_ANDROID) + ::glClearDepthf(depth); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.ClearDepthf(depth); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glCompileShader(GLuint shader) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glCompileShader(shader); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.CompileShader(shader); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLuint QOpenGLFunctions::glCreateProgram() +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLuint result = ::glCreateProgram(); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLuint result = d_ptr->f.CreateProgram(); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLuint QOpenGLFunctions::glCreateShader(GLenum type) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLuint result = ::glCreateShader(type); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLuint result = d_ptr->f.CreateShader(type); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLFunctions::glDeleteBuffers(GLsizei n, const GLuint* buffers) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDeleteBuffers(n, buffers); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DeleteBuffers(n, buffers); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDeleteFramebuffers(n, framebuffers); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DeleteFramebuffers(n, framebuffers); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDeleteProgram(GLuint program) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDeleteProgram(program); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DeleteProgram(program); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDeleteRenderbuffers(n, renderbuffers); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DeleteRenderbuffers(n, renderbuffers); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDeleteShader(GLuint shader) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDeleteShader(shader); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DeleteShader(shader); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDepthRangef(GLclampf zNear, GLclampf zFar) +{ +#if defined(QT_OPENGL_ES) && defined(Q_OS_ANDROID) + ::glDepthRangef(zNear, zFar); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DepthRangef(zNear, zFar); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDetachShader(GLuint program, GLuint shader) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDetachShader(program, shader); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DetachShader(program, shader); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glDisableVertexAttribArray(GLuint index) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glDisableVertexAttribArray(index); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.DisableVertexAttribArray(index); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glEnableVertexAttribArray(GLuint index) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glEnableVertexAttribArray(index); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.EnableVertexAttribArray(index); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glFramebufferTexture2D(target, attachment, textarget, texture, level); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.FramebufferTexture2D(target, attachment, textarget, texture, level); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGenBuffers(GLsizei n, GLuint* buffers) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGenBuffers(n, buffers); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GenBuffers(n, buffers); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGenerateMipmap(GLenum target) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGenerateMipmap(target); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GenerateMipmap(target); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGenFramebuffers(GLsizei n, GLuint* framebuffers) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGenFramebuffers(n, framebuffers); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GenFramebuffers(n, framebuffers); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGenRenderbuffers(n, renderbuffers); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GenRenderbuffers(n, renderbuffers); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetActiveAttrib(program, index, bufsize, length, size, type, name); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetActiveAttrib(program, index, bufsize, length, size, type, name); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetActiveUniform(program, index, bufsize, length, size, type, name); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetActiveUniform(program, index, bufsize, length, size, type, name); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetAttachedShaders(program, maxcount, count, shaders); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetAttachedShaders(program, maxcount, count, shaders); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLint QOpenGLFunctions::glGetAttribLocation(GLuint program, const char* name) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLint result = ::glGetAttribLocation(program, name); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLint result = d_ptr->f.GetAttribLocation(program, name); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLFunctions::glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetBufferParameteriv(target, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetBufferParameteriv(target, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetFramebufferAttachmentParameteriv(target, attachment, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetProgramiv(GLuint program, GLenum pname, GLint* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetProgramiv(program, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetProgramiv(program, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetProgramInfoLog(program, bufsize, length, infolog); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetProgramInfoLog(program, bufsize, length, infolog); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetRenderbufferParameteriv(target, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetRenderbufferParameteriv(target, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetShaderiv(GLuint shader, GLenum pname, GLint* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetShaderiv(shader, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetShaderiv(shader, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetShaderInfoLog(shader, bufsize, length, infolog); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetShaderInfoLog(shader, bufsize, length, infolog); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetShaderSource(shader, bufsize, length, source); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetShaderSource(shader, bufsize, length, source); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetUniformfv(GLuint program, GLint location, GLfloat* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetUniformfv(program, location, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetUniformfv(program, location, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetUniformiv(GLuint program, GLint location, GLint* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetUniformiv(program, location, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetUniformiv(program, location, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLint QOpenGLFunctions::glGetUniformLocation(GLuint program, const char* name) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLint result = ::glGetUniformLocation(program, name); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLint result = d_ptr->f.GetUniformLocation(program, name); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLFunctions::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetVertexAttribfv(index, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetVertexAttribfv(index, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetVertexAttribiv(index, pname, params); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetVertexAttribiv(index, pname, params); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glGetVertexAttribPointerv(index, pname, pointer); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.GetVertexAttribPointerv(index, pname, pointer); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline GLboolean QOpenGLFunctions::glIsBuffer(GLuint buffer) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLboolean result = ::glIsBuffer(buffer); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLboolean result = d_ptr->f.IsBuffer(buffer); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLboolean QOpenGLFunctions::glIsFramebuffer(GLuint framebuffer) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLboolean result = ::glIsFramebuffer(framebuffer); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLboolean result = d_ptr->f.IsFramebuffer(framebuffer); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLboolean QOpenGLFunctions::glIsProgram(GLuint program) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLboolean result = ::glIsProgram(program); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLboolean result = d_ptr->f.IsProgram(program); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLboolean QOpenGLFunctions::glIsRenderbuffer(GLuint renderbuffer) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLboolean result = ::glIsRenderbuffer(renderbuffer); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLboolean result = d_ptr->f.IsRenderbuffer(renderbuffer); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline GLboolean QOpenGLFunctions::glIsShader(GLuint shader) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + GLboolean result = ::glIsShader(shader); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + GLboolean result = d_ptr->f.IsShader(shader); +#endif + Q_OPENGL_FUNCTIONS_DEBUG + return result; +} + +inline void QOpenGLFunctions::glLinkProgram(GLuint program) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glLinkProgram(program); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.LinkProgram(program); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glReleaseShaderCompiler() +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glReleaseShaderCompiler(); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.ReleaseShaderCompiler(); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glRenderbufferStorage(target, internalformat, width, height); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.RenderbufferStorage(target, internalformat, width, height); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glSampleCoverage(GLclampf value, GLboolean invert) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glSampleCoverage(value, invert); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.SampleCoverage(value, invert); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLint length) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glShaderBinary(n, shaders, binaryformat, binary, length); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.ShaderBinary(n, shaders, binaryformat, binary, length); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glShaderSource(shader, count, string, length); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.ShaderSource(shader, count, string, length); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glStencilFuncSeparate(face, func, ref, mask); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.StencilFuncSeparate(face, func, ref, mask); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glStencilMaskSeparate(GLenum face, GLuint mask) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glStencilMaskSeparate(face, mask); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.StencilMaskSeparate(face, mask); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glStencilOpSeparate(face, fail, zfail, zpass); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.StencilOpSeparate(face, fail, zfail, zpass); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform1f(GLint location, GLfloat x) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform1f(location, x); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform1f(location, x); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform1fv(GLint location, GLsizei count, const GLfloat* v) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform1fv(location, count, v); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform1fv(location, count, v); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform1i(GLint location, GLint x) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform1i(location, x); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform1i(location, x); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform1iv(GLint location, GLsizei count, const GLint* v) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform1iv(location, count, v); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform1iv(location, count, v); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform2f(GLint location, GLfloat x, GLfloat y) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform2f(location, x, y); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform2f(location, x, y); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform2fv(GLint location, GLsizei count, const GLfloat* v) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform2fv(location, count, v); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform2fv(location, count, v); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform2i(GLint location, GLint x, GLint y) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform2i(location, x, y); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform2i(location, x, y); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform2iv(GLint location, GLsizei count, const GLint* v) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform2iv(location, count, v); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform2iv(location, count, v); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform3f(location, x, y, z); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform3f(location, x, y, z); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform3fv(GLint location, GLsizei count, const GLfloat* v) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform3fv(location, count, v); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform3fv(location, count, v); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform3i(GLint location, GLint x, GLint y, GLint z) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform3i(location, x, y, z); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform3i(location, x, y, z); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform3iv(GLint location, GLsizei count, const GLint* v) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform3iv(location, count, v); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform3iv(location, count, v); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform4f(location, x, y, z, w); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform4f(location, x, y, z, w); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform4fv(GLint location, GLsizei count, const GLfloat* v) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform4fv(location, count, v); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform4fv(location, count, v); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform4i(location, x, y, z, w); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform4i(location, x, y, z, w); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniform4iv(GLint location, GLsizei count, const GLint* v) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniform4iv(location, count, v); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.Uniform4iv(location, count, v); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniformMatrix2fv(location, count, transpose, value); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.UniformMatrix2fv(location, count, transpose, value); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniformMatrix3fv(location, count, transpose, value); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.UniformMatrix3fv(location, count, transpose, value); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUniformMatrix4fv(location, count, transpose, value); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.UniformMatrix4fv(location, count, transpose, value); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glUseProgram(GLuint program) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glUseProgram(program); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.UseProgram(program); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glValidateProgram(GLuint program) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glValidateProgram(program); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.ValidateProgram(program); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glVertexAttrib1f(GLuint indx, GLfloat x) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glVertexAttrib1f(indx, x); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.VertexAttrib1f(indx, x); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glVertexAttrib1fv(GLuint indx, const GLfloat* values) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glVertexAttrib1fv(indx, values); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.VertexAttrib1fv(indx, values); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glVertexAttrib2f(indx, x, y); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.VertexAttrib2f(indx, x, y); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glVertexAttrib2fv(GLuint indx, const GLfloat* values) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glVertexAttrib2fv(indx, values); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.VertexAttrib2fv(indx, values); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glVertexAttrib3f(indx, x, y, z); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.VertexAttrib3f(indx, x, y, z); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glVertexAttrib3fv(GLuint indx, const GLfloat* values) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glVertexAttrib3fv(indx, values); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.VertexAttrib3fv(indx, values); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glVertexAttrib4f(indx, x, y, z, w); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.VertexAttrib4f(indx, x, y, z, w); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glVertexAttrib4fv(GLuint indx, const GLfloat* values) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glVertexAttrib4fv(indx, values); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.VertexAttrib4fv(indx, values); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +inline void QOpenGLFunctions::glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr) +{ +#if defined(QT_OPENGL_ES_2) && defined(Q_OS_ANDROID) + ::glVertexAttribPointer(indx, size, type, normalized, stride, ptr); +#else + Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr)); + d_ptr->f.VertexAttribPointer(indx, size, type, normalized, stride, ptr); +#endif + Q_OPENGL_FUNCTIONS_DEBUG +} + +#undef QT_OPENGL_DECLARE_FUNCTIONS +#undef QT_OPENGL_COUNT_FUNCTIONS +#undef QT_OPENGL_DECLARE + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_0.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_0.h new file mode 100644 index 000000000..828460408 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_0.h @@ -0,0 +1,1929 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_0::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_0::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_0::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_0::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_1_0::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_0::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_1_0::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_0::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_0::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_0::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_0::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_1_0::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_0::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_0::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_0::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_0::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_1_0::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_1_0::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_1_0::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_1_0::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_1_0::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_1_0::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_0::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_1_0::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_1_0::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_0::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_0::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_0::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_0::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_1_0::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_1_0::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_1_0::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_1_0::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_1_0::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_0::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_1_0::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_1_0::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_0::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_0::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_0::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_0::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_0::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_0::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_1_0::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_0::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_1_0::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_0::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_0::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_0::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_0::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_0::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_0::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_0::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_0::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_0::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_0::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_0::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_0::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_0::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_0::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_0::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_0::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_0::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_0::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_0::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_0::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_0::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_0::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_0::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_0::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_1_0::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_1_0::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_1_0::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_1_0::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_1_0::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_1_0::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_1_0::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_1_0::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_1_0::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_1_0::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_0::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_0::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_0::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_0::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_0::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_0::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_0::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_0::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_0::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_0::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_0::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_0::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_0::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_0::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_0::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_0::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_0::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_0::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_0::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_0::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_0::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_0::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_0::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_0::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_0::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_0::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_0::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_0::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_0::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_0::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_0::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_0::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_0::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_0::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_0::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_0::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_1_0::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_0::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_1_0::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_0::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_1_0::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_0::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_1_0::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_0::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_1_0::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_0::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_1_0::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_1_0::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_1_0::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_1_0::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_1_0::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_1_0::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_1_0::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_1_0::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_1_0::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_0::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_0::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_0::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_1_0::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_0::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_1_0::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_0::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_0::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_1_0::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_1_0::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_1.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_1.h new file mode 100644 index 000000000..052d3e93b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_1.h @@ -0,0 +1,2119 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_1::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_1::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_1::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_1::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_1_1::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_1::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_1_1::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_1::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_1::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_1::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_1::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_1_1::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_1::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_1::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_1::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_1::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_1_1::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_1_1::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_1_1::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_1_1::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_1_1::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_1_1::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_1::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_1_1::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_1_1::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_1::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_1::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_1::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_1::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_1_1::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_1_1::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_1_1::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_1_1::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_1_1::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_1_1::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_1_1::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_1_1::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_1_1::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_1_1::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_1_1::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_1_1::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_1_1::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_1::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_1_1::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_1_1::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_1::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_1::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_1::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_1::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_1::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_1::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_1_1::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_1::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_1_1::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_1::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_1::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_1::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_1::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_1::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_1::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_1::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_1::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_1::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_1::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_1::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_1::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_1::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_1::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_1::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_1::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_1::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_1::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_1::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_1::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_1::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_1::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_1::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_1::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_1_1::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_1_1::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_1_1::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_1_1::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_1_1::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_1_1::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_1_1::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_1_1::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_1_1::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_1_1::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_1::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_1::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_1::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_1::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_1::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_1::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_1::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_1::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_1::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_1::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_1::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_1::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_1::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_1::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_1::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_1::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_1::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_1::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_1::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_1::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_1::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_1::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_1::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_1::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_1::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_1::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_1::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_1::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_1::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_1::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_1::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_1::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_1::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_1::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_1::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_1::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_1_1::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_1::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_1_1::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_1::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_1_1::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_1::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_1_1::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_1::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_1_1::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_1::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_1_1::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_1_1::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_1_1::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_1_1::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_1_1::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_1_1::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_1_1::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_1_1::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_1_1::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_1::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_1::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_1::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_1_1::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_1::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_1_1::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_1::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_1::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_1_1::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_1_1::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_1_1::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_1_1::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_1_1::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_1_1::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_1_1::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_1_1::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_1_1::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_2.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_2.h new file mode 100644 index 000000000..6b36500a7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_2.h @@ -0,0 +1,2357 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + +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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_2::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_2::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_2::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_2::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_1_2::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_2::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_1_2::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_2::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_2::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_2::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_2::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_1_2::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_2::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_2::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_2::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_2::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_1_2::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_1_2::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_1_2::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_1_2::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_1_2::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_1_2::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_2::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_1_2::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_1_2::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_2::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_2::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_2::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_2::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_1_2::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_1_2::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_1_2::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_1_2::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_1_2::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_1_2::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_1_2::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_1_2::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_1_2::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_1_2::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_1_2::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_1_2::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_1_2::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_1_2::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_1_2::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_2::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_1_2::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_1_2::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_2::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_2::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_2::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_2::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_2::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_2::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_1_2::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_2::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_1_2::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_2::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_2::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_2::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_2::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_2::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_2::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_2::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_2::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_2::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_2::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_2::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_2::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_2::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_2::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_2::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_2::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_2::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_2::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_2::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_2::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_2::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_2::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_2::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_2::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_1_2::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_1_2::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_1_2::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_1_2::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_1_2::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_1_2::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_1_2::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_1_2::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_1_2::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_1_2::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_2::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_2::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_2::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_2::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_2::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_2::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_2::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_2::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_2::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_2::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_2::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_2::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_2::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_2::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_2::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_2::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_2::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_2::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_2::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_2::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_2::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_2::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_2::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_2::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_2::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_2::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_2::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_2::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_2::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_2::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_2::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_2::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_2::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_2::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_2::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_2::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_1_2::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_2::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_1_2::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_2::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_1_2::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_2::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_1_2::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_2::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_1_2::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_2::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_1_2::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_1_2::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_1_2::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_1_2::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_1_2::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_1_2::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_1_2::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_1_2::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_1_2::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_2::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_2::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_2::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_1_2::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_2::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_1_2::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_2::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_2::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_1_2::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_1_2::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_1_2::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_1_2::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_1_2::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_1_2::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_1_2::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_1_2::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_1_2::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_1_2::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_1_2::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_1_2::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_1_2::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_1_2::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_2::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_1_2::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_2::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_1_2::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_2::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_3.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_3.h new file mode 100644 index 000000000..3ed5851d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_3.h @@ -0,0 +1,2643 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_3::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_3::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_3::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_3::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_1_3::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_3::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_1_3::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_3::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_3::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_3::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_3::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_1_3::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_3::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_3::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_3::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_3::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_1_3::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_1_3::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_1_3::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_1_3::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_1_3::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_1_3::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_3::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_1_3::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_1_3::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_3::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_3::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_3::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_3::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_1_3::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_1_3::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_1_3::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_1_3::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_1_3::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_1_3::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_1_3::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_1_3::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_1_3::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_1_3::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_1_3::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_1_3::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_1_3::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_1_3::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_1_3::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_3::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_1_3::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_1_3::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_3::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_1_3::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_1_3::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_3::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_3::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_3::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_3::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_3::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_3::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_1_3::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_3::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_1_3::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_3::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_3::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_3::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_3::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_3::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_3::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_3::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_3::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_3::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_3::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_3::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_3::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_3::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_3::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_3::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_3::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_3::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_3::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_3::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_3::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_3::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_3::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_3::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_3::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_1_3::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_1_3::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_1_3::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_1_3::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_1_3::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_1_3::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_1_3::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_1_3::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_1_3::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_1_3::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_3::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_3::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_3::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_3::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_3::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_3::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_3::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_3::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_3::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_3::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_3::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_3::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_3::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_3::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_3::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_3::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_3::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_3::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_3::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_3::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_3::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_3::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_3::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_3::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_3::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_3::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_3::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_3::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_3::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_3::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_3::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_3::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_3::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_3::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_3::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_3::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_1_3::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_3::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_1_3::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_3::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_1_3::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_3::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_1_3::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_3::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_1_3::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_3::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_1_3::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_1_3::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_1_3::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_1_3::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_1_3::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_1_3::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_1_3::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_1_3::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_1_3::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_3::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_3::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_3::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_1_3::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_3::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_1_3::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_3::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_3::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_1_3::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_1_3::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_1_3::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_1_3::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_1_3::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_1_3::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_1_3::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_1_3::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_1_3::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_1_3::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_1_3::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_1_3::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_1_3::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_1_3::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_3::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_1_3::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_3::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_1_3::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_3::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_1_3::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_3::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_3::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_3::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_1_3::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_4.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_4.h new file mode 100644 index 000000000..849fad674 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_4.h @@ -0,0 +1,2923 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_4::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_4::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_4::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_4::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_1_4::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_4::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_1_4::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_4::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_4::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_4::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_4::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_1_4::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_4::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_4::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_4::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_4::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_1_4::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_1_4::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_1_4::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_1_4::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_1_4::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_1_4::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_4::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_1_4::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_1_4::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_4::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_4::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_4::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_4::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_1_4::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_1_4::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_1_4::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_1_4::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_1_4::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_1_4::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_1_4::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_1_4::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_1_4::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_1_4::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_1_4::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_1_4::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_1_4::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_1_4::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_1_4::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_4::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_1_4::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_1_4::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_1_4::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_1_4::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_4::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_1_4::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_1_4::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_4::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_4::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_4::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_4::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_4::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_4::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_1_4::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_4::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_1_4::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_4::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_4::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_4::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_4::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_4::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_4::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_4::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_4::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_4::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_4::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_4::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_4::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_4::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_4::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_4::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_4::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_4::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_4::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_4::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_4::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_4::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_4::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_4::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_4::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_1_4::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_1_4::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_1_4::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_1_4::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_1_4::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_1_4::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_1_4::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_1_4::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_1_4::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_1_4::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_4::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_4::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_4::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_4::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_4::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_4::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_4::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_4::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_4::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_4::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_4::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_4::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_4::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_4::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_4::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_4::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_4::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_4::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_4::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_4::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_4::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_4::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_4::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_4::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_4::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_4::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_4::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_4::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_4::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_4::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_4::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_4::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_4::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_4::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_4::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_4::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_1_4::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_4::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_1_4::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_4::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_1_4::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_4::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_1_4::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_4::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_1_4::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_4::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_1_4::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_1_4::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_1_4::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_1_4::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_1_4::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_1_4::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_1_4::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_1_4::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_1_4::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_4::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_4::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_4::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_1_4::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_4::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_1_4::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_4::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_4::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_1_4::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_1_4::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_1_4::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_1_4::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_1_4::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_1_4::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_1_4::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_1_4::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_1_4::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_1_4::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_1_4::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_1_4::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_1_4::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_1_4::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_4::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_1_4::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_4::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_1_4::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_4::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_1_4::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_4::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_4::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_4::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_1_4::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_1_4::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_1_4::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_1_4::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_1_4::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.FogCoordf(coord); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_5.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_5.h new file mode 100644 index 000000000..18914a895 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_1_5.h @@ -0,0 +1,3046 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_5::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_5::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_5::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_5::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_1_5::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_5::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_1_5::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_5::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_5::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_5::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_5::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_1_5::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_5::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_5::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_5::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_5::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_1_5::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_1_5::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_1_5::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_1_5::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_1_5::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_1_5::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_5::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_1_5::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_1_5::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_5::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_5::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_5::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_5::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_1_5::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_1_5::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_1_5::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_1_5::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_1_5::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_1_5::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_1_5::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_1_5::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_1_5::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_1_5::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_1_5::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_1_5::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_1_5::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_1_5::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_1_5::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_5::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_1_5::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_1_5::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_1_5::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_1_5::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_1_5::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_1_5::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_1_5::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_1_5::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->f.BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_1_5::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_1_5::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_1_5::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_1_5::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_1_5::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_1_5::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_1_5::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_1_5::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_1_5::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_1_5::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.GenQueries(n, ids); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_1_5::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_5::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_1_5::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_1_5::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_5::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_5::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_5::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_5::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_5::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_5::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_1_5::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_5::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_1_5::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_5::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_5::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_5::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_5::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_5::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_5::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_5::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_5::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_5::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_5::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_5::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_5::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_5::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_5::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_5::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_5::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_5::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_5::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_5::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_5::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_5::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_5::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_5::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_5::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_1_5::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_1_5::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_1_5::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_1_5::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_1_5::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_1_5::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_1_5::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_1_5::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_1_5::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_1_5::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_5::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_5::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_5::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_5::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_5::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_5::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_5::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_5::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_5::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_5::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_5::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_5::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_5::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_5::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_5::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_5::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_5::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_5::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_5::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_5::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_5::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_5::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_5::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_5::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_5::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_5::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_5::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_5::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_5::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_5::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_5::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_5::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_5::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_5::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_5::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_5::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_1_5::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_5::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_1_5::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_5::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_1_5::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_5::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_1_5::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_5::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_1_5::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_5::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_1_5::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_1_5::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_1_5::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_1_5::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_1_5::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_1_5::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_1_5::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_1_5::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_1_5::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_5::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_5::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_5::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_1_5::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_5::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_1_5::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_5::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_5::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_1_5::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_1_5::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_1_5::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_1_5::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_1_5::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_1_5::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_1_5::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_1_5::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_1_5::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_1_5::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_1_5::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_1_5::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_1_5::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_1_5::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_5::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_1_5::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_5::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_1_5::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_5::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_1_5::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_5::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_5::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_5::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_1_5::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_1_5::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_1_5::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_1_5::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_1_5::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_2_0.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_2_0.h new file mode 100644 index 000000000..74a91e0ff --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_2_0.h @@ -0,0 +1,3614 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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; + void *m_reserved_2_0_Deprecated; // To maintain BC +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_2_0::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_2_0::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_2_0::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_2_0::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_2_0::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_2_0::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_2_0::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_2_0::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_2_0::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_2_0::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_2_0::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_2_0::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_2_0::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_2_0::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_2_0::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_2_0::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_2_0::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_2_0::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_2_0::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_2_0::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_2_0::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_2_0::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_2_0::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_2_0::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_2_0::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_2_0::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_2_0::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_2_0::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_2_0::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_2_0::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_2_0::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_2_0::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_2_0::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_2_0::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_2_0::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_2_0::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_2_0::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_2_0::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_2_0::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_2_0::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_2_0::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_2_0::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_2_0::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_2_0::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_2_0::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_2_0::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_2_0::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_2_0::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_2_0::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_2_0::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_2_0::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_2_0::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->f.BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_2_0::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_2_0::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_2_0::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_2_0::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_2_0::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_2_0::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_2_0::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_2_0::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_2_0::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_0::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_0::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_0::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->f.Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_2_0::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_2_0::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_2_0::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_2_0::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_2_0::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_2_0::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_2_0::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_2_0::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_2_0::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_2_0::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_2_0::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_2_0::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_2_0::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_2_0::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_2_0::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_2_0::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_2_0::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_2_0::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_2_0::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_2_0::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_2_0::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_2_0::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_2_0::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_2_0::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_2_0::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_2_0::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_2_0::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_2_0::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_2_0::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_2_0::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_2_0::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_2_0::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_2_0::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_2_0::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_2_0::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_2_0::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_2_0::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_2_0::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_2_0::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_2_0::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_2_0::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_2_0::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_2_0::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_2_0::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_2_0::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_2_0::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_2_0::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_2_0::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_2_0::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_2_0::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_2_0::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_2_0::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_2_0::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_2_0::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_2_0::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_2_0::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_0::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_0::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_0::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_2_0::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_2_0::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_2_0::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_2_0::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_2_0::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_2_0::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_2_0::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_2_0::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_2_0::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_2_0::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_2_0::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_2_0::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_2_0::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_2_0::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_2_0::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_2_0::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_2_0::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_2_0::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_2_0::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_2_0::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_2_0::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_2_0::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_2_0::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_2_0::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_2_0::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_2_0::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_2_0::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_2_0::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_2_0::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_2_0::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_2_0::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_2_0::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_2_0::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_2_0::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_2_0::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_2_0::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_2_0::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_2_0::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_2_0::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_2_0::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_2_0::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_2_0::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_2_0::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_2_0::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_2_0::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_2_0::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_2_0::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_2_0::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_2_0::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_2_0::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_2_0::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_0::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_2_0::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_0::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_2_0::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_0::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_2_0::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_2_0::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_2_0::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_0::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_2_0::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_0::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_2_0::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_0::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_2_0::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_0::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_2_0::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_0::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_2_0::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_2_0::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_2_0::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_2_0::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_2_0::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_2_0::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_2_0::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_2_0::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_2_0::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_2_0::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_2_0::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_2_0::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_2_0::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_2_0::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_2_0::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_2_0::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_2_0::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_2_0::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_2_0::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_2_0::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_2_0::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_2_0::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_2_0::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_2_0::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_2_0::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_2_0::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_2_0::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_2_0::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_2_0::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_2_0::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_2_0::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_2_0::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_2_0::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_2_0::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_2_0::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_2_0::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_2_0::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_2_0::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_2_0::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_2_0::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_2_0::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_2_0::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_2_0::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_2_0::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_2_0::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.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_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.VertexAttrib1d(index, x); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_2_1.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_2_1.h new file mode 100644 index 000000000..e9212640f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_2_1.h @@ -0,0 +1,3659 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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; + void *m_reserved_2_0_Deprecated; // To maintain BC +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_2_1::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_2_1::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_2_1::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_2_1::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_2_1::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_2_1::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_2_1::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_2_1::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_2_1::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_2_1::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_2_1::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_2_1::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_2_1::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_2_1::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_2_1::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_2_1::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_2_1::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_2_1::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_2_1::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_2_1::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_2_1::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_2_1::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_2_1::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_2_1::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_2_1::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_2_1::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_2_1::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_2_1::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_2_1::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_2_1::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_2_1::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_2_1::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_2_1::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_2_1::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_2_1::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_2_1::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_2_1::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_2_1::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_2_1::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_2_1::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_2_1::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_2_1::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_2_1::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_2_1::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_2_1::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_2_1::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_2_1::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_2_1::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_2_1::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_2_1::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_2_1::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_2_1::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->f.BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_2_1::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_2_1::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_2_1::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_2_1::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_2_1::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_2_1::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_2_1::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_2_1::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->f.Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_2_1::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_2_1::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_2_1::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_2_1::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_2_1::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_2_1::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_2_1::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_2_1::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_2_1::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_2_1::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_2_1::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_2_1::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_2_1::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_2_1::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_2_1::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_2_1::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_2_1::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_2_1::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_2_1::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_2_1::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_2_1::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_2_1::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_2_1::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_2_1::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_2_1::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_2_1::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_2_1::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_2_1::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_2_1::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_2_1::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_2_1::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_2_1::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_2_1::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_2_1::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_2_1::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.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->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_2_1::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_2_1::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_2_1::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_2_1::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_2_1::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_2_1::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_2_1::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_2_1::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_2_1::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_2_1::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_2_1::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_2_1::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_2_1::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_2_1::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_2_1::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_2_1::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_2_1::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_2_1::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_2_1::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_2_1::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_1::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_1::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_1::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_2_1::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_2_1::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_2_1::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_2_1::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_2_1::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_2_1::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_2_1::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_2_1::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_2_1::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_2_1::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_2_1::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_2_1::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_2_1::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_2_1::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_2_1::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_2_1::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_2_1::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_2_1::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_2_1::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_2_1::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_2_1::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_2_1::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_2_1::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_2_1::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_2_1::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_2_1::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_2_1::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_2_1::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_2_1::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_2_1::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_2_1::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_2_1::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_2_1::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_2_1::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_2_1::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_2_1::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_2_1::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_2_1::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_2_1::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_2_1::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_2_1::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_2_1::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_2_1::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_2_1::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_2_1::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_2_1::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_2_1::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_2_1::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_2_1::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_2_1::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_2_1::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_1::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_2_1::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_1::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_2_1::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_1::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_2_1::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_2_1::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_2_1::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_1::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_2_1::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_1::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_2_1::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_1::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_2_1::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_1::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_2_1::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_1::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_2_1::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_2_1::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_2_1::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_2_1::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_2_1::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_2_1::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_2_1::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_2_1::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_2_1::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_2_1::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_2_1::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_2_1::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_2_1::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_2_1::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_2_1::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_2_1::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_2_1::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_2_1::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_2_1::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_2_1::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_2_1::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_2_1::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_2_1::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_2_1::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_2_1::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_2_1::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_2_1::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_2_1::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_2_1::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_2_1::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_2_1::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_2_1::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_2_1::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_2_1::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_2_1::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_2_1::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_2_1::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_2_1::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_2_1::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_2_1::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_2_1::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_2_1::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_2_1::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_2_1::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_2_1::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.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_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.VertexAttrib1d(index, x); +} + + +// OpenGL 2.1 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_0.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_0.h new file mode 100644 index 000000000..1082d869d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_0.h @@ -0,0 +1,4173 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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; + void *m_reserved_2_0_Deprecated; // To maintain BC + void *m_reserved_3_0_Deprecated; // To maintain BC +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_3_0::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_0::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_0::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_0::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_3_0::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_0::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_3_0::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_0::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_0::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_0::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_0::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_3_0::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_0::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_0::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_0::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_0::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_3_0::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_3_0::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_3_0::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_3_0::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_3_0::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_3_0::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_0::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_3_0::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_3_0::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_0::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_0::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_0::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_0::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_3_0::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_3_0::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_3_0::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_3_0::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_0::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_3_0::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_3_0::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_0::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_0::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_0::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_0::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_0::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_0::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_0::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_0::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_0::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_0::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_0::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_0::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_0::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_0::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_0::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_0::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->f.BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_0::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_0::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_0::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_0::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_0::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_3_0::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_3_0::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_0::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->f.Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_0::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_0::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_0::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_0::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_0::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_0::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_0::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_0::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_3_0::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_0::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_0::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_0::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_0::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_0::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_0::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_0::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_0::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_0::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_0::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_0::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_0::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_0::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_0::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_0::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_0::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_3_0::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_3_0::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_0::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_0::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_0::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_0::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_0::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_0::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_0::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_0::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_0::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_0::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_0::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_0::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_0::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_0::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_0::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_0::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_0::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_0::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_0::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_0::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_0::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_0::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_0::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_0::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_0::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_0::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_0::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_0::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_0::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->f.Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_0::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_0::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_0::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_0::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_0::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_0::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_0::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_0::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_0::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_3_0::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_0::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_0::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_0::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_3_0::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_3_0::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_0::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_3_0::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_3_0::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_3_0::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_3_0::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_3_0::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_3_0::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_3_0::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_3_0::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_3_0::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_3_0::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_0::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_3_0::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_3_0::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_3_0::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_3_0::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_3_0::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_3_0::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_3_0::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_3_0::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_0::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_0::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_0::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_3_0::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_3_0::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_3_0::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_3_0::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_3_0::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_3_0::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_3_0::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_3_0::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_3_0::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_3_0::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_3_0::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_3_0::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_3_0::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_3_0::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_3_0::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_3_0::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_3_0::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_3_0::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_3_0::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_3_0::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_3_0::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_3_0::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_3_0::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_3_0::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_3_0::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_3_0::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_3_0::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_3_0::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_3_0::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_3_0::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_0::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_0::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_3_0::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_0::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_3_0::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_3_0::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_3_0::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_3_0::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_0::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_3_0::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_0::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_3_0::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_3_0::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_3_0::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_3_0::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_3_0::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_3_0::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_3_0::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_3_0::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_3_0::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_3_0::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_0::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_3_0::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_0::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_3_0::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_0::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_3_0::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_3_0::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_3_0::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_0::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_3_0::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_0::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_3_0::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_0::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_3_0::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_0::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_3_0::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_0::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_3_0::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_3_0::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_3_0::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_3_0::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_3_0::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_3_0::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_3_0::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_3_0::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_3_0::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_3_0::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_3_0::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_3_0::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_3_0::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_3_0::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_3_0::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_3_0::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_3_0::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_3_0::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_3_0::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_3_0::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_3_0::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_3_0::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_3_0::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_3_0::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_3_0::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_3_0::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_3_0::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_3_0::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_3_0::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_3_0::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_3_0::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_3_0::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_3_0::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_0::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_3_0::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_0::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_3_0::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_0::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_0::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_0::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_3_0::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_3_0::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_3_0::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_3_0::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_3_0::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.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_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.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_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.VertexAttribI1i(index, x); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_1.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_1.h new file mode 100644 index 000000000..2691dd29e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_1.h @@ -0,0 +1,1601 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_1::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_1::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_1::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_3_1::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_1::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_3_1::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_1::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_1::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_1::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_1::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_3_1::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_1::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_1::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_1::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_1::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_3_1::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_3_1::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_3_1::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_3_1::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_3_1::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_1::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_3_1::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_1::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_3_1::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_1::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_3_1::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_1::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_1::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_1::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_1::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_3_1::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_3_1::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_3_1::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_3_1::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_1::glIndexubv(const GLubyte *c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_1::glIndexub(GLubyte c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline GLboolean QOpenGLFunctions_3_1::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_3_1::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_1::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_1::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_1::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_1::glGetPointerv(GLenum pname, GLvoid* *params) +{ + Q_UNUSED(pname); + Q_UNUSED(params); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_1::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_1::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_3_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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_1::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_1::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_1::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_1::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_1::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_1::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_1::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_1::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_1::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_1::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_1::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_1::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_1::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->f.BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_1::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_1::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_1::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_1::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_1::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_3_1::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_3_1::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_1::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_1::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->f.Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_1::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_1::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_1::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_1::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_1::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_1::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_1::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_1::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_3_1::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_1::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_1::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_1::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_1::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_1::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_1::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_1::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_1::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_1::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_1::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_1::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_1::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_1::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_1::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_1::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_1::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_3_1::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_3_1::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_1::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_1::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_1::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_1::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_1::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_1::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_1::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_1::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_1::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_1::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_1::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_1::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_1::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_1::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_1::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_1::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_1::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_1::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_1::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_1::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_1::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_1::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_1::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_1::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_1::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_1::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_1::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_1::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_1::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->f.Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_1::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_1::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_1::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_1::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_1::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_1::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_1::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_1::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_1::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_1::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_3_1::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_1::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_1::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_1::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_3_1::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_3_1::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_1::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_3_1::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_3_1::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->f.GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_3_1::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_3_1::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_3_1::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_3_1::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_3_1::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_3_1::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->f.DrawArraysInstanced(mode, first, count, instancecount); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_2_compatibility.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_2_compatibility.h new file mode 100644 index 000000000..9f3419072 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_2_compatibility.h @@ -0,0 +1,4377 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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; + void *m_reserved_2_0_Deprecated; // To maintain BC + void *m_reserved_3_0_Deprecated; // To maintain BC +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_2_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_2_Compatibility::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_2_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_2_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_2_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_2_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_2_Compatibility::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_2_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_2_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_2_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_2_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_3_2_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_3_2_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_3_2_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.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->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.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->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_3_2_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_3_2_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.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->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.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_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.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_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.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/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_2_core.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_2_core.h new file mode 100644 index 000000000..2d5ee14be --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_2_core.h @@ -0,0 +1,1720 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_2_Core::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_3_2_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_2_Core::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_3_2_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_2_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_2_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_2_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_2_Core::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_3_2_Core::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_3_2_Core::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_3_2_Core::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_3_2_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_3_2_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_3_2_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_2_Core::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_3_2_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_2_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_3_2_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_3_2_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_3_2_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_3_2_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_2_Core::glIndexubv(const GLubyte *c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_2_Core::glIndexub(GLubyte c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_3_2_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_2_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_2_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_2_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + Q_UNUSED(pname); + Q_UNUSED(params); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_2_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Core::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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_2_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_2_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_2_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_2_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_2_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_2_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_2_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_2_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_2_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_2_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_3_2_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_2_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_2_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_3_2_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_2_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_2_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_2_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_2_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_2_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_2_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_2_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_2_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_2_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_2_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_2_Core::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_3_2_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_3_2_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_2_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_2_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_2_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_2_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_2_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_2_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_2_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_2_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_2_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_2_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_2_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_2_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_2_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_2_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_2_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_2_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_2_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_2_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_2_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_2_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Core::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_2_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_2_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_2_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_2_Core::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_2_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_2_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_3_2_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_3_2_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_2_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_3_2_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_3_2_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_3_2_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_3_2_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_3_2_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_3_2_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_3_2_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_3_2_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_3_2_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_3_2_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.GetInteger64i_v(target, index, data); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_3_compatibility.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_3_compatibility.h new file mode 100644 index 000000000..a5c0cab63 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_3_compatibility.h @@ -0,0 +1,4734 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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; + void *m_reserved_2_0_Deprecated; // To maintain BC + QOpenGLFunctions_3_3_DeprecatedBackend* d_3_3_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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_3_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_3_Compatibility::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_3_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_3_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_3_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_3_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_3_Compatibility::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_3_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_3_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_3_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_3_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_3_3_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_3_3_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_3_3_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_3_3_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.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->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.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->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.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->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_3_3_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_3_3_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.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->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.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_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.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_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.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/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_3_core.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_3_core.h new file mode 100644 index 000000000..4f0132d95 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_3_3_core.h @@ -0,0 +1,2141 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_3_Core::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_3_3_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_3_Core::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_3_3_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_3_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_3_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_3_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_3_Core::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_3_3_Core::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_3_3_Core::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_3_3_Core::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_3_3_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_3_3_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_3_3_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_3_Core::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_3_3_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_3_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_3_3_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_3_3_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_3_3_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_3_3_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_3_Core::glIndexubv(const GLubyte *c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glIndexub(GLubyte c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_3_3_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_3_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_3_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_3_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + Q_UNUSED(pname); + Q_UNUSED(params); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Core::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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_3_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_3_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_3_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_3_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_3_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_3_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_3_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_3_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_3_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_3_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_3_3_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_3_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_3_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_3_3_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_3_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_3_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_3_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_3_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_3_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_3_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_3_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_3_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_3_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_3_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_3_Core::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_3_3_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_3_3_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_3_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_3_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_3_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_3_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_3_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_3_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_3_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_3_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_3_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_3_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_3_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_3_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_3_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_3_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_3_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_3_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_3_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_3_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_3_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_3_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Core::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_3_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_3_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_3_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_3_Core::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_3_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_3_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_3_3_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_3_3_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_3_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_3_3_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_3_3_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_3_3_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_3_3_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_3_3_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_3_3_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_3_3_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_3_3_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_3_3_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_3_3_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glColorP4uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glColorP4ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glColorP3uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glColorP3ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glNormalP3ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP4ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP3ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP2ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP1ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP4uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP4ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP3uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP3ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP2uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP2ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_3_3_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_3_3_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_3_3_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_3_3_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_3_3_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.VertexAttribDivisor(index, divisor); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_0_compatibility.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_0_compatibility.h new file mode 100644 index 000000000..1fa5e8a36 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_0_compatibility.h @@ -0,0 +1,5019 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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; + void *m_reserved_2_0_Deprecated; // To maintain BC + QOpenGLFunctions_3_3_DeprecatedBackend* d_3_3_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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_0_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_0_Compatibility::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_0_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_0_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_0_Compatibility::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_0_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_0_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_0_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_0_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_0_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_0_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.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->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.MinSampleShading(value); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.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->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.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->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_4_0_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.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->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.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_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.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_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.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/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_0_core.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_0_core.h new file mode 100644 index 000000000..8fd2af2d0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_0_core.h @@ -0,0 +1,2422 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_0_Core::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_0_Core::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_0_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_0_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_0_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_0_Core::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_0_Core::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_0_Core::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_0_Core::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_0_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_0_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_0_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_0_Core::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_0_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_0_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_0_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_0_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_0_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_0_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_0_Core::glIndexubv(const GLubyte *c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glIndexub(GLubyte c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_0_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_0_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_0_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_0_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + Q_UNUSED(pname); + Q_UNUSED(params); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Core::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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_0_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_0_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_0_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_0_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_0_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_0_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_0_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_0_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_0_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_0_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_0_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_0_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_0_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_0_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_0_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_0_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_0_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_0_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_0_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_0_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_0_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_0_Core::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_0_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_0_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_0_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_0_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_0_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_0_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_0_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_0_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_0_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_0_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_0_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_0_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_0_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_0_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_0_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_0_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_0_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_0_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_0_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_0_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Core::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_0_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_0_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_0_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_0_Core::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_0_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_0_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_0_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_0_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_0_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_0_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_0_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_0_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_0_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_0_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_0_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_0_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_0_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_0_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_0_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glColorP4uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glColorP4ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glColorP3uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glColorP3ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glNormalP3ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP4ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP3ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP2ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP1ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP4uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP4ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP3uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP3ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP2uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP2ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_0_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_0_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_0_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_0_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_0_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.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->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_0_Core::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_0_Core::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_0_Core::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_0_Core::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_0_Core::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_0_Core::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_0_Core::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_0_Core::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_0_Core::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_0_Core::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.MinSampleShading(value); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_1_compatibility.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_1_compatibility.h new file mode 100644 index 000000000..a284f8e6d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_1_compatibility.h @@ -0,0 +1,5556 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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; + void *m_reserved_2_0_Deprecated; // To maintain BC + QOpenGLFunctions_3_3_DeprecatedBackend* d_3_3_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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_1_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_1_Compatibility::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_1_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_1_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_1_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_1_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_1_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_1_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.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->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.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->f.GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->f.GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->f.DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->f.DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->f.ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->f.ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->f.ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->f.ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->f.ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->f.ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->f.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->f.VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->f.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->f.VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->f.VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->f.VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->f.ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->f.ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->f.ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->f.ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->f.GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->f.IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->f.GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->f.DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->f.CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->f.ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->f.UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->f.ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->f.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->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->f.ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->f.DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->f.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->f.ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glReleaseShaderCompiler() +{ + d_4_1_Core->f.ReleaseShaderCompiler(); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.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->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.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->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.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->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.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_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.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_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.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/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_1_core.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_1_core.h new file mode 100644 index 000000000..d35db3c83 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_1_core.h @@ -0,0 +1,2955 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_1_Core::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_1_Core::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_1_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_1_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_1_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_1_Core::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_1_Core::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_1_Core::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_1_Core::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_1_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_1_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_1_Core::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_1_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_1_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_1_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_1_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_1_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_1_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_1_Core::glIndexubv(const GLubyte *c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glIndexub(GLubyte c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_1_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_1_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_1_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_1_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + Q_UNUSED(pname); + Q_UNUSED(params); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Core::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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_1_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_1_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_1_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_1_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_1_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_1_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_1_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_1_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_1_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_1_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_1_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_1_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_1_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_1_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_1_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_1_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_1_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_1_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_1_Core::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_1_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_1_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_1_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_1_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_1_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_1_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_1_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_1_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_1_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_1_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_1_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_1_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_1_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_1_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_1_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_1_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_1_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_1_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_1_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Core::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_1_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_1_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_1_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_1_Core::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_1_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_1_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_1_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_1_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_1_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_1_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_1_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_1_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_1_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_1_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_1_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_1_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_1_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_1_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glColorP4uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glColorP4ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glColorP3uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glColorP3ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glNormalP3ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP4ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP3ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP2ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP1ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP4uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP4ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP3uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP3ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP2uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP2ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_1_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_1_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_1_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_1_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_1_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.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->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_1_Core::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_1_Core::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_1_Core::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_1_Core::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_1_Core::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_1_Core::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_1_Core::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_1_Core::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_1_Core::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.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->f.GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Core::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->f.GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->f.DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->f.DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Core::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->f.ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->f.ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->f.ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Core::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->f.ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->f.ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_1_Core::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->f.ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->f.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->f.VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->f.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->f.VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->f.VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->f.VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Core::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->f.ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->f.ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->f.ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->f.ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->f.GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->f.IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_1_Core::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->f.GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->f.DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_1_Core::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_1_Core::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->f.CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_1_Core::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->f.ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_1_Core::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->f.UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->f.ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->f.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->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_1_Core::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->f.ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->f.DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_1_Core::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->f.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->f.ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_1_Core::glReleaseShaderCompiler() +{ + d_4_1_Core->f.ReleaseShaderCompiler(); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_2_compatibility.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_2_compatibility.h new file mode 100644 index 000000000..7b4585998 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_2_compatibility.h @@ -0,0 +1,5637 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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; + void *m_reserved_2_0_Deprecated; // To maintain BC + QOpenGLFunctions_3_3_DeprecatedBackend* d_3_3_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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_2_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_2_Compatibility::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_2_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_2_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_2_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_2_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_2_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_2_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.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->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.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->f.GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->f.GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->f.DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->f.DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->f.ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->f.ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->f.ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->f.ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->f.ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->f.ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->f.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->f.VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->f.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->f.VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->f.VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->f.VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->f.ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->f.ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->f.ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->f.ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->f.GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->f.IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->f.GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->f.DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->f.CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->f.ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->f.UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->f.ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->f.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->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->f.ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->f.DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->f.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->f.ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glReleaseShaderCompiler() +{ + d_4_1_Core->f.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->f.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->f.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->f.TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->f.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->f.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->f.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->f.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->f.DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->f.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->f.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->f.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->f.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->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.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->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.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->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.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->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.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_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.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_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.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/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_2_core.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_2_core.h new file mode 100644 index 000000000..80bb33e7d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_2_core.h @@ -0,0 +1,3032 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_2_Core::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_2_Core::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_2_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_2_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_2_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_2_Core::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_2_Core::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_2_Core::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_2_Core::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_2_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_2_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_2_Core::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_2_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_2_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_2_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_2_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_2_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_2_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_2_Core::glIndexubv(const GLubyte *c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glIndexub(GLubyte c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_2_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_2_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_2_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_2_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + Q_UNUSED(pname); + Q_UNUSED(params); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Core::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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_2_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_2_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_2_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_2_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_2_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_2_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_2_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_2_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_2_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_2_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_2_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_2_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_2_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_2_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_2_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_2_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_2_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_2_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_2_Core::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_2_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_2_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_2_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_2_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_2_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_2_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_2_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_2_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_2_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_2_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_2_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_2_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_2_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_2_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_2_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_2_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_2_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_2_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_2_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Core::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_2_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_2_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_2_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_2_Core::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_2_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_2_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_2_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_2_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_2_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_2_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_2_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_2_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_2_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_2_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_2_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_2_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_2_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glColorP4uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glColorP4ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glColorP3uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glColorP3ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glNormalP3ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP4ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP3ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP2ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP1ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP4uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP4ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP3uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP3ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP2uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP2ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_2_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_2_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_2_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_2_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_2_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.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->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_2_Core::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_2_Core::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_2_Core::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_2_Core::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_2_Core::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_2_Core::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_2_Core::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_2_Core::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_2_Core::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.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->f.GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Core::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->f.GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->f.DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->f.DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Core::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->f.ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->f.ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->f.ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Core::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->f.ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->f.ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_2_Core::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->f.ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->f.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->f.VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->f.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->f.VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->f.VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->f.VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Core::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->f.ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->f.ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->f.ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->f.ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->f.GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->f.IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_2_Core::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->f.GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->f.DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_2_Core::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_2_Core::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->f.CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_2_Core::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->f.ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_2_Core::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->f.UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->f.ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->f.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->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_2_Core::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->f.ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->f.DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_2_Core::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->f.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->f.ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_2_Core::glReleaseShaderCompiler() +{ + d_4_1_Core->f.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->f.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->f.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->f.TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_2_Core::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->f.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->f.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->f.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->f.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->f.DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->f.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->f.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->f.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->f.DrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_3_compatibility.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_3_compatibility.h new file mode 100644 index 000000000..515467a38 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_3_compatibility.h @@ -0,0 +1,5844 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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); + + // 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; + void *m_reserved_2_0_Deprecated; // To maintain BC + QOpenGLFunctions_3_3_DeprecatedBackend* d_3_3_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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_3_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_3_Compatibility::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_3_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_3_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_3_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_3_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_3_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_3_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.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->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.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->f.GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->f.GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->f.DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->f.DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->f.ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->f.ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->f.ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->f.ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->f.ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->f.ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->f.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->f.VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->f.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->f.VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->f.VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->f.VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->f.ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->f.ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->f.ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->f.ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->f.GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->f.IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->f.GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->f.DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->f.CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->f.ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->f.UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->f.ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->f.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->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->f.ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->f.DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->f.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->f.ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glReleaseShaderCompiler() +{ + d_4_1_Core->f.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->f.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->f.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->f.TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->f.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->f.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->f.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->f.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->f.DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.TexBufferRange(target, internalformat, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) +{ + d_4_3_Core->f.ShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceLocationIndex(program, programInterface, name); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.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->f.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->f.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->f.GetProgramResourceIndex(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) +{ + d_4_3_Core->f.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->f.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->f.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->f.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->f.InvalidateFramebuffer(target, numAttachments, attachments); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInvalidateBufferData(GLuint buffer) +{ + d_4_3_Core->f.InvalidateBufferData(buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) +{ + d_4_3_Core->f.InvalidateBufferSubData(buffer, offset, length); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInvalidateTexImage(GLuint texture, GLint level) +{ + d_4_3_Core->f.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->f.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->f.GetInternalformati64v(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_4_3_Core->f.GetFramebufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + d_4_3_Core->f.FramebufferParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) +{ + d_4_3_Core->f.VertexBindingDivisor(bindingindex, divisor); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) +{ + d_4_3_Core->f.VertexAttribBinding(attribindex, bindingindex); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribLFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.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->f.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->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.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->f.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->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.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->f.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->f.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->f.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->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.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->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.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->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->f.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->f.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->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.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->f.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->f.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->f.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->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->f.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->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.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->f.ColorTable(target, internalformat, width, format, type, table); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.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_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.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_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.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/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_3_core.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_3_core.h new file mode 100644 index 000000000..4a700c36d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_3_core.h @@ -0,0 +1,3235 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.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 glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, 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->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.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->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_3_Core::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_3_Core::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_3_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->f.GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->f.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->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->f.ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_3_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_3_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_3_Core::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_3_Core::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_3_Core::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_3_Core::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_3_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_3_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_3_Core::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_3_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->f.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->f.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->f.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->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_3_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_3_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_3_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_3_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_3_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_3_Core::glIndexubv(const GLubyte *c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glIndexub(GLubyte c) +{ + Q_UNUSED(c); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_3_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_3_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_3_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_3_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + Q_UNUSED(pname); + Q_UNUSED(params); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.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->f.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->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Core::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_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, 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->f.DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_3_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_3_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.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->f.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->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.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->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_3_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_3_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->f.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->f.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->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_3_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_3_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_3_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_3_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_3_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.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->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.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->f.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->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.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->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_3_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_3_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_3_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->f.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->f.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->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_3_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_3_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_3_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_3_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_3_Core::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_3_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_3_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_3_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_3_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_3_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_3_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_3_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_3_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.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->f.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->f.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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_3_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_3_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.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->f.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->f.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->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_3_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_3_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_3_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_3_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_3_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_3_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_3_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_3_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.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->f.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->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.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->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Core::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_3_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_3_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.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->f.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->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_3_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.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->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_3_Core::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_3_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_3_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_3_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_3_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.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->f.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->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.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->f.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->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_3_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.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->f.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->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_3_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_3_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.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->f.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->f.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->f.SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_3_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.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->f.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->f.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->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_3_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_3_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_3_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_3_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.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->f.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->f.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->f.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->f.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->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_3_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.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->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.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->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glColorP4uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glColorP4ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glColorP3uiv(GLenum type, const GLuint *color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glColorP3ui(GLenum type, GLuint color) +{ + Q_UNUSED(type); + Q_UNUSED(color); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glNormalP3ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_UNUSED(texture); + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP4ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP3ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP2ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP1ui(GLenum type, GLuint coords) +{ + Q_UNUSED(type); + Q_UNUSED(coords); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP4uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP4ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP3uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP3ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP2uiv(GLenum type, const GLuint *value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP2ui(GLenum type, GLuint value) +{ + Q_UNUSED(type); + Q_UNUSED(value); + QOPENGL_DEPRECATEDFUNCTION; +} + +inline void QOpenGLFunctions_4_3_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_3_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_3_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_3_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.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->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_3_Core::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_3_Core::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_3_Core::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_3_Core::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_3_Core::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_3_Core::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_3_Core::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.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->f.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->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_3_Core::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.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->f.GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Core::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->f.GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->f.DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->f.DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Core::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->f.ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->f.ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->f.ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Core::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->f.ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->f.ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_3_Core::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->f.ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->f.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->f.VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->f.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->f.VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->f.VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->f.VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Core::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->f.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->f.ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->f.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->f.ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->f.ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->f.ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->f.ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->f.ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->f.GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->f.IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_3_Core::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->f.GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->f.DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_3_Core::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_3_Core::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->f.CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_3_Core::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->f.ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_3_Core::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->f.UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->f.ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->f.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->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_3_Core::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->f.ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->f.DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_3_Core::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->f.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->f.ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_3_Core::glReleaseShaderCompiler() +{ + d_4_1_Core->f.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->f.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->f.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->f.TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_3_Core::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->f.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->f.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->f.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->f.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->f.DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.TexBufferRange(target, internalformat, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_3_Core::glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) +{ + d_4_3_Core->f.ShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceLocationIndex(program, programInterface, name); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.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->f.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->f.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->f.GetProgramResourceIndex(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) +{ + d_4_3_Core->f.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->f.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->f.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->f.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->f.InvalidateFramebuffer(target, numAttachments, attachments); +} + +inline void QOpenGLFunctions_4_3_Core::glInvalidateBufferData(GLuint buffer) +{ + d_4_3_Core->f.InvalidateBufferData(buffer); +} + +inline void QOpenGLFunctions_4_3_Core::glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) +{ + d_4_3_Core->f.InvalidateBufferSubData(buffer, offset, length); +} + +inline void QOpenGLFunctions_4_3_Core::glInvalidateTexImage(GLuint texture, GLint level) +{ + d_4_3_Core->f.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->f.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->f.GetInternalformati64v(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_4_3_Core->f.GetFramebufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + d_4_3_Core->f.FramebufferParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) +{ + d_4_3_Core->f.VertexBindingDivisor(bindingindex, divisor); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) +{ + d_4_3_Core->f.VertexAttribBinding(attribindex, bindingindex); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribLFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.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->f.ClearBufferData(target, internalformat, format, type, data); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_4_compatibility.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_4_compatibility.h new file mode 100644 index 000000000..f2d640cda --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_4_compatibility.h @@ -0,0 +1,5966 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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_4_COMPATIBILITY_H +#define QOPENGLVERSIONFUNCTIONS_4_4_COMPATIBILITY_H + +#include <QtGui/qtguiglobal.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_4_Compatibility : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_4_Compatibility(); + ~QOpenGLFunctions_4_4_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, void *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *data); + void glGetFloatv(GLenum pname, GLfloat *data); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *data); + void glGetBooleanv(GLenum pname, GLboolean *data); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); + void glReadBuffer(GLenum src); + 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 buf); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *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 + 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 void *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *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 glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glBlendEquation(GLenum mode); + 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 void *pixels); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, void *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *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 void *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, void * *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + void * glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); + void glBufferData(GLenum target, GLsizeiptr size, const void *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 void *pointer); + 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); + 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, void * *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 *shaders); + 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); + void * 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 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); + 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 void *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 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 glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint maskNumber, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + 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); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *data); + 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 void *const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); + + // 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 glVertexAttribDivisor(GLuint index, GLuint divisor); + 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); + + // 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 void *indirect); + void glDrawArraysIndirect(GLenum mode, const void *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 void *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 void *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *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 void *binary, GLsizei length); + void glReleaseShaderCompiler(); + + // OpenGL 4.2 core functions + void glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + 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 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 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); + 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 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 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 4.4 core functions + void glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); + void glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures); + void glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers); + void glBindTextures(GLuint first, GLsizei count, const GLuint *textures); + void glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); + void glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); + void glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); + void glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); + void glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); + + // 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 void *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLsizei 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 void *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 glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + 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 void *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const void *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const void *pointer); + void glGetPointerv(GLenum pname, void * *params); + void glIndexPointer(GLenum type, GLsizei stride, const void *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const void *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glGetColorTable(GLenum target, GLenum format, GLenum type, void *table); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, void *image); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glResetHistogram(GLenum target); + void glResetMinmax(GLenum target); + + // 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 void *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 void *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 + + // OpenGL 2.1 deprecated functions + + // OpenGL 3.0 deprecated functions + + // OpenGL 3.1 deprecated functions + + // OpenGL 3.2 deprecated functions + + // OpenGL 3.3 deprecated functions + 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); + + // OpenGL 4.0 deprecated functions + + // OpenGL 4.1 deprecated functions + + // OpenGL 4.2 deprecated functions + + // OpenGL 4.3 deprecated functions + + // OpenGL 4.4 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_4_4_CoreBackend* d_4_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; + QOpenGLFunctions_3_3_DeprecatedBackend* d_3_3_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_4_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetIntegerv(GLenum pname, GLint *data) +{ + d_1_0_Core->f.GetIntegerv(pname, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetFloatv(GLenum pname, GLfloat *data) +{ + d_1_0_Core->f.GetFloatv(pname, data); +} + +inline GLenum QOpenGLFunctions_4_4_Compatibility::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetDoublev(GLenum pname, GLdouble *data) +{ + d_1_0_Core->f.GetDoublev(pname, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetBooleanv(GLenum pname, GLboolean *data) +{ + d_1_0_Core->f.GetBooleanv(pname, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) +{ + d_1_0_Core->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glReadBuffer(GLenum src) +{ + d_1_0_Core->f.ReadBuffer(src); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawBuffer(GLenum buf) +{ + d_1_0_Core->f.DrawBuffer(buf); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_0_Core->f.TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_0_Core->f.TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) +{ + d_1_1_Core->f.TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) +{ + d_1_1_Core->f.TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->f.CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->f.CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->f.CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.BlendColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->f.CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) +{ + d_1_2_Core->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_2_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices) +{ + d_1_2_Core->f.DrawRangeElements(mode, start, end, count, type, indices); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glGetCompressedTexImage(GLenum target, GLint level, void *img) +{ + d_1_3_Core->f.GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount) +{ + d_1_4_Core->f.MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glGetBufferPointerv(GLenum target, GLenum pname, void * *params) +{ + d_1_5_Core->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline void * QOpenGLFunctions_4_4_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data) +{ + d_1_5_Core->f.GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data) +{ + d_1_5_Core->f.BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage) +{ + d_1_5_Core->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer) +{ + d_2_0_Core->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.VertexAttrib1d(index, x); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->f.Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, void * *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_4_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_4_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders) +{ + d_2_0_Core->f.GetAttachedShaders(program, maxCount, count, shaders); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->f.GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_4_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_4_Compatibility::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline void * QOpenGLFunctions_4_4_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->f.FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_4_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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->f.FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->f.FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_4_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_4_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->f.Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_4_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.VertexAttribI1i(index, x); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_3_0_Core->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->f.GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode) +{ + d_3_0_Core->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->f.ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->f.GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_4_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->f.GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount) +{ + d_3_1_Core->f.DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->f.DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glSampleMaski(GLuint maskNumber, GLbitfield mask) +{ + d_3_2_Core->f.SampleMaski(maskNumber, mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->f.TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->f.TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.GetInteger64i_v(target, index, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetInteger64v(GLenum pname, GLint64 *data) +{ + d_3_2_Core->f.GetInteger64v(pname, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_4_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_4_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->f.MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->f.DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex) +{ + d_3_2_Core->f.DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex) +{ + d_3_2_Core->f.DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.VertexAttribDivisor(index, divisor); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_4_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->f.GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->f.GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_4_Compatibility::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_4_Compatibility::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->f.Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawArraysIndirect(GLenum mode, const void *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.MinSampleShading(value); +} + + +// OpenGL 4.1 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + d_4_1_Core->f.GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->f.GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->f.DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->f.DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->f.ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->f.ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->f.ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->f.ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->f.ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->f.ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->f.GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_4_1_Core->f.VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->f.VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_1_Core->f.VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->f.VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->f.VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_4_1_Core->f.ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + d_4_1_Core->f.ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_4_1_Core->f.ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_4_1_Core->f.ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_4_1_Core->f.ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + d_4_1_Core->f.ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_4_1_Core->f.ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + d_4_1_Core->f.ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->f.ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->f.ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->f.ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->f.ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->f.ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->f.ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->f.ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->f.ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->f.GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->f.IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->f.GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->f.DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_4_Compatibility::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings) +{ + return d_4_1_Core->f.CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->f.ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->f.UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->f.ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length) +{ + d_4_1_Core->f.ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary) +{ + d_4_1_Core->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->f.ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->f.DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->f.GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length) +{ + d_4_1_Core->f.ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glReleaseShaderCompiler() +{ + d_4_1_Core->f.ReleaseShaderCompiler(); +} + + +// OpenGL 4.2 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) +{ + d_4_2_Core->f.DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->f.DrawTransformFeedbackInstanced(mode, id, instancecount); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_2_Core->f.TexStorage3D(target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_2_Core->f.TexStorage2D(target, levels, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + d_4_2_Core->f.TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->f.MemoryBarrier(barriers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) +{ + d_4_2_Core->f.BindImageTexture(unit, texture, level, layered, layer, access, format); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) +{ + d_4_2_Core->f.GetActiveAtomicCounterBufferiv(program, bufferIndex, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) +{ + d_4_2_Core->f.GetInternalformativ(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) +{ + d_4_2_Core->f.DrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->f.DrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->f.DrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); +} + + +// OpenGL 4.3 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + d_4_3_Core->f.GetObjectPtrLabel(ptr, bufSize, length, label); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label) +{ + d_4_3_Core->f.ObjectPtrLabel(ptr, length, label); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + d_4_3_Core->f.GetObjectLabel(identifier, name, bufSize, length, label); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label) +{ + d_4_3_Core->f.ObjectLabel(identifier, name, length, label); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPopDebugGroup() +{ + d_4_3_Core->f.PopDebugGroup(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message) +{ + d_4_3_Core->f.PushDebugGroup(source, id, length, message); +} + +inline GLuint QOpenGLFunctions_4_4_Compatibility::glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog) +{ + return d_4_3_Core->f.GetDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam) +{ + d_4_3_Core->f.DebugMessageCallback(callback, userParam); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf) +{ + d_4_3_Core->f.DebugMessageInsert(source, type, id, severity, length, buf); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled) +{ + d_4_3_Core->f.DebugMessageControl(source, type, severity, count, ids, enabled); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) +{ + d_4_3_Core->f.VertexBindingDivisor(bindingindex, divisor); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) +{ + d_4_3_Core->f.VertexAttribBinding(attribindex, bindingindex); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribLFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribIFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribFormat(attribindex, size, type, normalized, relativeoffset); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + d_4_3_Core->f.BindVertexBuffer(bindingindex, buffer, offset, stride); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) +{ + d_4_3_Core->f.TextureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_4_3_Core->f.TexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_4_3_Core->f.TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_4_3_Core->f.TexBufferRange(target, internalformat, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) +{ + d_4_3_Core->f.ShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding); +} + +inline GLint QOpenGLFunctions_4_4_Compatibility::glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceLocationIndex(program, programInterface, name); +} + +inline GLint QOpenGLFunctions_4_4_Compatibility::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceLocation(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params) +{ + d_4_3_Core->f.GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name) +{ + d_4_3_Core->f.GetProgramResourceName(program, programInterface, index, bufSize, length, name); +} + +inline GLuint QOpenGLFunctions_4_4_Compatibility::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceIndex(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) +{ + d_4_3_Core->f.GetProgramInterfaceiv(program, programInterface, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->f.MultiDrawElementsIndirect(mode, type, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->f.MultiDrawArraysIndirect(mode, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_3_Core->f.InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments) +{ + d_4_3_Core->f.InvalidateFramebuffer(target, numAttachments, attachments); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glInvalidateBufferData(GLuint buffer) +{ + d_4_3_Core->f.InvalidateBufferData(buffer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) +{ + d_4_3_Core->f.InvalidateBufferSubData(buffer, offset, length); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glInvalidateTexImage(GLuint texture, GLint level) +{ + d_4_3_Core->f.InvalidateTexImage(texture, level); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_3_Core->f.InvalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params) +{ + d_4_3_Core->f.GetInternalformati64v(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_4_3_Core->f.GetFramebufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + d_4_3_Core->f.FramebufferParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_4_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->f.CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDispatchComputeIndirect(GLintptr indirect) +{ + d_4_3_Core->f.DispatchComputeIndirect(indirect); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) +{ + d_4_3_Core->f.DispatchCompute(num_groups_x, num_groups_y, num_groups_z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->f.ClearBufferSubData(target, internalformat, offset, size, format, type, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->f.ClearBufferData(target, internalformat, format, type, data); +} + + +// OpenGL 4.4 core functions +inline void QOpenGLFunctions_4_4_Compatibility::glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides) +{ + d_4_4_Core->f.BindVertexBuffers(first, count, buffers, offsets, strides); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures) +{ + d_4_4_Core->f.BindImageTextures(first, count, textures); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers) +{ + d_4_4_Core->f.BindSamplers(first, count, samplers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindTextures(GLuint first, GLsizei count, const GLuint *textures) +{ + d_4_4_Core->f.BindTextures(first, count, textures); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes) +{ + d_4_4_Core->f.BindBuffersRange(target, first, count, buffers, offsets, sizes); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers) +{ + d_4_4_Core->f.BindBuffersBase(target, first, count, buffers); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data) +{ + d_4_4_Core->f.ClearTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data) +{ + d_4_4_Core->f.ClearTexImage(texture, level, format, type, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags) +{ + d_4_4_Core->f.BufferStorage(target, size, data, flags); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_4_4_Compatibility::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) +{ + d_1_0_Deprecated->f.DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_4_4_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->f.Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_4_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->f.Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->f.Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_4_4_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_4_4_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCallLists(GLsizei n, GLenum type, const void *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_4_4_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_4_4_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetPointerv(GLenum pname, void * *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glEdgeFlagPointer(GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_4_4_Compatibility::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table) +{ + d_1_2_Deprecated->f.ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, void *table) +{ + d_1_2_Deprecated->f.GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data) +{ + d_1_2_Deprecated->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->f.CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image) +{ + d_1_2_Deprecated->f.ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image) +{ + d_1_2_Deprecated->f.ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->f.CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, void *image) +{ + d_1_2_Deprecated->f.GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span) +{ + d_1_2_Deprecated->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column) +{ + d_1_2_Deprecated->f.SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values) +{ + d_1_2_Deprecated->f.GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values) +{ + d_1_2_Deprecated->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_4_4_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const void *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions + +// OpenGL 2.1 deprecated functions + +// OpenGL 3.0 deprecated functions + +// OpenGL 3.1 deprecated functions + +// OpenGL 3.2 deprecated functions + +// OpenGL 3.3 deprecated functions +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_4_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP2ui(type, value); +} + + +// OpenGL 4.0 deprecated functions + +// OpenGL 4.1 deprecated functions + +// OpenGL 4.2 deprecated functions + +// OpenGL 4.3 deprecated functions + +// OpenGL 4.4 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_4_core.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_4_core.h new file mode 100644 index 000000000..bcb7383a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_4_core.h @@ -0,0 +1,3420 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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_4_CORE_H +#define QOPENGLVERSIONFUNCTIONS_4_4_CORE_H + +#include <QtGui/qtguiglobal.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_4_Core : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_4_Core(); + ~QOpenGLFunctions_4_4_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, void *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *data); + void glGetFloatv(GLenum pname, GLfloat *data); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *data); + void glGetBooleanv(GLenum pname, GLboolean *data); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); + void glReadBuffer(GLenum src); + 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 buf); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *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 + 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 void *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *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 glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glBlendEquation(GLenum mode); + 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 void *pixels); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, void *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *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 void *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, void * *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + void * glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); + void glBufferData(GLenum target, GLsizeiptr size, const void *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 void *pointer); + 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); + 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, void * *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 *shaders); + 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); + void * 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 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); + 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 void *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 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 glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint maskNumber, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + 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); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *data); + 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 void *const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); + + // 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 glVertexAttribDivisor(GLuint index, GLuint divisor); + 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); + + // 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 void *indirect); + void glDrawArraysIndirect(GLenum mode, const void *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 void *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 void *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *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 void *binary, GLsizei length); + void glReleaseShaderCompiler(); + + // OpenGL 4.2 core functions + void glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + 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 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 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); + 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 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 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 4.4 core functions + void glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); + void glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures); + void glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers); + void glBindTextures(GLuint first, GLsizei count, const GLuint *textures); + void glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); + void glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); + void glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); + void glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); + void glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); + +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_4_4_CoreBackend* d_4_4_Core; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_4_Core::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_4_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_4_Core::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_4_Core::glGetIntegerv(GLenum pname, GLint *data) +{ + d_1_0_Core->f.GetIntegerv(pname, data); +} + +inline void QOpenGLFunctions_4_4_Core::glGetFloatv(GLenum pname, GLfloat *data) +{ + d_1_0_Core->f.GetFloatv(pname, data); +} + +inline GLenum QOpenGLFunctions_4_4_Core::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_4_Core::glGetDoublev(GLenum pname, GLdouble *data) +{ + d_1_0_Core->f.GetDoublev(pname, data); +} + +inline void QOpenGLFunctions_4_4_Core::glGetBooleanv(GLenum pname, GLboolean *data) +{ + d_1_0_Core->f.GetBooleanv(pname, data); +} + +inline void QOpenGLFunctions_4_4_Core::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) +{ + d_1_0_Core->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Core::glReadBuffer(GLenum src) +{ + d_1_0_Core->f.ReadBuffer(src); +} + +inline void QOpenGLFunctions_4_4_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_4_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_4_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_4_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_4_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_4_Core::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_4_Core::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_4_Core::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_4_Core::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_4_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_4_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_4_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_4_Core::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_4_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawBuffer(GLenum buf) +{ + d_1_0_Core->f.DrawBuffer(buf); +} + +inline void QOpenGLFunctions_4_4_Core::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_0_Core->f.TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Core::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_0_Core->f.TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Core::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_4_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_4_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_4_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_4_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_4_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline GLboolean QOpenGLFunctions_4_4_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_4_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_4_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_4_Core::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) +{ + d_1_1_Core->f.TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Core::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) +{ + d_1_1_Core->f.TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Core::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->f.CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Core::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->f.CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_4_Core::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->f.CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_4_Core::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_4_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_4_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.BlendColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_4_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_4_Core::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->f.CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Core::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) +{ + d_1_2_Core->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Core::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_2_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices) +{ + d_1_2_Core->f.DrawRangeElements(mode, start, end, count, type, indices); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_4_Core::glGetCompressedTexImage(GLenum target, GLint level, void *img) +{ + d_1_3_Core->f.GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_4_Core::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Core::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Core::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Core::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Core::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Core::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_4_Core::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_4_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_4_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount) +{ + d_1_4_Core->f.MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_4_Core::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_4_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_4_Core::glGetBufferPointerv(GLenum target, GLenum pname, void * *params) +{ + d_1_5_Core->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline void * QOpenGLFunctions_4_4_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_4_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data) +{ + d_1_5_Core->f.GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_4_Core::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data) +{ + d_1_5_Core->f.BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_4_Core::glBufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage) +{ + d_1_5_Core->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_4_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_4_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_4_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_4_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_4_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_4_Core::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer) +{ + d_2_0_Core->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.VertexAttrib1d(index, x); +} + +inline void QOpenGLFunctions_4_4_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->f.Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_4_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_4_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_4_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_4_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, void * *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_4_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_4_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_4_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_4_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_4_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_4_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_4_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_4_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders) +{ + d_2_0_Core->f.GetAttachedShaders(program, maxCount, count, shaders); +} + +inline void QOpenGLFunctions_4_4_Core::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->f.GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_4_Core::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_4_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_4_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_4_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_4_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_4_Core::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_4_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_4_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_4_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_4_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_4_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_4_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_4_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_4_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_4_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_4_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_4_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline void * QOpenGLFunctions_4_4_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_4_Core::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->f.FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_4_Core::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_4_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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_4_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_4_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_4_Core::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->f.FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_4_Core::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->f.FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_4_Core::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_4_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_4_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_4_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_4_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_4_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_4_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_4_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_4_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_4_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_4_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_4_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_4_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->f.Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_4_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_4_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_4_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.VertexAttribI1i(index, x); +} + +inline void QOpenGLFunctions_4_4_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_3_0_Core->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Core::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_4_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_4_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_4_Core::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->f.GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_4_Core::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode) +{ + d_3_0_Core->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_4_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_4_Core::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_4_Core::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_4_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_4_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_4_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_4_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_4_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_4_Core::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->f.ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_4_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_4_Core::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->f.GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_4_Core::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_4_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_4_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_4_Core::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->f.GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_4_Core::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_4_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_4_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount) +{ + d_3_1_Core->f.DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->f.DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_4_Core::glSampleMaski(GLuint maskNumber, GLbitfield mask) +{ + d_3_2_Core->f.SampleMaski(maskNumber, mask); +} + +inline void QOpenGLFunctions_4_4_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_4_Core::glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->f.TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_4_Core::glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->f.TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_4_Core::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_4_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.GetInteger64i_v(target, index, data); +} + +inline void QOpenGLFunctions_4_4_Core::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_4_Core::glGetInteger64v(GLenum pname, GLint64 *data) +{ + d_3_2_Core->f.GetInteger64v(pname, data); +} + +inline void QOpenGLFunctions_4_4_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_4_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_4_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_4_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_4_Core::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->f.MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->f.DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex) +{ + d_3_2_Core->f.DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex) +{ + d_3_2_Core->f.DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_4_Core::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.VertexAttribDivisor(index, divisor); +} + +inline void QOpenGLFunctions_4_4_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_4_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_4_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_4_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_4_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_4_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_4_Core::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_4_Core::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_4_Core::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_4_Core::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_4_Core::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_4_Core::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_4_Core::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_4_Core::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_4_Core::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_4_Core::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_4_Core::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->f.GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_4_Core::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->f.GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_4_Core::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_4_Core::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_4_Core::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_4_Core::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->f.Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_4_Core::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawArraysIndirect(GLenum mode, const void *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_4_Core::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_4_Core::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_4_Core::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_4_Core::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_4_Core::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.MinSampleShading(value); +} + + +// OpenGL 4.1 core functions +inline void QOpenGLFunctions_4_4_Core::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + d_4_1_Core->f.GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_4_Core::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->f.GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_4_Core::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->f.DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_4_Core::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->f.DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_4_Core::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->f.ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->f.ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_4_Core::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->f.ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_4_Core::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->f.ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->f.ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_4_Core::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->f.ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_4_Core::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->f.GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_4_1_Core->f.VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->f.VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_1_Core->f.VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->f.VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->f.VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_4_Core::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_4_Core::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_4_1_Core->f.ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + d_4_1_Core->f.ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_4_1_Core->f.ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_4_1_Core->f.ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_4_1_Core->f.ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + d_4_1_Core->f.ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_4_1_Core->f.ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + d_4_1_Core->f.ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->f.ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->f.ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->f.ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->f.ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->f.ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->f.ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->f.ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->f.ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_4_Core::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->f.GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_4_Core::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->f.IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_4_Core::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->f.GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_4_Core::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->f.DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_4_Core::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_4_Core::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings) +{ + return d_4_1_Core->f.CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_4_Core::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->f.ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_4_Core::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->f.UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->f.ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_4_Core::glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length) +{ + d_4_1_Core->f.ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLFunctions_4_4_Core::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary) +{ + d_4_1_Core->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_4_Core::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->f.ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_4_Core::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->f.DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_4_Core::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->f.GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_4_4_Core::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length) +{ + d_4_1_Core->f.ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_4_Core::glReleaseShaderCompiler() +{ + d_4_1_Core->f.ReleaseShaderCompiler(); +} + + +// OpenGL 4.2 core functions +inline void QOpenGLFunctions_4_4_Core::glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) +{ + d_4_2_Core->f.DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->f.DrawTransformFeedbackInstanced(mode, id, instancecount); +} + +inline void QOpenGLFunctions_4_4_Core::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_2_Core->f.TexStorage3D(target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLFunctions_4_4_Core::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_2_Core->f.TexStorage2D(target, levels, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_4_Core::glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + d_4_2_Core->f.TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_4_Core::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->f.MemoryBarrier(barriers); +} + +inline void QOpenGLFunctions_4_4_Core::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) +{ + d_4_2_Core->f.BindImageTexture(unit, texture, level, layered, layer, access, format); +} + +inline void QOpenGLFunctions_4_4_Core::glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) +{ + d_4_2_Core->f.GetActiveAtomicCounterBufferiv(program, bufferIndex, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) +{ + d_4_2_Core->f.GetInternalformativ(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) +{ + d_4_2_Core->f.DrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->f.DrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); +} + +inline void QOpenGLFunctions_4_4_Core::glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->f.DrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); +} + + +// OpenGL 4.3 core functions +inline void QOpenGLFunctions_4_4_Core::glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + d_4_3_Core->f.GetObjectPtrLabel(ptr, bufSize, length, label); +} + +inline void QOpenGLFunctions_4_4_Core::glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label) +{ + d_4_3_Core->f.ObjectPtrLabel(ptr, length, label); +} + +inline void QOpenGLFunctions_4_4_Core::glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + d_4_3_Core->f.GetObjectLabel(identifier, name, bufSize, length, label); +} + +inline void QOpenGLFunctions_4_4_Core::glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label) +{ + d_4_3_Core->f.ObjectLabel(identifier, name, length, label); +} + +inline void QOpenGLFunctions_4_4_Core::glPopDebugGroup() +{ + d_4_3_Core->f.PopDebugGroup(); +} + +inline void QOpenGLFunctions_4_4_Core::glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message) +{ + d_4_3_Core->f.PushDebugGroup(source, id, length, message); +} + +inline GLuint QOpenGLFunctions_4_4_Core::glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog) +{ + return d_4_3_Core->f.GetDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog); +} + +inline void QOpenGLFunctions_4_4_Core::glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam) +{ + d_4_3_Core->f.DebugMessageCallback(callback, userParam); +} + +inline void QOpenGLFunctions_4_4_Core::glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf) +{ + d_4_3_Core->f.DebugMessageInsert(source, type, id, severity, length, buf); +} + +inline void QOpenGLFunctions_4_4_Core::glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled) +{ + d_4_3_Core->f.DebugMessageControl(source, type, severity, count, ids, enabled); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) +{ + d_4_3_Core->f.VertexBindingDivisor(bindingindex, divisor); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) +{ + d_4_3_Core->f.VertexAttribBinding(attribindex, bindingindex); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribLFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribIFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_4_Core::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribFormat(attribindex, size, type, normalized, relativeoffset); +} + +inline void QOpenGLFunctions_4_4_Core::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + d_4_3_Core->f.BindVertexBuffer(bindingindex, buffer, offset, stride); +} + +inline void QOpenGLFunctions_4_4_Core::glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) +{ + d_4_3_Core->f.TextureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); +} + +inline void QOpenGLFunctions_4_4_Core::glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_4_3_Core->f.TexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_4_Core::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_4_3_Core->f.TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_4_Core::glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_4_3_Core->f.TexBufferRange(target, internalformat, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_4_Core::glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) +{ + d_4_3_Core->f.ShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding); +} + +inline GLint QOpenGLFunctions_4_4_Core::glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceLocationIndex(program, programInterface, name); +} + +inline GLint QOpenGLFunctions_4_4_Core::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceLocation(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_4_Core::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params) +{ + d_4_3_Core->f.GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name) +{ + d_4_3_Core->f.GetProgramResourceName(program, programInterface, index, bufSize, length, name); +} + +inline GLuint QOpenGLFunctions_4_4_Core::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceIndex(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_4_Core::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) +{ + d_4_3_Core->f.GetProgramInterfaceiv(program, programInterface, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->f.MultiDrawElementsIndirect(mode, type, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_4_Core::glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->f.MultiDrawArraysIndirect(mode, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_4_Core::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_3_Core->f.InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); +} + +inline void QOpenGLFunctions_4_4_Core::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments) +{ + d_4_3_Core->f.InvalidateFramebuffer(target, numAttachments, attachments); +} + +inline void QOpenGLFunctions_4_4_Core::glInvalidateBufferData(GLuint buffer) +{ + d_4_3_Core->f.InvalidateBufferData(buffer); +} + +inline void QOpenGLFunctions_4_4_Core::glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) +{ + d_4_3_Core->f.InvalidateBufferSubData(buffer, offset, length); +} + +inline void QOpenGLFunctions_4_4_Core::glInvalidateTexImage(GLuint texture, GLint level) +{ + d_4_3_Core->f.InvalidateTexImage(texture, level); +} + +inline void QOpenGLFunctions_4_4_Core::glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_3_Core->f.InvalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth); +} + +inline void QOpenGLFunctions_4_4_Core::glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params) +{ + d_4_3_Core->f.GetInternalformati64v(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_4_Core::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_4_3_Core->f.GetFramebufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_4_Core::glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + d_4_3_Core->f.FramebufferParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_4_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->f.CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); +} + +inline void QOpenGLFunctions_4_4_Core::glDispatchComputeIndirect(GLintptr indirect) +{ + d_4_3_Core->f.DispatchComputeIndirect(indirect); +} + +inline void QOpenGLFunctions_4_4_Core::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) +{ + d_4_3_Core->f.DispatchCompute(num_groups_x, num_groups_y, num_groups_z); +} + +inline void QOpenGLFunctions_4_4_Core::glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->f.ClearBufferSubData(target, internalformat, offset, size, format, type, data); +} + +inline void QOpenGLFunctions_4_4_Core::glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->f.ClearBufferData(target, internalformat, format, type, data); +} + + +// OpenGL 4.4 core functions +inline void QOpenGLFunctions_4_4_Core::glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides) +{ + d_4_4_Core->f.BindVertexBuffers(first, count, buffers, offsets, strides); +} + +inline void QOpenGLFunctions_4_4_Core::glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures) +{ + d_4_4_Core->f.BindImageTextures(first, count, textures); +} + +inline void QOpenGLFunctions_4_4_Core::glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers) +{ + d_4_4_Core->f.BindSamplers(first, count, samplers); +} + +inline void QOpenGLFunctions_4_4_Core::glBindTextures(GLuint first, GLsizei count, const GLuint *textures) +{ + d_4_4_Core->f.BindTextures(first, count, textures); +} + +inline void QOpenGLFunctions_4_4_Core::glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes) +{ + d_4_4_Core->f.BindBuffersRange(target, first, count, buffers, offsets, sizes); +} + +inline void QOpenGLFunctions_4_4_Core::glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers) +{ + d_4_4_Core->f.BindBuffersBase(target, first, count, buffers); +} + +inline void QOpenGLFunctions_4_4_Core::glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data) +{ + d_4_4_Core->f.ClearTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); +} + +inline void QOpenGLFunctions_4_4_Core::glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data) +{ + d_4_4_Core->f.ClearTexImage(texture, level, format, type, data); +} + +inline void QOpenGLFunctions_4_4_Core::glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags) +{ + d_4_4_Core->f.BufferStorage(target, size, data, flags); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_5_compatibility.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_5_compatibility.h new file mode 100644 index 000000000..b16453868 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_5_compatibility.h @@ -0,0 +1,6684 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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_5_COMPATIBILITY_H +#define QOPENGLVERSIONFUNCTIONS_4_5_COMPATIBILITY_H + +#include <QtGui/qtguiglobal.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_5_Compatibility : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_5_Compatibility(); + ~QOpenGLFunctions_4_5_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, void *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *data); + void glGetFloatv(GLenum pname, GLfloat *data); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *data); + void glGetBooleanv(GLenum pname, GLboolean *data); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); + void glReadBuffer(GLenum src); + 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 buf); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *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 + 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 void *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *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 glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glBlendEquation(GLenum mode); + 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 void *pixels); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, void *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *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 void *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, void * *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + void * glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); + void glBufferData(GLenum target, GLsizeiptr size, const void *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 void *pointer); + 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); + 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, void * *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 *shaders); + 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); + void * 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 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); + 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 void *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 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 glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint maskNumber, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + 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); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *data); + 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 void *const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); + + // 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 glVertexAttribDivisor(GLuint index, GLuint divisor); + 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); + + // 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 void *indirect); + void glDrawArraysIndirect(GLenum mode, const void *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 void *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 void *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *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 void *binary, GLsizei length); + void glReleaseShaderCompiler(); + + // OpenGL 4.2 core functions + void glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + 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 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 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); + 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 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 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 4.4 core functions + void glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); + void glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures); + void glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers); + void glBindTextures(GLuint first, GLsizei count, const GLuint *textures); + void glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); + void glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); + void glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); + void glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); + void glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); + + // OpenGL 4.5 core functions + void glTextureBarrier(); + void glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); + void glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params); + void glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params); + void glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); + void glGetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); + void glGetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); + void glGetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void *pixels); + GLenum glGetGraphicsResetStatus(); + void glGetCompressedTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); + void glGetTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); + void glMemoryBarrierByRegion(GLbitfield barriers); + void glCreateQueries(GLenum target, GLsizei n, GLuint *ids); + void glCreateProgramPipelines(GLsizei n, GLuint *pipelines); + void glCreateSamplers(GLsizei n, GLuint *samplers); + void glGetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); + void glGetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint *param); + void glGetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param); + void glVertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor); + void glVertexArrayAttribLFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexArrayAttribIFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexArrayAttribFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void glVertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + void glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); + void glVertexArrayVertexBuffer(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + void glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer); + void glEnableVertexArrayAttrib(GLuint vaobj, GLuint index); + void glDisableVertexArrayAttrib(GLuint vaobj, GLuint index); + void glCreateVertexArrays(GLsizei n, GLuint *arrays); + void glGetTextureParameteriv(GLuint texture, GLenum pname, GLint *params); + void glGetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint *params); + void glGetTextureParameterIiv(GLuint texture, GLenum pname, GLint *params); + void glGetTextureParameterfv(GLuint texture, GLenum pname, GLfloat *params); + void glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint *params); + void glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat *params); + void glGetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, void *pixels); + void glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); + void glBindTextureUnit(GLuint unit, GLuint texture); + void glGenerateTextureMipmap(GLuint texture); + void glTextureParameteriv(GLuint texture, GLenum pname, const GLint *param); + void glTextureParameterIuiv(GLuint texture, GLenum pname, const GLuint *params); + void glTextureParameterIiv(GLuint texture, GLenum pname, const GLint *params); + void glTextureParameteri(GLuint texture, GLenum pname, GLint param); + void glTextureParameterfv(GLuint texture, GLenum pname, const GLfloat *param); + void glTextureParameterf(GLuint texture, GLenum pname, GLfloat param); + void glCopyTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); + void glTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); + void glTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); + void glTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); + void glTextureStorage3DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTextureStorage2DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glTextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void glTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); + void glTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizei size); + void glTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer); + void glCreateTextures(GLenum target, GLsizei n, GLuint *textures); + void glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint *params); + void glNamedRenderbufferStorageMultisample(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glNamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); + void glCreateRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); + void glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param); + GLenum glCheckNamedFramebufferStatus(GLuint framebuffer, GLenum target); + void glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLfloat depth, GLint stencil); + void glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); + void glInvalidateNamedFramebufferSubData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); + void glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); + void glNamedFramebufferReadBuffer(GLuint framebuffer, GLenum src); + void glNamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum *bufs); + void glNamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf); + void glNamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glNamedFramebufferTexture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); + void glNamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param); + void glNamedFramebufferRenderbuffer(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glCreateFramebuffers(GLsizei n, GLuint *framebuffers); + void glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, void *data); + void glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void * *params); + void glGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64 *params); + void glGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params); + void glFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length); + GLboolean glUnmapNamedBuffer(GLuint buffer); + void * glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length, GLbitfield access); + void * glMapNamedBuffer(GLuint buffer, GLenum access); + void glClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizei size, GLenum format, GLenum type, const void *data); + void glClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); + void glCopyNamedBufferSubData(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizei size); + void glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, const void *data); + void glNamedBufferData(GLuint buffer, GLsizei size, const void *data, GLenum usage); + void glNamedBufferStorage(GLuint buffer, GLsizei size, const void *data, GLbitfield flags); + void glCreateBuffers(GLsizei n, GLuint *buffers); + void glGetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, GLint64 *param); + void glGetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint *param); + void glGetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param); + void glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size); + void glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer); + void glCreateTransformFeedbacks(GLsizei n, GLuint *ids); + void glClipControl(GLenum origin, GLenum depth); + + // 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 void *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLsizei 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 void *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 glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + 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 void *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const void *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const void *pointer); + void glGetPointerv(GLenum pname, void * *params); + void glIndexPointer(GLenum type, GLsizei stride, const void *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const void *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glGetColorTable(GLenum target, GLenum format, GLenum type, void *table); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, void *image); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glResetHistogram(GLenum target); + void glResetMinmax(GLenum target); + + // 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 void *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 void *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 + + // OpenGL 2.1 deprecated functions + + // OpenGL 3.0 deprecated functions + + // OpenGL 3.1 deprecated functions + + // OpenGL 3.2 deprecated functions + + // OpenGL 3.3 deprecated functions + 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); + + // OpenGL 4.0 deprecated functions + + // OpenGL 4.1 deprecated functions + + // OpenGL 4.2 deprecated functions + + // OpenGL 4.3 deprecated functions + + // OpenGL 4.4 deprecated functions + + // OpenGL 4.5 deprecated functions + void glGetnMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); + void glGetnHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); + void glGetnSeparableFilter(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); + void glGetnConvolutionFilter(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); + void glGetnColorTable(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); + void glGetnPolygonStipple(GLsizei bufSize, GLubyte *pattern); + void glGetnPixelMapusv(GLenum map, GLsizei bufSize, GLushort *values); + void glGetnPixelMapuiv(GLenum map, GLsizei bufSize, GLuint *values); + void glGetnPixelMapfv(GLenum map, GLsizei bufSize, GLfloat *values); + void glGetnMapiv(GLenum target, GLenum query, GLsizei bufSize, GLint *v); + void glGetnMapfv(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); + void glGetnMapdv(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); + +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_4_4_CoreBackend* d_4_4_Core; + QOpenGLFunctions_4_5_CoreBackend* d_4_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; + QOpenGLFunctions_3_3_DeprecatedBackend* d_3_3_Deprecated; + QOpenGLFunctions_4_5_DeprecatedBackend* d_4_5_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_5_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetIntegerv(GLenum pname, GLint *data) +{ + d_1_0_Core->f.GetIntegerv(pname, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetFloatv(GLenum pname, GLfloat *data) +{ + d_1_0_Core->f.GetFloatv(pname, data); +} + +inline GLenum QOpenGLFunctions_4_5_Compatibility::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetDoublev(GLenum pname, GLdouble *data) +{ + d_1_0_Core->f.GetDoublev(pname, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetBooleanv(GLenum pname, GLboolean *data) +{ + d_1_0_Core->f.GetBooleanv(pname, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) +{ + d_1_0_Core->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glReadBuffer(GLenum src) +{ + d_1_0_Core->f.ReadBuffer(src); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawBuffer(GLenum buf) +{ + d_1_0_Core->f.DrawBuffer(buf); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_0_Core->f.TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_0_Core->f.TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) +{ + d_1_1_Core->f.TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) +{ + d_1_1_Core->f.TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->f.CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->f.CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->f.CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.BlendColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->f.CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) +{ + d_1_2_Core->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_2_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices) +{ + d_1_2_Core->f.DrawRangeElements(mode, start, end, count, type, indices); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glGetCompressedTexImage(GLenum target, GLint level, void *img) +{ + d_1_3_Core->f.GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount) +{ + d_1_4_Core->f.MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glGetBufferPointerv(GLenum target, GLenum pname, void * *params) +{ + d_1_5_Core->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline void * QOpenGLFunctions_4_5_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data) +{ + d_1_5_Core->f.GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data) +{ + d_1_5_Core->f.BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage) +{ + d_1_5_Core->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer) +{ + d_2_0_Core->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.VertexAttrib1d(index, x); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->f.Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, void * *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_5_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_5_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders) +{ + d_2_0_Core->f.GetAttachedShaders(program, maxCount, count, shaders); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->f.GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_5_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_5_Compatibility::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline void * QOpenGLFunctions_4_5_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->f.FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->f.FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->f.FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_5_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_5_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->f.Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_5_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.VertexAttribI1i(index, x); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_3_0_Core->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->f.GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode) +{ + d_3_0_Core->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->f.ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->f.GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_5_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->f.GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount) +{ + d_3_1_Core->f.DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->f.DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glSampleMaski(GLuint maskNumber, GLbitfield mask) +{ + d_3_2_Core->f.SampleMaski(maskNumber, mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->f.TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->f.TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.GetInteger64i_v(target, index, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetInteger64v(GLenum pname, GLint64 *data) +{ + d_3_2_Core->f.GetInteger64v(pname, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_5_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_5_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->f.MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->f.DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex) +{ + d_3_2_Core->f.DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex) +{ + d_3_2_Core->f.DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.VertexAttribDivisor(index, divisor); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_5_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->f.GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->f.GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_5_Compatibility::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_5_Compatibility::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->f.Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawArraysIndirect(GLenum mode, const void *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.MinSampleShading(value); +} + + +// OpenGL 4.1 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + d_4_1_Core->f.GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->f.GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->f.DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->f.DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->f.ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->f.ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->f.ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->f.ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->f.ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->f.ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->f.GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_4_1_Core->f.VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->f.VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_1_Core->f.VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->f.VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->f.VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_4_1_Core->f.ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + d_4_1_Core->f.ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_4_1_Core->f.ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_4_1_Core->f.ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_4_1_Core->f.ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + d_4_1_Core->f.ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_4_1_Core->f.ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + d_4_1_Core->f.ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->f.ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->f.ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->f.ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->f.ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->f.ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->f.ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->f.ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->f.ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->f.GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->f.IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->f.GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->f.DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_5_Compatibility::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings) +{ + return d_4_1_Core->f.CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->f.ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->f.UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->f.ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length) +{ + d_4_1_Core->f.ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary) +{ + d_4_1_Core->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->f.ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->f.DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->f.GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length) +{ + d_4_1_Core->f.ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glReleaseShaderCompiler() +{ + d_4_1_Core->f.ReleaseShaderCompiler(); +} + + +// OpenGL 4.2 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) +{ + d_4_2_Core->f.DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->f.DrawTransformFeedbackInstanced(mode, id, instancecount); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_2_Core->f.TexStorage3D(target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_2_Core->f.TexStorage2D(target, levels, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + d_4_2_Core->f.TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->f.MemoryBarrier(barriers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) +{ + d_4_2_Core->f.BindImageTexture(unit, texture, level, layered, layer, access, format); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) +{ + d_4_2_Core->f.GetActiveAtomicCounterBufferiv(program, bufferIndex, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) +{ + d_4_2_Core->f.GetInternalformativ(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) +{ + d_4_2_Core->f.DrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->f.DrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->f.DrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); +} + + +// OpenGL 4.3 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + d_4_3_Core->f.GetObjectPtrLabel(ptr, bufSize, length, label); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label) +{ + d_4_3_Core->f.ObjectPtrLabel(ptr, length, label); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + d_4_3_Core->f.GetObjectLabel(identifier, name, bufSize, length, label); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label) +{ + d_4_3_Core->f.ObjectLabel(identifier, name, length, label); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPopDebugGroup() +{ + d_4_3_Core->f.PopDebugGroup(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message) +{ + d_4_3_Core->f.PushDebugGroup(source, id, length, message); +} + +inline GLuint QOpenGLFunctions_4_5_Compatibility::glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog) +{ + return d_4_3_Core->f.GetDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam) +{ + d_4_3_Core->f.DebugMessageCallback(callback, userParam); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf) +{ + d_4_3_Core->f.DebugMessageInsert(source, type, id, severity, length, buf); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled) +{ + d_4_3_Core->f.DebugMessageControl(source, type, severity, count, ids, enabled); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) +{ + d_4_3_Core->f.VertexBindingDivisor(bindingindex, divisor); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) +{ + d_4_3_Core->f.VertexAttribBinding(attribindex, bindingindex); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribLFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribIFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribFormat(attribindex, size, type, normalized, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + d_4_3_Core->f.BindVertexBuffer(bindingindex, buffer, offset, stride); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) +{ + d_4_3_Core->f.TextureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_4_3_Core->f.TexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_4_3_Core->f.TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_4_3_Core->f.TexBufferRange(target, internalformat, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) +{ + d_4_3_Core->f.ShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding); +} + +inline GLint QOpenGLFunctions_4_5_Compatibility::glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceLocationIndex(program, programInterface, name); +} + +inline GLint QOpenGLFunctions_4_5_Compatibility::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceLocation(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params) +{ + d_4_3_Core->f.GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name) +{ + d_4_3_Core->f.GetProgramResourceName(program, programInterface, index, bufSize, length, name); +} + +inline GLuint QOpenGLFunctions_4_5_Compatibility::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceIndex(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) +{ + d_4_3_Core->f.GetProgramInterfaceiv(program, programInterface, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->f.MultiDrawElementsIndirect(mode, type, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->f.MultiDrawArraysIndirect(mode, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_3_Core->f.InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments) +{ + d_4_3_Core->f.InvalidateFramebuffer(target, numAttachments, attachments); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glInvalidateBufferData(GLuint buffer) +{ + d_4_3_Core->f.InvalidateBufferData(buffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) +{ + d_4_3_Core->f.InvalidateBufferSubData(buffer, offset, length); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glInvalidateTexImage(GLuint texture, GLint level) +{ + d_4_3_Core->f.InvalidateTexImage(texture, level); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_3_Core->f.InvalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params) +{ + d_4_3_Core->f.GetInternalformati64v(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_4_3_Core->f.GetFramebufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + d_4_3_Core->f.FramebufferParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_5_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->f.CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDispatchComputeIndirect(GLintptr indirect) +{ + d_4_3_Core->f.DispatchComputeIndirect(indirect); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) +{ + d_4_3_Core->f.DispatchCompute(num_groups_x, num_groups_y, num_groups_z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->f.ClearBufferSubData(target, internalformat, offset, size, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->f.ClearBufferData(target, internalformat, format, type, data); +} + + +// OpenGL 4.4 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides) +{ + d_4_4_Core->f.BindVertexBuffers(first, count, buffers, offsets, strides); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures) +{ + d_4_4_Core->f.BindImageTextures(first, count, textures); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers) +{ + d_4_4_Core->f.BindSamplers(first, count, samplers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindTextures(GLuint first, GLsizei count, const GLuint *textures) +{ + d_4_4_Core->f.BindTextures(first, count, textures); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes) +{ + d_4_4_Core->f.BindBuffersRange(target, first, count, buffers, offsets, sizes); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers) +{ + d_4_4_Core->f.BindBuffersBase(target, first, count, buffers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data) +{ + d_4_4_Core->f.ClearTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data) +{ + d_4_4_Core->f.ClearTexImage(texture, level, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags) +{ + d_4_4_Core->f.BufferStorage(target, size, data, flags); +} + + +// OpenGL 4.5 core functions +inline void QOpenGLFunctions_4_5_Compatibility::glTextureBarrier() +{ + d_4_5_Core->f.TextureBarrier(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) +{ + d_4_5_Core->f.ReadnPixels(x, y, width, height, format, type, bufSize, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params) +{ + d_4_5_Core->f.GetnUniformuiv(program, location, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params) +{ + d_4_5_Core->f.GetnUniformiv(program, location, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params) +{ + d_4_5_Core->f.GetnUniformfv(program, location, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble *params) +{ + d_4_5_Core->f.GetnUniformdv(program, location, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetnTexImage(target, level, format, type, bufSize, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetnCompressedTexImage(target, lod, bufSize, pixels); +} + +inline GLenum QOpenGLFunctions_4_5_Compatibility::glGetGraphicsResetStatus() +{ + return d_4_5_Core->f.GetGraphicsResetStatus(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetCompressedTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetCompressedTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMemoryBarrierByRegion(GLbitfield barriers) +{ + d_4_5_Core->f.MemoryBarrierByRegion(barriers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCreateQueries(GLenum target, GLsizei n, GLuint *ids) +{ + d_4_5_Core->f.CreateQueries(target, n, ids); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCreateProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_5_Core->f.CreateProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCreateSamplers(GLsizei n, GLuint *samplers) +{ + d_4_5_Core->f.CreateSamplers(n, samplers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param) +{ + d_4_5_Core->f.GetVertexArrayIndexed64iv(vaobj, index, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint *param) +{ + d_4_5_Core->f.GetVertexArrayIndexediv(vaobj, index, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param) +{ + d_4_5_Core->f.GetVertexArrayiv(vaobj, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor) +{ + d_4_5_Core->f.VertexArrayBindingDivisor(vaobj, bindingindex, divisor); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexArrayAttribLFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_5_Core->f.VertexArrayAttribLFormat(vaobj, attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexArrayAttribIFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_5_Core->f.VertexArrayAttribIFormat(vaobj, attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexArrayAttribFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + d_4_5_Core->f.VertexArrayAttribFormat(vaobj, attribindex, size, type, normalized, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex) +{ + d_4_5_Core->f.VertexArrayAttribBinding(vaobj, attribindex, bindingindex); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides) +{ + d_4_5_Core->f.VertexArrayVertexBuffers(vaobj, first, count, buffers, offsets, strides); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexArrayVertexBuffer(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + d_4_5_Core->f.VertexArrayVertexBuffer(vaobj, bindingindex, buffer, offset, stride); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer) +{ + d_4_5_Core->f.VertexArrayElementBuffer(vaobj, buffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEnableVertexArrayAttrib(GLuint vaobj, GLuint index) +{ + d_4_5_Core->f.EnableVertexArrayAttrib(vaobj, index); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDisableVertexArrayAttrib(GLuint vaobj, GLuint index) +{ + d_4_5_Core->f.DisableVertexArrayAttrib(vaobj, index); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCreateVertexArrays(GLsizei n, GLuint *arrays) +{ + d_4_5_Core->f.CreateVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTextureParameteriv(GLuint texture, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetTextureParameteriv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint *params) +{ + d_4_5_Core->f.GetTextureParameterIuiv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTextureParameterIiv(GLuint texture, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetTextureParameterIiv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTextureParameterfv(GLuint texture, GLenum pname, GLfloat *params) +{ + d_4_5_Core->f.GetTextureParameterfv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetTextureLevelParameteriv(texture, level, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat *params) +{ + d_4_5_Core->f.GetTextureLevelParameterfv(texture, level, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetCompressedTextureImage(texture, level, bufSize, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetTextureImage(texture, level, format, type, bufSize, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBindTextureUnit(GLuint unit, GLuint texture) +{ + d_4_5_Core->f.BindTextureUnit(unit, texture); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGenerateTextureMipmap(GLuint texture) +{ + d_4_5_Core->f.GenerateTextureMipmap(texture); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureParameteriv(GLuint texture, GLenum pname, const GLint *param) +{ + d_4_5_Core->f.TextureParameteriv(texture, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureParameterIuiv(GLuint texture, GLenum pname, const GLuint *params) +{ + d_4_5_Core->f.TextureParameterIuiv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureParameterIiv(GLuint texture, GLenum pname, const GLint *params) +{ + d_4_5_Core->f.TextureParameterIiv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureParameteri(GLuint texture, GLenum pname, GLint param) +{ + d_4_5_Core->f.TextureParameteri(texture, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureParameterfv(GLuint texture, GLenum pname, const GLfloat *param) +{ + d_4_5_Core->f.TextureParameterfv(texture, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureParameterf(GLuint texture, GLenum pname, GLfloat param) +{ + d_4_5_Core->f.TextureParameterf(texture, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.CopyTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.CopyTextureSubImage2D(texture, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_4_5_Core->f.CopyTextureSubImage1D(texture, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) +{ + d_4_5_Core->f.CompressedTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) +{ + d_4_5_Core->f.CompressedTextureSubImage2D(texture, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) +{ + d_4_5_Core->f.CompressedTextureSubImage1D(texture, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) +{ + d_4_5_Core->f.TextureSubImage3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) +{ + d_4_5_Core->f.TextureSubImage2D(texture, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) +{ + d_4_5_Core->f.TextureSubImage1D(texture, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureStorage3DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_4_5_Core->f.TextureStorage3DMultisample(texture, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureStorage2DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_4_5_Core->f.TextureStorage2DMultisample(texture, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_5_Core->f.TextureStorage3D(texture, levels, internalformat, width, height, depth); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.TextureStorage2D(texture, levels, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width) +{ + d_4_5_Core->f.TextureStorage1D(texture, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizei size) +{ + d_4_5_Core->f.TextureBufferRange(texture, internalformat, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer) +{ + d_4_5_Core->f.TextureBuffer(texture, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCreateTextures(GLenum target, GLsizei n, GLuint *textures) +{ + d_4_5_Core->f.CreateTextures(target, n, textures); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetNamedRenderbufferParameteriv(renderbuffer, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedRenderbufferStorageMultisample(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.NamedRenderbufferStorageMultisample(renderbuffer, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.NamedRenderbufferStorage(renderbuffer, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCreateRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_4_5_Core->f.CreateRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetNamedFramebufferAttachmentParameteriv(framebuffer, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param) +{ + d_4_5_Core->f.GetNamedFramebufferParameteriv(framebuffer, pname, param); +} + +inline GLenum QOpenGLFunctions_4_5_Compatibility::glCheckNamedFramebufferStatus(GLuint framebuffer, GLenum target) +{ + return d_4_5_Core->f.CheckNamedFramebufferStatus(framebuffer, target); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_4_5_Core->f.BlitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLfloat depth, GLint stencil) +{ + d_4_5_Core->f.ClearNamedFramebufferfi(framebuffer, buffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_4_5_Core->f.ClearNamedFramebufferfv(framebuffer, buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_4_5_Core->f.ClearNamedFramebufferuiv(framebuffer, buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_4_5_Core->f.ClearNamedFramebufferiv(framebuffer, buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glInvalidateNamedFramebufferSubData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.InvalidateNamedFramebufferSubData(framebuffer, numAttachments, attachments, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments) +{ + d_4_5_Core->f.InvalidateNamedFramebufferData(framebuffer, numAttachments, attachments); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedFramebufferReadBuffer(GLuint framebuffer, GLenum src) +{ + d_4_5_Core->f.NamedFramebufferReadBuffer(framebuffer, src); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum *bufs) +{ + d_4_5_Core->f.NamedFramebufferDrawBuffers(framebuffer, n, bufs); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf) +{ + d_4_5_Core->f.NamedFramebufferDrawBuffer(framebuffer, buf); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_4_5_Core->f.NamedFramebufferTextureLayer(framebuffer, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedFramebufferTexture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) +{ + d_4_5_Core->f.NamedFramebufferTexture(framebuffer, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param) +{ + d_4_5_Core->f.NamedFramebufferParameteri(framebuffer, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedFramebufferRenderbuffer(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_4_5_Core->f.NamedFramebufferRenderbuffer(framebuffer, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCreateFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_4_5_Core->f.CreateFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, void *data) +{ + d_4_5_Core->f.GetNamedBufferSubData(buffer, offset, size, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void * *params) +{ + d_4_5_Core->f.GetNamedBufferPointerv(buffer, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64 *params) +{ + d_4_5_Core->f.GetNamedBufferParameteri64v(buffer, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetNamedBufferParameteriv(buffer, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length) +{ + d_4_5_Core->f.FlushMappedNamedBufferRange(buffer, offset, length); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glUnmapNamedBuffer(GLuint buffer) +{ + return d_4_5_Core->f.UnmapNamedBuffer(buffer); +} + +inline void * QOpenGLFunctions_4_5_Compatibility::glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length, GLbitfield access) +{ + return d_4_5_Core->f.MapNamedBufferRange(buffer, offset, length, access); +} + +inline void * QOpenGLFunctions_4_5_Compatibility::glMapNamedBuffer(GLuint buffer, GLenum access) +{ + return d_4_5_Core->f.MapNamedBuffer(buffer, access); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizei size, GLenum format, GLenum type, const void *data) +{ + d_4_5_Core->f.ClearNamedBufferSubData(buffer, internalformat, offset, size, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data) +{ + d_4_5_Core->f.ClearNamedBufferData(buffer, internalformat, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyNamedBufferSubData(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizei size) +{ + d_4_5_Core->f.CopyNamedBufferSubData(readBuffer, writeBuffer, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, const void *data) +{ + d_4_5_Core->f.NamedBufferSubData(buffer, offset, size, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedBufferData(GLuint buffer, GLsizei size, const void *data, GLenum usage) +{ + d_4_5_Core->f.NamedBufferData(buffer, size, data, usage); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNamedBufferStorage(GLuint buffer, GLsizei size, const void *data, GLbitfield flags) +{ + d_4_5_Core->f.NamedBufferStorage(buffer, size, data, flags); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCreateBuffers(GLsizei n, GLuint *buffers) +{ + d_4_5_Core->f.CreateBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, GLint64 *param) +{ + d_4_5_Core->f.GetTransformFeedbacki64_v(xfb, pname, index, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint *param) +{ + d_4_5_Core->f.GetTransformFeedbacki_v(xfb, pname, index, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param) +{ + d_4_5_Core->f.GetTransformFeedbackiv(xfb, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size) +{ + d_4_5_Core->f.TransformFeedbackBufferRange(xfb, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer) +{ + d_4_5_Core->f.TransformFeedbackBufferBase(xfb, index, buffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCreateTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_5_Core->f.CreateTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClipControl(GLenum origin, GLenum depth) +{ + d_4_5_Core->f.ClipControl(origin, depth); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_4_5_Compatibility::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Translatef(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Translated(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Scalef(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Scaled(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->f.PushMatrix(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->f.PopMatrix(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.MultMatrixd(m); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.MultMatrixf(m); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->f.MatrixMode(mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->f.LoadMatrixd(m); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->f.LoadMatrixf(m); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->f.LoadIdentity(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->f.Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->f.IsList(list); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->f.GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->f.GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->f.GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->f.GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->f.GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->f.GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->f.GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->f.GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->f.GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->f.GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->f.GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) +{ + d_1_0_Deprecated->f.DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->f.CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values) +{ + d_1_0_Deprecated->f.PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values) +{ + d_1_0_Deprecated->f.PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->f.PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->f.PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->f.AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->f.EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->f.EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->f.EvalPoint1(i); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->f.EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->f.EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->f.EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->f.EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->f.EvalCoord1f(u); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->f.EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->f.EvalCoord1d(u); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->f.MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->f.MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->f.MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->f.MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_4_5_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->f.Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_5_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->f.Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->f.Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->f.Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->f.PushAttrib(mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->f.PopAttrib(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->f.Accum(op, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->f.IndexMask(mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->f.ClearIndex(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->f.PushName(name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPopName() +{ + d_1_0_Deprecated->f.PopName(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->f.PassThrough(token); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->f.LoadName(name); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glInitNames() +{ + d_1_0_Deprecated->f.InitNames(); +} + +inline GLint QOpenGLFunctions_4_5_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->f.RenderMode(mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->f.SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->f.FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->f.TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->f.TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->f.ShadeModel(mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->f.PolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->f.LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.LightModeli(pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.LightModelf(pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->f.Fogiv(pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->f.Fogi(pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->f.Fogfv(pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->f.Fogf(pname, param); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->f.ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->f.ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex4sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex4iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex4fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex4dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex3sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex3iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex3fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex3dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Vertex2sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.Vertex2s(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->f.Vertex2iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.Vertex2i(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Vertex2fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.Vertex2f(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Vertex2dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.Vertex2d(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord4sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->f.TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord4iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->f.TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord4fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->f.TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord4dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->f.TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord3sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->f.TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord3iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->f.TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord3fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->f.TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord3dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->f.TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord2sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->f.TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord2iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->f.TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord2fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->f.TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord2dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->f.TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->f.TexCoord1sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->f.TexCoord1s(s); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->f.TexCoord1iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->f.TexCoord1i(s); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.TexCoord1fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->f.TexCoord1f(s); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.TexCoord1dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->f.TexCoord1d(s); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->f.Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->f.Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->f.Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->f.Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->f.Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->f.Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->f.Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->f.Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos4sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->f.RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos4iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->f.RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos4fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->f.RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos4dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->f.RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos3sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->f.RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos3iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->f.RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos3fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->f.RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos3dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->f.RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->f.RasterPos2sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->f.RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->f.RasterPos2iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->f.RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.RasterPos2fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->f.RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.RasterPos2dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->f.RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Normal3sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->f.Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Normal3iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->f.Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Normal3fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->f.Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Normal3dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->f.Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Normal3bv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->f.Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->f.Indexsv(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->f.Indexs(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->f.Indexiv(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->f.Indexi(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->f.Indexfv(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->f.Indexf(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->f.Indexdv(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->f.Indexd(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEnd() +{ + d_1_0_Deprecated->f.End(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->f.EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->f.EdgeFlag(flag); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color4usv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->f.Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color4uiv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->f.Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color4ubv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->f.Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color4sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->f.Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color4iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->f.Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color4fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->f.Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color4dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->f.Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color4bv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->f.Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->f.Color3usv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->f.Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->f.Color3uiv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->f.Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->f.Color3ubv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->f.Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->f.Color3sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->f.Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->f.Color3iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->f.Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->f.Color3fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->f.Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->f.Color3dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->f.Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->f.Color3bv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->f.Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->f.Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->f.Begin(mode); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->f.ListBase(base); +} + +inline GLuint QOpenGLFunctions_4_5_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->f.GenLists(range); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->f.DeleteLists(list, range); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCallLists(GLsizei n, GLenum type, const void *lists) +{ + d_1_0_Deprecated->f.CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->f.CallList(list); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEndList() +{ + d_1_0_Deprecated->f.EndList(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->f.NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_4_5_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->f.PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->f.PopClientAttrib(); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Deprecated->f.Indexubv(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Deprecated->f.Indexub(c); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->f.PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_4_5_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->f.AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetPointerv(GLenum pname, void * *params) +{ + d_1_1_Deprecated->f.GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->f.EnableClientState(array); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glEdgeFlagPointer(GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->f.DisableClientState(array); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_1_1_Deprecated->f.ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->f.ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_4_5_Compatibility::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table) +{ + d_1_2_Deprecated->f.ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->f.CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, void *table) +{ + d_1_2_Deprecated->f.GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data) +{ + d_1_2_Deprecated->f.ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->f.CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image) +{ + d_1_2_Deprecated->f.ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image) +{ + d_1_2_Deprecated->f.ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->f.ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->f.ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->f.ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->f.ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->f.CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->f.CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, void *image) +{ + d_1_2_Deprecated->f.GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, void *row, void *column, void *span) +{ + d_1_2_Deprecated->f.GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column) +{ + d_1_2_Deprecated->f.SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values) +{ + d_1_2_Deprecated->f.GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, void *values) +{ + d_1_2_Deprecated->f.GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->f.GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->f.Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->f.ResetHistogram(target); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->f.ResetMinmax(target); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_4_5_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->f.LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->f.MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->f.MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->f.MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->f.MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->f.MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->f.MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->f.MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->f.MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->f.MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->f.MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->f.MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->f.MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->f.MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->f.MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->f.MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->f.MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->f.MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->f.ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos3sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->f.WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos3iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->f.WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos3fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->f.WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos3dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->f.WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->f.WindowPos2sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->f.WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->f.WindowPos2iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->f.WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.WindowPos2fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->f.WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.WindowPos2dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->f.WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_1_4_Deprecated->f.SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->f.SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->f.SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->f.SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->f.SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->f.SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->f.SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->f.SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->f.SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->f.SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->f.SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const void *pointer) +{ + d_1_4_Deprecated->f.FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->f.FogCoorddv(coord); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->f.FogCoordd(coord); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->f.FogCoordfv(coord); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->f.FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions + +// OpenGL 2.1 deprecated functions + +// OpenGL 3.0 deprecated functions + +// OpenGL 3.1 deprecated functions + +// OpenGL 3.2 deprecated functions + +// OpenGL 3.3 deprecated functions +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Deprecated->f.ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Deprecated->f.ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Deprecated->f.TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Deprecated->f.TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Deprecated->f.VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Deprecated->f.VertexP2ui(type, value); +} + + +// OpenGL 4.0 deprecated functions + +// OpenGL 4.1 deprecated functions + +// OpenGL 4.2 deprecated functions + +// OpenGL 4.3 deprecated functions + +// OpenGL 4.4 deprecated functions + +// OpenGL 4.5 deprecated functions +inline void QOpenGLFunctions_4_5_Compatibility::glGetnMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values) +{ + d_4_5_Deprecated->f.GetnMinmax(target, reset, format, type, bufSize, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values) +{ + d_4_5_Deprecated->f.GetnHistogram(target, reset, format, type, bufSize, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnSeparableFilter(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span) +{ + d_4_5_Deprecated->f.GetnSeparableFilter(target, format, type, rowBufSize, row, columnBufSize, column, span); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnConvolutionFilter(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image) +{ + d_4_5_Deprecated->f.GetnConvolutionFilter(target, format, type, bufSize, image); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnColorTable(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table) +{ + d_4_5_Deprecated->f.GetnColorTable(target, format, type, bufSize, table); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnPolygonStipple(GLsizei bufSize, GLubyte *pattern) +{ + d_4_5_Deprecated->f.GetnPolygonStipple(bufSize, pattern); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnPixelMapusv(GLenum map, GLsizei bufSize, GLushort *values) +{ + d_4_5_Deprecated->f.GetnPixelMapusv(map, bufSize, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnPixelMapuiv(GLenum map, GLsizei bufSize, GLuint *values) +{ + d_4_5_Deprecated->f.GetnPixelMapuiv(map, bufSize, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnPixelMapfv(GLenum map, GLsizei bufSize, GLfloat *values) +{ + d_4_5_Deprecated->f.GetnPixelMapfv(map, bufSize, values); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnMapiv(GLenum target, GLenum query, GLsizei bufSize, GLint *v) +{ + d_4_5_Deprecated->f.GetnMapiv(target, query, bufSize, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnMapfv(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v) +{ + d_4_5_Deprecated->f.GetnMapfv(target, query, bufSize, v); +} + +inline void QOpenGLFunctions_4_5_Compatibility::glGetnMapdv(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v) +{ + d_4_5_Deprecated->f.GetnMapdv(target, query, bufSize, v); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_5_core.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_5_core.h new file mode 100644 index 000000000..0940d8cf6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_4_5_core.h @@ -0,0 +1,4061 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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_5_CORE_H +#define QOPENGLVERSIONFUNCTIONS_4_5_CORE_H + +#include <QtGui/qtguiglobal.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_5_Core : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_5_Core(); + ~QOpenGLFunctions_4_5_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, void *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *data); + void glGetFloatv(GLenum pname, GLfloat *data); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *data); + void glGetBooleanv(GLenum pname, GLboolean *data); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); + void glReadBuffer(GLenum src); + 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 buf); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *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 + 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 void *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *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 glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glBlendEquation(GLenum mode); + 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 void *pixels); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, void *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *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 void *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, void * *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + void * glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); + void glBufferData(GLenum target, GLsizeiptr size, const void *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 void *pointer); + 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); + 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, void * *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 *shaders); + 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); + void * 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 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); + 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 void *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 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 glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint maskNumber, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + 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); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *data); + 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 void *const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); + + // 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 glVertexAttribDivisor(GLuint index, GLuint divisor); + 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); + + // 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 void *indirect); + void glDrawArraysIndirect(GLenum mode, const void *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 void *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 void *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *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 void *binary, GLsizei length); + void glReleaseShaderCompiler(); + + // OpenGL 4.2 core functions + void glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + 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 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 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); + 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 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 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 4.4 core functions + void glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); + void glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures); + void glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers); + void glBindTextures(GLuint first, GLsizei count, const GLuint *textures); + void glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); + void glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers); + void glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); + void glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data); + void glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); + + // OpenGL 4.5 core functions + void glTextureBarrier(); + void glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); + void glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params); + void glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params); + void glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); + void glGetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); + void glGetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); + void glGetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void *pixels); + GLenum glGetGraphicsResetStatus(); + void glGetCompressedTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); + void glGetTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); + void glMemoryBarrierByRegion(GLbitfield barriers); + void glCreateQueries(GLenum target, GLsizei n, GLuint *ids); + void glCreateProgramPipelines(GLsizei n, GLuint *pipelines); + void glCreateSamplers(GLsizei n, GLuint *samplers); + void glGetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); + void glGetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint *param); + void glGetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param); + void glVertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor); + void glVertexArrayAttribLFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexArrayAttribIFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexArrayAttribFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void glVertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + void glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); + void glVertexArrayVertexBuffer(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + void glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer); + void glEnableVertexArrayAttrib(GLuint vaobj, GLuint index); + void glDisableVertexArrayAttrib(GLuint vaobj, GLuint index); + void glCreateVertexArrays(GLsizei n, GLuint *arrays); + void glGetTextureParameteriv(GLuint texture, GLenum pname, GLint *params); + void glGetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint *params); + void glGetTextureParameterIiv(GLuint texture, GLenum pname, GLint *params); + void glGetTextureParameterfv(GLuint texture, GLenum pname, GLfloat *params); + void glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint *params); + void glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat *params); + void glGetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, void *pixels); + void glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); + void glBindTextureUnit(GLuint unit, GLuint texture); + void glGenerateTextureMipmap(GLuint texture); + void glTextureParameteriv(GLuint texture, GLenum pname, const GLint *param); + void glTextureParameterIuiv(GLuint texture, GLenum pname, const GLuint *params); + void glTextureParameterIiv(GLuint texture, GLenum pname, const GLint *params); + void glTextureParameteri(GLuint texture, GLenum pname, GLint param); + void glTextureParameterfv(GLuint texture, GLenum pname, const GLfloat *param); + void glTextureParameterf(GLuint texture, GLenum pname, GLfloat param); + void glCopyTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); + void glCompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); + void glTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); + void glTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); + void glTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); + void glTextureStorage3DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTextureStorage2DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glTextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void glTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); + void glTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizei size); + void glTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer); + void glCreateTextures(GLenum target, GLsizei n, GLuint *textures); + void glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint *params); + void glNamedRenderbufferStorageMultisample(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glNamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); + void glCreateRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); + void glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param); + GLenum glCheckNamedFramebufferStatus(GLuint framebuffer, GLenum target); + void glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLfloat depth, GLint stencil); + void glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); + void glInvalidateNamedFramebufferSubData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); + void glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); + void glNamedFramebufferReadBuffer(GLuint framebuffer, GLenum src); + void glNamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum *bufs); + void glNamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf); + void glNamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glNamedFramebufferTexture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); + void glNamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param); + void glNamedFramebufferRenderbuffer(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glCreateFramebuffers(GLsizei n, GLuint *framebuffers); + void glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, void *data); + void glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void * *params); + void glGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64 *params); + void glGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params); + void glFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length); + GLboolean glUnmapNamedBuffer(GLuint buffer); + void * glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length, GLbitfield access); + void * glMapNamedBuffer(GLuint buffer, GLenum access); + void glClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizei size, GLenum format, GLenum type, const void *data); + void glClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); + void glCopyNamedBufferSubData(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizei size); + void glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, const void *data); + void glNamedBufferData(GLuint buffer, GLsizei size, const void *data, GLenum usage); + void glNamedBufferStorage(GLuint buffer, GLsizei size, const void *data, GLbitfield flags); + void glCreateBuffers(GLsizei n, GLuint *buffers); + void glGetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, GLint64 *param); + void glGetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint *param); + void glGetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param); + void glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size); + void glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer); + void glCreateTransformFeedbacks(GLsizei n, GLuint *ids); + void glClipControl(GLenum origin, GLenum depth); + +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_4_4_CoreBackend* d_4_4_Core; + QOpenGLFunctions_4_5_CoreBackend* d_4_5_Core; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_5_Core::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->f.DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->f.IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->f.GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->f.GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels) +{ + d_1_0_Core->f.GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_5_Core::glGetString(GLenum name) +{ + return d_1_0_Core->f.GetString(name); +} + +inline void QOpenGLFunctions_4_5_Core::glGetIntegerv(GLenum pname, GLint *data) +{ + d_1_0_Core->f.GetIntegerv(pname, data); +} + +inline void QOpenGLFunctions_4_5_Core::glGetFloatv(GLenum pname, GLfloat *data) +{ + d_1_0_Core->f.GetFloatv(pname, data); +} + +inline GLenum QOpenGLFunctions_4_5_Core::glGetError() +{ + return d_1_0_Core->f.GetError(); +} + +inline void QOpenGLFunctions_4_5_Core::glGetDoublev(GLenum pname, GLdouble *data) +{ + d_1_0_Core->f.GetDoublev(pname, data); +} + +inline void QOpenGLFunctions_4_5_Core::glGetBooleanv(GLenum pname, GLboolean *data) +{ + d_1_0_Core->f.GetBooleanv(pname, data); +} + +inline void QOpenGLFunctions_4_5_Core::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) +{ + d_1_0_Core->f.ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glReadBuffer(GLenum src) +{ + d_1_0_Core->f.ReadBuffer(src); +} + +inline void QOpenGLFunctions_4_5_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->f.PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->f.PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->f.DepthFunc(func); +} + +inline void QOpenGLFunctions_4_5_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->f.StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_5_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->f.StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_5_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->f.LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_5_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->f.BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_5_Core::glFlush() +{ + d_1_0_Core->f.Flush(); +} + +inline void QOpenGLFunctions_4_5_Core::glFinish() +{ + d_1_0_Core->f.Finish(); +} + +inline void QOpenGLFunctions_4_5_Core::glEnable(GLenum cap) +{ + d_1_0_Core->f.Enable(cap); +} + +inline void QOpenGLFunctions_4_5_Core::glDisable(GLenum cap) +{ + d_1_0_Core->f.Disable(cap); +} + +inline void QOpenGLFunctions_4_5_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->f.DepthMask(flag); +} + +inline void QOpenGLFunctions_4_5_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->f.ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->f.StencilMask(mask); +} + +inline void QOpenGLFunctions_4_5_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->f.ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_5_Core::glClearStencil(GLint s) +{ + d_1_0_Core->f.ClearStencil(s); +} + +inline void QOpenGLFunctions_4_5_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->f.ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->f.Clear(mask); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawBuffer(GLenum buf) +{ + d_1_0_Core->f.DrawBuffer(buf); +} + +inline void QOpenGLFunctions_4_5_Core::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_0_Core->f.TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_0_Core->f.TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->f.TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->f.TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->f.TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->f.TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->f.Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->f.PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_5_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->f.PointSize(size); +} + +inline void QOpenGLFunctions_4_5_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->f.LineWidth(width); +} + +inline void QOpenGLFunctions_4_5_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->f.Hint(target, mode); +} + +inline void QOpenGLFunctions_4_5_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->f.FrontFace(mode); +} + +inline void QOpenGLFunctions_4_5_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->f.CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline GLboolean QOpenGLFunctions_4_5_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->f.IsTexture(texture); +} + +inline void QOpenGLFunctions_4_5_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->f.GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->f.DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_5_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->f.BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_5_Core::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) +{ + d_1_1_Core->f.TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) +{ + d_1_1_Core->f.TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->f.CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->f.CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_5_Core::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->f.CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_5_Core::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->f.CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_5_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->f.PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices) +{ + d_1_1_Core->f.DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->f.DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_5_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->f.BlendColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_5_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->f.BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_5_Core::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->f.CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) +{ + d_1_2_Core->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) +{ + d_1_2_Core->f.TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices) +{ + d_1_2_Core->f.DrawRangeElements(mode, start, end, count, type, indices); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_5_Core::glGetCompressedTexImage(GLenum target, GLint level, void *img) +{ + d_1_3_Core->f.GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_5_Core::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Core::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Core::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Core::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Core::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Core::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data) +{ + d_1_3_Core->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Core::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->f.SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_5_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->f.ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_5_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->f.PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->f.PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->f.PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->f.PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount) +{ + d_1_4_Core->f.MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_5_Core::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->f.MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_5_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->f.BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_5_Core::glGetBufferPointerv(GLenum target, GLenum pname, void * *params) +{ + d_1_5_Core->f.GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->f.UnmapBuffer(target); +} + +inline void * QOpenGLFunctions_4_5_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->f.MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_5_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data) +{ + d_1_5_Core->f.GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_5_Core::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data) +{ + d_1_5_Core->f.BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_5_Core::glBufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage) +{ + d_1_5_Core->f.BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->f.IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_5_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->f.GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->f.DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_5_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->f.BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_5_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->f.GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->f.GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->f.EndQuery(target); +} + +inline void QOpenGLFunctions_4_5_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->f.BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->f.IsQuery(id); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->f.DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_5_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->f.GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_5_Core::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer) +{ + d_2_0_Core->f.VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Core->f.VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Core->f.VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Core->f.VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Core->f.VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Core->f.VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Core->f.VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Core->f.VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Core->f.VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Core->f.VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Core->f.VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Core->f.VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Core->f.VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Core->f.VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Core->f.VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Core->f.VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Core->f.VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Core->f.VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Core->f.VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Core->f.VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Core->f.VertexAttrib1d(index, x); +} + +inline void QOpenGLFunctions_4_5_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->f.ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->f.UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->f.Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->f.Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->f.Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->f.Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->f.Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->f.Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->f.Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->f.Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->f.Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->f.Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_5_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->f.UseProgram(program); +} + +inline void QOpenGLFunctions_4_5_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length) +{ + d_2_0_Core->f.ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_5_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->f.LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->f.IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->f.IsProgram(program); +} + +inline void QOpenGLFunctions_4_5_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, void * *pointer) +{ + d_2_0_Core->f.GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_5_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->f.GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->f.GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->f.GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->f.GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_5_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_5_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->f.GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_5_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_5_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->f.GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_5_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->f.GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_5_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->f.GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_5_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders) +{ + d_2_0_Core->f.GetAttachedShaders(program, maxCount, count, shaders); +} + +inline void QOpenGLFunctions_4_5_Core::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->f.GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_5_Core::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->f.GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_5_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_5_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->f.DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_5_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->f.DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->f.DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_5_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->f.CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_5_Core::glCreateProgram() +{ + return d_2_0_Core->f.CreateProgram(); +} + +inline void QOpenGLFunctions_4_5_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->f.CompileShader(shader); +} + +inline void QOpenGLFunctions_4_5_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->f.BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_5_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->f.AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_5_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->f.StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_5_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->f.StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_5_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->f.StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->f.DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_5_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->f.BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->f.UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_5_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->f.IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_5_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->f.GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->f.DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_5_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->f.BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_5_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->f.FlushMappedBufferRange(target, offset, length); +} + +inline void * QOpenGLFunctions_4_5_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->f.MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_5_Core::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->f.FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_5_Core::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_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->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_5_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->f.GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_5_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->f.FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_5_Core::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->f.FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_5_Core::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->f.FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_5_Core::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->f.FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_5_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->f.CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_5_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->f.GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->f.DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_5_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->f.BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->f.IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_5_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->f.RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->f.GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->f.DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_5_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->f.BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->f.IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_5_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->f.GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_5_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->f.ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_5_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->f.ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->f.ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->f.ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->f.TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->f.TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->f.Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->f.Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->f.Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->f.Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->f.Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_5_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->f.GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_5_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->f.BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_5_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->f.GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Core->f.VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Core->f.VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Core->f.VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Core->f.VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Core->f.VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Core->f.VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Core->f.VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Core->f.VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Core->f.VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Core->f.VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Core->f.VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Core->f.VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Core->f.VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Core->f.VertexAttribI1i(index, x); +} + +inline void QOpenGLFunctions_4_5_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->f.GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->f.GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_3_0_Core->f.VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Core::glEndConditionalRender() +{ + d_3_0_Core->f.EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_5_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->f.BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_5_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->f.ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->f.GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_5_Core::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode) +{ + d_3_0_Core->f.TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_5_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->f.BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_5_Core::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->f.BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_5_Core::glEndTransformFeedback() +{ + d_3_0_Core->f.EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_5_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->f.BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->f.IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_5_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Disablei(target, index); +} + +inline void QOpenGLFunctions_4_5_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->f.Enablei(target, index); +} + +inline void QOpenGLFunctions_4_5_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->f.GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_5_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->f.GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_5_Core::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->f.ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_5_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->f.UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_5_Core::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->f.GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_5_Core::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_5_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->f.GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_5_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->f.GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_5_Core::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->f.GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_5_Core::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_5_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->f.PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_5_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->f.TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount) +{ + d_3_1_Core->f.DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->f.DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_5_Core::glSampleMaski(GLuint maskNumber, GLbitfield mask) +{ + d_3_2_Core->f.SampleMaski(maskNumber, mask); +} + +inline void QOpenGLFunctions_4_5_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->f.GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_5_Core::glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->f.TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Core::glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->f.TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Core::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->f.FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_5_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->f.GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->f.GetInteger64i_v(target, index, data); +} + +inline void QOpenGLFunctions_4_5_Core::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->f.GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_5_Core::glGetInteger64v(GLenum pname, GLint64 *data) +{ + d_3_2_Core->f.GetInteger64v(pname, data); +} + +inline void QOpenGLFunctions_4_5_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->f.WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_5_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->f.ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->f.DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->f.IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_5_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->f.FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_5_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->f.ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_5_Core::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const void *const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->f.MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->f.DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex) +{ + d_3_2_Core->f.DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex) +{ + d_3_2_Core->f.DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_5_Core::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->f.VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->f.VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->f.VertexAttribDivisor(index, divisor); +} + +inline void QOpenGLFunctions_4_5_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->f.GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->f.GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->f.QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_5_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->f.GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->f.GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->f.GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->f.SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->f.SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->f.SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->f.SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->f.SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->f.BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->f.IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->f.DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_5_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->f.GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_5_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->f.GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_5_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->f.BindFragDataLocationIndexed(program, colorNumber, index, name); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_5_Core::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->f.GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->f.EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_5_Core::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->f.BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->f.DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->f.DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_5_Core::glResumeTransformFeedback() +{ + d_4_0_Core->f.ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_5_Core::glPauseTransformFeedback() +{ + d_4_0_Core->f.PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->f.IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_5_Core::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->f.GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->f.DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_5_Core::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->f.BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_5_Core::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->f.PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_5_Core::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->f.PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_5_Core::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_5_Core::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->f.GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->f.UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_5_Core::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->f.GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_5_Core::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->f.GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_5_Core::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->f.GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_5_Core::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_5_Core::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->f.GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_5_Core::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->f.GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->f.UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->f.Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->f.Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->f.Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->f.Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_5_Core::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->f.Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect) +{ + d_4_0_Core->f.DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawArraysIndirect(GLenum mode, const void *indirect) +{ + d_4_0_Core->f.DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_5_Core::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_5_Core::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->f.BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_5_Core::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_5_Core::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->f.BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_5_Core::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->f.MinSampleShading(value); +} + + +// OpenGL 4.1 core functions +inline void QOpenGLFunctions_4_5_Core::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + d_4_1_Core->f.GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_5_Core::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->f.GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_5_Core::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->f.DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_5_Core::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->f.DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_5_Core::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->f.ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->f.ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->f.ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_5_Core::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->f.ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->f.ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_5_Core::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->f.ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_5_Core::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->f.GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) +{ + d_4_1_Core->f.VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->f.VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->f.VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_1_Core->f.VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->f.VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->f.VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_5_Core::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_5_Core::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_4_1_Core->f.ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + d_4_1_Core->f.ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_4_1_Core->f.ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_4_1_Core->f.ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_4_1_Core->f.ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + d_4_1_Core->f.ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_4_1_Core->f.ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + d_4_1_Core->f.ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->f.ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->f.ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->f.ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->f.ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->f.ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->f.ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->f.ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->f.ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->f.ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->f.ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->f.ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->f.ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_5_Core::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->f.GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->f.IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_5_Core::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->f.GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_5_Core::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->f.DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_5_Core::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->f.BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_5_Core::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings) +{ + return d_4_1_Core->f.CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_5_Core::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->f.ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_5_Core::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->f.UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->f.ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_5_Core::glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length) +{ + d_4_1_Core->f.ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLFunctions_4_5_Core::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary) +{ + d_4_1_Core->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_5_Core::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->f.ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_5_Core::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->f.DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_5_Core::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->f.GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_4_5_Core::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length) +{ + d_4_1_Core->f.ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_5_Core::glReleaseShaderCompiler() +{ + d_4_1_Core->f.ReleaseShaderCompiler(); +} + + +// OpenGL 4.2 core functions +inline void QOpenGLFunctions_4_5_Core::glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) +{ + d_4_2_Core->f.DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->f.DrawTransformFeedbackInstanced(mode, id, instancecount); +} + +inline void QOpenGLFunctions_4_5_Core::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_2_Core->f.TexStorage3D(target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLFunctions_4_5_Core::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_2_Core->f.TexStorage2D(target, levels, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + d_4_2_Core->f.TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_5_Core::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->f.MemoryBarrier(barriers); +} + +inline void QOpenGLFunctions_4_5_Core::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) +{ + d_4_2_Core->f.BindImageTexture(unit, texture, level, layered, layer, access, format); +} + +inline void QOpenGLFunctions_4_5_Core::glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) +{ + d_4_2_Core->f.GetActiveAtomicCounterBufferiv(program, bufferIndex, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) +{ + d_4_2_Core->f.GetInternalformativ(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) +{ + d_4_2_Core->f.DrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->f.DrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); +} + +inline void QOpenGLFunctions_4_5_Core::glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->f.DrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); +} + + +// OpenGL 4.3 core functions +inline void QOpenGLFunctions_4_5_Core::glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + d_4_3_Core->f.GetObjectPtrLabel(ptr, bufSize, length, label); +} + +inline void QOpenGLFunctions_4_5_Core::glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label) +{ + d_4_3_Core->f.ObjectPtrLabel(ptr, length, label); +} + +inline void QOpenGLFunctions_4_5_Core::glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + d_4_3_Core->f.GetObjectLabel(identifier, name, bufSize, length, label); +} + +inline void QOpenGLFunctions_4_5_Core::glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label) +{ + d_4_3_Core->f.ObjectLabel(identifier, name, length, label); +} + +inline void QOpenGLFunctions_4_5_Core::glPopDebugGroup() +{ + d_4_3_Core->f.PopDebugGroup(); +} + +inline void QOpenGLFunctions_4_5_Core::glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message) +{ + d_4_3_Core->f.PushDebugGroup(source, id, length, message); +} + +inline GLuint QOpenGLFunctions_4_5_Core::glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog) +{ + return d_4_3_Core->f.GetDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog); +} + +inline void QOpenGLFunctions_4_5_Core::glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam) +{ + d_4_3_Core->f.DebugMessageCallback(callback, userParam); +} + +inline void QOpenGLFunctions_4_5_Core::glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf) +{ + d_4_3_Core->f.DebugMessageInsert(source, type, id, severity, length, buf); +} + +inline void QOpenGLFunctions_4_5_Core::glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled) +{ + d_4_3_Core->f.DebugMessageControl(source, type, severity, count, ids, enabled); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) +{ + d_4_3_Core->f.VertexBindingDivisor(bindingindex, divisor); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) +{ + d_4_3_Core->f.VertexAttribBinding(attribindex, bindingindex); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribLFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribIFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + d_4_3_Core->f.VertexAttribFormat(attribindex, size, type, normalized, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Core::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + d_4_3_Core->f.BindVertexBuffer(bindingindex, buffer, offset, stride); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) +{ + d_4_3_Core->f.TextureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); +} + +inline void QOpenGLFunctions_4_5_Core::glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_4_3_Core->f.TexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Core::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_4_3_Core->f.TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Core::glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_4_3_Core->f.TexBufferRange(target, internalformat, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_5_Core::glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) +{ + d_4_3_Core->f.ShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding); +} + +inline GLint QOpenGLFunctions_4_5_Core::glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceLocationIndex(program, programInterface, name); +} + +inline GLint QOpenGLFunctions_4_5_Core::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceLocation(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_5_Core::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params) +{ + d_4_3_Core->f.GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name) +{ + d_4_3_Core->f.GetProgramResourceName(program, programInterface, index, bufSize, length, name); +} + +inline GLuint QOpenGLFunctions_4_5_Core::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->f.GetProgramResourceIndex(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_5_Core::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) +{ + d_4_3_Core->f.GetProgramInterfaceiv(program, programInterface, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->f.MultiDrawElementsIndirect(mode, type, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_5_Core::glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->f.MultiDrawArraysIndirect(mode, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_5_Core::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_3_Core->f.InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments) +{ + d_4_3_Core->f.InvalidateFramebuffer(target, numAttachments, attachments); +} + +inline void QOpenGLFunctions_4_5_Core::glInvalidateBufferData(GLuint buffer) +{ + d_4_3_Core->f.InvalidateBufferData(buffer); +} + +inline void QOpenGLFunctions_4_5_Core::glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) +{ + d_4_3_Core->f.InvalidateBufferSubData(buffer, offset, length); +} + +inline void QOpenGLFunctions_4_5_Core::glInvalidateTexImage(GLuint texture, GLint level) +{ + d_4_3_Core->f.InvalidateTexImage(texture, level); +} + +inline void QOpenGLFunctions_4_5_Core::glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_3_Core->f.InvalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth); +} + +inline void QOpenGLFunctions_4_5_Core::glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params) +{ + d_4_3_Core->f.GetInternalformati64v(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_4_3_Core->f.GetFramebufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + d_4_3_Core->f.FramebufferParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_5_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->f.CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); +} + +inline void QOpenGLFunctions_4_5_Core::glDispatchComputeIndirect(GLintptr indirect) +{ + d_4_3_Core->f.DispatchComputeIndirect(indirect); +} + +inline void QOpenGLFunctions_4_5_Core::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) +{ + d_4_3_Core->f.DispatchCompute(num_groups_x, num_groups_y, num_groups_z); +} + +inline void QOpenGLFunctions_4_5_Core::glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->f.ClearBufferSubData(target, internalformat, offset, size, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Core::glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->f.ClearBufferData(target, internalformat, format, type, data); +} + + +// OpenGL 4.4 core functions +inline void QOpenGLFunctions_4_5_Core::glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides) +{ + d_4_4_Core->f.BindVertexBuffers(first, count, buffers, offsets, strides); +} + +inline void QOpenGLFunctions_4_5_Core::glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures) +{ + d_4_4_Core->f.BindImageTextures(first, count, textures); +} + +inline void QOpenGLFunctions_4_5_Core::glBindSamplers(GLuint first, GLsizei count, const GLuint *samplers) +{ + d_4_4_Core->f.BindSamplers(first, count, samplers); +} + +inline void QOpenGLFunctions_4_5_Core::glBindTextures(GLuint first, GLsizei count, const GLuint *textures) +{ + d_4_4_Core->f.BindTextures(first, count, textures); +} + +inline void QOpenGLFunctions_4_5_Core::glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes) +{ + d_4_4_Core->f.BindBuffersRange(target, first, count, buffers, offsets, sizes); +} + +inline void QOpenGLFunctions_4_5_Core::glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers) +{ + d_4_4_Core->f.BindBuffersBase(target, first, count, buffers); +} + +inline void QOpenGLFunctions_4_5_Core::glClearTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data) +{ + d_4_4_Core->f.ClearTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Core::glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data) +{ + d_4_4_Core->f.ClearTexImage(texture, level, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Core::glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags) +{ + d_4_4_Core->f.BufferStorage(target, size, data, flags); +} + + +// OpenGL 4.5 core functions +inline void QOpenGLFunctions_4_5_Core::glTextureBarrier() +{ + d_4_5_Core->f.TextureBarrier(); +} + +inline void QOpenGLFunctions_4_5_Core::glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) +{ + d_4_5_Core->f.ReadnPixels(x, y, width, height, format, type, bufSize, data); +} + +inline void QOpenGLFunctions_4_5_Core::glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params) +{ + d_4_5_Core->f.GetnUniformuiv(program, location, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params) +{ + d_4_5_Core->f.GetnUniformiv(program, location, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params) +{ + d_4_5_Core->f.GetnUniformfv(program, location, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble *params) +{ + d_4_5_Core->f.GetnUniformdv(program, location, bufSize, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetnTexImage(target, level, format, type, bufSize, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glGetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetnCompressedTexImage(target, lod, bufSize, pixels); +} + +inline GLenum QOpenGLFunctions_4_5_Core::glGetGraphicsResetStatus() +{ + return d_4_5_Core->f.GetGraphicsResetStatus(); +} + +inline void QOpenGLFunctions_4_5_Core::glGetCompressedTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetCompressedTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTextureSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glMemoryBarrierByRegion(GLbitfield barriers) +{ + d_4_5_Core->f.MemoryBarrierByRegion(barriers); +} + +inline void QOpenGLFunctions_4_5_Core::glCreateQueries(GLenum target, GLsizei n, GLuint *ids) +{ + d_4_5_Core->f.CreateQueries(target, n, ids); +} + +inline void QOpenGLFunctions_4_5_Core::glCreateProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_5_Core->f.CreateProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_5_Core::glCreateSamplers(GLsizei n, GLuint *samplers) +{ + d_4_5_Core->f.CreateSamplers(n, samplers); +} + +inline void QOpenGLFunctions_4_5_Core::glGetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param) +{ + d_4_5_Core->f.GetVertexArrayIndexed64iv(vaobj, index, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glGetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint *param) +{ + d_4_5_Core->f.GetVertexArrayIndexediv(vaobj, index, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glGetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param) +{ + d_4_5_Core->f.GetVertexArrayiv(vaobj, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor) +{ + d_4_5_Core->f.VertexArrayBindingDivisor(vaobj, bindingindex, divisor); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexArrayAttribLFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_5_Core->f.VertexArrayAttribLFormat(vaobj, attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexArrayAttribIFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_5_Core->f.VertexArrayAttribIFormat(vaobj, attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexArrayAttribFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + d_4_5_Core->f.VertexArrayAttribFormat(vaobj, attribindex, size, type, normalized, relativeoffset); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex) +{ + d_4_5_Core->f.VertexArrayAttribBinding(vaobj, attribindex, bindingindex); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides) +{ + d_4_5_Core->f.VertexArrayVertexBuffers(vaobj, first, count, buffers, offsets, strides); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexArrayVertexBuffer(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + d_4_5_Core->f.VertexArrayVertexBuffer(vaobj, bindingindex, buffer, offset, stride); +} + +inline void QOpenGLFunctions_4_5_Core::glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer) +{ + d_4_5_Core->f.VertexArrayElementBuffer(vaobj, buffer); +} + +inline void QOpenGLFunctions_4_5_Core::glEnableVertexArrayAttrib(GLuint vaobj, GLuint index) +{ + d_4_5_Core->f.EnableVertexArrayAttrib(vaobj, index); +} + +inline void QOpenGLFunctions_4_5_Core::glDisableVertexArrayAttrib(GLuint vaobj, GLuint index) +{ + d_4_5_Core->f.DisableVertexArrayAttrib(vaobj, index); +} + +inline void QOpenGLFunctions_4_5_Core::glCreateVertexArrays(GLsizei n, GLuint *arrays) +{ + d_4_5_Core->f.CreateVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTextureParameteriv(GLuint texture, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetTextureParameteriv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint *params) +{ + d_4_5_Core->f.GetTextureParameterIuiv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTextureParameterIiv(GLuint texture, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetTextureParameterIiv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTextureParameterfv(GLuint texture, GLenum pname, GLfloat *params) +{ + d_4_5_Core->f.GetTextureParameterfv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetTextureLevelParameteriv(texture, level, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat *params) +{ + d_4_5_Core->f.GetTextureLevelParameterfv(texture, level, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetCompressedTextureImage(texture, level, bufSize, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels) +{ + d_4_5_Core->f.GetTextureImage(texture, level, format, type, bufSize, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glBindTextureUnit(GLuint unit, GLuint texture) +{ + d_4_5_Core->f.BindTextureUnit(unit, texture); +} + +inline void QOpenGLFunctions_4_5_Core::glGenerateTextureMipmap(GLuint texture) +{ + d_4_5_Core->f.GenerateTextureMipmap(texture); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureParameteriv(GLuint texture, GLenum pname, const GLint *param) +{ + d_4_5_Core->f.TextureParameteriv(texture, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureParameterIuiv(GLuint texture, GLenum pname, const GLuint *params) +{ + d_4_5_Core->f.TextureParameterIuiv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureParameterIiv(GLuint texture, GLenum pname, const GLint *params) +{ + d_4_5_Core->f.TextureParameterIiv(texture, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureParameteri(GLuint texture, GLenum pname, GLint param) +{ + d_4_5_Core->f.TextureParameteri(texture, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureParameterfv(GLuint texture, GLenum pname, const GLfloat *param) +{ + d_4_5_Core->f.TextureParameterfv(texture, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureParameterf(GLuint texture, GLenum pname, GLfloat param) +{ + d_4_5_Core->f.TextureParameterf(texture, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glCopyTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.CopyTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glCopyTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.CopyTextureSubImage2D(texture, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_4_5_Core->f.CopyTextureSubImage1D(texture, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_5_Core::glCompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) +{ + d_4_5_Core->f.CompressedTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Core::glCompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) +{ + d_4_5_Core->f.CompressedTextureSubImage2D(texture, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Core::glCompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) +{ + d_4_5_Core->f.CompressedTextureSubImage1D(texture, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) +{ + d_4_5_Core->f.TextureSubImage3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) +{ + d_4_5_Core->f.TextureSubImage2D(texture, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) +{ + d_4_5_Core->f.TextureSubImage1D(texture, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureStorage3DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_4_5_Core->f.TextureStorage3DMultisample(texture, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureStorage2DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_4_5_Core->f.TextureStorage2DMultisample(texture, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_5_Core->f.TextureStorage3D(texture, levels, internalformat, width, height, depth); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.TextureStorage2D(texture, levels, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width) +{ + d_4_5_Core->f.TextureStorage1D(texture, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizei size) +{ + d_4_5_Core->f.TextureBufferRange(texture, internalformat, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_5_Core::glTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer) +{ + d_4_5_Core->f.TextureBuffer(texture, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_5_Core::glCreateTextures(GLenum target, GLsizei n, GLuint *textures) +{ + d_4_5_Core->f.CreateTextures(target, n, textures); +} + +inline void QOpenGLFunctions_4_5_Core::glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetNamedRenderbufferParameteriv(renderbuffer, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedRenderbufferStorageMultisample(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.NamedRenderbufferStorageMultisample(renderbuffer, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.NamedRenderbufferStorage(renderbuffer, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glCreateRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_4_5_Core->f.CreateRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_5_Core::glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetNamedFramebufferAttachmentParameteriv(framebuffer, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param) +{ + d_4_5_Core->f.GetNamedFramebufferParameteriv(framebuffer, pname, param); +} + +inline GLenum QOpenGLFunctions_4_5_Core::glCheckNamedFramebufferStatus(GLuint framebuffer, GLenum target) +{ + return d_4_5_Core->f.CheckNamedFramebufferStatus(framebuffer, target); +} + +inline void QOpenGLFunctions_4_5_Core::glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_4_5_Core->f.BlitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_5_Core::glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLfloat depth, GLint stencil) +{ + d_4_5_Core->f.ClearNamedFramebufferfi(framebuffer, buffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_5_Core::glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_4_5_Core->f.ClearNamedFramebufferfv(framebuffer, buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Core::glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_4_5_Core->f.ClearNamedFramebufferuiv(framebuffer, buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Core::glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_4_5_Core->f.ClearNamedFramebufferiv(framebuffer, buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_5_Core::glInvalidateNamedFramebufferSubData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_5_Core->f.InvalidateNamedFramebufferSubData(framebuffer, numAttachments, attachments, x, y, width, height); +} + +inline void QOpenGLFunctions_4_5_Core::glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments) +{ + d_4_5_Core->f.InvalidateNamedFramebufferData(framebuffer, numAttachments, attachments); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedFramebufferReadBuffer(GLuint framebuffer, GLenum src) +{ + d_4_5_Core->f.NamedFramebufferReadBuffer(framebuffer, src); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum *bufs) +{ + d_4_5_Core->f.NamedFramebufferDrawBuffers(framebuffer, n, bufs); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf) +{ + d_4_5_Core->f.NamedFramebufferDrawBuffer(framebuffer, buf); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_4_5_Core->f.NamedFramebufferTextureLayer(framebuffer, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedFramebufferTexture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) +{ + d_4_5_Core->f.NamedFramebufferTexture(framebuffer, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param) +{ + d_4_5_Core->f.NamedFramebufferParameteri(framebuffer, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedFramebufferRenderbuffer(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_4_5_Core->f.NamedFramebufferRenderbuffer(framebuffer, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_5_Core::glCreateFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_4_5_Core->f.CreateFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_5_Core::glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, void *data) +{ + d_4_5_Core->f.GetNamedBufferSubData(buffer, offset, size, data); +} + +inline void QOpenGLFunctions_4_5_Core::glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void * *params) +{ + d_4_5_Core->f.GetNamedBufferPointerv(buffer, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64 *params) +{ + d_4_5_Core->f.GetNamedBufferParameteri64v(buffer, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params) +{ + d_4_5_Core->f.GetNamedBufferParameteriv(buffer, pname, params); +} + +inline void QOpenGLFunctions_4_5_Core::glFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length) +{ + d_4_5_Core->f.FlushMappedNamedBufferRange(buffer, offset, length); +} + +inline GLboolean QOpenGLFunctions_4_5_Core::glUnmapNamedBuffer(GLuint buffer) +{ + return d_4_5_Core->f.UnmapNamedBuffer(buffer); +} + +inline void * QOpenGLFunctions_4_5_Core::glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length, GLbitfield access) +{ + return d_4_5_Core->f.MapNamedBufferRange(buffer, offset, length, access); +} + +inline void * QOpenGLFunctions_4_5_Core::glMapNamedBuffer(GLuint buffer, GLenum access) +{ + return d_4_5_Core->f.MapNamedBuffer(buffer, access); +} + +inline void QOpenGLFunctions_4_5_Core::glClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizei size, GLenum format, GLenum type, const void *data) +{ + d_4_5_Core->f.ClearNamedBufferSubData(buffer, internalformat, offset, size, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Core::glClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data) +{ + d_4_5_Core->f.ClearNamedBufferData(buffer, internalformat, format, type, data); +} + +inline void QOpenGLFunctions_4_5_Core::glCopyNamedBufferSubData(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizei size) +{ + d_4_5_Core->f.CopyNamedBufferSubData(readBuffer, writeBuffer, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, const void *data) +{ + d_4_5_Core->f.NamedBufferSubData(buffer, offset, size, data); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedBufferData(GLuint buffer, GLsizei size, const void *data, GLenum usage) +{ + d_4_5_Core->f.NamedBufferData(buffer, size, data, usage); +} + +inline void QOpenGLFunctions_4_5_Core::glNamedBufferStorage(GLuint buffer, GLsizei size, const void *data, GLbitfield flags) +{ + d_4_5_Core->f.NamedBufferStorage(buffer, size, data, flags); +} + +inline void QOpenGLFunctions_4_5_Core::glCreateBuffers(GLsizei n, GLuint *buffers) +{ + d_4_5_Core->f.CreateBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, GLint64 *param) +{ + d_4_5_Core->f.GetTransformFeedbacki64_v(xfb, pname, index, param); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint *param) +{ + d_4_5_Core->f.GetTransformFeedbacki_v(xfb, pname, index, param); +} + +inline void QOpenGLFunctions_4_5_Core::glGetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param) +{ + d_4_5_Core->f.GetTransformFeedbackiv(xfb, pname, param); +} + +inline void QOpenGLFunctions_4_5_Core::glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size) +{ + d_4_5_Core->f.TransformFeedbackBufferRange(xfb, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_5_Core::glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer) +{ + d_4_5_Core->f.TransformFeedbackBufferBase(xfb, index, buffer); +} + +inline void QOpenGLFunctions_4_5_Core::glCreateTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_5_Core->f.CreateTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_5_Core::glClipControl(GLenum origin, GLenum depth) +{ + d_4_5_Core->f.ClipControl(origin, depth); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_es2.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_es2.h new file mode 100644 index 000000000..3b7d2806e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglfunctions_es2.h @@ -0,0 +1,931 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_ES2_H +#define QOPENGLVERSIONFUNCTIONS_ES2_H + +#include <QtGui/qtguiglobal.h> + +#if defined(QT_OPENGL_ES_2) || defined(Q_QDOC) + +#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/qrenderdoc/3rdparty/qt/include/QtGui/qopenglpaintdevice.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglpaintdevice.h new file mode 100644 index 000000000..300002a9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglpaintdevice.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLPAINTDEVICE_H +#define QOPENGLPAINTDEVICE_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#include <QtGui/qpaintdevice.h> +#include <QtGui/qopengl.h> +#include <QtGui/qopenglcontext.h> + +QT_BEGIN_NAMESPACE + +class QOpenGLPaintDevicePrivate; + +class Q_GUI_EXPORT QOpenGLPaintDevice : public QPaintDevice +{ + Q_DECLARE_PRIVATE(QOpenGLPaintDevice) +public: + QOpenGLPaintDevice(); + explicit QOpenGLPaintDevice(const QSize &size); + QOpenGLPaintDevice(int width, int height); + virtual ~QOpenGLPaintDevice(); + + int devType() const override { return QInternal::OpenGL; } + QPaintEngine *paintEngine() const override; + + QOpenGLContext *context() const; + QSize size() const; + void setSize(const QSize &size); + void setDevicePixelRatio(qreal devicePixelRatio); + + qreal dotsPerMeterX() const; + qreal dotsPerMeterY() const; + + void setDotsPerMeterX(qreal); + void setDotsPerMeterY(qreal); + + void setPaintFlipped(bool flipped); + bool paintFlipped() const; + + virtual void ensureActiveTarget(); + +protected: + QOpenGLPaintDevice(QOpenGLPaintDevicePrivate &dd); + int metric(QPaintDevice::PaintDeviceMetric metric) const override; + + Q_DISABLE_COPY(QOpenGLPaintDevice) + QScopedPointer<QOpenGLPaintDevicePrivate> d_ptr; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif // QOPENGLPAINTDEVICE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglpixeltransferoptions.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglpixeltransferoptions.h new file mode 100644 index 000000000..2fc52b82d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglpixeltransferoptions.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLPIXELUPLOADOPTIONS_H +#define QOPENGLPIXELUPLOADOPTIONS_H + +#include <QtGui/qtguiglobal.h> + +#if !defined(QT_NO_OPENGL) + +#include <QtCore/QSharedDataPointer> + +QT_BEGIN_NAMESPACE + +class QOpenGLPixelTransferOptionsData; + +class Q_GUI_EXPORT QOpenGLPixelTransferOptions +{ +public: + QOpenGLPixelTransferOptions(); + QOpenGLPixelTransferOptions(const QOpenGLPixelTransferOptions &); +#ifdef Q_COMPILER_RVALUE_REFS + QOpenGLPixelTransferOptions &operator=(QOpenGLPixelTransferOptions &&other) Q_DECL_NOTHROW + { swap(other); return *this; } +#endif + QOpenGLPixelTransferOptions &operator=(const QOpenGLPixelTransferOptions &); + ~QOpenGLPixelTransferOptions(); + + void swap(QOpenGLPixelTransferOptions &other) Q_DECL_NOTHROW + { data.swap(other.data); } + + void setAlignment(int alignment); + int alignment() const; + + void setSkipImages(int skipImages); + int skipImages() const; + + void setSkipRows(int skipRows); + int skipRows() const; + + void setSkipPixels(int skipPixels); + int skipPixels() const; + + void setImageHeight(int imageHeight); + int imageHeight() const; + + void setRowLength(int rowLength); + int rowLength() const; + + void setLeastSignificantByteFirst(bool lsbFirst); + bool isLeastSignificantBitFirst() const; + + void setSwapBytesEnabled(bool swapBytes); + bool isSwapBytesEnabled() const; + +private: + QSharedDataPointer<QOpenGLPixelTransferOptionsData> data; +}; + +Q_DECLARE_SHARED(QOpenGLPixelTransferOptions) + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif // QOPENGLPIXELUPLOADOPTIONS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglshaderprogram.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglshaderprogram.h new file mode 100644 index 000000000..fd4d82ecf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglshaderprogram.h @@ -0,0 +1,325 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLSHADERPROGRAM_H +#define QOPENGLSHADERPROGRAM_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#include <QtGui/qopengl.h> +#include <QtGui/qvector2d.h> +#include <QtGui/qvector3d.h> +#include <QtGui/qvector4d.h> +#include <QtGui/qmatrix4x4.h> + +#if defined(Q_CLANG_QDOC) +#undef GLint +typedef int GLint; +#undef GLfloat +typedef double GLfloat; +#endif + +QT_BEGIN_NAMESPACE + + +class QOpenGLContext; +class QOpenGLShaderProgram; +class QOpenGLShaderPrivate; + +class Q_GUI_EXPORT QOpenGLShader : public QObject +{ + Q_OBJECT +public: + enum ShaderTypeBit + { + Vertex = 0x0001, + Fragment = 0x0002, + Geometry = 0x0004, + TessellationControl = 0x0008, + TessellationEvaluation = 0x0010, + Compute = 0x0020 + }; + Q_DECLARE_FLAGS(ShaderType, ShaderTypeBit) + + explicit QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent = Q_NULLPTR); + virtual ~QOpenGLShader(); + + QOpenGLShader::ShaderType shaderType() const; + + bool compileSourceCode(const char *source); + bool compileSourceCode(const QByteArray& source); + bool compileSourceCode(const QString& source); + bool compileSourceFile(const QString& fileName); + + QByteArray sourceCode() const; + + bool isCompiled() const; + QString log() const; + + GLuint shaderId() const; + + static bool hasOpenGLShaders(ShaderType type, QOpenGLContext *context = Q_NULLPTR); + +private: + friend class QOpenGLShaderProgram; + + Q_DISABLE_COPY(QOpenGLShader) + Q_DECLARE_PRIVATE(QOpenGLShader) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLShader::ShaderType) + + +class QOpenGLShaderProgramPrivate; + +class Q_GUI_EXPORT QOpenGLShaderProgram : public QObject +{ + Q_OBJECT +public: + explicit QOpenGLShaderProgram(QObject *parent = Q_NULLPTR); + virtual ~QOpenGLShaderProgram(); + + bool addShader(QOpenGLShader *shader); + void removeShader(QOpenGLShader *shader); + QList<QOpenGLShader *> shaders() const; + + bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source); + bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray& source); + bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString& source); + bool addShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString& fileName); + + bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source); + bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source); + bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source); + bool addCacheableShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName); + + void removeAllShaders(); + + virtual bool link(); + bool isLinked() const; + QString log() const; + + bool bind(); + void release(); + + bool create(); + + 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); + + int attributeLocation(const char *name) const; + int attributeLocation(const QByteArray& name) const; + int attributeLocation(const QString& name) const; + + void setAttributeValue(int location, GLfloat value); + void setAttributeValue(int location, GLfloat x, GLfloat y); + void setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z); + void setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void setAttributeValue(int location, const QVector2D& value); + void setAttributeValue(int location, const QVector3D& value); + void setAttributeValue(int location, const QVector4D& value); + void setAttributeValue(int location, const QColor& value); + void setAttributeValue(int location, const GLfloat *values, int columns, int rows); + + void setAttributeValue(const char *name, GLfloat value); + void setAttributeValue(const char *name, GLfloat x, GLfloat y); + void setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z); + void setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void setAttributeValue(const char *name, const QVector2D& value); + void setAttributeValue(const char *name, const QVector3D& value); + void setAttributeValue(const char *name, const QVector4D& value); + void setAttributeValue(const char *name, const QColor& value); + void setAttributeValue(const char *name, const GLfloat *values, int columns, int rows); + + void setAttributeArray + (int location, const GLfloat *values, int tupleSize, int stride = 0); + void setAttributeArray + (int location, const QVector2D *values, int stride = 0); + void setAttributeArray + (int location, const QVector3D *values, int stride = 0); + void setAttributeArray + (int location, const QVector4D *values, int stride = 0); + void setAttributeArray + (int location, GLenum type, const void *values, int tupleSize, int stride = 0); + void setAttributeArray + (const char *name, const GLfloat *values, int tupleSize, int stride = 0); + void setAttributeArray + (const char *name, const QVector2D *values, int stride = 0); + void setAttributeArray + (const char *name, const QVector3D *values, int stride = 0); + void setAttributeArray + (const char *name, const QVector4D *values, int stride = 0); + void setAttributeArray + (const char *name, GLenum type, const void *values, int tupleSize, int stride = 0); + + void setAttributeBuffer + (int location, GLenum type, int offset, int tupleSize, int stride = 0); + void setAttributeBuffer + (const char *name, GLenum type, int offset, int tupleSize, int stride = 0); + + void enableAttributeArray(int location); + void enableAttributeArray(const char *name); + void disableAttributeArray(int location); + void disableAttributeArray(const char *name); + + int uniformLocation(const char *name) const; + int uniformLocation(const QByteArray& name) const; + int uniformLocation(const QString& name) const; + + void setUniformValue(int location, GLfloat value); + void setUniformValue(int location, GLint value); + void setUniformValue(int location, GLuint value); + void setUniformValue(int location, GLfloat x, GLfloat y); + void setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z); + void setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void setUniformValue(int location, const QVector2D& value); + void setUniformValue(int location, const QVector3D& value); + void setUniformValue(int location, const QVector4D& value); + void setUniformValue(int location, const QColor& color); + void setUniformValue(int location, const QPoint& point); + void setUniformValue(int location, const QPointF& point); + void setUniformValue(int location, const QSize& size); + void setUniformValue(int location, const QSizeF& size); + void setUniformValue(int location, const QMatrix2x2& value); + void setUniformValue(int location, const QMatrix2x3& value); + void setUniformValue(int location, const QMatrix2x4& value); + void setUniformValue(int location, const QMatrix3x2& value); + void setUniformValue(int location, const QMatrix3x3& value); + void setUniformValue(int location, const QMatrix3x4& value); + void setUniformValue(int location, const QMatrix4x2& value); + void setUniformValue(int location, const QMatrix4x3& value); + void setUniformValue(int location, const QMatrix4x4& value); + void setUniformValue(int location, const GLfloat value[2][2]); + void setUniformValue(int location, const GLfloat value[3][3]); + void setUniformValue(int location, const GLfloat value[4][4]); + void setUniformValue(int location, const QTransform& value); + + void setUniformValue(const char *name, GLfloat value); + void setUniformValue(const char *name, GLint value); + void setUniformValue(const char *name, GLuint value); + void setUniformValue(const char *name, GLfloat x, GLfloat y); + void setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z); + void setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void setUniformValue(const char *name, const QVector2D& value); + void setUniformValue(const char *name, const QVector3D& value); + void setUniformValue(const char *name, const QVector4D& value); + void setUniformValue(const char *name, const QColor& color); + void setUniformValue(const char *name, const QPoint& point); + void setUniformValue(const char *name, const QPointF& point); + void setUniformValue(const char *name, const QSize& size); + void setUniformValue(const char *name, const QSizeF& size); + void setUniformValue(const char *name, const QMatrix2x2& value); + void setUniformValue(const char *name, const QMatrix2x3& value); + void setUniformValue(const char *name, const QMatrix2x4& value); + void setUniformValue(const char *name, const QMatrix3x2& value); + void setUniformValue(const char *name, const QMatrix3x3& value); + void setUniformValue(const char *name, const QMatrix3x4& value); + void setUniformValue(const char *name, const QMatrix4x2& value); + void setUniformValue(const char *name, const QMatrix4x3& value); + void setUniformValue(const char *name, const QMatrix4x4& value); + void setUniformValue(const char *name, const GLfloat value[2][2]); + void setUniformValue(const char *name, const GLfloat value[3][3]); + void setUniformValue(const char *name, const GLfloat value[4][4]); + void setUniformValue(const char *name, const QTransform& value); + + void setUniformValueArray(int location, const GLfloat *values, int count, int tupleSize); + void setUniformValueArray(int location, const GLint *values, int count); + void setUniformValueArray(int location, const GLuint *values, int count); + void setUniformValueArray(int location, const QVector2D *values, int count); + void setUniformValueArray(int location, const QVector3D *values, int count); + void setUniformValueArray(int location, const QVector4D *values, int count); + void setUniformValueArray(int location, const QMatrix2x2 *values, int count); + void setUniformValueArray(int location, const QMatrix2x3 *values, int count); + void setUniformValueArray(int location, const QMatrix2x4 *values, int count); + void setUniformValueArray(int location, const QMatrix3x2 *values, int count); + void setUniformValueArray(int location, const QMatrix3x3 *values, int count); + void setUniformValueArray(int location, const QMatrix3x4 *values, int count); + void setUniformValueArray(int location, const QMatrix4x2 *values, int count); + void setUniformValueArray(int location, const QMatrix4x3 *values, int count); + void setUniformValueArray(int location, const QMatrix4x4 *values, int count); + + void setUniformValueArray(const char *name, const GLfloat *values, int count, int tupleSize); + void setUniformValueArray(const char *name, const GLint *values, int count); + void setUniformValueArray(const char *name, const GLuint *values, int count); + void setUniformValueArray(const char *name, const QVector2D *values, int count); + void setUniformValueArray(const char *name, const QVector3D *values, int count); + void setUniformValueArray(const char *name, const QVector4D *values, int count); + void setUniformValueArray(const char *name, const QMatrix2x2 *values, int count); + void setUniformValueArray(const char *name, const QMatrix2x3 *values, int count); + void setUniformValueArray(const char *name, const QMatrix2x4 *values, int count); + void setUniformValueArray(const char *name, const QMatrix3x2 *values, int count); + void setUniformValueArray(const char *name, const QMatrix3x3 *values, int count); + void setUniformValueArray(const char *name, const QMatrix3x4 *values, int count); + void setUniformValueArray(const char *name, const QMatrix4x2 *values, int count); + void setUniformValueArray(const char *name, const QMatrix4x3 *values, int count); + void setUniformValueArray(const char *name, const QMatrix4x4 *values, int count); + + static bool hasOpenGLShaderPrograms(QOpenGLContext *context = Q_NULLPTR); + +private Q_SLOTS: + void shaderDestroyed(); + +private: + Q_DISABLE_COPY(QOpenGLShaderProgram) + Q_DECLARE_PRIVATE(QOpenGLShaderProgram) + + bool init(); +}; + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopengltexture.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopengltexture.h new file mode 100644 index 000000000..6e6f7ef1f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopengltexture.h @@ -0,0 +1,628 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLABSTRACTTEXTURE_H +#define QOPENGLABSTRACTTEXTURE_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#include <QtGui/qopengl.h> +#include <QtGui/qimage.h> +#include <QtCore/QScopedPointer> + +QT_BEGIN_NAMESPACE + +class QOpenGLTexturePrivate; +class QOpenGLPixelTransferOptions; + +class Q_GUI_EXPORT QOpenGLTexture +{ + Q_GADGET +public: + enum Target { + Target1D = 0x0DE0, // GL_TEXTURE_1D + Target1DArray = 0x8C18, // GL_TEXTURE_1D_ARRAY + Target2D = 0x0DE1, // GL_TEXTURE_2D + Target2DArray = 0x8C1A, // GL_TEXTURE_2D_ARRAY + Target3D = 0x806F, // GL_TEXTURE_3D + TargetCubeMap = 0x8513, // GL_TEXTURE_CUBE_MAP + TargetCubeMapArray = 0x9009, // GL_TEXTURE_CUBE_MAP_ARRAY + Target2DMultisample = 0x9100, // GL_TEXTURE_2D_MULTISAMPLE + Target2DMultisampleArray = 0x9102, // GL_TEXTURE_2D_MULTISAMPLE_ARRAY + TargetRectangle = 0x84F5, // GL_TEXTURE_RECTANGLE + TargetBuffer = 0x8C2A // GL_TEXTURE_BUFFER + }; + Q_ENUM(Target) + + enum BindingTarget { + BindingTarget1D = 0x8068, // GL_TEXTURE_BINDING_1D + BindingTarget1DArray = 0x8C1C, // GL_TEXTURE_BINDING_1D_ARRAY + BindingTarget2D = 0x8069, // GL_TEXTURE_BINDING_2D + BindingTarget2DArray = 0x8C1D, // GL_TEXTURE_BINDING_2D_ARRAY + BindingTarget3D = 0x806A, // GL_TEXTURE_BINDING_3D + BindingTargetCubeMap = 0x8514, // GL_TEXTURE_BINDING_CUBE_MAP + BindingTargetCubeMapArray = 0x900A, // GL_TEXTURE_BINDING_CUBE_MAP_ARRAY + BindingTarget2DMultisample = 0x9104, // GL_TEXTURE_BINDING_2D_MULTISAMPLE + BindingTarget2DMultisampleArray = 0x9105, // GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY + BindingTargetRectangle = 0x84F6, // GL_TEXTURE_BINDING_RECTANGLE + BindingTargetBuffer = 0x8C2C // GL_TEXTURE_BINDING_BUFFER + }; + Q_ENUM(BindingTarget) + + enum MipMapGeneration { + GenerateMipMaps, + DontGenerateMipMaps + }; + Q_ENUM(MipMapGeneration) + + enum TextureUnitReset { + ResetTextureUnit, + DontResetTextureUnit + }; + Q_ENUM(TextureUnitReset) + + enum TextureFormat { + NoFormat = 0, // GL_NONE + + // Unsigned normalized formats + R8_UNorm = 0x8229, // GL_R8 + RG8_UNorm = 0x822B, // GL_RG8 + RGB8_UNorm = 0x8051, // GL_RGB8 + RGBA8_UNorm = 0x8058, // GL_RGBA8 + + R16_UNorm = 0x822A, // GL_R16 + RG16_UNorm = 0x822C, // GL_RG16 + RGB16_UNorm = 0x8054, // GL_RGB16 + RGBA16_UNorm = 0x805B, // GL_RGBA16 + + // Signed normalized formats + R8_SNorm = 0x8F94, // GL_R8_SNORM + RG8_SNorm = 0x8F95, // GL_RG8_SNORM + RGB8_SNorm = 0x8F96, // GL_RGB8_SNORM + RGBA8_SNorm = 0x8F97, // GL_RGBA8_SNORM + + R16_SNorm = 0x8F98, // GL_R16_SNORM + RG16_SNorm = 0x8F99, // GL_RG16_SNORM + RGB16_SNorm = 0x8F9A, // GL_RGB16_SNORM + RGBA16_SNorm = 0x8F9B, // GL_RGBA16_SNORM + + // Unsigned integer formats + R8U = 0x8232, // GL_R8UI + RG8U = 0x8238, // GL_RG8UI + RGB8U = 0x8D7D, // GL_RGB8UI + RGBA8U = 0x8D7C, // GL_RGBA8UI + + R16U = 0x8234, // GL_R16UI + RG16U = 0x823A, // GL_RG16UI + RGB16U = 0x8D77, // GL_RGB16UI + RGBA16U = 0x8D76, // GL_RGBA16UI + + R32U = 0x8236, // GL_R32UI + RG32U = 0x823C, // GL_RG32UI + RGB32U = 0x8D71, // GL_RGB32UI + RGBA32U = 0x8D70, // GL_RGBA32UI + + // Signed integer formats + R8I = 0x8231, // GL_R8I + RG8I = 0x8237, // GL_RG8I + RGB8I = 0x8D8F, // GL_RGB8I + RGBA8I = 0x8D8E, // GL_RGBA8I + + R16I = 0x8233, // GL_R16I + RG16I = 0x8239, // GL_RG16I + RGB16I = 0x8D89, // GL_RGB16I + RGBA16I = 0x8D88, // GL_RGBA16I + + R32I = 0x8235, // GL_R32I + RG32I = 0x823B, // GL_RG32I + RGB32I = 0x8D83, // GL_RGB32I + RGBA32I = 0x8D82, // GL_RGBA32I + + // Floating point formats + R16F = 0x822D, // GL_R16F + RG16F = 0x822F, // GL_RG16F + RGB16F = 0x881B, // GL_RGB16F + RGBA16F = 0x881A, // GL_RGBA16F + + R32F = 0x822E, // GL_R32F + RG32F = 0x8230, // GL_RG32F + RGB32F = 0x8815, // GL_RGB32F + RGBA32F = 0x8814, // GL_RGBA32F + + // Packed formats + RGB9E5 = 0x8C3D, // GL_RGB9_E5 + RG11B10F = 0x8C3A, // GL_R11F_G11F_B10F + RG3B2 = 0x2A10, // GL_R3_G3_B2 + R5G6B5 = 0x8D62, // GL_RGB565 + RGB5A1 = 0x8057, // GL_RGB5_A1 + RGBA4 = 0x8056, // GL_RGBA4 + RGB10A2 = 0x906F, // GL_RGB10_A2UI + + // Depth formats + D16 = 0x81A5, // GL_DEPTH_COMPONENT16 + D24 = 0x81A6, // GL_DEPTH_COMPONENT24 + D24S8 = 0x88F0, // GL_DEPTH24_STENCIL8 + D32 = 0x81A7, // GL_DEPTH_COMPONENT32 + D32F = 0x8CAC, // GL_DEPTH_COMPONENT32F + D32FS8X24 = 0x8CAD, // GL_DEPTH32F_STENCIL8 + S8 = 0x8D48, // GL_STENCIL_INDEX8 + + // Compressed formats + RGB_DXT1 = 0x83F0, // GL_COMPRESSED_RGB_S3TC_DXT1_EXT + RGBA_DXT1 = 0x83F1, // GL_COMPRESSED_RGBA_S3TC_DXT1_EXT + RGBA_DXT3 = 0x83F2, // GL_COMPRESSED_RGBA_S3TC_DXT3_EXT + RGBA_DXT5 = 0x83F3, // GL_COMPRESSED_RGBA_S3TC_DXT5_EXT + R_ATI1N_UNorm = 0x8DBB, // GL_COMPRESSED_RED_RGTC1 + R_ATI1N_SNorm = 0x8DBC, // GL_COMPRESSED_SIGNED_RED_RGTC1 + RG_ATI2N_UNorm = 0x8DBD, // GL_COMPRESSED_RG_RGTC2 + RG_ATI2N_SNorm = 0x8DBE, // GL_COMPRESSED_SIGNED_RG_RGTC2 + RGB_BP_UNSIGNED_FLOAT = 0x8E8F, // GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB + RGB_BP_SIGNED_FLOAT = 0x8E8E, // GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB + RGB_BP_UNorm = 0x8E8C, // GL_COMPRESSED_RGBA_BPTC_UNORM_ARB + R11_EAC_UNorm = 0x9270, // GL_COMPRESSED_R11_EAC + R11_EAC_SNorm = 0x9271, // GL_COMPRESSED_SIGNED_R11_EAC + RG11_EAC_UNorm = 0x9272, // GL_COMPRESSED_RG11_EAC + RG11_EAC_SNorm = 0x9273, // GL_COMPRESSED_SIGNED_RG11_EAC + RGB8_ETC2 = 0x9274, // GL_COMPRESSED_RGB8_ETC2 + SRGB8_ETC2 = 0x9275, // GL_COMPRESSED_SRGB8_ETC2 + RGB8_PunchThrough_Alpha1_ETC2 = 0x9276, // GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 + SRGB8_PunchThrough_Alpha1_ETC2 = 0x9277, // GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 + RGBA8_ETC2_EAC = 0x9278, // GL_COMPRESSED_RGBA8_ETC2_EAC + SRGB8_Alpha8_ETC2_EAC = 0x9279, // GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC + RGB8_ETC1 = 0x8D64, // GL_ETC1_RGB8_OES + RGBA_ASTC_4x4 = 0x93B0, // GL_COMPRESSED_RGBA_ASTC_4x4_KHR + RGBA_ASTC_5x4 = 0x93B1, // GL_COMPRESSED_RGBA_ASTC_5x4_KHR + RGBA_ASTC_5x5 = 0x93B2, // GL_COMPRESSED_RGBA_ASTC_5x5_KHR + RGBA_ASTC_6x5 = 0x93B3, // GL_COMPRESSED_RGBA_ASTC_6x5_KHR + RGBA_ASTC_6x6 = 0x93B4, // GL_COMPRESSED_RGBA_ASTC_6x6_KHR + RGBA_ASTC_8x5 = 0x93B5, // GL_COMPRESSED_RGBA_ASTC_8x5_KHR + RGBA_ASTC_8x6 = 0x93B6, // GL_COMPRESSED_RGBA_ASTC_8x6_KHR + RGBA_ASTC_8x8 = 0x93B7, // GL_COMPRESSED_RGBA_ASTC_8x8_KHR + RGBA_ASTC_10x5 = 0x93B8, // GL_COMPRESSED_RGBA_ASTC_10x5_KHR + RGBA_ASTC_10x6 = 0x93B9, // GL_COMPRESSED_RGBA_ASTC_10x6_KHR + RGBA_ASTC_10x8 = 0x93BA, // GL_COMPRESSED_RGBA_ASTC_10x8_KHR + RGBA_ASTC_10x10 = 0x93BB, // GL_COMPRESSED_RGBA_ASTC_10x10_KHR + RGBA_ASTC_12x10 = 0x93BC, // GL_COMPRESSED_RGBA_ASTC_12x10_KHR + RGBA_ASTC_12x12 = 0x93BD, // GL_COMPRESSED_RGBA_ASTC_12x12_KHR + SRGB8_Alpha8_ASTC_4x4 = 0x93D0, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR + SRGB8_Alpha8_ASTC_5x4 = 0x93D1, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR + SRGB8_Alpha8_ASTC_5x5 = 0x93D2, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR + SRGB8_Alpha8_ASTC_6x5 = 0x93D3, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR + SRGB8_Alpha8_ASTC_6x6 = 0x93D4, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR + SRGB8_Alpha8_ASTC_8x5 = 0x93D5, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR + SRGB8_Alpha8_ASTC_8x6 = 0x93D6, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR + SRGB8_Alpha8_ASTC_8x8 = 0x93D7, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR + SRGB8_Alpha8_ASTC_10x5 = 0x93D8, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR + SRGB8_Alpha8_ASTC_10x6 = 0x93D9, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR + SRGB8_Alpha8_ASTC_10x8 = 0x93DA, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR + SRGB8_Alpha8_ASTC_10x10 = 0x93DB, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR + SRGB8_Alpha8_ASTC_12x10 = 0x93DC, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR + SRGB8_Alpha8_ASTC_12x12 = 0x93DD, // GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR + + // sRGB formats + SRGB8 = 0x8C41, // GL_SRGB8 + SRGB8_Alpha8 = 0x8C43, // GL_SRGB8_ALPHA8 + SRGB_DXT1 = 0x8C4C, // GL_COMPRESSED_SRGB_S3TC_DXT1_EXT + SRGB_Alpha_DXT1 = 0x8C4D, // GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT + SRGB_Alpha_DXT3 = 0x8C4E, // GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT + SRGB_Alpha_DXT5 = 0x8C4F, // GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT + SRGB_BP_UNorm = 0x8E8D, // GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB + + // ES 2 formats + DepthFormat = 0x1902, // GL_DEPTH_COMPONENT + AlphaFormat = 0x1906, // GL_ALPHA + RGBFormat = 0x1907, // GL_RGB + RGBAFormat = 0x1908, // GL_RGBA + LuminanceFormat = 0x1909, // GL_LUMINANCE + LuminanceAlphaFormat = 0x190A + + }; + Q_ENUM(TextureFormat) + + // This is not used externally yet but is reserved to allow checking of + // compatibility between texture formats +#ifndef Q_QDOC + enum TextureFormatClass { + NoFormatClass, + FormatClass_128Bit, + FormatClass_96Bit, + FormatClass_64Bit, + FormatClass_48Bit, + FormatClass_32Bit, + FormatClass_24Bit, + FormatClass_16Bit, + FormatClass_8Bit, + FormatClass_RGTC1_R, + FormatClass_RGTC2_RG, + FormatClass_BPTC_Unorm, + FormatClass_BPTC_Float, + FormatClass_S3TC_DXT1_RGB, + FormatClass_S3TC_DXT1_RGBA, + FormatClass_S3TC_DXT3_RGBA, + FormatClass_S3TC_DXT5_RGBA, + FormatClass_Unique + }; +#endif + + enum CubeMapFace { + CubeMapPositiveX = 0x8515, // GL_TEXTURE_CUBE_MAP_POSITIVE_X + CubeMapNegativeX = 0x8516, // GL_TEXTURE_CUBE_MAP_NEGATIVE_X + CubeMapPositiveY = 0x8517, // GL_TEXTURE_CUBE_MAP_POSITIVE_Y + CubeMapNegativeY = 0x8518, // GL_TEXTURE_CUBE_MAP_NEGATIVE_Y + CubeMapPositiveZ = 0x8519, // GL_TEXTURE_CUBE_MAP_POSITIVE_Z + CubeMapNegativeZ = 0x851A // GL_TEXTURE_CUBE_MAP_NEGATIVE_Z + }; + Q_ENUM(CubeMapFace) + + enum PixelFormat { + NoSourceFormat = 0, // GL_NONE + Red = 0x1903, // GL_RED + RG = 0x8227, // GL_RG + RGB = 0x1907, // GL_RGB + BGR = 0x80E0, // GL_BGR + RGBA = 0x1908, // GL_RGBA + BGRA = 0x80E1, // GL_BGRA + Red_Integer = 0x8D94, // GL_RED_INTEGER + RG_Integer = 0x8228, // GL_RG_INTEGER + RGB_Integer = 0x8D98, // GL_RGB_INTEGER + BGR_Integer = 0x8D9A, // GL_BGR_INTEGER + RGBA_Integer = 0x8D99, // GL_RGBA_INTEGER + BGRA_Integer = 0x8D9B, // GL_BGRA_INTEGER + Stencil = 0x1901, // GL_STENCIL_INDEX + Depth = 0x1902, // GL_DEPTH_COMPONENT + DepthStencil = 0x84F9, // GL_DEPTH_STENCIL + Alpha = 0x1906, // GL_ALPHA + Luminance = 0x1909, // GL_LUMINANCE + LuminanceAlpha = 0x190A // GL_LUMINANCE_ALPHA + }; + Q_ENUM(PixelFormat) + + enum PixelType { + NoPixelType = 0, // GL_NONE + Int8 = 0x1400, // GL_BYTE + UInt8 = 0x1401, // GL_UNSIGNED_BYTE + Int16 = 0x1402, // GL_SHORT + UInt16 = 0x1403, // GL_UNSIGNED_SHORT + Int32 = 0x1404, // GL_INT + UInt32 = 0x1405, // GL_UNSIGNED_INT + Float16 = 0x140B, // GL_HALF_FLOAT + Float16OES = 0x8D61, // GL_HALF_FLOAT_OES + Float32 = 0x1406, // GL_FLOAT + UInt32_RGB9_E5 = 0x8C3E, // GL_UNSIGNED_INT_5_9_9_9_REV + UInt32_RG11B10F = 0x8C3B, // GL_UNSIGNED_INT_10F_11F_11F_REV + UInt8_RG3B2 = 0x8032, // GL_UNSIGNED_BYTE_3_3_2 + UInt8_RG3B2_Rev = 0x8362, // GL_UNSIGNED_BYTE_2_3_3_REV + UInt16_RGB5A1 = 0x8034, // GL_UNSIGNED_SHORT_5_5_5_1 + UInt16_RGB5A1_Rev = 0x8366, // GL_UNSIGNED_SHORT_1_5_5_5_REV + UInt16_R5G6B5 = 0x8363, // GL_UNSIGNED_SHORT_5_6_5 + UInt16_R5G6B5_Rev = 0x8364, // GL_UNSIGNED_SHORT_5_6_5_REV + UInt16_RGBA4 = 0x8033, // GL_UNSIGNED_SHORT_4_4_4_4 + UInt16_RGBA4_Rev = 0x8365, // GL_UNSIGNED_SHORT_4_4_4_4_REV + UInt32_RGBA8 = 0x8035, // GL_UNSIGNED_INT_8_8_8_8 + UInt32_RGBA8_Rev = 0x8367, // GL_UNSIGNED_INT_8_8_8_8_REV + UInt32_RGB10A2 = 0x8036, // GL_UNSIGNED_INT_10_10_10_2 + UInt32_RGB10A2_Rev = 0x8368, // GL_UNSIGNED_INT_2_10_10_10_REV + UInt32_D24S8 = 0x84FA, // GL_UNSIGNED_INT_24_8 + Float32_D32_UInt32_S8_X24 = 0x8DAD // GL_FLOAT_32_UNSIGNED_INT_24_8_REV + }; + Q_ENUM(PixelType) + + enum SwizzleComponent { + SwizzleRed = 0x8E42, // GL_TEXTURE_SWIZZLE_R + SwizzleGreen = 0x8E43, // GL_TEXTURE_SWIZZLE_G + SwizzleBlue = 0x8E44, // GL_TEXTURE_SWIZZLE_B + SwizzleAlpha = 0x8E45 // GL_TEXTURE_SWIZZLE_A + }; + Q_ENUM(SwizzleComponent) + + enum SwizzleValue { + RedValue = 0x1903, // GL_RED + GreenValue = 0x1904, // GL_GREEN + BlueValue = 0x1905, // GL_BLUE + AlphaValue = 0x1906, // GL_ALPHA + ZeroValue = 0, // GL_ZERO + OneValue = 1 // GL_ONE + }; + Q_ENUM(SwizzleValue) + + enum WrapMode { + Repeat = 0x2901, // GL_REPEAT + MirroredRepeat = 0x8370, // GL_MIRRORED_REPEAT + ClampToEdge = 0x812F, // GL_CLAMP_TO_EDGE + ClampToBorder = 0x812D // GL_CLAMP_TO_BORDER + }; + Q_ENUM(WrapMode) + + enum CoordinateDirection { + DirectionS = 0x2802, // GL_TEXTURE_WRAP_S + DirectionT = 0x2803, // GL_TEXTURE_WRAP_T + DirectionR = 0x8072 // GL_TEXTURE_WRAP_R + }; + Q_ENUM(CoordinateDirection) + + // Features + enum Feature { + ImmutableStorage = 0x00000001, + ImmutableMultisampleStorage = 0x00000002, + TextureRectangle = 0x00000004, + TextureArrays = 0x00000008, + Texture3D = 0x00000010, + TextureMultisample = 0x00000020, + TextureBuffer = 0x00000040, + TextureCubeMapArrays = 0x00000080, + Swizzle = 0x00000100, + StencilTexturing = 0x00000200, + AnisotropicFiltering = 0x00000400, + NPOTTextures = 0x00000800, + NPOTTextureRepeat = 0x00001000, + Texture1D = 0x00002000, + TextureComparisonOperators = 0x00004000, + TextureMipMapLevel = 0x00008000, +#ifndef Q_QDOC + MaxFeatureFlag = 0x00010000 +#endif + }; + Q_DECLARE_FLAGS(Features, Feature) + Q_ENUM(Feature) + + explicit QOpenGLTexture(Target target); + explicit QOpenGLTexture(const QImage& image, MipMapGeneration genMipMaps = GenerateMipMaps); + ~QOpenGLTexture(); + + Target target() const; + + // Creation and destruction + bool create(); + void destroy(); + bool isCreated() const; + GLuint textureId() const; + + // Binding and releasing + void bind(); + void bind(uint unit, TextureUnitReset reset = DontResetTextureUnit); + void release(); + void release(uint unit, TextureUnitReset reset = DontResetTextureUnit); + + bool isBound() const; + bool isBound(uint unit); + static GLuint boundTextureId(BindingTarget target); + static GLuint boundTextureId(uint unit, BindingTarget target); + + // Storage allocation + void setFormat(TextureFormat format); + TextureFormat format() const; + void setSize(int width, int height = 1, int depth = 1); + int width() const; + int height() const; + int depth() const; + void setMipLevels(int levels); + int mipLevels() const; + int maximumMipLevels() const; + void setLayers(int layers); + int layers() const; + int faces() const; + void setSamples(int samples); + int samples() const; + void setFixedSamplePositions(bool fixed); + bool isFixedSamplePositions() const; + void allocateStorage(); + void allocateStorage(PixelFormat pixelFormat, PixelType pixelType); + bool isStorageAllocated() const; + + QOpenGLTexture *createTextureView(Target target, + TextureFormat viewFormat, + int minimumMipmapLevel, int maximumMipmapLevel, + int minimumLayer, int maximumLayer) const; + bool isTextureView() const; + + // Pixel transfer + // ### Qt 6: remove the non-const void * overloads +#if QT_DEPRECATED_SINCE(5, 3) + QT_DEPRECATED void setData(int mipLevel, int layer, CubeMapFace cubeFace, + PixelFormat sourceFormat, PixelType sourceType, + void *data, const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + QT_DEPRECATED void setData(int mipLevel, int layer, + PixelFormat sourceFormat, PixelType sourceType, + void *data, const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + QT_DEPRECATED void setData(int mipLevel, + PixelFormat sourceFormat, PixelType sourceType, + void *data, const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + QT_DEPRECATED void setData(PixelFormat sourceFormat, PixelType sourceType, + void *data, const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); +#endif // QT_DEPRECATED_SINCE(5, 3) + + void setData(int mipLevel, int layer, CubeMapFace cubeFace, + PixelFormat sourceFormat, PixelType sourceType, + const void *data, const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + void setData(int mipLevel, int layer, int layerCount, CubeMapFace cubeFace, + PixelFormat sourceFormat, PixelType sourceType, + const void *data, const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + void setData(int mipLevel, int layer, + PixelFormat sourceFormat, PixelType sourceType, + const void *data, const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + void setData(int mipLevel, + PixelFormat sourceFormat, PixelType sourceType, + const void *data, const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + void setData(PixelFormat sourceFormat, PixelType sourceType, + const void *data, const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + + // Compressed data upload + // ### Qt 6: remove the non-const void * overloads +#if QT_DEPRECATED_SINCE(5, 3) + QT_DEPRECATED void setCompressedData(int mipLevel, int layer, CubeMapFace cubeFace, + int dataSize, void *data, + const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + QT_DEPRECATED void setCompressedData(int mipLevel, int layer, + int dataSize, void *data, + const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + QT_DEPRECATED void setCompressedData(int mipLevel, int dataSize, void *data, + const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + QT_DEPRECATED void setCompressedData(int dataSize, void *data, + const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); +#endif // QT_DEPRECATED_SINCE(5, 3) + + void setCompressedData(int mipLevel, int layer, CubeMapFace cubeFace, + int dataSize, const void *data, + const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + void setCompressedData(int mipLevel, int layer, int layerCount, CubeMapFace cubeFace, + int dataSize, const void *data, + const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + void setCompressedData(int mipLevel, int layer, + int dataSize, const void *data, + const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + void setCompressedData(int mipLevel, int dataSize, const void *data, + const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + void setCompressedData(int dataSize, const void *data, + const QOpenGLPixelTransferOptions * const options = Q_NULLPTR); + + // Helpful overloads for setData + void setData(const QImage& image, MipMapGeneration genMipMaps = GenerateMipMaps); + + static bool hasFeature(Feature feature); + + // Texture Parameters + void setMipBaseLevel(int baseLevel); + int mipBaseLevel() const; + void setMipMaxLevel(int maxLevel); + int mipMaxLevel() const; + void setMipLevelRange(int baseLevel, int maxLevel); + QPair<int, int> mipLevelRange() const; + + void setAutoMipMapGenerationEnabled(bool enabled); + bool isAutoMipMapGenerationEnabled() const; + + void generateMipMaps(); + void generateMipMaps(int baseLevel, bool resetBaseLevel = true); + + void setSwizzleMask(SwizzleComponent component, SwizzleValue value); + void setSwizzleMask(SwizzleValue r, SwizzleValue g, + SwizzleValue b, SwizzleValue a); + SwizzleValue swizzleMask(SwizzleComponent component) const; + + enum DepthStencilMode { + DepthMode = 0x1902, // GL_DEPTH_COMPONENT + StencilMode = 0x1901 // GL_STENCIL_INDEX + }; + Q_ENUM(DepthStencilMode) + + void setDepthStencilMode(DepthStencilMode mode); + DepthStencilMode depthStencilMode() const; + + enum ComparisonFunction { + CompareLessEqual = 0x0203, // GL_LEQUAL + CompareGreaterEqual = 0x0206, // GL_GEQUAL + CompareLess = 0x0201, // GL_LESS + CompareGreater = 0x0204, // GL_GREATER + CompareEqual = 0x0202, // GL_EQUAL + CommpareNotEqual = 0x0205, // GL_NOTEQUAL + CompareAlways = 0x0207, // GL_ALWAYS + CompareNever = 0x0200 // GL_NEVER + }; + Q_ENUM(ComparisonFunction) + + void setComparisonFunction(ComparisonFunction function); + ComparisonFunction comparisonFunction() const; + + enum ComparisonMode { + CompareRefToTexture = 0x884E, // GL_COMPARE_REF_TO_TEXTURE + CompareNone = 0x0000 // GL_NONE + }; + + void setComparisonMode(ComparisonMode mode); + ComparisonMode comparisonMode() const; + + // Sampling Parameters + enum Filter { + Nearest = 0x2600, // GL_NEAREST + Linear = 0x2601, // GL_LINEAR + NearestMipMapNearest = 0x2700, // GL_NEAREST_MIPMAP_NEAREST + NearestMipMapLinear = 0x2702, // GL_NEAREST_MIPMAP_LINEAR + LinearMipMapNearest = 0x2701, // GL_LINEAR_MIPMAP_NEAREST + LinearMipMapLinear = 0x2703 // GL_LINEAR_MIPMAP_LINEAR + }; + Q_ENUM(Filter) + + void setMinificationFilter(Filter filter); + Filter minificationFilter() const; + void setMagnificationFilter(Filter filter); + Filter magnificationFilter() const; + void setMinMagFilters(Filter minificationFilter, + Filter magnificationFilter); + QPair<Filter, Filter> minMagFilters() const; + void setMaximumAnisotropy(float anisotropy); + float maximumAnisotropy() const; + + void setWrapMode(WrapMode mode); + void setWrapMode(CoordinateDirection direction, WrapMode mode); + WrapMode wrapMode(CoordinateDirection direction) const; + + void setBorderColor(QColor color); + void setBorderColor(float r, float g, float b, float a); + void setBorderColor(int r, int g, int b, int a); + void setBorderColor(uint r, uint g, uint b, uint a); + + QColor borderColor() const; + void borderColor(float *border) const; + void borderColor(int *border) const; + void borderColor(unsigned int *border) const; + + void setMinimumLevelOfDetail(float value); + float minimumLevelOfDetail() const; + void setMaximumLevelOfDetail(float value); + float maximumLevelOfDetail() const; + void setLevelOfDetailRange(float min, float max); + QPair<float, float> levelOfDetailRange() const; + void setLevelofDetailBias(float bias); + float levelofDetailBias() const; + +private: + Q_DISABLE_COPY(QOpenGLTexture) + Q_DECLARE_PRIVATE(QOpenGLTexture) + QScopedPointer<QOpenGLTexturePrivate> d_ptr; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLTexture::Features) + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif // QOPENGLABSTRACTTEXTURE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopengltextureblitter.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopengltextureblitter.h new file mode 100644 index 000000000..2f7c6b1a0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopengltextureblitter.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLTEXTUREBLITTER_H +#define QOPENGLTEXTUREBLITTER_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#include <QtGui/qopengl.h> +#include <QtGui/QMatrix3x3> +#include <QtGui/QMatrix4x4> + +QT_BEGIN_NAMESPACE + +class QOpenGLTextureBlitterPrivate; + +class Q_GUI_EXPORT QOpenGLTextureBlitter +{ +public: + QOpenGLTextureBlitter(); + ~QOpenGLTextureBlitter(); + + enum Origin { + OriginBottomLeft, + OriginTopLeft + }; + + bool create(); + bool isCreated() const; + void destroy(); + + bool supportsExternalOESTarget() const; + + void bind(GLenum target = GL_TEXTURE_2D); + void release(); + + void setRedBlueSwizzle(bool swizzle); + void setOpacity(float opacity); + + void blit(GLuint texture, const QMatrix4x4 &targetTransform, Origin sourceOrigin); + void blit(GLuint texture, const QMatrix4x4 &targetTransform, const QMatrix3x3 &sourceTransform); + + static QMatrix4x4 targetTransform(const QRectF &target, const QRect &viewport); + static QMatrix3x3 sourceTransform(const QRectF &subTexture, const QSize &textureSize, Origin origin); + +private: + Q_DISABLE_COPY(QOpenGLTextureBlitter) + Q_DECLARE_PRIVATE(QOpenGLTextureBlitter) + QScopedPointer<QOpenGLTextureBlitterPrivate> d_ptr; +}; + +QT_END_NAMESPACE + +#endif + +#endif //QOPENGLTEXTUREBLITTER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopengltimerquery.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopengltimerquery.h new file mode 100644 index 000000000..7b9ab850e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopengltimerquery.h @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLTIMERQUERY_H +#define QOPENGLTIMERQUERY_H + +#include <QtGui/qtguiglobal.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 = Q_NULLPTR); + ~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 = Q_NULLPTR); + ~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/qrenderdoc/3rdparty/qt/include/QtGui/qopenglversionfunctions.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglversionfunctions.h new file mode 100644 index 000000000..63209cf39 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglversionfunctions.h @@ -0,0 +1,1901 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#if QT_DEPRECATED_SINCE(5, 6) +#include <QtCore/qhash.h> +#endif +#include <QtCore/qhashfunctions.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 + +#define QOPENGL_DEPRECATEDFUNCTION \ + qFatal("This function was erroneously included in previous versions of Qt and is here only for binary compatibility. " \ + "If you need to use this function, please use a legacy OpenGL version or a Compatibility profile.") + +struct QOpenGLVersionStatus +{ + enum OpenGLStatus { + CoreStatus, + DeprecatedStatus, + InvalidStatus + }; + + Q_DECL_CONSTEXPR QOpenGLVersionStatus() + : version(0, 0), + status(InvalidStatus) + {} + + Q_DECL_CONSTEXPR QOpenGLVersionStatus(int majorVersion, int minorVersion, QOpenGLVersionStatus::OpenGLStatus functionStatus) + : version(majorVersion, minorVersion), + status(functionStatus) + {} + + QPair<int, int> version; + OpenGLStatus status; +}; + +inline uint qHash(const QOpenGLVersionStatus &v, uint seed = 0) Q_DECL_NOTHROW +{ + return qHash(static_cast<int>(v.status * 1000) + + v.version.first * 100 + v.version.second * 10, seed); +} + +Q_DECL_CONSTEXPR inline bool operator==(const QOpenGLVersionStatus &lhs, const QOpenGLVersionStatus &rhs) +{ + return lhs.status == rhs.status && lhs.version == rhs.version; +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QOpenGLVersionStatus &lhs, const QOpenGLVersionStatus &rhs) +{ + return !operator==(lhs, rhs); +} + +#define QT_OPENGL_DECLARE_FUNCTIONS(ret, name, args) \ + ret (QOPENGLF_APIENTRYP name)args; +#define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1 + +#define QT_OPENGL_DECLARE(FUNCTIONS) \ +public: \ + struct Functions { \ + FUNCTIONS(QT_OPENGL_DECLARE_FUNCTIONS) \ + }; \ + union { \ + QFunctionPointer functions[FUNCTIONS(QT_OPENGL_COUNT_FUNCTIONS)]; \ + Functions f; \ + }; \ +private: \ + void init() + +class QOpenGLVersionFunctionsBackend +{ +public: +#define QT_OPENGL_VERSIONS(F) \ + F(1_0_Core) \ + F(1_1_Core) \ + F(1_2_Core) \ + F(1_3_Core) \ + F(1_4_Core) \ + F(1_5_Core) \ + F(2_0_Core) \ + F(2_1_Core) \ + F(3_0_Core) \ + F(3_1_Core) \ + F(3_2_Core) \ + F(3_3_Core) \ + F(4_0_Core) \ + F(4_1_Core) \ + F(4_2_Core) \ + F(4_3_Core) \ + F(4_4_Core) \ + F(4_5_Core) \ + F(1_0_Deprecated) \ + F(1_1_Deprecated) \ + F(1_2_Deprecated) \ + F(1_3_Deprecated) \ + F(1_4_Deprecated) \ + F(2_0_Deprecated) \ + F(3_0_Deprecated) \ + F(3_3_Deprecated) \ + F(4_5_Deprecated) \ + +#define VERSION_ENUM(X) OpenGL_##X, + enum Version { + QT_OPENGL_VERSIONS(VERSION_ENUM) + OpenGLVersionBackendCount + }; +#undef VERSION_ENUM + + QOpenGLVersionFunctionsBackend(QOpenGLContext *ctx) + : context(ctx) + {} + + QOpenGLContext *context; + QAtomicInt refs; +}; + +class QOpenGLVersionFunctionsStorage +{ +public: + QOpenGLVersionFunctionsStorage(); + ~QOpenGLVersionFunctionsStorage(); + + QOpenGLVersionFunctionsBackend *backend(QOpenGLContext *context, QOpenGLVersionFunctionsBackend::Version v); + + QOpenGLVersionFunctionsBackend **backends; +}; + +class QAbstractOpenGLFunctions; + +class QAbstractOpenGLFunctionsPrivate +{ +public: + QAbstractOpenGLFunctionsPrivate() + : owningContext(Q_NULLPTR), + initialized(false) + {} + + static QOpenGLVersionFunctionsBackend *functionsBackend(QOpenGLContext *context, QOpenGLVersionFunctionsBackend::Version v); + static void insertExternalFunctions(QOpenGLContext *context, QAbstractOpenGLFunctions *f); + static void removeExternalFunctions(QOpenGLContext *context, QAbstractOpenGLFunctions *f); + + static QAbstractOpenGLFunctionsPrivate *get(QAbstractOpenGLFunctions *q); + + QOpenGLContext *owningContext; + bool initialized; +}; + +class Q_GUI_EXPORT 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; +}; + +inline QAbstractOpenGLFunctionsPrivate *QAbstractOpenGLFunctionsPrivate::get(QAbstractOpenGLFunctions *q) +{ + return q->d_func(); +} + +#if !defined(QT_OPENGL_ES_2) + +class QOpenGLFunctions_1_0_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_0_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_0_Core; } + + // OpenGL 1.0 core functions +#define QT_OPENGL_1_0_FUNCTIONS(F) \ + F(void, Viewport, (GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, DepthRange, (GLdouble nearVal, GLdouble farVal)) \ + F(GLboolean, IsEnabled, (GLenum cap)) \ + F(void, GetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint *params)) \ + F(void, GetTexLevelParameterfv, (GLenum target, GLint level, GLenum pname, GLfloat *params)) \ + F(void, GetTexParameteriv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, GetTexParameterfv, (GLenum target, GLenum pname, GLfloat *params)) \ + F(void, GetTexImage, (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels)) \ + F(const GLubyte *, GetString, (GLenum name)) \ + F(void, GetIntegerv, (GLenum pname, GLint *data)) \ + F(void, GetFloatv, (GLenum pname, GLfloat *data)) \ + F(GLenum, GetError, ()) \ + F(void, GetDoublev, (GLenum pname, GLdouble *data)) \ + F(void, GetBooleanv, (GLenum pname, GLboolean *data)) \ + F(void, ReadPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)) \ + F(void, ReadBuffer, (GLenum src)) \ + F(void, PixelStorei, (GLenum pname, GLint param)) \ + F(void, PixelStoref, (GLenum pname, GLfloat param)) \ + F(void, DepthFunc, (GLenum func)) \ + F(void, StencilOp, (GLenum fail, GLenum zfail, GLenum zpass)) \ + F(void, StencilFunc, (GLenum func, GLint ref, GLuint mask)) \ + F(void, LogicOp, (GLenum opcode)) \ + F(void, BlendFunc, (GLenum sfactor, GLenum dfactor)) \ + F(void, Flush, ()) \ + F(void, Finish, ()) \ + F(void, Enable, (GLenum cap)) \ + F(void, Disable, (GLenum cap)) \ + F(void, DepthMask, (GLboolean flag)) \ + F(void, ColorMask, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)) \ + F(void, StencilMask, (GLuint mask)) \ + F(void, ClearDepth, (GLdouble depth)) \ + F(void, ClearStencil, (GLint s)) \ + F(void, ClearColor, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) \ + F(void, Clear, (GLbitfield mask)) \ + F(void, DrawBuffer, (GLenum buf)) \ + F(void, TexImage2D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)) \ + F(void, TexImage1D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels)) \ + F(void, TexParameteriv, (GLenum target, GLenum pname, const GLint *params)) \ + F(void, TexParameteri, (GLenum target, GLenum pname, GLint param)) \ + F(void, TexParameterfv, (GLenum target, GLenum pname, const GLfloat *params)) \ + F(void, TexParameterf, (GLenum target, GLenum pname, GLfloat param)) \ + F(void, Scissor, (GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, PolygonMode, (GLenum face, GLenum mode)) \ + F(void, PointSize, (GLfloat size)) \ + F(void, LineWidth, (GLfloat width)) \ + F(void, Hint, (GLenum target, GLenum mode)) \ + F(void, FrontFace, (GLenum mode)) \ + F(void, CullFace, (GLenum mode)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_0_FUNCTIONS); +}; + +class QOpenGLFunctions_1_1_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_1_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_1_Core; } + + // OpenGL 1.1 core functions +#define QT_OPENGL_1_1_FUNCTIONS(F) \ + F(void, Indexubv, (const GLubyte *c)) \ + F(void, Indexub, (GLubyte c)) \ + F(GLboolean, IsTexture, (GLuint texture)) \ + F(void, GenTextures, (GLsizei n, GLuint *textures)) \ + F(void, DeleteTextures, (GLsizei n, const GLuint *textures)) \ + F(void, BindTexture, (GLenum target, GLuint texture)) \ + F(void, TexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)) \ + F(void, TexSubImage1D, (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels)) \ + F(void, CopyTexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, CopyTexSubImage1D, (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)) \ + F(void, CopyTexImage2D, (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)) \ + F(void, CopyTexImage1D, (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)) \ + F(void, PolygonOffset, (GLfloat factor, GLfloat units)) \ + F(void, GetPointerv, (GLenum pname, GLvoid* *params)) \ + F(void, DrawElements, (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)) \ + F(void, DrawArrays, (GLenum mode, GLint first, GLsizei count)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_1_FUNCTIONS); +}; + +class QOpenGLFunctions_1_2_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_2_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_2_Core; } + + // OpenGL 1.2 core functions +#define QT_OPENGL_1_2_FUNCTIONS(F) \ + F(void, CopyTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, TexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)) \ + F(void, TexImage3D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)) \ + F(void, DrawRangeElements, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices)) \ + F(void, BlendEquation, (GLenum mode)) \ + F(void, BlendColor, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_2_FUNCTIONS); +}; + +class QOpenGLFunctions_1_3_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_3_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_3_Core; } + + // OpenGL 1.3 core functions +#define QT_OPENGL_1_3_FUNCTIONS(F) \ + F(void, GetCompressedTexImage, (GLenum target, GLint level, GLvoid *img)) \ + F(void, CompressedTexSubImage1D, (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data)) \ + F(void, CompressedTexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)) \ + F(void, CompressedTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data)) \ + F(void, CompressedTexImage1D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data)) \ + F(void, CompressedTexImage2D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)) \ + F(void, CompressedTexImage3D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data)) \ + F(void, SampleCoverage, (GLfloat value, GLboolean invert)) \ + F(void, ActiveTexture, (GLenum texture)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_3_FUNCTIONS); +}; + +class QOpenGLFunctions_1_4_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_4_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_4_Core; } + + // OpenGL 1.4 core functions +#define QT_OPENGL_1_4_FUNCTIONS(F) \ + F(void, PointParameteriv, (GLenum pname, const GLint *params)) \ + F(void, PointParameteri, (GLenum pname, GLint param)) \ + F(void, PointParameterfv, (GLenum pname, const GLfloat *params)) \ + F(void, PointParameterf, (GLenum pname, GLfloat param)) \ + F(void, MultiDrawElements, (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount)) \ + F(void, MultiDrawArrays, (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount)) \ + F(void, BlendFuncSeparate, (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_4_FUNCTIONS); +}; + +class QOpenGLFunctions_1_5_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_5_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_5_Core; } + + // OpenGL 1.5 core functions +#define QT_OPENGL_1_5_FUNCTIONS(F) \ + F(void, GetBufferPointerv, (GLenum target, GLenum pname, GLvoid* *params)) \ + F(void, GetBufferParameteriv, (GLenum target, GLenum pname, GLint *params)) \ + F(GLboolean, UnmapBuffer, (GLenum target)) \ + F(GLvoid*, MapBuffer, (GLenum target, GLenum access)) \ + F(void, GetBufferSubData, (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data)) \ + F(void, BufferSubData, (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data)) \ + F(void, BufferData, (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)) \ + F(GLboolean, IsBuffer, (GLuint buffer)) \ + F(void, GenBuffers, (GLsizei n, GLuint *buffers)) \ + F(void, DeleteBuffers, (GLsizei n, const GLuint *buffers)) \ + F(void, BindBuffer, (GLenum target, GLuint buffer)) \ + F(void, GetQueryObjectuiv, (GLuint id, GLenum pname, GLuint *params)) \ + F(void, GetQueryObjectiv, (GLuint id, GLenum pname, GLint *params)) \ + F(void, GetQueryiv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, EndQuery, (GLenum target)) \ + F(void, BeginQuery, (GLenum target, GLuint id)) \ + F(GLboolean, IsQuery, (GLuint id)) \ + F(void, DeleteQueries, (GLsizei n, const GLuint *ids)) \ + F(void, GenQueries, (GLsizei n, GLuint *ids)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_5_FUNCTIONS); +}; + +class QOpenGLFunctions_2_0_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_2_0_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_2_0_Core; } + + // OpenGL 2.0 core functions +#define QT_OPENGL_2_0_FUNCTIONS(F) \ + F(void, VertexAttribPointer, (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)) \ + F(void, ValidateProgram, (GLuint program)) \ + F(void, UniformMatrix4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, Uniform4iv, (GLint location, GLsizei count, const GLint *value)) \ + F(void, Uniform3iv, (GLint location, GLsizei count, const GLint *value)) \ + F(void, Uniform2iv, (GLint location, GLsizei count, const GLint *value)) \ + F(void, Uniform1iv, (GLint location, GLsizei count, const GLint *value)) \ + F(void, Uniform4fv, (GLint location, GLsizei count, const GLfloat *value)) \ + F(void, Uniform3fv, (GLint location, GLsizei count, const GLfloat *value)) \ + F(void, Uniform2fv, (GLint location, GLsizei count, const GLfloat *value)) \ + F(void, Uniform1fv, (GLint location, GLsizei count, const GLfloat *value)) \ + F(void, Uniform4i, (GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) \ + F(void, Uniform3i, (GLint location, GLint v0, GLint v1, GLint v2)) \ + F(void, Uniform2i, (GLint location, GLint v0, GLint v1)) \ + F(void, Uniform1i, (GLint location, GLint v0)) \ + F(void, Uniform4f, (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) \ + F(void, Uniform3f, (GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) \ + F(void, Uniform2f, (GLint location, GLfloat v0, GLfloat v1)) \ + F(void, Uniform1f, (GLint location, GLfloat v0)) \ + F(void, UseProgram, (GLuint program)) \ + F(void, ShaderSource, (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length)) \ + F(void, LinkProgram, (GLuint program)) \ + F(GLboolean, IsShader, (GLuint shader)) \ + F(GLboolean, IsProgram, (GLuint program)) \ + F(void, GetVertexAttribPointerv, (GLuint index, GLenum pname, GLvoid* *pointer)) \ + F(void, GetVertexAttribiv, (GLuint index, GLenum pname, GLint *params)) \ + F(void, GetVertexAttribfv, (GLuint index, GLenum pname, GLfloat *params)) \ + F(void, GetVertexAttribdv, (GLuint index, GLenum pname, GLdouble *params)) \ + F(void, GetUniformiv, (GLuint program, GLint location, GLint *params)) \ + F(void, GetUniformfv, (GLuint program, GLint location, GLfloat *params)) \ + F(GLint, GetUniformLocation, (GLuint program, const GLchar *name)) \ + F(void, GetShaderSource, (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)) \ + F(void, GetShaderInfoLog, (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \ + F(void, GetShaderiv, (GLuint shader, GLenum pname, GLint *params)) \ + F(void, GetProgramInfoLog, (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \ + F(void, GetProgramiv, (GLuint program, GLenum pname, GLint *params)) \ + F(GLint, GetAttribLocation, (GLuint program, const GLchar *name)) \ + F(void, GetAttachedShaders, (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders)) \ + F(void, GetActiveUniform, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)) \ + F(void, GetActiveAttrib, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)) \ + F(void, EnableVertexAttribArray, (GLuint index)) \ + F(void, DisableVertexAttribArray, (GLuint index)) \ + F(void, DetachShader, (GLuint program, GLuint shader)) \ + F(void, DeleteShader, (GLuint shader)) \ + F(void, DeleteProgram, (GLuint program)) \ + F(GLuint, CreateShader, (GLenum type)) \ + F(GLuint, CreateProgram, ()) \ + F(void, CompileShader, (GLuint shader)) \ + F(void, BindAttribLocation, (GLuint program, GLuint index, const GLchar *name)) \ + F(void, AttachShader, (GLuint program, GLuint shader)) \ + F(void, StencilMaskSeparate, (GLenum face, GLuint mask)) \ + F(void, StencilFuncSeparate, (GLenum face, GLenum func, GLint ref, GLuint mask)) \ + F(void, StencilOpSeparate, (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)) \ + F(void, DrawBuffers, (GLsizei n, const GLenum *bufs)) \ + F(void, BlendEquationSeparate, (GLenum modeRGB, GLenum modeAlpha)) \ + F(void, VertexAttrib4usv, (GLuint index, const GLushort *v)) \ + F(void, VertexAttrib4uiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttrib4ubv, (GLuint index, const GLubyte *v)) \ + F(void, VertexAttrib4sv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttrib4s, (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)) \ + F(void, VertexAttrib4iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttrib4fv, (GLuint index, const GLfloat *v)) \ + F(void, VertexAttrib4f, (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) \ + F(void, VertexAttrib4dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttrib4d, (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) \ + F(void, VertexAttrib4bv, (GLuint index, const GLbyte *v)) \ + F(void, VertexAttrib4Nusv, (GLuint index, const GLushort *v)) \ + F(void, VertexAttrib4Nuiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttrib4Nubv, (GLuint index, const GLubyte *v)) \ + F(void, VertexAttrib4Nub, (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)) \ + F(void, VertexAttrib4Nsv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttrib4Niv, (GLuint index, const GLint *v)) \ + F(void, VertexAttrib4Nbv, (GLuint index, const GLbyte *v)) \ + F(void, VertexAttrib3sv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttrib3s, (GLuint index, GLshort x, GLshort y, GLshort z)) \ + F(void, VertexAttrib3fv, (GLuint index, const GLfloat *v)) \ + F(void, VertexAttrib3f, (GLuint index, GLfloat x, GLfloat y, GLfloat z)) \ + F(void, VertexAttrib3dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttrib3d, (GLuint index, GLdouble x, GLdouble y, GLdouble z)) \ + F(void, VertexAttrib2sv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttrib2s, (GLuint index, GLshort x, GLshort y)) \ + F(void, VertexAttrib2fv, (GLuint index, const GLfloat *v)) \ + F(void, VertexAttrib2f, (GLuint index, GLfloat x, GLfloat y)) \ + F(void, VertexAttrib2dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttrib2d, (GLuint index, GLdouble x, GLdouble y)) \ + F(void, VertexAttrib1sv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttrib1s, (GLuint index, GLshort x)) \ + F(void, VertexAttrib1fv, (GLuint index, const GLfloat *v)) \ + F(void, VertexAttrib1f, (GLuint index, GLfloat x)) \ + F(void, VertexAttrib1dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttrib1d, (GLuint index, GLdouble x)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_2_0_FUNCTIONS); +}; + +class QOpenGLFunctions_2_1_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_2_1_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_2_1_Core; } + + // OpenGL 2.1 core functions +#define QT_OPENGL_2_1_FUNCTIONS(F) \ + F(void, UniformMatrix4x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix3x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix4x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix2x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix3x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, UniformMatrix2x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_2_1_FUNCTIONS); +}; + +class QOpenGLFunctions_3_0_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_0_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_3_0_Core; } + + // OpenGL 3.0 core functions +#define QT_OPENGL_3_0_FUNCTIONS(F) \ + F(GLboolean, IsVertexArray, (GLuint array)) \ + F(void, GenVertexArrays, (GLsizei n, GLuint *arrays)) \ + F(void, DeleteVertexArrays, (GLsizei n, const GLuint *arrays)) \ + F(void, BindVertexArray, (GLuint array)) \ + F(void, FlushMappedBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length)) \ + F(GLvoid *, MapBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)) \ + F(void, FramebufferTextureLayer, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) \ + F(void, RenderbufferStorageMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \ + F(void, BlitFramebuffer, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) \ + F(void, GenerateMipmap, (GLenum target)) \ + F(void, GetFramebufferAttachmentParameteriv, (GLenum target, GLenum attachment, GLenum pname, GLint *params)) \ + F(void, FramebufferRenderbuffer, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) \ + F(void, FramebufferTexture3D, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)) \ + F(void, FramebufferTexture2D, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) \ + F(void, FramebufferTexture1D, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) \ + F(GLenum, CheckFramebufferStatus, (GLenum target)) \ + F(void, GenFramebuffers, (GLsizei n, GLuint *framebuffers)) \ + F(void, DeleteFramebuffers, (GLsizei n, const GLuint *framebuffers)) \ + F(void, BindFramebuffer, (GLenum target, GLuint framebuffer)) \ + F(GLboolean, IsFramebuffer, (GLuint framebuffer)) \ + F(void, GetRenderbufferParameteriv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, RenderbufferStorage, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) \ + F(void, GenRenderbuffers, (GLsizei n, GLuint *renderbuffers)) \ + F(void, DeleteRenderbuffers, (GLsizei n, const GLuint *renderbuffers)) \ + F(void, BindRenderbuffer, (GLenum target, GLuint renderbuffer)) \ + F(GLboolean, IsRenderbuffer, (GLuint renderbuffer)) \ + F(const GLubyte *, GetStringi, (GLenum name, GLuint index)) \ + F(void, ClearBufferfi, (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) \ + F(void, ClearBufferfv, (GLenum buffer, GLint drawbuffer, const GLfloat *value)) \ + F(void, ClearBufferuiv, (GLenum buffer, GLint drawbuffer, const GLuint *value)) \ + F(void, ClearBufferiv, (GLenum buffer, GLint drawbuffer, const GLint *value)) \ + F(void, GetTexParameterIuiv, (GLenum target, GLenum pname, GLuint *params)) \ + F(void, GetTexParameterIiv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, TexParameterIuiv, (GLenum target, GLenum pname, const GLuint *params)) \ + F(void, TexParameterIiv, (GLenum target, GLenum pname, const GLint *params)) \ + F(void, Uniform4uiv, (GLint location, GLsizei count, const GLuint *value)) \ + F(void, Uniform3uiv, (GLint location, GLsizei count, const GLuint *value)) \ + F(void, Uniform2uiv, (GLint location, GLsizei count, const GLuint *value)) \ + F(void, Uniform1uiv, (GLint location, GLsizei count, const GLuint *value)) \ + F(void, Uniform4ui, (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \ + F(void, Uniform3ui, (GLint location, GLuint v0, GLuint v1, GLuint v2)) \ + F(void, Uniform2ui, (GLint location, GLuint v0, GLuint v1)) \ + F(void, Uniform1ui, (GLint location, GLuint v0)) \ + F(GLint, GetFragDataLocation, (GLuint program, const GLchar *name)) \ + F(void, BindFragDataLocation, (GLuint program, GLuint color, const GLchar *name)) \ + F(void, GetUniformuiv, (GLuint program, GLint location, GLuint *params)) \ + F(void, GetVertexAttribIuiv, (GLuint index, GLenum pname, GLuint *params)) \ + F(void, GetVertexAttribIiv, (GLuint index, GLenum pname, GLint *params)) \ + F(void, VertexAttribIPointer, (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) \ + F(void, EndConditionalRender, ()) \ + F(void, BeginConditionalRender, (GLuint id, GLenum mode)) \ + F(void, ClampColor, (GLenum target, GLenum clamp)) \ + F(void, GetTransformFeedbackVarying, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) \ + F(void, TransformFeedbackVaryings, (GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode)) \ + F(void, BindBufferBase, (GLenum target, GLuint index, GLuint buffer)) \ + F(void, BindBufferRange, (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) \ + F(void, EndTransformFeedback, ()) \ + F(void, BeginTransformFeedback, (GLenum primitiveMode)) \ + F(GLboolean, IsEnabledi, (GLenum target, GLuint index)) \ + F(void, Disablei, (GLenum target, GLuint index)) \ + F(void, Enablei, (GLenum target, GLuint index)) \ + F(void, GetIntegeri_v,(GLenum target, GLuint index, GLint *data)) \ + F(void, GetBooleani_v,(GLenum target, GLuint index, GLboolean *data)) \ + F(void, ColorMaski, (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) \ + F(void, VertexAttribI4usv, (GLuint index, const GLushort *v)) \ + F(void, VertexAttribI4ubv, (GLuint index, const GLubyte *v)) \ + F(void, VertexAttribI4sv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttribI4bv, (GLuint index, const GLbyte *v)) \ + F(void, VertexAttribI4uiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttribI3uiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttribI2uiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttribI1uiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttribI4iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttribI3iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttribI2iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttribI1iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttribI4ui, (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) \ + F(void, VertexAttribI3ui, (GLuint index, GLuint x, GLuint y, GLuint z)) \ + F(void, VertexAttribI2ui, (GLuint index, GLuint x, GLuint y)) \ + F(void, VertexAttribI1ui, (GLuint index, GLuint x)) \ + F(void, VertexAttribI4i, (GLuint index, GLint x, GLint y, GLint z, GLint w)) \ + F(void, VertexAttribI3i, (GLuint index, GLint x, GLint y, GLint z)) \ + F(void, VertexAttribI2i, (GLuint index, GLint x, GLint y)) \ + F(void, VertexAttribI1i, (GLuint index, GLint x)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_3_0_FUNCTIONS); +}; + +class QOpenGLFunctions_3_1_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_1_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_3_1_Core; } + + // OpenGL 3.1 core functions +#define QT_OPENGL_3_1_FUNCTIONS(F) \ + F(void, CopyBufferSubData, (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) \ + F(void, UniformBlockBinding, (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)) \ + F(void, GetActiveUniformBlockName, (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)) \ + F(void, GetActiveUniformBlockiv, (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)) \ + F(GLuint, GetUniformBlockIndex, (GLuint program, const GLchar *uniformBlockName)) \ + F(void, GetActiveUniformName, (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName)) \ + F(void, GetActiveUniformsiv, (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)) \ + F(void, GetUniformIndices, (GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices)) \ + F(void, PrimitiveRestartIndex, (GLuint index)) \ + F(void, TexBuffer, (GLenum target, GLenum internalformat, GLuint buffer)) \ + F(void, DrawElementsInstanced, (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount)) \ + F(void, DrawArraysInstanced, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_3_1_FUNCTIONS); +}; + +class QOpenGLFunctions_3_2_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_2_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_3_2_Core; } + + // OpenGL 3.2 core functions +#define QT_OPENGL_3_2_FUNCTIONS(F) \ + F(void, SampleMaski, (GLuint maskNumber, GLbitfield mask)) \ + F(void, GetMultisamplefv, (GLenum pname, GLuint index, GLfloat *val)) \ + F(void, TexImage3DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)) \ + F(void, TexImage2DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \ + F(void, GetSynciv, (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)) \ + F(void, GetInteger64v, (GLenum pname, GLint64 *data)) \ + F(void, WaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \ + F(GLenum, ClientWaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \ + F(void, DeleteSync, (GLsync sync)) \ + F(GLboolean, IsSync, (GLsync sync)) \ + F(GLsync, FenceSync, (GLenum condition, GLbitfield flags)) \ + F(void, ProvokingVertex, (GLenum mode)) \ + F(void, MultiDrawElementsBaseVertex, (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex)) \ + F(void, DrawElementsInstancedBaseVertex, (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex)) \ + F(void, DrawRangeElementsBaseVertex, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)) \ + F(void, DrawElementsBaseVertex, (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)) \ + F(void, FramebufferTexture, (GLenum target, GLenum attachment, GLuint texture, GLint level)) \ + F(void, GetBufferParameteri64v, (GLenum target, GLenum pname, GLint64 *params)) \ + F(void, GetInteger64i_v,(GLenum target, GLuint index, GLint64 *data)) + + QT_OPENGL_DECLARE(QT_OPENGL_3_2_FUNCTIONS); +}; + +class QOpenGLFunctions_3_3_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_3_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_3_3_Core; } + + // OpenGL 3.3 core functions +#define QT_OPENGL_3_3_FUNCTIONS(F) \ + F(void, VertexAttribP4uiv, (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)) \ + F(void, VertexAttribP4ui, (GLuint index, GLenum type, GLboolean normalized, GLuint value)) \ + F(void, VertexAttribP3uiv, (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)) \ + F(void, VertexAttribP3ui, (GLuint index, GLenum type, GLboolean normalized, GLuint value)) \ + F(void, VertexAttribP2uiv, (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)) \ + F(void, VertexAttribP2ui, (GLuint index, GLenum type, GLboolean normalized, GLuint value)) \ + F(void, VertexAttribP1uiv, (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)) \ + F(void, VertexAttribP1ui, (GLuint index, GLenum type, GLboolean normalized, GLuint value)) \ + F(void, SecondaryColorP3uiv, (GLenum type, const GLuint *color)) \ + F(void, SecondaryColorP3ui, (GLenum type, GLuint color)) \ + F(void, ColorP4uiv, (GLenum type, const GLuint *color)) \ + F(void, ColorP4ui, (GLenum type, GLuint color)) \ + F(void, ColorP3uiv, (GLenum type, const GLuint *color)) \ + F(void, ColorP3ui, (GLenum type, GLuint color)) \ + F(void, NormalP3uiv, (GLenum type, const GLuint *coords)) \ + F(void, NormalP3ui, (GLenum type, GLuint coords)) \ + F(void, MultiTexCoordP4uiv, (GLenum texture, GLenum type, const GLuint *coords)) \ + F(void, MultiTexCoordP4ui, (GLenum texture, GLenum type, GLuint coords)) \ + F(void, MultiTexCoordP3uiv, (GLenum texture, GLenum type, const GLuint *coords)) \ + F(void, MultiTexCoordP3ui, (GLenum texture, GLenum type, GLuint coords)) \ + F(void, MultiTexCoordP2uiv, (GLenum texture, GLenum type, const GLuint *coords)) \ + F(void, MultiTexCoordP2ui, (GLenum texture, GLenum type, GLuint coords)) \ + F(void, MultiTexCoordP1uiv, (GLenum texture, GLenum type, const GLuint *coords)) \ + F(void, MultiTexCoordP1ui, (GLenum texture, GLenum type, GLuint coords)) \ + F(void, TexCoordP4uiv, (GLenum type, const GLuint *coords)) \ + F(void, TexCoordP4ui, (GLenum type, GLuint coords)) \ + F(void, TexCoordP3uiv, (GLenum type, const GLuint *coords)) \ + F(void, TexCoordP3ui, (GLenum type, GLuint coords)) \ + F(void, TexCoordP2uiv, (GLenum type, const GLuint *coords)) \ + F(void, TexCoordP2ui, (GLenum type, GLuint coords)) \ + F(void, TexCoordP1uiv, (GLenum type, const GLuint *coords)) \ + F(void, TexCoordP1ui, (GLenum type, GLuint coords)) \ + F(void, VertexP4uiv, (GLenum type, const GLuint *value)) \ + F(void, VertexP4ui, (GLenum type, GLuint value)) \ + F(void, VertexP3uiv, (GLenum type, const GLuint *value)) \ + F(void, VertexP3ui, (GLenum type, GLuint value)) \ + F(void, VertexP2uiv, (GLenum type, const GLuint *value)) \ + F(void, VertexP2ui, (GLenum type, GLuint value)) \ + F(void, GetQueryObjectui64v, (GLuint id, GLenum pname, GLuint64 *params)) \ + F(void, GetQueryObjecti64v, (GLuint id, GLenum pname, GLint64 *params)) \ + F(void, QueryCounter, (GLuint id, GLenum target)) \ + F(void, GetSamplerParameterIuiv, (GLuint sampler, GLenum pname, GLuint *params)) \ + F(void, GetSamplerParameterfv, (GLuint sampler, GLenum pname, GLfloat *params)) \ + F(void, GetSamplerParameterIiv, (GLuint sampler, GLenum pname, GLint *params)) \ + F(void, GetSamplerParameteriv, (GLuint sampler, GLenum pname, GLint *params)) \ + F(void, SamplerParameterIuiv, (GLuint sampler, GLenum pname, const GLuint *param)) \ + F(void, SamplerParameterIiv, (GLuint sampler, GLenum pname, const GLint *param)) \ + F(void, SamplerParameterfv, (GLuint sampler, GLenum pname, const GLfloat *param)) \ + F(void, SamplerParameterf, (GLuint sampler, GLenum pname, GLfloat param)) \ + F(void, SamplerParameteriv, (GLuint sampler, GLenum pname, const GLint *param)) \ + F(void, SamplerParameteri, (GLuint sampler, GLenum pname, GLint param)) \ + F(void, BindSampler, (GLuint unit, GLuint sampler)) \ + F(GLboolean, IsSampler, (GLuint sampler)) \ + F(void, DeleteSamplers, (GLsizei count, const GLuint *samplers)) \ + F(void, GenSamplers, (GLsizei count, GLuint *samplers)) \ + F(GLint, GetFragDataIndex, (GLuint program, const GLchar *name)) \ + F(void, BindFragDataLocationIndexed, (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name)) \ + F(void, VertexAttribDivisor, (GLuint index, GLuint divisor)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_3_3_FUNCTIONS); +}; + +class QOpenGLFunctions_4_0_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_0_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_4_0_Core; } + + // OpenGL 4.0 core functions +#define QT_OPENGL_4_0_FUNCTIONS(F) \ + F(void, GetQueryIndexediv, (GLenum target, GLuint index, GLenum pname, GLint *params)) \ + F(void, EndQueryIndexed, (GLenum target, GLuint index)) \ + F(void, BeginQueryIndexed, (GLenum target, GLuint index, GLuint id)) \ + F(void, DrawTransformFeedbackStream, (GLenum mode, GLuint id, GLuint stream)) \ + F(void, DrawTransformFeedback, (GLenum mode, GLuint id)) \ + F(void, ResumeTransformFeedback, ()) \ + F(void, PauseTransformFeedback, ()) \ + F(GLboolean, IsTransformFeedback, (GLuint id)) \ + F(void, GenTransformFeedbacks, (GLsizei n, GLuint *ids)) \ + F(void, DeleteTransformFeedbacks, (GLsizei n, const GLuint *ids)) \ + F(void, BindTransformFeedback, (GLenum target, GLuint id)) \ + F(void, PatchParameterfv, (GLenum pname, const GLfloat *values)) \ + F(void, PatchParameteri, (GLenum pname, GLint value)) \ + F(void, GetProgramStageiv, (GLuint program, GLenum shadertype, GLenum pname, GLint *values)) \ + F(void, GetUniformSubroutineuiv, (GLenum shadertype, GLint location, GLuint *params)) \ + F(void, UniformSubroutinesuiv, (GLenum shadertype, GLsizei count, const GLuint *indices)) \ + F(void, GetActiveSubroutineName, (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name)) \ + F(void, GetActiveSubroutineUniformName, (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name)) \ + F(void, GetActiveSubroutineUniformiv, (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values)) \ + F(GLuint, GetSubroutineIndex, (GLuint program, GLenum shadertype, const GLchar *name)) \ + F(GLint, GetSubroutineUniformLocation, (GLuint program, GLenum shadertype, const GLchar *name)) \ + F(void, GetUniformdv, (GLuint program, GLint location, GLdouble *params)) \ + F(void, UniformMatrix4x3dv, (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, UniformMatrix4x2dv, (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, UniformMatrix3x4dv, (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, UniformMatrix3x2dv, (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, UniformMatrix2x4dv, (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, UniformMatrix2x3dv, (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, UniformMatrix4dv, (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, UniformMatrix3dv, (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, UniformMatrix2dv, (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, Uniform4dv, (GLint location, GLsizei count, const GLdouble *value)) \ + F(void, Uniform3dv, (GLint location, GLsizei count, const GLdouble *value)) \ + F(void, Uniform2dv, (GLint location, GLsizei count, const GLdouble *value)) \ + F(void, Uniform1dv, (GLint location, GLsizei count, const GLdouble *value)) \ + F(void, Uniform4d, (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) \ + F(void, Uniform3d, (GLint location, GLdouble x, GLdouble y, GLdouble z)) \ + F(void, Uniform2d, (GLint location, GLdouble x, GLdouble y)) \ + F(void, Uniform1d, (GLint location, GLdouble x)) \ + F(void, DrawElementsIndirect, (GLenum mode, GLenum type, const GLvoid *indirect)) \ + F(void, DrawArraysIndirect, (GLenum mode, const GLvoid *indirect)) \ + F(void, BlendFuncSeparatei, (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) \ + F(void, BlendFunci, (GLuint buf, GLenum src, GLenum dst)) \ + F(void, BlendEquationSeparatei, (GLuint buf, GLenum modeRGB, GLenum modeAlpha)) \ + F(void, BlendEquationi, (GLuint buf, GLenum mode)) \ + F(void, MinSampleShading, (GLfloat value)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_4_0_FUNCTIONS); +}; + +class QOpenGLFunctions_4_1_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_1_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_4_1_Core; } + + // OpenGL 4.1 core functions +#define QT_OPENGL_4_1_FUNCTIONS(F) \ + F(void, GetDoublei_v, (GLenum target, GLuint index, GLdouble *data)) \ + F(void, GetFloati_v,(GLenum target, GLuint index, GLfloat *data)) \ + F(void, DepthRangeIndexed, (GLuint index, GLdouble n, GLdouble f)) \ + F(void, DepthRangeArrayv, (GLuint first, GLsizei count, const GLdouble *v)) \ + F(void, ScissorIndexedv, (GLuint index, const GLint *v)) \ + F(void, ScissorIndexed, (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)) \ + F(void, ScissorArrayv, (GLuint first, GLsizei count, const GLint *v)) \ + F(void, ViewportIndexedfv, (GLuint index, const GLfloat *v)) \ + F(void, ViewportIndexedf, (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)) \ + F(void, ViewportArrayv, (GLuint first, GLsizei count, const GLfloat *v)) \ + F(void, GetVertexAttribLdv, (GLuint index, GLenum pname, GLdouble *params)) \ + F(void, VertexAttribLPointer, (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) \ + F(void, VertexAttribL4dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttribL3dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttribL2dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttribL1dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttribL4d, (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) \ + F(void, VertexAttribL3d, (GLuint index, GLdouble x, GLdouble y, GLdouble z)) \ + F(void, VertexAttribL2d, (GLuint index, GLdouble x, GLdouble y)) \ + F(void, VertexAttribL1d, (GLuint index, GLdouble x)) \ + F(void, GetProgramPipelineInfoLog, (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \ + F(void, ValidateProgramPipeline, (GLuint pipeline)) \ + F(void, ProgramUniformMatrix4x3dv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, ProgramUniformMatrix3x4dv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, ProgramUniformMatrix4x2dv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, ProgramUniformMatrix2x4dv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, ProgramUniformMatrix3x2dv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, ProgramUniformMatrix2x3dv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, ProgramUniformMatrix4x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix3x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix4x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix2x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix3x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix2x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix4dv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, ProgramUniformMatrix3dv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, ProgramUniformMatrix2dv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)) \ + F(void, ProgramUniformMatrix4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniformMatrix2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \ + F(void, ProgramUniform4uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \ + F(void, ProgramUniform4ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \ + F(void, ProgramUniform4dv, (GLuint program, GLint location, GLsizei count, const GLdouble *value)) \ + F(void, ProgramUniform4d, (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3)) \ + F(void, ProgramUniform4fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \ + F(void, ProgramUniform4f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) \ + F(void, ProgramUniform4iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \ + F(void, ProgramUniform4i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) \ + F(void, ProgramUniform3uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \ + F(void, ProgramUniform3ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)) \ + F(void, ProgramUniform3dv, (GLuint program, GLint location, GLsizei count, const GLdouble *value)) \ + F(void, ProgramUniform3d, (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2)) \ + F(void, ProgramUniform3fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \ + F(void, ProgramUniform3f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) \ + F(void, ProgramUniform3iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \ + F(void, ProgramUniform3i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)) \ + F(void, ProgramUniform2uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \ + F(void, ProgramUniform2ui, (GLuint program, GLint location, GLuint v0, GLuint v1)) \ + F(void, ProgramUniform2dv, (GLuint program, GLint location, GLsizei count, const GLdouble *value)) \ + F(void, ProgramUniform2d, (GLuint program, GLint location, GLdouble v0, GLdouble v1)) \ + F(void, ProgramUniform2fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \ + F(void, ProgramUniform2f, (GLuint program, GLint location, GLfloat v0, GLfloat v1)) \ + F(void, ProgramUniform2iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \ + F(void, ProgramUniform2i, (GLuint program, GLint location, GLint v0, GLint v1)) \ + F(void, ProgramUniform1uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \ + F(void, ProgramUniform1ui, (GLuint program, GLint location, GLuint v0)) \ + F(void, ProgramUniform1dv, (GLuint program, GLint location, GLsizei count, const GLdouble *value)) \ + F(void, ProgramUniform1d, (GLuint program, GLint location, GLdouble v0)) \ + F(void, ProgramUniform1fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \ + F(void, ProgramUniform1f, (GLuint program, GLint location, GLfloat v0)) \ + F(void, ProgramUniform1iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \ + F(void, ProgramUniform1i, (GLuint program, GLint location, GLint v0)) \ + F(void, GetProgramPipelineiv, (GLuint pipeline, GLenum pname, GLint *params)) \ + F(GLboolean, IsProgramPipeline, (GLuint pipeline)) \ + F(void, GenProgramPipelines, (GLsizei n, GLuint *pipelines)) \ + F(void, DeleteProgramPipelines, (GLsizei n, const GLuint *pipelines)) \ + F(void, BindProgramPipeline, (GLuint pipeline)) \ + F(GLuint, CreateShaderProgramv, (GLenum type, GLsizei count, const GLchar* const *strings)) \ + F(void, ActiveShaderProgram, (GLuint pipeline, GLuint program)) \ + F(void, UseProgramStages, (GLuint pipeline, GLbitfield stages, GLuint program)) \ + F(void, ProgramParameteri, (GLuint program, GLenum pname, GLint value)) \ + F(void, ProgramBinary, (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length)) \ + F(void, GetProgramBinary, (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary)) \ + F(void, ClearDepthf, (GLfloat dd)) \ + F(void, DepthRangef, (GLfloat n, GLfloat f)) \ + F(void, GetShaderPrecisionFormat, (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)) \ + F(void, ShaderBinary, (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length)) \ + F(void, ReleaseShaderCompiler, ()) \ + + QT_OPENGL_DECLARE(QT_OPENGL_4_1_FUNCTIONS); +}; + +class QOpenGLFunctions_4_2_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_2_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_4_2_Core; } + + // OpenGL 4.2 core functions +#define QT_OPENGL_4_2_FUNCTIONS(F) \ + F(void, TexStorage3D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \ + F(void, TexStorage2D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \ + F(void, TexStorage1D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)) \ + F(void, MemoryBarrier, (GLbitfield barriers)) \ + F(void, BindImageTexture, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)) \ + F(void, GetActiveAtomicCounterBufferiv, (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params)) \ + F(void, GetInternalformativ, (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)) \ + F(void, DrawTransformFeedbackStreamInstanced, (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount)) \ + F(void, DrawTransformFeedbackInstanced, (GLenum mode, GLuint id, GLsizei instancecount)) \ + F(void, DrawElementsInstancedBaseVertexBaseInstance, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance)) \ + F(void, DrawElementsInstancedBaseInstance, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance)) \ + F(void, DrawArraysInstancedBaseInstance, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_4_2_FUNCTIONS); +}; + +class QOpenGLFunctions_4_3_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_3_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_4_3_Core; } + + // OpenGL 4.3 core functions +#define QT_OPENGL_4_3_FUNCTIONS(F) \ + F(void, TexStorage3DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)) \ + F(void, TexStorage2DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \ + F(void, TexBufferRange, (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)) \ + F(void, ShaderStorageBlockBinding, (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding)) \ + F(GLint, GetProgramResourceLocationIndex, (GLuint program, GLenum programInterface, const GLchar *name)) \ + F(GLint, GetProgramResourceLocation, (GLuint program, GLenum programInterface, const GLchar *name)) \ + F(void, GetProgramResourceiv, (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params)) \ + F(void, GetProgramResourceName, (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)) \ + F(GLuint, GetProgramResourceIndex, (GLuint program, GLenum programInterface, const GLchar *name)) \ + F(void, GetProgramInterfaceiv, (GLuint program, GLenum programInterface, GLenum pname, GLint *params)) \ + F(void, MultiDrawElementsIndirect, (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride)) \ + F(void, MultiDrawArraysIndirect, (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride)) \ + F(void, InvalidateSubFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, InvalidateFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments)) \ + F(void, InvalidateBufferData, (GLuint buffer)) \ + F(void, InvalidateBufferSubData, (GLuint buffer, GLintptr offset, GLsizeiptr length)) \ + F(void, InvalidateTexImage, (GLuint texture, GLint level)) \ + F(void, InvalidateTexSubImage, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)) \ + F(void, GetInternalformati64v, (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params)) \ + F(void, GetFramebufferParameteriv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, FramebufferParameteri, (GLenum target, GLenum pname, GLint param)) \ + F(void, VertexBindingDivisor, (GLuint bindingindex, GLuint divisor)) \ + F(void, VertexAttribBinding, (GLuint attribindex, GLuint bindingindex)) \ + F(void, VertexAttribLFormat, (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) \ + F(void, VertexAttribIFormat, (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) \ + F(void, VertexAttribFormat, (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)) \ + F(void, BindVertexBuffer, (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)) \ + F(void, TextureView, (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)) \ + F(void, 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)) \ + F(void, DispatchComputeIndirect, (GLintptr indirect)) \ + F(void, DispatchCompute, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)) \ + F(void, ClearBufferSubData, (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)) \ + F(void, ClearBufferData, (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data)) \ + F(void, GetObjectPtrLabel, (const GLvoid *ptr, GLsizei bufSize, GLsizei *length, GLchar *label)) \ + F(void, ObjectPtrLabel, (const GLvoid *ptr, GLsizei length, const GLchar *label)) \ + F(void, GetObjectLabel, (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label)) \ + F(void, ObjectLabel, (GLenum identifier, GLuint name, GLsizei length, const GLchar *label)) \ + F(void, PopDebugGroup, ()) \ + F(void, PushDebugGroup, (GLenum source, GLuint id, GLsizei length, const GLchar *message)) \ + F(GLuint, GetDebugMessageLog, (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog)) \ + F(void, DebugMessageCallback, (GLDEBUGPROC callback, const GLvoid *userParam)) \ + F(void, DebugMessageInsert, (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf)) \ + F(void, DebugMessageControl, (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_4_3_FUNCTIONS); +}; + +class QOpenGLFunctions_4_4_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_4_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_4_4_Core; } + + // OpenGL 4.4 core functions +#define QT_OPENGL_4_4_FUNCTIONS(F) \ + F(void, BindVertexBuffers, (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)) \ + F(void, BindImageTextures, (GLuint first, GLsizei count, const GLuint *textures)) \ + F(void, BindSamplers, (GLuint first, GLsizei count, const GLuint *samplers)) \ + F(void, BindTextures, (GLuint first, GLsizei count, const GLuint *textures)) \ + F(void, BindBuffersRange, (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes)) \ + F(void, BindBuffersBase, (GLenum target, GLuint first, GLsizei count, const GLuint *buffers)) \ + F(void, ClearTexSubImage, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)) \ + F(void, ClearTexImage, (GLuint texture, GLint level, GLenum format, GLenum type, const void *data)) \ + F(void, BufferStorage, (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_4_4_FUNCTIONS); +}; + +class QOpenGLFunctions_4_5_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_5_CoreBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_4_5_Core; } + + // OpenGL 4.5 core functions +#define QT_OPENGL_4_5_FUNCTIONS(F) \ + F(void, TextureBarrier, ()) \ + F(void, ReadnPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)) \ + F(void, GetnUniformuiv, (GLuint program, GLint location, GLsizei bufSize, GLuint *params)) \ + F(void, GetnUniformiv, (GLuint program, GLint location, GLsizei bufSize, GLint *params)) \ + F(void, GetnUniformfv, (GLuint program, GLint location, GLsizei bufSize, GLfloat *params)) \ + F(void, GetnUniformdv, (GLuint program, GLint location, GLsizei bufSize, GLdouble *params)) \ + F(void, GetnTexImage, (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)) \ + F(void, GetnCompressedTexImage, (GLenum target, GLint lod, GLsizei bufSize, void *pixels)) \ + F(GLenum, GetGraphicsResetStatus, ()) \ + F(void, GetCompressedTextureSubImage, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels)) \ + F(void, GetTextureSubImage, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels)) \ + F(void, MemoryBarrierByRegion, (GLbitfield barriers)) \ + F(void, CreateQueries, (GLenum target, GLsizei n, GLuint *ids)) \ + F(void, CreateProgramPipelines, (GLsizei n, GLuint *pipelines)) \ + F(void, CreateSamplers, (GLsizei n, GLuint *samplers)) \ + F(void, GetVertexArrayIndexed64iv, (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param)) \ + F(void, GetVertexArrayIndexediv, (GLuint vaobj, GLuint index, GLenum pname, GLint *param)) \ + F(void, GetVertexArrayiv, (GLuint vaobj, GLenum pname, GLint *param)) \ + F(void, VertexArrayBindingDivisor, (GLuint vaobj, GLuint bindingindex, GLuint divisor)) \ + F(void, VertexArrayAttribLFormat, (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) \ + F(void, VertexArrayAttribIFormat, (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) \ + F(void, VertexArrayAttribFormat, (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)) \ + F(void, VertexArrayAttribBinding, (GLuint vaobj, GLuint attribindex, GLuint bindingindex)) \ + F(void, VertexArrayVertexBuffers, (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)) \ + F(void, VertexArrayVertexBuffer, (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)) \ + F(void, VertexArrayElementBuffer, (GLuint vaobj, GLuint buffer)) \ + F(void, EnableVertexArrayAttrib, (GLuint vaobj, GLuint index)) \ + F(void, DisableVertexArrayAttrib, (GLuint vaobj, GLuint index)) \ + F(void, CreateVertexArrays, (GLsizei n, GLuint *arrays)) \ + F(void, GetTextureParameteriv, (GLuint texture, GLenum pname, GLint *params)) \ + F(void, GetTextureParameterIuiv, (GLuint texture, GLenum pname, GLuint *params)) \ + F(void, GetTextureParameterIiv, (GLuint texture, GLenum pname, GLint *params)) \ + F(void, GetTextureParameterfv, (GLuint texture, GLenum pname, GLfloat *params)) \ + F(void, GetTextureLevelParameteriv, (GLuint texture, GLint level, GLenum pname, GLint *params)) \ + F(void, GetTextureLevelParameterfv, (GLuint texture, GLint level, GLenum pname, GLfloat *params)) \ + F(void, GetCompressedTextureImage, (GLuint texture, GLint level, GLsizei bufSize, void *pixels)) \ + F(void, GetTextureImage, (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)) \ + F(void, BindTextureUnit, (GLuint unit, GLuint texture)) \ + F(void, GenerateTextureMipmap, (GLuint texture)) \ + F(void, TextureParameteriv, (GLuint texture, GLenum pname, const GLint *param)) \ + F(void, TextureParameterIuiv, (GLuint texture, GLenum pname, const GLuint *params)) \ + F(void, TextureParameterIiv, (GLuint texture, GLenum pname, const GLint *params)) \ + F(void, TextureParameteri, (GLuint texture, GLenum pname, GLint param)) \ + F(void, TextureParameterfv, (GLuint texture, GLenum pname, const GLfloat *param)) \ + F(void, TextureParameterf, (GLuint texture, GLenum pname, GLfloat param)) \ + F(void, CopyTextureSubImage3D, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, CopyTextureSubImage2D, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, CopyTextureSubImage1D, (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)) \ + F(void, CompressedTextureSubImage3D, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) \ + F(void, CompressedTextureSubImage2D, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)) \ + F(void, CompressedTextureSubImage1D, (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)) \ + F(void, TextureSubImage3D, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) \ + F(void, TextureSubImage2D, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)) \ + F(void, TextureSubImage1D, (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)) \ + F(void, TextureStorage3DMultisample, (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)) \ + F(void, TextureStorage2DMultisample, (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \ + F(void, TextureStorage3D, (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \ + F(void, TextureStorage2D, (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \ + F(void, TextureStorage1D, (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width)) \ + F(void, TextureBufferRange, (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizei size)) \ + F(void, TextureBuffer, (GLuint texture, GLenum internalformat, GLuint buffer)) \ + F(void, CreateTextures, (GLenum target, GLsizei n, GLuint *textures)) \ + F(void, GetNamedRenderbufferParameteriv, (GLuint renderbuffer, GLenum pname, GLint *params)) \ + F(void, NamedRenderbufferStorageMultisample, (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \ + F(void, NamedRenderbufferStorage, (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)) \ + F(void, CreateRenderbuffers, (GLsizei n, GLuint *renderbuffers)) \ + F(void, GetNamedFramebufferAttachmentParameteriv, (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params)) \ + F(void, GetNamedFramebufferParameteriv, (GLuint framebuffer, GLenum pname, GLint *param)) \ + F(GLenum, CheckNamedFramebufferStatus, (GLuint framebuffer, GLenum target)) \ + F(void, BlitNamedFramebuffer, (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) \ + F(void, ClearNamedFramebufferfi, (GLuint framebuffer, GLenum buffer, GLfloat depth, GLint stencil)) \ + F(void, ClearNamedFramebufferfv, (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)) \ + F(void, ClearNamedFramebufferuiv, (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value)) \ + F(void, ClearNamedFramebufferiv, (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value)) \ + F(void, InvalidateNamedFramebufferSubData, (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, InvalidateNamedFramebufferData, (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments)) \ + F(void, NamedFramebufferReadBuffer, (GLuint framebuffer, GLenum src)) \ + F(void, NamedFramebufferDrawBuffers, (GLuint framebuffer, GLsizei n, const GLenum *bufs)) \ + F(void, NamedFramebufferDrawBuffer, (GLuint framebuffer, GLenum buf)) \ + F(void, NamedFramebufferTextureLayer, (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer)) \ + F(void, NamedFramebufferTexture, (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)) \ + F(void, NamedFramebufferParameteri, (GLuint framebuffer, GLenum pname, GLint param)) \ + F(void, NamedFramebufferRenderbuffer, (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) \ + F(void, CreateFramebuffers, (GLsizei n, GLuint *framebuffers)) \ + F(void, GetNamedBufferSubData, (GLuint buffer, GLintptr offset, GLsizei size, void *data)) \ + F(void, GetNamedBufferPointerv, (GLuint buffer, GLenum pname, GLvoid* *params)) \ + F(void, GetNamedBufferParameteri64v, (GLuint buffer, GLenum pname, GLint64 *params)) \ + F(void, GetNamedBufferParameteriv, (GLuint buffer, GLenum pname, GLint *params)) \ + F(void, FlushMappedNamedBufferRange, (GLuint buffer, GLintptr offset, GLsizei length)) \ + F(GLboolean, UnmapNamedBuffer, (GLuint buffer)) \ + F(GLvoid *, MapNamedBufferRange, (GLuint buffer, GLintptr offset, GLsizei length, GLbitfield access)) \ + F(GLvoid *, MapNamedBuffer, (GLuint buffer, GLenum access)) \ + F(void, ClearNamedBufferSubData, (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizei size, GLenum format, GLenum type, const void *data)) \ + F(void, ClearNamedBufferData, (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)) \ + F(void, CopyNamedBufferSubData, (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizei size)) \ + F(void, NamedBufferSubData, (GLuint buffer, GLintptr offset, GLsizei size, const void *data)) \ + F(void, NamedBufferData, (GLuint buffer, GLsizei size, const void *data, GLenum usage)) \ + F(void, NamedBufferStorage, (GLuint buffer, GLsizei size, const void *data, GLbitfield flags)) \ + F(void, CreateBuffers, (GLsizei n, GLuint *buffers)) \ + F(void, GetTransformFeedbacki64_v,(GLuint xfb, GLenum pname, GLuint index, GLint64 *param)) \ + F(void, GetTransformFeedbacki_v,(GLuint xfb, GLenum pname, GLuint index, GLint *param)) \ + F(void, GetTransformFeedbackiv, (GLuint xfb, GLenum pname, GLint *param)) \ + F(void, TransformFeedbackBufferRange, (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size)) \ + F(void, TransformFeedbackBufferBase, (GLuint xfb, GLuint index, GLuint buffer)) \ + F(void, CreateTransformFeedbacks, (GLsizei n, GLuint *ids)) \ + F(void, ClipControl, (GLenum origin, GLenum depth)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_4_5_FUNCTIONS); +}; + +class QOpenGLFunctions_1_0_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_0_DeprecatedBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_0_Deprecated; } + + // OpenGL 1.0 deprecated functions +#define QT_OPENGL_1_0_DEPRECATED_FUNCTIONS(F) \ + F(void, Translatef, (GLfloat x, GLfloat y, GLfloat z)) \ + F(void, Translated, (GLdouble x, GLdouble y, GLdouble z)) \ + F(void, Scalef, (GLfloat x, GLfloat y, GLfloat z)) \ + F(void, Scaled, (GLdouble x, GLdouble y, GLdouble z)) \ + F(void, Rotatef, (GLfloat angle, GLfloat x, GLfloat y, GLfloat z)) \ + F(void, Rotated, (GLdouble angle, GLdouble x, GLdouble y, GLdouble z)) \ + F(void, PushMatrix, ()) \ + F(void, PopMatrix, ()) \ + F(void, Ortho, (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)) \ + F(void, MultMatrixd, (const GLdouble *m)) \ + F(void, MultMatrixf, (const GLfloat *m)) \ + F(void, MatrixMode, (GLenum mode)) \ + F(void, LoadMatrixd, (const GLdouble *m)) \ + F(void, LoadMatrixf, (const GLfloat *m)) \ + F(void, LoadIdentity, ()) \ + F(void, Frustum, (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)) \ + F(GLboolean, IsList, (GLuint list)) \ + F(void, GetTexGeniv, (GLenum coord, GLenum pname, GLint *params)) \ + F(void, GetTexGenfv, (GLenum coord, GLenum pname, GLfloat *params)) \ + F(void, GetTexGendv, (GLenum coord, GLenum pname, GLdouble *params)) \ + F(void, GetTexEnviv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, GetTexEnvfv, (GLenum target, GLenum pname, GLfloat *params)) \ + F(void, GetPolygonStipple, (GLubyte *mask)) \ + F(void, GetPixelMapusv, (GLenum map, GLushort *values)) \ + F(void, GetPixelMapuiv, (GLenum map, GLuint *values)) \ + F(void, GetPixelMapfv, (GLenum map, GLfloat *values)) \ + F(void, GetMaterialiv, (GLenum face, GLenum pname, GLint *params)) \ + F(void, GetMaterialfv, (GLenum face, GLenum pname, GLfloat *params)) \ + F(void, GetMapiv, (GLenum target, GLenum query, GLint *v)) \ + F(void, GetMapfv, (GLenum target, GLenum query, GLfloat *v)) \ + F(void, GetMapdv, (GLenum target, GLenum query, GLdouble *v)) \ + F(void, GetLightiv, (GLenum light, GLenum pname, GLint *params)) \ + F(void, GetLightfv, (GLenum light, GLenum pname, GLfloat *params)) \ + F(void, GetClipPlane, (GLenum plane, GLdouble *equation)) \ + F(void, DrawPixels, (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)) \ + F(void, CopyPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)) \ + F(void, PixelMapusv, (GLenum map, GLsizei mapsize, const GLushort *values)) \ + F(void, PixelMapuiv, (GLenum map, GLsizei mapsize, const GLuint *values)) \ + F(void, PixelMapfv, (GLenum map, GLsizei mapsize, const GLfloat *values)) \ + F(void, PixelTransferi, (GLenum pname, GLint param)) \ + F(void, PixelTransferf, (GLenum pname, GLfloat param)) \ + F(void, PixelZoom, (GLfloat xfactor, GLfloat yfactor)) \ + F(void, AlphaFunc, (GLenum func, GLfloat ref)) \ + F(void, EvalPoint2, (GLint i, GLint j)) \ + F(void, EvalMesh2, (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)) \ + F(void, EvalPoint1, (GLint i)) \ + F(void, EvalMesh1, (GLenum mode, GLint i1, GLint i2)) \ + F(void, EvalCoord2fv, (const GLfloat *u)) \ + F(void, EvalCoord2f, (GLfloat u, GLfloat v)) \ + F(void, EvalCoord2dv, (const GLdouble *u)) \ + F(void, EvalCoord2d, (GLdouble u, GLdouble v)) \ + F(void, EvalCoord1fv, (const GLfloat *u)) \ + F(void, EvalCoord1f, (GLfloat u)) \ + F(void, EvalCoord1dv, (const GLdouble *u)) \ + F(void, EvalCoord1d, (GLdouble u)) \ + F(void, MapGrid2f, (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)) \ + F(void, MapGrid2d, (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)) \ + F(void, MapGrid1f, (GLint un, GLfloat u1, GLfloat u2)) \ + F(void, MapGrid1d, (GLint un, GLdouble u1, GLdouble u2)) \ + F(void, Map2f, (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)) \ + F(void, Map2d, (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)) \ + F(void, Map1f, (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)) \ + F(void, Map1d, (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)) \ + F(void, PushAttrib, (GLbitfield mask)) \ + F(void, PopAttrib, ()) \ + F(void, Accum, (GLenum op, GLfloat value)) \ + F(void, IndexMask, (GLuint mask)) \ + F(void, ClearIndex, (GLfloat c)) \ + F(void, ClearAccum, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) \ + F(void, PushName, (GLuint name)) \ + F(void, PopName, ()) \ + F(void, PassThrough, (GLfloat token)) \ + F(void, LoadName, (GLuint name)) \ + F(void, InitNames, ()) \ + F(GLint, RenderMode, (GLenum mode)) \ + F(void, SelectBuffer, (GLsizei size, GLuint *buffer)) \ + F(void, FeedbackBuffer, (GLsizei size, GLenum type, GLfloat *buffer)) \ + F(void, TexGeniv, (GLenum coord, GLenum pname, const GLint *params)) \ + F(void, TexGeni, (GLenum coord, GLenum pname, GLint param)) \ + F(void, TexGenfv, (GLenum coord, GLenum pname, const GLfloat *params)) \ + F(void, TexGenf, (GLenum coord, GLenum pname, GLfloat param)) \ + F(void, TexGendv, (GLenum coord, GLenum pname, const GLdouble *params)) \ + F(void, TexGend, (GLenum coord, GLenum pname, GLdouble param)) \ + F(void, TexEnviv, (GLenum target, GLenum pname, const GLint *params)) \ + F(void, TexEnvi, (GLenum target, GLenum pname, GLint param)) \ + F(void, TexEnvfv, (GLenum target, GLenum pname, const GLfloat *params)) \ + F(void, TexEnvf, (GLenum target, GLenum pname, GLfloat param)) \ + F(void, ShadeModel, (GLenum mode)) \ + F(void, PolygonStipple, (const GLubyte *mask)) \ + F(void, Materialiv, (GLenum face, GLenum pname, const GLint *params)) \ + F(void, Materiali, (GLenum face, GLenum pname, GLint param)) \ + F(void, Materialfv, (GLenum face, GLenum pname, const GLfloat *params)) \ + F(void, Materialf, (GLenum face, GLenum pname, GLfloat param)) \ + F(void, LineStipple, (GLint factor, GLushort pattern)) \ + F(void, LightModeliv, (GLenum pname, const GLint *params)) \ + F(void, LightModeli, (GLenum pname, GLint param)) \ + F(void, LightModelfv, (GLenum pname, const GLfloat *params)) \ + F(void, LightModelf, (GLenum pname, GLfloat param)) \ + F(void, Lightiv, (GLenum light, GLenum pname, const GLint *params)) \ + F(void, Lighti, (GLenum light, GLenum pname, GLint param)) \ + F(void, Lightfv, (GLenum light, GLenum pname, const GLfloat *params)) \ + F(void, Lightf, (GLenum light, GLenum pname, GLfloat param)) \ + F(void, Fogiv, (GLenum pname, const GLint *params)) \ + F(void, Fogi, (GLenum pname, GLint param)) \ + F(void, Fogfv, (GLenum pname, const GLfloat *params)) \ + F(void, Fogf, (GLenum pname, GLfloat param)) \ + F(void, ColorMaterial, (GLenum face, GLenum mode)) \ + F(void, ClipPlane, (GLenum plane, const GLdouble *equation)) \ + F(void, Vertex4sv, (const GLshort *v)) \ + F(void, Vertex4s, (GLshort x, GLshort y, GLshort z, GLshort w)) \ + F(void, Vertex4iv, (const GLint *v)) \ + F(void, Vertex4i, (GLint x, GLint y, GLint z, GLint w)) \ + F(void, Vertex4fv, (const GLfloat *v)) \ + F(void, Vertex4f, (GLfloat x, GLfloat y, GLfloat z, GLfloat w)) \ + F(void, Vertex4dv, (const GLdouble *v)) \ + F(void, Vertex4d, (GLdouble x, GLdouble y, GLdouble z, GLdouble w)) \ + F(void, Vertex3sv, (const GLshort *v)) \ + F(void, Vertex3s, (GLshort x, GLshort y, GLshort z)) \ + F(void, Vertex3iv, (const GLint *v)) \ + F(void, Vertex3i, (GLint x, GLint y, GLint z)) \ + F(void, Vertex3fv, (const GLfloat *v)) \ + F(void, Vertex3f, (GLfloat x, GLfloat y, GLfloat z)) \ + F(void, Vertex3dv, (const GLdouble *v)) \ + F(void, Vertex3d, (GLdouble x, GLdouble y, GLdouble z)) \ + F(void, Vertex2sv, (const GLshort *v)) \ + F(void, Vertex2s, (GLshort x, GLshort y)) \ + F(void, Vertex2iv, (const GLint *v)) \ + F(void, Vertex2i, (GLint x, GLint y)) \ + F(void, Vertex2fv, (const GLfloat *v)) \ + F(void, Vertex2f, (GLfloat x, GLfloat y)) \ + F(void, Vertex2dv, (const GLdouble *v)) \ + F(void, Vertex2d, (GLdouble x, GLdouble y)) \ + F(void, TexCoord4sv, (const GLshort *v)) \ + F(void, TexCoord4s, (GLshort s, GLshort t, GLshort r, GLshort q)) \ + F(void, TexCoord4iv, (const GLint *v)) \ + F(void, TexCoord4i, (GLint s, GLint t, GLint r, GLint q)) \ + F(void, TexCoord4fv, (const GLfloat *v)) \ + F(void, TexCoord4f, (GLfloat s, GLfloat t, GLfloat r, GLfloat q)) \ + F(void, TexCoord4dv, (const GLdouble *v)) \ + F(void, TexCoord4d, (GLdouble s, GLdouble t, GLdouble r, GLdouble q)) \ + F(void, TexCoord3sv, (const GLshort *v)) \ + F(void, TexCoord3s, (GLshort s, GLshort t, GLshort r)) \ + F(void, TexCoord3iv, (const GLint *v)) \ + F(void, TexCoord3i, (GLint s, GLint t, GLint r)) \ + F(void, TexCoord3fv, (const GLfloat *v)) \ + F(void, TexCoord3f, (GLfloat s, GLfloat t, GLfloat r)) \ + F(void, TexCoord3dv, (const GLdouble *v)) \ + F(void, TexCoord3d, (GLdouble s, GLdouble t, GLdouble r)) \ + F(void, TexCoord2sv, (const GLshort *v)) \ + F(void, TexCoord2s, (GLshort s, GLshort t)) \ + F(void, TexCoord2iv, (const GLint *v)) \ + F(void, TexCoord2i, (GLint s, GLint t)) \ + F(void, TexCoord2fv, (const GLfloat *v)) \ + F(void, TexCoord2f, (GLfloat s, GLfloat t)) \ + F(void, TexCoord2dv, (const GLdouble *v)) \ + F(void, TexCoord2d, (GLdouble s, GLdouble t)) \ + F(void, TexCoord1sv, (const GLshort *v)) \ + F(void, TexCoord1s, (GLshort s)) \ + F(void, TexCoord1iv, (const GLint *v)) \ + F(void, TexCoord1i, (GLint s)) \ + F(void, TexCoord1fv, (const GLfloat *v)) \ + F(void, TexCoord1f, (GLfloat s)) \ + F(void, TexCoord1dv, (const GLdouble *v)) \ + F(void, TexCoord1d, (GLdouble s)) \ + F(void, Rectsv, (const GLshort *v1, const GLshort *v2)) \ + F(void, Rects, (GLshort x1, GLshort y1, GLshort x2, GLshort y2)) \ + F(void, Rectiv, (const GLint *v1, const GLint *v2)) \ + F(void, Recti, (GLint x1, GLint y1, GLint x2, GLint y2)) \ + F(void, Rectfv, (const GLfloat *v1, const GLfloat *v2)) \ + F(void, Rectf, (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)) \ + F(void, Rectdv, (const GLdouble *v1, const GLdouble *v2)) \ + F(void, Rectd, (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)) \ + F(void, RasterPos4sv, (const GLshort *v)) \ + F(void, RasterPos4s, (GLshort x, GLshort y, GLshort z, GLshort w)) \ + F(void, RasterPos4iv, (const GLint *v)) \ + F(void, RasterPos4i, (GLint x, GLint y, GLint z, GLint w)) \ + F(void, RasterPos4fv, (const GLfloat *v)) \ + F(void, RasterPos4f, (GLfloat x, GLfloat y, GLfloat z, GLfloat w)) \ + F(void, RasterPos4dv, (const GLdouble *v)) \ + F(void, RasterPos4d, (GLdouble x, GLdouble y, GLdouble z, GLdouble w)) \ + F(void, RasterPos3sv, (const GLshort *v)) \ + F(void, RasterPos3s, (GLshort x, GLshort y, GLshort z)) \ + F(void, RasterPos3iv, (const GLint *v)) \ + F(void, RasterPos3i, (GLint x, GLint y, GLint z)) \ + F(void, RasterPos3fv, (const GLfloat *v)) \ + F(void, RasterPos3f, (GLfloat x, GLfloat y, GLfloat z)) \ + F(void, RasterPos3dv, (const GLdouble *v)) \ + F(void, RasterPos3d, (GLdouble x, GLdouble y, GLdouble z)) \ + F(void, RasterPos2sv, (const GLshort *v)) \ + F(void, RasterPos2s, (GLshort x, GLshort y)) \ + F(void, RasterPos2iv, (const GLint *v)) \ + F(void, RasterPos2i, (GLint x, GLint y)) \ + F(void, RasterPos2fv, (const GLfloat *v)) \ + F(void, RasterPos2f, (GLfloat x, GLfloat y)) \ + F(void, RasterPos2dv, (const GLdouble *v)) \ + F(void, RasterPos2d, (GLdouble x, GLdouble y)) \ + F(void, Normal3sv, (const GLshort *v)) \ + F(void, Normal3s, (GLshort nx, GLshort ny, GLshort nz)) \ + F(void, Normal3iv, (const GLint *v)) \ + F(void, Normal3i, (GLint nx, GLint ny, GLint nz)) \ + F(void, Normal3fv, (const GLfloat *v)) \ + F(void, Normal3f, (GLfloat nx, GLfloat ny, GLfloat nz)) \ + F(void, Normal3dv, (const GLdouble *v)) \ + F(void, Normal3d, (GLdouble nx, GLdouble ny, GLdouble nz)) \ + F(void, Normal3bv, (const GLbyte *v)) \ + F(void, Normal3b, (GLbyte nx, GLbyte ny, GLbyte nz)) \ + F(void, Indexsv, (const GLshort *c)) \ + F(void, Indexs, (GLshort c)) \ + F(void, Indexiv, (const GLint *c)) \ + F(void, Indexi, (GLint c)) \ + F(void, Indexfv, (const GLfloat *c)) \ + F(void, Indexf, (GLfloat c)) \ + F(void, Indexdv, (const GLdouble *c)) \ + F(void, Indexd, (GLdouble c)) \ + F(void, End, ()) \ + F(void, EdgeFlagv, (const GLboolean *flag)) \ + F(void, EdgeFlag, (GLboolean flag)) \ + F(void, Color4usv, (const GLushort *v)) \ + F(void, Color4us, (GLushort red, GLushort green, GLushort blue, GLushort alpha)) \ + F(void, Color4uiv, (const GLuint *v)) \ + F(void, Color4ui, (GLuint red, GLuint green, GLuint blue, GLuint alpha)) \ + F(void, Color4ubv, (const GLubyte *v)) \ + F(void, Color4ub, (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)) \ + F(void, Color4sv, (const GLshort *v)) \ + F(void, Color4s, (GLshort red, GLshort green, GLshort blue, GLshort alpha)) \ + F(void, Color4iv, (const GLint *v)) \ + F(void, Color4i, (GLint red, GLint green, GLint blue, GLint alpha)) \ + F(void, Color4fv, (const GLfloat *v)) \ + F(void, Color4f, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) \ + F(void, Color4dv, (const GLdouble *v)) \ + F(void, Color4d, (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)) \ + F(void, Color4bv, (const GLbyte *v)) \ + F(void, Color4b, (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)) \ + F(void, Color3usv, (const GLushort *v)) \ + F(void, Color3us, (GLushort red, GLushort green, GLushort blue)) \ + F(void, Color3uiv, (const GLuint *v)) \ + F(void, Color3ui, (GLuint red, GLuint green, GLuint blue)) \ + F(void, Color3ubv, (const GLubyte *v)) \ + F(void, Color3ub, (GLubyte red, GLubyte green, GLubyte blue)) \ + F(void, Color3sv, (const GLshort *v)) \ + F(void, Color3s, (GLshort red, GLshort green, GLshort blue)) \ + F(void, Color3iv, (const GLint *v)) \ + F(void, Color3i, (GLint red, GLint green, GLint blue)) \ + F(void, Color3fv, (const GLfloat *v)) \ + F(void, Color3f, (GLfloat red, GLfloat green, GLfloat blue)) \ + F(void, Color3dv, (const GLdouble *v)) \ + F(void, Color3d, (GLdouble red, GLdouble green, GLdouble blue)) \ + F(void, Color3bv, (const GLbyte *v)) \ + F(void, Color3b, (GLbyte red, GLbyte green, GLbyte blue)) \ + F(void, Bitmap, (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)) \ + F(void, Begin, (GLenum mode)) \ + F(void, ListBase, (GLuint base)) \ + F(GLuint, GenLists, (GLsizei range)) \ + F(void, DeleteLists, (GLuint list, GLsizei range)) \ + F(void, CallLists, (GLsizei n, GLenum type, const GLvoid *lists)) \ + F(void, CallList, (GLuint list)) \ + F(void, EndList, ()) \ + F(void, NewList, (GLuint list, GLenum mode)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_0_DEPRECATED_FUNCTIONS); +}; + +class QOpenGLFunctions_1_1_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_1_DeprecatedBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_1_Deprecated; } + + // OpenGL 1.1 deprecated functions +#define QT_OPENGL_1_1_DEPRECATED_FUNCTIONS(F) \ + F(void, PushClientAttrib, (GLbitfield mask)) \ + F(void, PopClientAttrib, ()) \ + F(void, PrioritizeTextures, (GLsizei n, const GLuint *textures, const GLfloat *priorities)) \ + F(GLboolean, AreTexturesResident, (GLsizei n, const GLuint *textures, GLboolean *residences)) \ + F(void, VertexPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) \ + F(void, TexCoordPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) \ + F(void, NormalPointer, (GLenum type, GLsizei stride, const GLvoid *pointer)) \ + F(void, InterleavedArrays, (GLenum format, GLsizei stride, const GLvoid *pointer)) \ + F(void, IndexPointer, (GLenum type, GLsizei stride, const GLvoid *pointer)) \ + F(void, EnableClientState, (GLenum array)) \ + F(void, EdgeFlagPointer, (GLsizei stride, const GLvoid *pointer)) \ + F(void, DisableClientState, (GLenum array)) \ + F(void, ColorPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) \ + F(void, ArrayElement, (GLint i)) \ + F(void, Indexubv, (const GLubyte *c)) \ + F(void, Indexub, (GLubyte c)) \ + F(void, GetPointerv, (GLenum pname, GLvoid* *params)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_1_DEPRECATED_FUNCTIONS); +}; + +class QOpenGLFunctions_1_2_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_2_DeprecatedBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_2_Deprecated; } + + // OpenGL 1.2 deprecated functions +#define QT_OPENGL_1_2_DEPRECATED_FUNCTIONS(F) \ + F(void, ColorTableParameterfv, (GLenum target, GLenum pname, const GLfloat *params)) \ + F(void, ColorTableParameteriv, (GLenum target, GLenum pname, const GLint *params)) \ + F(void, CopyColorTable, (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)) \ + F(void, GetColorTable, (GLenum target, GLenum format, GLenum type, GLvoid *table)) \ + F(void, GetColorTableParameterfv, (GLenum target, GLenum pname, GLfloat *params)) \ + F(void, GetColorTableParameteriv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, ColorSubTable, (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data)) \ + F(void, CopyColorSubTable, (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)) \ + F(void, ConvolutionFilter1D, (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image)) \ + F(void, ConvolutionFilter2D, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image)) \ + F(void, ConvolutionParameterf, (GLenum target, GLenum pname, GLfloat params)) \ + F(void, ConvolutionParameterfv, (GLenum target, GLenum pname, const GLfloat *params)) \ + F(void, ConvolutionParameteri, (GLenum target, GLenum pname, GLint params)) \ + F(void, ConvolutionParameteriv, (GLenum target, GLenum pname, const GLint *params)) \ + F(void, CopyConvolutionFilter1D, (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)) \ + F(void, CopyConvolutionFilter2D, (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)) \ + F(void, GetConvolutionFilter, (GLenum target, GLenum format, GLenum type, GLvoid *image)) \ + F(void, GetConvolutionParameterfv, (GLenum target, GLenum pname, GLfloat *params)) \ + F(void, GetConvolutionParameteriv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, GetSeparableFilter, (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span)) \ + F(void, SeparableFilter2D, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column)) \ + F(void, GetHistogram, (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values)) \ + F(void, GetHistogramParameterfv, (GLenum target, GLenum pname, GLfloat *params)) \ + F(void, GetHistogramParameteriv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, GetMinmax, (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values)) \ + F(void, GetMinmaxParameterfv, (GLenum target, GLenum pname, GLfloat *params)) \ + F(void, GetMinmaxParameteriv, (GLenum target, GLenum pname, GLint *params)) \ + F(void, Histogram, (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)) \ + F(void, Minmax, (GLenum target, GLenum internalformat, GLboolean sink)) \ + F(void, ResetHistogram, (GLenum target)) \ + F(void, ResetMinmax, (GLenum target)) \ + F(void, ColorTable, (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_2_DEPRECATED_FUNCTIONS); +}; + +class QOpenGLFunctions_1_3_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_3_DeprecatedBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_3_Deprecated; } + + // OpenGL 1.3 deprecated functions +#define QT_OPENGL_1_3_DEPRECATED_FUNCTIONS(F) \ + F(void, MultTransposeMatrixd, (const GLdouble *m)) \ + F(void, MultTransposeMatrixf, (const GLfloat *m)) \ + F(void, LoadTransposeMatrixd, (const GLdouble *m)) \ + F(void, LoadTransposeMatrixf, (const GLfloat *m)) \ + F(void, MultiTexCoord4sv, (GLenum target, const GLshort *v)) \ + F(void, MultiTexCoord4s, (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)) \ + F(void, MultiTexCoord4iv, (GLenum target, const GLint *v)) \ + F(void, MultiTexCoord4i, (GLenum target, GLint s, GLint t, GLint r, GLint q)) \ + F(void, MultiTexCoord4fv, (GLenum target, const GLfloat *v)) \ + F(void, MultiTexCoord4f, (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)) \ + F(void, MultiTexCoord4dv, (GLenum target, const GLdouble *v)) \ + F(void, MultiTexCoord4d, (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)) \ + F(void, MultiTexCoord3sv, (GLenum target, const GLshort *v)) \ + F(void, MultiTexCoord3s, (GLenum target, GLshort s, GLshort t, GLshort r)) \ + F(void, MultiTexCoord3iv, (GLenum target, const GLint *v)) \ + F(void, MultiTexCoord3i, (GLenum target, GLint s, GLint t, GLint r)) \ + F(void, MultiTexCoord3fv, (GLenum target, const GLfloat *v)) \ + F(void, MultiTexCoord3f, (GLenum target, GLfloat s, GLfloat t, GLfloat r)) \ + F(void, MultiTexCoord3dv, (GLenum target, const GLdouble *v)) \ + F(void, MultiTexCoord3d, (GLenum target, GLdouble s, GLdouble t, GLdouble r)) \ + F(void, MultiTexCoord2sv, (GLenum target, const GLshort *v)) \ + F(void, MultiTexCoord2s, (GLenum target, GLshort s, GLshort t)) \ + F(void, MultiTexCoord2iv, (GLenum target, const GLint *v)) \ + F(void, MultiTexCoord2i, (GLenum target, GLint s, GLint t)) \ + F(void, MultiTexCoord2fv, (GLenum target, const GLfloat *v)) \ + F(void, MultiTexCoord2f, (GLenum target, GLfloat s, GLfloat t)) \ + F(void, MultiTexCoord2dv, (GLenum target, const GLdouble *v)) \ + F(void, MultiTexCoord2d, (GLenum target, GLdouble s, GLdouble t)) \ + F(void, MultiTexCoord1sv, (GLenum target, const GLshort *v)) \ + F(void, MultiTexCoord1s, (GLenum target, GLshort s)) \ + F(void, MultiTexCoord1iv, (GLenum target, const GLint *v)) \ + F(void, MultiTexCoord1i, (GLenum target, GLint s)) \ + F(void, MultiTexCoord1fv, (GLenum target, const GLfloat *v)) \ + F(void, MultiTexCoord1f, (GLenum target, GLfloat s)) \ + F(void, MultiTexCoord1dv, (GLenum target, const GLdouble *v)) \ + F(void, MultiTexCoord1d, (GLenum target, GLdouble s)) \ + F(void, ClientActiveTexture, (GLenum texture)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_3_DEPRECATED_FUNCTIONS); +}; + +class QOpenGLFunctions_1_4_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_4_DeprecatedBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_1_4_Deprecated; } + + // OpenGL 1.4 deprecated functions +#define QT_OPENGL_1_4_DEPRECATED_FUNCTIONS(F) \ + F(void, WindowPos3sv, (const GLshort *v)) \ + F(void, WindowPos3s, (GLshort x, GLshort y, GLshort z)) \ + F(void, WindowPos3iv, (const GLint *v)) \ + F(void, WindowPos3i, (GLint x, GLint y, GLint z)) \ + F(void, WindowPos3fv, (const GLfloat *v)) \ + F(void, WindowPos3f, (GLfloat x, GLfloat y, GLfloat z)) \ + F(void, WindowPos3dv, (const GLdouble *v)) \ + F(void, WindowPos3d, (GLdouble x, GLdouble y, GLdouble z)) \ + F(void, WindowPos2sv, (const GLshort *v)) \ + F(void, WindowPos2s, (GLshort x, GLshort y)) \ + F(void, WindowPos2iv, (const GLint *v)) \ + F(void, WindowPos2i, (GLint x, GLint y)) \ + F(void, WindowPos2fv, (const GLfloat *v)) \ + F(void, WindowPos2f, (GLfloat x, GLfloat y)) \ + F(void, WindowPos2dv, (const GLdouble *v)) \ + F(void, WindowPos2d, (GLdouble x, GLdouble y)) \ + F(void, SecondaryColorPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) \ + F(void, SecondaryColor3usv, (const GLushort *v)) \ + F(void, SecondaryColor3us, (GLushort red, GLushort green, GLushort blue)) \ + F(void, SecondaryColor3uiv, (const GLuint *v)) \ + F(void, SecondaryColor3ui, (GLuint red, GLuint green, GLuint blue)) \ + F(void, SecondaryColor3ubv, (const GLubyte *v)) \ + F(void, SecondaryColor3ub, (GLubyte red, GLubyte green, GLubyte blue)) \ + F(void, SecondaryColor3sv, (const GLshort *v)) \ + F(void, SecondaryColor3s, (GLshort red, GLshort green, GLshort blue)) \ + F(void, SecondaryColor3iv, (const GLint *v)) \ + F(void, SecondaryColor3i, (GLint red, GLint green, GLint blue)) \ + F(void, SecondaryColor3fv, (const GLfloat *v)) \ + F(void, SecondaryColor3f, (GLfloat red, GLfloat green, GLfloat blue)) \ + F(void, SecondaryColor3dv, (const GLdouble *v)) \ + F(void, SecondaryColor3d, (GLdouble red, GLdouble green, GLdouble blue)) \ + F(void, SecondaryColor3bv, (const GLbyte *v)) \ + F(void, SecondaryColor3b, (GLbyte red, GLbyte green, GLbyte blue)) \ + F(void, FogCoordPointer, (GLenum type, GLsizei stride, const GLvoid *pointer)) \ + F(void, FogCoorddv, (const GLdouble *coord)) \ + F(void, FogCoordd, (GLdouble coord)) \ + F(void, FogCoordfv, (const GLfloat *coord)) \ + F(void, FogCoordf, (GLfloat coord)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_1_4_DEPRECATED_FUNCTIONS); +}; + +class QOpenGLFunctions_2_0_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_2_0_DeprecatedBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_2_0_Deprecated; } + + // OpenGL 2.0 deprecated functions +#define QT_OPENGL_2_0_DEPRECATED_FUNCTIONS(F) \ + F(void, VertexAttrib4usv, (GLuint index, const GLushort *v)) \ + F(void, VertexAttrib4uiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttrib4ubv, (GLuint index, const GLubyte *v)) \ + F(void, VertexAttrib4sv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttrib4s, (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)) \ + F(void, VertexAttrib4iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttrib4fv, (GLuint index, const GLfloat *v)) \ + F(void, VertexAttrib4f, (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) \ + F(void, VertexAttrib4dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttrib4d, (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) \ + F(void, VertexAttrib4bv, (GLuint index, const GLbyte *v)) \ + F(void, VertexAttrib4Nusv, (GLuint index, const GLushort *v)) \ + F(void, VertexAttrib4Nuiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttrib4Nubv, (GLuint index, const GLubyte *v)) \ + F(void, VertexAttrib4Nub, (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)) \ + F(void, VertexAttrib4Nsv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttrib4Niv, (GLuint index, const GLint *v)) \ + F(void, VertexAttrib4Nbv, (GLuint index, const GLbyte *v)) \ + F(void, VertexAttrib3sv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttrib3s, (GLuint index, GLshort x, GLshort y, GLshort z)) \ + F(void, VertexAttrib3fv, (GLuint index, const GLfloat *v)) \ + F(void, VertexAttrib3f, (GLuint index, GLfloat x, GLfloat y, GLfloat z)) \ + F(void, VertexAttrib3dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttrib3d, (GLuint index, GLdouble x, GLdouble y, GLdouble z)) \ + F(void, VertexAttrib2sv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttrib2s, (GLuint index, GLshort x, GLshort y)) \ + F(void, VertexAttrib2fv, (GLuint index, const GLfloat *v)) \ + F(void, VertexAttrib2f, (GLuint index, GLfloat x, GLfloat y)) \ + F(void, VertexAttrib2dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttrib2d, (GLuint index, GLdouble x, GLdouble y)) \ + F(void, VertexAttrib1sv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttrib1s, (GLuint index, GLshort x)) \ + F(void, VertexAttrib1fv, (GLuint index, const GLfloat *v)) \ + F(void, VertexAttrib1f, (GLuint index, GLfloat x)) \ + F(void, VertexAttrib1dv, (GLuint index, const GLdouble *v)) \ + F(void, VertexAttrib1d, (GLuint index, GLdouble x)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_2_0_DEPRECATED_FUNCTIONS); +}; + +class QOpenGLFunctions_3_0_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_0_DeprecatedBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_3_0_Deprecated; } + + // OpenGL 3.0 deprecated functions +#define QT_OPENGL_3_0_DEPRECATED_FUNCTIONS(F) \ + F(void, VertexAttribI4usv, (GLuint index, const GLushort *v)) \ + F(void, VertexAttribI4ubv, (GLuint index, const GLubyte *v)) \ + F(void, VertexAttribI4sv, (GLuint index, const GLshort *v)) \ + F(void, VertexAttribI4bv, (GLuint index, const GLbyte *v)) \ + F(void, VertexAttribI4uiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttribI3uiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttribI2uiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttribI1uiv, (GLuint index, const GLuint *v)) \ + F(void, VertexAttribI4iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttribI3iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttribI2iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttribI1iv, (GLuint index, const GLint *v)) \ + F(void, VertexAttribI4ui, (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) \ + F(void, VertexAttribI3ui, (GLuint index, GLuint x, GLuint y, GLuint z)) \ + F(void, VertexAttribI2ui, (GLuint index, GLuint x, GLuint y)) \ + F(void, VertexAttribI1ui, (GLuint index, GLuint x)) \ + F(void, VertexAttribI4i, (GLuint index, GLint x, GLint y, GLint z, GLint w)) \ + F(void, VertexAttribI3i, (GLuint index, GLint x, GLint y, GLint z)) \ + F(void, VertexAttribI2i, (GLuint index, GLint x, GLint y)) \ + F(void, VertexAttribI1i, (GLuint index, GLint x)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_3_0_DEPRECATED_FUNCTIONS); +}; + +class QOpenGLFunctions_3_3_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_3_DeprecatedBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_3_3_Deprecated; } + + // OpenGL 3.3 deprecated functions +#define QT_OPENGL_3_3_DEPRECATED_FUNCTIONS(F) \ + F(void, SecondaryColorP3uiv, (GLenum type, const GLuint *color)) \ + F(void, SecondaryColorP3ui, (GLenum type, GLuint color)) \ + F(void, ColorP4uiv, (GLenum type, const GLuint *color)) \ + F(void, ColorP4ui, (GLenum type, GLuint color)) \ + F(void, ColorP3uiv, (GLenum type, const GLuint *color)) \ + F(void, ColorP3ui, (GLenum type, GLuint color)) \ + F(void, NormalP3uiv, (GLenum type, const GLuint *coords)) \ + F(void, NormalP3ui, (GLenum type, GLuint coords)) \ + F(void, MultiTexCoordP4uiv, (GLenum texture, GLenum type, const GLuint *coords)) \ + F(void, MultiTexCoordP4ui, (GLenum texture, GLenum type, GLuint coords)) \ + F(void, MultiTexCoordP3uiv, (GLenum texture, GLenum type, const GLuint *coords)) \ + F(void, MultiTexCoordP3ui, (GLenum texture, GLenum type, GLuint coords)) \ + F(void, MultiTexCoordP2uiv, (GLenum texture, GLenum type, const GLuint *coords)) \ + F(void, MultiTexCoordP2ui, (GLenum texture, GLenum type, GLuint coords)) \ + F(void, MultiTexCoordP1uiv, (GLenum texture, GLenum type, const GLuint *coords)) \ + F(void, MultiTexCoordP1ui, (GLenum texture, GLenum type, GLuint coords)) \ + F(void, TexCoordP4uiv, (GLenum type, const GLuint *coords)) \ + F(void, TexCoordP4ui, (GLenum type, GLuint coords)) \ + F(void, TexCoordP3uiv, (GLenum type, const GLuint *coords)) \ + F(void, TexCoordP3ui, (GLenum type, GLuint coords)) \ + F(void, TexCoordP2uiv, (GLenum type, const GLuint *coords)) \ + F(void, TexCoordP2ui, (GLenum type, GLuint coords)) \ + F(void, TexCoordP1uiv, (GLenum type, const GLuint *coords)) \ + F(void, TexCoordP1ui, (GLenum type, GLuint coords)) \ + F(void, VertexP4uiv, (GLenum type, const GLuint *value)) \ + F(void, VertexP4ui, (GLenum type, GLuint value)) \ + F(void, VertexP3uiv, (GLenum type, const GLuint *value)) \ + F(void, VertexP3ui, (GLenum type, GLuint value)) \ + F(void, VertexP2uiv, (GLenum type, const GLuint *value)) \ + F(void, VertexP2ui, (GLenum type, GLuint value)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_3_3_DEPRECATED_FUNCTIONS); +}; + +class QOpenGLFunctions_4_5_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_5_DeprecatedBackend(QOpenGLContext *c) + : QOpenGLVersionFunctionsBackend(c) + { + init(); + } + + Q_DECL_CONSTEXPR static Version versionStatus() + { return OpenGL_4_5_Deprecated; } + + // OpenGL 4.5 deprecated functions +#define QT_OPENGL_4_5_DEPRECATED_FUNCTIONS(F) \ + F(void, GetnMinmax, (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values)) \ + F(void, GetnHistogram, (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values)) \ + F(void, GetnSeparableFilter, (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span)) \ + F(void, GetnConvolutionFilter, (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image)) \ + F(void, GetnColorTable, (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table)) \ + F(void, GetnPolygonStipple, (GLsizei bufSize, GLubyte *pattern)) \ + F(void, GetnPixelMapusv, (GLenum map, GLsizei bufSize, GLushort *values)) \ + F(void, GetnPixelMapuiv, (GLenum map, GLsizei bufSize, GLuint *values)) \ + F(void, GetnPixelMapfv, (GLenum map, GLsizei bufSize, GLfloat *values)) \ + F(void, GetnMapiv, (GLenum target, GLenum query, GLsizei bufSize, GLint *v)) \ + F(void, GetnMapfv, (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v)) \ + F(void, GetnMapdv, (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v)) \ + + QT_OPENGL_DECLARE(QT_OPENGL_4_5_DEPRECATED_FUNCTIONS); +}; + +#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 + +#undef QT_OPENGL_DECLARE_FUNCTIONS +#undef QT_OPENGL_COUNT_FUNCTIONS +#undef QT_OPENGL_DECLARE + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglvertexarrayobject.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglvertexarrayobject.h new file mode 100644 index 000000000..a8153ea40 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglvertexarrayobject.h @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Sean Harmer <sean.harmer@kdab.com> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLVERTEXARRAYOBJECT_H +#define QOPENGLVERTEXARRAYOBJECT_H + +#include <QtGui/qtguiglobal.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 = Q_NULLPTR); + ~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) + Q_PRIVATE_SLOT(d_func(), void _q_contextAboutToBeDestroyed()) + QOpenGLVertexArrayObject(QOpenGLVertexArrayObjectPrivate &dd); +}; + +QT_END_NAMESPACE + +#endif + +#endif // QOPENGLVERTEXARRAYOBJECT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qopenglwindow.h b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglwindow.h new file mode 100644 index 000000000..fe236f953 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qopenglwindow.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLWINDOW_H +#define QOPENGLWINDOW_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_OPENGL + +#include <QtGui/QPaintDeviceWindow> +#include <QtGui/QOpenGLContext> +#include <QtGui/QImage> + +QT_BEGIN_NAMESPACE + +class QOpenGLWindowPrivate; + +class Q_GUI_EXPORT QOpenGLWindow : public QPaintDeviceWindow +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QOpenGLWindow) + +public: + enum UpdateBehavior { + NoPartialUpdate, + PartialUpdateBlit, + PartialUpdateBlend + }; + + explicit QOpenGLWindow(UpdateBehavior updateBehavior = NoPartialUpdate, QWindow *parent = Q_NULLPTR); + explicit QOpenGLWindow(QOpenGLContext *shareContext, UpdateBehavior updateBehavior = NoPartialUpdate, QWindow *parent = Q_NULLPTR); + ~QOpenGLWindow(); + + UpdateBehavior updateBehavior() const; + bool isValid() const; + + void makeCurrent(); + void doneCurrent(); + + QOpenGLContext *context() const; + QOpenGLContext *shareContext() const; + + GLuint defaultFramebufferObject() const; + + QImage grabFramebuffer(); + +Q_SIGNALS: + void frameSwapped(); + +protected: + virtual void initializeGL(); + virtual void resizeGL(int w, int h); + virtual void paintGL(); + virtual void paintUnderGL(); + virtual void paintOverGL(); + + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; + int metric(PaintDeviceMetric metric) const Q_DECL_OVERRIDE; + QPaintDevice *redirected(QPoint *) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QOpenGLWindow) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpagedpaintdevice.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpagedpaintdevice.h new file mode 100644 index 000000000..c516f6a96 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpagedpaintdevice.h @@ -0,0 +1,252 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAGEDPAINTDEVICE_H +#define QPAGEDPAINTDEVICE_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qpaintdevice.h> +#include <QtGui/qpagelayout.h> + +QT_BEGIN_NAMESPACE + +#if defined(B0) +#undef B0 // Terminal hang-up. We assume that you do not want that. +#endif + +class QPagedPaintDevicePrivate; + +class Q_GUI_EXPORT QPagedPaintDevice : public QPaintDevice +{ +public: + QPagedPaintDevice(); + ~QPagedPaintDevice(); + + virtual bool newPage() = 0; + + // ### Qt6 Remove in favor of QPage::PageSize + // NOTE: Must keep in sync with QPageSize and QPrinter + enum PageSize { + // Existing Qt sizes + A4, + B5, + Letter, + Legal, + Executive, + A0, + A1, + A2, + A3, + A5, + A6, + A7, + A8, + A9, + B0, + B1, + B10, + B2, + B3, + B4, + B6, + B7, + B8, + B9, + C5E, + Comm10E, + DLE, + Folio, + Ledger, + Tabloid, + Custom, + + // New values derived from PPD standard + A10, + A3Extra, + A4Extra, + A4Plus, + A4Small, + A5Extra, + B5Extra, + + JisB0, + JisB1, + JisB2, + JisB3, + JisB4, + JisB5, + JisB6, + JisB7, + JisB8, + JisB9, + JisB10, + + // AnsiA = Letter, + // AnsiB = Ledger, + AnsiC, + AnsiD, + AnsiE, + LegalExtra, + LetterExtra, + LetterPlus, + LetterSmall, + TabloidExtra, + + ArchA, + ArchB, + ArchC, + ArchD, + ArchE, + + Imperial7x9, + Imperial8x10, + Imperial9x11, + Imperial9x12, + Imperial10x11, + Imperial10x13, + Imperial10x14, + Imperial12x11, + Imperial15x11, + + ExecutiveStandard, + Note, + Quarto, + Statement, + SuperA, + SuperB, + Postcard, + DoublePostcard, + Prc16K, + Prc32K, + Prc32KBig, + + FanFoldUS, + FanFoldGerman, + FanFoldGermanLegal, + + EnvelopeB4, + EnvelopeB5, + EnvelopeB6, + EnvelopeC0, + EnvelopeC1, + EnvelopeC2, + EnvelopeC3, + EnvelopeC4, + // EnvelopeC5 = C5E, + EnvelopeC6, + EnvelopeC65, + EnvelopeC7, + // EnvelopeDL = DLE, + + Envelope9, + // Envelope10 = Comm10E, + Envelope11, + Envelope12, + Envelope14, + EnvelopeMonarch, + EnvelopePersonal, + + EnvelopeChou3, + EnvelopeChou4, + EnvelopeInvite, + EnvelopeItalian, + EnvelopeKaku2, + EnvelopeKaku3, + EnvelopePrc1, + EnvelopePrc2, + EnvelopePrc3, + EnvelopePrc4, + EnvelopePrc5, + EnvelopePrc6, + EnvelopePrc7, + EnvelopePrc8, + EnvelopePrc9, + EnvelopePrc10, + EnvelopeYou4, + + // Last item, with commonly used synynoms from QPagedPrintEngine / QPrinter + LastPageSize = EnvelopeYou4, + NPageSize = LastPageSize, + NPaperSize = LastPageSize, + + // Convenience overloads for naming consistency + AnsiA = Letter, + AnsiB = Ledger, + EnvelopeC5 = C5E, + EnvelopeDL = DLE, + Envelope10 = Comm10E + }; + + // ### Qt6 Make these virtual + bool setPageLayout(const QPageLayout &pageLayout); + bool setPageSize(const QPageSize &pageSize); + bool setPageOrientation(QPageLayout::Orientation orientation); + bool setPageMargins(const QMarginsF &margins); + bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units); + QPageLayout pageLayout() const; + + virtual void setPageSize(PageSize size); + PageSize pageSize() const; + + virtual void setPageSizeMM(const QSizeF &size); + QSizeF pageSizeMM() const; + + // ### Qt6 Remove in favor of QMarginsF + struct Margins { + qreal left; + qreal right; + qreal top; + qreal bottom; + }; + + virtual void setMargins(const Margins &margins); + Margins margins() const; + +protected: + QPagedPaintDevice(QPagedPaintDevicePrivate *dd); + QPagedPaintDevicePrivate *dd(); + QPageLayout devicePageLayout() const; + QPageLayout &devicePageLayout(); + friend class QPagedPaintDevicePrivate; + QPagedPaintDevicePrivate *d; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpagelayout.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpagelayout.h new file mode 100644 index 000000000..b41689d33 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpagelayout.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2014 John Layt <jlayt@kde.org> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAGELAYOUT_H +#define QPAGELAYOUT_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qsharedpointer.h> +#include <QtCore/qstring.h> +#include <QtCore/qmargins.h> + +#include <QtGui/qpagesize.h> + +QT_BEGIN_NAMESPACE + +class QPageLayoutPrivate; +class QMarginsF; + +class Q_GUI_EXPORT QPageLayout +{ +public: + + // NOTE: Must keep in sync with QPageSize::Unit and QPrinter::Unit + enum Unit { + Millimeter, + Point, + Inch, + Pica, + Didot, + Cicero + }; + + // NOTE: Must keep in sync with QPrinter::Orientation + enum Orientation { + Portrait, + Landscape + }; + + enum Mode { + StandardMode, // Paint Rect includes margins + FullPageMode // Paint Rect excludes margins + }; + + QPageLayout(); + QPageLayout(const QPageSize &pageSize, Orientation orientation, + const QMarginsF &margins, Unit units = Point, + const QMarginsF &minMargins = QMarginsF(0, 0, 0, 0)); + QPageLayout(const QPageLayout &other); +#ifdef Q_COMPILER_RVALUE_REFS + QPageLayout &operator=(QPageLayout &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QPageLayout &operator=(const QPageLayout &other); + ~QPageLayout(); + + void swap(QPageLayout &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + friend Q_GUI_EXPORT bool operator==(const QPageLayout &lhs, const QPageLayout &rhs); + bool isEquivalentTo(const QPageLayout &other) const; + + bool isValid() const; + + void setMode(Mode mode); + Mode mode() const; + + void setPageSize(const QPageSize &pageSize, + const QMarginsF &minMargins = QMarginsF(0, 0, 0, 0)); + QPageSize pageSize() const; + + void setOrientation(Orientation orientation); + Orientation orientation() const; + + void setUnits(Unit units); + Unit units() const; + + bool setMargins(const QMarginsF &margins); + bool setLeftMargin(qreal leftMargin); + bool setRightMargin(qreal rightMargin); + bool setTopMargin(qreal topMargin); + bool setBottomMargin(qreal bottomMargin); + + QMarginsF margins() const; + QMarginsF margins(Unit units) const; + QMargins marginsPoints() const; + QMargins marginsPixels(int resolution) const; + + void setMinimumMargins(const QMarginsF &minMargins); + QMarginsF minimumMargins() const; + QMarginsF maximumMargins() const; + + QRectF fullRect() const; + QRectF fullRect(Unit units) const; + QRect fullRectPoints() const; + QRect fullRectPixels(int resolution) const; + + QRectF paintRect() const; + QRectF paintRect(Unit units) const; + QRect paintRectPoints() const; + QRect paintRectPixels(int resolution) const; + +private: + friend class QPageLayoutPrivate; + QExplicitlySharedDataPointer<QPageLayoutPrivate> d; +}; + +Q_DECLARE_SHARED(QPageLayout) + +Q_GUI_EXPORT bool operator==(const QPageLayout &lhs, const QPageLayout &rhs); +inline bool operator!=(const QPageLayout &lhs, const QPageLayout &rhs) +{ return !operator==(lhs, rhs); } + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QPageLayout &pageLayout); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QPageLayout) +Q_DECLARE_METATYPE(QPageLayout::Unit) +Q_DECLARE_METATYPE(QPageLayout::Orientation) + +#endif // QPAGELAYOUT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpagesize.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpagesize.h new file mode 100644 index 000000000..82054824b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpagesize.h @@ -0,0 +1,314 @@ +/**************************************************************************** +** +** Copyright (C) 2014 John Layt <jlayt@kde.org> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAGESIZE_H +#define QPAGESIZE_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qsharedpointer.h> + +QT_BEGIN_NAMESPACE + +#if defined(B0) +#undef B0 // Terminal hang-up. We assume that you do not want that. +#endif + +class QPageSizePrivate; +class QString; +class QSize; +class QSizeF; + +class Q_GUI_EXPORT QPageSize +{ +public: + + // ### Qt6 Re-order and remove duplicates + // NOTE: Must keep in sync with QPagedPrintEngine and QPrinter + enum PageSizeId { + // Existing Qt sizes + A4, + B5, + Letter, + Legal, + Executive, + A0, + A1, + A2, + A3, + A5, + A6, + A7, + A8, + A9, + B0, + B1, + B10, + B2, + B3, + B4, + B6, + B7, + B8, + B9, + C5E, + Comm10E, + DLE, + Folio, + Ledger, + Tabloid, + Custom, + + // New values derived from PPD standard + A10, + A3Extra, + A4Extra, + A4Plus, + A4Small, + A5Extra, + B5Extra, + + JisB0, + JisB1, + JisB2, + JisB3, + JisB4, + JisB5, + JisB6, + JisB7, + JisB8, + JisB9, + JisB10, + + // AnsiA = Letter, + // AnsiB = Ledger, + AnsiC, + AnsiD, + AnsiE, + LegalExtra, + LetterExtra, + LetterPlus, + LetterSmall, + TabloidExtra, + + ArchA, + ArchB, + ArchC, + ArchD, + ArchE, + + Imperial7x9, + Imperial8x10, + Imperial9x11, + Imperial9x12, + Imperial10x11, + Imperial10x13, + Imperial10x14, + Imperial12x11, + Imperial15x11, + + ExecutiveStandard, + Note, + Quarto, + Statement, + SuperA, + SuperB, + Postcard, + DoublePostcard, + Prc16K, + Prc32K, + Prc32KBig, + + FanFoldUS, + FanFoldGerman, + FanFoldGermanLegal, + + EnvelopeB4, + EnvelopeB5, + EnvelopeB6, + EnvelopeC0, + EnvelopeC1, + EnvelopeC2, + EnvelopeC3, + EnvelopeC4, + // EnvelopeC5 = C5E, + EnvelopeC6, + EnvelopeC65, + EnvelopeC7, + // EnvelopeDL = DLE, + + Envelope9, + // Envelope10 = Comm10E, + Envelope11, + Envelope12, + Envelope14, + EnvelopeMonarch, + EnvelopePersonal, + + EnvelopeChou3, + EnvelopeChou4, + EnvelopeInvite, + EnvelopeItalian, + EnvelopeKaku2, + EnvelopeKaku3, + EnvelopePrc1, + EnvelopePrc2, + EnvelopePrc3, + EnvelopePrc4, + EnvelopePrc5, + EnvelopePrc6, + EnvelopePrc7, + EnvelopePrc8, + EnvelopePrc9, + EnvelopePrc10, + EnvelopeYou4, + + // Last item, with commonly used synynoms from QPagedPrintEngine / QPrinter + LastPageSize = EnvelopeYou4, + NPageSize = LastPageSize, + NPaperSize = LastPageSize, + + // Convenience overloads for naming consistency + AnsiA = Letter, + AnsiB = Ledger, + EnvelopeC5 = C5E, + EnvelopeDL = DLE, + Envelope10 = Comm10E + }; + + // NOTE: Must keep in sync with QPageLayout::Unit and QPrinter::Unit + enum Unit { + Millimeter, + Point, + Inch, + Pica, + Didot, + Cicero + }; + + enum SizeMatchPolicy { + FuzzyMatch, + FuzzyOrientationMatch, + ExactMatch + }; + + QPageSize(); + explicit QPageSize(PageSizeId pageSizeId); + explicit QPageSize(const QSize &pointSize, + const QString &name = QString(), + SizeMatchPolicy matchPolicy = FuzzyMatch); + explicit QPageSize(const QSizeF &size, Unit units, + const QString &name = QString(), + SizeMatchPolicy matchPolicy = FuzzyMatch); + QPageSize(const QPageSize &other); +#ifdef Q_COMPILER_RVALUE_REFS + QPageSize &operator=(QPageSize &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QPageSize &operator=(const QPageSize &other); + ~QPageSize(); + + + void swap(QPageSize &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + friend Q_GUI_EXPORT bool operator==(const QPageSize &lhs, const QPageSize &rhs); + bool isEquivalentTo(const QPageSize &other) const; + + bool isValid() const; + + QString key() const; + QString name() const; + + PageSizeId id() const; + + int windowsId() const; + + QSizeF definitionSize() const; + Unit definitionUnits() const; + + QSizeF size(Unit units) const; + QSize sizePoints() const; + QSize sizePixels(int resolution) const; + + QRectF rect(Unit units) const; + QRect rectPoints() const; + QRect rectPixels(int resolution) const; + + static QString key(PageSizeId pageSizeId); + static QString name(PageSizeId pageSizeId); + + static PageSizeId id(const QSize &pointSize, + SizeMatchPolicy matchPolicy = FuzzyMatch); + static PageSizeId id(const QSizeF &size, Unit units, + SizeMatchPolicy matchPolicy = FuzzyMatch); + + static PageSizeId id(int windowsId); + static int windowsId(PageSizeId pageSizeId); + + static QSizeF definitionSize(PageSizeId pageSizeId); + static Unit definitionUnits(PageSizeId pageSizeId); + + static QSizeF size(PageSizeId pageSizeId, Unit units); + static QSize sizePoints(PageSizeId pageSizeId); + static QSize sizePixels(PageSizeId pageSizeId, int resolution); + +private: + friend class QPageSizePrivate; + friend class QPlatformPrintDevice; + QPageSize(const QString &key, const QSize &pointSize, const QString &name); + QPageSize(int windowsId, const QSize &pointSize, const QString &name); + QPageSize(QPageSizePrivate &dd); + QSharedDataPointer<QPageSizePrivate> d; +}; + +Q_DECLARE_SHARED(QPageSize) + +Q_GUI_EXPORT bool operator==(const QPageSize &lhs, const QPageSize &rhs); +inline bool operator!=(const QPageSize &lhs, const QPageSize &rhs) +{ return !operator==(lhs, rhs); } + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QPageSize &pageSize); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QPageSize) +Q_DECLARE_METATYPE(QPageSize::PageSizeId) +Q_DECLARE_METATYPE(QPageSize::Unit) + +#endif // QPAGESIZE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpaintdevice.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpaintdevice.h new file mode 100644 index 000000000..9458b4ba9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpaintdevice.h @@ -0,0 +1,124 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTDEVICE_H +#define QPAINTDEVICE_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qwindowdefs.h> +#include <QtCore/qrect.h> + +QT_BEGIN_NAMESPACE + + + +class QPaintEngine; +class QPaintDevicePrivate; + +class Q_GUI_EXPORT QPaintDevice // device for QPainter +{ +public: + enum PaintDeviceMetric { + PdmWidth = 1, + PdmHeight, + PdmWidthMM, + PdmHeightMM, + PdmNumColors, + PdmDepth, + PdmDpiX, + PdmDpiY, + PdmPhysicalDpiX, + PdmPhysicalDpiY, + PdmDevicePixelRatio, + PdmDevicePixelRatioScaled + }; + + virtual ~QPaintDevice(); + + virtual int devType() const; + bool paintingActive() const; + virtual QPaintEngine *paintEngine() const = 0; + + int width() const { return metric(PdmWidth); } + int height() const { return metric(PdmHeight); } + int widthMM() const { return metric(PdmWidthMM); } + int heightMM() const { return metric(PdmHeightMM); } + int logicalDpiX() const { return metric(PdmDpiX); } + int logicalDpiY() const { return metric(PdmDpiY); } + int physicalDpiX() const { return metric(PdmPhysicalDpiX); } + int physicalDpiY() const { return metric(PdmPhysicalDpiY); } + int devicePixelRatio() const { return metric(PdmDevicePixelRatio); } + qreal devicePixelRatioF() const { return metric(PdmDevicePixelRatioScaled) / devicePixelRatioFScale(); } + int colorCount() const { return metric(PdmNumColors); } + int depth() const { return metric(PdmDepth); } + + static inline qreal devicePixelRatioFScale() { return 0x10000; } +protected: + QPaintDevice() Q_DECL_NOEXCEPT; + virtual int metric(PaintDeviceMetric metric) const; + virtual void initPainter(QPainter *painter) const; + virtual QPaintDevice *redirected(QPoint *offset) const; + virtual QPainter *sharedPainter() const; + + ushort painters; // refcount +private: + Q_DISABLE_COPY(QPaintDevice) + + QPaintDevicePrivate *reserved; + + friend class QPainter; + friend class QPainterPrivate; + friend class QFontEngineMac; + friend class QX11PaintEngine; + friend Q_GUI_EXPORT int qt_paint_device_metric(const QPaintDevice *device, PaintDeviceMetric metric); +}; + +/***************************************************************************** + Inline functions + *****************************************************************************/ + +inline int QPaintDevice::devType() const +{ return QInternal::UnknownDevice; } + +inline bool QPaintDevice::paintingActive() const +{ return painters != 0; } + +QT_END_NAMESPACE + +#endif // QPAINTDEVICE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpaintdevicewindow.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpaintdevicewindow.h new file mode 100644 index 000000000..81b41dcdd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpaintdevicewindow.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTDEVICEWINDOW_H +#define QPAINTDEVICEWINDOW_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/QWindow> +#include <QtGui/QPaintDevice> + +QT_BEGIN_NAMESPACE + +class QPaintDeviceWindowPrivate; +class QPaintEvent; + +class Q_GUI_EXPORT QPaintDeviceWindow : public QWindow, public QPaintDevice +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPaintDeviceWindow) + +public: + void update(const QRect &rect); + void update(const QRegion ®ion); + + using QWindow::width; + using QWindow::height; + using QWindow::devicePixelRatio; + +public Q_SLOTS: + void update(); + +protected: + virtual void paintEvent(QPaintEvent *event); + + int metric(PaintDeviceMetric metric) const Q_DECL_OVERRIDE; + void exposeEvent(QExposeEvent *) Q_DECL_OVERRIDE; + bool event(QEvent *event) Q_DECL_OVERRIDE; + + QPaintDeviceWindow(QPaintDeviceWindowPrivate &dd, QWindow *parent); + +private: + QPaintEngine *paintEngine() const Q_DECL_OVERRIDE; + Q_DISABLE_COPY(QPaintDeviceWindow) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpaintengine.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpaintengine.h new file mode 100644 index 000000000..9fb67e253 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpaintengine.h @@ -0,0 +1,342 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTENGINE_H +#define QPAINTENGINE_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qobjectdefs.h> +#include <QtCore/qscopedpointer.h> +#include <QtGui/qpainter.h> + +QT_BEGIN_NAMESPACE + + +class QFontEngine; +class QLineF; +class QPaintDevice; +class QPaintEnginePrivate; +class QPainterPath; +class QPointF; +class QPolygonF; +class QRectF; +struct QGlyphLayout; +class QTextItemInt; +class QPaintEngineState; + +class Q_GUI_EXPORT QTextItem { +public: + enum RenderFlag { + RightToLeft = 0x1, + Overline = 0x10, + Underline = 0x20, + StrikeOut = 0x40, + + Dummy = 0xffffffff + }; + Q_DECLARE_FLAGS(RenderFlags, RenderFlag) + qreal descent() const; + qreal ascent() const; + qreal width() const; + + RenderFlags renderFlags() const; + QString text() const; + QFont font() const; +}; +Q_DECLARE_TYPEINFO(QTextItem, Q_PRIMITIVE_TYPE); + + +class Q_GUI_EXPORT QPaintEngine +{ + Q_DECLARE_PRIVATE(QPaintEngine) +public: + enum PaintEngineFeature { + PrimitiveTransform = 0x00000001, // Can transform primitives brushes + PatternTransform = 0x00000002, // Can transform pattern brushes + PixmapTransform = 0x00000004, // Can transform pixmaps + PatternBrush = 0x00000008, // Can fill with pixmaps and standard patterns + LinearGradientFill = 0x00000010, // Can fill gradient areas + RadialGradientFill = 0x00000020, // Can render radial gradients + ConicalGradientFill = 0x00000040, // Can render conical gradients + AlphaBlend = 0x00000080, // Can do source over alpha blend + PorterDuff = 0x00000100, // Can do general porter duff compositions + PainterPaths = 0x00000200, // Can fill, outline and clip paths + Antialiasing = 0x00000400, // Can antialias lines + BrushStroke = 0x00000800, // Can render brush based pens + ConstantOpacity = 0x00001000, // Can render at constant opacity + MaskedBrush = 0x00002000, // Can fill with textures that has an alpha channel or mask + PerspectiveTransform = 0x00004000, // Can do perspective transformations + BlendModes = 0x00008000, // Can do extended Porter&Duff composition + ObjectBoundingModeGradients = 0x00010000, // Can do object bounding mode gradients + RasterOpModes = 0x00020000, // Can do logical raster operations + PaintOutsidePaintEvent = 0x20000000, // Engine is capable of painting outside paint events + /* 0x10000000, // Used for emulating + QGradient::StretchToDevice, + defined in qpainter.cpp + + 0x40000000, // Used internally for emulating opaque backgrounds + */ + + AllFeatures = 0xffffffff // For convenience + }; + Q_DECLARE_FLAGS(PaintEngineFeatures, PaintEngineFeature) + + enum DirtyFlag { + DirtyPen = 0x0001, + DirtyBrush = 0x0002, + DirtyBrushOrigin = 0x0004, + DirtyFont = 0x0008, + DirtyBackground = 0x0010, + DirtyBackgroundMode = 0x0020, + DirtyTransform = 0x0040, + DirtyClipRegion = 0x0080, + DirtyClipPath = 0x0100, + DirtyHints = 0x0200, + DirtyCompositionMode = 0x0400, + DirtyClipEnabled = 0x0800, + DirtyOpacity = 0x1000, + + AllDirty = 0xffff + }; + Q_DECLARE_FLAGS(DirtyFlags, DirtyFlag) + + enum PolygonDrawMode { + OddEvenMode, + WindingMode, + ConvexMode, + PolylineMode + }; + + explicit QPaintEngine(PaintEngineFeatures features=PaintEngineFeatures()); + virtual ~QPaintEngine(); + + bool isActive() const { return active; } + void setActive(bool newState) { active = newState; } + + virtual bool begin(QPaintDevice *pdev) = 0; + virtual bool end() = 0; + + virtual void updateState(const QPaintEngineState &state) = 0; + + virtual void drawRects(const QRect *rects, int rectCount); + virtual void drawRects(const QRectF *rects, int rectCount); + + virtual void drawLines(const QLine *lines, int lineCount); + virtual void drawLines(const QLineF *lines, int lineCount); + + virtual void drawEllipse(const QRectF &r); + virtual void drawEllipse(const QRect &r); + + virtual void drawPath(const QPainterPath &path); + + virtual void drawPoints(const QPointF *points, int pointCount); + virtual void drawPoints(const QPoint *points, int pointCount); + + virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode); + virtual void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode); + + virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0; + virtual void drawTextItem(const QPointF &p, const QTextItem &textItem); + 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 = Qt::AutoColor); + + void setPaintDevice(QPaintDevice *device); + QPaintDevice *paintDevice() const; + + void setSystemClip(const QRegion &baseClip); + QRegion systemClip() const; + + void setSystemRect(const QRect &rect); + QRect systemRect() const; + + + virtual QPoint coordinateOffset() const; + + enum Type { + X11, + Windows, + QuickDraw, CoreGraphics, MacPrinter, + QWindowSystem, + PostScript, // ### Qt 6: Remove, update documentation + OpenGL, + Picture, + SVG, + Raster, + Direct3D, + Pdf, + OpenVG, + OpenGL2, + PaintBuffer, + Blitter, + Direct2D, + + User = 50, // first user type id + MaxUser = 100 // last user type id + }; + virtual Type type() const = 0; + + inline void fix_neg_rect(int *x, int *y, int *w, int *h); + + inline bool testDirty(DirtyFlags df); + inline void setDirty(DirtyFlags df); + inline void clearDirty(DirtyFlags df); + + bool hasFeature(PaintEngineFeatures feature) const { return gccaps & feature; } + + QPainter *painter() const; + + void syncState(); + inline bool isExtended() const { return extended; } + +protected: + QPaintEngine(QPaintEnginePrivate &data, PaintEngineFeatures devcaps=PaintEngineFeatures()); + + QPaintEngineState *state; + PaintEngineFeatures gccaps; + + uint active : 1; + uint selfDestruct : 1; + uint extended : 1; + + QScopedPointer<QPaintEnginePrivate> d_ptr; + +private: + void setAutoDestruct(bool autoDestr) { selfDestruct = autoDestr; } + bool autoDestruct() const { return selfDestruct; } + Q_DISABLE_COPY(QPaintEngine) + + friend class QPainterReplayer; + friend class QFontEngineBox; + friend class QFontEngineMac; + friend class QFontEngineWin; + friend class QMacPrintEngine; + friend class QMacPrintEnginePrivate; + friend class QFontEngineQPF2; + friend class QPainter; + friend class QPainterPrivate; + friend class QWidget; + friend class QWidgetPrivate; + friend class QWin32PaintEngine; + friend class QWin32PaintEnginePrivate; + friend class QMacCGContext; + friend class QPreviewPaintEngine; + friend class QX11GLPlatformPixmap; +}; + + +class Q_GUI_EXPORT QPaintEngineState +{ +public: + QPaintEngine::DirtyFlags state() const { return dirtyFlags; } + + QPen pen() const; + QBrush brush() const; + QPointF brushOrigin() const; + QBrush backgroundBrush() const; + Qt::BGMode backgroundMode() const; + QFont font() const; + QMatrix matrix() const; + QTransform transform() const; + + Qt::ClipOperation clipOperation() const; + QRegion clipRegion() const; + QPainterPath clipPath() const; + bool isClipEnabled() const; + + QPainter::RenderHints renderHints() const; + QPainter::CompositionMode compositionMode() const; + qreal opacity() const; + + QPainter *painter() const; + + bool brushNeedsResolving() const; + bool penNeedsResolving() const; + +protected: + friend class QPaintEngine; + friend class QRasterPaintEngine; + friend class QWidget; + friend class QPainter; + friend class QPainterPrivate; + friend class QMacPrintEnginePrivate; + + QPaintEngine::DirtyFlags dirtyFlags; +}; + +// +// inline functions +// + +inline void QPaintEngine::fix_neg_rect(int *x, int *y, int *w, int *h) +{ + if (*w < 0) { + *w = -*w; + *x -= *w - 1; + } + if (*h < 0) { + *h = -*h; + *y -= *h - 1; + } +} + +inline bool QPaintEngine::testDirty(DirtyFlags df) { + Q_ASSERT(state); + return state->dirtyFlags & df; +} + +inline void QPaintEngine::setDirty(DirtyFlags df) { + Q_ASSERT(state); + state->dirtyFlags |= df; +} + +inline void QPaintEngine::clearDirty(DirtyFlags df) +{ + Q_ASSERT(state); + state->dirtyFlags &= ~static_cast<uint>(df); +} + +Q_DECLARE_OPERATORS_FOR_FLAGS(QTextItem::RenderFlags) +Q_DECLARE_OPERATORS_FOR_FLAGS(QPaintEngine::PaintEngineFeatures) +Q_DECLARE_OPERATORS_FOR_FLAGS(QPaintEngine::DirtyFlags) + +QT_END_NAMESPACE + +#endif // QPAINTENGINE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpainter.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpainter.h new file mode 100644 index 000000000..64d15d529 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpainter.h @@ -0,0 +1,934 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTER_H +#define QPAINTER_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qrect.h> +#include <QtCore/qpoint.h> +#include <QtCore/qscopedpointer.h> +#include <QtGui/qpixmap.h> +#include <QtGui/qimage.h> +#include <QtGui/qtextoption.h> + +#ifndef QT_INCLUDE_COMPAT +#include <QtGui/qpolygon.h> +#include <QtGui/qpen.h> +#include <QtGui/qbrush.h> +#include <QtGui/qmatrix.h> +#include <QtGui/qtransform.h> +#include <QtGui/qfontinfo.h> +#include <QtGui/qfontmetrics.h> +#endif + +QT_BEGIN_NAMESPACE + + +class QBrush; +class QFontInfo; +class QFontMetrics; +class QPaintDevice; +class QPainterPath; +class QPainterPrivate; +class QPen; +class QPolygon; +class QTextItem; +class QTextEngine; +class QMatrix; +class QTransform; +class QStaticText; +class QGlyphRun; + +class QPainterPrivateDeleter; + +class Q_GUI_EXPORT QPainter +{ + Q_DECLARE_PRIVATE(QPainter) + Q_GADGET + +public: + enum RenderHint { + Antialiasing = 0x01, + TextAntialiasing = 0x02, + SmoothPixmapTransform = 0x04, + HighQualityAntialiasing = 0x08, + NonCosmeticDefaultPen = 0x10, + Qt4CompatiblePainting = 0x20 + }; + Q_FLAG(RenderHint) + + Q_DECLARE_FLAGS(RenderHints, RenderHint) + Q_FLAG(RenderHints) + + class PixmapFragment { + public: + qreal x; + qreal y; + qreal sourceLeft; + qreal sourceTop; + qreal width; + qreal height; + qreal scaleX; + qreal scaleY; + qreal rotation; + qreal opacity; + static PixmapFragment Q_GUI_EXPORT create(const QPointF &pos, const QRectF &sourceRect, + qreal scaleX = 1, qreal scaleY = 1, + qreal rotation = 0, qreal opacity = 1); + }; + + enum PixmapFragmentHint { + OpaqueHint = 0x01 + }; + + Q_DECLARE_FLAGS(PixmapFragmentHints, PixmapFragmentHint) + + QPainter(); + explicit QPainter(QPaintDevice *); + ~QPainter(); + + QPaintDevice *device() const; + + bool begin(QPaintDevice *); + bool end(); + bool isActive() const; + + void initFrom(const QPaintDevice *device); + + enum CompositionMode { + CompositionMode_SourceOver, + CompositionMode_DestinationOver, + CompositionMode_Clear, + CompositionMode_Source, + CompositionMode_Destination, + CompositionMode_SourceIn, + CompositionMode_DestinationIn, + CompositionMode_SourceOut, + CompositionMode_DestinationOut, + CompositionMode_SourceAtop, + CompositionMode_DestinationAtop, + CompositionMode_Xor, + + //svg 1.2 blend modes + CompositionMode_Plus, + CompositionMode_Multiply, + CompositionMode_Screen, + CompositionMode_Overlay, + CompositionMode_Darken, + CompositionMode_Lighten, + CompositionMode_ColorDodge, + CompositionMode_ColorBurn, + CompositionMode_HardLight, + CompositionMode_SoftLight, + CompositionMode_Difference, + CompositionMode_Exclusion, + + // ROPs + RasterOp_SourceOrDestination, + RasterOp_SourceAndDestination, + RasterOp_SourceXorDestination, + RasterOp_NotSourceAndNotDestination, + RasterOp_NotSourceOrNotDestination, + RasterOp_NotSourceXorDestination, + RasterOp_NotSource, + RasterOp_NotSourceAndDestination, + RasterOp_SourceAndNotDestination, + RasterOp_NotSourceOrDestination, + RasterOp_SourceOrNotDestination, + RasterOp_ClearDestination, + RasterOp_SetDestination, + RasterOp_NotDestination + }; + void setCompositionMode(CompositionMode mode); + CompositionMode compositionMode() const; + + const QFont &font() const; + void setFont(const QFont &f); + + QFontMetrics fontMetrics() const; + QFontInfo fontInfo() const; + + void setPen(const QColor &color); + void setPen(const QPen &pen); + void setPen(Qt::PenStyle style); + const QPen &pen() const; + + void setBrush(const QBrush &brush); + void setBrush(Qt::BrushStyle style); + const QBrush &brush() const; + + // attributes/modes + void setBackgroundMode(Qt::BGMode mode); + Qt::BGMode backgroundMode() const; + + QPoint brushOrigin() const; + inline void setBrushOrigin(int x, int y); + inline void setBrushOrigin(const QPoint &); + void setBrushOrigin(const QPointF &); + + void setBackground(const QBrush &bg); + const QBrush &background() const; + + qreal opacity() const; + void setOpacity(qreal opacity); + + // Clip functions + QRegion clipRegion() const; + QPainterPath clipPath() const; + + void setClipRect(const QRectF &, Qt::ClipOperation op = Qt::ReplaceClip); + void setClipRect(const QRect &, Qt::ClipOperation op = Qt::ReplaceClip); + inline void setClipRect(int x, int y, int w, int h, Qt::ClipOperation op = Qt::ReplaceClip); + + void setClipRegion(const QRegion &, Qt::ClipOperation op = Qt::ReplaceClip); + + void setClipPath(const QPainterPath &path, Qt::ClipOperation op = Qt::ReplaceClip); + + void setClipping(bool enable); + bool hasClipping() const; + + QRectF clipBoundingRect() const; + + void save(); + void restore(); + + // XForm functions + void setMatrix(const QMatrix &matrix, bool combine = false); + const QMatrix &matrix() const; + const QMatrix &deviceMatrix() const; + void resetMatrix(); + + void setTransform(const QTransform &transform, bool combine = false); + const QTransform &transform() const; + const QTransform &deviceTransform() const; + void resetTransform(); + + void setWorldMatrix(const QMatrix &matrix, bool combine = false); + const QMatrix &worldMatrix() const; + + void setWorldTransform(const QTransform &matrix, bool combine = false); + const QTransform &worldTransform() const; + + QMatrix combinedMatrix() const; + QTransform combinedTransform() const; + + void setMatrixEnabled(bool enabled); + bool matrixEnabled() const; + + void setWorldMatrixEnabled(bool enabled); + bool worldMatrixEnabled() const; + + void scale(qreal sx, qreal sy); + void shear(qreal sh, qreal sv); + void rotate(qreal a); + + void translate(const QPointF &offset); + inline void translate(const QPoint &offset); + inline void translate(qreal dx, qreal dy); + + QRect window() const; + void setWindow(const QRect &window); + inline void setWindow(int x, int y, int w, int h); + + QRect viewport() const; + void setViewport(const QRect &viewport); + inline void setViewport(int x, int y, int w, int h); + + void setViewTransformEnabled(bool enable); + bool viewTransformEnabled() const; + + // drawing functions + void strokePath(const QPainterPath &path, const QPen &pen); + void fillPath(const QPainterPath &path, const QBrush &brush); + void drawPath(const QPainterPath &path); + + inline void drawPoint(const QPointF &pt); + inline void drawPoint(const QPoint &p); + inline void drawPoint(int x, int y); + + void drawPoints(const QPointF *points, int pointCount); + inline void drawPoints(const QPolygonF &points); + void drawPoints(const QPoint *points, int pointCount); + inline void drawPoints(const QPolygon &points); + + inline void drawLine(const QLineF &line); + inline void drawLine(const QLine &line); + inline void drawLine(int x1, int y1, int x2, int y2); + inline void drawLine(const QPoint &p1, const QPoint &p2); + inline void drawLine(const QPointF &p1, const QPointF &p2); + + void drawLines(const QLineF *lines, int lineCount); + inline void drawLines(const QVector<QLineF> &lines); + void drawLines(const QPointF *pointPairs, int lineCount); + inline void drawLines(const QVector<QPointF> &pointPairs); + void drawLines(const QLine *lines, int lineCount); + inline void drawLines(const QVector<QLine> &lines); + void drawLines(const QPoint *pointPairs, int lineCount); + inline void drawLines(const QVector<QPoint> &pointPairs); + + inline void drawRect(const QRectF &rect); + inline void drawRect(int x1, int y1, int w, int h); + inline void drawRect(const QRect &rect); + + void drawRects(const QRectF *rects, int rectCount); + inline void drawRects(const QVector<QRectF> &rectangles); + void drawRects(const QRect *rects, int rectCount); + inline void drawRects(const QVector<QRect> &rectangles); + + void drawEllipse(const QRectF &r); + void drawEllipse(const QRect &r); + inline void drawEllipse(int x, int y, int w, int h); + + inline void drawEllipse(const QPointF ¢er, qreal rx, qreal ry); + inline void drawEllipse(const QPoint ¢er, int rx, int ry); + + void drawPolyline(const QPointF *points, int pointCount); + inline void drawPolyline(const QPolygonF &polyline); + void drawPolyline(const QPoint *points, int pointCount); + inline void drawPolyline(const QPolygon &polygon); + + void drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill); + inline void drawPolygon(const QPolygonF &polygon, Qt::FillRule fillRule = Qt::OddEvenFill); + void drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill); + inline void drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule = Qt::OddEvenFill); + + void drawConvexPolygon(const QPointF *points, int pointCount); + inline void drawConvexPolygon(const QPolygonF &polygon); + void drawConvexPolygon(const QPoint *points, int pointCount); + inline void drawConvexPolygon(const QPolygon &polygon); + + void drawArc(const QRectF &rect, int a, int alen); + inline void drawArc(const QRect &, int a, int alen); + inline void drawArc(int x, int y, int w, int h, int a, int alen); + + void drawPie(const QRectF &rect, int a, int alen); + inline void drawPie(int x, int y, int w, int h, int a, int alen); + inline void drawPie(const QRect &, int a, int alen); + + void drawChord(const QRectF &rect, int a, int alen); + inline void drawChord(int x, int y, int w, int h, int a, int alen); + inline void drawChord(const QRect &, int a, int alen); + + void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, + Qt::SizeMode mode = Qt::AbsoluteSize); + inline void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, + Qt::SizeMode mode = Qt::AbsoluteSize); + inline void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, + Qt::SizeMode mode = Qt::AbsoluteSize); + + void drawRoundRect(const QRectF &r, int xround = 25, int yround = 25); + inline void drawRoundRect(int x, int y, int w, int h, int = 25, int = 25); + inline void drawRoundRect(const QRect &r, int xround = 25, int yround = 25); + + void drawTiledPixmap(const QRectF &rect, const QPixmap &pm, const QPointF &offset = QPointF()); + inline void drawTiledPixmap(int x, int y, int w, int h, const QPixmap &, int sx=0, int sy=0); + inline void drawTiledPixmap(const QRect &, const QPixmap &, const QPoint & = QPoint()); +#ifndef QT_NO_PICTURE + void drawPicture(const QPointF &p, const QPicture &picture); + inline void drawPicture(int x, int y, const QPicture &picture); + inline void drawPicture(const QPoint &p, const QPicture &picture); +#endif + + void drawPixmap(const QRectF &targetRect, const QPixmap &pixmap, const QRectF &sourceRect); + inline void drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect); + inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm, + int sx, int sy, int sw, int sh); + inline void drawPixmap(int x, int y, const QPixmap &pm, + int sx, int sy, int sw, int sh); + inline void drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr); + inline void drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr); + void drawPixmap(const QPointF &p, const QPixmap &pm); + inline void drawPixmap(const QPoint &p, const QPixmap &pm); + inline void drawPixmap(int x, int y, const QPixmap &pm); + inline void drawPixmap(const QRect &r, const QPixmap &pm); + inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm); + + void drawPixmapFragments(const PixmapFragment *fragments, int fragmentCount, + const QPixmap &pixmap, PixmapFragmentHints hints = PixmapFragmentHints()); + + void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect, + Qt::ImageConversionFlags flags = Qt::AutoColor); + inline void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect, + Qt::ImageConversionFlags flags = Qt::AutoColor); + inline void drawImage(const QPointF &p, const QImage &image, const QRectF &sr, + Qt::ImageConversionFlags flags = Qt::AutoColor); + inline void drawImage(const QPoint &p, const QImage &image, const QRect &sr, + Qt::ImageConversionFlags flags = Qt::AutoColor); + inline void drawImage(const QRectF &r, const QImage &image); + inline void drawImage(const QRect &r, const QImage &image); + void drawImage(const QPointF &p, const QImage &image); + inline void drawImage(const QPoint &p, const QImage &image); + inline void drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, + int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor); + + void setLayoutDirection(Qt::LayoutDirection direction); + Qt::LayoutDirection layoutDirection() const; + +#if !defined(QT_NO_RAWFONT) + void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphRun); +#endif + + void drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText); + inline void drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText); + inline void drawStaticText(int left, int top, const QStaticText &staticText); + + void drawText(const QPointF &p, const QString &s); + inline void drawText(const QPoint &p, const QString &s); + inline void drawText(int x, int y, const QString &s); + + void drawText(const QPointF &p, const QString &str, int tf, int justificationPadding); + + void drawText(const QRectF &r, int flags, const QString &text, QRectF *br = Q_NULLPTR); + void drawText(const QRect &r, int flags, const QString &text, QRect *br = Q_NULLPTR); + inline void drawText(int x, int y, int w, int h, int flags, const QString &text, QRect *br = Q_NULLPTR); + + void drawText(const QRectF &r, const QString &text, const QTextOption &o = QTextOption()); + + QRectF boundingRect(const QRectF &rect, int flags, const QString &text); + QRect boundingRect(const QRect &rect, int flags, const QString &text); + inline QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text); + + QRectF boundingRect(const QRectF &rect, const QString &text, const QTextOption &o = QTextOption()); + + void drawTextItem(const QPointF &p, const QTextItem &ti); + inline void drawTextItem(int x, int y, const QTextItem &ti); + inline void drawTextItem(const QPoint &p, const QTextItem &ti); + + void fillRect(const QRectF &, const QBrush &); + inline void fillRect(int x, int y, int w, int h, const QBrush &); + void fillRect(const QRect &, const QBrush &); + + void fillRect(const QRectF &, const QColor &color); + inline void fillRect(int x, int y, int w, int h, const QColor &color); + void fillRect(const QRect &, const QColor &color); + + inline void fillRect(int x, int y, int w, int h, Qt::GlobalColor c); + inline void fillRect(const QRect &r, Qt::GlobalColor c); + inline void fillRect(const QRectF &r, Qt::GlobalColor c); + + inline void fillRect(int x, int y, int w, int h, Qt::BrushStyle style); + inline void fillRect(const QRect &r, Qt::BrushStyle style); + inline void fillRect(const QRectF &r, Qt::BrushStyle style); + + void eraseRect(const QRectF &); + inline void eraseRect(int x, int y, int w, int h); + inline void eraseRect(const QRect &); + + void setRenderHint(RenderHint hint, bool on = true); + void setRenderHints(RenderHints hints, bool on = true); + RenderHints renderHints() const; + inline bool testRenderHint(RenderHint hint) const { return renderHints() & hint; } + + QPaintEngine *paintEngine() const; + + static void setRedirected(const QPaintDevice *device, QPaintDevice *replacement, + const QPoint& offset = QPoint()); + static QPaintDevice *redirected(const QPaintDevice *device, QPoint *offset = Q_NULLPTR); + static void restoreRedirected(const QPaintDevice *device); + + void beginNativePainting(); + void endNativePainting(); + +private: + Q_DISABLE_COPY(QPainter) + + QScopedPointer<QPainterPrivate> d_ptr; + + friend class QWidget; + friend class QFontEngine; + friend class QFontEngineBox; + friend class QFontEngineFT; + friend class QFontEngineMac; + friend class QFontEngineWin; + friend class QPaintEngine; + friend class QPaintEngineExPrivate; + friend class QOpenGLPaintEngine; + friend class QWin32PaintEngine; + friend class QWin32PaintEnginePrivate; + friend class QRasterPaintEngine; + friend class QAlphaPaintEngine; + friend class QPreviewPaintEngine; + friend class QTextEngine; +}; +Q_DECLARE_TYPEINFO(QPainter::PixmapFragment, Q_RELOCATABLE_TYPE); + +Q_DECLARE_OPERATORS_FOR_FLAGS(QPainter::RenderHints) + +// +// functions +// +inline void QPainter::drawLine(const QLineF &l) +{ + drawLines(&l, 1); +} + +inline void QPainter::drawLine(const QLine &line) +{ + drawLines(&line, 1); +} + +inline void QPainter::drawLine(int x1, int y1, int x2, int y2) +{ + QLine l(x1, y1, x2, y2); + drawLines(&l, 1); +} + +inline void QPainter::drawLine(const QPoint &p1, const QPoint &p2) +{ + QLine l(p1, p2); + drawLines(&l, 1); +} + +inline void QPainter::drawLine(const QPointF &p1, const QPointF &p2) +{ + drawLine(QLineF(p1, p2)); +} + +inline void QPainter::drawLines(const QVector<QLineF> &lines) +{ + drawLines(lines.constData(), lines.size()); +} + +inline void QPainter::drawLines(const QVector<QLine> &lines) +{ + drawLines(lines.constData(), lines.size()); +} + +inline void QPainter::drawLines(const QVector<QPointF> &pointPairs) +{ + drawLines(pointPairs.constData(), pointPairs.size() / 2); +} + +inline void QPainter::drawLines(const QVector<QPoint> &pointPairs) +{ + drawLines(pointPairs.constData(), pointPairs.size() / 2); +} + +inline void QPainter::drawPolyline(const QPolygonF &polyline) +{ + drawPolyline(polyline.constData(), polyline.size()); +} + +inline void QPainter::drawPolyline(const QPolygon &polyline) +{ + drawPolyline(polyline.constData(), polyline.size()); +} + +inline void QPainter::drawPolygon(const QPolygonF &polygon, Qt::FillRule fillRule) +{ + drawPolygon(polygon.constData(), polygon.size(), fillRule); +} + +inline void QPainter::drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule) +{ + drawPolygon(polygon.constData(), polygon.size(), fillRule); +} + +inline void QPainter::drawConvexPolygon(const QPolygonF &poly) +{ + drawConvexPolygon(poly.constData(), poly.size()); +} + +inline void QPainter::drawConvexPolygon(const QPolygon &poly) +{ + drawConvexPolygon(poly.constData(), poly.size()); +} + +inline void QPainter::drawRect(const QRectF &rect) +{ + drawRects(&rect, 1); +} + +inline void QPainter::drawRect(int x, int y, int w, int h) +{ + QRect r(x, y, w, h); + drawRects(&r, 1); +} + +inline void QPainter::drawRect(const QRect &r) +{ + drawRects(&r, 1); +} + +inline void QPainter::drawRects(const QVector<QRectF> &rects) +{ + drawRects(rects.constData(), rects.size()); +} + +inline void QPainter::drawRects(const QVector<QRect> &rects) +{ + drawRects(rects.constData(), rects.size()); +} + +inline void QPainter::drawPoint(const QPointF &p) +{ + drawPoints(&p, 1); +} + +inline void QPainter::drawPoint(int x, int y) +{ + QPoint p(x, y); + drawPoints(&p, 1); +} + +inline void QPainter::drawPoint(const QPoint &p) +{ + drawPoints(&p, 1); +} + +inline void QPainter::drawPoints(const QPolygonF &points) +{ + drawPoints(points.constData(), points.size()); +} + +inline void QPainter::drawPoints(const QPolygon &points) +{ + drawPoints(points.constData(), points.size()); +} + +inline void QPainter::drawRoundRect(int x, int y, int w, int h, int xRnd, int yRnd) +{ + drawRoundRect(QRectF(x, y, w, h), xRnd, yRnd); +} + +inline void QPainter::drawRoundRect(const QRect &rect, int xRnd, int yRnd) +{ + drawRoundRect(QRectF(rect), xRnd, yRnd); +} + +inline void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, + Qt::SizeMode mode) +{ + drawRoundedRect(QRectF(x, y, w, h), xRadius, yRadius, mode); +} + +inline void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, + Qt::SizeMode mode) +{ + drawRoundedRect(QRectF(rect), xRadius, yRadius, mode); +} + +inline void QPainter::drawEllipse(int x, int y, int w, int h) +{ + drawEllipse(QRect(x, y, w, h)); +} + +inline void QPainter::drawEllipse(const QPointF ¢er, qreal rx, qreal ry) +{ + drawEllipse(QRectF(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry)); +} + +inline void QPainter::drawEllipse(const QPoint ¢er, int rx, int ry) +{ + drawEllipse(QRect(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry)); +} + +inline void QPainter::drawArc(const QRect &r, int a, int alen) +{ + drawArc(QRectF(r), a, alen); +} + +inline void QPainter::drawArc(int x, int y, int w, int h, int a, int alen) +{ + drawArc(QRectF(x, y, w, h), a, alen); +} + +inline void QPainter::drawPie(const QRect &rect, int a, int alen) +{ + drawPie(QRectF(rect), a, alen); +} + +inline void QPainter::drawPie(int x, int y, int w, int h, int a, int alen) +{ + drawPie(QRectF(x, y, w, h), a, alen); +} + +inline void QPainter::drawChord(const QRect &rect, int a, int alen) +{ + drawChord(QRectF(rect), a, alen); +} + +inline void QPainter::drawChord(int x, int y, int w, int h, int a, int alen) +{ + drawChord(QRectF(x, y, w, h), a, alen); +} + +inline void QPainter::setClipRect(int x, int y, int w, int h, Qt::ClipOperation op) +{ + setClipRect(QRect(x, y, w, h), op); +} + +inline void QPainter::eraseRect(const QRect &rect) +{ + eraseRect(QRectF(rect)); +} + +inline void QPainter::eraseRect(int x, int y, int w, int h) +{ + eraseRect(QRectF(x, y, w, h)); +} + +inline void QPainter::fillRect(int x, int y, int w, int h, const QBrush &b) +{ + fillRect(QRect(x, y, w, h), b); +} + +inline void QPainter::fillRect(int x, int y, int w, int h, const QColor &b) +{ + fillRect(QRect(x, y, w, h), b); +} + +inline void QPainter::fillRect(int x, int y, int w, int h, Qt::GlobalColor c) +{ + fillRect(QRect(x, y, w, h), QColor(c)); +} + +inline void QPainter::fillRect(const QRect &r, Qt::GlobalColor c) +{ + fillRect(r, QColor(c)); +} + +inline void QPainter::fillRect(const QRectF &r, Qt::GlobalColor c) +{ + fillRect(r, QColor(c)); +} + +inline void QPainter::fillRect(int x, int y, int w, int h, Qt::BrushStyle style) +{ + fillRect(QRectF(x, y, w, h), QBrush(style)); +} + +inline void QPainter::fillRect(const QRect &r, Qt::BrushStyle style) +{ + fillRect(QRectF(r), QBrush(style)); +} + +inline void QPainter::fillRect(const QRectF &r, Qt::BrushStyle style) +{ + fillRect(r, QBrush(style)); +} + + +inline void QPainter::setBrushOrigin(int x, int y) +{ + setBrushOrigin(QPoint(x, y)); +} + +inline void QPainter::setBrushOrigin(const QPoint &p) +{ + setBrushOrigin(QPointF(p)); +} + +inline void QPainter::drawTiledPixmap(const QRect &rect, const QPixmap &pm, const QPoint &offset) +{ + drawTiledPixmap(QRectF(rect), pm, QPointF(offset)); +} + +inline void QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPixmap &pm, int sx, int sy) +{ + drawTiledPixmap(QRectF(x, y, w, h), pm, QPointF(sx, sy)); +} + +inline void QPainter::drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect) +{ + drawPixmap(QRectF(targetRect), pixmap, QRectF(sourceRect)); +} + +inline void QPainter::drawPixmap(const QPoint &p, const QPixmap &pm) +{ + drawPixmap(QPointF(p), pm); +} + +inline void QPainter::drawPixmap(const QRect &r, const QPixmap &pm) +{ + drawPixmap(QRectF(r), pm, QRectF()); +} + +inline void QPainter::drawPixmap(int x, int y, const QPixmap &pm) +{ + drawPixmap(QPointF(x, y), pm); +} + +inline void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pm) +{ + drawPixmap(QRectF(x, y, w, h), pm, QRectF()); +} + +inline void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pm, + int sx, int sy, int sw, int sh) +{ + drawPixmap(QRectF(x, y, w, h), pm, QRectF(sx, sy, sw, sh)); +} + +inline void QPainter::drawPixmap(int x, int y, const QPixmap &pm, + int sx, int sy, int sw, int sh) +{ + drawPixmap(QRectF(x, y, -1, -1), pm, QRectF(sx, sy, sw, sh)); +} + +inline void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr) +{ + drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, sr); +} + +inline void QPainter::drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr) +{ + drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, sr); +} + +inline void QPainter::drawTextItem(int x, int y, const QTextItem &ti) +{ + drawTextItem(QPointF(x, y), ti); +} + +inline void QPainter::drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect, + Qt::ImageConversionFlags flags) +{ + drawImage(QRectF(targetRect), image, QRectF(sourceRect), flags); +} + +inline void QPainter::drawImage(const QPointF &p, const QImage &image, const QRectF &sr, + Qt::ImageConversionFlags flags) +{ + drawImage(QRectF(p.x(), p.y(), -1, -1), image, sr, flags); +} + +inline void QPainter::drawImage(const QPoint &p, const QImage &image, const QRect &sr, + Qt::ImageConversionFlags flags) +{ + drawImage(QRect(p.x(), p.y(), -1, -1), image, sr, flags); +} + + +inline void QPainter::drawImage(const QRectF &r, const QImage &image) +{ + drawImage(r, image, QRect(0, 0, image.width(), image.height())); +} + +inline void QPainter::drawImage(const QRect &r, const QImage &image) +{ + drawImage(r, image, QRectF(0, 0, image.width(), image.height())); +} + +inline void QPainter::drawImage(const QPoint &p, const QImage &image) +{ + drawImage(QPointF(p), image); +} + +inline void QPainter::drawImage(int x, int y, const QImage &image, int sx, int sy, int sw, int sh, + Qt::ImageConversionFlags flags) +{ + if (sx == 0 && sy == 0 && sw == -1 && sh == -1 && flags == Qt::AutoColor) + drawImage(QPointF(x, y), image); + else + drawImage(QRectF(x, y, -1, -1), image, QRectF(sx, sy, sw, sh), flags); +} + +inline void QPainter::drawStaticText(const QPoint &p, const QStaticText &staticText) +{ + drawStaticText(QPointF(p), staticText); +} + +inline void QPainter::drawStaticText(int x, int y, const QStaticText &staticText) +{ + drawStaticText(QPointF(x, y), staticText); +} + +inline void QPainter::drawTextItem(const QPoint &p, const QTextItem &ti) +{ + drawTextItem(QPointF(p), ti); +} + +inline void QPainter::drawText(const QPoint &p, const QString &s) +{ + drawText(QPointF(p), s); +} + +inline void QPainter::drawText(int x, int y, int w, int h, int flags, const QString &str, QRect *br) +{ + drawText(QRect(x, y, w, h), flags, str, br); +} + +inline void QPainter::drawText(int x, int y, const QString &s) +{ + drawText(QPointF(x, y), s); +} + +inline QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text) +{ + return boundingRect(QRect(x, y, w, h), flags, text); +} + +inline void QPainter::translate(qreal dx, qreal dy) +{ + translate(QPointF(dx, dy)); +} + +inline void QPainter::translate(const QPoint &offset) +{ + translate(offset.x(), offset.y()); +} + +inline void QPainter::setViewport(int x, int y, int w, int h) +{ + setViewport(QRect(x, y, w, h)); +} + +inline void QPainter::setWindow(int x, int y, int w, int h) +{ + setWindow(QRect(x, y, w, h)); +} + +#ifndef QT_NO_PICTURE +inline void QPainter::drawPicture(int x, int y, const QPicture &p) +{ + drawPicture(QPoint(x, y), p); +} + +inline void QPainter::drawPicture(const QPoint &pt, const QPicture &p) +{ + drawPicture(QPointF(pt), p); +} +#endif + +QT_END_NAMESPACE + +#endif // QPAINTER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpainterpath.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpainterpath.h new file mode 100644 index 000000000..db39c1c5a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpainterpath.h @@ -0,0 +1,378 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTERPATH_H +#define QPAINTERPATH_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qmatrix.h> +#include <QtCore/qglobal.h> +#include <QtCore/qrect.h> +#include <QtCore/qline.h> +#include <QtCore/qvector.h> +#include <QtCore/qscopedpointer.h> + +QT_BEGIN_NAMESPACE + + +class QFont; +class QPainterPathPrivate; +struct QPainterPathPrivateDeleter; +class QPainterPathData; +class QPainterPathStrokerPrivate; +class QPen; +class QPolygonF; +class QRegion; +class QVectorPath; + +class Q_GUI_EXPORT QPainterPath +{ +public: + enum ElementType { + MoveToElement, + LineToElement, + CurveToElement, + CurveToDataElement + }; + + class Element { + public: + qreal x; + qreal y; + ElementType type; + + bool isMoveTo() const { return type == MoveToElement; } + bool isLineTo() const { return type == LineToElement; } + bool isCurveTo() const { return type == CurveToElement; } + + operator QPointF () const { return QPointF(x, y); } + + bool operator==(const Element &e) const { return qFuzzyCompare(x, e.x) + && qFuzzyCompare(y, e.y) && type == e.type; } + inline bool operator!=(const Element &e) const { return !operator==(e); } + }; + + QPainterPath() Q_DECL_NOEXCEPT; + explicit QPainterPath(const QPointF &startPoint); + QPainterPath(const QPainterPath &other); + QPainterPath &operator=(const QPainterPath &other); +#ifdef Q_COMPILER_RVALUE_REFS + inline QPainterPath &operator=(QPainterPath &&other) Q_DECL_NOEXCEPT + { qSwap(d_ptr, other.d_ptr); return *this; } +#endif + ~QPainterPath(); + inline void swap(QPainterPath &other) Q_DECL_NOEXCEPT { d_ptr.swap(other.d_ptr); } + + void closeSubpath(); + + void moveTo(const QPointF &p); + inline void moveTo(qreal x, qreal y); + + void lineTo(const QPointF &p); + inline void lineTo(qreal x, qreal y); + + void arcMoveTo(const QRectF &rect, qreal angle); + inline void arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle); + + void arcTo(const QRectF &rect, qreal startAngle, qreal arcLength); + inline void arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLength); + + void cubicTo(const QPointF &ctrlPt1, const QPointF &ctrlPt2, const QPointF &endPt); + inline void cubicTo(qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y, + qreal endPtx, qreal endPty); + void quadTo(const QPointF &ctrlPt, const QPointF &endPt); + inline void quadTo(qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty); + + QPointF currentPosition() const; + + void addRect(const QRectF &rect); + inline void addRect(qreal x, qreal y, qreal w, qreal h); + void addEllipse(const QRectF &rect); + inline void addEllipse(qreal x, qreal y, qreal w, qreal h); + inline void addEllipse(const QPointF ¢er, qreal rx, qreal ry); + void addPolygon(const QPolygonF &polygon); + void addText(const QPointF &point, const QFont &f, const QString &text); + inline void addText(qreal x, qreal y, const QFont &f, const QString &text); + void addPath(const QPainterPath &path); + void addRegion(const QRegion ®ion); + + void addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, + Qt::SizeMode mode = Qt::AbsoluteSize); + inline void addRoundedRect(qreal x, qreal y, qreal w, qreal h, + qreal xRadius, qreal yRadius, + Qt::SizeMode mode = Qt::AbsoluteSize); + + void addRoundRect(const QRectF &rect, int xRnd, int yRnd); + inline void addRoundRect(qreal x, qreal y, qreal w, qreal h, + int xRnd, int yRnd); + inline void addRoundRect(const QRectF &rect, int roundness); + inline void addRoundRect(qreal x, qreal y, qreal w, qreal h, + int roundness); + + void connectPath(const QPainterPath &path); + + bool contains(const QPointF &pt) const; + bool contains(const QRectF &rect) const; + bool intersects(const QRectF &rect) const; + + void translate(qreal dx, qreal dy); + inline void translate(const QPointF &offset); + + Q_REQUIRED_RESULT QPainterPath translated(qreal dx, qreal dy) const; + Q_REQUIRED_RESULT inline QPainterPath translated(const QPointF &offset) const; + + QRectF boundingRect() const; + QRectF controlPointRect() const; + + Qt::FillRule fillRule() const; + void setFillRule(Qt::FillRule fillRule); + + bool isEmpty() const; + + Q_REQUIRED_RESULT QPainterPath toReversed() const; + QList<QPolygonF> toSubpathPolygons(const QMatrix &matrix = QMatrix()) const; + QList<QPolygonF> toFillPolygons(const QMatrix &matrix = QMatrix()) const; + QPolygonF toFillPolygon(const QMatrix &matrix = QMatrix()) const; + QList<QPolygonF> toSubpathPolygons(const QTransform &matrix) const; + QList<QPolygonF> toFillPolygons(const QTransform &matrix) const; + QPolygonF toFillPolygon(const QTransform &matrix) const; + + int elementCount() const; + QPainterPath::Element elementAt(int i) const; + void setElementPositionAt(int i, qreal x, qreal y); + + qreal length() const; + qreal percentAtLength(qreal t) const; + QPointF pointAtPercent(qreal t) const; + qreal angleAtPercent(qreal t) const; + qreal slopeAtPercent(qreal t) const; + + bool intersects(const QPainterPath &p) const; + bool contains(const QPainterPath &p) const; + Q_REQUIRED_RESULT QPainterPath united(const QPainterPath &r) const; + Q_REQUIRED_RESULT QPainterPath intersected(const QPainterPath &r) const; + Q_REQUIRED_RESULT QPainterPath subtracted(const QPainterPath &r) const; + Q_REQUIRED_RESULT QPainterPath subtractedInverted(const QPainterPath &r) const; + + Q_REQUIRED_RESULT QPainterPath simplified() const; + + bool operator==(const QPainterPath &other) const; + bool operator!=(const QPainterPath &other) const; + + QPainterPath operator&(const QPainterPath &other) const; + QPainterPath operator|(const QPainterPath &other) const; + QPainterPath operator+(const QPainterPath &other) const; + QPainterPath operator-(const QPainterPath &other) const; + QPainterPath &operator&=(const QPainterPath &other); + QPainterPath &operator|=(const QPainterPath &other); + QPainterPath &operator+=(const QPainterPath &other); + QPainterPath &operator-=(const QPainterPath &other); + +private: + QScopedPointer<QPainterPathPrivate, QPainterPathPrivateDeleter> d_ptr; + + inline void ensureData() { if (!d_ptr) ensureData_helper(); } + void ensureData_helper(); + void detach(); + void detach_helper(); + void setDirty(bool); + void computeBoundingRect() const; + void computeControlPointRect() const; + + QPainterPathData *d_func() const { return reinterpret_cast<QPainterPathData *>(d_ptr.data()); } + + friend class QPainterPathData; + friend class QPainterPathStroker; + friend class QPainterPathStrokerPrivate; + friend class QMatrix; + friend class QTransform; + friend class QVectorPath; + friend Q_GUI_EXPORT const QVectorPath &qtVectorPathForPath(const QPainterPath &); + +#ifndef QT_NO_DATASTREAM + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QPainterPath &); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPainterPath &); +#endif +}; + +Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QPainterPath) +Q_DECLARE_TYPEINFO(QPainterPath::Element, Q_PRIMITIVE_TYPE); + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QPainterPath &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPainterPath &); +#endif + +class Q_GUI_EXPORT QPainterPathStroker +{ + Q_DECLARE_PRIVATE(QPainterPathStroker) +public: + QPainterPathStroker(); + explicit QPainterPathStroker(const QPen &pen); + ~QPainterPathStroker(); + + void setWidth(qreal width); + qreal width() const; + + void setCapStyle(Qt::PenCapStyle style); + Qt::PenCapStyle capStyle() const; + + void setJoinStyle(Qt::PenJoinStyle style); + Qt::PenJoinStyle joinStyle() const; + + void setMiterLimit(qreal length); + qreal miterLimit() const; + + void setCurveThreshold(qreal threshold); + qreal curveThreshold() const; + + void setDashPattern(Qt::PenStyle); + void setDashPattern(const QVector<qreal> &dashPattern); + QVector<qreal> dashPattern() const; + + void setDashOffset(qreal offset); + qreal dashOffset() const; + + QPainterPath createStroke(const QPainterPath &path) const; + +private: + Q_DISABLE_COPY(QPainterPathStroker) + + friend class QX11PaintEngine; + + QScopedPointer<QPainterPathStrokerPrivate> d_ptr; +}; + +inline void QPainterPath::moveTo(qreal x, qreal y) +{ + moveTo(QPointF(x, y)); +} + +inline void QPainterPath::lineTo(qreal x, qreal y) +{ + lineTo(QPointF(x, y)); +} + +inline void QPainterPath::arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLength) +{ + arcTo(QRectF(x, y, w, h), startAngle, arcLength); +} + +inline void QPainterPath::arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle) +{ + arcMoveTo(QRectF(x, y, w, h), angle); +} + +inline void QPainterPath::cubicTo(qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y, + qreal endPtx, qreal endPty) +{ + cubicTo(QPointF(ctrlPt1x, ctrlPt1y), QPointF(ctrlPt2x, ctrlPt2y), + QPointF(endPtx, endPty)); +} + +inline void QPainterPath::quadTo(qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty) +{ + quadTo(QPointF(ctrlPtx, ctrlPty), QPointF(endPtx, endPty)); +} + +inline void QPainterPath::addEllipse(qreal x, qreal y, qreal w, qreal h) +{ + addEllipse(QRectF(x, y, w, h)); +} + +inline void QPainterPath::addEllipse(const QPointF ¢er, qreal rx, qreal ry) +{ + addEllipse(QRectF(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry)); +} + +inline void QPainterPath::addRect(qreal x, qreal y, qreal w, qreal h) +{ + addRect(QRectF(x, y, w, h)); +} + +inline void QPainterPath::addRoundedRect(qreal x, qreal y, qreal w, qreal h, + qreal xRadius, qreal yRadius, + Qt::SizeMode mode) +{ + addRoundedRect(QRectF(x, y, w, h), xRadius, yRadius, mode); +} + +inline void QPainterPath::addRoundRect(qreal x, qreal y, qreal w, qreal h, + int xRnd, int yRnd) +{ + addRoundRect(QRectF(x, y, w, h), xRnd, yRnd); +} + +inline void QPainterPath::addRoundRect(const QRectF &rect, + int roundness) +{ + int xRnd = roundness; + int yRnd = roundness; + if (rect.width() > rect.height()) + xRnd = int(roundness * rect.height()/rect.width()); + else + yRnd = int(roundness * rect.width()/rect.height()); + addRoundRect(rect, xRnd, yRnd); +} + +inline void QPainterPath::addRoundRect(qreal x, qreal y, qreal w, qreal h, + int roundness) +{ + addRoundRect(QRectF(x, y, w, h), roundness); +} + +inline void QPainterPath::addText(qreal x, qreal y, const QFont &f, const QString &text) +{ + addText(QPointF(x, y), f, text); +} + +inline void QPainterPath::translate(const QPointF &offset) +{ translate(offset.x(), offset.y()); } + +inline QPainterPath QPainterPath::translated(const QPointF &offset) const +{ return translated(offset.x(), offset.y()); } + + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QPainterPath &); +#endif + +QT_END_NAMESPACE + +#endif // QPAINTERPATH_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpalette.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpalette.h new file mode 100644 index 000000000..d04fb1f0c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpalette.h @@ -0,0 +1,215 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPALETTE_H +#define QPALETTE_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qwindowdefs.h> +#include <QtGui/qcolor.h> +#include <QtGui/qbrush.h> + +QT_BEGIN_NAMESPACE + + +class QPalettePrivate; +class QVariant; + +class Q_GUI_EXPORT QPalette +{ + Q_GADGET +public: + QPalette(); + QPalette(const QColor &button); + QPalette(Qt::GlobalColor button); + QPalette(const QColor &button, const QColor &window); + QPalette(const QBrush &windowText, const QBrush &button, const QBrush &light, + const QBrush &dark, const QBrush &mid, const QBrush &text, + const QBrush &bright_text, const QBrush &base, const QBrush &window); + QPalette(const QColor &windowText, const QColor &window, const QColor &light, + const QColor &dark, const QColor &mid, const QColor &text, const QColor &base); + QPalette(const QPalette &palette); + ~QPalette(); + QPalette &operator=(const QPalette &palette); +#ifdef Q_COMPILER_RVALUE_REFS + QPalette(QPalette &&other) Q_DECL_NOTHROW + : d(other.d), data(other.data) + { other.d = Q_NULLPTR; } + inline QPalette &operator=(QPalette &&other) Q_DECL_NOEXCEPT + { + for_faster_swapping_dont_use = other.for_faster_swapping_dont_use; + qSwap(d, other.d); return *this; + } +#endif + + void swap(QPalette &other) Q_DECL_NOEXCEPT + { + qSwap(d, other.d); + qSwap(for_faster_swapping_dont_use, other.for_faster_swapping_dont_use); + } + + operator QVariant() const; + + // Do not change the order, the serialization format depends on it + enum ColorGroup { Active, Disabled, Inactive, NColorGroups, Current, All, Normal = Active }; + Q_ENUM(ColorGroup) + enum ColorRole { WindowText, Button, Light, Midlight, Dark, Mid, + Text, BrightText, ButtonText, Base, Window, Shadow, + Highlight, HighlightedText, + Link, LinkVisited, + AlternateBase, + NoRole, + ToolTipBase, ToolTipText, + NColorRoles = ToolTipText + 1, + Foreground = WindowText, Background = Window + }; + Q_ENUM(ColorRole) + + inline ColorGroup currentColorGroup() const { return static_cast<ColorGroup>(data.current_group); } + inline void setCurrentColorGroup(ColorGroup cg) { data.current_group = cg; } + + inline const QColor &color(ColorGroup cg, ColorRole cr) const + { return brush(cg, cr).color(); } + const QBrush &brush(ColorGroup cg, ColorRole cr) const; + inline void setColor(ColorGroup cg, ColorRole cr, const QColor &color); + inline void setColor(ColorRole cr, const QColor &color); + inline void setBrush(ColorRole cr, const QBrush &brush); + bool isBrushSet(ColorGroup cg, ColorRole cr) const; + void setBrush(ColorGroup cg, ColorRole cr, const QBrush &brush); + void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button, + const QBrush &light, const QBrush &dark, const QBrush &mid, + const QBrush &text, const QBrush &bright_text, const QBrush &base, + const QBrush &window); + bool isEqual(ColorGroup cr1, ColorGroup cr2) const; + + inline const QColor &color(ColorRole cr) const { return color(Current, cr); } + inline const QBrush &brush(ColorRole cr) const { return brush(Current, cr); } + inline const QBrush &foreground() const { return brush(WindowText); } + inline const QBrush &windowText() const { return brush(WindowText); } + inline const QBrush &button() const { return brush(Button); } + inline const QBrush &light() const { return brush(Light); } + inline const QBrush &dark() const { return brush(Dark); } + inline const QBrush &mid() const { return brush(Mid); } + inline const QBrush &text() const { return brush(Text); } + inline const QBrush &base() const { return brush(Base); } + inline const QBrush &alternateBase() const { return brush(AlternateBase); } + inline const QBrush &toolTipBase() const { return brush(ToolTipBase); } + inline const QBrush &toolTipText() const { return brush(ToolTipText); } + inline const QBrush &background() const { return brush(Window); } + inline const QBrush &window() const { return brush(Window); } + inline const QBrush &midlight() const { return brush(Midlight); } + inline const QBrush &brightText() const { return brush(BrightText); } + inline const QBrush &buttonText() const { return brush(ButtonText); } + inline const QBrush &shadow() const { return brush(Shadow); } + inline const QBrush &highlight() const { return brush(Highlight); } + inline const QBrush &highlightedText() const { return brush(HighlightedText); } + inline const QBrush &link() const { return brush(Link); } + inline const QBrush &linkVisited() const { return brush(LinkVisited); } + + bool operator==(const QPalette &p) const; + inline bool operator!=(const QPalette &p) const { return !(operator==(p)); } + bool isCopyOf(const QPalette &p) const; + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline int serialNumber() const { return cacheKey() >> 32; } +#endif + qint64 cacheKey() const; + + QPalette resolve(const QPalette &) const; + inline uint resolve() const { return data.resolve_mask; } + inline void resolve(uint mask) { data.resolve_mask = mask; } + +private: + void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button, + const QBrush &light, const QBrush &dark, const QBrush &mid, + const QBrush &text, const QBrush &bright_text, + const QBrush &base, const QBrush &alternate_base, + const QBrush &window, const QBrush &midlight, + const QBrush &button_text, const QBrush &shadow, + const QBrush &highlight, const QBrush &highlighted_text, + const QBrush &link, const QBrush &link_visited); + void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button, + const QBrush &light, const QBrush &dark, const QBrush &mid, + const QBrush &text, const QBrush &bright_text, + const QBrush &base, const QBrush &alternate_base, + const QBrush &window, const QBrush &midlight, + const QBrush &button_text, const QBrush &shadow, + const QBrush &highlight, const QBrush &highlighted_text, + const QBrush &link, const QBrush &link_visited, + const QBrush &toolTipBase, const QBrush &toolTipText); + void init(); + void detach(); + + QPalettePrivate *d; + struct Data { + uint current_group : 4; + uint resolve_mask : 28; + }; + union { + Data data; + quint32 for_faster_swapping_dont_use; + }; + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &s, const QPalette &p); +}; + +Q_DECLARE_SHARED(QPalette) + +inline void QPalette::setColor(ColorGroup acg, ColorRole acr, + const QColor &acolor) +{ setBrush(acg, acr, QBrush(acolor)); } +inline void QPalette::setColor(ColorRole acr, const QColor &acolor) +{ setColor(All, acr, acolor); } +inline void QPalette::setBrush(ColorRole acr, const QBrush &abrush) +{ setBrush(All, acr, abrush); } + +/***************************************************************************** + QPalette stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &ds, const QPalette &p); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &ds, QPalette &p); +#endif // QT_NO_DATASTREAM + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QPalette &); +#endif + +QT_END_NAMESPACE + +#endif // QPALETTE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpdfwriter.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpdfwriter.h new file mode 100644 index 000000000..17c73dd48 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpdfwriter.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPDFWRITER_H +#define QPDFWRITER_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_PDF + +#include <QtCore/qobject.h> +#include <QtGui/qpagedpaintdevice.h> +#include <QtGui/qpagelayout.h> + +QT_BEGIN_NAMESPACE + +class QIODevice; +class QPdfWriterPrivate; + +class Q_GUI_EXPORT QPdfWriter : public QObject, public QPagedPaintDevice +{ + Q_OBJECT +public: + explicit QPdfWriter(const QString &filename); + explicit QPdfWriter(QIODevice *device); + ~QPdfWriter(); + + QString title() const; + void setTitle(const QString &title); + + QString creator() const; + void setCreator(const QString &creator); + + bool newPage() override; + + void setResolution(int resolution); + int resolution() const; + +#ifdef Q_QDOC + bool setPageLayout(const QPageLayout &pageLayout); + bool setPageSize(const QPageSize &pageSize); + bool setPageOrientation(QPageLayout::Orientation orientation); + bool setPageMargins(const QMarginsF &margins); + bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units); + QPageLayout pageLayout() const; +#else + using QPagedPaintDevice::setPageSize; +#endif + + void setPageSize(PageSize size) override; + void setPageSizeMM(const QSizeF &size) override; + + void setMargins(const Margins &m) override; + +protected: + QPaintEngine *paintEngine() const override; + int metric(PaintDeviceMetric id) const override; + +private: + Q_DISABLE_COPY(QPdfWriter) + Q_DECLARE_PRIVATE(QPdfWriter) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_PDF + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpen.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpen.h new file mode 100644 index 000000000..d8d99ba80 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpen.h @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPEN_H +#define QPEN_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qcolor.h> +#include <QtGui/qbrush.h> + +QT_BEGIN_NAMESPACE + + +class QVariant; +class QPenPrivate; +class QBrush; +class QPen; + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QPen &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPen &); +#endif + +class Q_GUI_EXPORT QPen +{ +public: + QPen(); + QPen(Qt::PenStyle); + QPen(const QColor &color); + QPen(const QBrush &brush, qreal width, Qt::PenStyle s = Qt::SolidLine, + Qt::PenCapStyle c = Qt::SquareCap, Qt::PenJoinStyle j = Qt::BevelJoin); + QPen(const QPen &pen) Q_DECL_NOTHROW; + + ~QPen(); + + QPen &operator=(const QPen &pen) Q_DECL_NOTHROW; +#ifdef Q_COMPILER_RVALUE_REFS + QPen(QPen &&other) Q_DECL_NOTHROW + : d(other.d) { other.d = Q_NULLPTR; } + QPen &operator=(QPen &&other) Q_DECL_NOTHROW + { qSwap(d, other.d); return *this; } +#endif + void swap(QPen &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + Qt::PenStyle style() const; + void setStyle(Qt::PenStyle); + + QVector<qreal> dashPattern() const; + void setDashPattern(const QVector<qreal> &pattern); + + qreal dashOffset() const; + void setDashOffset(qreal doffset); + + qreal miterLimit() const; + void setMiterLimit(qreal limit); + + qreal widthF() const; + void setWidthF(qreal width); + + int width() const; + void setWidth(int width); + + QColor color() const; + void setColor(const QColor &color); + + QBrush brush() const; + void setBrush(const QBrush &brush); + + bool isSolid() const; + + Qt::PenCapStyle capStyle() const; + void setCapStyle(Qt::PenCapStyle pcs); + + Qt::PenJoinStyle joinStyle() const; + void setJoinStyle(Qt::PenJoinStyle pcs); + + bool isCosmetic() const; + void setCosmetic(bool cosmetic); + + bool operator==(const QPen &p) const; + inline bool operator!=(const QPen &p) const { return !(operator==(p)); } + operator QVariant() const; + + bool isDetached(); +private: + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPen &); + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QPen &); + + void detach(); + class QPenPrivate *d; + +public: + typedef QPenPrivate * DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +Q_DECLARE_SHARED(QPen) + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QPen &); +#endif + +QT_END_NAMESPACE + +#endif // QPEN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpicture.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpicture.h new file mode 100644 index 000000000..8da11caee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpicture.h @@ -0,0 +1,195 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPICTURE_H +#define QPICTURE_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qiodevice.h> +#include <QtCore/qstringlist.h> +#include <QtCore/qsharedpointer.h> +#include <QtGui/qpaintdevice.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_PICTURE + +class QPicturePrivate; +class Q_GUI_EXPORT QPicture : public QPaintDevice +{ + Q_DECLARE_PRIVATE(QPicture) +public: + explicit QPicture(int formatVersion = -1); + QPicture(const QPicture &); + ~QPicture(); + + bool isNull() const; + + int devType() const Q_DECL_OVERRIDE; + uint size() const; + const char* data() const; + virtual void setData(const char* data, uint size); + + bool play(QPainter *p); + + bool load(QIODevice *dev, const char *format = Q_NULLPTR); + bool load(const QString &fileName, const char *format = Q_NULLPTR); + bool save(QIODevice *dev, const char *format = Q_NULLPTR); + bool save(const QString &fileName, const char *format = Q_NULLPTR); + + QRect boundingRect() const; + void setBoundingRect(const QRect &r); + + QPicture& operator=(const QPicture &p); +#ifdef Q_COMPILER_RVALUE_REFS + inline QPicture &operator=(QPicture &&other) Q_DECL_NOEXCEPT + { qSwap(d_ptr, other.d_ptr); return *this; } +#endif + inline void swap(QPicture &other) Q_DECL_NOEXCEPT + { d_ptr.swap(other.d_ptr); } + void detach(); + bool isDetached() const; + + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &in, const QPicture &p); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &in, QPicture &p); + + static const char* pictureFormat(const QString &fileName); + static QList<QByteArray> inputFormats(); + static QList<QByteArray> outputFormats(); + static QStringList inputFormatList(); + static QStringList outputFormatList(); + + QPaintEngine *paintEngine() const Q_DECL_OVERRIDE; + +protected: + QPicture(QPicturePrivate &data); + + int metric(PaintDeviceMetric m) const Q_DECL_OVERRIDE; + +private: + bool exec(QPainter *p, QDataStream &ds, int i); + + QExplicitlySharedDataPointer<QPicturePrivate> d_ptr; + friend class QPicturePaintEngine; + friend class QAlphaPaintEngine; + friend class QPreviewPaintEngine; + +public: + typedef QExplicitlySharedDataPointer<QPicturePrivate> DataPtr; + inline DataPtr &data_ptr() { return d_ptr; } +}; + +Q_DECLARE_SHARED(QPicture) + + +#ifndef QT_NO_PICTUREIO +class QIODevice; +class QPictureIO; +typedef void (*picture_io_handler)(QPictureIO *); // picture IO handler + +struct QPictureIOData; + +class Q_GUI_EXPORT QPictureIO +{ +public: + QPictureIO(); + QPictureIO(QIODevice *ioDevice, const char *format); + QPictureIO(const QString &fileName, const char *format); + ~QPictureIO(); + + const QPicture &picture() const; + int status() const; + const char *format() const; + QIODevice *ioDevice() const; + QString fileName() const; + int quality() const; + QString description() const; + const char *parameters() const; + float gamma() const; + + void setPicture(const QPicture &); + void setStatus(int); + void setFormat(const char *); + void setIODevice(QIODevice *); + void setFileName(const QString &); + void setQuality(int); + void setDescription(const QString &); + void setParameters(const char *); + void setGamma(float); + + bool read(); + bool write(); + + static QByteArray pictureFormat(const QString &fileName); + static QByteArray pictureFormat(QIODevice *); + static QList<QByteArray> inputFormats(); + static QList<QByteArray> outputFormats(); + + static void defineIOHandler(const char *format, + const char *header, + const char *flags, + picture_io_handler read_picture, + picture_io_handler write_picture); + +private: + Q_DISABLE_COPY(QPictureIO) + + void init(); + + QPictureIOData *d; +}; + +#endif //QT_NO_PICTUREIO + + +/***************************************************************************** + QPicture stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QPicture &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPicture &); +#endif + +#endif // QT_NO_PICTURE + +QT_END_NAMESPACE + +#endif // QPICTURE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpictureformatplugin.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpictureformatplugin.h new file mode 100644 index 000000000..32195687c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpictureformatplugin.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPICTUREFORMATPLUGIN_H +#define QPICTUREFORMATPLUGIN_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qplugin.h> +#include <QtCore/qfactoryinterface.h> + +QT_BEGIN_NAMESPACE + + +#if !defined(QT_NO_PICTURE) + +class QPicture; +class QImage; +class QString; +class QStringList; + +#define QPictureFormatInterface_iid "org.qt-project.Qt.QPictureFormatInterface" + +class Q_GUI_EXPORT QPictureFormatPlugin : public QObject +{ + Q_OBJECT +public: + explicit QPictureFormatPlugin(QObject *parent = Q_NULLPTR); + ~QPictureFormatPlugin(); + + virtual bool loadPicture(const QString &format, const QString &filename, QPicture *pic); + virtual bool savePicture(const QString &format, const QString &filename, const QPicture &pic); + virtual bool installIOHandler(const QString &format) = 0; + +}; + +#endif // QT_NO_PICTURE + +QT_END_NAMESPACE + +#endif // QPICTUREFORMATPLUGIN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpixelformat.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpixelformat.h new file mode 100644 index 000000000..6b2d6a6ac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpixelformat.h @@ -0,0 +1,406 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPIXELFORMAT_H +#define QPIXELFORMAT_H + +#include <QtGui/qtguiglobal.h> + +QT_BEGIN_NAMESPACE + +class QPixelFormat +{ + // QPixelFormat basically is a glorified quint64, split into several fields. + // We could use bit-fields, but GCC at least generates horrible, horrible code for them, + // so we do the bit-twiddling ourselves. + enum FieldWidth { + ModelFieldWidth = 4, + FirstFieldWidth = 6, + SecondFieldWidth = FirstFieldWidth, + ThirdFieldWidth = FirstFieldWidth, + FourthFieldWidth = FirstFieldWidth, + FifthFieldWidth = FirstFieldWidth, + AlphaFieldWidth = FirstFieldWidth, + AlphaUsageFieldWidth = 1, + AlphaPositionFieldWidth = 1, + PremulFieldWidth = 1, + TypeInterpretationFieldWidth = 4, + ByteOrderFieldWidth = 2, + SubEnumFieldWidth = 6, + UnusedFieldWidth = 9, + + TotalFieldWidthByWidths = ModelFieldWidth + FirstFieldWidth + SecondFieldWidth + ThirdFieldWidth + + FourthFieldWidth + FifthFieldWidth + AlphaFieldWidth + AlphaUsageFieldWidth + + AlphaPositionFieldWidth + PremulFieldWidth + TypeInterpretationFieldWidth + + ByteOrderFieldWidth + SubEnumFieldWidth + UnusedFieldWidth + }; + + enum Field { + ModelField = 0, + // work around bug in old clang versions: when building webkit + // with XCode 4.6 and older this fails compilation, thus cast to int + FirstField = ModelField + int(ModelFieldWidth), + SecondField = FirstField + FirstFieldWidth, + ThirdField = SecondField + SecondFieldWidth, + FourthField = ThirdField + ThirdFieldWidth, + FifthField = FourthField + FourthFieldWidth, + AlphaField = FifthField + FifthFieldWidth, + AlphaUsageField = AlphaField + AlphaFieldWidth, + AlphaPositionField = AlphaUsageField + AlphaUsageFieldWidth, + PremulField = AlphaPositionField + AlphaPositionFieldWidth, + TypeInterpretationField = PremulField + PremulFieldWidth, + ByteOrderField = TypeInterpretationField + TypeInterpretationFieldWidth, + SubEnumField = ByteOrderField + ByteOrderFieldWidth, + UnusedField = SubEnumField + SubEnumFieldWidth, + + TotalFieldWidthByOffsets = UnusedField + UnusedFieldWidth + }; + + Q_STATIC_ASSERT(uint(TotalFieldWidthByWidths) == uint(TotalFieldWidthByOffsets)); + Q_STATIC_ASSERT(uint(TotalFieldWidthByWidths) == 8 * sizeof(quint64)); + + Q_DECL_CONSTEXPR inline uchar get(Field offset, FieldWidth width) const Q_DECL_NOTHROW + { return uchar((data >> uint(offset)) & ((Q_UINT64_C(1) << uint(width)) - Q_UINT64_C(1))); } + Q_DECL_CONSTEXPR static inline quint64 set(Field offset, FieldWidth width, uchar value) + { return (quint64(value) & ((Q_UINT64_C(1) << uint(width)) - Q_UINT64_C(1))) << uint(offset); } + +public: + enum ColorModel { + RGB, + BGR, + Indexed, + Grayscale, + CMYK, + HSL, + HSV, + YUV, + Alpha + }; + + enum AlphaUsage { + UsesAlpha, + IgnoresAlpha + }; + + enum AlphaPosition { + AtBeginning, + AtEnd + }; + + enum AlphaPremultiplied { + NotPremultiplied, + Premultiplied + }; + + enum TypeInterpretation { + UnsignedInteger, + UnsignedShort, + UnsignedByte, + FloatingPoint + }; + + enum YUVLayout { + YUV444, + YUV422, + YUV411, + YUV420P, + YUV420SP, + YV12, + UYVY, + YUYV, + NV12, + NV21, + IMC1, + IMC2, + IMC3, + IMC4, + Y8, + Y16 + }; + + enum ByteOrder { + LittleEndian, + BigEndian, + CurrentSystemEndian + }; + + Q_DECL_CONSTEXPR inline QPixelFormat() Q_DECL_NOTHROW : data(0) {} + Q_DECL_CONSTEXPR inline QPixelFormat(ColorModel colorModel, + uchar firstSize, + uchar secondSize, + uchar thirdSize, + uchar fourthSize, + uchar fifthSize, + uchar alphaSize, + AlphaUsage alphaUsage, + AlphaPosition alphaPosition, + AlphaPremultiplied premultiplied, + TypeInterpretation typeInterpretation, + ByteOrder byteOrder = CurrentSystemEndian, + uchar subEnum = 0) Q_DECL_NOTHROW; + + Q_DECL_CONSTEXPR inline ColorModel colorModel() const Q_DECL_NOTHROW { return ColorModel(get(ModelField, ModelFieldWidth)); } + Q_DECL_CONSTEXPR inline uchar channelCount() const Q_DECL_NOTHROW { return (get(FirstField, FirstFieldWidth) > 0) + + (get(SecondField, SecondFieldWidth) > 0) + + (get(ThirdField, ThirdFieldWidth) > 0) + + (get(FourthField, FourthFieldWidth) > 0) + + (get(FifthField, FifthFieldWidth) > 0) + + (get(AlphaField, AlphaFieldWidth) > 0); } + + Q_DECL_CONSTEXPR inline uchar redSize() const Q_DECL_NOTHROW { return get(FirstField, FirstFieldWidth); } + Q_DECL_CONSTEXPR inline uchar greenSize() const Q_DECL_NOTHROW { return get(SecondField, SecondFieldWidth); } + Q_DECL_CONSTEXPR inline uchar blueSize() const Q_DECL_NOTHROW { return get(ThirdField, ThirdFieldWidth); } + + Q_DECL_CONSTEXPR inline uchar cyanSize() const Q_DECL_NOTHROW { return get(FirstField, FirstFieldWidth); } + Q_DECL_CONSTEXPR inline uchar magentaSize() const Q_DECL_NOTHROW { return get(SecondField, SecondFieldWidth); } + Q_DECL_CONSTEXPR inline uchar yellowSize() const Q_DECL_NOTHROW { return get(ThirdField, ThirdFieldWidth); } + Q_DECL_CONSTEXPR inline uchar blackSize() const Q_DECL_NOTHROW { return get(FourthField, FourthFieldWidth); } + + Q_DECL_CONSTEXPR inline uchar hueSize() const Q_DECL_NOTHROW { return get(FirstField, FirstFieldWidth); } + Q_DECL_CONSTEXPR inline uchar saturationSize() const Q_DECL_NOTHROW { return get(SecondField, SecondFieldWidth); } + Q_DECL_CONSTEXPR inline uchar lightnessSize() const Q_DECL_NOTHROW { return get(ThirdField, ThirdFieldWidth); } + Q_DECL_CONSTEXPR inline uchar brightnessSize() const Q_DECL_NOTHROW { return get(ThirdField, ThirdFieldWidth); } + + Q_DECL_CONSTEXPR inline uchar alphaSize() const Q_DECL_NOTHROW { return get(AlphaField, AlphaFieldWidth); } + + Q_DECL_CONSTEXPR inline uchar bitsPerPixel() const Q_DECL_NOTHROW { return get(FirstField, FirstFieldWidth) + + get(SecondField, SecondFieldWidth) + + get(ThirdField, ThirdFieldWidth) + + get(FourthField, FourthFieldWidth) + + get(FifthField, FifthFieldWidth) + + get(AlphaField, AlphaFieldWidth); } + + Q_DECL_CONSTEXPR inline AlphaUsage alphaUsage() const Q_DECL_NOTHROW { return AlphaUsage(get(AlphaUsageField, AlphaUsageFieldWidth)); } + Q_DECL_CONSTEXPR inline AlphaPosition alphaPosition() const Q_DECL_NOTHROW { return AlphaPosition(get(AlphaPositionField, AlphaPositionFieldWidth)); } + Q_DECL_CONSTEXPR inline AlphaPremultiplied premultiplied() const Q_DECL_NOTHROW { return AlphaPremultiplied(get(PremulField, PremulFieldWidth)); } + Q_DECL_CONSTEXPR inline TypeInterpretation typeInterpretation() const Q_DECL_NOTHROW { return TypeInterpretation(get(TypeInterpretationField, TypeInterpretationFieldWidth)); } + Q_DECL_CONSTEXPR inline ByteOrder byteOrder() const Q_DECL_NOTHROW { return ByteOrder(get(ByteOrderField, ByteOrderFieldWidth)); } + + Q_DECL_CONSTEXPR inline YUVLayout yuvLayout() const Q_DECL_NOTHROW { return YUVLayout(get(SubEnumField, SubEnumFieldWidth)); } + Q_DECL_CONSTEXPR inline uchar subEnum() const Q_DECL_NOTHROW { return get(SubEnumField, SubEnumFieldWidth); } + +private: + Q_DECL_CONSTEXPR static inline ByteOrder resolveByteOrder(ByteOrder bo) + { return bo == CurrentSystemEndian ? Q_BYTE_ORDER == Q_LITTLE_ENDIAN ? LittleEndian : BigEndian : bo ; } + +private: + quint64 data; + + friend Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline bool operator==(QPixelFormat fmt1, QPixelFormat fmt2) + { return fmt1.data == fmt2.data; } + + friend Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline bool operator!=(QPixelFormat fmt1, QPixelFormat fmt2) + { return !(fmt1 == fmt2); } +}; +Q_STATIC_ASSERT(sizeof(QPixelFormat) == sizeof(quint64)); +Q_DECLARE_TYPEINFO(QPixelFormat, Q_PRIMITIVE_TYPE); + + +namespace QtPrivate { + QPixelFormat Q_GUI_EXPORT QPixelFormat_createYUV(QPixelFormat::YUVLayout yuvLayout, + uchar alphaSize, + QPixelFormat::AlphaUsage alphaUsage, + QPixelFormat::AlphaPosition alphaPosition, + QPixelFormat::AlphaPremultiplied premultiplied, + QPixelFormat::TypeInterpretation typeInterpretation, + QPixelFormat::ByteOrder byteOrder); +} + +Q_DECL_CONSTEXPR +QPixelFormat::QPixelFormat(ColorModel mdl, + uchar firstSize, + uchar secondSize, + uchar thirdSize, + uchar fourthSize, + uchar fifthSize, + uchar alfa, + AlphaUsage usage, + AlphaPosition position, + AlphaPremultiplied premult, + TypeInterpretation typeInterp, + ByteOrder b_order, + uchar s_enum) Q_DECL_NOTHROW + : data(set(ModelField, ModelFieldWidth, uchar(mdl)) | + set(FirstField, FirstFieldWidth, firstSize) | + set(SecondField, SecondFieldWidth, secondSize) | + set(ThirdField, ThirdFieldWidth, thirdSize) | + set(FourthField, FourthFieldWidth, fourthSize) | + set(FifthField, FifthFieldWidth, fifthSize) | + set(AlphaField, AlphaFieldWidth, alfa) | + set(AlphaUsageField, AlphaUsageFieldWidth, uchar(usage)) | + set(AlphaPositionField, AlphaPositionFieldWidth, uchar(position)) | + set(PremulField, PremulFieldWidth, uchar(premult)) | + set(TypeInterpretationField, TypeInterpretationFieldWidth, uchar(typeInterp)) | + set(ByteOrderField, ByteOrderFieldWidth, uchar(resolveByteOrder(b_order))) | + set(SubEnumField, SubEnumFieldWidth, s_enum) | + set(UnusedField, UnusedFieldWidth, 0)) +{ +} + +Q_DECL_CONSTEXPR inline QPixelFormat qPixelFormatRgba(uchar red, + uchar green, + uchar blue, + uchar alfa, + QPixelFormat::AlphaUsage usage, + QPixelFormat::AlphaPosition position, + QPixelFormat::AlphaPremultiplied pmul=QPixelFormat::NotPremultiplied, + QPixelFormat::TypeInterpretation typeInt=QPixelFormat::UnsignedInteger) Q_DECL_NOTHROW +{ + return QPixelFormat(QPixelFormat::RGB, + red, + green, + blue, + 0, + 0, + alfa, + usage, + position, + pmul, + typeInt); +} + +Q_DECL_CONSTEXPR inline QPixelFormat qPixelFormatGrayscale(uchar channelSize, + QPixelFormat::TypeInterpretation typeInt=QPixelFormat::UnsignedInteger) Q_DECL_NOTHROW +{ + return QPixelFormat(QPixelFormat::Grayscale, + channelSize, + 0, + 0, + 0, + 0, + 0, + QPixelFormat::IgnoresAlpha, + QPixelFormat::AtBeginning, + QPixelFormat::NotPremultiplied, + typeInt); +} + +Q_DECL_CONSTEXPR inline QPixelFormat qPixelFormatAlpha(uchar channelSize, + QPixelFormat::TypeInterpretation typeInt=QPixelFormat::UnsignedInteger) Q_DECL_NOTHROW +{ + return QPixelFormat(QPixelFormat::Alpha, + 0, + 0, + 0, + 0, + 0, + channelSize, + QPixelFormat::UsesAlpha, + QPixelFormat::AtBeginning, + QPixelFormat::NotPremultiplied, + typeInt); +} + +Q_DECL_CONSTEXPR inline QPixelFormat qPixelFormatCmyk(uchar channelSize, + uchar alfa=0, + QPixelFormat::AlphaUsage usage=QPixelFormat::IgnoresAlpha, + QPixelFormat::AlphaPosition position=QPixelFormat::AtBeginning, + QPixelFormat::TypeInterpretation typeInt=QPixelFormat::UnsignedInteger) Q_DECL_NOTHROW +{ + return QPixelFormat(QPixelFormat::CMYK, + channelSize, + channelSize, + channelSize, + channelSize, + 0, + alfa, + usage, + position, + QPixelFormat::NotPremultiplied, + typeInt); +} + +Q_DECL_CONSTEXPR inline QPixelFormat qPixelFormatHsl(uchar channelSize, + uchar alfa=0, + QPixelFormat::AlphaUsage usage=QPixelFormat::IgnoresAlpha, + QPixelFormat::AlphaPosition position=QPixelFormat::AtBeginning, + QPixelFormat::TypeInterpretation typeInt=QPixelFormat::FloatingPoint) Q_DECL_NOTHROW +{ + return QPixelFormat(QPixelFormat::HSL, + channelSize, + channelSize, + channelSize, + 0, + 0, + alfa, + usage, + position, + QPixelFormat::NotPremultiplied, + typeInt); +} + +Q_DECL_CONSTEXPR inline QPixelFormat qPixelFormatHsv(uchar channelSize, + uchar alfa=0, + QPixelFormat::AlphaUsage usage=QPixelFormat::IgnoresAlpha, + QPixelFormat::AlphaPosition position=QPixelFormat::AtBeginning, + QPixelFormat::TypeInterpretation typeInt=QPixelFormat::FloatingPoint) Q_DECL_NOTHROW +{ + return QPixelFormat(QPixelFormat::HSV, + channelSize, + channelSize, + channelSize, + 0, + 0, + alfa, + usage, + position, + QPixelFormat::NotPremultiplied, + typeInt); +} + +inline QPixelFormat qPixelFormatYuv(QPixelFormat::YUVLayout layout, + uchar alfa=0, + QPixelFormat::AlphaUsage usage=QPixelFormat::IgnoresAlpha, + QPixelFormat::AlphaPosition position=QPixelFormat::AtBeginning, + QPixelFormat::AlphaPremultiplied p_mul=QPixelFormat::NotPremultiplied, + QPixelFormat::TypeInterpretation typeInt=QPixelFormat::UnsignedByte, + QPixelFormat::ByteOrder b_order=QPixelFormat::LittleEndian) +{ + return QtPrivate::QPixelFormat_createYUV(layout, + alfa, + usage, + position, + p_mul, + typeInt, + b_order); +} + +QT_END_NAMESPACE + +#endif //QPIXELFORMAT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpixmap.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpixmap.h new file mode 100644 index 000000000..d651b57fd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpixmap.h @@ -0,0 +1,253 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPIXMAP_H +#define QPIXMAP_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qpaintdevice.h> +#include <QtGui/qcolor.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qstring.h> // char*->QString conversion +#include <QtCore/qsharedpointer.h> +#include <QtGui/qimage.h> +#include <QtGui/qtransform.h> + +QT_BEGIN_NAMESPACE + + +class QImageWriter; +class QImageReader; +class QColor; +class QVariant; +class QPlatformPixmap; + +class Q_GUI_EXPORT QPixmap : public QPaintDevice +{ +public: + QPixmap(); + explicit QPixmap(QPlatformPixmap *data); + QPixmap(int w, int h); + explicit QPixmap(const QSize &); + QPixmap(const QString& fileName, const char *format = Q_NULLPTR, Qt::ImageConversionFlags flags = Qt::AutoColor); +#ifndef QT_NO_IMAGEFORMAT_XPM + explicit QPixmap(const char * const xpm[]); +#endif + QPixmap(const QPixmap &); + ~QPixmap(); + + QPixmap &operator=(const QPixmap &); +#ifdef Q_COMPILER_RVALUE_REFS + inline QPixmap &operator=(QPixmap &&other) Q_DECL_NOEXCEPT + { qSwap(data, other.data); return *this; } +#endif + inline void swap(QPixmap &other) Q_DECL_NOEXCEPT + { qSwap(data, other.data); } + + operator QVariant() const; + + bool isNull() const; + int devType() const Q_DECL_OVERRIDE; + + int width() const; + int height() const; + QSize size() const; + QRect rect() const; + int depth() const; + + static int defaultDepth(); + + void fill(const QColor &fillColor = Qt::white); + void fill(const QPaintDevice *device, const QPoint &ofs); + inline void fill(const QPaintDevice *device, int xofs, int yofs) { fill(device, QPoint(xofs, yofs)); } + + QBitmap mask() const; + void setMask(const QBitmap &); + + qreal devicePixelRatio() const; + void setDevicePixelRatio(qreal scaleFactor); + + bool hasAlpha() const; + bool hasAlphaChannel() const; + +#ifndef QT_NO_IMAGE_HEURISTIC_MASK + QBitmap createHeuristicMask(bool clipTight = true) const; +#endif + QBitmap createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const; + + static QPixmap grabWindow(WId, int x=0, int y=0, int w=-1, int h=-1); + static QPixmap grabWidget(QObject *widget, const QRect &rect); + static inline QPixmap grabWidget(QObject *widget, int x=0, int y=0, int w=-1, int h=-1) + { return grabWidget(widget, QRect(x, y, w, h)); } + + inline QPixmap scaled(int w, int h, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio, + Qt::TransformationMode mode = Qt::FastTransformation) const + { return scaled(QSize(w, h), aspectMode, mode); } + QPixmap scaled(const QSize &s, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio, + Qt::TransformationMode mode = Qt::FastTransformation) const; + QPixmap scaledToWidth(int w, Qt::TransformationMode mode = Qt::FastTransformation) const; + QPixmap scaledToHeight(int h, Qt::TransformationMode mode = Qt::FastTransformation) const; + QPixmap transformed(const QMatrix &, Qt::TransformationMode mode = Qt::FastTransformation) const; + static QMatrix trueMatrix(const QMatrix &m, int w, int h); + QPixmap transformed(const QTransform &, Qt::TransformationMode mode = Qt::FastTransformation) const; + static QTransform trueMatrix(const QTransform &m, int w, int h); + + QImage toImage() const; + static QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor); + static QPixmap fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor); +#ifdef Q_COMPILER_RVALUE_REFS + static QPixmap fromImage(QImage &&image, Qt::ImageConversionFlags flags = Qt::AutoColor) + { + return fromImageInPlace(image, flags); + } +#endif + + bool load(const QString& fileName, const char *format = Q_NULLPTR, Qt::ImageConversionFlags flags = Qt::AutoColor); + bool loadFromData(const uchar *buf, uint len, const char* format = Q_NULLPTR, Qt::ImageConversionFlags flags = Qt::AutoColor); + inline bool loadFromData(const QByteArray &data, const char* format = Q_NULLPTR, Qt::ImageConversionFlags flags = Qt::AutoColor); + bool save(const QString& fileName, const char* format = Q_NULLPTR, int quality = -1) const; + bool save(QIODevice* device, const char* format = Q_NULLPTR, int quality = -1) const; + + bool convertFromImage(const QImage &img, Qt::ImageConversionFlags flags = Qt::AutoColor); + + inline QPixmap copy(int x, int y, int width, int height) const; + QPixmap copy(const QRect &rect = QRect()) const; + + inline void scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed = Q_NULLPTR); + void scroll(int dx, int dy, const QRect &rect, QRegion *exposed = Q_NULLPTR); + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline int serialNumber() const { return cacheKey() >> 32; } +#endif + qint64 cacheKey() const; + + bool isDetached() const; + void detach(); + + bool isQBitmap() const; + + QPaintEngine *paintEngine() const Q_DECL_OVERRIDE; + + inline bool operator!() const { return isNull(); } + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline QPixmap alphaChannel() const; + QT_DEPRECATED inline void setAlphaChannel(const QPixmap &); +#endif + +protected: + int metric(PaintDeviceMetric) const Q_DECL_OVERRIDE; + static QPixmap fromImageInPlace(QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor); + +private: + QExplicitlySharedDataPointer<QPlatformPixmap> data; + + bool doImageIO(QImageWriter *io, int quality) const; + + QPixmap(const QSize &s, int type); + void doInit(int, int, int); + Q_DUMMY_COMPARISON_OPERATOR(QPixmap) + friend class QPlatformPixmap; + friend class QBitmap; + friend class QPaintDevice; + friend class QPainter; + friend class QOpenGLWidget; + friend class QWidgetPrivate; + friend class QRasterBuffer; +#if !defined(QT_NO_DATASTREAM) + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPixmap &); +#endif + +public: + QPlatformPixmap* handle() const; + +public: + typedef QExplicitlySharedDataPointer<QPlatformPixmap> DataPtr; + inline DataPtr &data_ptr() { return data; } +}; + +Q_DECLARE_SHARED(QPixmap) + +inline QPixmap QPixmap::copy(int ax, int ay, int awidth, int aheight) const +{ + return copy(QRect(ax, ay, awidth, aheight)); +} + +inline void QPixmap::scroll(int dx, int dy, int ax, int ay, int awidth, int aheight, QRegion *exposed) +{ + scroll(dx, dy, QRect(ax, ay, awidth, aheight), exposed); +} + +inline bool QPixmap::loadFromData(const QByteArray &buf, const char *format, + Qt::ImageConversionFlags flags) +{ + return loadFromData(reinterpret_cast<const uchar *>(buf.constData()), buf.size(), format, flags); +} + +#if QT_DEPRECATED_SINCE(5, 0) +inline QPixmap QPixmap::alphaChannel() const +{ + return QPixmap::fromImage(toImage().alphaChannel()); +} + +inline void QPixmap::setAlphaChannel(const QPixmap &p) +{ + QImage image = toImage(); + image.setAlphaChannel(p.toImage()); + *this = QPixmap::fromImage(image); + +} +#endif + +/***************************************************************************** + QPixmap stream functions +*****************************************************************************/ + +#if !defined(QT_NO_DATASTREAM) +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QPixmap &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPixmap &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QPixmap &); +#endif + +QT_END_NAMESPACE + +#endif // QPIXMAP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpixmapcache.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpixmapcache.h new file mode 100644 index 000000000..856b82f55 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpixmapcache.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPIXMAPCACHE_H +#define QPIXMAPCACHE_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qpixmap.h> + +QT_BEGIN_NAMESPACE + + +class Q_GUI_EXPORT QPixmapCache +{ +public: + class KeyData; + class Q_GUI_EXPORT Key + { + public: + Key(); + Key(const Key &other); +#ifdef Q_COMPILER_RVALUE_REFS + Key(Key &&other) Q_DECL_NOTHROW : d(other.d) { other.d = Q_NULLPTR; } + Key &operator =(Key &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + ~Key(); + bool operator ==(const Key &key) const; + inline bool operator !=(const Key &key) const + { return !operator==(key); } + Key &operator =(const Key &other); + + void swap(Key &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + bool isValid() const Q_DECL_NOTHROW; + + private: + KeyData *d; + friend class QPMCache; + friend class QPixmapCache; + }; + + static int cacheLimit(); + static void setCacheLimit(int); + static QPixmap *find(const QString &key); + static bool find(const QString &key, QPixmap &pixmap); + static bool find(const QString &key, QPixmap *pixmap); + static bool find(const Key &key, QPixmap *pixmap); + static bool insert(const QString &key, const QPixmap &pixmap); + static Key insert(const QPixmap &pixmap); + static bool replace(const Key &key, const QPixmap &pixmap); + static void remove(const QString &key); + static void remove(const Key &key); + static void clear(); + +#ifdef Q_TEST_QPIXMAPCACHE + static void flushDetachedPixmaps(); + static int totalUsed(); +#endif +}; +Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QPixmapCache::Key) + +QT_END_NAMESPACE + +#endif // QPIXMAPCACHE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qpolygon.h b/qrenderdoc/3rdparty/qt/include/QtGui/qpolygon.h new file mode 100644 index 000000000..f192e8d10 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qpolygon.h @@ -0,0 +1,203 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPOLYGON_H +#define QPOLYGON_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qvector.h> +#include <QtCore/qpoint.h> +#include <QtCore/qrect.h> + +QT_BEGIN_NAMESPACE + + +class QMatrix; +class QTransform; +class QRect; +class QVariant; + +class Q_GUI_EXPORT QPolygon : public QVector<QPoint> +{ +public: + inline QPolygon() {} + inline ~QPolygon() {} + inline explicit QPolygon(int size); + inline /*implicit*/ QPolygon(const QVector<QPoint> &v) : QVector<QPoint>(v) {} +#ifdef Q_COMPILER_RVALUE_REFS + /*implicit*/ QPolygon(QVector<QPoint> &&v) Q_DECL_NOTHROW : QVector<QPoint>(std::move(v)) {} +#endif + QPolygon(const QRect &r, bool closed=false); + QPolygon(int nPoints, const int *points); + QPolygon(const QPolygon &other) : QVector<QPoint>(other) {} +#ifdef Q_COMPILER_RVALUE_REFS + QPolygon(QPolygon &&other) Q_DECL_NOTHROW : QVector<QPoint>(std::move(other)) {} + QPolygon &operator=(QPolygon &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QPolygon &operator=(const QPolygon &other) { QVector<QPoint>::operator=(other); return *this; } + void swap(QPolygon &other) Q_DECL_NOTHROW { QVector<QPoint>::swap(other); } // prevent QVector<QPoint><->QPolygon swaps + + operator QVariant() const; + + void translate(int dx, int dy); + void translate(const QPoint &offset); + + Q_REQUIRED_RESULT QPolygon translated(int dx, int dy) const; + Q_REQUIRED_RESULT inline QPolygon translated(const QPoint &offset) const; + + QRect boundingRect() const; + + void point(int i, int *x, int *y) const; + QPoint point(int i) const; + void setPoint(int index, int x, int y); + void setPoint(int index, const QPoint &p); + void setPoints(int nPoints, const int *points); + void setPoints(int nPoints, int firstx, int firsty, ...); + void putPoints(int index, int nPoints, const int *points); + void putPoints(int index, int nPoints, int firstx, int firsty, ...); + void putPoints(int index, int nPoints, const QPolygon & from, int fromIndex=0); + + bool containsPoint(const QPoint &pt, Qt::FillRule fillRule) const; + + Q_REQUIRED_RESULT QPolygon united(const QPolygon &r) const; + Q_REQUIRED_RESULT QPolygon intersected(const QPolygon &r) const; + Q_REQUIRED_RESULT QPolygon subtracted(const QPolygon &r) const; +}; +Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QPolygon) + +inline QPolygon::QPolygon(int asize) : QVector<QPoint>(asize) {} + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QPolygon &); +#endif + +/***************************************************************************** + QPolygon stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &stream, const QPolygon &polygon); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &stream, QPolygon &polygon); +#endif + +/***************************************************************************** + Misc. QPolygon functions + *****************************************************************************/ + +inline void QPolygon::setPoint(int index, const QPoint &pt) +{ (*this)[index] = pt; } + +inline void QPolygon::setPoint(int index, int x, int y) +{ (*this)[index] = QPoint(x, y); } + +inline QPoint QPolygon::point(int index) const +{ return at(index); } + +inline void QPolygon::translate(const QPoint &offset) +{ translate(offset.x(), offset.y()); } + +inline QPolygon QPolygon::translated(const QPoint &offset) const +{ return translated(offset.x(), offset.y()); } + +class QRectF; + +class Q_GUI_EXPORT QPolygonF : public QVector<QPointF> +{ +public: + inline QPolygonF() {} + inline ~QPolygonF() {} + inline explicit QPolygonF(int size); + inline /*implicit*/ QPolygonF(const QVector<QPointF> &v) : QVector<QPointF>(v) {} +#ifdef Q_COMPILER_RVALUE_REFS + /* implicit */ QPolygonF(QVector<QPointF> &&v) Q_DECL_NOTHROW : QVector<QPointF>(std::move(v)) {} +#endif + QPolygonF(const QRectF &r); + /*implicit*/ QPolygonF(const QPolygon &a); + inline QPolygonF(const QPolygonF &a) : QVector<QPointF>(a) {} +#ifdef Q_COMPILER_RVALUE_REFS + QPolygonF(QPolygonF &&other) Q_DECL_NOTHROW : QVector<QPointF>(std::move(other)) {} + QPolygonF &operator=(QPolygonF &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QPolygonF &operator=(const QPolygonF &other) { QVector<QPointF>::operator=(other); return *this; } + inline void swap(QPolygonF &other) { QVector<QPointF>::swap(other); } // prevent QVector<QPointF><->QPolygonF swaps + + operator QVariant() const; + + inline void translate(qreal dx, qreal dy); + void translate(const QPointF &offset); + + inline QPolygonF translated(qreal dx, qreal dy) const; + Q_REQUIRED_RESULT QPolygonF translated(const QPointF &offset) const; + + QPolygon toPolygon() const; + + bool isClosed() const { return !isEmpty() && first() == last(); } + + QRectF boundingRect() const; + + bool containsPoint(const QPointF &pt, Qt::FillRule fillRule) const; + + Q_REQUIRED_RESULT QPolygonF united(const QPolygonF &r) const; + Q_REQUIRED_RESULT QPolygonF intersected(const QPolygonF &r) const; + Q_REQUIRED_RESULT QPolygonF subtracted(const QPolygonF &r) const; +}; +Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QPolygonF) + +inline QPolygonF::QPolygonF(int asize) : QVector<QPointF>(asize) {} + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QPolygonF &); +#endif + +/***************************************************************************** + QPolygonF stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &stream, const QPolygonF &array); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &stream, QPolygonF &array); +#endif + +inline void QPolygonF::translate(qreal dx, qreal dy) +{ translate(QPointF(dx, dy)); } + +inline QPolygonF QPolygonF::translated(qreal dx, qreal dy) const +{ return translated(QPointF(dx, dy)); } + +QT_END_NAMESPACE + +#endif // QPOLYGON_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qquaternion.h b/qrenderdoc/3rdparty/qt/include/QtGui/qquaternion.h new file mode 100644 index 000000000..7f7f89db4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qquaternion.h @@ -0,0 +1,406 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQUATERNION_H +#define QQUATERNION_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qgenericmatrix.h> +#include <QtGui/qvector3d.h> +#include <QtGui/qvector4d.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_QUATERNION + +class QMatrix4x4; +class QVariant; + +class Q_GUI_EXPORT QQuaternion +{ +public: + QQuaternion(); + explicit QQuaternion(Qt::Initialization) {} + QQuaternion(float scalar, float xpos, float ypos, float zpos); +#ifndef QT_NO_VECTOR3D + QQuaternion(float scalar, const QVector3D& vector); +#endif +#ifndef QT_NO_VECTOR4D + explicit QQuaternion(const QVector4D& vector); +#endif + + bool isNull() const; + bool isIdentity() const; + +#ifndef QT_NO_VECTOR3D + QVector3D vector() const; + void setVector(const QVector3D& vector); +#endif + void setVector(float x, float y, float z); + + float x() const; + float y() const; + float z() const; + float scalar() const; + + void setX(float x); + void setY(float y); + void setZ(float z); + void setScalar(float scalar); + + Q_DECL_CONSTEXPR static inline float dotProduct(const QQuaternion &q1, const QQuaternion &q2); + + float length() const; + float lengthSquared() const; + + Q_REQUIRED_RESULT QQuaternion normalized() const; + void normalize(); + + inline QQuaternion inverted() const; + + Q_REQUIRED_RESULT QQuaternion conjugated() const; +#if QT_DEPRECATED_SINCE(5, 5) + Q_REQUIRED_RESULT QT_DEPRECATED QQuaternion conjugate() const; +#endif + + QVector3D rotatedVector(const QVector3D& vector) const; + + QQuaternion &operator+=(const QQuaternion &quaternion); + QQuaternion &operator-=(const QQuaternion &quaternion); + QQuaternion &operator*=(float factor); + QQuaternion &operator*=(const QQuaternion &quaternion); + QQuaternion &operator/=(float divisor); + + friend inline bool operator==(const QQuaternion &q1, const QQuaternion &q2); + friend inline bool operator!=(const QQuaternion &q1, const QQuaternion &q2); + friend inline const QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2); + friend inline const QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2); + friend inline const QQuaternion operator*(float factor, const QQuaternion &quaternion); + friend inline const QQuaternion operator*(const QQuaternion &quaternion, float factor); + friend inline const QQuaternion operator*(const QQuaternion &q1, const QQuaternion& q2); + friend inline const QQuaternion operator-(const QQuaternion &quaternion); + friend inline const QQuaternion operator/(const QQuaternion &quaternion, float divisor); + + friend inline bool qFuzzyCompare(const QQuaternion& q1, const QQuaternion& q2); + +#ifndef QT_NO_VECTOR4D + QVector4D toVector4D() const; +#endif + + operator QVariant() const; + +#ifndef QT_NO_VECTOR3D + inline void getAxisAndAngle(QVector3D *axis, float *angle) const; + static QQuaternion fromAxisAndAngle(const QVector3D& axis, float angle); +#endif + void getAxisAndAngle(float *x, float *y, float *z, float *angle) const; + static QQuaternion fromAxisAndAngle + (float x, float y, float z, float angle); + +#ifndef QT_NO_VECTOR3D + inline QVector3D toEulerAngles() const; + static inline QQuaternion fromEulerAngles(const QVector3D &eulerAngles); +#endif + void getEulerAngles(float *pitch, float *yaw, float *roll) const; + static QQuaternion fromEulerAngles(float pitch, float yaw, float roll); + + QMatrix3x3 toRotationMatrix() const; + static QQuaternion fromRotationMatrix(const QMatrix3x3 &rot3x3); + +#ifndef QT_NO_VECTOR3D + void getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const; + static QQuaternion fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis); + + static QQuaternion fromDirection(const QVector3D &direction, const QVector3D &up); + + static QQuaternion rotationTo(const QVector3D &from, const QVector3D &to); +#endif + + static QQuaternion slerp + (const QQuaternion& q1, const QQuaternion& q2, float t); + static QQuaternion nlerp + (const QQuaternion& q1, const QQuaternion& q2, float t); + +private: + float wp, xp, yp, zp; +}; + +Q_DECLARE_TYPEINFO(QQuaternion, Q_MOVABLE_TYPE); + +inline QQuaternion::QQuaternion() : wp(1.0f), xp(0.0f), yp(0.0f), zp(0.0f) {} + +inline QQuaternion::QQuaternion(float aScalar, float xpos, float ypos, float zpos) : wp(aScalar), xp(xpos), yp(ypos), zp(zpos) {} + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wfloat-equal") +QT_WARNING_DISABLE_GCC("-Wfloat-equal") +inline bool QQuaternion::isNull() const +{ + return wp == 0.0f && xp == 0.0f && yp == 0.0f && zp == 0.0f; +} + +inline bool QQuaternion::isIdentity() const +{ + return wp == 1.0f && xp == 0.0f && yp == 0.0f && zp == 0.0f; +} + +inline bool operator==(const QQuaternion &q1, const QQuaternion &q2) +{ + return q1.wp == q2.wp && q1.xp == q2.xp && q1.yp == q2.yp && q1.zp == q2.zp; +} +QT_WARNING_POP + +inline float QQuaternion::x() const { return xp; } +inline float QQuaternion::y() const { return yp; } +inline float QQuaternion::z() const { return zp; } +inline float QQuaternion::scalar() const { return wp; } + +inline void QQuaternion::setX(float aX) { xp = aX; } +inline void QQuaternion::setY(float aY) { yp = aY; } +inline void QQuaternion::setZ(float aZ) { zp = aZ; } +inline void QQuaternion::setScalar(float aScalar) { wp = aScalar; } + +Q_DECL_CONSTEXPR inline float QQuaternion::dotProduct(const QQuaternion &q1, const QQuaternion &q2) +{ + return q1.wp * q2.wp + q1.xp * q2.xp + q1.yp * q2.yp + q1.zp * q2.zp; +} + +inline QQuaternion QQuaternion::inverted() const +{ + // Need some extra precision if the length is very small. + double len = double(wp) * double(wp) + + double(xp) * double(xp) + + double(yp) * double(yp) + + double(zp) * double(zp); + if (!qFuzzyIsNull(len)) + return QQuaternion(double(wp) / len, double(-xp) / len, + double(-yp) / len, double(-zp) / len); + return QQuaternion(0.0f, 0.0f, 0.0f, 0.0f); +} + +inline QQuaternion QQuaternion::conjugated() const +{ + return QQuaternion(wp, -xp, -yp, -zp); +} + +#if QT_DEPRECATED_SINCE(5, 5) +inline QQuaternion QQuaternion::conjugate() const +{ + return conjugated(); +} +#endif + +inline QQuaternion &QQuaternion::operator+=(const QQuaternion &quaternion) +{ + wp += quaternion.wp; + xp += quaternion.xp; + yp += quaternion.yp; + zp += quaternion.zp; + return *this; +} + +inline QQuaternion &QQuaternion::operator-=(const QQuaternion &quaternion) +{ + wp -= quaternion.wp; + xp -= quaternion.xp; + yp -= quaternion.yp; + zp -= quaternion.zp; + return *this; +} + +inline QQuaternion &QQuaternion::operator*=(float factor) +{ + wp *= factor; + xp *= factor; + yp *= factor; + zp *= factor; + return *this; +} + +inline const QQuaternion operator*(const QQuaternion &q1, const QQuaternion& q2) +{ + float yy = (q1.wp - q1.yp) * (q2.wp + q2.zp); + float zz = (q1.wp + q1.yp) * (q2.wp - q2.zp); + float ww = (q1.zp + q1.xp) * (q2.xp + q2.yp); + float xx = ww + yy + zz; + float qq = 0.5f * (xx + (q1.zp - q1.xp) * (q2.xp - q2.yp)); + + float w = qq - ww + (q1.zp - q1.yp) * (q2.yp - q2.zp); + float x = qq - xx + (q1.xp + q1.wp) * (q2.xp + q2.wp); + float y = qq - yy + (q1.wp - q1.xp) * (q2.yp + q2.zp); + float z = qq - zz + (q1.zp + q1.yp) * (q2.wp - q2.xp); + + return QQuaternion(w, x, y, z); +} + +inline QQuaternion &QQuaternion::operator*=(const QQuaternion &quaternion) +{ + *this = *this * quaternion; + return *this; +} + +inline QQuaternion &QQuaternion::operator/=(float divisor) +{ + wp /= divisor; + xp /= divisor; + yp /= divisor; + zp /= divisor; + return *this; +} + +inline bool operator!=(const QQuaternion &q1, const QQuaternion &q2) +{ + return !operator==(q1, q2); +} + +inline const QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2) +{ + return QQuaternion(q1.wp + q2.wp, q1.xp + q2.xp, q1.yp + q2.yp, q1.zp + q2.zp); +} + +inline const QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2) +{ + return QQuaternion(q1.wp - q2.wp, q1.xp - q2.xp, q1.yp - q2.yp, q1.zp - q2.zp); +} + +inline const QQuaternion operator*(float factor, const QQuaternion &quaternion) +{ + return QQuaternion(quaternion.wp * factor, quaternion.xp * factor, quaternion.yp * factor, quaternion.zp * factor); +} + +inline const QQuaternion operator*(const QQuaternion &quaternion, float factor) +{ + return QQuaternion(quaternion.wp * factor, quaternion.xp * factor, quaternion.yp * factor, quaternion.zp * factor); +} + +inline const QQuaternion operator-(const QQuaternion &quaternion) +{ + return QQuaternion(-quaternion.wp, -quaternion.xp, -quaternion.yp, -quaternion.zp); +} + +inline const QQuaternion operator/(const QQuaternion &quaternion, float divisor) +{ + return QQuaternion(quaternion.wp / divisor, quaternion.xp / divisor, quaternion.yp / divisor, quaternion.zp / divisor); +} + +inline bool qFuzzyCompare(const QQuaternion& q1, const QQuaternion& q2) +{ + return qFuzzyCompare(q1.wp, q2.wp) && + qFuzzyCompare(q1.xp, q2.xp) && + qFuzzyCompare(q1.yp, q2.yp) && + qFuzzyCompare(q1.zp, q2.zp); +} + +#ifndef QT_NO_VECTOR3D + +inline QQuaternion::QQuaternion(float aScalar, const QVector3D& aVector) + : wp(aScalar), xp(aVector.x()), yp(aVector.y()), zp(aVector.z()) {} + +inline void QQuaternion::setVector(const QVector3D& aVector) +{ + xp = aVector.x(); + yp = aVector.y(); + zp = aVector.z(); +} + +inline QVector3D QQuaternion::vector() const +{ + return QVector3D(xp, yp, zp); +} + +inline QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec) +{ + return quaternion.rotatedVector(vec); +} + +inline void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const +{ + float aX, aY, aZ; + getAxisAndAngle(&aX, &aY, &aZ, angle); + *axis = QVector3D(aX, aY, aZ); +} + +inline QVector3D QQuaternion::toEulerAngles() const +{ + float pitch, yaw, roll; + getEulerAngles(&pitch, &yaw, &roll); + return QVector3D(pitch, yaw, roll); +} + +inline QQuaternion QQuaternion::fromEulerAngles(const QVector3D &eulerAngles) +{ + return QQuaternion::fromEulerAngles(eulerAngles.x(), eulerAngles.y(), eulerAngles.z()); +} + +#endif + +inline void QQuaternion::setVector(float aX, float aY, float aZ) +{ + xp = aX; + yp = aY; + zp = aZ; +} + +#ifndef QT_NO_VECTOR4D + +inline QQuaternion::QQuaternion(const QVector4D& aVector) + : wp(aVector.w()), xp(aVector.x()), yp(aVector.y()), zp(aVector.z()) {} + +inline QVector4D QQuaternion::toVector4D() const +{ + return QVector4D(xp, yp, zp, wp); +} + +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QQuaternion &q); +#endif + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QQuaternion &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QQuaternion &); +#endif + +#endif + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qrasterwindow.h b/qrenderdoc/3rdparty/qt/include/QtGui/qrasterwindow.h new file mode 100644 index 000000000..9b29183ad --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qrasterwindow.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRASTERWINDOW_H +#define QRASTERWINDOW_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/QPaintDeviceWindow> + +QT_BEGIN_NAMESPACE + +class QRasterWindowPrivate; + +class Q_GUI_EXPORT QRasterWindow : public QPaintDeviceWindow +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QRasterWindow) + +public: + explicit QRasterWindow(QWindow *parent = Q_NULLPTR); + ~QRasterWindow(); + +protected: + int metric(PaintDeviceMetric metric) const Q_DECL_OVERRIDE; + QPaintDevice *redirected(QPoint *) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QRasterWindow) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qrawfont.h b/qrenderdoc/3rdparty/qt/include/QtGui/qrawfont.h new file mode 100644 index 000000000..470f2694e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qrawfont.h @@ -0,0 +1,180 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRAWFONT_H +#define QRAWFONT_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qstring.h> +#include <QtCore/qiodevice.h> +#include <QtCore/qglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qpoint.h> +#include <QtGui/qfont.h> +#include <QtGui/qtransform.h> +#include <QtGui/qfontdatabase.h> + +#if !defined(QT_NO_RAWFONT) + +QT_BEGIN_NAMESPACE + + +class QRawFontPrivate; +class Q_GUI_EXPORT QRawFont +{ +public: + enum AntialiasingType { + PixelAntialiasing, + SubPixelAntialiasing + }; + + enum LayoutFlag { + SeparateAdvances = 0, + KernedAdvances = 1, + UseDesignMetrics = 2 + }; + Q_DECLARE_FLAGS(LayoutFlags, LayoutFlag) + + QRawFont(); + QRawFont(const QString &fileName, + qreal pixelSize, + QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting); + QRawFont(const QByteArray &fontData, + qreal pixelSize, + QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting); + QRawFont(const QRawFont &other); +#ifdef Q_COMPILER_RVALUE_REFS + QRawFont &operator=(QRawFont &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QRawFont &operator=(const QRawFont &other); + ~QRawFont(); + + void swap(QRawFont &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool isValid() const; + + bool operator==(const QRawFont &other) const; + inline bool operator!=(const QRawFont &other) const + { return !operator==(other); } + + QString familyName() const; + QString styleName() const; + + QFont::Style style() const; + int weight() const; + + 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, + const QTransform &transform = QTransform()) const; + QPainterPath pathForGlyph(quint32 glyphIndex) const; + QRectF boundingRect(quint32 glyphIndex) const; + + void setPixelSize(qreal pixelSize); + qreal pixelSize() const; + + QFont::HintingPreference hintingPreference() const; + + qreal ascent() const; + qreal capHeight() const; + qreal descent() const; + qreal leading() const; + qreal xHeight() const; + qreal averageCharWidth() const; + qreal maxCharWidth() const; + qreal lineThickness() const; + qreal underlinePosition() const; + + qreal unitsPerEm() const; + + void loadFromFile(const QString &fileName, + qreal pixelSize, + QFont::HintingPreference hintingPreference); + + void loadFromData(const QByteArray &fontData, + qreal pixelSize, + QFont::HintingPreference hintingPreference); + + bool supportsCharacter(uint ucs4) const; + bool supportsCharacter(QChar character) const; + QList<QFontDatabase::WritingSystem> supportedWritingSystems() const; + + QByteArray fontTable(const char *tagName) const; + + static QRawFont fromFont(const QFont &font, + QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any); + +private: + friend class QRawFontPrivate; + friend class QTextLayout; + friend class QTextEngine; + + QExplicitlySharedDataPointer<QRawFontPrivate> d; +}; + +Q_DECLARE_SHARED(QRawFont) + +Q_DECLARE_OPERATORS_FOR_FLAGS(QRawFont::LayoutFlags) + +Q_GUI_EXPORT uint qHash(const QRawFont &font, uint seed = 0) Q_DECL_NOTHROW; + +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(), layoutFlags)) + return advances; + return QVector<QPointF>(); +} + +inline QVector<QPointF> QRawFont::advancesForGlyphIndexes(const QVector<quint32> &glyphIndexes) const +{ + return advancesForGlyphIndexes(glyphIndexes, QRawFont::SeparateAdvances); +} + +QT_END_NAMESPACE + +#endif // QT_NO_RAWFONT + +#endif // QRAWFONT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qregion.h b/qrenderdoc/3rdparty/qt/include/QtGui/qregion.h new file mode 100644 index 000000000..8dd764944 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qregion.h @@ -0,0 +1,198 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QREGION_H +#define QREGION_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qatomic.h> +#include <QtCore/qrect.h> +#include <QtGui/qwindowdefs.h> + +#ifndef QT_NO_DATASTREAM +#include <QtCore/qdatastream.h> +#endif + +QT_BEGIN_NAMESPACE + + +template <class T> class QVector; +class QVariant; + +struct QRegionPrivate; + +class QBitmap; + +class Q_GUI_EXPORT QRegion +{ +public: + enum RegionType { Rectangle, Ellipse }; + + QRegion(); + QRegion(int x, int y, int w, int h, RegionType t = Rectangle); + QRegion(const QRect &r, RegionType t = Rectangle); + QRegion(const QPolygon &pa, Qt::FillRule fillRule = Qt::OddEvenFill); + QRegion(const QRegion ®ion); + QRegion(QRegion &&other) Q_DECL_NOTHROW + : d(other.d) { other.d = const_cast<QRegionData*>(&shared_empty); } + QRegion(const QBitmap &bitmap); + ~QRegion(); + QRegion &operator=(const QRegion &); +#ifdef Q_COMPILER_RVALUE_REFS + inline QRegion &operator=(QRegion &&other) Q_DECL_NOEXCEPT + { qSwap(d, other.d); return *this; } +#endif + inline void swap(QRegion &other) Q_DECL_NOEXCEPT { qSwap(d, other.d); } + bool isEmpty() const; + bool isNull() const; + + typedef const QRect *const_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + + const_iterator begin() const Q_DECL_NOTHROW; + const_iterator cbegin() const Q_DECL_NOTHROW { return begin(); } + const_iterator end() const Q_DECL_NOTHROW; + const_iterator cend() const Q_DECL_NOTHROW { return end(); } + const_reverse_iterator rbegin() const Q_DECL_NOTHROW { return const_reverse_iterator(end()); } + const_reverse_iterator crbegin() const Q_DECL_NOTHROW { return rbegin(); } + const_reverse_iterator rend() const Q_DECL_NOTHROW { return const_reverse_iterator(begin()); } + const_reverse_iterator crend() const Q_DECL_NOTHROW { return rend(); } + + bool contains(const QPoint &p) const; + bool contains(const QRect &r) const; + + void translate(int dx, int dy); + inline void translate(const QPoint &p) { translate(p.x(), p.y()); } + Q_REQUIRED_RESULT QRegion translated(int dx, int dy) const; + Q_REQUIRED_RESULT inline QRegion translated(const QPoint &p) const { return translated(p.x(), p.y()); } + + Q_REQUIRED_RESULT QRegion united(const QRegion &r) const; + Q_REQUIRED_RESULT QRegion united(const QRect &r) const; + Q_REQUIRED_RESULT QRegion intersected(const QRegion &r) const; + Q_REQUIRED_RESULT QRegion intersected(const QRect &r) const; + Q_REQUIRED_RESULT QRegion subtracted(const QRegion &r) const; + Q_REQUIRED_RESULT QRegion xored(const QRegion &r) const; + +#if QT_DEPRECATED_SINCE(5, 0) + Q_REQUIRED_RESULT inline QT_DEPRECATED QRegion unite(const QRegion &r) const { return united(r); } + Q_REQUIRED_RESULT inline QT_DEPRECATED QRegion unite(const QRect &r) const { return united(r); } + Q_REQUIRED_RESULT inline QT_DEPRECATED QRegion intersect(const QRegion &r) const { return intersected(r); } + Q_REQUIRED_RESULT inline QT_DEPRECATED QRegion intersect(const QRect &r) const { return intersected(r); } + Q_REQUIRED_RESULT inline QT_DEPRECATED QRegion subtract(const QRegion &r) const { return subtracted(r); } + Q_REQUIRED_RESULT inline QT_DEPRECATED QRegion eor(const QRegion &r) const { return xored(r); } +#endif + + bool intersects(const QRegion &r) const; + bool intersects(const QRect &r) const; + + QRect boundingRect() const Q_DECL_NOTHROW; + QVector<QRect> rects() const; + void setRects(const QRect *rect, int num); + int rectCount() const Q_DECL_NOTHROW; +#ifdef Q_COMPILER_MANGLES_RETURN_TYPE + // ### Qt 6: remove these, they're kept for MSVC compat + const QRegion operator|(const QRegion &r) const; + const QRegion operator+(const QRegion &r) const; + const QRegion operator+(const QRect &r) const; + const QRegion operator&(const QRegion &r) const; + const QRegion operator&(const QRect &r) const; + const QRegion operator-(const QRegion &r) const; + const QRegion operator^(const QRegion &r) const; +#else + QRegion operator|(const QRegion &r) const; + QRegion operator+(const QRegion &r) const; + QRegion operator+(const QRect &r) const; + QRegion operator&(const QRegion &r) const; + QRegion operator&(const QRect &r) const; + QRegion operator-(const QRegion &r) const; + QRegion operator^(const QRegion &r) const; +#endif // Q_COMPILER_MANGLES_RETURN_TYPE + QRegion& operator|=(const QRegion &r); + QRegion& operator+=(const QRegion &r); + QRegion& operator+=(const QRect &r); + QRegion& operator&=(const QRegion &r); + QRegion& operator&=(const QRect &r); + QRegion& operator-=(const QRegion &r); + QRegion& operator^=(const QRegion &r); + + bool operator==(const QRegion &r) const; + inline bool operator!=(const QRegion &r) const { return !(operator==(r)); } + operator QVariant() const; + +#ifndef QT_NO_DATASTREAM + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QRegion &); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QRegion &); +#endif +private: + QRegion copy() const; // helper of detach. + void detach(); +Q_GUI_EXPORT + friend bool qt_region_strictContains(const QRegion ®ion, + const QRect &rect); + friend struct QRegionPrivate; + +#ifndef QT_NO_DATASTREAM + void exec(const QByteArray &ba, int ver = 0, QDataStream::ByteOrder byteOrder = QDataStream::BigEndian); +#endif + struct QRegionData { + QtPrivate::RefCount ref; + QRegionPrivate *qt_rgn; + }; + struct QRegionData *d; + static const struct QRegionData shared_empty; + static void cleanUp(QRegionData *x); +}; +Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QRegion) + +/***************************************************************************** + QRegion stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QRegion &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QRegion &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QRegion &); +#endif + +QT_END_NAMESPACE + +#endif // QREGION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qrgb.h b/qrenderdoc/3rdparty/qt/include/QtGui/qrgb.h new file mode 100644 index 000000000..fe8306109 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qrgb.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRGB_H +#define QRGB_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qprocessordetection.h> + +QT_BEGIN_NAMESPACE + + +typedef unsigned int QRgb; // RGB triplet + +// non-namespaced Qt global variable +const Q_DECL_UNUSED QRgb RGB_MASK = 0x00ffffff; // masks RGB values + +inline Q_DECL_CONSTEXPR int qRed(QRgb rgb) // get red part of RGB +{ return ((rgb >> 16) & 0xff); } + +inline Q_DECL_CONSTEXPR int qGreen(QRgb rgb) // get green part of RGB +{ return ((rgb >> 8) & 0xff); } + +inline Q_DECL_CONSTEXPR int qBlue(QRgb rgb) // get blue part of RGB +{ return (rgb & 0xff); } + +inline Q_DECL_CONSTEXPR int qAlpha(QRgb rgb) // get alpha part of RGBA +{ return rgb >> 24; } + +inline Q_DECL_CONSTEXPR QRgb qRgb(int r, int g, int b)// set RGB value +{ return (0xffu << 24) | ((r & 0xffu) << 16) | ((g & 0xffu) << 8) | (b & 0xffu); } + +inline Q_DECL_CONSTEXPR QRgb qRgba(int r, int g, int b, int a)// set RGBA value +{ return ((a & 0xffu) << 24) | ((r & 0xffu) << 16) | ((g & 0xffu) << 8) | (b & 0xffu); } + +inline Q_DECL_CONSTEXPR int qGray(int r, int g, int b)// convert R,G,B to gray 0..255 +{ return (r*11+g*16+b*5)/32; } + +inline Q_DECL_CONSTEXPR int qGray(QRgb rgb) // convert RGB to gray 0..255 +{ return qGray(qRed(rgb), qGreen(rgb), qBlue(rgb)); } + +inline Q_DECL_CONSTEXPR bool qIsGray(QRgb rgb) +{ return qRed(rgb) == qGreen(rgb) && qRed(rgb) == qBlue(rgb); } + +inline Q_DECL_RELAXED_CONSTEXPR QRgb qPremultiply(QRgb x) +{ + const uint a = qAlpha(x); + uint t = (x & 0xff00ff) * a; + t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8; + t &= 0xff00ff; + + x = ((x >> 8) & 0xff) * a; + x = (x + ((x >> 8) & 0xff) + 0x80); + x &= 0xff00; + return x | t | (a << 24); +} + +Q_GUI_EXPORT extern const uint qt_inv_premul_factor[]; + +inline QRgb qUnpremultiply(QRgb p) +{ + const uint alpha = qAlpha(p); + // Alpha 255 and 0 are the two most common values, which makes them beneficial to short-cut. + if (alpha == 255) + return p; + if (alpha == 0) + return 0; + // (p*(0x00ff00ff/alpha)) >> 16 == (p*255)/alpha for all p and alpha <= 256. + const uint invAlpha = qt_inv_premul_factor[alpha]; + // We add 0x8000 to get even rounding. The rounding also ensures that qPremultiply(qUnpremultiply(p)) == p for all p. + return qRgba((qRed(p)*invAlpha + 0x8000)>>16, (qGreen(p)*invAlpha + 0x8000)>>16, (qBlue(p)*invAlpha + 0x8000)>>16, alpha); +} + +QT_END_NAMESPACE + +#endif // QRGB_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qrgba64.h b/qrenderdoc/3rdparty/qt/include/QtGui/qrgba64.h new file mode 100644 index 000000000..2c8f8fa8c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qrgba64.h @@ -0,0 +1,222 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRGBA64_H +#define QRGBA64_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qprocessordetection.h> + +QT_BEGIN_NAMESPACE + +class QRgba64 { + quint64 rgba; + + // Make sure that the representation always has the order: red green blue alpha, independent + // of byte order. This way, vector operations that assume 4 16-bit values see the correct ones. + enum Shifts { +#if Q_BYTE_ORDER == Q_BIG_ENDIAN + RedShift = 48, + GreenShift = 32, + BlueShift = 16, + AlphaShift = 0 +#else // little endian: + RedShift = 0, + GreenShift = 16, + BlueShift = 32, + AlphaShift = 48 +#endif + }; + + explicit Q_ALWAYS_INLINE Q_DECL_CONSTEXPR QRgba64(quint64 c) : rgba(c) { } +public: + QRgba64() = default; + + Q_DECL_CONSTEXPR static + QRgba64 fromRgba64(quint64 c) + { + return QRgba64(c); + } + Q_DECL_CONSTEXPR static + QRgba64 fromRgba64(quint16 red, quint16 green, quint16 blue, quint16 alpha) + { + return fromRgba64(quint64(red) << RedShift + | quint64(green) << GreenShift + | quint64(blue) << BlueShift + | quint64(alpha) << AlphaShift); + } + Q_DECL_RELAXED_CONSTEXPR static QRgba64 fromRgba(quint8 red, quint8 green, quint8 blue, quint8 alpha) + { + QRgba64 rgb64 = fromRgba64(red, green, blue, alpha); + // Expand the range so that 0x00 maps to 0x0000 and 0xff maps to 0xffff. + rgb64.rgba |= rgb64.rgba << 8; + return rgb64; + } + Q_DECL_RELAXED_CONSTEXPR static + QRgba64 fromArgb32(uint rgb) + { + return fromRgba(quint8(rgb >> 16), quint8(rgb >> 8), quint8(rgb), quint8(rgb >> 24)); + } + + Q_DECL_CONSTEXPR bool isOpaque() const + { + return (rgba & alphaMask()) == alphaMask(); + } + Q_DECL_CONSTEXPR bool isTransparent() const + { + return (rgba & alphaMask()) == 0; + } + + Q_DECL_CONSTEXPR quint16 red() const { return quint16(rgba >> RedShift); } + Q_DECL_CONSTEXPR quint16 green() const { return quint16(rgba >> GreenShift); } + Q_DECL_CONSTEXPR quint16 blue() const { return quint16(rgba >> BlueShift); } + Q_DECL_CONSTEXPR quint16 alpha() const { return quint16(rgba >> AlphaShift); } + void setRed(quint16 _red) { rgba = (rgba & ~(Q_UINT64_C(0xffff) << RedShift)) | (quint64(_red) << RedShift); } + void setGreen(quint16 _green) { rgba = (rgba & ~(Q_UINT64_C(0xffff) << GreenShift)) | (quint64(_green) << GreenShift); } + void setBlue(quint16 _blue) { rgba = (rgba & ~(Q_UINT64_C(0xffff) << BlueShift)) | (quint64(_blue) << BlueShift); } + void setAlpha(quint16 _alpha) { rgba = (rgba & ~(Q_UINT64_C(0xffff) << AlphaShift)) | (quint64(_alpha) << AlphaShift); } + + Q_DECL_CONSTEXPR quint8 red8() const { return div_257(red()); } + Q_DECL_CONSTEXPR quint8 green8() const { return div_257(green()); } + Q_DECL_CONSTEXPR quint8 blue8() const { return div_257(blue()); } + Q_DECL_CONSTEXPR quint8 alpha8() const { return div_257(alpha()); } + Q_DECL_CONSTEXPR uint toArgb32() const + { + return uint((alpha8() << 24) | (red8() << 16) | (green8() << 8) | blue8()); + } + Q_DECL_CONSTEXPR ushort toRgb16() const + { + return ushort((red() & 0xf800) | ((green() >> 10) << 5) | (blue() >> 11)); + } + + Q_DECL_RELAXED_CONSTEXPR QRgba64 premultiplied() const + { + const quint32 a = alpha(); + const quint16 r = div_65535(red() * a); + const quint16 g = div_65535(green() * a); + const quint16 b = div_65535(blue() * a); + return fromRgba64(r, g, b, quint16(a)); + } + + Q_DECL_RELAXED_CONSTEXPR QRgba64 unpremultiplied() const + { +#if Q_PROCESSOR_WORDSIZE < 8 + return unpremultiplied_32bit(); +#else + return unpremultiplied_64bit(); +#endif + } + + Q_DECL_CONSTEXPR operator quint64() const + { + return rgba; + } + + QRgba64 operator=(quint64 _rgba) + { + rgba = _rgba; + return *this; + } + +private: + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE quint64 alphaMask() { return Q_UINT64_C(0xffff) << AlphaShift; } + + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE quint8 div_257_floor(uint x) { return quint8((x - (x >> 8)) >> 8); } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE quint8 div_257(quint16 x) { return div_257_floor(x + 128U); } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE quint16 div_65535(uint x) { return quint16((x + (x>>16) + 0x8000U) >> 16); } + Q_DECL_RELAXED_CONSTEXPR Q_ALWAYS_INLINE QRgba64 unpremultiplied_32bit() const + { + if (isOpaque() || isTransparent()) + return *this; + const quint32 a = alpha(); + const quint16 r = quint16((red() * 0xffff + a/2) / a); + const quint16 g = quint16((green() * 0xffff + a/2) / a); + const quint16 b = quint16((blue() * 0xffff + a/2) / a); + return fromRgba64(r, g, b, quint16(a)); + } + Q_DECL_RELAXED_CONSTEXPR Q_ALWAYS_INLINE QRgba64 unpremultiplied_64bit() const + { + if (isOpaque() || isTransparent()) + return *this; + const quint64 a = alpha(); + const quint64 fa = (Q_UINT64_C(0xffff00008000) + a/2) / a; + const quint16 r = quint16((red() * fa + 0x80000000) >> 32); + const quint16 g = quint16((green() * fa + 0x80000000) >> 32); + const quint16 b = quint16((blue() * fa + 0x80000000) >> 32); + return fromRgba64(r, g, b, quint16(a)); + } +}; + +Q_DECLARE_TYPEINFO(QRgba64, Q_PRIMITIVE_TYPE); + +Q_DECL_CONSTEXPR inline QRgba64 qRgba64(quint16 r, quint16 g, quint16 b, quint16 a) +{ + return QRgba64::fromRgba64(r, g, b, a); +} + +Q_DECL_CONSTEXPR inline QRgba64 qRgba64(quint64 c) +{ + return QRgba64::fromRgba64(c); +} + +Q_DECL_RELAXED_CONSTEXPR inline QRgba64 qPremultiply(QRgba64 c) +{ + return c.premultiplied(); +} + +Q_DECL_RELAXED_CONSTEXPR inline QRgba64 qUnpremultiply(QRgba64 c) +{ + return c.unpremultiplied(); +} + +inline Q_DECL_CONSTEXPR uint qRed(QRgba64 rgb) +{ return rgb.red8(); } + +inline Q_DECL_CONSTEXPR uint qGreen(QRgba64 rgb) +{ return rgb.green8(); } + +inline Q_DECL_CONSTEXPR uint qBlue(QRgba64 rgb) +{ return rgb.blue8(); } + +inline Q_DECL_CONSTEXPR uint qAlpha(QRgba64 rgb) +{ return rgb.alpha8(); } + +QT_END_NAMESPACE + +#endif // QRGBA64_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qscreen.h b/qrenderdoc/3rdparty/qt/include/QtGui/qscreen.h new file mode 100644 index 000000000..8c9b16e08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qscreen.h @@ -0,0 +1,181 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCREEN_H +#define QSCREEN_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/QList> +#include <QtCore/QObject> +#include <QtCore/QRect> +#include <QtCore/QSize> +#include <QtCore/QSizeF> + +#include <QtGui/QTransform> + +#include <QtCore/qnamespace.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformScreen; +class QScreenPrivate; +class QWindow; +class QRect; +class QPixmap; +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +#endif + +class Q_GUI_EXPORT QScreen : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QScreen) + + Q_PROPERTY(QString name READ name CONSTANT) + Q_PROPERTY(QString manufacturer READ manufacturer CONSTANT) + Q_PROPERTY(QString model READ model CONSTANT) + Q_PROPERTY(QString serialNumber READ serialNumber CONSTANT) + Q_PROPERTY(int depth READ depth CONSTANT) + Q_PROPERTY(QSize size READ size NOTIFY geometryChanged) + Q_PROPERTY(QSize availableSize READ availableSize NOTIFY availableGeometryChanged) + Q_PROPERTY(QSize virtualSize READ virtualSize NOTIFY virtualGeometryChanged) + Q_PROPERTY(QSize availableVirtualSize READ availableVirtualSize NOTIFY virtualGeometryChanged) + Q_PROPERTY(QRect geometry READ geometry NOTIFY geometryChanged) + Q_PROPERTY(QRect availableGeometry READ availableGeometry NOTIFY availableGeometryChanged) + Q_PROPERTY(QRect virtualGeometry READ virtualGeometry NOTIFY virtualGeometryChanged) + Q_PROPERTY(QRect availableVirtualGeometry READ availableVirtualGeometry NOTIFY virtualGeometryChanged) + Q_PROPERTY(QSizeF physicalSize READ physicalSize NOTIFY physicalSizeChanged) + Q_PROPERTY(qreal physicalDotsPerInchX READ physicalDotsPerInchX NOTIFY physicalDotsPerInchChanged) + Q_PROPERTY(qreal physicalDotsPerInchY READ physicalDotsPerInchY NOTIFY physicalDotsPerInchChanged) + Q_PROPERTY(qreal physicalDotsPerInch READ physicalDotsPerInch NOTIFY physicalDotsPerInchChanged) + Q_PROPERTY(qreal logicalDotsPerInchX READ logicalDotsPerInchX NOTIFY logicalDotsPerInchChanged) + Q_PROPERTY(qreal logicalDotsPerInchY READ logicalDotsPerInchY NOTIFY logicalDotsPerInchChanged) + Q_PROPERTY(qreal logicalDotsPerInch READ logicalDotsPerInch NOTIFY logicalDotsPerInchChanged) + Q_PROPERTY(qreal devicePixelRatio READ devicePixelRatio NOTIFY physicalDotsPerInchChanged) + Q_PROPERTY(Qt::ScreenOrientation primaryOrientation READ primaryOrientation NOTIFY primaryOrientationChanged) + Q_PROPERTY(Qt::ScreenOrientation orientation READ orientation NOTIFY orientationChanged) + Q_PROPERTY(Qt::ScreenOrientation nativeOrientation READ nativeOrientation) + Q_PROPERTY(qreal refreshRate READ refreshRate NOTIFY refreshRateChanged) + +public: + ~QScreen(); + QPlatformScreen *handle() const; + + QString name() const; + + QString manufacturer() const; + QString model() const; + QString serialNumber() const; + + int depth() const; + + QSize size() const; + QRect geometry() const; + + QSizeF physicalSize() const; + + qreal physicalDotsPerInchX() const; + qreal physicalDotsPerInchY() const; + qreal physicalDotsPerInch() const; + + qreal logicalDotsPerInchX() const; + qreal logicalDotsPerInchY() const; + qreal logicalDotsPerInch() const; + + qreal devicePixelRatio() const; + + QSize availableSize() const; + QRect availableGeometry() const; + + QList<QScreen *> virtualSiblings() const; + + QSize virtualSize() const; + QRect virtualGeometry() const; + + QSize availableVirtualSize() const; + QRect availableVirtualGeometry() const; + + Qt::ScreenOrientation primaryOrientation() const; + Qt::ScreenOrientation orientation() const; + Qt::ScreenOrientation nativeOrientation() const; + + Qt::ScreenOrientations orientationUpdateMask() const; + void setOrientationUpdateMask(Qt::ScreenOrientations mask); + + int angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b) const; + QTransform transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target) const; + QRect mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect) const; + + bool isPortrait(Qt::ScreenOrientation orientation) const; + bool isLandscape(Qt::ScreenOrientation orientation) const; + + QPixmap grabWindow(WId window, int x = 0, int y = 0, int w = -1, int h = -1); + + qreal refreshRate() const; + +Q_SIGNALS: + void geometryChanged(const QRect &geometry); + void availableGeometryChanged(const QRect &geometry); + void physicalSizeChanged(const QSizeF &size); + void physicalDotsPerInchChanged(qreal dpi); + void logicalDotsPerInchChanged(qreal dpi); + void virtualGeometryChanged(const QRect &rect); + void primaryOrientationChanged(Qt::ScreenOrientation orientation); + void orientationChanged(Qt::ScreenOrientation orientation); + void refreshRateChanged(qreal refreshRate); + +private: + explicit QScreen(QPlatformScreen *screen); + + Q_DISABLE_COPY(QScreen) + friend class QGuiApplicationPrivate; + friend class QPlatformIntegration; + friend class QPlatformScreen; + friend class QHighDpiScaling; +}; + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QScreen *); +#endif + +QT_END_NAMESPACE + +#endif // QSCREEN_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qsessionmanager.h b/qrenderdoc/3rdparty/qt/include/QtGui/qsessionmanager.h new file mode 100644 index 000000000..21100b25d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qsessionmanager.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSESSIONMANAGER_H +#define QSESSIONMANAGER_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> +#include <QtGui/qwindowdefs.h> +#include <QtCore/qstring.h> +#include <QtCore/qstringlist.h> + +#ifndef QT_NO_SESSIONMANAGER + +QT_BEGIN_NAMESPACE + + +class QGuiApplication; + +class QSessionManagerPrivate; + +class Q_GUI_EXPORT QSessionManager : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QSessionManager) + QSessionManager(QGuiApplication *app, QString &id, QString &key); + ~QSessionManager(); +public: + QString sessionId() const; + QString sessionKey() const; + + bool allowsInteraction(); + bool allowsErrorInteraction(); + void release(); + + void cancel(); + + enum RestartHint { + RestartIfRunning, + RestartAnyway, + RestartImmediately, + RestartNever + }; + void setRestartHint(RestartHint); + RestartHint restartHint() const; + + void setRestartCommand(const QStringList&); + QStringList restartCommand() const; + void setDiscardCommand(const QStringList&); + QStringList discardCommand() const; + + void setManagerProperty(const QString& name, const QString& value); + void setManagerProperty(const QString& name, const QStringList& value); + + bool isPhase2() const; + void requestPhase2(); + +private: + friend class QGuiApplication; + friend class QGuiApplicationPrivate; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SESSIONMANAGER + +#endif // QSESSIONMANAGER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qstandarditemmodel.h b/qrenderdoc/3rdparty/qt/include/QtGui/qstandarditemmodel.h new file mode 100644 index 000000000..73107b827 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qstandarditemmodel.h @@ -0,0 +1,460 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTANDARDITEMMODEL_H +#define QSTANDARDITEMMODEL_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qabstractitemmodel.h> +#include <QtGui/qbrush.h> +#include <QtGui/qfont.h> +#include <QtGui/qicon.h> +#ifndef QT_NO_DATASTREAM +#include <QtCore/qdatastream.h> +#endif + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_STANDARDITEMMODEL + +template <class T> class QList; + +class QStandardItemModel; + +class QStandardItemPrivate; +class Q_GUI_EXPORT QStandardItem +{ +public: + QStandardItem(); + explicit QStandardItem(const QString &text); + QStandardItem(const QIcon &icon, const QString &text); + explicit QStandardItem(int rows, int columns = 1); + virtual ~QStandardItem(); + + virtual QVariant data(int role = Qt::UserRole + 1) const; + virtual void setData(const QVariant &value, int role = Qt::UserRole + 1); + + inline QString text() const { + return qvariant_cast<QString>(data(Qt::DisplayRole)); + } + inline void setText(const QString &text); + + inline QIcon icon() const { + return qvariant_cast<QIcon>(data(Qt::DecorationRole)); + } + inline void setIcon(const QIcon &icon); + +#ifndef QT_NO_TOOLTIP + inline QString toolTip() const { + return qvariant_cast<QString>(data(Qt::ToolTipRole)); + } + inline void setToolTip(const QString &toolTip); +#endif + +#ifndef QT_NO_STATUSTIP + inline QString statusTip() const { + return qvariant_cast<QString>(data(Qt::StatusTipRole)); + } + inline void setStatusTip(const QString &statusTip); +#endif + +#if QT_CONFIG(whatsthis) + inline QString whatsThis() const { + return qvariant_cast<QString>(data(Qt::WhatsThisRole)); + } + inline void setWhatsThis(const QString &whatsThis); +#endif + + inline QSize sizeHint() const { + return qvariant_cast<QSize>(data(Qt::SizeHintRole)); + } + inline void setSizeHint(const QSize &sizeHint); + + inline QFont font() const { + return qvariant_cast<QFont>(data(Qt::FontRole)); + } + inline void setFont(const QFont &font); + + inline Qt::Alignment textAlignment() const { + return Qt::Alignment(qvariant_cast<int>(data(Qt::TextAlignmentRole))); + } + inline void setTextAlignment(Qt::Alignment textAlignment); + + inline QBrush background() const { + return qvariant_cast<QBrush>(data(Qt::BackgroundRole)); + } + inline void setBackground(const QBrush &brush); + + inline QBrush foreground() const { + return qvariant_cast<QBrush>(data(Qt::ForegroundRole)); + } + inline void setForeground(const QBrush &brush); + + inline Qt::CheckState checkState() const { + return Qt::CheckState(qvariant_cast<int>(data(Qt::CheckStateRole))); + } + inline void setCheckState(Qt::CheckState checkState); + + inline QString accessibleText() const { + return qvariant_cast<QString>(data(Qt::AccessibleTextRole)); + } + inline void setAccessibleText(const QString &accessibleText); + + inline QString accessibleDescription() const { + return qvariant_cast<QString>(data(Qt::AccessibleDescriptionRole)); + } + inline void setAccessibleDescription(const QString &accessibleDescription); + + Qt::ItemFlags flags() const; + void setFlags(Qt::ItemFlags flags); + + inline bool isEnabled() const { + return (flags() & Qt::ItemIsEnabled) != 0; + } + void setEnabled(bool enabled); + + inline bool isEditable() const { + return (flags() & Qt::ItemIsEditable) != 0; + } + void setEditable(bool editable); + + inline bool isSelectable() const { + return (flags() & Qt::ItemIsSelectable) != 0; + } + void setSelectable(bool selectable); + + inline bool isCheckable() const { + return (flags() & Qt::ItemIsUserCheckable) != 0; + } + void setCheckable(bool checkable); + + inline bool isAutoTristate() const { + return (flags() & Qt::ItemIsAutoTristate) != 0; + } + void setAutoTristate(bool tristate); + + inline bool isUserTristate() const { + return (flags() & Qt::ItemIsUserTristate) != 0; + } + void setUserTristate(bool tristate); + +#if QT_DEPRECATED_SINCE(5, 6) + QT_DEPRECATED bool isTristate() const { return isAutoTristate(); } + QT_DEPRECATED void setTristate(bool tristate); +#endif + +#ifndef QT_NO_DRAGANDDROP + inline bool isDragEnabled() const { + return (flags() & Qt::ItemIsDragEnabled) != 0; + } + void setDragEnabled(bool dragEnabled); + + inline bool isDropEnabled() const { + return (flags() & Qt::ItemIsDropEnabled) != 0; + } + void setDropEnabled(bool dropEnabled); +#endif // QT_NO_DRAGANDDROP + + QStandardItem *parent() const; + int row() const; + int column() const; + QModelIndex index() const; + QStandardItemModel *model() const; + + int rowCount() const; + void setRowCount(int rows); + int columnCount() const; + void setColumnCount(int columns); + + bool hasChildren() const; + QStandardItem *child(int row, int column = 0) const; + void setChild(int row, int column, QStandardItem *item); + inline void setChild(int row, QStandardItem *item); + + void insertRow(int row, const QList<QStandardItem*> &items); + void insertColumn(int column, const QList<QStandardItem*> &items); + void insertRows(int row, const QList<QStandardItem*> &items); + void insertRows(int row, int count); + void insertColumns(int column, int count); + + void removeRow(int row); + void removeColumn(int column); + void removeRows(int row, int count); + void removeColumns(int column, int count); + + inline void appendRow(const QList<QStandardItem*> &items); + inline void appendRows(const QList<QStandardItem*> &items); + inline void appendColumn(const QList<QStandardItem*> &items); + inline void insertRow(int row, QStandardItem *item); + inline void appendRow(QStandardItem *item); + + QStandardItem *takeChild(int row, int column = 0); + QList<QStandardItem*> takeRow(int row); + QList<QStandardItem*> takeColumn(int column); + + void sortChildren(int column, Qt::SortOrder order = Qt::AscendingOrder); + + virtual QStandardItem *clone() const; + + enum ItemType { Type = 0, UserType = 1000 }; + virtual int type() const; + +#ifndef QT_NO_DATASTREAM + virtual void read(QDataStream &in); + virtual void write(QDataStream &out) const; +#endif + virtual bool operator<(const QStandardItem &other) const; + +protected: + QStandardItem(const QStandardItem &other); + QStandardItem(QStandardItemPrivate &dd); + QStandardItem &operator=(const QStandardItem &other); + QScopedPointer<QStandardItemPrivate> d_ptr; + + void emitDataChanged(); + +private: + Q_DECLARE_PRIVATE(QStandardItem) + friend class QStandardItemModelPrivate; + friend class QStandardItemModel; +}; + +inline void QStandardItem::setText(const QString &atext) +{ setData(atext, Qt::DisplayRole); } + +inline void QStandardItem::setIcon(const QIcon &aicon) +{ setData(aicon, Qt::DecorationRole); } + +#ifndef QT_NO_TOOLTIP +inline void QStandardItem::setToolTip(const QString &atoolTip) +{ setData(atoolTip, Qt::ToolTipRole); } +#endif + +#ifndef QT_NO_STATUSTIP +inline void QStandardItem::setStatusTip(const QString &astatusTip) +{ setData(astatusTip, Qt::StatusTipRole); } +#endif + +#if QT_CONFIG(whatsthis) +inline void QStandardItem::setWhatsThis(const QString &awhatsThis) +{ setData(awhatsThis, Qt::WhatsThisRole); } +#endif + +inline void QStandardItem::setSizeHint(const QSize &asizeHint) +{ setData(asizeHint, Qt::SizeHintRole); } + +inline void QStandardItem::setFont(const QFont &afont) +{ setData(afont, Qt::FontRole); } + +inline void QStandardItem::setTextAlignment(Qt::Alignment atextAlignment) +{ setData(int(atextAlignment), Qt::TextAlignmentRole); } + +inline void QStandardItem::setBackground(const QBrush &abrush) +{ setData(abrush, Qt::BackgroundRole); } + +inline void QStandardItem::setForeground(const QBrush &abrush) +{ setData(abrush, Qt::ForegroundRole); } + +inline void QStandardItem::setCheckState(Qt::CheckState acheckState) +{ setData(acheckState, Qt::CheckStateRole); } + +inline void QStandardItem::setAccessibleText(const QString &aaccessibleText) +{ setData(aaccessibleText, Qt::AccessibleTextRole); } + +inline void QStandardItem::setAccessibleDescription(const QString &aaccessibleDescription) +{ setData(aaccessibleDescription, Qt::AccessibleDescriptionRole); } + +inline void QStandardItem::setChild(int arow, QStandardItem *aitem) +{ setChild(arow, 0, aitem); } + +inline void QStandardItem::appendRow(const QList<QStandardItem*> &aitems) +{ insertRow(rowCount(), aitems); } + +inline void QStandardItem::appendRows(const QList<QStandardItem*> &aitems) +{ insertRows(rowCount(), aitems); } + +inline void QStandardItem::appendColumn(const QList<QStandardItem*> &aitems) +{ insertColumn(columnCount(), aitems); } + +inline void QStandardItem::insertRow(int arow, QStandardItem *aitem) +{ insertRow(arow, QList<QStandardItem*>() << aitem); } + +inline void QStandardItem::appendRow(QStandardItem *aitem) +{ insertRow(rowCount(), aitem); } + +class QStandardItemModelPrivate; + +class Q_GUI_EXPORT QStandardItemModel : public QAbstractItemModel +{ + Q_OBJECT + Q_PROPERTY(int sortRole READ sortRole WRITE setSortRole) + +public: + explicit QStandardItemModel(QObject *parent = Q_NULLPTR); + QStandardItemModel(int rows, int columns, QObject *parent = Q_NULLPTR); + ~QStandardItemModel(); + + void setItemRoleNames(const QHash<int,QByteArray> &roleNames); + + QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex parent(const QModelIndex &child) const Q_DECL_OVERRIDE; + + int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + bool hasChildren(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + // Qt 6: Remove + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; + + QVariant headerData(int section, Qt::Orientation orientation, + int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, + int role = Qt::EditRole) Q_DECL_OVERRIDE; + + bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + Qt::DropActions supportedDropActions() const Q_DECL_OVERRIDE; + + QMap<int, QVariant> itemData(const QModelIndex &index) const Q_DECL_OVERRIDE; + bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles) Q_DECL_OVERRIDE; + + void clear(); + + using QObject::parent; + + void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) Q_DECL_OVERRIDE; + + QStandardItem *itemFromIndex(const QModelIndex &index) const; + QModelIndex indexFromItem(const QStandardItem *item) const; + + QStandardItem *item(int row, int column = 0) const; + void setItem(int row, int column, QStandardItem *item); + inline void setItem(int row, QStandardItem *item); + QStandardItem *invisibleRootItem() const; + + QStandardItem *horizontalHeaderItem(int column) const; + void setHorizontalHeaderItem(int column, QStandardItem *item); + QStandardItem *verticalHeaderItem(int row) const; + void setVerticalHeaderItem(int row, QStandardItem *item); + + void setHorizontalHeaderLabels(const QStringList &labels); + void setVerticalHeaderLabels(const QStringList &labels); + + void setRowCount(int rows); + void setColumnCount(int columns); + + void appendRow(const QList<QStandardItem*> &items); + void appendColumn(const QList<QStandardItem*> &items); + inline void appendRow(QStandardItem *item); + + void insertRow(int row, const QList<QStandardItem*> &items); + void insertColumn(int column, const QList<QStandardItem*> &items); + inline void insertRow(int row, QStandardItem *item); + + inline bool insertRow(int row, const QModelIndex &parent = QModelIndex()); + inline bool insertColumn(int column, const QModelIndex &parent = QModelIndex()); + + QStandardItem *takeItem(int row, int column = 0); + QList<QStandardItem*> takeRow(int row); + QList<QStandardItem*> takeColumn(int column); + + QStandardItem *takeHorizontalHeaderItem(int column); + QStandardItem *takeVerticalHeaderItem(int row); + + const QStandardItem *itemPrototype() const; + void setItemPrototype(const QStandardItem *item); + + QList<QStandardItem*> findItems(const QString &text, + Qt::MatchFlags flags = Qt::MatchExactly, + int column = 0) const; + + int sortRole() const; + void setSortRole(int role); + + QStringList mimeTypes() const Q_DECL_OVERRIDE; + QMimeData *mimeData(const QModelIndexList &indexes) const Q_DECL_OVERRIDE; + bool dropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; + +Q_SIGNALS: + void itemChanged(QStandardItem *item); + +protected: + QStandardItemModel(QStandardItemModelPrivate &dd, QObject *parent = Q_NULLPTR); + +private: + friend class QStandardItemPrivate; + friend class QStandardItem; + Q_DISABLE_COPY(QStandardItemModel) + Q_DECLARE_PRIVATE(QStandardItemModel) + + Q_PRIVATE_SLOT(d_func(), void _q_emitItemChanged(const QModelIndex &topLeft, + const QModelIndex &bottomRight)) +}; + +inline void QStandardItemModel::setItem(int arow, QStandardItem *aitem) +{ setItem(arow, 0, aitem); } + +inline void QStandardItemModel::appendRow(QStandardItem *aitem) +{ appendRow(QList<QStandardItem*>() << aitem); } + +inline void QStandardItemModel::insertRow(int arow, QStandardItem *aitem) +{ insertRow(arow, QList<QStandardItem*>() << aitem); } + +inline bool QStandardItemModel::insertRow(int arow, const QModelIndex &aparent) +{ return QAbstractItemModel::insertRow(arow, aparent); } +inline bool QStandardItemModel::insertColumn(int acolumn, const QModelIndex &aparent) +{ return QAbstractItemModel::insertColumn(acolumn, aparent); } + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &in, QStandardItem &item); +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &out, const QStandardItem &item); +#endif + +#endif // QT_NO_STANDARDITEMMODEL + +QT_END_NAMESPACE + +#endif //QSTANDARDITEMMODEL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qstatictext.h b/qrenderdoc/3rdparty/qt/include/QtGui/qstatictext.h new file mode 100644 index 000000000..00dfccc14 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qstatictext.h @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTATICTEXT_H +#define QSTATICTEXT_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qsize.h> +#include <QtCore/qstring.h> +#include <QtCore/qmetatype.h> + +#include <QtGui/qtransform.h> +#include <QtGui/qfont.h> +#include <QtGui/qtextoption.h> + +QT_BEGIN_NAMESPACE + + +class QStaticTextPrivate; +class Q_GUI_EXPORT QStaticText +{ +public: + enum PerformanceHint { + ModerateCaching, + AggressiveCaching + }; + + QStaticText(); + QStaticText(const QString &text); + QStaticText(const QStaticText &other); +#ifdef Q_COMPILER_RVALUE_REFS + QStaticText &operator=(QStaticText &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QStaticText &operator=(const QStaticText &); + ~QStaticText(); + + void swap(QStaticText &other) Q_DECL_NOTHROW { qSwap(data, other.data); } + + void setText(const QString &text); + QString text() const; + + void setTextFormat(Qt::TextFormat textFormat); + Qt::TextFormat textFormat() const; + + void setTextWidth(qreal textWidth); + qreal textWidth() const; + + void setTextOption(const QTextOption &textOption); + QTextOption textOption() const; + + QSizeF size() const; + + void prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont()); + + void setPerformanceHint(PerformanceHint performanceHint); + PerformanceHint performanceHint() const; + + bool operator==(const QStaticText &) const; + bool operator!=(const QStaticText &) const; + +private: + void detach(); + + QExplicitlySharedDataPointer<QStaticTextPrivate> data; + friend class QStaticTextPrivate; +}; + +Q_DECLARE_SHARED(QStaticText) + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QStaticText) + +#endif // QSTATICTEXT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qstylehints.h b/qrenderdoc/3rdparty/qt/include/QtGui/qstylehints.h new file mode 100644 index 000000000..b9bf428ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qstylehints.h @@ -0,0 +1,124 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTYLEHINTS_H +#define QSTYLEHINTS_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformIntegration; +class QStyleHintsPrivate; + +class Q_GUI_EXPORT QStyleHints : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QStyleHints) + Q_PROPERTY(int cursorFlashTime READ cursorFlashTime NOTIFY cursorFlashTimeChanged FINAL) + Q_PROPERTY(qreal fontSmoothingGamma READ fontSmoothingGamma STORED false CONSTANT FINAL) + Q_PROPERTY(int keyboardAutoRepeatRate READ keyboardAutoRepeatRate STORED false CONSTANT FINAL) + Q_PROPERTY(int keyboardInputInterval READ keyboardInputInterval NOTIFY keyboardInputIntervalChanged FINAL) + Q_PROPERTY(int mouseDoubleClickInterval READ mouseDoubleClickInterval NOTIFY mouseDoubleClickIntervalChanged FINAL) + Q_PROPERTY(int mousePressAndHoldInterval READ mousePressAndHoldInterval NOTIFY mousePressAndHoldIntervalChanged FINAL) + Q_PROPERTY(QChar passwordMaskCharacter READ passwordMaskCharacter STORED false CONSTANT FINAL) + Q_PROPERTY(int passwordMaskDelay READ passwordMaskDelay STORED false CONSTANT FINAL) + Q_PROPERTY(bool setFocusOnTouchRelease READ setFocusOnTouchRelease STORED false CONSTANT FINAL) + Q_PROPERTY(bool showIsFullScreen READ showIsFullScreen STORED false CONSTANT FINAL) + Q_PROPERTY(bool showIsMaximized READ showIsMaximized STORED false CONSTANT FINAL) + Q_PROPERTY(int startDragDistance READ startDragDistance NOTIFY startDragDistanceChanged FINAL) + Q_PROPERTY(int startDragTime READ startDragTime NOTIFY startDragTimeChanged FINAL) + Q_PROPERTY(int startDragVelocity READ startDragVelocity STORED false CONSTANT FINAL) + Q_PROPERTY(bool useRtlExtensions READ useRtlExtensions STORED false CONSTANT FINAL) + Q_PROPERTY(Qt::TabFocusBehavior tabFocusBehavior READ tabFocusBehavior NOTIFY tabFocusBehaviorChanged FINAL) + Q_PROPERTY(bool singleClickActivation READ singleClickActivation STORED false CONSTANT FINAL) + Q_PROPERTY(bool useHoverEffects READ useHoverEffects WRITE setUseHoverEffects NOTIFY useHoverEffectsChanged FINAL) + Q_PROPERTY(int wheelScrollLines READ wheelScrollLines NOTIFY wheelScrollLinesChanged FINAL) + +public: + void setMouseDoubleClickInterval(int mouseDoubleClickInterval); + int mouseDoubleClickInterval() const; + void setMousePressAndHoldInterval(int mousePressAndHoldInterval); + int mousePressAndHoldInterval() const; + void setStartDragDistance(int startDragDistance); + int startDragDistance() const; + void setStartDragTime(int startDragTime); + int startDragTime() const; + int startDragVelocity() const; + void setKeyboardInputInterval(int keyboardInputInterval); + int keyboardInputInterval() const; + int keyboardAutoRepeatRate() const; + void setCursorFlashTime(int cursorFlashTime); + int cursorFlashTime() const; + bool showIsFullScreen() const; + bool showIsMaximized() const; + int passwordMaskDelay() const; + QChar passwordMaskCharacter() const; + qreal fontSmoothingGamma() const; + bool useRtlExtensions() const; + bool setFocusOnTouchRelease() const; + Qt::TabFocusBehavior tabFocusBehavior() const; + void setTabFocusBehavior(Qt::TabFocusBehavior tabFocusBehavior); + bool singleClickActivation() const; + bool useHoverEffects() const; + void setUseHoverEffects(bool useHoverEffects); + int wheelScrollLines() const; + void setWheelScrollLines(int scrollLines); + +Q_SIGNALS: + void cursorFlashTimeChanged(int cursorFlashTime); + void keyboardInputIntervalChanged(int keyboardInputInterval); + void mouseDoubleClickIntervalChanged(int mouseDoubleClickInterval); + void mousePressAndHoldIntervalChanged(int mousePressAndHoldInterval); + void startDragDistanceChanged(int startDragDistance); + void startDragTimeChanged(int startDragTime); + void tabFocusBehaviorChanged(Qt::TabFocusBehavior tabFocusBehavior); + void useHoverEffectsChanged(bool useHoverEffects); + void wheelScrollLinesChanged(int scrollLines); + +private: + friend class QGuiApplication; + QStyleHints(); +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qsurface.h b/qrenderdoc/3rdparty/qt/include/QtGui/qsurface.h new file mode 100644 index 000000000..a96b7a642 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qsurface.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSURFACE_H +#define QSURFACE_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qnamespace.h> +#include <QtGui/qsurfaceformat.h> +#include <QtCore/qmetatype.h> +#include <QtCore/qsize.h> + +QT_BEGIN_NAMESPACE + + +class QPlatformSurface; + +class QSurfacePrivate; + +class Q_GUI_EXPORT QSurface +{ +public: + enum SurfaceClass { + Window, + Offscreen + }; + + enum SurfaceType { + RasterSurface, + OpenGLSurface, + RasterGLSurface, + OpenVGSurface, + }; + + virtual ~QSurface(); + + SurfaceClass surfaceClass() const; + + virtual QSurfaceFormat format() const = 0; + virtual QPlatformSurface *surfaceHandle() const = 0; + + virtual SurfaceType surfaceType() const = 0; + bool supportsOpenGL() const; + + virtual QSize size() const = 0; + +protected: + explicit QSurface(SurfaceClass type); + + SurfaceClass m_type; + + QSurfacePrivate *m_reserved; +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QSurface*) + +#endif //QSURFACE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qsurfaceformat.h b/qrenderdoc/3rdparty/qt/include/QtGui/qsurfaceformat.h new file mode 100644 index 000000000..246163609 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qsurfaceformat.h @@ -0,0 +1,179 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QSURFACEFORMAT_H +#define QSURFACEFORMAT_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qpair.h> +#include <QtCore/qobjectdefs.h> + +QT_BEGIN_NAMESPACE + + +class QOpenGLContext; +class QSurfaceFormatPrivate; + +class Q_GUI_EXPORT QSurfaceFormat +{ + Q_GADGET +public: + enum FormatOption { + StereoBuffers = 0x0001, + DebugContext = 0x0002, + DeprecatedFunctions = 0x0004, + ResetNotification = 0x0008 + }; + Q_ENUM(FormatOption) + Q_DECLARE_FLAGS(FormatOptions, FormatOption) + + enum SwapBehavior { + DefaultSwapBehavior, + SingleBuffer, + DoubleBuffer, + TripleBuffer + }; + Q_ENUM(SwapBehavior) + + enum RenderableType { + DefaultRenderableType = 0x0, + OpenGL = 0x1, + OpenGLES = 0x2, + OpenVG = 0x4 + }; + Q_ENUM(RenderableType) + + enum OpenGLContextProfile { + NoProfile, + CoreProfile, + CompatibilityProfile + }; + Q_ENUM(OpenGLContextProfile) + + QSurfaceFormat(); + /*implicit*/ QSurfaceFormat(FormatOptions options); + QSurfaceFormat(const QSurfaceFormat &other); + QSurfaceFormat &operator=(const QSurfaceFormat &other); + ~QSurfaceFormat(); + + void setDepthBufferSize(int size); + int depthBufferSize() const; + + void setStencilBufferSize(int size); + int stencilBufferSize() const; + + void setRedBufferSize(int size); + int redBufferSize() const; + void setGreenBufferSize(int size); + int greenBufferSize() const; + void setBlueBufferSize(int size); + int blueBufferSize() const; + void setAlphaBufferSize(int size); + int alphaBufferSize() const; + + void setSamples(int numSamples); + int samples() const; + + void setSwapBehavior(SwapBehavior behavior); + SwapBehavior swapBehavior() const; + + bool hasAlpha() const; + + void setProfile(OpenGLContextProfile profile); + OpenGLContextProfile profile() const; + + void setRenderableType(RenderableType type); + RenderableType renderableType() const; + + void setMajorVersion(int majorVersion); + int majorVersion() const; + + 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); + +#if QT_DEPRECATED_SINCE(5, 2) + QT_DEPRECATED void setOption(QSurfaceFormat::FormatOptions opt); + QT_DEPRECATED bool testOption(QSurfaceFormat::FormatOptions opt) const; +#endif + + void setOptions(QSurfaceFormat::FormatOptions options); + void setOption(FormatOption option, bool on = true); + bool testOption(FormatOption option) const; + QSurfaceFormat::FormatOptions options() const; + + int swapInterval() const; + void setSwapInterval(int interval); + + static void setDefaultFormat(const QSurfaceFormat &format); + static QSurfaceFormat defaultFormat(); + +private: + QSurfaceFormatPrivate *d; + + void detach(); + + friend Q_GUI_EXPORT bool operator==(const QSurfaceFormat&, const QSurfaceFormat&); + friend Q_GUI_EXPORT bool operator!=(const QSurfaceFormat&, const QSurfaceFormat&); +#ifndef QT_NO_DEBUG_STREAM + friend Q_GUI_EXPORT QDebug operator<<(QDebug, const QSurfaceFormat &); +#endif +}; + +Q_GUI_EXPORT bool operator==(const QSurfaceFormat&, const QSurfaceFormat&); +Q_GUI_EXPORT bool operator!=(const QSurfaceFormat&, const QSurfaceFormat&); + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QSurfaceFormat &); +#endif + +Q_DECLARE_OPERATORS_FOR_FLAGS(QSurfaceFormat::FormatOptions) + +inline bool QSurfaceFormat::stereo() const +{ + return testOption(QSurfaceFormat::StereoBuffers); +} + +QT_END_NAMESPACE + +#endif //QSURFACEFORMAT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qsyntaxhighlighter.h b/qrenderdoc/3rdparty/qt/include/QtGui/qsyntaxhighlighter.h new file mode 100644 index 000000000..d87f89f0f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qsyntaxhighlighter.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSYNTAXHIGHLIGHTER_H +#define QSYNTAXHIGHLIGHTER_H + +#include <QtGui/qtguiglobal.h> + +#ifndef QT_NO_SYNTAXHIGHLIGHTER + +#include <QtCore/qobject.h> +#include <QtGui/qtextobject.h> + +QT_BEGIN_NAMESPACE + + +class QTextDocument; +class QSyntaxHighlighterPrivate; +class QTextCharFormat; +class QFont; +class QColor; +class QTextBlockUserData; + +class Q_GUI_EXPORT QSyntaxHighlighter : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QSyntaxHighlighter) +public: + explicit QSyntaxHighlighter(QObject *parent); + explicit QSyntaxHighlighter(QTextDocument *parent); + virtual ~QSyntaxHighlighter(); + + void setDocument(QTextDocument *doc); + QTextDocument *document() const; + +public Q_SLOTS: + void rehighlight(); + void rehighlightBlock(const QTextBlock &block); + +protected: + virtual void highlightBlock(const QString &text) = 0; + + void setFormat(int start, int count, const QTextCharFormat &format); + void setFormat(int start, int count, const QColor &color); + void setFormat(int start, int count, const QFont &font); + QTextCharFormat format(int pos) const; + + int previousBlockState() const; + int currentBlockState() const; + void setCurrentBlockState(int newState); + + void setCurrentBlockUserData(QTextBlockUserData *data); + QTextBlockUserData *currentBlockUserData() const; + + QTextBlock currentBlock() const; + +private: + Q_DISABLE_COPY(QSyntaxHighlighter) + Q_PRIVATE_SLOT(d_func(), void _q_reformatBlocks(int from, int charsRemoved, int charsAdded)) + Q_PRIVATE_SLOT(d_func(), void _q_delayedRehighlight()) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SYNTAXHIGHLIGHTER + +#endif // QSYNTAXHIGHLIGHTER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtextcursor.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtextcursor.h new file mode 100644 index 000000000..1a00b753a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtextcursor.h @@ -0,0 +1,243 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTCURSOR_H +#define QTEXTCURSOR_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qstring.h> +#include <QtCore/qshareddata.h> +#include <QtGui/qtextformat.h> + +QT_BEGIN_NAMESPACE + + +class QTextDocument; +class QTextCursorPrivate; +class QTextDocumentFragment; +class QTextCharFormat; +class QTextBlockFormat; +class QTextListFormat; +class QTextTableFormat; +class QTextFrameFormat; +class QTextImageFormat; +class QTextDocumentPrivate; +class QTextList; +class QTextTable; +class QTextFrame; +class QTextBlock; + +class Q_GUI_EXPORT QTextCursor +{ +public: + QTextCursor(); + explicit QTextCursor(QTextDocument *document); + QTextCursor(QTextDocumentPrivate *p, int pos); + explicit QTextCursor(QTextCursorPrivate *d); + explicit QTextCursor(QTextFrame *frame); + explicit QTextCursor(const QTextBlock &block); + QTextCursor(const QTextCursor &cursor); +#ifdef Q_COMPILER_RVALUE_REFS + QTextCursor &operator=(QTextCursor &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QTextCursor &operator=(const QTextCursor &other); + ~QTextCursor(); + + void swap(QTextCursor &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool isNull() const; + + enum MoveMode { + MoveAnchor, + KeepAnchor + }; + + void setPosition(int pos, MoveMode mode = MoveAnchor); + int position() const; + int positionInBlock() const; + + int anchor() const; + + void insertText(const QString &text); + void insertText(const QString &text, const QTextCharFormat &format); + + enum MoveOperation { + NoMove, + + Start, + Up, + StartOfLine, + StartOfBlock, + StartOfWord, + PreviousBlock, + PreviousCharacter, + PreviousWord, + Left, + WordLeft, + + End, + Down, + EndOfLine, + EndOfWord, + EndOfBlock, + NextBlock, + NextCharacter, + NextWord, + Right, + WordRight, + + NextCell, + PreviousCell, + NextRow, + PreviousRow + }; + + bool movePosition(MoveOperation op, MoveMode = MoveAnchor, int n = 1); + + bool visualNavigation() const; + void setVisualNavigation(bool b); + + void setVerticalMovementX(int x); + int verticalMovementX() const; + + void setKeepPositionOnInsert(bool b); + bool keepPositionOnInsert() const; + + void deleteChar(); + void deletePreviousChar(); + + enum SelectionType { + WordUnderCursor, + LineUnderCursor, + BlockUnderCursor, + Document + }; + void select(SelectionType selection); + + bool hasSelection() const; + bool hasComplexSelection() const; + void removeSelectedText(); + void clearSelection(); + int selectionStart() const; + int selectionEnd() const; + + QString selectedText() const; + QTextDocumentFragment selection() const; + void selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const; + + QTextBlock block() const; + + QTextCharFormat charFormat() const; + void setCharFormat(const QTextCharFormat &format); + void mergeCharFormat(const QTextCharFormat &modifier); + + QTextBlockFormat blockFormat() const; + void setBlockFormat(const QTextBlockFormat &format); + void mergeBlockFormat(const QTextBlockFormat &modifier); + + QTextCharFormat blockCharFormat() const; + void setBlockCharFormat(const QTextCharFormat &format); + void mergeBlockCharFormat(const QTextCharFormat &modifier); + + bool atBlockStart() const; + bool atBlockEnd() const; + bool atStart() const; + bool atEnd() const; + + void insertBlock(); + void insertBlock(const QTextBlockFormat &format); + void insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat); + + QTextList *insertList(const QTextListFormat &format); + QTextList *insertList(QTextListFormat::Style style); + + QTextList *createList(const QTextListFormat &format); + QTextList *createList(QTextListFormat::Style style); + QTextList *currentList() const; + + QTextTable *insertTable(int rows, int cols, const QTextTableFormat &format); + QTextTable *insertTable(int rows, int cols); + QTextTable *currentTable() const; + + QTextFrame *insertFrame(const QTextFrameFormat &format); + QTextFrame *currentFrame() const; + + void insertFragment(const QTextDocumentFragment &fragment); + +#ifndef QT_NO_TEXTHTMLPARSER + void insertHtml(const QString &html); +#endif // QT_NO_TEXTHTMLPARSER + + void insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment); + void insertImage(const QTextImageFormat &format); + void insertImage(const QString &name); + void insertImage(const QImage &image, const QString &name = QString()); + + void beginEditBlock(); + void joinPreviousEditBlock(); + void endEditBlock(); + + bool operator!=(const QTextCursor &rhs) const; + bool operator<(const QTextCursor &rhs) const; + bool operator<=(const QTextCursor &rhs) const; + bool operator==(const QTextCursor &rhs) const; + bool operator>=(const QTextCursor &rhs) const; + bool operator>(const QTextCursor &rhs) const; + + bool isCopyOf(const QTextCursor &other) const; + + int blockNumber() const; + int columnNumber() const; + + QTextDocument *document() const; + +private: + QSharedDataPointer<QTextCursorPrivate> d; + friend class QTextCursorPrivate; + friend class QTextDocumentPrivate; + friend class QTextDocumentFragmentPrivate; + friend class QTextCopyHelper; + friend class QWidgetTextControlPrivate; +}; + +Q_DECLARE_SHARED(QTextCursor) + +QT_END_NAMESPACE + +#endif // QTEXTCURSOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtextdocument.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtextdocument.h new file mode 100644 index 000000000..c2761a39b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtextdocument.h @@ -0,0 +1,308 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTDOCUMENT_H +#define QTEXTDOCUMENT_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qsize.h> +#include <QtCore/qrect.h> +#include <QtCore/qvariant.h> +#include <QtGui/qfont.h> +#include <QtCore/qurl.h> + +QT_BEGIN_NAMESPACE + + +class QTextFormatCollection; +class QTextListFormat; +class QRect; +class QPainter; +class QPagedPaintDevice; +class QAbstractTextDocumentLayout; +class QPoint; +class QTextObject; +class QTextFormat; +class QTextFrame; +class QTextBlock; +class QTextCodec; +class QVariant; +class QRectF; +class QTextOption; +class QTextCursor; + +template<typename T> class QVector; + +namespace Qt +{ + Q_GUI_EXPORT bool mightBeRichText(const QString&); + Q_GUI_EXPORT QString convertFromPlainText(const QString &plain, WhiteSpaceMode mode = WhiteSpacePre); + +#ifndef QT_NO_TEXTCODEC + Q_GUI_EXPORT QTextCodec *codecForHtml(const QByteArray &ba); +#endif +} + +class Q_GUI_EXPORT QAbstractUndoItem +{ +public: + virtual ~QAbstractUndoItem() = 0; + virtual void undo() = 0; + virtual void redo() = 0; +}; + +inline QAbstractUndoItem::~QAbstractUndoItem() +{ +} + +class QTextDocumentPrivate; + +class Q_GUI_EXPORT QTextDocument : public QObject +{ + Q_OBJECT + + Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled) + Q_PROPERTY(bool modified READ isModified WRITE setModified DESIGNABLE false) + Q_PROPERTY(QSizeF pageSize READ pageSize WRITE setPageSize) + Q_PROPERTY(QFont defaultFont READ defaultFont WRITE setDefaultFont) + Q_PROPERTY(bool useDesignMetrics READ useDesignMetrics WRITE setUseDesignMetrics) + Q_PROPERTY(QSizeF size READ size) + Q_PROPERTY(qreal textWidth READ textWidth WRITE setTextWidth) + Q_PROPERTY(int blockCount READ blockCount) + Q_PROPERTY(qreal indentWidth READ indentWidth WRITE setIndentWidth) +#ifndef QT_NO_CSSPARSER + Q_PROPERTY(QString defaultStyleSheet READ defaultStyleSheet WRITE setDefaultStyleSheet) +#endif + Q_PROPERTY(int maximumBlockCount READ maximumBlockCount WRITE setMaximumBlockCount) + Q_PROPERTY(qreal documentMargin READ documentMargin WRITE setDocumentMargin) + QDOC_PROPERTY(QTextOption defaultTextOption READ defaultTextOption WRITE setDefaultTextOption) + Q_PROPERTY(QUrl baseUrl READ baseUrl WRITE setBaseUrl NOTIFY baseUrlChanged) + +public: + explicit QTextDocument(QObject *parent = Q_NULLPTR); + explicit QTextDocument(const QString &text, QObject *parent = Q_NULLPTR); + ~QTextDocument(); + + QTextDocument *clone(QObject *parent = Q_NULLPTR) const; + + bool isEmpty() const; + virtual void clear(); + + void setUndoRedoEnabled(bool enable); + bool isUndoRedoEnabled() const; + + bool isUndoAvailable() const; + bool isRedoAvailable() const; + + int availableUndoSteps() const; + int availableRedoSteps() const; + + int revision() const; + + void setDocumentLayout(QAbstractTextDocumentLayout *layout); + QAbstractTextDocumentLayout *documentLayout() const; + + enum MetaInformation { + DocumentTitle, + DocumentUrl + }; + void setMetaInformation(MetaInformation info, const QString &); + QString metaInformation(MetaInformation info) const; + +#ifndef QT_NO_TEXTHTMLPARSER + QString toHtml(const QByteArray &encoding = QByteArray()) const; + void setHtml(const QString &html); +#endif + + QString toRawText() const; + QString toPlainText() const; + void setPlainText(const QString &text); + + QChar characterAt(int pos) const; + + enum FindFlag + { + FindBackward = 0x00001, + FindCaseSensitively = 0x00002, + FindWholeWords = 0x00004 + }; + Q_DECLARE_FLAGS(FindFlags, FindFlag) + + QTextCursor find(const QString &subString, int from = 0, FindFlags options = FindFlags()) const; + QTextCursor find(const QString &subString, const QTextCursor &cursor, FindFlags options = FindFlags()) const; + +#ifndef QT_NO_REGEXP + QTextCursor find(const QRegExp &expr, int from = 0, FindFlags options = FindFlags()) const; + QTextCursor find(const QRegExp &expr, const QTextCursor &cursor, FindFlags options = FindFlags()) const; +#endif + +#ifndef QT_NO_REGULAREXPRESSION + QTextCursor find(const QRegularExpression &expr, int from = 0, FindFlags options = FindFlags()) const; + QTextCursor find(const QRegularExpression &expr, const QTextCursor &cursor, FindFlags options = FindFlags()) const; +#endif + + QTextFrame *frameAt(int pos) const; + QTextFrame *rootFrame() const; + + QTextObject *object(int objectIndex) const; + QTextObject *objectForFormat(const QTextFormat &) const; + + QTextBlock findBlock(int pos) const; + QTextBlock findBlockByNumber(int blockNumber) const; + QTextBlock findBlockByLineNumber(int blockNumber) const; + QTextBlock begin() const; + QTextBlock end() const; + + QTextBlock firstBlock() const; + QTextBlock lastBlock() const; + + void setPageSize(const QSizeF &size); + QSizeF pageSize() const; + + void setDefaultFont(const QFont &font); + QFont defaultFont() const; + + int pageCount() const; + + bool isModified() const; + + void print(QPagedPaintDevice *printer) const; + + enum ResourceType { + HtmlResource = 1, + ImageResource = 2, + StyleSheetResource = 3, + + UserResource = 100 + }; + + QVariant resource(int type, const QUrl &name) const; + void addResource(int type, const QUrl &name, const QVariant &resource); + + QVector<QTextFormat> allFormats() const; + + void markContentsDirty(int from, int length); + + void setUseDesignMetrics(bool b); + bool useDesignMetrics() const; + + void drawContents(QPainter *painter, const QRectF &rect = QRectF()); + + void setTextWidth(qreal width); + qreal textWidth() const; + + qreal idealWidth() const; + + qreal indentWidth() const; + void setIndentWidth(qreal width); + + qreal documentMargin() const; + void setDocumentMargin(qreal margin); + + void adjustSize(); + QSizeF size() const; + + int blockCount() const; + int lineCount() const; + int characterCount() const; + +#ifndef QT_NO_CSSPARSER + void setDefaultStyleSheet(const QString &sheet); + QString defaultStyleSheet() const; +#endif + + void undo(QTextCursor *cursor); + void redo(QTextCursor *cursor); + + enum Stacks { + UndoStack = 0x01, + RedoStack = 0x02, + UndoAndRedoStacks = UndoStack | RedoStack + }; + void clearUndoRedoStacks(Stacks historyToClear = UndoAndRedoStacks); + + int maximumBlockCount() const; + void setMaximumBlockCount(int maximum); + + QTextOption defaultTextOption() const; + void setDefaultTextOption(const QTextOption &option); + + QUrl baseUrl() const; + void setBaseUrl(const QUrl &url); + + Qt::CursorMoveStyle defaultCursorMoveStyle() const; + void setDefaultCursorMoveStyle(Qt::CursorMoveStyle style); + +Q_SIGNALS: + void contentsChange(int from, int charsRemoved, int charsAdded); + void contentsChanged(); + void undoAvailable(bool); + void redoAvailable(bool); + void undoCommandAdded(); + void modificationChanged(bool m); + void cursorPositionChanged(const QTextCursor &cursor); + void blockCountChanged(int newBlockCount); + void baseUrlChanged(const QUrl &url); + void documentLayoutChanged(); + +public Q_SLOTS: + void undo(); + void redo(); + void appendUndoItem(QAbstractUndoItem *); + void setModified(bool m = true); + +protected: + virtual QTextObject *createObject(const QTextFormat &f); + Q_INVOKABLE virtual QVariant loadResource(int type, const QUrl &name); + + QTextDocument(QTextDocumentPrivate &dd, QObject *parent); +public: + QTextDocumentPrivate *docHandle() const; +private: + Q_DISABLE_COPY(QTextDocument) + Q_DECLARE_PRIVATE(QTextDocument) + friend class QTextObjectPrivate; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QTextDocument::FindFlags) + +QT_END_NAMESPACE + +#endif // QTEXTDOCUMENT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtextdocumentfragment.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtextdocumentfragment.h new file mode 100644 index 000000000..a56f6d06d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtextdocumentfragment.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTDOCUMENTFRAGMENT_H +#define QTEXTDOCUMENTFRAGMENT_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qstring.h> + +QT_BEGIN_NAMESPACE + + +class QTextStream; +class QTextDocument; +class QTextDocumentFragmentPrivate; +class QTextCursor; + +class Q_GUI_EXPORT QTextDocumentFragment +{ +public: + QTextDocumentFragment(); + explicit QTextDocumentFragment(const QTextDocument *document); + explicit QTextDocumentFragment(const QTextCursor &range); + QTextDocumentFragment(const QTextDocumentFragment &rhs); + QTextDocumentFragment &operator=(const QTextDocumentFragment &rhs); + ~QTextDocumentFragment(); + + bool isEmpty() const; + + QString toPlainText() const; +#ifndef QT_NO_TEXTHTMLPARSER + QString toHtml(const QByteArray &encoding = QByteArray()) const; +#endif // QT_NO_TEXTHTMLPARSER + + static QTextDocumentFragment fromPlainText(const QString &plainText); +#ifndef QT_NO_TEXTHTMLPARSER + static QTextDocumentFragment fromHtml(const QString &html); + static QTextDocumentFragment fromHtml(const QString &html, const QTextDocument *resourceProvider); +#endif // QT_NO_TEXTHTMLPARSER + +private: + QTextDocumentFragmentPrivate *d; + friend class QTextCursor; + friend class QTextDocumentWriter; +}; + +QT_END_NAMESPACE + +#endif // QTEXTDOCUMENTFRAGMENT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtextdocumentwriter.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtextdocumentwriter.h new file mode 100644 index 000000000..0502bf1a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtextdocumentwriter.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QTEXTDOCUMENTWRITER_H +#define QTEXTDOCUMENTWRITER_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qstring.h> + +QT_BEGIN_NAMESPACE + + +class QTextDocumentWriterPrivate; +class QIODevice; +class QByteArray; +class QTextDocument; +class QTextDocumentFragment; + +class Q_GUI_EXPORT QTextDocumentWriter +{ +public: + QTextDocumentWriter(); + QTextDocumentWriter(QIODevice *device, const QByteArray &format); + explicit QTextDocumentWriter(const QString &fileName, const QByteArray &format = QByteArray()); + ~QTextDocumentWriter(); + + void setFormat (const QByteArray &format); + QByteArray format () const; + + void setDevice (QIODevice *device); + QIODevice *device () const; + void setFileName (const QString &fileName); + QString fileName () const; + + bool write(const QTextDocument *document); + bool write(const QTextDocumentFragment &fragment); + +#ifndef QT_NO_TEXTCODEC + void setCodec(QTextCodec *codec); + QTextCodec *codec() const; +#endif + + static QList<QByteArray> supportedDocumentFormats(); + +private: + Q_DISABLE_COPY(QTextDocumentWriter) + QTextDocumentWriterPrivate *d; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtextformat.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtextformat.h new file mode 100644 index 000000000..28c303553 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtextformat.h @@ -0,0 +1,1021 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTFORMAT_H +#define QTEXTFORMAT_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qcolor.h> +#include <QtGui/qfont.h> +#include <QtCore/qshareddata.h> +#include <QtCore/qvector.h> +#include <QtCore/qvariant.h> +#include <QtGui/qpen.h> +#include <QtGui/qbrush.h> +#include <QtGui/qtextoption.h> + +QT_BEGIN_NAMESPACE + + +class QString; +class QVariant; +class QFont; + +class QTextFormatCollection; +class QTextFormatPrivate; +class QTextBlockFormat; +class QTextCharFormat; +class QTextListFormat; +class QTextTableFormat; +class QTextFrameFormat; +class QTextImageFormat; +class QTextTableCellFormat; +class QTextFormat; +class QTextObject; +class QTextCursor; +class QTextDocument; +class QTextLength; + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTextLength &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QTextLength &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QTextLength &); +#endif + +class Q_GUI_EXPORT QTextLength +{ +public: + enum Type { VariableLength = 0, FixedLength, PercentageLength }; + + inline QTextLength() : lengthType(VariableLength), fixedValueOrPercentage(0) {} + + inline explicit QTextLength(Type type, qreal value); + + inline Type type() const { return lengthType; } + inline qreal value(qreal maximumLength) const + { + switch (lengthType) { + case FixedLength: return fixedValueOrPercentage; + case VariableLength: return maximumLength; + case PercentageLength: return fixedValueOrPercentage * maximumLength / qreal(100); + } + return -1; + } + + inline qreal rawValue() const { return fixedValueOrPercentage; } + + inline bool operator==(const QTextLength &other) const + { return lengthType == other.lengthType + && qFuzzyCompare(fixedValueOrPercentage, other.fixedValueOrPercentage); } + inline bool operator!=(const QTextLength &other) const + { return lengthType != other.lengthType + || !qFuzzyCompare(fixedValueOrPercentage, other.fixedValueOrPercentage); } + operator QVariant() const; + +private: + Type lengthType; + qreal fixedValueOrPercentage; + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTextLength &); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QTextLength &); +}; +Q_DECLARE_TYPEINFO(QTextLength, QT_VERSION >= QT_VERSION_CHECK(6,0,0) ? Q_PRIMITIVE_TYPE : Q_RELOCATABLE_TYPE); + +inline QTextLength::QTextLength(Type atype, qreal avalue) + : lengthType(atype), fixedValueOrPercentage(avalue) {} + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTextFormat &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QTextFormat &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QTextFormat &); +#endif + +class Q_GUI_EXPORT QTextFormat +{ + Q_GADGET +public: + enum FormatType { + InvalidFormat = -1, + BlockFormat = 1, + CharFormat = 2, + ListFormat = 3, +#if QT_DEPRECATED_SINCE(5, 3) + TableFormat = 4, +#endif + FrameFormat = 5, + + UserFormat = 100 + }; + Q_ENUM(FormatType) + + enum Property { + ObjectIndex = 0x0, + + // paragraph and char + CssFloat = 0x0800, + LayoutDirection = 0x0801, + + OutlinePen = 0x810, + BackgroundBrush = 0x820, + ForegroundBrush = 0x821, + // Internal to qtextlayout.cpp: ObjectSelectionBrush = 0x822 + BackgroundImageUrl = 0x823, + + // paragraph + BlockAlignment = 0x1010, + BlockTopMargin = 0x1030, + BlockBottomMargin = 0x1031, + BlockLeftMargin = 0x1032, + BlockRightMargin = 0x1033, + TextIndent = 0x1034, + TabPositions = 0x1035, + BlockIndent = 0x1040, + LineHeight = 0x1048, + LineHeightType = 0x1049, + BlockNonBreakableLines = 0x1050, + BlockTrailingHorizontalRulerWidth = 0x1060, + + // character properties + FirstFontProperty = 0x1FE0, + FontCapitalization = FirstFontProperty, + FontLetterSpacingType = 0x2033, + FontLetterSpacing = 0x1FE1, + FontWordSpacing = 0x1FE2, + FontStretch = 0x2034, + FontStyleHint = 0x1FE3, + FontStyleStrategy = 0x1FE4, + FontKerning = 0x1FE5, + FontHintingPreference = 0x1FE6, + FontFamily = 0x2000, + FontPointSize = 0x2001, + FontSizeAdjustment = 0x2002, + FontSizeIncrement = FontSizeAdjustment, // old name, compat + FontWeight = 0x2003, + FontItalic = 0x2004, + FontUnderline = 0x2005, // deprecated, use TextUnderlineStyle instead + FontOverline = 0x2006, + FontStrikeOut = 0x2007, + FontFixedPitch = 0x2008, + FontPixelSize = 0x2009, + LastFontProperty = FontPixelSize, + + TextUnderlineColor = 0x2010, + TextVerticalAlignment = 0x2021, + TextOutline = 0x2022, + TextUnderlineStyle = 0x2023, + TextToolTip = 0x2024, + + IsAnchor = 0x2030, + AnchorHref = 0x2031, + AnchorName = 0x2032, + ObjectType = 0x2f00, + + // list properties + ListStyle = 0x3000, + ListIndent = 0x3001, + ListNumberPrefix = 0x3002, + ListNumberSuffix = 0x3003, + + // table and frame properties + FrameBorder = 0x4000, + FrameMargin = 0x4001, + FramePadding = 0x4002, + FrameWidth = 0x4003, + FrameHeight = 0x4004, + FrameTopMargin = 0x4005, + FrameBottomMargin = 0x4006, + FrameLeftMargin = 0x4007, + FrameRightMargin = 0x4008, + FrameBorderBrush = 0x4009, + FrameBorderStyle = 0x4010, + + TableColumns = 0x4100, + TableColumnWidthConstraints = 0x4101, + TableCellSpacing = 0x4102, + TableCellPadding = 0x4103, + TableHeaderRowCount = 0x4104, + + // table cell properties + TableCellRowSpan = 0x4810, + TableCellColumnSpan = 0x4811, + + TableCellTopPadding = 0x4812, + TableCellBottomPadding = 0x4813, + TableCellLeftPadding = 0x4814, + TableCellRightPadding = 0x4815, + + // image properties + ImageName = 0x5000, + ImageWidth = 0x5010, + ImageHeight = 0x5011, + + // internal + /* + SuppressText = 0x5012, + SuppressBackground = 0x513 + */ + + // selection properties + FullWidthSelection = 0x06000, + + // page break properties + PageBreakPolicy = 0x7000, + + // -- + UserProperty = 0x100000 + }; + Q_ENUM(Property) + + enum ObjectTypes { + NoObject, + ImageObject, + TableObject, + TableCellObject, + + UserObject = 0x1000 + }; + Q_ENUM(ObjectTypes) + + enum PageBreakFlag { + PageBreak_Auto = 0, + PageBreak_AlwaysBefore = 0x001, + PageBreak_AlwaysAfter = 0x010 + // PageBreak_AlwaysInside = 0x100 + }; + Q_DECLARE_FLAGS(PageBreakFlags, PageBreakFlag) + + QTextFormat(); + + explicit QTextFormat(int type); + + QTextFormat(const QTextFormat &rhs); + QTextFormat &operator=(const QTextFormat &rhs); + ~QTextFormat(); + + void swap(QTextFormat &other) + { qSwap(d, other.d); qSwap(format_type, other.format_type); } + + void merge(const QTextFormat &other); + + inline bool isValid() const { return type() != InvalidFormat; } + inline bool isEmpty() const { return propertyCount() == 0; } + + int type() const; + + int objectIndex() const; + void setObjectIndex(int object); + + QVariant property(int propertyId) const; + void setProperty(int propertyId, const QVariant &value); + void clearProperty(int propertyId); + bool hasProperty(int propertyId) const; + + bool boolProperty(int propertyId) const; + int intProperty(int propertyId) const; + qreal doubleProperty(int propertyId) const; + QString stringProperty(int propertyId) const; + QColor colorProperty(int propertyId) const; + QPen penProperty(int propertyId) const; + QBrush brushProperty(int propertyId) const; + QTextLength lengthProperty(int propertyId) const; + QVector<QTextLength> lengthVectorProperty(int propertyId) const; + + void setProperty(int propertyId, const QVector<QTextLength> &lengths); + + QMap<int, QVariant> properties() const; + int propertyCount() const; + + inline void setObjectType(int type); + inline int objectType() const + { return intProperty(ObjectType); } + + inline bool isCharFormat() const { return type() == CharFormat; } + inline bool isBlockFormat() const { return type() == BlockFormat; } + inline bool isListFormat() const { return type() == ListFormat; } + inline bool isFrameFormat() const { return type() == FrameFormat; } + inline bool isImageFormat() const { return type() == CharFormat && objectType() == ImageObject; } + inline bool isTableFormat() const { return type() == FrameFormat && objectType() == TableObject; } + inline bool isTableCellFormat() const { return type() == CharFormat && objectType() == TableCellObject; } + + QTextBlockFormat toBlockFormat() const; + QTextCharFormat toCharFormat() const; + QTextListFormat toListFormat() const; + QTextTableFormat toTableFormat() const; + QTextFrameFormat toFrameFormat() const; + QTextImageFormat toImageFormat() const; + QTextTableCellFormat toTableCellFormat() const; + + bool operator==(const QTextFormat &rhs) const; + inline bool operator!=(const QTextFormat &rhs) const { return !operator==(rhs); } + operator QVariant() const; + + inline void setLayoutDirection(Qt::LayoutDirection direction) + { setProperty(QTextFormat::LayoutDirection, direction); } + inline Qt::LayoutDirection layoutDirection() const + { return Qt::LayoutDirection(intProperty(QTextFormat::LayoutDirection)); } + + inline void setBackground(const QBrush &brush) + { setProperty(BackgroundBrush, brush); } + inline QBrush background() const + { return brushProperty(BackgroundBrush); } + inline void clearBackground() + { clearProperty(BackgroundBrush); } + + inline void setForeground(const QBrush &brush) + { setProperty(ForegroundBrush, brush); } + inline QBrush foreground() const + { return brushProperty(ForegroundBrush); } + inline void clearForeground() + { clearProperty(ForegroundBrush); } + +private: + QSharedDataPointer<QTextFormatPrivate> d; + qint32 format_type; + + friend class QTextFormatCollection; + friend class QTextCharFormat; + friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTextFormat &); + friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QTextFormat &); +}; + +Q_DECLARE_SHARED(QTextFormat) + +inline void QTextFormat::setObjectType(int atype) +{ setProperty(ObjectType, atype); } + +Q_DECLARE_OPERATORS_FOR_FLAGS(QTextFormat::PageBreakFlags) + +class Q_GUI_EXPORT QTextCharFormat : public QTextFormat +{ +public: + enum VerticalAlignment { + AlignNormal = 0, + AlignSuperScript, + AlignSubScript, + AlignMiddle, + AlignTop, + AlignBottom, + AlignBaseline + }; + enum UnderlineStyle { // keep in sync with Qt::PenStyle! + NoUnderline, + SingleUnderline, + DashUnderline, + DotLine, + DashDotLine, + DashDotDotLine, + WaveUnderline, + SpellCheckUnderline + }; + + QTextCharFormat(); + + bool isValid() const { return isCharFormat(); } + + enum FontPropertiesInheritanceBehavior { + FontPropertiesSpecifiedOnly, + FontPropertiesAll + }; + void setFont(const QFont &font, FontPropertiesInheritanceBehavior behavior); + void setFont(const QFont &font); // ### Qt6: Merge with above + QFont font() const; + + inline void setFontFamily(const QString &family) + { setProperty(FontFamily, family); } + inline QString fontFamily() const + { return stringProperty(FontFamily); } + + inline void setFontPointSize(qreal size) + { setProperty(FontPointSize, size); } + inline qreal fontPointSize() const + { return doubleProperty(FontPointSize); } + + inline void setFontWeight(int weight) + { setProperty(FontWeight, weight); } + inline int fontWeight() const + { return hasProperty(FontWeight) ? intProperty(FontWeight) : QFont::Normal; } + inline void setFontItalic(bool italic) + { setProperty(FontItalic, italic); } + inline bool fontItalic() const + { return boolProperty(FontItalic); } + inline void setFontCapitalization(QFont::Capitalization capitalization) + { setProperty(FontCapitalization, capitalization); } + inline QFont::Capitalization fontCapitalization() const + { return static_cast<QFont::Capitalization>(intProperty(FontCapitalization)); } + inline void setFontLetterSpacingType(QFont::SpacingType letterSpacingType) + { setProperty(FontLetterSpacingType, letterSpacingType); } + inline QFont::SpacingType fontLetterSpacingType() const + { return static_cast<QFont::SpacingType>(intProperty(FontLetterSpacingType)); } + inline void setFontLetterSpacing(qreal spacing) + { setProperty(FontLetterSpacing, spacing); } + inline qreal fontLetterSpacing() const + { return doubleProperty(FontLetterSpacing); } + inline void setFontWordSpacing(qreal spacing) + { setProperty(FontWordSpacing, spacing); } + inline qreal fontWordSpacing() const + { return doubleProperty(FontWordSpacing); } + + inline void setFontUnderline(bool underline) + { setProperty(TextUnderlineStyle, underline ? SingleUnderline : NoUnderline); } + bool fontUnderline() const; + + inline void setFontOverline(bool overline) + { setProperty(FontOverline, overline); } + inline bool fontOverline() const + { return boolProperty(FontOverline); } + + inline void setFontStrikeOut(bool strikeOut) + { setProperty(FontStrikeOut, strikeOut); } + inline bool fontStrikeOut() const + { return boolProperty(FontStrikeOut); } + + inline void setUnderlineColor(const QColor &color) + { setProperty(TextUnderlineColor, color); } + inline QColor underlineColor() const + { return colorProperty(TextUnderlineColor); } + + inline void setFontFixedPitch(bool fixedPitch) + { setProperty(FontFixedPitch, fixedPitch); } + inline bool fontFixedPitch() const + { return boolProperty(FontFixedPitch); } + + inline void setFontStretch(int factor) + { setProperty(FontStretch, factor); } + inline int fontStretch() const + { return intProperty(FontStretch); } + + inline void setFontStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = QFont::PreferDefault) + { setProperty(FontStyleHint, hint); setProperty(FontStyleStrategy, strategy); } + inline void setFontStyleStrategy(QFont::StyleStrategy strategy) + { setProperty(FontStyleStrategy, strategy); } + QFont::StyleHint fontStyleHint() const + { return static_cast<QFont::StyleHint>(intProperty(FontStyleHint)); } + QFont::StyleStrategy fontStyleStrategy() const + { return static_cast<QFont::StyleStrategy>(intProperty(FontStyleStrategy)); } + + inline void setFontHintingPreference(QFont::HintingPreference hintingPreference) + { + setProperty(FontHintingPreference, hintingPreference); + } + + inline QFont::HintingPreference fontHintingPreference() const + { + return static_cast<QFont::HintingPreference>(intProperty(FontHintingPreference)); + } + + inline void setFontKerning(bool enable) + { setProperty(FontKerning, enable); } + inline bool fontKerning() const + { return boolProperty(FontKerning); } + + void setUnderlineStyle(UnderlineStyle style); + inline UnderlineStyle underlineStyle() const + { return static_cast<UnderlineStyle>(intProperty(TextUnderlineStyle)); } + + inline void setVerticalAlignment(VerticalAlignment alignment) + { setProperty(TextVerticalAlignment, alignment); } + inline VerticalAlignment verticalAlignment() const + { return static_cast<VerticalAlignment>(intProperty(TextVerticalAlignment)); } + + inline void setTextOutline(const QPen &pen) + { setProperty(TextOutline, pen); } + inline QPen textOutline() const + { return penProperty(TextOutline); } + + inline void setToolTip(const QString &tip) + { setProperty(TextToolTip, tip); } + inline QString toolTip() const + { return stringProperty(TextToolTip); } + + inline void setAnchor(bool anchor) + { setProperty(IsAnchor, anchor); } + inline bool isAnchor() const + { return boolProperty(IsAnchor); } + + inline void setAnchorHref(const QString &value) + { setProperty(AnchorHref, value); } + inline QString anchorHref() const + { return stringProperty(AnchorHref); } + + inline void setAnchorName(const QString &name) + { setAnchorNames(QStringList(name)); } + QString anchorName() const; + + inline void setAnchorNames(const QStringList &names) + { setProperty(AnchorName, names); } + QStringList anchorNames() const; + + inline void setTableCellRowSpan(int tableCellRowSpan); + inline int tableCellRowSpan() const + { int s = intProperty(TableCellRowSpan); if (s == 0) s = 1; return s; } + inline void setTableCellColumnSpan(int tableCellColumnSpan); + inline int tableCellColumnSpan() const + { int s = intProperty(TableCellColumnSpan); if (s == 0) s = 1; return s; } + +protected: + explicit QTextCharFormat(const QTextFormat &fmt); + friend class QTextFormat; +}; + +Q_DECLARE_SHARED(QTextCharFormat) + +inline void QTextCharFormat::setTableCellRowSpan(int _tableCellRowSpan) +{ + if (_tableCellRowSpan <= 1) + clearProperty(TableCellRowSpan); // the getter will return 1 here. + else + setProperty(TableCellRowSpan, _tableCellRowSpan); +} + +inline void QTextCharFormat::setTableCellColumnSpan(int _tableCellColumnSpan) +{ + if (_tableCellColumnSpan <= 1) + clearProperty(TableCellColumnSpan); // the getter will return 1 here. + else + setProperty(TableCellColumnSpan, _tableCellColumnSpan); +} + +class Q_GUI_EXPORT QTextBlockFormat : public QTextFormat +{ +public: + enum LineHeightTypes { + SingleHeight = 0, + ProportionalHeight = 1, + FixedHeight = 2, + MinimumHeight = 3, + LineDistanceHeight = 4 + }; + + QTextBlockFormat(); + + bool isValid() const { return isBlockFormat(); } + + inline void setAlignment(Qt::Alignment alignment); + inline Qt::Alignment alignment() const + { int a = intProperty(BlockAlignment); if (a == 0) a = Qt::AlignLeft; return QFlag(a); } + + inline void setTopMargin(qreal margin) + { setProperty(BlockTopMargin, margin); } + inline qreal topMargin() const + { return doubleProperty(BlockTopMargin); } + + inline void setBottomMargin(qreal margin) + { setProperty(BlockBottomMargin, margin); } + inline qreal bottomMargin() const + { return doubleProperty(BlockBottomMargin); } + + inline void setLeftMargin(qreal margin) + { setProperty(BlockLeftMargin, margin); } + inline qreal leftMargin() const + { return doubleProperty(BlockLeftMargin); } + + inline void setRightMargin(qreal margin) + { setProperty(BlockRightMargin, margin); } + inline qreal rightMargin() const + { return doubleProperty(BlockRightMargin); } + + inline void setTextIndent(qreal aindent) + { setProperty(TextIndent, aindent); } + inline qreal textIndent() const + { return doubleProperty(TextIndent); } + + inline void setIndent(int indent); + inline int indent() const + { return intProperty(BlockIndent); } + + inline void setLineHeight(qreal height, int heightType) + { setProperty(LineHeight, height); setProperty(LineHeightType, heightType); } + inline qreal lineHeight(qreal scriptLineHeight, qreal scaling) const; + inline qreal lineHeight() const + { return doubleProperty(LineHeight); } + inline int lineHeightType() const + { return intProperty(LineHeightType); } + + inline void setNonBreakableLines(bool b) + { setProperty(BlockNonBreakableLines, b); } + inline bool nonBreakableLines() const + { return boolProperty(BlockNonBreakableLines); } + + inline void setPageBreakPolicy(PageBreakFlags flags) + { setProperty(PageBreakPolicy, int(flags)); } + inline PageBreakFlags pageBreakPolicy() const + { return PageBreakFlags(intProperty(PageBreakPolicy)); } + + void setTabPositions(const QList<QTextOption::Tab> &tabs); + QList<QTextOption::Tab> tabPositions() const; + +protected: + explicit QTextBlockFormat(const QTextFormat &fmt); + friend class QTextFormat; +}; + +Q_DECLARE_SHARED(QTextBlockFormat) + +inline void QTextBlockFormat::setAlignment(Qt::Alignment aalignment) +{ setProperty(BlockAlignment, int(aalignment)); } + +inline void QTextBlockFormat::setIndent(int aindent) +{ setProperty(BlockIndent, aindent); } + +inline qreal QTextBlockFormat::lineHeight(qreal scriptLineHeight, qreal scaling = 1.0) const +{ + switch(intProperty(LineHeightType)) { + case SingleHeight: + return(scriptLineHeight); + case ProportionalHeight: + return(scriptLineHeight * doubleProperty(LineHeight) / 100.0); + case FixedHeight: + return(doubleProperty(LineHeight) * scaling); + case MinimumHeight: + return(qMax(scriptLineHeight, doubleProperty(LineHeight) * scaling)); + case LineDistanceHeight: + return(scriptLineHeight + doubleProperty(LineHeight) * scaling); + } + return(0); +} + +class Q_GUI_EXPORT QTextListFormat : public QTextFormat +{ +public: + QTextListFormat(); + + bool isValid() const { return isListFormat(); } + + enum Style { + ListDisc = -1, + ListCircle = -2, + ListSquare = -3, + ListDecimal = -4, + ListLowerAlpha = -5, + ListUpperAlpha = -6, + ListLowerRoman = -7, + ListUpperRoman = -8, + ListStyleUndefined = 0 + }; + + inline void setStyle(Style style); + inline Style style() const + { return static_cast<Style>(intProperty(ListStyle)); } + + inline void setIndent(int indent); + inline int indent() const + { return intProperty(ListIndent); } + + inline void setNumberPrefix(const QString &numberPrefix); + inline QString numberPrefix() const + { return stringProperty(ListNumberPrefix); } + + inline void setNumberSuffix(const QString &numberSuffix); + inline QString numberSuffix() const + { return stringProperty(ListNumberSuffix); } + +protected: + explicit QTextListFormat(const QTextFormat &fmt); + friend class QTextFormat; +}; + +Q_DECLARE_SHARED(QTextListFormat) + +inline void QTextListFormat::setStyle(Style astyle) +{ setProperty(ListStyle, astyle); } + +inline void QTextListFormat::setIndent(int aindent) +{ setProperty(ListIndent, aindent); } + +inline void QTextListFormat::setNumberPrefix(const QString &np) +{ setProperty(ListNumberPrefix, np); } + +inline void QTextListFormat::setNumberSuffix(const QString &ns) +{ setProperty(ListNumberSuffix, ns); } + +class Q_GUI_EXPORT QTextImageFormat : public QTextCharFormat +{ +public: + QTextImageFormat(); + + bool isValid() const { return isImageFormat(); } + + inline void setName(const QString &name); + inline QString name() const + { return stringProperty(ImageName); } + + inline void setWidth(qreal width); + inline qreal width() const + { return doubleProperty(ImageWidth); } + + inline void setHeight(qreal height); + inline qreal height() const + { return doubleProperty(ImageHeight); } + +protected: + explicit QTextImageFormat(const QTextFormat &format); + friend class QTextFormat; +}; + +Q_DECLARE_SHARED(QTextImageFormat) + +inline void QTextImageFormat::setName(const QString &aname) +{ setProperty(ImageName, aname); } + +inline void QTextImageFormat::setWidth(qreal awidth) +{ setProperty(ImageWidth, awidth); } + +inline void QTextImageFormat::setHeight(qreal aheight) +{ setProperty(ImageHeight, aheight); } + +class Q_GUI_EXPORT QTextFrameFormat : public QTextFormat +{ +public: + QTextFrameFormat(); + + bool isValid() const { return isFrameFormat(); } + + enum Position { + InFlow, + FloatLeft, + FloatRight + // ###### +// Absolute + }; + + enum BorderStyle { + BorderStyle_None, + BorderStyle_Dotted, + BorderStyle_Dashed, + BorderStyle_Solid, + BorderStyle_Double, + BorderStyle_DotDash, + BorderStyle_DotDotDash, + BorderStyle_Groove, + BorderStyle_Ridge, + BorderStyle_Inset, + BorderStyle_Outset + }; + + inline void setPosition(Position f) + { setProperty(CssFloat, f); } + inline Position position() const + { return static_cast<Position>(intProperty(CssFloat)); } + + inline void setBorder(qreal border); + inline qreal border() const + { return doubleProperty(FrameBorder); } + + inline void setBorderBrush(const QBrush &brush) + { setProperty(FrameBorderBrush, brush); } + inline QBrush borderBrush() const + { return brushProperty(FrameBorderBrush); } + + inline void setBorderStyle(BorderStyle style) + { setProperty(FrameBorderStyle, style); } + inline BorderStyle borderStyle() const + { return static_cast<BorderStyle>(intProperty(FrameBorderStyle)); } + + void setMargin(qreal margin); + inline qreal margin() const + { return doubleProperty(FrameMargin); } + + inline void setTopMargin(qreal margin); + qreal topMargin() const; + + inline void setBottomMargin(qreal margin); + qreal bottomMargin() const; + + inline void setLeftMargin(qreal margin); + qreal leftMargin() const; + + inline void setRightMargin(qreal margin); + qreal rightMargin() const; + + inline void setPadding(qreal padding); + inline qreal padding() const + { return doubleProperty(FramePadding); } + + inline void setWidth(qreal width); + inline void setWidth(const QTextLength &length) + { setProperty(FrameWidth, length); } + inline QTextLength width() const + { return lengthProperty(FrameWidth); } + + inline void setHeight(qreal height); + inline void setHeight(const QTextLength &height); + inline QTextLength height() const + { return lengthProperty(FrameHeight); } + + inline void setPageBreakPolicy(PageBreakFlags flags) + { setProperty(PageBreakPolicy, int(flags)); } + inline PageBreakFlags pageBreakPolicy() const + { return PageBreakFlags(intProperty(PageBreakPolicy)); } + +protected: + explicit QTextFrameFormat(const QTextFormat &fmt); + friend class QTextFormat; +}; + +Q_DECLARE_SHARED(QTextFrameFormat) + +inline void QTextFrameFormat::setBorder(qreal aborder) +{ setProperty(FrameBorder, aborder); } + +inline void QTextFrameFormat::setPadding(qreal apadding) +{ setProperty(FramePadding, apadding); } + +inline void QTextFrameFormat::setWidth(qreal awidth) +{ setProperty(FrameWidth, QTextLength(QTextLength::FixedLength, awidth)); } + +inline void QTextFrameFormat::setHeight(qreal aheight) +{ setProperty(FrameHeight, QTextLength(QTextLength::FixedLength, aheight)); } +inline void QTextFrameFormat::setHeight(const QTextLength &aheight) +{ setProperty(FrameHeight, aheight); } + +inline void QTextFrameFormat::setTopMargin(qreal amargin) +{ setProperty(FrameTopMargin, amargin); } + +inline void QTextFrameFormat::setBottomMargin(qreal amargin) +{ setProperty(FrameBottomMargin, amargin); } + +inline void QTextFrameFormat::setLeftMargin(qreal amargin) +{ setProperty(FrameLeftMargin, amargin); } + +inline void QTextFrameFormat::setRightMargin(qreal amargin) +{ setProperty(FrameRightMargin, amargin); } + +class Q_GUI_EXPORT QTextTableFormat : public QTextFrameFormat +{ +public: + QTextTableFormat(); + + inline bool isValid() const { return isTableFormat(); } + + inline int columns() const + { int cols = intProperty(TableColumns); if (cols == 0) cols = 1; return cols; } + inline void setColumns(int columns); + + inline void setColumnWidthConstraints(const QVector<QTextLength> &constraints) + { setProperty(TableColumnWidthConstraints, constraints); } + + inline QVector<QTextLength> columnWidthConstraints() const + { return lengthVectorProperty(TableColumnWidthConstraints); } + + inline void clearColumnWidthConstraints() + { clearProperty(TableColumnWidthConstraints); } + + inline qreal cellSpacing() const + { return doubleProperty(TableCellSpacing); } + inline void setCellSpacing(qreal spacing) + { setProperty(TableCellSpacing, spacing); } + + inline qreal cellPadding() const + { return doubleProperty(TableCellPadding); } + inline void setCellPadding(qreal padding); + + inline void setAlignment(Qt::Alignment alignment); + inline Qt::Alignment alignment() const + { return QFlag(intProperty(BlockAlignment)); } + + inline void setHeaderRowCount(int count) + { setProperty(TableHeaderRowCount, count); } + inline int headerRowCount() const + { return intProperty(TableHeaderRowCount); } + +protected: + explicit QTextTableFormat(const QTextFormat &fmt); + friend class QTextFormat; +}; + +Q_DECLARE_SHARED(QTextTableFormat) + +inline void QTextTableFormat::setColumns(int acolumns) +{ + if (acolumns == 1) + acolumns = 0; + setProperty(TableColumns, acolumns); +} + +inline void QTextTableFormat::setCellPadding(qreal apadding) +{ setProperty(TableCellPadding, apadding); } + +inline void QTextTableFormat::setAlignment(Qt::Alignment aalignment) +{ setProperty(BlockAlignment, int(aalignment)); } + +class Q_GUI_EXPORT QTextTableCellFormat : public QTextCharFormat +{ +public: + QTextTableCellFormat(); + + inline bool isValid() const { return isTableCellFormat(); } + + inline void setTopPadding(qreal padding); + inline qreal topPadding() const; + + inline void setBottomPadding(qreal padding); + inline qreal bottomPadding() const; + + inline void setLeftPadding(qreal padding); + inline qreal leftPadding() const; + + inline void setRightPadding(qreal padding); + inline qreal rightPadding() const; + + inline void setPadding(qreal padding); + +protected: + explicit QTextTableCellFormat(const QTextFormat &fmt); + friend class QTextFormat; +}; + +Q_DECLARE_SHARED(QTextTableCellFormat) + +inline void QTextTableCellFormat::setTopPadding(qreal padding) +{ + setProperty(TableCellTopPadding, padding); +} + +inline qreal QTextTableCellFormat::topPadding() const +{ + return doubleProperty(TableCellTopPadding); +} + +inline void QTextTableCellFormat::setBottomPadding(qreal padding) +{ + setProperty(TableCellBottomPadding, padding); +} + +inline qreal QTextTableCellFormat::bottomPadding() const +{ + return doubleProperty(TableCellBottomPadding); +} + +inline void QTextTableCellFormat::setLeftPadding(qreal padding) +{ + setProperty(TableCellLeftPadding, padding); +} + +inline qreal QTextTableCellFormat::leftPadding() const +{ + return doubleProperty(TableCellLeftPadding); +} + +inline void QTextTableCellFormat::setRightPadding(qreal padding) +{ + setProperty(TableCellRightPadding, padding); +} + +inline qreal QTextTableCellFormat::rightPadding() const +{ + return doubleProperty(TableCellRightPadding); +} + +inline void QTextTableCellFormat::setPadding(qreal padding) +{ + setTopPadding(padding); + setBottomPadding(padding); + setLeftPadding(padding); + setRightPadding(padding); +} + + +QT_END_NAMESPACE + +#endif // QTEXTFORMAT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtextlayout.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtextlayout.h new file mode 100644 index 000000000..980a099b0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtextlayout.h @@ -0,0 +1,276 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QTEXTLAYOUT_H +#define QTEXTLAYOUT_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qstring.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qrect.h> +#include <QtCore/qvector.h> +#include <QtGui/qcolor.h> +#include <QtCore/qobject.h> +#include <QtGui/qevent.h> +#include <QtGui/qtextformat.h> +#include <QtGui/qglyphrun.h> +#include <QtGui/qtextcursor.h> + +QT_BEGIN_NAMESPACE + + +class QTextEngine; +class QFont; +#ifndef QT_NO_RAWFONT +class QRawFont; +#endif +class QRect; +class QRegion; +class QTextFormat; +class QPalette; +class QPainter; + +class Q_GUI_EXPORT QTextInlineObject +{ +public: + QTextInlineObject(int i, QTextEngine *e) : itm(i), eng(e) {} + inline QTextInlineObject() : itm(0), eng(Q_NULLPTR) {} + inline bool isValid() const { return eng; } + + QRectF rect() const; + qreal width() const; + qreal ascent() const; + qreal descent() const; + qreal height() const; + + Qt::LayoutDirection textDirection() const; + + void setWidth(qreal w); + void setAscent(qreal a); + void setDescent(qreal d); + + int textPosition() const; + + int formatIndex() const; + QTextFormat format() const; + +private: + friend class QTextLayout; + int itm; + QTextEngine *eng; +}; + +class QPaintDevice; +class QTextFormat; +class QTextLine; +class QTextBlock; +class QTextOption; + +class Q_GUI_EXPORT QTextLayout +{ +public: + // does itemization + QTextLayout(); + QTextLayout(const QString& text); + QTextLayout(const QString& text, const QFont &font, QPaintDevice *paintdevice = Q_NULLPTR); + QTextLayout(const QTextBlock &b); + ~QTextLayout(); + + void setFont(const QFont &f); + QFont font() const; + +#ifndef QT_NO_RAWFONT + void setRawFont(const QRawFont &rawFont); +#endif + + void setText(const QString& string); + QString text() const; + + void setTextOption(const QTextOption &option); + const QTextOption &textOption() const; + + void setPreeditArea(int position, const QString &text); + int preeditAreaPosition() const; + QString preeditAreaText() const; + + struct FormatRange { + int start; + int length; + QTextCharFormat format; + + friend bool operator==(const FormatRange &lhs, const FormatRange &rhs) + { return lhs.start == rhs.start && lhs.length == rhs.length && lhs.format == rhs.format; } + friend bool operator!=(const FormatRange &lhs, const FormatRange &rhs) + { return !operator==(lhs, rhs); } + }; +#if QT_DEPRECATED_SINCE(5, 6) + QT_DEPRECATED_X("Use setFormats()") void setAdditionalFormats(const QList<FormatRange> &overrides); + QT_DEPRECATED_X("Use formats()") QList<FormatRange> additionalFormats() const; + QT_DEPRECATED_X("Use clearFormats()") void clearAdditionalFormats(); +#endif + void setFormats(const QVector<FormatRange> &overrides); + QVector<FormatRange> formats() const; + void clearFormats(); + + void setCacheEnabled(bool enable); + bool cacheEnabled() const; + + void setCursorMoveStyle(Qt::CursorMoveStyle style); + Qt::CursorMoveStyle cursorMoveStyle() const; + + void beginLayout(); + void endLayout(); + void clearLayout(); + + QTextLine createLine(); + + int lineCount() const; + QTextLine lineAt(int i) const; + QTextLine lineForTextPosition(int pos) const; + + enum CursorMode { + SkipCharacters, + SkipWords + }; + bool isValidCursorPosition(int pos) const; + int nextCursorPosition(int oldPos, CursorMode mode = SkipCharacters) const; + int previousCursorPosition(int oldPos, CursorMode mode = SkipCharacters) const; + int leftCursorPosition(int oldPos) const; + int rightCursorPosition(int oldPos) const; + + void draw(QPainter *p, const QPointF &pos, const QVector<FormatRange> &selections = QVector<FormatRange>(), + const QRectF &clip = QRectF()) const; + void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition) const; + void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition, int width) const; + + QPointF position() const; + void setPosition(const QPointF &p); + + QRectF boundingRect() const; + + qreal minimumWidth() const; + qreal maximumWidth() const; + +#if !defined(QT_NO_RAWFONT) + QList<QGlyphRun> glyphRuns(int from = -1, int length = -1) const; +#endif + + QTextEngine *engine() const { return d; } + void setFlags(int flags); +private: + QTextLayout(QTextEngine *e) : d(e) {} + Q_DISABLE_COPY(QTextLayout) + + friend class QPainter; + friend class QGraphicsSimpleTextItemPrivate; + friend class QGraphicsSimpleTextItem; + friend void qt_format_text(const QFont &font, const QRectF &_r, int tf, const QTextOption *, const QString& str, + QRectF *brect, int tabstops, int* tabarray, int tabarraylen, + QPainter *painter); + QTextEngine *d; +}; +Q_DECLARE_TYPEINFO(QTextLayout::FormatRange, Q_RELOCATABLE_TYPE); + + +class Q_GUI_EXPORT QTextLine +{ +public: + inline QTextLine() : index(0), eng(Q_NULLPTR) {} + inline bool isValid() const { return eng; } + + QRectF rect() const; + qreal x() const; + qreal y() const; + qreal width() const; + qreal ascent() const; + qreal descent() const; + qreal height() const; + qreal leading() const; + + void setLeadingIncluded(bool included); + bool leadingIncluded() const; + + qreal naturalTextWidth() const; + qreal horizontalAdvance() const; + QRectF naturalTextRect() const; + + enum Edge { + Leading, + Trailing + }; + enum CursorPosition { + CursorBetweenCharacters, + CursorOnCharacter + }; + + /* cursorPos gets set to the valid position */ + qreal cursorToX(int *cursorPos, Edge edge = Leading) const; + inline qreal cursorToX(int cursorPos, Edge edge = Leading) const { return cursorToX(&cursorPos, edge); } + int xToCursor(qreal x, CursorPosition = CursorBetweenCharacters) const; + + void setLineWidth(qreal width); + void setNumColumns(int columns); + void setNumColumns(int columns, qreal alignmentWidth); + + void setPosition(const QPointF &pos); + QPointF position() const; + + int textStart() const; + int textLength() const; + + int lineNumber() const { return index; } + + void draw(QPainter *p, const QPointF &point, const QTextLayout::FormatRange *selection = Q_NULLPTR) const; + +#if !defined(QT_NO_RAWFONT) + QList<QGlyphRun> glyphRuns(int from = -1, int length = -1) const; +#endif + +private: + QTextLine(int line, QTextEngine *e) : index(line), eng(e) {} + void layout_helper(int numGlyphs); + + friend class QTextLayout; + friend class QTextFragment; + int index; + QTextEngine *eng; +}; + +QT_END_NAMESPACE + +#endif // QTEXTLAYOUT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtextlist.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtextlist.h new file mode 100644 index 000000000..3967787f0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtextlist.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTLIST_H +#define QTEXTLIST_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qtextobject.h> +#include <QtCore/qobject.h> + +QT_BEGIN_NAMESPACE + + +class QTextListPrivate; +class QTextCursor; + +class Q_GUI_EXPORT QTextList : public QTextBlockGroup +{ + Q_OBJECT +public: + explicit QTextList(QTextDocument *doc); + ~QTextList(); + + int count() const; + + inline bool isEmpty() const + { return count() == 0; } + + QTextBlock item(int i) const; + + int itemNumber(const QTextBlock &) const; + QString itemText(const QTextBlock &) const; + + void removeItem(int i); + void remove(const QTextBlock &); + + void add(const QTextBlock &block); + + inline void setFormat(const QTextListFormat &format); + QTextListFormat format() const { return QTextObject::format().toListFormat(); } + +private: + Q_DISABLE_COPY(QTextList) + Q_DECLARE_PRIVATE(QTextList) +}; + +inline void QTextList::setFormat(const QTextListFormat &aformat) +{ QTextObject::setFormat(aformat); } + +QT_END_NAMESPACE + +#endif // QTEXTLIST_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtextobject.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtextobject.h new file mode 100644 index 000000000..a5030de11 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtextobject.h @@ -0,0 +1,339 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTOBJECT_H +#define QTEXTOBJECT_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> +#include <QtGui/qtextformat.h> +#include <QtGui/qtextlayout.h> +#include <QtGui/qglyphrun.h> + +QT_BEGIN_NAMESPACE + + +class QTextObjectPrivate; +class QTextDocument; +class QTextDocumentPrivate; +class QTextCursor; +class QTextBlock; +class QTextFragment; +class QTextList; + +class Q_GUI_EXPORT QTextObject : public QObject +{ + Q_OBJECT + +protected: + explicit QTextObject(QTextDocument *doc); + ~QTextObject(); + + void setFormat(const QTextFormat &format); + +public: + QTextFormat format() const; + int formatIndex() const; + + QTextDocument *document() const; + + int objectIndex() const; + + QTextDocumentPrivate *docHandle() const; + +protected: + QTextObject(QTextObjectPrivate &p, QTextDocument *doc); + +private: + Q_DECLARE_PRIVATE(QTextObject) + Q_DISABLE_COPY(QTextObject) + friend class QTextDocumentPrivate; +}; + +class QTextBlockGroupPrivate; +class Q_GUI_EXPORT QTextBlockGroup : public QTextObject +{ + Q_OBJECT + +protected: + explicit QTextBlockGroup(QTextDocument *doc); + ~QTextBlockGroup(); + + virtual void blockInserted(const QTextBlock &block); + virtual void blockRemoved(const QTextBlock &block); + virtual void blockFormatChanged(const QTextBlock &block); + + QList<QTextBlock> blockList() const; + +protected: + QTextBlockGroup(QTextBlockGroupPrivate &p, QTextDocument *doc); +private: + Q_DECLARE_PRIVATE(QTextBlockGroup) + Q_DISABLE_COPY(QTextBlockGroup) + friend class QTextDocumentPrivate; +}; + +class Q_GUI_EXPORT QTextFrameLayoutData { +public: + virtual ~QTextFrameLayoutData(); +}; + +class QTextFramePrivate; +class Q_GUI_EXPORT QTextFrame : public QTextObject +{ + Q_OBJECT + +public: + explicit QTextFrame(QTextDocument *doc); + ~QTextFrame(); + + inline void setFrameFormat(const QTextFrameFormat &format); + QTextFrameFormat frameFormat() const { return QTextObject::format().toFrameFormat(); } + + QTextCursor firstCursorPosition() const; + QTextCursor lastCursorPosition() const; + int firstPosition() const; + int lastPosition() const; + + QTextFrameLayoutData *layoutData() const; + void setLayoutData(QTextFrameLayoutData *data); + + QList<QTextFrame *> childFrames() const; + QTextFrame *parentFrame() const; + + class Q_GUI_EXPORT iterator { + QTextFrame *f; + int b; + int e; + QTextFrame *cf; + int cb; + + friend class QTextFrame; + friend class QTextTableCell; + friend class QTextDocumentLayoutPrivate; + iterator(QTextFrame *frame, int block, int begin, int end); + public: + iterator(); // ### Qt 6: inline +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + iterator(const iterator &o) Q_DECL_NOTHROW; // = default + iterator &operator=(const iterator &o) Q_DECL_NOTHROW; // = default + iterator(iterator &&other) Q_DECL_NOTHROW // = default + { memcpy(this, &other, sizeof(iterator)); } + iterator &operator=(iterator &&other) Q_DECL_NOTHROW // = default + { memcpy(this, &other, sizeof(iterator)); return *this; } +#endif + + QTextFrame *parentFrame() const { return f; } + + QTextFrame *currentFrame() const; + QTextBlock currentBlock() const; + + bool atEnd() const { return !cf && cb == e; } + + inline bool operator==(const iterator &o) const { return f == o.f && cf == o.cf && cb == o.cb; } + inline bool operator!=(const iterator &o) const { return f != o.f || cf != o.cf || cb != o.cb; } + iterator &operator++(); + inline iterator operator++(int) { iterator tmp = *this; operator++(); return tmp; } + iterator &operator--(); + inline iterator operator--(int) { iterator tmp = *this; operator--(); return tmp; } + }; + + friend class iterator; + // more Qt + typedef iterator Iterator; + + iterator begin() const; + iterator end() const; + +protected: + QTextFrame(QTextFramePrivate &p, QTextDocument *doc); +private: + friend class QTextDocumentPrivate; + Q_DECLARE_PRIVATE(QTextFrame) + Q_DISABLE_COPY(QTextFrame) +}; +Q_DECLARE_TYPEINFO(QTextFrame::iterator, Q_MOVABLE_TYPE); + +inline void QTextFrame::setFrameFormat(const QTextFrameFormat &aformat) +{ QTextObject::setFormat(aformat); } + +class Q_GUI_EXPORT QTextBlockUserData { +public: + virtual ~QTextBlockUserData(); +}; + +class Q_GUI_EXPORT QTextBlock +{ + friend class QSyntaxHighlighter; +public: + inline QTextBlock(QTextDocumentPrivate *priv, int b) : p(priv), n(b) {} + inline QTextBlock() : p(Q_NULLPTR), n(0) {} + inline QTextBlock(const QTextBlock &o) : p(o.p), n(o.n) {} + inline QTextBlock &operator=(const QTextBlock &o) { p = o.p; n = o.n; return *this; } + + bool isValid() const; + + inline bool operator==(const QTextBlock &o) const { return p == o.p && n == o.n; } + inline bool operator!=(const QTextBlock &o) const { return p != o.p || n != o.n; } + inline bool operator<(const QTextBlock &o) const { return position() < o.position(); } + + int position() const; + int length() const; + bool contains(int position) const; + + QTextLayout *layout() const; + void clearLayout(); + QTextBlockFormat blockFormat() const; + int blockFormatIndex() const; + QTextCharFormat charFormat() const; + int charFormatIndex() const; + + Qt::LayoutDirection textDirection() const; + + QString text() const; + + QVector<QTextLayout::FormatRange> textFormats() const; + + const QTextDocument *document() const; + + QTextList *textList() const; + + QTextBlockUserData *userData() const; + void setUserData(QTextBlockUserData *data); + + int userState() const; + void setUserState(int state); + + int revision() const; + void setRevision(int rev); + + bool isVisible() const; + void setVisible(bool visible); + + int blockNumber() const; + int firstLineNumber() const; + + void setLineCount(int count); + int lineCount() const; + + class Q_GUI_EXPORT iterator { + const QTextDocumentPrivate *p; + int b; + int e; + int n; + friend class QTextBlock; + iterator(const QTextDocumentPrivate *priv, int begin, int end, int f) : p(priv), b(begin), e(end), n(f) {} + public: + iterator() : p(Q_NULLPTR), b(0), e(0), n(0) {} +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + iterator(const iterator &o) : p(o.p), b(o.b), e(o.e), n(o.n) {} +#endif + + QTextFragment fragment() const; + + bool atEnd() const { return n == e; } + + inline bool operator==(const iterator &o) const { return p == o.p && n == o.n; } + inline bool operator!=(const iterator &o) const { return p != o.p || n != o.n; } + iterator &operator++(); + inline iterator operator++(int) { iterator tmp = *this; operator++(); return tmp; } + iterator &operator--(); + inline iterator operator--(int) { iterator tmp = *this; operator--(); return tmp; } + }; + + // more Qt + typedef iterator Iterator; + + iterator begin() const; + iterator end() const; + + QTextBlock next() const; + QTextBlock previous() const; + + inline QTextDocumentPrivate *docHandle() const { return p; } + inline int fragmentIndex() const { return n; } + +private: + QTextDocumentPrivate *p; + int n; + friend class QTextDocumentPrivate; + friend class QTextLayout; +}; + +Q_DECLARE_TYPEINFO(QTextBlock, Q_MOVABLE_TYPE); +Q_DECLARE_TYPEINFO(QTextBlock::iterator, Q_MOVABLE_TYPE); + + +class Q_GUI_EXPORT QTextFragment +{ +public: + inline QTextFragment(const QTextDocumentPrivate *priv, int f, int fe) : p(priv), n(f), ne(fe) {} + inline QTextFragment() : p(Q_NULLPTR), n(0), ne(0) {} + inline QTextFragment(const QTextFragment &o) : p(o.p), n(o.n), ne(o.ne) {} + inline QTextFragment &operator=(const QTextFragment &o) { p = o.p; n = o.n; ne = o.ne; return *this; } + + inline bool isValid() const { return p && n; } + + inline bool operator==(const QTextFragment &o) const { return p == o.p && n == o.n; } + inline bool operator!=(const QTextFragment &o) const { return p != o.p || n != o.n; } + inline bool operator<(const QTextFragment &o) const { return position() < o.position(); } + + int position() const; + int length() const; + bool contains(int position) const; + + QTextCharFormat charFormat() const; + int charFormatIndex() const; + QString text() const; + +#if !defined(QT_NO_RAWFONT) + QList<QGlyphRun> glyphRuns(int from = -1, int length = -1) const; +#endif + +private: + const QTextDocumentPrivate *p; + int n; + int ne; +}; + +Q_DECLARE_TYPEINFO(QTextFragment, Q_MOVABLE_TYPE); + +QT_END_NAMESPACE + +#endif // QTEXTOBJECT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtextoption.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtextoption.h new file mode 100644 index 000000000..9ef9cee9b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtextoption.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTOPTION_H +#define QTEXTOPTION_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qchar.h> +#include <QtCore/qmetatype.h> + + +QT_BEGIN_NAMESPACE + + +template <typename T> class QList; +struct QTextOptionPrivate; + +class Q_GUI_EXPORT QTextOption +{ +public: + enum TabType { + LeftTab, + RightTab, + CenterTab, + DelimiterTab + }; + + struct Q_GUI_EXPORT Tab { + inline Tab() : position(80), type(QTextOption::LeftTab) { } + inline Tab(qreal pos, TabType tabType, QChar delim = QChar()) + : position(pos), type(tabType), delimiter(delim) {} + + inline bool operator==(const Tab &other) const { + return type == other.type + && qFuzzyCompare(position, other.position) + && delimiter == other.delimiter; + } + + inline bool operator!=(const Tab &other) const { + return !operator==(other); + } + + qreal position; + TabType type; + QChar delimiter; + }; + + QTextOption(); + /*implicit*/ QTextOption(Qt::Alignment alignment); + ~QTextOption(); + + QTextOption(const QTextOption &o); + QTextOption &operator=(const QTextOption &o); + + inline void setAlignment(Qt::Alignment alignment); + inline Qt::Alignment alignment() const { return Qt::Alignment(align); } + + inline void setTextDirection(Qt::LayoutDirection aDirection) { this->direction = aDirection; } + inline Qt::LayoutDirection textDirection() const { return Qt::LayoutDirection(direction); } + + enum WrapMode { + NoWrap, + WordWrap, + ManualWrap, + WrapAnywhere, + WrapAtWordBoundaryOrAnywhere + }; + inline void setWrapMode(WrapMode wrap) { wordWrap = wrap; } + inline WrapMode wrapMode() const { return static_cast<WrapMode>(wordWrap); } + + enum Flag { + ShowTabsAndSpaces = 0x1, + ShowLineAndParagraphSeparators = 0x2, + AddSpaceForLineAndParagraphSeparators = 0x4, + SuppressColors = 0x8, + ShowDocumentTerminator = 0x10, + IncludeTrailingSpaces = 0x80000000 + }; + Q_DECLARE_FLAGS(Flags, Flag) + inline void setFlags(Flags flags); + inline Flags flags() const { return Flags(f); } + + inline void setTabStop(qreal tabStop); + inline qreal tabStop() const { return tab; } + + void setTabArray(const QList<qreal> &tabStops); + QList<qreal> tabArray() const; + + void setTabs(const QList<Tab> &tabStops); + QList<Tab> tabs() const; + + void setUseDesignMetrics(bool b) { design = b; } + bool useDesignMetrics() const { return design; } + +private: + uint align : 8; + uint wordWrap : 4; + uint design : 1; + uint direction : 2; + uint unused : 17; + uint unused2; // ### Qt 6: remove unnecessary, extra 32 bits + uint f; + qreal tab; + QTextOptionPrivate *d; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QTextOption::Flags) + +inline void QTextOption::setAlignment(Qt::Alignment aalignment) +{ align = aalignment; } + +inline void QTextOption::setFlags(Flags aflags) +{ f = aflags; } + +inline void QTextOption::setTabStop(qreal atabStop) +{ tab = atabStop; } + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( QTextOption::Tab ) + +#endif // QTEXTOPTION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtexttable.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtexttable.h new file mode 100644 index 000000000..ee8e97439 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtexttable.h @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTTABLE_H +#define QTEXTTABLE_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> +#include <QtGui/qtextobject.h> + +QT_BEGIN_NAMESPACE + + +class QTextCursor; +class QTextTable; +class QTextTablePrivate; + +class Q_GUI_EXPORT QTextTableCell +{ +public: + QTextTableCell() : table(Q_NULLPTR) {} + ~QTextTableCell() {} + QTextTableCell(const QTextTableCell &o) : table(o.table), fragment(o.fragment) {} + QTextTableCell &operator=(const QTextTableCell &o) + { table = o.table; fragment = o.fragment; return *this; } + + void setFormat(const QTextCharFormat &format); + QTextCharFormat format() const; + + int row() const; + int column() const; + + int rowSpan() const; + int columnSpan() const; + + inline bool isValid() const { return table != Q_NULLPTR; } + + QTextCursor firstCursorPosition() const; + QTextCursor lastCursorPosition() const; + int firstPosition() const; + int lastPosition() const; + + inline bool operator==(const QTextTableCell &other) const + { return table == other.table && fragment == other.fragment; } + inline bool operator!=(const QTextTableCell &other) const + { return !operator==(other); } + + QTextFrame::iterator begin() const; + QTextFrame::iterator end() const; + + int tableCellFormatIndex() const; + +private: + friend class QTextTable; + QTextTableCell(const QTextTable *t, int f) + : table(t), fragment(f) {} + + const QTextTable *table; + int fragment; +}; + +class Q_GUI_EXPORT QTextTable : public QTextFrame +{ + Q_OBJECT +public: + explicit QTextTable(QTextDocument *doc); + ~QTextTable(); + + void resize(int rows, int cols); + void insertRows(int pos, int num); + void insertColumns(int pos, int num); + void appendRows(int count); + void appendColumns(int count); + void removeRows(int pos, int num); + void removeColumns(int pos, int num); + + void mergeCells(int row, int col, int numRows, int numCols); + void mergeCells(const QTextCursor &cursor); + void splitCell(int row, int col, int numRows, int numCols); + + int rows() const; + int columns() const; + + QTextTableCell cellAt(int row, int col) const; + QTextTableCell cellAt(int position) const; + QTextTableCell cellAt(const QTextCursor &c) const; + + QTextCursor rowStart(const QTextCursor &c) const; + QTextCursor rowEnd(const QTextCursor &c) const; + + void setFormat(const QTextTableFormat &format); + QTextTableFormat format() const { return QTextObject::format().toTableFormat(); } + +private: + Q_DISABLE_COPY(QTextTable) + Q_DECLARE_PRIVATE(QTextTable) + friend class QTextTableCell; +}; + +QT_END_NAMESPACE + +#endif // QTEXTTABLE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtgui-config.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtgui-config.h new file mode 100644 index 000000000..146bc3283 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtgui-config.h @@ -0,0 +1,45 @@ +#define QT_FEATURE_accessibility 1 +#define QT_NO_ACCESSIBILITY_ATSPI_BRIDGE +#define QT_FEATURE_action 1 +#define QT_FEATURE_opengles2 -1 +#define QT_FEATURE_dynamicgl 1 +#define QT_OPENGL_DYNAMIC true +#define QT_FEATURE_angle 1 +#define QT_OPENGL_ES_2_ANGLE true +#define QT_FEATURE_clipboard 1 +#define QT_FEATURE_colornames 1 +#define QT_FEATURE_combined_angle_lib -1 +#define QT_FEATURE_cssparser 1 +#define QT_FEATURE_cursor 1 +#define QT_FEATURE_desktopservices 1 +#define QT_FEATURE_imageformat_xpm 1 +#define QT_FEATURE_draganddrop 1 +#define QT_FEATURE_opengl 1 +#define QT_NO_FONTCONFIG +#define QT_FEATURE_imageformatplugin 1 +#define QT_FEATURE_highdpiscaling 1 +#define QT_FEATURE_im 1 +#define QT_FEATURE_image_heuristic_mask 1 +#define QT_FEATURE_image_text 1 +#define QT_FEATURE_imageformat_bmp 1 +#define QT_FEATURE_imageformat_jpeg 1 +#define QT_FEATURE_imageformat_png 1 +#define QT_FEATURE_imageformat_ppm 1 +#define QT_FEATURE_imageformat_xbm 1 +#define QT_FEATURE_movie 1 +#define QT_FEATURE_opengles3 -1 +#define QT_FEATURE_opengles31 -1 +#define QT_FEATURE_openvg -1 +#define QT_FEATURE_pdf 1 +#define QT_FEATURE_picture 1 +#define QT_QPA_DEFAULT_PLATFORM_NAME "windows" +#define QT_FEATURE_sessionmanager 1 +#define QT_FEATURE_shortcut 1 +#define QT_FEATURE_standarditemmodel 1 +#define QT_FEATURE_systemtrayicon 1 +#define QT_FEATURE_tabletevent 1 +#define QT_FEATURE_texthtmlparser 1 +#define QT_FEATURE_textodfwriter 1 +#define QT_FEATURE_validator 1 +#define QT_FEATURE_whatsthis 1 +#define QT_FEATURE_wheelevent 1 diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtguiglobal.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtguiglobal.h new file mode 100644 index 000000000..8a7409e3d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtguiglobal.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTGUIGLOBAL_H +#define QTGUIGLOBAL_H + +#include <QtCore/qglobal.h> +#include <QtGui/qtgui-config.h> + +QT_BEGIN_NAMESPACE + +#ifndef QT_STATIC +# if defined(QT_BUILD_GUI_LIB) +# define Q_GUI_EXPORT Q_DECL_EXPORT +# else +# define Q_GUI_EXPORT Q_DECL_IMPORT +# endif +#else +# define Q_GUI_EXPORT +#endif + +QT_END_NAMESPACE + +#endif // QTGUIGLOBAL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtguiversion.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtguiversion.h new file mode 100644 index 000000000..0fc944cfe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtguiversion.h @@ -0,0 +1,9 @@ +/* This file was generated by syncqt. */ +#ifndef QT_QTGUI_VERSION_H +#define QT_QTGUI_VERSION_H + +#define QTGUI_VERSION_STR "5.9.4" + +#define QTGUI_VERSION 0x050904 + +#endif // QT_QTGUI_VERSION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtouchdevice.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtouchdevice.h new file mode 100644 index 000000000..c98aa6923 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtouchdevice.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTOUCHDEVICE_H +#define QTOUCHDEVICE_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> + +QT_BEGIN_NAMESPACE + +class QDebug; +class QTouchDevicePrivate; + +class Q_GUI_EXPORT QTouchDevice +{ + Q_GADGET +public: + enum DeviceType { + TouchScreen, + TouchPad + }; + Q_ENUM(DeviceType) + + enum CapabilityFlag { + Position = 0x0001, + Area = 0x0002, + Pressure = 0x0004, + Velocity = 0x0008, + RawPositions = 0x0010, + NormalizedPosition = 0x0020, + MouseEmulation = 0x0040 + }; + Q_FLAG(CapabilityFlag) + Q_DECLARE_FLAGS(Capabilities, CapabilityFlag) + + QTouchDevice(); + ~QTouchDevice(); + + static QList<const QTouchDevice *> devices(); + + QString name() const; + DeviceType type() const; + Capabilities capabilities() const; + int maximumTouchPoints() const; + + void setName(const QString &name); + void setType(DeviceType devType); + void setCapabilities(Capabilities caps); + void setMaximumTouchPoints(int max); + +private: + QTouchDevicePrivate *d; + friend class QTouchDevicePrivate; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QTouchDevice::Capabilities) + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QTouchDevice *); +#endif + +QT_END_NAMESPACE + +#endif // QTOUCHDEVICE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qtransform.h b/qrenderdoc/3rdparty/qt/include/QtGui/qtransform.h new file mode 100644 index 000000000..06ae61186 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qtransform.h @@ -0,0 +1,411 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QTRANSFORM_H +#define QTRANSFORM_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qmatrix.h> +#include <QtGui/qpainterpath.h> +#include <QtGui/qpolygon.h> +#include <QtGui/qregion.h> +#include <QtGui/qwindowdefs.h> +#include <QtCore/qline.h> +#include <QtCore/qpoint.h> +#include <QtCore/qrect.h> + +QT_BEGIN_NAMESPACE + + +class QVariant; + +class Q_GUI_EXPORT QTransform +{ +public: + enum TransformationType { + TxNone = 0x00, + TxTranslate = 0x01, + TxScale = 0x02, + TxRotate = 0x04, + TxShear = 0x08, + TxProject = 0x10 + }; + + inline explicit QTransform(Qt::Initialization) : affine(Qt::Uninitialized) {} + QTransform(); + QTransform(qreal h11, qreal h12, qreal h13, + qreal h21, qreal h22, qreal h23, + qreal h31, qreal h32, qreal h33 = 1.0); + QTransform(qreal h11, qreal h12, qreal h21, + qreal h22, qreal dx, qreal dy); + explicit QTransform(const QMatrix &mtx); + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + // ### Qt 6: remove; the compiler-generated ones are fine! + QTransform &operator=(QTransform &&other) Q_DECL_NOTHROW // = default + { memcpy(this, &other, sizeof(QTransform)); return *this; } + QTransform &operator=(const QTransform &) Q_DECL_NOTHROW; // = default + QTransform(QTransform &&other) Q_DECL_NOTHROW // = default + : affine(Qt::Uninitialized) + { memcpy(this, &other, sizeof(QTransform)); } + QTransform(const QTransform &other) Q_DECL_NOTHROW // = default + : affine(Qt::Uninitialized) + { memcpy(this, &other, sizeof(QTransform)); } +#endif + + bool isAffine() const; + bool isIdentity() const; + bool isInvertible() const; + bool isScaling() const; + bool isRotating() const; + bool isTranslating() const; + + TransformationType type() const; + + inline qreal determinant() const; + qreal det() const; + + qreal m11() const; + qreal m12() const; + qreal m13() const; + qreal m21() const; + qreal m22() const; + qreal m23() const; + qreal m31() const; + qreal m32() const; + qreal m33() const; + qreal dx() const; + qreal dy() const; + + void setMatrix(qreal m11, qreal m12, qreal m13, + qreal m21, qreal m22, qreal m23, + qreal m31, qreal m32, qreal m33); + + Q_REQUIRED_RESULT QTransform inverted(bool *invertible = Q_NULLPTR) const; + Q_REQUIRED_RESULT QTransform adjoint() const; + Q_REQUIRED_RESULT QTransform transposed() const; + + QTransform &translate(qreal dx, qreal dy); + QTransform &scale(qreal sx, qreal sy); + QTransform &shear(qreal sh, qreal sv); + QTransform &rotate(qreal a, Qt::Axis axis = Qt::ZAxis); + QTransform &rotateRadians(qreal a, Qt::Axis axis = Qt::ZAxis); + + static bool squareToQuad(const QPolygonF &square, QTransform &result); + static bool quadToSquare(const QPolygonF &quad, QTransform &result); + static bool quadToQuad(const QPolygonF &one, + const QPolygonF &two, + QTransform &result); + + bool operator==(const QTransform &) const; + bool operator!=(const QTransform &) const; + + QTransform &operator*=(const QTransform &); + QTransform operator*(const QTransform &o) const; + + operator QVariant() const; + + void reset(); + QPoint map(const QPoint &p) const; + QPointF map(const QPointF &p) const; + QLine map(const QLine &l) const; + QLineF map(const QLineF &l) const; + QPolygonF map(const QPolygonF &a) const; + QPolygon map(const QPolygon &a) const; + QRegion map(const QRegion &r) const; + QPainterPath map(const QPainterPath &p) const; + QPolygon mapToPolygon(const QRect &r) const; + QRect mapRect(const QRect &) const; + QRectF mapRect(const QRectF &) const; + void map(int x, int y, int *tx, int *ty) const; + void map(qreal x, qreal y, qreal *tx, qreal *ty) const; + + const QMatrix &toAffine() const; + + QTransform &operator*=(qreal div); + QTransform &operator/=(qreal div); + QTransform &operator+=(qreal div); + QTransform &operator-=(qreal div); + + static QTransform fromTranslate(qreal dx, qreal dy); + static QTransform fromScale(qreal dx, qreal dy); + +private: + inline QTransform(qreal h11, qreal h12, qreal h13, + qreal h21, qreal h22, qreal h23, + qreal h31, qreal h32, qreal h33, bool) + : affine(h11, h12, h21, h22, h31, h32, true) + , m_13(h13), m_23(h23), m_33(h33) + , m_type(TxNone) + , m_dirty(TxProject) + , d(Q_NULLPTR) + { + } + inline QTransform(bool) + : affine(true) + , m_13(0), m_23(0), m_33(1) + , m_type(TxNone) + , m_dirty(TxNone) + , d(Q_NULLPTR) + { + } + inline TransformationType inline_type() const; + QMatrix affine; + qreal m_13; + qreal m_23; + qreal m_33; + + mutable uint m_type : 5; + mutable uint m_dirty : 5; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + class Private; + Private *d; +#endif +}; +Q_DECLARE_TYPEINFO(QTransform, Q_MOVABLE_TYPE); + +Q_GUI_EXPORT Q_DECL_CONST_FUNCTION uint qHash(const QTransform &key, uint seed = 0) Q_DECL_NOTHROW; + +/******* inlines *****/ +inline QTransform::TransformationType QTransform::inline_type() const +{ + if (m_dirty == TxNone) + return static_cast<TransformationType>(m_type); + return type(); +} + +inline bool QTransform::isAffine() const +{ + return inline_type() < TxProject; +} +inline bool QTransform::isIdentity() const +{ + return inline_type() == TxNone; +} + +inline bool QTransform::isInvertible() const +{ + return !qFuzzyIsNull(determinant()); +} + +inline bool QTransform::isScaling() const +{ + return type() >= TxScale; +} +inline bool QTransform::isRotating() const +{ + return inline_type() >= TxRotate; +} + +inline bool QTransform::isTranslating() const +{ + return inline_type() >= TxTranslate; +} + +inline qreal QTransform::determinant() const +{ + return affine._m11*(m_33*affine._m22-affine._dy*m_23) - + affine._m21*(m_33*affine._m12-affine._dy*m_13)+affine._dx*(m_23*affine._m12-affine._m22*m_13); +} +inline qreal QTransform::det() const +{ + return determinant(); +} +inline qreal QTransform::m11() const +{ + return affine._m11; +} +inline qreal QTransform::m12() const +{ + return affine._m12; +} +inline qreal QTransform::m13() const +{ + return m_13; +} +inline qreal QTransform::m21() const +{ + return affine._m21; +} +inline qreal QTransform::m22() const +{ + return affine._m22; +} +inline qreal QTransform::m23() const +{ + return m_23; +} +inline qreal QTransform::m31() const +{ + return affine._dx; +} +inline qreal QTransform::m32() const +{ + return affine._dy; +} +inline qreal QTransform::m33() const +{ + return m_33; +} +inline qreal QTransform::dx() const +{ + return affine._dx; +} +inline qreal QTransform::dy() const +{ + return affine._dy; +} + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wfloat-equal") +QT_WARNING_DISABLE_GCC("-Wfloat-equal") + +inline QTransform &QTransform::operator*=(qreal num) +{ + if (num == 1.) + return *this; + affine._m11 *= num; + affine._m12 *= num; + m_13 *= num; + affine._m21 *= num; + affine._m22 *= num; + m_23 *= num; + affine._dx *= num; + affine._dy *= num; + m_33 *= num; + if (m_dirty < TxScale) + m_dirty = TxScale; + return *this; +} +inline QTransform &QTransform::operator/=(qreal div) +{ + if (div == 0) + return *this; + div = 1/div; + return operator*=(div); +} +inline QTransform &QTransform::operator+=(qreal num) +{ + if (num == 0) + return *this; + affine._m11 += num; + affine._m12 += num; + m_13 += num; + affine._m21 += num; + affine._m22 += num; + m_23 += num; + affine._dx += num; + affine._dy += num; + m_33 += num; + m_dirty = TxProject; + return *this; +} +inline QTransform &QTransform::operator-=(qreal num) +{ + if (num == 0) + return *this; + affine._m11 -= num; + affine._m12 -= num; + m_13 -= num; + affine._m21 -= num; + affine._m22 -= num; + m_23 -= num; + affine._dx -= num; + affine._dy -= num; + m_33 -= num; + m_dirty = TxProject; + return *this; +} + +QT_WARNING_POP + +inline bool qFuzzyCompare(const QTransform& t1, const QTransform& t2) +{ + return qFuzzyCompare(t1.m11(), t2.m11()) + && qFuzzyCompare(t1.m12(), t2.m12()) + && qFuzzyCompare(t1.m13(), t2.m13()) + && qFuzzyCompare(t1.m21(), t2.m21()) + && qFuzzyCompare(t1.m22(), t2.m22()) + && qFuzzyCompare(t1.m23(), t2.m23()) + && qFuzzyCompare(t1.m31(), t2.m31()) + && qFuzzyCompare(t1.m32(), t2.m32()) + && qFuzzyCompare(t1.m33(), t2.m33()); +} + + +/****** stream functions *******************/ +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTransform &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QTransform &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QTransform &); +#endif +/****** end stream functions *******************/ + +// mathematical semantics +inline QPoint operator*(const QPoint &p, const QTransform &m) +{ return m.map(p); } +inline QPointF operator*(const QPointF &p, const QTransform &m) +{ return m.map(p); } +inline QLineF operator*(const QLineF &l, const QTransform &m) +{ return m.map(l); } +inline QLine operator*(const QLine &l, const QTransform &m) +{ return m.map(l); } +inline QPolygon operator *(const QPolygon &a, const QTransform &m) +{ return m.map(a); } +inline QPolygonF operator *(const QPolygonF &a, const QTransform &m) +{ return m.map(a); } +inline QRegion operator *(const QRegion &r, const QTransform &m) +{ return m.map(r); } +inline QPainterPath operator *(const QPainterPath &p, const QTransform &m) +{ return m.map(p); } + +inline QTransform operator *(const QTransform &a, qreal n) +{ QTransform t(a); t *= n; return t; } +inline QTransform operator /(const QTransform &a, qreal n) +{ QTransform t(a); t /= n; return t; } +inline QTransform operator +(const QTransform &a, qreal n) +{ QTransform t(a); t += n; return t; } +inline QTransform operator -(const QTransform &a, qreal n) +{ QTransform t(a); t -= n; return t; } + +QT_END_NAMESPACE + +#endif // QTRANSFORM_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qvalidator.h b/qrenderdoc/3rdparty/qt/include/QtGui/qvalidator.h new file mode 100644 index 000000000..eba4b5467 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qvalidator.h @@ -0,0 +1,232 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVALIDATOR_H +#define QVALIDATOR_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qstring.h> +#include <QtCore/qregexp.h> +#include <QtCore/qregularexpression.h> +#include <QtCore/qlocale.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_VALIDATOR + +class QValidatorPrivate; + +class Q_GUI_EXPORT QValidator : public QObject +{ + Q_OBJECT +public: + explicit QValidator(QObject * parent = Q_NULLPTR); + ~QValidator(); + + enum State { + Invalid, + Intermediate, + Acceptable + }; + + void setLocale(const QLocale &locale); + QLocale locale() const; + + virtual State validate(QString &, int &) const = 0; + virtual void fixup(QString &) const; + +Q_SIGNALS: + void changed(); + +protected: + QValidator(QObjectPrivate &d, QObject *parent); + QValidator(QValidatorPrivate &d, QObject *parent); + +private: + Q_DISABLE_COPY(QValidator) + Q_DECLARE_PRIVATE(QValidator) +}; + +class Q_GUI_EXPORT QIntValidator : public QValidator +{ + Q_OBJECT + Q_PROPERTY(int bottom READ bottom WRITE setBottom NOTIFY bottomChanged) + Q_PROPERTY(int top READ top WRITE setTop NOTIFY topChanged) + +public: + explicit QIntValidator(QObject * parent = Q_NULLPTR); + QIntValidator(int bottom, int top, QObject *parent = Q_NULLPTR); + ~QIntValidator(); + + QValidator::State validate(QString &, int &) const Q_DECL_OVERRIDE; + void fixup(QString &input) const Q_DECL_OVERRIDE; + + void setBottom(int); + void setTop(int); + virtual void setRange(int bottom, int top); + + int bottom() const { return b; } + int top() const { return t; } +Q_SIGNALS: + void bottomChanged(int bottom); + void topChanged(int top); + +private: + Q_DISABLE_COPY(QIntValidator) + + int b; + int t; +}; + +#ifndef QT_NO_REGEXP + +class QDoubleValidatorPrivate; + +class Q_GUI_EXPORT QDoubleValidator : public QValidator +{ + Q_OBJECT + Q_PROPERTY(double bottom READ bottom WRITE setBottom NOTIFY bottomChanged) + Q_PROPERTY(double top READ top WRITE setTop NOTIFY topChanged) + Q_PROPERTY(int decimals READ decimals WRITE setDecimals NOTIFY decimalsChanged) + Q_PROPERTY(Notation notation READ notation WRITE setNotation NOTIFY notationChanged) + +public: + explicit QDoubleValidator(QObject * parent = Q_NULLPTR); + QDoubleValidator(double bottom, double top, int decimals, QObject *parent = Q_NULLPTR); + ~QDoubleValidator(); + + enum Notation { + StandardNotation, + ScientificNotation + }; + Q_ENUM(Notation) + QValidator::State validate(QString &, int &) const Q_DECL_OVERRIDE; + + virtual void setRange(double bottom, double top, int decimals = 0); + void setBottom(double); + void setTop(double); + void setDecimals(int); + void setNotation(Notation); + + double bottom() const { return b; } + double top() const { return t; } + int decimals() const { return dec; } + Notation notation() const; + +Q_SIGNALS: + void bottomChanged(double bottom); + void topChanged(double top); + void decimalsChanged(int decimals); + void notationChanged(QDoubleValidator::Notation notation); + +private: + Q_DECLARE_PRIVATE(QDoubleValidator) + Q_DISABLE_COPY(QDoubleValidator) + + double b; + double t; + int dec; +}; + + +class Q_GUI_EXPORT QRegExpValidator : public QValidator +{ + Q_OBJECT + Q_PROPERTY(QRegExp regExp READ regExp WRITE setRegExp NOTIFY regExpChanged) + +public: + explicit QRegExpValidator(QObject *parent = Q_NULLPTR); + explicit QRegExpValidator(const QRegExp& rx, QObject *parent = Q_NULLPTR); + ~QRegExpValidator(); + + virtual QValidator::State validate(QString& input, int& pos) const Q_DECL_OVERRIDE; + + void setRegExp(const QRegExp& rx); + const QRegExp& regExp() const { return r; } + +Q_SIGNALS: + void regExpChanged(const QRegExp& regExp); + +private: + Q_DISABLE_COPY(QRegExpValidator) + + QRegExp r; +}; + +#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 = Q_NULLPTR); + explicit QRegularExpressionValidator(const QRegularExpression &re, QObject *parent = Q_NULLPTR); + ~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 + +#endif // QVALIDATOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qvector2d.h b/qrenderdoc/3rdparty/qt/include/QtGui/qvector2d.h new file mode 100644 index 000000000..5e0394b99 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qvector2d.h @@ -0,0 +1,289 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVECTOR2D_H +#define QVECTOR2D_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qpoint.h> +#include <QtCore/qmetatype.h> + +QT_BEGIN_NAMESPACE + + +class QVector3D; +class QVector4D; +class QVariant; + +#ifndef QT_NO_VECTOR2D + +class Q_GUI_EXPORT QVector2D +{ +public: + Q_DECL_CONSTEXPR QVector2D(); + explicit QVector2D(Qt::Initialization) {} + Q_DECL_CONSTEXPR QVector2D(float xpos, float ypos); + Q_DECL_CONSTEXPR explicit QVector2D(const QPoint& point); + Q_DECL_CONSTEXPR explicit QVector2D(const QPointF& point); +#ifndef QT_NO_VECTOR3D + explicit QVector2D(const QVector3D& vector); +#endif +#ifndef QT_NO_VECTOR4D + explicit QVector2D(const QVector4D& vector); +#endif + + bool isNull() const; + + Q_DECL_CONSTEXPR float x() const; + Q_DECL_CONSTEXPR float y() const; + + void setX(float x); + void setY(float y); + + float &operator[](int i); + float operator[](int i) const; + + float length() const; + float lengthSquared() const; //In Qt 6 convert to inline and constexpr + + Q_REQUIRED_RESULT 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); + QVector2D &operator*=(const QVector2D &vector); + QVector2D &operator/=(float divisor); + inline QVector2D &operator/=(const QVector2D &vector); + + static float dotProduct(const QVector2D& v1, const QVector2D& v2); //In Qt 6 convert to inline and constexpr + + Q_DECL_CONSTEXPR friend inline bool operator==(const QVector2D &v1, const QVector2D &v2); + Q_DECL_CONSTEXPR friend inline bool operator!=(const QVector2D &v1, const QVector2D &v2); + Q_DECL_CONSTEXPR friend inline const QVector2D operator+(const QVector2D &v1, const QVector2D &v2); + Q_DECL_CONSTEXPR friend inline const QVector2D operator-(const QVector2D &v1, const QVector2D &v2); + Q_DECL_CONSTEXPR friend inline const QVector2D operator*(float factor, const QVector2D &vector); + Q_DECL_CONSTEXPR friend inline const QVector2D operator*(const QVector2D &vector, float factor); + Q_DECL_CONSTEXPR friend inline const QVector2D operator*(const QVector2D &v1, const QVector2D &v2); + Q_DECL_CONSTEXPR friend inline const QVector2D operator-(const QVector2D &vector); + Q_DECL_CONSTEXPR friend inline const QVector2D operator/(const QVector2D &vector, float divisor); + Q_DECL_CONSTEXPR friend inline const QVector2D operator/(const QVector2D &vector, const QVector2D &divisor); + + Q_DECL_CONSTEXPR friend inline bool qFuzzyCompare(const QVector2D& v1, const QVector2D& v2); + +#ifndef QT_NO_VECTOR3D + QVector3D toVector3D() const; +#endif +#ifndef QT_NO_VECTOR4D + QVector4D toVector4D() const; +#endif + + Q_DECL_CONSTEXPR QPoint toPoint() const; + Q_DECL_CONSTEXPR QPointF toPointF() const; + + operator QVariant() const; + +private: + float xp, yp; + + friend class QVector3D; + friend class QVector4D; +}; + +Q_DECLARE_TYPEINFO(QVector2D, Q_PRIMITIVE_TYPE); + +Q_DECL_CONSTEXPR inline QVector2D::QVector2D() : xp(0.0f), yp(0.0f) {} + +Q_DECL_CONSTEXPR inline QVector2D::QVector2D(float xpos, float ypos) : xp(xpos), yp(ypos) {} + +Q_DECL_CONSTEXPR inline QVector2D::QVector2D(const QPoint& point) : xp(point.x()), yp(point.y()) {} + +Q_DECL_CONSTEXPR inline QVector2D::QVector2D(const QPointF& point) : xp(point.x()), yp(point.y()) {} + +inline bool QVector2D::isNull() const +{ + return qIsNull(xp) && qIsNull(yp); +} + +Q_DECL_CONSTEXPR inline float QVector2D::x() const { return xp; } +Q_DECL_CONSTEXPR inline float QVector2D::y() const { return yp; } + +inline void QVector2D::setX(float aX) { xp = aX; } +inline void QVector2D::setY(float aY) { yp = aY; } + +inline float &QVector2D::operator[](int i) +{ + Q_ASSERT(uint(i) < 2u); + return *(&xp + i); +} + +inline float QVector2D::operator[](int i) const +{ + Q_ASSERT(uint(i) < 2u); + return *(&xp + i); +} + +inline QVector2D &QVector2D::operator+=(const QVector2D &vector) +{ + xp += vector.xp; + yp += vector.yp; + return *this; +} + +inline QVector2D &QVector2D::operator-=(const QVector2D &vector) +{ + xp -= vector.xp; + yp -= vector.yp; + return *this; +} + +inline QVector2D &QVector2D::operator*=(float factor) +{ + xp *= factor; + yp *= factor; + return *this; +} + +inline QVector2D &QVector2D::operator*=(const QVector2D &vector) +{ + xp *= vector.xp; + yp *= vector.yp; + return *this; +} + +inline QVector2D &QVector2D::operator/=(float divisor) +{ + xp /= divisor; + yp /= divisor; + return *this; +} + +inline QVector2D &QVector2D::operator/=(const QVector2D &vector) +{ + xp /= vector.xp; + yp /= vector.yp; + return *this; +} + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wfloat-equal") +QT_WARNING_DISABLE_GCC("-Wfloat-equal") +Q_DECL_CONSTEXPR inline bool operator==(const QVector2D &v1, const QVector2D &v2) +{ + return v1.xp == v2.xp && v1.yp == v2.yp; +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QVector2D &v1, const QVector2D &v2) +{ + return v1.xp != v2.xp || v1.yp != v2.yp; +} +QT_WARNING_POP + +Q_DECL_CONSTEXPR inline const QVector2D operator+(const QVector2D &v1, const QVector2D &v2) +{ + return QVector2D(v1.xp + v2.xp, v1.yp + v2.yp); +} + +Q_DECL_CONSTEXPR inline const QVector2D operator-(const QVector2D &v1, const QVector2D &v2) +{ + return QVector2D(v1.xp - v2.xp, v1.yp - v2.yp); +} + +Q_DECL_CONSTEXPR inline const QVector2D operator*(float factor, const QVector2D &vector) +{ + return QVector2D(vector.xp * factor, vector.yp * factor); +} + +Q_DECL_CONSTEXPR inline const QVector2D operator*(const QVector2D &vector, float factor) +{ + return QVector2D(vector.xp * factor, vector.yp * factor); +} + +Q_DECL_CONSTEXPR inline const QVector2D operator*(const QVector2D &v1, const QVector2D &v2) +{ + return QVector2D(v1.xp * v2.xp, v1.yp * v2.yp); +} + +Q_DECL_CONSTEXPR inline const QVector2D operator-(const QVector2D &vector) +{ + return QVector2D(-vector.xp, -vector.yp); +} + +Q_DECL_CONSTEXPR inline const QVector2D operator/(const QVector2D &vector, float divisor) +{ + return QVector2D(vector.xp / divisor, vector.yp / divisor); +} + +Q_DECL_CONSTEXPR inline const QVector2D operator/(const QVector2D &vector, const QVector2D &divisor) +{ + return QVector2D(vector.xp / divisor.xp, vector.yp / divisor.yp); +} + +Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QVector2D& v1, const QVector2D& v2) +{ + return qFuzzyCompare(v1.xp, v2.xp) && qFuzzyCompare(v1.yp, v2.yp); +} + +Q_DECL_CONSTEXPR inline QPoint QVector2D::toPoint() const +{ + return QPoint(qRound(xp), qRound(yp)); +} + +Q_DECL_CONSTEXPR inline QPointF QVector2D::toPointF() const +{ + return QPointF(qreal(xp), qreal(yp)); +} + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QVector2D &vector); +#endif + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QVector2D &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QVector2D &); +#endif + +#endif + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qvector3d.h b/qrenderdoc/3rdparty/qt/include/QtGui/qvector3d.h new file mode 100644 index 000000000..a728fd76b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qvector3d.h @@ -0,0 +1,316 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVECTOR3D_H +#define QVECTOR3D_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qpoint.h> +#include <QtCore/qmetatype.h> + +QT_BEGIN_NAMESPACE + + +class QMatrix4x4; +class QVector2D; +class QVector4D; +class QRect; + +#ifndef QT_NO_VECTOR3D + +class Q_GUI_EXPORT QVector3D +{ +public: + Q_DECL_CONSTEXPR QVector3D(); + explicit QVector3D(Qt::Initialization) {} + Q_DECL_CONSTEXPR QVector3D(float xpos, float ypos, float zpos) : xp(xpos), yp(ypos), zp(zpos) {} + + Q_DECL_CONSTEXPR explicit QVector3D(const QPoint& point); + Q_DECL_CONSTEXPR explicit QVector3D(const QPointF& point); +#ifndef QT_NO_VECTOR2D + QVector3D(const QVector2D& vector); + QVector3D(const QVector2D& vector, float zpos); +#endif +#ifndef QT_NO_VECTOR4D + explicit QVector3D(const QVector4D& vector); +#endif + + bool isNull() const; + + Q_DECL_CONSTEXPR float x() const; + Q_DECL_CONSTEXPR float y() const; + Q_DECL_CONSTEXPR float z() const; + + void setX(float x); + void setY(float y); + void setZ(float z); + + float &operator[](int i); + float operator[](int i) const; + + float length() const; + float lengthSquared() const; + + QVector3D normalized() const; + void normalize(); + + QVector3D &operator+=(const QVector3D &vector); + QVector3D &operator-=(const QVector3D &vector); + QVector3D &operator*=(float factor); + QVector3D &operator*=(const QVector3D& vector); + QVector3D &operator/=(float divisor); + inline QVector3D &operator/=(const QVector3D &vector); + + static float dotProduct(const QVector3D& v1, const QVector3D& v2); //In Qt 6 convert to inline and constexpr + static QVector3D crossProduct(const QVector3D& v1, const QVector3D& v2); //in Qt 6 convert to inline and constexpr + + static QVector3D normal(const QVector3D& v1, const QVector3D& v2); + static QVector3D normal + (const QVector3D& v1, const QVector3D& v2, const QVector3D& v3); + + QVector3D project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const; + QVector3D unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const; + + 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; + + Q_DECL_CONSTEXPR friend inline bool operator==(const QVector3D &v1, const QVector3D &v2); + Q_DECL_CONSTEXPR friend inline bool operator!=(const QVector3D &v1, const QVector3D &v2); + Q_DECL_CONSTEXPR friend inline const QVector3D operator+(const QVector3D &v1, const QVector3D &v2); + Q_DECL_CONSTEXPR friend inline const QVector3D operator-(const QVector3D &v1, const QVector3D &v2); + Q_DECL_CONSTEXPR friend inline const QVector3D operator*(float factor, const QVector3D &vector); + Q_DECL_CONSTEXPR friend inline const QVector3D operator*(const QVector3D &vector, float factor); + Q_DECL_CONSTEXPR friend const QVector3D operator*(const QVector3D &v1, const QVector3D& v2); + Q_DECL_CONSTEXPR friend inline const QVector3D operator-(const QVector3D &vector); + Q_DECL_CONSTEXPR friend inline const QVector3D operator/(const QVector3D &vector, float divisor); + Q_DECL_CONSTEXPR friend inline const QVector3D operator/(const QVector3D &vector, const QVector3D &divisor); + + Q_DECL_CONSTEXPR friend inline bool qFuzzyCompare(const QVector3D& v1, const QVector3D& v2); + +#ifndef QT_NO_VECTOR2D + QVector2D toVector2D() const; +#endif +#ifndef QT_NO_VECTOR4D + QVector4D toVector4D() const; +#endif + + Q_DECL_CONSTEXPR QPoint toPoint() const; + Q_DECL_CONSTEXPR QPointF toPointF() const; + + operator QVariant() const; + +private: + float xp, yp, zp; + + friend class QVector2D; + friend class QVector4D; +#ifndef QT_NO_MATRIX4X4 + friend QVector3D operator*(const QVector3D& vector, const QMatrix4x4& matrix); + friend QVector3D operator*(const QMatrix4x4& matrix, const QVector3D& vector); +#endif +}; + +Q_DECLARE_TYPEINFO(QVector3D, Q_PRIMITIVE_TYPE); + +Q_DECL_CONSTEXPR inline QVector3D::QVector3D() : xp(0.0f), yp(0.0f), zp(0.0f) {} + +Q_DECL_CONSTEXPR inline QVector3D::QVector3D(const QPoint& point) : xp(point.x()), yp(point.y()), zp(0.0f) {} + +Q_DECL_CONSTEXPR inline QVector3D::QVector3D(const QPointF& point) : xp(point.x()), yp(point.y()), zp(0.0f) {} + +inline bool QVector3D::isNull() const +{ + return qIsNull(xp) && qIsNull(yp) && qIsNull(zp); +} + +Q_DECL_CONSTEXPR inline float QVector3D::x() const { return xp; } +Q_DECL_CONSTEXPR inline float QVector3D::y() const { return yp; } +Q_DECL_CONSTEXPR inline float QVector3D::z() const { return zp; } + +inline void QVector3D::setX(float aX) { xp = aX; } +inline void QVector3D::setY(float aY) { yp = aY; } +inline void QVector3D::setZ(float aZ) { zp = aZ; } + +inline float &QVector3D::operator[](int i) +{ + Q_ASSERT(uint(i) < 3u); + return *(&xp + i); +} + +inline float QVector3D::operator[](int i) const +{ + Q_ASSERT(uint(i) < 3u); + return *(&xp + i); +} + +inline QVector3D &QVector3D::operator+=(const QVector3D &vector) +{ + xp += vector.xp; + yp += vector.yp; + zp += vector.zp; + return *this; +} + +inline QVector3D &QVector3D::operator-=(const QVector3D &vector) +{ + xp -= vector.xp; + yp -= vector.yp; + zp -= vector.zp; + return *this; +} + +inline QVector3D &QVector3D::operator*=(float factor) +{ + xp *= factor; + yp *= factor; + zp *= factor; + return *this; +} + +inline QVector3D &QVector3D::operator*=(const QVector3D& vector) +{ + xp *= vector.xp; + yp *= vector.yp; + zp *= vector.zp; + return *this; +} + +inline QVector3D &QVector3D::operator/=(float divisor) +{ + xp /= divisor; + yp /= divisor; + zp /= divisor; + return *this; +} + +inline QVector3D &QVector3D::operator/=(const QVector3D &vector) +{ + xp /= vector.xp; + yp /= vector.yp; + zp /= vector.zp; + return *this; +} + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wfloat-equal") +QT_WARNING_DISABLE_GCC("-Wfloat-equal") +Q_DECL_CONSTEXPR inline bool operator==(const QVector3D &v1, const QVector3D &v2) +{ + return v1.xp == v2.xp && v1.yp == v2.yp && v1.zp == v2.zp; +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QVector3D &v1, const QVector3D &v2) +{ + return v1.xp != v2.xp || v1.yp != v2.yp || v1.zp != v2.zp; +} +QT_WARNING_POP + +Q_DECL_CONSTEXPR inline const QVector3D operator+(const QVector3D &v1, const QVector3D &v2) +{ + return QVector3D(v1.xp + v2.xp, v1.yp + v2.yp, v1.zp + v2.zp); +} + +Q_DECL_CONSTEXPR inline const QVector3D operator-(const QVector3D &v1, const QVector3D &v2) +{ + return QVector3D(v1.xp - v2.xp, v1.yp - v2.yp, v1.zp - v2.zp); +} + +Q_DECL_CONSTEXPR inline const QVector3D operator*(float factor, const QVector3D &vector) +{ + return QVector3D(vector.xp * factor, vector.yp * factor, vector.zp * factor); +} + +Q_DECL_CONSTEXPR inline const QVector3D operator*(const QVector3D &vector, float factor) +{ + return QVector3D(vector.xp * factor, vector.yp * factor, vector.zp * factor); +} + +Q_DECL_CONSTEXPR inline const QVector3D operator*(const QVector3D &v1, const QVector3D& v2) +{ + return QVector3D(v1.xp * v2.xp, v1.yp * v2.yp, v1.zp * v2.zp); +} + +Q_DECL_CONSTEXPR inline const QVector3D operator-(const QVector3D &vector) +{ + return QVector3D(-vector.xp, -vector.yp, -vector.zp); +} + +Q_DECL_CONSTEXPR inline const QVector3D operator/(const QVector3D &vector, float divisor) +{ + return QVector3D(vector.xp / divisor, vector.yp / divisor, vector.zp / divisor); +} + +Q_DECL_CONSTEXPR inline const QVector3D operator/(const QVector3D &vector, const QVector3D &divisor) +{ + return QVector3D(vector.xp / divisor.xp, vector.yp / divisor.yp, vector.zp / divisor.zp); +} + +Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QVector3D& v1, const QVector3D& v2) +{ + return qFuzzyCompare(v1.xp, v2.xp) && + qFuzzyCompare(v1.yp, v2.yp) && + qFuzzyCompare(v1.zp, v2.zp); +} + +Q_DECL_CONSTEXPR inline QPoint QVector3D::toPoint() const +{ + return QPoint(qRound(xp), qRound(yp)); +} + +Q_DECL_CONSTEXPR inline QPointF QVector3D::toPointF() const +{ + return QPointF(qreal(xp), qreal(yp)); +} + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QVector3D &vector); +#endif + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QVector3D &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QVector3D &); +#endif + +#endif + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qvector4d.h b/qrenderdoc/3rdparty/qt/include/QtGui/qvector4d.h new file mode 100644 index 000000000..be373aa80 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qvector4d.h @@ -0,0 +1,317 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVECTOR4D_H +#define QVECTOR4D_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qpoint.h> +#include <QtCore/qmetatype.h> + +QT_BEGIN_NAMESPACE + + +class QMatrix4x4; +class QVector2D; +class QVector3D; + +#ifndef QT_NO_VECTOR4D + +class Q_GUI_EXPORT QVector4D +{ +public: + Q_DECL_CONSTEXPR QVector4D(); + explicit QVector4D(Qt::Initialization) {} + Q_DECL_CONSTEXPR QVector4D(float xpos, float ypos, float zpos, float wpos); + Q_DECL_CONSTEXPR explicit QVector4D(const QPoint& point); + Q_DECL_CONSTEXPR explicit QVector4D(const QPointF& point); +#ifndef QT_NO_VECTOR2D + QVector4D(const QVector2D& vector); + QVector4D(const QVector2D& vector, float zpos, float wpos); +#endif +#ifndef QT_NO_VECTOR3D + QVector4D(const QVector3D& vector); + QVector4D(const QVector3D& vector, float wpos); +#endif + + bool isNull() const; + + Q_DECL_CONSTEXPR float x() const; + Q_DECL_CONSTEXPR float y() const; + Q_DECL_CONSTEXPR float z() const; + Q_DECL_CONSTEXPR float w() const; + + void setX(float x); + void setY(float y); + void setZ(float z); + void setW(float w); + + float &operator[](int i); + float operator[](int i) const; + + float length() const; + float lengthSquared() const; //In Qt 6 convert to inline and constexpr + + Q_REQUIRED_RESULT QVector4D normalized() const; + void normalize(); + + QVector4D &operator+=(const QVector4D &vector); + QVector4D &operator-=(const QVector4D &vector); + QVector4D &operator*=(float factor); + QVector4D &operator*=(const QVector4D &vector); + QVector4D &operator/=(float divisor); + inline QVector4D &operator/=(const QVector4D &vector); + + static float dotProduct(const QVector4D& v1, const QVector4D& v2); //In Qt 6 convert to inline and constexpr + + Q_DECL_CONSTEXPR friend inline bool operator==(const QVector4D &v1, const QVector4D &v2); + Q_DECL_CONSTEXPR friend inline bool operator!=(const QVector4D &v1, const QVector4D &v2); + Q_DECL_CONSTEXPR friend inline const QVector4D operator+(const QVector4D &v1, const QVector4D &v2); + Q_DECL_CONSTEXPR friend inline const QVector4D operator-(const QVector4D &v1, const QVector4D &v2); + Q_DECL_CONSTEXPR friend inline const QVector4D operator*(float factor, const QVector4D &vector); + Q_DECL_CONSTEXPR friend inline const QVector4D operator*(const QVector4D &vector, float factor); + Q_DECL_CONSTEXPR friend inline const QVector4D operator*(const QVector4D &v1, const QVector4D& v2); + Q_DECL_CONSTEXPR friend inline const QVector4D operator-(const QVector4D &vector); + Q_DECL_CONSTEXPR friend inline const QVector4D operator/(const QVector4D &vector, float divisor); + Q_DECL_CONSTEXPR friend inline const QVector4D operator/(const QVector4D &vector, const QVector4D &divisor); + + Q_DECL_CONSTEXPR friend inline bool qFuzzyCompare(const QVector4D& v1, const QVector4D& v2); + +#ifndef QT_NO_VECTOR2D + QVector2D toVector2D() const; + QVector2D toVector2DAffine() const; +#endif +#ifndef QT_NO_VECTOR3D + QVector3D toVector3D() const; + QVector3D toVector3DAffine() const; +#endif + + Q_DECL_CONSTEXPR QPoint toPoint() const; + Q_DECL_CONSTEXPR QPointF toPointF() const; + + operator QVariant() const; + +private: + float xp, yp, zp, wp; + + friend class QVector2D; + friend class QVector3D; +#ifndef QT_NO_MATRIX4X4 + friend QVector4D operator*(const QVector4D& vector, const QMatrix4x4& matrix); + friend QVector4D operator*(const QMatrix4x4& matrix, const QVector4D& vector); +#endif +}; + +Q_DECLARE_TYPEINFO(QVector4D, Q_PRIMITIVE_TYPE); + +Q_DECL_CONSTEXPR inline QVector4D::QVector4D() : xp(0.0f), yp(0.0f), zp(0.0f), wp(0.0f) {} + +Q_DECL_CONSTEXPR inline QVector4D::QVector4D(float xpos, float ypos, float zpos, float wpos) : xp(xpos), yp(ypos), zp(zpos), wp(wpos) {} + +Q_DECL_CONSTEXPR inline QVector4D::QVector4D(const QPoint& point) : xp(point.x()), yp(point.y()), zp(0.0f), wp(0.0f) {} + +Q_DECL_CONSTEXPR inline QVector4D::QVector4D(const QPointF& point) : xp(point.x()), yp(point.y()), zp(0.0f), wp(0.0f) {} + +inline bool QVector4D::isNull() const +{ + return qIsNull(xp) && qIsNull(yp) && qIsNull(zp) && qIsNull(wp); +} + +Q_DECL_CONSTEXPR inline float QVector4D::x() const { return xp; } +Q_DECL_CONSTEXPR inline float QVector4D::y() const { return yp; } +Q_DECL_CONSTEXPR inline float QVector4D::z() const { return zp; } +Q_DECL_CONSTEXPR inline float QVector4D::w() const { return wp; } + +inline void QVector4D::setX(float aX) { xp = aX; } +inline void QVector4D::setY(float aY) { yp = aY; } +inline void QVector4D::setZ(float aZ) { zp = aZ; } +inline void QVector4D::setW(float aW) { wp = aW; } + +inline float &QVector4D::operator[](int i) +{ + Q_ASSERT(uint(i) < 4u); + return *(&xp + i); +} + +inline float QVector4D::operator[](int i) const +{ + Q_ASSERT(uint(i) < 4u); + return *(&xp + i); +} + +inline QVector4D &QVector4D::operator+=(const QVector4D &vector) +{ + xp += vector.xp; + yp += vector.yp; + zp += vector.zp; + wp += vector.wp; + return *this; +} + +inline QVector4D &QVector4D::operator-=(const QVector4D &vector) +{ + xp -= vector.xp; + yp -= vector.yp; + zp -= vector.zp; + wp -= vector.wp; + return *this; +} + +inline QVector4D &QVector4D::operator*=(float factor) +{ + xp *= factor; + yp *= factor; + zp *= factor; + wp *= factor; + return *this; +} + +inline QVector4D &QVector4D::operator*=(const QVector4D &vector) +{ + xp *= vector.xp; + yp *= vector.yp; + zp *= vector.zp; + wp *= vector.wp; + return *this; +} + +inline QVector4D &QVector4D::operator/=(float divisor) +{ + xp /= divisor; + yp /= divisor; + zp /= divisor; + wp /= divisor; + return *this; +} + +inline QVector4D &QVector4D::operator/=(const QVector4D &vector) +{ + xp /= vector.xp; + yp /= vector.yp; + zp /= vector.zp; + wp /= vector.wp; + return *this; +} + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wfloat-equal") +QT_WARNING_DISABLE_GCC("-Wfloat-equal") +Q_DECL_CONSTEXPR inline bool operator==(const QVector4D &v1, const QVector4D &v2) +{ + return v1.xp == v2.xp && v1.yp == v2.yp && v1.zp == v2.zp && v1.wp == v2.wp; +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QVector4D &v1, const QVector4D &v2) +{ + return v1.xp != v2.xp || v1.yp != v2.yp || v1.zp != v2.zp || v1.wp != v2.wp; +} +QT_WARNING_POP + +Q_DECL_CONSTEXPR inline const QVector4D operator+(const QVector4D &v1, const QVector4D &v2) +{ + return QVector4D(v1.xp + v2.xp, v1.yp + v2.yp, v1.zp + v2.zp, v1.wp + v2.wp); +} + +Q_DECL_CONSTEXPR inline const QVector4D operator-(const QVector4D &v1, const QVector4D &v2) +{ + return QVector4D(v1.xp - v2.xp, v1.yp - v2.yp, v1.zp - v2.zp, v1.wp - v2.wp); +} + +Q_DECL_CONSTEXPR inline const QVector4D operator*(float factor, const QVector4D &vector) +{ + return QVector4D(vector.xp * factor, vector.yp * factor, vector.zp * factor, vector.wp * factor); +} + +Q_DECL_CONSTEXPR inline const QVector4D operator*(const QVector4D &vector, float factor) +{ + return QVector4D(vector.xp * factor, vector.yp * factor, vector.zp * factor, vector.wp * factor); +} + +Q_DECL_CONSTEXPR inline const QVector4D operator*(const QVector4D &v1, const QVector4D& v2) +{ + return QVector4D(v1.xp * v2.xp, v1.yp * v2.yp, v1.zp * v2.zp, v1.wp * v2.wp); +} + +Q_DECL_CONSTEXPR inline const QVector4D operator-(const QVector4D &vector) +{ + return QVector4D(-vector.xp, -vector.yp, -vector.zp, -vector.wp); +} + +Q_DECL_CONSTEXPR inline const QVector4D operator/(const QVector4D &vector, float divisor) +{ + return QVector4D(vector.xp / divisor, vector.yp / divisor, vector.zp / divisor, vector.wp / divisor); +} + +Q_DECL_CONSTEXPR inline const QVector4D operator/(const QVector4D &vector, const QVector4D &divisor) +{ + return QVector4D(vector.xp / divisor.xp, vector.yp / divisor.yp, vector.zp / divisor.zp, vector.wp / divisor.wp); +} + +Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QVector4D& v1, const QVector4D& v2) +{ + return qFuzzyCompare(v1.xp, v2.xp) && + qFuzzyCompare(v1.yp, v2.yp) && + qFuzzyCompare(v1.zp, v2.zp) && + qFuzzyCompare(v1.wp, v2.wp); +} + +Q_DECL_CONSTEXPR inline QPoint QVector4D::toPoint() const +{ + return QPoint(qRound(xp), qRound(yp)); +} + +Q_DECL_CONSTEXPR inline QPointF QVector4D::toPointF() const +{ + return QPointF(qreal(xp), qreal(yp)); +} + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QVector4D &vector); +#endif + +#ifndef QT_NO_DATASTREAM +Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QVector4D &); +Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QVector4D &); +#endif + +#endif + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qwindow.h b/qrenderdoc/3rdparty/qt/include/QtGui/qwindow.h new file mode 100644 index 000000000..db8e828e7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qwindow.h @@ -0,0 +1,389 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOW_H +#define QWINDOW_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/QObject> +#include <QtCore/QEvent> +#include <QtCore/QMargins> +#include <QtCore/QRect> + +#include <QtCore/qnamespace.h> + +#include <QtGui/qsurface.h> +#include <QtGui/qsurfaceformat.h> +#include <QtGui/qwindowdefs.h> + +#include <QtGui/qicon.h> + +#ifndef QT_NO_CURSOR +#include <QtGui/qcursor.h> +#endif + +QT_BEGIN_NAMESPACE + + +class QWindowPrivate; + +class QExposeEvent; +class QFocusEvent; +class QMoveEvent; +class QResizeEvent; +class QShowEvent; +class QHideEvent; +class QKeyEvent; +class QMouseEvent; +#if QT_CONFIG(wheelevent) +class QWheelEvent; +#endif +class QTouchEvent; +#if QT_CONFIG(tabletevent) +class QTabletEvent; +#endif + +class QPlatformSurface; +class QPlatformWindow; +class QBackingStore; +class QScreen; +class QAccessibleInterface; +class QWindowContainer; +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +#endif + +class Q_GUI_EXPORT QWindow : public QObject, public QSurface +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QWindow) + + // 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 NOTIFY windowTitleChanged) + Q_PROPERTY(Qt::WindowModality modality READ modality WRITE setModality NOTIFY modalityChanged) + Q_PROPERTY(Qt::WindowFlags flags READ flags WRITE setFlags) + Q_PROPERTY(int x READ x WRITE setX NOTIFY xChanged) + 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(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged) + Q_PROPERTY(bool active READ isActive NOTIFY activeChanged REVISION 1) + Q_PROPERTY(Visibility visibility READ visibility WRITE setVisibility NOTIFY visibilityChanged REVISION 1) + Q_PROPERTY(Qt::ScreenOrientation contentOrientation READ contentOrientation WRITE reportContentOrientationChange NOTIFY contentOrientationChanged) + Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged REVISION 1) + +public: + enum Visibility { + Hidden = 0, + AutomaticVisibility, + Windowed, + Minimized, + Maximized, + FullScreen + }; + Q_ENUM(Visibility) + + enum AncestorMode { + ExcludeTransients, + IncludeTransients + }; + Q_ENUM(AncestorMode) + + explicit QWindow(QScreen *screen = Q_NULLPTR); + explicit QWindow(QWindow *parent); + virtual ~QWindow(); + + void setSurfaceType(SurfaceType surfaceType); + SurfaceType surfaceType() const Q_DECL_OVERRIDE; + + bool isVisible() const; + + Visibility visibility() const; + void setVisibility(Visibility v); + + void create(); + + WId winId() const; + + QWindow *parent(AncestorMode mode) const; + QWindow *parent() const; // ### Qt6: Merge with above + void setParent(QWindow *parent); + + bool isTopLevel() const; + + bool isModal() const; + Qt::WindowModality modality() const; + void setModality(Qt::WindowModality modality); + + void setFormat(const QSurfaceFormat &format); + QSurfaceFormat format() const Q_DECL_OVERRIDE; + QSurfaceFormat requestedFormat() const; + + void setFlags(Qt::WindowFlags flags); + Qt::WindowFlags flags() const; + void setFlag(Qt::WindowType, bool on = true); + Qt::WindowType type() const; + + QString title() const; + + void setOpacity(qreal level); + qreal opacity() const; + + void setMask(const QRegion ®ion); + QRegion mask() const; + + bool isActive() const; + + void reportContentOrientationChange(Qt::ScreenOrientation orientation); + Qt::ScreenOrientation contentOrientation() const; + + qreal devicePixelRatio() const; + + Qt::WindowState windowState() const; + void setWindowState(Qt::WindowState state); + + void setTransientParent(QWindow *parent); + QWindow *transientParent() const; + + bool isAncestorOf(const QWindow *child, AncestorMode mode = IncludeTransients) const; + + bool isExposed() const; + + inline int minimumWidth() const { return minimumSize().width(); } + inline int minimumHeight() const { return minimumSize().height(); } + inline int maximumWidth() const { return maximumSize().width(); } + inline int maximumHeight() const { return maximumSize().height(); } + + QSize minimumSize() const; + QSize maximumSize() const; + QSize baseSize() const; + QSize sizeIncrement() const; + + void setMinimumSize(const QSize &size); + void setMaximumSize(const QSize &size); + void setBaseSize(const QSize &size); + void setSizeIncrement(const QSize &size); + + void setGeometry(int posx, int posy, int w, int h); + void setGeometry(const QRect &rect); + QRect geometry() const; + + QMargins frameMargins() const; + QRect frameGeometry() const; + + QPoint framePosition() const; + void setFramePosition(const QPoint &point); + + inline int width() const { return geometry().width(); } + inline int height() const { return geometry().height(); } + inline int x() const { return geometry().x(); } + inline int y() const { return geometry().y(); } + + QSize size() const Q_DECL_OVERRIDE { return geometry().size(); } + inline QPoint position() const { return geometry().topLeft(); } + + void setPosition(const QPoint &pt); + void setPosition(int posx, int posy); + + void resize(const QSize &newSize); + void resize(int w, int h); + + void setFilePath(const QString &filePath); + QString filePath() const; + + void setIcon(const QIcon &icon); + QIcon icon() const; + + void destroy(); + + QPlatformWindow *handle() const; + + bool setKeyboardGrabEnabled(bool grab); + bool setMouseGrabEnabled(bool grab); + + QScreen *screen() const; + void setScreen(QScreen *screen); + + virtual QAccessibleInterface *accessibleRoot() const; + virtual QObject *focusObject() const; + + QPoint mapToGlobal(const QPoint &pos) const; + QPoint mapFromGlobal(const QPoint &pos) const; + +#ifndef QT_NO_CURSOR + QCursor cursor() const; + void setCursor(const QCursor &); + void unsetCursor(); +#endif + + static QWindow *fromWinId(WId id); + +public Q_SLOTS: + Q_REVISION(1) void requestActivate(); + + void setVisible(bool visible); + + void show(); + void hide(); + + void showMinimized(); + void showMaximized(); + void showFullScreen(); + void showNormal(); + + bool close(); + void raise(); + void lower(); + + void setTitle(const QString &); + + void setX(int arg); + void setY(int arg); + 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 alert(int msec); + + Q_REVISION(3) void requestUpdate(); + +Q_SIGNALS: + void screenChanged(QScreen *screen); + void modalityChanged(Qt::WindowModality modality); + void windowStateChanged(Qt::WindowState windowState); + Q_REVISION(2) void windowTitleChanged(const QString &title); + + void xChanged(int arg); + void yChanged(int arg); + + void widthChanged(int arg); + void heightChanged(int arg); + + void minimumWidthChanged(int arg); + void minimumHeightChanged(int arg); + void maximumWidthChanged(int arg); + void maximumHeightChanged(int arg); + + void visibleChanged(bool arg); + Q_REVISION(1) void visibilityChanged(QWindow::Visibility visibility); + Q_REVISION(1) void activeChanged(); + void contentOrientationChanged(Qt::ScreenOrientation orientation); + + void focusObjectChanged(QObject *object); + + Q_REVISION(1) void opacityChanged(qreal opacity); + +protected: + virtual void exposeEvent(QExposeEvent *); + virtual void resizeEvent(QResizeEvent *); + virtual void moveEvent(QMoveEvent *); + virtual void focusInEvent(QFocusEvent *); + virtual void focusOutEvent(QFocusEvent *); + + virtual void showEvent(QShowEvent *); + virtual void hideEvent(QHideEvent *); + // TODO Qt 6 - add closeEvent virtual handler + + virtual bool event(QEvent *) Q_DECL_OVERRIDE; + virtual void keyPressEvent(QKeyEvent *); + virtual void keyReleaseEvent(QKeyEvent *); + virtual void mousePressEvent(QMouseEvent *); + virtual void mouseReleaseEvent(QMouseEvent *); + virtual void mouseDoubleClickEvent(QMouseEvent *); + virtual void mouseMoveEvent(QMouseEvent *); +#if QT_CONFIG(wheelevent) + virtual void wheelEvent(QWheelEvent *); +#endif + virtual void touchEvent(QTouchEvent *); +#if QT_CONFIG(tabletevent) + virtual void tabletEvent(QTabletEvent *); +#endif + virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result); + + QWindow(QWindowPrivate &dd, QWindow *parent); + +private: + Q_PRIVATE_SLOT(d_func(), void _q_clearAlert()) + QPlatformSurface *surfaceHandle() const Q_DECL_OVERRIDE; + + Q_DISABLE_COPY(QWindow) + + friend class QGuiApplication; + friend class QGuiApplicationPrivate; + friend class QWindowContainer; + friend Q_GUI_EXPORT QWindowPrivate *qt_window_private(QWindow *window); +}; + +#ifndef Q_QDOC +template <> inline QWindow *qobject_cast<QWindow*>(QObject *o) +{ + if (!o || !o->isWindowType()) return Q_NULLPTR; + return static_cast<QWindow*>(o); +} +template <> inline const QWindow *qobject_cast<const QWindow*>(const QObject *o) +{ + if (!o || !o->isWindowType()) return Q_NULLPTR; + return static_cast<const QWindow*>(o); +} +#endif // !Q_QDOC + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug, const QWindow *); +#endif + +QT_END_NAMESPACE + +#endif // QWINDOW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qwindowdefs.h b/qrenderdoc/3rdparty/qt/include/QtGui/qwindowdefs.h new file mode 100644 index 000000000..b4f3ed471 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qwindowdefs.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWDEFS_H +#define QWINDOWDEFS_H + +#include <QtGui/qtguiglobal.h> +#include <QtCore/qobjectdefs.h> +#include <QtCore/qnamespace.h> + +QT_BEGIN_NAMESPACE + + +// Class forward definitions + +class QPaintDevice; +class QWidget; +class QWindow; +class QDialog; +class QColor; +class QPalette; +class QCursor; +class QPoint; +class QSize; +class QRect; +class QPolygon; +class QPainter; +class QRegion; +class QFont; +class QFontMetrics; +class QFontInfo; +class QPen; +class QBrush; +class QMatrix; +class QPixmap; +class QBitmap; +class QMovie; +class QImage; +class QPicture; +class QTimer; +class QTime; +class QClipboard; +class QString; +class QByteArray; +class QApplication; + +template<typename T> class QList; +typedef QList<QWidget *> QWidgetList; +typedef QList<QWindow *> QWindowList; + +QT_END_NAMESPACE + +// Window system dependent definitions + + +#if defined(Q_OS_WIN) +# include <QtGui/qwindowdefs_win.h> +#endif // Q_OS_WIN + + + + +typedef QT_PREPEND_NAMESPACE(quintptr) WId; + + + +QT_BEGIN_NAMESPACE + +template<class K, class V> class QHash; +typedef QHash<WId, QWidget *> QWidgetMapper; + +template<class V> class QSet; +typedef QSet<QWidget *> QWidgetSet; + +QT_END_NAMESPACE + +#if defined(QT_NEEDS_QMAIN) +#define main qMain +#endif + +// Global platform-independent types and functions + +#endif // QWINDOWDEFS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtGui/qwindowdefs_win.h b/qrenderdoc/3rdparty/qt/include/QtGui/qwindowdefs_win.h new file mode 100644 index 000000000..b546fe305 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtGui/qwindowdefs_win.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWDEFS_WIN_H +#define QWINDOWDEFS_WIN_H + +#include <QtGui/qtguiglobal.h> + +QT_BEGIN_NAMESPACE + + +QT_END_NAMESPACE + +#if !defined(Q_NOWINSTRICT) +#define Q_WINSTRICT +#endif + +#if defined(Q_WINSTRICT) + +#if !defined(STRICT) +#define STRICT +#endif +#undef NO_STRICT +#define Q_DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name + +#else + +#if !defined(NO_STRICT) +#define NO_STRICT +#endif +#undef STRICT +#define Q_DECLARE_HANDLE(name) typedef HANDLE name + +#endif + +#ifndef HINSTANCE +Q_DECLARE_HANDLE(HINSTANCE); +#endif +#ifndef HDC +Q_DECLARE_HANDLE(HDC); +#endif +#ifndef HWND +Q_DECLARE_HANDLE(HWND); +#endif +#ifndef HFONT +Q_DECLARE_HANDLE(HFONT); +#endif +#ifndef HPEN +Q_DECLARE_HANDLE(HPEN); +#endif +#ifndef HBRUSH +Q_DECLARE_HANDLE(HBRUSH); +#endif +#ifndef HBITMAP +Q_DECLARE_HANDLE(HBITMAP); +#endif +#ifndef HICON +Q_DECLARE_HANDLE(HICON); +#endif +#ifndef HCURSOR +typedef HICON HCURSOR; +#endif +#ifndef HPALETTE +Q_DECLARE_HANDLE(HPALETTE); +#endif +#ifndef HRGN +Q_DECLARE_HANDLE(HRGN); +#endif +#ifndef HMONITOR +Q_DECLARE_HANDLE(HMONITOR); +#endif +#ifndef _HRESULT_DEFINED +typedef long HRESULT; +#endif + +typedef struct tagMSG MSG; + +#endif // QWINDOWDEFS_WIN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/bitstreams_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/bitstreams_p.h new file mode 100644 index 000000000..9eba319dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/bitstreams_p.h @@ -0,0 +1,185 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef BITSTREAMS_P_H +#define BITSTREAMS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtCore/qglobal.h> +#include <QtCore/qdebug.h> + +#include <type_traits> +#include <algorithm> +#include <vector> + +QT_BEGIN_NAMESPACE + +class QByteArray; + +namespace HPack +{ + +// BitOStream works with an external buffer, +// for example, HEADERS frame. +class Q_AUTOTEST_EXPORT BitOStream +{ +public: + BitOStream(std::vector<uchar> &buffer); + + // Write 'bitLength' bits from the least significant + // bits in 'bits' to bitstream: + void writeBits(uchar bits, quint8 bitLength); + // HPACK data format, we support: + // * 32-bit integers + // * strings + void write(quint32 src); + void write(const QByteArray &src, bool compressed); + + quint64 bitLength() const; + quint64 byteLength() const; + const uchar *begin() const; + const uchar *end() const; + + void clear(); + +private: + Q_DISABLE_COPY(BitOStream); + + std::vector<uchar> &buffer; + quint64 bitsSet; +}; + +class Q_AUTOTEST_EXPORT BitIStream +{ +public: + // Error is set by 'read' functions. + // 'peek' does not set the error, + // since it just peeks some bits + // without the notion of wrong/right. + // 'read' functions only change 'streamOffset' + // on success. + enum class Error + { + NoError, + NotEnoughData, + CompressionError, + InvalidInteger + }; + + BitIStream(); + BitIStream(const uchar *f, const uchar *l); + + quint64 bitLength() const; + bool hasMoreBits() const; + + // peekBits tries to read 'length' bits from the bitstream into + // 'dst' ('length' must be <= sizeof(dst) * 8), packing them + // starting from the most significant bit of the most significant + // byte. It's a template so that we can use it with different + // integer types. Returns the number of bits actually read. + // Does not change stream's offset. + + template<class T> + quint64 peekBits(quint64 from, quint64 length, T *dstPtr) const + { + static_assert(std::is_unsigned<T>::value, "peekBits: unsigned integer type expected"); + + Q_ASSERT(dstPtr); + Q_ASSERT(length <= sizeof(T) * 8); + + if (from >= bitLength() || !length) + return 0; + + T &dst = *dstPtr; + dst = T(); + length = std::min(length, bitLength() - from); + + const uchar *srcByte = first + from / 8; + auto bitsToRead = length + from % 8; + + while (bitsToRead > 8) { + dst = (dst << 8) | *srcByte; + bitsToRead -= 8; + ++srcByte; + } + + dst <<= bitsToRead; + dst |= *srcByte >> (8 - bitsToRead); + dst <<= sizeof(T) * 8 - length; + + return length; + } + + quint64 streamOffset() const + { + return offset; + } + + bool skipBits(quint64 nBits); + bool rewindOffset(quint64 nBits); + + bool read(quint32 *dstPtr); + bool read(QByteArray *dstPtr); + + Error error() const; + +private: + void setError(Error newState); + + const uchar *first; + const uchar *last; + quint64 offset; + Error streamError; +}; + +} // namespace HPack + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/hpack_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/hpack_p.h new file mode 100644 index 000000000..6a1d30d87 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/hpack_p.h @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef HPACK_P_H +#define HPACK_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "hpacktable_p.h" + +#include <QtCore/qglobal.h> + +#include <vector> + +QT_BEGIN_NAMESPACE + +class QByteArray; + +namespace HPack +{ + +using HttpHeader = std::vector<HeaderField>; +HeaderSize header_size(const HttpHeader &header); + +class Q_AUTOTEST_EXPORT Encoder +{ +public: + Encoder(quint32 maxTableSize, bool compressStrings); + + quint32 dynamicTableSize() const; + + bool encodeRequest(class BitOStream &outputStream, + const HttpHeader &header); + bool encodeResponse(BitOStream &outputStream, + const HttpHeader &header); + + bool encodeSizeUpdate(BitOStream &outputStream, + quint32 newSize); + + void setMaxDynamicTableSize(quint32 size); + +private: + bool encodeRequestPseudoHeaders(BitOStream &outputStream, + const HttpHeader &header); + bool encodeHeaderField(BitOStream &outputStream, + const HeaderField &field); + bool encodeMethod(BitOStream &outputStream, + const HeaderField &field); + + bool encodeResponsePseudoHeaders(BitOStream &outputStream, + const HttpHeader &header); + + bool encodeIndexedField(BitOStream &outputStream, quint32 index) const; + + + bool encodeLiteralField(BitOStream &outputStream, + const struct BitPattern &fieldType, + quint32 nameIndex, + const QByteArray &value, + bool withCompression); + + bool encodeLiteralField(BitOStream &outputStream, + const BitPattern &fieldType, + const QByteArray &name, + const QByteArray &value, + bool withCompression); + + FieldLookupTable lookupTable; + bool compressStrings; +}; + +class Q_AUTOTEST_EXPORT Decoder +{ +public: + Decoder(quint32 maxTableSize); + + bool decodeHeaderFields(class BitIStream &inputStream); + + const HttpHeader &decodedHeader() const + { + return header; + } + + quint32 dynamicTableSize() const; + + void setMaxDynamicTableSize(quint32 size); + +private: + + bool decodeIndexedField(BitIStream &inputStream); + bool decodeSizeUpdate(BitIStream &inputStream); + bool decodeLiteralField(const BitPattern &fieldType, + BitIStream &inputStream); + + bool processDecodedField(const BitPattern &fieldType, + const QByteArray &name, + const QByteArray &value); + + void handleStreamError(BitIStream &inputStream); + + HttpHeader header; + FieldLookupTable lookupTable; +}; + +} + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/hpacktable_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/hpacktable_p.h new file mode 100644 index 000000000..aaea89b98 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/hpacktable_p.h @@ -0,0 +1,237 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef HPACKTABLE_P_H +#define HPACKTABLE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtCore/qbytearray.h> +#include <QtCore/qglobal.h> +#include <QtCore/qpair.h> + +#include <vector> +#include <memory> +#include <deque> +#include <set> + +QT_BEGIN_NAMESPACE + +namespace HPack +{ + +struct Q_AUTOTEST_EXPORT HeaderField +{ + HeaderField() + { + } + + HeaderField(const QByteArray &n, const QByteArray &v) + : name(n), + value(v) + { + } + + bool operator == (const HeaderField &rhs) const + { + return name == rhs.name && value == rhs.value; + } + + QByteArray name; + QByteArray value; +}; + +using HeaderSize = QPair<bool, quint32>; + +HeaderSize entry_size(const QByteArray &name, const QByteArray &value); + +inline HeaderSize entry_size(const HeaderField &entry) +{ + return entry_size(entry.name, entry.value); +} + +/* + Lookup table consists of two parts (HPACK, 2.3): + the immutable static table (pre-defined by HPACK's specs) + and dynamic table which is updated while + compressing/decompressing headers. + + Table must provide/implement: + 1. Fast random access - we read fields' indices from + HPACK's bit stream. + 2. FIFO for dynamic part - to push new items to the front + and evict them from the back (HPACK, 2.3.2). + 3. Fast lookup - encoder receives pairs of strings + (name|value) and it has to find an index for a pair + as the whole or for a name at least (if it's already + in either static or dynamic table). + + Static table is an immutable vector. + + Dynamic part is implemented in a way similar to std::deque - + it's a vector of pointers to chunks. Each chunk is a vector of + (name|value) pairs. Once allocated with a fixed size, chunk + never re-allocates its data, so entries' addresses do not change. + We add new chunks prepending them to the front of a vector, + in each chunk we fill (name|value) pairs starting from the back + of the chunk (this simplifies item eviction/FIFO). + Given a 'linear' index we can find a chunk number and + offset in this chunk - random access. + + Lookup in a static part is straightforward: + it's an (immutable) vector, data is sorted, + contains no duplicates, we use binary search comparing string values. + + To provide a lookup in dynamic table faster than a linear search, + we have an std::set of 'SearchEntries', where each entry contains: + - a pointer to a (name|value) pair (to compare + name|value strings). + - a pointer to a chunk containing this pair and + - an offset within this chunk - to calculate a + 'linear' index. + + Entries in a table can be duplicated (HPACK, 2.3.2), + if we evict an entry, we must update our index removing + the exactly right key, thus keys in this set are sorted + by name|value pairs first, and then by chunk index/offset + (so that NewSearchEntryKey < OldSearchEntry even if strings + are equal). +*/ + +class Q_AUTOTEST_EXPORT FieldLookupTable +{ +public: + enum + { + ChunkSize = 16, + DefaultSize = 4096 // Recommended by HTTP2. + }; + + FieldLookupTable(quint32 maxTableSize, bool useIndex); + + bool prependField(const QByteArray &name, const QByteArray &value); + void evictEntry(); + + quint32 numberOfEntries() const; + quint32 numberOfStaticEntries() const; + quint32 numberOfDynamicEntries() const; + quint32 dynamicDataSize() const; + void clearDynamicTable(); + + bool indexIsValid(quint32 index) const; + quint32 indexOf(const QByteArray &name, const QByteArray &value) const; + quint32 indexOf(const QByteArray &name) const; + bool field(quint32 index, QByteArray *name, QByteArray *value) const; + bool fieldName(quint32 index, QByteArray *dst) const; + bool fieldValue(quint32 index, QByteArray *dst) const; + + bool updateDynamicTableSize(quint32 size); + void setMaxDynamicTableSize(quint32 size); + +private: + // Table's maximum size is controlled + // by SETTINGS_HEADER_TABLE_SIZE (HTTP/2, 6.5.2). + quint32 maxTableSize; + // The tableCapacity is how many bytes the table + // can currently hold. It cannot exceed maxTableSize. + // It can be modified by a special message in + // the HPACK bit stream (HPACK, 6.3). + quint32 tableCapacity; + + using Chunk = std::vector<HeaderField>; + using ChunkPtr = std::unique_ptr<Chunk>; + std::deque<ChunkPtr> chunks; + using size_type = std::deque<ChunkPtr>::size_type; + + struct SearchEntry; + friend struct SearchEntry; + + struct SearchEntry + { + SearchEntry(); + SearchEntry(const HeaderField *f, const Chunk *c, + quint32 o, const FieldLookupTable *t); + + const HeaderField *field; + const Chunk *chunk; + const quint32 offset; + const FieldLookupTable *table; + + bool operator < (const SearchEntry &rhs) const; + }; + + bool useIndex; + std::set<SearchEntry> searchIndex; + + SearchEntry frontKey() const; + SearchEntry backKey() const; + + bool fieldAt(quint32 index, HeaderField *field) const; + + const HeaderField &front() const; + HeaderField &front(); + const HeaderField &back() const; + + quint32 nDynamic; + quint32 begin; + quint32 end; + quint32 dataSize; + + quint32 indexOfChunk(const Chunk *chunk) const; + quint32 keyToIndex(const SearchEntry &key) const; + + mutable QByteArray dummyDst; + + Q_DISABLE_COPY(FieldLookupTable); +}; + +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/http2frames_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/http2frames_p.h new file mode 100644 index 000000000..e5f6d46c6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/http2frames_p.h @@ -0,0 +1,184 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef HTTP2FRAMES_P_H +#define HTTP2FRAMES_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include "http2protocol_p.h" +#include "hpack_p.h" + +#include <QtCore/qendian.h> +#include <QtCore/qglobal.h> + +#include <algorithm> +#include <vector> + +QT_BEGIN_NAMESPACE + +class QHttp2ProtocolHandler; +class QAbstractSocket; + +namespace Http2 +{ + +struct Q_AUTOTEST_EXPORT Frame +{ + Frame(); + // Reading these values without first forming a valid frame (either reading + // it from a socket or building it) will result in undefined behavior: + FrameType type() const; + quint32 streamID() const; + FrameFlags flags() const; + quint32 payloadSize() const; + uchar padding() const; + // In HTTP/2 a stream's priority is specified by its weight and a stream + // (id) it depends on: + bool priority(quint32 *streamID = nullptr, + uchar *weight = nullptr) const; + + FrameStatus validateHeader() const; + FrameStatus validatePayload() const; + + // Number of payload bytes without padding and/or priority. + quint32 dataSize() const; + // HEADERS data size for HEADERS, PUSH_PROMISE and CONTINUATION streams: + quint32 hpackBlockSize() const; + // Beginning of payload without priority/padding bytes. + const uchar *dataBegin() const; + // HEADERS data beginning for HEADERS, PUSH_PROMISE and CONTINUATION streams: + const uchar *hpackBlockBegin() const; + + std::vector<uchar> buffer; +}; + +class Q_AUTOTEST_EXPORT FrameReader +{ +public: + FrameStatus read(QAbstractSocket &socket); + + Frame &inboundFrame() + { + return frame; + } +private: + bool readHeader(QAbstractSocket &socket); + bool readPayload(QAbstractSocket &socket); + + quint32 offset = 0; + Frame frame; +}; + +class Q_AUTOTEST_EXPORT FrameWriter +{ +public: + using payload_type = std::vector<uchar>; + using size_type = payload_type::size_type; + + FrameWriter(); + FrameWriter(FrameType type, FrameFlags flags, quint32 streamID); + + Frame &outboundFrame() + { + return frame; + } + + // Frame 'builders': + void start(FrameType type, FrameFlags flags, quint32 streamID); + void setPayloadSize(quint32 size); + void setType(FrameType type); + void setFlags(FrameFlags flags); + void addFlag(FrameFlag flag); + + // All append functions also update frame's payload length. + template<typename ValueType> + void append(ValueType val) + { + uchar wired[sizeof val] = {}; + qToBigEndian(val, wired); + append(wired, wired + sizeof val); + } + void append(uchar val) + { + frame.buffer.push_back(val); + updatePayloadSize(); + } + void append(Settings identifier) + { + append(quint16(identifier)); + } + void append(const payload_type &payload) + { + append(&payload[0], &payload[0] + payload.size()); + } + + void append(const uchar *begin, const uchar *end); + + // Write as a single frame: + bool write(QAbstractSocket &socket) const; + // Two types of frames we are sending are affected by frame size limits: + // HEADERS and DATA. HEADERS' payload (hpacked HTTP headers, following a + // frame header) is always in our 'buffer', we send the initial HEADERS + // frame first and then CONTINUTATION frame(s) if needed: + bool writeHEADERS(QAbstractSocket &socket, quint32 sizeLimit); + // With DATA frames the actual payload is never in our 'buffer', it's a + // 'readPointer' from QNonContiguousData. We split this payload as needed + // into DATA frames with correct payload size fitting into frame size limit: + bool writeDATA(QAbstractSocket &socket, quint32 sizeLimit, + const uchar *src, quint32 size); +private: + void updatePayloadSize(); + Frame frame; +}; + +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/http2protocol_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/http2protocol_p.h new file mode 100644 index 000000000..5d730404b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/http2protocol_p.h @@ -0,0 +1,179 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef HTTP2PROTOCOL_P_H +#define HTTP2PROTOCOL_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/qnetworkreply.h> +#include <QtCore/qloggingcategory.h> +#include <QtCore/qglobal.h> + +// Different HTTP/2 constants/values as defined by RFC 7540. + +QT_BEGIN_NAMESPACE + +class QString; + +namespace Http2 +{ + +enum class Settings : quint16 +{ + HEADER_TABLE_SIZE_ID = 0x1, + ENABLE_PUSH_ID = 0x2, + MAX_CONCURRENT_STREAMS_ID = 0x3, + INITIAL_WINDOW_SIZE_ID = 0x4, + MAX_FRAME_SIZE_ID = 0x5, + MAX_HEADER_LIST_SIZE_ID = 0x6 +}; + +enum class FrameType : uchar +{ + DATA = 0x0, + HEADERS = 0x1, + PRIORITY = 0x2, + RST_STREAM = 0x3, + SETTINGS = 0x4, + PUSH_PROMISE = 0x5, + PING = 0x6, + GOAWAY = 0x7, + WINDOW_UPDATE = 0x8, + CONTINUATION = 0x9, + // ATTENTION: enumerators must be sorted. + // We use LAST_FRAME_TYPE to check if + // frame type is known, if not - this frame + // must be ignored, HTTP/2 5.1). + LAST_FRAME_TYPE +}; + +enum class FrameFlag : uchar +{ + EMPTY = 0x0, // Valid for any frame type. + ACK = 0x1, // Valid for PING, SETTINGS + END_STREAM = 0x1, // Valid for HEADERS, DATA + END_HEADERS = 0x4, // Valid for PUSH_PROMISE, HEADERS, + PADDED = 0x8, // Valid for PUSH_PROMISE, HEADERS, DATA + PRIORITY = 0x20 // Valid for HEADERS, +}; + +Q_DECLARE_FLAGS(FrameFlags, FrameFlag) +Q_DECLARE_OPERATORS_FOR_FLAGS(FrameFlags) + +enum Http2PredefinedParameters +{ + // Old-style enum, so we + // can use as Http2::frameHeaderSize for example. + clientPrefaceLength = 24, // HTTP/2, 3.5 + connectionStreamID = 0, // HTTP/2, 5.1.1 + frameHeaderSize = 9, // HTTP/2, 4.1 + + // It's our max frame size we send in SETTINGS frame, + // it's also the default one and we also use it to later + // validate incoming frames: + maxFrameSize = 16384, // HTTP/2 6.5.2 + + defaultSessionWindowSize = 65535, // HTTP/2 6.5.2 + maxPayloadSize = (1 << 24) - 1, // HTTP/2 6.5.2 + // Using 1000 (rather arbitrarily), just to + // impose *some* upper limit: + maxPeerConcurrentStreams = 1000, + maxConcurrentStreams = 100 // HTTP/2, 6.5.2 +}; + +// It's int, it has internal linkage, it's ok to have it in headers - +// no ODR violation is possible. +const quint32 lastValidStreamID((quint32(1) << 31) - 1); // HTTP/2, 5.1.1 + +extern const Q_AUTOTEST_EXPORT char Http2clientPreface[clientPrefaceLength]; + +enum class FrameStatus +{ + protocolError, + sizeError, + incompleteFrame, + goodFrame +}; + +enum Http2Error +{ + // Old-style enum to avoid excessive name + // qualification ... + // NB: + // I use the last enumerator to check + // that errorCode (quint32) is valid, + // so it needs to be the highest-numbered! + // HTTP/2 7: + HTTP2_NO_ERROR = 0x0, + PROTOCOL_ERROR = 0x1, + INTERNAL_ERROR = 0x2, + FLOW_CONTROL_ERROR = 0x3, + SETTINGS_TIMEOUT = 0x4, + STREAM_CLOSED = 0x5, + FRAME_SIZE_ERROR = 0x6, + REFUSE_STREAM = 0x7, + CANCEL = 0x8, + COMPRESSION_ERROR = 0x9, + CONNECT_ERROR = 0xa, + ENHANCE_YOUR_CALM = 0xb, + INADEQUATE_SECURITY = 0xc, + HTTP_1_1_REQUIRED = 0xd +}; + +void qt_error(quint32 errorCode, QNetworkReply::NetworkError &error, QString &errorString); +QString qt_error_string(quint32 errorCode); +QNetworkReply::NetworkError qt_error(quint32 errorCode); + +} + +Q_DECLARE_LOGGING_CATEGORY(QT_HTTP2) + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/http2streams_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/http2streams_p.h new file mode 100644 index 000000000..8465486ae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/http2streams_p.h @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef HTTP2STREAMS_P_H +#define HTTP2STREAMS_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include "http2frames_p.h" +#include "hpack_p.h" + +#include <private/qhttpnetworkconnectionchannel_p.h> +#include <private/qhttpnetworkrequest_p.h> + +#include <QtCore/qglobal.h> +#include <QtCore/qstring.h> + +#include <vector> + +QT_BEGIN_NAMESPACE + +class QNonContiguousByteDevice; + +namespace Http2 +{ + +struct Q_AUTOTEST_EXPORT Stream +{ + enum StreamState { + idle, + open, + halfClosedLocal, + halfClosedRemote, + remoteReserved, + closed + }; + + Stream(); + // That's a ctor for a client-initiated stream: + Stream(const HttpMessagePair &message, quint32 streamID, qint32 sendSize, + qint32 recvSize); + // That's a reserved stream, created by PUSH_PROMISE from a server: + Stream(const QString &key, quint32 streamID, qint32 recvSize); + + QHttpNetworkReply *reply() const; + const QHttpNetworkRequest &request() const; + QHttpNetworkRequest &request(); + QHttpNetworkRequest::Priority priority() const; + uchar weight() const; + + QNonContiguousByteDevice *data() const; + + HttpMessagePair httpPair; + quint32 streamID = 0; + // Signed as window sizes can become negative: + qint32 sendWindow = 65535; + qint32 recvWindow = 65535; + + StreamState state = idle; + QString key; // for PUSH_PROMISE +}; + +struct PushPromise +{ + quint32 reservedID = 0; + // PUSH_PROMISE has its own HEADERS, + // usually similar to what request has: + HPack::HttpHeader pushHeader; + // Response has its own (normal) HEADERS: + HPack::HttpHeader responseHeader; + // DATA frames on a promised stream: + std::vector<Frame> dataFrames; +}; + +} // namespace Http2 + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/huffman_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/huffman_p.h new file mode 100644 index 000000000..719566166 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/huffman_p.h @@ -0,0 +1,182 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef HUFFMAN_P_H +#define HUFFMAN_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtCore/qglobal.h> + +QT_BEGIN_NAMESPACE + +class QByteArray; + +namespace HPack +{ + +struct CodeEntry +{ + CodeEntry() : byteValue(), + huffmanCode(), + bitLength() + { + } + + CodeEntry(quint32 val, quint32 code, quint32 len) + : byteValue(val), + huffmanCode(code), + bitLength(len) + { + } + + quint32 byteValue; + quint32 huffmanCode; + quint32 bitLength; +}; + +class BitOStream; + +quint64 huffman_encoded_bit_length(const QByteArray &inputData); +void huffman_encode_string(const QByteArray &inputData, BitOStream &outputStream); + +// PrefixTable: +// Huffman codes with a small bit length +// fit into a table (these are 'terminal' symbols), +// codes with longer codes require additional +// tables, so several symbols will have the same index +// in a table - pointing into the next table. +// Every table has an 'indexLength' - that's +// how many bits can fit in table's indices + +// 'prefixLength' - how many bits were addressed +// by its 'parent' table(s). +// All PrefixTables are kept in 'prefixTables' array. +// PrefixTable itself does not have any entries, +// it just holds table's prefix/index + 'offset' - +// there table's data starts in an array of all +// possible entries ('tableData'). + +struct PrefixTable +{ + PrefixTable() + : prefixLength(), + indexLength(), + offset() + { + } + + PrefixTable(quint32 prefix, quint32 index) + : prefixLength(prefix), + indexLength(index), + offset() + { + } + + quint32 size()const + { + // Number of entries table contains: + return 1 << indexLength; + } + + quint32 prefixLength; + quint32 indexLength; + quint32 offset; +}; + +// Table entry is either a terminal entry (thus probably the code found) +// or points into another table ('nextTable' - index into +// 'prefixTables' array). If it's a terminal, 'nextTable' index +// refers to the same table. + +struct PrefixTableEntry +{ + PrefixTableEntry() + : bitLength(), + nextTable(), + byteValue() + { + } + + quint32 bitLength; + quint32 nextTable; + quint32 byteValue; +}; + +class BitIStream; + +class HuffmanDecoder +{ +public: + enum class BitConstants + { + rootPrefix = 9, + childPrefix = 6 + }; + + HuffmanDecoder(); + + bool decodeStream(BitIStream &inputStream, QByteArray &outputBuffer); + +private: + quint32 addTable(quint32 prefixLength, quint32 indexLength); + PrefixTableEntry tableEntry(const PrefixTable &table, quint32 index); + void setTableEntry(const PrefixTable &table, quint32 index, const PrefixTableEntry &entry); + + std::vector<PrefixTable> prefixTables; + std::vector<PrefixTableEntry> tableData; + quint32 minCodeLength; +}; + +bool huffman_decode_string(BitIStream &inputStream, QByteArray *outputBuffer); + +} // namespace HPack + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractnetworkcache_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractnetworkcache_p.h new file mode 100644 index 000000000..fee723e31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractnetworkcache_p.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTNETWORKCACHE_P_H +#define QABSTRACTNETWORKCACHE_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 Network Access framework. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "private/qobject_p.h" + +QT_BEGIN_NAMESPACE + +class QAbstractNetworkCachePrivate: public QObjectPrivate +{ +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractprotocolhandler_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractprotocolhandler_p.h new file mode 100644 index 000000000..30814d673 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractprotocolhandler_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTPROTOCOLHANDLER_H +#define QABSTRACTPROTOCOLHANDLER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> + +#ifndef QT_NO_HTTP + +QT_BEGIN_NAMESPACE + +class QHttpNetworkConnectionChannel; +class QHttpNetworkReply; +class QAbstractSocket; +class QHttpNetworkConnection; + +class QAbstractProtocolHandler { +public: + QAbstractProtocolHandler(QHttpNetworkConnectionChannel *channel); + virtual ~QAbstractProtocolHandler(); + + virtual void _q_receiveReply() = 0; + virtual void _q_readyRead() = 0; + virtual bool sendRequest() = 0; + void setReply(QHttpNetworkReply *reply); + +protected: + QHttpNetworkConnectionChannel *m_channel; + QHttpNetworkReply *m_reply; + QAbstractSocket *m_socket; + QHttpNetworkConnection *m_connection; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_HTTP + +#endif // QABSTRACTPROTOCOLHANDLER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractsocket_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractsocket_p.h new file mode 100644 index 000000000..5411133ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractsocket_p.h @@ -0,0 +1,170 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSOCKET_P_H +#define QABSTRACTSOCKET_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 QAbstractSocket class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "QtNetwork/qabstractsocket.h" +#include "QtCore/qbytearray.h" +#include "QtCore/qlist.h" +#include "QtCore/qtimer.h" +#include "private/qiodevice_p.h" +#include "private/qabstractsocketengine_p.h" +#include "qnetworkproxy.h" + +QT_BEGIN_NAMESPACE + +class QHostInfo; + +class QAbstractSocketPrivate : public QIODevicePrivate, public QAbstractSocketEngineReceiver +{ + Q_DECLARE_PUBLIC(QAbstractSocket) +public: + QAbstractSocketPrivate(); + virtual ~QAbstractSocketPrivate(); + + // from QAbstractSocketEngineReceiver + inline void readNotification() override { canReadNotification(); } + inline void writeNotification() override { canWriteNotification(); } + inline void exceptionNotification() override {} + inline void closeNotification() override { canCloseNotification(); } + void connectionNotification() override; +#ifndef QT_NO_NETWORKPROXY + inline void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) override { + Q_Q(QAbstractSocket); + q->proxyAuthenticationRequired(proxy, authenticator); + } +#endif + + virtual bool bind(const QHostAddress &address, quint16 port, QAbstractSocket::BindMode mode); + + virtual bool canReadNotification(); + bool canWriteNotification(); + void canCloseNotification(); + + // slots + void _q_connectToNextAddress(); + void _q_startConnecting(const QHostInfo &hostInfo); + void _q_testConnection(); + void _q_abortConnectionAttempt(); + + bool emittedReadyRead; + bool emittedBytesWritten; + + bool abortCalled; + bool pendingClose; + + QAbstractSocket::PauseModes pauseMode; + + QString hostName; + quint16 port; + QHostAddress host; + QList<QHostAddress> addresses; + + quint16 localPort; + quint16 peerPort; + QHostAddress localAddress; + QHostAddress peerAddress; + QString peerName; + + QAbstractSocketEngine *socketEngine; + qintptr cachedSocketDescriptor; + +#ifndef QT_NO_NETWORKPROXY + QNetworkProxy proxy; + QNetworkProxy proxyInUse; + void resolveProxy(const QString &hostName, quint16 port); +#else + inline void resolveProxy(const QString &, quint16) { } +#endif + inline void resolveProxy(quint16 port) { resolveProxy(QString(), port); } + + void resetSocketLayer(); + virtual bool flush(); + + bool initSocketLayer(QAbstractSocket::NetworkLayerProtocol protocol); + virtual void configureCreatedSocket(); + void startConnectingByName(const QString &host); + void fetchConnectionParameters(); + bool readFromSocket(); + virtual bool writeToSocket(); + void emitReadyRead(int channel = 0); + void emitBytesWritten(qint64 bytes, int channel = 0); + + void setError(QAbstractSocket::SocketError errorCode, const QString &errorString); + void setErrorAndEmit(QAbstractSocket::SocketError errorCode, const QString &errorString); + + qint64 readBufferMaxSize; + bool isBuffered; + bool hasPendingData; + + QTimer *connectTimer; + + int hostLookupId; + + QAbstractSocket::SocketType socketType; + QAbstractSocket::SocketState state; + + QAbstractSocket::SocketError socketError; + + QAbstractSocket::NetworkLayerProtocol preferredNetworkLayerProtocol; + + bool prePauseReadSocketNotifierState; + bool prePauseWriteSocketNotifierState; + bool prePauseExceptionSocketNotifierState; + static void pauseSocketNotifiers(QAbstractSocket*); + static void resumeSocketNotifiers(QAbstractSocket*); + static QAbstractSocketEngine* getSocketEngine(QAbstractSocket*); +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTSOCKET_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractsocketengine_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractsocketengine_p.h new file mode 100644 index 000000000..0cb519ce9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qabstractsocketengine_p.h @@ -0,0 +1,259 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSOCKETENGINE_P_H +#define QABSTRACTSOCKETENGINE_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "QtNetwork/qhostaddress.h" +#include "QtNetwork/qabstractsocket.h" +#include "private/qobject_p.h" +#include "private/qnetworkdatagram_p.h" + +QT_BEGIN_NAMESPACE + +class QAuthenticator; +class QAbstractSocketEnginePrivate; +#ifndef QT_NO_NETWORKINTERFACE +class QNetworkInterface; +#endif +class QNetworkProxy; + +class QAbstractSocketEngineReceiver { +public: + virtual ~QAbstractSocketEngineReceiver(){} + virtual void readNotification()= 0; + virtual void writeNotification()= 0; + virtual void closeNotification()= 0; + virtual void exceptionNotification()= 0; + virtual void connectionNotification()= 0; +#ifndef QT_NO_NETWORKPROXY + virtual void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)= 0; +#endif +}; + +class Q_AUTOTEST_EXPORT QAbstractSocketEngine : public QObject +{ + Q_OBJECT +public: + + static QAbstractSocketEngine *createSocketEngine(QAbstractSocket::SocketType socketType, const QNetworkProxy &, QObject *parent); + static QAbstractSocketEngine *createSocketEngine(qintptr socketDescriptor, QObject *parent); + + QAbstractSocketEngine(QObject *parent = 0); + + enum SocketOption { + NonBlockingSocketOption, + BroadcastSocketOption, + ReceiveBufferSocketOption, + SendBufferSocketOption, + AddressReusable, + BindExclusively, + ReceiveOutOfBandData, + LowDelayOption, + KeepAliveOption, + MulticastTtlOption, + MulticastLoopbackOption, + TypeOfServiceOption, + ReceivePacketInformation, + ReceiveHopLimit, + MaxStreamsSocketOption + }; + + enum PacketHeaderOption { + WantNone = 0, + WantDatagramSender = 0x01, + WantDatagramDestination = 0x02, + WantDatagramHopLimit = 0x04, + WantStreamNumber = 0x08, + WantEndOfRecord = 0x10, + + WantAll = 0xff + }; + Q_DECLARE_FLAGS(PacketHeaderOptions, PacketHeaderOption) + + virtual bool initialize(QAbstractSocket::SocketType type, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::IPv4Protocol) = 0; + + virtual bool initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = QAbstractSocket::ConnectedState) = 0; + + virtual qintptr socketDescriptor() const = 0; + + virtual bool isValid() const = 0; + + virtual bool connectToHost(const QHostAddress &address, quint16 port) = 0; + virtual bool connectToHostByName(const QString &name, quint16 port) = 0; + virtual bool bind(const QHostAddress &address, quint16 port) = 0; + virtual bool listen() = 0; + virtual int accept() = 0; + virtual void close() = 0; + + virtual qint64 bytesAvailable() const = 0; + + virtual qint64 read(char *data, qint64 maxlen) = 0; + virtual qint64 write(const char *data, qint64 len) = 0; + +#ifndef QT_NO_UDPSOCKET +#ifndef QT_NO_NETWORKINTERFACE + virtual bool joinMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &iface) = 0; + virtual bool leaveMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &iface) = 0; + virtual QNetworkInterface multicastInterface() const = 0; + virtual bool setMulticastInterface(const QNetworkInterface &iface) = 0; +#endif // QT_NO_NETWORKINTERFACE + + virtual bool hasPendingDatagrams() const = 0; + virtual qint64 pendingDatagramSize() const = 0; +#endif // QT_NO_UDPSOCKET + + virtual qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader *header = 0, + PacketHeaderOptions = WantNone) = 0; + virtual qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &header) = 0; + virtual qint64 bytesToWrite() const = 0; + + virtual int option(SocketOption option) const = 0; + virtual bool setOption(SocketOption option, int value) = 0; + + virtual bool waitForRead(int msecs = 30000, bool *timedOut = 0) = 0; + virtual bool waitForWrite(int msecs = 30000, bool *timedOut = 0) = 0; + virtual bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite, + bool checkRead, bool checkWrite, + int msecs = 30000, bool *timedOut = 0) = 0; + + QAbstractSocket::SocketError error() const; + QString errorString() const; + QAbstractSocket::SocketState state() const; + QAbstractSocket::SocketType socketType() const; + QAbstractSocket::NetworkLayerProtocol protocol() const; + + QHostAddress localAddress() const; + quint16 localPort() const; + QHostAddress peerAddress() const; + quint16 peerPort() const; + int inboundStreamCount() const; + int outboundStreamCount() const; + + virtual bool isReadNotificationEnabled() const = 0; + virtual void setReadNotificationEnabled(bool enable) = 0; + virtual bool isWriteNotificationEnabled() const = 0; + virtual void setWriteNotificationEnabled(bool enable) = 0; + virtual bool isExceptionNotificationEnabled() const = 0; + virtual void setExceptionNotificationEnabled(bool enable) = 0; + +public Q_SLOTS: + void readNotification(); + void writeNotification(); + void closeNotification(); + void exceptionNotification(); + void connectionNotification(); +#ifndef QT_NO_NETWORKPROXY + void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); +#endif + +public: + void setReceiver(QAbstractSocketEngineReceiver *receiver); +protected: + QAbstractSocketEngine(QAbstractSocketEnginePrivate &dd, QObject* parent = 0); + + void setError(QAbstractSocket::SocketError error, const QString &errorString) const; + void setState(QAbstractSocket::SocketState state); + void setSocketType(QAbstractSocket::SocketType socketType); + void setProtocol(QAbstractSocket::NetworkLayerProtocol protocol); + void setLocalAddress(const QHostAddress &address); + void setLocalPort(quint16 port); + void setPeerAddress(const QHostAddress &address); + void setPeerPort(quint16 port); + +private: + Q_DECLARE_PRIVATE(QAbstractSocketEngine) + Q_DISABLE_COPY(QAbstractSocketEngine) +}; + +class QAbstractSocketEnginePrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QAbstractSocketEngine) +public: + QAbstractSocketEnginePrivate(); + + mutable QAbstractSocket::SocketError socketError; + mutable bool hasSetSocketError; + mutable QString socketErrorString; + QAbstractSocket::SocketState socketState; + QAbstractSocket::SocketType socketType; + QAbstractSocket::NetworkLayerProtocol socketProtocol; + QHostAddress localAddress; + quint16 localPort; + QHostAddress peerAddress; + quint16 peerPort; + int inboundStreamCount; + int outboundStreamCount; + QAbstractSocketEngineReceiver *receiver; +}; + + +class Q_AUTOTEST_EXPORT QSocketEngineHandler +{ +protected: + QSocketEngineHandler(); + virtual ~QSocketEngineHandler(); + virtual QAbstractSocketEngine *createSocketEngine(QAbstractSocket::SocketType socketType, + const QNetworkProxy &, QObject *parent) = 0; + virtual QAbstractSocketEngine *createSocketEngine(qintptr socketDescriptor, QObject *parent) = 0; + +private: + friend class QAbstractSocketEngine; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractSocketEngine::PacketHeaderOptions) + +QT_END_NAMESPACE + +#endif // QABSTRACTSOCKETENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qasn1element_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qasn1element_p.h new file mode 100644 index 000000000..2c5019b4f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qasn1element_p.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Jeremy Lainé <jeremy.laine@m4x.org> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QASN1ELEMENT_P_H +#define QASN1ELEMENT_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtCore/qdatetime.h> +#include <QtCore/qmap.h> + +QT_BEGIN_NAMESPACE + +#define RSA_ENCRYPTION_OID QByteArrayLiteral("1.2.840.113549.1.1.1") +#define DSA_ENCRYPTION_OID QByteArrayLiteral("1.2.840.10040.4.1") +#define EC_ENCRYPTION_OID QByteArrayLiteral("1.2.840.10045.2.1") + +class Q_AUTOTEST_EXPORT QAsn1Element +{ +public: + enum ElementType { + // universal + BooleanType = 0x01, + IntegerType = 0x02, + BitStringType = 0x03, + OctetStringType = 0x04, + NullType = 0x05, + ObjectIdentifierType = 0x06, + Utf8StringType = 0x0c, + PrintableStringType = 0x13, + TeletexStringType = 0x14, + UtcTimeType = 0x17, + GeneralizedTimeType = 0x18, + SequenceType = 0x30, + SetType = 0x31, + + // GeneralNameTypes + Rfc822NameType = 0x81, + DnsNameType = 0x82, + UniformResourceIdentifierType = 0x86, + + // context specific + Context0Type = 0xA0, + Context1Type = 0xA1, + Context3Type = 0xA3 + }; + + explicit QAsn1Element(quint8 type = 0, const QByteArray &value = QByteArray()); + bool read(QDataStream &data); + bool read(const QByteArray &data); + void write(QDataStream &data) const; + + static QAsn1Element fromBool(bool val); + static QAsn1Element fromInteger(unsigned int val); + static QAsn1Element fromVector(const QVector<QAsn1Element> &items); + static QAsn1Element fromObjectId(const QByteArray &id); + + bool toBool(bool *ok = 0) const; + QDateTime toDateTime() const; + QMultiMap<QByteArray, QString> toInfo() const; + qint64 toInteger(bool *ok = 0) const; + QVector<QAsn1Element> toVector() const; + QByteArray toObjectId() const; + QByteArray toObjectName() const; + QString toString() const; + + quint8 type() const { return mType; } + QByteArray value() const { return mValue; } + + friend inline bool operator==(const QAsn1Element &, const QAsn1Element &); + friend inline bool operator!=(const QAsn1Element &, const QAsn1Element &); + +private: + quint8 mType; + QByteArray mValue; +}; +Q_DECLARE_TYPEINFO(QAsn1Element, Q_MOVABLE_TYPE); + +inline bool operator==(const QAsn1Element &e1, const QAsn1Element &e2) +{ return e1.mType == e2.mType && e1.mValue == e2.mValue; } + +inline bool operator!=(const QAsn1Element &e1, const QAsn1Element &e2) +{ return e1.mType != e2.mType || e1.mValue != e2.mValue; } + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qauthenticator_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qauthenticator_p.h new file mode 100644 index 000000000..8a1ee0ebe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qauthenticator_p.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QAUTHENTICATOR_P_H +#define QAUTHENTICATOR_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include <qhash.h> +#include <qbytearray.h> +#include <qstring.h> +#include <qauthenticator.h> +#include <qvariant.h> + +QT_BEGIN_NAMESPACE + +class QHttpResponseHeader; +#ifdef Q_OS_WIN +class QNtlmWindowsHandles; +#endif + +class Q_AUTOTEST_EXPORT QAuthenticatorPrivate +{ +public: + enum Method { None, Basic, Plain, Login, Ntlm, CramMd5, DigestMd5 }; + QAuthenticatorPrivate(); + ~QAuthenticatorPrivate(); + + QString user; + QString extractedUser; + QString password; + QVariantHash options; + Method method; + QString realm; + QByteArray challenge; +#ifdef Q_OS_WIN + QNtlmWindowsHandles *ntlmWindowsHandles; +#endif + bool hasFailed; //credentials have been tried but rejected by server. + + enum Phase { + Start, + Phase2, + Done, + Invalid + }; + Phase phase; + + // digest specific + QByteArray cnonce; + int nonceCount; + + // ntlm specific + QString workstation; + QString userDomain; + + QByteArray calculateResponse(const QByteArray &method, const QByteArray &path); + + inline static QAuthenticatorPrivate *getPrivate(QAuthenticator &auth) { return auth.d; } + inline static const QAuthenticatorPrivate *getPrivate(const QAuthenticator &auth) { return auth.d; } + + QByteArray digestMd5Response(const QByteArray &challenge, const QByteArray &method, const QByteArray &path); + static QHash<QByteArray, QByteArray> parseDigestAuthenticationChallenge(const QByteArray &challenge); + + void parseHttpResponse(const QList<QPair<QByteArray, QByteArray> >&, bool isProxy); + void updateCredentials(); +}; + + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qbearerengine_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qbearerengine_p.h new file mode 100644 index 000000000..5fc2578a7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qbearerengine_p.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBEARERENGINE_P_H +#define QBEARERENGINE_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkconfiguration_p.h" +#include "qnetworksession.h" +#include "qnetworkconfigmanager.h" + +#include <QtCore/qobject.h> +#include <QtCore/qglobal.h> +#include <QtCore/qlist.h> +#include <QtCore/qstring.h> +#include <QtCore/qhash.h> +#include <QtCore/qsharedpointer.h> +#include <QtCore/qmutex.h> + +#ifndef QT_NO_BEARERMANAGEMENT + +QT_BEGIN_NAMESPACE + +class QNetworkConfiguration; + +class Q_NETWORK_EXPORT QBearerEngine : public QObject +{ + Q_OBJECT + + friend class QNetworkConfigurationManagerPrivate; + +public: + explicit QBearerEngine(QObject *parent = 0); + virtual ~QBearerEngine(); + + virtual bool hasIdentifier(const QString &id) = 0; + + virtual QNetworkConfigurationManager::Capabilities capabilities() const = 0; + + virtual QNetworkSessionPrivate *createSessionBackend() = 0; + + virtual QNetworkConfigurationPrivatePointer defaultConfiguration() = 0; + + virtual bool requiresPolling() const; + bool configurationsInUse() const; + +Q_SIGNALS: + void configurationAdded(QNetworkConfigurationPrivatePointer config); + void configurationRemoved(QNetworkConfigurationPrivatePointer config); + void configurationChanged(QNetworkConfigurationPrivatePointer config); + void updateCompleted(); + +protected: + //this table contains an up to date list of all configs at any time. + //it must be updated if configurations change, are added/removed or + //the members of ServiceNetworks change + QHash<QString, QNetworkConfigurationPrivatePointer> accessPointConfigurations; + QHash<QString, QNetworkConfigurationPrivatePointer> snapConfigurations; + QHash<QString, QNetworkConfigurationPrivatePointer> userChoiceConfigurations; + + mutable QMutex mutex; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_BEARERMANAGEMENT + +#endif // QBEARERENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qbearerplugin_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qbearerplugin_p.h new file mode 100644 index 000000000..0cdde3c06 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qbearerplugin_p.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBEARERPLUGIN_P_H +#define QBEARERPLUGIN_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "qbearerengine_p.h" + +#include <QtCore/qplugin.h> +#include <QtCore/qfactoryinterface.h> + +#ifndef QT_NO_BEARERMANAGEMENT + +QT_BEGIN_NAMESPACE + + +#define QBearerEngineFactoryInterface_iid "org.qt-project.Qt.QBearerEngineFactoryInterface" + +class Q_NETWORK_EXPORT QBearerEnginePlugin : public QObject +{ + Q_OBJECT +public: + explicit QBearerEnginePlugin(QObject *parent = 0); + virtual ~QBearerEnginePlugin(); + + virtual QBearerEngine *create(const QString &key) const = 0; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_BEARERMANAGEMENT + +#endif // QBEARERPLUGIN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qdnslookup_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qdnslookup_p.h new file mode 100644 index 000000000..d07028638 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qdnslookup_p.h @@ -0,0 +1,217 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDNSLOOKUP_P_H +#define QDNSLOOKUP_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 QDnsLookup class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "QtCore/qmutex.h" +#include "QtCore/qrunnable.h" +#include "QtCore/qsharedpointer.h" +#include "QtCore/qthreadpool.h" +#include "QtNetwork/qdnslookup.h" +#include "QtNetwork/qhostaddress.h" +#include "private/qobject_p.h" + +QT_BEGIN_NAMESPACE + +//#define QDNSLOOKUP_DEBUG + +class QDnsLookupRunnable; + +class QDnsLookupReply +{ +public: + QDnsLookupReply() + : error(QDnsLookup::NoError) + { } + + QDnsLookup::Error error; + QString errorString; + + QList<QDnsDomainNameRecord> canonicalNameRecords; + QList<QDnsHostAddressRecord> hostAddressRecords; + QList<QDnsMailExchangeRecord> mailExchangeRecords; + QList<QDnsDomainNameRecord> nameServerRecords; + QList<QDnsDomainNameRecord> pointerRecords; + QList<QDnsServiceRecord> serviceRecords; + QList<QDnsTextRecord> textRecords; +}; + +class QDnsLookupPrivate : public QObjectPrivate +{ +public: + QDnsLookupPrivate() + : isFinished(false) + , type(QDnsLookup::A) + , runnable(0) + { } + + void _q_lookupFinished(const QDnsLookupReply &reply); + + static const char *msgNoIpV6NameServerAdresses; + + bool isFinished; + QString name; + QDnsLookup::Type type; + QHostAddress nameserver; + QDnsLookupReply reply; + QDnsLookupRunnable *runnable; + + Q_DECLARE_PUBLIC(QDnsLookup) +}; + +class QDnsLookupRunnable : public QObject, public QRunnable +{ + Q_OBJECT + +public: + QDnsLookupRunnable(QDnsLookup::Type type, const QByteArray &name, const QHostAddress &nameserver) + : requestType(type) + , requestName(name) + , nameserver(nameserver) + { } + void run() Q_DECL_OVERRIDE; + +signals: + void finished(const QDnsLookupReply &reply); + +private: + static void query(const int requestType, const QByteArray &requestName, const QHostAddress &nameserver, QDnsLookupReply *reply); + QDnsLookup::Type requestType; + QByteArray requestName; + QHostAddress nameserver; +}; + +class QDnsLookupThreadPool : public QThreadPool +{ + Q_OBJECT + +public: + QDnsLookupThreadPool(); + void start(QRunnable *runnable); + +private slots: + void _q_applicationDestroyed(); + +private: + QMutex signalsMutex; + bool signalsConnected; +}; + +class QDnsRecordPrivate : public QSharedData +{ +public: + QDnsRecordPrivate() + : timeToLive(0) + { } + + QString name; + quint32 timeToLive; +}; + +class QDnsDomainNameRecordPrivate : public QDnsRecordPrivate +{ +public: + QDnsDomainNameRecordPrivate() + { } + + QString value; +}; + +class QDnsHostAddressRecordPrivate : public QDnsRecordPrivate +{ +public: + QDnsHostAddressRecordPrivate() + { } + + QHostAddress value; +}; + +class QDnsMailExchangeRecordPrivate : public QDnsRecordPrivate +{ +public: + QDnsMailExchangeRecordPrivate() + : preference(0) + { } + + QString exchange; + quint16 preference; +}; + +class QDnsServiceRecordPrivate : public QDnsRecordPrivate +{ +public: + QDnsServiceRecordPrivate() + : port(0), + priority(0), + weight(0) + { } + + QString target; + quint16 port; + quint16 priority; + quint16 weight; +}; + +class QDnsTextRecordPrivate : public QDnsRecordPrivate +{ +public: + QDnsTextRecordPrivate() + { } + + QList<QByteArray> values; +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QDnsLookupReply) + +#endif // QDNSLOOKUP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qftp_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qftp_p.h new file mode 100644 index 000000000..bba1f9b09 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qftp_p.h @@ -0,0 +1,173 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef QFTP_P_H +#define QFTP_P_H + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtCore/qstring.h> +#include <private/qurlinfo_p.h> +#include <QtCore/qobject.h> + +QT_REQUIRE_CONFIG(ftp); + +QT_BEGIN_NAMESPACE + +class QFtpPrivate; + +class Q_AUTOTEST_EXPORT QFtp : public QObject +{ + Q_OBJECT + +public: + explicit QFtp(QObject *parent = 0); + virtual ~QFtp(); + + enum State { + Unconnected, + HostLookup, + Connecting, + Connected, + LoggedIn, + Closing + }; + enum Error { + NoError, + UnknownError, + HostNotFound, + ConnectionRefused, + NotConnected + }; + enum Command { + None, + SetTransferMode, + SetProxy, + ConnectToHost, + Login, + Close, + List, + Cd, + Get, + Put, + Remove, + Mkdir, + Rmdir, + Rename, + RawCommand + }; + enum TransferMode { + Active, + Passive + }; + enum TransferType { + Binary, + Ascii + }; + + int setProxy(const QString &host, quint16 port); + int connectToHost(const QString &host, quint16 port=21); + int login(const QString &user = QString(), const QString &password = QString()); + int close(); + int setTransferMode(TransferMode mode); + int list(const QString &dir = QString()); + int cd(const QString &dir); + int get(const QString &file, QIODevice *dev=0, TransferType type = Binary); + int put(const QByteArray &data, const QString &file, TransferType type = Binary); + int put(QIODevice *dev, const QString &file, TransferType type = Binary); + int remove(const QString &file); + int mkdir(const QString &dir); + int rmdir(const QString &dir); + int rename(const QString &oldname, const QString &newname); + + int rawCommand(const QString &command); + + qint64 bytesAvailable() const; + qint64 read(char *data, qint64 maxlen); + QByteArray readAll(); + + int currentId() const; + QIODevice* currentDevice() const; + Command currentCommand() const; + bool hasPendingCommands() const; + void clearPendingCommands(); + + State state() const; + + Error error() const; + QString errorString() const; + +public Q_SLOTS: + void abort(); + +Q_SIGNALS: + void stateChanged(int); + void listInfo(const QUrlInfo&); + void readyRead(); + void dataTransferProgress(qint64, qint64); + void rawCommandReply(int, const QString&); + + void commandStarted(int); + void commandFinished(int, bool); + void done(bool); + +private: + Q_DISABLE_COPY(QFtp) + Q_DECLARE_PRIVATE(QFtp) + + Q_PRIVATE_SLOT(d_func(), void _q_startNextCommand()) + Q_PRIVATE_SLOT(d_func(), void _q_piFinished(const QString&)) + Q_PRIVATE_SLOT(d_func(), void _q_piError(int, const QString&)) + Q_PRIVATE_SLOT(d_func(), void _q_piConnectState(int)) + Q_PRIVATE_SLOT(d_func(), void _q_piFtpReply(int, const QString&)) +}; + +QT_END_NAMESPACE + +#endif // QFTP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhostaddress_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhostaddress_p.h new file mode 100644 index 000000000..55c3e5afd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhostaddress_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHOSTADDRESSPRIVATE_H +#define QHOSTADDRESSPRIVATE_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QHostAddress and QNetworkInterface classes. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qhostaddress.h" +#include "qabstractsocket.h" + +QT_BEGIN_NAMESPACE + +class QNetmaskAddress: public QHostAddress +{ + int length; +public: + QNetmaskAddress() : QHostAddress(), length(-1) { } + + bool setAddress(const QString &address); + bool setAddress(const QHostAddress &address); + + int prefixLength() const; + void setPrefixLength(QAbstractSocket::NetworkLayerProtocol proto, int len); +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhostinfo_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhostinfo_p.h new file mode 100644 index 000000000..dd46818a1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhostinfo_p.h @@ -0,0 +1,259 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHOSTINFO_P_H +#define QHOSTINFO_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 QHostInfo class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "QtCore/qcoreapplication.h" +#include "private/qcoreapplication_p.h" +#include "private/qmetaobject_p.h" +#include "QtNetwork/qhostinfo.h" +#include "QtCore/qmutex.h" +#include "QtCore/qwaitcondition.h" +#include "QtCore/qobject.h" +#include "QtCore/qpointer.h" +#include "QtCore/qthread.h" +#include "QtCore/qthreadpool.h" +#include "QtCore/qrunnable.h" +#include "QtCore/qlist.h" +#include "QtCore/qqueue.h" +#include <QElapsedTimer> +#include <QCache> + +#include <QNetworkSession> +#include <QSharedPointer> + + +QT_BEGIN_NAMESPACE + + +class QHostInfoResult : public QObject +{ + Q_OBJECT + + QPointer<const QObject> receiver = nullptr; + QtPrivate::QSlotObjectBase *slotObj = nullptr; + +public: + QHostInfoResult() = default; + QHostInfoResult(const QObject *receiver, QtPrivate::QSlotObjectBase *slotObj) : + receiver(receiver), + slotObj(slotObj) + { + connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, this, + &QObject::deleteLater); + if (slotObj && receiver) + moveToThread(receiver->thread()); + } + +public Q_SLOTS: + inline void emitResultsReady(const QHostInfo &info) + { + if (slotObj) { + QHostInfo copy = info; + void *args[2] = { 0, reinterpret_cast<void *>(©) }; + slotObj->call(const_cast<QObject*>(receiver.data()), args); + slotObj->destroyIfLastRef(); + } else { + emit resultsReady(info); + } + } + +protected: + bool event(QEvent *event) + { + if (event->type() == QEvent::MetaCall) { + auto metaCallEvent = static_cast<QMetaCallEvent *>(event); + auto args = metaCallEvent->args(); + auto hostInfo = reinterpret_cast<QHostInfo *>(args[1]); + emitResultsReady(*hostInfo); + deleteLater(); + return true; + } + return QObject::event(event); + } + +Q_SIGNALS: + void resultsReady(const QHostInfo &info); +}; + +// needs to be QObject because fromName calls tr() +class QHostInfoAgent : public QObject +{ + Q_OBJECT +public: + static QHostInfo fromName(const QString &hostName); +#ifndef QT_NO_BEARERMANAGEMENT + static QHostInfo fromName(const QString &hostName, QSharedPointer<QNetworkSession> networkSession); +#endif +}; + +class QHostInfoPrivate +{ +public: + inline QHostInfoPrivate() + : err(QHostInfo::NoError), + errorStr(QLatin1String(QT_TRANSLATE_NOOP("QHostInfo", "Unknown error"))), + lookupId(0) + { + } +#ifndef QT_NO_BEARERMANAGEMENT + //not a public API yet + static QHostInfo fromName(const QString &hostName, QSharedPointer<QNetworkSession> networkSession); +#endif + + QHostInfo::HostInfoError err; + QString errorStr; + QList<QHostAddress> addrs; + QString hostName; + int lookupId; +}; + +// These functions are outside of the QHostInfo class and strictly internal. +// Do NOT use them outside of QAbstractSocket. +QHostInfo Q_NETWORK_EXPORT qt_qhostinfo_lookup(const QString &name, QObject *receiver, const char *member, bool *valid, int *id); +void Q_AUTOTEST_EXPORT qt_qhostinfo_clear_cache(); +void Q_AUTOTEST_EXPORT qt_qhostinfo_enable_cache(bool e); +void Q_AUTOTEST_EXPORT qt_qhostinfo_cache_inject(const QString &hostname, const QHostInfo &resolution); + +class QHostInfoCache +{ +public: + QHostInfoCache(); + const int max_age; // seconds + + QHostInfo get(const QString &name, bool *valid); + void put(const QString &name, const QHostInfo &info); + void clear(); + + bool isEnabled(); + void setEnabled(bool e); +private: + bool enabled; + struct QHostInfoCacheElement { + QHostInfo info; + QElapsedTimer age; + }; + QCache<QString,QHostInfoCacheElement> cache; + QMutex mutex; +}; + +// the following classes are used for the (normal) case: We use multiple threads to lookup DNS + +class QHostInfoRunnable : public QRunnable +{ +public: + QHostInfoRunnable(const QString &hn, int i); + QHostInfoRunnable(const QString &hn, int i, const QObject *receiver, + QtPrivate::QSlotObjectBase *slotObj); + void run() Q_DECL_OVERRIDE; + + QString toBeLookedUp; + int id; + QHostInfoResult resultEmitter; +}; + + +class QAbstractHostInfoLookupManager : public QObject +{ + Q_OBJECT + +public: + ~QAbstractHostInfoLookupManager() {} + virtual void clear() = 0; + + QHostInfoCache cache; + +protected: + QAbstractHostInfoLookupManager() {} + static QAbstractHostInfoLookupManager* globalInstance(); + +}; + +class QHostInfoLookupManager : public QAbstractHostInfoLookupManager +{ + Q_OBJECT +public: + QHostInfoLookupManager(); + ~QHostInfoLookupManager(); + + void clear() Q_DECL_OVERRIDE; + void work(); + + // called from QHostInfo + void scheduleLookup(QHostInfoRunnable *r); + void abortLookup(int id); + + // called from QHostInfoRunnable + void lookupFinished(QHostInfoRunnable *r); + bool wasAborted(int id); + + friend class QHostInfoRunnable; +protected: + QList<QHostInfoRunnable*> currentLookups; // in progress + QList<QHostInfoRunnable*> postponedLookups; // postponed because in progress for same host + QQueue<QHostInfoRunnable*> scheduledLookups; // not yet started + QList<QHostInfoRunnable*> finishedLookups; // recently finished + QList<int> abortedLookups; // ids of aborted lookups + + QThreadPool threadPool; + + QMutex mutex; + + bool wasDeleted; + +private slots: + void waitForThreadPoolDone() { threadPool.waitForDone(); } +}; + +QT_END_NAMESPACE + +#endif // QHOSTINFO_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhsts_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhsts_p.h new file mode 100644 index 000000000..ab3ca536f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhsts_p.h @@ -0,0 +1,145 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHSTS_P_H +#define QHSTS_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/qhstspolicy.h> + +#include <QtCore/qbytearray.h> +#include <QtCore/qdatetime.h> +#include <QtCore/qstring.h> +#include <QtCore/qglobal.h> +#include <QtCore/qpair.h> +#include <QtCore/qurl.h> +#include <QtCore/qmap.h> + +QT_BEGIN_NAMESPACE + +template<typename T> class QList; +template <typename T> class QVector; + +class Q_AUTOTEST_EXPORT QHstsCache +{ +public: + + void updateFromHeaders(const QList<QPair<QByteArray, QByteArray>> &headers, + const QUrl &url); + void updateFromPolicies(const QVector<QHstsPolicy> &hosts); + void updateKnownHost(const QUrl &url, const QDateTime &expires, + bool includeSubDomains); + bool isKnownHost(const QUrl &url) const; + void clear(); + + QVector<QHstsPolicy> policies() const; + +private: + + void updateKnownHost(const QString &hostName, const QDateTime &expires, + bool includeSubDomains); + + struct HostName + { + explicit HostName(const QString &n) : name(n) { } + explicit HostName(const QStringRef &r) : fragment(r) { } + + bool operator < (const HostName &rhs) const + { + if (fragment.size()) { + if (rhs.fragment.size()) + return fragment < rhs.fragment; + return fragment < QStringRef(&rhs.name); + } + + if (rhs.fragment.size()) + return QStringRef(&name) < rhs.fragment; + return name < rhs.name; + } + + // We use 'name' for a HostName object contained in our dictionary; + // we use 'fragment' only during lookup, when chopping the complete host + // name, removing subdomain names (such HostName object is 'transient', it + // must not outlive the original QString object. + QString name; + QStringRef fragment; + }; + + mutable QMap<HostName, QHstsPolicy> knownHosts; +}; + +class Q_AUTOTEST_EXPORT QHstsHeaderParser +{ +public: + + bool parse(const QList<QPair<QByteArray, QByteArray>> &headers); + + QDateTime expirationDate() const { return expiry; } + bool includeSubDomains() const { return subDomainsFound; } + +private: + + bool parseSTSHeader(); + bool parseDirective(); + bool processDirective(const QByteArray &name, const QByteArray &value); + bool nextToken(); + + QByteArray header; + QByteArray token; + + QDateTime expiry; + int tokenPos = 0; + bool maxAgeFound = false; + qint64 maxAge = 0; + bool subDomainsFound = false; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttp2protocolhandler_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttp2protocolhandler_p.h new file mode 100644 index 000000000..5e04c7937 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttp2protocolhandler_p.h @@ -0,0 +1,219 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTP2PROTOCOLHANDLER_P_H +#define QHTTP2PROTOCOLHANDLER_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <private/qhttpnetworkconnectionchannel_p.h> +#include <private/qabstractprotocolhandler_p.h> +#include <private/qhttpnetworkrequest_p.h> + +#if !defined(QT_NO_HTTP) + +#include <private/http2protocol_p.h> +#include <private/http2streams_p.h> +#include <private/http2frames_p.h> +#include <private/hpacktable_p.h> +#include <private/hpack_p.h> + +#include <QtCore/qnamespace.h> +#include <QtCore/qbytearray.h> +#include <QtCore/qglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qflags.h> +#include <QtCore/qhash.h> + +#include <vector> +#include <limits> +#include <deque> +#include <set> + +QT_BEGIN_NAMESPACE + +class QHttp2ProtocolHandler : public QObject, public QAbstractProtocolHandler +{ + Q_OBJECT + +public: + QHttp2ProtocolHandler(QHttpNetworkConnectionChannel *channel); + + QHttp2ProtocolHandler(const QHttp2ProtocolHandler &rhs) = delete; + QHttp2ProtocolHandler(QHttp2ProtocolHandler &&rhs) = delete; + + QHttp2ProtocolHandler &operator = (const QHttp2ProtocolHandler &rhs) = delete; + QHttp2ProtocolHandler &operator = (QHttp2ProtocolHandler &&rhs) = delete; + +private slots: + void _q_uploadDataReadyRead(); + void _q_replyDestroyed(QObject* reply); + +private: + using Stream = Http2::Stream; + + void _q_readyRead() override; + void _q_receiveReply() override; + Q_INVOKABLE bool sendRequest() override; + + bool sendClientPreface(); + bool sendSETTINGS_ACK(); + bool sendHEADERS(Stream &stream); + bool sendDATA(Stream &stream); + Q_INVOKABLE bool sendWINDOW_UPDATE(quint32 streamID, quint32 delta); + bool sendRST_STREAM(quint32 streamID, quint32 errorCoder); + bool sendGOAWAY(quint32 errorCode); + + void handleDATA(); + void handleHEADERS(); + void handlePRIORITY(); + void handleRST_STREAM(); + void handleSETTINGS(); + void handlePUSH_PROMISE(); + void handlePING(); + void handleGOAWAY(); + void handleWINDOW_UPDATE(); + void handleCONTINUATION(); + + void handleContinuedHEADERS(); + + bool acceptSetting(Http2::Settings identifier, quint32 newValue); + + void updateStream(Stream &stream, const HPack::HttpHeader &headers, + Qt::ConnectionType connectionType = Qt::DirectConnection); + void updateStream(Stream &stream, const Http2::Frame &dataFrame, + Qt::ConnectionType connectionType = Qt::DirectConnection); + void finishStream(Stream &stream, Qt::ConnectionType connectionType = Qt::DirectConnection); + // Error code send by a peer (GOAWAY/RST_STREAM): + void finishStreamWithError(Stream &stream, quint32 errorCode); + // Locally encountered error: + void finishStreamWithError(Stream &stream, QNetworkReply::NetworkError error, + const QString &message); + + // Stream's lifecycle management: + quint32 createNewStream(const HttpMessagePair &message); + void addToSuspended(Stream &stream); + void markAsReset(quint32 streamID); + quint32 popStreamToResume(); + void removeFromSuspended(quint32 streamID); + void deleteActiveStream(quint32 streamID); + bool streamWasReset(quint32 streamID) const; + + bool prefaceSent = false; + // In the current implementation we send + // SETTINGS only once, immediately after + // the client's preface 24-byte message. + bool waitingForSettingsACK = false; + + static const quint32 maxAcceptableTableSize = 16 * HPack::FieldLookupTable::DefaultSize; + // HTTP/2 4.3: Header compression is stateful. One compression context and + // one decompression context are used for the entire connection. + HPack::Decoder decoder; + HPack::Encoder encoder; + + QHash<quint32, Stream> activeStreams; + std::deque<quint32> suspendedStreams[3]; // 3 for priorities: High, Normal, Low. + static const std::deque<quint32>::size_type maxRecycledStreams; + std::deque<quint32> recycledStreams; + + // Peer's max frame size. + quint32 maxFrameSize = Http2::maxFrameSize; + + Http2::FrameReader frameReader; + Http2::Frame inboundFrame; + Http2::FrameWriter frameWriter; + // Temporary storage to assemble HEADERS' block + // from several CONTINUATION frames ... + bool continuationExpected = false; + std::vector<Http2::Frame> continuedFrames; + + // Peer's max number of streams ... + quint32 maxConcurrentStreams = Http2::maxConcurrentStreams; + + // Control flow: + static const qint32 sessionMaxRecvWindowSize = Http2::defaultSessionWindowSize * 10; + // Signed integer, it can become negative (it's still a valid window size): + qint32 sessionRecvWindowSize = sessionMaxRecvWindowSize; + + // We do not negotiate this window size + // We have to send WINDOW_UPDATE frames to our peer also. + static const qint32 streamInitialRecvWindowSize = Http2::defaultSessionWindowSize; + + // Updated by SETTINGS and WINDOW_UPDATE. + qint32 sessionSendWindowSize = Http2::defaultSessionWindowSize; + qint32 streamInitialSendWindowSize = Http2::defaultSessionWindowSize; + + // It's unlimited by default, but can be changed via SETTINGS. + quint32 maxHeaderListSize = (std::numeric_limits<quint32>::max)(); + + Q_INVOKABLE void resumeSuspendedStreams(); + // Our stream IDs (all odd), the first valid will be 1. + quint32 nextID = 1; + quint32 allocateStreamID(); + bool validPeerStreamID() const; + bool goingAway = false; + bool pushPromiseEnabled = false; + quint32 lastPromisedID = Http2::connectionStreamID; + QHash<QString, Http2::PushPromise> promisedData; + bool tryReserveStream(const Http2::Frame &pushPromiseFrame, + const HPack::HttpHeader &requestHeader); + void resetPromisedStream(const Http2::Frame &pushPromiseFrame, + Http2::Http2Error reason); + void initReplyFromPushPromise(const HttpMessagePair &message, + const QString &cacheKey); + // Errors: + void connectionError(Http2::Http2Error errorCode, + const char *message); + void closeSession(); +}; + +QT_END_NAMESPACE + +#endif // !defined(QT_NO_HTTP) + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpmultipart_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpmultipart_p.h new file mode 100644 index 000000000..a03df9cb1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpmultipart_p.h @@ -0,0 +1,181 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTPMULTIPART_P_H +#define QHTTPMULTIPART_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "QtCore/qshareddata.h" +#include "qnetworkrequest_p.h" // for deriving QHttpPartPrivate from QNetworkHeadersPrivate +#include "private/qobject_p.h" + +QT_BEGIN_NAMESPACE + + +class QHttpPartPrivate: public QSharedData, public QNetworkHeadersPrivate +{ +public: + inline QHttpPartPrivate() : bodyDevice(0), headerCreated(false), readPointer(0) + { + } + ~QHttpPartPrivate() + { + } + + + QHttpPartPrivate(const QHttpPartPrivate &other) + : QSharedData(other), QNetworkHeadersPrivate(other), body(other.body), + header(other.header), headerCreated(other.headerCreated), readPointer(other.readPointer) + { + bodyDevice = other.bodyDevice; + } + + inline bool operator==(const QHttpPartPrivate &other) const + { + return rawHeaders == other.rawHeaders && body == other.body && + bodyDevice == other.bodyDevice && readPointer == other.readPointer; + } + + void setBodyDevice(QIODevice *device) { + bodyDevice = device; + readPointer = 0; + } + void setBody(const QByteArray &newBody) { + body = newBody; + readPointer = 0; + } + + // QIODevice-style methods called by QHttpMultiPartIODevice (but this class is + // not a QIODevice): + qint64 bytesAvailable() const; + qint64 readData(char *data, qint64 maxSize); + qint64 size() const; + bool reset(); + + QByteArray body; + QIODevice *bodyDevice; + +private: + void checkHeaderCreated() const; + + mutable QByteArray header; + mutable bool headerCreated; + qint64 readPointer; +}; + + + +class QHttpMultiPartPrivate; + +class Q_AUTOTEST_EXPORT QHttpMultiPartIODevice : public QIODevice +{ +public: + QHttpMultiPartIODevice(QHttpMultiPartPrivate *parentMultiPart) : + QIODevice(), multiPart(parentMultiPart), readPointer(0), deviceSize(-1) { + } + + ~QHttpMultiPartIODevice() { + } + + virtual bool atEnd() const Q_DECL_OVERRIDE { + return readPointer == size(); + } + + virtual qint64 bytesAvailable() const Q_DECL_OVERRIDE { + return size() - readPointer; + } + + virtual void close() Q_DECL_OVERRIDE { + readPointer = 0; + partOffsets.clear(); + deviceSize = -1; + QIODevice::close(); + } + + virtual qint64 bytesToWrite() const Q_DECL_OVERRIDE { + return 0; + } + + virtual qint64 size() const Q_DECL_OVERRIDE; + virtual bool isSequential() const Q_DECL_OVERRIDE; + virtual bool reset() Q_DECL_OVERRIDE; + virtual qint64 readData(char *data, qint64 maxSize) Q_DECL_OVERRIDE; + virtual qint64 writeData(const char *data, qint64 maxSize) Q_DECL_OVERRIDE; + + QHttpMultiPartPrivate *multiPart; + qint64 readPointer; + mutable QList<qint64> partOffsets; + mutable qint64 deviceSize; +}; + + + +class QHttpMultiPartPrivate: public QObjectPrivate +{ +public: + + QHttpMultiPartPrivate(); + + ~QHttpMultiPartPrivate() + { + delete device; + } + + QList<QHttpPart> parts; + QByteArray boundary; + QHttpMultiPart::ContentType contentType; + QHttpMultiPartIODevice *device; + +}; + +QT_END_NAMESPACE + + +#endif // QHTTPMULTIPART_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkconnection_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkconnection_p.h new file mode 100644 index 000000000..3dd9bde9b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkconnection_p.h @@ -0,0 +1,292 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTPNETWORKCONNECTION_H +#define QHTTPNETWORKCONNECTION_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtNetwork/qnetworkrequest.h> +#include <QtNetwork/qnetworkreply.h> +#include <QtNetwork/qabstractsocket.h> +#include <QtNetwork/qnetworksession.h> + +#include <private/qobject_p.h> +#include <qauthenticator.h> +#include <qnetworkproxy.h> +#include <qbuffer.h> +#include <qtimer.h> +#include <qsharedpointer.h> + +#include <private/qhttpnetworkheader_p.h> +#include <private/qhttpnetworkrequest_p.h> +#include <private/qhttpnetworkreply_p.h> + +#include <private/qhttpnetworkconnectionchannel_p.h> + +#ifndef QT_NO_HTTP + +QT_BEGIN_NAMESPACE + +class QHttpNetworkRequest; +class QHttpNetworkReply; +class QHttpThreadDelegate; +class QByteArray; +class QHostInfo; +#ifndef QT_NO_SSL +class QSslConfiguration; +class QSslContext; +#endif // !QT_NO_SSL + +class QHttpNetworkConnectionPrivate; +class Q_AUTOTEST_EXPORT QHttpNetworkConnection : public QObject +{ + Q_OBJECT +public: + + enum ConnectionType { + ConnectionTypeHTTP, + ConnectionTypeSPDY, + ConnectionTypeHTTP2 + }; + +#ifndef QT_NO_BEARERMANAGEMENT + explicit QHttpNetworkConnection(const QString &hostName, quint16 port = 80, bool encrypt = false, + ConnectionType connectionType = ConnectionTypeHTTP, + QObject *parent = 0, QSharedPointer<QNetworkSession> networkSession + = QSharedPointer<QNetworkSession>()); + QHttpNetworkConnection(quint16 channelCount, const QString &hostName, quint16 port = 80, + bool encrypt = false, QObject *parent = 0, + QSharedPointer<QNetworkSession> networkSession = QSharedPointer<QNetworkSession>(), + ConnectionType connectionType = ConnectionTypeHTTP); +#else + explicit QHttpNetworkConnection(const QString &hostName, quint16 port = 80, bool encrypt = false, + ConnectionType connectionType = ConnectionTypeHTTP, + QObject *parent = 0); + QHttpNetworkConnection(quint16 channelCount, const QString &hostName, quint16 port = 80, + bool encrypt = false, QObject *parent = 0, + ConnectionType connectionType = ConnectionTypeHTTP); +#endif + ~QHttpNetworkConnection(); + + //The hostname to which this is connected to. + QString hostName() const; + //The HTTP port in use. + quint16 port() const; + + //add a new HTTP request through this connection + QHttpNetworkReply* sendRequest(const QHttpNetworkRequest &request); + +#ifndef QT_NO_NETWORKPROXY + //set the proxy for this connection + void setCacheProxy(const QNetworkProxy &networkProxy); + QNetworkProxy cacheProxy() const; + void setTransparentProxy(const QNetworkProxy &networkProxy); + QNetworkProxy transparentProxy() const; +#endif + + bool isSsl() const; + + QHttpNetworkConnectionChannel *channels() const; + + ConnectionType connectionType(); + void setConnectionType(ConnectionType type); + +#ifndef QT_NO_SSL + 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 + + void preConnectFinished(); + +private: + Q_DECLARE_PRIVATE(QHttpNetworkConnection) + Q_DISABLE_COPY(QHttpNetworkConnection) + friend class QHttpThreadDelegate; + friend class QHttpNetworkReply; + friend class QHttpNetworkReplyPrivate; + friend class QHttpNetworkConnectionChannel; + friend class QHttp2ProtocolHandler; + friend class QHttpProtocolHandler; + friend class QSpdyProtocolHandler; + + Q_PRIVATE_SLOT(d_func(), void _q_startNextRequest()) + Q_PRIVATE_SLOT(d_func(), void _q_hostLookupFinished(QHostInfo)) + Q_PRIVATE_SLOT(d_func(), void _q_connectDelayedChannel()) +}; + + +// private classes +typedef QPair<QHttpNetworkRequest, QHttpNetworkReply*> HttpMessagePair; + + +class QHttpNetworkConnectionPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QHttpNetworkConnection) +public: + static const int defaultHttpChannelCount; + static const int defaultPipelineLength; + static const int defaultRePipelineLength; + + enum ConnectionState { + RunningState = 0, + PausedState = 1 + }; + + enum NetworkLayerPreferenceState { + Unknown, + HostLookupPending, + IPv4, + IPv6, + IPv4or6 + }; + + QHttpNetworkConnectionPrivate(const QString &hostName, quint16 port, bool encrypt, + QHttpNetworkConnection::ConnectionType type); + QHttpNetworkConnectionPrivate(quint16 channelCount, const QString &hostName, quint16 port, bool encrypt, + QHttpNetworkConnection::ConnectionType type); + ~QHttpNetworkConnectionPrivate(); + void init(); + + void pauseConnection(); + void resumeConnection(); + ConnectionState state; + NetworkLayerPreferenceState networkLayerState; + + enum { ChunkSize = 4096 }; + + int indexOf(QAbstractSocket *socket) const; + + QHttpNetworkReply *queueRequest(const QHttpNetworkRequest &request); + void requeueRequest(const HttpMessagePair &pair); // e.g. after pipeline broke + bool dequeueRequest(QAbstractSocket *socket); + void prepareRequest(HttpMessagePair &request); + void updateChannel(int i, const HttpMessagePair &messagePair); + QHttpNetworkRequest predictNextRequest() const; + + void fillPipeline(QAbstractSocket *socket); + bool fillPipeline(QList<HttpMessagePair> &queue, QHttpNetworkConnectionChannel &channel); + + // read more HTTP body after the next event loop spin + void readMoreLater(QHttpNetworkReply *reply); + + void copyCredentials(int fromChannel, QAuthenticator *auth, bool isProxy); + + void startHostInfoLookup(); + void startNetworkLayerStateLookup(); + void networkLayerDetected(QAbstractSocket::NetworkLayerProtocol protocol); + + // private slots + void _q_startNextRequest(); // send the next request from the queue + + void _q_hostLookupFinished(const QHostInfo &info); + void _q_connectDelayedChannel(); + + void createAuthorization(QAbstractSocket *socket, QHttpNetworkRequest &request); + + QString errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket *socket, + const QString &extraDetail = QString()); + + void removeReply(QHttpNetworkReply *reply); + + QString hostName; + quint16 port; + bool encrypt; + bool delayIpv4; + + // Number of channels we are trying to use at the moment: + int activeChannelCount; + // The total number of channels we reserved: + const int channelCount; + QTimer delayedConnectionTimer; + QHttpNetworkConnectionChannel *channels; // parallel connections to the server + bool shouldEmitChannelError(QAbstractSocket *socket); + + qint64 uncompressedBytesAvailable(const QHttpNetworkReply &reply) const; + qint64 uncompressedBytesAvailableNextBlock(const QHttpNetworkReply &reply) const; + + + void emitReplyError(QAbstractSocket *socket, QHttpNetworkReply *reply, QNetworkReply::NetworkError errorCode); + bool handleAuthenticateChallenge(QAbstractSocket *socket, QHttpNetworkReply *reply, bool isProxy, bool &resend); + QUrl parseRedirectResponse(QAbstractSocket *socket, QHttpNetworkReply *reply); + +#ifndef QT_NO_NETWORKPROXY + QNetworkProxy networkProxy; + void emitProxyAuthenticationRequired(const QHttpNetworkConnectionChannel *chan, const QNetworkProxy &proxy, QAuthenticator* auth); +#endif + + //The request queues + QList<HttpMessagePair> highPriorityQueue; + QList<HttpMessagePair> lowPriorityQueue; + + int preConnectRequests; + + QHttpNetworkConnection::ConnectionType connectionType; + +#ifndef QT_NO_SSL + QSharedPointer<QSslContext> sslContext; +#endif + +#ifndef QT_NO_BEARERMANAGEMENT + QSharedPointer<QNetworkSession> networkSession; +#endif + + friend class QHttpNetworkConnectionChannel; +}; + + + +QT_END_NAMESPACE + +#endif // QT_NO_HTTP + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkconnectionchannel_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkconnectionchannel_p.h new file mode 100644 index 000000000..61aea9d35 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkconnectionchannel_p.h @@ -0,0 +1,218 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTPNETWORKCONNECTIONCHANNEL_H +#define QHTTPNETWORKCONNECTIONCHANNEL_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtNetwork/qnetworkrequest.h> +#include <QtNetwork/qnetworkreply.h> +#include <QtNetwork/qabstractsocket.h> + +#include <private/qobject_p.h> +#include <qauthenticator.h> +#include <qnetworkproxy.h> +#include <qbuffer.h> + +#include <private/qhttpnetworkheader_p.h> +#include <private/qhttpnetworkrequest_p.h> +#include <private/qhttpnetworkreply_p.h> + +#include <private/qhttpnetworkconnection_p.h> +#include <private/qabstractprotocolhandler_p.h> + +#ifndef QT_NO_HTTP + +#ifndef QT_NO_SSL +# include <QtNetwork/qsslsocket.h> +# include <QtNetwork/qsslerror.h> +# include <QtNetwork/qsslconfiguration.h> +#else +# include <QtNetwork/qtcpsocket.h> +#endif + +QT_BEGIN_NAMESPACE + +class QHttpNetworkRequest; +class QHttpNetworkReply; +class QByteArray; + +#ifndef HttpMessagePair +typedef QPair<QHttpNetworkRequest, QHttpNetworkReply*> HttpMessagePair; +#endif + +class QHttpNetworkConnectionChannel : public QObject { + Q_OBJECT +public: + // TODO: Refactor this to add an EncryptingState (and remove pendingEncrypt). + // Also add an Unconnected state so IdleState does not have double meaning. + enum ChannelState { + IdleState = 0, // ready to send request + ConnectingState = 1, // connecting to host + WritingState = 2, // writing the data + WaitingState = 4, // waiting for reply + ReadingState = 8, // reading the reply + ClosingState = 16, + BusyState = (ConnectingState|WritingState|WaitingState|ReadingState|ClosingState) + }; + QAbstractSocket *socket; + bool ssl; + bool isInitialized; + ChannelState state; + QHttpNetworkRequest request; // current request, only used for HTTP + QHttpNetworkReply *reply; // current reply for this request, only used for HTTP + qint64 written; + qint64 bytesTotal; + bool resendCurrent; + int lastStatus; // last status received on this channel + bool pendingEncrypt; // for https (send after encrypted) + int reconnectAttempts; // maximum 2 reconnection attempts + QAuthenticatorPrivate::Method authMethod; + QAuthenticatorPrivate::Method proxyAuthMethod; + QAuthenticator authenticator; + QAuthenticator proxyAuthenticator; + bool authenticationCredentialsSent; + bool proxyCredentialsSent; + QScopedPointer<QAbstractProtocolHandler> protocolHandler; + // SPDY or HTTP/2 requests; SPDY is TLS-only, but + // HTTP/2 can be cleartext also, that's why it's + // outside of QT_NO_SSL section. Sorted by priority: + QMultiMap<int, HttpMessagePair> spdyRequestsToSend; +#ifndef QT_NO_SSL + bool ignoreAllSslErrors; + QList<QSslError> ignoreSslErrorsList; + QSslConfiguration sslConfiguration; + void ignoreSslErrors(); + void ignoreSslErrors(const QList<QSslError> &errors); + void setSslConfiguration(const QSslConfiguration &config); + void requeueSpdyRequests(); // when we wanted SPDY but got HTTP +#endif + // to emit the signal for all in-flight replies: + void emitFinishedWithError(QNetworkReply::NetworkError error, const char *message); +#ifndef QT_NO_BEARERMANAGEMENT + QSharedPointer<QNetworkSession> networkSession; +#endif + + // HTTP pipelining -> http://en.wikipedia.org/wiki/Http_pipelining + enum PipeliningSupport { + PipeliningSupportUnknown, // default for a new connection + PipeliningProbablySupported, // after having received a server response that indicates support + PipeliningNotSupported // currently not used + }; + PipeliningSupport pipeliningSupported; + QList<HttpMessagePair> alreadyPipelinedRequests; + QByteArray pipeline; // temporary buffer that gets sent to socket in pipelineFlush + void pipelineInto(HttpMessagePair &pair); + void pipelineFlush(); + void requeueCurrentlyPipelinedRequests(); + void detectPipeliningSupport(); + + QHttpNetworkConnectionChannel(); + + QAbstractSocket::NetworkLayerProtocol networkLayerPreference; + + void setConnection(QHttpNetworkConnection *c); + QPointer<QHttpNetworkConnection> connection; + +#ifndef QT_NO_NETWORKPROXY + QNetworkProxy proxy; + void setProxy(const QNetworkProxy &networkProxy); +#endif + + void init(); + void close(); + void abort(); + + bool sendRequest(); + + bool ensureConnection(); + + void allDone(); // reply header + body have been read + void handleStatus(); // called from allDone() + + bool resetUploadData(); // return true if resetting worked or there is no upload data + + void handleUnexpectedEOF(); + void closeAndResendCurrentRequest(); + void resendCurrentRequest(); + + bool isSocketBusy() const; + bool isSocketWriting() const; + bool isSocketWaiting() const; + bool isSocketReading() const; + + protected slots: + void _q_receiveReply(); + void _q_bytesWritten(qint64 bytes); // proceed sending + void _q_readyRead(); // pending data to read + void _q_disconnected(); // disconnected from host + void _q_connected(); // start sending request + void _q_error(QAbstractSocket::SocketError); // error from socket +#ifndef QT_NO_NETWORKPROXY + void _q_proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth); // from transparent proxy +#endif + + void _q_uploadDataReadyRead(); + +#ifndef QT_NO_SSL + void _q_encrypted(); // start sending request (https) + void _q_sslErrors(const QList<QSslError> &errors); // ssl errors from the socket + void _q_preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator*); // tls-psk auth necessary + void _q_encryptedBytesWritten(qint64 bytes); // proceed sending +#endif + + friend class QHttpProtocolHandler; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_HTTP + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkheader_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkheader_p.h new file mode 100644 index 000000000..89169b933 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkheader_p.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTPNETWORKHEADER_H +#define QHTTPNETWORKHEADER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> + +#ifndef QT_NO_HTTP + +#include <qshareddata.h> +#include <qurl.h> + +QT_BEGIN_NAMESPACE + +class Q_AUTOTEST_EXPORT QHttpNetworkHeader +{ +public: + virtual ~QHttpNetworkHeader() {}; + virtual QUrl url() const = 0; + virtual void setUrl(const QUrl &url) = 0; + + virtual int majorVersion() const = 0; + virtual int minorVersion() const = 0; + + virtual qint64 contentLength() const = 0; + virtual void setContentLength(qint64 length) = 0; + + virtual QList<QPair<QByteArray, QByteArray> > header() const = 0; + virtual QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const = 0; + virtual void setHeaderField(const QByteArray &name, const QByteArray &data) = 0; +}; + +class QHttpNetworkHeaderPrivate : public QSharedData +{ +public: + QUrl url; + QList<QPair<QByteArray, QByteArray> > fields; + + QHttpNetworkHeaderPrivate(const QUrl &newUrl = QUrl()); + QHttpNetworkHeaderPrivate(const QHttpNetworkHeaderPrivate &other); + qint64 contentLength() const; + void setContentLength(qint64 length); + + QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const; + QList<QByteArray> headerFieldValues(const QByteArray &name) const; + void setHeaderField(const QByteArray &name, const QByteArray &data); + bool operator==(const QHttpNetworkHeaderPrivate &other) const; + +}; + + +QT_END_NAMESPACE + + +#endif // QT_NO_HTTP + + +#endif // QHTTPNETWORKHEADER_H + + + + + + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkreply_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkreply_p.h new file mode 100644 index 000000000..faab03f05 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkreply_p.h @@ -0,0 +1,291 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTPNETWORKREPLY_H +#define QHTTPNETWORKREPLY_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> + +#ifndef QT_NO_HTTP + +#include <qplatformdefs.h> + +#ifndef QT_NO_COMPRESS +struct z_stream_s; +#endif + +#include <QtNetwork/qtcpsocket.h> +// it's safe to include these even if SSL support is not enabled +#include <QtNetwork/qsslsocket.h> +#include <QtNetwork/qsslerror.h> + +#include <QtNetwork/qnetworkrequest.h> +#include <QtNetwork/qnetworkreply.h> +#include <qbuffer.h> + +#include <private/qobject_p.h> +#include <private/qhttpnetworkheader_p.h> +#include <private/qhttpnetworkrequest_p.h> +#include <private/qauthenticator_p.h> +#include <private/qringbuffer_p.h> +#include <private/qbytedata_p.h> + +QT_BEGIN_NAMESPACE + +class QHttpNetworkConnection; +class QHttpNetworkConnectionChannel; +class QHttpNetworkRequest; +class QHttpNetworkConnectionPrivate; +class QHttpNetworkReplyPrivate; +class Q_AUTOTEST_EXPORT QHttpNetworkReply : public QObject, public QHttpNetworkHeader +{ + Q_OBJECT +public: + + explicit QHttpNetworkReply(const QUrl &url = QUrl(), QObject *parent = 0); + virtual ~QHttpNetworkReply(); + + QUrl url() const Q_DECL_OVERRIDE; + void setUrl(const QUrl &url) Q_DECL_OVERRIDE; + + int majorVersion() const Q_DECL_OVERRIDE; + int minorVersion() const Q_DECL_OVERRIDE; + + qint64 contentLength() const Q_DECL_OVERRIDE; + void setContentLength(qint64 length) Q_DECL_OVERRIDE; + + QList<QPair<QByteArray, QByteArray> > header() const Q_DECL_OVERRIDE; + QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const Q_DECL_OVERRIDE; + void setHeaderField(const QByteArray &name, const QByteArray &data) Q_DECL_OVERRIDE; + void parseHeader(const QByteArray &header); // mainly for testing + + QHttpNetworkRequest request() const; + void setRequest(const QHttpNetworkRequest &request); + + int statusCode() const; + void setStatusCode(int code); + + QString errorString() const; + void setErrorString(const QString &error); + + QString reasonPhrase() const; + + qint64 bytesAvailable() const; + qint64 bytesAvailableNextBlock() const; + bool readAnyAvailable() const; + QByteArray readAny(); + QByteArray readAll(); + QByteArray read(qint64 amount); + qint64 sizeNextBlock(); + void setDownstreamLimited(bool t); + void setReadBufferSize(qint64 size); + + bool supportsUserProvidedDownloadBuffer(); + void setUserProvidedDownloadBuffer(char*); + char* userProvidedDownloadBuffer(); + + void abort(); + + bool isAborted() const; + bool isFinished() const; + + bool isPipeliningUsed() const; + bool isSpdyUsed() const; + void setSpdyWasUsed(bool spdy); + qint64 removedContentLength() const; + + bool isRedirecting() const; + + QHttpNetworkConnection* connection(); + + QUrl redirectUrl() const; + void setRedirectUrl(const QUrl &url); + + static bool isHttpRedirect(int statusCode); + +#ifndef QT_NO_SSL + QSslConfiguration sslConfiguration() const; + void setSslConfiguration(const QSslConfiguration &config); + void ignoreSslErrors(); + void ignoreSslErrors(const QList<QSslError> &errors); + +Q_SIGNALS: + void encrypted(); + void sslErrors(const QList<QSslError> &errors); + void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); +#endif + +Q_SIGNALS: + void readyRead(); + void finished(); + void finishedWithError(QNetworkReply::NetworkError errorCode, const QString &detail = QString()); + void headerChanged(); + void dataReadProgress(qint64 done, qint64 total); + void dataSendProgress(qint64 done, qint64 total); + void cacheCredentials(const QHttpNetworkRequest &request, QAuthenticator *authenticator); +#ifndef QT_NO_NETWORKPROXY + void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); +#endif + void authenticationRequired(const QHttpNetworkRequest &request, QAuthenticator *authenticator); + void redirected(const QUrl &url, int httpStatus, int maxRedirectsRemaining); +private: + Q_DECLARE_PRIVATE(QHttpNetworkReply) + friend class QHttpSocketEngine; + friend class QHttpNetworkConnection; + friend class QHttpNetworkConnectionPrivate; + friend class QHttpNetworkConnectionChannel; + friend class QHttp2ProtocolHandler; + friend class QHttpProtocolHandler; + friend class QSpdyProtocolHandler; +}; + + +class Q_AUTOTEST_EXPORT QHttpNetworkReplyPrivate : public QObjectPrivate, public QHttpNetworkHeaderPrivate +{ +public: + QHttpNetworkReplyPrivate(const QUrl &newUrl = QUrl()); + ~QHttpNetworkReplyPrivate(); + qint64 readStatus(QAbstractSocket *socket); + bool parseStatus(const QByteArray &status); + qint64 readHeader(QAbstractSocket *socket); + void parseHeader(const QByteArray &header); + qint64 readBody(QAbstractSocket *socket, QByteDataBuffer *out); + qint64 readBodyVeryFast(QAbstractSocket *socket, char *b); + qint64 readBodyFast(QAbstractSocket *socket, QByteDataBuffer *rb); + bool findChallenge(bool forProxy, QByteArray &challenge) const; + QAuthenticatorPrivate::Method authenticationMethod(bool isProxy) const; + void clear(); + void clearHttpLayerInformation(); + + qint64 readReplyBodyRaw(QAbstractSocket *in, QByteDataBuffer *out, qint64 size); + qint64 readReplyBodyChunked(QAbstractSocket *in, QByteDataBuffer *out); + qint64 getChunkSize(QAbstractSocket *in, qint64 *chunkSize); + + bool isRedirecting() const; + bool shouldEmitSignals(); + bool expectContent(); + void eraseData(); + + qint64 bytesAvailable() const; + bool isChunked(); + bool isConnectionCloseEnabled(); + + bool isCompressed(); + void removeAutoDecompressHeader(); + + enum ReplyState { + NothingDoneState, + ReadingStatusState, + ReadingHeaderState, + ReadingDataState, + AllDoneState, + SPDYSYNSent, + SPDYUploading, + SPDYHalfClosed, + SPDYClosed, + Aborted + } state; + + QHttpNetworkRequest request; + bool ssl; + int statusCode; + int majorVersion; + int minorVersion; + QString errorString; + QString reasonPhrase; + qint64 bodyLength; + qint64 contentRead; + qint64 totalProgress; + QByteArray fragment; // used for header, status, chunk header etc, not for reply data + bool chunkedTransferEncoding; + bool connectionCloseEnabled; + bool forceConnectionCloseEnabled; + bool lastChunkRead; + qint64 currentChunkSize; + qint64 currentChunkRead; + qint64 readBufferMaxSize; + qint32 windowSizeDownload; // only for SPDY + qint32 windowSizeUpload; // only for SPDY + qint32 currentlyReceivedDataInWindow; // only for SPDY + qint32 currentlyUploadedDataInWindow; // only for SPDY + qint64 totallyUploadedData; // only for SPDY + qint64 removedContentLength; + QPointer<QHttpNetworkConnection> connection; + QPointer<QHttpNetworkConnectionChannel> connectionChannel; + + bool autoDecompress; + + QByteDataBuffer responseData; // uncompressed body + QByteArray compressedData; // compressed body (temporary) + bool requestIsPrepared; + + bool pipeliningUsed; + bool spdyUsed; + bool downstreamLimited; + + char* userProvidedDownloadBuffer; + QUrl redirectUrl; + +#ifndef QT_NO_COMPRESS + z_stream_s *inflateStrm; + int initializeInflateStream(); + qint64 uncompressBodyData(QByteDataBuffer *in, QByteDataBuffer *out); +#endif +}; + + + + +QT_END_NAMESPACE + +#endif // QT_NO_HTTP + + +#endif // QHTTPNETWORKREPLY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkrequest_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkrequest_p.h new file mode 100644 index 000000000..ecf8856de --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpnetworkrequest_p.h @@ -0,0 +1,190 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTPNETWORKREQUEST_H +#define QHTTPNETWORKREQUEST_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +#include <QtNetwork/private/qtnetworkglobal_p.h> + +#ifndef QT_NO_HTTP + +#include <private/qhttpnetworkheader_p.h> +#include <QtNetwork/qnetworkrequest.h> +#include <qmetatype.h> + +QT_BEGIN_NAMESPACE + +class QNonContiguousByteDevice; + +class QHttpNetworkRequestPrivate; +class Q_AUTOTEST_EXPORT QHttpNetworkRequest: public QHttpNetworkHeader +{ +public: + enum Operation { + Options, + Get, + Head, + Post, + Put, + Delete, + Trace, + Connect, + Custom + }; + + enum Priority { + HighPriority, + NormalPriority, + LowPriority + }; + + explicit QHttpNetworkRequest(const QUrl &url = QUrl(), Operation operation = Get, Priority priority = NormalPriority); + QHttpNetworkRequest(const QHttpNetworkRequest &other); + virtual ~QHttpNetworkRequest(); + QHttpNetworkRequest &operator=(const QHttpNetworkRequest &other); + bool operator==(const QHttpNetworkRequest &other) const; + + QUrl url() const Q_DECL_OVERRIDE; + void setUrl(const QUrl &url) Q_DECL_OVERRIDE; + + int majorVersion() const Q_DECL_OVERRIDE; + int minorVersion() const Q_DECL_OVERRIDE; + + qint64 contentLength() const Q_DECL_OVERRIDE; + void setContentLength(qint64 length) Q_DECL_OVERRIDE; + + QList<QPair<QByteArray, QByteArray> > header() const Q_DECL_OVERRIDE; + QByteArray headerField(const QByteArray &name, const QByteArray &defaultValue = QByteArray()) const Q_DECL_OVERRIDE; + void setHeaderField(const QByteArray &name, const QByteArray &data) Q_DECL_OVERRIDE; + + Operation operation() const; + void setOperation(Operation operation); + + QByteArray customVerb() const; + void setCustomVerb(const QByteArray &customOperation); + + Priority priority() const; + void setPriority(Priority priority); + + bool isPipeliningAllowed() const; + void setPipeliningAllowed(bool b); + + bool isSPDYAllowed() const; + void setSPDYAllowed(bool b); + + bool isHTTP2Allowed() const; + void setHTTP2Allowed(bool b); + + bool withCredentials() const; + void setWithCredentials(bool b); + + bool isSsl() const; + void setSsl(bool); + + bool isPreConnect() const; + void setPreConnect(bool preConnect); + + bool isFollowRedirects() const; + void setRedirectPolicy(QNetworkRequest::RedirectPolicy policy); + QNetworkRequest::RedirectPolicy redirectPolicy() const; + + int redirectCount() const; + void setRedirectCount(int count); + + void setUploadByteDevice(QNonContiguousByteDevice *bd); + QNonContiguousByteDevice* uploadByteDevice() const; + + QByteArray methodName() const; + QByteArray uri(bool throughProxy) const; + +private: + QSharedDataPointer<QHttpNetworkRequestPrivate> d; + friend class QHttpNetworkRequestPrivate; + friend class QHttpNetworkConnectionPrivate; + friend class QHttpNetworkConnectionChannel; + friend class QHttpProtocolHandler; + friend class QHttp2ProtocolHandler; + friend class QSpdyProtocolHandler; +}; + +class QHttpNetworkRequestPrivate : public QHttpNetworkHeaderPrivate +{ +public: + QHttpNetworkRequestPrivate(QHttpNetworkRequest::Operation op, + QHttpNetworkRequest::Priority pri, const QUrl &newUrl = QUrl()); + QHttpNetworkRequestPrivate(const QHttpNetworkRequestPrivate &other); + ~QHttpNetworkRequestPrivate(); + bool operator==(const QHttpNetworkRequestPrivate &other) const; + + static QByteArray header(const QHttpNetworkRequest &request, bool throughProxy); + + QHttpNetworkRequest::Operation operation; + QByteArray customVerb; + QHttpNetworkRequest::Priority priority; + mutable QNonContiguousByteDevice* uploadByteDevice; + bool autoDecompress; + bool pipeliningAllowed; + bool spdyAllowed; + bool http2Allowed; + bool withCredentials; + bool ssl; + bool preConnect; + int redirectCount; + QNetworkRequest::RedirectPolicy redirectPolicy; +}; + + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QHttpNetworkRequest) + +#endif // QT_NO_HTTP + + +#endif // QHTTPNETWORKREQUEST_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpprotocolhandler_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpprotocolhandler_p.h new file mode 100644 index 000000000..863b988be --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpprotocolhandler_p.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTPPROTOCOLHANDLER_H +#define QHTTPPROTOCOLHANDLER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <private/qabstractprotocolhandler_p.h> + +#ifndef QT_NO_HTTP + +QT_BEGIN_NAMESPACE + +class QHttpProtocolHandler : public QAbstractProtocolHandler { +public: + QHttpProtocolHandler(QHttpNetworkConnectionChannel *channel); + +private: + virtual void _q_receiveReply() Q_DECL_OVERRIDE; + virtual void _q_readyRead() Q_DECL_OVERRIDE; + virtual bool sendRequest() Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_HTTP + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpsocketengine_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpsocketengine_p.h new file mode 100644 index 000000000..07815a7e5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpsocketengine_p.h @@ -0,0 +1,200 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTPSOCKETENGINE_P_H +#define QHTTPSOCKETENGINE_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "private/qabstractsocketengine_p.h" +#include "qabstractsocket.h" +#include "qnetworkproxy.h" +#include "private/qauthenticator_p.h" + +QT_BEGIN_NAMESPACE + +#if !defined(QT_NO_NETWORKPROXY) && !defined(QT_NO_HTTP) + +class QTcpSocket; +class QHttpNetworkReply; +class QHttpSocketEnginePrivate; + +class Q_AUTOTEST_EXPORT QHttpSocketEngine : public QAbstractSocketEngine +{ + Q_OBJECT +public: + enum HttpState { + None, + ConnectSent, + Connected, + SendAuthentication, + ReadResponseContent, + ReadResponseHeader + }; + QHttpSocketEngine(QObject *parent = 0); + ~QHttpSocketEngine(); + + bool initialize(QAbstractSocket::SocketType type, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::IPv4Protocol) Q_DECL_OVERRIDE; + bool initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = QAbstractSocket::ConnectedState) Q_DECL_OVERRIDE; + + void setProxy(const QNetworkProxy &networkProxy); + + qintptr socketDescriptor() const Q_DECL_OVERRIDE; + + bool isValid() const Q_DECL_OVERRIDE; + + bool connectInternal(); + bool connectToHost(const QHostAddress &address, quint16 port) Q_DECL_OVERRIDE; + bool connectToHostByName(const QString &name, quint16 port) Q_DECL_OVERRIDE; + bool bind(const QHostAddress &address, quint16 port) Q_DECL_OVERRIDE; + bool listen() Q_DECL_OVERRIDE; + int accept() Q_DECL_OVERRIDE; + void close() Q_DECL_OVERRIDE; + + qint64 bytesAvailable() const Q_DECL_OVERRIDE; + + qint64 read(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 write(const char *data, qint64 len) Q_DECL_OVERRIDE; + +#ifndef QT_NO_UDPSOCKET +#ifndef QT_NO_NETWORKINTERFACE + bool joinMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &interface) Q_DECL_OVERRIDE; + bool leaveMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &interface) Q_DECL_OVERRIDE; + QNetworkInterface multicastInterface() const Q_DECL_OVERRIDE; + bool setMulticastInterface(const QNetworkInterface &iface) Q_DECL_OVERRIDE; +#endif // QT_NO_NETWORKINTERFACE + + bool hasPendingDatagrams() const Q_DECL_OVERRIDE; + qint64 pendingDatagramSize() const Q_DECL_OVERRIDE; +#endif // QT_NO_UDPSOCKET + + qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader *, + PacketHeaderOptions) Q_DECL_OVERRIDE; + qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &) Q_DECL_OVERRIDE; + qint64 bytesToWrite() const Q_DECL_OVERRIDE; + + int option(SocketOption option) const Q_DECL_OVERRIDE; + bool setOption(SocketOption option, int value) Q_DECL_OVERRIDE; + + bool waitForRead(int msecs = 30000, bool *timedOut = 0) Q_DECL_OVERRIDE; + bool waitForWrite(int msecs = 30000, bool *timedOut = 0) Q_DECL_OVERRIDE; + bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite, + bool checkRead, bool checkWrite, + int msecs = 30000, bool *timedOut = 0) Q_DECL_OVERRIDE; + + bool isReadNotificationEnabled() const Q_DECL_OVERRIDE; + void setReadNotificationEnabled(bool enable) Q_DECL_OVERRIDE; + bool isWriteNotificationEnabled() const Q_DECL_OVERRIDE; + void setWriteNotificationEnabled(bool enable) Q_DECL_OVERRIDE; + bool isExceptionNotificationEnabled() const Q_DECL_OVERRIDE; + void setExceptionNotificationEnabled(bool enable) Q_DECL_OVERRIDE; + +public slots: + void slotSocketConnected(); + void slotSocketDisconnected(); + void slotSocketReadNotification(); + void slotSocketBytesWritten(); + void slotSocketError(QAbstractSocket::SocketError error); + void slotSocketStateChanged(QAbstractSocket::SocketState state); + +private slots: + void emitPendingReadNotification(); + void emitPendingWriteNotification(); + void emitPendingConnectionNotification(); + +private: + void emitReadNotification(); + void emitWriteNotification(); + void emitConnectionNotification(); + + bool readHttpHeader(); + + Q_DECLARE_PRIVATE(QHttpSocketEngine) + Q_DISABLE_COPY(QHttpSocketEngine) + +}; + + +class QHttpSocketEnginePrivate : public QAbstractSocketEnginePrivate +{ + Q_DECLARE_PUBLIC(QHttpSocketEngine) +public: + QHttpSocketEnginePrivate(); + ~QHttpSocketEnginePrivate(); + + QNetworkProxy proxy; + QString peerName; + QTcpSocket *socket; + QHttpNetworkReply *reply; // only used for parsing the proxy response + QHttpSocketEngine::HttpState state; + QAuthenticator authenticator; + bool readNotificationEnabled; + bool writeNotificationEnabled; + bool exceptNotificationEnabled; + bool readNotificationPending; + bool writeNotificationPending; + bool connectionNotificationPending; + bool credentialsSent; + uint pendingResponseData; +}; + +class Q_AUTOTEST_EXPORT QHttpSocketEngineHandler : public QSocketEngineHandler +{ +public: + virtual QAbstractSocketEngine *createSocketEngine(QAbstractSocket::SocketType socketType, + const QNetworkProxy &, QObject *parent) Q_DECL_OVERRIDE; + virtual QAbstractSocketEngine *createSocketEngine(qintptr socketDescripter, QObject *parent) Q_DECL_OVERRIDE; +}; +#endif + +QT_END_NAMESPACE + +#endif // QHTTPSOCKETENGINE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpthreaddelegate_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpthreaddelegate_p.h new file mode 100644 index 000000000..6d1ea11f2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qhttpthreaddelegate_p.h @@ -0,0 +1,330 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTPTHREADDELEGATE_H +#define QHTTPTHREADDELEGATE_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QObject> +#include <QThreadStorage> +#include <QNetworkProxy> +#include <QSslConfiguration> +#include <QSslError> +#include <QList> +#include <QNetworkReply> +#include "qhttpnetworkrequest_p.h" +#include "qhttpnetworkconnection_p.h" +#include <QSharedPointer> +#include "qsslconfiguration.h" +#include "private/qnoncontiguousbytedevice_p.h" +#include "qnetworkaccessauthenticationmanager_p.h" + +#ifndef QT_NO_HTTP + +QT_BEGIN_NAMESPACE + +class QAuthenticator; +class QHttpNetworkReply; +class QEventLoop; +class QNetworkAccessCache; +class QNetworkAccessCachedHttpConnection; + +class QHttpThreadDelegate : public QObject +{ + Q_OBJECT +public: + explicit QHttpThreadDelegate(QObject *parent = 0); + + ~QHttpThreadDelegate(); + + // incoming + bool ssl; +#ifndef QT_NO_SSL + QSslConfiguration incomingSslConfiguration; +#endif + QHttpNetworkRequest httpRequest; + qint64 downloadBufferMaximumSize; + qint64 readBufferMaxSize; + qint64 bytesEmitted; + // From backend, modified by us for signal compression + QSharedPointer<QAtomicInt> pendingDownloadData; + QSharedPointer<QAtomicInt> pendingDownloadProgress; +#ifndef QT_NO_NETWORKPROXY + QNetworkProxy cacheProxy; + QNetworkProxy transparentProxy; +#endif + QSharedPointer<QNetworkAccessAuthenticationManager> authenticationManager; + bool synchronous; + + // outgoing, Retrieved in the synchronous HTTP case + QByteArray synchronousDownloadData; + QList<QPair<QByteArray,QByteArray> > incomingHeaders; + int incomingStatusCode; + QString incomingReasonPhrase; + bool isPipeliningUsed; + bool isSpdyUsed; + qint64 incomingContentLength; + qint64 removedContentLength; + QNetworkReply::NetworkError incomingErrorCode; + QString incomingErrorDetail; +#ifndef QT_NO_BEARERMANAGEMENT + QSharedPointer<QNetworkSession> networkSession; +#endif + +protected: + // The zerocopy download buffer, if used: + QSharedPointer<char> downloadBuffer; + // The QHttpNetworkConnection that is used + QNetworkAccessCachedHttpConnection *httpConnection; + QByteArray cacheKey; + QHttpNetworkReply *httpReply; + + // Used for implementing the synchronous HTTP, see startRequestSynchronously() + QEventLoop *synchronousRequestLoop; + +signals: + void authenticationRequired(const QHttpNetworkRequest &request, QAuthenticator *); +#ifndef QT_NO_NETWORKPROXY + void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *); +#endif +#ifndef QT_NO_SSL + void encrypted(); + void sslErrors(const QList<QSslError> &, bool *, QList<QSslError> *); + void sslConfigurationChanged(const QSslConfiguration &); + void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *); +#endif + void downloadMetaData(const QList<QPair<QByteArray,QByteArray> > &, int, const QString &, bool, + QSharedPointer<char>, qint64, qint64, bool); + void downloadProgress(qint64, qint64); + void downloadData(const QByteArray &); + void error(QNetworkReply::NetworkError, const QString &); + void downloadFinished(); + void redirected(const QUrl &url, int httpStatus, int maxRedirectsRemainig); + +public slots: + // This are called via QueuedConnection from user thread + void startRequest(); + void abortRequest(); + void readBufferSizeChanged(qint64 size); + void readBufferFreed(qint64 size); + + // This is called with a BlockingQueuedConnection from user thread + void startRequestSynchronously(); +protected slots: + // From QHttp* + void readyReadSlot(); + void finishedSlot(); + void finishedWithErrorSlot(QNetworkReply::NetworkError errorCode, const QString &detail = QString()); + void synchronousFinishedSlot(); + void synchronousFinishedWithErrorSlot(QNetworkReply::NetworkError errorCode, const QString &detail = QString()); + void headerChangedSlot(); + void synchronousHeaderChangedSlot(); + 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); + void preSharedKeyAuthenticationRequiredSlot(QSslPreSharedKeyAuthenticator *authenticator); +#endif + + void synchronousAuthenticationRequiredSlot(const QHttpNetworkRequest &request, QAuthenticator *); +#ifndef QT_NO_NETWORKPROXY + void synchronousProxyAuthenticationRequiredSlot(const QNetworkProxy &, QAuthenticator *); +#endif + +protected: + // Cache for all the QHttpNetworkConnection objects. + // This is per thread. + static QThreadStorage<QNetworkAccessCache *> connections; + +}; + +// This QNonContiguousByteDevice is connected to the QNetworkAccessHttpBackend +// and represents the PUT/POST data. +class QNonContiguousByteDeviceThreadForwardImpl : public QNonContiguousByteDevice +{ + Q_OBJECT +protected: + bool wantDataPending; + qint64 m_amount; + char *m_data; + QByteArray m_dataArray; + bool m_atEnd; + qint64 m_size; + qint64 m_pos; // to match calls of haveDataSlot with the expected position +public: + QNonContiguousByteDeviceThreadForwardImpl(bool aE, qint64 s) + : QNonContiguousByteDevice(), + wantDataPending(false), + m_amount(0), + m_data(0), + m_atEnd(aE), + m_size(s), + m_pos(0) + { + } + + ~QNonContiguousByteDeviceThreadForwardImpl() + { + } + + qint64 pos() const Q_DECL_OVERRIDE + { + return m_pos; + } + + const char* readPointer(qint64 maximumLength, qint64 &len) Q_DECL_OVERRIDE + { + if (m_amount > 0) { + len = m_amount; + return m_data; + } + + if (m_atEnd) { + len = -1; + } else if (!wantDataPending) { + len = 0; + wantDataPending = true; + emit wantData(maximumLength); + } else { + // Do nothing, we already sent a wantData signal and wait for results + len = 0; + } + return 0; + } + + bool advanceReadPointer(qint64 a) Q_DECL_OVERRIDE + { + if (m_data == 0) + return false; + + m_amount -= a; + m_data += a; + m_pos += a; + + // To main thread to inform about our state. The m_pos will be sent as a sanity check. + emit processedData(m_pos, a); + + return true; + } + + bool atEnd() const Q_DECL_OVERRIDE + { + if (m_amount > 0) + return false; + else + return m_atEnd; + } + + bool reset() Q_DECL_OVERRIDE + { + m_amount = 0; + m_data = 0; + m_dataArray.clear(); + + if (wantDataPending) { + // had requested the user thread to send some data (only 1 in-flight at any moment) + wantDataPending = false; + } + + // Communicate as BlockingQueuedConnection + bool b = false; + emit resetData(&b); + if (b) { + // the reset succeeded, we're at pos 0 again + m_pos = 0; + // the HTTP code will anyway abort the request if !b. + } + return b; + } + + qint64 size() const Q_DECL_OVERRIDE + { + return m_size; + } + +public slots: + // From user thread: + void haveDataSlot(qint64 pos, const QByteArray &dataArray, bool dataAtEnd, qint64 dataSize) + { + if (pos != m_pos) { + // Sometimes when re-sending a request in the qhttpnetwork* layer there is a pending haveData from the + // user thread on the way to us. We need to ignore it since it is the data for the wrong(later) chunk. + return; + } + wantDataPending = false; + + m_dataArray = dataArray; + m_data = const_cast<char*>(m_dataArray.constData()); + m_amount = dataArray.size(); + + m_atEnd = dataAtEnd; + m_size = dataSize; + + // This will tell the HTTP code (QHttpNetworkConnectionChannel) that we have data available now + emit readyRead(); + } + +signals: + // void readyRead(); in parent class + // void readProgress(qint64 current, qint64 total); happens in the main thread with the real bytedevice + + // to main thread: + void wantData(qint64); + void processedData(qint64 pos, qint64 amount); + void resetData(bool *b); +}; + +QT_END_NAMESPACE + +#endif // QT_NO_HTTP + +#endif // QHTTPTHREADDELEGATE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qlocalserver_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qlocalserver_p.h new file mode 100644 index 000000000..2c073908c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qlocalserver_p.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCALSERVER_P_H +#define QLOCALSERVER_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 QLocalServer class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> + +#include "qlocalserver.h" +#include "private/qobject_p.h" +#include <qqueue.h> + +QT_REQUIRE_CONFIG(localserver); + +#if defined(QT_LOCALSOCKET_TCP) +# include <qtcpserver.h> +#elif defined(Q_OS_WIN) +# include <qt_windows.h> +# include <qwineventnotifier.h> +#else +# include <private/qabstractsocketengine_p.h> +# include <qsocketnotifier.h> +#endif + +QT_BEGIN_NAMESPACE + +class QLocalServerPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QLocalServer) + +public: + QLocalServerPrivate() : +#if !defined(QT_LOCALSOCKET_TCP) && !defined(Q_OS_WIN) + listenSocket(-1), socketNotifier(0), +#endif + maxPendingConnections(30), error(QAbstractSocket::UnknownSocketError), + socketOptions(QLocalServer::NoOptions) + { + } + + void init(); + bool listen(const QString &name); + bool listen(qintptr socketDescriptor); + static bool removeServer(const QString &name); + void closeServer(); + void waitForNewConnection(int msec, bool *timedOut); + void _q_onNewConnection(); + +#if defined(QT_LOCALSOCKET_TCP) + + QTcpServer tcpServer; + QMap<quintptr, QTcpSocket*> socketMap; +#elif defined(Q_OS_WIN) + struct Listener { + HANDLE handle; + OVERLAPPED overlapped; + bool connected; + }; + + void setError(const QString &function); + bool addListener(); + + QList<Listener> listeners; + HANDLE eventHandle; + QWinEventNotifier *connectionEventNotifier; +#else + void setError(const QString &function); + + int listenSocket; + QSocketNotifier *socketNotifier; +#endif + + QString serverName; + QString fullServerName; + int maxPendingConnections; + QQueue<QLocalSocket*> pendingConnections; + QString errorString; + QAbstractSocket::SocketError error; + QLocalServer::SocketOptions socketOptions; +}; + +QT_END_NAMESPACE + +#endif // QLOCALSERVER_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qlocalsocket_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qlocalsocket_p.h new file mode 100644 index 000000000..eb59af557 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qlocalsocket_p.h @@ -0,0 +1,165 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCALSOCKET_P_H +#define QLOCALSOCKET_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 QLocalSocket class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> + +#include "qlocalsocket.h" +#include "private/qiodevice_p.h" + +#include <qtimer.h> + +QT_REQUIRE_CONFIG(localserver); + +#if defined(QT_LOCALSOCKET_TCP) +# include "qtcpsocket.h" +#elif defined(Q_OS_WIN) +# include "private/qwindowspipereader_p.h" +# include "private/qwindowspipewriter_p.h" +# include <qwineventnotifier.h> +#else +# include "private/qabstractsocketengine_p.h" +# include <qtcpsocket.h> +# include <qsocketnotifier.h> +# include <errno.h> +#endif + +QT_BEGIN_NAMESPACE + +#if !defined(Q_OS_WIN) || defined(QT_LOCALSOCKET_TCP) +class QLocalUnixSocket : public QTcpSocket +{ + +public: + QLocalUnixSocket() : QTcpSocket() + { + }; + + inline void setSocketState(QAbstractSocket::SocketState state) + { + QTcpSocket::setSocketState(state); + }; + + inline void setErrorString(const QString &string) + { + QTcpSocket::setErrorString(string); + } + + inline void setSocketError(QAbstractSocket::SocketError error) + { + QTcpSocket::setSocketError(error); + } + + inline qint64 readData(char *data, qint64 maxSize) override + { + return QTcpSocket::readData(data, maxSize); + } + + inline qint64 writeData(const char *data, qint64 maxSize) override + { + return QTcpSocket::writeData(data, maxSize); + } +}; +#endif //#if !defined(Q_OS_WIN) || defined(QT_LOCALSOCKET_TCP) + +class QLocalSocketPrivate : public QIODevicePrivate +{ + Q_DECLARE_PUBLIC(QLocalSocket) + +public: + QLocalSocketPrivate(); + void init(); + +#if defined(QT_LOCALSOCKET_TCP) + QLocalUnixSocket* tcpSocket; + bool ownsTcpSocket; + void setSocket(QLocalUnixSocket*); + QString generateErrorString(QLocalSocket::LocalSocketError, const QString &function) const; + void errorOccurred(QLocalSocket::LocalSocketError, const QString &function); + void _q_stateChanged(QAbstractSocket::SocketState newState); + void _q_error(QAbstractSocket::SocketError newError); +#elif defined(Q_OS_WIN) + ~QLocalSocketPrivate(); + void destroyPipeHandles(); + void setErrorString(const QString &function); + void _q_canWrite(); + void _q_pipeClosed(); + void _q_winError(ulong windowsError, const QString &function); + HANDLE handle; + QWindowsPipeWriter *pipeWriter; + QWindowsPipeReader *pipeReader; + QLocalSocket::LocalSocketError error; +#else + QLocalUnixSocket unixSocket; + QString generateErrorString(QLocalSocket::LocalSocketError, const QString &function) const; + void errorOccurred(QLocalSocket::LocalSocketError, const QString &function); + void _q_stateChanged(QAbstractSocket::SocketState newState); + void _q_error(QAbstractSocket::SocketError newError); + void _q_connectToSocket(); + void _q_abortConnectionAttempt(); + void cancelDelayedConnect(); + QSocketNotifier *delayConnect; + QTimer *connectTimer; + int connectingSocket; + QString connectingName; + QIODevice::OpenMode connectingOpenMode; +#endif + + QString serverName; + QString fullServerName; + QLocalSocket::LocalSocketState state; +}; + +QT_END_NAMESPACE + +#endif // QLOCALSOCKET_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnativesocketengine_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnativesocketengine_p.h new file mode 100644 index 000000000..08e72072e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnativesocketengine_p.h @@ -0,0 +1,328 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNATIVESOCKETENGINE_P_H +#define QNATIVESOCKETENGINE_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "QtNetwork/qhostaddress.h" +#include "QtNetwork/qnetworkinterface.h" +#include "private/qabstractsocketengine_p.h" +#ifndef Q_OS_WIN +# include "qplatformdefs.h" +# include <netinet/in.h> +#else +# include <winsock2.h> +# include <ws2tcpip.h> +# include <mswsock.h> +#endif + +QT_BEGIN_NAMESPACE + +#ifdef Q_OS_WIN +# define QT_SOCKLEN_T int +# define QT_SOCKOPTLEN_T int + +// The following definitions are copied from the MinGW header mswsock.h which +// was placed in the public domain. The WSASendMsg and WSARecvMsg functions +// were introduced with Windows Vista, so some Win32 headers are lacking them. +// There are no known versions of Windows CE or Embedded that contain them. +# ifndef WSAID_WSARECVMSG +typedef INT (WINAPI *LPFN_WSARECVMSG)(SOCKET s, LPWSAMSG lpMsg, + LPDWORD lpdwNumberOfBytesRecvd, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); +# define WSAID_WSARECVMSG {0xf689d7c8,0x6f1f,0x436b,{0x8a,0x53,0xe5,0x4f,0xe3,0x51,0xc3,0x22}} +# endif // !WSAID_WSARECVMSG +# ifndef WSAID_WSASENDMSG +typedef struct { + LPWSAMSG lpMsg; + DWORD dwFlags; + LPDWORD lpNumberOfBytesSent; + LPWSAOVERLAPPED lpOverlapped; + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine; +} WSASENDMSG, *LPWSASENDMSG; + +typedef INT (WSAAPI *LPFN_WSASENDMSG)(SOCKET s, LPWSAMSG lpMsg, DWORD dwFlags, + LPDWORD lpNumberOfBytesSent, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + +# define WSAID_WSASENDMSG {0xa441e712,0x754f,0x43ca,{0x84,0xa7,0x0d,0xee,0x44,0xcf,0x60,0x6d}} +# endif // !WSAID_WSASENDMSG +#endif // Q_OS_WIN + +union qt_sockaddr { + sockaddr a; + sockaddr_in a4; + sockaddr_in6 a6; +}; + +namespace { +namespace SetSALen { + template <typename T> void set(T *sa, typename std::enable_if<(&T::sa_len, true), QT_SOCKLEN_T>::type len) + { sa->sa_len = len; } + template <typename T> void set(T *sin6, typename std::enable_if<(&T::sin6_len, true), QT_SOCKLEN_T>::type len) + { sin6->sin6_len = len; } + template <typename T> void set(T *, ...) {} +} +} + +class QNativeSocketEnginePrivate; +#ifndef QT_NO_NETWORKINTERFACE +class QNetworkInterface; +#endif + +class Q_AUTOTEST_EXPORT QNativeSocketEngine : public QAbstractSocketEngine +{ + Q_OBJECT +public: + QNativeSocketEngine(QObject *parent = 0); + ~QNativeSocketEngine(); + + bool initialize(QAbstractSocket::SocketType type, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::IPv4Protocol) Q_DECL_OVERRIDE; + bool initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = QAbstractSocket::ConnectedState) Q_DECL_OVERRIDE; + + qintptr socketDescriptor() const Q_DECL_OVERRIDE; + + bool isValid() const Q_DECL_OVERRIDE; + + bool connectToHost(const QHostAddress &address, quint16 port) Q_DECL_OVERRIDE; + bool connectToHostByName(const QString &name, quint16 port) Q_DECL_OVERRIDE; + bool bind(const QHostAddress &address, quint16 port) Q_DECL_OVERRIDE; + bool listen() Q_DECL_OVERRIDE; + int accept() Q_DECL_OVERRIDE; + void close() Q_DECL_OVERRIDE; + + qint64 bytesAvailable() const Q_DECL_OVERRIDE; + + qint64 read(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 write(const char *data, qint64 len) Q_DECL_OVERRIDE; + +#ifndef QT_NO_UDPSOCKET +#ifndef QT_NO_NETWORKINTERFACE + bool joinMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &iface) Q_DECL_OVERRIDE; + bool leaveMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &iface) Q_DECL_OVERRIDE; + QNetworkInterface multicastInterface() const Q_DECL_OVERRIDE; + bool setMulticastInterface(const QNetworkInterface &iface) Q_DECL_OVERRIDE; +#endif + + bool hasPendingDatagrams() const Q_DECL_OVERRIDE; + qint64 pendingDatagramSize() const Q_DECL_OVERRIDE; +#endif // QT_NO_UDPSOCKET + + qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader * = 0, + PacketHeaderOptions = WantNone) Q_DECL_OVERRIDE; + qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &) Q_DECL_OVERRIDE; + qint64 bytesToWrite() const Q_DECL_OVERRIDE; + + qint64 receiveBufferSize() const; + void setReceiveBufferSize(qint64 bufferSize); + + qint64 sendBufferSize() const; + void setSendBufferSize(qint64 bufferSize); + + int option(SocketOption option) const Q_DECL_OVERRIDE; + bool setOption(SocketOption option, int value) Q_DECL_OVERRIDE; + + bool waitForRead(int msecs = 30000, bool *timedOut = 0) Q_DECL_OVERRIDE; + bool waitForWrite(int msecs = 30000, bool *timedOut = 0) Q_DECL_OVERRIDE; + bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite, + bool checkRead, bool checkWrite, + int msecs = 30000, bool *timedOut = 0) Q_DECL_OVERRIDE; + + bool isReadNotificationEnabled() const Q_DECL_OVERRIDE; + void setReadNotificationEnabled(bool enable) Q_DECL_OVERRIDE; + bool isWriteNotificationEnabled() const Q_DECL_OVERRIDE; + void setWriteNotificationEnabled(bool enable) Q_DECL_OVERRIDE; + bool isExceptionNotificationEnabled() const Q_DECL_OVERRIDE; + void setExceptionNotificationEnabled(bool enable) Q_DECL_OVERRIDE; + +public Q_SLOTS: + // non-virtual override; + void connectionNotification(); + +private: + Q_DECLARE_PRIVATE(QNativeSocketEngine) + Q_DISABLE_COPY(QNativeSocketEngine) +}; + +class QSocketNotifier; + +class QNativeSocketEnginePrivate : public QAbstractSocketEnginePrivate +{ + Q_DECLARE_PUBLIC(QNativeSocketEngine) +public: + QNativeSocketEnginePrivate(); + ~QNativeSocketEnginePrivate(); + + qintptr socketDescriptor; + + QSocketNotifier *readNotifier, *writeNotifier, *exceptNotifier; + +#if defined(Q_OS_WIN) + LPFN_WSASENDMSG sendmsg; + LPFN_WSARECVMSG recvmsg; +# endif + enum ErrorString { + NonBlockingInitFailedErrorString, + BroadcastingInitFailedErrorString, + NoIpV6ErrorString, + RemoteHostClosedErrorString, + TimeOutErrorString, + ResourceErrorString, + OperationUnsupportedErrorString, + ProtocolUnsupportedErrorString, + InvalidSocketErrorString, + HostUnreachableErrorString, + NetworkUnreachableErrorString, + AccessErrorString, + ConnectionTimeOutErrorString, + ConnectionRefusedErrorString, + AddressInuseErrorString, + AddressNotAvailableErrorString, + AddressProtectedErrorString, + DatagramTooLargeErrorString, + SendDatagramErrorString, + ReceiveDatagramErrorString, + WriteErrorString, + ReadErrorString, + PortInuseErrorString, + NotSocketErrorString, + InvalidProxyTypeString, + TemporaryErrorString, + NetworkDroppedConnectionErrorString, + ConnectionResetErrorString, + + UnknownSocketErrorString = -1 + }; + + void setError(QAbstractSocket::SocketError error, ErrorString errorString) const; + QHostAddress adjustAddressProtocol(const QHostAddress &address) const; + + // native functions + int option(QNativeSocketEngine::SocketOption option) const; + bool setOption(QNativeSocketEngine::SocketOption option, int value); + + bool createNewSocket(QAbstractSocket::SocketType type, QAbstractSocket::NetworkLayerProtocol &protocol); + + bool nativeConnect(const QHostAddress &address, quint16 port); + bool nativeBind(const QHostAddress &address, quint16 port); + bool nativeListen(int backlog); + int nativeAccept(); +#ifndef QT_NO_NETWORKINTERFACE + bool nativeJoinMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &iface); + bool nativeLeaveMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &iface); + QNetworkInterface nativeMulticastInterface() const; + bool nativeSetMulticastInterface(const QNetworkInterface &iface); +#endif + qint64 nativeBytesAvailable() const; + + bool nativeHasPendingDatagrams() const; + qint64 nativePendingDatagramSize() const; + qint64 nativeReceiveDatagram(char *data, qint64 maxLength, QIpPacketHeader *header, + QAbstractSocketEngine::PacketHeaderOptions options); + qint64 nativeSendDatagram(const char *data, qint64 length, const QIpPacketHeader &header); + qint64 nativeRead(char *data, qint64 maxLength); + qint64 nativeWrite(const char *data, qint64 length); + int nativeSelect(int timeout, bool selectForRead) const; + int nativeSelect(int timeout, bool checkRead, bool checkWrite, + bool *selectForRead, bool *selectForWrite) const; + + void nativeClose(); + + bool checkProxy(const QHostAddress &address); + bool fetchConnectionParameters(); + +#if QT_CONFIG(networkinterface) + static uint scopeIdFromString(const QString &scopeid) + { return QNetworkInterface::interfaceIndexFromName(scopeid); } +#endif + + /*! \internal + Sets \a address and \a port in the \a aa sockaddr structure and the size in \a sockAddrSize. + The address \a is converted to IPv6 if the current socket protocol is also IPv6. + */ + void setPortAndAddress(quint16 port, const QHostAddress &address, qt_sockaddr *aa, QT_SOCKLEN_T *sockAddrSize) + { + if (address.protocol() == QAbstractSocket::IPv6Protocol + || address.protocol() == QAbstractSocket::AnyIPProtocol + || socketProtocol == QAbstractSocket::IPv6Protocol + || socketProtocol == QAbstractSocket::AnyIPProtocol) { + memset(&aa->a6, 0, sizeof(sockaddr_in6)); + aa->a6.sin6_family = AF_INET6; +#if QT_CONFIG(networkinterface) + aa->a6.sin6_scope_id = scopeIdFromString(address.scopeId()); +#endif + aa->a6.sin6_port = htons(port); + Q_IPV6ADDR tmp = address.toIPv6Address(); + memcpy(&aa->a6.sin6_addr, &tmp, sizeof(tmp)); + *sockAddrSize = sizeof(sockaddr_in6); + SetSALen::set(&aa->a, sizeof(sockaddr_in6)); + } else { + memset(&aa->a, 0, sizeof(sockaddr_in)); + aa->a4.sin_family = AF_INET; + aa->a4.sin_port = htons(port); + aa->a4.sin_addr.s_addr = htonl(address.toIPv4Address()); + *sockAddrSize = sizeof(sockaddr_in); + SetSALen::set(&aa->a, sizeof(sockaddr_in)); + } + } + +}; + +QT_END_NAMESPACE + +#endif // QNATIVESOCKETENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnativesocketengine_winrt_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnativesocketengine_winrt_p.h new file mode 100644 index 000000000..13922cb39 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnativesocketengine_winrt_p.h @@ -0,0 +1,252 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNATIVESOCKETENGINE_WINRT_P_H +#define QNATIVESOCKETENGINE_WINRT_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 QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtCore/QEventLoop> +#include <QtCore/QBuffer> +#include <QtCore/QMutex> +#include <QtCore/QAtomicInteger> +#include "QtNetwork/qhostaddress.h" +#include "private/qabstractsocketengine_p.h" +#include <wrl.h> +#include <windows.networking.sockets.h> + +QT_BEGIN_NAMESPACE + +namespace WinRTSocketEngine { + enum ErrorString { + NonBlockingInitFailedErrorString, + BroadcastingInitFailedErrorString, + NoIpV6ErrorString, + RemoteHostClosedErrorString, + TimeOutErrorString, + ResourceErrorString, + OperationUnsupportedErrorString, + ProtocolUnsupportedErrorString, + InvalidSocketErrorString, + HostUnreachableErrorString, + NetworkUnreachableErrorString, + AccessErrorString, + ConnectionTimeOutErrorString, + ConnectionRefusedErrorString, + AddressInuseErrorString, + AddressNotAvailableErrorString, + AddressProtectedErrorString, + DatagramTooLargeErrorString, + SendDatagramErrorString, + ReceiveDatagramErrorString, + WriteErrorString, + ReadErrorString, + PortInuseErrorString, + NotSocketErrorString, + InvalidProxyTypeString, + TemporaryErrorString, + + UnknownSocketErrorString = -1 + }; +} + +class QNativeSocketEnginePrivate; +class SocketEngineWorker; + +struct WinRtDatagram { + QByteArray data; + QIpPacketHeader header; +}; + +class Q_AUTOTEST_EXPORT QNativeSocketEngine : public QAbstractSocketEngine +{ + Q_OBJECT +public: + QNativeSocketEngine(QObject *parent = 0); + ~QNativeSocketEngine(); + + bool initialize(QAbstractSocket::SocketType type, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::IPv4Protocol); + bool initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = QAbstractSocket::ConnectedState); + + qintptr socketDescriptor() const; + + bool isValid() const; + + bool connectToHost(const QHostAddress &address, quint16 port); + bool connectToHostByName(const QString &name, quint16 port); + bool bind(const QHostAddress &address, quint16 port); + bool listen(); + int accept(); + void close(); + +#ifndef QT_NO_NETWORKINTERFACE + bool joinMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &iface); + bool leaveMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &iface); + QNetworkInterface multicastInterface() const; + bool setMulticastInterface(const QNetworkInterface &iface); +#endif + + qint64 bytesAvailable() const; + + qint64 read(char *data, qint64 maxlen); + qint64 write(const char *data, qint64 len); + + qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader * = 0, PacketHeaderOptions = WantNone); + qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &header); + bool hasPendingDatagrams() const; + qint64 pendingDatagramSize() const; + + qint64 bytesToWrite() const; + + qint64 receiveBufferSize() const; + void setReceiveBufferSize(qint64 bufferSize); + + qint64 sendBufferSize() const; + void setSendBufferSize(qint64 bufferSize); + + int option(SocketOption option) const; + bool setOption(SocketOption option, int value); + + bool waitForRead(int msecs = 30000, bool *timedOut = 0); + bool waitForWrite(int msecs = 30000, bool *timedOut = 0); + bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite, + bool checkRead, bool checkWrite, + int msecs = 30000, bool *timedOut = 0); + + bool isReadNotificationEnabled() const; + void setReadNotificationEnabled(bool enable); + bool isWriteNotificationEnabled() const; + void setWriteNotificationEnabled(bool enable); + bool isExceptionNotificationEnabled() const; + void setExceptionNotificationEnabled(bool enable); + +signals: + void connectionReady(); + void readReady(); + void writeReady(); + void newDatagramReceived(const WinRtDatagram &datagram); + +private slots: + void establishRead(); + void handleConnectOpFinished(bool success, QAbstractSocket::SocketError error, + WinRTSocketEngine::ErrorString errorString); + void handleNewDatagrams(const QList<WinRtDatagram> &datagram); + void handleNewData(const QVector<QByteArray> &data); + void handleTcpError(QAbstractSocket::SocketError error); + +private: + Q_DECLARE_PRIVATE(QNativeSocketEngine) + Q_DISABLE_COPY(QNativeSocketEngine) +}; + +class QNativeSocketEnginePrivate : public QAbstractSocketEnginePrivate +{ + Q_DECLARE_PUBLIC(QNativeSocketEngine) +public: + QNativeSocketEnginePrivate(); + ~QNativeSocketEnginePrivate(); + + qintptr socketDescriptor; + SocketEngineWorker *worker; + + bool notifyOnRead, notifyOnWrite, notifyOnException; + QAtomicInt closingDown; + + void setError(QAbstractSocket::SocketError error, WinRTSocketEngine::ErrorString errorString) const; + + // native functions + int option(QNativeSocketEngine::SocketOption option) const; + bool setOption(QNativeSocketEngine::SocketOption option, int value); + + bool createNewSocket(QAbstractSocket::SocketType type, QAbstractSocket::NetworkLayerProtocol &protocol); + + bool checkProxy(const QHostAddress &address); + bool fetchConnectionParameters(); + +private: + inline ABI::Windows::Networking::Sockets::IStreamSocket *tcpSocket() const + { return reinterpret_cast<ABI::Windows::Networking::Sockets::IStreamSocket *>(socketDescriptor); } + inline ABI::Windows::Networking::Sockets::IDatagramSocket *udpSocket() const + { return reinterpret_cast<ABI::Windows::Networking::Sockets::IDatagramSocket *>(socketDescriptor); } + Microsoft::WRL::ComPtr<ABI::Windows::Networking::Sockets::IStreamSocketListener> tcpListener; + + // In case of TCP readMutex protects readBytes and bytesAvailable. In case of UDP it is + // pendingDatagrams. They are written inside native callbacks (handleReadyRead and + // handleNewDatagrams/putIntoPendingDatagramsList) + mutable QMutex readMutex; + + // Protected by readMutex. Written in handleReadyRead (native callback) + QAtomicInteger<int> bytesAvailable; + + // Protected by readMutex. Written in handleNewData/putIntoPendingData (native callback) + QVector<QByteArray> pendingData; + + // Protected by readMutex. Written in handleNewDatagrams/putIntoPendingDatagramsList + QList<WinRtDatagram> pendingDatagrams; + + QList<ABI::Windows::Networking::Sockets::IStreamSocket *> pendingConnections; + QList<ABI::Windows::Networking::Sockets::IStreamSocket *> currentConnections; + QEventLoop eventLoop; + QAbstractSocket *sslSocket; + EventRegistrationToken connectionToken; + + HRESULT handleNewDatagram(ABI::Windows::Networking::Sockets::IDatagramSocket *socket, + ABI::Windows::Networking::Sockets::IDatagramSocketMessageReceivedEventArgs *args); + HRESULT handleClientConnection(ABI::Windows::Networking::Sockets::IStreamSocketListener *tcpListener, + ABI::Windows::Networking::Sockets::IStreamSocketListenerConnectionReceivedEventArgs *args); +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(WinRtDatagram) +Q_DECLARE_METATYPE(WinRTSocketEngine::ErrorString) + +#endif // QNATIVESOCKETENGINE_WINRT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnet_unix_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnet_unix_p.h new file mode 100644 index 000000000..73d7ec2e7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnet_unix_p.h @@ -0,0 +1,210 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNET_UNIX_P_H +#define QNET_UNIX_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt code on Unix. This header file may change from version to +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "private/qcore_unix_p.h" + +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> + +#if defined(Q_OS_VXWORKS) +# include <sockLib.h> +#endif + +// for inet_addr +#include <netdb.h> +#include <arpa/inet.h> +#if defined(Q_OS_VXWORKS) +# include <hostLib.h> +#else +# include <resolv.h> +#endif + +QT_BEGIN_NAMESPACE + +// Almost always the same. If not, specify in qplatformdefs.h. +#if !defined(QT_SOCKOPTLEN_T) +# define QT_SOCKOPTLEN_T QT_SOCKLEN_T +#endif + +// UnixWare 7 redefines socket -> _socket +static inline int qt_safe_socket(int domain, int type, int protocol, int flags = 0) +{ + Q_ASSERT((flags & ~O_NONBLOCK) == 0); + + int fd; +#ifdef QT_THREADSAFE_CLOEXEC + int newtype = type | SOCK_CLOEXEC; + if (flags & O_NONBLOCK) + newtype |= SOCK_NONBLOCK; + fd = ::socket(domain, newtype, protocol); + return fd; +#else + fd = ::socket(domain, type, protocol); + if (fd == -1) + return -1; + + ::fcntl(fd, F_SETFD, FD_CLOEXEC); + + // set non-block too? + if (flags & O_NONBLOCK) + ::fcntl(fd, F_SETFL, ::fcntl(fd, F_GETFL) | O_NONBLOCK); + + return fd; +#endif +} + +// Tru64 redefines accept -> _accept with _XOPEN_SOURCE_EXTENDED +static inline int qt_safe_accept(int s, struct sockaddr *addr, QT_SOCKLEN_T *addrlen, int flags = 0) +{ + Q_ASSERT((flags & ~O_NONBLOCK) == 0); + + int fd; +#ifdef QT_THREADSAFE_CLOEXEC + // use accept4 + int sockflags = SOCK_CLOEXEC; + if (flags & O_NONBLOCK) + sockflags |= SOCK_NONBLOCK; +# if defined(Q_OS_NETBSD) + fd = ::paccept(s, addr, static_cast<QT_SOCKLEN_T *>(addrlen), NULL, sockflags); +# else + fd = ::accept4(s, addr, static_cast<QT_SOCKLEN_T *>(addrlen), sockflags); +# endif + return fd; +#else + fd = ::accept(s, addr, static_cast<QT_SOCKLEN_T *>(addrlen)); + if (fd == -1) + return -1; + + ::fcntl(fd, F_SETFD, FD_CLOEXEC); + + // set non-block too? + if (flags & O_NONBLOCK) + ::fcntl(fd, F_SETFL, ::fcntl(fd, F_GETFL) | O_NONBLOCK); + + return fd; +#endif +} + +// UnixWare 7 redefines listen -> _listen +static inline int qt_safe_listen(int s, int backlog) +{ + return ::listen(s, backlog); +} + +static inline int qt_safe_connect(int sockfd, const struct sockaddr *addr, QT_SOCKLEN_T addrlen) +{ + int ret; + // Solaris e.g. expects a non-const 2nd parameter + EINTR_LOOP(ret, QT_SOCKET_CONNECT(sockfd, const_cast<struct sockaddr *>(addr), addrlen)); + return ret; +} +#undef QT_SOCKET_CONNECT +#define QT_SOCKET_CONNECT qt_safe_connect + +#if defined(socket) +# undef socket +#endif +#if defined(accept) +# undef accept +#endif +#if defined(listen) +# undef listen +#endif + +// VxWorks' headers specify 'int' instead of '...' for the 3rd ioctl() parameter. +template <typename T> +static inline int qt_safe_ioctl(int sockfd, unsigned long request, T arg) +{ +#ifdef Q_OS_VXWORKS + return ::ioctl(sockfd, request, (int) arg); +#else + return ::ioctl(sockfd, request, arg); +#endif +} + +// VxWorks' headers do not specify any const modifiers +static inline in_addr_t qt_safe_inet_addr(const char *cp) +{ +#ifdef Q_OS_VXWORKS + return ::inet_addr((char *) cp); +#else + return ::inet_addr(cp); +#endif +} + +static inline int qt_safe_sendmsg(int sockfd, const struct msghdr *msg, int flags) +{ +#ifdef MSG_NOSIGNAL + flags |= MSG_NOSIGNAL; +#else + qt_ignore_sigpipe(); +#endif + + int ret; + EINTR_LOOP(ret, ::sendmsg(sockfd, msg, flags)); + return ret; +} + +static inline int qt_safe_recvmsg(int sockfd, struct msghdr *msg, int flags) +{ + int ret; + + EINTR_LOOP(ret, ::recvmsg(sockfd, msg, flags)); + return ret; +} + +QT_END_NAMESPACE + +#endif // QNET_UNIX_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h new file mode 100644 index 000000000..548675728 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKACCESSAUTHENTICATIONMANAGER_P_H +#define QNETWORKACCESSAUTHENTICATIONMANAGER_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkaccessmanager.h" +#include "qnetworkaccesscache_p.h" +#include "qnetworkaccessbackend_p.h" +#include "QtNetwork/qnetworkproxy.h" +#include "QtCore/QMutex" + +QT_BEGIN_NAMESPACE + +class QAuthenticator; +class QAbstractNetworkCache; +class QNetworkAuthenticationCredential; +class QNetworkCookieJar; + +class QNetworkAuthenticationCredential +{ +public: + QString domain; + QString user; + QString password; + bool isNull() const { + return domain.isNull() && user.isNull() && password.isNull(); + } +}; +Q_DECLARE_TYPEINFO(QNetworkAuthenticationCredential, Q_MOVABLE_TYPE); +inline bool operator<(const QNetworkAuthenticationCredential &t1, const QString &t2) +{ return t1.domain < t2; } +inline bool operator<(const QString &t1, const QNetworkAuthenticationCredential &t2) +{ return t1 < t2.domain; } +inline bool operator<(const QNetworkAuthenticationCredential &t1, const QNetworkAuthenticationCredential &t2) +{ return t1.domain < t2.domain; } + +class QNetworkAccessAuthenticationManager +{ +public: + QNetworkAccessAuthenticationManager() { }; + + void cacheCredentials(const QUrl &url, const QAuthenticator *auth); + QNetworkAuthenticationCredential fetchCachedCredentials(const QUrl &url, + const QAuthenticator *auth = 0); + +#ifndef QT_NO_NETWORKPROXY + void cacheProxyCredentials(const QNetworkProxy &proxy, const QAuthenticator *auth); + QNetworkAuthenticationCredential fetchCachedProxyCredentials(const QNetworkProxy &proxy, + const QAuthenticator *auth = 0); +#endif + + void clearCache(); + +protected: + QNetworkAccessCache authenticationCache; + QMutex mutex; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessbackend_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessbackend_p.h new file mode 100644 index 000000000..4b5422ce2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessbackend_p.h @@ -0,0 +1,229 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKACCESSBACKEND_P_H +#define QNETWORKACCESSBACKEND_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkreplyimpl_p.h" +#include "QtCore/qobject.h" + +QT_BEGIN_NAMESPACE + +class QAuthenticator; +class QNetworkProxy; +class QNetworkProxyQuery; +class QNetworkRequest; +class QStringList; +class QUrl; +class QSslConfiguration; + +class QNetworkAccessManagerPrivate; +class QNetworkReplyImplPrivate; +class QAbstractNetworkCache; +class QNetworkCacheMetaData; +class QNonContiguousByteDevice; + +// Should support direct file upload from disk or download to disk. +// +// - The HTTP handler will use two QIODevices for communication (pull mechanism) +// - KIO uses a pull mechanism too (data/dataReq signals) +class QNetworkAccessBackend : public QObject +{ + Q_OBJECT +public: + QNetworkAccessBackend(); + virtual ~QNetworkAccessBackend(); + + // To avoid mistaking with QIODevice names, the functions here + // have different names. The Connection has two streams: + // + // - Upstream: + // The upstream uses a QNonContiguousByteDevice provided + // by the backend. This device emits the usual readyRead() + // signal when the backend has data available for the connection + // to write. The different backends can listen on this signal + // and then pull upload data from the QNonContiguousByteDevice and + // deal with it. + // + // + // - Downstream: + // Downstream is the data that is being read from this + // connection and is given to the user. Downstream operates in a + // semi-"push" mechanism: the Connection object pushes the data + // it gets from the network, but it should avoid writing too + // much if the data isn't being used fast enough. The value + // returned by suggestedDownstreamBlockSize() can be used to + // determine how much should be written at a time. The + // downstreamBytesConsumed() function will be called when the + // downstream buffer is consumed by the user -- the Connection + // may choose to re-fill it with more data it has ready or get + // more data from the network (for instance, by reading from its + // socket). + + virtual void open() = 0; + virtual bool start(); + virtual void closeDownstreamChannel() = 0; + + // slot-like: + virtual void downstreamReadyWrite(); + virtual void setDownstreamLimited(bool b); + virtual void copyFinished(QIODevice *); + virtual void ignoreSslErrors(); + virtual void ignoreSslErrors(const QList<QSslError> &errors); + + virtual void fetchSslConfiguration(QSslConfiguration &configuration) const; + virtual void setSslConfiguration(const QSslConfiguration &configuration); + + virtual QNetworkCacheMetaData fetchCacheMetaData(const QNetworkCacheMetaData &metaData) const; + + // information about the request + QNetworkAccessManager::Operation operation() const; + QNetworkRequest request() const; +#ifndef QT_NO_NETWORKPROXY + QList<QNetworkProxy> proxyList() const; +#endif + + QAbstractNetworkCache *networkCache() const; + void setCachingEnabled(bool enable); + bool isCachingEnabled() const; + + // information about the reply + QUrl url() const; + void setUrl(const QUrl &url); + + // "cooked" headers + QVariant header(QNetworkRequest::KnownHeaders header) const; + void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); + + // raw headers: + bool hasRawHeader(const QByteArray &headerName) const; + QList<QByteArray> rawHeaderList() const; + QByteArray rawHeader(const QByteArray &headerName) const; + void setRawHeader(const QByteArray &headerName, const QByteArray &value); + + // attributes: + QVariant attribute(QNetworkRequest::Attribute code) const; + void setAttribute(QNetworkRequest::Attribute code, const QVariant &value); + + bool isSynchronous() { return synchronous; } + void setSynchronous(bool sync) { synchronous = sync; } + + // return true if the QNonContiguousByteDevice of the upload + // data needs to support reset(). Currently needed for HTTP. + // This will possibly enable buffering of the upload data. + virtual bool needsResetableUploadData() { return false; } + + // Returns \c true if backend is able to resume downloads. + virtual bool canResume() const { return false; } + virtual void setResumeOffset(quint64 offset) { Q_UNUSED(offset); } + + virtual bool processRequestSynchronously() { return false; } + +protected: + // Create the device used for reading the upload data + QNonContiguousByteDevice* createUploadByteDevice(); + + // these functions control the downstream mechanism + // that is, data that has come via the connection and is going out the backend + qint64 nextDownstreamBlockSize() const; + void writeDownstreamData(QByteDataBuffer &list); + + // not actually appending data, it was already written to the user buffer + void writeDownstreamDataDownloadBuffer(qint64, qint64); + char* getDownloadBuffer(qint64); + + QSharedPointer<QNonContiguousByteDevice> uploadByteDevice; + +public slots: + // for task 251801, needs to be a slot to be called asynchronously + void writeDownstreamData(QIODevice *data); + +protected slots: + void finished(); + void error(QNetworkReply::NetworkError code, const QString &errorString); +#ifndef QT_NO_NETWORKPROXY + void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth); +#endif + 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); + +protected: + // FIXME In the long run we should get rid of our QNAM architecture + // and scrap this ReplyImpl/Backend distinction. + QNetworkAccessManagerPrivate *manager; + QNetworkReplyImplPrivate *reply; + +private: + friend class QNetworkAccessManager; + friend class QNetworkAccessManagerPrivate; + friend class QNetworkReplyImplPrivate; + + bool synchronous; +}; + +class QNetworkAccessBackendFactory +{ +public: + QNetworkAccessBackendFactory(); + virtual ~QNetworkAccessBackendFactory(); + virtual QStringList supportedSchemes() const = 0; + virtual QNetworkAccessBackend *create(QNetworkAccessManager::Operation op, + const QNetworkRequest &request) const = 0; +}; + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccesscache_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccesscache_p.h new file mode 100644 index 000000000..3732b5cbb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccesscache_p.h @@ -0,0 +1,129 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKACCESSCACHE_P_H +#define QNETWORKACCESSCACHE_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "QtCore/qobject.h" +#include "QtCore/qbasictimer.h" +#include "QtCore/qbytearray.h" +#include "QtCore/qhash.h" +#include "QtCore/qmetatype.h" + +QT_BEGIN_NAMESPACE + +class QNetworkRequest; +class QUrl; + +// this class is not about caching files but about +// caching objects used by QNetworkAccessManager, e.g. existing TCP connections +// or credentials. +class QNetworkAccessCache: public QObject +{ + Q_OBJECT +public: + struct Node; + typedef QHash<QByteArray, Node> NodeHash; + + class CacheableObject + { + friend class QNetworkAccessCache; + QByteArray key; + bool expires; + bool shareable; + public: + CacheableObject(); + virtual ~CacheableObject(); + virtual void dispose() = 0; + inline QByteArray cacheKey() const { return key; } + + protected: + void setExpires(bool enable); + void setShareable(bool enable); + }; + + QNetworkAccessCache(); + ~QNetworkAccessCache(); + + void clear(); + + void addEntry(const QByteArray &key, CacheableObject *entry); + bool hasEntry(const QByteArray &key) const; + bool requestEntry(const QByteArray &key, QObject *target, const char *member); + CacheableObject *requestEntryNow(const QByteArray &key); + void releaseEntry(const QByteArray &key); + void removeEntry(const QByteArray &key); + +signals: + void entryReady(QNetworkAccessCache::CacheableObject *); + +protected: + void timerEvent(QTimerEvent *) Q_DECL_OVERRIDE; + +private: + // idea copied from qcache.h + NodeHash hash; + Node *oldest; + Node *newest; + + QBasicTimer timer; + + void linkEntry(const QByteArray &key); + bool unlinkEntry(const QByteArray &key); + void updateTimer(); + bool emitEntryReady(Node *node, QObject *target, const char *member); +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QNetworkAccessCache::CacheableObject*) + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccesscachebackend_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccesscachebackend_p.h new file mode 100644 index 000000000..8db1a6b1d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccesscachebackend_p.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKACCESSCACHEBACKEND_P_H +#define QNETWORKACCESSCACHEBACKEND_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkaccessbackend_p.h" +#include "qnetworkrequest.h" +#include "qnetworkreply.h" + +QT_BEGIN_NAMESPACE + +class QNetworkAccessCacheBackend : public QNetworkAccessBackend +{ + +public: + QNetworkAccessCacheBackend(); + ~QNetworkAccessCacheBackend(); + + void open() Q_DECL_OVERRIDE; + void closeDownstreamChannel() Q_DECL_OVERRIDE; + void closeUpstreamChannel(); + + void upstreamReadyRead(); + void downstreamReadyWrite() Q_DECL_OVERRIDE; + +private: + bool sendCacheContents(); + +}; + +QT_END_NAMESPACE + +#endif // QNETWORKACCESSCACHEBACKEND_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h new file mode 100644 index 000000000..1d1af61db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKACCESSDEBUGPIPEBACKEND_P_H +#define QNETWORKACCESSDEBUGPIPEBACKEND_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkaccessbackend_p.h" +#include "qnetworkrequest.h" +#include "qnetworkreply.h" +#include "qtcpsocket.h" + +QT_BEGIN_NAMESPACE + +#ifdef QT_BUILD_INTERNAL + +class QNetworkAccessDebugPipeBackend: public QNetworkAccessBackend +{ + Q_OBJECT +public: + QNetworkAccessDebugPipeBackend(); + virtual ~QNetworkAccessDebugPipeBackend(); + + virtual void open() Q_DECL_OVERRIDE; + virtual void closeDownstreamChannel() Q_DECL_OVERRIDE; + + virtual void downstreamReadyWrite() Q_DECL_OVERRIDE; + +protected: + void pushFromSocketToDownstream(); + void pushFromUpstreamToSocket(); + void possiblyFinish(); + QNonContiguousByteDevice *uploadByteDevice; + +private slots: + void uploadReadyReadSlot(); + void socketReadyRead(); + void socketBytesWritten(qint64 bytes); + void socketError(); + void socketDisconnected(); + void socketConnected(); + +private: + QTcpSocket socket; + bool bareProtocol; + bool hasUploadFinished; + bool hasDownloadFinished; + bool hasEverythingFinished; + + qint64 bytesDownloaded; + qint64 bytesUploaded; +}; + +class QNetworkAccessDebugPipeBackendFactory: public QNetworkAccessBackendFactory +{ +public: + virtual QStringList supportedSchemes() const Q_DECL_OVERRIDE; + virtual QNetworkAccessBackend *create(QNetworkAccessManager::Operation op, + const QNetworkRequest &request) const Q_DECL_OVERRIDE; +}; + +#endif // QT_BUILD_INTERNAL + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessfilebackend_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessfilebackend_p.h new file mode 100644 index 000000000..081ff2b9e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessfilebackend_p.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKACCESSFILEBACKEND_P_H +#define QNETWORKACCESSFILEBACKEND_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkaccessbackend_p.h" +#include "qnetworkrequest.h" +#include "qnetworkreply.h" +#include "QtCore/qfile.h" + +QT_BEGIN_NAMESPACE + +class QNetworkAccessFileBackend: public QNetworkAccessBackend +{ + Q_OBJECT +public: + QNetworkAccessFileBackend(); + virtual ~QNetworkAccessFileBackend(); + + virtual void open() Q_DECL_OVERRIDE; + virtual void closeDownstreamChannel() Q_DECL_OVERRIDE; + + virtual void downstreamReadyWrite() Q_DECL_OVERRIDE; + +public slots: + void uploadReadyReadSlot(); +protected: + QNonContiguousByteDevice *uploadByteDevice; +private: + QFile file; + qint64 totalBytes; + bool hasUploadFinished; + + bool loadFileInfo(); + bool readMoreFromFile(); +}; + +class QNetworkAccessFileBackendFactory: public QNetworkAccessBackendFactory +{ +public: + virtual QStringList supportedSchemes() const Q_DECL_OVERRIDE; + virtual QNetworkAccessBackend *create(QNetworkAccessManager::Operation op, + const QNetworkRequest &request) const Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessftpbackend_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessftpbackend_p.h new file mode 100644 index 000000000..0f26d0532 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessftpbackend_p.h @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKACCESSFTPBACKEND_P_H +#define QNETWORKACCESSFTPBACKEND_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkaccessbackend_p.h" +#include "qnetworkaccesscache_p.h" +#include "qnetworkrequest.h" +#include "qnetworkreply.h" +#include "private/qftp_p.h" + +#include "QtCore/qpointer.h" + +QT_REQUIRE_CONFIG(ftp); + +QT_BEGIN_NAMESPACE + +class QNetworkAccessFtpIODevice; +class QNetworkAccessCachedFtpConnection; + +class QNetworkAccessFtpBackend: public QNetworkAccessBackend +{ + Q_OBJECT +public: + enum State { + Idle, + //Connecting, + LoggingIn, + CheckingFeatures, + Statting, + Transferring, + Disconnecting + }; + + QNetworkAccessFtpBackend(); + virtual ~QNetworkAccessFtpBackend(); + + virtual void open() Q_DECL_OVERRIDE; + virtual void closeDownstreamChannel() Q_DECL_OVERRIDE; + + virtual void downstreamReadyWrite() Q_DECL_OVERRIDE; + + enum CacheCleanupMode { + ReleaseCachedConnection, + RemoveCachedConnection + }; + + void disconnectFromFtp(CacheCleanupMode mode = ReleaseCachedConnection); + +public slots: + void ftpConnectionReady(QNetworkAccessCache::CacheableObject *object); + void ftpDone(); + void ftpReadyRead(); + void ftpRawCommandReply(int code, const QString &text); + +private: + friend class QNetworkAccessFtpIODevice; + QPointer<QNetworkAccessCachedFtpConnection> ftp; + QIODevice *uploadDevice; + qint64 totalBytes; + int helpId, sizeId, mdtmId; + bool supportsSize, supportsMdtm; + State state; +}; + +class QNetworkAccessFtpBackendFactory: public QNetworkAccessBackendFactory +{ +public: + virtual QStringList supportedSchemes() const Q_DECL_OVERRIDE; + virtual QNetworkAccessBackend *create(QNetworkAccessManager::Operation op, + const QNetworkRequest &request) const Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessmanager_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessmanager_p.h new file mode 100644 index 000000000..13a26a54f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkaccessmanager_p.h @@ -0,0 +1,224 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKACCESSMANAGER_P_H +#define QNETWORKACCESSMANAGER_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkaccessmanager.h" +#include "qnetworkaccesscache_p.h" +#include "qnetworkaccessbackend_p.h" +#include "qnetworkrequest.h" +#include "qhsts_p.h" +#include "private/qobject_p.h" +#include "QtNetwork/qnetworkproxy.h" +#include "QtNetwork/qnetworksession.h" +#include "qnetworkaccessauthenticationmanager_p.h" +#ifndef QT_NO_BEARERMANAGEMENT +#include "QtNetwork/qnetworkconfigmanager.h" +#endif + +QT_BEGIN_NAMESPACE + +class QAuthenticator; +class QAbstractNetworkCache; +class QNetworkAuthenticationCredential; +class QNetworkCookieJar; + +class QNetworkAccessManagerPrivate: public QObjectPrivate +{ +public: + QNetworkAccessManagerPrivate() + : networkCache(0), cookieJar(0), + thread(0), +#ifndef QT_NO_NETWORKPROXY + proxyFactory(0), +#endif +#ifndef QT_NO_BEARERMANAGEMENT + lastSessionState(QNetworkSession::Invalid), + networkConfiguration(networkConfigurationManager.defaultConfiguration()), + customNetworkConfiguration(false), + networkSessionRequired(networkConfigurationManager.capabilities() + & QNetworkConfigurationManager::NetworkSessionRequired), + activeReplyCount(0), + online(false), + initializeSession(true), +#endif + cookieJarCreated(false), + defaultAccessControl(true), + redirectPolicy(QNetworkRequest::ManualRedirectPolicy), + authenticationManager(QSharedPointer<QNetworkAccessAuthenticationManager>::create()) + { +#ifndef QT_NO_BEARERMANAGEMENT + // we would need all active configurations to check for + // d->networkConfigurationManager.isOnline(), which is asynchronous + // and potentially expensive. We can just check the configuration here + online = (networkConfiguration.state().testFlag(QNetworkConfiguration::Active)); + if (online) + networkAccessible = QNetworkAccessManager::Accessible; + else if (networkConfiguration.state().testFlag(QNetworkConfiguration::Undefined)) + networkAccessible = QNetworkAccessManager::UnknownAccessibility; + else + networkAccessible = QNetworkAccessManager::NotAccessible; +#endif + } + ~QNetworkAccessManagerPrivate(); + + QThread * createThread(); + void destroyThread(); + + void _q_replyFinished(); + void _q_replyEncrypted(); + void _q_replySslErrors(const QList<QSslError> &errors); + void _q_replyPreSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); + QNetworkReply *postProcess(QNetworkReply *reply); + void createCookieJar() const; + + void authenticationRequired(QAuthenticator *authenticator, + QNetworkReply *reply, + bool synchronous, + QUrl &url, + QUrl *urlForLastAuthentication, + bool allowAuthenticationReuse = true); + void cacheCredentials(const QUrl &url, const QAuthenticator *auth); + QNetworkAuthenticationCredential *fetchCachedCredentials(const QUrl &url, + const QAuthenticator *auth = 0); + +#ifndef QT_NO_NETWORKPROXY + void proxyAuthenticationRequired(const QUrl &url, + const QNetworkProxy &proxy, + bool synchronous, + QAuthenticator *authenticator, + QNetworkProxy *lastProxyAuthentication); + void cacheProxyCredentials(const QNetworkProxy &proxy, const QAuthenticator *auth); + QNetworkAuthenticationCredential *fetchCachedProxyCredentials(const QNetworkProxy &proxy, + const QAuthenticator *auth = 0); + QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query); +#endif + + QNetworkAccessBackend *findBackend(QNetworkAccessManager::Operation op, const QNetworkRequest &request); + QStringList backendSupportedSchemes() const; + +#ifndef QT_NO_BEARERMANAGEMENT + void createSession(const QNetworkConfiguration &config); + QSharedPointer<QNetworkSession> getNetworkSession() const; + + void _q_networkSessionClosed(); + void _q_networkSessionNewConfigurationActivated(); + void _q_networkSessionPreferredConfigurationChanged(const QNetworkConfiguration &config, + bool isSeamless); + void _q_networkSessionStateChanged(QNetworkSession::State state); + void _q_onlineStateChanged(bool isOnline); + void _q_configurationChanged(const QNetworkConfiguration &configuration); + void _q_networkSessionFailed(QNetworkSession::SessionError error); + + QSet<QString> onlineConfigurations; + +#endif + + QNetworkRequest prepareMultipart(const QNetworkRequest &request, QHttpMultiPart *multiPart); + + // this is the cache for storing downloaded files + QAbstractNetworkCache *networkCache; + + QNetworkCookieJar *cookieJar; + + QThread *thread; + + +#ifndef QT_NO_NETWORKPROXY + QNetworkProxy proxy; + QNetworkProxyFactory *proxyFactory; +#endif + +#ifndef QT_NO_BEARERMANAGEMENT + QSharedPointer<QNetworkSession> networkSessionStrongRef; + QWeakPointer<QNetworkSession> networkSessionWeakRef; + QNetworkSession::State lastSessionState; + QNetworkConfigurationManager networkConfigurationManager; + QNetworkConfiguration networkConfiguration; + // we need to track whether the user set a config or not, + // because the default config might change + bool customNetworkConfiguration; + bool networkSessionRequired; + QNetworkAccessManager::NetworkAccessibility networkAccessible; + int activeReplyCount; + bool online; + bool initializeSession; +#endif + + bool cookieJarCreated; + bool defaultAccessControl; + QNetworkRequest::RedirectPolicy redirectPolicy; + + // The cache with authorization data: + QSharedPointer<QNetworkAccessAuthenticationManager> authenticationManager; + + // this cache can be used by individual backends to cache e.g. their TCP connections to a server + // and use the connections for multiple requests. + QNetworkAccessCache objectCache; + static inline QNetworkAccessCache *getObjectCache(QNetworkAccessBackend *backend) + { return &backend->manager->objectCache; } + + Q_AUTOTEST_EXPORT static void clearAuthenticationCache(QNetworkAccessManager *manager); + Q_AUTOTEST_EXPORT static void clearConnectionCache(QNetworkAccessManager *manager); + + QHstsCache stsCache; + bool stsEnabled = false; + +#ifndef QT_NO_BEARERMANAGEMENT + Q_AUTOTEST_EXPORT static const QWeakPointer<const QNetworkSession> getNetworkSession(const QNetworkAccessManager *manager); +#endif + Q_DECLARE_PUBLIC(QNetworkAccessManager) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkconfigmanager_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkconfigmanager_p.h new file mode 100644 index 000000000..380e25c22 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkconfigmanager_p.h @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKCONFIGMANAGER_P_H +#define QNETWORKCONFIGMANAGER_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkconfigmanager.h" +#include "qnetworkconfiguration_p.h" + +#include <QtCore/private/qfactoryloader_p.h> +#include <QtCore/qmutex.h> +#include <QtCore/qset.h> + +#ifndef QT_NO_BEARERMANAGEMENT + +QT_BEGIN_NAMESPACE + +class QBearerEngine; +class QTimer; + +class Q_NETWORK_EXPORT QNetworkConfigurationManagerPrivate : public QObject +{ + Q_OBJECT + +public: + QNetworkConfigurationManagerPrivate(); + virtual ~QNetworkConfigurationManagerPrivate(); + + QNetworkConfiguration defaultConfiguration() const; + QList<QNetworkConfiguration> allConfigurations(QNetworkConfiguration::StateFlags filter) const; + QNetworkConfiguration configurationFromIdentifier(const QString &identifier) const; + + bool isOnline() const; + + QNetworkConfigurationManager::Capabilities capabilities() const; + + void performAsyncConfigurationUpdate(); + + QList<QBearerEngine *> engines() const; + + void enablePolling(); + void disablePolling(); + + void initialize(); + void cleanup(); +public Q_SLOTS: + void updateConfigurations(); + + static void addPreAndPostRoutine(); + +Q_SIGNALS: + void configurationAdded(const QNetworkConfiguration &config); + void configurationRemoved(const QNetworkConfiguration &config); + void configurationChanged(const QNetworkConfiguration &config); + void configurationUpdateComplete(); + void onlineStateChanged(bool isOnline); + +private Q_SLOTS: + void configurationAdded(QNetworkConfigurationPrivatePointer ptr); + void configurationRemoved(QNetworkConfigurationPrivatePointer ptr); + void configurationChanged(QNetworkConfigurationPrivatePointer ptr); + + void pollEngines(); + + +private: + Q_INVOKABLE void startPolling(); + QTimer *pollTimer; + QThread *bearerThread; + +private: + mutable QMutex mutex; + + QFactoryLoader loader; + QList<QBearerEngine *> sessionEngines; + + QSet<QString> onlineConfigurations; + + QSet<QBearerEngine *> pollingEngines; + QSet<QBearerEngine *> updatingEngines; + int forcedPolling; + bool updating; + + bool firstUpdate; +}; + +Q_NETWORK_EXPORT QNetworkConfigurationManagerPrivate *qNetworkConfigurationManagerPrivate(); + +QT_END_NAMESPACE + +#endif // QT_NO_BEARERMANAGEMENT + +#endif // QNETWORKCONFMANAGER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkconfiguration_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkconfiguration_p.h new file mode 100644 index 000000000..2fdb490ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkconfiguration_p.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKCONFIGURATIONPRIVATE_H +#define QNETWORKCONFIGURATIONPRIVATE_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkconfiguration.h" + +#include <QtCore/qshareddata.h> +#include <QtCore/qmutex.h> +#include <QtCore/qmap.h> + +QT_BEGIN_NAMESPACE + +typedef QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> QNetworkConfigurationPrivatePointer; +class QNetworkConfigurationPrivate : public QSharedData +{ +public: + QNetworkConfigurationPrivate() : + mutex(QMutex::Recursive), + type(QNetworkConfiguration::Invalid), + purpose(QNetworkConfiguration::UnknownPurpose), + bearerType(QNetworkConfiguration::BearerUnknown), + isValid(false), roamingSupported(false), + timeout(DefaultTimeout) + {} + virtual ~QNetworkConfigurationPrivate() + { + //release pointers to member configurations + serviceNetworkMembers.clear(); + } + + QMap<unsigned int, QNetworkConfigurationPrivatePointer> serviceNetworkMembers; + + mutable QMutex mutex; + + QString name; + QString id; + + QNetworkConfiguration::StateFlags state; + QNetworkConfiguration::Type type; + QNetworkConfiguration::Purpose purpose; + QNetworkConfiguration::BearerType bearerType; + + bool isValid; + bool roamingSupported; + int timeout; + + static Q_CONSTEXPR int DefaultTimeout = 30000; + +private: + Q_DISABLE_COPY(QNetworkConfigurationPrivate) +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QNetworkConfigurationPrivatePointer) + +#endif // QNETWORKCONFIGURATIONPRIVATE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkcookie_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkcookie_p.h new file mode 100644 index 000000000..13538ad24 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkcookie_p.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKCOOKIE_P_H +#define QNETWORKCOOKIE_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 Network Access framework. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "QtCore/qdatetime.h" + +QT_BEGIN_NAMESPACE + +class QNetworkCookiePrivate: public QSharedData +{ +public: + inline QNetworkCookiePrivate() : secure(false), httpOnly(false) { } + static QList<QNetworkCookie> parseSetCookieHeaderLine(const QByteArray &cookieString); + + QDateTime expirationDate; + QString domain; + QString path; + QString comment; + QByteArray name; + QByteArray value; + bool secure; + bool httpOnly; +}; + +static inline bool isLWS(char c) +{ + return c == ' ' || c == '\t' || c == '\r' || c == '\n'; +} + +static int nextNonWhitespace(const QByteArray &text, int from) +{ + // RFC 2616 defines linear whitespace as: + // LWS = [CRLF] 1*( SP | HT ) + // We ignore the fact that CRLF must come as a pair at this point + // It's an invalid HTTP header if that happens. + while (from < text.length()) { + if (isLWS(text.at(from))) + ++from; + else + return from; // non-whitespace + } + + // reached the end + return text.length(); +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkcookiejar_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkcookiejar_p.h new file mode 100644 index 000000000..43f189a40 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkcookiejar_p.h @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKCOOKIEJAR_P_H +#define QNETWORKCOOKIEJAR_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 Network Access framework. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "private/qobject_p.h" +#include "qnetworkcookie.h" + +QT_BEGIN_NAMESPACE + +class QNetworkCookieJarPrivate: public QObjectPrivate +{ +public: + QList<QNetworkCookie> allCookies; + + Q_DECLARE_PUBLIC(QNetworkCookieJar) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkdatagram_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkdatagram_p.h new file mode 100644 index 000000000..5b5c03748 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkdatagram_p.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKDATAGRAM_P_H +#define QNETWORKDATAGRAM_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtNetwork/qhostaddress.h> + +QT_BEGIN_NAMESPACE + +class QIpPacketHeader +{ +public: + QIpPacketHeader(const QHostAddress &dstAddr = QHostAddress(), quint16 port = 0) + : destinationAddress(dstAddr), ifindex(0), hopLimit(-1), streamNumber(-1), + destinationPort(port), endOfRecord(false) + {} + + void clear() + { + senderAddress.clear(); + destinationAddress.clear(); + ifindex = 0; + hopLimit = -1; + streamNumber = -1; + endOfRecord = false; + } + + QHostAddress senderAddress; + QHostAddress destinationAddress; + + uint ifindex; + int hopLimit; + int streamNumber; + quint16 senderPort; + quint16 destinationPort; + bool endOfRecord; +}; + +class QNetworkDatagramPrivate +{ +public: + QNetworkDatagramPrivate(const QByteArray &data = QByteArray(), + const QHostAddress &dstAddr = QHostAddress(), quint16 port = 0) + : data(data), header(dstAddr, port) + {} + QNetworkDatagramPrivate(const QByteArray &data, const QIpPacketHeader &header) + : data(data), header(header) + {} + + QByteArray data; + QIpPacketHeader header; +}; + +QT_END_NAMESPACE + +#endif // QNETWORKDATAGRAM_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkdiskcache_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkdiskcache_p.h new file mode 100644 index 000000000..f7988e7dd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkdiskcache_p.h @@ -0,0 +1,126 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKDISKCACHE_P_H +#define QNETWORKDISKCACHE_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "private/qabstractnetworkcache_p.h" + +#include <qbuffer.h> +#include <qhash.h> +#include <qtemporaryfile.h> + +QT_REQUIRE_CONFIG(networkdiskcache); + +QT_BEGIN_NAMESPACE + +class QFile; + +class QCacheItem +{ +public: + QCacheItem() : file(0) + { + } + ~QCacheItem() + { + reset(); + } + + QNetworkCacheMetaData metaData; + QBuffer data; + QTemporaryFile *file; + inline qint64 size() const + { return file ? file->size() : data.size(); } + + inline void reset() { + metaData = QNetworkCacheMetaData(); + data.close(); + delete file; + file = 0; + } + void writeHeader(QFile *device) const; + void writeCompressedData(QFile *device) const; + bool read(QFile *device, bool readData); + + bool canCompress() const; +}; + +class QNetworkDiskCachePrivate : public QAbstractNetworkCachePrivate +{ +public: + QNetworkDiskCachePrivate() + : QAbstractNetworkCachePrivate() + , maximumCacheSize(1024 * 1024 * 50) + , currentCacheSize(-1) + {} + + static QString uniqueFileName(const QUrl &url); + QString cacheFileName(const QUrl &url) const; + QString tmpCacheFileName() const; + bool removeFile(const QString &file); + void storeItem(QCacheItem *item); + void prepareLayout(); + static quint32 crc32(const char *data, uint len); + + mutable QCacheItem lastItem; + QString cacheDirectory; + QString dataDirectory; + qint64 maximumCacheSize; + qint64 currentCacheSize; + + QHash<QIODevice*, QCacheItem*> inserting; + Q_DECLARE_PUBLIC(QNetworkDiskCache) +}; + +QT_END_NAMESPACE + +#endif // QNETWORKDISKCACHE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkfile_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkfile_p.h new file mode 100644 index 000000000..dd56b24bd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkfile_p.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKFILE_H +#define QNETWORKFILE_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QFile> +#include <qnetworkreply.h> + +QT_BEGIN_NAMESPACE + +class QNetworkFile : public QFile +{ + Q_OBJECT +public: + QNetworkFile(); + QNetworkFile(const QString &name); + using QFile::open; + +public Q_SLOTS: + void open(); + void close() Q_DECL_OVERRIDE; + +Q_SIGNALS: + void finished(bool ok); + void headerRead(QNetworkRequest::KnownHeaders header, const QVariant &value); + void error(QNetworkReply::NetworkError error, const QString &message); +}; + +QT_END_NAMESPACE + +#endif // QNETWORKFILE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkinterface_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkinterface_p.h new file mode 100644 index 000000000..ec25fdf37 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkinterface_p.h @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKINTERFACEPRIVATE_H +#define QNETWORKINTERFACEPRIVATE_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtCore/qatomic.h> +#include <QtCore/qlist.h> +#include <QtCore/qreadwritelock.h> +#include <QtCore/qstring.h> +#include <QtNetwork/qhostaddress.h> +#include <QtNetwork/qabstractsocket.h> +#include <private/qhostaddress_p.h> + +#ifndef QT_NO_NETWORKINTERFACE + +QT_BEGIN_NAMESPACE + +class QNetworkAddressEntryPrivate +{ +public: + QHostAddress address; + QNetmaskAddress netmask; + QHostAddress broadcast; +}; + +class QNetworkInterfacePrivate: public QSharedData +{ +public: + QNetworkInterfacePrivate() : index(0), flags(0) + { } + ~QNetworkInterfacePrivate() + { } + + int index; // interface index, if know + QNetworkInterface::InterfaceFlags flags; + + QString name; + QString friendlyName; + QString hardwareAddress; + + QList<QNetworkAddressEntry> addressEntries; + + static QString makeHwAddress(int len, uchar *data); + +private: + // disallow copying -- avoid detaching + QNetworkInterfacePrivate &operator=(const QNetworkInterfacePrivate &other); + QNetworkInterfacePrivate(const QNetworkInterfacePrivate &other); +}; + +class QNetworkInterfaceManager +{ +public: + QNetworkInterfaceManager(); + ~QNetworkInterfaceManager(); + + QSharedDataPointer<QNetworkInterfacePrivate> interfaceFromName(const QString &name); + QSharedDataPointer<QNetworkInterfacePrivate> interfaceFromIndex(int index); + QList<QSharedDataPointer<QNetworkInterfacePrivate> > allInterfaces(); + + static uint interfaceIndexFromName(const QString &name); + static QString interfaceNameFromIndex(uint index); + + // convenience: + QSharedDataPointer<QNetworkInterfacePrivate> empty; + +private: + QList<QNetworkInterfacePrivate *> scan(); +}; + + +QT_END_NAMESPACE + +#endif // QT_NO_NETWORKINTERFACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreply_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreply_p.h new file mode 100644 index 000000000..66d8c9d52 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreply_p.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKREPLY_P_H +#define QNETWORKREPLY_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkrequest.h" +#include "qnetworkrequest_p.h" +#include "qnetworkreply.h" +#include "QtCore/qpointer.h" +#include <QtCore/QElapsedTimer> +#include "private/qiodevice_p.h" + +QT_BEGIN_NAMESPACE + +class QNetworkReplyPrivate: public QIODevicePrivate, public QNetworkHeadersPrivate +{ +public: + enum State { + Idle, // The reply is idle. + Buffering, // The reply is buffering outgoing data. + Working, // The reply is uploading/downloading data. + Finished, // The reply has finished. + Aborted, // The reply has been aborted. + WaitingForSession, // The reply is waiting for the session to open before connecting. + Reconnecting // The reply will reconnect to once roaming has completed. + }; + + QNetworkReplyPrivate(); + QNetworkRequest request; + QNetworkRequest originalRequest; + QUrl url; + QPointer<QNetworkAccessManager> manager; + qint64 readBufferMaxSize; + QElapsedTimer downloadProgressSignalChoke; + QElapsedTimer uploadProgressSignalChoke; + bool emitAllUploadProgressSignals; + const static int progressSignalInterval; + QNetworkAccessManager::Operation operation; + QNetworkReply::NetworkError errorCode; + bool isFinished; + + static inline void setManager(QNetworkReply *reply, QNetworkAccessManager *manager) + { reply->d_func()->manager = manager; } + + Q_DECLARE_PUBLIC(QNetworkReply) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplydataimpl_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplydataimpl_p.h new file mode 100644 index 000000000..c8b44d753 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplydataimpl_p.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKREPLYDATAIMPL_H +#define QNETWORKREPLYDATAIMPL_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkreply.h" +#include "qnetworkreply_p.h" +#include "qnetworkaccessmanager.h" +#include <QBuffer> + +QT_BEGIN_NAMESPACE + + +class QNetworkReplyDataImplPrivate; +class QNetworkReplyDataImpl: public QNetworkReply +{ + Q_OBJECT +public: + QNetworkReplyDataImpl(QObject *parent, const QNetworkRequest &req, const QNetworkAccessManager::Operation op); + ~QNetworkReplyDataImpl(); + virtual void abort() Q_DECL_OVERRIDE; + + // reimplemented from QNetworkReply + virtual void close() Q_DECL_OVERRIDE; + virtual qint64 bytesAvailable() const Q_DECL_OVERRIDE; + virtual bool isSequential () const Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; + + virtual qint64 readData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + + Q_DECLARE_PRIVATE(QNetworkReplyDataImpl) +}; + +class QNetworkReplyDataImplPrivate: public QNetworkReplyPrivate +{ +public: + QNetworkReplyDataImplPrivate(); + ~QNetworkReplyDataImplPrivate(); + + QBuffer decodedData; + + Q_DECLARE_PUBLIC(QNetworkReplyDataImpl) +}; + +QT_END_NAMESPACE + +#endif // QNETWORKREPLYDATAIMPL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplyfileimpl_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplyfileimpl_p.h new file mode 100644 index 000000000..d6af66152 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplyfileimpl_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKREPLYFILEIMPL_H +#define QNETWORKREPLYFILEIMPL_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkreply.h" +#include "qnetworkreply_p.h" +#include "qnetworkaccessmanager.h" +#include <QFile> +#include <private/qabstractfileengine_p.h> + +QT_BEGIN_NAMESPACE + +class QNetworkReplyFileImplPrivate; +class QNetworkReplyFileImpl: public QNetworkReply +{ + Q_OBJECT +public: + QNetworkReplyFileImpl(QNetworkAccessManager *manager, const QNetworkRequest &req, const QNetworkAccessManager::Operation op); + ~QNetworkReplyFileImpl(); + virtual void abort() Q_DECL_OVERRIDE; + + // reimplemented from QNetworkReply + virtual void close() Q_DECL_OVERRIDE; + virtual qint64 bytesAvailable() const Q_DECL_OVERRIDE; + virtual bool isSequential () const Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; + + virtual qint64 readData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + +private Q_SLOTS: + void fileOpenFinished(bool isOpen); + + Q_DECLARE_PRIVATE(QNetworkReplyFileImpl) +}; + +class QNetworkReplyFileImplPrivate: public QNetworkReplyPrivate +{ +public: + QNetworkReplyFileImplPrivate(); + + QNetworkAccessManagerPrivate *managerPrivate; + QPointer<QFile> realFile; + + Q_DECLARE_PUBLIC(QNetworkReplyFileImpl) +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QNetworkRequest::KnownHeaders) + +#endif // QNETWORKREPLYFILEIMPL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplyhttpimpl_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplyhttpimpl_p.h new file mode 100644 index 000000000..1eedfa5a5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplyhttpimpl_p.h @@ -0,0 +1,319 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKREPLYHTTPIMPL_P_H +#define QNETWORKREPLYHTTPIMPL_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkrequest.h" +#include "qnetworkreply.h" + +#include "QtCore/qpointer.h" +#include "QtCore/qdatetime.h" +#include "QtCore/qsharedpointer.h" +#include "qatomic.h" + +#include <QtNetwork/QNetworkCacheMetaData> +#include <private/qhttpnetworkrequest_p.h> +#include <private/qbytedata_p.h> +#include <private/qnetworkreply_p.h> +#include <QtNetwork/QNetworkProxy> +#include <QtNetwork/QNetworkSession> + +#ifndef QT_NO_SSL +#include <QtNetwork/QSslConfiguration> +#endif + +#ifndef QT_NO_HTTP + +QT_BEGIN_NAMESPACE + +class QIODevice; + +class QNetworkReplyHttpImplPrivate; +class QNetworkReplyHttpImpl: public QNetworkReply +{ + Q_OBJECT +public: + QNetworkReplyHttpImpl(QNetworkAccessManager* const, const QNetworkRequest&, QNetworkAccessManager::Operation&, QIODevice* outgoingData); + virtual ~QNetworkReplyHttpImpl(); + + void close() Q_DECL_OVERRIDE; + void abort() Q_DECL_OVERRIDE; + qint64 bytesAvailable() const Q_DECL_OVERRIDE; + bool isSequential () const Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; + qint64 readData(char*, qint64) Q_DECL_OVERRIDE; + void setReadBufferSize(qint64 size) Q_DECL_OVERRIDE; + bool canReadLine () const Q_DECL_OVERRIDE; + + Q_DECLARE_PRIVATE(QNetworkReplyHttpImpl) + Q_PRIVATE_SLOT(d_func(), void _q_startOperation()) + Q_PRIVATE_SLOT(d_func(), bool start(const QNetworkRequest &)) + Q_PRIVATE_SLOT(d_func(), void _q_cacheLoadReadyRead()) + Q_PRIVATE_SLOT(d_func(), void _q_bufferOutgoingData()) + Q_PRIVATE_SLOT(d_func(), void _q_bufferOutgoingDataFinished()) +#ifndef QT_NO_BEARERMANAGEMENT + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionConnected()) + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionFailed()) + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionStateChanged(QNetworkSession::State)) + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionUsagePoliciesChanged(QNetworkSession::UsagePolicies)) +#endif + Q_PRIVATE_SLOT(d_func(), void _q_finished()) + Q_PRIVATE_SLOT(d_func(), void _q_error(QNetworkReply::NetworkError, const QString &)) + + // From reply + Q_PRIVATE_SLOT(d_func(), void replyDownloadData(QByteArray)) + Q_PRIVATE_SLOT(d_func(), void replyFinished()) + Q_PRIVATE_SLOT(d_func(), void replyDownloadMetaData(QList<QPair<QByteArray,QByteArray> >, + int, QString, bool, QSharedPointer<char>, + qint64, qint64, bool)) + Q_PRIVATE_SLOT(d_func(), void replyDownloadProgressSlot(qint64,qint64)) + 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&)) + Q_PRIVATE_SLOT(d_func(), void replyPreSharedKeyAuthenticationRequiredSlot(QSslPreSharedKeyAuthenticator *)) +#endif +#ifndef QT_NO_NETWORKPROXY + Q_PRIVATE_SLOT(d_func(), void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth)) +#endif + + Q_PRIVATE_SLOT(d_func(), void resetUploadDataSlot(bool *r)) + Q_PRIVATE_SLOT(d_func(), void wantUploadDataSlot(qint64)) + Q_PRIVATE_SLOT(d_func(), void sentUploadDataSlot(qint64,qint64)) + Q_PRIVATE_SLOT(d_func(), void uploadByteDeviceReadyReadSlot()) + Q_PRIVATE_SLOT(d_func(), void emitReplyUploadProgress(qint64, qint64)) + Q_PRIVATE_SLOT(d_func(), void _q_cacheSaveDeviceAboutToClose()) + Q_PRIVATE_SLOT(d_func(), void _q_metaDataChanged()) + Q_PRIVATE_SLOT(d_func(), void onRedirected(const QUrl &, int, int)) + Q_PRIVATE_SLOT(d_func(), void followRedirect()) + +#ifndef QT_NO_SSL +protected: + void ignoreSslErrors() Q_DECL_OVERRIDE; + void ignoreSslErrorsImplementation(const QList<QSslError> &errors) Q_DECL_OVERRIDE; + void setSslConfigurationImplementation(const QSslConfiguration &configuration) Q_DECL_OVERRIDE; + void sslConfigurationImplementation(QSslConfiguration &configuration) const Q_DECL_OVERRIDE; +#endif + +signals: + // To HTTP thread: + void startHttpRequest(); + void abortHttpRequest(); + void readBufferSizeChanged(qint64 size); + void readBufferFreed(qint64 size); + + void startHttpRequestSynchronously(); + + void haveUploadData(const qint64 pos, const QByteArray &dataArray, bool dataAtEnd, qint64 dataSize); +}; + +class QNetworkReplyHttpImplPrivate: public QNetworkReplyPrivate +{ +#if QT_CONFIG(bearermanagement) + bool startWaitForSession(QSharedPointer<QNetworkSession> &session); +#endif + +public: + + static QHttpNetworkRequest::Priority convert(const QNetworkRequest::Priority& prio); + + QNetworkReplyHttpImplPrivate(); + ~QNetworkReplyHttpImplPrivate(); + + bool start(const QNetworkRequest &newHttpRequest); + void _q_startOperation(); + + void _q_cacheLoadReadyRead(); + + void _q_bufferOutgoingData(); + void _q_bufferOutgoingDataFinished(); + + void _q_cacheSaveDeviceAboutToClose(); + +#ifndef QT_NO_BEARERMANAGEMENT + void _q_networkSessionConnected(); + void _q_networkSessionFailed(); + void _q_networkSessionStateChanged(QNetworkSession::State); + void _q_networkSessionUsagePoliciesChanged(QNetworkSession::UsagePolicies); +#endif + void _q_finished(); + + void finished(); + void error(QNetworkReply::NetworkError code, const QString &errorString); + void _q_error(QNetworkReply::NetworkError code, const QString &errorString); + void _q_metaDataChanged(); + + void checkForRedirect(const int statusCode); + + // incoming from user + QNetworkAccessManager *manager; + QNetworkAccessManagerPrivate *managerPrivate; + QHttpNetworkRequest httpRequest; // There is also a copy in the HTTP thread + bool synchronous; + + State state; + + // from http thread + int statusCode; + QString reasonPhrase; + + // upload + QNonContiguousByteDevice* createUploadByteDevice(); + QSharedPointer<QNonContiguousByteDevice> uploadByteDevice; + qint64 uploadByteDevicePosition; + bool uploadDeviceChoking; // if we couldn't readPointer() any data at the moment + QIODevice *outgoingData; + QSharedPointer<QRingBuffer> outgoingDataBuffer; + void emitReplyUploadProgress(qint64 bytesSent, qint64 bytesTotal); // dup? + void onRedirected(const QUrl &redirectUrl, int httpStatus, int maxRedirectsRemainig); + void followRedirect(); + qint64 bytesUploaded; + + + // cache + void createCache(); + void completeCacheSave(); + void setCachingEnabled(bool enable); + bool isCachingEnabled() const; + bool isCachingAllowed() const; + void initCacheSaveDevice(); + QIODevice *cacheLoadDevice; + bool loadingFromCache; + + QIODevice *cacheSaveDevice; + bool cacheEnabled; // is this for saving? + + + QUrl urlForLastAuthentication; +#ifndef QT_NO_NETWORKPROXY + QNetworkProxy lastProxyAuthentication; +#endif + + + bool migrateBackend(); + bool canResume() const; + void setResumeOffset(quint64 offset); + quint64 resumeOffset; + qint64 preMigrationDownloaded; + + QByteDataBuffer pendingDownloadData; // For signal compression + qint64 bytesDownloaded; + qint64 bytesBuffered; + + // Only used when the "zero copy" style is used. + // Please note that the whole "zero copy" download buffer API is private right now. Do not use it. + qint64 downloadBufferReadPosition; + qint64 downloadBufferCurrentSize; + QSharedPointer<char> downloadBufferPointer; + char* downloadZerocopyBuffer; + + // Will be increased by HTTP thread: + QSharedPointer<QAtomicInt> pendingDownloadDataEmissions; + QSharedPointer<QAtomicInt> pendingDownloadProgressEmissions; + + +#ifndef QT_NO_SSL + QSslConfiguration sslConfiguration; + bool pendingIgnoreAllSslErrors; + QList<QSslError> pendingIgnoreSslErrorsList; +#endif + + QNetworkRequest redirectRequest; + + bool loadFromCacheIfAllowed(QHttpNetworkRequest &httpRequest); + void invalidateCache(); + bool sendCacheContents(const QNetworkCacheMetaData &metaData); + QNetworkCacheMetaData fetchCacheMetaData(const QNetworkCacheMetaData &metaData) const; + + + void postRequest(const QNetworkRequest& newHttpRequest); + QNetworkAccessManager::Operation getRedirectOperation(QNetworkAccessManager::Operation currentOp, int httpStatus); + QNetworkRequest createRedirectRequest(const QNetworkRequest &originalRequests, const QUrl &url, int maxRedirectsRemainig); + bool isHttpRedirectResponse() const; + +public: + // From HTTP thread: + void replyDownloadData(QByteArray); + void replyFinished(); + void replyDownloadMetaData(const QList<QPair<QByteArray,QByteArray> > &, int, const QString &, + bool, QSharedPointer<char>, qint64, qint64, bool); + void replyDownloadProgressSlot(qint64,qint64); + 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&); + void replyPreSharedKeyAuthenticationRequiredSlot(QSslPreSharedKeyAuthenticator *); +#endif +#ifndef QT_NO_NETWORKPROXY + void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth); +#endif + + // From QNonContiguousByteDeviceThreadForwardImpl in HTTP thread: + void resetUploadDataSlot(bool *r); + void wantUploadDataSlot(qint64); + void sentUploadDataSlot(qint64, qint64); + + // From user's QNonContiguousByteDevice + void uploadByteDeviceReadyReadSlot(); + + Q_DECLARE_PUBLIC(QNetworkReplyHttpImpl) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_HTTP + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplyimpl_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplyimpl_p.h new file mode 100644 index 000000000..7cd99392d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkreplyimpl_p.h @@ -0,0 +1,232 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKREPLYIMPL_P_H +#define QNETWORKREPLYIMPL_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkreply.h" +#include "qnetworkreply_p.h" +#include "qnetworkaccessmanager.h" +#include "qnetworkproxy.h" +#include "QtCore/qmap.h" +#include "QtCore/qqueue.h" +#include "QtCore/qbuffer.h" +#include "private/qringbuffer_p.h" +#include "private/qbytedata_p.h" +#include <QSharedPointer> +#include <QtNetwork/QNetworkSession> + +QT_BEGIN_NAMESPACE + +class QAbstractNetworkCache; +class QNetworkAccessBackend; + +class QNetworkReplyImplPrivate; +class QNetworkReplyImpl: public QNetworkReply +{ + Q_OBJECT +public: + QNetworkReplyImpl(QObject *parent = 0); + ~QNetworkReplyImpl(); + virtual void abort() Q_DECL_OVERRIDE; + + // reimplemented from QNetworkReply / QIODevice + virtual void close() Q_DECL_OVERRIDE; + virtual qint64 bytesAvailable() const Q_DECL_OVERRIDE; + virtual void setReadBufferSize(qint64 size) Q_DECL_OVERRIDE; + + virtual qint64 readData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + virtual bool event(QEvent *) Q_DECL_OVERRIDE; + + Q_DECLARE_PRIVATE(QNetworkReplyImpl) + Q_PRIVATE_SLOT(d_func(), void _q_startOperation()) + Q_PRIVATE_SLOT(d_func(), void _q_copyReadyRead()) + Q_PRIVATE_SLOT(d_func(), void _q_copyReadChannelFinished()) + Q_PRIVATE_SLOT(d_func(), void _q_bufferOutgoingData()) + Q_PRIVATE_SLOT(d_func(), void _q_bufferOutgoingDataFinished()) +#ifndef QT_NO_BEARERMANAGEMENT + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionConnected()) + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionFailed()) + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionStateChanged(QNetworkSession::State)) + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionUsagePoliciesChanged(QNetworkSession::UsagePolicies)) +#endif + +#ifndef QT_NO_SSL +protected: + void sslConfigurationImplementation(QSslConfiguration &configuration) const Q_DECL_OVERRIDE; + void setSslConfigurationImplementation(const QSslConfiguration &configuration) Q_DECL_OVERRIDE; + virtual void ignoreSslErrors() Q_DECL_OVERRIDE; + virtual void ignoreSslErrorsImplementation(const QList<QSslError> &errors) Q_DECL_OVERRIDE; +#endif +}; + +class QNetworkReplyImplPrivate: public QNetworkReplyPrivate +{ +public: + enum InternalNotifications { + NotifyDownstreamReadyWrite, + NotifyCloseDownstreamChannel, + NotifyCopyFinished + }; + + typedef QQueue<InternalNotifications> NotificationQueue; + + QNetworkReplyImplPrivate(); + + void _q_startOperation(); + void _q_copyReadyRead(); + void _q_copyReadChannelFinished(); + void _q_bufferOutgoingData(); + void _q_bufferOutgoingDataFinished(); +#ifndef QT_NO_BEARERMANAGEMENT + void _q_networkSessionConnected(); + void _q_networkSessionFailed(); + void _q_networkSessionStateChanged(QNetworkSession::State); + void _q_networkSessionUsagePoliciesChanged(QNetworkSession::UsagePolicies); +#endif + + void setup(QNetworkAccessManager::Operation op, const QNetworkRequest &request, + QIODevice *outgoingData); + + void pauseNotificationHandling(); + void resumeNotificationHandling(); + void backendNotify(InternalNotifications notification); + void handleNotifications(); + void createCache(); + void completeCacheSave(); + + // callbacks from the backend (through the manager): + void setCachingEnabled(bool enable); + bool isCachingEnabled() const; + void consume(qint64 count); + void emitUploadProgress(qint64 bytesSent, qint64 bytesTotal); + qint64 nextDownstreamBlockSize() const; + + void initCacheSaveDevice(); + void appendDownstreamDataSignalEmissions(); + void appendDownstreamData(QByteDataBuffer &data); + void appendDownstreamData(QIODevice *data); + void appendDownstreamData(const QByteArray &data); + + void setDownloadBuffer(QSharedPointer<char> sp, qint64 size); + char* getDownloadBuffer(qint64 size); + void appendDownstreamDataDownloadBuffer(qint64, qint64); + + void finished(); + 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; + QIODevice *outgoingData; + QSharedPointer<QRingBuffer> outgoingDataBuffer; + QIODevice *copyDevice; + QAbstractNetworkCache *networkCache() const; + + bool migrateBackend(); + + bool cacheEnabled; + QIODevice *cacheSaveDevice; + + NotificationQueue pendingNotifications; + bool notificationHandlingPaused; + + QUrl urlForLastAuthentication; +#ifndef QT_NO_NETWORKPROXY + QNetworkProxy lastProxyAuthentication; + QList<QNetworkProxy> proxyList; +#endif + + qint64 bytesDownloaded; + qint64 lastBytesDownloaded; + qint64 bytesUploaded; + qint64 preMigrationDownloaded; + + QString httpReasonPhrase; + int httpStatusCode; + + State state; + + // Only used when the "zero copy" style is used. + // Please note that the whole "zero copy" download buffer API is private right now. Do not use it. + qint64 downloadBufferReadPosition; + qint64 downloadBufferCurrentSize; + qint64 downloadBufferMaximumSize; + QSharedPointer<char> downloadBufferPointer; + char* downloadBuffer; + + Q_DECLARE_PUBLIC(QNetworkReplyImpl) +}; +Q_DECLARE_TYPEINFO(QNetworkReplyImplPrivate::InternalNotifications, Q_PRIMITIVE_TYPE); + +#ifndef QT_NO_BEARERMANAGEMENT +class QDisabledNetworkReply : public QNetworkReply +{ + Q_OBJECT + +public: + QDisabledNetworkReply(QObject *parent, const QNetworkRequest &req, + QNetworkAccessManager::Operation op); + ~QDisabledNetworkReply(); + + void abort() Q_DECL_OVERRIDE { } +protected: + qint64 readData(char *, qint64) Q_DECL_OVERRIDE { return -1; } +}; +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QSharedPointer<char>) + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkrequest_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkrequest_p.h new file mode 100644 index 000000000..5e18da6d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworkrequest_p.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKREQUEST_P_H +#define QNETWORKREQUEST_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 Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworkrequest.h" +#include "QtCore/qbytearray.h" +#include "QtCore/qlist.h" +#include "QtCore/qhash.h" +#include "QtCore/qshareddata.h" +#include "QtCore/qsharedpointer.h" +#include "QtCore/qpointer.h" + +QT_BEGIN_NAMESPACE + +// this is the common part between QNetworkRequestPrivate, QNetworkReplyPrivate and QHttpPartPrivate +class QNetworkHeadersPrivate +{ +public: + typedef QPair<QByteArray, QByteArray> RawHeaderPair; + typedef QList<RawHeaderPair> RawHeadersList; + typedef QHash<QNetworkRequest::KnownHeaders, QVariant> CookedHeadersMap; + typedef QHash<QNetworkRequest::Attribute, QVariant> AttributesMap; + + RawHeadersList rawHeaders; + CookedHeadersMap cookedHeaders; + AttributesMap attributes; + QPointer<QObject> originatingObject; + + RawHeadersList::ConstIterator findRawHeader(const QByteArray &key) const; + RawHeadersList allRawHeaders() const; + QList<QByteArray> rawHeadersKeys() const; + void setRawHeader(const QByteArray &key, const QByteArray &value); + void setAllRawHeaders(const RawHeadersList &list); + void setCookedHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); + + static QDateTime fromHttpDate(const QByteArray &value); + static QByteArray toHttpDate(const QDateTime &dt); + +private: + void setRawHeaderInternal(const QByteArray &key, const QByteArray &value); + void parseAndSetHeader(const QByteArray &key, const QByteArray &value); +}; + +Q_DECLARE_TYPEINFO(QNetworkHeadersPrivate::RawHeaderPair, Q_MOVABLE_TYPE); + +QT_END_NAMESPACE + + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworksession_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworksession_p.h new file mode 100644 index 000000000..661587603 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qnetworksession_p.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKSESSIONPRIVATE_H +#define QNETWORKSESSIONPRIVATE_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworksession.h" +#include "qnetworkconfiguration_p.h" +#include "QtCore/qsharedpointer.h" + +#ifndef QT_NO_BEARERMANAGEMENT + +QT_BEGIN_NAMESPACE + +class Q_NETWORK_EXPORT QNetworkSessionPrivate : public QObject +{ + Q_OBJECT + + friend class QNetworkSession; + +public: + QNetworkSessionPrivate() : QObject(), + state(QNetworkSession::Invalid), isOpen(false), mutex(QMutex::Recursive) + {} + virtual ~QNetworkSessionPrivate() + {} + + //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 + //notification hooks to discover future state changes. + virtual void syncStateWithInterface() = 0; + +#ifndef QT_NO_NETWORKINTERFACE + virtual QNetworkInterface currentInterface() const = 0; +#endif + virtual QVariant sessionProperty(const QString &key) const = 0; + virtual void setSessionProperty(const QString &key, const QVariant &value) = 0; + + virtual void open() = 0; + virtual void close() = 0; + virtual void stop() = 0; + + virtual void setALREnabled(bool /*enabled*/) {} + virtual void migrate() = 0; + virtual void accept() = 0; + virtual void ignore() = 0; + virtual void reject() = 0; + + virtual QString errorString() const = 0; //must return translated string + virtual QNetworkSession::SessionError error() const = 0; + + virtual quint64 bytesWritten() const = 0; + virtual quint64 bytesReceived() const = 0; + virtual quint64 activeTime() const = 0; + + virtual QNetworkSession::UsagePolicies usagePolicies() const = 0; + virtual void setUsagePolicies(QNetworkSession::UsagePolicies) = 0; + + static void setUsagePolicies(QNetworkSession&, QNetworkSession::UsagePolicies); //for unit testing +protected: + inline QNetworkConfigurationPrivatePointer privateConfiguration(const QNetworkConfiguration &config) const + { + return config.d; + } + + inline void setPrivateConfiguration(QNetworkConfiguration &config, + const QNetworkConfigurationPrivatePointer &ptr) const + { + config.d = ptr; + } + +Q_SIGNALS: + //releases any pending waitForOpened() calls + void quitPendingWaitsForOpened(); + + void error(QNetworkSession::SessionError error); + void stateChanged(QNetworkSession::State state); + void closed(); + void newConfigurationActivated(); + void preferredConfigurationChanged(const QNetworkConfiguration &config, bool isSeamless); + void usagePoliciesChanged(QNetworkSession::UsagePolicies); + +protected: + QNetworkSession *q; + + // The config set on QNetworkSession. + QNetworkConfiguration publicConfig; + + // If publicConfig is a ServiceNetwork this is a copy of publicConfig. + // If publicConfig is an UserChoice that is resolved to a ServiceNetwork this is the actual + // ServiceNetwork configuration. + QNetworkConfiguration serviceConfig; + + // This is the actual active configuration currently in use by the session. + // Either a copy of publicConfig or one of serviceConfig.children(). + QNetworkConfiguration activeConfig; + + QNetworkSession::State state; + bool isOpen; + + QMutex mutex; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_BEARERMANAGEMENT + +#endif // QNETWORKSESSIONPRIVATE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsctpserver_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsctpserver_p.h new file mode 100644 index 000000000..274939fc3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsctpserver_p.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Alex Trotsenko <alex1973tr@gmail.com> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCTPSERVER_P_H +#define QSCTPSERVER_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 QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qtcpserver_p.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SCTP + +class QSctpServerPrivate : public QTcpServerPrivate +{ + Q_DECLARE_PUBLIC(QSctpServer) +public: + QSctpServerPrivate(); + virtual ~QSctpServerPrivate(); + + int maximumChannelCount; + + void configureCreatedSocket() Q_DECL_OVERRIDE; +}; + +#endif // QT_NO_SCTP + +QT_END_NAMESPACE + +#endif // QSCTPSERVER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsctpsocket_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsctpsocket_p.h new file mode 100644 index 000000000..3f765ebed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsctpsocket_p.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Alex Trotsenko <alex1973tr@gmail.com> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCTPSOCKET_P_H +#define QSCTPSOCKET_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 QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/qsctpsocket.h> +#include <private/qtcpsocket_p.h> +#include <QtCore/qbytearray.h> +#include <QtCore/qvector.h> +#include <private/qnetworkdatagram_p.h> + +#include <deque> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SCTP + +class QSctpSocketPrivate : public QTcpSocketPrivate +{ + Q_DECLARE_PUBLIC(QSctpSocket) +public: + QSctpSocketPrivate(); + virtual ~QSctpSocketPrivate(); + + bool canReadNotification() Q_DECL_OVERRIDE; + bool writeToSocket() Q_DECL_OVERRIDE; + + QByteArray incomingDatagram; + int maximumChannelCount; + + typedef std::deque<QIpPacketHeader> IpHeaderList; + QVector<IpHeaderList> readHeaders; + QVector<IpHeaderList> writeHeaders; + + void configureCreatedSocket() Q_DECL_OVERRIDE; +}; + +#endif // QT_NO_SCTP + +QT_END_NAMESPACE + +#endif // QSCTPSOCKET_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsharednetworksession_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsharednetworksession_p.h new file mode 100644 index 000000000..001b8af02 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsharednetworksession_p.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSHAREDNETWORKSESSIONPRIVATE_H +#define QSHAREDNETWORKSESSIONPRIVATE_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "qnetworksession.h" +#include "qnetworkconfiguration.h" +#include <QHash> +#include <QSharedPointer> +#include <QWeakPointer> +#include <QMutex> + +#ifndef QT_NO_BEARERMANAGEMENT + +QT_BEGIN_NAMESPACE + +uint qHash(const QNetworkConfiguration& config); + +class QSharedNetworkSessionManager +{ +public: + static QSharedPointer<QNetworkSession> getSession(const QNetworkConfiguration &config); + static void setSession(const QNetworkConfiguration &config, QSharedPointer<QNetworkSession> session); +private: + QHash<QNetworkConfiguration, QWeakPointer<QNetworkSession> > sessions; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_BEARERMANAGEMENT + +#endif //QSHAREDNETWORKSESSIONPRIVATE_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsocks5socketengine_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsocks5socketengine_p.h new file mode 100644 index 000000000..b248554ae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsocks5socketengine_p.h @@ -0,0 +1,296 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSOCKS5SOCKETENGINE_P_H +#define QSOCKS5SOCKETENGINE_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "qabstractsocketengine_p.h" +#include "qnetworkproxy.h" + +QT_REQUIRE_CONFIG(socks5); + +QT_BEGIN_NAMESPACE + +class QSocks5SocketEnginePrivate; + +class Q_AUTOTEST_EXPORT QSocks5SocketEngine : public QAbstractSocketEngine +{ + Q_OBJECT +public: + QSocks5SocketEngine(QObject *parent = 0); + ~QSocks5SocketEngine(); + + bool initialize(QAbstractSocket::SocketType type, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::IPv4Protocol) Q_DECL_OVERRIDE; + bool initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = QAbstractSocket::ConnectedState) Q_DECL_OVERRIDE; + + void setProxy(const QNetworkProxy &networkProxy); + + qintptr socketDescriptor() const Q_DECL_OVERRIDE; + + bool isValid() const Q_DECL_OVERRIDE; + + bool connectInternal(); + bool connectToHost(const QHostAddress &address, quint16 port) Q_DECL_OVERRIDE; + bool connectToHostByName(const QString &name, quint16 port) Q_DECL_OVERRIDE; + bool bind(const QHostAddress &address, quint16 port) Q_DECL_OVERRIDE; + bool listen() Q_DECL_OVERRIDE; + int accept() Q_DECL_OVERRIDE; + void close() Q_DECL_OVERRIDE; + + qint64 bytesAvailable() const Q_DECL_OVERRIDE; + + qint64 read(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 write(const char *data, qint64 len) Q_DECL_OVERRIDE; + +#ifndef QT_NO_UDPSOCKET +#ifndef QT_NO_NETWORKINTERFACE + bool joinMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &interface) Q_DECL_OVERRIDE; + bool leaveMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &interface) Q_DECL_OVERRIDE; + QNetworkInterface multicastInterface() const Q_DECL_OVERRIDE; + bool setMulticastInterface(const QNetworkInterface &iface) Q_DECL_OVERRIDE; +#endif // QT_NO_NETWORKINTERFACE + + bool hasPendingDatagrams() const Q_DECL_OVERRIDE; + qint64 pendingDatagramSize() const Q_DECL_OVERRIDE; +#endif // QT_NO_UDPSOCKET + + qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader * = 0, + PacketHeaderOptions = WantNone) Q_DECL_OVERRIDE; + qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &) Q_DECL_OVERRIDE; + qint64 bytesToWrite() const Q_DECL_OVERRIDE; + + int option(SocketOption option) const Q_DECL_OVERRIDE; + bool setOption(SocketOption option, int value) Q_DECL_OVERRIDE; + + bool waitForRead(int msecs = 30000, bool *timedOut = 0) Q_DECL_OVERRIDE; + bool waitForWrite(int msecs = 30000, bool *timedOut = 0) Q_DECL_OVERRIDE; + bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite, + bool checkRead, bool checkWrite, + int msecs = 30000, bool *timedOut = 0) Q_DECL_OVERRIDE; + + bool isReadNotificationEnabled() const Q_DECL_OVERRIDE; + void setReadNotificationEnabled(bool enable) Q_DECL_OVERRIDE; + bool isWriteNotificationEnabled() const Q_DECL_OVERRIDE; + void setWriteNotificationEnabled(bool enable) Q_DECL_OVERRIDE; + bool isExceptionNotificationEnabled() const Q_DECL_OVERRIDE; + void setExceptionNotificationEnabled(bool enable) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QSocks5SocketEngine) + Q_DISABLE_COPY(QSocks5SocketEngine) + Q_PRIVATE_SLOT(d_func(), void _q_controlSocketConnected()) + Q_PRIVATE_SLOT(d_func(), void _q_controlSocketReadNotification()) + Q_PRIVATE_SLOT(d_func(), void _q_controlSocketError(QAbstractSocket::SocketError)) +#ifndef QT_NO_UDPSOCKET + Q_PRIVATE_SLOT(d_func(), void _q_udpSocketReadNotification()) +#endif + Q_PRIVATE_SLOT(d_func(), void _q_controlSocketBytesWritten()) + Q_PRIVATE_SLOT(d_func(), void _q_emitPendingReadNotification()) + Q_PRIVATE_SLOT(d_func(), void _q_emitPendingWriteNotification()) + Q_PRIVATE_SLOT(d_func(), void _q_emitPendingConnectionNotification()) + Q_PRIVATE_SLOT(d_func(), void _q_controlSocketDisconnected()) + Q_PRIVATE_SLOT(d_func(), void _q_controlSocketStateChanged(QAbstractSocket::SocketState)) + +}; + + +class QTcpSocket; + +class QSocks5Authenticator +{ +public: + QSocks5Authenticator(); + virtual ~QSocks5Authenticator(); + virtual char methodId(); + virtual bool beginAuthenticate(QTcpSocket *socket, bool *completed); + virtual bool continueAuthenticate(QTcpSocket *socket, bool *completed); + + virtual bool seal(const QByteArray &buf, QByteArray *sealedBuf); + virtual bool unSeal(const QByteArray &sealedBuf, QByteArray *buf); + virtual bool unSeal(QTcpSocket *sealedSocket, QByteArray *buf); + + virtual QString errorString() { return QString(); } +}; + +class QSocks5PasswordAuthenticator : public QSocks5Authenticator +{ +public: + QSocks5PasswordAuthenticator(const QString &userName, const QString &password); + char methodId() Q_DECL_OVERRIDE; + bool beginAuthenticate(QTcpSocket *socket, bool *completed) Q_DECL_OVERRIDE; + bool continueAuthenticate(QTcpSocket *socket, bool *completed) Q_DECL_OVERRIDE; + + QString errorString() Q_DECL_OVERRIDE; + +private: + QString userName; + QString password; +}; + +struct QSocks5Data; +struct QSocks5ConnectData; +struct QSocks5UdpAssociateData; +struct QSocks5BindData; + +class QSocks5SocketEnginePrivate : public QAbstractSocketEnginePrivate +{ + Q_DECLARE_PUBLIC(QSocks5SocketEngine) +public: + QSocks5SocketEnginePrivate(); + ~QSocks5SocketEnginePrivate(); + + enum Socks5State + { + Uninitialized = 0, + ConnectError, + AuthenticationMethodsSent, + Authenticating, + AuthenticatingError, + RequestMethodSent, + RequestError, + Connected, + UdpAssociateSuccess, + BindSuccess, + ControlSocketError, + SocksError, + HostNameLookupError + }; + Socks5State socks5State; + + enum Socks5Mode + { + NoMode, + ConnectMode, + BindMode, + UdpAssociateMode + }; + Socks5Mode mode; + + enum Socks5Error + { + SocksFailure = 0x01, + ConnectionNotAllowed = 0x02, + NetworkUnreachable = 0x03, + HostUnreachable = 0x04, + ConnectionRefused = 0x05, + TTLExpired = 0x06, + CommandNotSupported = 0x07, + AddressTypeNotSupported = 0x08, + LastKnownError = AddressTypeNotSupported, + UnknownError + }; + + void initialize(Socks5Mode socks5Mode); + + void setErrorState(Socks5State state, const QString &extraMessage = QString()); + void setErrorState(Socks5State state, Socks5Error socks5error); + + void reauthenticate(); + void parseAuthenticationMethodReply(); + void parseAuthenticatingReply(); + void sendRequestMethod(); + void parseRequestMethodReply(); + void parseNewConnection(); + + bool waitForConnected(int msecs, bool *timedOut); + + void _q_controlSocketConnected(); + void _q_controlSocketReadNotification(); + void _q_controlSocketError(QAbstractSocket::SocketError); +#ifndef QT_NO_UDPSOCKET + void _q_udpSocketReadNotification(); +#endif + void _q_controlSocketBytesWritten(); + void _q_controlSocketDisconnected(); + void _q_controlSocketStateChanged(QAbstractSocket::SocketState); + + QNetworkProxy proxyInfo; + + bool readNotificationEnabled, writeNotificationEnabled, exceptNotificationEnabled; + + qintptr socketDescriptor; + + QSocks5Data *data; + QSocks5ConnectData *connectData; +#ifndef QT_NO_UDPSOCKET + QSocks5UdpAssociateData *udpData; +#endif + QSocks5BindData *bindData; + QString peerName; + QByteArray receivedHeaderFragment; + + mutable bool readNotificationActivated; + mutable bool writeNotificationActivated; + + bool readNotificationPending; + void _q_emitPendingReadNotification(); + void emitReadNotification(); + bool writeNotificationPending; + void _q_emitPendingWriteNotification(); + void emitWriteNotification(); + bool connectionNotificationPending; + void _q_emitPendingConnectionNotification(); + void emitConnectionNotification(); +}; + +class Q_AUTOTEST_EXPORT QSocks5SocketEngineHandler : public QSocketEngineHandler +{ +public: + virtual QAbstractSocketEngine *createSocketEngine(QAbstractSocket::SocketType socketType, + const QNetworkProxy &, QObject *parent) Q_DECL_OVERRIDE; + virtual QAbstractSocketEngine *createSocketEngine(qintptr socketDescriptor, QObject *parent) Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif // QSOCKS5SOCKETENGINE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qspdyprotocolhandler_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qspdyprotocolhandler_p.h new file mode 100644 index 000000000..0a18505b2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qspdyprotocolhandler_p.h @@ -0,0 +1,228 @@ +/**************************************************************************** +** +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSPDYPROTOCOLHANDLER_H +#define QSPDYPROTOCOLHANDLER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the Network Access API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <private/qabstractprotocolhandler_p.h> +#include <QtNetwork/qnetworkreply.h> +#include <private/qbytedata_p.h> + +#include <zlib.h> + +#if !defined(QT_NO_HTTP) && !defined(QT_NO_SSL) + +QT_BEGIN_NAMESPACE + +class QHttpNetworkRequest; + +#ifndef HttpMessagePair +typedef QPair<QHttpNetworkRequest, QHttpNetworkReply*> HttpMessagePair; +#endif + +class QSpdyProtocolHandler : public QObject, public QAbstractProtocolHandler { + Q_OBJECT +public: + QSpdyProtocolHandler(QHttpNetworkConnectionChannel *channel); + ~QSpdyProtocolHandler(); + + enum DataFrameFlag { + DataFrame_FLAG_FIN = 0x01, + DataFrame_FLAG_COMPRESS = 0x02 + }; + + Q_DECLARE_FLAGS(DataFrameFlags, DataFrameFlag) + + enum ControlFrameFlag { + ControlFrame_FLAG_FIN = 0x01, + ControlFrame_FLAG_UNIDIRECTIONAL = 0x02 + }; + + Q_DECLARE_FLAGS(ControlFrameFlags, ControlFrameFlag) + + enum SETTINGS_Flag { + FLAG_SETTINGS_CLEAR_SETTINGS = 0x01 + }; + + Q_DECLARE_FLAGS(SETTINGS_Flags, SETTINGS_Flag) + + enum SETTINGS_ID_Flag { + FLAG_SETTINGS_PERSIST_VALUE = 0x01, + FLAG_SETTINGS_PERSISTED = 0x02 + }; + + Q_DECLARE_FLAGS(SETTINGS_ID_Flags, SETTINGS_ID_Flag) + + virtual void _q_receiveReply() Q_DECL_OVERRIDE; + virtual void _q_readyRead() Q_DECL_OVERRIDE; + virtual bool sendRequest() Q_DECL_OVERRIDE; + +private slots: + void _q_uploadDataReadyRead(); + void _q_replyDestroyed(QObject*); + +private: + + enum FrameType { + FrameType_SYN_STREAM = 1, + FrameType_SYN_REPLY = 2, + FrameType_RST_STREAM = 3, + FrameType_SETTINGS = 4, + FrameType_PING = 6, + FrameType_GOAWAY = 7, + FrameType_HEADERS = 8, + FrameType_WINDOW_UPDATE = 9, + FrameType_CREDENTIAL // has a special type + }; + + enum StatusCode { + StatusCode_PROTOCOL_ERROR = 1, + StatusCode_INVALID_STREAM = 2, + StatusCode_REFUSED_STREAM = 3, + StatusCode_UNSUPPORTED_VERSION = 4, + StatusCode_CANCEL = 5, + StatusCode_INTERNAL_ERROR = 6, + StatusCode_FLOW_CONTROL_ERROR = 7, + StatusCode_STREAM_IN_USE = 8, + StatusCode_STREAM_ALREADY_CLOSED = 9, + StatusCode_INVALID_CREDENTIALS = 10, + StatusCode_FRAME_TOO_LARGE = 11 + }; + + enum SETTINGS_ID { + SETTINGS_UPLOAD_BANDWIDTH = 1, + SETTINGS_DOWNLOAD_BANDWIDTH = 2, + SETTINGS_ROUND_TRIP_TIME = 3, + SETTINGS_MAX_CONCURRENT_STREAMS = 4, + SETTINGS_CURRENT_CWND = 5, + SETTINGS_DOWNLOAD_RETRANS_RATE = 6, + SETTINGS_INITIAL_WINDOW_SIZE = 7, + SETTINGS_CLIENT_CERTIFICATE_VECTOR_SIZE = 8 + }; + + enum GOAWAY_STATUS { + GOAWAY_OK = 0, + GOAWAY_PROTOCOL_ERROR = 1, + GOAWAY_INTERNAL_ERROR = 11 + }; + + enum RST_STREAM_STATUS_CODE { + RST_STREAM_PROTOCOL_ERROR = 1, + RST_STREAM_INVALID_STREAM = 2, + RST_STREAM_REFUSED_STREAM = 3, + RST_STREAM_UNSUPPORTED_VERSION = 4, + RST_STREAM_CANCEL = 5, + RST_STREAM_INTERNAL_ERROR = 6, + RST_STREAM_FLOW_CONTROL_ERROR = 7, + RST_STREAM_STREAM_IN_USE = 8, + RST_STREAM_STREAM_ALREADY_CLOSED = 9, + RST_STREAM_INVALID_CREDENTIALS = 10, + RST_STREAM_FRAME_TOO_LARGE = 11 + }; + + quint64 bytesAvailable() const; + bool readNextChunk(qint64 length, char *sink); + + void sendControlFrame(FrameType type, ControlFrameFlags flags, const char *data, quint32 length); + + void sendSYN_STREAM(const HttpMessagePair &pair, qint32 streamID, + qint32 associatedToStreamID); + void sendRST_STREAM(qint32 streamID, RST_STREAM_STATUS_CODE statusCode); + void sendPING(quint32 pingID); + + bool uploadData(qint32 streamID); + Q_INVOKABLE void sendWINDOW_UPDATE(qint32 streamID, quint32 deltaWindowSize); + + qint64 sendDataFrame(qint32 streamID, DataFrameFlags flags, quint32 length, + const char *data); + + QByteArray composeHeader(const QHttpNetworkRequest &request); + bool uncompressHeader(const QByteArray &input, QByteArray *output); + + void handleControlFrame(const QByteArray &frameHeaders); + void handleDataFrame(const QByteArray &frameHeaders); + + void handleSYN_STREAM(char, quint32, const QByteArray &frameData); + void handleSYN_REPLY(char flags, quint32, const QByteArray &frameData); + void handleRST_STREAM(char flags, quint32 length, const QByteArray &frameData); + void handleSETTINGS(char flags, quint32 length, const QByteArray &frameData); + void handlePING(char, quint32 length, const QByteArray &frameData); + void handleGOAWAY(char flags, quint32, const QByteArray &frameData); + void handleHEADERS(char flags, quint32, const QByteArray &frameData); + void handleWINDOW_UPDATE(char, quint32, const QByteArray &frameData); + + qint32 generateNextStreamID(); + void parseHttpHeaders(char flags, const QByteArray &frameData); + + void replyFinished(QHttpNetworkReply *httpReply, qint32 streamID); + void replyFinishedWithError(QHttpNetworkReply *httpReply, qint32 streamID, + QNetworkReply::NetworkError errorCode, const char *errorMessage); + + qint32 m_nextStreamID; + QHash<quint32, HttpMessagePair> m_inFlightStreams; + qint32 m_maxConcurrentStreams; + quint32 m_initialWindowSize; + QByteDataBuffer m_spdyBuffer; + bool m_waitingForCompleteStream; + z_stream m_deflateStream; + z_stream m_inflateStream; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QSpdyProtocolHandler::DataFrameFlags) +Q_DECLARE_OPERATORS_FOR_FLAGS(QSpdyProtocolHandler::ControlFrameFlags) +Q_DECLARE_OPERATORS_FOR_FLAGS(QSpdyProtocolHandler::SETTINGS_Flags) +Q_DECLARE_OPERATORS_FOR_FLAGS(QSpdyProtocolHandler::SETTINGS_ID_Flags) + +QT_END_NAMESPACE + +#endif // !defined(QT_NO_HTTP) && !defined(QT_NO_SSL) + +#endif // QSPDYPROTOCOLHANDLER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qssl_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qssl_p.h new file mode 100644 index 000000000..83ccdc7fc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qssl_p.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSL_P_H +#define QSSL_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qsslcertificate.cpp. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtCore/QLoggingCategory> + +QT_BEGIN_NAMESPACE + +Q_DECLARE_LOGGING_CATEGORY(lcSsl) + +QT_END_NAMESPACE + +#endif // QSSL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcertificate_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcertificate_p.h new file mode 100644 index 000000000..0397845f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcertificate_p.h @@ -0,0 +1,146 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLCERTIFICATE_OPENSSL_P_H +#define QSSLCERTIFICATE_OPENSSL_P_H + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qsslcertificate.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 "qsslsocket_p.h" +#include "qsslcertificateextension.h" +#include <QtCore/qdatetime.h> +#include <QtCore/qmap.h> + +#ifndef QT_NO_OPENSSL +#include <openssl/x509.h> +#else +struct X509; +struct X509_EXTENSION; +struct ASN1_OBJECT; +#endif + +#ifdef Q_OS_WINRT +#include <wrl.h> +#include <windows.security.cryptography.certificates.h> +#endif + +QT_BEGIN_NAMESPACE + +// forward declaration + +class QSslCertificatePrivate +{ +public: + QSslCertificatePrivate() + : null(true), x509(0) + { + QSslSocketPrivate::ensureInitialized(); + } + + ~QSslCertificatePrivate() + { +#ifndef QT_NO_OPENSSL + if (x509) + q_X509_free(x509); +#endif + } + + bool null; + QByteArray versionString; + QByteArray serialNumberString; + + QMap<QByteArray, QString> issuerInfo; + QMap<QByteArray, QString> subjectInfo; + QDateTime notValidAfter; + QDateTime notValidBefore; + +#ifdef QT_NO_OPENSSL + bool subjectMatchesIssuer; + QSsl::KeyAlgorithm publicKeyAlgorithm; + QByteArray publicKeyDerData; + QMultiMap<QSsl::AlternativeNameEntryType, QString> subjectAlternativeNames; + QList<QSslCertificateExtension> extensions; + + QByteArray derData; + + bool parse(const QByteArray &data); + bool parseExtension(const QByteArray &data, QSslCertificateExtension *extension); +#endif + X509 *x509; + + void init(const QByteArray &data, QSsl::EncodingFormat format); + + static QByteArray asn1ObjectId(ASN1_OBJECT *object); + static QByteArray asn1ObjectName(ASN1_OBJECT *object); + static QByteArray QByteArray_from_X509(X509 *x509, QSsl::EncodingFormat format); + static QString text_from_X509(X509 *x509); + static QSslCertificate QSslCertificate_from_X509(X509 *x509); + static QList<QSslCertificate> certificatesFromPem(const QByteArray &pem, int count = -1); + static QList<QSslCertificate> certificatesFromDer(const QByteArray &der, int count = -1); + static bool isBlacklisted(const QSslCertificate &certificate); + static QSslCertificateExtension convertExtension(X509_EXTENSION *ext); + static QByteArray subjectInfoToString(QSslCertificate::SubjectInfo info); + + friend class QSslSocketBackendPrivate; + + QAtomicInt ref; + +#ifdef Q_OS_WINRT + Microsoft::WRL::ComPtr<ABI::Windows::Security::Cryptography::Certificates::ICertificate> certificate; + + static QSslCertificate QSslCertificate_from_Certificate(ABI::Windows::Security::Cryptography::Certificates::ICertificate *iCertificate); +#endif +}; + +QT_END_NAMESPACE + +#endif // QSSLCERTIFICATE_OPENSSL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcertificateextension_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcertificateextension_p.h new file mode 100644 index 000000000..373f92a5c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcertificateextension_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Richard J. Moore <rich@kde.org> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSSLCERTIFICATEEXTENSION_P_H +#define QSSLCERTIFICATEEXTENSION_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "qsslcertificateextension.h" + +QT_BEGIN_NAMESPACE + +class QSslCertificateExtensionPrivate : public QSharedData +{ +public: + inline QSslCertificateExtensionPrivate() + : critical(false), + supported(false) + { + } + + QString oid; + QString name; + QVariant value; + bool critical; + bool supported; +}; + +QT_END_NAMESPACE + +#endif // QSSLCERTIFICATEEXTENSION_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcipher_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcipher_p.h new file mode 100644 index 000000000..b8629f9f9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcipher_p.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSSLCIPHER_P_H +#define QSSLCIPHER_P_H + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qsslcipher.h" + +QT_BEGIN_NAMESPACE + +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +class QSslCipherPrivate +{ +public: + QSslCipherPrivate() + : isNull(true), supportedBits(0), bits(0), + exportable(false), protocol(QSsl::UnknownProtocol) + { + } + + bool isNull; + QString name; + int supportedBits; + int bits; + QString keyExchangeMethod; + QString authenticationMethod; + QString encryptionMethod; + bool exportable; + QString protocolString; + QSsl::SslProtocol protocol; +}; + +QT_END_NAMESPACE + +#endif // QSSLCIPHER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslconfiguration_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslconfiguration_p.h new file mode 100644 index 000000000..6adf2c9b5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslconfiguration_p.h @@ -0,0 +1,151 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/**************************************************************************** +** +** In addition, as a special exception, the copyright holders listed above give +** permission to link the code of its release of Qt with the OpenSSL project's +** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the +** same license as the original version), and distribute the linked executables. +** +** You must comply with the GNU General Public License version 2 in all +** respects for all of the code used other than the "OpenSSL" code. If you +** modify this file, you may extend this exception to your version of the file, +** but you are not obligated to do so. If you do not wish to do so, delete +** this exception statement from your version of this file. +** +****************************************************************************/ + +#ifndef QSSLCONFIGURATION_P_H +#define QSSLCONFIGURATION_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 QSslSocket API. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qsslconfiguration.h" +#include "qlist.h" +#include "qsslcertificate.h" +#include "qsslcipher.h" +#include "qsslkey.h" +#include "qsslellipticcurve.h" +#include "qssldiffiehellmanparameters.h" + +QT_BEGIN_NAMESPACE + +class QSslConfigurationPrivate: public QSharedData +{ +public: + QSslConfigurationPrivate() + : sessionProtocol(QSsl::UnknownProtocol), + protocol(QSsl::SecureProtocols), + peerVerifyMode(QSslSocket::AutoVerifyPeer), + peerVerifyDepth(0), + allowRootCertOnDemandLoading(true), + peerSessionShared(false), + sslOptions(QSslConfigurationPrivate::defaultSslOptions), + dhParams(QSslDiffieHellmanParameters::defaultParameters()), + sslSessionTicketLifeTimeHint(-1), + ephemeralServerKey(), + preSharedKeyIdentityHint(), + nextProtocolNegotiationStatus(QSslConfiguration::NextProtocolNegotiationNone) + { } + + QSslCertificate peerCertificate; + QList<QSslCertificate> peerCertificateChain; + + QList<QSslCertificate> localCertificateChain; + + QSslKey privateKey; + QSslCipher sessionCipher; + QSsl::SslProtocol sessionProtocol; + QList<QSslCipher> ciphers; + QList<QSslCertificate> caCertificates; + + QSsl::SslProtocol protocol; + QSslSocket::PeerVerifyMode peerVerifyMode; + int peerVerifyDepth; + bool allowRootCertOnDemandLoading; + bool peerSessionShared; + + Q_AUTOTEST_EXPORT static bool peerSessionWasShared(const QSslConfiguration &configuration); + + QSsl::SslOptions sslOptions; + + Q_AUTOTEST_EXPORT static const QSsl::SslOptions defaultSslOptions; + + QVector<QSslEllipticCurve> ellipticCurves; + + QSslDiffieHellmanParameters dhParams; + + QByteArray sslSession; + int sslSessionTicketLifeTimeHint; + + QSslKey ephemeralServerKey; + + QByteArray preSharedKeyIdentityHint; + + QList<QByteArray> nextAllowedProtocols; + QByteArray nextNegotiatedProtocol; + QSslConfiguration::NextProtocolNegotiationStatus nextProtocolNegotiationStatus; + + // in qsslsocket.cpp: + static QSslConfiguration defaultConfiguration(); + static void setDefaultConfiguration(const QSslConfiguration &configuration); + static void deepCopyDefaultConfiguration(QSslConfigurationPrivate *config); +}; + +// implemented here for inlining purposes +inline QSslConfiguration::QSslConfiguration(QSslConfigurationPrivate *dd) + : d(dd) +{ +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcontext_openssl_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcontext_openssl_p.h new file mode 100644 index 000000000..06a31af5e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslcontext_openssl_p.h @@ -0,0 +1,130 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLCONTEXT_OPENSSL_P_H +#define QSSLCONTEXT_OPENSSL_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 <QtNetwork/private/qtnetworkglobal_p.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); + static QSharedPointer<QSslContext> sharedFromConfiguration(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 + + QByteArray sessionASN1() const; + void setSessionASN1(const QByteArray &sessionASN1); + int sessionTicketLifeTimeHint() const; + +#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG) + // must be public because we want to use it from an OpenSSL callback + struct NPNContext { + NPNContext() : data(0), + len(0), + status(QSslConfiguration::NextProtocolNegotiationNone) + { } + unsigned char *data; + unsigned short len; + QSslConfiguration::NextProtocolNegotiationStatus status; + }; + NPNContext npnContext() const; +#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ... + +protected: + QSslContext(); + friend class QSharedPointer<QSslContext>; + +private: + static void initSslContext(QSslContext* sslContext, QSslSocket::SslMode mode, const QSslConfiguration &configuration, + bool allowRootCertOnDemandLoading); + +private: + SSL_CTX* ctx; + EVP_PKEY *pkey; + SSL_SESSION *session; + QByteArray m_sessionASN1; + int m_sessionTicketLifeTimeHint; + QSslError::SslError errorCode; + QString errorStr; + QSslConfiguration sslConfiguration; +#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG) + QByteArray m_supportedNPNVersions; + NPNContext m_npnContext; +#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ... +}; + +#endif // QT_NO_SSL + +QT_END_NAMESPACE + +#endif // QSSLCONTEXT_OPENSSL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qssldiffiehellmanparameters_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qssldiffiehellmanparameters_p.h new file mode 100644 index 000000000..dd69895da --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qssldiffiehellmanparameters_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Mikkel Krautz <mikkel@krautz.dk> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLDIFFIEHELLMANPARAMETERS_P_H +#define QSSLDIFFIEHELLMANPARAMETERS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qssldiffiehellmanparameters.cpp. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QSharedData> + +#include "qsslkey.h" +#include "qssldiffiehellmanparameters.h" +#include "qsslsocket_p.h" // includes wincrypt.h + +QT_BEGIN_NAMESPACE + +class QSslDiffieHellmanParametersPrivate : public QSharedData +{ +public: + QSslDiffieHellmanParametersPrivate() : error(QSslDiffieHellmanParameters::NoError) {}; + + void decodeDer(const QByteArray &der); + void decodePem(const QByteArray &pem); + + QSslDiffieHellmanParameters::Error error; + QByteArray derData; +}; + +QT_END_NAMESPACE + +#endif // QSSLDIFFIEHELLMANPARAMETERS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslkey_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslkey_p.h new file mode 100644 index 000000000..c93941c19 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslkey_p.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLKEY_OPENSSL_P_H +#define QSSLKEY_OPENSSL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qsslcertificate.cpp. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qsslkey.h" +#include "qsslsocket_p.h" // includes wincrypt.h + +#ifndef QT_NO_OPENSSL +#include <openssl/rsa.h> +#include <openssl/dsa.h> +#endif + +QT_BEGIN_NAMESPACE + +class QSslKeyPrivate +{ +public: + inline QSslKeyPrivate() + : algorithm(QSsl::Opaque) + , opaque(0) + { + clear(false); + } + + inline ~QSslKeyPrivate() + { clear(); } + + void clear(bool deep = true); + +#ifndef QT_NO_OPENSSL + bool fromEVP_PKEY(EVP_PKEY *pkey); +#endif + void decodeDer(const QByteArray &der, bool deepClear = true); + void decodePem(const QByteArray &pem, const QByteArray &passPhrase, + bool deepClear = true); + QByteArray pemHeader() const; + QByteArray pemFooter() const; + QByteArray pemFromDer(const QByteArray &der, const QMap<QByteArray, QByteArray> &headers) const; + QByteArray derFromPem(const QByteArray &pem, QMap<QByteArray, QByteArray> *headers) const; + + int length() const; + QByteArray toPem(const QByteArray &passPhrase) const; + Qt::HANDLE handle() const; + + bool isNull; + QSsl::KeyType type; + QSsl::KeyAlgorithm algorithm; + + enum Cipher { + DesCbc, + DesEde3Cbc, + Rc2Cbc + }; + + Q_AUTOTEST_EXPORT static QByteArray decrypt(Cipher cipher, const QByteArray &data, const QByteArray &key, const QByteArray &iv); + Q_AUTOTEST_EXPORT static QByteArray encrypt(Cipher cipher, const QByteArray &data, const QByteArray &key, const QByteArray &iv); + +#ifndef QT_NO_OPENSSL + union { + EVP_PKEY *opaque; + RSA *rsa; + DSA *dsa; +#ifndef OPENSSL_NO_EC + EC_KEY *ec; +#endif + }; +#else + Qt::HANDLE opaque; + QByteArray derData; + int keyLength; +#endif + + QAtomicInt ref; + +private: + Q_DISABLE_COPY(QSslKeyPrivate) +}; + +QT_END_NAMESPACE + +#endif // QSSLKEY_OPENSSL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslpresharedkeyauthenticator_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslpresharedkeyauthenticator_p.h new file mode 100644 index 000000000..e5566c3b3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslpresharedkeyauthenticator_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Governikus GmbH & Co. KG. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSSLPRESHAREDKEYAUTHENTICATOR_P_H +#define QSSLPRESHAREDKEYAUTHENTICATOR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QSharedData> + +QT_BEGIN_NAMESPACE + +class QSslPreSharedKeyAuthenticatorPrivate : public QSharedData +{ +public: + QSslPreSharedKeyAuthenticatorPrivate(); + + QByteArray identityHint; + + QByteArray identity; + int maximumIdentityLength; + + QByteArray preSharedKey; + int maximumPreSharedKeyLength; +}; + +QT_END_NAMESPACE + +#endif // QSSLPRESHAREDKEYAUTHENTICATOR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_mac_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_mac_p.h new file mode 100644 index 000000000..9e1d18981 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_mac_p.h @@ -0,0 +1,130 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Jeremy Lainé <jeremy.laine@m4x.org> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSSLSOCKET_MAC_P_H +#define QSSLSOCKET_MAC_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 QtNetwork library. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtCore/qstring.h> +#include <QtCore/qglobal.h> +#include <QtCore/qlist.h> + +#include "qabstractsocket.h" +#include "qsslsocket_p.h" + +#include <Security/Security.h> +#include <Security/SecureTransport.h> + +QT_BEGIN_NAMESPACE + +class QSecureTransportContext +{ +public: + explicit QSecureTransportContext(SSLContextRef context); + ~QSecureTransportContext(); + + operator SSLContextRef () const; + void reset(SSLContextRef newContext); +private: + SSLContextRef context; + + Q_DISABLE_COPY(QSecureTransportContext) +}; + +class QSslSocketBackendPrivate : public QSslSocketPrivate +{ + Q_DECLARE_PUBLIC(QSslSocket) +public: + QSslSocketBackendPrivate(); + virtual ~QSslSocketBackendPrivate(); + + // Final-overriders (QSslSocketPrivate): + void continueHandshake() Q_DECL_OVERRIDE; + void disconnected() Q_DECL_OVERRIDE; + void disconnectFromHost() Q_DECL_OVERRIDE; + QSslCipher sessionCipher() const Q_DECL_OVERRIDE; + QSsl::SslProtocol sessionProtocol() const Q_DECL_OVERRIDE; + void startClientEncryption() Q_DECL_OVERRIDE; + void startServerEncryption() Q_DECL_OVERRIDE; + void transmit() Q_DECL_OVERRIDE; + + static QList<QSslError> verify(QList<QSslCertificate> certificateChain, + const QString &hostName); + + static bool importPkcs12(QIODevice *device, + QSslKey *key, QSslCertificate *cert, + QList<QSslCertificate> *caCertificates, + const QByteArray &passPhrase); + + static QSslCipher QSslCipher_from_SSLCipherSuite(SSLCipherSuite cipher); + +private: + // SSL context management/properties: + bool initSslContext(); + void destroySslContext(); + bool setSessionCertificate(QString &errorDescription, + QAbstractSocket::SocketError &errorCode); + bool setSessionProtocol(); + // Aux. functions to do a verification during handshake phase: + bool canIgnoreTrustVerificationFailure() const; + bool verifySessionProtocol() const; + bool verifyPeerTrust(); + + bool checkSslErrors(); + bool startHandshake(); + + QSecureTransportContext context; + + Q_DISABLE_COPY(QSslSocketBackendPrivate) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_openssl_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_openssl_p.h new file mode 100644 index 000000000..b2adb3e54 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_openssl_p.h @@ -0,0 +1,183 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/**************************************************************************** +** +** In addition, as a special exception, the copyright holders listed above give +** permission to link the code of its release of Qt with the OpenSSL project's +** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the +** same license as the original version), and distribute the linked executables. +** +** You must comply with the GNU General Public License version 2 in all +** respects for all of the code used other than the "OpenSSL" code. If you +** modify this file, you may extend this exception to your version of the file, +** but you are not obligated to do so. If you do not wish to do so, delete +** this exception statement from your version of this file. +** +****************************************************************************/ + +#ifndef QSSLSOCKET_OPENSSL_P_H +#define QSSLSOCKET_OPENSSL_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "qsslsocket_p.h" + +#ifdef Q_OS_WIN +#include <qt_windows.h> +#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> +#include <openssl/bn.h> +#include <openssl/err.h> +#include <openssl/evp.h> +#include <openssl/pem.h> +#include <openssl/pkcs12.h> +#include <openssl/pkcs7.h> +#include <openssl/rand.h> +#include <openssl/ssl.h> +#include <openssl/stack.h> +#include <openssl/x509.h> +#include <openssl/x509v3.h> +#include <openssl/x509_vfy.h> +#include <openssl/dsa.h> +#include <openssl/rsa.h> +#include <openssl/crypto.h> +#include <openssl/tls1.h> + +#if OPENSSL_VERSION_NUMBER >= 0x10000000L +typedef _STACK STACK; +#endif + +QT_BEGIN_NAMESPACE + +struct QSslErrorEntry { + int code; + int depth; + + static QSslErrorEntry fromStoreContext(X509_STORE_CTX *ctx); +}; +Q_DECLARE_TYPEINFO(QSslErrorEntry, Q_PRIMITIVE_TYPE); + +class QSslSocketBackendPrivate : public QSslSocketPrivate +{ + Q_DECLARE_PUBLIC(QSslSocket) +public: + QSslSocketBackendPrivate(); + virtual ~QSslSocketBackendPrivate(); + + // SSL context + bool initSslContext(); + void destroySslContext(); + SSL *ssl; + BIO *readBio; + BIO *writeBio; + SSL_SESSION *session; + QVector<QSslErrorEntry> errorList; +#if OPENSSL_VERSION_NUMBER >= 0x10001000L + static int s_indexForSSLExtraData; // index used in SSL_get_ex_data to get the matching QSslSocketBackendPrivate +#endif + + // Platform specific functions + void startClientEncryption() Q_DECL_OVERRIDE; + void startServerEncryption() Q_DECL_OVERRIDE; + void transmit() Q_DECL_OVERRIDE; + bool startHandshake(); + void disconnectFromHost() Q_DECL_OVERRIDE; + void disconnected() Q_DECL_OVERRIDE; + QSslCipher sessionCipher() const Q_DECL_OVERRIDE; + QSsl::SslProtocol sessionProtocol() const Q_DECL_OVERRIDE; + void continueHandshake() Q_DECL_OVERRIDE; + bool checkSslErrors(); + void storePeerCertificates(); + unsigned int tlsPskClientCallback(const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len); + unsigned int tlsPskServerCallback(const char *identity, unsigned char *psk, unsigned int max_psk_len); +#ifdef Q_OS_WIN + void fetchCaRootForCert(const QSslCertificate &cert); + void _q_caRootLoaded(QSslCertificate,QSslCertificate) Q_DECL_OVERRIDE; +#endif + + Q_AUTOTEST_EXPORT static long setupOpenSslOptions(QSsl::SslProtocol protocol, QSsl::SslOptions sslOptions); + static QSslCipher QSslCipher_from_SSL_CIPHER(SSL_CIPHER *cipher); + static QList<QSslCertificate> STACKOFX509_to_QSslCertificates(STACK_OF(X509) *x509); + static QList<QSslError> verify(const QList<QSslCertificate> &certificateChain, const QString &hostName); + static QString getErrorsFromOpenSsl(); + static bool importPkcs12(QIODevice *device, + QSslKey *key, QSslCertificate *cert, + QList<QSslCertificate> *caCertificates, + const QByteArray &passPhrase); +}; + +#ifdef Q_OS_WIN +class QWindowsCaRootFetcher : public QObject +{ + Q_OBJECT; +public: + QWindowsCaRootFetcher(const QSslCertificate &certificate, QSslSocket::SslMode sslMode); + ~QWindowsCaRootFetcher(); +public slots: + void start(); +signals: + void finished(QSslCertificate brokenChain, QSslCertificate caroot); +private: + QSslCertificate cert; + QSslSocket::SslMode mode; +}; +#endif + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_openssl_symbols_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_openssl_symbols_p.h new file mode 100644 index 000000000..b35a895d3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_openssl_symbols_p.h @@ -0,0 +1,609 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/**************************************************************************** +** +** In addition, as a special exception, the copyright holders listed above give +** permission to link the code of its release of Qt with the OpenSSL project's +** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the +** same license as the original version), and distribute the linked executables. +** +** You must comply with the GNU General Public License version 2 in all +** respects for all of the code used other than the "OpenSSL" code. If you +** modify this file, you may extend this exception to your version of the file, +** but you are not obligated to do so. If you do not wish to do so, delete +** this exception statement from your version of this file. +** +****************************************************************************/ + +#ifndef QSSLSOCKET_OPENSSL_SYMBOLS_P_H +#define QSSLSOCKET_OPENSSL_SYMBOLS_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "qsslsocket_openssl_p.h" +#include <QtCore/qglobal.h> + +QT_BEGIN_NAMESPACE + +#define DUMMYARG + +#if !defined QT_LINKED_OPENSSL +// **************** Shared declarations ****************** +// ret func(arg) + +# define DEFINEFUNC(ret, func, arg, a, err, funcret) \ + typedef ret (*_q_PTR_##func)(arg); \ + static _q_PTR_##func _q_##func = 0; \ + ret q_##func(arg) { \ + if (Q_UNLIKELY(!_q_##func)) { \ + qsslSocketUnresolvedSymbolWarning(#func); \ + err; \ + } \ + funcret _q_##func(a); \ + } + +// ret func(arg1, arg2) +# define DEFINEFUNC2(ret, func, arg1, a, arg2, b, err, funcret) \ + typedef ret (*_q_PTR_##func)(arg1, arg2); \ + static _q_PTR_##func _q_##func = 0; \ + ret q_##func(arg1, arg2) { \ + if (Q_UNLIKELY(!_q_##func)) { \ + qsslSocketUnresolvedSymbolWarning(#func);\ + err; \ + } \ + funcret _q_##func(a, b); \ + } + +// ret func(arg1, arg2, arg3) +# define DEFINEFUNC3(ret, func, arg1, a, arg2, b, arg3, c, err, funcret) \ + typedef ret (*_q_PTR_##func)(arg1, arg2, arg3); \ + static _q_PTR_##func _q_##func = 0; \ + ret q_##func(arg1, arg2, arg3) { \ + if (Q_UNLIKELY(!_q_##func)) { \ + qsslSocketUnresolvedSymbolWarning(#func); \ + err; \ + } \ + funcret _q_##func(a, b, c); \ + } + +// ret func(arg1, arg2, arg3, arg4) +# define DEFINEFUNC4(ret, func, arg1, a, arg2, b, arg3, c, arg4, d, err, funcret) \ + typedef ret (*_q_PTR_##func)(arg1, arg2, arg3, arg4); \ + static _q_PTR_##func _q_##func = 0; \ + ret q_##func(arg1, arg2, arg3, arg4) { \ + if (Q_UNLIKELY(!_q_##func)) { \ + qsslSocketUnresolvedSymbolWarning(#func); \ + err; \ + } \ + funcret _q_##func(a, b, c, d); \ + } + +// ret func(arg1, arg2, arg3, arg4, arg5) +# define DEFINEFUNC5(ret, func, arg1, a, arg2, b, arg3, c, arg4, d, arg5, e, err, funcret) \ + typedef ret (*_q_PTR_##func)(arg1, arg2, arg3, arg4, arg5); \ + static _q_PTR_##func _q_##func = 0; \ + ret q_##func(arg1, arg2, arg3, arg4, arg5) { \ + if (Q_UNLIKELY(!_q_##func)) { \ + qsslSocketUnresolvedSymbolWarning(#func); \ + err; \ + } \ + funcret _q_##func(a, b, c, d, e); \ + } + +// ret func(arg1, arg2, arg3, arg4, arg6) +# define DEFINEFUNC6(ret, func, arg1, a, arg2, b, arg3, c, arg4, d, arg5, e, arg6, f, err, funcret) \ + typedef ret (*_q_PTR_##func)(arg1, arg2, arg3, arg4, arg5, arg6); \ + static _q_PTR_##func _q_##func = 0; \ + ret q_##func(arg1, arg2, arg3, arg4, arg5, arg6) { \ + if (Q_UNLIKELY(!_q_##func)) { \ + qsslSocketUnresolvedSymbolWarning(#func); \ + err; \ + } \ + funcret _q_##func(a, b, c, d, e, f); \ + } + +// ret func(arg1, arg2, arg3, arg4, arg6, arg7) +# define DEFINEFUNC7(ret, func, arg1, a, arg2, b, arg3, c, arg4, d, arg5, e, arg6, f, arg7, g, err, funcret) \ + typedef ret (*_q_PTR_##func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7); \ + static _q_PTR_##func _q_##func = 0; \ + ret q_##func(arg1, arg2, arg3, arg4, arg5, arg6, arg7) { \ + if (Q_UNLIKELY(!_q_##func)) { \ + qsslSocketUnresolvedSymbolWarning(#func); \ + err; \ + } \ + funcret _q_##func(a, b, c, d, e, f, g); \ + } + +// ret func(arg1, arg2, arg3, arg4, arg6, arg7, arg8, arg9) +# define DEFINEFUNC9(ret, func, arg1, a, arg2, b, arg3, c, arg4, d, arg5, e, arg6, f, arg7, g, arg8, h, arg9, i, err, funcret) \ + typedef ret (*_q_PTR_##func)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); \ + static _q_PTR_##func _q_##func = 0; \ + ret q_##func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { \ + if (Q_UNLIKELY(!_q_##func)) { \ + qsslSocketUnresolvedSymbolWarning(#func); \ + err; \ + } \ + funcret _q_##func(a, b, c, d, e, f, g, h, i); \ + } +// **************** Shared declarations ****************** + +#else // !defined QT_LINKED_OPENSSL + +// **************** Static declarations ****************** + +// ret func(arg) +# define DEFINEFUNC(ret, func, arg, a, err, funcret) \ + ret q_##func(arg) { funcret func(a); } + +// ret func(arg1, arg2) +# define DEFINEFUNC2(ret, func, arg1, a, arg2, b, err, funcret) \ + ret q_##func(arg1, arg2) { funcret func(a, b); } + +// ret func(arg1, arg2, arg3) +# define DEFINEFUNC3(ret, func, arg1, a, arg2, b, arg3, c, err, funcret) \ + ret q_##func(arg1, arg2, arg3) { funcret func(a, b, c); } + +// ret func(arg1, arg2, arg3, arg4) +# define DEFINEFUNC4(ret, func, arg1, a, arg2, b, arg3, c, arg4, d, err, funcret) \ + ret q_##func(arg1, arg2, arg3, arg4) { funcret func(a, b, c, d); } + +// ret func(arg1, arg2, arg3, arg4, arg5) +# define DEFINEFUNC5(ret, func, arg1, a, arg2, b, arg3, c, arg4, d, arg5, e, err, funcret) \ + ret q_##func(arg1, arg2, arg3, arg4, arg5) { funcret func(a, b, c, d, e); } + +// ret func(arg1, arg2, arg3, arg4, arg6) +# define DEFINEFUNC6(ret, func, arg1, a, arg2, b, arg3, c, arg4, d, arg5, e, arg6, f, err, funcret) \ + ret q_##func(arg1, arg2, arg3, arg4, arg5, arg6) { funcret func(a, b, c, d, e, f); } + +// ret func(arg1, arg2, arg3, arg4, arg6, arg7) +# define DEFINEFUNC7(ret, func, arg1, a, arg2, b, arg3, c, arg4, d, arg5, e, arg6, f, arg7, g, err, funcret) \ + ret q_##func(arg1, arg2, arg3, arg4, arg5, arg6, arg7) { funcret func(a, b, c, d, e, f, g); } + +// ret func(arg1, arg2, arg3, arg4, arg6, arg7, arg8, arg9) +# define DEFINEFUNC9(ret, func, arg1, a, arg2, b, arg3, c, arg4, d, arg5, e, arg6, f, arg7, g, arg8, h, arg9, i, err, funcret) \ + ret q_##func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { funcret func(a, b, c, d, e, f, g, h, i); } + +// **************** Static declarations ****************** + +#endif // !defined QT_LINKED_OPENSSL + +bool q_resolveOpenSslSymbols(); +long q_ASN1_INTEGER_get(ASN1_INTEGER *a); +unsigned char * q_ASN1_STRING_data(ASN1_STRING *a); +int q_ASN1_STRING_length(ASN1_STRING *a); +int q_ASN1_STRING_to_UTF8(unsigned char **a, ASN1_STRING *b); +long q_BIO_ctrl(BIO *a, int b, long c, void *d); +Q_AUTOTEST_EXPORT int q_BIO_free(BIO *a); +Q_AUTOTEST_EXPORT BIO *q_BIO_new(BIO_METHOD *a); +BIO *q_BIO_new_mem_buf(void *a, int b); +int q_BIO_read(BIO *a, void *b, int c); +Q_AUTOTEST_EXPORT BIO_METHOD *q_BIO_s_mem(); +Q_AUTOTEST_EXPORT int q_BIO_write(BIO *a, const void *b, int c); +int q_BN_num_bits(const BIGNUM *a); +#if OPENSSL_VERSION_NUMBER >= 0x10100000L +int q_BN_is_word(BIGNUM *a, BN_ULONG w); +#else +// BN_is_word is implemented purely as a +// macro in OpenSSL < 1.1. It doesn't +// call any functions. +// +// The implementation of BN_is_word is +// 100% the same between 1.0.0, 1.0.1 +// and 1.0.2. +// +// Users are required to include <openssl/bn.h>. +#define q_BN_is_word BN_is_word +#endif // OPENSSL_VERSION_NUMBER >= 0x10100000L +BN_ULONG q_BN_mod_word(const BIGNUM *a, BN_ULONG w); +#ifndef OPENSSL_NO_EC +const EC_GROUP* q_EC_KEY_get0_group(const EC_KEY* k); +int q_EC_GROUP_get_degree(const EC_GROUP* g); +#endif +int q_CRYPTO_num_locks(); +void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int)); +void q_CRYPTO_set_id_callback(unsigned long (*a)()); +void q_CRYPTO_free(void *a); +DSA *q_DSA_new(); +void q_DSA_free(DSA *a); +X509 *q_d2i_X509(X509 **a, const unsigned char **b, long c); +char *q_ERR_error_string(unsigned long a, char *b); +unsigned long q_ERR_get_error(); +void q_ERR_free_strings(); +void q_EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a); +void q_EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a); +int q_EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int q_EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int q_EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, const unsigned char *key, const unsigned char *iv, int enc); +int q_EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl); +int q_EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); +const EVP_CIPHER *q_EVP_des_cbc(); +const EVP_CIPHER *q_EVP_des_ede3_cbc(); +const EVP_CIPHER *q_EVP_rc2_cbc(); +int q_EVP_PKEY_assign(EVP_PKEY *a, int b, char *c); +Q_AUTOTEST_EXPORT int q_EVP_PKEY_set1_RSA(EVP_PKEY *a, RSA *b); +int q_EVP_PKEY_set1_DSA(EVP_PKEY *a, DSA *b); +#ifndef OPENSSL_NO_EC +int q_EVP_PKEY_set1_EC_KEY(EVP_PKEY *a, EC_KEY *b); +#endif +void q_EVP_PKEY_free(EVP_PKEY *a); +RSA *q_EVP_PKEY_get1_RSA(EVP_PKEY *a); +DSA *q_EVP_PKEY_get1_DSA(EVP_PKEY *a); +#ifndef OPENSSL_NO_EC +EC_KEY *q_EVP_PKEY_get1_EC_KEY(EVP_PKEY *a); +#endif +int q_EVP_PKEY_type(int a); +Q_AUTOTEST_EXPORT EVP_PKEY *q_EVP_PKEY_new(); +int q_i2d_X509(X509 *a, unsigned char **b); +const char *q_OBJ_nid2sn(int a); +const char *q_OBJ_nid2ln(int a); +int q_OBJ_sn2nid(const char *s); +int q_OBJ_ln2nid(const char *s); +int q_i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *obj); +int q_OBJ_obj2txt(char *buf, int buf_len, ASN1_OBJECT *obj, int no_name); +int q_OBJ_obj2nid(const ASN1_OBJECT *a); +#ifdef SSLEAY_MACROS +// ### verify +void *q_PEM_ASN1_read_bio(d2i_of_void *a, const char *b, BIO *c, void **d, pem_password_cb *e, + void *f); +// ### ditto for write +#else +Q_AUTOTEST_EXPORT EVP_PKEY *q_PEM_read_bio_PrivateKey(BIO *a, EVP_PKEY **b, pem_password_cb *c, void *d); +DSA *q_PEM_read_bio_DSAPrivateKey(BIO *a, DSA **b, pem_password_cb *c, void *d); +RSA *q_PEM_read_bio_RSAPrivateKey(BIO *a, RSA **b, pem_password_cb *c, void *d); +#ifndef OPENSSL_NO_EC +EC_KEY *q_PEM_read_bio_ECPrivateKey(BIO *a, EC_KEY **b, pem_password_cb *c, void *d); +#endif +DH *q_PEM_read_bio_DHparams(BIO *a, DH **b, pem_password_cb *c, void *d); +int q_PEM_write_bio_DSAPrivateKey(BIO *a, DSA *b, const EVP_CIPHER *c, unsigned char *d, + int e, pem_password_cb *f, void *g); +int q_PEM_write_bio_RSAPrivateKey(BIO *a, RSA *b, const EVP_CIPHER *c, unsigned char *d, + int e, pem_password_cb *f, void *g); +#ifndef OPENSSL_NO_EC +int q_PEM_write_bio_ECPrivateKey(BIO *a, EC_KEY *b, const EVP_CIPHER *c, unsigned char *d, + int e, pem_password_cb *f, void *g); +#endif +#endif +Q_AUTOTEST_EXPORT EVP_PKEY *q_PEM_read_bio_PUBKEY(BIO *a, EVP_PKEY **b, pem_password_cb *c, void *d); +DSA *q_PEM_read_bio_DSA_PUBKEY(BIO *a, DSA **b, pem_password_cb *c, void *d); +RSA *q_PEM_read_bio_RSA_PUBKEY(BIO *a, RSA **b, pem_password_cb *c, void *d); +#ifndef OPENSSL_NO_EC +EC_KEY *q_PEM_read_bio_EC_PUBKEY(BIO *a, EC_KEY **b, pem_password_cb *c, void *d); +#endif +int q_PEM_write_bio_DSA_PUBKEY(BIO *a, DSA *b); +int q_PEM_write_bio_RSA_PUBKEY(BIO *a, RSA *b); +#ifndef OPENSSL_NO_EC +int q_PEM_write_bio_EC_PUBKEY(BIO *a, EC_KEY *b); +#endif +void q_RAND_seed(const void *a, int b); +int q_RAND_status(); +RSA *q_RSA_new(); +void q_RSA_free(RSA *a); +int q_sk_num(STACK *a); +void q_sk_pop_free(STACK *a, void (*b)(void *)); +#if OPENSSL_VERSION_NUMBER >= 0x10000000L +_STACK *q_sk_new_null(); +void q_sk_push(_STACK *st, void *data); +void q_sk_free(_STACK *a); +void * q_sk_value(STACK *a, int b); +#else +STACK *q_sk_new_null(); +void q_sk_push(STACK *st, char *data); +void q_sk_free(STACK *a); +char * q_sk_value(STACK *a, int b); +#endif +int q_SSL_accept(SSL *a); +int q_SSL_clear(SSL *a); +char *q_SSL_CIPHER_description(SSL_CIPHER *a, char *b, int c); +int q_SSL_CIPHER_get_bits(SSL_CIPHER *a, int *b); +int q_SSL_connect(SSL *a); +int q_SSL_CTX_check_private_key(const SSL_CTX *a); +long q_SSL_CTX_ctrl(SSL_CTX *a, int b, long c, void *d); +void q_SSL_CTX_free(SSL_CTX *a); +#if OPENSSL_VERSION_NUMBER >= 0x10000000L +SSL_CTX *q_SSL_CTX_new(const SSL_METHOD *a); +#else +SSL_CTX *q_SSL_CTX_new(SSL_METHOD *a); +#endif +int q_SSL_CTX_set_cipher_list(SSL_CTX *a, const char *b); +int q_SSL_CTX_set_default_verify_paths(SSL_CTX *a); +void q_SSL_CTX_set_verify(SSL_CTX *a, int b, int (*c)(int, X509_STORE_CTX *)); +void q_SSL_CTX_set_verify_depth(SSL_CTX *a, int b); +int q_SSL_CTX_use_certificate(SSL_CTX *a, X509 *b); +int q_SSL_CTX_use_certificate_file(SSL_CTX *a, const char *b, int c); +int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b); +int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b); +int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c); +X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a); +void q_SSL_free(SSL *a); +STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a); +#if OPENSSL_VERSION_NUMBER >= 0x10000000L +const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a); +#else +SSL_CIPHER *q_SSL_get_current_cipher(SSL *a); +#endif +int q_SSL_version(const SSL *a); +int q_SSL_get_error(SSL *a, int b); +STACK_OF(X509) *q_SSL_get_peer_cert_chain(SSL *a); +X509 *q_SSL_get_peer_certificate(SSL *a); +long q_SSL_get_verify_result(const SSL *a); +int q_SSL_library_init(); +void q_SSL_load_error_strings(); +SSL *q_SSL_new(SSL_CTX *a); +long q_SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg); +int q_SSL_read(SSL *a, void *b, int c); +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 >= 0x10001000L +int q_SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +int q_SSL_set_ex_data(SSL *ssl, int idx, void *arg); +void *q_SSL_get_ex_data(const SSL *ssl, int idx); +#endif +#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK) +typedef unsigned int (*q_psk_client_callback_t)(SSL *ssl, const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len); +void q_SSL_set_psk_client_callback(SSL *ssl, q_psk_client_callback_t callback); +typedef unsigned int (*q_psk_server_callback_t)(SSL *ssl, const char *identity, unsigned char *psk, unsigned int max_psk_len); +void q_SSL_set_psk_server_callback(SSL *ssl, q_psk_server_callback_t callback); +int q_SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *hint); +#endif // OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK) +#if OPENSSL_VERSION_NUMBER >= 0x10000000L +#ifndef OPENSSL_NO_SSL2 +const SSL_METHOD *q_SSLv2_client_method(); +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +const SSL_METHOD *q_SSLv3_client_method(); +#endif +const SSL_METHOD *q_SSLv23_client_method(); +const SSL_METHOD *q_TLSv1_client_method(); +const SSL_METHOD *q_TLSv1_1_client_method(); +const SSL_METHOD *q_TLSv1_2_client_method(); +#ifndef OPENSSL_NO_SSL2 +const SSL_METHOD *q_SSLv2_server_method(); +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +const SSL_METHOD *q_SSLv3_server_method(); +#endif +const SSL_METHOD *q_SSLv23_server_method(); +const SSL_METHOD *q_TLSv1_server_method(); +const SSL_METHOD *q_TLSv1_1_server_method(); +const SSL_METHOD *q_TLSv1_2_server_method(); +#else +#ifndef OPENSSL_NO_SSL2 +SSL_METHOD *q_SSLv2_client_method(); +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +SSL_METHOD *q_SSLv3_client_method(); +#endif +SSL_METHOD *q_SSLv23_client_method(); +SSL_METHOD *q_TLSv1_client_method(); +SSL_METHOD *q_TLSv1_1_client_method(); +SSL_METHOD *q_TLSv1_2_client_method(); +#ifndef OPENSSL_NO_SSL2 +SSL_METHOD *q_SSLv2_server_method(); +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +SSL_METHOD *q_SSLv3_server_method(); +#endif +SSL_METHOD *q_SSLv23_server_method(); +SSL_METHOD *q_TLSv1_server_method(); +SSL_METHOD *q_TLSv1_1_server_method(); +SSL_METHOD *q_TLSv1_2_server_method(); +#endif +int q_SSL_write(SSL *a, const void *b, int c); +int q_X509_cmp(X509 *a, X509 *b); +#ifdef SSLEAY_MACROS +void *q_ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x); +#define q_X509_dup(x509) (X509 *)q_ASN1_dup((i2d_of_void *)q_i2d_X509, \ + (d2i_of_void *)q_d2i_X509,(char *)x509) +#else +X509 *q_X509_dup(X509 *a); +#endif +void q_X509_print(BIO *a, X509*b); +ASN1_OBJECT *q_X509_EXTENSION_get_object(X509_EXTENSION *a); +void q_X509_free(X509 *a); +X509_EXTENSION *q_X509_get_ext(X509 *a, int b); +int q_X509_get_ext_count(X509 *a); +void *q_X509_get_ext_d2i(X509 *a, int b, int *c, int *d); +const X509V3_EXT_METHOD *q_X509V3_EXT_get(X509_EXTENSION *a); +void *q_X509V3_EXT_d2i(X509_EXTENSION *a); +int q_X509_EXTENSION_get_critical(X509_EXTENSION *a); +ASN1_OCTET_STRING *q_X509_EXTENSION_get_data(X509_EXTENSION *a); +void q_BASIC_CONSTRAINTS_free(BASIC_CONSTRAINTS *a); +void q_AUTHORITY_KEYID_free(AUTHORITY_KEYID *a); +#if OPENSSL_VERSION_NUMBER >= 0x10000000L +int q_ASN1_STRING_print(BIO *a, const ASN1_STRING *b); +#else +int q_ASN1_STRING_print(BIO *a, ASN1_STRING *b); +#endif +int q_X509_check_issued(X509 *a, X509 *b); +X509_NAME *q_X509_get_issuer_name(X509 *a); +X509_NAME *q_X509_get_subject_name(X509 *a); +int q_X509_verify_cert(X509_STORE_CTX *ctx); +int q_X509_NAME_entry_count(X509_NAME *a); +X509_NAME_ENTRY *q_X509_NAME_get_entry(X509_NAME *a,int b); +ASN1_STRING *q_X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *a); +ASN1_OBJECT *q_X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *a); +EVP_PKEY *q_X509_PUBKEY_get(X509_PUBKEY *a); +void q_X509_STORE_free(X509_STORE *store); +X509_STORE *q_X509_STORE_new(); +int q_X509_STORE_add_cert(X509_STORE *ctx, X509 *x); +void q_X509_STORE_CTX_free(X509_STORE_CTX *storeCtx); +int q_X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, + X509 *x509, STACK_OF(X509) *chain); +X509_STORE_CTX *q_X509_STORE_CTX_new(); +int q_X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int q_X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); +int q_X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); +X509 *q_X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx); + +// Diffie-Hellman support +DH *q_DH_new(); +void q_DH_free(DH *dh); +DH *q_d2i_DHparams(DH **a, const unsigned char **pp, long length); +int q_i2d_DHparams(DH *a, unsigned char **p); +int q_DH_check(DH *dh, int *codes); + +BIGNUM *q_BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +#define q_SSL_CTX_set_tmp_dh(ctx, dh) q_SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_DH, 0, (char *)dh) + +#ifndef OPENSSL_NO_EC +// EC Diffie-Hellman support +EC_KEY *q_EC_KEY_dup(const EC_KEY *src); +EC_KEY *q_EC_KEY_new_by_curve_name(int nid); +void q_EC_KEY_free(EC_KEY *ecdh); +#define q_SSL_CTX_set_tmp_ecdh(ctx, ecdh) q_SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_ECDH, 0, (char *)ecdh) + +// EC curves management +size_t q_EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); +#if OPENSSL_VERSION_NUMBER >= 0x10002000L +int q_EC_curve_nist2nid(const char *name); +#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L +#endif // OPENSSL_NO_EC +#if OPENSSL_VERSION_NUMBER >= 0x10002000L +#define q_SSL_get_server_tmp_key(ssl, key) q_SSL_ctrl((ssl), SSL_CTRL_GET_SERVER_TMP_KEY, 0, (char *)key) +#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L + +// PKCS#12 support +int q_PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +PKCS12 *q_d2i_PKCS12_bio(BIO *bio, PKCS12 **pkcs12); +void q_PKCS12_free(PKCS12 *pkcs12); + + +#define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) +#define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +#ifdef SSLEAY_MACROS +int q_i2d_DSAPrivateKey(const DSA *a, unsigned char **pp); +int q_i2d_RSAPrivateKey(const RSA *a, unsigned char **pp); +RSA *q_d2i_RSAPrivateKey(RSA **a, unsigned char **pp, long length); +DSA *q_d2i_DSAPrivateKey(DSA **a, unsigned char **pp, long length); +#define q_PEM_read_bio_RSAPrivateKey(bp, x, cb, u) \ + (RSA *)q_PEM_ASN1_read_bio( \ + (void *(*)(void**, const unsigned char**, long int))q_d2i_RSAPrivateKey, PEM_STRING_RSA, bp, (void **)x, cb, u) +#define q_PEM_read_bio_DSAPrivateKey(bp, x, cb, u) \ + (DSA *)q_PEM_ASN1_read_bio( \ + (void *(*)(void**, const unsigned char**, long int))q_d2i_DSAPrivateKey, PEM_STRING_DSA, bp, (void **)x, cb, u) +#define q_PEM_write_bio_RSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \ + PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_RSAPrivateKey,PEM_STRING_RSA,\ + bp,(char *)x,enc,kstr,klen,cb,u) +#define q_PEM_write_bio_DSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \ + PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\ + bp,(char *)x,enc,kstr,klen,cb,u) +#define q_PEM_read_bio_DHparams(bp, dh, cb, u) \ + (DH *)q_PEM_ASN1_read_bio( \ + (void *(*)(void**, const unsigned char**, long int))q_d2i_DHparams, PEM_STRING_DHPARAMS, bp, (void **)x, cb, u) +#endif +#define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) +#define q_SSL_CTX_set_mode(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) +#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st) +#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i) +#define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st)) +#define q_sk_GENERAL_NAME_value(st, i) q_SKM_sk_value(GENERAL_NAME, (st), (i)) +#define q_sk_X509_num(st) q_SKM_sk_num(X509, (st)) +#define q_sk_X509_value(st, i) q_SKM_sk_value(X509, (st), (i)) +#define q_sk_SSL_CIPHER_num(st) q_SKM_sk_num(SSL_CIPHER, (st)) +#define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i)) +#define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \ + q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) +#define q_X509_get_notAfter(x) X509_get_notAfter(x) +#define q_X509_get_notBefore(x) X509_get_notBefore(x) +#define q_EVP_PKEY_assign_RSA(pkey,rsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) +#define q_EVP_PKEY_assign_DSA(pkey,dsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (char *)(dsa)) +#define q_OpenSSL_add_all_algorithms() q_OPENSSL_add_all_algorithms_conf() +void q_OPENSSL_add_all_algorithms_noconf(); +void q_OPENSSL_add_all_algorithms_conf(); +int q_SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath); +long q_SSLeay(); +const char *q_SSLeay_version(int type); +int q_i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); +SSL_SESSION *q_d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); + +#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG) +int q_SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, unsigned int client_len); +void q_SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + int (*cb) (SSL *ssl, unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, void *arg), + void *arg); +void q_SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +#if OPENSSL_VERSION_NUMBER >= 0x10002000L +int q_SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned protos_len); +void q_SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), void *arg); +void q_SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned *len); +#endif +#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ... + +// Helper function +class QDateTime; +QDateTime q_getTimeFromASN1(const ASN1_TIME *aTime); + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_p.h new file mode 100644 index 000000000..827f27cff --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_p.h @@ -0,0 +1,225 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLSOCKET_P_H +#define QSSLSOCKET_P_H + +#include "qsslsocket.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 <QtNetwork/private/qtnetworkglobal_p.h> +#include <private/qtcpsocket_p.h> +#include "qsslkey.h" +#include "qsslconfiguration_p.h" +#ifndef QT_NO_OPENSSL +#include <private/qsslcontext_openssl_p.h> +#else +class QSslContext; +#endif + +#include <QtCore/qstringlist.h> + +#include <private/qringbuffer_p.h> + +#if defined(Q_OS_MAC) +#include <Security/SecCertificate.h> +#include <CoreFoundation/CFArray.h> +#elif defined(Q_OS_WIN) +#include <QtCore/qt_windows.h> +#ifndef Q_OS_WINRT +#include <wincrypt.h> +#endif // !Q_OS_WINRT +#ifndef HCRYPTPROV_LEGACY +#define HCRYPTPROV_LEGACY HCRYPTPROV +#endif // !HCRYPTPROV_LEGACY +#endif // Q_OS_WIN + +QT_BEGIN_NAMESPACE + +#if defined(Q_OS_MACX) + typedef CFDataRef (*PtrSecCertificateCopyData)(SecCertificateRef); + typedef OSStatus (*PtrSecTrustSettingsCopyCertificates)(int, CFArrayRef*); + typedef OSStatus (*PtrSecTrustCopyAnchorCertificates)(CFArrayRef*); +#endif + +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) + typedef HCERTSTORE (WINAPI *PtrCertOpenSystemStoreW)(HCRYPTPROV_LEGACY, LPCWSTR); + typedef PCCERT_CONTEXT (WINAPI *PtrCertFindCertificateInStore)(HCERTSTORE, DWORD, DWORD, DWORD, const void*, PCCERT_CONTEXT); + typedef BOOL (WINAPI *PtrCertCloseStore)(HCERTSTORE, DWORD); +#endif // Q_OS_WIN && !Q_OS_WINRT + + + +class QSslSocketPrivate : public QTcpSocketPrivate +{ + Q_DECLARE_PUBLIC(QSslSocket) +public: + QSslSocketPrivate(); + virtual ~QSslSocketPrivate(); + + void init(); + bool initialized; + + QSslSocket::SslMode mode; + bool autoStartHandshake; + bool connectionEncrypted; + bool shutdown; + bool ignoreAllSslErrors; + QList<QSslError> ignoreErrorsList; + bool* readyReadEmittedPointer; + + 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. + QString verificationPeerName; + + bool allowRootCertOnDemandLoading; + + static bool s_loadRootCertsOnDemand; + + static bool supportsSsl(); + static long sslLibraryVersionNumber(); + static QString sslLibraryVersionString(); + static long sslLibraryBuildVersionNumber(); + static QString sslLibraryBuildVersionString(); + static void ensureInitialized(); + static void deinitialize(); + static QList<QSslCipher> defaultCiphers(); + static QList<QSslCipher> supportedCiphers(); + static void setDefaultCiphers(const QList<QSslCipher> &ciphers); + static void setDefaultSupportedCiphers(const QList<QSslCipher> &ciphers); + static void resetDefaultCiphers(); + + static QVector<QSslEllipticCurve> supportedEllipticCurves(); + static void setDefaultSupportedEllipticCurves(const QVector<QSslEllipticCurve> &curves); + static void resetDefaultEllipticCurves(); + + static QList<QSslCertificate> defaultCaCertificates(); + static QList<QSslCertificate> systemCaCertificates(); + static void setDefaultCaCertificates(const QList<QSslCertificate> &certs); + static bool addDefaultCaCertificates(const QString &path, QSsl::EncodingFormat format, + QRegExp::PatternSyntax syntax); + static void addDefaultCaCertificate(const QSslCertificate &cert); + static void addDefaultCaCertificates(const QList<QSslCertificate> &certs); + Q_AUTOTEST_EXPORT static bool isMatchingHostname(const QSslCertificate &cert, + const QString &peerName); + Q_AUTOTEST_EXPORT static bool isMatchingHostname(const QString &cn, const QString &hostname); + +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) + static PtrCertOpenSystemStoreW ptrCertOpenSystemStoreW; + static PtrCertFindCertificateInStore ptrCertFindCertificateInStore; + static PtrCertCloseStore ptrCertCloseStore; +#endif // Q_OS_WIN && !Q_OS_WINRT + + // The socket itself, including private slots. + QTcpSocket *plainSocket; + 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; + bool bind(const QHostAddress &address, quint16, QAbstractSocket::BindMode) Q_DECL_OVERRIDE; + void _q_connectedSlot(); + void _q_hostFoundSlot(); + void _q_disconnectedSlot(); + void _q_stateChangedSlot(QAbstractSocket::SocketState); + void _q_errorSlot(QAbstractSocket::SocketError); + void _q_readyReadSlot(); + void _q_channelReadyReadSlot(int); + void _q_bytesWrittenSlot(qint64); + void _q_channelBytesWrittenSlot(int, qint64); + void _q_readChannelFinishedSlot(); + void _q_flushWriteBuffer(); + void _q_flushReadBuffer(); + void _q_resumeImplementation(); +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) + virtual void _q_caRootLoaded(QSslCertificate,QSslCertificate) = 0; +#endif + + static QList<QByteArray> unixRootCertDirectories(); // used also by QSslContext + + virtual qint64 peek(char *data, qint64 maxSize) Q_DECL_OVERRIDE; + virtual QByteArray peek(qint64 maxSize) Q_DECL_OVERRIDE; + bool flush() Q_DECL_OVERRIDE; + + // Platform specific functions + virtual void startClientEncryption() = 0; + virtual void startServerEncryption() = 0; + virtual void transmit() = 0; + virtual void disconnectFromHost() = 0; + virtual void disconnected() = 0; + virtual QSslCipher sessionCipher() const = 0; + virtual QSsl::SslProtocol sessionProtocol() const = 0; + virtual void continueHandshake() = 0; + + Q_AUTOTEST_EXPORT static bool rootCertOnDemandLoadingSupported(); + +private: + static bool ensureLibraryLoaded(); + static void ensureCiphersAndCertsLoaded(); +#if defined(Q_OS_ANDROID) + static QList<QByteArray> fetchSslCertificateData(); +#endif + + static bool s_libraryLoaded; + static bool s_loadedCiphersAndCerts; +protected: + bool verifyErrorsHaveBeenIgnored(); + bool paused; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_winrt_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_winrt_p.h new file mode 100644 index 000000000..1043aeee1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qsslsocket_winrt_p.h @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSSLSOCKET_WINRT_P_H +#define QSSLSOCKET_WINRT_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 QtNetwork library. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtNetwork/private/qtnetworkglobal_p.h> +#include "qsslsocket_p.h" + +#include <wrl.h> +#include <windows.networking.sockets.h> + +QT_BEGIN_NAMESPACE + +class QSslSocketConnectionHelper : public QObject +{ + Q_OBJECT +public: + QSslSocketConnectionHelper(QSslSocketBackendPrivate *d) + : d(d) { } + + Q_INVOKABLE void disconnectSocketFromHost(); + +private: + QSslSocketBackendPrivate *d; +}; + +class QSslSocketBackendPrivate : public QSslSocketPrivate +{ + Q_DECLARE_PUBLIC(QSslSocket) +public: + QSslSocketBackendPrivate(); + ~QSslSocketBackendPrivate(); + + // Platform specific functions + void startClientEncryption() Q_DECL_OVERRIDE; + void startServerEncryption() Q_DECL_OVERRIDE; + void transmit() Q_DECL_OVERRIDE; + void disconnectFromHost() Q_DECL_OVERRIDE; + void disconnected() Q_DECL_OVERRIDE; + QSslCipher sessionCipher() const Q_DECL_OVERRIDE; + QSsl::SslProtocol sessionProtocol() const Q_DECL_OVERRIDE; + void continueHandshake() Q_DECL_OVERRIDE; + + static QList<QSslCipher> defaultCiphers(); + static QList<QSslError> verify(const QList<QSslCertificate> &certificateChain, const QString &hostName); + static bool importPkcs12(QIODevice *device, + QSslKey *key, QSslCertificate *cert, + QList<QSslCertificate> *caCertificates, + const QByteArray &passPhrase); + +private: + HRESULT onSslUpgrade(ABI::Windows::Foundation::IAsyncAction *, + ABI::Windows::Foundation::AsyncStatus); + + QScopedPointer<QSslSocketConnectionHelper> connectionHelper; + ABI::Windows::Networking::Sockets::SocketProtectionLevel protectionLevel; + QSet<QSslCertificate> previousCaCertificates; +}; + +QT_END_NAMESPACE + +#endif // QSSLSOCKET_WINRT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtcpserver_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtcpserver_p.h new file mode 100644 index 000000000..71dc4d985 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtcpserver_p.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Alex Trotsenko <alex1973tr@gmail.com> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTCPSERVER_P_H +#define QTCPSERVER_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include "QtNetwork/qtcpserver.h" +#include "private/qobject_p.h" +#include "private/qabstractsocketengine_p.h" +#include "QtNetwork/qabstractsocket.h" +#include "qnetworkproxy.h" +#include "QtCore/qlist.h" +#include "qhostaddress.h" + +QT_BEGIN_NAMESPACE + +class QTcpServerPrivate : public QObjectPrivate, public QAbstractSocketEngineReceiver +{ + Q_DECLARE_PUBLIC(QTcpServer) +public: + QTcpServerPrivate(); + ~QTcpServerPrivate(); + + QList<QTcpSocket *> pendingConnections; + + quint16 port; + QHostAddress address; + + QAbstractSocket::SocketType socketType; + QAbstractSocket::SocketState state; + QAbstractSocketEngine *socketEngine; + + QAbstractSocket::SocketError serverSocketError; + QString serverSocketErrorString; + + int maxConnections; + +#ifndef QT_NO_NETWORKPROXY + QNetworkProxy proxy; + QNetworkProxy resolveProxy(const QHostAddress &address, quint16 port); +#endif + + virtual void configureCreatedSocket(); + + // from QAbstractSocketEngineReceiver + void readNotification() Q_DECL_OVERRIDE; + void closeNotification() Q_DECL_OVERRIDE { readNotification(); } + void writeNotification() Q_DECL_OVERRIDE {} + void exceptionNotification() Q_DECL_OVERRIDE {} + void connectionNotification() Q_DECL_OVERRIDE {} +#ifndef QT_NO_NETWORKPROXY + void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *) Q_DECL_OVERRIDE {} +#endif + +}; + +QT_END_NAMESPACE + +#endif // QTCPSERVER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtcpsocket_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtcpsocket_p.h new file mode 100644 index 000000000..ba1a0aa92 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtcpsocket_p.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTCPSOCKET_P_H +#define QTCPSOCKET_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtNetwork/qtcpsocket.h> +#include <private/qabstractsocket_p.h> + +QT_BEGIN_NAMESPACE + +class QTcpSocketPrivate : public QAbstractSocketPrivate +{ + Q_DECLARE_PUBLIC(QTcpSocket) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtnetwork-config_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtnetwork-config_p.h new file mode 100644 index 000000000..2ad7c88fa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtnetwork-config_p.h @@ -0,0 +1,5 @@ +#define QT_FEATURE_libproxy -1 +#define QT_FEATURE_securetransport -1 +#define QT_FEATURE_openssl_linked -1 +#define QT_FEATURE_openssl 1 +#define QT_FEATURE_system_proxies 1 diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtnetworkglobal_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtnetworkglobal_p.h new file mode 100644 index 000000000..859e3d9eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qtnetworkglobal_p.h @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTNETWORKGLOBAL_P_H +#define QTNETWORKGLOBAL_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 <QtNetwork/qtnetworkglobal.h> +#include <QtCore/private/qglobal_p.h> +#include <QtNetwork/private/qtnetwork-config_p.h> + +#endif // QTNETWORKGLOBAL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qurlinfo_p.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qurlinfo_p.h new file mode 100644 index 000000000..8180796f4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/5.9.4/QtNetwork/private/qurlinfo_p.h @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QURLINFO_H +#define QURLINFO_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 <QtNetwork/private/qtnetworkglobal_p.h> +#include <QtCore/qdatetime.h> +#include <QtCore/qstring.h> +#include <QtCore/qiodevice.h> + +QT_REQUIRE_CONFIG(ftp); + +QT_BEGIN_NAMESPACE + +class QUrl; +class QUrlInfoPrivate; + +class Q_NETWORK_EXPORT QUrlInfo +{ +public: + enum PermissionSpec { + ReadOwner = 00400, WriteOwner = 00200, ExeOwner = 00100, + ReadGroup = 00040, WriteGroup = 00020, ExeGroup = 00010, + ReadOther = 00004, WriteOther = 00002, ExeOther = 00001 }; + + QUrlInfo(); + QUrlInfo(const QUrlInfo &ui); + QUrlInfo(const QString &name, int permissions, const QString &owner, + const QString &group, qint64 size, const QDateTime &lastModified, + const QDateTime &lastRead, bool isDir, bool isFile, bool isSymLink, + bool isWritable, bool isReadable, bool isExecutable); + QUrlInfo(const QUrl &url, int permissions, const QString &owner, + const QString &group, qint64 size, const QDateTime &lastModified, + const QDateTime &lastRead, bool isDir, bool isFile, bool isSymLink, + bool isWritable, bool isReadable, bool isExecutable); + QUrlInfo &operator=(const QUrlInfo &ui); + virtual ~QUrlInfo(); + + virtual void setName(const QString &name); + virtual void setDir(bool b); + virtual void setFile(bool b); + virtual void setSymLink(bool b); + virtual void setOwner(const QString &s); + virtual void setGroup(const QString &s); + virtual void setSize(qint64 size); + virtual void setWritable(bool b); + virtual void setReadable(bool b); + virtual void setPermissions(int p); + virtual void setLastModified(const QDateTime &dt); + void setLastRead(const QDateTime &dt); + + bool isValid() const; + + QString name() const; + int permissions() const; + QString owner() const; + QString group() const; + qint64 size() const; + QDateTime lastModified() const; + QDateTime lastRead() const; + bool isDir() const; + bool isFile() const; + bool isSymLink() const; + bool isWritable() const; + bool isReadable() const; + bool isExecutable() const; + + static bool greaterThan(const QUrlInfo &i1, const QUrlInfo &i2, + int sortBy); + static bool lessThan(const QUrlInfo &i1, const QUrlInfo &i2, + int sortBy); + static bool equal(const QUrlInfo &i1, const QUrlInfo &i2, + int sortBy); + + bool operator==(const QUrlInfo &i) const; + inline bool operator!=(const QUrlInfo &i) const + { return !operator==(i); } + +private: + QUrlInfoPrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QURLINFO_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QAbstractNetworkCache b/qrenderdoc/3rdparty/qt/include/QtNetwork/QAbstractNetworkCache new file mode 100644 index 000000000..d6a6b3a1d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QAbstractNetworkCache @@ -0,0 +1 @@ +#include "qabstractnetworkcache.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QAbstractSocket b/qrenderdoc/3rdparty/qt/include/QtNetwork/QAbstractSocket new file mode 100644 index 000000000..4c1f7669c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QAbstractSocket @@ -0,0 +1 @@ +#include "qabstractsocket.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QAuthenticator b/qrenderdoc/3rdparty/qt/include/QtNetwork/QAuthenticator new file mode 100644 index 000000000..dcb0bfc53 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QAuthenticator @@ -0,0 +1 @@ +#include "qauthenticator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsDomainNameRecord b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsDomainNameRecord new file mode 100644 index 000000000..8f4d85e08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsDomainNameRecord @@ -0,0 +1 @@ +#include "qdnslookup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsHostAddressRecord b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsHostAddressRecord new file mode 100644 index 000000000..8f4d85e08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsHostAddressRecord @@ -0,0 +1 @@ +#include "qdnslookup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsLookup b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsLookup new file mode 100644 index 000000000..8f4d85e08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsLookup @@ -0,0 +1 @@ +#include "qdnslookup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsMailExchangeRecord b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsMailExchangeRecord new file mode 100644 index 000000000..8f4d85e08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsMailExchangeRecord @@ -0,0 +1 @@ +#include "qdnslookup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsServiceRecord b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsServiceRecord new file mode 100644 index 000000000..8f4d85e08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsServiceRecord @@ -0,0 +1 @@ +#include "qdnslookup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsTextRecord b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsTextRecord new file mode 100644 index 000000000..8f4d85e08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QDnsTextRecord @@ -0,0 +1 @@ +#include "qdnslookup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QHostAddress b/qrenderdoc/3rdparty/qt/include/QtNetwork/QHostAddress new file mode 100644 index 000000000..6b1e69f47 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QHostAddress @@ -0,0 +1 @@ +#include "qhostaddress.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QHostInfo b/qrenderdoc/3rdparty/qt/include/QtNetwork/QHostInfo new file mode 100644 index 000000000..3dc028d0b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QHostInfo @@ -0,0 +1 @@ +#include "qhostinfo.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QHstsPolicy b/qrenderdoc/3rdparty/qt/include/QtNetwork/QHstsPolicy new file mode 100644 index 000000000..fe89def9e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QHstsPolicy @@ -0,0 +1 @@ +#include "qhstspolicy.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QHttpMultiPart b/qrenderdoc/3rdparty/qt/include/QtNetwork/QHttpMultiPart new file mode 100644 index 000000000..7ae60ad02 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QHttpMultiPart @@ -0,0 +1 @@ +#include "qhttpmultipart.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QHttpPart b/qrenderdoc/3rdparty/qt/include/QtNetwork/QHttpPart new file mode 100644 index 000000000..7ae60ad02 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QHttpPart @@ -0,0 +1 @@ +#include "qhttpmultipart.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QIPv6Address b/qrenderdoc/3rdparty/qt/include/QtNetwork/QIPv6Address new file mode 100644 index 000000000..6b1e69f47 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QIPv6Address @@ -0,0 +1 @@ +#include "qhostaddress.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QLocalServer b/qrenderdoc/3rdparty/qt/include/QtNetwork/QLocalServer new file mode 100644 index 000000000..a2e72caee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QLocalServer @@ -0,0 +1 @@ +#include "qlocalserver.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QLocalSocket b/qrenderdoc/3rdparty/qt/include/QtNetwork/QLocalSocket new file mode 100644 index 000000000..96fe73c64 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QLocalSocket @@ -0,0 +1 @@ +#include "qlocalsocket.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkAccessManager b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkAccessManager new file mode 100644 index 000000000..b9234981b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkAccessManager @@ -0,0 +1 @@ +#include "qnetworkaccessmanager.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkAddressEntry b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkAddressEntry new file mode 100644 index 000000000..3ed0cbcbf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkAddressEntry @@ -0,0 +1 @@ +#include "qnetworkinterface.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkCacheMetaData b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkCacheMetaData new file mode 100644 index 000000000..d6a6b3a1d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkCacheMetaData @@ -0,0 +1 @@ +#include "qabstractnetworkcache.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkConfiguration b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkConfiguration new file mode 100644 index 000000000..bc737e657 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkConfiguration @@ -0,0 +1 @@ +#include "qnetworkconfiguration.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkConfigurationManager b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkConfigurationManager new file mode 100644 index 000000000..7b2037e63 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkConfigurationManager @@ -0,0 +1 @@ +#include "qnetworkconfigmanager.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkCookie b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkCookie new file mode 100644 index 000000000..3c68524f7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkCookie @@ -0,0 +1 @@ +#include "qnetworkcookie.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkCookieJar b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkCookieJar new file mode 100644 index 000000000..1eaebedfc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkCookieJar @@ -0,0 +1 @@ +#include "qnetworkcookiejar.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkDatagram b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkDatagram new file mode 100644 index 000000000..75e694c4d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkDatagram @@ -0,0 +1 @@ +#include "qnetworkdatagram.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkDiskCache b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkDiskCache new file mode 100644 index 000000000..0753aab5b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkDiskCache @@ -0,0 +1 @@ +#include "qnetworkdiskcache.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkInterface b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkInterface new file mode 100644 index 000000000..3ed0cbcbf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkInterface @@ -0,0 +1 @@ +#include "qnetworkinterface.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkProxy b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkProxy new file mode 100644 index 000000000..c192c3fa6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkProxy @@ -0,0 +1 @@ +#include "qnetworkproxy.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkProxyFactory b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkProxyFactory new file mode 100644 index 000000000..c192c3fa6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkProxyFactory @@ -0,0 +1 @@ +#include "qnetworkproxy.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkProxyQuery b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkProxyQuery new file mode 100644 index 000000000..c192c3fa6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkProxyQuery @@ -0,0 +1 @@ +#include "qnetworkproxy.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkReply b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkReply new file mode 100644 index 000000000..e6ebfbe77 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkReply @@ -0,0 +1 @@ +#include "qnetworkreply.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkRequest b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkRequest new file mode 100644 index 000000000..477436c4a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkRequest @@ -0,0 +1 @@ +#include "qnetworkrequest.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkSession b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkSession new file mode 100644 index 000000000..b6c02a175 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QNetworkSession @@ -0,0 +1 @@ +#include "qnetworksession.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSctpServer b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSctpServer new file mode 100644 index 000000000..1d45d5e97 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSctpServer @@ -0,0 +1 @@ +#include "qsctpserver.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSctpSocket b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSctpSocket new file mode 100644 index 000000000..cd721dc88 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSctpSocket @@ -0,0 +1 @@ +#include "qsctpsocket.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSsl b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSsl new file mode 100644 index 000000000..7f904ee90 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSsl @@ -0,0 +1 @@ +#include "qssl.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslCertificate b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslCertificate new file mode 100644 index 000000000..eadafb9be --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslCertificate @@ -0,0 +1 @@ +#include "qsslcertificate.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslCertificateExtension b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslCertificateExtension new file mode 100644 index 000000000..0502b6d5e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslCertificateExtension @@ -0,0 +1 @@ +#include "qsslcertificateextension.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslCipher b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslCipher new file mode 100644 index 000000000..b54553322 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslCipher @@ -0,0 +1 @@ +#include "qsslcipher.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslConfiguration b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslConfiguration new file mode 100644 index 000000000..aa4290cac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslConfiguration @@ -0,0 +1 @@ +#include "qsslconfiguration.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslDiffieHellmanParameters b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslDiffieHellmanParameters new file mode 100644 index 000000000..04e2e6444 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslDiffieHellmanParameters @@ -0,0 +1 @@ +#include "qssldiffiehellmanparameters.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslEllipticCurve b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslEllipticCurve new file mode 100644 index 000000000..a14345a1b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslEllipticCurve @@ -0,0 +1 @@ +#include "qsslellipticcurve.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslError b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslError new file mode 100644 index 000000000..ee182801b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslError @@ -0,0 +1 @@ +#include "qsslerror.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslKey b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslKey new file mode 100644 index 000000000..b00e4ef54 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslKey @@ -0,0 +1 @@ +#include "qsslkey.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslPreSharedKeyAuthenticator b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslPreSharedKeyAuthenticator new file mode 100644 index 000000000..d20411487 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslPreSharedKeyAuthenticator @@ -0,0 +1 @@ +#include "qsslpresharedkeyauthenticator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslSocket b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslSocket new file mode 100644 index 000000000..2c40de76e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QSslSocket @@ -0,0 +1 @@ +#include "qsslsocket.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QTcpServer b/qrenderdoc/3rdparty/qt/include/QtNetwork/QTcpServer new file mode 100644 index 000000000..03365a62f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QTcpServer @@ -0,0 +1 @@ +#include "qtcpserver.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QTcpSocket b/qrenderdoc/3rdparty/qt/include/QtNetwork/QTcpSocket new file mode 100644 index 000000000..cb6c61164 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QTcpSocket @@ -0,0 +1 @@ +#include "qtcpsocket.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QUdpSocket b/qrenderdoc/3rdparty/qt/include/QtNetwork/QUdpSocket new file mode 100644 index 000000000..0b29348a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QUdpSocket @@ -0,0 +1 @@ +#include "qudpsocket.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/Q_IPV6ADDR b/qrenderdoc/3rdparty/qt/include/QtNetwork/Q_IPV6ADDR new file mode 100644 index 000000000..6b1e69f47 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/Q_IPV6ADDR @@ -0,0 +1 @@ +#include "qhostaddress.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QtNetwork b/qrenderdoc/3rdparty/qt/include/QtNetwork/QtNetwork new file mode 100644 index 000000000..55fc1b0ee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QtNetwork @@ -0,0 +1,50 @@ +#ifndef QT_QTNETWORK_MODULE_H +#define QT_QTNETWORK_MODULE_H +#include <QtNetwork/QtNetworkDepends> +#include "qtnetworkglobal.h" +#include "qabstractnetworkcache.h" +#include "qabstractsocket.h" +#include "qauthenticator.h" +#include "qdnslookup.h" +#include "qhostaddress.h" +#include "qhostinfo.h" +#include "qhstspolicy.h" +#include "qhttpmultipart.h" +#if QT_CONFIG(localserver) +#include "qlocalserver.h" +#endif +#if QT_CONFIG(localserver) +#include "qlocalsocket.h" +#endif +#include "qnetworkaccessmanager.h" +#include "qnetworkconfigmanager.h" +#include "qnetworkconfiguration.h" +#include "qnetworkcookie.h" +#include "qnetworkcookiejar.h" +#include "qnetworkdatagram.h" +#if QT_CONFIG(networkdiskcache) +#include "qnetworkdiskcache.h" +#endif +#include "qnetworkinterface.h" +#include "qnetworkproxy.h" +#include "qnetworkreply.h" +#include "qnetworkrequest.h" +#include "qnetworksession.h" +#include "qsctpserver.h" +#include "qsctpsocket.h" +#include "qssl.h" +#include "qsslcertificate.h" +#include "qsslcertificateextension.h" +#include "qsslcipher.h" +#include "qsslconfiguration.h" +#include "qssldiffiehellmanparameters.h" +#include "qsslellipticcurve.h" +#include "qsslerror.h" +#include "qsslkey.h" +#include "qsslpresharedkeyauthenticator.h" +#include "qsslsocket.h" +#include "qtcpserver.h" +#include "qtcpsocket.h" +#include "qudpsocket.h" +#include "qtnetworkversion.h" +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QtNetworkDepends b/qrenderdoc/3rdparty/qt/include/QtNetwork/QtNetworkDepends new file mode 100644 index 000000000..511727a26 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QtNetworkDepends @@ -0,0 +1,4 @@ +/* This file was generated by qmake with the info from <root>/src/network/network.pro. */ +#ifdef __cplusplus /* create empty PCH in C mode */ +#include <QtCore/QtCore> +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/QtNetworkVersion b/qrenderdoc/3rdparty/qt/include/QtNetwork/QtNetworkVersion new file mode 100644 index 000000000..dd74c510d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/QtNetworkVersion @@ -0,0 +1 @@ +#include "qtnetworkversion.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qabstractnetworkcache.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qabstractnetworkcache.h new file mode 100644 index 000000000..33b0bc4ce --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qabstractnetworkcache.h @@ -0,0 +1,144 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTNETWORKCACHE_H +#define QABSTRACTNETWORKCACHE_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qshareddata.h> +#include <QtCore/qpair.h> +#include <QtNetwork/qnetworkrequest.h> + +QT_BEGIN_NAMESPACE + + +class QIODevice; +class QDateTime; +class QUrl; +template<class T> class QList; + +class QNetworkCacheMetaDataPrivate; +class Q_NETWORK_EXPORT QNetworkCacheMetaData +{ + +public: + typedef QPair<QByteArray, QByteArray> RawHeader; + typedef QList<RawHeader> RawHeaderList; + typedef QHash<QNetworkRequest::Attribute, QVariant> AttributesMap; + + QNetworkCacheMetaData(); + QNetworkCacheMetaData(const QNetworkCacheMetaData &other); + ~QNetworkCacheMetaData(); + +#ifdef Q_COMPILER_RVALUE_REFS + QNetworkCacheMetaData &operator=(QNetworkCacheMetaData &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QNetworkCacheMetaData &operator=(const QNetworkCacheMetaData &other); + + void swap(QNetworkCacheMetaData &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + + bool operator==(const QNetworkCacheMetaData &other) const; + inline bool operator!=(const QNetworkCacheMetaData &other) const + { return !(*this == other); } + + bool isValid() const; + + QUrl url() const; + void setUrl(const QUrl &url); + + RawHeaderList rawHeaders() const; + void setRawHeaders(const RawHeaderList &headers); + + QDateTime lastModified() const; + void setLastModified(const QDateTime &dateTime); + + QDateTime expirationDate() const; + void setExpirationDate(const QDateTime &dateTime); + + bool saveToDisk() const; + void setSaveToDisk(bool allow); + + AttributesMap attributes() const; + void setAttributes(const AttributesMap &attributes); + +private: + friend class QNetworkCacheMetaDataPrivate; + QSharedDataPointer<QNetworkCacheMetaDataPrivate> d; +}; + +Q_DECLARE_SHARED(QNetworkCacheMetaData) + +Q_NETWORK_EXPORT QDataStream &operator<<(QDataStream &, const QNetworkCacheMetaData &); +Q_NETWORK_EXPORT QDataStream &operator>>(QDataStream &, QNetworkCacheMetaData &); + + +class QAbstractNetworkCachePrivate; +class Q_NETWORK_EXPORT QAbstractNetworkCache : public QObject +{ + Q_OBJECT + +public: + virtual ~QAbstractNetworkCache(); + + virtual QNetworkCacheMetaData metaData(const QUrl &url) = 0; + virtual void updateMetaData(const QNetworkCacheMetaData &metaData) = 0; + virtual QIODevice *data(const QUrl &url) = 0; + virtual bool remove(const QUrl &url) = 0; + virtual qint64 cacheSize() const = 0; + + virtual QIODevice *prepare(const QNetworkCacheMetaData &metaData) = 0; + virtual void insert(QIODevice *device) = 0; + +public Q_SLOTS: + virtual void clear() = 0; + +protected: + explicit QAbstractNetworkCache(QObject *parent = Q_NULLPTR); + QAbstractNetworkCache(QAbstractNetworkCachePrivate &dd, QObject *parent); + +private: + Q_DECLARE_PRIVATE(QAbstractNetworkCache) + Q_DISABLE_COPY(QAbstractNetworkCache) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qabstractsocket.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qabstractsocket.h new file mode 100644 index 000000000..875609aa2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qabstractsocket.h @@ -0,0 +1,250 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSOCKET_H +#define QABSTRACTSOCKET_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qiodevice.h> +#include <QtCore/qobject.h> +#ifndef QT_NO_DEBUG_STREAM +#include <QtCore/qdebug.h> +#endif + +QT_BEGIN_NAMESPACE + + +class QHostAddress; +#ifndef QT_NO_NETWORKPROXY +class QNetworkProxy; +#endif +class QAbstractSocketPrivate; +class QAuthenticator; + +class Q_NETWORK_EXPORT QAbstractSocket : public QIODevice +{ + Q_OBJECT +public: + enum SocketType { + TcpSocket, + UdpSocket, + SctpSocket, + UnknownSocketType = -1 + }; + Q_ENUM(SocketType) + enum NetworkLayerProtocol { + IPv4Protocol, + IPv6Protocol, + AnyIPProtocol, + UnknownNetworkLayerProtocol = -1 + }; + Q_ENUM(NetworkLayerProtocol) + enum SocketError { + ConnectionRefusedError, + RemoteHostClosedError, + HostNotFoundError, + SocketAccessError, + SocketResourceError, + SocketTimeoutError, /* 5 */ + DatagramTooLargeError, + NetworkError, + AddressInUseError, + SocketAddressNotAvailableError, + UnsupportedSocketOperationError, /* 10 */ + UnfinishedSocketOperationError, + ProxyAuthenticationRequiredError, + SslHandshakeFailedError, + ProxyConnectionRefusedError, + ProxyConnectionClosedError, /* 15 */ + ProxyConnectionTimeoutError, + ProxyNotFoundError, + ProxyProtocolError, + OperationError, + SslInternalError, /* 20 */ + SslInvalidUserDataError, + TemporaryError, + + UnknownSocketError = -1 + }; + Q_ENUM(SocketError) + enum SocketState { + UnconnectedState, + HostLookupState, + ConnectingState, + ConnectedState, + BoundState, + ListeningState, + ClosingState + }; + Q_ENUM(SocketState) + enum SocketOption { + LowDelayOption, // TCP_NODELAY + KeepAliveOption, // SO_KEEPALIVE + MulticastTtlOption, // IP_MULTICAST_TTL + MulticastLoopbackOption, // IP_MULTICAST_LOOPBACK + TypeOfServiceOption, //IP_TOS + SendBufferSizeSocketOption, //SO_SNDBUF + ReceiveBufferSizeSocketOption //SO_RCVBUF + }; + Q_ENUM(SocketOption) + enum BindFlag { + DefaultForPlatform = 0x0, + ShareAddress = 0x1, + DontShareAddress = 0x2, + ReuseAddressHint = 0x4 + }; + Q_DECLARE_FLAGS(BindMode, BindFlag) + enum PauseMode { + PauseNever = 0x0, + PauseOnSslErrors = 0x1 + }; + Q_DECLARE_FLAGS(PauseModes, PauseMode) + + QAbstractSocket(SocketType socketType, QObject *parent); + virtual ~QAbstractSocket(); + + virtual void resume(); // to continue after proxy authentication required, SSL errors etc. + PauseModes pauseMode() const; + void setPauseMode(PauseModes pauseMode); + + // ### Qt6: make the first one virtual + bool bind(const QHostAddress &address, quint16 port = 0, BindMode mode = DefaultForPlatform); + bool bind(quint16 port = 0, BindMode mode = DefaultForPlatform); + + // ### Qt6: de-virtualize connectToHost(QHostAddress) overload + virtual void connectToHost(const QString &hostName, quint16 port, OpenMode mode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol); + virtual void connectToHost(const QHostAddress &address, quint16 port, OpenMode mode = ReadWrite); + virtual void disconnectFromHost(); + + bool isValid() const; + + qint64 bytesAvailable() const Q_DECL_OVERRIDE; + qint64 bytesToWrite() const Q_DECL_OVERRIDE; + + bool canReadLine() const Q_DECL_OVERRIDE; // ### Qt6: remove me + + quint16 localPort() const; + QHostAddress localAddress() const; + quint16 peerPort() const; + QHostAddress peerAddress() const; + QString peerName() const; + + qint64 readBufferSize() const; + virtual void setReadBufferSize(qint64 size); + + void abort(); + + virtual qintptr socketDescriptor() const; + virtual bool setSocketDescriptor(qintptr socketDescriptor, SocketState state = ConnectedState, + OpenMode openMode = ReadWrite); + + virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value); + virtual QVariant socketOption(QAbstractSocket::SocketOption option); + + SocketType socketType() const; + SocketState state() const; + SocketError error() const; + + // from QIODevice + void close() Q_DECL_OVERRIDE; + bool isSequential() const Q_DECL_OVERRIDE; + bool atEnd() const Q_DECL_OVERRIDE; // ### Qt6: remove me + bool flush(); + + // for synchronous access + virtual bool waitForConnected(int msecs = 30000); + bool waitForReadyRead(int msecs = 30000) Q_DECL_OVERRIDE; + bool waitForBytesWritten(int msecs = 30000) Q_DECL_OVERRIDE; + virtual bool waitForDisconnected(int msecs = 30000); + +#ifndef QT_NO_NETWORKPROXY + void setProxy(const QNetworkProxy &networkProxy); + QNetworkProxy proxy() const; +#endif + +Q_SIGNALS: + void hostFound(); + void connected(); + void disconnected(); + void stateChanged(QAbstractSocket::SocketState); + void error(QAbstractSocket::SocketError); +#ifndef QT_NO_NETWORKPROXY + void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); +#endif + +protected: + qint64 readData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 readLineData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 writeData(const char *data, qint64 len) Q_DECL_OVERRIDE; + + void setSocketState(SocketState state); + void setSocketError(SocketError socketError); + void setLocalPort(quint16 port); + void setLocalAddress(const QHostAddress &address); + void setPeerPort(quint16 port); + void setPeerAddress(const QHostAddress &address); + void setPeerName(const QString &name); + + QAbstractSocket(SocketType socketType, QAbstractSocketPrivate &dd, QObject *parent = Q_NULLPTR); + +private: + Q_DECLARE_PRIVATE(QAbstractSocket) + Q_DISABLE_COPY(QAbstractSocket) + + Q_PRIVATE_SLOT(d_func(), void _q_connectToNextAddress()) + Q_PRIVATE_SLOT(d_func(), void _q_startConnecting(const QHostInfo &)) + Q_PRIVATE_SLOT(d_func(), void _q_abortConnectionAttempt()) + Q_PRIVATE_SLOT(d_func(), void _q_testConnection()) +}; + + +Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractSocket::BindMode) +Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractSocket::PauseModes) + +#ifndef QT_NO_DEBUG_STREAM +Q_NETWORK_EXPORT QDebug operator<<(QDebug, QAbstractSocket::SocketError); +Q_NETWORK_EXPORT QDebug operator<<(QDebug, QAbstractSocket::SocketState); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QAbstractSocket::SocketState) +Q_DECLARE_METATYPE(QAbstractSocket::SocketError) + +#endif // QABSTRACTSOCKET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qauthenticator.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qauthenticator.h new file mode 100644 index 000000000..1032c2f50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qauthenticator.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QAUTHENTICATOR_H +#define QAUTHENTICATOR_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qstring.h> +#include <QtCore/qvariant.h> + +QT_BEGIN_NAMESPACE + + +class QAuthenticatorPrivate; +class QUrl; + +class Q_NETWORK_EXPORT QAuthenticator +{ +public: + QAuthenticator(); + ~QAuthenticator(); + + QAuthenticator(const QAuthenticator &other); + QAuthenticator &operator=(const QAuthenticator &other); + + bool operator==(const QAuthenticator &other) const; + inline bool operator!=(const QAuthenticator &other) const { return !operator==(other); } + + QString user() const; + void setUser(const QString &user); + + QString password() const; + void setPassword(const QString &password); + + QString realm() const; + void setRealm(const QString &realm); + + QVariant option(const QString &opt) const; + QVariantHash options() const; + void setOption(const QString &opt, const QVariant &value); + + bool isNull() const; + void detach(); +private: + friend class QAuthenticatorPrivate; + QAuthenticatorPrivate *d; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qdnslookup.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qdnslookup.h new file mode 100644 index 000000000..ead5e650f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qdnslookup.h @@ -0,0 +1,265 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDNSLOOKUP_H +#define QDNSLOOKUP_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qlist.h> +#include <QtCore/qobject.h> +#include <QtCore/qshareddata.h> +#include <QtCore/qsharedpointer.h> +#include <QtCore/qstring.h> + +QT_BEGIN_NAMESPACE + +class QHostAddress; +class QDnsLookupPrivate; +class QDnsDomainNameRecordPrivate; +class QDnsHostAddressRecordPrivate; +class QDnsMailExchangeRecordPrivate; +class QDnsServiceRecordPrivate; +class QDnsTextRecordPrivate; + +class Q_NETWORK_EXPORT QDnsDomainNameRecord +{ +public: + QDnsDomainNameRecord(); + QDnsDomainNameRecord(const QDnsDomainNameRecord &other); +#ifdef Q_COMPILER_RVALUE_REFS + QDnsDomainNameRecord &operator=(QDnsDomainNameRecord &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QDnsDomainNameRecord &operator=(const QDnsDomainNameRecord &other); + ~QDnsDomainNameRecord(); + + void swap(QDnsDomainNameRecord &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + QString name() const; + quint32 timeToLive() const; + QString value() const; + +private: + QSharedDataPointer<QDnsDomainNameRecordPrivate> d; + friend class QDnsLookupRunnable; +}; + +Q_DECLARE_SHARED(QDnsDomainNameRecord) + +class Q_NETWORK_EXPORT QDnsHostAddressRecord +{ +public: + QDnsHostAddressRecord(); + QDnsHostAddressRecord(const QDnsHostAddressRecord &other); +#ifdef Q_COMPILER_RVALUE_REFS + QDnsHostAddressRecord &operator=(QDnsHostAddressRecord &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QDnsHostAddressRecord &operator=(const QDnsHostAddressRecord &other); + ~QDnsHostAddressRecord(); + + void swap(QDnsHostAddressRecord &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + QString name() const; + quint32 timeToLive() const; + QHostAddress value() const; + +private: + QSharedDataPointer<QDnsHostAddressRecordPrivate> d; + friend class QDnsLookupRunnable; +}; + +Q_DECLARE_SHARED(QDnsHostAddressRecord) + +class Q_NETWORK_EXPORT QDnsMailExchangeRecord +{ +public: + QDnsMailExchangeRecord(); + QDnsMailExchangeRecord(const QDnsMailExchangeRecord &other); +#ifdef Q_COMPILER_RVALUE_REFS + QDnsMailExchangeRecord &operator=(QDnsMailExchangeRecord &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QDnsMailExchangeRecord &operator=(const QDnsMailExchangeRecord &other); + ~QDnsMailExchangeRecord(); + + void swap(QDnsMailExchangeRecord &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + QString exchange() const; + QString name() const; + quint16 preference() const; + quint32 timeToLive() const; + +private: + QSharedDataPointer<QDnsMailExchangeRecordPrivate> d; + friend class QDnsLookupRunnable; +}; + +Q_DECLARE_SHARED(QDnsMailExchangeRecord) + +class Q_NETWORK_EXPORT QDnsServiceRecord +{ +public: + QDnsServiceRecord(); + QDnsServiceRecord(const QDnsServiceRecord &other); +#ifdef Q_COMPILER_RVALUE_REFS + QDnsServiceRecord &operator=(QDnsServiceRecord &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QDnsServiceRecord &operator=(const QDnsServiceRecord &other); + ~QDnsServiceRecord(); + + void swap(QDnsServiceRecord &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + QString name() const; + quint16 port() const; + quint16 priority() const; + QString target() const; + quint32 timeToLive() const; + quint16 weight() const; + +private: + QSharedDataPointer<QDnsServiceRecordPrivate> d; + friend class QDnsLookupRunnable; +}; + +Q_DECLARE_SHARED(QDnsServiceRecord) + +class Q_NETWORK_EXPORT QDnsTextRecord +{ +public: + QDnsTextRecord(); + QDnsTextRecord(const QDnsTextRecord &other); +#ifdef Q_COMPILER_RVALUE_REFS + QDnsTextRecord &operator=(QDnsTextRecord &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QDnsTextRecord &operator=(const QDnsTextRecord &other); + ~QDnsTextRecord(); + + void swap(QDnsTextRecord &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + QString name() const; + quint32 timeToLive() const; + QList<QByteArray> values() const; + +private: + QSharedDataPointer<QDnsTextRecordPrivate> d; + friend class QDnsLookupRunnable; +}; + +Q_DECLARE_SHARED(QDnsTextRecord) + +class Q_NETWORK_EXPORT QDnsLookup : public QObject +{ + Q_OBJECT + Q_PROPERTY(Error error READ error NOTIFY finished) + Q_PROPERTY(QString errorString READ errorString NOTIFY finished) + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(Type type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QHostAddress nameserver READ nameserver WRITE setNameserver NOTIFY nameserverChanged) + +public: + enum Error + { + NoError = 0, + ResolverError, + OperationCancelledError, + InvalidRequestError, + InvalidReplyError, + ServerFailureError, + ServerRefusedError, + NotFoundError + }; + Q_ENUM(Error) + + enum Type + { + A = 1, + AAAA = 28, + ANY = 255, + CNAME = 5, + MX = 15, + NS = 2, + PTR = 12, + SRV = 33, + TXT = 16 + }; + Q_ENUM(Type) + + explicit QDnsLookup(QObject *parent = Q_NULLPTR); + QDnsLookup(Type type, const QString &name, QObject *parent = Q_NULLPTR); + QDnsLookup(Type type, const QString &name, const QHostAddress &nameserver, QObject *parent = Q_NULLPTR); + ~QDnsLookup(); + + Error error() const; + QString errorString() const; + bool isFinished() const; + + QString name() const; + void setName(const QString &name); + + Type type() const; + void setType(QDnsLookup::Type); + + QHostAddress nameserver() const; + void setNameserver(const QHostAddress &nameserver); + + QList<QDnsDomainNameRecord> canonicalNameRecords() const; + QList<QDnsHostAddressRecord> hostAddressRecords() const; + QList<QDnsMailExchangeRecord> mailExchangeRecords() const; + QList<QDnsDomainNameRecord> nameServerRecords() const; + QList<QDnsDomainNameRecord> pointerRecords() const; + QList<QDnsServiceRecord> serviceRecords() const; + QList<QDnsTextRecord> textRecords() const; + + +public Q_SLOTS: + void abort(); + void lookup(); + +Q_SIGNALS: + void finished(); + void nameChanged(const QString &name); + void typeChanged(Type type); + void nameserverChanged(const QHostAddress &nameserver); + +private: + Q_DECLARE_PRIVATE(QDnsLookup) + Q_PRIVATE_SLOT(d_func(), void _q_lookupFinished(const QDnsLookupReply &reply)) +}; + +QT_END_NAMESPACE + +#endif // QDNSLOOKUP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qhostaddress.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qhostaddress.h new file mode 100644 index 000000000..fdbdbfc72 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qhostaddress.h @@ -0,0 +1,178 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHOSTADDRESS_H +#define QHOSTADDRESS_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qpair.h> +#include <QtCore/qstring.h> +#include <QtCore/qshareddata.h> +#include <QtNetwork/qabstractsocket.h> + +struct sockaddr; + +QT_BEGIN_NAMESPACE + + +class QHostAddressPrivate; + +class Q_NETWORK_EXPORT QIPv6Address +{ +public: + inline quint8 &operator [](int index) { return c[index]; } + inline quint8 operator [](int index) const { return c[index]; } + quint8 c[16]; +}; + +typedef QIPv6Address Q_IPV6ADDR; + +class QHostAddress; +// qHash is a friend, but we can't use default arguments for friends (§8.3.6.4) +Q_NETWORK_EXPORT uint qHash(const QHostAddress &key, uint seed = 0) Q_DECL_NOTHROW; + +class Q_NETWORK_EXPORT QHostAddress +{ +public: + enum SpecialAddress { + Null, + Broadcast, + LocalHost, + LocalHostIPv6, + Any, + AnyIPv6, + AnyIPv4 + }; + enum ConversionModeFlag { + ConvertV4MappedToIPv4 = 1, + ConvertV4CompatToIPv4 = 2, + ConvertUnspecifiedAddress = 4, + ConvertLocalHost = 8, + TolerantConversion = 0xff, + + StrictConversion = 0 + }; + Q_DECLARE_FLAGS(ConversionMode, ConversionModeFlag) + + QHostAddress(); + explicit QHostAddress(quint32 ip4Addr); + explicit QHostAddress(quint8 *ip6Addr); // ### Qt 6: remove me + explicit QHostAddress(const quint8 *ip6Addr); + explicit QHostAddress(const Q_IPV6ADDR &ip6Addr); + explicit QHostAddress(const sockaddr *address); + explicit QHostAddress(const QString &address); + QHostAddress(const QHostAddress ©); + QHostAddress(SpecialAddress address); + ~QHostAddress(); + +#ifdef Q_COMPILER_RVALUE_REFS + QHostAddress &operator=(QHostAddress &&other) Q_DECL_NOTHROW + { swap(other); return *this; } +#endif + + QHostAddress &operator=(const QHostAddress &other); +#if QT_DEPRECATED_SINCE(5, 8) + QT_DEPRECATED_X("use = QHostAddress(string) instead") + QHostAddress &operator=(const QString &address); +#endif + QHostAddress &operator=(SpecialAddress address); + + void swap(QHostAddress &other) Q_DECL_NOTHROW { d.swap(other.d); } + + void setAddress(quint32 ip4Addr); + void setAddress(quint8 *ip6Addr); // ### Qt 6: remove me + void setAddress(const quint8 *ip6Addr); + void setAddress(const Q_IPV6ADDR &ip6Addr); + void setAddress(const sockaddr *address); + bool setAddress(const QString &address); + void setAddress(SpecialAddress address); + + QAbstractSocket::NetworkLayerProtocol protocol() const; + quint32 toIPv4Address() const; // ### Qt6: merge with next overload + quint32 toIPv4Address(bool *ok) const; + Q_IPV6ADDR toIPv6Address() const; + + QString toString() const; + + QString scopeId() const; + void setScopeId(const QString &id); + + bool isEqual(const QHostAddress &address, ConversionMode mode = TolerantConversion) const; + bool operator ==(const QHostAddress &address) const; + bool operator ==(SpecialAddress address) const; + inline bool operator !=(const QHostAddress &address) const + { return !operator==(address); } + inline bool operator !=(SpecialAddress address) const + { return !operator==(address); } + bool isNull() const; + void clear(); + + bool isInSubnet(const QHostAddress &subnet, int netmask) const; + bool isInSubnet(const QPair<QHostAddress, int> &subnet) const; + + bool isLoopback() const; + bool isMulticast() const; + + static QPair<QHostAddress, int> parseSubnet(const QString &subnet); + + friend Q_NETWORK_EXPORT uint qHash(const QHostAddress &key, uint seed) Q_DECL_NOTHROW; +protected: + QExplicitlySharedDataPointer<QHostAddressPrivate> d; +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QHostAddress::ConversionMode) +Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QHostAddress) + +inline bool operator ==(QHostAddress::SpecialAddress address1, const QHostAddress &address2) +{ return address2 == address1; } +inline bool operator!=(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs) +{ return rhs != lhs; } + +#ifndef QT_NO_DEBUG_STREAM +Q_NETWORK_EXPORT QDebug operator<<(QDebug, const QHostAddress &); +#endif + +#ifndef QT_NO_DATASTREAM +Q_NETWORK_EXPORT QDataStream &operator<<(QDataStream &, const QHostAddress &); +Q_NETWORK_EXPORT QDataStream &operator>>(QDataStream &, QHostAddress &); +#endif + +QT_END_NAMESPACE + +#endif // QHOSTADDRESS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qhostinfo.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qhostinfo.h new file mode 100644 index 000000000..4484d718b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qhostinfo.h @@ -0,0 +1,161 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHOSTINFO_H +#define QHOSTINFO_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qlist.h> +#include <QtCore/qscopedpointer.h> +#include <QtNetwork/qhostaddress.h> + +QT_BEGIN_NAMESPACE + + +class QObject; +class QHostInfoPrivate; + +class Q_NETWORK_EXPORT QHostInfo +{ +public: + enum HostInfoError { + NoError, + HostNotFound, + UnknownError + }; + + explicit QHostInfo(int lookupId = -1); + QHostInfo(const QHostInfo &d); + QHostInfo &operator=(const QHostInfo &d); + ~QHostInfo(); + + QString hostName() const; + void setHostName(const QString &name); + + QList<QHostAddress> addresses() const; + void setAddresses(const QList<QHostAddress> &addresses); + + HostInfoError error() const; + void setError(HostInfoError error); + + QString errorString() const; + void setErrorString(const QString &errorString); + + void setLookupId(int id); + int lookupId() const; + + static int lookupHost(const QString &name, QObject *receiver, const char *member); + static void abortHostLookup(int lookupId); + + static QHostInfo fromName(const QString &name); + static QString localHostName(); + static QString localDomainName(); + +#ifdef Q_QDOC + template<typename PointerToMemberFunction> + static int QHostInfo::lookupHost(const QString &name, const QObject *receiver, + PointerToMemberFunction function); + template<typename Functor> + static int QHostInfo::lookupHost(const QString &name, Functor functor); + template<typename Functor> + static int QHostInfo::lookupHost(const QString &name, const QObject *context, Functor functor); +#else + // lookupHost to a QObject slot + template <typename Func> + static inline int lookupHost(const QString &name, + const typename QtPrivate::FunctionPointer<Func>::Object *receiver, + Func slot) + { + typedef QtPrivate::FunctionPointer<Func> SlotType; + + typedef QtPrivate::FunctionPointer<void (*)(QHostInfo)> SignalType; + 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."); + + auto slotObj = new QtPrivate::QSlotObject<Func, typename SlotType::Arguments, void>(slot); + return lookupHostImpl(name, receiver, slotObj); + } + + // lookupHost to a callable (without context) + template <typename Func> + static inline typename std::enable_if<!QtPrivate::FunctionPointer<Func>::IsPointerToMemberFunction && + !std::is_same<const char *, Func>::value, int>::type + lookupHost(const QString &name, Func slot) + { + return lookupHost(name, nullptr, slot); + } + + // lookupHost to a functor or function pointer (with context) + template <typename Func1> + static inline typename std::enable_if<!QtPrivate::FunctionPointer<Func1>::IsPointerToMemberFunction && + !std::is_same<const char*, Func1>::value, int>::type + lookupHost(const QString &name, QObject *context, Func1 slot) + { + typedef QtPrivate::FunctionPointer<Func1> SlotType; + + Q_STATIC_ASSERT_X(int(SlotType::ArgumentCount) <= 1, + "The slot must not require more than one argument"); + + auto slotObj = new QtPrivate::QFunctorSlotObject<Func1, 1, + typename QtPrivate::List<QHostInfo>, + void>(slot); + return lookupHostImpl(name, context, slotObj); + } +#endif // Q_QDOC + +private: + QScopedPointer<QHostInfoPrivate> d; + + static int lookupHostImpl(const QString &name, + const QObject *receiver, + QtPrivate::QSlotObjectBase *slotObj); +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QHostInfo) + +#endif // QHOSTINFO_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qhstspolicy.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qhstspolicy.h new file mode 100644 index 000000000..176a8fa63 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qhstspolicy.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHSTSPOLICY_H +#define QHSTSPOLICY_H + +#include <QtNetwork/qtnetworkglobal.h> + +#include <QtCore/qshareddata.h> +#include <QtCore/qflags.h> +#include <QtCore/qurl.h> + +QT_BEGIN_NAMESPACE + +class QHstsPolicyPrivate; +class QDateTime; +class QString; +class Q_NETWORK_EXPORT QHstsPolicy +{ +public: + enum PolicyFlag + { + IncludeSubDomains = 1 + }; + Q_DECLARE_FLAGS(PolicyFlags, PolicyFlag) + + QHstsPolicy(); + QHstsPolicy(const QDateTime &expiry, PolicyFlags flags, const QString &host, + QUrl::ParsingMode mode = QUrl::DecodedMode); + QHstsPolicy(const QHstsPolicy &rhs); + QHstsPolicy &operator=(const QHstsPolicy &rhs); + QHstsPolicy &operator=(QHstsPolicy &&other) Q_DECL_NOTHROW { swap(other); return *this; } + ~QHstsPolicy(); + + void swap(QHstsPolicy &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + void setHost(const QString &host, QUrl::ParsingMode mode = QUrl::DecodedMode); + QString host(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; + void setExpiry(const QDateTime &expiry); + QDateTime expiry() const; + void setIncludesSubDomains(bool include); + bool includesSubDomains() const; + + bool isExpired() const; + +private: + + QSharedDataPointer<QHstsPolicyPrivate> d; + + friend Q_NETWORK_EXPORT bool operator==(const QHstsPolicy &lhs, const QHstsPolicy &rhs); +}; + +Q_DECLARE_SHARED(QHstsPolicy) +Q_DECLARE_OPERATORS_FOR_FLAGS(QHstsPolicy::PolicyFlags) + +Q_NETWORK_EXPORT bool operator==(const QHstsPolicy &lhs, const QHstsPolicy &rhs); + +inline bool operator!=(const QHstsPolicy &lhs, const QHstsPolicy &rhs) +{ + return !(lhs == rhs); +} + + +QT_END_NAMESPACE + +#endif // QHSTSPOLICY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qhttpmultipart.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qhttpmultipart.h new file mode 100644 index 000000000..6d4531b09 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qhttpmultipart.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTPMULTIPART_H +#define QHTTPMULTIPART_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/QSharedDataPointer> +#include <QtCore/QByteArray> +#include <QtCore/QIODevice> +#include <QtNetwork/QNetworkRequest> + +QT_BEGIN_NAMESPACE + + +class QHttpPartPrivate; +class QHttpMultiPart; + +class Q_NETWORK_EXPORT QHttpPart +{ +public: + QHttpPart(); + QHttpPart(const QHttpPart &other); + ~QHttpPart(); +#ifdef Q_COMPILER_RVALUE_REFS + QHttpPart &operator=(QHttpPart &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QHttpPart &operator=(const QHttpPart &other); + + void swap(QHttpPart &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool operator==(const QHttpPart &other) const; + inline bool operator!=(const QHttpPart &other) const + { return !operator==(other); } + + void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); + void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue); + + void setBody(const QByteArray &body); + void setBodyDevice(QIODevice *device); + +private: + QSharedDataPointer<QHttpPartPrivate> d; + + friend class QHttpMultiPartIODevice; +}; + +Q_DECLARE_SHARED(QHttpPart) + +class QHttpMultiPartPrivate; + +class Q_NETWORK_EXPORT QHttpMultiPart : public QObject +{ + Q_OBJECT + +public: + + enum ContentType { + MixedType, + RelatedType, + FormDataType, + AlternativeType + }; + + explicit QHttpMultiPart(QObject *parent = Q_NULLPTR); + explicit QHttpMultiPart(ContentType contentType, QObject *parent = Q_NULLPTR); + ~QHttpMultiPart(); + + void append(const QHttpPart &httpPart); + + void setContentType(ContentType contentType); + + QByteArray boundary() const; + void setBoundary(const QByteArray &boundary); + +private: + Q_DECLARE_PRIVATE(QHttpMultiPart) + Q_DISABLE_COPY(QHttpMultiPart) + + friend class QNetworkAccessManager; + friend class QNetworkAccessManagerPrivate; +}; + +QT_END_NAMESPACE + +#endif // QHTTPMULTIPART_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qlocalserver.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qlocalserver.h new file mode 100644 index 000000000..9bd299038 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qlocalserver.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCALSERVER_H +#define QLOCALSERVER_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtNetwork/qabstractsocket.h> + +QT_REQUIRE_CONFIG(localserver); + +QT_BEGIN_NAMESPACE + +class QLocalSocket; +class QLocalServerPrivate; + +class Q_NETWORK_EXPORT QLocalServer : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QLocalServer) + Q_PROPERTY(SocketOptions socketOptions READ socketOptions WRITE setSocketOptions) + +Q_SIGNALS: + void newConnection(); + +public: + enum SocketOption { + NoOptions = 0x0, + UserAccessOption = 0x01, + GroupAccessOption = 0x2, + OtherAccessOption = 0x4, + WorldAccessOption = 0x7 + }; + Q_FLAG(SocketOption) + Q_DECLARE_FLAGS(SocketOptions, SocketOption) + Q_FLAG(SocketOptions) + + explicit QLocalServer(QObject *parent = Q_NULLPTR); + ~QLocalServer(); + + void close(); + QString errorString() const; + virtual bool hasPendingConnections() const; + bool isListening() const; + bool listen(const QString &name); + bool listen(qintptr socketDescriptor); + int maxPendingConnections() const; + virtual QLocalSocket *nextPendingConnection(); + QString serverName() const; + QString fullServerName() const; + static bool removeServer(const QString &name); + QAbstractSocket::SocketError serverError() const; + void setMaxPendingConnections(int numConnections); + bool waitForNewConnection(int msec = 0, bool *timedOut = Q_NULLPTR); + + void setSocketOptions(SocketOptions options); + SocketOptions socketOptions() const; + +protected: + virtual void incomingConnection(quintptr socketDescriptor); + +private: + Q_DISABLE_COPY(QLocalServer) + Q_PRIVATE_SLOT(d_func(), void _q_onNewConnection()) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QLocalServer::SocketOptions) + +QT_END_NAMESPACE + +#endif // QLOCALSERVER_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qlocalsocket.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qlocalsocket.h new file mode 100644 index 000000000..9905d3a86 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qlocalsocket.h @@ -0,0 +1,152 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCALSOCKET_H +#define QLOCALSOCKET_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qiodevice.h> +#include <QtNetwork/qabstractsocket.h> + +QT_REQUIRE_CONFIG(localserver); + +QT_BEGIN_NAMESPACE + +class QLocalSocketPrivate; + +class Q_NETWORK_EXPORT QLocalSocket : public QIODevice +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QLocalSocket) + +public: + enum LocalSocketError + { + ConnectionRefusedError = QAbstractSocket::ConnectionRefusedError, + PeerClosedError = QAbstractSocket::RemoteHostClosedError, + ServerNotFoundError = QAbstractSocket::HostNotFoundError, + SocketAccessError = QAbstractSocket::SocketAccessError, + SocketResourceError = QAbstractSocket::SocketResourceError, + SocketTimeoutError = QAbstractSocket::SocketTimeoutError, + DatagramTooLargeError = QAbstractSocket::DatagramTooLargeError, + ConnectionError = QAbstractSocket::NetworkError, + UnsupportedSocketOperationError = QAbstractSocket::UnsupportedSocketOperationError, + UnknownSocketError = QAbstractSocket::UnknownSocketError, + OperationError = QAbstractSocket::OperationError + }; + + enum LocalSocketState + { + UnconnectedState = QAbstractSocket::UnconnectedState, + ConnectingState = QAbstractSocket::ConnectingState, + ConnectedState = QAbstractSocket::ConnectedState, + ClosingState = QAbstractSocket::ClosingState + }; + + QLocalSocket(QObject *parent = Q_NULLPTR); + ~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; + + void abort(); + virtual bool isSequential() const Q_DECL_OVERRIDE; + virtual qint64 bytesAvailable() const Q_DECL_OVERRIDE; + virtual qint64 bytesToWrite() const Q_DECL_OVERRIDE; + virtual bool canReadLine() const Q_DECL_OVERRIDE; + virtual bool open(OpenMode openMode = ReadWrite) Q_DECL_OVERRIDE; + virtual void close() Q_DECL_OVERRIDE; + LocalSocketError error() const; + bool flush(); + bool isValid() const; + qint64 readBufferSize() const; + void setReadBufferSize(qint64 size); + + bool setSocketDescriptor(qintptr socketDescriptor, + LocalSocketState socketState = ConnectedState, + OpenMode openMode = ReadWrite); + qintptr socketDescriptor() const; + + LocalSocketState state() const; + bool waitForBytesWritten(int msecs = 30000) Q_DECL_OVERRIDE; + bool waitForConnected(int msecs = 30000); + bool waitForDisconnected(int msecs = 30000); + bool waitForReadyRead(int msecs = 30000) Q_DECL_OVERRIDE; + +Q_SIGNALS: + void connected(); + void disconnected(); + void error(QLocalSocket::LocalSocketError socketError); + void stateChanged(QLocalSocket::LocalSocketState socketState); + +protected: + virtual qint64 readData(char*, qint64) Q_DECL_OVERRIDE; + virtual qint64 writeData(const char*, qint64) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QLocalSocket) +#if defined(QT_LOCALSOCKET_TCP) + Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState)) + Q_PRIVATE_SLOT(d_func(), void _q_error(QAbstractSocket::SocketError)) +#elif defined(Q_OS_WIN) + Q_PRIVATE_SLOT(d_func(), void _q_canWrite()) + Q_PRIVATE_SLOT(d_func(), void _q_pipeClosed()) + Q_PRIVATE_SLOT(d_func(), void _q_winError(ulong, const QString &)) +#else + Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState)) + Q_PRIVATE_SLOT(d_func(), void _q_error(QAbstractSocket::SocketError)) + Q_PRIVATE_SLOT(d_func(), void _q_connectToSocket()) + Q_PRIVATE_SLOT(d_func(), void _q_abortConnectionAttempt()) +#endif +}; + +#ifndef QT_NO_DEBUG_STREAM +#include <QtCore/qdebug.h> +Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketError); +Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketState); +#endif + +QT_END_NAMESPACE + +#endif // QLOCALSOCKET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkaccessmanager.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkaccessmanager.h new file mode 100644 index 000000000..f035ac5b0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkaccessmanager.h @@ -0,0 +1,208 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKACCESSMANAGER_H +#define QNETWORKACCESSMANAGER_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtNetwork/qnetworkrequest.h> +#include <QtCore/QVector> +#include <QtCore/QObject> +#ifndef QT_NO_SSL +#include <QtNetwork/QSslConfiguration> +#include <QtNetwork/QSslPreSharedKeyAuthenticator> +#endif + +QT_BEGIN_NAMESPACE + +class QIODevice; +class QAbstractNetworkCache; +class QAuthenticator; +class QByteArray; +template<typename T> class QList; +class QNetworkCookie; +class QNetworkCookieJar; +class QNetworkReply; +class QNetworkProxy; +class QNetworkProxyFactory; +class QSslError; +class QHstsPolicy; +#ifndef QT_NO_BEARERMANAGEMENT +class QNetworkConfiguration; +#endif +class QHttpMultiPart; + +class QNetworkReplyImplPrivate; +class QNetworkAccessManagerPrivate; +class Q_NETWORK_EXPORT QNetworkAccessManager: public QObject +{ + Q_OBJECT + +#ifndef QT_NO_BEARERMANAGEMENT + Q_PROPERTY(NetworkAccessibility networkAccessible READ networkAccessible WRITE setNetworkAccessible NOTIFY networkAccessibleChanged) +#endif + +public: + enum Operation { + HeadOperation = 1, + GetOperation, + PutOperation, + PostOperation, + DeleteOperation, + CustomOperation, + + UnknownOperation = 0 + }; + +#ifndef QT_NO_BEARERMANAGEMENT + enum NetworkAccessibility { + UnknownAccessibility = -1, + NotAccessible = 0, + Accessible = 1 + }; + Q_ENUM(NetworkAccessibility) +#endif + + explicit QNetworkAccessManager(QObject *parent = Q_NULLPTR); + ~QNetworkAccessManager(); + + // ### Qt 6: turn into virtual + QStringList supportedSchemes() const; + + void clearAccessCache(); + + void clearConnectionCache(); + +#ifndef QT_NO_NETWORKPROXY + QNetworkProxy proxy() const; + void setProxy(const QNetworkProxy &proxy); + QNetworkProxyFactory *proxyFactory() const; + void setProxyFactory(QNetworkProxyFactory *factory); +#endif + + QAbstractNetworkCache *cache() const; + void setCache(QAbstractNetworkCache *cache); + + QNetworkCookieJar *cookieJar() const; + void setCookieJar(QNetworkCookieJar *cookieJar); + + void setStrictTransportSecurityEnabled(bool enabled); + bool isStrictTransportSecurityEnabled() const; + void addStrictTransportSecurityHosts(const QVector<QHstsPolicy> &knownHosts); + QVector<QHstsPolicy> strictTransportSecurityHosts() const; + + QNetworkReply *head(const QNetworkRequest &request); + QNetworkReply *get(const QNetworkRequest &request); + QNetworkReply *post(const QNetworkRequest &request, QIODevice *data); + QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data); + QNetworkReply *post(const QNetworkRequest &request, QHttpMultiPart *multiPart); + QNetworkReply *put(const QNetworkRequest &request, QIODevice *data); + QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data); + QNetworkReply *put(const QNetworkRequest &request, QHttpMultiPart *multiPart); + QNetworkReply *deleteResource(const QNetworkRequest &request); + QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = Q_NULLPTR); + QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data); + QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart); + +#ifndef QT_NO_BEARERMANAGEMENT + void setConfiguration(const QNetworkConfiguration &config); + QNetworkConfiguration configuration() const; + QNetworkConfiguration activeConfiguration() const; + + void setNetworkAccessible(NetworkAccessibility accessible); + NetworkAccessibility networkAccessible() const; +#endif + +#ifndef QT_NO_SSL + void connectToHostEncrypted(const QString &hostName, quint16 port = 443, + const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration()); +#endif + void connectToHost(const QString &hostName, quint16 port = 80); + + void setRedirectPolicy(QNetworkRequest::RedirectPolicy policy); + QNetworkRequest::RedirectPolicy redirectPolicy() const; + +Q_SIGNALS: +#ifndef QT_NO_NETWORKPROXY + void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); +#endif + 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); + void preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator); +#endif + +#ifndef QT_NO_BEARERMANAGEMENT + void networkSessionConnected(); + + void networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility accessible); +#endif + +protected: + virtual QNetworkReply *createRequest(Operation op, const QNetworkRequest &request, + QIODevice *outgoingData = Q_NULLPTR); + +protected Q_SLOTS: + QStringList supportedSchemesImplementation() const; + +private: + friend class QNetworkReplyImplPrivate; + friend class QNetworkReplyHttpImpl; + friend class QNetworkReplyHttpImplPrivate; + friend class QNetworkReplyFileImpl; + + 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>)) + Q_PRIVATE_SLOT(d_func(), void _q_replyPreSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator*)) +#ifndef QT_NO_BEARERMANAGEMENT + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionClosed()) + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionStateChanged(QNetworkSession::State)) + Q_PRIVATE_SLOT(d_func(), void _q_onlineStateChanged(bool)) + Q_PRIVATE_SLOT(d_func(), void _q_configurationChanged(const QNetworkConfiguration &)) + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionFailed(QNetworkSession::SessionError)) +#endif +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkconfigmanager.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkconfigmanager.h new file mode 100644 index 000000000..da248bc7d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkconfigmanager.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKCONFIGMANAGER_H +#define QNETWORKCONFIGMANAGER_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qobject.h> +#include <QtNetwork/qnetworkconfiguration.h> + +#ifndef QT_NO_BEARERMANAGEMENT + +QT_BEGIN_NAMESPACE + +class QNetworkConfigurationManagerPrivate; +class Q_NETWORK_EXPORT QNetworkConfigurationManager : public QObject +{ + Q_OBJECT + +public: + enum Capability { + CanStartAndStopInterfaces = 0x00000001, + DirectConnectionRouting = 0x00000002, + SystemSessionSupport = 0x00000004, + ApplicationLevelRoaming = 0x00000008, + ForcedRoaming = 0x00000010, + DataStatistics = 0x00000020, + NetworkSessionRequired = 0x00000040 + }; + + Q_DECLARE_FLAGS(Capabilities, Capability) + + explicit QNetworkConfigurationManager(QObject *parent = Q_NULLPTR); + virtual ~QNetworkConfigurationManager(); + + QNetworkConfigurationManager::Capabilities capabilities() const; + + QNetworkConfiguration defaultConfiguration() const; + QList<QNetworkConfiguration> allConfigurations(QNetworkConfiguration::StateFlags flags = QNetworkConfiguration::StateFlags()) const; + QNetworkConfiguration configurationFromIdentifier(const QString &identifier) const; + + bool isOnline() const; + +public Q_SLOTS: + void updateConfigurations(); + +Q_SIGNALS: + void configurationAdded(const QNetworkConfiguration &config); + void configurationRemoved(const QNetworkConfiguration &config); + void configurationChanged(const QNetworkConfiguration &config); + void onlineStateChanged(bool isOnline); + void updateCompleted(); + +private: + Q_DISABLE_COPY(QNetworkConfigurationManager) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QNetworkConfigurationManager::Capabilities) + +QT_END_NAMESPACE + +#endif // QT_NO_BEARERMANAGEMENT + +#endif // QNETWORKCONFIGMANAGER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkconfiguration.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkconfiguration.h new file mode 100644 index 000000000..e7b74034f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkconfiguration.h @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKCONFIGURATION_H +#define QNETWORKCONFIGURATION_H + +#include <QtNetwork/qtnetworkglobal.h> + +#include <QtCore/qshareddata.h> +#include <QtCore/qstring.h> +#include <QtCore/qlist.h> +#include <QtCore/qmetatype.h> + +QT_BEGIN_NAMESPACE + +class QNetworkConfigurationPrivate; +class Q_NETWORK_EXPORT QNetworkConfiguration +{ +public: + QNetworkConfiguration(); + QNetworkConfiguration(const QNetworkConfiguration& other); +#ifdef Q_COMPILER_RVALUE_REFS + QNetworkConfiguration &operator=(QNetworkConfiguration &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QNetworkConfiguration &operator=(const QNetworkConfiguration &other); + ~QNetworkConfiguration(); + + void swap(QNetworkConfiguration &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool operator==(const QNetworkConfiguration &other) const; + inline bool operator!=(const QNetworkConfiguration &other) const + { return !operator==(other); } + + enum Type { + InternetAccessPoint = 0, + ServiceNetwork, + UserChoice, + Invalid + }; + + enum Purpose { + UnknownPurpose = 0, + PublicPurpose, + PrivatePurpose, + ServiceSpecificPurpose + }; + + enum StateFlag { + Undefined = 0x0000001, + Defined = 0x0000002, + Discovered = 0x0000006, + Active = 0x000000e + }; + Q_DECLARE_FLAGS(StateFlags, StateFlag) + + enum BearerType { + BearerUnknown, + BearerEthernet, + BearerWLAN, + Bearer2G, + BearerCDMA2000, + BearerWCDMA, + BearerHSPA, + BearerBluetooth, + BearerWiMAX, + BearerEVDO, + BearerLTE, + Bearer3G, + Bearer4G + }; + + StateFlags state() const; + Type type() const; + Purpose purpose() const; + + BearerType bearerType() const; + BearerType bearerTypeFamily() const; + QString bearerTypeName() const; + + QString identifier() const; + bool isRoamingAvailable() const; + QList<QNetworkConfiguration> children() const; + + QString name() const; + bool isValid() const; + + int connectTimeout() const; + bool setConnectTimeout(int timeout); + +private: + friend class QNetworkConfigurationPrivate; + friend class QNetworkConfigurationManager; + friend class QNetworkConfigurationManagerPrivate; + friend class QNetworkSessionPrivate; + QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> d; +}; + +Q_DECLARE_SHARED(QNetworkConfiguration) + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QNetworkConfiguration) + +#endif // QNETWORKCONFIGURATION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkcookie.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkcookie.h new file mode 100644 index 000000000..e462b9855 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkcookie.h @@ -0,0 +1,124 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKCOOKIE_H +#define QNETWORKCOOKIE_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/QSharedDataPointer> +#include <QtCore/QList> +#include <QtCore/QMetaType> +#include <QtCore/QObject> + +QT_BEGIN_NAMESPACE + + +class QByteArray; +class QDateTime; +class QString; +class QUrl; + +class QNetworkCookiePrivate; +class Q_NETWORK_EXPORT QNetworkCookie +{ +public: + enum RawForm { + NameAndValueOnly, + Full + }; + + explicit QNetworkCookie(const QByteArray &name = QByteArray(), const QByteArray &value = QByteArray()); + QNetworkCookie(const QNetworkCookie &other); + ~QNetworkCookie(); +#ifdef Q_COMPILER_RVALUE_REFS + QNetworkCookie &operator=(QNetworkCookie &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QNetworkCookie &operator=(const QNetworkCookie &other); + + void swap(QNetworkCookie &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool operator==(const QNetworkCookie &other) const; + inline bool operator!=(const QNetworkCookie &other) const + { return !(*this == other); } + + bool isSecure() const; + void setSecure(bool enable); + bool isHttpOnly() const; + void setHttpOnly(bool enable); + + bool isSessionCookie() const; + QDateTime expirationDate() const; + void setExpirationDate(const QDateTime &date); + + QString domain() const; + void setDomain(const QString &domain); + + QString path() const; + void setPath(const QString &path); + + QByteArray name() const; + void setName(const QByteArray &cookieName); + + QByteArray value() const; + void setValue(const QByteArray &value); + + QByteArray toRawForm(RawForm form = Full) const; + + bool hasSameIdentifier(const QNetworkCookie &other) const; + void normalize(const QUrl &url); + + static QList<QNetworkCookie> parseCookies(const QByteArray &cookieString); + +private: + QSharedDataPointer<QNetworkCookiePrivate> d; + friend class QNetworkCookiePrivate; +}; + +Q_DECLARE_SHARED(QNetworkCookie) + +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +Q_NETWORK_EXPORT QDebug operator<<(QDebug, const QNetworkCookie &); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QNetworkCookie) + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkcookiejar.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkcookiejar.h new file mode 100644 index 000000000..f9c1549e2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkcookiejar.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKCOOKIEJAR_H +#define QNETWORKCOOKIEJAR_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/QObject> +#include <QtCore/QUrl> + +QT_BEGIN_NAMESPACE + + +class QNetworkCookie; + +class QNetworkCookieJarPrivate; +class Q_NETWORK_EXPORT QNetworkCookieJar: public QObject +{ + Q_OBJECT +public: + explicit QNetworkCookieJar(QObject *parent = Q_NULLPTR); + virtual ~QNetworkCookieJar(); + + virtual QList<QNetworkCookie> cookiesForUrl(const QUrl &url) const; + virtual bool setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url); + + virtual bool insertCookie(const QNetworkCookie &cookie); + virtual bool updateCookie(const QNetworkCookie &cookie); + virtual bool deleteCookie(const QNetworkCookie &cookie); + +protected: + QList<QNetworkCookie> allCookies() const; + void setAllCookies(const QList<QNetworkCookie> &cookieList); + virtual bool validateCookie(const QNetworkCookie &cookie, const QUrl &url) const; + +private: + Q_DECLARE_PRIVATE(QNetworkCookieJar) + Q_DISABLE_COPY(QNetworkCookieJar) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkdatagram.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkdatagram.h new file mode 100644 index 000000000..fa994d617 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkdatagram.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKDATAGRAM_H +#define QNETWORKDATAGRAM_H + +#include <QtCore/qbytearray.h> +#include <QtNetwork/qhostaddress.h> + +#ifndef QT_NO_UDPSOCKET + +QT_BEGIN_NAMESPACE + +class QNetworkDatagramPrivate; +class QUdpSocketPrivate; + +class Q_NETWORK_EXPORT QNetworkDatagram +{ +public: + QNetworkDatagram(); + QNetworkDatagram(const QByteArray &data, const QHostAddress &destinationAddress = QHostAddress(), + quint16 port = 0); // implicit + QNetworkDatagram(const QNetworkDatagram &other); + QNetworkDatagram &operator=(const QNetworkDatagram &other); + ~QNetworkDatagram() + { if (d) destroy(d); } + + QNetworkDatagram(QNetworkDatagram &&other) Q_DECL_NOTHROW + : d(other.d) + { other.d = Q_NULLPTR; } + QNetworkDatagram &operator=(QNetworkDatagram &&other) Q_DECL_NOTHROW + { swap(other); return *this; } + + void swap(QNetworkDatagram &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + + void clear(); + bool isValid() const; + bool isNull() const + { return !isValid(); } + + uint interfaceIndex() const; + void setInterfaceIndex(uint index); + + QHostAddress senderAddress() const; + QHostAddress destinationAddress() const; + int senderPort() const; + int destinationPort() const; + void setSender(const QHostAddress &address, quint16 port = 0); + void setDestination(const QHostAddress &address, quint16 port); + + int hopLimit() const; + void setHopLimit(int count); + + QByteArray data() const; + void setData(const QByteArray &data); + +#ifdef Q_COMPILER_REF_QUALIFIERS + QNetworkDatagram makeReply(const QByteArray &payload) const & + { return makeReply_helper(payload); } + QNetworkDatagram makeReply(const QByteArray &payload) && + { makeReply_helper_inplace(payload); return *this; } +#else + QNetworkDatagram makeReply(const QByteArray &paylaod) const + { return makeReply_helper(paylaod); } +#endif + +private: + QNetworkDatagramPrivate *d; + friend class QUdpSocket; + friend class QSctpSocket; + + explicit QNetworkDatagram(QNetworkDatagramPrivate &dd); + QNetworkDatagram makeReply_helper(const QByteArray &data) const; + void makeReply_helper_inplace(const QByteArray &data); + static void destroy(QNetworkDatagramPrivate *d); +}; + +Q_DECLARE_SHARED(QNetworkDatagram) + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QNetworkDatagram) + +#endif // QT_NO_UDPSOCKET + +#endif // QNETWORKDATAGRAM_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkdiskcache.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkdiskcache.h new file mode 100644 index 000000000..0e9258f6d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkdiskcache.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKDISKCACHE_H +#define QNETWORKDISKCACHE_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtNetwork/qabstractnetworkcache.h> + +QT_REQUIRE_CONFIG(networkdiskcache); + +QT_BEGIN_NAMESPACE + +class QNetworkDiskCachePrivate; +class Q_NETWORK_EXPORT QNetworkDiskCache : public QAbstractNetworkCache +{ + Q_OBJECT + +public: + explicit QNetworkDiskCache(QObject *parent = Q_NULLPTR); + ~QNetworkDiskCache(); + + QString cacheDirectory() const; + void setCacheDirectory(const QString &cacheDir); + + qint64 maximumCacheSize() const; + void setMaximumCacheSize(qint64 size); + + qint64 cacheSize() const Q_DECL_OVERRIDE; + QNetworkCacheMetaData metaData(const QUrl &url) Q_DECL_OVERRIDE; + void updateMetaData(const QNetworkCacheMetaData &metaData) Q_DECL_OVERRIDE; + QIODevice *data(const QUrl &url) Q_DECL_OVERRIDE; + bool remove(const QUrl &url) Q_DECL_OVERRIDE; + QIODevice *prepare(const QNetworkCacheMetaData &metaData) Q_DECL_OVERRIDE; + void insert(QIODevice *device) Q_DECL_OVERRIDE; + + QNetworkCacheMetaData fileMetaData(const QString &fileName) const; + +public Q_SLOTS: + void clear() Q_DECL_OVERRIDE; + +protected: + virtual qint64 expire(); + +private: + Q_DECLARE_PRIVATE(QNetworkDiskCache) + Q_DISABLE_COPY(QNetworkDiskCache) +}; + +QT_END_NAMESPACE + +#endif // QNETWORKDISKCACHE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkinterface.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkinterface.h new file mode 100644 index 000000000..c31621c3c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkinterface.h @@ -0,0 +1,150 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKINTERFACE_H +#define QNETWORKINTERFACE_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qshareddata.h> +#include <QtCore/qscopedpointer.h> +#include <QtNetwork/qhostaddress.h> + +#ifndef QT_NO_NETWORKINTERFACE + +QT_BEGIN_NAMESPACE + + +template<typename T> class QList; + +class QNetworkAddressEntryPrivate; +class Q_NETWORK_EXPORT QNetworkAddressEntry +{ +public: + QNetworkAddressEntry(); + QNetworkAddressEntry(const QNetworkAddressEntry &other); +#ifdef Q_COMPILER_RVALUE_REFS + QNetworkAddressEntry &operator=(QNetworkAddressEntry &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QNetworkAddressEntry &operator=(const QNetworkAddressEntry &other); + ~QNetworkAddressEntry(); + + void swap(QNetworkAddressEntry &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool operator==(const QNetworkAddressEntry &other) const; + inline bool operator!=(const QNetworkAddressEntry &other) const + { return !(*this == other); } + + QHostAddress ip() const; + void setIp(const QHostAddress &newIp); + + QHostAddress netmask() const; + void setNetmask(const QHostAddress &newNetmask); + int prefixLength() const; + void setPrefixLength(int length); + + QHostAddress broadcast() const; + void setBroadcast(const QHostAddress &newBroadcast); + +private: + QScopedPointer<QNetworkAddressEntryPrivate> d; +}; + +Q_DECLARE_SHARED(QNetworkAddressEntry) + +class QNetworkInterfacePrivate; +class Q_NETWORK_EXPORT QNetworkInterface +{ +public: + enum InterfaceFlag { + IsUp = 0x1, + IsRunning = 0x2, + CanBroadcast = 0x4, + IsLoopBack = 0x8, + IsPointToPoint = 0x10, + CanMulticast = 0x20 + }; + Q_DECLARE_FLAGS(InterfaceFlags, InterfaceFlag) + + QNetworkInterface(); + QNetworkInterface(const QNetworkInterface &other); +#ifdef Q_COMPILER_RVALUE_REFS + QNetworkInterface &operator=(QNetworkInterface &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QNetworkInterface &operator=(const QNetworkInterface &other); + ~QNetworkInterface(); + + void swap(QNetworkInterface &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool isValid() const; + + int index() const; + QString name() const; + QString humanReadableName() const; + InterfaceFlags flags() const; + QString hardwareAddress() const; + QList<QNetworkAddressEntry> addressEntries() const; + + static int interfaceIndexFromName(const QString &name); + static QNetworkInterface interfaceFromName(const QString &name); + static QNetworkInterface interfaceFromIndex(int index); + static QString interfaceNameFromIndex(int index); + static QList<QNetworkInterface> allInterfaces(); + static QList<QHostAddress> allAddresses(); + +private: + friend class QNetworkInterfacePrivate; + QSharedDataPointer<QNetworkInterfacePrivate> d; +}; + +Q_DECLARE_SHARED(QNetworkInterface) + +Q_DECLARE_OPERATORS_FOR_FLAGS(QNetworkInterface::InterfaceFlags) + +#ifndef QT_NO_DEBUG_STREAM +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkInterface &networkInterface); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QNetworkAddressEntry) +Q_DECLARE_METATYPE(QNetworkInterface) + +#endif // QT_NO_NETWORKINTERFACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkproxy.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkproxy.h new file mode 100644 index 000000000..8699c313e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkproxy.h @@ -0,0 +1,237 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKPROXY_H +#define QNETWORKPROXY_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtNetwork/qhostaddress.h> +#include <QtNetwork/qnetworkrequest.h> +#include <QtCore/qshareddata.h> + +#ifndef QT_NO_NETWORKPROXY + +QT_BEGIN_NAMESPACE + + +class QUrl; +class QNetworkConfiguration; + +class QNetworkProxyQueryPrivate; +class Q_NETWORK_EXPORT QNetworkProxyQuery +{ + Q_GADGET + +public: + enum QueryType { + TcpSocket, + UdpSocket, + SctpSocket, + TcpServer = 100, + UrlRequest, + SctpServer + }; + Q_ENUM(QueryType) + + QNetworkProxyQuery(); + explicit QNetworkProxyQuery(const QUrl &requestUrl, QueryType queryType = UrlRequest); + QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(), + QueryType queryType = TcpSocket); + explicit QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), + QueryType queryType = TcpServer); +#ifndef QT_NO_BEARERMANAGEMENT + QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, + const QUrl &requestUrl, QueryType queryType = UrlRequest); + QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, + const QString &hostname, int port, const QString &protocolTag = QString(), + QueryType queryType = TcpSocket); + QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, + quint16 bindPort, const QString &protocolTag = QString(), + QueryType queryType = TcpServer); +#endif + QNetworkProxyQuery(const QNetworkProxyQuery &other); +#ifdef Q_COMPILER_RVALUE_REFS + QNetworkProxyQuery &operator=(QNetworkProxyQuery &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QNetworkProxyQuery &operator=(const QNetworkProxyQuery &other); + ~QNetworkProxyQuery(); + + void swap(QNetworkProxyQuery &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool operator==(const QNetworkProxyQuery &other) const; + inline bool operator!=(const QNetworkProxyQuery &other) const + { return !(*this == other); } + + QueryType queryType() const; + void setQueryType(QueryType type); + + int peerPort() const; + void setPeerPort(int port); + + QString peerHostName() const; + void setPeerHostName(const QString &hostname); + + int localPort() const; + void setLocalPort(int port); + + QString protocolTag() const; + void setProtocolTag(const QString &protocolTag); + + QUrl url() const; + void setUrl(const QUrl &url); + +#ifndef QT_NO_BEARERMANAGEMENT + QNetworkConfiguration networkConfiguration() const; + void setNetworkConfiguration(const QNetworkConfiguration &networkConfiguration); +#endif + +private: + QSharedDataPointer<QNetworkProxyQueryPrivate> d; +}; + +Q_DECLARE_SHARED(QNetworkProxyQuery) + +class QNetworkProxyPrivate; + +class Q_NETWORK_EXPORT QNetworkProxy +{ +public: + enum ProxyType { + DefaultProxy, + Socks5Proxy, + NoProxy, + HttpProxy, + HttpCachingProxy, + FtpCachingProxy + }; + + enum Capability { + TunnelingCapability = 0x0001, + ListeningCapability = 0x0002, + UdpTunnelingCapability = 0x0004, + CachingCapability = 0x0008, + HostNameLookupCapability = 0x0010, + SctpTunnelingCapability = 0x00020, + SctpListeningCapability = 0x00040 + }; + Q_DECLARE_FLAGS(Capabilities, Capability) + + QNetworkProxy(); + QNetworkProxy(ProxyType type, const QString &hostName = QString(), quint16 port = 0, + const QString &user = QString(), const QString &password = QString()); + QNetworkProxy(const QNetworkProxy &other); +#ifdef Q_COMPILER_RVALUE_REFS + QNetworkProxy &operator=(QNetworkProxy &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QNetworkProxy &operator=(const QNetworkProxy &other); + ~QNetworkProxy(); + + void swap(QNetworkProxy &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool operator==(const QNetworkProxy &other) const; + inline bool operator!=(const QNetworkProxy &other) const + { return !(*this == other); } + + void setType(QNetworkProxy::ProxyType type); + QNetworkProxy::ProxyType type() const; + + void setCapabilities(Capabilities capab); + Capabilities capabilities() const; + bool isCachingProxy() const; + bool isTransparentProxy() const; + + void setUser(const QString &userName); + QString user() const; + + void setPassword(const QString &password); + QString password() const; + + void setHostName(const QString &hostName); + QString hostName() const; + + void setPort(quint16 port); + quint16 port() const; + + static void setApplicationProxy(const QNetworkProxy &proxy); + static QNetworkProxy applicationProxy(); + + // "cooked" headers + QVariant header(QNetworkRequest::KnownHeaders header) const; + void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); + + // raw headers: + bool hasRawHeader(const QByteArray &headerName) const; + QList<QByteArray> rawHeaderList() const; + QByteArray rawHeader(const QByteArray &headerName) const; + void setRawHeader(const QByteArray &headerName, const QByteArray &value); + +private: + QSharedDataPointer<QNetworkProxyPrivate> d; +}; + +Q_DECLARE_SHARED(QNetworkProxy) +Q_DECLARE_OPERATORS_FOR_FLAGS(QNetworkProxy::Capabilities) + +class Q_NETWORK_EXPORT QNetworkProxyFactory +{ +public: + QNetworkProxyFactory(); + virtual ~QNetworkProxyFactory(); + + virtual QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery()) = 0; + + static bool usesSystemConfiguration(); + static void setUseSystemConfiguration(bool enable); + static void setApplicationProxyFactory(QNetworkProxyFactory *factory); + static QList<QNetworkProxy> proxyForQuery(const QNetworkProxyQuery &query); + static QList<QNetworkProxy> systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery()); +}; + +#ifndef QT_NO_DEBUG_STREAM +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkProxy &proxy); +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkProxyQuery &proxyQuery); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QNetworkProxy) + +#endif // QT_NO_NETWORKPROXY + +#endif // QHOSTINFO_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkreply.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkreply.h new file mode 100644 index 000000000..d858e07d8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkreply.h @@ -0,0 +1,197 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKREPLY_H +#define QNETWORKREPLY_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/QIODevice> +#include <QtCore/QString> +#include <QtCore/QVariant> + +#include <QtNetwork/QNetworkRequest> +#include <QtNetwork/QNetworkAccessManager> + +QT_BEGIN_NAMESPACE + + +class QUrl; +class QVariant; +class QAuthenticator; +class QSslConfiguration; +class QSslError; +class QSslPreSharedKeyAuthenticator; + +class QNetworkReplyPrivate; +class Q_NETWORK_EXPORT QNetworkReply: public QIODevice +{ + Q_OBJECT +public: + enum NetworkError { + NoError = 0, + + // network layer errors [relating to the destination server] (1-99): + ConnectionRefusedError = 1, + RemoteHostClosedError, + HostNotFoundError, + TimeoutError, + OperationCanceledError, + SslHandshakeFailedError, + TemporaryNetworkFailureError, + NetworkSessionFailedError, + BackgroundRequestNotAllowedError, + TooManyRedirectsError, + InsecureRedirectError, + UnknownNetworkError = 99, + + // proxy errors (101-199): + ProxyConnectionRefusedError = 101, + ProxyConnectionClosedError, + ProxyNotFoundError, + ProxyTimeoutError, + ProxyAuthenticationRequiredError, + UnknownProxyError = 199, + + // content errors (201-299): + ContentAccessDenied = 201, + ContentOperationNotPermittedError, + ContentNotFoundError, + AuthenticationRequiredError, + ContentReSendError, + ContentConflictError, + ContentGoneError, + UnknownContentError = 299, + + // protocol errors + ProtocolUnknownError = 301, + ProtocolInvalidOperationError, + ProtocolFailure = 399, + + // Server side errors (401-499) + InternalServerError = 401, + OperationNotImplementedError, + ServiceUnavailableError, + UnknownServerError = 499 + }; + Q_ENUM(NetworkError) + + ~QNetworkReply(); + + // reimplemented from QIODevice + virtual void close() Q_DECL_OVERRIDE; + virtual bool isSequential() const Q_DECL_OVERRIDE; + + // like QAbstractSocket: + qint64 readBufferSize() const; + virtual void setReadBufferSize(qint64 size); + + QNetworkAccessManager *manager() const; + QNetworkAccessManager::Operation operation() const; + QNetworkRequest request() const; + NetworkError error() const; + bool isFinished() const; + bool isRunning() const; + QUrl url() const; + + // "cooked" headers + QVariant header(QNetworkRequest::KnownHeaders header) const; + + // raw headers: + bool hasRawHeader(const QByteArray &headerName) const; + QList<QByteArray> rawHeaderList() const; + QByteArray rawHeader(const QByteArray &headerName) const; + + typedef QPair<QByteArray, QByteArray> RawHeaderPair; + const QList<RawHeaderPair>& rawHeaderPairs() const; + + // attributes + QVariant attribute(QNetworkRequest::Attribute code) const; + +#ifndef QT_NO_SSL + QSslConfiguration sslConfiguration() const; + void setSslConfiguration(const QSslConfiguration &configuration); + void ignoreSslErrors(const QList<QSslError> &errors); +#endif + +public Q_SLOTS: + virtual void abort() = 0; + virtual void ignoreSslErrors(); + +Q_SIGNALS: + void metaDataChanged(); + void finished(); + void error(QNetworkReply::NetworkError); +#ifndef QT_NO_SSL + void encrypted(); + void sslErrors(const QList<QSslError> &errors); + void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); +#endif + void redirected(const QUrl &url); + void redirectAllowed(); + + void uploadProgress(qint64 bytesSent, qint64 bytesTotal); + void downloadProgress(qint64 bytesReceived, qint64 bytesTotal); + +protected: + explicit QNetworkReply(QObject *parent = Q_NULLPTR); + QNetworkReply(QNetworkReplyPrivate &dd, QObject *parent); + virtual qint64 writeData(const char *data, qint64 len) Q_DECL_OVERRIDE; + + void setOperation(QNetworkAccessManager::Operation operation); + void setRequest(const QNetworkRequest &request); + void setError(NetworkError errorCode, const QString &errorString); + void setFinished(bool); + void setUrl(const QUrl &url); + void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); + void setRawHeader(const QByteArray &headerName, const QByteArray &value); + void setAttribute(QNetworkRequest::Attribute code, const QVariant &value); + + virtual void sslConfigurationImplementation(QSslConfiguration &) const; + virtual void setSslConfigurationImplementation(const QSslConfiguration &); + virtual void ignoreSslErrorsImplementation(const QList<QSslError> &); + +private: + Q_DECLARE_PRIVATE(QNetworkReply) +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QNetworkReply::NetworkError) + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkrequest.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkrequest.h new file mode 100644 index 000000000..68d4ae6d6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworkrequest.h @@ -0,0 +1,182 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKREQUEST_H +#define QNETWORKREQUEST_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/QSharedDataPointer> +#include <QtCore/QString> +#include <QtCore/QUrl> +#include <QtCore/QVariant> + +QT_BEGIN_NAMESPACE + +class QSslConfiguration; + +class QNetworkRequestPrivate; +class Q_NETWORK_EXPORT QNetworkRequest +{ +public: + enum KnownHeaders { + ContentTypeHeader, + ContentLengthHeader, + LocationHeader, + LastModifiedHeader, + CookieHeader, + SetCookieHeader, + ContentDispositionHeader, // added for QMultipartMessage + UserAgentHeader, + ServerHeader + }; + enum Attribute { + HttpStatusCodeAttribute, + HttpReasonPhraseAttribute, + RedirectionTargetAttribute, + ConnectionEncryptedAttribute, + CacheLoadControlAttribute, + CacheSaveControlAttribute, + SourceIsFromCacheAttribute, + DoNotBufferUploadDataAttribute, + HttpPipeliningAllowedAttribute, + HttpPipeliningWasUsedAttribute, + CustomVerbAttribute, + CookieLoadControlAttribute, + AuthenticationReuseAttribute, + CookieSaveControlAttribute, + MaximumDownloadBufferSizeAttribute, // internal + DownloadBufferAttribute, // internal + SynchronousRequestAttribute, // internal + BackgroundRequestAttribute, + SpdyAllowedAttribute, + SpdyWasUsedAttribute, + EmitAllUploadProgressSignalsAttribute, + FollowRedirectsAttribute, + HTTP2AllowedAttribute, + HTTP2WasUsedAttribute, + OriginalContentLengthAttribute, + RedirectPolicyAttribute, + + User = 1000, + UserMax = 32767 + }; + enum CacheLoadControl { + AlwaysNetwork, + PreferNetwork, + PreferCache, + AlwaysCache + }; + enum LoadControl { + Automatic = 0, + Manual + }; + + enum Priority { + HighPriority = 1, + NormalPriority = 3, + LowPriority = 5 + }; + + enum RedirectPolicy { + ManualRedirectPolicy, + NoLessSafeRedirectPolicy, + SameOriginRedirectPolicy, + UserVerifiedRedirectPolicy + }; + + + explicit QNetworkRequest(const QUrl &url = QUrl()); + QNetworkRequest(const QNetworkRequest &other); + ~QNetworkRequest(); +#ifdef Q_COMPILER_RVALUE_REFS + QNetworkRequest &operator=(QNetworkRequest &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QNetworkRequest &operator=(const QNetworkRequest &other); + + void swap(QNetworkRequest &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool operator==(const QNetworkRequest &other) const; + inline bool operator!=(const QNetworkRequest &other) const + { return !operator==(other); } + + QUrl url() const; + void setUrl(const QUrl &url); + + // "cooked" headers + QVariant header(KnownHeaders header) const; + void setHeader(KnownHeaders header, const QVariant &value); + + // raw headers: + bool hasRawHeader(const QByteArray &headerName) const; + QList<QByteArray> rawHeaderList() const; + QByteArray rawHeader(const QByteArray &headerName) const; + void setRawHeader(const QByteArray &headerName, const QByteArray &value); + + // attributes + QVariant attribute(Attribute code, const QVariant &defaultValue = QVariant()) const; + void setAttribute(Attribute code, const QVariant &value); + +#ifndef QT_NO_SSL + QSslConfiguration sslConfiguration() const; + void setSslConfiguration(const QSslConfiguration &configuration); +#endif + + void setOriginatingObject(QObject *object); + QObject *originatingObject() const; + + Priority priority() const; + void setPriority(Priority priority); + + // HTTP redirect related + int maximumRedirectsAllowed() const; + void setMaximumRedirectsAllowed(int maximumRedirectsAllowed); + +private: + QSharedDataPointer<QNetworkRequestPrivate> d; + friend class QNetworkRequestPrivate; +}; + +Q_DECLARE_SHARED(QNetworkRequest) + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QNetworkRequest) +Q_DECLARE_METATYPE(QNetworkRequest::RedirectPolicy) + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworksession.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworksession.h new file mode 100644 index 000000000..d96b8915e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qnetworksession.h @@ -0,0 +1,150 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QNETWORKSESSION_H +#define QNETWORKSESSION_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qstring.h> +#include <QtNetwork/qnetworkinterface.h> +#include <QtCore/qvariant.h> +#include <QtNetwork/qnetworkconfiguration.h> + +#ifndef QT_NO_BEARERMANAGEMENT + +#if defined(Q_OS_WIN) && defined(interface) +#undef interface +#endif + +#include <QtCore/qshareddata.h> +QT_BEGIN_NAMESPACE + +class QNetworkSessionPrivate; +class Q_NETWORK_EXPORT QNetworkSession : public QObject +{ + Q_OBJECT + +public: + enum State { + Invalid = 0, + NotAvailable, + Connecting, + Connected, + Closing, + Disconnected, + Roaming + }; + + enum SessionError { + UnknownSessionError = 0, + SessionAbortedError, + RoamingError, + OperationNotSupportedError, + InvalidConfigurationError + }; + + enum UsagePolicy { + NoPolicy = 0, + NoBackgroundTrafficPolicy = 1 + }; + + Q_DECLARE_FLAGS(UsagePolicies, UsagePolicy) + + explicit QNetworkSession(const QNetworkConfiguration &connConfig, QObject *parent = Q_NULLPTR); + virtual ~QNetworkSession(); + + bool isOpen() const; + QNetworkConfiguration configuration() const; +#ifndef QT_NO_NETWORKINTERFACE + QNetworkInterface interface() const; +#endif + + State state() const; + SessionError error() const; + QString errorString() const; + QVariant sessionProperty(const QString &key) const; + void setSessionProperty(const QString &key, const QVariant &value); + + quint64 bytesWritten() const; + quint64 bytesReceived() const; + quint64 activeTime() const; + + QNetworkSession::UsagePolicies usagePolicies() const; + + bool waitForOpened(int msecs = 30000); + +public Q_SLOTS: + void open(); + void close(); + void stop(); + + //roaming related slots + void migrate(); + void ignore(); + void accept(); + void reject(); + +Q_SIGNALS: + void stateChanged(QNetworkSession::State); + void opened(); + void closed(); + void error(QNetworkSession::SessionError); + void preferredConfigurationChanged(const QNetworkConfiguration &config, bool isSeamless); + void newConfigurationActivated(); + void usagePoliciesChanged(QNetworkSession::UsagePolicies usagePolicies); + +protected: + virtual void connectNotify(const QMetaMethod &signal) Q_DECL_OVERRIDE; + virtual void disconnectNotify(const QMetaMethod &signal) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QNetworkSession) + friend class QNetworkSessionPrivate; + QNetworkSessionPrivate *d; +}; + +QT_END_NAMESPACE +Q_DECLARE_METATYPE(QNetworkSession::State) +Q_DECLARE_METATYPE(QNetworkSession::SessionError) +Q_DECLARE_METATYPE(QNetworkSession::UsagePolicies) + +#endif // QT_NO_BEARERMANAGEMENT + +#endif // QNETWORKSESSION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsctpserver.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsctpserver.h new file mode 100644 index 000000000..1afdab28a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsctpserver.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Alex Trotsenko <alex1973tr@gmail.com> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCTPSERVER_H +#define QSCTPSERVER_H + +#include <QtNetwork/qtcpserver.h> + +QT_BEGIN_NAMESPACE + + +#if !defined(QT_NO_SCTP) || defined(Q_CLANG_QDOC) + +class QSctpServerPrivate; +class QSctpSocket; + +class Q_NETWORK_EXPORT QSctpServer : public QTcpServer +{ + Q_OBJECT +public: + explicit QSctpServer(QObject *parent = nullptr); + virtual ~QSctpServer(); + + void setMaximumChannelCount(int count); + int maximumChannelCount() const; + + QSctpSocket *nextPendingDatagramConnection(); + +protected: + void incomingConnection(qintptr handle) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QSctpServer) + Q_DECLARE_PRIVATE(QSctpServer) +}; + +#endif // QT_NO_SCTP + +QT_END_NAMESPACE + +#endif // QSCTPSERVER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsctpsocket.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsctpsocket.h new file mode 100644 index 000000000..9bed1890f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsctpsocket.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Alex Trotsenko <alex1973tr@gmail.com> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCTPSOCKET_H +#define QSCTPSOCKET_H + +#include <QtNetwork/qtcpsocket.h> +#include <QtNetwork/qnetworkdatagram.h> + +QT_BEGIN_NAMESPACE + +#if !defined(QT_NO_SCTP) || defined(Q_CLANG_QDOC) + +class QSctpSocketPrivate; + +class Q_NETWORK_EXPORT QSctpSocket : public QTcpSocket +{ + Q_OBJECT +public: + explicit QSctpSocket(QObject *parent = nullptr); + virtual ~QSctpSocket(); + + void close() Q_DECL_OVERRIDE; + void disconnectFromHost() Q_DECL_OVERRIDE; + + void setMaximumChannelCount(int count); + int maximumChannelCount() const; + bool isInDatagramMode() const; + + QNetworkDatagram readDatagram(); + bool writeDatagram(const QNetworkDatagram &datagram); + +protected: + qint64 readData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 readLineData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QSctpSocket) + Q_DECLARE_PRIVATE(QSctpSocket) +}; + +#endif // QT_NO_SCTP + +QT_END_NAMESPACE + +#endif // QSCTPSOCKET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qssl.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qssl.h new file mode 100644 index 000000000..c2a468c97 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qssl.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSL_H +#define QSSL_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/QFlags> + +QT_BEGIN_NAMESPACE + + +namespace QSsl { + enum KeyType { + PrivateKey, + PublicKey + }; + + enum EncodingFormat { + Pem, + Der + }; + + enum KeyAlgorithm { + Opaque, + Rsa, + Dsa, + Ec + }; + + enum AlternativeNameEntryType { + EmailEntry, + DnsEntry + }; + +#if QT_DEPRECATED_SINCE(5,0) + typedef AlternativeNameEntryType AlternateNameEntryType; +#endif + + enum SslProtocol { + SslV3, + SslV2, + TlsV1_0, +#if QT_DEPRECATED_SINCE(5,0) + TlsV1 = TlsV1_0, +#endif + TlsV1_1, + TlsV1_2, + AnyProtocol, + TlsV1SslV3, + SecureProtocols, + + TlsV1_0OrLater, + TlsV1_1OrLater, + TlsV1_2OrLater, + + UnknownProtocol = -1 + }; + + enum SslOption { + SslOptionDisableEmptyFragments = 0x01, + SslOptionDisableSessionTickets = 0x02, + SslOptionDisableCompression = 0x04, + SslOptionDisableServerNameIndication = 0x08, + SslOptionDisableLegacyRenegotiation = 0x10, + SslOptionDisableSessionSharing = 0x20, + SslOptionDisableSessionPersistence = 0x40, + SslOptionDisableServerCipherPreference = 0x80 + }; + Q_DECLARE_FLAGS(SslOptions, SslOption) +} + +Q_DECLARE_OPERATORS_FOR_FLAGS(QSsl::SslOptions) + +QT_END_NAMESPACE + +#endif // QSSL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslcertificate.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslcertificate.h new file mode 100644 index 000000000..8b051a5c8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslcertificate.h @@ -0,0 +1,183 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLCERTIFICATE_H +#define QSSLCERTIFICATE_H + +#ifdef verify +#undef verify +#endif + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qbytearray.h> +#include <QtCore/qcryptographichash.h> +#include <QtCore/qdatetime.h> +#include <QtCore/qregexp.h> +#include <QtCore/qsharedpointer.h> +#include <QtCore/qmap.h> +#include <QtNetwork/qssl.h> + +#ifndef QT_NO_SSL + +QT_BEGIN_NAMESPACE + +class QDateTime; +class QIODevice; +class QSslError; +class QSslKey; +class QSslCertificateExtension; +class QStringList; + +class QSslCertificate; +// qHash is a friend, but we can't use default arguments for friends (§8.3.6.4) +Q_NETWORK_EXPORT uint qHash(const QSslCertificate &key, uint seed = 0) Q_DECL_NOTHROW; + +class QSslCertificatePrivate; +class Q_NETWORK_EXPORT QSslCertificate +{ +public: + enum SubjectInfo { + Organization, + CommonName, + LocalityName, + OrganizationalUnitName, + CountryName, + StateOrProvinceName, + DistinguishedNameQualifier, + SerialNumber, + EmailAddress + }; + + explicit QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem); + explicit QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem); + QSslCertificate(const QSslCertificate &other); + ~QSslCertificate(); +#ifdef Q_COMPILER_RVALUE_REFS + QSslCertificate &operator=(QSslCertificate &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QSslCertificate &operator=(const QSslCertificate &other); + + void swap(QSslCertificate &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + + bool operator==(const QSslCertificate &other) const; + inline bool operator!=(const QSslCertificate &other) const { return !operator==(other); } + + bool isNull() const; +#if QT_DEPRECATED_SINCE(5,0) + QT_DEPRECATED inline bool isValid() const { + const QDateTime currentTime = QDateTime::currentDateTimeUtc(); + return currentTime >= effectiveDate() && + currentTime <= expiryDate() && + !isBlacklisted(); + } +#endif + bool isBlacklisted() const; + bool isSelfSigned() const; + void clear(); + + // Certificate info + QByteArray version() const; + QByteArray serialNumber() const; + QByteArray digest(QCryptographicHash::Algorithm algorithm = QCryptographicHash::Md5) const; + QStringList issuerInfo(SubjectInfo info) const; + QStringList issuerInfo(const QByteArray &attribute) const; + QStringList subjectInfo(SubjectInfo info) const; + QStringList subjectInfo(const QByteArray &attribute) const; + QList<QByteArray> subjectInfoAttributes() const; + QList<QByteArray> issuerInfoAttributes() const; +#if QT_DEPRECATED_SINCE(5,0) + QT_DEPRECATED inline QMultiMap<QSsl::AlternateNameEntryType, QString> + alternateSubjectNames() const { return subjectAlternativeNames(); } +#endif + QMultiMap<QSsl::AlternativeNameEntryType, QString> subjectAlternativeNames() const; + QDateTime effectiveDate() const; + QDateTime expiryDate() const; + QSslKey publicKey() const; + QList<QSslCertificateExtension> extensions() const; + + QByteArray toPem() const; + QByteArray toDer() const; + QString toText() const; + + static QList<QSslCertificate> fromPath( + const QString &path, QSsl::EncodingFormat format = QSsl::Pem, + QRegExp::PatternSyntax syntax = QRegExp::FixedString); + static QList<QSslCertificate> fromDevice( + QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem); + static QList<QSslCertificate> fromData( + const QByteArray &data, QSsl::EncodingFormat format = QSsl::Pem); + +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + static QList<QSslError> verify(const QList<QSslCertificate> &certificateChain, const QString &hostName = QString()); +#else + static QList<QSslError> verify(QList<QSslCertificate> certificateChain, const QString &hostName = QString()); +#endif + + static bool importPkcs12(QIODevice *device, + QSslKey *key, QSslCertificate *cert, + QList<QSslCertificate> *caCertificates = Q_NULLPTR, + const QByteArray &passPhrase=QByteArray()); + + Qt::HANDLE handle() const; + +private: + QExplicitlySharedDataPointer<QSslCertificatePrivate> d; + friend class QSslCertificatePrivate; + friend class QSslSocketBackendPrivate; + + friend Q_NETWORK_EXPORT uint qHash(const QSslCertificate &key, uint seed) Q_DECL_NOTHROW; +}; +Q_DECLARE_SHARED(QSslCertificate) + +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslCertificate &certificate); +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, QSslCertificate::SubjectInfo info); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QSslCertificate) + +#endif // QT_NO_SSL + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslcertificateextension.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslcertificateextension.h new file mode 100644 index 000000000..2ce211268 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslcertificateextension.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Richard J. Moore <rich@kde.org> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSSLCERTIFICATEEXTENSION_H +#define QSSLCERTIFICATEEXTENSION_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qshareddata.h> +#include <QtCore/qstring.h> +#include <QtCore/qvariant.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_SSL + +class QSslCertificateExtensionPrivate; + +class Q_NETWORK_EXPORT QSslCertificateExtension +{ +public: + QSslCertificateExtension(); + QSslCertificateExtension(const QSslCertificateExtension &other); +#ifdef Q_COMPILER_RVALUE_REFS + QSslCertificateExtension &operator=(QSslCertificateExtension &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QSslCertificateExtension &operator=(const QSslCertificateExtension &other); + ~QSslCertificateExtension(); + + void swap(QSslCertificateExtension &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + QString oid() const; + QString name() const; + QVariant value() const; + bool isCritical() const; + + bool isSupported() const; + +private: + friend class QSslCertificatePrivate; + QSharedDataPointer<QSslCertificateExtensionPrivate> d; +}; + +Q_DECLARE_SHARED(QSslCertificateExtension) + +#endif // QT_NO_SSL + +QT_END_NAMESPACE + + +#endif // QSSLCERTIFICATEEXTENSION_H + + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslcipher.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslcipher.h new file mode 100644 index 000000000..c6328e016 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslcipher.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLCIPHER_H +#define QSSLCIPHER_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qstring.h> +#include <QtCore/qscopedpointer.h> +#include <QtNetwork/qssl.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_SSL + +class QSslCipherPrivate; +class Q_NETWORK_EXPORT QSslCipher +{ +public: + QSslCipher(); + explicit QSslCipher(const QString &name); + QSslCipher(const QString &name, QSsl::SslProtocol protocol); + QSslCipher(const QSslCipher &other); +#ifdef Q_COMPILER_RVALUE_REFS + QSslCipher &operator=(QSslCipher &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QSslCipher &operator=(const QSslCipher &other); + ~QSslCipher(); + + void swap(QSslCipher &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + + bool operator==(const QSslCipher &other) const; + inline bool operator!=(const QSslCipher &other) const { return !operator==(other); } + + bool isNull() const; + QString name() const; + int supportedBits() const; + int usedBits() const; + + QString keyExchangeMethod() const; + QString authenticationMethod() const; + QString encryptionMethod() const; + QString protocolString() const; + QSsl::SslProtocol protocol() const; + +private: + QScopedPointer<QSslCipherPrivate> d; + friend class QSslSocketBackendPrivate; +}; + +Q_DECLARE_SHARED(QSslCipher) + +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslCipher &cipher); +#endif + +#endif // QT_NO_SSL + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslconfiguration.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslconfiguration.h new file mode 100644 index 000000000..1c57bebd6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslconfiguration.h @@ -0,0 +1,192 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/**************************************************************************** +** +** In addition, as a special exception, the copyright holders listed above give +** permission to link the code of its release of Qt with the OpenSSL project's +** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the +** same license as the original version), and distribute the linked executables. +** +** You must comply with the GNU General Public License version 2 in all +** respects for all of the code used other than the "OpenSSL" code. If you +** modify this file, you may extend this exception to your version of the file, +** but you are not obligated to do so. If you do not wish to do so, delete +** this exception statement from your version of this file. +** +****************************************************************************/ + +#ifndef QSSLCONFIGURATION_H +#define QSSLCONFIGURATION_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qshareddata.h> +#include <QtNetwork/qsslsocket.h> +#include <QtNetwork/qssl.h> + +#ifndef QT_NO_SSL + +QT_BEGIN_NAMESPACE + +template<typename T> class QList; +class QSslCertificate; +class QSslCipher; +class QSslKey; +class QSslEllipticCurve; +class QSslDiffieHellmanParameters; + +class QSslConfigurationPrivate; +class Q_NETWORK_EXPORT QSslConfiguration +{ +public: + QSslConfiguration(); + QSslConfiguration(const QSslConfiguration &other); + ~QSslConfiguration(); +#ifdef Q_COMPILER_RVALUE_REFS + QSslConfiguration &operator=(QSslConfiguration &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QSslConfiguration &operator=(const QSslConfiguration &other); + + void swap(QSslConfiguration &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + + bool operator==(const QSslConfiguration &other) const; + inline bool operator!=(const QSslConfiguration &other) const + { return !(*this == other); } + + bool isNull() const; + + QSsl::SslProtocol protocol() const; + void setProtocol(QSsl::SslProtocol protocol); + + // Verification + QSslSocket::PeerVerifyMode peerVerifyMode() const; + void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode); + + int peerVerifyDepth() const; + 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); + + QSslCertificate peerCertificate() const; + QList<QSslCertificate> peerCertificateChain() const; + QSslCipher sessionCipher() const; + QSsl::SslProtocol sessionProtocol() const; + + // Private keys, for server sockets + QSslKey privateKey() const; + void setPrivateKey(const QSslKey &key); + + // Cipher settings + QList<QSslCipher> ciphers() const; + void setCiphers(const QList<QSslCipher> &ciphers); + static QList<QSslCipher> supportedCiphers(); + + // Certificate Authority (CA) settings + QList<QSslCertificate> caCertificates() const; + void setCaCertificates(const QList<QSslCertificate> &certificates); + static QList<QSslCertificate> systemCaCertificates(); + + void setSslOption(QSsl::SslOption option, bool on); + bool testSslOption(QSsl::SslOption option) const; + + QByteArray sessionTicket() const; + void setSessionTicket(const QByteArray &sessionTicket); + int sessionTicketLifeTimeHint() const; + + QSslKey ephemeralServerKey() const; + + // EC settings + QVector<QSslEllipticCurve> ellipticCurves() const; + void setEllipticCurves(const QVector<QSslEllipticCurve> &curves); + static QVector<QSslEllipticCurve> supportedEllipticCurves(); + + QByteArray preSharedKeyIdentityHint() const; + void setPreSharedKeyIdentityHint(const QByteArray &hint); + + QSslDiffieHellmanParameters diffieHellmanParameters() const; + void setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams); + + static QSslConfiguration defaultConfiguration(); + static void setDefaultConfiguration(const QSslConfiguration &configuration); + + enum NextProtocolNegotiationStatus { + NextProtocolNegotiationNone, + NextProtocolNegotiationNegotiated, + NextProtocolNegotiationUnsupported + }; + +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + void setAllowedNextProtocols(const QList<QByteArray> &protocols); +#else + void setAllowedNextProtocols(QList<QByteArray> protocols); +#endif + QList<QByteArray> allowedNextProtocols() const; + + QByteArray nextNegotiatedProtocol() const; + NextProtocolNegotiationStatus nextProtocolNegotiationStatus() const; + + static const char ALPNProtocolHTTP2[]; + static const char NextProtocolSpdy3_0[]; + static const char NextProtocolHttp1_1[]; + +private: + friend class QSslSocket; + friend class QSslConfigurationPrivate; + friend class QSslSocketBackendPrivate; + friend class QSslContext; + QSslConfiguration(QSslConfigurationPrivate *dd); + QSharedDataPointer<QSslConfigurationPrivate> d; +}; + +Q_DECLARE_SHARED(QSslConfiguration) + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QSslConfiguration) + +#endif // QT_NO_SSL + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qssldiffiehellmanparameters.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qssldiffiehellmanparameters.h new file mode 100644 index 000000000..497d2bebf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qssldiffiehellmanparameters.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Mikkel Krautz <mikkel@krautz.dk> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLDIFFIEHELLMANPARAMETERS_H +#define QSSLDIFFIEHELLMANPARAMETERS_H + +#include <QtNetwork/qssl.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qbytearray.h> +#include <QtCore/qshareddata.h> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SSL + +class QIODevice; +class QSslContext; +class QSslDiffieHellmanParametersPrivate; + +class QSslDiffieHellmanParameters; +// qHash is a friend, but we can't use default arguments for friends (§8.3.6.4) +Q_NETWORK_EXPORT uint qHash(const QSslDiffieHellmanParameters &dhparam, uint seed = 0) Q_DECL_NOTHROW; + +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslDiffieHellmanParameters &dhparams); +#endif + +Q_NETWORK_EXPORT bool operator==(const QSslDiffieHellmanParameters &lhs, const QSslDiffieHellmanParameters &rhs) Q_DECL_NOTHROW; + +inline bool operator!=(const QSslDiffieHellmanParameters &lhs, const QSslDiffieHellmanParameters &rhs) Q_DECL_NOTHROW +{ + return !operator==(lhs, rhs); +} + +class QSslDiffieHellmanParameters +{ +public: + enum Error { + NoError, + InvalidInputDataError, + UnsafeParametersError + }; + + Q_NETWORK_EXPORT static QSslDiffieHellmanParameters defaultParameters(); + + Q_NETWORK_EXPORT QSslDiffieHellmanParameters(); + Q_NETWORK_EXPORT QSslDiffieHellmanParameters(const QSslDiffieHellmanParameters &other); + QSslDiffieHellmanParameters(QSslDiffieHellmanParameters &&other) Q_DECL_NOTHROW : d(other.d) { other.d = nullptr; } + Q_NETWORK_EXPORT ~QSslDiffieHellmanParameters(); + + Q_NETWORK_EXPORT QSslDiffieHellmanParameters &operator=(const QSslDiffieHellmanParameters &other); + QSslDiffieHellmanParameters &operator=(QSslDiffieHellmanParameters &&other) Q_DECL_NOTHROW { swap(other); return *this; } + + void swap(QSslDiffieHellmanParameters &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + Q_NETWORK_EXPORT static QSslDiffieHellmanParameters fromEncoded(const QByteArray &encoded, QSsl::EncodingFormat format = QSsl::Pem); + Q_NETWORK_EXPORT static QSslDiffieHellmanParameters fromEncoded(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem); + + Q_NETWORK_EXPORT bool isEmpty() const Q_DECL_NOTHROW; + Q_NETWORK_EXPORT bool isValid() const Q_DECL_NOTHROW; + Q_NETWORK_EXPORT Error error() const Q_DECL_NOTHROW; + Q_NETWORK_EXPORT QString errorString() const Q_DECL_NOTHROW; + +private: + QSslDiffieHellmanParametersPrivate *d; + friend class QSslContext; + friend Q_NETWORK_EXPORT bool operator==(const QSslDiffieHellmanParameters &lhs, const QSslDiffieHellmanParameters &rhs) Q_DECL_NOTHROW; +#ifndef QT_NO_DEBUG_STREAM + friend Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslDiffieHellmanParameters &dhparam); +#endif + friend Q_NETWORK_EXPORT uint qHash(const QSslDiffieHellmanParameters &dhparam, uint seed) Q_DECL_NOTHROW; +}; + +Q_DECLARE_SHARED(QSslDiffieHellmanParameters) + +#endif // QT_NO_SSL + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslellipticcurve.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslellipticcurve.h new file mode 100644 index 000000000..231566063 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslellipticcurve.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Governikus GmbH & Co. KG. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSSLELLIPTICCURVE_H +#define QSSLELLIPTICCURVE_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/QString> +#include <QtCore/QMetaType> +#if QT_DEPRECATED_SINCE(5, 6) +#include <QtCore/QHash> +#endif +#include <QtCore/qhashfunctions.h> + +QT_BEGIN_NAMESPACE + +class QSslEllipticCurve; +// qHash is a friend, but we can't use default arguments for friends (§8.3.6.4) +Q_DECL_CONSTEXPR uint qHash(QSslEllipticCurve curve, uint seed = 0) Q_DECL_NOTHROW; + +class QSslEllipticCurve { +public: + Q_DECL_CONSTEXPR QSslEllipticCurve() Q_DECL_NOTHROW + : id(0) + { + } + + Q_NETWORK_EXPORT static QSslEllipticCurve fromShortName(const QString &name); + Q_NETWORK_EXPORT static QSslEllipticCurve fromLongName(const QString &name); + + Q_REQUIRED_RESULT Q_NETWORK_EXPORT QString shortName() const; + Q_REQUIRED_RESULT Q_NETWORK_EXPORT QString longName() const; + + Q_DECL_CONSTEXPR bool isValid() const Q_DECL_NOTHROW + { + return id != 0; + } + + Q_NETWORK_EXPORT bool isTlsNamedCurve() const Q_DECL_NOTHROW; + +private: + int id; + + friend Q_DECL_CONSTEXPR bool operator==(QSslEllipticCurve lhs, QSslEllipticCurve rhs) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR uint qHash(QSslEllipticCurve curve, uint seed) Q_DECL_NOTHROW; + + friend class QSslSocketPrivate; + friend class QSslSocketBackendPrivate; +}; + +Q_DECLARE_TYPEINFO(QSslEllipticCurve, Q_PRIMITIVE_TYPE); + +Q_DECL_CONSTEXPR inline uint qHash(QSslEllipticCurve curve, uint seed) Q_DECL_NOTHROW +{ return qHash(curve.id, seed); } + +Q_DECL_CONSTEXPR inline bool operator==(QSslEllipticCurve lhs, QSslEllipticCurve rhs) Q_DECL_NOTHROW +{ return lhs.id == rhs.id; } + +Q_DECL_CONSTEXPR inline bool operator!=(QSslEllipticCurve lhs, QSslEllipticCurve rhs) Q_DECL_NOTHROW +{ return !operator==(lhs, rhs); } + +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, QSslEllipticCurve curve); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QSslEllipticCurve) + +#endif // QSSLELLIPTICCURVE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslerror.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslerror.h new file mode 100644 index 000000000..d7c959423 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslerror.h @@ -0,0 +1,131 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLERROR_H +#define QSSLERROR_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qvariant.h> +#include <QtNetwork/qsslcertificate.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_SSL + +class QSslErrorPrivate; +class Q_NETWORK_EXPORT QSslError +{ +public: + enum SslError { + NoError, + UnableToGetIssuerCertificate, + UnableToDecryptCertificateSignature, + UnableToDecodeIssuerPublicKey, + CertificateSignatureFailed, + CertificateNotYetValid, + CertificateExpired, + InvalidNotBeforeField, + InvalidNotAfterField, + SelfSignedCertificate, + SelfSignedCertificateInChain, + UnableToGetLocalIssuerCertificate, + UnableToVerifyFirstCertificate, + CertificateRevoked, + InvalidCaCertificate, + PathLengthExceeded, + InvalidPurpose, + CertificateUntrusted, + CertificateRejected, + SubjectIssuerMismatch, // hostname mismatch? + AuthorityIssuerSerialNumberMismatch, + NoPeerCertificate, + HostNameMismatch, + NoSslSupport, + CertificateBlacklisted, + UnspecifiedError = -1 + }; + + // RVCT compiler in debug build does not like about default values in const- + // So as an workaround we define all constructor overloads here explicitly + QSslError(); + QSslError(SslError error); + QSslError(SslError error, const QSslCertificate &certificate); + + QSslError(const QSslError &other); + + void swap(QSslError &other) Q_DECL_NOTHROW + { qSwap(d, other.d); } + + ~QSslError(); +#ifdef Q_COMPILER_RVALUE_REFS + QSslError &operator=(QSslError &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QSslError &operator=(const QSslError &other); + bool operator==(const QSslError &other) const; + inline bool operator!=(const QSslError &other) const + { return !(*this == other); } + + SslError error() const; + QString errorString() const; + QSslCertificate certificate() const; + +private: + QScopedPointer<QSslErrorPrivate> d; +}; +Q_DECLARE_SHARED(QSslError) + +Q_NETWORK_EXPORT uint qHash(const QSslError &key, uint seed = 0) Q_DECL_NOTHROW; + +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslError &error); +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslError::SslError &error); +#endif + +#endif // QT_NO_SSL + +QT_END_NAMESPACE + +#ifndef QT_NO_SSL +Q_DECLARE_METATYPE(QList<QSslError>) +#endif + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslkey.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslkey.h new file mode 100644 index 000000000..6de02b1e4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslkey.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLKEY_H +#define QSSLKEY_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qbytearray.h> +#include <QtCore/qsharedpointer.h> +#include <QtNetwork/qssl.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_SSL + +template <typename A, typename B> struct QPair; + +class QIODevice; + +class QSslKeyPrivate; +class Q_NETWORK_EXPORT QSslKey +{ +public: + QSslKey(); + QSslKey(const QByteArray &encoded, QSsl::KeyAlgorithm algorithm, + QSsl::EncodingFormat format = QSsl::Pem, + QSsl::KeyType type = QSsl::PrivateKey, + const QByteArray &passPhrase = QByteArray()); + QSslKey(QIODevice *device, QSsl::KeyAlgorithm algorithm, + QSsl::EncodingFormat format = QSsl::Pem, + QSsl::KeyType type = QSsl::PrivateKey, + const QByteArray &passPhrase = QByteArray()); + explicit QSslKey(Qt::HANDLE handle, QSsl::KeyType type = QSsl::PrivateKey); + QSslKey(const QSslKey &other); +#ifdef Q_COMPILER_RVALUE_REFS + QSslKey &operator=(QSslKey &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + QSslKey &operator=(const QSslKey &other); + ~QSslKey(); + + void swap(QSslKey &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + bool isNull() const; + void clear(); + + int length() const; + QSsl::KeyType type() const; + QSsl::KeyAlgorithm algorithm() const; + + QByteArray toPem(const QByteArray &passPhrase = QByteArray()) const; + QByteArray toDer(const QByteArray &passPhrase = QByteArray()) const; + + Qt::HANDLE handle() const; + + bool operator==(const QSslKey &key) const; + inline bool operator!=(const QSslKey &key) const { return !operator==(key); } + +private: + QExplicitlySharedDataPointer<QSslKeyPrivate> d; + friend class QSslCertificate; + friend class QSslSocketBackendPrivate; +}; + +Q_DECLARE_SHARED(QSslKey) + +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslKey &key); +#endif + +#endif // QT_NO_SSL + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslpresharedkeyauthenticator.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslpresharedkeyauthenticator.h new file mode 100644 index 000000000..a012ff489 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslpresharedkeyauthenticator.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Governikus GmbH & Co. KG. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSSLPRESHAREDKEYAUTHENTICATOR_H +#define QSSLPRESHAREDKEYAUTHENTICATOR_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/QString> +#include <QtCore/QSharedDataPointer> +#include <QtCore/QMetaType> + +QT_BEGIN_NAMESPACE + +class QSslPreSharedKeyAuthenticatorPrivate; + +class QSslPreSharedKeyAuthenticator +{ +public: + Q_NETWORK_EXPORT QSslPreSharedKeyAuthenticator(); + Q_NETWORK_EXPORT ~QSslPreSharedKeyAuthenticator(); + Q_NETWORK_EXPORT QSslPreSharedKeyAuthenticator(const QSslPreSharedKeyAuthenticator &authenticator); + Q_NETWORK_EXPORT QSslPreSharedKeyAuthenticator &operator=(const QSslPreSharedKeyAuthenticator &authenticator); + +#ifdef Q_COMPILER_RVALUE_REFS + QSslPreSharedKeyAuthenticator &operator=(QSslPreSharedKeyAuthenticator &&other) Q_DECL_NOTHROW { swap(other); return *this; } +#endif + + void swap(QSslPreSharedKeyAuthenticator &other) Q_DECL_NOTHROW { qSwap(d, other.d); } + + Q_NETWORK_EXPORT QByteArray identityHint() const; + + Q_NETWORK_EXPORT void setIdentity(const QByteArray &identity); + Q_NETWORK_EXPORT QByteArray identity() const; + Q_NETWORK_EXPORT int maximumIdentityLength() const; + + Q_NETWORK_EXPORT void setPreSharedKey(const QByteArray &preSharedKey); + Q_NETWORK_EXPORT QByteArray preSharedKey() const; + Q_NETWORK_EXPORT int maximumPreSharedKeyLength() const; + +private: + friend Q_NETWORK_EXPORT bool operator==(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs); + friend class QSslSocketBackendPrivate; + + QSharedDataPointer<QSslPreSharedKeyAuthenticatorPrivate> d; +}; + +inline bool operator!=(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs) +{ + return !operator==(lhs, rhs); +} + +Q_DECLARE_SHARED(QSslPreSharedKeyAuthenticator) + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QSslPreSharedKeyAuthenticator) +Q_DECLARE_METATYPE(QSslPreSharedKeyAuthenticator*) + +#endif // QSSLPRESHAREDKEYAUTHENTICATOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslsocket.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslsocket.h new file mode 100644 index 000000000..39e70bccd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qsslsocket.h @@ -0,0 +1,241 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLSOCKET_H +#define QSSLSOCKET_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qlist.h> +#include <QtCore/qregexp.h> +#ifndef QT_NO_SSL +# include <QtNetwork/qtcpsocket.h> +# include <QtNetwork/qsslerror.h> +#endif + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_SSL + +class QDir; +class QSslCipher; +class QSslCertificate; +class QSslConfiguration; +class QSslEllipticCurve; +class QSslPreSharedKeyAuthenticator; + +class QSslSocketPrivate; +class Q_NETWORK_EXPORT QSslSocket : public QTcpSocket +{ + Q_OBJECT +public: + enum SslMode { + UnencryptedMode, + SslClientMode, + SslServerMode + }; + + enum PeerVerifyMode { + VerifyNone, + QueryPeer, + VerifyPeer, + AutoVerifyPeer + }; + + explicit QSslSocket(QObject *parent = Q_NULLPTR); + ~QSslSocket(); + void resume() Q_DECL_OVERRIDE; // to continue after proxy authentication required, SSL errors etc. + + // Autostarting the SSL client handshake. + void connectToHostEncrypted(const QString &hostName, quint16 port, OpenMode mode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol); + void connectToHostEncrypted(const QString &hostName, quint16 port, const QString &sslPeerName, OpenMode mode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol); + bool setSocketDescriptor(qintptr socketDescriptor, SocketState state = ConnectedState, + OpenMode openMode = ReadWrite) Q_DECL_OVERRIDE; + + using QAbstractSocket::connectToHost; + void connectToHost(const QString &hostName, quint16 port, OpenMode openMode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol) Q_DECL_OVERRIDE; + void disconnectFromHost() Q_DECL_OVERRIDE; + + virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value) Q_DECL_OVERRIDE; + virtual QVariant socketOption(QAbstractSocket::SocketOption option) Q_DECL_OVERRIDE; + + SslMode mode() const; + bool isEncrypted() const; + + QSsl::SslProtocol protocol() const; + void setProtocol(QSsl::SslProtocol protocol); + + QSslSocket::PeerVerifyMode peerVerifyMode() const; + void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode); + + int peerVerifyDepth() const; + void setPeerVerifyDepth(int depth); + + QString peerVerifyName() const; + void setPeerVerifyName(const QString &hostName); + + // From QIODevice + qint64 bytesAvailable() const Q_DECL_OVERRIDE; + qint64 bytesToWrite() const Q_DECL_OVERRIDE; + bool canReadLine() const Q_DECL_OVERRIDE; + void close() Q_DECL_OVERRIDE; + bool atEnd() const Q_DECL_OVERRIDE; + bool flush(); // ### Qt6: remove me (implementation moved to private flush()) + void abort(); + + // From QAbstractSocket: + void setReadBufferSize(qint64 size) Q_DECL_OVERRIDE; + + // Similar to QIODevice's: + qint64 encryptedBytesAvailable() const; + qint64 encryptedBytesToWrite() const; + + // SSL configuration + QSslConfiguration sslConfiguration() const; + 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; + QSslCertificate peerCertificate() const; + QList<QSslCertificate> peerCertificateChain() const; + QSslCipher sessionCipher() const; + QSsl::SslProtocol sessionProtocol() const; + + // Private keys, for server sockets. + void setPrivateKey(const QSslKey &key); + void setPrivateKey(const QString &fileName, QSsl::KeyAlgorithm algorithm = QSsl::Rsa, + QSsl::EncodingFormat format = QSsl::Pem, + const QByteArray &passPhrase = QByteArray()); + QSslKey privateKey() const; + + // Cipher settings. +#if QT_DEPRECATED_SINCE(5, 5) + QT_DEPRECATED_X("Use QSslConfiguration::ciphers()") QList<QSslCipher> ciphers() const; + QT_DEPRECATED_X("Use QSslConfiguration::setCiphers()") void setCiphers(const QList<QSslCipher> &ciphers); + QT_DEPRECATED void setCiphers(const QString &ciphers); + QT_DEPRECATED static void setDefaultCiphers(const QList<QSslCipher> &ciphers); + QT_DEPRECATED static QList<QSslCipher> defaultCiphers(); + QT_DEPRECATED_X("Use QSslConfiguration::supportedCiphers()") static QList<QSslCipher> supportedCiphers(); +#endif // QT_DEPRECATED_SINCE(5, 5) + + // CA settings. + bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, + QRegExp::PatternSyntax syntax = QRegExp::FixedString); + void addCaCertificate(const QSslCertificate &certificate); + void addCaCertificates(const QList<QSslCertificate> &certificates); +#if QT_DEPRECATED_SINCE(5, 5) + QT_DEPRECATED_X("Use QSslConfiguration::setCaCertificates()") void setCaCertificates(const QList<QSslCertificate> &certificates); + QT_DEPRECATED_X("Use QSslConfiguration::caCertificates()") QList<QSslCertificate> caCertificates() const; +#endif // QT_DEPRECATED_SINCE(5, 5) + static bool addDefaultCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, + QRegExp::PatternSyntax syntax = QRegExp::FixedString); + static void addDefaultCaCertificate(const QSslCertificate &certificate); + static void addDefaultCaCertificates(const QList<QSslCertificate> &certificates); +#if QT_DEPRECATED_SINCE(5, 5) + QT_DEPRECATED static void setDefaultCaCertificates(const QList<QSslCertificate> &certificates); + QT_DEPRECATED static QList<QSslCertificate> defaultCaCertificates(); + QT_DEPRECATED_X("Use QSslConfiguration::systemCaCertificates()") static QList<QSslCertificate> systemCaCertificates(); +#endif // QT_DEPRECATED_SINCE(5, 5) + + bool waitForConnected(int msecs = 30000) Q_DECL_OVERRIDE; + bool waitForEncrypted(int msecs = 30000); + bool waitForReadyRead(int msecs = 30000) Q_DECL_OVERRIDE; + bool waitForBytesWritten(int msecs = 30000) Q_DECL_OVERRIDE; + bool waitForDisconnected(int msecs = 30000) Q_DECL_OVERRIDE; + + QList<QSslError> sslErrors() const; + + static bool supportsSsl(); + static long sslLibraryVersionNumber(); + static QString sslLibraryVersionString(); + static long sslLibraryBuildVersionNumber(); + static QString sslLibraryBuildVersionString(); + + void ignoreSslErrors(const QList<QSslError> &errors); + +public Q_SLOTS: + void startClientEncryption(); + void startServerEncryption(); + void ignoreSslErrors(); + +Q_SIGNALS: + void encrypted(); + void peerVerifyError(const QSslError &error); + void sslErrors(const QList<QSslError> &errors); + void modeChanged(QSslSocket::SslMode newMode); + void encryptedBytesWritten(qint64 totalBytes); + void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); + +protected: + qint64 readData(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 writeData(const char *data, qint64 len) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QSslSocket) + Q_DISABLE_COPY(QSslSocket) + Q_PRIVATE_SLOT(d_func(), void _q_connectedSlot()) + Q_PRIVATE_SLOT(d_func(), void _q_hostFoundSlot()) + Q_PRIVATE_SLOT(d_func(), void _q_disconnectedSlot()) + Q_PRIVATE_SLOT(d_func(), void _q_stateChangedSlot(QAbstractSocket::SocketState)) + Q_PRIVATE_SLOT(d_func(), void _q_errorSlot(QAbstractSocket::SocketError)) + Q_PRIVATE_SLOT(d_func(), void _q_readyReadSlot()) + Q_PRIVATE_SLOT(d_func(), void _q_channelReadyReadSlot(int)) + Q_PRIVATE_SLOT(d_func(), void _q_bytesWrittenSlot(qint64)) + Q_PRIVATE_SLOT(d_func(), void _q_channelBytesWrittenSlot(int, qint64)) + Q_PRIVATE_SLOT(d_func(), void _q_readChannelFinishedSlot()) + Q_PRIVATE_SLOT(d_func(), void _q_flushWriteBuffer()) + Q_PRIVATE_SLOT(d_func(), void _q_flushReadBuffer()) + Q_PRIVATE_SLOT(d_func(), void _q_resumeImplementation()) +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) + Q_PRIVATE_SLOT(d_func(), void _q_caRootLoaded(QSslCertificate,QSslCertificate)) +#endif + friend class QSslSocketBackendPrivate; +}; + +#endif // QT_NO_SSL + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qtcpserver.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qtcpserver.h new file mode 100644 index 000000000..192cbce54 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qtcpserver.h @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTCPSERVER_H +#define QTCPSERVER_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtCore/qobject.h> +#include <QtNetwork/qabstractsocket.h> +#include <QtNetwork/qhostaddress.h> + +QT_BEGIN_NAMESPACE + + +class QTcpServerPrivate; +#ifndef QT_NO_NETWORKPROXY +class QNetworkProxy; +#endif +class QTcpSocket; + +class Q_NETWORK_EXPORT QTcpServer : public QObject +{ + Q_OBJECT +public: + explicit QTcpServer(QObject *parent = Q_NULLPTR); + virtual ~QTcpServer(); + + bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0); + void close(); + + bool isListening() const; + + void setMaxPendingConnections(int numConnections); + int maxPendingConnections() const; + + quint16 serverPort() const; + QHostAddress serverAddress() const; + + qintptr socketDescriptor() const; + bool setSocketDescriptor(qintptr socketDescriptor); + + bool waitForNewConnection(int msec = 0, bool *timedOut = Q_NULLPTR); + virtual bool hasPendingConnections() const; + virtual QTcpSocket *nextPendingConnection(); + + QAbstractSocket::SocketError serverError() const; + QString errorString() const; + + void pauseAccepting(); + void resumeAccepting(); + +#ifndef QT_NO_NETWORKPROXY + void setProxy(const QNetworkProxy &networkProxy); + QNetworkProxy proxy() const; +#endif + +protected: + virtual void incomingConnection(qintptr handle); + void addPendingConnection(QTcpSocket* socket); + + QTcpServer(QAbstractSocket::SocketType socketType, QTcpServerPrivate &dd, + QObject *parent = Q_NULLPTR); + +Q_SIGNALS: + void newConnection(); + void acceptError(QAbstractSocket::SocketError socketError); + +private: + Q_DISABLE_COPY(QTcpServer) + Q_DECLARE_PRIVATE(QTcpServer) +}; + +QT_END_NAMESPACE + +#endif // QTCPSERVER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qtcpsocket.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qtcpsocket.h new file mode 100644 index 000000000..3c3e3b69f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qtcpsocket.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTCPSOCKET_H +#define QTCPSOCKET_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtNetwork/qabstractsocket.h> +#include <QtCore/qvariant.h> + +QT_BEGIN_NAMESPACE + + +class QTcpSocketPrivate; + +class Q_NETWORK_EXPORT QTcpSocket : public QAbstractSocket +{ + Q_OBJECT +public: + explicit QTcpSocket(QObject *parent = Q_NULLPTR); + virtual ~QTcpSocket(); + +protected: + QTcpSocket(QTcpSocketPrivate &dd, QObject *parent = Q_NULLPTR); + QTcpSocket(QAbstractSocket::SocketType socketType, QTcpSocketPrivate &dd, + QObject *parent = Q_NULLPTR); + +private: + Q_DISABLE_COPY(QTcpSocket) + Q_DECLARE_PRIVATE(QTcpSocket) +}; + +QT_END_NAMESPACE + +#endif // QTCPSOCKET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qtnetwork-config.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qtnetwork-config.h new file mode 100644 index 000000000..3c7b6702a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qtnetwork-config.h @@ -0,0 +1,15 @@ +#define QT_FEATURE_networkinterface 1 +#define QT_FEATURE_bearermanagement 1 +#define QT_FEATURE_ftp 1 +#define QT_NO_GETADDRINFO +#define QT_NO_GETIFADDRS +#define QT_FEATURE_http 1 +#define QT_NO_IPV6IFNAME +#define QT_FEATURE_localserver 1 +#define QT_FEATURE_networkdiskcache 1 +#define QT_FEATURE_networkproxy 1 +#define QT_FEATURE_sctp -1 +#define QT_NO_SCTP +#define QT_FEATURE_socks5 1 +#define QT_FEATURE_ssl 1 +#define QT_FEATURE_udpsocket 1 diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qtnetworkglobal.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qtnetworkglobal.h new file mode 100644 index 000000000..586b84781 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qtnetworkglobal.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTNETWORKGLOBAL_H +#define QTNETWORKGLOBAL_H + +#include <QtCore/qglobal.h> +#include <QtNetwork/qtnetwork-config.h> + +QT_BEGIN_NAMESPACE + +#ifndef QT_STATIC +# if defined(QT_BUILD_NETWORK_LIB) +# define Q_NETWORK_EXPORT Q_DECL_EXPORT +# else +# define Q_NETWORK_EXPORT Q_DECL_IMPORT +# endif +#else +# define Q_NETWORK_EXPORT +#endif + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qtnetworkversion.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qtnetworkversion.h new file mode 100644 index 000000000..37eb65b53 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qtnetworkversion.h @@ -0,0 +1,9 @@ +/* This file was generated by syncqt. */ +#ifndef QT_QTNETWORK_VERSION_H +#define QT_QTNETWORK_VERSION_H + +#define QTNETWORK_VERSION_STR "5.9.4" + +#define QTNETWORK_VERSION 0x050904 + +#endif // QT_QTNETWORK_VERSION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtNetwork/qudpsocket.h b/qrenderdoc/3rdparty/qt/include/QtNetwork/qudpsocket.h new file mode 100644 index 000000000..6ef10e2ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtNetwork/qudpsocket.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUDPSOCKET_H +#define QUDPSOCKET_H + +#include <QtNetwork/qtnetworkglobal.h> +#include <QtNetwork/qabstractsocket.h> +#include <QtNetwork/qhostaddress.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_UDPSOCKET + +class QNetworkDatagram; +class QNetworkInterface; +class QUdpSocketPrivate; + +class Q_NETWORK_EXPORT QUdpSocket : public QAbstractSocket +{ + Q_OBJECT +public: + explicit QUdpSocket(QObject *parent = Q_NULLPTR); + virtual ~QUdpSocket(); + +#ifndef QT_NO_NETWORKINTERFACE + bool joinMulticastGroup(const QHostAddress &groupAddress); + bool joinMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &iface); + bool leaveMulticastGroup(const QHostAddress &groupAddress); + bool leaveMulticastGroup(const QHostAddress &groupAddress, + const QNetworkInterface &iface); + + QNetworkInterface multicastInterface() const; + void setMulticastInterface(const QNetworkInterface &iface); +#endif + + bool hasPendingDatagrams() const; + qint64 pendingDatagramSize() const; + QNetworkDatagram receiveDatagram(qint64 maxSize = -1); + qint64 readDatagram(char *data, qint64 maxlen, QHostAddress *host = Q_NULLPTR, quint16 *port = Q_NULLPTR); + + qint64 writeDatagram(const QNetworkDatagram &datagram); + qint64 writeDatagram(const char *data, qint64 len, const QHostAddress &host, quint16 port); + inline qint64 writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port) + { return writeDatagram(datagram.constData(), datagram.size(), host, port); } + +private: + Q_DISABLE_COPY(QUdpSocket) + Q_DECLARE_PRIVATE(QUdpSocket) +}; + +#endif // QT_NO_UDPSOCKET + +QT_END_NAMESPACE + +#endif // QUDPSOCKET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgfont_p.h b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgfont_p.h new file mode 100644 index 000000000..fd0a3fab8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgfont_p.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSVGFONT_P_H +#define QSVGFONT_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 "qpainterpath.h" +#include "qhash.h" +#include "qstring.h" +#include "qsvgstyle_p.h" +#include "qtsvgglobal_p.h" + +QT_BEGIN_NAMESPACE + +class Q_SVG_PRIVATE_EXPORT QSvgGlyph +{ +public: + QSvgGlyph(QChar unicode, const QPainterPath &path, qreal horizAdvX); + QSvgGlyph() : m_unicode(0), m_horizAdvX(0) {} + + QChar m_unicode; + QPainterPath m_path; + qreal m_horizAdvX; +}; + + +class Q_SVG_PRIVATE_EXPORT QSvgFont : public QSvgRefCounted +{ +public: + QSvgFont(qreal horizAdvX); + + void setFamilyName(const QString &name); + QString familyName() const; + + void setUnitsPerEm(qreal upem); + + void addGlyph(QChar unicode, const QPainterPath &path, qreal horizAdvX = -1); + + void draw(QPainter *p, const QPointF &point, const QString &str, qreal pixelSize, Qt::Alignment alignment) const; +public: + QString m_familyName; + qreal m_unitsPerEm; + qreal m_ascent; + qreal m_descent; + qreal m_horizAdvX; + QHash<QChar, QSvgGlyph> m_glyphs; +}; + +QT_END_NAMESPACE + +#endif // QSVGFONT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvggraphics_p.h b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvggraphics_p.h new file mode 100644 index 000000000..33b5154fc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvggraphics_p.h @@ -0,0 +1,258 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSVGGRAPHICS_P_H +#define QSVGGRAPHICS_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 "qsvgnode_p.h" +#include "qtsvgglobal_p.h" + +#include "QtGui/qpainterpath.h" +#include "QtGui/qimage.h" +#include "QtGui/qtextlayout.h" +#include "QtGui/qtextoption.h" +#include "QtCore/qstack.h" + +QT_BEGIN_NAMESPACE + +class QTextCharFormat; + +class Q_SVG_PRIVATE_EXPORT QSvgAnimation : public QSvgNode +{ +public: + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgArc : public QSvgNode +{ +public: + QSvgArc(QSvgNode *parent, const QPainterPath &path); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; +private: + QPainterPath m_path; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgEllipse : public QSvgNode +{ +public: + QSvgEllipse(QSvgNode *parent, const QRectF &rect); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; +private: + QRectF m_bounds; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgCircle : public QSvgEllipse +{ +public: + QSvgCircle(QSvgNode *parent, const QRectF &rect) : QSvgEllipse(parent, rect) { } + Type type() const override; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgImage : public QSvgNode +{ +public: + QSvgImage(QSvgNode *parent, const QImage &image, + const QRect &bounds); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; +private: + QImage m_image; + QRect m_bounds; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgLine : public QSvgNode +{ +public: + QSvgLine(QSvgNode *parent, const QLineF &line); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; +private: + QLineF m_line; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgPath : public QSvgNode +{ +public: + QSvgPath(QSvgNode *parent, const QPainterPath &qpath); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; + + QPainterPath *qpath() { + return &m_path; + } +private: + QPainterPath m_path; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgPolygon : public QSvgNode +{ +public: + QSvgPolygon(QSvgNode *parent, const QPolygonF &poly); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; +private: + QPolygonF m_poly; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgPolyline : public QSvgNode +{ +public: + QSvgPolyline(QSvgNode *parent, const QPolygonF &poly); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; +private: + QPolygonF m_poly; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgRect : public QSvgNode +{ +public: + QSvgRect(QSvgNode *paren, const QRectF &rect, int rx=0, int ry=0); + Type type() const override; + void draw(QPainter *p, QSvgExtraStates &states) override; + QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; +private: + QRectF m_rect; + int m_rx, m_ry; +}; + +class QSvgTspan; + +class Q_SVG_PRIVATE_EXPORT QSvgText : public QSvgNode +{ +public: + enum WhitespaceMode + { + Default, + Preserve + }; + + QSvgText(QSvgNode *parent, const QPointF &coord); + ~QSvgText(); + void setTextArea(const QSizeF &size); + + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + + void addTspan(QSvgTspan *tspan) {m_tspans.append(tspan);} + void addText(const QString &text); + void addLineBreak() {m_tspans.append(LINEBREAK);} + void setWhitespaceMode(WhitespaceMode mode) {m_mode = mode;} + + //QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; +private: + static QSvgTspan * const LINEBREAK; + + QPointF m_coord; + + // 'm_tspans' is also used to store characters outside tspans and line breaks. + // If a 'm_tspan' item is null, it indicates a line break. + QVector<QSvgTspan *> m_tspans; + + Type m_type; + QSizeF m_size; + WhitespaceMode m_mode; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgTspan : public QSvgNode +{ +public: + // tspans are also used to store normal text, so the 'isProperTspan' is used to separate text from tspan. + QSvgTspan(QSvgNode *parent, bool isProperTspan = true) + : QSvgNode(parent), m_mode(QSvgText::Default), m_isTspan(isProperTspan) + { + } + ~QSvgTspan() { }; + Type type() const override { return TSPAN; } + void draw(QPainter *, QSvgExtraStates &) override { Q_ASSERT(!"Tspans should be drawn through QSvgText::draw()."); } + void addText(const QString &text) {m_text += text;} + const QString &text() const {return m_text;} + bool isTspan() const {return m_isTspan;} + void setWhitespaceMode(QSvgText::WhitespaceMode mode) {m_mode = mode;} + QSvgText::WhitespaceMode whitespaceMode() const {return m_mode;} +private: + QString m_text; + QSvgText::WhitespaceMode m_mode; + bool m_isTspan; +}; + +class QSvgUse : public QSvgNode +{ +public: + QSvgUse(const QPointF &start, QSvgNode *parent, QSvgNode *link); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; + +private: + QSvgNode *m_link; + QPointF m_start; +}; + +class QSvgVideo : public QSvgNode +{ +public: + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; +}; + +QT_END_NAMESPACE + +#endif // QSVGGRAPHICS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvghandler_p.h b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvghandler_p.h new file mode 100644 index 000000000..2c06cb495 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvghandler_p.h @@ -0,0 +1,194 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSVGHANDLER_P_H +#define QSVGHANDLER_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/qxmlstream.h" +#include "QtCore/qhash.h" +#include "QtCore/qstack.h" +#include <QtCore/QLoggingCategory> +#include "qsvgstyle_p.h" +#include "private/qcssparser_p.h" +#include "qsvggraphics_p.h" +#include "qtsvgglobal_p.h" + +QT_BEGIN_NAMESPACE + +class QSvgNode; +class QSvgTinyDocument; +class QSvgHandler; +class QColor; +class QSvgStyleSelector; +class QXmlStreamReader; + +#ifndef QT_NO_CSSPARSER + +struct QSvgCssAttribute +{ + QXmlStreamStringRef name; + QXmlStreamStringRef value; +}; + +#endif + +class Q_SVG_PRIVATE_EXPORT QSvgHandler +{ +public: + enum LengthType { + LT_PERCENT, + LT_PX, + LT_PC, + LT_PT, + LT_MM, + LT_CM, + LT_IN, + LT_OTHER + }; + +public: + QSvgHandler(QIODevice *device); + QSvgHandler(const QByteArray &data); + QSvgHandler(QXmlStreamReader *const data); + ~QSvgHandler(); + + QSvgTinyDocument *document() const; + + inline bool ok() const { + return document() != 0 && !xml->hasError(); + } + + inline QString errorString() const { return xml->errorString(); } + inline int lineNumber() const { return xml->lineNumber(); } + + void setDefaultCoordinateSystem(LengthType type); + LengthType defaultCoordinateSystem() const; + + void pushColor(const QColor &color); + void pushColorCopy(); + void popColor(); + QColor currentColor() const; + +#ifndef QT_NO_CSSPARSER + void setInStyle(bool b); + bool inStyle() const; + + QSvgStyleSelector *selector() const; +#endif + + void setAnimPeriod(int start, int end); + int animationDuration() const; + +#ifndef QT_NO_CSSPARSER + void parseCSStoXMLAttrs(QString css, QVector<QSvgCssAttribute> *attributes); +#endif + + inline QPen defaultPen() const + { return m_defaultPen; } + +public: + bool startElement(const QString &localName, const QXmlStreamAttributes &attributes); + bool endElement(const QStringRef &localName); + bool characters(const QStringRef &str); + bool processingInstruction(const QString &target, const QString &data); + +private: + void init(); + + QSvgTinyDocument *m_doc; + QStack<QSvgNode*> m_nodes; + + QList<QSvgNode*> m_resolveNodes; + + enum CurrentNode + { + Unknown, + Graphics, + Style + }; + QStack<CurrentNode> m_skipNodes; + + /*! + Follows the depths of elements. The top is current xml:space + value that applies for a given element. + */ + QStack<QSvgText::WhitespaceMode> m_whitespaceMode; + + QSvgRefCounter<QSvgStyleProperty> m_style; + + LengthType m_defaultCoords; + + QStack<QColor> m_colorStack; + QStack<int> m_colorTagCount; + + int m_animEnd; + + QXmlStreamReader *const xml; +#ifndef QT_NO_CSSPARSER + bool m_inStyle; + QSvgStyleSelector *m_selector; + QCss::Parser m_cssParser; +#endif + void parse(); + void resolveGradients(QSvgNode *node); + + QPen m_defaultPen; + /** + * Whether we own the variable xml, and hence whether + * we need to delete it. + */ + const bool m_ownsReader; +}; + +Q_DECLARE_LOGGING_CATEGORY(lcSvgHandler) + +QT_END_NAMESPACE + +#endif // QSVGHANDLER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgnode_p.h b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgnode_p.h new file mode 100644 index 000000000..f2502e4a2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgnode_p.h @@ -0,0 +1,203 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSVGNODE_P_H +#define QSVGNODE_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 "qsvgstyle_p.h" +#include "qtsvgglobal_p.h" + +#include "QtCore/qstring.h" +#include "QtCore/qhash.h" + +QT_BEGIN_NAMESPACE + +class QPainter; +class QSvgTinyDocument; + +class Q_SVG_PRIVATE_EXPORT QSvgNode +{ +public: + enum Type + { + DOC, + G, + DEFS, + SWITCH, + ANIMATION, + ARC, + CIRCLE, + ELLIPSE, + IMAGE, + LINE, + PATH, + POLYGON, + POLYLINE, + RECT, + TEXT, + TEXTAREA, + TSPAN, + USE, + VIDEO + }; + enum DisplayMode { + InlineMode, + BlockMode, + ListItemMode, + RunInMode, + CompactMode, + MarkerMode, + TableMode, + InlineTableMode, + TableRowGroupMode, + TableHeaderGroupMode, + TableFooterGroupMode, + TableRowMode, + TableColumnGroupMode, + TableColumnMode, + TableCellMode, + TableCaptionMode, + NoneMode, + InheritMode + }; +public: + QSvgNode(QSvgNode *parent=0); + virtual ~QSvgNode(); + virtual void draw(QPainter *p, QSvgExtraStates &states) =0; + + QSvgNode *parent() const; + bool isDescendantOf(const QSvgNode *parent) const; + + void appendStyleProperty(QSvgStyleProperty *prop, const QString &id); + void applyStyle(QPainter *p, QSvgExtraStates &states) const; + void revertStyle(QPainter *p, QSvgExtraStates &states) const; + QSvgStyleProperty *styleProperty(QSvgStyleProperty::Type type) const; + QSvgFillStyleProperty *styleProperty(const QString &id) const; + + QSvgTinyDocument *document() const; + + virtual Type type() const =0; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; + virtual QRectF transformedBounds(QPainter *p, QSvgExtraStates &states) const; + QRectF transformedBounds() const; + + void setRequiredFeatures(const QStringList &lst); + const QStringList & requiredFeatures() const; + + void setRequiredExtensions(const QStringList &lst); + const QStringList & requiredExtensions() const; + + void setRequiredLanguages(const QStringList &lst); + const QStringList & requiredLanguages() const; + + void setRequiredFormats(const QStringList &lst); + const QStringList & requiredFormats() const; + + void setRequiredFonts(const QStringList &lst); + const QStringList & requiredFonts() const; + + void setVisible(bool visible); + bool isVisible() const; + + void setDisplayMode(DisplayMode display); + DisplayMode displayMode() const; + + QString nodeId() const; + void setNodeId(const QString &i); + + QString xmlClass() const; + void setXmlClass(const QString &str); +protected: + mutable QSvgStyle m_style; + + static qreal strokeWidth(QPainter *p); +private: + QSvgNode *m_parent; + + QStringList m_requiredFeatures; + QStringList m_requiredExtensions; + QStringList m_requiredLanguages; + QStringList m_requiredFormats; + QStringList m_requiredFonts; + + bool m_visible; + + QString m_id; + QString m_class; + + DisplayMode m_displayMode; + mutable QRectF m_cachedBounds; + + friend class QSvgTinyDocument; +}; + +inline QSvgNode *QSvgNode::parent() const +{ + return m_parent; +} + +inline bool QSvgNode::isVisible() const +{ + return m_visible; +} + +inline QString QSvgNode::nodeId() const +{ + return m_id; +} + +inline QString QSvgNode::xmlClass() const +{ + return m_class; +} + +QT_END_NAMESPACE + +#endif // QSVGNODE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgstructure_p.h b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgstructure_p.h new file mode 100644 index 000000000..b0553640a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgstructure_p.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSVGSTRUCTURE_P_H +#define QSVGSTRUCTURE_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 "qsvgnode_p.h" +#include "qtsvgglobal_p.h" + +#include "QtCore/qlist.h" +#include "QtCore/qhash.h" + +QT_BEGIN_NAMESPACE + +class QSvgTinyDocument; +class QSvgNode; +class QPainter; +class QSvgDefs; + +class Q_SVG_PRIVATE_EXPORT QSvgStructureNode : public QSvgNode +{ +public: + QSvgStructureNode(QSvgNode *parent); + ~QSvgStructureNode(); + QSvgNode *scopeNode(const QString &id) const; + void addChild(QSvgNode *child, const QString &id); + QRectF bounds(QPainter *p, QSvgExtraStates &states) const override; + QSvgNode *previousSiblingNode(QSvgNode *n) const; + QList<QSvgNode*> renderers() const { return m_renderers; } +protected: + QList<QSvgNode*> m_renderers; + QHash<QString, QSvgNode*> m_scope; + QList<QSvgStructureNode*> m_linkedScopes; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgG : public QSvgStructureNode +{ +public: + QSvgG(QSvgNode *parent); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgDefs : public QSvgStructureNode +{ +public: + QSvgDefs(QSvgNode *parent); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgSwitch : public QSvgStructureNode +{ +public: + QSvgSwitch(QSvgNode *parent); + void draw(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; +private: + void init(); +private: + QString m_systemLanguage; + QString m_systemLanguagePrefix; +}; + +QT_END_NAMESPACE + +#endif // QSVGSTRUCTURE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgstyle_p.h b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgstyle_p.h new file mode 100644 index 000000000..916c9fa5b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgstyle_p.h @@ -0,0 +1,821 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSVGSTYLE_P_H +#define QSVGSTYLE_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 "QtGui/qpainter.h" +#include "QtGui/qpen.h" +#include "QtGui/qbrush.h" +#include "QtGui/qmatrix.h" +#include "QtGui/qcolor.h" +#include "QtGui/qfont.h" +#include <qdebug.h> +#include "qtsvgglobal_p.h" + +QT_BEGIN_NAMESPACE + +class QPainter; +class QSvgNode; +class QSvgFont; +class QSvgTinyDocument; + +template <class T> class QSvgRefCounter +{ +public: + QSvgRefCounter() { t = 0; } + QSvgRefCounter(T *_t) + { + t = _t; + if (t) + t->ref(); + } + QSvgRefCounter(const QSvgRefCounter &other) + { + t = other.t; + if (t) + t->ref(); + } + QSvgRefCounter &operator =(T *_t) + { + if(_t) + _t->ref(); + if (t) + t->deref(); + t = _t; + return *this; + } + QSvgRefCounter &operator =(const QSvgRefCounter &other) + { + if(other.t) + other.t->ref(); + if (t) + t->deref(); + t = other.t; + return *this; + } + ~QSvgRefCounter() + { + if (t) + t->deref(); + } + + inline T *operator->() const { return t; } + inline operator T*() const { return t; } + +private: + T *t; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgRefCounted +{ +public: + QSvgRefCounted() { _ref = 0; } + virtual ~QSvgRefCounted() {} + void ref() { + ++_ref; +// qDebug() << this << ": adding ref, now " << _ref; + } + void deref() { +// qDebug() << this << ": removing ref, now " << _ref; + if(!--_ref) { +// qDebug(" deleting"); + delete this; + } + } +private: + int _ref; +}; + +struct Q_SVG_PRIVATE_EXPORT QSvgExtraStates +{ + QSvgExtraStates(); + + qreal fillOpacity; + qreal strokeOpacity; + QSvgFont *svgFont; + Qt::Alignment textAnchor; + int fontWeight; + Qt::FillRule fillRule; + qreal strokeDashOffset; + bool vectorEffect; // true if pen is cosmetic +}; + +class Q_SVG_PRIVATE_EXPORT QSvgStyleProperty : public QSvgRefCounted +{ +public: + enum Type + { + QUALITY, + FILL, + VIEWPORT_FILL, + FONT, + STROKE, + SOLID_COLOR, + GRADIENT, + TRANSFORM, + ANIMATE_TRANSFORM, + ANIMATE_COLOR, + OPACITY, + COMP_OP + }; +public: + virtual ~QSvgStyleProperty(); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) = 0; + virtual void revert(QPainter *p, QSvgExtraStates &states) =0; + virtual Type type() const=0; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgFillStyleProperty : public QSvgStyleProperty +{ +public: + virtual QBrush brush(QPainter *p, QSvgExtraStates &states) = 0; + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgQualityStyle : public QSvgStyleProperty +{ +public: + QSvgQualityStyle(int color); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; +private: + // color-render ing v v 'auto' | 'optimizeSpeed' | + // 'optimizeQuality' | 'inherit' + //int m_colorRendering; + + // shape-rendering v v 'auto' | 'optimizeSpeed' | 'crispEdges' | + // 'geometricPrecision' | 'inherit' + //QSvgShapeRendering m_shapeRendering; + + + // text-rendering v v 'auto' | 'optimizeSpeed' | 'optimizeLegibility' + // | 'geometricPrecision' | 'inherit' + //QSvgTextRendering m_textRendering; + + + // vector-effect v x 'default' | 'non-scaling-stroke' | 'inherit' + //QSvgVectorEffect m_vectorEffect; + + // image-rendering v v 'auto' | 'optimizeSpeed' | 'optimizeQuality' | + // 'inherit' + //QSvgImageRendering m_imageRendering; +}; + + + +class Q_SVG_PRIVATE_EXPORT QSvgOpacityStyle : public QSvgStyleProperty +{ +public: + QSvgOpacityStyle(qreal opacity); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; +private: + qreal m_opacity; + qreal m_oldOpacity; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgFillStyle : public QSvgStyleProperty +{ +public: + QSvgFillStyle(); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + + void setFillRule(Qt::FillRule f); + void setFillOpacity(qreal opacity); + void setFillStyle(QSvgFillStyleProperty* style); + void setBrush(QBrush brush); + + const QBrush & qbrush() const + { + return m_fill; + } + + qreal fillOpacity() const + { + return m_fillOpacity; + } + + Qt::FillRule fillRule() const + { + return m_fillRule; + } + + QSvgFillStyleProperty* style() const + { + return m_style; + } + + void setGradientId(const QString &Id) + { + m_gradientId = Id; + } + + QString gradientId() const + { + return m_gradientId; + } + + void setGradientResolved(bool resolved) + { + m_gradientResolved = resolved; + } + + bool isGradientResolved() const + { + return m_gradientResolved; + } + +private: + // fill v v 'inherit' | <Paint.datatype> + // fill-opacity v v 'inherit' | <OpacityValue.datatype> + QBrush m_fill; + QBrush m_oldFill; + QSvgFillStyleProperty *m_style; + + Qt::FillRule m_fillRule; + Qt::FillRule m_oldFillRule; + qreal m_fillOpacity; + qreal m_oldFillOpacity; + + QString m_gradientId; + uint m_gradientResolved : 1; + + uint m_fillRuleSet : 1; + uint m_fillOpacitySet : 1; + uint m_fillSet : 1; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgViewportFillStyle : public QSvgStyleProperty +{ +public: + QSvgViewportFillStyle(const QBrush &brush); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + + const QBrush & qbrush() const + { + return m_viewportFill; + } +private: + // viewport-fill v x 'inherit' | <Paint.datatype> + // viewport-fill-opacity v x 'inherit' | <OpacityValue.datatype> + QBrush m_viewportFill; + + QBrush m_oldFill; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgFontStyle : public QSvgStyleProperty +{ +public: + static const int LIGHTER = -1; + static const int BOLDER = 1; + + QSvgFontStyle(QSvgFont *font, QSvgTinyDocument *doc); + QSvgFontStyle(); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + + void setSize(qreal size) + { + // Store the _pixel_ size in the font. Since QFont::setPixelSize() only takes an int, call + // QFont::SetPointSize() instead. Set proper font size just before rendering. + m_qfont.setPointSizeF(size); + m_sizeSet = 1; + } + + void setTextAnchor(Qt::Alignment anchor) + { + m_textAnchor = anchor; + m_textAnchorSet = 1; + } + + void setFamily(const QString &family) + { + m_qfont.setFamily(family); + m_familySet = 1; + } + + void setStyle(QFont::Style fontStyle) { + m_qfont.setStyle(fontStyle); + m_styleSet = 1; + } + + void setVariant(QFont::Capitalization fontVariant) + { + m_qfont.setCapitalization(fontVariant); + m_variantSet = 1; + } + + static int SVGToQtWeight(int weight); + + void setWeight(int weight) + { + m_weight = weight; + m_weightSet = 1; + } + + QSvgFont * svgFont() const + { + return m_svgFont; + } + + const QFont &qfont() const + { + return m_qfont; + } + + QSvgTinyDocument *doc() const {return m_doc;} + +private: + QSvgFont *m_svgFont; + QSvgTinyDocument *m_doc; + QFont m_qfont; + + int m_weight; + Qt::Alignment m_textAnchor; + + QSvgFont *m_oldSvgFont; + QFont m_oldQFont; + Qt::Alignment m_oldTextAnchor; + int m_oldWeight; + + uint m_familySet : 1; + uint m_sizeSet : 1; + uint m_styleSet : 1; + uint m_variantSet : 1; + uint m_weightSet : 1; + uint m_textAnchorSet : 1; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgStrokeStyle : public QSvgStyleProperty +{ +public: + QSvgStrokeStyle(); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + + void setStroke(QBrush brush) + { + m_stroke.setBrush(brush); + m_style = 0; + m_strokeSet = 1; + } + + void setStyle(QSvgFillStyleProperty *style) + { + m_style = style; + m_strokeSet = 1; + } + + void setDashArray(const QVector<qreal> &dashes); + + void setDashArrayNone() + { + m_stroke.setStyle(Qt::SolidLine); + m_strokeDashArraySet = 1; + } + + void setDashOffset(qreal offset) + { + m_strokeDashOffset = offset; + m_strokeDashOffsetSet = 1; + } + + void setLineCap(Qt::PenCapStyle cap) + { + m_stroke.setCapStyle(cap); + m_strokeLineCapSet = 1; + } + + void setLineJoin(Qt::PenJoinStyle join) + { + m_stroke.setJoinStyle(join); + m_strokeLineJoinSet = 1; + } + + void setMiterLimit(qreal limit) + { + m_stroke.setMiterLimit(limit); + m_strokeMiterLimitSet = 1; + } + + void setOpacity(qreal opacity) + { + m_strokeOpacity = opacity; + m_strokeOpacitySet = 1; + } + + void setWidth(qreal width) + { + m_stroke.setWidthF(width); + m_strokeWidthSet = 1; + Q_ASSERT(!m_strokeDashArraySet); // set width before dash array. + } + + qreal width() + { + return m_stroke.widthF(); + } + + void setVectorEffect(bool nonScalingStroke) + { + m_vectorEffect = nonScalingStroke; + m_vectorEffectSet = 1; + } + + QSvgFillStyleProperty* style() const + { + return m_style; + } + + void setGradientId(const QString &Id) + { + m_gradientId = Id; + } + + QString gradientId() const + { + return m_gradientId; + } + + void setGradientResolved(bool resolved) + { + m_gradientResolved = resolved; + } + + bool isGradientResolved() const + { + return m_gradientResolved; + } + + QPen stroke() const + { + return m_stroke; + } + +private: + // stroke v v 'inherit' | <Paint.datatype> + // stroke-dasharray v v 'inherit' | <StrokeDashArrayValue.datatype> + // stroke-dashoffset v v 'inherit' | <StrokeDashOffsetValue.datatype> + // stroke-linecap v v 'butt' | 'round' | 'square' | 'inherit' + // stroke-linejoin v v 'miter' | 'round' | 'bevel' | 'inherit' + // stroke-miterlimit v v 'inherit' | <StrokeMiterLimitValue.datatype> + // stroke-opacity v v 'inherit' | <OpacityValue.datatype> + // stroke-width v v 'inherit' | <StrokeWidthValue.datatype> + QPen m_stroke; + QPen m_oldStroke; + qreal m_strokeOpacity; + qreal m_oldStrokeOpacity; + qreal m_strokeDashOffset; + qreal m_oldStrokeDashOffset; + + QSvgFillStyleProperty *m_style; + QString m_gradientId; + uint m_gradientResolved : 1; + uint m_vectorEffect : 1; + uint m_oldVectorEffect : 1; + + uint m_strokeSet : 1; + uint m_strokeDashArraySet : 1; + uint m_strokeDashOffsetSet : 1; + uint m_strokeLineCapSet : 1; + uint m_strokeLineJoinSet : 1; + uint m_strokeMiterLimitSet : 1; + uint m_strokeOpacitySet : 1; + uint m_strokeWidthSet : 1; + uint m_vectorEffectSet : 1; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgSolidColorStyle : public QSvgFillStyleProperty +{ +public: + QSvgSolidColorStyle(const QColor &color); + Type type() const override; + + const QColor & qcolor() const + { + return m_solidColor; + } + + QBrush brush(QPainter *, QSvgExtraStates &) override + { + return m_solidColor; + } + +private: + // solid-color v x 'inherit' | <SVGColor.datatype> + // solid-opacity v x 'inherit' | <OpacityValue.datatype> + QColor m_solidColor; + + QBrush m_oldFill; + QPen m_oldStroke; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgGradientStyle : public QSvgFillStyleProperty +{ +public: + QSvgGradientStyle(QGradient *grad); + ~QSvgGradientStyle() { delete m_gradient; } + Type type() const override; + + void setStopLink(const QString &link, QSvgTinyDocument *doc); + QString stopLink() const { return m_link; } + void resolveStops(); + + void setMatrix(const QMatrix &matrix); + QMatrix qmatrix() const + { + return m_matrix; + } + + QGradient *qgradient() const + { + return m_gradient; + } + + bool gradientStopsSet() const + { + return m_gradientStopsSet; + } + + void setGradientStopsSet(bool set) + { + m_gradientStopsSet = set; + } + + QBrush brush(QPainter *, QSvgExtraStates &) override; +private: + QGradient *m_gradient; + QMatrix m_matrix; + + QSvgTinyDocument *m_doc; + QString m_link; + bool m_gradientStopsSet; +}; + +class Q_SVG_PRIVATE_EXPORT QSvgTransformStyle : public QSvgStyleProperty +{ +public: + QSvgTransformStyle(const QTransform &transform); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + + const QTransform & qtransform() const + { + return m_transform; + } +private: + //7.6 The transform attribute + QTransform m_transform; + QTransform m_oldWorldTransform; +}; + + +class Q_SVG_PRIVATE_EXPORT QSvgAnimateTransform : public QSvgStyleProperty +{ +public: + enum TransformType + { + Empty, + Translate, + Scale, + Rotate, + SkewX, + SkewY + }; + enum Additive + { + Sum, + Replace + }; +public: + QSvgAnimateTransform(int startMs, int endMs, int by = 0); + void setArgs(TransformType type, Additive additive, const QVector<qreal> &args); + void setFreeze(bool freeze); + void setRepeatCount(qreal repeatCount); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + QSvgAnimateTransform::Additive additiveType() const + { + return m_additive; + } + + bool animActive(qreal totalTimeElapsed) + { + if (totalTimeElapsed < m_from) + return false; + if (m_freeze || m_repeatCount < 0) // fill="freeze" or repeat="indefinite" + return true; + if (m_totalRunningTime == 0) + return false; + qreal animationFrame = (totalTimeElapsed - m_from) / m_totalRunningTime; + if (animationFrame > m_repeatCount) + return false; + return true; + } + + bool transformApplied() const + { + return m_transformApplied; + } + + // Call this instead of revert if you know that revert is unnecessary. + void clearTransformApplied() + { + m_transformApplied = false; + } + +protected: + void resolveMatrix(const QSvgNode *node); +private: + qreal m_from; + qreal m_totalRunningTime; + TransformType m_type; + Additive m_additive; + QVector<qreal> m_args; + int m_count; + QTransform m_transform; + QTransform m_oldWorldTransform; + bool m_finished; + bool m_freeze; + qreal m_repeatCount; + bool m_transformApplied; +}; + + +class Q_SVG_PRIVATE_EXPORT QSvgAnimateColor : public QSvgStyleProperty +{ +public: + QSvgAnimateColor(int startMs, int endMs, int by = 0); + void setArgs(bool fill, const QList<QColor> &colors); + void setFreeze(bool freeze); + void setRepeatCount(qreal repeatCount); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; +private: + qreal m_from; + qreal m_totalRunningTime; + QList<QColor> m_colors; + QBrush m_oldBrush; + QPen m_oldPen; + bool m_fill; + bool m_finished; + bool m_freeze; + qreal m_repeatCount; +}; + + +class Q_SVG_PRIVATE_EXPORT QSvgCompOpStyle : public QSvgStyleProperty +{ +public: + QSvgCompOpStyle(QPainter::CompositionMode mode); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) override; + void revert(QPainter *p, QSvgExtraStates &states) override; + Type type() const override; + + const QPainter::CompositionMode & compOp() const + { + return m_mode; + } +private: + //comp-op attribute + QPainter::CompositionMode m_mode; + + QPainter::CompositionMode m_oldMode; +}; + + +class Q_SVG_PRIVATE_EXPORT QSvgStyle +{ +public: + QSvgStyle() + : quality(0), + fill(0), + viewportFill(0), + font(0), + stroke(0), + solidColor(0), + gradient(0), + transform(0), + animateColor(0), + opacity(0), + compop(0) + {} + ~QSvgStyle(); + + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); + void revert(QPainter *p, QSvgExtraStates &states); + QSvgRefCounter<QSvgQualityStyle> quality; + QSvgRefCounter<QSvgFillStyle> fill; + QSvgRefCounter<QSvgViewportFillStyle> viewportFill; + QSvgRefCounter<QSvgFontStyle> font; + QSvgRefCounter<QSvgStrokeStyle> stroke; + QSvgRefCounter<QSvgSolidColorStyle> solidColor; + QSvgRefCounter<QSvgGradientStyle> gradient; + QSvgRefCounter<QSvgTransformStyle> transform; + QSvgRefCounter<QSvgAnimateColor> animateColor; + QList<QSvgRefCounter<QSvgAnimateTransform> > animateTransforms; + QSvgRefCounter<QSvgOpacityStyle> opacity; + QSvgRefCounter<QSvgCompOpStyle> compop; +}; + +/********************************************************/ +// NOT implemented: + +// color v v 'inherit' | <Color.datatype> +//QColor m_color; + +// display v x 'inline' | 'block' | 'list-item' +// | 'run-in' | 'compact' | 'marker' | +// 'table' | 'inline-table' | +// 'table-row-group' | 'table-header-group' | +// 'table-footer-group' | 'table-row' | +// 'table-column-group' | 'table-column' | +// 'table-cell' | 'table-caption' | +// 'none' | 'inherit' +//QSvgDisplayStyle m_display; + +// display-align v v 'auto' | 'before' | 'center' | 'after' | 'inherit' +//QSvgDisplayAlign m_displayAlign; + +// line-increment v v 'auto' | 'inherit' | <Number.datatype> +//int m_lineIncrement; + +// text-anchor v v 'start' | 'middle' | 'end' | 'inherit' +//QSvgTextAnchor m_textAnchor; + +// visibility v v 'visible' | 'hidden' | 'inherit' +//QSvgVisibility m_visibility; + +/******************************************************/ +// the following do not make sense for us + +// pointer-events v v 'visiblePainted' | 'visibleFill' | 'visibleStroke' | +// 'visible' | 'painted' | 'fill' | 'stroke' | 'all' | +// 'none' | 'inherit' +//QSvgPointEvents m_pointerEvents; + +// audio-level v x 'inherit' | <Number.datatype> + +QT_END_NAMESPACE + +#endif // QSVGSTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgtinydocument_p.h b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgtinydocument_p.h new file mode 100644 index 000000000..c69c5de5a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qsvgtinydocument_p.h @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSVGTINYDOCUMENT_P_H +#define QSVGTINYDOCUMENT_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 "qsvgstructure_p.h" +#include "qtsvgglobal_p.h" + +#include "QtCore/qrect.h" +#include "QtCore/qlist.h" +#include "QtCore/qhash.h" +#include "QtCore/qdatetime.h" +#include "QtCore/qxmlstream.h" +#include "qsvgstyle_p.h" +#include "qsvgfont_p.h" + +QT_BEGIN_NAMESPACE + +class QPainter; +class QByteArray; +class QSvgFont; + +class Q_SVG_PRIVATE_EXPORT QSvgTinyDocument : public QSvgStructureNode +{ +public: + static QSvgTinyDocument * load(const QString &file); + static QSvgTinyDocument * load(const QByteArray &contents); + static QSvgTinyDocument * load(QXmlStreamReader *contents); +public: + QSvgTinyDocument(); + ~QSvgTinyDocument(); + Type type() const override; + + QSize size() const; + void setWidth(int len, bool percent); + void setHeight(int len, bool percent); + int width() const; + int height() const; + bool widthPercent() const; + bool heightPercent() const; + + bool preserveAspectRatio() const; + + QRectF viewBox() const; + void setViewBox(const QRectF &rect); + + void draw(QPainter *p, QSvgExtraStates &) override; //from the QSvgNode + + void draw(QPainter *p); + void draw(QPainter *p, const QRectF &bounds); + void draw(QPainter *p, const QString &id, + const QRectF &bounds=QRectF()); + + QMatrix matrixForElement(const QString &id) const; + QRectF boundsOnElement(const QString &id) const; + bool elementExists(const QString &id) const; + + void addSvgFont(QSvgFont *); + QSvgFont *svgFont(const QString &family) const; + void addNamedNode(const QString &id, QSvgNode *node); + QSvgNode *namedNode(const QString &id) const; + void addNamedStyle(const QString &id, QSvgFillStyleProperty *style); + QSvgFillStyleProperty *namedStyle(const QString &id) const; + + void restartAnimation(); + int currentElapsed() const; + bool animated() const; + void setAnimated(bool a); + int animationDuration() const; + int currentFrame() const; + void setCurrentFrame(int); + void setFramesPerSecond(int num); +private: + void mapSourceToTarget(QPainter *p, const QRectF &targetRect, const QRectF &sourceRect = QRectF()); +private: + QSize m_size; + bool m_widthPercent; + bool m_heightPercent; + + mutable QRectF m_viewBox; + + QHash<QString, QSvgRefCounter<QSvgFont> > m_fonts; + QHash<QString, QSvgNode *> m_namedNodes; + QHash<QString, QSvgRefCounter<QSvgFillStyleProperty> > m_namedStyles; + + QTime m_time; + bool m_animated; + int m_animationDuration; + int m_fps; + + QSvgExtraStates m_states; +}; + +inline QSize QSvgTinyDocument::size() const +{ + if (m_size.isEmpty()) { + return viewBox().size().toSize(); + } else { + return m_size; + } +} + +inline int QSvgTinyDocument::width() const +{ + return size().width(); +} + +inline int QSvgTinyDocument::height() const +{ + return size().height(); +} + +inline bool QSvgTinyDocument::widthPercent() const +{ + return m_widthPercent; +} + +inline bool QSvgTinyDocument::heightPercent() const +{ + return m_heightPercent; +} + +inline QRectF QSvgTinyDocument::viewBox() const +{ + if (m_viewBox.isNull()) + m_viewBox = transformedBounds(); + + return m_viewBox; +} + +inline bool QSvgTinyDocument::preserveAspectRatio() const +{ + return false; +} + +inline int QSvgTinyDocument::currentElapsed() const +{ + return m_time.elapsed(); +} + +inline int QSvgTinyDocument::animationDuration() const +{ + return m_animationDuration; +} + +QT_END_NAMESPACE + +#endif // QSVGTINYDOCUMENT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qtsvgglobal_p.h b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qtsvgglobal_p.h new file mode 100644 index 000000000..ff93a36b2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/5.9.4/QtSvg/private/qtsvgglobal_p.h @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTSVGGLOBAL_P_H +#define QTSVGGLOBAL_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 "qtsvgglobal.h" + +#define Q_SVG_PRIVATE_EXPORT Q_SVG_EXPORT + +#endif // QTSVGGLOBAL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/QGraphicsSvgItem b/qrenderdoc/3rdparty/qt/include/QtSvg/QGraphicsSvgItem new file mode 100644 index 000000000..c6f7862c3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/QGraphicsSvgItem @@ -0,0 +1 @@ +#include "qgraphicssvgitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/QSvgGenerator b/qrenderdoc/3rdparty/qt/include/QtSvg/QSvgGenerator new file mode 100644 index 000000000..cf62792b1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/QSvgGenerator @@ -0,0 +1 @@ +#include "qsvggenerator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/QSvgRenderer b/qrenderdoc/3rdparty/qt/include/QtSvg/QSvgRenderer new file mode 100644 index 000000000..489803e33 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/QSvgRenderer @@ -0,0 +1 @@ +#include "qsvgrenderer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/QSvgWidget b/qrenderdoc/3rdparty/qt/include/QtSvg/QSvgWidget new file mode 100644 index 000000000..c56b38e07 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/QSvgWidget @@ -0,0 +1 @@ +#include "qsvgwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/QtSvg b/qrenderdoc/3rdparty/qt/include/QtSvg/QtSvg new file mode 100644 index 000000000..aedaccea7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/QtSvg @@ -0,0 +1,10 @@ +#ifndef QT_QTSVG_MODULE_H +#define QT_QTSVG_MODULE_H +#include <QtSvg/QtSvgDepends> +#include "qtsvgglobal.h" +#include "qgraphicssvgitem.h" +#include "qsvggenerator.h" +#include "qsvgrenderer.h" +#include "qsvgwidget.h" +#include "qtsvgversion.h" +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/QtSvgDepends b/qrenderdoc/3rdparty/qt/include/QtSvg/QtSvgDepends new file mode 100644 index 000000000..a4800e156 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/QtSvgDepends @@ -0,0 +1,6 @@ +/* This file was generated by qmake with the info from <root>/src/svg/svg.pro. */ +#ifdef __cplusplus /* create empty PCH in C mode */ +#include <QtCore/QtCore> +#include <QtGui/QtGui> +#include <QtWidgets/QtWidgets> +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/QtSvgVersion b/qrenderdoc/3rdparty/qt/include/QtSvg/QtSvgVersion new file mode 100644 index 000000000..6856c3e64 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/QtSvgVersion @@ -0,0 +1 @@ +#include "qtsvgversion.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/qgraphicssvgitem.h b/qrenderdoc/3rdparty/qt/include/QtSvg/qgraphicssvgitem.h new file mode 100644 index 000000000..e849f7a2a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/qgraphicssvgitem.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGRAPHICSSVGITEM_H +#define QGRAPHICSSVGITEM_H + +#include <QtCore/qglobal.h> + +#if !defined(QT_NO_GRAPHICSVIEW) && !defined(QT_NO_WIDGETS) + +#include <QtWidgets/qgraphicsitem.h> + +#include <QtSvg/qtsvgglobal.h> + +QT_BEGIN_NAMESPACE + + +class QSvgRenderer; +class QGraphicsSvgItemPrivate; + +class Q_SVG_EXPORT QGraphicsSvgItem : public QGraphicsObject +{ + Q_OBJECT + Q_INTERFACES(QGraphicsItem) + Q_PROPERTY(QString elementId READ elementId WRITE setElementId) + Q_PROPERTY(QSize maximumCacheSize READ maximumCacheSize WRITE setMaximumCacheSize) + +public: + QGraphicsSvgItem(QGraphicsItem *parentItem = Q_NULLPTR); + QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parentItem = Q_NULLPTR); + + void setSharedRenderer(QSvgRenderer *renderer); + QSvgRenderer *renderer() const; + + void setElementId(const QString &id); + QString elementId() const; + + void setCachingEnabled(bool); + bool isCachingEnabled() const; + + void setMaximumCacheSize(const QSize &size); + QSize maximumCacheSize() const; + + QRectF boundingRect() const override; + + void paint(QPainter *painter, + const QStyleOptionGraphicsItem *option, + QWidget *widget = Q_NULLPTR) override; + + enum { Type = 13 }; + int type() const override; + +private: + Q_DISABLE_COPY(QGraphicsSvgItem) + Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QGraphicsSvgItem) + + Q_PRIVATE_SLOT(d_func(), void _q_repaintItem()) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_GRAPHICSVIEW or QT_NO_WIDGETS + +#endif // QGRAPHICSSVGITEM_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/qsvggenerator.h b/qrenderdoc/3rdparty/qt/include/QtSvg/qsvggenerator.h new file mode 100644 index 000000000..bd215b2ab --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/qsvggenerator.h @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSVGGENERATOR_H +#define QSVGGENERATOR_H + +#include <QtGui/qpaintdevice.h> + +#ifndef QT_NO_SVGGENERATOR + +#include <QtCore/qnamespace.h> +#include <QtCore/qiodevice.h> +#include <QtCore/qobjectdefs.h> +#include <QtCore/qscopedpointer.h> +#include <QtSvg/qtsvgglobal.h> + +QT_BEGIN_NAMESPACE + + +class QSvgGeneratorPrivate; + +class Q_SVG_EXPORT QSvgGenerator : public QPaintDevice +{ + Q_DECLARE_PRIVATE(QSvgGenerator) + + Q_PROPERTY(QSize size READ size WRITE setSize) + Q_PROPERTY(QRectF viewBox READ viewBoxF WRITE setViewBox) + Q_PROPERTY(QString title READ title WRITE setTitle) + Q_PROPERTY(QString description READ description WRITE setDescription) + Q_PROPERTY(QString fileName READ fileName WRITE setFileName) + Q_PROPERTY(QIODevice* outputDevice READ outputDevice WRITE setOutputDevice) + Q_PROPERTY(int resolution READ resolution WRITE setResolution) +public: + QSvgGenerator(); + ~QSvgGenerator(); + + QString title() const; + void setTitle(const QString &title); + + QString description() const; + void setDescription(const QString &description); + + QSize size() const; + void setSize(const QSize &size); + + QRect viewBox() const; + QRectF viewBoxF() const; + void setViewBox(const QRect &viewBox); + void setViewBox(const QRectF &viewBox); + + QString fileName() const; + void setFileName(const QString &fileName); + + QIODevice *outputDevice() const; + void setOutputDevice(QIODevice *outputDevice); + + void setResolution(int dpi); + int resolution() const; +protected: + QPaintEngine *paintEngine() const override; + int metric(QPaintDevice::PaintDeviceMetric metric) const override; + +private: + QScopedPointer<QSvgGeneratorPrivate> d_ptr; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SVGGENERATOR +#endif // QSVGGENERATOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/qsvgrenderer.h b/qrenderdoc/3rdparty/qt/include/QtSvg/qsvgrenderer.h new file mode 100644 index 000000000..6538df0fd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/qsvgrenderer.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSVGRENDERER_H +#define QSVGRENDERER_H + +#include <QtGui/qmatrix.h> + +#ifndef QT_NO_SVGRENDERER + +#include <QtCore/qobject.h> +#include <QtCore/qsize.h> +#include <QtCore/qrect.h> +#include <QtCore/qxmlstream.h> +#include <QtSvg/qtsvgglobal.h> + +QT_BEGIN_NAMESPACE + + +class QSvgRendererPrivate; +class QPainter; +class QByteArray; + +class Q_SVG_EXPORT QSvgRenderer : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QRectF viewBox READ viewBoxF WRITE setViewBox) + Q_PROPERTY(int framesPerSecond READ framesPerSecond WRITE setFramesPerSecond) + Q_PROPERTY(int currentFrame READ currentFrame WRITE setCurrentFrame) +public: + QSvgRenderer(QObject *parent = Q_NULLPTR); + QSvgRenderer(const QString &filename, QObject *parent = Q_NULLPTR); + QSvgRenderer(const QByteArray &contents, QObject *parent = Q_NULLPTR); + QSvgRenderer(QXmlStreamReader *contents, QObject *parent = Q_NULLPTR); + ~QSvgRenderer(); + + bool isValid() const; + + QSize defaultSize() const; + + QRect viewBox() const; + QRectF viewBoxF() const; + void setViewBox(const QRect &viewbox); + void setViewBox(const QRectF &viewbox); + + bool animated() const; + int framesPerSecond() const; + void setFramesPerSecond(int num); + int currentFrame() const; + void setCurrentFrame(int); + int animationDuration() const;//in seconds + + QRectF boundsOnElement(const QString &id) const; + bool elementExists(const QString &id) const; + QMatrix matrixForElement(const QString &id) const; + +public Q_SLOTS: + bool load(const QString &filename); + bool load(const QByteArray &contents); + bool load(QXmlStreamReader *contents); + void render(QPainter *p); + void render(QPainter *p, const QRectF &bounds); + + void render(QPainter *p, const QString &elementId, + const QRectF &bounds=QRectF()); + +Q_SIGNALS: + void repaintNeeded(); + +private: + Q_DECLARE_PRIVATE(QSvgRenderer) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SVGRENDERER +#endif // QSVGRENDERER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/qsvgwidget.h b/qrenderdoc/3rdparty/qt/include/QtSvg/qsvgwidget.h new file mode 100644 index 000000000..107c64d6c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/qsvgwidget.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt SVG 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSVGWIDGET_H +#define QSVGWIDGET_H + +#include <QtCore/qglobal.h> + +#ifndef QT_NO_WIDGETS + +#include <QtWidgets/qwidget.h> + +#include <QtSvg/qtsvgglobal.h> + +QT_BEGIN_NAMESPACE + + +class QSvgWidgetPrivate; +class QPaintEvent; +class QSvgRenderer; + +class Q_SVG_EXPORT QSvgWidget : public QWidget +{ + Q_OBJECT +public: + QSvgWidget(QWidget *parent = Q_NULLPTR); + QSvgWidget(const QString &file, QWidget *parent = Q_NULLPTR); + ~QSvgWidget(); + + QSvgRenderer *renderer() const; + + QSize sizeHint() const override; +public Q_SLOTS: + void load(const QString &file); + void load(const QByteArray &contents); +protected: + void paintEvent(QPaintEvent *event) override; +private: + Q_DISABLE_COPY(QSvgWidget) + Q_DECLARE_PRIVATE(QSvgWidget) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_WIDGETS + +#endif // QSVGWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/qtsvgglobal.h b/qrenderdoc/3rdparty/qt/include/QtSvg/qtsvgglobal.h new file mode 100644 index 000000000..5c79e2c92 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/qtsvgglobal.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Intel Corporation. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTSVGGLOBAL_H +#define QTSVGGLOBAL_H + +#include <QtCore/qglobal.h> + +QT_BEGIN_NAMESPACE + +#ifndef Q_SVG_EXPORT +# ifndef QT_STATIC +# if defined(QT_BUILD_SVG_LIB) +# define Q_SVG_EXPORT Q_DECL_EXPORT +# else +# define Q_SVG_EXPORT Q_DECL_IMPORT +# endif +# else +# define Q_SVG_EXPORT +# endif +#endif + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtSvg/qtsvgversion.h b/qrenderdoc/3rdparty/qt/include/QtSvg/qtsvgversion.h new file mode 100644 index 000000000..c844cd702 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtSvg/qtsvgversion.h @@ -0,0 +1,9 @@ +/* This file was generated by syncqt. */ +#ifndef QT_QTSVG_VERSION_H +#define QT_QTSVG_VERSION_H + +#define QTSVG_VERSION_STR "5.9.4" + +#define QTSVG_VERSION 0x050904 + +#endif // QT_QTSVG_VERSION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/complexwidgets_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/complexwidgets_p.h new file mode 100644 index 000000000..1887f98dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/complexwidgets_p.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef COMPLEXWIDGETS_H +#define COMPLEXWIDGETS_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/qpointer.h> +#include <QtWidgets/qaccessiblewidget.h> +#if QT_CONFIG(itemviews) +#include <QtWidgets/qabstractitemview.h> +#endif + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_ACCESSIBILITY + +class QAbstractButton; +class QHeaderView; +class QTabBar; +class QComboBox; +class QTitleBar; +class QAbstractScrollArea; +class QScrollArea; + +#if QT_CONFIG(scrollarea) +class QAccessibleAbstractScrollArea : public QAccessibleWidget +{ +public: + explicit QAccessibleAbstractScrollArea(QWidget *widget); + + enum AbstractScrollAreaElement { + Self = 0, + Viewport, + HorizontalContainer, + VerticalContainer, + CornerWidget, + Undefined + }; + + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + bool isValid() const Q_DECL_OVERRIDE; + QAccessibleInterface *childAt(int x, int y) const Q_DECL_OVERRIDE; + +//protected: + QAbstractScrollArea *abstractScrollArea() const; + +private: + QWidgetList accessibleChildren() const; + AbstractScrollAreaElement elementType(QWidget *widget) const; + bool isLeftToRight() const; +}; + +class QAccessibleScrollArea : public QAccessibleAbstractScrollArea +{ +public: + explicit QAccessibleScrollArea(QWidget *widget); +}; +#endif // QT_CONFIG(scrollarea) + +#if QT_CONFIG(tabbar) +class QAccessibleTabBar : public QAccessibleWidget +{ +public: + explicit QAccessibleTabBar(QWidget *w); + ~QAccessibleTabBar(); + + int childCount() const Q_DECL_OVERRIDE; + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + + QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + +protected: + QTabBar *tabBar() const; + mutable QHash<int, QAccessible::Id> m_childInterfaces; +}; +#endif // QT_CONFIG(tabbar) + +#if QT_CONFIG(combobox) +class QAccessibleComboBox : public QAccessibleWidget +{ +public: + explicit QAccessibleComboBox(QWidget *w); + + int childCount() const Q_DECL_OVERRIDE; + QAccessibleInterface *childAt(int x, int y) const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + QAccessibleInterface* child(int index) const Q_DECL_OVERRIDE; + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + + // QAccessibleActionInterface + QStringList actionNames() const Q_DECL_OVERRIDE; + QString localizedActionDescription(const QString &actionName) const Q_DECL_OVERRIDE; + void doAction(const QString &actionName) Q_DECL_OVERRIDE; + QStringList keyBindingsForAction(const QString &actionName) const Q_DECL_OVERRIDE; + +protected: + QComboBox *comboBox() const; +}; +#endif // QT_CONFIG(combobox) + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif // COMPLEXWIDGETS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/itemviews_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/itemviews_p.h new file mode 100644 index 000000000..72841b8a0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/itemviews_p.h @@ -0,0 +1,305 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ACCESSIBLE_ITEMVIEWS_H +#define ACCESSIBLE_ITEMVIEWS_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtCore/qpointer.h" +#include <QtGui/qaccessible.h> +#include <QtWidgets/qaccessiblewidget.h> +#include <QtWidgets/qabstractitemview.h> +#include <QtWidgets/qheaderview.h> + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_ACCESSIBILITY + +class QAccessibleTableCell; +class QAccessibleTableHeaderCell; + +class QAccessibleTable :public QAccessibleTableInterface, public QAccessibleObject +{ +public: + explicit QAccessibleTable(QWidget *w); + bool isValid() const Q_DECL_OVERRIDE; + + QAccessible::Role role() const Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + QRect rect() const Q_DECL_OVERRIDE; + + QAccessibleInterface *childAt(int x, int y) const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *) const Q_DECL_OVERRIDE; + + QAccessibleInterface *parent() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + + // table interface + virtual QAccessibleInterface *cellAt(int row, int column) const Q_DECL_OVERRIDE; + virtual QAccessibleInterface *caption() const Q_DECL_OVERRIDE; + virtual QAccessibleInterface *summary() const Q_DECL_OVERRIDE; + virtual QString columnDescription(int column) const Q_DECL_OVERRIDE; + virtual QString rowDescription(int row) const Q_DECL_OVERRIDE; + virtual int columnCount() const Q_DECL_OVERRIDE; + virtual int rowCount() const Q_DECL_OVERRIDE; + + // selection + virtual int selectedCellCount() const Q_DECL_OVERRIDE; + virtual int selectedColumnCount() const Q_DECL_OVERRIDE; + virtual int selectedRowCount() const Q_DECL_OVERRIDE; + virtual QList<QAccessibleInterface*> selectedCells() const Q_DECL_OVERRIDE; + virtual QList<int> selectedColumns() const Q_DECL_OVERRIDE; + virtual QList<int> selectedRows() const Q_DECL_OVERRIDE; + virtual bool isColumnSelected(int column) const Q_DECL_OVERRIDE; + virtual bool isRowSelected(int row) const Q_DECL_OVERRIDE; + virtual bool selectRow(int row) Q_DECL_OVERRIDE; + virtual bool selectColumn(int column) Q_DECL_OVERRIDE; + virtual bool unselectRow(int row) Q_DECL_OVERRIDE; + virtual bool unselectColumn(int column) Q_DECL_OVERRIDE; + + QAbstractItemView *view() const; + + void modelChange(QAccessibleTableModelChangeEvent *event) Q_DECL_OVERRIDE; + +protected: + inline QAccessible::Role cellRole() const { + switch (m_role) { + case QAccessible::List: + return QAccessible::ListItem; + case QAccessible::Table: + return QAccessible::Cell; + case QAccessible::Tree: + return QAccessible::TreeItem; + default: + Q_ASSERT(0); + } + return QAccessible::NoRole; + } + + QHeaderView *horizontalHeader() const; + QHeaderView *verticalHeader() const; + + // maybe vector + typedef QHash<int, QAccessible::Id> ChildCache; + mutable ChildCache childToId; + + virtual ~QAccessibleTable(); + +private: + // the child index for a model index + inline int logicalIndex(const QModelIndex &index) const; + QAccessible::Role m_role; +}; + +#if QT_CONFIG(treeview) +class QAccessibleTree :public QAccessibleTable +{ +public: + explicit QAccessibleTree(QWidget *w) + : QAccessibleTable(w) + {} + + + QAccessibleInterface *childAt(int x, int y) const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + + int indexOfChild(const QAccessibleInterface *) const Q_DECL_OVERRIDE; + + int rowCount() const Q_DECL_OVERRIDE; + + // table interface + QAccessibleInterface *cellAt(int row, int column) const Q_DECL_OVERRIDE; + QString rowDescription(int row) const Q_DECL_OVERRIDE; + bool isRowSelected(int row) const Q_DECL_OVERRIDE; + bool selectRow(int row) Q_DECL_OVERRIDE; + +private: + QModelIndex indexFromLogical(int row, int column = 0) const; + + inline int logicalIndex(const QModelIndex &index) const; +}; +#endif + +class QAccessibleTableCell: public QAccessibleInterface, public QAccessibleTableCellInterface, public QAccessibleActionInterface +{ +public: + QAccessibleTableCell(QAbstractItemView *view, const QModelIndex &m_index, QAccessible::Role role); + + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + QObject *object() const Q_DECL_OVERRIDE { return Q_NULLPTR; } + QAccessible::Role role() const Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + QRect rect() const Q_DECL_OVERRIDE; + bool isValid() const Q_DECL_OVERRIDE; + + QAccessibleInterface *childAt(int, int) const Q_DECL_OVERRIDE { return Q_NULLPTR; } + int childCount() const Q_DECL_OVERRIDE { return 0; } + int indexOfChild(const QAccessibleInterface *) const Q_DECL_OVERRIDE { return -1; } + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + void setText(QAccessible::Text t, const QString &text) Q_DECL_OVERRIDE; + + QAccessibleInterface *parent() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int) const Q_DECL_OVERRIDE; + + // cell interface + virtual int columnExtent() const Q_DECL_OVERRIDE; + virtual QList<QAccessibleInterface*> columnHeaderCells() const Q_DECL_OVERRIDE; + virtual int columnIndex() const Q_DECL_OVERRIDE; + virtual int rowExtent() const Q_DECL_OVERRIDE; + virtual QList<QAccessibleInterface*> rowHeaderCells() const Q_DECL_OVERRIDE; + virtual int rowIndex() const Q_DECL_OVERRIDE; + virtual bool isSelected() const Q_DECL_OVERRIDE; + virtual QAccessibleInterface* table() const Q_DECL_OVERRIDE; + + //action interface + virtual QStringList actionNames() const Q_DECL_OVERRIDE; + virtual void doAction(const QString &actionName) Q_DECL_OVERRIDE; + virtual QStringList keyBindingsForAction(const QString &actionName) const Q_DECL_OVERRIDE; + +private: + QHeaderView *verticalHeader() const; + QHeaderView *horizontalHeader() const; + QPointer<QAbstractItemView > view; + QPersistentModelIndex m_index; + QAccessible::Role m_role; + + void selectCell(); + void unselectCell(); + +friend class QAccessibleTable; +#if QT_CONFIG(treeview) +friend class QAccessibleTree; +#endif +}; + + +class QAccessibleTableHeaderCell: public QAccessibleInterface +{ +public: + // For header cells, pass the header view in addition + QAccessibleTableHeaderCell(QAbstractItemView *view, int index, Qt::Orientation orientation); + + QObject *object() const Q_DECL_OVERRIDE { return Q_NULLPTR; } + QAccessible::Role role() const Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + QRect rect() const Q_DECL_OVERRIDE; + bool isValid() const Q_DECL_OVERRIDE; + + QAccessibleInterface *childAt(int, int) const Q_DECL_OVERRIDE { return Q_NULLPTR; } + int childCount() const Q_DECL_OVERRIDE { return 0; } + int indexOfChild(const QAccessibleInterface *) const Q_DECL_OVERRIDE { return -1; } + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + void setText(QAccessible::Text t, const QString &text) Q_DECL_OVERRIDE; + + QAccessibleInterface *parent() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + +private: + QHeaderView *headerView() const; + + QPointer<QAbstractItemView> view; + int index; + Qt::Orientation orientation; + +friend class QAccessibleTable; +#if QT_CONFIG(treeview) +friend class QAccessibleTree; +#endif +}; + +// This is the corner button on the top left of a table. +// It can be used to select all cells or it is not active at all. +// For now it is ignored. +class QAccessibleTableCornerButton: public QAccessibleInterface +{ +public: + QAccessibleTableCornerButton(QAbstractItemView *view_) + :view(view_) + {} + + QObject *object() const Q_DECL_OVERRIDE { return Q_NULLPTR; } + QAccessible::Role role() const Q_DECL_OVERRIDE { return QAccessible::Pane; } + QAccessible::State state() const Q_DECL_OVERRIDE { return QAccessible::State(); } + QRect rect() const Q_DECL_OVERRIDE { return QRect(); } + bool isValid() const Q_DECL_OVERRIDE { return true; } + + QAccessibleInterface *childAt(int, int) const Q_DECL_OVERRIDE { return Q_NULLPTR; } + int childCount() const Q_DECL_OVERRIDE { return 0; } + int indexOfChild(const QAccessibleInterface *) const Q_DECL_OVERRIDE { return -1; } + + QString text(QAccessible::Text) const Q_DECL_OVERRIDE { return QString(); } + void setText(QAccessible::Text, const QString &) Q_DECL_OVERRIDE {} + + QAccessibleInterface *parent() const Q_DECL_OVERRIDE { + return QAccessible::queryAccessibleInterface(view); + } + QAccessibleInterface *child(int) const Q_DECL_OVERRIDE { + return Q_NULLPTR; + } + +private: + QPointer<QAbstractItemView> view; +}; + + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif // ACCESSIBLE_ITEMVIEWS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractbutton_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractbutton_p.h new file mode 100644 index 000000000..39e2e399a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractbutton_p.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTBUTTON_P_H +#define QABSTRACTBUTTON_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qabstractbutton.h" + +#include "QtCore/qbasictimer.h" +#include "private/qwidget_p.h" + +QT_BEGIN_NAMESPACE + +class QAbstractButtonPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QAbstractButton) +public: + QAbstractButtonPrivate(QSizePolicy::ControlType type = QSizePolicy::DefaultType); + + QString text; + QIcon icon; + QSize iconSize; +#ifndef QT_NO_SHORTCUT + QKeySequence shortcut; + int shortcutId; +#endif + uint checkable :1; + uint checked :1; + uint autoRepeat :1; + uint autoExclusive :1; + uint down :1; + uint blockRefresh :1; + uint pressed : 1; + +#if QT_CONFIG(buttongroup) + QButtonGroup* group; +#endif + QBasicTimer repeatTimer; + QBasicTimer animateTimer; + + int autoRepeatDelay, autoRepeatInterval; + + QSizePolicy::ControlType controlType; + mutable QSize sizeHint; + + void init(); + void click(); + void refresh(); + + QList<QAbstractButton *>queryButtonList() const; + QAbstractButton *queryCheckedButton() const; + void notifyChecked(); + void moveFocus(int key); + void fixFocusPolicy(); + + void emitPressed(); + void emitReleased(); + void emitClicked(); + void emitToggled(bool checked); +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTBUTTON_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractitemdelegate_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractitemdelegate_p.h new file mode 100644 index 000000000..da76d31e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractitemdelegate_p.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTITEMDELEGATE_P_H +#define QABSTRACTITEMDELEGATE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qabstractitemdelegate.h" +#include <private/qobject_p.h> + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +class Q_AUTOTEST_EXPORT QAbstractItemDelegatePrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QAbstractItemDelegate) +public: + explicit QAbstractItemDelegatePrivate(); + + bool editorEventFilter(QObject *object, QEvent *event); + bool tryFixup(QWidget *editor); + QString textForRole(Qt::ItemDataRole role, const QVariant &value, const QLocale &locale, int precision = 6) const; + void _q_commitDataAndCloseEditor(QWidget *editor); +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTITEMDELEGATE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractitemview_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractitemview_p.h new file mode 100644 index 000000000..d8af96af5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractitemview_p.h @@ -0,0 +1,480 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTITEMVIEW_P_H +#define QABSTRACTITEMVIEW_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qabstractscrollarea_p.h" +#include "private/qabstractitemmodel_p.h" +#include "QtWidgets/qapplication.h" +#include "QtGui/qevent.h" +#include "QtCore/qmimedata.h" +#include "QtGui/qpainter.h" +#include "QtCore/qpair.h" +#include "QtGui/qregion.h" +#include "QtCore/qdebug.h" +#include "QtCore/qbasictimer.h" +#include "QtCore/qelapsedtimer.h" + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +struct QEditorInfo { + QEditorInfo(QWidget *e, bool s): widget(QPointer<QWidget>(e)), isStatic(s) {} + QEditorInfo(): isStatic(false) {} + + QPointer<QWidget> widget; + bool isStatic; +}; + +// Fast associativity between Persistent editors and indices. +typedef QHash<QWidget *, QPersistentModelIndex> QEditorIndexHash; +typedef QHash<QPersistentModelIndex, QEditorInfo> QIndexEditorHash; + +struct QItemViewPaintPair { + QRect rect; + QModelIndex index; +}; +template <> +class QTypeInfo<QItemViewPaintPair> : public QTypeInfoMerger<QItemViewPaintPair, QRect, QModelIndex> {}; + +typedef QVector<QItemViewPaintPair> QItemViewPaintPairs; + +class Q_AUTOTEST_EXPORT QAbstractItemViewPrivate : public QAbstractScrollAreaPrivate +{ + Q_DECLARE_PUBLIC(QAbstractItemView) + +public: + QAbstractItemViewPrivate(); + virtual ~QAbstractItemViewPrivate(); + + void init(); + + virtual void _q_rowsRemoved(const QModelIndex &parent, int start, int end); + virtual void _q_rowsInserted(const QModelIndex &parent, int start, int end); + virtual void _q_columnsAboutToBeRemoved(const QModelIndex &parent, int start, int end); + virtual void _q_columnsRemoved(const QModelIndex &parent, int start, int end); + virtual void _q_columnsInserted(const QModelIndex &parent, int start, int end); + virtual void _q_modelDestroyed(); + virtual void _q_layoutChanged(); + virtual void _q_rowsMoved(const QModelIndex &source, int sourceStart, int sourceEnd, const QModelIndex &destination, int destinationStart); + virtual void _q_columnsMoved(const QModelIndex &source, int sourceStart, int sourceEnd, const QModelIndex &destination, int destinationStart); + + void _q_headerDataChanged() { doDelayedItemsLayout(); } + void _q_scrollerStateChanged(); + + void fetchMore(); + + bool shouldEdit(QAbstractItemView::EditTrigger trigger, const QModelIndex &index) const; + bool shouldForwardEvent(QAbstractItemView::EditTrigger trigger, const QEvent *event) const; + bool shouldAutoScroll(const QPoint &pos) const; + void doDelayedItemsLayout(int delay = 0); + void interruptDelayedItemsLayout() const; + + void updateGeometry(); + + void startAutoScroll() + { // ### it would be nice to make this into a style hint one day + int scrollInterval = (verticalScrollMode == QAbstractItemView::ScrollPerItem) ? 150 : 50; + autoScrollTimer.start(scrollInterval, q_func()); + autoScrollCount = 0; + } + void stopAutoScroll() { autoScrollTimer.stop(); autoScrollCount = 0;} + +#ifndef QT_NO_DRAGANDDROP + virtual bool dropOn(QDropEvent *event, int *row, int *col, QModelIndex *index); +#endif + bool droppingOnItself(QDropEvent *event, const QModelIndex &index); + + QWidget *editor(const QModelIndex &index, const QStyleOptionViewItem &options); + bool sendDelegateEvent(const QModelIndex &index, QEvent *event) const; + bool openEditor(const QModelIndex &index, QEvent *event); + void updateEditorData(const QModelIndex &topLeft, const QModelIndex &bottomRight); + + QItemSelectionModel::SelectionFlags multiSelectionCommand(const QModelIndex &index, + const QEvent *event) const; + QItemSelectionModel::SelectionFlags extendedSelectionCommand(const QModelIndex &index, + const QEvent *event) const; + QItemSelectionModel::SelectionFlags contiguousSelectionCommand(const QModelIndex &index, + const QEvent *event) const; + virtual void selectAll(QItemSelectionModel::SelectionFlags command); + + void setHoverIndex(const QPersistentModelIndex &index); + + void checkMouseMove(const QPersistentModelIndex &index); + inline void checkMouseMove(const QPoint &pos) { checkMouseMove(q_func()->indexAt(pos)); } + + inline QItemSelectionModel::SelectionFlags selectionBehaviorFlags() const + { + switch (selectionBehavior) { + case QAbstractItemView::SelectRows: return QItemSelectionModel::Rows; + case QAbstractItemView::SelectColumns: return QItemSelectionModel::Columns; + case QAbstractItemView::SelectItems: default: return QItemSelectionModel::NoUpdate; + } + } + +#ifndef QT_NO_DRAGANDDROP + virtual QAbstractItemView::DropIndicatorPosition position(const QPoint &pos, const QRect &rect, const QModelIndex &idx) const; + + inline bool canDrop(QDropEvent *event) { + const QMimeData *mime = event->mimeData(); + + // Drag enter event shall always be accepted, if mime type and action match. + // Whether the data can actually be dropped will be checked in drag move. + if (event->type() == QEvent::DragEnter && (event->dropAction() & model->supportedDropActions())) { + const QStringList modelTypes = model->mimeTypes(); + for (const auto &modelType : modelTypes) { + if (mime->hasFormat(modelType)) + return true; + } + } + + QModelIndex index; + int col = -1; + int row = -1; + if (dropOn(event, &row, &col, &index)) { + return model->canDropMimeData(mime, + dragDropMode == QAbstractItemView::InternalMove ? Qt::MoveAction : event->dropAction(), + row, col, index); + } + return false; + } + + inline void paintDropIndicator(QPainter *painter) + { + if (showDropIndicator && state == QAbstractItemView::DraggingState +#ifndef QT_NO_CURSOR + && viewport->cursor().shape() != Qt::ForbiddenCursor +#endif + ) { + QStyleOption opt; + opt.init(q_func()); + opt.rect = dropIndicatorRect; + q_func()->style()->drawPrimitive(QStyle::PE_IndicatorItemViewItemDrop, &opt, painter, q_func()); + } + } + +#endif + virtual QItemViewPaintPairs draggablePaintPairs(const QModelIndexList &indexes, QRect *r) const; + // reimplemented in subclasses + virtual void adjustViewOptionsForIndex(QStyleOptionViewItem*, const QModelIndex&) const {} + + inline void releaseEditor(QWidget *editor, const QModelIndex &index = QModelIndex()) const { + if (editor) { + QObject::disconnect(editor, SIGNAL(destroyed(QObject*)), + q_func(), SLOT(editorDestroyed(QObject*))); + editor->removeEventFilter(itemDelegate); + editor->hide(); + QAbstractItemDelegate *delegate = delegateForIndex(index); + + if (delegate) + delegate->destroyEditor(editor, index); + else + editor->deleteLater(); + } + } + + inline void executePostedLayout() const { + if (delayedPendingLayout && state != QAbstractItemView::CollapsingState) { + interruptDelayedItemsLayout(); + const_cast<QAbstractItemView*>(q_func())->doItemsLayout(); + } + } + + inline void setDirtyRegion(const QRegion &visualRegion) { + updateRegion += visualRegion; + if (!updateTimer.isActive()) + updateTimer.start(0, q_func()); + } + + inline void scrollDirtyRegion(int dx, int dy) { + scrollDelayOffset = QPoint(-dx, -dy); + updateDirtyRegion(); + scrollDelayOffset = QPoint(0, 0); + } + + inline void scrollContentsBy(int dx, int dy) { + scrollDirtyRegion(dx, dy); + viewport->scroll(dx, dy); + } + + void updateDirtyRegion() { + updateTimer.stop(); + viewport->update(updateRegion); + updateRegion = QRegion(); + } + + void clearOrRemove(); + void checkPersistentEditorFocus(); + + QPixmap renderToPixmap(const QModelIndexList &indexes, QRect *r) const; + + inline QPoint offset() const { + const Q_Q(QAbstractItemView); + return QPoint(q->isRightToLeft() ? -q->horizontalOffset() + : q->horizontalOffset(), q->verticalOffset()); + } + + const QEditorInfo &editorForIndex(const QModelIndex &index) const; + bool hasEditor(const QModelIndex &index) const; + + QModelIndex indexForEditor(QWidget *editor) const; + void addEditor(const QModelIndex &index, QWidget *editor, bool isStatic); + void removeEditor(QWidget *editor); + + inline bool isAnimating() const { + return state == QAbstractItemView::AnimatingState; + } + + inline QAbstractItemDelegate *delegateForIndex(const QModelIndex &index) const { + QMap<int, QPointer<QAbstractItemDelegate> >::ConstIterator it; + + it = rowDelegates.find(index.row()); + if (it != rowDelegates.end()) + return it.value(); + + it = columnDelegates.find(index.column()); + if (it != columnDelegates.end()) + return it.value(); + + return itemDelegate; + } + + inline bool isIndexValid(const QModelIndex &index) const { + return (index.row() >= 0) && (index.column() >= 0) && (index.model() == model); + } + inline bool isIndexSelectable(const QModelIndex &index) const { + return (model->flags(index) & Qt::ItemIsSelectable); + } + inline bool isIndexEnabled(const QModelIndex &index) const { + return (model->flags(index) & Qt::ItemIsEnabled); + } + inline bool isIndexDropEnabled(const QModelIndex &index) const { + return (model->flags(index) & Qt::ItemIsDropEnabled); + } + inline bool isIndexDragEnabled(const QModelIndex &index) const { + return (model->flags(index) & Qt::ItemIsDragEnabled); + } + + virtual bool selectionAllowed(const QModelIndex &index) const { + // in some views we want to go ahead with selections, even if the index is invalid + return isIndexValid(index) && isIndexSelectable(index); + } + + // reimplemented from QAbstractScrollAreaPrivate + QPoint contentsOffset() const override { + Q_Q(const QAbstractItemView); + return QPoint(q->horizontalOffset(), q->verticalOffset()); + } + + /** + * For now, assume that we have few editors, if we need a more efficient implementation + * we should add a QMap<QAbstractItemDelegate*, int> member. + */ + int delegateRefCount(const QAbstractItemDelegate *delegate) const + { + int ref = 0; + if (itemDelegate == delegate) + ++ref; + + for (int maps = 0; maps < 2; ++maps) { + const QMap<int, QPointer<QAbstractItemDelegate> > *delegates = maps ? &columnDelegates : &rowDelegates; + for (QMap<int, QPointer<QAbstractItemDelegate> >::const_iterator it = delegates->begin(); + it != delegates->end(); ++it) { + if (it.value() == delegate) { + ++ref; + // optimization, we are only interested in the ref count values 0, 1 or >=2 + if (ref >= 2) { + return ref; + } + } + } + } + return ref; + } + + /** + * return true if the index is registered as a QPersistentModelIndex + */ + inline bool isPersistent(const QModelIndex &index) const + { + return static_cast<QAbstractItemModelPrivate *>(model->d_ptr.data())->persistent.indexes.contains(index); + } + + QModelIndexList selectedDraggableIndexes() const; + + QStyleOptionViewItem viewOptionsV1() const; + + void doDelayedReset() + { + //we delay the reset of the timer because some views (QTableView) + //with headers can't handle the fact that the model has been destroyed + //all _q_modelDestroyed slots must have been called + if (!delayedReset.isActive()) + delayedReset.start(0, q_func()); + } + + QAbstractItemModel *model; + QPointer<QAbstractItemDelegate> itemDelegate; + QMap<int, QPointer<QAbstractItemDelegate> > rowDelegates; + QMap<int, QPointer<QAbstractItemDelegate> > columnDelegates; + QPointer<QItemSelectionModel> selectionModel; + QItemSelectionModel::SelectionFlag ctrlDragSelectionFlag; + bool noSelectionOnMousePress; + + QAbstractItemView::SelectionMode selectionMode; + QAbstractItemView::SelectionBehavior selectionBehavior; + + QEditorIndexHash editorIndexHash; + QIndexEditorHash indexEditorHash; + QSet<QWidget*> persistent; + QWidget *currentlyCommittingEditor; + + QPersistentModelIndex enteredIndex; + QPersistentModelIndex pressedIndex; + QPersistentModelIndex currentSelectionStartIndex; + Qt::KeyboardModifiers pressedModifiers; + QPoint pressedPosition; + bool pressedAlreadySelected; + + //forces the next mouseMoveEvent to send the viewportEntered signal + //if the mouse is over the viewport and not over an item + bool viewportEnteredNeeded; + + QAbstractItemView::State state; + QAbstractItemView::State stateBeforeAnimation; + QAbstractItemView::EditTriggers editTriggers; + QAbstractItemView::EditTrigger lastTrigger; + + QPersistentModelIndex root; + QPersistentModelIndex hover; + + bool tabKeyNavigation; + +#ifndef QT_NO_DRAGANDDROP + bool showDropIndicator; + QRect dropIndicatorRect; + bool dragEnabled; + QAbstractItemView::DragDropMode dragDropMode; + bool overwrite; + QAbstractItemView::DropIndicatorPosition dropIndicatorPosition; + Qt::DropAction defaultDropAction; +#endif + + QString keyboardInput; + QElapsedTimer keyboardInputTime; + + bool autoScroll; + QBasicTimer autoScrollTimer; + int autoScrollMargin; + int autoScrollCount; + bool shouldScrollToCurrentOnShow; //used to know if we should scroll to current on show event + bool shouldClearStatusTip; //if there is a statustip currently shown that need to be cleared when leaving. + + bool alternatingColors; + + QSize iconSize; + Qt::TextElideMode textElideMode; + + QRegion updateRegion; // used for the internal update system + QPoint scrollDelayOffset; + + QBasicTimer updateTimer; + QBasicTimer delayedEditing; + QBasicTimer delayedAutoScroll; //used when an item is clicked + QBasicTimer delayedReset; + + QAbstractItemView::ScrollMode verticalScrollMode; + QAbstractItemView::ScrollMode horizontalScrollMode; + +#ifndef QT_NO_GESTURES + // the selection before the last mouse down. In case we have to restore it for scrolling + QItemSelection oldSelection; + QModelIndex oldCurrent; +#endif + + bool currentIndexSet; + + bool wrapItemText; + mutable bool delayedPendingLayout; + bool moveCursorUpdatedView; + + // Whether scroll mode has been explicitly set or its value come from SH_ItemView_ScrollMode + bool verticalScrollModeSet; + bool horizontalScrollModeSet; + +private: + mutable QBasicTimer delayedLayout; + mutable QBasicTimer fetchMoreTimer; +}; + +QT_BEGIN_INCLUDE_NAMESPACE +#include <qvector.h> +QT_END_INCLUDE_NAMESPACE + +template <typename T> +inline int qBinarySearch(const QVector<T> &vec, const T &item, int start, int end) +{ + int i = (start + end + 1) >> 1; + while (end - start > 0) { + if (vec.at(i) > item) + end = i - 1; + else + start = i; + i = (start + end + 1) >> 1; + } + return i; +} + +QT_END_NAMESPACE + +#endif // QABSTRACTITEMVIEW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractscrollarea_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractscrollarea_p.h new file mode 100644 index 000000000..49f97bcb6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractscrollarea_p.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSCROLLAREA_P_H +#define QABSTRACTSCROLLAREA_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qframe_p.h" +#include "qabstractscrollarea.h" + +QT_BEGIN_NAMESPACE + +#if QT_CONFIG(scrollarea) + +class QScrollBar; +class QAbstractScrollAreaScrollBarContainer; + +// ### Qt 6: is the export still needed? If not, unexport QFramePrivate, too. +class Q_WIDGETS_EXPORT QAbstractScrollAreaPrivate: public QFramePrivate +{ + Q_DECLARE_PUBLIC(QAbstractScrollArea) + +public: + QAbstractScrollAreaPrivate(); + ~QAbstractScrollAreaPrivate(); + + void replaceScrollBar(QScrollBar *scrollBar, Qt::Orientation orientation); + + QAbstractScrollAreaScrollBarContainer *scrollBarContainers[Qt::Vertical + 1]; + QScrollBar *hbar, *vbar; + Qt::ScrollBarPolicy vbarpolicy, hbarpolicy; + + bool shownOnce; + bool inResize; + mutable QSize sizeHint; + QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy; + + QWidget *viewport; + QWidget *cornerWidget; + QRect cornerPaintingRect; +#if 0 // Used to be included in Qt4 for Q_WS_MAC + QRect reverseCornerPaintingRect; +#endif + int left, top, right, bottom; // viewport margin + + int xoffset, yoffset; + QPoint overshoot; + + void init(); + void layoutChildren(); + void layoutChildren_helper(bool *needHorizontalScrollbar, bool *needVerticalScrollbar); + // ### Fix for 4.4, talk to Bjoern E or Girish. + virtual void scrollBarPolicyChanged(Qt::Orientation, Qt::ScrollBarPolicy) {} + bool canStartScrollingAt( const QPoint &startPos ); + + void flashScrollBars(); + void setScrollBarTransient(QScrollBar *scrollBar, bool transient); + + void _q_hslide(int); + void _q_vslide(int); + void _q_showOrHideScrollBars(); + + virtual QPoint contentsOffset() const; + + inline bool viewportEvent(QEvent *event) + { return q_func()->viewportEvent(event); } + QScopedPointer<QObject> viewportFilter; + +#if 0 // Used to be included in Qt4 for Q_WS_WIN + bool singleFingerPanEnabled; + void setSingleFingerPanEnabled(bool on = true); +#endif +}; + +class QAbstractScrollAreaFilter : public QObject +{ + Q_OBJECT +public: + QAbstractScrollAreaFilter(QAbstractScrollAreaPrivate *p) : d(p) + { setObjectName(QLatin1String("qt_abstractscrollarea_filter")); } + bool eventFilter(QObject *o, QEvent *e) Q_DECL_OVERRIDE + { return (o == d->viewport ? d->viewportEvent(e) : false); } +private: + QAbstractScrollAreaPrivate *d; +}; + +class QBoxLayout; +class QAbstractScrollAreaScrollBarContainer : public QWidget +{ +public: + enum LogicalPosition { LogicalLeft = 1, LogicalRight = 2 }; + + QAbstractScrollAreaScrollBarContainer(Qt::Orientation orientation, QWidget *parent); + void addWidget(QWidget *widget, LogicalPosition position); + QWidgetList widgets(LogicalPosition position); + void removeWidget(QWidget *widget); + + QScrollBar *scrollBar; + QBoxLayout *layout; +private: + int scrollBarLayoutIndex() const; + + Qt::Orientation orientation; +}; + +#endif // QT_CONFIG(scrollarea) + +QT_END_NAMESPACE + +#endif // QABSTRACTSCROLLAREA_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractslider_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractslider_p.h new file mode 100644 index 000000000..419ce2ba0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractslider_p.h @@ -0,0 +1,151 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSLIDER_P_H +#define QABSTRACTSLIDER_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtCore/qbasictimer.h" +#include "QtCore/qelapsedtimer.h" +#include "private/qwidget_p.h" +#include "qstyle.h" + +QT_REQUIRE_CONFIG(abstractslider); + +QT_BEGIN_NAMESPACE + +class QAbstractSliderPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QAbstractSlider) +public: + QAbstractSliderPrivate(); + ~QAbstractSliderPrivate(); + + void setSteps(int single, int page); + + int minimum, maximum, pageStep, value, position, pressValue; + + /** + * Call effectiveSingleStep() when changing the slider value. + */ + int singleStep; + int singleStepFromItemView; // If we have itemViews we track the views preferred singleStep value. + bool viewMayChangeSingleStep; + + float offset_accumulated; + uint tracking : 1; + uint blocktracking :1; + uint pressed : 1; + uint invertedAppearance : 1; + uint invertedControls : 1; + Qt::Orientation orientation; + + QBasicTimer repeatActionTimer; + int repeatActionTime; + QAbstractSlider::SliderAction repeatAction; + +#ifdef QT_KEYPAD_NAVIGATION + int origValue; + + /** + */ + bool isAutoRepeating; + + /** + * When we're auto repeating, we multiply singleStep with this value to + * get our effective step. + */ + qreal repeatMultiplier; + + /** + * The time of when the first auto repeating key press event occurs. + */ + QElapsedTimer firstRepeat; + +#endif + + inline int effectiveSingleStep() const + { + return singleStep +#ifdef QT_KEYPAD_NAVIGATION + * repeatMultiplier +#endif + ; + } + void itemviewChangeSingleStep(int step); + + virtual int bound(int val) const { return qMax(minimum, qMin(maximum, val)); } + inline int overflowSafeAdd(int add) const + { + int newValue = value + add; + if (add > 0 && newValue < value) + newValue = maximum; + else if (add < 0 && newValue > value) + newValue = minimum; + return newValue; + } + inline void setAdjustedSliderPosition(int position) + { + Q_Q(QAbstractSlider); + if (q->style()->styleHint(QStyle::SH_Slider_StopMouseOverSlider, 0, q)) { + if ((position > pressValue - 2 * pageStep) && (position < pressValue + 2 * pageStep)) { + repeatAction = QAbstractSlider::SliderNoAction; + q->setSliderPosition(pressValue); + return; + } + } + q->triggerAction(repeatAction); + } + bool scrollByDelta(Qt::Orientation orientation, Qt::KeyboardModifiers modifiers, int delta); +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTSLIDER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractspinbox_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractspinbox_p.h new file mode 100644 index 000000000..8f312fa90 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qabstractspinbox_p.h @@ -0,0 +1,168 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSPINBOX_P_H +#define QABSTRACTSPINBOX_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qabstractspinbox.h" + +#include "QtWidgets/qlineedit.h" +#include "QtWidgets/qstyleoption.h" +#include "QtGui/qvalidator.h" +#include "QtCore/qdatetime.h" +#include "QtCore/qvariant.h" +#include "private/qwidget_p.h" + +QT_REQUIRE_CONFIG(spinbox); + +QT_BEGIN_NAMESPACE + +QVariant operator+(const QVariant &arg1, const QVariant &arg2); +QVariant operator-(const QVariant &arg1, const QVariant &arg2); +QVariant operator*(const QVariant &arg1, double multiplier); +double operator/(const QVariant &arg1, const QVariant &arg2); + +enum EmitPolicy { + EmitIfChanged, + AlwaysEmit, + NeverEmit +}; + +enum Button { + None = 0x000, + Keyboard = 0x001, + Mouse = 0x002, + Wheel = 0x004, + ButtonMask = 0x008, + Up = 0x010, + Down = 0x020, + DirectionMask = 0x040 +}; +class QSpinBoxValidator; +class QAbstractSpinBoxPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QAbstractSpinBox) +public: + QAbstractSpinBoxPrivate(); + ~QAbstractSpinBoxPrivate(); + + void init(); + void reset(); + void updateState(bool up, bool fromKeyboard = false); + QString stripped(const QString &text, int *pos = 0) const; + bool specialValue() const; + virtual QVariant getZeroVariant() const; + virtual void setRange(const QVariant &min, const QVariant &max); + void setValue(const QVariant &val, EmitPolicy ep, bool updateEdit = true); + virtual QVariant bound(const QVariant &val, const QVariant &old = QVariant(), int steps = 0) const; + virtual void updateEdit(); + + virtual void emitSignals(EmitPolicy ep, const QVariant &old); + virtual void interpret(EmitPolicy ep); + virtual QString textFromValue(const QVariant &n) const; + virtual QVariant valueFromText(const QString &input) const; + + void _q_editorTextChanged(const QString &); + virtual void _q_editorCursorPositionChanged(int oldpos, int newpos); + + virtual QStyle::SubControl newHoverControl(const QPoint &pos); + bool updateHoverControl(const QPoint &pos); + + virtual void clearCache() const; + virtual void updateEditFieldGeometry(); + + static int variantCompare(const QVariant &arg1, const QVariant &arg2); + static QVariant variantBound(const QVariant &min, const QVariant &value, const QVariant &max); + + QLineEdit *edit; + QString prefix, suffix, specialValueText; + QVariant value, minimum, maximum, singleStep; + QVariant::Type type; + int spinClickTimerId, spinClickTimerInterval, spinClickThresholdTimerId, spinClickThresholdTimerInterval; + int effectiveSpinRepeatRate; + uint buttonState; + mutable QString cachedText; + mutable QVariant cachedValue; + mutable QValidator::State cachedState; + mutable QSize cachedSizeHint, cachedMinimumSizeHint; + uint pendingEmit : 1; + uint readOnly : 1; + uint wrapping : 1; + uint ignoreCursorPositionChanged : 1; + uint frame : 1; + uint accelerate : 1; + uint keyboardTracking : 1; + uint cleared : 1; + uint ignoreUpdateEdit : 1; + QAbstractSpinBox::CorrectionMode correctionMode; + int acceleration; + QStyle::SubControl hoverControl; + QRect hoverRect; + QAbstractSpinBox::ButtonSymbols buttonSymbols; + QSpinBoxValidator *validator; + uint showGroupSeparator : 1; + int wheelDeltaRemainder; +}; + +class QSpinBoxValidator : public QValidator +{ +public: + QSpinBoxValidator(QAbstractSpinBox *qptr, QAbstractSpinBoxPrivate *dptr); + QValidator::State validate(QString &input, int &) const override; + void fixup(QString &) const override; +private: + QAbstractSpinBox *qptr; + QAbstractSpinBoxPrivate *dptr; +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTSPINBOX_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaccessiblemenu_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaccessiblemenu_p.h new file mode 100644 index 000000000..8b37e2333 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaccessiblemenu_p.h @@ -0,0 +1,143 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACCESSIBLEMENU_H +#define QACCESSIBLEMENU_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtWidgets/qaccessiblewidget.h> +#include <QtCore/qpointer.h> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_ACCESSIBILITY + +#if QT_CONFIG(menu) +class QMenu; +class QMenuBar; +class QAction; + +class QAccessibleMenu : public QAccessibleWidget +{ +public: + explicit QAccessibleMenu(QWidget *w); + + int childCount() const Q_DECL_OVERRIDE; + QAccessibleInterface *childAt(int x, int y) const Q_DECL_OVERRIDE; + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + QAccessible::Role role() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + QAccessibleInterface *parent() const Q_DECL_OVERRIDE; + int indexOfChild( const QAccessibleInterface *child ) const Q_DECL_OVERRIDE; + +protected: + QMenu *menu() const; +}; + +#if QT_CONFIG(menubar) +class QAccessibleMenuBar : public QAccessibleWidget +{ +public: + explicit QAccessibleMenuBar(QWidget *w); + + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + +protected: + QMenuBar *menuBar() const; +}; +#endif // QT_CONFIG(menubar) + + +class QAccessibleMenuItem : public QAccessibleInterface, public QAccessibleActionInterface +{ +public: + explicit QAccessibleMenuItem(QWidget *owner, QAction *w); + + ~QAccessibleMenuItem(); + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + + int childCount() const Q_DECL_OVERRIDE; + QAccessibleInterface *childAt(int x, int y) const Q_DECL_OVERRIDE; + bool isValid() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface * child) const Q_DECL_OVERRIDE; + + QAccessibleInterface *parent() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + QObject * object() const Q_DECL_OVERRIDE; + QWindow *window() const Q_DECL_OVERRIDE; + + QRect rect() const Q_DECL_OVERRIDE; + QAccessible::Role role() const Q_DECL_OVERRIDE; + void setText(QAccessible::Text t, const QString & text) Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + + // QAccessibleActionInterface + QStringList actionNames() const Q_DECL_OVERRIDE; + void doAction(const QString &actionName) Q_DECL_OVERRIDE; + QStringList keyBindingsForAction(const QString &actionName) const Q_DECL_OVERRIDE; + + QWidget *owner() const; +protected: + QAction *action() const; +private: + QAction *m_action; + QPointer<QWidget> m_owner; // can hold either QMenu or the QMenuBar that contains the action +}; + +#endif // QT_CONFIG(menu) + +QT_END_NAMESPACE +#endif // QT_NO_ACCESSIBILITY +#endif // QACCESSIBLEMENU_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaccessiblewidgetfactory_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaccessiblewidgetfactory_p.h new file mode 100644 index 000000000..5da609ddc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaccessiblewidgetfactory_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtGui/qaccessible.h> + +#ifndef QACCESSIBLEWIDGETFACTORY_H +#define QACCESSIBLEWIDGETFACTORY_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +QT_BEGIN_NAMESPACE + +QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *object); + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaccessiblewidgets_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaccessiblewidgets_p.h new file mode 100644 index 000000000..75e1eff69 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaccessiblewidgets_p.h @@ -0,0 +1,326 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACCESSIBLEWIDGETS_H +#define QACCESSIBLEWIDGETS_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtWidgets/qaccessiblewidget.h> + +#ifndef QT_NO_ACCESSIBILITY + +#include <QtCore/QPointer> +#include <QtCore/QPair> + +QT_BEGIN_NAMESPACE + +class QTextEdit; +class QStackedWidget; +class QToolBox; +class QMdiArea; +class QMdiSubWindow; +class QRubberBand; +class QTextBrowser; +class QCalendarWidget; +class QAbstractItemView; +class QDockWidget; +class QDockWidgetLayout; +class QMainWindow; +class QPlainTextEdit; +class QTextCursor; +class QTextDocument; + +#ifndef QT_NO_CURSOR +class QAccessibleTextWidget : public QAccessibleWidget, + public QAccessibleTextInterface, + public QAccessibleEditableTextInterface +{ +public: + QAccessibleTextWidget(QWidget *o, QAccessible::Role r = QAccessible::EditableText, const QString &name = QString()); + + QAccessible::State state() const Q_DECL_OVERRIDE; + + // QAccessibleTextInterface + // selection + void selection(int selectionIndex, int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + int selectionCount() const Q_DECL_OVERRIDE; + void addSelection(int startOffset, int endOffset) Q_DECL_OVERRIDE; + void removeSelection(int selectionIndex) Q_DECL_OVERRIDE; + void setSelection(int selectionIndex, int startOffset, int endOffset) Q_DECL_OVERRIDE; + + // cursor + int cursorPosition() const Q_DECL_OVERRIDE; + void setCursorPosition(int position) Q_DECL_OVERRIDE; + + // text + QString text(int startOffset, int endOffset) const Q_DECL_OVERRIDE; + QString textBeforeOffset(int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + QString textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + QString textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + int characterCount() const Q_DECL_OVERRIDE; + + // character <-> geometry + QRect characterRect(int offset) const Q_DECL_OVERRIDE; + int offsetAtPoint(const QPoint &point) const Q_DECL_OVERRIDE; + + QString attributes(int offset, int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + + // QAccessibleEditableTextInterface + void deleteText(int startOffset, int endOffset) Q_DECL_OVERRIDE; + void insertText(int offset, const QString &text) Q_DECL_OVERRIDE; + void replaceText(int startOffset, int endOffset, const QString &text) Q_DECL_OVERRIDE; + + using QAccessibleWidget::text; + +protected: + QTextCursor textCursorForRange(int startOffset, int endOffset) const; + virtual QPoint scrollBarPosition() const; + // return the current text cursor at the caret position including a potential selection + virtual QTextCursor textCursor() const = 0; + virtual void setTextCursor(const QTextCursor &) = 0; + virtual QTextDocument *textDocument() const = 0; + virtual QWidget *viewport() const = 0; +}; + +#if QT_CONFIG(textedit) +class QAccessiblePlainTextEdit : public QAccessibleTextWidget +{ +public: + explicit QAccessiblePlainTextEdit(QWidget *o); + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + void setText(QAccessible::Text t, const QString &text) Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + + // QAccessibleTextInterface + void scrollToSubstring(int startIndex, int endIndex) Q_DECL_OVERRIDE; + + using QAccessibleTextWidget::text; + +protected: + QPlainTextEdit *plainTextEdit() const; + + QPoint scrollBarPosition() const Q_DECL_OVERRIDE; + QTextCursor textCursor() const Q_DECL_OVERRIDE; + void setTextCursor(const QTextCursor &textCursor) Q_DECL_OVERRIDE; + QTextDocument *textDocument() const Q_DECL_OVERRIDE; + QWidget *viewport() const Q_DECL_OVERRIDE; +}; + +class QAccessibleTextEdit : public QAccessibleTextWidget +{ +public: + explicit QAccessibleTextEdit(QWidget *o); + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + void setText(QAccessible::Text t, const QString &text) Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + + // QAccessibleTextInterface + void scrollToSubstring(int startIndex, int endIndex) Q_DECL_OVERRIDE; + + using QAccessibleTextWidget::text; + +protected: + QTextEdit *textEdit() const; + + QPoint scrollBarPosition() const Q_DECL_OVERRIDE; + QTextCursor textCursor() const Q_DECL_OVERRIDE; + void setTextCursor(const QTextCursor &textCursor) Q_DECL_OVERRIDE; + QTextDocument *textDocument() const Q_DECL_OVERRIDE; + QWidget *viewport() const Q_DECL_OVERRIDE; +}; +#endif // QT_CONFIG(textedit) +#endif //QT_NO_CURSOR + +class QAccessibleStackedWidget : public QAccessibleWidget +{ +public: + explicit QAccessibleStackedWidget(QWidget *widget); + + QAccessibleInterface *childAt(int x, int y) const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + +protected: + QStackedWidget *stackedWidget() const; +}; + +class QAccessibleToolBox : public QAccessibleWidget +{ +public: + explicit QAccessibleToolBox(QWidget *widget); + +// FIXME we currently expose the toolbox but it is not keyboard navigatable +// and the accessible hierarchy is not exactly beautiful. +// int childCount() const; +// QAccessibleInterface *child(int index) const; +// int indexOfChild(const QAccessibleInterface *child) const; + +protected: + QToolBox *toolBox() const; +}; + +#if QT_CONFIG(mdiarea) +class QAccessibleMdiArea : public QAccessibleWidget +{ +public: + explicit QAccessibleMdiArea(QWidget *widget); + + int childCount() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + +protected: + QMdiArea *mdiArea() const; +}; + +class QAccessibleMdiSubWindow : public QAccessibleWidget +{ +public: + explicit QAccessibleMdiSubWindow(QWidget *widget); + + QString text(QAccessible::Text textType) const Q_DECL_OVERRIDE; + void setText(QAccessible::Text textType, const QString &text) Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + QRect rect() const Q_DECL_OVERRIDE; + +protected: + QMdiSubWindow *mdiSubWindow() const; +}; +#endif // QT_CONFIG(mdiarea) + +#if QT_CONFIG(dialogbuttonbox) +class QAccessibleDialogButtonBox : public QAccessibleWidget +{ +public: + explicit QAccessibleDialogButtonBox(QWidget *widget); +}; +#endif + +#if QT_CONFIG(textbrowser) && !defined(QT_NO_CURSOR) +class QAccessibleTextBrowser : public QAccessibleTextEdit +{ +public: + explicit QAccessibleTextBrowser(QWidget *widget); + + QAccessible::Role role() const Q_DECL_OVERRIDE; +}; +#endif // QT_CONFIG(textbrowser) && QT_NO_CURSOR + +#if QT_CONFIG(calendarwidget) +class QAccessibleCalendarWidget : public QAccessibleWidget +{ +public: + explicit QAccessibleCalendarWidget(QWidget *widget); + + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + +protected: + QCalendarWidget *calendarWidget() const; + +private: + QAbstractItemView *calendarView() const; + QWidget *navigationBar() const; +}; +#endif // QT_CONFIG(calendarwidget) + +#if QT_CONFIG(dockwidget) +class QAccessibleDockWidget: public QAccessibleWidget +{ +public: + explicit QAccessibleDockWidget(QWidget *widget); + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + QRect rect () const Q_DECL_OVERRIDE; + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + + QDockWidget *dockWidget() const; +protected: + QDockWidgetLayout *dockWidgetLayout() const; +}; + +#endif // QT_CONFIG(dockwidget) + +#if QT_CONFIG(mainwindow) +class QAccessibleMainWindow : public QAccessibleWidget +{ +public: + explicit QAccessibleMainWindow(QWidget *widget); + + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *iface) const Q_DECL_OVERRIDE; + QAccessibleInterface *childAt(int x, int y) const Q_DECL_OVERRIDE; + QMainWindow *mainWindow() const; + +}; +#endif // QT_CONFIG(mainwindow) + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif // QACESSIBLEWIDGETS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaction_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaction_p.h new file mode 100644 index 000000000..992323f30 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qaction_p.h @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACTION_P_H +#define QACTION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qaction.h" +#if QT_CONFIG(menu) +#include "QtWidgets/qmenu.h" +#endif +#if QT_CONFIG(graphicsview) +#include "private/qgraphicswidget_p.h" +#endif +#include "private/qobject_p.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_ACTION + + +class QShortcutMap; + +class Q_WIDGETS_EXPORT QActionPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QAction) +public: + QActionPrivate(); + ~QActionPrivate(); + + static QActionPrivate *get(QAction *q) + { + return q->d_func(); + } + + bool showStatusText(QWidget *w, const QString &str); + + QPointer<QActionGroup> group; + QString text; + QString iconText; + QIcon icon; + QString tooltip; + QString statustip; + QString whatsthis; +#ifndef QT_NO_SHORTCUT + QKeySequence shortcut; + QList<QKeySequence> alternateShortcuts; +#endif + QVariant userData; +#ifndef QT_NO_SHORTCUT + int shortcutId; + QVector<int> alternateShortcutIds; + Qt::ShortcutContext shortcutContext; + uint autorepeat : 1; +#endif + QFont font; + QPointer<QMenu> menu; + uint enabled : 1, forceDisabled : 1; + uint visible : 1, forceInvisible : 1; + uint checkable : 1; + uint checked : 1; + uint separator : 1; + uint fontSet : 1; + + int iconVisibleInMenu : 3; // Only has values -1, 0, and 1 + + QAction::MenuRole menuRole; + QAction::Priority priority; + + QList<QWidget *> widgets; +#if QT_CONFIG(graphicsview) + QList<QGraphicsWidget *> graphicsWidgets; +#endif +#ifndef QT_NO_SHORTCUT + void redoGrab(QShortcutMap &map); + void redoGrabAlternate(QShortcutMap &map); + void setShortcutEnabled(bool enable, QShortcutMap &map); + + static QShortcutMap *globalMap; +#endif // QT_NO_SHORTCUT + + void sendDataChanged(); +}; + +#endif // QT_NO_ACTION + +QT_END_NAMESPACE + +#endif // QACTION_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qandroidstyle_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qandroidstyle_p.h new file mode 100644 index 000000000..caff0afad --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qandroidstyle_p.h @@ -0,0 +1,395 @@ +/**************************************************************************** +** +** Copyright (C) 2013 BogDan Vatra <bogdan@kde.org> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/QList> +#include <QtCore/QMargins> +#include <QtCore/QHash> +#include <QtCore/QVariantMap> +#include "qfusionstyle_p.h" + +QT_BEGIN_NAMESPACE + +#if QT_CONFIG(style_android) + +class Q_WIDGETS_EXPORT QAndroidStyle : public QFusionStyle +{ + 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); + virtual void setPaddingLeftToSizeWidth(); + 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); + virtual void setPaddingLeftToSizeWidth(); + QSize sizeImage(const QStyleOption *opt) const; + 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 setFactor(int id, double factor, Qt::Orientation orientation); + 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; + int m_id; + double m_factor; + Qt::Orientation m_orientation; + }; + + 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(); + virtual QSize size(const QStyleOption *option); + protected: + virtual const AndroidDrawable * backgroundDrawable() const; + 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); + virtual QMargins padding(); + virtual QSize size(const QStyleOption *option); + protected: + virtual const AndroidDrawable * backgroundDrawable() const; + 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; + + int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, + QStyleHintReturn *returnData = 0) const; + + virtual QPalette standardPalette() const; + void polish(QWidget *widget); + void unpolish(QWidget *widget); + +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); + +private: + typedef QHash<int, AndroidControl *> AndroidControlsHash; + AndroidControlsHash m_androidControlsHash; + QPalette m_standardPalette; + AndroidCompoundButtonControl *checkBoxControl; +}; + +#endif // style_android + +QT_END_NAMESPACE + +#endif // QANDROIDSTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qapplication_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qapplication_p.h new file mode 100644 index 000000000..36de3caca --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qapplication_p.h @@ -0,0 +1,310 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QAPPLICATION_P_H +#define QAPPLICATION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp, qcolor_x11.cpp, qfiledialog.cpp +// and many other. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qapplication.h" +#include "QtGui/qevent.h" +#include "QtGui/qfont.h" +#include "QtGui/qcursor.h" +#include "QtGui/qregion.h" +#include "QtGui/qwindow.h" +#include "qwidget.h" +#include <qpa/qplatformnativeinterface.h> +#include "QtCore/qmutex.h" +#include "QtCore/qtranslator.h" +#include "QtCore/qbasictimer.h" +#include "QtCore/qhash.h" +#include "QtCore/qpointer.h" +#include "private/qcoreapplication_p.h" +#include "QtCore/qpoint.h" +#include <QTime> +#include <qpa/qwindowsysteminterface.h> +#include <qpa/qwindowsysteminterface_p.h> +#include <qpa/qplatformintegration.h> +#include "private/qguiapplication_p.h" + +QT_BEGIN_NAMESPACE + +class QClipboard; +class QGraphicsScene; +class QObject; +class QWidget; +class QSocketNotifier; +class QTouchDevice; +#ifndef QT_NO_GESTURES +class QGestureManager; +#endif + +extern Q_GUI_EXPORT bool qt_is_gui_used; +#ifndef QT_NO_CLIPBOARD +extern QClipboard *qt_clipboard; +#endif + +typedef QHash<QByteArray, QFont> FontHash; +FontHash *qt_app_fonts_hash(); + +typedef QHash<QByteArray, QPalette> PaletteHash; +PaletteHash *qt_app_palettes_hash(); + +#define QApplicationPrivateBase QGuiApplicationPrivate + +class Q_WIDGETS_EXPORT QApplicationPrivate : public QApplicationPrivateBase +{ + Q_DECLARE_PUBLIC(QApplication) +public: + QApplicationPrivate(int &argc, char **argv, int flags); + ~QApplicationPrivate(); + + virtual void notifyLayoutDirectionChange() Q_DECL_OVERRIDE; + virtual void notifyActiveWindowChange(QWindow *) Q_DECL_OVERRIDE; + + virtual bool shouldQuit() Q_DECL_OVERRIDE; + bool tryCloseAllWindows() Q_DECL_OVERRIDE; + +#if 0 // Used to be included in Qt4 for Q_WS_X11 +#ifndef QT_NO_SETTINGS + static bool x11_apply_settings(); +#endif + static void reset_instance_pointer(); +#endif + static bool autoSipEnabled; + static QString desktopStyleKey(); + + + void createEventDispatcher() Q_DECL_OVERRIDE; + static void dispatchEnterLeave(QWidget *enter, QWidget *leave, const QPointF &globalPosF); + + void notifyWindowIconChanged() Q_DECL_OVERRIDE; + + //modality + bool isWindowBlocked(QWindow *window, QWindow **blockingWindow = 0) const Q_DECL_OVERRIDE; + static bool isBlockedByModal(QWidget *widget); + static bool modalState(); + static bool tryModalHelper(QWidget *widget, QWidget **rettop = 0); +#if 0 // Used to be included in Qt4 for Q_WS_MAC + static QWidget *tryModalHelper_sys(QWidget *top); + bool canQuit(); +#endif + + //style + static bool usesNativeStyle() + { + return !overrides_native_style; + } + + bool notify_helper(QObject *receiver, QEvent * e); + + void init( +#if 0 // Used to be included in Qt4 for Q_WS_X11 + Display *dpy = 0, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0 +#endif + ); + void initialize(); + void process_cmdline(); + +#if 0 // Used to be included in Qt4 for Q_WS_X11 + static void x11_initialize_style(); +#endif + + static bool inPopupMode(); + bool popupActive() Q_DECL_OVERRIDE { return inPopupMode(); } + void closePopup(QWidget *popup); + void openPopup(QWidget *popup); + static void setFocusWidget(QWidget *focus, Qt::FocusReason reason); + static QWidget *focusNextPrevChild_helper(QWidget *toplevel, bool next, + bool *wrappingOccurred = 0); + +#if QT_CONFIG(graphicsview) + // Maintain a list of all scenes to ensure font and palette propagation to + // all scenes. + QList<QGraphicsScene *> scene_list; +#endif + + QBasicTimer toolTipWakeUp, toolTipFallAsleep; + QPoint toolTipPos, toolTipGlobalPos, hoverGlobalPos; + QPointer<QWidget> toolTipWidget; + + static QSize app_strut; + static QWidgetList *popupWidgets; + static QStyle *app_style; + static bool overrides_native_style; + static QPalette *sys_pal; + static QPalette *set_pal; + +protected: + void notifyThemeChanged() Q_DECL_OVERRIDE; +#ifndef QT_NO_DRAGANDDROP + void notifyDragStarted(const QDrag *) Q_DECL_OVERRIDE; +#endif // QT_NO_DRAGANDDROP + +public: + static QFont *sys_font; + static QFont *set_font; + static QWidget *main_widget; + static QWidget *focus_widget; + static QWidget *hidden_focus_widget; + static QWidget *active_window; +#if QT_CONFIG(wheelevent) + static int wheel_scroll_lines; + static QPointer<QWidget> wheel_widget; +#endif + + static int enabledAnimations; // Combination of QPlatformTheme::UiEffect + static bool widgetCount; // Coupled with -widgetcount switch + + static void setSystemPalette(const QPalette &pal); + static void setPalette_helper(const QPalette &palette, const char* className, bool clearWidgetPaletteHash); + static void initializeWidgetPaletteHash(); + static void initializeWidgetFontHash(); + static void setSystemFont(const QFont &font); + +#if 0 // Used to be included in Qt4 for Q_WS_X11 + static void applyX11SpecificCommandLineArguments(QWidget *main_widget); +#endif + + static QApplicationPrivate *instance() { return self; } + +#ifdef QT_KEYPAD_NAVIGATION + static QWidget *oldEditFocus; + static Qt::NavigationMode navigationMode; +#endif + +#if 0 /* Used to be included in Qt4 for Q_WS_MAC */ || 0 /* Used to be included in Qt4 for Q_WS_X11 */ + void _q_alertTimeOut(); + QHash<QWidget *, QTimer *> alertTimerHash; +#endif +#ifndef QT_NO_STYLE_STYLESHEET + static QString styleSheet; +#endif + static QPointer<QWidget> leaveAfterRelease; + static QWidget *pickMouseReceiver(QWidget *candidate, const QPoint &windowPos, QPoint *pos, + QEvent::Type type, Qt::MouseButtons buttons, + QWidget *buttonDown, QWidget *alienWidget); + static bool sendMouseEvent(QWidget *receiver, QMouseEvent *event, QWidget *alienWidget, + QWidget *native, QWidget **buttonDown, QPointer<QWidget> &lastMouseReceiver, + bool spontaneous = true); + void sendSyntheticEnterLeave(QWidget *widget); + + static QWindow *windowForWidget(const QWidget *widget) + { + if (QWindow *window = widget->windowHandle()) + return window; + if (const QWidget *nativeParent = widget->nativeParentWidget()) + return nativeParent->windowHandle(); + return 0; + } + +#ifdef Q_OS_WIN + static HWND getHWNDForWidget(const QWidget *widget) + { + if (QWindow *window = windowForWidget(widget)) + if (window->handle()) + return static_cast<HWND> (QGuiApplication::platformNativeInterface()-> + nativeResourceForWindow(QByteArrayLiteral("handle"), window)); + return 0; + } +#endif + +#ifndef QT_NO_GESTURES + QGestureManager *gestureManager; + QWidget *gestureWidget; +#endif +#if 0 /* Used to be included in Qt4 for Q_WS_X11 */ || 0 /* Used to be included in Qt4 for Q_WS_WIN */ + QPixmap *move_cursor; + QPixmap *copy_cursor; + QPixmap *link_cursor; +#endif +#if 0 // Used to be included in Qt4 for Q_WS_WIN + QPixmap *ignore_cursor; +#endif + + static bool updateTouchPointsForWidget(QWidget *widget, QTouchEvent *touchEvent); + void initializeMultitouch(); + void initializeMultitouch_sys(); + void cleanupMultitouch(); + void cleanupMultitouch_sys(); + QWidget *findClosestTouchPointTarget(QTouchDevice *device, const QTouchEvent::TouchPoint &touchPoint); + void appendTouchPoint(const QTouchEvent::TouchPoint &touchPoint); + void removeTouchPoint(int touchPointId); + void activateImplicitTouchGrab(QWidget *widget, QTouchEvent *touchBeginEvent); + static bool translateRawTouchEvent(QWidget *widget, + QTouchDevice *device, + const QList<QTouchEvent::TouchPoint> &touchPoints, + ulong timestamp); + static void translateTouchCancel(QTouchDevice *device, ulong timestamp); + + QPixmap applyQIconStyleHelper(QIcon::Mode mode, const QPixmap& base) const Q_DECL_OVERRIDE; +private: + static QApplicationPrivate *self; + static bool tryCloseAllWidgetWindows(QWindowList *processedWindows); + + static void giveFocusAccordingToFocusPolicy(QWidget *w, QEvent *event, QPoint localPos); + static bool shouldSetFocus(QWidget *w, Qt::FocusPolicy policy); + + + static bool isAlien(QWidget *); +}; + +#if 0 // Used to be included in Qt4 for Q_WS_WIN + extern void qt_win_set_cursor(QWidget *, bool); +#elif 0 // Used to be included in Qt4 for Q_WS_X11 + extern void qt_x11_enforce_cursor(QWidget *, bool); + extern void qt_x11_enforce_cursor(QWidget *); +#else + extern void qt_qpa_set_cursor(QWidget * w, bool force); +#endif + +QT_END_NAMESPACE + +#endif // QAPPLICATION_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbasickeyeventtransition_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbasickeyeventtransition_p.h new file mode 100644 index 000000000..d3b90f610 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbasickeyeventtransition_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBASICKEYEVENTTRANSITION_P_H +#define QBASICKEYEVENTTRANSITION_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/qabstracttransition.h> +#include <QtGui/qevent.h> + +QT_REQUIRE_CONFIG(qeventtransition); + +QT_BEGIN_NAMESPACE + +class QBasicKeyEventTransitionPrivate; +class Q_AUTOTEST_EXPORT QBasicKeyEventTransition : public QAbstractTransition +{ + Q_OBJECT +public: + QBasicKeyEventTransition(QState *sourceState = 0); + QBasicKeyEventTransition(QEvent::Type type, int key, QState *sourceState = 0); + QBasicKeyEventTransition(QEvent::Type type, int key, + Qt::KeyboardModifiers modifierMask, + QState *sourceState = 0); + ~QBasicKeyEventTransition(); + + QEvent::Type eventType() const; + void setEventType(QEvent::Type type); + + int key() const; + void setKey(int key); + + Qt::KeyboardModifiers modifierMask() const; + void setModifierMask(Qt::KeyboardModifiers modifiers); + +protected: + bool eventTest(QEvent *event) Q_DECL_OVERRIDE; + void onTransition(QEvent *) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QBasicKeyEventTransition) + Q_DECLARE_PRIVATE(QBasicKeyEventTransition) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbasicmouseeventtransition_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbasicmouseeventtransition_p.h new file mode 100644 index 000000000..d6d37eb03 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbasicmouseeventtransition_p.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBASICMOUSEEVENTTRANSITION_P_H +#define QBASICMOUSEEVENTTRANSITION_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/qabstracttransition.h> +#include <QtGui/qevent.h> + +QT_REQUIRE_CONFIG(qeventtransition); + +QT_BEGIN_NAMESPACE + +class QPainterPath; + +class QBasicMouseEventTransitionPrivate; +class Q_AUTOTEST_EXPORT QBasicMouseEventTransition : public QAbstractTransition +{ + Q_OBJECT +public: + QBasicMouseEventTransition(QState *sourceState = 0); + QBasicMouseEventTransition(QEvent::Type type, Qt::MouseButton button, + QState *sourceState = 0); + ~QBasicMouseEventTransition(); + + QEvent::Type eventType() const; + void setEventType(QEvent::Type type); + + Qt::MouseButton button() const; + void setButton(Qt::MouseButton button); + + Qt::KeyboardModifiers modifierMask() const; + void setModifierMask(Qt::KeyboardModifiers modifiers); + + QPainterPath hitTestPath() const; + void setHitTestPath(const QPainterPath &path); + +protected: + bool eventTest(QEvent *event) Q_DECL_OVERRIDE; + void onTransition(QEvent *) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QBasicMouseEventTransition) + Q_DECLARE_PRIVATE(QBasicMouseEventTransition) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbsptree_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbsptree_p.h new file mode 100644 index 000000000..5fd7a5c45 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbsptree_p.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBSPTREE_P_H +#define QBSPTREE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <qvector.h> +#include <qrect.h> + +QT_BEGIN_NAMESPACE + +class QBspTree +{ +public: + + struct Node + { + enum Type { None = 0, VerticalPlane = 1, HorizontalPlane = 2, Both = 3 }; + inline Node() : pos(0), type(None) {} + int pos; + Type type; + }; + typedef Node::Type NodeType; + + struct Data + { + Data(void *p) : ptr(p) {} + Data(int n) : i(n) {} + union { + void *ptr; + int i; + }; + }; + typedef QBspTree::Data QBspTreeData; + typedef void callback(QVector<int> &leaf, const QRect &area, uint visited, QBspTreeData data); + + QBspTree(); + + void create(int n, int d = -1); + void destroy(); + + inline void init(const QRect &area, NodeType type) { init(area, depth, type, 0); } + + void climbTree(const QRect &rect, callback *function, QBspTreeData data); + + inline int leafCount() const { return leaves.count(); } + inline QVector<int> &leaf(int i) { return leaves[i]; } + inline void insertLeaf(const QRect &r, int i) { climbTree(r, &insert, i, 0); } + inline void removeLeaf(const QRect &r, int i) { climbTree(r, &remove, i, 0); } + +protected: + void init(const QRect &area, int depth, NodeType type, int index); + void climbTree(const QRect &rect, callback *function, QBspTreeData data, int index); + + inline int parentIndex(int i) const { return (i & 1) ? ((i - 1) / 2) : ((i - 2) / 2); } + inline int firstChildIndex(int i) const { return ((i * 2) + 1); } + + static void insert(QVector<int> &leaf, const QRect &area, uint visited, QBspTreeData data); + static void remove(QVector<int> &leaf, const QRect &area, uint visited, QBspTreeData data); + +private: + uint depth; + mutable uint visited; + QVector<Node> nodes; + mutable QVector< QVector<int> > leaves; // the leaves are just indices into the items +}; + +QT_END_NAMESPACE + +#endif // QBSPTREE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbuttongroup_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbuttongroup_p.h new file mode 100644 index 000000000..148f57237 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qbuttongroup_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBUTTONGROUP_P_H +#define QBUTTONGROUP_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtWidgets/qbuttongroup.h> + +#include <QtCore/private/qobject_p.h> + +#include <QtCore/qlist.h> +#include <QtCore/qpointer.h> +#include <QtCore/qhash.h> + +QT_REQUIRE_CONFIG(buttongroup); + +QT_BEGIN_NAMESPACE + +class QButtonGroupPrivate: public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QButtonGroup) + +public: + QButtonGroupPrivate() : exclusive(true) {} + + QList<QAbstractButton *> buttonList; + QPointer<QAbstractButton> checkedButton; + void detectCheckedButton(); + + bool exclusive; + QHash<QAbstractButton*, int> mapping; +}; + +QT_END_NAMESPACE + +#endif // QBUTTONGROUP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcolumnview_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcolumnview_p.h new file mode 100644 index 000000000..fa276075f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcolumnview_p.h @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOLUMNVIEW_P_H +#define QCOLUMNVIEW_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qcolumnview.h" + +#include <private/qabstractitemview_p.h> + +#include <QtCore/qabstractitemmodel.h> +#include <QtCore/qpropertyanimation.h> +#include <QtWidgets/qabstractitemdelegate.h> +#include <QtWidgets/qabstractitemview.h> +#include <QtWidgets/qitemdelegate.h> +#include <qlistview.h> +#include <qevent.h> +#include <qscrollbar.h> + +QT_REQUIRE_CONFIG(columnview); + +QT_BEGIN_NAMESPACE + +class QColumnViewPreviewColumn : public QAbstractItemView { + +public: + explicit QColumnViewPreviewColumn(QWidget *parent) : QAbstractItemView(parent), previewWidget(0) { + } + + void setPreviewWidget(QWidget *widget) { + previewWidget = widget; + setMinimumWidth(previewWidget->minimumWidth()); + } + + void resizeEvent(QResizeEvent * event) Q_DECL_OVERRIDE{ + if (!previewWidget) + return; + previewWidget->resize( + qMax(previewWidget->minimumWidth(), event->size().width()), + previewWidget->height()); + QSize p = viewport()->size(); + QSize v = previewWidget->size(); + horizontalScrollBar()->setRange(0, v.width() - p.width()); + horizontalScrollBar()->setPageStep(p.width()); + verticalScrollBar()->setRange(0, v.height() - p.height()); + verticalScrollBar()->setPageStep(p.height()); + + QAbstractScrollArea::resizeEvent(event); + } + + void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE + { + if (!previewWidget) + return; + scrollDirtyRegion(dx, dy); + viewport()->scroll(dx, dy); + + QAbstractItemView::scrollContentsBy(dx, dy); + } + + QRect visualRect(const QModelIndex &) const Q_DECL_OVERRIDE + { + return QRect(); + } + void scrollTo(const QModelIndex &, ScrollHint) Q_DECL_OVERRIDE + { + } + QModelIndex indexAt(const QPoint &) const Q_DECL_OVERRIDE + { + return QModelIndex(); + } + QModelIndex moveCursor(CursorAction, Qt::KeyboardModifiers) Q_DECL_OVERRIDE + { + return QModelIndex(); + } + int horizontalOffset () const Q_DECL_OVERRIDE { + return 0; + } + int verticalOffset () const Q_DECL_OVERRIDE { + return 0; + } + QRegion visualRegionForSelection(const QItemSelection &) const Q_DECL_OVERRIDE + { + return QRegion(); + } + bool isIndexHidden(const QModelIndex &) const Q_DECL_OVERRIDE + { + return false; + } + void setSelection(const QRect &, QItemSelectionModel::SelectionFlags) Q_DECL_OVERRIDE + { + } +private: + QWidget *previewWidget; +}; + +class Q_AUTOTEST_EXPORT QColumnViewPrivate : public QAbstractItemViewPrivate +{ + Q_DECLARE_PUBLIC(QColumnView) + +public: + QColumnViewPrivate(); + ~QColumnViewPrivate(); + void initialize(); + + QAbstractItemView *createColumn(const QModelIndex &index, bool show); + + void updateScrollbars(); + void closeColumns(const QModelIndex &parent = QModelIndex(), bool build = false); + void doLayout(); + void setPreviewWidget(QWidget *widget); + void checkColumnCreation(const QModelIndex &parent); + + + void _q_gripMoved(int offset); + void _q_changeCurrentColumn(); + void _q_clicked(const QModelIndex &index); + void _q_columnsInserted(const QModelIndex &parent, int start, int end) Q_DECL_OVERRIDE; + + QList<QAbstractItemView*> columns; + QVector<int> columnSizes; // used during init and corner moving + bool showResizeGrips; + int offset; +#ifndef QT_NO_ANIMATION + QPropertyAnimation currentAnimation; +#endif + QWidget *previewWidget; + QAbstractItemView *previewColumn; +}; + +/*! + * This is a delegate that will paint the triangle + */ +class QColumnViewDelegate : public QItemDelegate +{ + +public: + explicit QColumnViewDelegate(QObject *parent = 0) : QItemDelegate(parent) {} + ~QColumnViewDelegate() {} + + void paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif //QCOLUMNVIEW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcolumnviewgrip_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcolumnviewgrip_p.h new file mode 100644 index 000000000..16c0aefad --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcolumnviewgrip_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOLUMNVIEWGRIP_P_H +#define QCOLUMNVIEWGRIP_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <private/qwidget_p.h> + +QT_REQUIRE_CONFIG(columnview); + +QT_BEGIN_NAMESPACE + +class QColumnViewGripPrivate; + +class Q_AUTOTEST_EXPORT QColumnViewGrip : public QWidget { + +Q_OBJECT + +Q_SIGNALS: + void gripMoved(int offset); + +public: + explicit QColumnViewGrip(QWidget *parent = 0); + ~QColumnViewGrip(); + int moveGrip(int offset); + +protected: + QColumnViewGrip(QColumnViewGripPrivate &, QWidget *parent = 0, Qt::WindowFlags f = 0); + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QColumnViewGrip) + Q_DISABLE_COPY(QColumnViewGrip) +}; + +class QColumnViewGripPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QColumnViewGrip) + +public: + QColumnViewGripPrivate(); + ~QColumnViewGripPrivate() {} + + int originalXLocation; +}; + +QT_END_NAMESPACE + +#endif //QCOLUMNVIEWGRIP_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcombobox_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcombobox_p.h new file mode 100644 index 000000000..249610825 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcombobox_p.h @@ -0,0 +1,429 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMBOBOX_P_H +#define QCOMBOBOX_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qcombobox.h" + +#include "QtWidgets/qabstractslider.h" +#include "QtWidgets/qapplication.h" +#include "QtWidgets/qitemdelegate.h" +#include "QtGui/qstandarditemmodel.h" +#include "QtWidgets/qlineedit.h" +#include "QtWidgets/qlistview.h" +#include "QtGui/qpainter.h" +#include "QtWidgets/qstyle.h" +#include "QtWidgets/qstyleoption.h" +#include "QtCore/qpair.h" +#include "QtCore/qtimer.h" +#include "private/qwidget_p.h" +#include "QtCore/qpointer.h" +#if QT_CONFIG(completer) +#include "QtWidgets/qcompleter.h" +#endif +#include "QtGui/qevent.h" +#include "QtCore/qdebug.h" + +#include <limits.h> + +QT_REQUIRE_CONFIG(combobox); + +QT_BEGIN_NAMESPACE + +class QAction; +class QPlatformMenu; + +class QComboBoxListView : public QListView +{ + Q_OBJECT +public: + QComboBoxListView(QComboBox *cmb = 0) : combo(cmb) {} + +protected: + void resizeEvent(QResizeEvent *event) override + { + resizeContents(viewport()->width(), contentsSize().height()); + QListView::resizeEvent(event); + } + + QStyleOptionViewItem viewOptions() const override + { + QStyleOptionViewItem option = QListView::viewOptions(); + option.showDecorationSelected = true; + if (combo) + option.font = combo->font(); + return option; + } + + void paintEvent(QPaintEvent *e) override + { + if (combo) { + QStyleOptionComboBox opt; + opt.initFrom(combo); + opt.editable = combo->isEditable(); + if (combo->style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, combo)) { + //we paint the empty menu area to avoid having blank space that can happen when scrolling + QStyleOptionMenuItem menuOpt; + menuOpt.initFrom(this); + menuOpt.palette = palette(); + menuOpt.state = QStyle::State_None; + menuOpt.checkType = QStyleOptionMenuItem::NotCheckable; + menuOpt.menuRect = e->rect(); + menuOpt.maxIconWidth = 0; + menuOpt.tabWidth = 0; + QPainter p(viewport()); + combo->style()->drawControl(QStyle::CE_MenuEmptyArea, &menuOpt, &p, this); + } + } + QListView::paintEvent(e); + } + +private: + QComboBox *combo; +}; + + +class QStandardItemModel; + +class Q_AUTOTEST_EXPORT QComboBoxPrivateScroller : public QWidget +{ + Q_OBJECT + +public: + QComboBoxPrivateScroller(QAbstractSlider::SliderAction action, QWidget *parent) + : QWidget(parent), sliderAction(action) + { + setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); + setAttribute(Qt::WA_NoMousePropagation); + } + QSize sizeHint() const override { + return QSize(20, style()->pixelMetric(QStyle::PM_MenuScrollerHeight)); + } + +protected: + inline void stopTimer() { + timer.stop(); + } + + inline void startTimer() { + timer.start(100, this); + fast = false; + } + + void enterEvent(QEvent *) override { + startTimer(); + } + + void leaveEvent(QEvent *) override { + stopTimer(); + } + void timerEvent(QTimerEvent *e) override { + if (e->timerId() == timer.timerId()) { + emit doScroll(sliderAction); + if (fast) { + emit doScroll(sliderAction); + emit doScroll(sliderAction); + } + } + } + void hideEvent(QHideEvent *) override { + stopTimer(); + } + + void mouseMoveEvent(QMouseEvent *e) override + { + // Enable fast scrolling if the cursor is directly above or below the popup. + const int mouseX = e->pos().x(); + const int mouseY = e->pos().y(); + const bool horizontallyInside = pos().x() < mouseX && mouseX < rect().right() + 1; + const bool verticallyOutside = (sliderAction == QAbstractSlider::SliderSingleStepAdd) ? + rect().bottom() + 1 < mouseY : mouseY < pos().y(); + + fast = horizontallyInside && verticallyOutside; + } + + void paintEvent(QPaintEvent *) override { + QPainter p(this); + QStyleOptionMenuItem menuOpt; + menuOpt.init(this); + menuOpt.checkType = QStyleOptionMenuItem::NotCheckable; + menuOpt.menuRect = rect(); + menuOpt.maxIconWidth = 0; + menuOpt.tabWidth = 0; + menuOpt.menuItemType = QStyleOptionMenuItem::Scroller; + if (sliderAction == QAbstractSlider::SliderSingleStepAdd) + menuOpt.state |= QStyle::State_DownArrow; + p.eraseRect(rect()); + style()->drawControl(QStyle::CE_MenuScroller, &menuOpt, &p); + } + +Q_SIGNALS: + void doScroll(int action); + +private: + QAbstractSlider::SliderAction sliderAction; + QBasicTimer timer; + bool fast; +}; + +class Q_AUTOTEST_EXPORT QComboBoxPrivateContainer : public QFrame +{ + Q_OBJECT + +public: + QComboBoxPrivateContainer(QAbstractItemView *itemView, QComboBox *parent); + QAbstractItemView *itemView() const; + void setItemView(QAbstractItemView *itemView); + int spacing() const; + int topMargin() const; + int bottomMargin() const { return topMargin(); } + void updateTopBottomMargin(); + + QTimer blockMouseReleaseTimer; + QBasicTimer adjustSizeTimer; + QPoint initialClickPosition; + +public Q_SLOTS: + void scrollItemView(int action); + void updateScrollers(); + void viewDestroyed(); + +protected: + void changeEvent(QEvent *e) override; + bool eventFilter(QObject *o, QEvent *e) override; + void mousePressEvent(QMouseEvent *e) override; + void mouseReleaseEvent(QMouseEvent *e) override; + void showEvent(QShowEvent *e) override; + void hideEvent(QHideEvent *e) override; + void timerEvent(QTimerEvent *timerEvent) override; + void leaveEvent(QEvent *e) override; + void resizeEvent(QResizeEvent *e) override; + QStyleOptionComboBox comboStyleOption() const; + +Q_SIGNALS: + void itemSelected(const QModelIndex &); + void resetButton(); + +private: + QComboBox *combo; + QAbstractItemView *view; + QComboBoxPrivateScroller *top; + QComboBoxPrivateScroller *bottom; + bool maybeIgnoreMouseButtonRelease; + QElapsedTimer popupTimer; + + friend class QComboBox; + friend class QComboBoxPrivate; +}; + +class Q_AUTOTEST_EXPORT QComboMenuDelegate : public QAbstractItemDelegate +{ Q_OBJECT +public: + QComboMenuDelegate(QObject *parent, QComboBox *cmb) : QAbstractItemDelegate(parent), mCombo(cmb) {} + +protected: + void paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const override { + QStyleOptionMenuItem opt = getStyleOption(option, index); + painter->fillRect(option.rect, opt.palette.background()); + mCombo->style()->drawControl(QStyle::CE_MenuItem, &opt, painter, mCombo); + } + QSize sizeHint(const QStyleOptionViewItem &option, + const QModelIndex &index) const override { + QStyleOptionMenuItem opt = getStyleOption(option, index); + return mCombo->style()->sizeFromContents( + QStyle::CT_MenuItem, &opt, option.rect.size(), mCombo); + } + +private: + QStyleOptionMenuItem getStyleOption(const QStyleOptionViewItem &option, + const QModelIndex &index) const; + QComboBox *mCombo; +}; + +// 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 Q_AUTOTEST_EXPORT QComboBoxDelegate : public QItemDelegate +{ Q_OBJECT +public: + QComboBoxDelegate(QObject *parent, QComboBox *cmb) : QItemDelegate(parent), mCombo(cmb) {} + + static bool isSeparator(const QModelIndex &index) { + return index.data(Qt::AccessibleDescriptionRole).toString() == QLatin1String("separator"); + } + static void setSeparator(QAbstractItemModel *model, const QModelIndex &index) { + model->setData(index, QString::fromLatin1("separator"), Qt::AccessibleDescriptionRole); + if (QStandardItemModel *m = qobject_cast<QStandardItemModel*>(model)) + if (QStandardItem *item = m->itemFromIndex(index)) + item->setFlags(item->flags() & ~(Qt::ItemIsSelectable|Qt::ItemIsEnabled)); + } + +protected: + void paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const override { + if (isSeparator(index)) { + QRect rect = option.rect; + if (const QAbstractItemView *view = qobject_cast<const QAbstractItemView*>(option.widget)) + rect.setWidth(view->viewport()->width()); + QStyleOption opt; + opt.rect = rect; + mCombo->style()->drawPrimitive(QStyle::PE_IndicatorToolBarSeparator, &opt, painter, mCombo); + } else { + QItemDelegate::paint(painter, option, index); + } + } + + QSize sizeHint(const QStyleOptionViewItem &option, + const QModelIndex &index) const override { + if (isSeparator(index)) { + int pm = mCombo->style()->pixelMetric(QStyle::PM_DefaultFrameWidth, 0, mCombo); + return QSize(pm, pm); + } + return QItemDelegate::sizeHint(option, index); + } +private: + QComboBox *mCombo; +}; + +class Q_AUTOTEST_EXPORT QComboBoxPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QComboBox) +public: + QComboBoxPrivate(); + ~QComboBoxPrivate(); + void init(); + QComboBoxPrivateContainer* viewContainer(); + void updateLineEditGeometry(); + Qt::MatchFlags matchFlags() const; + void _q_editingFinished(); + void _q_returnPressed(); + void _q_complete(); + void _q_itemSelected(const QModelIndex &item); + bool contains(const QString &text, int role); + void emitActivated(const QModelIndex&); + void _q_emitHighlighted(const QModelIndex&); + void _q_emitCurrentIndexChanged(const QModelIndex &index); + void _q_modelDestroyed(); + void _q_modelReset(); +#if QT_CONFIG(completer) + void _q_completerActivated(const QModelIndex &index); +#endif + void _q_resetButton(); + void _q_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); + void _q_updateIndexBeforeChange(); + void _q_rowsInserted(const QModelIndex & parent, int start, int end); + void _q_rowsRemoved(const QModelIndex & parent, int start, int end); + void updateArrow(QStyle::StateFlag state); + bool updateHoverControl(const QPoint &pos); + QRect popupGeometry(int screen = -1) const; + QStyle::SubControl newHoverControl(const QPoint &pos); + int computeWidthHint() const; + QSize recomputeSizeHint(QSize &sh) const; + void adjustComboBoxSize(); + QString itemText(const QModelIndex &index) const; + QIcon itemIcon(const QModelIndex &index) const; + int itemRole() const; + void updateLayoutDirection(); + void setCurrentIndex(const QModelIndex &index); + void updateDelegate(bool force = false); + void keyboardSearchString(const QString &text); + void modelChanged(); + void updateViewContainerPaletteAndOpacity(); + void updateFocusPolicy(); + void showPopupFromMouseEvent(QMouseEvent *e); + +#ifdef Q_OS_MAC + void cleanupNativePopup(); + bool showNativePopup(); +#endif + + QAbstractItemModel *model; + QLineEdit *lineEdit; + QComboBoxPrivateContainer *container; + QComboBox::InsertPolicy insertPolicy; + QComboBox::SizeAdjustPolicy sizeAdjustPolicy; + int minimumContentsLength; + QSize iconSize; + uint shownOnce : 1; + uint autoCompletion : 1; + uint duplicatesEnabled : 1; + uint frame : 1; + uint padding : 26; + int maxVisibleItems; + int maxCount; + int modelColumn; + bool inserting; + mutable QSize minimumSizeHint; + mutable QSize sizeHint; + QStyle::StateFlag arrowState; + QStyle::SubControl hoverControl; + QRect hoverRect; + QPersistentModelIndex currentIndex; + QPersistentModelIndex root; + Qt::CaseSensitivity autoCompletionCaseSensitivity; + int indexBeforeChange; +#ifdef Q_OS_MAC + QPlatformMenu *m_platformMenu; +#endif +#if QT_CONFIG(completer) + QPointer<QCompleter> completer; +#endif + static QPalette viewContainerPalette(QComboBox *cmb) + { return cmb->d_func()->viewContainer()->palette(); } +}; + +QT_END_NAMESPACE + +#endif // QCOMBOBOX_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcommonstyle_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcommonstyle_p.h new file mode 100644 index 000000000..9fb731239 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcommonstyle_p.h @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMMONSTYLE_P_H +#define QCOMMONSTYLE_P_H + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qcommonstyle.h" +#include "qstyle_p.h" +#include "qstyleanimation_p.h" + +#include "qstyleoption.h" + +QT_BEGIN_NAMESPACE + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +class QStringList; + +// Private class +class QCommonStylePrivate : public QStylePrivate +{ + Q_DECLARE_PUBLIC(QCommonStyle) +public: + inline QCommonStylePrivate() : +#if QT_CONFIG(itemviews) + cachedOption(0), +#endif + animationFps(30) + { } + + ~QCommonStylePrivate() + { +#ifndef QT_NO_ANIMATION + qDeleteAll(animations); +#endif +#if QT_CONFIG(itemviews) + delete cachedOption; +#endif + } + +#if QT_CONFIG(itemviews) + void viewItemDrawText(QPainter *p, const QStyleOptionViewItem *option, const QRect &rect) const; + void viewItemLayout(const QStyleOptionViewItem *opt, QRect *checkRect, + QRect *pixmapRect, QRect *textRect, bool sizehint) const; + QSize viewItemSize(const QStyleOptionViewItem *option, int role) const; + + mutable QRect decorationRect, displayRect, checkRect; + mutable QStyleOptionViewItem *cachedOption; + bool isViewItemCached(const QStyleOptionViewItem &option) const { + return cachedOption && (option.widget == cachedOption->widget + && option.index == cachedOption->index + && option.state == cachedOption->state + && option.rect == cachedOption->rect + && option.text == cachedOption->text + && option.direction == cachedOption->direction + && option.displayAlignment == cachedOption->displayAlignment + && option.decorationAlignment == cachedOption->decorationAlignment + && option.decorationPosition == cachedOption->decorationPosition + && option.decorationSize == cachedOption->decorationSize + && option.features == cachedOption->features + && option.icon.isNull() == cachedOption->icon.isNull() + && option.font == cachedOption->font + && option.viewItemPosition == cachedOption->viewItemPosition); + } +#endif + mutable QIcon tabBarcloseButtonIcon; +#if QT_CONFIG(tabbar) + void tabLayout(const QStyleOptionTab *opt, const QWidget *widget, QRect *textRect, QRect *pixmapRect) const; +#endif + + int animationFps; +#ifndef QT_NO_ANIMATION + void _q_removeAnimation(); + + QList<const QObject*> animationTargets() const; + QStyleAnimation* animation(const QObject *target) const; + void startAnimation(QStyleAnimation *animation) const; + void stopAnimation(const QObject *target) const; + +private: + mutable QHash<const QObject*, QStyleAnimation*> animations; +#endif // QT_NO_ANIMATION +}; + +QT_END_NAMESPACE + +#endif //QCOMMONSTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcommonstylepixmaps_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcommonstylepixmaps_p.h new file mode 100644 index 000000000..58b979465 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcommonstylepixmaps_p.h @@ -0,0 +1,529 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets/private/qtwidgetsglobal_p.h> + +#ifndef QT_NO_IMAGEFORMAT_XPM + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +static const char * const check_list_controller_xpm[] = { +"16 16 4 1", +" c None", +". c #000000000000", +"X c #FFFFFFFF0000", +"o c #C71BC30BC71B", +" ", +" ", +" .......... ", +" .XXXXXXXX. ", +" .XXXXXXXX.oo ", +" .XXXXXXXX.oo ", +" .XXXXXXXX.oo ", +" .XXXXXXXX.oo ", +" .XXXXXXXX.oo ", +" .XXXXXXXX.oo ", +" .XXXXXXXX.oo ", +" ..........oo ", +" oooooooooo ", +" oooooooooo ", +" ", +" "}; + + +static const char * const tb_extension_arrow_v_xpm[] = { + "5 8 3 1", + " c None", + ". c #000000", + "+ c none", + ".+++.", + "..+..", + "+...+", + "++.++", + ".+++.", + "..+..", + "+...+", + "++.++" +}; + +static const char * const tb_extension_arrow_h_xpm[] = { + "8 5 3 1", + " c None", + ". c #000000", + "+ c none", + "..++..++", + "+..++..+", + "++..++..", + "+..++..+", + "..++..++", +}; + +static const char * const filedialog_start_xpm[]={ + "16 15 8 1", + "a c #cec6bd", + "# c #000000", + "e c #ffff00", + "b c #999999", + "f c #cccccc", + "d c #dcdcdc", + "c c #ffffff", + ". c None", + ".....######aaaaa", + "...bb#cccc##aaaa", + "..bcc#cccc#d#aaa", + ".bcef#cccc#dd#aa", + ".bcfe#cccc#####a", + ".bcef#ccccccccc#", + "bbbbbbbbbbbbccc#", + "bccccccccccbbcc#", + "bcefefefefee#bc#", + ".bcefefefefef#c#", + ".bcfefefefefe#c#", + "..bcfefefefeeb##", + "..bbbbbbbbbbbbb#", + "...#############", + "................"}; + +static const char * const filedialog_end_xpm[]={ + "16 15 9 1", + "d c #a0a0a0", + "c c #c3c3c3", + "# c #cec6bd", + ". c #000000", + "f c #ffff00", + "e c #999999", + "g c #cccccc", + "b c #ffffff", + "a c None", + "......####aaaaaa", + ".bbbb..###aaaaaa", + ".bbbb.c.##aaaaaa", + ".bbbb....ddeeeea", + ".bbbbbbb.bbbbbe.", + ".bbbbbbb.bcfgfe.", + "eeeeeeeeeeeeefe.", + "ebbbbbbbbbbeege.", + "ebfgfgfgfgff.ee.", + "aebfgfgfgfgfg.e.", + "aebgfgfgfgfgf.e.", + "aaebgfgfgfgffe..", + "aaeeeeeeeeeeeee.", + "aaa.............", + "aaaaaaaaaaaaaaaa"}; + + +/* XPM */ +static const char * const qt_menu_xpm[] = { +"16 16 72 1", +" c None", +". c #65AF36", +"+ c #66B036", +"@ c #77B94C", +"# c #A7D28C", +"$ c #BADBA4", +"% c #A4D088", +"& c #72B646", +"* c #9ACB7A", +"= c #7FBD56", +"- c #85C05F", +"; c #F4F9F0", +"> c #FFFFFF", +", c #E5F1DC", +"' c #ECF5E7", +") c #7ABA50", +"! c #83BF5C", +"~ c #AED595", +"{ c #D7EACA", +"] c #A9D28D", +"^ c #BCDDA8", +"/ c #C4E0B1", +"( c #81BE59", +"_ c #D0E7C2", +": c #D4E9C6", +"< c #6FB542", +"[ c #6EB440", +"} c #88C162", +"| c #98CA78", +"1 c #F4F9F1", +"2 c #8FC56C", +"3 c #F1F8EC", +"4 c #E8F3E1", +"5 c #D4E9C7", +"6 c #74B748", +"7 c #80BE59", +"8 c #73B747", +"9 c #6DB43F", +"0 c #CBE4BA", +"a c #80BD58", +"b c #6DB33F", +"c c #FEFFFE", +"d c #68B138", +"e c #F9FCF7", +"f c #91C66F", +"g c #E8F3E0", +"h c #DCEDD0", +"i c #91C66E", +"j c #A3CF86", +"k c #C9E3B8", +"l c #B0D697", +"m c #E3F0DA", +"n c #95C873", +"o c #E6F2DE", +"p c #9ECD80", +"q c #BEDEAA", +"r c #C7E2B6", +"s c #79BA4F", +"t c #6EB441", +"u c #BCDCA7", +"v c #FAFCF8", +"w c #F6FAF3", +"x c #84BF5D", +"y c #EDF6E7", +"z c #FAFDF9", +"A c #88C263", +"B c #98CA77", +"C c #CDE5BE", +"D c #67B037", +"E c #D9EBCD", +"F c #6AB23C", +"G c #77B94D", +" .++++++++++++++", +".+++++++++++++++", +"+++@#$%&+++*=+++", +"++-;>,>')+!>~+++", +"++{>]+^>/(_>:~<+", +"+[>>}+|>123>456+", +"+7>>8+->>90>~+++", +"+a>>b+a>c[0>~+++", +"+de>=+f>g+0>~+++", +"++h>i+j>k+0>~+++", +"++l>mno>p+q>rst+", +"++duv>wl++xy>zA+", +"++++B>Cb++++&D++", +"+++++0zE++++++++", +"++++++FG+++++++.", +"++++++++++++++. "}; + +static const char * const qt_close_xpm[] = { +"10 10 2 1", +"# c #000000", +". c None", +"..........", +".##....##.", +"..##..##..", +"...####...", +"....##....", +"...####...", +"..##..##..", +".##....##.", +"..........", +".........."}; + +static const char * const qt_maximize_xpm[]={ +"10 10 2 1", +"# c #000000", +". c None", +"#########.", +"#########.", +"#.......#.", +"#.......#.", +"#.......#.", +"#.......#.", +"#.......#.", +"#.......#.", +"#########.", +".........."}; + +static const char * const qt_minimize_xpm[] = { +"10 10 2 1", +"# c #000000", +". c None", +"..........", +"..........", +"..........", +"..........", +"..........", +"..........", +"..........", +".#######..", +".#######..", +".........."}; + +static const char * const qt_normalizeup_xpm[] = { +"10 10 2 1", +"# c #000000", +". c None", +"...######.", +"...######.", +"...#....#.", +".######.#.", +".######.#.", +".#....###.", +".#....#...", +".#....#...", +".######...", +".........."}; + +static const char * const qt_help_xpm[] = { +"10 10 2 1", +". c None", +"# c #000000", +"..........", +"..######..", +".##....##.", +"......##..", +".....##...", +"....##....", +"....##....", +"..........", +"....##....", +".........."}; + +static const char * const qt_shade_xpm[] = { +"10 10 2 1", +"# c #000000", +". c None", +"..........", +"..........", +"..........", +"..........", +"....#.....", +"...###....", +"..#####...", +".#######..", +"..........", +".........."}; + +static const char * const qt_unshade_xpm[] = { +"10 10 2 1", +"# c #000000", +". c None", +"..........", +"..........", +"..........", +".#######..", +"..#####...", +"...###....", +"....#.....", +"..........", +"..........", +".........."}; + +static const char * const dock_widget_close_xpm[] = { +"8 8 2 1", +"# c #000000", +". c None", +"........", +".##..##.", +"..####..", +"...##...", +"..####..", +".##..##.", +"........", +"........"}; + +/* XPM */ +static const char * const information_xpm[]={ +"32 32 5 1", +". c None", +"c c #000000", +"* c #999999", +"a c #ffffff", +"b c #0000ff", +"...........********.............", +"........***aaaaaaaa***..........", +"......**aaaaaaaaaaaaaa**........", +".....*aaaaaaaaaaaaaaaaaa*.......", +"....*aaaaaaaabbbbaaaaaaaac......", +"...*aaaaaaaabbbbbbaaaaaaaac.....", +"..*aaaaaaaaabbbbbbaaaaaaaaac....", +".*aaaaaaaaaaabbbbaaaaaaaaaaac...", +".*aaaaaaaaaaaaaaaaaaaaaaaaaac*..", +"*aaaaaaaaaaaaaaaaaaaaaaaaaaaac*.", +"*aaaaaaaaaabbbbbbbaaaaaaaaaaac*.", +"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**", +"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**", +"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**", +"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**", +"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**", +".*aaaaaaaaaaabbbbbaaaaaaaaaac***", +".*aaaaaaaaaaabbbbbaaaaaaaaaac***", +"..*aaaaaaaaaabbbbbaaaaaaaaac***.", +"...caaaaaaabbbbbbbbbaaaaaac****.", +"....caaaaaaaaaaaaaaaaaaaac****..", +".....caaaaaaaaaaaaaaaaaac****...", +"......ccaaaaaaaaaaaaaacc****....", +".......*cccaaaaaaaaccc*****.....", +"........***cccaaaac*******......", +"..........****caaac*****........", +".............*caaac**...........", +"...............caac**...........", +"................cac**...........", +".................cc**...........", +"..................***...........", +"...................**..........."}; +/* XPM */ +static const char* const warning_xpm[]={ +"32 32 4 1", +". c None", +"a c #ffff00", +"* c #000000", +"b c #999999", +".............***................", +"............*aaa*...............", +"...........*aaaaa*b.............", +"...........*aaaaa*bb............", +"..........*aaaaaaa*bb...........", +"..........*aaaaaaa*bb...........", +".........*aaaaaaaaa*bb..........", +".........*aaaaaaaaa*bb..........", +"........*aaaaaaaaaaa*bb.........", +"........*aaaa***aaaa*bb.........", +".......*aaaa*****aaaa*bb........", +".......*aaaa*****aaaa*bb........", +"......*aaaaa*****aaaaa*bb.......", +"......*aaaaa*****aaaaa*bb.......", +".....*aaaaaa*****aaaaaa*bb......", +".....*aaaaaa*****aaaaaa*bb......", +"....*aaaaaaaa***aaaaaaaa*bb.....", +"....*aaaaaaaa***aaaaaaaa*bb.....", +"...*aaaaaaaaa***aaaaaaaaa*bb....", +"...*aaaaaaaaaa*aaaaaaaaaa*bb....", +"..*aaaaaaaaaaa*aaaaaaaaaaa*bb...", +"..*aaaaaaaaaaaaaaaaaaaaaaa*bb...", +".*aaaaaaaaaaaa**aaaaaaaaaaa*bb..", +".*aaaaaaaaaaa****aaaaaaaaaa*bb..", +"*aaaaaaaaaaaa****aaaaaaaaaaa*bb.", +"*aaaaaaaaaaaaa**aaaaaaaaaaaa*bb.", +"*aaaaaaaaaaaaaaaaaaaaaaaaaaa*bbb", +"*aaaaaaaaaaaaaaaaaaaaaaaaaaa*bbb", +".*aaaaaaaaaaaaaaaaaaaaaaaaa*bbbb", +"..*************************bbbbb", +"....bbbbbbbbbbbbbbbbbbbbbbbbbbb.", +".....bbbbbbbbbbbbbbbbbbbbbbbbb.."}; +/* XPM */ +static const char* const critical_xpm[]={ +"32 32 4 1", +". c None", +"a c #999999", +"* c #ff0000", +"b c #ffffff", +"...........********.............", +".........************...........", +".......****************.........", +"......******************........", +".....********************a......", +"....**********************a.....", +"...************************a....", +"..*******b**********b*******a...", +"..******bbb********bbb******a...", +".******bbbbb******bbbbb******a..", +".*******bbbbb****bbbbb*******a..", +"*********bbbbb**bbbbb*********a.", +"**********bbbbbbbbbb**********a.", +"***********bbbbbbbb***********aa", +"************bbbbbb************aa", +"************bbbbbb************aa", +"***********bbbbbbbb***********aa", +"**********bbbbbbbbbb**********aa", +"*********bbbbb**bbbbb*********aa", +".*******bbbbb****bbbbb*******aa.", +".******bbbbb******bbbbb******aa.", +"..******bbb********bbb******aaa.", +"..*******b**********b*******aa..", +"...************************aaa..", +"....**********************aaa...", +"....a********************aaa....", +".....a******************aaa.....", +"......a****************aaa......", +".......aa************aaaa.......", +".........aa********aaaaa........", +"...........aaaaaaaaaaa..........", +".............aaaaaaa............"}; +/* XPM */ +static const char *const question_xpm[] = { +"32 32 5 1", +". c None", +"c c #000000", +"* c #999999", +"a c #ffffff", +"b c #0000ff", +"...........********.............", +"........***aaaaaaaa***..........", +"......**aaaaaaaaaaaaaa**........", +".....*aaaaaaaaaaaaaaaaaa*.......", +"....*aaaaaaaaaaaaaaaaaaaac......", +"...*aaaaaaaabbbbbbaaaaaaaac.....", +"..*aaaaaaaabaaabbbbaaaaaaaac....", +".*aaaaaaaabbaaaabbbbaaaaaaaac...", +".*aaaaaaaabbbbaabbbbaaaaaaaac*..", +"*aaaaaaaaabbbbaabbbbaaaaaaaaac*.", +"*aaaaaaaaaabbaabbbbaaaaaaaaaac*.", +"*aaaaaaaaaaaaabbbbaaaaaaaaaaac**", +"*aaaaaaaaaaaaabbbaaaaaaaaaaaac**", +"*aaaaaaaaaaaaabbaaaaaaaaaaaaac**", +"*aaaaaaaaaaaaabbaaaaaaaaaaaaac**", +"*aaaaaaaaaaaaaaaaaaaaaaaaaaaac**", +".*aaaaaaaaaaaabbaaaaaaaaaaaac***", +".*aaaaaaaaaaabbbbaaaaaaaaaaac***", +"..*aaaaaaaaaabbbbaaaaaaaaaac***.", +"...caaaaaaaaaabbaaaaaaaaaac****.", +"....caaaaaaaaaaaaaaaaaaaac****..", +".....caaaaaaaaaaaaaaaaaac****...", +"......ccaaaaaaaaaaaaaacc****....", +".......*cccaaaaaaaaccc*****.....", +"........***cccaaaac*******......", +"..........****caaac*****........", +".............*caaac**...........", +"...............caac**...........", +"................cac**...........", +".................cc**...........", +"..................***...........", +"...................**..........."}; + +#endif //QT_NO_IMAGEFORMAT_XPM diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcompleter_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcompleter_p.h new file mode 100644 index 000000000..5b89f9d8b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qcompleter_p.h @@ -0,0 +1,264 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMPLETER_P_H +#define QCOMPLETER_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qobject_p.h" + +#include "QtWidgets/qabstractitemview.h" +#include "QtCore/qabstractproxymodel.h" +#include "qcompleter.h" +#include "QtWidgets/qitemdelegate.h" +#include "QtGui/qpainter.h" +#include "private/qabstractproxymodel_p.h" + +QT_REQUIRE_CONFIG(completer); + +QT_BEGIN_NAMESPACE + +class QCompletionModel; + +class QCompleterPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QCompleter) + +public: + QCompleterPrivate(); + ~QCompleterPrivate() { delete popup; } + void init(QAbstractItemModel *model = 0); + + QPointer<QWidget> widget; + QCompletionModel *proxy; + QAbstractItemView *popup; + QCompleter::CompletionMode mode; + Qt::MatchFlags filterMode; + + QString prefix; + Qt::CaseSensitivity cs; + int role; + int column; + int maxVisibleItems; + QCompleter::ModelSorting sorting; + bool wrap; + + bool eatFocusOut; + QRect popupRect; + bool hiddenBecauseNoMatch; + + void showPopup(const QRect&); + void _q_complete(QModelIndex, bool = false); + void _q_completionSelected(const QItemSelection&); + void _q_autoResizePopup(); + void _q_fileSystemModelDirectoryLoaded(const QString &path); + void setCurrentIndex(QModelIndex, bool = true); + + static QCompleterPrivate *get(QCompleter *o) { return o->d_func(); } + static const QCompleterPrivate *get(const QCompleter *o) { return o->d_func(); } +}; + +class QIndexMapper +{ +public: + QIndexMapper() : v(false), f(0), t(-1) { } + QIndexMapper(int f, int t) : v(false), f(f), t(t) { } + QIndexMapper(const QVector<int> &vec) : v(true), vector(vec), f(-1), t(-1) { } + + inline int count() const { return v ? vector.count() : t - f + 1; } + inline int operator[] (int index) const { return v ? vector[index] : f + index; } + inline int indexOf(int x) const { return v ? vector.indexOf(x) : ((t < f) ? -1 : x - f); } + inline bool isValid() const { return !isEmpty(); } + inline bool isEmpty() const { return v ? vector.isEmpty() : (t < f); } + inline void append(int x) { Q_ASSERT(v); vector.append(x); } + inline int first() const { return v ? vector.first() : f; } + inline int last() const { return v ? vector.last() : t; } + inline int from() const { Q_ASSERT(!v); return f; } + inline int to() const { Q_ASSERT(!v); return t; } + inline int cost() const { return vector.count()+2; } + +private: + bool v; + QVector<int> vector; + int f, t; +}; + +struct QMatchData { + QMatchData() : exactMatchIndex(-1), partial(false) { } + QMatchData(const QIndexMapper& indices, int em, bool p) : + indices(indices), exactMatchIndex(em), partial(p) { } + QIndexMapper indices; + inline bool isValid() const { return indices.isValid(); } + int exactMatchIndex; + bool partial; +}; + +class QCompletionEngine +{ +public: + typedef QMap<QString, QMatchData> CacheItem; + typedef QMap<QModelIndex, CacheItem> Cache; + + QCompletionEngine(QCompleterPrivate *c) : c(c), curRow(-1), cost(0) { } + virtual ~QCompletionEngine() { } + + void filter(const QStringList &parts); + + QMatchData filterHistory(); + bool matchHint(QString, const QModelIndex&, QMatchData*); + + void saveInCache(QString, const QModelIndex&, const QMatchData&); + bool lookupCache(QString part, const QModelIndex& parent, QMatchData *m); + + virtual void filterOnDemand(int) { } + virtual QMatchData filter(const QString&, const QModelIndex&, int) = 0; + + int matchCount() const { return curMatch.indices.count() + historyMatch.indices.count(); } + + QMatchData curMatch, historyMatch; + QCompleterPrivate *c; + QStringList curParts; + QModelIndex curParent; + int curRow; + + Cache cache; + int cost; +}; + +class QSortedModelEngine : public QCompletionEngine +{ +public: + QSortedModelEngine(QCompleterPrivate *c) : QCompletionEngine(c) { } + QMatchData filter(const QString&, const QModelIndex&, int) Q_DECL_OVERRIDE; + QIndexMapper indexHint(QString, const QModelIndex&, Qt::SortOrder); + Qt::SortOrder sortOrder(const QModelIndex&) const; +}; + +class QUnsortedModelEngine : public QCompletionEngine +{ +public: + QUnsortedModelEngine(QCompleterPrivate *c) : QCompletionEngine(c) { } + + void filterOnDemand(int) Q_DECL_OVERRIDE; + QMatchData filter(const QString&, const QModelIndex&, int) Q_DECL_OVERRIDE; +private: + int buildIndices(const QString& str, const QModelIndex& parent, int n, + const QIndexMapper& iv, QMatchData* m); +}; + +class QCompleterItemDelegate : public QItemDelegate +{ +public: + QCompleterItemDelegate(QAbstractItemView *view) + : QItemDelegate(view), view(view) { } + void paint(QPainter *p, const QStyleOptionViewItem& opt, const QModelIndex& idx) const Q_DECL_OVERRIDE { + QStyleOptionViewItem optCopy = opt; + optCopy.showDecorationSelected = true; + if (view->currentIndex() == idx) + optCopy.state |= QStyle::State_HasFocus; + QItemDelegate::paint(p, optCopy, idx); + } + +private: + QAbstractItemView *view; +}; + +class QCompletionModelPrivate; + +class QCompletionModel : public QAbstractProxyModel +{ + Q_OBJECT + +public: + QCompletionModel(QCompleterPrivate *c, QObject *parent); + + void createEngine(); + void setFiltered(bool); + void filter(const QStringList& parts); + int completionCount() const; + int currentRow() const { return engine->curRow; } + bool setCurrentRow(int row); + QModelIndex currentIndex(bool) const; + + QModelIndex index(int row, int column, const QModelIndex & = QModelIndex()) const Q_DECL_OVERRIDE; + int rowCount(const QModelIndex &index = QModelIndex()) const Q_DECL_OVERRIDE; + int columnCount(const QModelIndex &index = QModelIndex()) const Q_DECL_OVERRIDE; + bool hasChildren(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex parent(const QModelIndex & = QModelIndex()) const Q_DECL_OVERRIDE { return QModelIndex(); } + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + + void setSourceModel(QAbstractItemModel *sourceModel) Q_DECL_OVERRIDE; + QModelIndex mapToSource(const QModelIndex& proxyIndex) const Q_DECL_OVERRIDE; + QModelIndex mapFromSource(const QModelIndex& sourceIndex) const Q_DECL_OVERRIDE; + + QCompleterPrivate *c; + QScopedPointer<QCompletionEngine> engine; + bool showAll; + + Q_DECLARE_PRIVATE(QCompletionModel) + +signals: + void rowsAdded(); + +public Q_SLOTS: + void invalidate(); + void rowsInserted(); + void modelDestroyed(); +}; + +class QCompletionModelPrivate : public QAbstractProxyModelPrivate +{ + Q_DECLARE_PUBLIC(QCompletionModel) +}; + +QT_END_NAMESPACE + +#endif // QCOMPLETER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdatetimeedit_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdatetimeedit_p.h new file mode 100644 index 000000000..5ac5a9db6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdatetimeedit_p.h @@ -0,0 +1,181 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDATETIMEEDIT_P_H +#define QDATETIMEEDIT_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qcalendarwidget.h" +#include "QtWidgets/qspinbox.h" +#include "QtWidgets/qtoolbutton.h" +#include "QtWidgets/qmenu.h" +#include "QtWidgets/qdatetimeedit.h" +#include "private/qabstractspinbox_p.h" +#include "private/qdatetimeparser_p.h" + +#include "qdebug.h" + +QT_BEGIN_NAMESPACE + +class QCalendarPopup; +class Q_AUTOTEST_EXPORT QDateTimeEditPrivate : public QAbstractSpinBoxPrivate, public QDateTimeParser +{ + Q_DECLARE_PUBLIC(QDateTimeEdit) +public: + QDateTimeEditPrivate(); + ~QDateTimeEditPrivate(); + + void init(const QVariant &var); + void readLocaleSettings(); + + QDateTime validateAndInterpret(QString &input, int &, QValidator::State &state, + bool fixup = false) const; + void clearSection(int index); + + // Override QAbstractSpinBoxPrivate: + void emitSignals(EmitPolicy ep, const QVariant &old) Q_DECL_OVERRIDE; + QString textFromValue(const QVariant &f) const Q_DECL_OVERRIDE; + QVariant valueFromText(const QString &f) const Q_DECL_OVERRIDE; + void _q_editorCursorPositionChanged(int oldpos, int newpos) Q_DECL_OVERRIDE; + void interpret(EmitPolicy ep) Q_DECL_OVERRIDE; + void clearCache() const Q_DECL_OVERRIDE; + QStyle::SubControl newHoverControl(const QPoint &pos) Q_DECL_OVERRIDE; + void updateEditFieldGeometry() Q_DECL_OVERRIDE; + QVariant getZeroVariant() const Q_DECL_OVERRIDE; + void setRange(const QVariant &min, const QVariant &max) Q_DECL_OVERRIDE; + void updateEdit() Q_DECL_OVERRIDE; + + // Override QDateTimeParser: + QString displayText() const Q_DECL_OVERRIDE { return edit->text(); } + QDateTime getMinimum() const Q_DECL_OVERRIDE { return minimum.toDateTime(); } + QDateTime getMaximum() const Q_DECL_OVERRIDE { return maximum.toDateTime(); } + QLocale locale() const Q_DECL_OVERRIDE { return q_func()->locale(); } + QString getAmPmText(AmPm ap, Case cs) const Q_DECL_OVERRIDE; + int cursorPosition() const Q_DECL_OVERRIDE { return edit ? edit->cursorPosition() : -1; } + + int absoluteIndex(QDateTimeEdit::Section s, int index) const; + int absoluteIndex(const SectionNode &s) const; + QDateTime stepBy(int index, int steps, bool test = false) const; + int sectionAt(int pos) const; + int closestSection(int index, bool forward) const; + int nextPrevSection(int index, bool forward) const; + void setSelected(int index, bool forward = false); + + void updateCache(const QVariant &val, const QString &str) const; + + void updateTimeSpec(); + QString valueToText(const QVariant &var) const { return textFromValue(var); } + + void _q_resetButton(); + void updateArrow(QStyle::StateFlag state); + bool calendarPopupEnabled() const; + void syncCalendarWidget(); + + bool isSeparatorKey(const QKeyEvent *k) const; + + static QDateTimeEdit::Sections convertSections(QDateTimeParser::Sections s); + static QDateTimeEdit::Section convertToPublic(QDateTimeParser::Section s); + + void initCalendarPopup(QCalendarWidget *cw = 0); + void positionCalendarPopup(); + + QDateTimeEdit::Sections sections; + mutable bool cacheGuard; + + QString defaultDateFormat, defaultTimeFormat, defaultDateTimeFormat, unreversedFormat; + mutable QVariant conflictGuard; + bool hasHadFocus, formatExplicitlySet, calendarPopup; + QStyle::StateFlag arrowState; + QCalendarPopup *monthCalendar; + +#ifdef QT_KEYPAD_NAVIGATION + bool focusOnButton; +#endif +}; + + +class QCalendarPopup : public QWidget +{ + Q_OBJECT +public: + explicit QCalendarPopup(QWidget *parent = 0, QCalendarWidget *cw = 0); + QDate selectedDate() { return verifyCalendarInstance()->selectedDate(); } + void setDate(const QDate &date); + void setDateRange(const QDate &min, const QDate &max); + void setFirstDayOfWeek(Qt::DayOfWeek dow) { verifyCalendarInstance()->setFirstDayOfWeek(dow); } + QCalendarWidget *calendarWidget() const { return const_cast<QCalendarPopup*>(this)->verifyCalendarInstance(); } + void setCalendarWidget(QCalendarWidget *cw); +Q_SIGNALS: + void activated(const QDate &date); + void newDateSelected(const QDate &newDate); + void hidingCalendar(const QDate &oldDate); + void resetButton(); + +private Q_SLOTS: + void dateSelected(const QDate &date); + void dateSelectionChanged(); + +protected: + void hideEvent(QHideEvent *) override; + void mousePressEvent(QMouseEvent *e) override; + void mouseReleaseEvent(QMouseEvent *) override; + bool event(QEvent *e) override; + +private: + QCalendarWidget *verifyCalendarInstance(); + + QPointer<QCalendarWidget> calendar; + QDate oldDate; + bool dateChanged; +}; + +QT_END_NAMESPACE + +#endif // QDATETIMEEDIT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdesktopwidget_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdesktopwidget_p.h new file mode 100644 index 000000000..dade4fe45 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdesktopwidget_p.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#ifndef QDESKTOPWIDGET_P_H +#define QDESKTOPWIDGET_P_H + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QDesktopWidget" +#include "private/qwidget_p.h" + +#include <QtCore/qalgorithms.h> +#include <QtGui/qscreen.h> + +QT_BEGIN_NAMESPACE + +class QDesktopScreenWidget : public QWidget { + Q_OBJECT +public: + explicit QDesktopScreenWidget(QScreen *screen, const QRect &geometry); + + int screenNumber() const; + void setScreenGeometry(const QRect &geometry); + + QScreen *screen() const { return m_screen.data(); } + QRect screenGeometry() const { return m_geometry; } + +private: + // The widget updates its screen and geometry automatically. We need to save them separately + // to detect changes, and trigger the appropriate signals. + const QPointer<QScreen> m_screen; + QRect m_geometry; +}; + +class QDesktopWidgetPrivate : public QWidgetPrivate { + Q_DECLARE_PUBLIC(QDesktopWidget) + +public: + ~QDesktopWidgetPrivate() { qDeleteAll(screens); } + void _q_updateScreens(); + void _q_availableGeometryChanged(); + QDesktopScreenWidget *widgetForScreen(QScreen *qScreen) const; + + QList<QDesktopScreenWidget *> screens; +}; + +QT_END_NAMESPACE + +#endif // QDESKTOPWIDGET_QPA_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdialog_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdialog_p.h new file mode 100644 index 000000000..2ed414bd4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdialog_p.h @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDIALOG_P_H +#define QDIALOG_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qwidget_p.h" +#include "QtCore/qeventloop.h" +#include "QtCore/qpointer.h" +#include "QtWidgets/qdialog.h" +#if QT_CONFIG(pushbutton) +#include "QtWidgets/qpushbutton.h" +#endif +#include <qpa/qplatformdialoghelper.h> + +QT_REQUIRE_CONFIG(dialog); + +QT_BEGIN_NAMESPACE + +class QSizeGrip; + +class Q_WIDGETS_EXPORT QDialogPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QDialog) +public: + + QDialogPrivate() + : +#if QT_CONFIG(pushbutton) + mainDef(0), +#endif + orientation(Qt::Horizontal),extension(0), doShowExtension(false), +#if QT_CONFIG(sizegrip) + resizer(0), + sizeGripEnabled(false), +#endif + rescode(0), resetModalityTo(-1), wasModalitySet(true), eventLoop(0), + nativeDialogInUse(false), m_platformHelper(0), m_platformHelperCreated(false) + {} + ~QDialogPrivate(); + + QWindow *parentWindow() const; + bool setNativeDialogVisible(bool visible); + QVariant styleHint(QPlatformDialogHelper::StyleHint hint) const; + void deletePlatformHelper(); + +#if QT_CONFIG(pushbutton) + QPointer<QPushButton> mainDef; +#endif + Qt::Orientation orientation; + QWidget *extension; + bool doShowExtension; + QSize size, min, max; +#if QT_CONFIG(sizegrip) + QSizeGrip *resizer; + bool sizeGripEnabled; +#endif + QPoint lastRMBPress; + +#if QT_CONFIG(pushbutton) + void setDefault(QPushButton *); + void setMainDefault(QPushButton *); + void hideDefault(); +#endif + void resetModalitySetByOpen(); + + int rescode; + int resetModalityTo; + bool wasModalitySet; + + QPointer<QEventLoop> eventLoop; + + bool nativeDialogInUse; + QPlatformDialogHelper *platformHelper() const; + virtual bool canBeNativeDialog() const; + +private: + virtual void initHelper(QPlatformDialogHelper *) {} + virtual void helperPrepareShow(QPlatformDialogHelper *) {} + virtual void helperDone(QDialog::DialogCode, QPlatformDialogHelper *) {} + + mutable QPlatformDialogHelper *m_platformHelper; + mutable bool m_platformHelperCreated; +}; + +template <typename T> +class QAutoPointer { + QPointer<T> o; + struct internal { void func() {} }; + typedef void (internal::*RestrictedBool)(); +public: + explicit QAutoPointer(T *t) Q_DECL_NOTHROW : o(t) {} + ~QAutoPointer() { delete o; } + + T *operator->() const Q_DECL_NOTHROW { return get(); } + T *get() const Q_DECL_NOTHROW { return o; } + T &operator*() const { return *get(); } + operator RestrictedBool() const Q_DECL_NOTHROW { return o ? &internal::func : Q_NULLPTR; } + bool operator!() const Q_DECL_NOTHROW { return !o; } +private: + Q_DISABLE_COPY(QAutoPointer); +}; + +QT_END_NAMESPACE + +#endif // QDIALOG_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdockarealayout_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdockarealayout_p.h new file mode 100644 index 000000000..82244c192 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdockarealayout_p.h @@ -0,0 +1,311 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDOCKAREALAYOUT_P_H +#define QDOCKAREALAYOUT_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtCore/qrect.h" +#include "QtCore/qpair.h" +#include "QtCore/qlist.h" +#include "QtCore/qvector.h" +#include "QtWidgets/qlayout.h" + +QT_REQUIRE_CONFIG(dockwidget); + +QT_BEGIN_NAMESPACE + +class QLayoutItem; +class QWidget; +class QLayoutItem; +class QDockAreaLayoutInfo; +class QPlaceHolderItem; +class QDockWidget; +class QMainWindow; +class QWidgetAnimator; +class QMainWindowLayout; +struct QLayoutStruct; +class QTabBar; + +// The classes in this file represent the tree structure that represents all the docks +// Also see the wiki internal documentation +// At the root of the tree is: QDockAreaLayout, which handles all 4 sides, so there is only one. +// For each side it has one QDockAreaLayoutInfo child. (See QDockAreaLayout::docks.) +// The QDockAreaLayoutInfo have QDockAreaLayoutItems as children (See QDockAreaLayoutInfo::item_list), +// which then has one QDockAreaLayoutInfo as a child. (QDockAreaLayoutItem::subInfo) or +// a widgetItem if this is a node of the tree (QDockAreaLayoutItem::widgetItem) +// +// A path indetifies uniquely one object in this tree, the first number being the side and all the following +// indexes into the QDockAreaLayoutInfo::item_list. + +struct QDockAreaLayoutItem +{ + enum ItemFlags { NoFlags = 0, GapItem = 1, KeepSize = 2 }; + + explicit QDockAreaLayoutItem(QLayoutItem *_widgetItem = 0); + explicit QDockAreaLayoutItem(QDockAreaLayoutInfo *_subinfo); + explicit QDockAreaLayoutItem(QPlaceHolderItem *_placeHolderItem); + QDockAreaLayoutItem(const QDockAreaLayoutItem &other); + ~QDockAreaLayoutItem(); + + QDockAreaLayoutItem &operator = (const QDockAreaLayoutItem &other); + + bool skip() const; + QSize minimumSize() const; + QSize maximumSize() const; + QSize sizeHint() const; + bool expansive(Qt::Orientation o) const; + bool hasFixedSize(Qt::Orientation o) const; + + QLayoutItem *widgetItem; + QDockAreaLayoutInfo *subinfo; + QPlaceHolderItem *placeHolderItem; + int pos; + int size; + uint flags; +}; + +class Q_AUTOTEST_EXPORT QPlaceHolderItem +{ +public: + QPlaceHolderItem() : hidden(false), window(false) {} + explicit QPlaceHolderItem(QWidget *w); + + QString objectName; + bool hidden, window; + QRect topLevelRect; +}; + +class Q_AUTOTEST_EXPORT QDockAreaLayoutInfo +{ +public: + QDockAreaLayoutInfo(); + QDockAreaLayoutInfo(const int *_sep, QInternal::DockPosition _dockPos, Qt::Orientation _o, + int tbhape, QMainWindow *window); + + QSize minimumSize() const; + QSize maximumSize() const; + QSize sizeHint() const; + QSize size() const; + + bool insertGap(const QList<int> &path, QLayoutItem *dockWidgetItem); + QLayoutItem *plug(const QList<int> &path); + QLayoutItem *unplug(const QList<int> &path); + enum TabMode { NoTabs, AllowTabs, ForceTabs }; + QList<int> gapIndex(const QPoint &pos, bool nestingEnabled, + TabMode tabMode) const; + void remove(const QList<int> &path); + void unnest(int index); + void split(int index, Qt::Orientation orientation, QLayoutItem *dockWidgetItem); + void tab(int index, QLayoutItem *dockWidgetItem); + QDockAreaLayoutItem &item(const QList<int> &path); + QDockAreaLayoutInfo *info(const QList<int> &path); + QDockAreaLayoutInfo *info(QWidget *widget); + + enum { // sentinel values used to validate state data + SequenceMarker = 0xfc, + TabMarker = 0xfa, + WidgetMarker = 0xfb + }; + void saveState(QDataStream &stream) const; + bool restoreState(QDataStream &stream, QList<QDockWidget*> &widgets, bool testing); + + void fitItems(); + bool expansive(Qt::Orientation o) const; + int changeSize(int index, int size, bool below); + QRect itemRect(int index) const; + QRect itemRect(const QList<int> &path) const; + QRect separatorRect(int index) const; + QRect separatorRect(const QList<int> &path) const; + + void clear(); + bool isEmpty() const; + bool onlyHasPlaceholders() const; + bool hasFixedSize() const; + QList<int> findSeparator(const QPoint &pos) const; + int next(int idx) const; + int prev(int idx) const; + + QList<int> indexOf(QWidget *widget) const; + QList<int> indexOfPlaceHolder(const QString &objectName) const; + + QDockWidget *apply(bool animate); + + void paintSeparators(QPainter *p, QWidget *widget, const QRegion &clip, + const QPoint &mouse) const; + QRegion separatorRegion() const; + int separatorMove(int index, int delta); + + QLayoutItem *itemAt(int *x, int index) const; + QLayoutItem *takeAt(int *x, int index); + void deleteAllLayoutItems(); + + QMainWindowLayout *mainWindowLayout() const; + + const int *sep; + mutable QVector<QWidget*> separatorWidgets; + QInternal::DockPosition dockPos; + Qt::Orientation o; + QRect rect; + QMainWindow *mainWindow; + QList<QDockAreaLayoutItem> item_list; +#if QT_CONFIG(tabbar) + void updateSeparatorWidgets() const; + QSet<QWidget*> usedSeparatorWidgets() const; + + quintptr currentTabId() const; + void setCurrentTab(QWidget *widget); + void setCurrentTabId(quintptr id); + QRect tabContentRect() const; + bool tabbed; + QTabBar *tabBar; + int tabBarShape; + + void reparentWidgets(QWidget *p); + bool updateTabBar() const; + void setTabBarShape(int shape); + QSize tabBarMinimumSize() const; + QSize tabBarSizeHint() const; + + QSet<QTabBar*> usedTabBars() const; + + int tabIndexToListIndex(int) const; + void moveTab(int from, int to); +#endif // QT_CONFIG(tabbar) +}; + +class Q_AUTOTEST_EXPORT QDockAreaLayout +{ +public: + enum { EmptyDropAreaSize = 80 }; // when a dock area is empty, how "wide" is it? + + Qt::DockWidgetArea corners[4]; // use a Qt::Corner for indexing + QRect rect; + QLayoutItem *centralWidgetItem; + QMainWindow *mainWindow; + QRect centralWidgetRect; + QDockAreaLayout(QMainWindow *win); + QDockAreaLayoutInfo docks[4]; + int sep; // separator extent + bool fallbackToSizeHints; //determines if we should use the sizehint for the dock areas (true until the layout is restored or the separator is moved by user) + mutable QVector<QWidget*> separatorWidgets; + + bool isValid() const; + + enum { DockWidgetStateMarker = 0xfd, FloatingDockWidgetTabMarker = 0xf9 }; + static QRect constrainedRect(QRect rect, QWidget *widget); + void saveState(QDataStream &stream) const; + bool restoreState(QDataStream &stream, const QList<QDockWidget*> &widgets, bool testing = false); + + QList<int> indexOfPlaceHolder(const QString &objectName) const; + QList<int> indexOf(QWidget *dockWidget) const; + QList<int> gapIndex(const QPoint &pos) const; + QList<int> findSeparator(const QPoint &pos) const; + + QDockAreaLayoutItem &item(const QList<int> &path); + QDockAreaLayoutInfo *info(const QList<int> &path); + const QDockAreaLayoutInfo *info(const QList<int> &path) const; + QDockAreaLayoutInfo *info(QWidget *widget); + QRect itemRect(const QList<int> &path) const; + QRect separatorRect(int index) const; + QRect separatorRect(const QList<int> &path) const; + + bool insertGap(const QList<int> &path, QLayoutItem *dockWidgetItem); + QLayoutItem *plug(const QList<int> &path); + QLayoutItem *unplug(const QList<int> &path); + void remove(const QList<int> &path); + void removePlaceHolder(const QString &name); + + void fitLayout(); + + void clear(); + + QSize sizeHint() const; + QSize minimumSize() const; + + void addDockWidget(QInternal::DockPosition pos, QDockWidget *dockWidget, Qt::Orientation orientation); + bool restoreDockWidget(QDockWidget *dockWidget); + void splitDockWidget(QDockWidget *after, QDockWidget *dockWidget, + Qt::Orientation orientation); + void tabifyDockWidget(QDockWidget *first, QDockWidget *second); + void resizeDocks(const QList<QDockWidget *> &docks, const QList<int> &sizes, Qt::Orientation o); + + void apply(bool animate); + + void paintSeparators(QPainter *p, QWidget *widget, const QRegion &clip, + const QPoint &mouse) const; + QRegion separatorRegion() const; + int separatorMove(const QList<int> &separator, const QPoint &origin, const QPoint &dest); +#if QT_CONFIG(tabbar) + void updateSeparatorWidgets() const; +#endif // QT_CONFIG(tabbar) + + QLayoutItem *itemAt(int *x, int index) const; + QLayoutItem *takeAt(int *x, int index); + void deleteAllLayoutItems(); + + void getGrid(QVector<QLayoutStruct> *ver_struct_list, + QVector<QLayoutStruct> *hor_struct_list); + void setGrid(QVector<QLayoutStruct> *ver_struct_list, + QVector<QLayoutStruct> *hor_struct_list); + + QRect gapRect(const QList<int> &path) const; + + void keepSize(QDockWidget *w); +#if QT_CONFIG(tabbar) + QSet<QTabBar*> usedTabBars() const; + QSet<QWidget*> usedSeparatorWidgets() const; +#endif // QT_CONFIG(tabbar) + void styleChangedEvent(); +}; + +QT_END_NAMESPACE + +#endif // QDOCKAREALAYOUT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdockwidget_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdockwidget_p.h new file mode 100644 index 000000000..2c16176c3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qdockwidget_p.h @@ -0,0 +1,207 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDYNAMICDOCKWIDGET_P_H +#define QDYNAMICDOCKWIDGET_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qstyleoption.h" +#include "private/qwidget_p.h" +#include "QtWidgets/qboxlayout.h" +#include "QtWidgets/qdockwidget.h" + +QT_REQUIRE_CONFIG(dockwidget); + +QT_BEGIN_NAMESPACE + +class QGridLayout; +class QWidgetResizeHandler; +class QDockWidgetTitleButton; +class QSpacerItem; +class QDockWidgetItem; + +class QDockWidgetPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QDockWidget) + + struct DragState { + QPoint pressPos; + bool dragging; + QLayoutItem *widgetItem; + bool ownWidgetItem; + bool nca; + bool ctrlDrag; + }; + +public: + inline QDockWidgetPrivate() + : QWidgetPrivate(), state(0), + features(QDockWidget::DockWidgetClosable + | QDockWidget::DockWidgetMovable + | QDockWidget::DockWidgetFloatable), + allowedAreas(Qt::AllDockWidgetAreas), resizer(0) + { } + + void init(); + void _q_toggleView(bool); // private slot + void _q_toggleTopLevel(); // private slot + + void updateButtons(); + DragState *state; + + QDockWidget::DockWidgetFeatures features; + Qt::DockWidgetAreas allowedAreas; + +#ifndef QT_NO_ACTION + QAction *toggleViewAction; +#endif + +// QMainWindow *findMainWindow(QWidget *widget) const; + QRect undockedGeometry; + QString fixedWindowTitle; + + bool mousePressEvent(QMouseEvent *event); + bool mouseDoubleClickEvent(QMouseEvent *event); + bool mouseMoveEvent(QMouseEvent *event); + bool mouseReleaseEvent(QMouseEvent *event); + void setWindowState(bool floating, bool unplug = false, const QRect &rect = QRect()); + void nonClientAreaMouseEvent(QMouseEvent *event); + void initDrag(const QPoint &pos, bool nca); + void startDrag(bool group = true); + void endDrag(bool abort = false); + void moveEvent(QMoveEvent *event); + void recalculatePressPos(QResizeEvent *event); + + void unplug(const QRect &rect); + void plug(const QRect &rect); + void setResizerActive(bool active); + + bool isAnimating() const; + +private: + QWidgetResizeHandler *resizer; +}; + +class Q_WIDGETS_EXPORT QDockWidgetLayout : public QLayout +{ + Q_OBJECT +public: + QDockWidgetLayout(QWidget *parent = 0); + ~QDockWidgetLayout(); + void addItem(QLayoutItem *item) Q_DECL_OVERRIDE; + QLayoutItem *itemAt(int index) const Q_DECL_OVERRIDE; + QLayoutItem *takeAt(int index) Q_DECL_OVERRIDE; + int count() const Q_DECL_OVERRIDE; + + QSize maximumSize() const Q_DECL_OVERRIDE; + QSize minimumSize() const Q_DECL_OVERRIDE; + QSize sizeHint() const Q_DECL_OVERRIDE; + + QSize sizeFromContent(const QSize &content, bool floating) const; + + void setGeometry(const QRect &r) Q_DECL_OVERRIDE; + + enum Role { Content, CloseButton, FloatButton, TitleBar, RoleCount }; + QWidget *widgetForRole(Role r) const; + void setWidgetForRole(Role r, QWidget *w); + QLayoutItem *itemForRole(Role r) const; + + QRect titleArea() const { return _titleArea; } + + int minimumTitleWidth() const; + int titleHeight() const; + void updateMaxSize(); + static bool wmSupportsNativeWindowDeco(); + bool nativeWindowDeco() const; + bool nativeWindowDeco(bool floating) const; + + void setVerticalTitleBar(bool b); + + bool verticalTitleBar; + +private: + QVector<QLayoutItem*> item_list; + QRect _titleArea; +}; + +/* The size hints of a QDockWidget will depend on whether it is docked or not. + This layout item always returns the size hints as if the dock widget was docked. */ + +class QDockWidgetItem : public QWidgetItem +{ +public: + QDockWidgetItem(QDockWidget *dockWidget); + QSize minimumSize() const Q_DECL_OVERRIDE; + QSize maximumSize() const Q_DECL_OVERRIDE; + QSize sizeHint() const Q_DECL_OVERRIDE; + +private: + inline QLayoutItem *dockWidgetChildItem() const; + inline QDockWidgetLayout *dockWidgetLayout() const; +}; + +inline QLayoutItem *QDockWidgetItem::dockWidgetChildItem() const +{ + if (QDockWidgetLayout *layout = dockWidgetLayout()) + return layout->itemForRole(QDockWidgetLayout::Content); + return 0; +} + +inline QDockWidgetLayout *QDockWidgetItem::dockWidgetLayout() const +{ + QWidget *w = const_cast<QDockWidgetItem*>(this)->widget(); + if (w != 0) + return qobject_cast<QDockWidgetLayout*>(w->layout()); + return 0; +} + +QT_END_NAMESPACE + +#endif // QDYNAMICDOCKWIDGET_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qeffects_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qeffects_p.h new file mode 100644 index 000000000..92f459651 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qeffects_p.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEFFECTS_P_H +#define QEFFECTS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qeffects.cpp, qcombobox.cpp, qpopupmenu.cpp and qtooltip.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// + +#include "QtCore/qnamespace.h" +#include <QtWidgets/private/qtwidgetsglobal_p.h> + +QT_REQUIRE_CONFIG(effects); + +QT_BEGIN_NAMESPACE + +class QWidget; + +struct QEffects +{ + enum Direction { + LeftScroll = 0x0001, + RightScroll = 0x0002, + UpScroll = 0x0004, + DownScroll = 0x0008 + }; + + typedef uint DirFlags; +}; + +extern void Q_WIDGETS_EXPORT qScrollEffect(QWidget*, QEffects::DirFlags dir = QEffects::DownScroll, int time = -1); +extern void Q_WIDGETS_EXPORT qFadeEffect(QWidget*, int time = -1); + +QT_END_NAMESPACE + +#endif // QEFFECTS_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfiledialog_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfiledialog_p.h new file mode 100644 index 000000000..371826ecc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfiledialog_p.h @@ -0,0 +1,439 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILEDIALOG_P_H +#define QFILEDIALOG_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 <QtWidgets/private/qtwidgetsglobal_p.h> + +#include "qfiledialog.h" +#include "private/qdialog_p.h" +#include "qplatformdefs.h" + +#include "qfilesystemmodel_p.h" +#include <qlistview.h> +#include <qtreeview.h> +#include <qcombobox.h> +#include <qtoolbutton.h> +#include <qlabel.h> +#include <qevent.h> +#include <qlineedit.h> +#include <qurl.h> +#include <qstackedwidget.h> +#include <qdialogbuttonbox.h> +#include <qabstractproxymodel.h> +#if QT_CONFIG(completer) +#include <qcompleter.h> +#endif +#include <qpointer.h> +#include <qdebug.h> +#include "qsidebar_p.h" +#if QT_CONFIG(fscompleter) +#include "qfscompleter_p.h" +#endif + +#if defined (Q_OS_UNIX) +#include <unistd.h> +#endif + +QT_REQUIRE_CONFIG(filedialog); + +QT_BEGIN_NAMESPACE + +class QFileDialogListView; +class QFileDialogTreeView; +class QFileDialogLineEdit; +class QGridLayout; +class QCompleter; +class QHBoxLayout; +class Ui_QFileDialog; +class QPlatformDialogHelper; + +struct QFileDialogArgs +{ + QFileDialogArgs() : parent(0), mode(QFileDialog::AnyFile) {} + + QWidget *parent; + QString caption; + QUrl directory; + QString selection; + QString filter; + QFileDialog::FileMode mode; + QFileDialog::Options options; +}; + +#define UrlRole (Qt::UserRole + 1) + +class Q_WIDGETS_EXPORT QFileDialogPrivate : public QDialogPrivate +{ + Q_DECLARE_PUBLIC(QFileDialog) + +public: + QFileDialogPrivate(); + + QPlatformFileDialogHelper *platformFileDialogHelper() const + { return static_cast<QPlatformFileDialogHelper *>(platformHelper()); } + + void createToolButtons(); + void createMenuActions(); + void createWidgets(); + + void init(const QUrl &directory = QUrl(), const QString &nameFilter = QString(), + const QString &caption = QString()); + bool itemViewKeyboardEvent(QKeyEvent *event); + QString getEnvironmentVariable(const QString &string); + static QUrl workingDirectory(const QUrl &path); + static QString initialSelection(const QUrl &path); + QStringList typedFiles() const; + QList<QUrl> userSelectedFiles() const; + QStringList addDefaultSuffixToFiles(const QStringList &filesToFix) const; + QList<QUrl> addDefaultSuffixToUrls(const QList<QUrl> &urlsToFix) const; + bool removeDirectory(const QString &path); + void setLabelTextControl(QFileDialog::DialogLabel label, const QString &text); + inline void updateLookInLabel(); + inline void updateFileNameLabel(); + inline void updateFileTypeLabel(); + void updateOkButtonText(bool saveAsOnFolder = false); + void updateCancelButtonText(); + + inline QModelIndex mapToSource(const QModelIndex &index) const; + inline QModelIndex mapFromSource(const QModelIndex &index) const; + inline QModelIndex rootIndex() const; + inline void setRootIndex(const QModelIndex &index) const; + inline QModelIndex select(const QModelIndex &index) const; + inline QString rootPath() const; + + QLineEdit *lineEdit() const; + + static int maxNameLength(const QString &path); + + QString basename(const QString &path) const + { + int separator = QDir::toNativeSeparators(path).lastIndexOf(QDir::separator()); + if (separator != -1) + return path.mid(separator + 1); + return path; + } + + QDir::Filters filterForMode(QDir::Filters filters) const + { + const QFileDialog::FileMode fileMode = q_func()->fileMode(); + if (fileMode == QFileDialog::DirectoryOnly) { + filters |= QDir::Drives | QDir::AllDirs | QDir::Dirs; + filters &= ~QDir::Files; + } else { + filters |= QDir::Drives | QDir::AllDirs | QDir::Files | QDir::Dirs; + } + return filters; + } + + QAbstractItemView *currentView() const; + + static inline QString toInternal(const QString &path) + { +#if defined(Q_OS_WIN) + QString n(path); + n.replace(QLatin1Char('\\'), QLatin1Char('/')); + return n; +#else // the compile should optimize away this + return path; +#endif + } + +#ifndef QT_NO_SETTINGS + void saveSettings(); + bool restoreFromSettings(); +#endif + + bool restoreWidgetState(QStringList &history, int splitterPosition); + static void setLastVisitedDirectory(const QUrl &dir); + void retranslateWindowTitle(); + void retranslateStrings(); + void emitFilesSelected(const QStringList &files); + + void _q_goHome(); + void _q_pathChanged(const QString &); + void _q_navigateBackward(); + void _q_navigateForward(); + void _q_navigateToParent(); + void _q_createDirectory(); + void _q_showListView(); + void _q_showDetailsView(); + void _q_showContextMenu(const QPoint &position); + void _q_renameCurrent(); + void _q_deleteCurrent(); + void _q_showHidden(); + void _q_showHeader(QAction *); + void _q_updateOkButton(); + void _q_currentChanged(const QModelIndex &index); + void _q_enterDirectory(const QModelIndex &index); + void _q_emitUrlSelected(const QUrl &file); + void _q_emitUrlsSelected(const QList<QUrl> &files); + void _q_nativeCurrentChanged(const QUrl &file); + void _q_nativeEnterDirectory(const QUrl &directory); + void _q_goToDirectory(const QString &); + void _q_useNameFilter(int index); + void _q_selectionChanged(); + void _q_goToUrl(const QUrl &url); + void _q_autoCompleteFileName(const QString &); + void _q_rowsInserted(const QModelIndex & parent); + void _q_fileRenamed(const QString &path, const QString &oldName, const QString &newName); + + // layout +#ifndef QT_NO_PROXYMODEL + QAbstractProxyModel *proxyModel; +#endif + + // data + QStringList watching; + QFileSystemModel *model; + +#if QT_CONFIG(fscompleter) + QFSCompleter *completer; +#endif //QT_CONFIG(fscompleter) + + QString setWindowTitle; + + QStringList currentHistory; + int currentHistoryLocation; + + QAction *renameAction; + QAction *deleteAction; + QAction *showHiddenAction; + QAction *newFolderAction; + + bool useDefaultCaption; + + // setVisible_sys returns true if it ends up showing a native + // dialog. Returning false means that a non-native dialog must be + // used instead. + bool canBeNativeDialog() const Q_DECL_OVERRIDE; + inline bool usingWidgets() const; + + inline void setDirectory_sys(const QUrl &directory); + inline QUrl directory_sys() const; + inline void selectFile_sys(const QUrl &filename); + inline QList<QUrl> selectedFiles_sys() const; + inline void setFilter_sys(); + inline void selectMimeTypeFilter_sys(const QString &filter); + inline QString selectedMimeTypeFilter_sys() const; + inline void selectNameFilter_sys(const QString &filter); + inline QString selectedNameFilter_sys() const; + ////////////////////////////////////////////// + + QScopedPointer<Ui_QFileDialog> qFileDialogUi; + + QString acceptLabel; + + QPointer<QObject> receiverToDisconnectOnClose; + QByteArray memberToDisconnectOnClose; + QByteArray signalToDisconnectOnClose; + + QSharedPointer<QFileDialogOptions> options; + + // Memory of what was read from QSettings in restoreState() in case widgets are not used + QByteArray splitterState; + QByteArray headerData; + QList<QUrl> sidebarUrls; + + ~QFileDialogPrivate(); + +private: + virtual void initHelper(QPlatformDialogHelper *) Q_DECL_OVERRIDE; + virtual void helperPrepareShow(QPlatformDialogHelper *) Q_DECL_OVERRIDE; + virtual void helperDone(QDialog::DialogCode, QPlatformDialogHelper *) Q_DECL_OVERRIDE; + + Q_DISABLE_COPY(QFileDialogPrivate) +}; + +class QFileDialogLineEdit : public QLineEdit +{ +public: + QFileDialogLineEdit(QWidget *parent = 0) : QLineEdit(parent), d_ptr(0){} + void setFileDialogPrivate(QFileDialogPrivate *d_pointer) {d_ptr = d_pointer; } + void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + bool hideOnEsc; +private: + QFileDialogPrivate *d_ptr; +}; + +class QFileDialogComboBox : public QComboBox +{ +public: + QFileDialogComboBox(QWidget *parent = 0) : QComboBox(parent), urlModel(0) {} + void setFileDialogPrivate(QFileDialogPrivate *d_pointer); + void showPopup() Q_DECL_OVERRIDE; + void setHistory(const QStringList &paths); + QStringList history() const { return m_history; } + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + +private: + QUrlModel *urlModel; + QFileDialogPrivate *d_ptr; + QStringList m_history; +}; + +class QFileDialogListView : public QListView +{ +public: + QFileDialogListView(QWidget *parent = 0); + void setFileDialogPrivate(QFileDialogPrivate *d_pointer); + QSize sizeHint() const Q_DECL_OVERRIDE; +protected: + void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; +private: + QFileDialogPrivate *d_ptr; +}; + +class QFileDialogTreeView : public QTreeView +{ +public: + QFileDialogTreeView(QWidget *parent); + void setFileDialogPrivate(QFileDialogPrivate *d_pointer); + QSize sizeHint() const Q_DECL_OVERRIDE; + +protected: + void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; +private: + QFileDialogPrivate *d_ptr; +}; + +QModelIndex QFileDialogPrivate::mapToSource(const QModelIndex &index) const { +#ifdef QT_NO_PROXYMODEL + return index; +#else + return proxyModel ? proxyModel->mapToSource(index) : index; +#endif +} +QModelIndex QFileDialogPrivate::mapFromSource(const QModelIndex &index) const { +#ifdef QT_NO_PROXYMODEL + return index; +#else + return proxyModel ? proxyModel->mapFromSource(index) : index; +#endif +} + +QString QFileDialogPrivate::rootPath() const +{ + return (model ? model->rootPath() : QStringLiteral("/")); +} + +void QFileDialogPrivate::setDirectory_sys(const QUrl &directory) +{ + QPlatformFileDialogHelper *helper = platformFileDialogHelper(); + + if (!helper) + return; + + if (helper->isSupportedUrl(directory)) + helper->setDirectory(directory); +} + +QUrl QFileDialogPrivate::directory_sys() const +{ + if (QPlatformFileDialogHelper *helper = platformFileDialogHelper()) + return helper->directory(); + return QUrl(); +} + +void QFileDialogPrivate::selectFile_sys(const QUrl &filename) +{ + QPlatformFileDialogHelper *helper = platformFileDialogHelper(); + + if (!helper) + return; + + if (helper->isSupportedUrl(filename)) + helper->selectFile(filename); +} + +QList<QUrl> QFileDialogPrivate::selectedFiles_sys() const +{ + if (QPlatformFileDialogHelper *helper = platformFileDialogHelper()) + return helper->selectedFiles(); + return QList<QUrl>(); +} + +void QFileDialogPrivate::setFilter_sys() +{ + if (QPlatformFileDialogHelper *helper = platformFileDialogHelper()) + helper->setFilter(); +} + +void QFileDialogPrivate::selectMimeTypeFilter_sys(const QString &filter) +{ + if (QPlatformFileDialogHelper *helper = platformFileDialogHelper()) + helper->selectMimeTypeFilter(filter); +} + +QString QFileDialogPrivate::selectedMimeTypeFilter_sys() const +{ + if (QPlatformFileDialogHelper *helper = platformFileDialogHelper()) + return helper->selectedMimeTypeFilter(); + + return QString(); +} + +void QFileDialogPrivate::selectNameFilter_sys(const QString &filter) +{ + if (QPlatformFileDialogHelper *helper = platformFileDialogHelper()) + helper->selectNameFilter(filter); +} + +QString QFileDialogPrivate::selectedNameFilter_sys() const +{ + if (QPlatformFileDialogHelper *helper = platformFileDialogHelper()) + return helper->selectedNameFilter(); + return QString(); +} + +QT_END_NAMESPACE + +#endif // QFILEDIALOG_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfileiconprovider_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfileiconprovider_p.h new file mode 100644 index 000000000..4726b1581 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfileiconprovider_p.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILEICONPROVIDER_P_H +#define QFILEICONPROVIDER_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qfileiconprovider.h" + +#include <QtCore/qstring.h> +#include <QtGui/qicon.h> +#include <QtWidgets/qstyle.h> + +QT_BEGIN_NAMESPACE + +class QFileInfo; + +class QFileIconProviderPrivate +{ + Q_DECLARE_PUBLIC(QFileIconProvider) + +public: + QFileIconProviderPrivate(QFileIconProvider *q); + QIcon getIcon(QStyle::StandardPixmap name) const; + QIcon getIcon(const QFileInfo &fi) const; + + QFileIconProvider *q_ptr; + const QString homePath; + QFileIconProvider::Options options; + +private: + mutable QIcon file; + mutable QIcon fileLink; + mutable QIcon directory; + mutable QIcon directoryLink; + mutable QIcon harddisk; + mutable QIcon floppy; + mutable QIcon cdrom; + mutable QIcon ram; + mutable QIcon network; + mutable QIcon computer; + mutable QIcon desktop; + mutable QIcon trashcan; + mutable QIcon generic; + mutable QIcon home; +}; + +QT_END_NAMESPACE + +#endif // QFILEICONPROVIDER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfileinfogatherer_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfileinfogatherer_p.h new file mode 100644 index 000000000..0cf2ed1f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfileinfogatherer_p.h @@ -0,0 +1,214 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILEINFOGATHERER_H +#define QFILEINFOGATHERER_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 <QtWidgets/private/qtwidgetsglobal_p.h> + +#include <qthread.h> +#include <qmutex.h> +#include <qwaitcondition.h> +#include <qfilesystemwatcher.h> +#include <qfileiconprovider.h> +#include <qpair.h> +#include <qstack.h> +#include <qdatetime.h> +#include <qdir.h> +#include <qelapsedtimer.h> + +#include <private/qfilesystemengine_p.h> + +QT_REQUIRE_CONFIG(filesystemmodel); + +QT_BEGIN_NAMESPACE + +class QExtendedInformation { +public: + enum Type { Dir, File, System }; + + QExtendedInformation() {} + QExtendedInformation(const QFileInfo &info) : mFileInfo(info) {} + + inline bool isDir() { return type() == Dir; } + inline bool isFile() { return type() == File; } + inline bool isSystem() { return type() == System; } + + bool operator ==(const QExtendedInformation &fileInfo) const { + return mFileInfo == fileInfo.mFileInfo + && displayType == fileInfo.displayType + && permissions() == fileInfo.permissions() + && lastModified() == fileInfo.lastModified(); + } + +#ifndef QT_NO_FSFILEENGINE + bool isCaseSensitive() const { + return QFileSystemEngine::isCaseSensitive(); + } +#endif + + QFile::Permissions permissions() const { + return mFileInfo.permissions(); + } + + Type type() const { + if (mFileInfo.isDir()) { + return QExtendedInformation::Dir; + } + if (mFileInfo.isFile()) { + return QExtendedInformation::File; + } + if (!mFileInfo.exists() && mFileInfo.isSymLink()) { + return QExtendedInformation::System; + } + return QExtendedInformation::System; + } + + bool isSymLink(bool ignoreNtfsSymLinks = false) const + { + if (ignoreNtfsSymLinks) { +#ifdef Q_OS_WIN + return !mFileInfo.suffix().compare(QLatin1String("lnk"), Qt::CaseInsensitive); +#endif + } + return mFileInfo.isSymLink(); + } + + bool isHidden() const { + return mFileInfo.isHidden(); + } + + QFileInfo fileInfo() const { + return mFileInfo; + } + + QDateTime lastModified() const { + return mFileInfo.lastModified(); + } + + qint64 size() const { + qint64 size = -1; + if (type() == QExtendedInformation::Dir) + size = 0; + if (type() == QExtendedInformation::File) + size = mFileInfo.size(); + if (!mFileInfo.exists() && !mFileInfo.isSymLink()) + size = -1; + return size; + } + + QString displayType; + QIcon icon; + +private : + QFileInfo mFileInfo; +}; + +class QFileIconProvider; + +class Q_AUTOTEST_EXPORT QFileInfoGatherer : public QThread +{ +Q_OBJECT + +Q_SIGNALS: + void updates(const QString &directory, const QVector<QPair<QString, QFileInfo> > &updates); + void newListOfFiles(const QString &directory, const QStringList &listOfFiles) const; + void nameResolved(const QString &fileName, const QString &resolvedName) const; + void directoryLoaded(const QString &path); + +public: + explicit QFileInfoGatherer(QObject *parent = 0); + ~QFileInfoGatherer(); + + // only callable from this->thread(): + void clear(); + void removePath(const QString &path); + QExtendedInformation getInfo(const QFileInfo &info) const; + QFileIconProvider *iconProvider() const; + bool resolveSymlinks() const; + +public Q_SLOTS: + void list(const QString &directoryPath); + void fetchExtendedInformation(const QString &path, const QStringList &files); + void updateFile(const QString &path); + void setResolveSymlinks(bool enable); + void setIconProvider(QFileIconProvider *provider); + +private Q_SLOTS: + void driveAdded(); + void driveRemoved(); + +private: + void run() Q_DECL_OVERRIDE; + // called by run(): + void getFileInfos(const QString &path, const QStringList &files); + void fetch(const QFileInfo &info, QElapsedTimer &base, bool &firstTime, QVector<QPair<QString, QFileInfo> > &updatedFiles, const QString &path); + +private: + mutable QMutex mutex; + // begin protected by mutex + QWaitCondition condition; + QStack<QString> path; + QStack<QStringList> files; + // end protected by mutex + QAtomicInt abort; + +#ifndef QT_NO_FILESYSTEMWATCHER + QFileSystemWatcher *watcher; +#endif +#ifdef Q_OS_WIN + bool m_resolveSymlinks; // not accessed by run() +#endif + QFileIconProvider *m_iconProvider; // not accessed by run() + QFileIconProvider defaultProvider; +}; + +QT_END_NAMESPACE +#endif // QFILEINFOGATHERER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfilesystemmodel_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfilesystemmodel_p.h new file mode 100644 index 000000000..640225529 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfilesystemmodel_p.h @@ -0,0 +1,319 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMMODEL_P_H +#define QFILESYSTEMMODEL_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qfilesystemmodel.h" + +#include <private/qabstractitemmodel_p.h> +#include <qabstractitemmodel.h> +#include "qfileinfogatherer_p.h" +#include <qpair.h> +#include <qdir.h> +#include <qicon.h> +#include <qfileinfo.h> +#include <qtimer.h> +#include <qhash.h> + +QT_REQUIRE_CONFIG(filesystemmodel); + +QT_BEGIN_NAMESPACE + +class ExtendedInformation; +class QFileSystemModelPrivate; +class QFileIconProvider; + +class Q_AUTOTEST_EXPORT QFileSystemModelPrivate : public QAbstractItemModelPrivate +{ + Q_DECLARE_PUBLIC(QFileSystemModel) + +public: + enum { NumColumns = 4 }; + + class QFileSystemNode + { + public: + explicit QFileSystemNode(const QString &filename = QString(), QFileSystemNode *p = 0) + : fileName(filename), populatedChildren(false), isVisible(false), dirtyChildrenIndex(-1), parent(p), info(0) {} + ~QFileSystemNode() { + qDeleteAll(children); + delete info; + info = 0; + parent = 0; + } + + QString fileName; +#if defined(Q_OS_WIN) + QString volumeName; +#endif + + inline qint64 size() const { if (info && !info->isDir()) return info->size(); return 0; } + inline QString type() const { if (info) return info->displayType; return QLatin1String(""); } + inline QDateTime lastModified() const { if (info) return info->lastModified(); return QDateTime(); } + inline QFile::Permissions permissions() const { if (info) return info->permissions(); return 0; } + inline bool isReadable() const { return ((permissions() & QFile::ReadUser) != 0); } + inline bool isWritable() const { return ((permissions() & QFile::WriteUser) != 0); } + inline bool isExecutable() const { return ((permissions() & QFile::ExeUser) != 0); } + inline bool isDir() const { + if (info) + return info->isDir(); + if (children.count() > 0) + return true; + return false; + } + inline QFileInfo fileInfo() const { if (info) return info->fileInfo(); return QFileInfo(); } + inline bool isFile() const { if (info) return info->isFile(); return true; } + inline bool isSystem() const { if (info) return info->isSystem(); return true; } + inline bool isHidden() const { if (info) return info->isHidden(); return false; } + inline bool isSymLink(bool ignoreNtfsSymLinks = false) const { return info && info->isSymLink(ignoreNtfsSymLinks); } + inline bool caseSensitive() const { if (info) return info->isCaseSensitive(); return false; } + inline QIcon icon() const { if (info) return info->icon; return QIcon(); } + + inline bool operator <(const QFileSystemNode &node) const { + if (caseSensitive() || node.caseSensitive()) + return fileName < node.fileName; + return QString::compare(fileName, node.fileName, Qt::CaseInsensitive) < 0; + } + inline bool operator >(const QString &name) const { + if (caseSensitive()) + return fileName > name; + return QString::compare(fileName, name, Qt::CaseInsensitive) > 0; + } + inline bool operator <(const QString &name) const { + if (caseSensitive()) + return fileName < name; + return QString::compare(fileName, name, Qt::CaseInsensitive) < 0; + } + inline bool operator !=(const QExtendedInformation &fileInfo) const { + return !operator==(fileInfo); + } + bool operator ==(const QString &name) const { + if (caseSensitive()) + return fileName == name; + return QString::compare(fileName, name, Qt::CaseInsensitive) == 0; + } + bool operator ==(const QExtendedInformation &fileInfo) const { + return info && (*info == fileInfo); + } + + inline bool hasInformation() const { return info != 0; } + + void populate(const QExtendedInformation &fileInfo) { + if (!info) + info = new QExtendedInformation(fileInfo.fileInfo()); + (*info) = fileInfo; + } + + // children shouldn't normally be accessed directly, use node() + inline int visibleLocation(const QString &childName) { + return visibleChildren.indexOf(childName); + } + void updateIcon(QFileIconProvider *iconProvider, const QString &path) { + if (info) + info->icon = iconProvider->icon(QFileInfo(path)); + for (QFileSystemNode *child : qAsConst(children)) { + //On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/) + if (!path.isEmpty()) { + if (path.endsWith(QLatin1Char('/'))) + child->updateIcon(iconProvider, path + child->fileName); + else + child->updateIcon(iconProvider, path + QLatin1Char('/') + child->fileName); + } else + child->updateIcon(iconProvider, child->fileName); + } + } + + void retranslateStrings(QFileIconProvider *iconProvider, const QString &path) { + if (info) + info->displayType = iconProvider->type(QFileInfo(path)); + for (QFileSystemNode *child : qAsConst(children)) { + //On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/) + if (!path.isEmpty()) { + if (path.endsWith(QLatin1Char('/'))) + child->retranslateStrings(iconProvider, path + child->fileName); + else + child->retranslateStrings(iconProvider, path + QLatin1Char('/') + child->fileName); + } else + child->retranslateStrings(iconProvider, child->fileName); + } + } + + bool populatedChildren; + bool isVisible; + QHash<QString,QFileSystemNode *> children; + QList<QString> visibleChildren; + int dirtyChildrenIndex; + QFileSystemNode *parent; + + + QExtendedInformation *info; + + }; + + QFileSystemModelPrivate() : + forceSort(true), + sortColumn(0), + sortOrder(Qt::AscendingOrder), + readOnly(true), + setRootPath(false), + filters(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs), + nameFilterDisables(true), // false on windows, true on mac and unix + disableRecursiveSort(false) + { + delayedSortTimer.setSingleShot(true); + } + + void init(); + /* + \internal + + Return true if index which is owned by node is hidden by the filter. + */ + inline bool isHiddenByFilter(QFileSystemNode *indexNode, const QModelIndex &index) const + { + return (indexNode != &root && !index.isValid()); + } + QFileSystemNode *node(const QModelIndex &index) const; + QFileSystemNode *node(const QString &path, bool fetch = true) const; + inline QModelIndex index(const QString &path, int column = 0) { return index(node(path), column); } + QModelIndex index(const QFileSystemNode *node, int column = 0) const; + bool filtersAcceptsNode(const QFileSystemNode *node) const; + bool passNameFilters(const QFileSystemNode *node) const; + void removeNode(QFileSystemNode *parentNode, const QString &name); + QFileSystemNode* addNode(QFileSystemNode *parentNode, const QString &fileName, const QFileInfo &info); + void addVisibleFiles(QFileSystemNode *parentNode, const QStringList &newFiles); + void removeVisibleFile(QFileSystemNode *parentNode, int visibleLocation); + void sortChildren(int column, const QModelIndex &parent); + + inline int translateVisibleLocation(QFileSystemNode *parent, int row) const { + if (sortOrder != Qt::AscendingOrder) { + if (parent->dirtyChildrenIndex == -1) + return parent->visibleChildren.count() - row - 1; + + if (row < parent->dirtyChildrenIndex) + return parent->dirtyChildrenIndex - row - 1; + } + + return row; + } + + inline static QString myComputer() { + // ### TODO We should query the system to find out what the string should be + // XP == "My Computer", + // Vista == "Computer", + // OS X == "Computer" (sometime user generated) "Benjamin's PowerBook G4" +#ifdef Q_OS_WIN + return QFileSystemModel::tr("My Computer"); +#else + return QFileSystemModel::tr("Computer"); +#endif + } + + inline void delayedSort() { + if (!delayedSortTimer.isActive()) + delayedSortTimer.start(0); + } + + QIcon icon(const QModelIndex &index) const; + QString name(const QModelIndex &index) const; + QString displayName(const QModelIndex &index) const; + QString filePath(const QModelIndex &index) const; + QString size(const QModelIndex &index) const; + static QString size(qint64 bytes); + QString type(const QModelIndex &index) const; + QString time(const QModelIndex &index) const; + + void _q_directoryChanged(const QString &directory, const QStringList &list); + void _q_performDelayedSort(); + void _q_fileSystemChanged(const QString &path, const QVector<QPair<QString, QFileInfo> > &); + void _q_resolvedName(const QString &fileName, const QString &resolvedName); + + static int naturalCompare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs); + + QDir rootDir; +#ifndef QT_NO_FILESYSTEMWATCHER + QFileInfoGatherer fileInfoGatherer; +#endif + QTimer delayedSortTimer; + bool forceSort; + int sortColumn; + Qt::SortOrder sortOrder; + bool readOnly; + bool setRootPath; + QDir::Filters filters; + QHash<const QFileSystemNode*, bool> bypassFilters; + bool nameFilterDisables; + //This flag is an optimization for the QFileDialog + //It enable a sort which is not recursive, it means + //we sort only what we see. + bool disableRecursiveSort; +#ifndef QT_NO_REGEXP + QList<QRegExp> nameFilters; +#endif + QHash<QString, QString> resolvedSymLinks; + + QFileSystemNode root; + + QBasicTimer fetchingTimer; + struct Fetching { + QString dir; + QString file; + const QFileSystemNode *node; + }; + QVector<Fetching> toFetch; + +}; +Q_DECLARE_TYPEINFO(QFileSystemModelPrivate::Fetching, Q_MOVABLE_TYPE); + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qflickgesture_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qflickgesture_p.h new file mode 100644 index 000000000..74a0f2a0f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qflickgesture_p.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFLICKGESTURE_P_H +#define QFLICKGESTURE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qevent.h" +#include "qgesturerecognizer.h" +#include "private/qgesture_p.h" +#include "qscroller.h" +#include "qscopedpointer.h" + +#ifndef QT_NO_GESTURES + +QT_BEGIN_NAMESPACE + +class QFlickGesturePrivate; +class QGraphicsItem; + +class Q_WIDGETS_EXPORT QFlickGesture : public QGesture +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QFlickGesture) + +public: + QFlickGesture(QObject *receiver, Qt::MouseButton button, QObject *parent = 0); + ~QFlickGesture(); + + friend class QFlickGestureRecognizer; +}; + +class PressDelayHandler; + +class QFlickGesturePrivate : public QGesturePrivate +{ + Q_DECLARE_PUBLIC(QFlickGesture) +public: + QFlickGesturePrivate(); + + QPointer<QObject> receiver; + QScroller *receiverScroller; + Qt::MouseButton button; // NoButton == Touch + bool macIgnoreWheel; + static PressDelayHandler *pressDelayHandler; +}; + +class QFlickGestureRecognizer : public QGestureRecognizer +{ +public: + QFlickGestureRecognizer(Qt::MouseButton button); + + QGesture *create(QObject *target) override; + QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event) override; + void reset(QGesture *state) override; + +private: + Qt::MouseButton button; // NoButton == Touch +}; + +QT_END_NAMESPACE + +#endif // QT_NO_GESTURES + +#endif // QFLICKGESTURE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfontdialog_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfontdialog_p.h new file mode 100644 index 000000000..ae923d94e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfontdialog_p.h @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONTDIALOG_P_H +#define QFONTDIALOG_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qdialog_p.h" +#include "qfontdatabase.h" +#include "qfontdialog.h" +#include <qpa/qplatformdialoghelper.h> +#include "qsharedpointer.h" + +QT_REQUIRE_CONFIG(fontdialog); + +QT_BEGIN_NAMESPACE + +class QBoxLayout; +class QCheckBox; +class QComboBox; +class QDialogButtonBox; +class QFontListView; +class QGroupBox; +class QLabel; +class QLineEdit; + +class Q_AUTOTEST_EXPORT QFontDialogPrivate : public QDialogPrivate +{ + Q_DECLARE_PUBLIC(QFontDialog) + +public: + QFontDialogPrivate(); + ~QFontDialogPrivate(); + + QPlatformFontDialogHelper *platformFontDialogHelper() const + { return static_cast<QPlatformFontDialogHelper *>(platformHelper()); } + + void updateFamilies(); + void updateStyles(); + void updateSizes(); + + static QFont getFont(bool *ok, const QFont &initial, QWidget *parent, + const QString &title, QFontDialog::FontDialogOptions options); + + void init(); + void _q_sizeChanged(const QString &); + void _q_familyHighlighted(int); + void _q_writingSystemHighlighted(int); + void _q_styleHighlighted(int); + void _q_sizeHighlighted(int); + void _q_updateSample(); + void updateSampleFont(const QFont &newFont); + void retranslateStrings(); + + QLabel *familyAccel; + QLineEdit *familyEdit; + QFontListView *familyList; + + QLabel *styleAccel; + QLineEdit *styleEdit; + QFontListView *styleList; + + QLabel *sizeAccel; + QLineEdit *sizeEdit; + QFontListView *sizeList; + + QGroupBox *effects; + QCheckBox *strikeout; + QCheckBox *underline; + QComboBox *color; + + QGroupBox *sample; + QLineEdit *sampleEdit; + + QLabel *writingSystemAccel; + QComboBox *writingSystemCombo; + + QBoxLayout *buttonLayout; + QBoxLayout *effectsLayout; + QBoxLayout *sampleLayout; + QBoxLayout *sampleEditLayout; + + QDialogButtonBox *buttonBox; + + QFontDatabase fdb; + QString family; + QFontDatabase::WritingSystem writingSystem; + QString style; + int size; + bool smoothScalable; + QFont selectedFont; + QSharedPointer<QFontDialogOptions> options; + QPointer<QObject> receiverToDisconnectOnClose; + QByteArray memberToDisconnectOnClose; + + bool canBeNativeDialog() const Q_DECL_OVERRIDE; + void _q_runNativeAppModalPanel(); + +private: + virtual void initHelper(QPlatformDialogHelper *) Q_DECL_OVERRIDE; + virtual void helperPrepareShow(QPlatformDialogHelper *) Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif // QFONTDIALOG_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qframe_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qframe_p.h new file mode 100644 index 000000000..e3c101e87 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qframe_p.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFRAME_P_H +#define QFRAME_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qwidget_p.h" +#include "qframe.h" + +QT_BEGIN_NAMESPACE + +// ### unexport this class when and if QAbstractScrollAreaPrivate is unexported +class Q_WIDGETS_EXPORT QFramePrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QFrame) +public: + QFramePrivate(); + ~QFramePrivate(); + + void updateFrameWidth(); + void updateStyledFrameWidths(); + + QRect frect; + int frameStyle; + short lineWidth; + short midLineWidth; + short frameWidth; + short leftFrameWidth, rightFrameWidth; + short topFrameWidth, bottomFrameWidth; + + inline void init(); + +}; + +QT_END_NAMESPACE + +#endif // QFRAME_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfscompleter_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfscompleter_p.h new file mode 100644 index 000000000..ce0612f29 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfscompleter_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFSCOMPLETOR_P_H +#define QFSCOMPLETOR_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qcompleter.h" +#include <QtWidgets/qfilesystemmodel.h> + +QT_REQUIRE_CONFIG(fscompleter); + +QT_BEGIN_NAMESPACE + +/*! + QCompleter that can deal with QFileSystemModel + */ +class Q_WIDGETS_EXPORT QFSCompleter : public QCompleter { +public: + explicit QFSCompleter(QFileSystemModel *model, QObject *parent = 0) + : QCompleter(model, parent), proxyModel(0), sourceModel(model) + { +#if defined(Q_OS_WIN) + setCaseSensitivity(Qt::CaseInsensitive); +#endif + } + QString pathFromIndex(const QModelIndex &index) const Q_DECL_OVERRIDE; + QStringList splitPath(const QString& path) const Q_DECL_OVERRIDE; + + QAbstractProxyModel *proxyModel; + QFileSystemModel *sourceModel; +}; + +QT_END_NAMESPACE + +#endif // QFSCOMPLETOR_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfusionstyle_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfusionstyle_p.h new file mode 100644 index 000000000..aac27e51a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfusionstyle_p.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUSIONSTYLE_P_H +#define QFUSIONSTYLE_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtWidgets/qcommonstyle.h> + +QT_BEGIN_NAMESPACE + + +#if QT_CONFIG(style_fusion) + +class QFusionStylePrivate; +class QFusionStyle : public QCommonStyle +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QFusionStyle) + +public: + QFusionStyle(); + ~QFusionStyle(); + + QPalette standardPalette () const Q_DECL_OVERRIDE; + void drawPrimitive(PrimitiveElement elem, + const QStyleOption *option, + QPainter *painter, const QWidget *widget = 0) const Q_DECL_OVERRIDE; + void drawControl(ControlElement ce, const QStyleOption *option, QPainter *painter, + const QWidget *widget) const Q_DECL_OVERRIDE; + int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const Q_DECL_OVERRIDE; + void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, + QPainter *painter, const QWidget *widget) const Q_DECL_OVERRIDE; + QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget = 0) const Q_DECL_OVERRIDE; + QSize sizeFromContents(ContentsType type, const QStyleOption *option, + const QSize &size, const QWidget *widget) const Q_DECL_OVERRIDE; + SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, + const QPoint &pt, const QWidget *w = 0) const Q_DECL_OVERRIDE; + QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, + SubControl sc, const QWidget *widget) const Q_DECL_OVERRIDE; + QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, + const QStyleOption *opt) const Q_DECL_OVERRIDE; + int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, + QStyleHintReturn *returnData = 0) const Q_DECL_OVERRIDE; + QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const Q_DECL_OVERRIDE; + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = 0, + const QWidget *widget = 0) const Q_DECL_OVERRIDE; + QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, + const QWidget *widget = 0) const Q_DECL_OVERRIDE; + void drawItemPixmap(QPainter *painter, const QRect &rect, + int alignment, const QPixmap &pixmap) const Q_DECL_OVERRIDE; + void drawItemText(QPainter *painter, const QRect &rect, + int flags, const QPalette &pal, bool enabled, + const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const Q_DECL_OVERRIDE; + void polish(QWidget *widget) Q_DECL_OVERRIDE; + void polish(QApplication *app) Q_DECL_OVERRIDE; + void polish(QPalette &pal) Q_DECL_OVERRIDE; + void unpolish(QWidget *widget) Q_DECL_OVERRIDE; + void unpolish(QApplication *app) Q_DECL_OVERRIDE; + +protected: + QFusionStyle(QFusionStylePrivate &dd); + +}; + +#endif // style_fusion + +QT_END_NAMESPACE + +#endif //QFUSIONSTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfusionstyle_p_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfusionstyle_p_p.h new file mode 100644 index 000000000..169fd9a40 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qfusionstyle_p_p.h @@ -0,0 +1,152 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUSIONSTYLE_P_P_H +#define QFUSIONSTYLE_P_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qcommonstyle.h" +#include "qcommonstyle_p.h" +#include <qpa/qplatformtheme.h> +#include "private/qguiapplication_p.h" + +#if QT_CONFIG(style_fusion) + +QT_BEGIN_NAMESPACE + +class QFusionStylePrivate : public QCommonStylePrivate +{ + Q_DECLARE_PUBLIC(QFusionStyle) + +public: + QFusionStylePrivate(); + + // Used for grip handles + QColor lightShade() const { + return QColor(255, 255, 255, 90); + } + QColor darkShade() const { + return QColor(0, 0, 0, 60); + } + + QColor topShadow() const { + return QColor(0, 0, 0, 18); + } + + QColor innerContrastLine() const { + return QColor(255, 255, 255, 30); + } + + // On mac we want a standard blue color used when the system palette is used + bool isMacSystemPalette(const QPalette &pal) const { + Q_UNUSED(pal); +#if defined(Q_OS_MACX) + const QPalette *themePalette = QGuiApplicationPrivate::platformTheme()->palette(); + 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)) + return true; +#endif + return false; + } + + QColor highlight(const QPalette &pal) const { + if (isMacSystemPalette(pal)) + return QColor(60, 140, 230); + return pal.color(QPalette::Highlight); + } + + QColor highlightedText(const QPalette &pal) const { + if (isMacSystemPalette(pal)) + return Qt::white; + return pal.color(QPalette::HighlightedText); + } + + QColor outline(const QPalette &pal) const { + if (pal.window().style() == Qt::TexturePattern) + return QColor(0, 0, 0, 160); + return pal.background().color().darker(140); + } + + QColor highlightedOutline(const QPalette &pal) const { + QColor highlightedOutline = highlight(pal).darker(125); + if (highlightedOutline.value() > 160) + highlightedOutline.setHsl(highlightedOutline.hue(), highlightedOutline.saturation(), 160); + return highlightedOutline; + } + + QColor tabFrameColor(const QPalette &pal) const { + if (pal.window().style() == Qt::TexturePattern) + return QColor(255, 255, 255, 8); + return buttonColor(pal).lighter(104); + } + + QColor buttonColor(const QPalette &pal) const { + QColor buttonColor = pal.button().color(); + int val = qGray(buttonColor.rgb()); + buttonColor = buttonColor.lighter(100 + qMax(1, (180 - val)/6)); + buttonColor.setHsv(buttonColor.hue(), buttonColor.saturation() * 0.75, buttonColor.value()); + return buttonColor; + } + + enum { + menuItemHMargin = 3, // menu item hor text margin + menuArrowHMargin = 6, // menu arrow horizontal margin + menuRightBorder = 15, // right border on menus + menuCheckMarkWidth = 12 // checkmarks width on menus + }; +}; + +QT_END_NAMESPACE + +#endif // style_fusion + +#endif //QFUSIONSTYLE_P_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgesture_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgesture_p.h new file mode 100644 index 000000000..636103c1e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgesture_p.h @@ -0,0 +1,203 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGESTURE_P_H +#define QGESTURE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qrect.h" +#include "qpoint.h" +#include "qgesture.h" +#include "qelapsedtimer.h" +#include "private/qobject_p.h" + +#ifndef QT_NO_GESTURES + +QT_BEGIN_NAMESPACE + +class QGesturePrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QGesture) + +public: + QGesturePrivate() + : gestureType(Qt::CustomGesture), state(Qt::NoGesture), + isHotSpotSet(false), gestureCancelPolicy(0) + { + } + + Qt::GestureType gestureType; + Qt::GestureState state; + QPointF hotSpot; + QPointF sceneHotSpot; + uint isHotSpotSet : 1; + uint gestureCancelPolicy : 2; +}; + +class QPanGesturePrivate : public QGesturePrivate +{ + Q_DECLARE_PUBLIC(QPanGesture) + +public: + QPanGesturePrivate() + : acceleration(0), xVelocity(0), yVelocity(0), pointCount(2) + { + } + + qreal horizontalVelocity() const { return xVelocity; } + void setHorizontalVelocity(qreal value) { xVelocity = value; } + qreal verticalVelocity() const { return yVelocity; } + void setVerticalVelocity(qreal value) { yVelocity = value; } + + QPointF lastOffset; + QPointF offset; + QPoint startPosition; + qreal acceleration; + qreal xVelocity; + qreal yVelocity; + int pointCount; // ### fixme Qt 5.5: Add accessor to QPanGesture. +}; + +class QPinchGesturePrivate : public QGesturePrivate +{ + Q_DECLARE_PUBLIC(QPinchGesture) + +public: + QPinchGesturePrivate() + : totalChangeFlags(0), changeFlags(0), + totalScaleFactor(1), lastScaleFactor(1), scaleFactor(1), + totalRotationAngle(0), lastRotationAngle(0), rotationAngle(0), + isNewSequence(true) + { + } + + QPinchGesture::ChangeFlags totalChangeFlags; + QPinchGesture::ChangeFlags changeFlags; + + QPointF startCenterPoint; + QPointF lastCenterPoint; + QPointF centerPoint; + + qreal totalScaleFactor; + qreal lastScaleFactor; + qreal scaleFactor; + + qreal totalRotationAngle; + qreal lastRotationAngle; + qreal rotationAngle; + + bool isNewSequence; + QPointF startPosition[2]; +}; + +class QSwipeGesturePrivate : public QGesturePrivate +{ + Q_DECLARE_PUBLIC(QSwipeGesture) + +public: + enum State { + NoGesture, + Started, + ThreePointsReached + }; + + QSwipeGesturePrivate() + : horizontalDirection(QSwipeGesture::NoDirection), + verticalDirection(QSwipeGesture::NoDirection), + swipeAngle(0), + state(NoGesture), velocityValue(0) + { + } + + qreal velocity() const { return velocityValue; } + void setVelocity(qreal value) { velocityValue = value; } + + QSwipeGesture::SwipeDirection horizontalDirection; + QSwipeGesture::SwipeDirection verticalDirection; + qreal swipeAngle; + + QPoint lastPositions[3]; + State state; + qreal velocityValue; + QElapsedTimer time; +}; + +class QTapGesturePrivate : public QGesturePrivate +{ + Q_DECLARE_PUBLIC(QTapGesture) + +public: + QTapGesturePrivate() + { + } + + QPointF position; +}; + +class QTapAndHoldGesturePrivate : public QGesturePrivate +{ + Q_DECLARE_PUBLIC(QTapAndHoldGesture) + +public: + QTapAndHoldGesturePrivate() + : timerId(0) + { + } + + QPointF position; + int timerId; + static int Timeout; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_GESTURES + +#endif // QGESTURE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgesturemanager_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgesturemanager_p.h new file mode 100644 index 000000000..3df80bab5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgesturemanager_p.h @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGESTUREMANAGER_P_H +#define QGESTUREMANAGER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qobject.h" +#include "qbasictimer.h" +#include "private/qwidget_p.h" +#include "qgesturerecognizer.h" + +#ifndef QT_NO_GESTURES + +#include <functional> + +QT_BEGIN_NAMESPACE + +class QBasicTimer; +class QGraphicsObject; +class QGestureManager : public QObject +{ + Q_OBJECT +public: + QGestureManager(QObject *parent); + ~QGestureManager(); + + Qt::GestureType registerGestureRecognizer(QGestureRecognizer *recognizer); + void unregisterGestureRecognizer(Qt::GestureType type); + + bool filterEvent(QWidget *receiver, QEvent *event); + bool filterEvent(QObject *receiver, QEvent *event); +#if QT_CONFIG(graphicsview) + bool filterEvent(QGraphicsObject *receiver, QEvent *event); +#endif // QT_CONFIG(graphicsview) + + static QGestureManager* instance(); // declared in qapplication.cpp + static bool gesturePending(QObject *o); + + void cleanupCachedGestures(QObject *target, Qt::GestureType type); + + void recycle(QGesture *gesture); + +protected: + bool filterEventThroughContexts(const QMultiMap<QObject *, Qt::GestureType> &contexts, + QEvent *event); + +private: + QMultiMap<Qt::GestureType, QGestureRecognizer *> m_recognizers; + + QSet<QGesture *> m_activeGestures; + QSet<QGesture *> m_maybeGestures; + + enum State { + Gesture, + NotGesture, + MaybeGesture // this means timers are up and waiting for some + // more events, and input events are handled by + // gesture recognizer explicitly + } state; + + struct ObjectGesture + { + QObject* object; + Qt::GestureType gesture; + + ObjectGesture(QObject *o, const Qt::GestureType &g) : object(o), gesture(g) { } + inline bool operator<(const ObjectGesture &rhs) const + { + if (std::less<QObject *>{}(object, rhs.object)) + return true; + if (object == rhs.object) + return gesture < rhs.gesture; + return false; + } + }; + + QMap<ObjectGesture, QList<QGesture *> > m_objectGestures; + QHash<QGesture *, QGestureRecognizer *> m_gestureToRecognizer; + QHash<QGesture *, QObject *> m_gestureOwners; + + QHash<QGesture *, QPointer<QWidget> > m_gestureTargets; + + int m_lastCustomGestureId; + + QHash<QGestureRecognizer *, QSet<QGesture *> > m_obsoleteGestures; + QHash<QGesture *, QGestureRecognizer *> m_deletedRecognizers; + QSet<QGesture *> m_gesturesToDelete; + void cleanupGesturesForRemovedRecognizer(QGesture *gesture); + + QGesture *getState(QObject *widget, QGestureRecognizer *recognizer, + Qt::GestureType gesture); + void deliverEvents(const QSet<QGesture *> &gestures, + QSet<QGesture *> *undeliveredGestures); + void getGestureTargets(const QSet<QGesture*> &gestures, + QHash<QWidget *, QList<QGesture *> > *conflicts, + QHash<QWidget *, QList<QGesture *> > *normal); + + void cancelGesturesForChildren(QGesture *originatingGesture); +}; + +QT_END_NAMESPACE + +#endif // QT_NO_GESTURES + +#endif // QGESTUREMANAGER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraph_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraph_p.h new file mode 100644 index 000000000..dfe9d8fdd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraph_p.h @@ -0,0 +1,283 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPH_P_H +#define QGRAPH_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/QHash> +#include <QtCore/QQueue> +#include <QtCore/QString> +#include <QtCore/QDebug> + +#include <functional> // for std::less + +#include <float.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +template <typename Vertex, typename EdgeData> +class Graph +{ +public: + Graph() {} + + class const_iterator { + public: + const_iterator(const Graph *graph, bool begin) : g(graph){ + if (begin) { + row = g->m_graph.constBegin(); + //test if the graph is empty + if (row != g->m_graph.constEnd()) + column = row->cbegin(); + } else { + row = g->m_graph.constEnd(); + } + } + + inline Vertex *operator*() { + return column.key(); + } + + inline Vertex *from() const { + return row.key(); + } + + inline Vertex *to() const { + return column.key(); + } + + inline bool operator==(const const_iterator &o) const { return !(*this != o); } + inline bool operator!=(const const_iterator &o) const { + if (row == g->m_graph.end()) { + return row != o.row; + } else { + return row != o.row || column != o.column; + } + } + + // prefix + const_iterator &operator++() { + if (row != g->m_graph.constEnd()) { + ++column; + if (column == row->cend()) { + ++row; + if (row != g->m_graph.constEnd()) { + column = row->cbegin(); + } + } + } + return *this; + } + + private: + const Graph *g; + typename QHash<Vertex *, QHash<Vertex *, EdgeData *> >::const_iterator row; + typename QHash<Vertex *, EdgeData *>::const_iterator column; + }; + + const_iterator constBegin() const { + return const_iterator(this,true); + } + + const_iterator constEnd() const { + return const_iterator(this,false); + } + + /*! + * \internal + * + * If there is an edge between \a first and \a second, it will return a structure + * containing the data associated with the edge, otherwise it will return 0. + * + */ + EdgeData *edgeData(Vertex* first, Vertex* second) { + const auto it = m_graph.constFind(first); + if (it == m_graph.cend()) + return nullptr; + const auto jt = it->constFind(second); + if (jt == it->cend()) + return nullptr; + return *jt; + } + + void createEdge(Vertex *first, Vertex *second, EdgeData *data) + { + // Creates a bidirectional edge +#if defined(QT_DEBUG) && 0 + qDebug("Graph::createEdge(): %s", + qPrintable(QString::fromLatin1("%1-%2") + .arg(first->toString()).arg(second->toString()))); +#endif + if (edgeData(first, second)) { +#ifdef QT_DEBUG + qWarning("%s-%s already has an edge", qPrintable(first->toString()), qPrintable(second->toString())); +#endif + } + createDirectedEdge(first, second, data); + createDirectedEdge(second, first, data); + } + + void removeEdge(Vertex *first, Vertex *second) + { + // Removes a bidirectional edge +#if defined(QT_DEBUG) && 0 + qDebug("Graph::removeEdge(): %s", + qPrintable(QString::fromLatin1("%1-%2") + .arg(first->toString()).arg(second->toString()))); +#endif + EdgeData *data = edgeData(first, second); + removeDirectedEdge(first, second); + removeDirectedEdge(second, first); + if (data) delete data; + } + + EdgeData *takeEdge(Vertex* first, Vertex* second) + { +#if defined(QT_DEBUG) && 0 + qDebug("Graph::takeEdge(): %s", + qPrintable(QString::fromLatin1("%1-%2") + .arg(first->toString()).arg(second->toString()))); +#endif + // Removes a bidirectional edge + EdgeData *data = edgeData(first, second); + if (data) { + removeDirectedEdge(first, second); + removeDirectedEdge(second, first); + } + return data; + } + + QList<Vertex *> adjacentVertices(Vertex *vertex) const + { + const auto it = m_graph.constFind(vertex); + if (it == m_graph.cend()) + return QList<Vertex *>(); + else + return it->keys(); + } + + QSet<Vertex*> vertices() const { + QSet<Vertex *> setOfVertices; + for (const_iterator it = constBegin(); it != constEnd(); ++it) { + setOfVertices.insert(*it); + } + return setOfVertices; + } + + QVector<QPair<Vertex*, Vertex*> > connections() const { + QVector<QPair<Vertex*, Vertex*> > conns; + for (const_iterator it = constBegin(); it != constEnd(); ++it) { + Vertex *from = it.from(); + Vertex *to = it.to(); + // do not return (from,to) *and* (to,from) + if (std::less<Vertex*>()(from, to)) + conns.append(qMakePair(from, to)); + } + return conns; + } + +#if defined(QT_DEBUG) + QString serializeToDot() { // traversal + QString strVertices; + QString edges; + + QSet<Vertex *> setOfVertices = vertices(); + for (typename QSet<Vertex*>::const_iterator it = setOfVertices.begin(); it != setOfVertices.end(); ++it) { + Vertex *v = *it; + const QList<Vertex*> adjacents = adjacentVertices(v); + for (auto *v1 : adjacents) { + EdgeData *data = edgeData(v, v1); + bool forward = data->from == v; + if (forward) { + edges += QString::fromLatin1("\"%1\"->\"%2\" [label=\"[%3,%4,%5,%6,%7]\" color=\"#000000\"] \n") + .arg(v->toString()) + .arg(v1->toString()) + .arg(data->minSize) + .arg(data->minPrefSize) + .arg(data->prefSize) + .arg(data->maxPrefSize) + .arg(data->maxSize) + ; + } + } + strVertices += QString::fromLatin1("\"%1\" [label=\"%2\"]\n").arg(v->toString()).arg(v->toString()); + } + return QString::fromLatin1("%1\n%2\n").arg(strVertices, edges); + } +#endif + +protected: + void createDirectedEdge(Vertex *from, Vertex *to, EdgeData *data) + { + m_graph[from][to] = data; + } + + void removeDirectedEdge(Vertex *from, Vertex *to) + { + const auto it = m_graph.find(from); + Q_ASSERT(it != m_graph.end()); + + it->remove(to); + if (it->isEmpty()) { + //nobody point to 'from' so we can remove it from the graph + m_graph.erase(it); + } + } + +private: + QHash<Vertex *, QHash<Vertex *, EdgeData *> > m_graph; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsanchorlayout_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsanchorlayout_p.h new file mode 100644 index 000000000..e785b486b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsanchorlayout_p.h @@ -0,0 +1,597 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSANCHORLAYOUT_P_H +#define QGRAPHICSANCHORLAYOUT_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QGraphicsWidget> +#include <private/qobject_p.h> + +#include "qgraphicslayout_p.h" +#include "qgraphicsanchorlayout.h" +#include "qgraph_p.h" +#include "qsimplex_p.h" + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +/* + The public QGraphicsAnchorLayout interface represents an anchorage point + as a pair of a <QGraphicsLayoutItem *> and a <Qt::AnchorPoint>. + + Internally though, it has a graph of anchorage points (vertices) and + anchors (edges), represented by the AnchorVertex and AnchorData structs + respectively. +*/ + +/*! + \internal + + Represents a vertex (anchorage point) in the internal graph +*/ +struct AnchorVertex { + enum Type { + Normal = 0, + Pair + }; + + AnchorVertex(QGraphicsLayoutItem *item, Qt::AnchorPoint edge) + : m_item(item), m_edge(edge), m_type(Normal) {} + + AnchorVertex() + : m_item(0), m_edge(Qt::AnchorPoint(0)), m_type(Normal) {} + +#ifdef QT_DEBUG + inline QString toString() const; +#endif + + QGraphicsLayoutItem *m_item; + Qt::AnchorPoint m_edge; + uint m_type : 1; + + // Current distance from this vertex to the layout edge (Left or Top) + // Value is calculated from the current anchors sizes. + qreal distance; +}; + +/*! + \internal + + Represents an edge (anchor) in the internal graph. +*/ +struct AnchorData : public QSimplexVariable { + enum Type { + Normal = 0, + Sequential, + Parallel + }; + + enum Dependency { + Independent = 0, + Master, + Slave + }; + + AnchorData() + : QSimplexVariable(), from(0), to(0), + minSize(0), prefSize(0), maxSize(0), + minPrefSize(0), maxPrefSize(0), + sizeAtMinimum(0), sizeAtPreferred(0), + sizeAtMaximum(0), item(0), graphicsAnchor(0), + type(Normal), isLayoutAnchor(false), + isCenterAnchor(false), orientation(0), + dependency(Independent) {} + virtual ~AnchorData(); + + virtual void updateChildrenSizes() {} + void refreshSizeHints(const QLayoutStyleInfo *styleInfo = 0); + +#ifdef QT_DEBUG + void dump(int indent = 2); + inline QString toString() const; + QString name; +#endif + + // Anchor is semantically directed + AnchorVertex *from; + AnchorVertex *to; + + // Nominal sizes + // These are the intrinsic size restrictions for a given item. They are + // used as input for the calculation of the actual sizes. + // These values are filled by the refreshSizeHints method, based on the + // anchor size policy, the size hints of the item it (possibly) represents + // and the layout spacing information. + qreal minSize; + qreal prefSize; + qreal maxSize; + + qreal minPrefSize; + qreal maxPrefSize; + + // Calculated sizes + // These attributes define which sizes should that anchor be in when the + // layout is at its minimum, preferred or maximum sizes. Values are + // calculated by the Simplex solver based on the current layout setup. + qreal sizeAtMinimum; + qreal sizeAtPreferred; + qreal sizeAtMaximum; + + // References to the classes that represent this anchor in the public world + // An anchor may represent a LayoutItem, it may also be acessible externally + // through a GraphicsAnchor "handler". + QGraphicsLayoutItem *item; + QGraphicsAnchor *graphicsAnchor; + + uint type : 2; // either Normal, Sequential or Parallel + uint isLayoutAnchor : 1; // if this anchor is an internal layout anchor + uint isCenterAnchor : 1; + uint orientation : 1; + uint dependency : 2; // either Independent, Master or Slave +}; + +#ifdef QT_DEBUG +inline QString AnchorData::toString() const +{ + return QString::fromLatin1("Anchor(%1)").arg(name); +} +#endif + +struct SequentialAnchorData : public AnchorData +{ + SequentialAnchorData(const QVector<AnchorVertex *> &vertices, const QVector<AnchorData *> &edges) + : AnchorData(), m_children(vertices), m_edges(edges) + { + type = AnchorData::Sequential; + orientation = m_edges.at(0)->orientation; +#ifdef QT_DEBUG + name = QString::fromLatin1("%1 -- %2").arg(vertices.first()->toString(), vertices.last()->toString()); +#endif + } + + virtual void updateChildrenSizes() Q_DECL_OVERRIDE; + void calculateSizeHints(); + + QVector<AnchorVertex*> m_children; // list of vertices in the sequence + QVector<AnchorData*> m_edges; // keep the list of edges too. +}; + +struct ParallelAnchorData : public AnchorData +{ + ParallelAnchorData(AnchorData *first, AnchorData *second) + : AnchorData(), firstEdge(first), secondEdge(second) + { + type = AnchorData::Parallel; + orientation = first->orientation; + + // This assert whether the child anchors share their vertices + Q_ASSERT(((first->from == second->from) && (first->to == second->to)) || + ((first->from == second->to) && (first->to == second->from))); + + // Our convention will be that the parallel group anchor will have the same + // direction as the first anchor. + from = first->from; + to = first->to; +#ifdef QT_DEBUG + name = QString::fromLatin1("%1 | %2").arg(first->toString(), second->toString()); +#endif + } + + virtual void updateChildrenSizes() Q_DECL_OVERRIDE; + bool calculateSizeHints(); + + bool secondForward() const { + // We have the convention that the first children will define the direction of the + // pararell group. Note that we can't rely on 'this->from' or 'this->to' because they + // might be changed by vertex simplification. + return firstEdge->from == secondEdge->from; + } + + AnchorData* firstEdge; + AnchorData* secondEdge; + + QList<QSimplexConstraint *> m_firstConstraints; + QList<QSimplexConstraint *> m_secondConstraints; +}; + +struct AnchorVertexPair : public AnchorVertex { + AnchorVertexPair(AnchorVertex *v1, AnchorVertex *v2, AnchorData *data) + : AnchorVertex(), m_first(v1), m_second(v2), m_removedAnchor(data) { + m_type = AnchorVertex::Pair; + } + + AnchorVertex *m_first; + AnchorVertex *m_second; + + AnchorData *m_removedAnchor; + QList<AnchorData *> m_firstAnchors; + QList<AnchorData *> m_secondAnchors; +}; + +#ifdef QT_DEBUG +inline QString AnchorVertex::toString() const +{ + if (m_type == Pair) { + const AnchorVertexPair *vp = static_cast<const AnchorVertexPair *>(this); + return QString::fromLatin1("(%1, %2)").arg(vp->m_first->toString(), vp->m_second->toString()); + } else if (!m_item) { + return QString::fromLatin1("NULL_%1").arg(quintptr(this)); + } + QString edge; + switch (m_edge) { + case Qt::AnchorLeft: + edge = QLatin1String("Left"); + break; + case Qt::AnchorHorizontalCenter: + edge = QLatin1String("HorizontalCenter"); + break; + case Qt::AnchorRight: + edge = QLatin1String("Right"); + break; + case Qt::AnchorTop: + edge = QLatin1String("Top"); + break; + case Qt::AnchorVerticalCenter: + edge = QLatin1String("VerticalCenter"); + break; + case Qt::AnchorBottom: + edge = QLatin1String("Bottom"); + break; + default: + edge = QLatin1String("None"); + break; + } + QString itemName; + if (m_item->isLayout()) { + itemName = QLatin1String("layout"); + } else { + if (QGraphicsItem *item = m_item->graphicsItem()) { + itemName = item->data(0).toString(); + } + } + edge.insert(0, QLatin1String("%1_")); + return edge.arg(itemName); +} +#endif + +/*! + \internal + + Representation of a valid path for a given vertex in the graph. + In this struct, "positives" is the set of anchors that have been + traversed in the forward direction, while "negatives" is the set + with the ones walked backwards. + + This paths are compared against each other to produce LP Constraints, + the exact order in which the anchors were traversed is not relevant. +*/ +class GraphPath +{ +public: + GraphPath() {} + + QSimplexConstraint *constraint(const GraphPath &path) const; +#ifdef QT_DEBUG + QString toString() const; +#endif + QSet<AnchorData *> positives; + QSet<AnchorData *> negatives; +}; +Q_DECLARE_TYPEINFO(GraphPath, Q_MOVABLE_TYPE); + +class QGraphicsAnchorLayoutPrivate; +/*! + \internal +*/ +class QGraphicsAnchorPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsAnchor) + +public: + explicit QGraphicsAnchorPrivate(int version = QObjectPrivateVersion); + ~QGraphicsAnchorPrivate(); + + void setSpacing(qreal value); + void unsetSpacing(); + qreal spacing() const; + + void setSizePolicy(QSizePolicy::Policy policy); + + QGraphicsAnchorLayoutPrivate *layoutPrivate; + AnchorData *data; + + // Size information for user controlled anchor + QSizePolicy::Policy sizePolicy; + qreal preferredSize; + + uint hasSize : 1; // if false, get size from style. +}; + + + + +/*! + \internal + + QGraphicsAnchorLayout private methods and attributes. +*/ +class Q_AUTOTEST_EXPORT QGraphicsAnchorLayoutPrivate : public QGraphicsLayoutPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsAnchorLayout) + +public: + // When the layout geometry is different from its Minimum, Preferred + // or Maximum values, interpolation is used to calculate the geometries + // of the items. + // + // Interval represents which interpolation interval are we operating in. + enum Interval { + MinimumToMinPreferred = 0, + MinPreferredToPreferred, + PreferredToMaxPreferred, + MaxPreferredToMaximum + }; + + // Several structures internal to the layout are duplicated to handle + // both Horizontal and Vertical restrictions. + // + // Orientation is used to reference the right structure in each context + enum Orientation { + Horizontal = 0, + Vertical, + NOrientations + }; + + QGraphicsAnchorLayoutPrivate(); + + static QGraphicsAnchorLayoutPrivate *get(QGraphicsAnchorLayout *q) + { + return q ? q->d_func() : 0; + } + + static Qt::AnchorPoint oppositeEdge( + Qt::AnchorPoint edge); + + static Orientation edgeOrientation(Qt::AnchorPoint edge); + + static Qt::AnchorPoint pickEdge(Qt::AnchorPoint edge, Orientation orientation) + { + if (orientation == Vertical && int(edge) <= 2) + return (Qt::AnchorPoint)(edge + 3); + else if (orientation == Horizontal && int(edge) >= 3) { + return (Qt::AnchorPoint)(edge - 3); + } + return edge; + } + + // Init methods + void createLayoutEdges(); + void deleteLayoutEdges(); + void createItemEdges(QGraphicsLayoutItem *item); + void createCenterAnchors(QGraphicsLayoutItem *item, Qt::AnchorPoint centerEdge); + void removeCenterAnchors(QGraphicsLayoutItem *item, Qt::AnchorPoint centerEdge, bool substitute = true); + void removeCenterConstraints(QGraphicsLayoutItem *item, Orientation orientation); + + QGraphicsAnchor *acquireGraphicsAnchor(AnchorData *data) + { + Q_Q(QGraphicsAnchorLayout); + if (!data->graphicsAnchor) { + data->graphicsAnchor = new QGraphicsAnchor(q); + data->graphicsAnchor->d_func()->data = data; + } + return data->graphicsAnchor; + } + + // function used by the 4 API functions + QGraphicsAnchor *addAnchor(QGraphicsLayoutItem *firstItem, + Qt::AnchorPoint firstEdge, + QGraphicsLayoutItem *secondItem, + Qt::AnchorPoint secondEdge, + qreal *spacing = 0); + + // Helper for Anchor Manipulation methods + void addAnchor_helper(QGraphicsLayoutItem *firstItem, + Qt::AnchorPoint firstEdge, + QGraphicsLayoutItem *secondItem, + Qt::AnchorPoint secondEdge, + AnchorData *data); + + QGraphicsAnchor *getAnchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, + QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge); + + void removeAnchor(AnchorVertex *firstVertex, AnchorVertex *secondVertex); + void removeAnchor_helper(AnchorVertex *v1, AnchorVertex *v2); + + void removeAnchors(QGraphicsLayoutItem *item); + + void removeVertex(QGraphicsLayoutItem *item, Qt::AnchorPoint edge); + + void correctEdgeDirection(QGraphicsLayoutItem *&firstItem, + Qt::AnchorPoint &firstEdge, + QGraphicsLayoutItem *&secondItem, + Qt::AnchorPoint &secondEdge); + + QLayoutStyleInfo &styleInfo() const; + + AnchorData *addAnchorMaybeParallel(AnchorData *newAnchor, bool *feasible); + + // Activation + void calculateGraphs(); + void calculateGraphs(Orientation orientation); + + // Simplification + bool simplifyGraph(Orientation orientation); + bool simplifyVertices(Orientation orientation); + bool simplifyGraphIteration(Orientation orientation, bool *feasible); + + bool replaceVertex(Orientation orientation, AnchorVertex *oldV, + AnchorVertex *newV, const QList<AnchorData *> &edges); + + + void restoreSimplifiedGraph(Orientation orientation); + void restoreSimplifiedAnchor(AnchorData *edge); + void restoreSimplifiedConstraints(ParallelAnchorData *parallel); + void restoreVertices(Orientation orientation); + + bool calculateTrunk(Orientation orientation, const GraphPath &trunkPath, + const QList<QSimplexConstraint *> &constraints, + const QList<AnchorData *> &variables); + bool calculateNonTrunk(const QList<QSimplexConstraint *> &constraints, + const QList<AnchorData *> &variables); + + // Support functions for calculateGraph() + void refreshAllSizeHints(Orientation orientation); + void findPaths(Orientation orientation); + void constraintsFromPaths(Orientation orientation); + void updateAnchorSizes(Orientation orientation); + QList<QSimplexConstraint *> constraintsFromSizeHints(const QList<AnchorData *> &anchors); + struct GraphParts { + QList<QSimplexConstraint *> trunkConstraints; + QList<QSimplexConstraint *> nonTrunkConstraints; + }; + GraphParts getGraphParts(Orientation orientation); + void identifyFloatItems(const QSet<AnchorData *> &visited, Orientation orientation); + void identifyNonFloatItems_helper(const AnchorData *ad, QSet<QGraphicsLayoutItem *> *nonFloatingItemsIdentifiedSoFar); + + inline AnchorVertex *internalVertex(const QPair<QGraphicsLayoutItem*, Qt::AnchorPoint> &itemEdge) const + { + return m_vertexList.value(itemEdge).first; + } + + inline AnchorVertex *internalVertex(const QGraphicsLayoutItem *item, Qt::AnchorPoint edge) const + { + return internalVertex(qMakePair(const_cast<QGraphicsLayoutItem *>(item), edge)); + } + + inline void changeLayoutVertex(Orientation orientation, AnchorVertex *oldV, AnchorVertex *newV) + { + if (layoutFirstVertex[orientation] == oldV) + layoutFirstVertex[orientation] = newV; + else if (layoutCentralVertex[orientation] == oldV) + layoutCentralVertex[orientation] = newV; + else if (layoutLastVertex[orientation] == oldV) + layoutLastVertex[orientation] = newV; + } + + + AnchorVertex *addInternalVertex(QGraphicsLayoutItem *item, Qt::AnchorPoint edge); + void removeInternalVertex(QGraphicsLayoutItem *item, Qt::AnchorPoint edge); + + // Geometry interpolation methods + void setItemsGeometries(const QRectF &geom); + + void calculateVertexPositions(Orientation orientation); + void setupEdgesInterpolation(Orientation orientation); + void interpolateEdge(AnchorVertex *base, AnchorData *edge); + + // Linear Programming solver methods + bool solveMinMax(const QList<QSimplexConstraint *> &constraints, + const GraphPath &path, qreal *min, qreal *max); + bool solvePreferred(const QList<QSimplexConstraint *> &constraints, + const QList<AnchorData *> &variables); + bool hasConflicts() const; + +#ifdef QT_DEBUG + void dumpGraph(const QString &name = QString()); +#endif + + + qreal spacings[NOrientations]; + // Size hints from simplex engine + qreal sizeHints[2][3]; + + // Items + QVector<QGraphicsLayoutItem *> items; + + // Mapping between high level anchorage points (Item, Edge) to low level + // ones (Graph Vertices) + + QHash<QPair<QGraphicsLayoutItem*, Qt::AnchorPoint>, QPair<AnchorVertex *, int> > m_vertexList; + + // Internal graph of anchorage points and anchors, for both orientations + Graph<AnchorVertex, AnchorData> graph[2]; + + AnchorVertex *layoutFirstVertex[2]; + AnchorVertex *layoutCentralVertex[2]; + AnchorVertex *layoutLastVertex[2]; + + // Combined anchors in order of creation + QList<AnchorVertexPair *> simplifiedVertices[2]; + QList<AnchorData *> anchorsFromSimplifiedVertices[2]; + + // Graph paths and constraints, for both orientations + QMultiHash<AnchorVertex *, GraphPath> graphPaths[2]; + QList<QSimplexConstraint *> constraints[2]; + QList<QSimplexConstraint *> itemCenterConstraints[2]; + + // The interpolation interval and progress based on the current size + // as well as the key values (minimum, preferred and maximum) + Interval interpolationInterval[2]; + qreal interpolationProgress[2]; + + bool graphHasConflicts[2]; + QSet<QGraphicsLayoutItem *> m_floatItems[2]; + +#if defined(QT_DEBUG) || defined(QT_BUILD_INTERNAL) + bool lastCalculationUsedSimplex[2]; +#endif + + uint calculateGraphCacheDirty : 1; + mutable uint styleInfoDirty : 1; + mutable QLayoutStyleInfo cachedStyleInfo; + + friend class QGraphicsAnchorPrivate; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicseffect_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicseffect_p.h new file mode 100644 index 000000000..c5c7ff590 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicseffect_p.h @@ -0,0 +1,230 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSEFFECT_P_H +#define QGRAPHICSEFFECT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qgraphicseffect.h" + +#include <QPixmapCache> + +#include <private/qobject_p.h> +#include <private/qpixmapfilter_p.h> + +QT_REQUIRE_CONFIG(graphicseffect); + +QT_BEGIN_NAMESPACE + +class QGraphicsEffectSourcePrivate; +class Q_WIDGETS_EXPORT QGraphicsEffectSource : public QObject +{ + Q_OBJECT +public: + ~QGraphicsEffectSource(); + const QGraphicsItem *graphicsItem() const; + const QWidget *widget() const; + const QStyleOption *styleOption() const; + + bool isPixmap() const; + void draw(QPainter *painter); + void update(); + + QRectF boundingRect(Qt::CoordinateSystem coordinateSystem = Qt::LogicalCoordinates) const; + QRect deviceRect() const; + QPixmap pixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates, + QPoint *offset = 0, + QGraphicsEffect::PixmapPadMode mode = QGraphicsEffect::PadToEffectiveBoundingRect) const; + +protected: + QGraphicsEffectSource(QGraphicsEffectSourcePrivate &dd, QObject *parent = 0); + +private: + Q_DECLARE_PRIVATE(QGraphicsEffectSource) + Q_DISABLE_COPY(QGraphicsEffectSource) + friend class QGraphicsEffect; + friend class QGraphicsEffectPrivate; + friend class QGraphicsScenePrivate; + friend class QGraphicsItem; + friend class QGraphicsItemPrivate; + friend class QWidget; + friend class QWidgetPrivate; +}; + +class QGraphicsEffectSourcePrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsEffectSource) +public: + QGraphicsEffectSourcePrivate() + : QObjectPrivate() + , m_cachedSystem(Qt::DeviceCoordinates) + , m_cachedMode(QGraphicsEffect::PadToTransparentBorder) + {} + + enum InvalidateReason + { + TransformChanged, + EffectRectChanged, + SourceChanged + }; + + virtual ~QGraphicsEffectSourcePrivate(); + virtual void detach() = 0; + virtual QRectF boundingRect(Qt::CoordinateSystem system) const = 0; + virtual QRect deviceRect() const = 0; + virtual const QGraphicsItem *graphicsItem() const = 0; + virtual const QWidget *widget() const = 0; + virtual const QStyleOption *styleOption() const = 0; + virtual void draw(QPainter *p) = 0; + virtual void update() = 0; + virtual bool isPixmap() const = 0; + virtual QPixmap pixmap(Qt::CoordinateSystem system, QPoint *offset = 0, + QGraphicsEffect::PixmapPadMode mode = QGraphicsEffect::PadToTransparentBorder) const = 0; + virtual void effectBoundingRectChanged() = 0; + + void setCachedOffset(const QPoint &offset); + void invalidateCache(InvalidateReason reason = SourceChanged) const; + Qt::CoordinateSystem currentCachedSystem() const { return m_cachedSystem; } + QGraphicsEffect::PixmapPadMode currentCachedMode() const { return m_cachedMode; } + + friend class QGraphicsScenePrivate; + friend class QGraphicsItem; + friend class QGraphicsItemPrivate; + +private: + mutable Qt::CoordinateSystem m_cachedSystem; + mutable QGraphicsEffect::PixmapPadMode m_cachedMode; + mutable QPoint m_cachedOffset; + mutable QPixmapCache::Key m_cacheKey; +}; + +class Q_WIDGETS_EXPORT QGraphicsEffectPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsEffect) +public: + QGraphicsEffectPrivate() : source(0), isEnabled(1) {} + ~QGraphicsEffectPrivate(); + + inline void setGraphicsEffectSource(QGraphicsEffectSource *newSource) + { + QGraphicsEffect::ChangeFlags flags; + if (source) { + flags |= QGraphicsEffect::SourceDetached; + source->d_func()->invalidateCache(); + source->d_func()->detach(); + delete source; + } + source = newSource; + if (newSource) + flags |= QGraphicsEffect::SourceAttached; + q_func()->sourceChanged(flags); + } + + QGraphicsEffectSource *source; + QRectF boundingRect; + quint32 isEnabled : 1; + quint32 padding : 31; // feel free to use +}; + + +class QGraphicsColorizeEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsColorizeEffect) +public: + QGraphicsColorizeEffectPrivate() + : opaque(true) + { + filter = new QPixmapColorizeFilter; + } + ~QGraphicsColorizeEffectPrivate() { delete filter; } + + QPixmapColorizeFilter *filter; + quint32 opaque : 1; + quint32 padding : 31; +}; + +class QGraphicsBlurEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsBlurEffect) +public: + QGraphicsBlurEffectPrivate() : filter(new QPixmapBlurFilter) {} + ~QGraphicsBlurEffectPrivate() { delete filter; } + + QPixmapBlurFilter *filter; +}; + +class QGraphicsDropShadowEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsDropShadowEffect) +public: + QGraphicsDropShadowEffectPrivate() : filter(new QPixmapDropShadowFilter) {} + ~QGraphicsDropShadowEffectPrivate() { delete filter; } + + QPixmapDropShadowFilter *filter; +}; + +class QGraphicsOpacityEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsOpacityEffect) +public: + QGraphicsOpacityEffectPrivate() + : opacity(qreal(0.7)), isFullyTransparent(0), isFullyOpaque(0), hasOpacityMask(0) {} + ~QGraphicsOpacityEffectPrivate() {} + + qreal opacity; + QBrush opacityMask; + uint isFullyTransparent : 1; + uint isFullyOpaque : 1; + uint hasOpacityMask : 1; +}; + +QT_END_NAMESPACE + +#endif // QGRAPHICSEFFECT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsgridlayoutengine_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsgridlayoutengine_p.h new file mode 100644 index 000000000..d797f784b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsgridlayoutengine_p.h @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSGRIDLAYOUTENGINE_P_H +#define QGRAPHICSGRIDLAYOUTENGINE_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtGui/private/qgridlayoutengine_p.h> + +#include <QtWidgets/qsizepolicy.h> +#include <QtWidgets/qstyle.h> +#include <QtWidgets/qstyleoption.h> +#include "qgraphicslayoutitem.h" + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsLayoutPrivate; + +class QGraphicsGridLayoutEngineItem : public QGridLayoutItem { +public: + QGraphicsGridLayoutEngineItem(QGraphicsLayoutItem *item, int row, int columns, int rowSpan = 1, int columnSpan = 1, + Qt::Alignment alignment = 0) + : QGridLayoutItem(row, columns, rowSpan, columnSpan, alignment), q_layoutItem(item) {} + + virtual QLayoutPolicy::Policy sizePolicy(Qt::Orientation orientation) const Q_DECL_OVERRIDE + { + QSizePolicy sizePolicy(q_layoutItem->sizePolicy()); + return (QLayoutPolicy::Policy)((orientation == Qt::Horizontal) ? sizePolicy.horizontalPolicy() + : sizePolicy.verticalPolicy()); + } + + virtual QLayoutPolicy::ControlTypes controlTypes(LayoutSide) const Q_DECL_OVERRIDE + { + const QSizePolicy::ControlType ct = q_layoutItem->sizePolicy().controlType(); + return (QLayoutPolicy::ControlTypes)ct; + } + + virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint) const Q_DECL_OVERRIDE + { + return q_layoutItem->effectiveSizeHint(which, constraint); + } + + bool isHidden() const; + + virtual bool isIgnored() const Q_DECL_OVERRIDE; + + virtual void setGeometry(const QRectF &rect) Q_DECL_OVERRIDE + { + q_layoutItem->setGeometry(rect); + } + + virtual bool hasDynamicConstraint() const Q_DECL_OVERRIDE; + virtual Qt::Orientation dynamicConstraintOrientation() const Q_DECL_OVERRIDE; + + QGraphicsLayoutItem *layoutItem() const { return q_layoutItem; } + +protected: + QGraphicsLayoutItem *q_layoutItem; +}; + + +class QGraphicsGridLayoutEngine : public QGridLayoutEngine +{ +public: + QGraphicsGridLayoutEngineItem *findLayoutItem(QGraphicsLayoutItem *layoutItem) const + { + const int index = indexOf(layoutItem); + if (index < 0) + return 0; + return static_cast<QGraphicsGridLayoutEngineItem*>(q_items.at(index)); + } + + int indexOf(QGraphicsLayoutItem *item) const + { + for (int i = 0; i < q_items.count(); ++i) { + if (item == static_cast<QGraphicsGridLayoutEngineItem*>(q_items.at(i))->layoutItem()) + return i; + } + return -1; + } + + void setAlignment(QGraphicsLayoutItem *graphicsLayoutItem, Qt::Alignment alignment); + Qt::Alignment alignment(QGraphicsLayoutItem *graphicsLayoutItem) const; + + void setStretchFactor(QGraphicsLayoutItem *layoutItem, int stretch, Qt::Orientation orientation); + int stretchFactor(QGraphicsLayoutItem *layoutItem, Qt::Orientation orientation) const; + +}; + +QT_END_NAMESPACE + +#endif // QGRAPHICSGRIDLAYOUTENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsitem_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsitem_p.h new file mode 100644 index 000000000..86414263a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsitem_p.h @@ -0,0 +1,818 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSITEM_P_H +#define QGRAPHICSITEM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qgraphicsitem.h" +#include "qset.h" +#include "qpixmapcache.h" +#include <private/qgraphicsview_p.h> +#include "qgraphicstransform.h" +#include <private/qgraphicstransform_p.h> + +#include <QtCore/qpoint.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsItemPrivate; + +#ifndef QDECLARATIVELISTPROPERTY +#define QDECLARATIVELISTPROPERTY +template<typename T> +class QDeclarativeListProperty { +public: + typedef void (*AppendFunction)(QDeclarativeListProperty<T> *, T*); + typedef int (*CountFunction)(QDeclarativeListProperty<T> *); + typedef T *(*AtFunction)(QDeclarativeListProperty<T> *, int); + typedef void (*ClearFunction)(QDeclarativeListProperty<T> *); + + QDeclarativeListProperty() + : object(0), data(0), append(0), count(0), at(0), clear(0), dummy1(0), dummy2(0) {} + QDeclarativeListProperty(QObject *o, QList<T *> &list) + : object(o), data(&list), append(qlist_append), count(qlist_count), at(qlist_at), + clear(qlist_clear), dummy1(0), dummy2(0) {} + QDeclarativeListProperty(QObject *o, void *d, AppendFunction a, CountFunction c = 0, AtFunction t = 0, + ClearFunction r = 0) + : object(o), data(d), append(a), count(c), at(t), clear(r), dummy1(0), dummy2(0) {} + + bool operator==(const QDeclarativeListProperty &o) const { + return object == o.object && + data == o.data && + append == o.append && + count == o.count && + at == o.at && + clear == o.clear; + } + + QObject *object; + void *data; + + AppendFunction append; + + CountFunction count; + AtFunction at; + + ClearFunction clear; + + void *dummy1; + void *dummy2; + +private: + static void qlist_append(QDeclarativeListProperty *p, T *v) { + ((QList<T *> *)p->data)->append(v); + } + static int qlist_count(QDeclarativeListProperty *p) { + return ((QList<T *> *)p->data)->count(); + } + static T *qlist_at(QDeclarativeListProperty *p, int idx) { + return ((QList<T *> *)p->data)->at(idx); + } + static void qlist_clear(QDeclarativeListProperty *p) { + return ((QList<T *> *)p->data)->clear(); + } +}; +#endif + +class QGraphicsItemCache +{ +public: + QGraphicsItemCache() : allExposed(false) { } + + // ItemCoordinateCache only + QRect boundingRect; + QSize fixedSize; + QPixmapCache::Key key; + + // DeviceCoordinateCache only + struct DeviceData { + DeviceData() {} + QTransform lastTransform; + QPoint cacheIndent; + QPixmapCache::Key key; + }; + QHash<QPaintDevice *, DeviceData> deviceData; + + // List of logical exposed rects + QVector<QRectF> exposed; + bool allExposed; + + // Empty cache + void purge(); +}; + +class Q_WIDGETS_EXPORT QGraphicsItemPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsItem) +public: + enum Extra { + ExtraToolTip, + ExtraCursor, + ExtraCacheData, + ExtraMaxDeviceCoordCacheSize, + ExtraBoundingRegionGranularity + }; + + enum AncestorFlag { + NoFlag = 0, + AncestorHandlesChildEvents = 0x1, + AncestorClipsChildren = 0x2, + AncestorIgnoresTransformations = 0x4, + AncestorFiltersChildEvents = 0x8, + AncestorContainsChildren = 0x10 + }; + + QGraphicsItemPrivate(); + virtual ~QGraphicsItemPrivate(); + + static const QGraphicsItemPrivate *get(const QGraphicsItem *item) + { + return item->d_ptr.data(); + } + static QGraphicsItemPrivate *get(QGraphicsItem *item) + { + return item->d_ptr.data(); + } + + void updateChildWithGraphicsEffectFlagRecursively(); + void updateAncestorFlag(QGraphicsItem::GraphicsItemFlag childFlag, + AncestorFlag flag = NoFlag, bool enabled = false, bool root = true); + void updateAncestorFlags(); + void setIsMemberOfGroup(bool enabled); + void remapItemPos(QEvent *event, QGraphicsItem *item); + QPointF genericMapFromScene(const QPointF &pos, const QWidget *viewport) const; + inline bool itemIsUntransformable() const + { + return (flags & QGraphicsItem::ItemIgnoresTransformations) + || (ancestorFlags & AncestorIgnoresTransformations); + } + + void combineTransformToParent(QTransform *x, const QTransform *viewTransform = 0) const; + void combineTransformFromParent(QTransform *x, const QTransform *viewTransform = 0) const; + virtual void updateSceneTransformFromParent(); + + static bool movableAncestorIsSelected(const QGraphicsItem *item); + + virtual void setPosHelper(const QPointF &pos); + void setTransformHelper(const QTransform &transform); + void prependGraphicsTransform(QGraphicsTransform *t); + void appendGraphicsTransform(QGraphicsTransform *t); + void setVisibleHelper(bool newVisible, bool explicitly, bool update = true, + bool hiddenByPanel = false); + void setEnabledHelper(bool newEnabled, bool explicitly, bool update = true); + bool discardUpdateRequest(bool ignoreVisibleBit = false, + bool ignoreDirtyBit = false, bool ignoreOpacity = false) const; + virtual void transformChanged() {} + int depth() const; +#if QT_CONFIG(graphicseffect) + enum InvalidateReason { + OpacityChanged + }; + void invalidateParentGraphicsEffectsRecursively(); + void invalidateChildGraphicsEffectsRecursively(InvalidateReason reason); +#endif // QT_CONFIG(graphicseffect) + void invalidateDepthRecursively(); + void resolveDepth(); + void addChild(QGraphicsItem *child); + void removeChild(QGraphicsItem *child); + QDeclarativeListProperty<QGraphicsObject> childrenList(); + void setParentItemHelper(QGraphicsItem *parent, const QVariant *newParentVariant, + const QVariant *thisPointerVariant); + void childrenBoundingRectHelper(QTransform *x, QRectF *rect, QGraphicsItem *topMostEffectItem); + void initStyleOption(QStyleOptionGraphicsItem *option, const QTransform &worldTransform, + const QRegion &exposedRegion, bool allItems = false) const; + QRectF effectiveBoundingRect(QGraphicsItem *topMostEffectItem = 0) const; + QRectF sceneEffectiveBoundingRect() const; + + QRectF effectiveBoundingRect(const QRectF &rect) const; + + virtual void resolveFont(uint inheritedMask) + { + for (int i = 0; i < children.size(); ++i) + children.at(i)->d_ptr->resolveFont(inheritedMask); + } + + virtual void resolvePalette(uint inheritedMask) + { + for (int i = 0; i < children.size(); ++i) + children.at(i)->d_ptr->resolvePalette(inheritedMask); + } + + virtual bool isProxyWidget() const; + + inline QVariant extra(Extra type) const + { + for (int i = 0; i < extras.size(); ++i) { + const ExtraStruct &extra = extras.at(i); + if (extra.type == type) + return extra.value; + } + return QVariant(); + } + + inline void setExtra(Extra type, const QVariant &value) + { + int index = -1; + for (int i = 0; i < extras.size(); ++i) { + if (extras.at(i).type == type) { + index = i; + break; + } + } + + if (index == -1) { + extras << ExtraStruct(type, value); + } else { + extras[index].value = value; + } + } + + inline void unsetExtra(Extra type) + { + for (int i = 0; i < extras.size(); ++i) { + if (extras.at(i).type == type) { + extras.removeAt(i); + return; + } + } + } + + struct ExtraStruct { + ExtraStruct() {} // for QVector, don't use + ExtraStruct(Extra type, const QVariant &value) + : type(type), value(value) + { } + + Extra type; + QVariant value; + + bool operator<(Extra extra) const + { return type < extra; } + }; + + QVector<ExtraStruct> extras; + + QGraphicsItemCache *maybeExtraItemCache() const; + QGraphicsItemCache *extraItemCache() const; + void removeExtraItemCache(); + + void updatePaintedViewBoundingRects(bool updateChildren); + void ensureSceneTransformRecursive(QGraphicsItem **topMostDirtyItem); + inline void ensureSceneTransform() + { + QGraphicsItem *that = q_func(); + ensureSceneTransformRecursive(&that); + } + + inline bool hasTranslateOnlySceneTransform() + { + ensureSceneTransform(); + return sceneTransformTranslateOnly; + } + + inline void invalidateChildrenSceneTransform() + { + for (int i = 0; i < children.size(); ++i) + children.at(i)->d_ptr->dirtySceneTransform = 1; + } + + inline qreal calcEffectiveOpacity() const + { + qreal o = opacity; + QGraphicsItem *p = parent; + int myFlags = flags; + while (p) { + int parentFlags = p->d_ptr->flags; + + // If I have a parent, and I don't ignore my parent's opacity, and my + // parent propagates to me, then combine my local opacity with my parent's + // effective opacity into my effective opacity. + if ((myFlags & QGraphicsItem::ItemIgnoresParentOpacity) + || (parentFlags & QGraphicsItem::ItemDoesntPropagateOpacityToChildren)) { + break; + } + + o *= p->d_ptr->opacity; + p = p->d_ptr->parent; + myFlags = parentFlags; + } + return o; + } + + inline bool isOpacityNull() const + { return (opacity < qreal(0.001)); } + + static inline bool isOpacityNull(qreal opacity) + { return (opacity < qreal(0.001)); } + + inline bool isFullyTransparent() const + { + if (isOpacityNull()) + return true; + if (!parent) + return false; + + return isOpacityNull(calcEffectiveOpacity()); + } + + inline qreal effectiveOpacity() const { + if (!parent || !opacity) + return opacity; + + return calcEffectiveOpacity(); + } + + inline qreal combineOpacityFromParent(qreal parentOpacity) const + { + if (parent && !(flags & QGraphicsItem::ItemIgnoresParentOpacity) + && !(parent->d_ptr->flags & QGraphicsItem::ItemDoesntPropagateOpacityToChildren)) { + return parentOpacity * opacity; + } + return opacity; + } + + inline bool childrenCombineOpacity() const + { + if (!children.size()) + return true; + if (flags & QGraphicsItem::ItemDoesntPropagateOpacityToChildren) + return false; + + for (int i = 0; i < children.size(); ++i) { + if (children.at(i)->d_ptr->flags & QGraphicsItem::ItemIgnoresParentOpacity) + return false; + } + return true; + } + + inline bool childrenClippedToShape() const + { return (flags & QGraphicsItem::ItemClipsChildrenToShape) || children.isEmpty(); } + + inline bool isInvisible() const + { + return !visible || (childrenCombineOpacity() && isFullyTransparent()); + } + + inline void markParentDirty(bool updateBoundingRect = false); + + void setFocusHelper(Qt::FocusReason focusReason, bool climb, bool focusFromHide); + void clearFocusHelper(bool giveFocusToParent, bool hiddenByParentPanel); + void setSubFocus(QGraphicsItem *rootItem = 0, QGraphicsItem *stopItem = 0); + void clearSubFocus(QGraphicsItem *rootItem = 0, QGraphicsItem *stopItem = 0); + void resetFocusProxy(); + virtual void subFocusItemChange(); + virtual void focusScopeItemChange(bool isSubFocusItem); + + static void children_append(QDeclarativeListProperty<QGraphicsObject> *list, QGraphicsObject *item); + static int children_count(QDeclarativeListProperty<QGraphicsObject> *list); + static QGraphicsObject *children_at(QDeclarativeListProperty<QGraphicsObject> *list, int); + static void children_clear(QDeclarativeListProperty<QGraphicsObject> *list); + + inline QTransform transformToParent() const; + inline void ensureSortedChildren(); + static inline bool insertionOrder(QGraphicsItem *a, QGraphicsItem *b); + void ensureSequentialSiblingIndex(); + inline void sendScenePosChange(); + virtual void siblingOrderChange(); + + // Private Properties + virtual qreal width() const; + virtual void setWidth(qreal); + virtual void resetWidth(); + + virtual qreal height() const; + virtual void setHeight(qreal); + virtual void resetHeight(); + + QRectF childrenBoundingRect; + QRectF needsRepaint; + QHash<QWidget *, QRect> paintedViewBoundingRects; + QPointF pos; + qreal z; + qreal opacity; + QGraphicsScene *scene; + QGraphicsItem *parent; + QList<QGraphicsItem *> children; + struct TransformData; + TransformData *transformData; + QGraphicsEffect *graphicsEffect; + QTransform sceneTransform; + int index; + int siblingIndex; + int itemDepth; // Lazily calculated when calling depth(). + QGraphicsItem *focusProxy; + QList<QGraphicsItem **> focusProxyRefs; + QGraphicsItem *subFocusItem; + QGraphicsItem *focusScopeItem; + Qt::InputMethodHints imHints; + QGraphicsItem::PanelModality panelModality; +#ifndef QT_NO_GESTURES + QMap<Qt::GestureType, Qt::GestureFlags> gestureContext; +#endif + + // Packed 32 bits + quint32 acceptedMouseButtons : 5; + quint32 visible : 1; + quint32 explicitlyHidden : 1; + quint32 enabled : 1; + quint32 explicitlyDisabled : 1; + quint32 selected : 1; + quint32 acceptsHover : 1; + quint32 acceptDrops : 1; + quint32 isMemberOfGroup : 1; + quint32 handlesChildEvents : 1; + quint32 itemDiscovered : 1; + quint32 hasCursor : 1; + quint32 ancestorFlags : 5; + quint32 cacheMode : 2; + quint32 hasBoundingRegionGranularity : 1; + quint32 isWidget : 1; + quint32 dirty : 1; + quint32 dirtyChildren : 1; + quint32 localCollisionHack : 1; + quint32 inSetPosHelper : 1; + quint32 needSortChildren : 1; + quint32 allChildrenDirty : 1; + quint32 fullUpdatePending : 1; + + // Packed 32 bits + quint32 flags : 20; + quint32 paintedViewBoundingRectsNeedRepaint : 1; + quint32 dirtySceneTransform : 1; + quint32 geometryChanged : 1; + quint32 inDestructor : 1; + quint32 isObject : 1; + quint32 ignoreVisible : 1; + quint32 ignoreOpacity : 1; + quint32 acceptTouchEvents : 1; + quint32 acceptedTouchBeginEvent : 1; + quint32 filtersDescendantEvents : 1; + quint32 sceneTransformTranslateOnly : 1; + quint32 notifyBoundingRectChanged : 1; + + // New 32 bits + quint32 notifyInvalidated : 1; + quint32 mouseSetsFocus : 1; + quint32 explicitActivate : 1; + quint32 wantsActive : 1; + quint32 holesInSiblingIndex : 1; + quint32 sequentialOrdering : 1; + quint32 updateDueToGraphicsEffect : 1; + quint32 scenePosDescendants : 1; + quint32 pendingPolish : 1; + quint32 mayHaveChildWithGraphicsEffect : 1; + quint32 isDeclarativeItem : 1; + quint32 sendParentChangeNotification : 1; + quint32 dirtyChildrenBoundingRect : 1; + quint32 padding : 19; + + // Optional stacking order + int globalStackingOrder; + QGraphicsItem *q_ptr; +}; +Q_DECLARE_TYPEINFO(QGraphicsItemPrivate::ExtraStruct, Q_MOVABLE_TYPE); + +struct QGraphicsItemPrivate::TransformData +{ + QTransform transform; + qreal scale; + qreal rotation; + qreal xOrigin; + qreal yOrigin; + QList<QGraphicsTransform *> graphicsTransforms; + bool onlyTransform; + + TransformData() : + scale(1.0), rotation(0.0), + xOrigin(0.0), yOrigin(0.0), + onlyTransform(true) + { } + + QTransform computedFullTransform(QTransform *postmultiplyTransform = 0) const + { + if (onlyTransform) { + if (!postmultiplyTransform || postmultiplyTransform->isIdentity()) + return transform; + if (transform.isIdentity()) + return *postmultiplyTransform; + return transform * *postmultiplyTransform; + } + + QTransform x(transform); + if (!graphicsTransforms.isEmpty()) { + QMatrix4x4 m; + for (int i = 0; i < graphicsTransforms.size(); ++i) + graphicsTransforms.at(i)->applyTo(&m); + x *= m.toTransform(); + } + x.translate(xOrigin, yOrigin); + x.rotate(rotation); + x.scale(scale, scale); + x.translate(-xOrigin, -yOrigin); + if (postmultiplyTransform) + x *= *postmultiplyTransform; + return x; + } +}; + +struct QGraphicsItemPaintInfo +{ + inline QGraphicsItemPaintInfo(const QTransform *const xform1, const QTransform *const xform2, + const QTransform *const xform3, + QRegion *r, QWidget *w, QStyleOptionGraphicsItem *opt, + QPainter *p, qreal o, bool b1, bool b2) + : viewTransform(xform1), transformPtr(xform2), effectTransform(xform3), exposedRegion(r), widget(w), + option(opt), painter(p), opacity(o), wasDirtySceneTransform(b1), drawItem(b2) + {} + + const QTransform *viewTransform; + const QTransform *transformPtr; + const QTransform *effectTransform; + QRegion *exposedRegion; + QWidget *widget; + QStyleOptionGraphicsItem *option; + QPainter *painter; + qreal opacity; + quint32 wasDirtySceneTransform : 1; + quint32 drawItem : 1; +}; + +#if QT_CONFIG(graphicseffect) +class QGraphicsItemEffectSourcePrivate : public QGraphicsEffectSourcePrivate +{ +public: + QGraphicsItemEffectSourcePrivate(QGraphicsItem *i) + : QGraphicsEffectSourcePrivate(), item(i), info(0) + {} + + void detach() Q_DECL_OVERRIDE + { + item->d_ptr->graphicsEffect = 0; + item->prepareGeometryChange(); + } + + const QGraphicsItem *graphicsItem() const Q_DECL_OVERRIDE + { return item; } + + const QWidget *widget() const Q_DECL_OVERRIDE + { return 0; } + + void update() Q_DECL_OVERRIDE { + item->d_ptr->updateDueToGraphicsEffect = true; + item->update(); + item->d_ptr->updateDueToGraphicsEffect = false; + } + + void effectBoundingRectChanged() Q_DECL_OVERRIDE + { item->prepareGeometryChange(); } + + bool isPixmap() const Q_DECL_OVERRIDE + { + return item->type() == QGraphicsPixmapItem::Type + && !(item->flags() & QGraphicsItem::ItemIsSelectable) + && item->d_ptr->children.size() == 0; + //|| (item->d_ptr->isObject && qobject_cast<QDeclarativeImage *>(q_func())); + } + + const QStyleOption *styleOption() const Q_DECL_OVERRIDE + { return info ? info->option : 0; } + + QRect deviceRect() const Q_DECL_OVERRIDE + { + if (!info || !info->widget) { + qWarning("QGraphicsEffectSource::deviceRect: Not yet implemented, lacking device context"); + return QRect(); + } + return info->widget->rect(); + } + + QRectF boundingRect(Qt::CoordinateSystem system) const Q_DECL_OVERRIDE; + void draw(QPainter *) Q_DECL_OVERRIDE; + QPixmap pixmap(Qt::CoordinateSystem system, + QPoint *offset, + QGraphicsEffect::PixmapPadMode mode) const Q_DECL_OVERRIDE; + QRect paddedEffectRect(Qt::CoordinateSystem system, QGraphicsEffect::PixmapPadMode mode, const QRectF &sourceRect, bool *unpadded = 0) const; + + QGraphicsItem *item; + QGraphicsItemPaintInfo *info; + QTransform lastEffectTransform; +}; +#endif // QT_CONFIG(graphicseffect) + +/*! + Returns \c true if \a item1 is on top of \a item2. + The items don't need to be siblings. + + \internal +*/ +inline bool qt_closestItemFirst(const QGraphicsItem *item1, const QGraphicsItem *item2) +{ + // Siblings? Just check their z-values. + const QGraphicsItemPrivate *d1 = item1->d_ptr.data(); + const QGraphicsItemPrivate *d2 = item2->d_ptr.data(); + if (d1->parent == d2->parent) + return qt_closestLeaf(item1, item2); + + // Find common ancestor, and each item's ancestor closest to the common + // ancestor. + int item1Depth = d1->depth(); + int item2Depth = d2->depth(); + const QGraphicsItem *p = item1; + const QGraphicsItem *t1 = item1; + while (item1Depth > item2Depth && (p = p->d_ptr->parent)) { + if (p == item2) { + // item2 is one of item1's ancestors; item1 is on top + return !(t1->d_ptr->flags & QGraphicsItem::ItemStacksBehindParent); + } + t1 = p; + --item1Depth; + } + p = item2; + const QGraphicsItem *t2 = item2; + while (item2Depth > item1Depth && (p = p->d_ptr->parent)) { + if (p == item1) { + // item1 is one of item2's ancestors; item1 is not on top + return (t2->d_ptr->flags & QGraphicsItem::ItemStacksBehindParent); + } + t2 = p; + --item2Depth; + } + + // item1Ancestor is now at the same level as item2Ancestor, but not the same. + const QGraphicsItem *p1 = t1; + const QGraphicsItem *p2 = t2; + while (t1 && t1 != t2) { + p1 = t1; + p2 = t2; + t1 = t1->d_ptr->parent; + t2 = t2->d_ptr->parent; + } + + // in case we have a common ancestor, we compare the immediate children in the ancestor's path. + // otherwise we compare the respective items' topLevelItems directly. + return qt_closestLeaf(p1, p2); +} + +/*! + Returns \c true if \a item2 is on top of \a item1. + The items don't need to be siblings. + + \internal +*/ +inline bool qt_closestItemLast(const QGraphicsItem *item1, const QGraphicsItem *item2) +{ + return qt_closestItemFirst(item2, item1); +} + +/*! + \internal +*/ +inline bool qt_closestLeaf(const QGraphicsItem *item1, const QGraphicsItem *item2) +{ + // Return true if sibling item1 is on top of item2. + const QGraphicsItemPrivate *d1 = item1->d_ptr.data(); + const QGraphicsItemPrivate *d2 = item2->d_ptr.data(); + bool f1 = d1->flags & QGraphicsItem::ItemStacksBehindParent; + bool f2 = d2->flags & QGraphicsItem::ItemStacksBehindParent; + if (f1 != f2) + return f2; + if (d1->z != d2->z) + return d1->z > d2->z; + return d1->siblingIndex > d2->siblingIndex; +} + +/*! + \internal +*/ +inline bool qt_notclosestLeaf(const QGraphicsItem *item1, const QGraphicsItem *item2) +{ return qt_closestLeaf(item2, item1); } + +/* + return the full transform of the item to the parent. This include the position and all the transform data +*/ +inline QTransform QGraphicsItemPrivate::transformToParent() const +{ + QTransform matrix; + combineTransformToParent(&matrix); + return matrix; +} + +/*! + \internal +*/ +inline void QGraphicsItemPrivate::ensureSortedChildren() +{ + if (needSortChildren) { + needSortChildren = 0; + sequentialOrdering = 1; + if (children.isEmpty()) + return; + std::sort(children.begin(), children.end(), qt_notclosestLeaf); + for (int i = 0; i < children.size(); ++i) { + if (children.at(i)->d_ptr->siblingIndex != i) { + sequentialOrdering = 0; + break; + } + } + } +} + +/*! + \internal +*/ +inline bool QGraphicsItemPrivate::insertionOrder(QGraphicsItem *a, QGraphicsItem *b) +{ + return a->d_ptr->siblingIndex < b->d_ptr->siblingIndex; +} + +/*! + \internal +*/ +inline void QGraphicsItemPrivate::markParentDirty(bool updateBoundingRect) +{ + QGraphicsItemPrivate *parentp = this; +#if QT_CONFIG(graphicseffect) + if (updateBoundingRect && parentp->graphicsEffect && !parentp->inSetPosHelper) { + parentp->notifyInvalidated = 1; + static_cast<QGraphicsItemEffectSourcePrivate *>(parentp->graphicsEffect->d_func() + ->source->d_func())->invalidateCache(); + } +#endif + while (parentp->parent) { + parentp = parentp->parent->d_ptr.data(); + parentp->dirtyChildren = 1; + + if (updateBoundingRect) { + parentp->dirtyChildrenBoundingRect = 1; + // ### Only do this if the parent's effect applies to the entire subtree. + parentp->notifyBoundingRectChanged = 1; + } +#if QT_CONFIG(graphicseffect) + if (parentp->graphicsEffect) { + if (updateBoundingRect) { + static_cast<QGraphicsItemEffectSourcePrivate *>(parentp->graphicsEffect->d_func() + ->source->d_func())->invalidateCache(); + parentp->notifyInvalidated = 1; + } + if (parentp->scene && parentp->graphicsEffect->isEnabled()) { + parentp->dirty = 1; + parentp->fullUpdatePending = 1; + } + } +#endif + } +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicslayout_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicslayout_p.h new file mode 100644 index 000000000..302ad1e11 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicslayout_p.h @@ -0,0 +1,149 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSLAYOUT_P_H +#define QGRAPHICSLAYOUT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> + +#include "qgraphicslayout.h" +#include "qgraphicslayoutitem_p.h" +#include <QtWidgets/qstyle.h> +#include <QtWidgets/qwidget.h> +#include <QtWidgets/qstyleoption.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsLayoutItem; +class QGraphicsWidget; + +#ifdef QT_DEBUG +inline bool qt_graphicsLayoutDebug() +{ + static int checked_env = -1; + if(checked_env == -1) + checked_env = !!qEnvironmentVariableIntValue("QT_GRAPHICSLAYOUT_DEBUG"); + return checked_env; +} +#endif + + +class QLayoutStyleInfo +{ +public: + inline QLayoutStyleInfo() { invalidate(); } + inline QLayoutStyleInfo(QStyle *style, QWidget *widget) + : m_valid(true), m_style(style), m_widget(widget) + { + Q_ASSERT(style); + if (widget) //### + m_styleOption.initFrom(widget); + m_defaultSpacing[0] = style->pixelMetric(QStyle::PM_LayoutHorizontalSpacing); + m_defaultSpacing[1] = style->pixelMetric(QStyle::PM_LayoutVerticalSpacing); + } + + inline void invalidate() { m_valid = false; m_style = 0; m_widget = 0; } + + inline QStyle *style() const { return m_style; } + inline QWidget *widget() const { return m_widget; } + + inline bool operator==(const QLayoutStyleInfo &other) const + { return m_style == other.m_style && m_widget == other.m_widget; } + inline bool operator!=(const QLayoutStyleInfo &other) const + { return !(*this == other); } + + inline void setDefaultSpacing(Qt::Orientation o, qreal spacing){ + if (spacing >= 0) + m_defaultSpacing[o - 1] = spacing; + } + + inline qreal defaultSpacing(Qt::Orientation o) const { + return m_defaultSpacing[o - 1]; + } + + inline qreal perItemSpacing(QSizePolicy::ControlType control1, + QSizePolicy::ControlType control2, + Qt::Orientation orientation) const + { + Q_ASSERT(style()); + return style()->layoutSpacing(control1, control2, orientation, &m_styleOption, widget()); + } +private: + bool m_valid; + QStyle *m_style; + QWidget *m_widget; + QStyleOption m_styleOption; + qreal m_defaultSpacing[2]; +}; + +class Q_AUTOTEST_EXPORT QGraphicsLayoutPrivate : public QGraphicsLayoutItemPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsLayout) + +public: + QGraphicsLayoutPrivate() : QGraphicsLayoutItemPrivate(0, true), left(-1.0), top(-1.0), right(-1.0), bottom(-1.0), + activated(true) { } + + void reparentChildItems(QGraphicsItem *newParent); + void getMargin(qreal *result, qreal userMargin, QStyle::PixelMetric pm) const; + Qt::LayoutDirection visualDirection() const; + + void addChildLayoutItem(QGraphicsLayoutItem *item); + void activateRecursive(QGraphicsLayoutItem *item); + + qreal left, top, right, bottom; + bool activated; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicslayoutitem_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicslayoutitem_p.h new file mode 100644 index 000000000..6aaa85381 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicslayoutitem_p.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSLAYOUTITEM_P_H +#define QGRAPHICSLAYOUTITEM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/QSizeF> +#include <QtWidgets/QSizePolicy> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsLayoutItem; +class Q_AUTOTEST_EXPORT QGraphicsLayoutItemPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsLayoutItem) +public: + virtual ~QGraphicsLayoutItemPrivate(); + QGraphicsLayoutItemPrivate(QGraphicsLayoutItem *parent, bool isLayout); + static QGraphicsLayoutItemPrivate *get(QGraphicsLayoutItem *q) { return q->d_func();} + static const QGraphicsLayoutItemPrivate *get(const QGraphicsLayoutItem *q) { return q->d_func();} + + void init(); + QSizeF *effectiveSizeHints(const QSizeF &constraint) const; + QGraphicsItem *parentItem() const; + void ensureUserSizeHints(); + void setSize(Qt::SizeHint which, const QSizeF &size); + enum SizeComponent { Width, Height }; + void setSizeComponent(Qt::SizeHint which, SizeComponent component, qreal value); + + bool hasHeightForWidth() const; + bool hasWidthForHeight() const; + + QSizePolicy sizePolicy; + QGraphicsLayoutItem *parent; + + QSizeF *userSizeHints; + mutable QSizeF cachedSizeHints[Qt::NSizeHints]; + mutable QSizeF cachedConstraint; + mutable QSizeF cachedSizeHintsWithConstraints[Qt::NSizeHints]; + + mutable quint32 sizeHintCacheDirty : 1; + mutable quint32 sizeHintWithConstraintCacheDirty : 1; + quint32 isLayout : 1; + quint32 ownedByLayout : 1; + + QGraphicsLayoutItem *q_ptr; + QRectF geom; + QGraphicsItem *graphicsItem; +}; + +QT_END_NAMESPACE + +#endif //QGRAPHICSLAYOUTITEM_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicslayoutstyleinfo_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicslayoutstyleinfo_p.h new file mode 100644 index 000000000..3463ae71b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicslayoutstyleinfo_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGRAPHICSLAYOUTSTYLEINFO_P_H +#define QGRAPHICSLAYOUTSTYLEINFO_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtGui/private/qabstractlayoutstyleinfo_p.h> +#include <QtWidgets/qstyleoption.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QStyle; +class QWidget; +class QGraphicsLayoutPrivate; + +class QGraphicsLayoutStyleInfo : public QAbstractLayoutStyleInfo +{ +public: + QGraphicsLayoutStyleInfo(const QGraphicsLayoutPrivate *layout); + ~QGraphicsLayoutStyleInfo(); + + virtual qreal combinedLayoutSpacing(QLayoutPolicy::ControlTypes controls1, + QLayoutPolicy::ControlTypes controls2, + Qt::Orientation orientation) const Q_DECL_OVERRIDE; + + virtual qreal perItemSpacing(QLayoutPolicy::ControlType control1, + QLayoutPolicy::ControlType control2, + Qt::Orientation orientation) const Q_DECL_OVERRIDE; + + virtual qreal spacing(Qt::Orientation orientation) const Q_DECL_OVERRIDE; + + virtual qreal windowMargin(Qt::Orientation orientation) const Q_DECL_OVERRIDE; + + virtual void invalidate() Q_DECL_OVERRIDE + { + m_style = 0; + QAbstractLayoutStyleInfo::invalidate(); + } + + QWidget *widget() const; + QStyle *style() const; + +private: + const QGraphicsLayoutPrivate *m_layout; + mutable QStyle *m_style; + QStyleOption m_styleOption; + QWidget *m_widget; +}; + +QT_END_NAMESPACE + +#endif // QGRAPHICSLAYOUTSTYLEINFO_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsproxywidget_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsproxywidget_p.h new file mode 100644 index 000000000..593b686e0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsproxywidget_p.h @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSPROXYWIDGET_P_H +#define QGRAPHICSPROXYWIDGET_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qgraphicsproxywidget.h" +#include "private/qgraphicswidget_p.h" + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class Q_AUTOTEST_EXPORT QGraphicsProxyWidgetPrivate : public QGraphicsWidgetPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsProxyWidget) +public: + QGraphicsProxyWidgetPrivate(); + ~QGraphicsProxyWidgetPrivate(); + + void init(); + void sendWidgetMouseEvent(QGraphicsSceneMouseEvent *event); + void sendWidgetMouseEvent(QGraphicsSceneHoverEvent *event); + void sendWidgetKeyEvent(QKeyEvent *event); + void setWidget_helper(QWidget *widget, bool autoShow); + + QWidget *findFocusChild(QWidget *child, bool next) const; + void removeSubFocusHelper(QWidget *widget, Qt::FocusReason reason); + + void _q_removeWidgetSlot(); + + void embedSubWindow(QWidget *); + void unembedSubWindow(QWidget *); + + bool isProxyWidget() const override; + + QPointer<QWidget> widget; + QPointer<QWidget> lastWidgetUnderMouse; + QPointer<QWidget> embeddedMouseGrabber; + QWidget *dragDropWidget; + Qt::DropAction lastDropAction; + + void updateWidgetGeometryFromProxy(); + void updateProxyGeometryFromWidget(); + + void updateProxyInputMethodAcceptanceFromWidget(); + + QPointF mapToReceiver(const QPointF &pos, const QWidget *receiver) const; + + enum ChangeMode { + NoMode, + ProxyToWidgetMode, + WidgetToProxyMode + }; + quint32 posChangeMode : 2; + quint32 sizeChangeMode : 2; + quint32 visibleChangeMode : 2; + quint32 enabledChangeMode : 2; + quint32 styleChangeMode : 2; + quint32 paletteChangeMode : 2; + quint32 tooltipChangeMode : 2; + quint32 focusFromWidgetToProxy : 1; + quint32 proxyIsGivingFocus : 1; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscene_bsp_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscene_bsp_p.h new file mode 100644 index 000000000..26e612b2d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscene_bsp_p.h @@ -0,0 +1,129 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSSCENEBSPTREE_P_H +#define QGRAPHICSSCENEBSPTREE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/qlist.h> + +#include <QtCore/qrect.h> +#include <QtCore/qset.h> +#include <QtCore/qvector.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsItem; +class QGraphicsSceneBspTreeVisitor; +class QGraphicsSceneInsertItemBspTreeVisitor; +class QGraphicsSceneRemoveItemBspTreeVisitor; +class QGraphicsSceneFindItemBspTreeVisitor; + +class QGraphicsSceneBspTree +{ +public: + struct Node + { + enum Type { Horizontal, Vertical, Leaf }; + union { + qreal offset; + int leafIndex; + }; + Type type; + }; + + QGraphicsSceneBspTree(); + ~QGraphicsSceneBspTree(); + + void initialize(const QRectF &rect, int depth); + void clear(); + + void insertItem(QGraphicsItem *item, const QRectF &rect); + void removeItem(QGraphicsItem *item, const QRectF &rect); + void removeItems(const QSet<QGraphicsItem *> &items); + + QList<QGraphicsItem *> items(const QRectF &rect, bool onlyTopLevelItems = false) const; + int leafCount() const; + + inline int firstChildIndex(int index) const + { return index * 2 + 1; } + + inline int parentIndex(int index) const + { return index > 0 ? ((index & 1) ? ((index - 1) / 2) : ((index - 2) / 2)) : -1; } + + QString debug(int index) const; + +private: + void initialize(const QRectF &rect, int depth, int index); + void climbTree(QGraphicsSceneBspTreeVisitor *visitor, const QRectF &rect, int index = 0) const; + QRectF rectForIndex(int index) const; + + QVector<Node> nodes; + QVector<QList<QGraphicsItem *> > leaves; + int leafCnt; + QRectF rect; + + QGraphicsSceneInsertItemBspTreeVisitor *insertVisitor; + QGraphicsSceneRemoveItemBspTreeVisitor *removeVisitor; + QGraphicsSceneFindItemBspTreeVisitor *findVisitor; +}; + +class QGraphicsSceneBspTreeVisitor +{ +public: + virtual ~QGraphicsSceneBspTreeVisitor() { } + virtual void visit(QList<QGraphicsItem *> *items) = 0; +}; + +QT_END_NAMESPACE + +#endif // QGRAPHICSSCENEBSPTREE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscene_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscene_p.h new file mode 100644 index 000000000..2f5d7c54b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscene_p.h @@ -0,0 +1,359 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSSCENE_P_H +#define QGRAPHICSSCENE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qgraphicsscene.h" + +#include "qgraphicssceneevent.h" +#include "qgraphicsview.h" +#include "qgraphicsview_p.h" +#include "qgraphicsitem_p.h" + +#include <private/qobject_p.h> +#include <QtCore/qbitarray.h> +#include <QtCore/qlist.h> +#include <QtCore/qmap.h> +#include <QtCore/qset.h> +#include <QtGui/qfont.h> +#include <QtGui/qpalette.h> +#include <QtWidgets/qstyle.h> +#include <QtWidgets/qstyleoption.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsSceneIndex; +class QGraphicsView; +class QGraphicsWidget; + +class Q_AUTOTEST_EXPORT QGraphicsScenePrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsScene) +public: + QGraphicsScenePrivate(); + void init(); + + static QGraphicsScenePrivate *get(QGraphicsScene *q); + + int changedSignalIndex; + int processDirtyItemsIndex; + int polishItemsIndex; + + QGraphicsScene::ItemIndexMethod indexMethod; + QGraphicsSceneIndex *index; + + int lastItemCount; + + QRectF sceneRect; + + quint32 hasSceneRect : 1; + quint32 dirtyGrowingItemsBoundingRect : 1; + quint32 updateAll : 1; + quint32 calledEmitUpdated : 1; + quint32 processDirtyItemsEmitted : 1; + quint32 needSortTopLevelItems : 1; + quint32 holesInTopLevelSiblingIndex : 1; + quint32 topLevelSequentialOrdering : 1; + quint32 scenePosDescendantsUpdatePending : 1; + quint32 stickyFocus : 1; + quint32 hasFocus : 1; + quint32 lastMouseGrabberItemHasImplicitMouseGrab : 1; + quint32 allItemsIgnoreHoverEvents : 1; + quint32 allItemsUseDefaultCursor : 1; + quint32 painterStateProtection : 1; + quint32 sortCacheEnabled : 1; // for compatibility + quint32 allItemsIgnoreTouchEvents : 1; + quint32 padding : 15; + + qreal minimumRenderSize; + + QRectF growingItemsBoundingRect; + + void _q_emitUpdated(); + QList<QRectF> updatedRects; + + QPainterPath selectionArea; + int selectionChanging; + QSet<QGraphicsItem *> selectedItems; + QVector<QGraphicsItem *> unpolishedItems; + QList<QGraphicsItem *> topLevelItems; + + QHash<QGraphicsItem *, QPointF> movingItemsInitialPositions; + void registerTopLevelItem(QGraphicsItem *item); + void unregisterTopLevelItem(QGraphicsItem *item); + void _q_updateLater(); + void _q_polishItems(); + + void _q_processDirtyItems(); + + QSet<QGraphicsItem *> scenePosItems; + void setScenePosItemEnabled(QGraphicsItem *item, bool enabled); + void registerScenePosItem(QGraphicsItem *item); + void unregisterScenePosItem(QGraphicsItem *item); + void _q_updateScenePosDescendants(); + + void removeItemHelper(QGraphicsItem *item); + + QBrush backgroundBrush; + QBrush foregroundBrush; + + quint32 rectAdjust; + QGraphicsItem *focusItem; + QGraphicsItem *lastFocusItem; + QGraphicsItem *passiveFocusItem; + QGraphicsWidget *tabFocusFirst; + QGraphicsItem *activePanel; + QGraphicsItem *lastActivePanel; + int activationRefCount; + int childExplicitActivation; + void setActivePanelHelper(QGraphicsItem *item, bool duringActivationEvent); + void setFocusItemHelper(QGraphicsItem *item, Qt::FocusReason focusReason, + bool emitFocusChanged = true); + + QList<QGraphicsWidget *> popupWidgets; + void addPopup(QGraphicsWidget *widget); + void removePopup(QGraphicsWidget *widget, bool itemIsDying = false); + + QGraphicsItem *lastMouseGrabberItem; + QList<QGraphicsItem *> mouseGrabberItems; + void grabMouse(QGraphicsItem *item, bool implicit = false); + void ungrabMouse(QGraphicsItem *item, bool itemIsDying = false); + void clearMouseGrabber(); + + QList<QGraphicsItem *> keyboardGrabberItems; + void grabKeyboard(QGraphicsItem *item); + void ungrabKeyboard(QGraphicsItem *item, bool itemIsDying = false); + void clearKeyboardGrabber(); + + QGraphicsItem *dragDropItem; + QGraphicsWidget *enterWidget; + Qt::DropAction lastDropAction; + QList<QGraphicsItem *> cachedItemsUnderMouse; + QList<QGraphicsItem *> hoverItems; + QPointF lastSceneMousePos; + void enableMouseTrackingOnViews(); + QMap<Qt::MouseButton, QPointF> mouseGrabberButtonDownPos; + QMap<Qt::MouseButton, QPointF> mouseGrabberButtonDownScenePos; + QMap<Qt::MouseButton, QPoint> mouseGrabberButtonDownScreenPos; + QList<QGraphicsItem *> itemsAtPosition(const QPoint &screenPos, + const QPointF &scenePos, + QWidget *widget) const; + void storeMouseButtonsForMouseGrabber(QGraphicsSceneMouseEvent *event); + + QList<QGraphicsView *> views; + void addView(QGraphicsView *view); + void removeView(QGraphicsView *view); + + QMultiMap<QGraphicsItem *, QGraphicsItem *> sceneEventFilters; + void installSceneEventFilter(QGraphicsItem *watched, QGraphicsItem *filter); + void removeSceneEventFilter(QGraphicsItem *watched, QGraphicsItem *filter); + bool filterDescendantEvent(QGraphicsItem *item, QEvent *event); + bool filterEvent(QGraphicsItem *item, QEvent *event); + bool sendEvent(QGraphicsItem *item, QEvent *event); + + bool dispatchHoverEvent(QGraphicsSceneHoverEvent *hoverEvent); + bool itemAcceptsHoverEvents_helper(const QGraphicsItem *item) const; + void leaveScene(QWidget *viewport); + + void cloneDragDropEvent(QGraphicsSceneDragDropEvent *dest, + QGraphicsSceneDragDropEvent *source); + void sendDragDropEvent(QGraphicsItem *item, + QGraphicsSceneDragDropEvent *dragDropEvent); + void sendHoverEvent(QEvent::Type type, QGraphicsItem *item, + QGraphicsSceneHoverEvent *hoverEvent); + void sendMouseEvent(QGraphicsSceneMouseEvent *mouseEvent); + void mousePressEventHandler(QGraphicsSceneMouseEvent *mouseEvent); + QGraphicsWidget *windowForItem(const QGraphicsItem *item) const; + + void drawItemHelper(QGraphicsItem *item, QPainter *painter, + const QStyleOptionGraphicsItem *option, QWidget *widget, + bool painterStateProtection); + + void drawItems(QPainter *painter, const QTransform *const viewTransform, + QRegion *exposedRegion, QWidget *widget); + + void drawSubtreeRecursive(QGraphicsItem *item, QPainter *painter, const QTransform *const, + QRegion *exposedRegion, QWidget *widget, qreal parentOpacity = qreal(1.0), + const QTransform *const effectTransform = 0); + void draw(QGraphicsItem *, QPainter *, const QTransform *const, const QTransform *const, + QRegion *, QWidget *, qreal, const QTransform *const, bool, bool); + + void markDirty(QGraphicsItem *item, const QRectF &rect = QRectF(), bool invalidateChildren = false, + bool force = false, bool ignoreOpacity = false, bool removingItemFromScene = false, + bool updateBoundingRect = false); + void processDirtyItemsRecursive(QGraphicsItem *item, bool dirtyAncestorContainsChildren = false, + qreal parentOpacity = qreal(1.0)); + + inline void resetDirtyItem(QGraphicsItem *item, bool recursive = false) + { + Q_ASSERT(item); + item->d_ptr->dirty = 0; + item->d_ptr->paintedViewBoundingRectsNeedRepaint = 0; + item->d_ptr->geometryChanged = 0; + if (!item->d_ptr->dirtyChildren) + recursive = false; + item->d_ptr->dirtyChildren = 0; + item->d_ptr->needsRepaint = QRectF(); + item->d_ptr->allChildrenDirty = 0; + item->d_ptr->fullUpdatePending = 0; + item->d_ptr->ignoreVisible = 0; + item->d_ptr->ignoreOpacity = 0; +#if QT_CONFIG(graphicseffect) + QGraphicsEffect::ChangeFlags flags; + if (item->d_ptr->notifyBoundingRectChanged) { + flags |= QGraphicsEffect::SourceBoundingRectChanged; + item->d_ptr->notifyBoundingRectChanged = 0; + } + if (item->d_ptr->notifyInvalidated) { + flags |= QGraphicsEffect::SourceInvalidated; + item->d_ptr->notifyInvalidated = 0; + } +#endif // QT_CONFIG(graphicseffect) + if (recursive) { + for (int i = 0; i < item->d_ptr->children.size(); ++i) + resetDirtyItem(item->d_ptr->children.at(i), recursive); + } +#if QT_CONFIG(graphicseffect) + if (flags && item->d_ptr->graphicsEffect) + item->d_ptr->graphicsEffect->sourceChanged(flags); +#endif // QT_CONFIG(graphicseffect) + } + + inline void ensureSortedTopLevelItems() + { + if (needSortTopLevelItems) { + std::sort(topLevelItems.begin(), topLevelItems.end(), qt_notclosestLeaf); + topLevelSequentialOrdering = false; + needSortTopLevelItems = false; + } + } + + void ensureSequentialTopLevelSiblingIndexes(); + + QStyle *style; + QFont font; + void setFont_helper(const QFont &font); + void resolveFont(); + void updateFont(const QFont &font); + QPalette palette; + void setPalette_helper(const QPalette &palette); + void resolvePalette(); + void updatePalette(const QPalette &palette); + + QStyleOptionGraphicsItem styleOptionTmp; + + QMap<int, QTouchEvent::TouchPoint> sceneCurrentTouchPoints; + QMap<int, QGraphicsItem *> itemForTouchPointId; + static void updateTouchPointsForItem(QGraphicsItem *item, QTouchEvent *touchEvent); + int findClosestTouchPointId(const QPointF &scenePos); + void touchEventHandler(QTouchEvent *touchEvent); + bool sendTouchBeginEvent(QGraphicsItem *item, QTouchEvent *touchEvent); + void enableTouchEventsOnViews(); + + QList<QGraphicsObject *> cachedTargetItems; +#ifndef QT_NO_GESTURES + QHash<QGraphicsObject *, QSet<QGesture *> > cachedItemGestures; + QHash<QGraphicsObject *, QSet<QGesture *> > cachedAlreadyDeliveredGestures; + QHash<QGesture *, QGraphicsObject *> gestureTargets; + QHash<Qt::GestureType, int> grabbedGestures; + void gestureEventHandler(QGestureEvent *event); + void gestureTargetsAtHotSpots(const QSet<QGesture *> &gestures, + Qt::GestureFlag flag, + QHash<QGraphicsObject *, QSet<QGesture *> > *targets, + QSet<QGraphicsObject *> *itemsSet = 0, + QSet<QGesture *> *normal = 0, + QSet<QGesture *> *conflicts = 0); + void cancelGesturesForChildren(QGesture *original); + void grabGesture(QGraphicsItem *, Qt::GestureType gesture); + void ungrabGesture(QGraphicsItem *, Qt::GestureType gesture); +#endif // QT_NO_GESTURES + + void updateInputMethodSensitivityInViews(); + + QList<QGraphicsItem *> modalPanels; + void enterModal(QGraphicsItem *item, + QGraphicsItem::PanelModality panelModality = QGraphicsItem::NonModal); + void leaveModal(QGraphicsItem *item); +}; + +// QRectF::intersects() returns false always if either the source or target +// rectangle's width or height are 0. This works around that problem. +static inline void _q_adjustRect(QRectF *rect) +{ + Q_ASSERT(rect); + if (!rect->width()) + rect->adjust(qreal(-0.00001), 0, qreal(0.00001), 0); + if (!rect->height()) + rect->adjust(0, qreal(-0.00001), 0, qreal(0.00001)); +} + +static inline QRectF adjustedItemBoundingRect(const QGraphicsItem *item) +{ + Q_ASSERT(item); + QRectF boundingRect(item->boundingRect()); + _q_adjustRect(&boundingRect); + return boundingRect; +} + +static inline QRectF adjustedItemEffectiveBoundingRect(const QGraphicsItem *item) +{ + Q_ASSERT(item); + QRectF boundingRect(QGraphicsItemPrivate::get(item)->effectiveBoundingRect()); + _q_adjustRect(&boundingRect); + return boundingRect; +} + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscenebsptreeindex_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscenebsptreeindex_p.h new file mode 100644 index 000000000..8e7840776 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscenebsptreeindex_p.h @@ -0,0 +1,202 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#ifndef QGRAPHICSBSPTREEINDEX_H +#define QGRAPHICSBSPTREEINDEX_H + +#include <QtWidgets/private/qtwidgetsglobal_p.h> + +#include "qgraphicssceneindex_p.h" +#include "qgraphicsitem_p.h" +#include "qgraphicsscene_bsp_p.h" + +#include <QtCore/qrect.h> +#include <QtCore/qlist.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +static const int QGRAPHICSSCENE_INDEXTIMER_TIMEOUT = 2000; + +class QGraphicsScene; +class QGraphicsSceneBspTreeIndexPrivate; + +class Q_AUTOTEST_EXPORT QGraphicsSceneBspTreeIndex : public QGraphicsSceneIndex +{ + Q_OBJECT + Q_PROPERTY(int bspTreeDepth READ bspTreeDepth WRITE setBspTreeDepth) +public: + QGraphicsSceneBspTreeIndex(QGraphicsScene *scene = 0); + ~QGraphicsSceneBspTreeIndex(); + + QList<QGraphicsItem *> estimateItems(const QRectF &rect, Qt::SortOrder order) const Q_DECL_OVERRIDE; + QList<QGraphicsItem *> estimateTopLevelItems(const QRectF &rect, Qt::SortOrder order) const Q_DECL_OVERRIDE; + QList<QGraphicsItem *> items(Qt::SortOrder order = Qt::DescendingOrder) const Q_DECL_OVERRIDE; + + int bspTreeDepth() const; + void setBspTreeDepth(int depth); + +protected Q_SLOTS: + void updateSceneRect(const QRectF &rect) Q_DECL_OVERRIDE; + +protected: + bool event(QEvent *event) Q_DECL_OVERRIDE; + void clear() Q_DECL_OVERRIDE; + + void addItem(QGraphicsItem *item) Q_DECL_OVERRIDE; + void removeItem(QGraphicsItem *item) Q_DECL_OVERRIDE; + void prepareBoundingRectChange(const QGraphicsItem *item) Q_DECL_OVERRIDE; + + void itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const void *const value) Q_DECL_OVERRIDE; + +private : + Q_DECLARE_PRIVATE(QGraphicsSceneBspTreeIndex) + Q_DISABLE_COPY(QGraphicsSceneBspTreeIndex) + Q_PRIVATE_SLOT(d_func(), void _q_updateSortCache()) + Q_PRIVATE_SLOT(d_func(), void _q_updateIndex()) + + friend class QGraphicsScene; + friend class QGraphicsScenePrivate; +}; + +class QGraphicsSceneBspTreeIndexPrivate : public QGraphicsSceneIndexPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsSceneBspTreeIndex) +public: + QGraphicsSceneBspTreeIndexPrivate(QGraphicsScene *scene); + + QGraphicsSceneBspTree bsp; + QRectF sceneRect; + int bspTreeDepth; + int indexTimerId; + bool restartIndexTimer; + bool regenerateIndex; + int lastItemCount; + + QList<QGraphicsItem *> indexedItems; + QList<QGraphicsItem *> unindexedItems; + QList<QGraphicsItem *> untransformableItems; + QList<int> freeItemIndexes; + + bool purgePending; + QSet<QGraphicsItem *> removedItems; + void purgeRemovedItems(); + + void _q_updateIndex(); + void startIndexTimer(int interval = QGRAPHICSSCENE_INDEXTIMER_TIMEOUT); + void resetIndex(); + + void _q_updateSortCache(); + bool sortCacheEnabled; + bool updatingSortCache; + void invalidateSortCache(); + void addItem(QGraphicsItem *item, bool recursive = false); + void removeItem(QGraphicsItem *item, bool recursive = false, bool moveToUnindexedItems = false); + QList<QGraphicsItem *> estimateItems(const QRectF &, Qt::SortOrder, bool b = false); + + static void climbTree(QGraphicsItem *item, int *stackingOrder); + + static inline bool closestItemFirst_withCache(const QGraphicsItem *item1, const QGraphicsItem *item2) + { + return item1->d_ptr->globalStackingOrder < item2->d_ptr->globalStackingOrder; + } + static inline bool closestItemLast_withCache(const QGraphicsItem *item1, const QGraphicsItem *item2) + { + return item1->d_ptr->globalStackingOrder >= item2->d_ptr->globalStackingOrder; + } + + static void sortItems(QList<QGraphicsItem *> *itemList, Qt::SortOrder order, + bool cached, bool onlyTopLevelItems = false); +}; + +static inline bool QRectF_intersects(const QRectF &s, const QRectF &r) +{ + qreal xp = s.left(); + qreal yp = s.top(); + qreal w = s.width(); + qreal h = s.height(); + qreal l1 = xp; + qreal r1 = xp; + if (w < 0) + l1 += w; + else + r1 += w; + + qreal l2 = r.left(); + qreal r2 = r.left(); + if (w < 0) + l2 += r.width(); + else + r2 += r.width(); + + if (l1 >= r2 || l2 >= r1) + return false; + + qreal t1 = yp; + qreal b1 = yp; + if (h < 0) + t1 += h; + else + b1 += h; + + qreal t2 = r.top(); + qreal b2 = r.top(); + if (r.height() < 0) + t2 += r.height(); + else + b2 += r.height(); + + return !(t1 >= b2 || t2 >= b1); +} + +QT_END_NAMESPACE + +#endif // QGRAPHICSBSPTREEINDEX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicssceneindex_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicssceneindex_p.h new file mode 100644 index 000000000..bdc57bd9e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicssceneindex_p.h @@ -0,0 +1,160 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSSCENEINDEX_H +#define QGRAPHICSSCENEINDEX_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qgraphicsscene_p.h" +#include "qgraphicsscene.h" +#include <private/qobject_p.h> + +#include <QtCore/qnamespace.h> +#include <QtCore/qobject.h> +#include <QtGui/qtransform.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsSceneIndexPrivate; +class QPointF; +class QRectF; +template<typename T> class QList; + +typedef bool (*QGraphicsSceneIndexIntersector)(const QGraphicsItem *item, const QRectF &exposeRect, Qt::ItemSelectionMode mode, + const QTransform &deviceTransform, const void *data); + +class Q_AUTOTEST_EXPORT QGraphicsSceneIndex : public QObject +{ + Q_OBJECT + +public: + QGraphicsSceneIndex(QGraphicsScene *scene = 0); + virtual ~QGraphicsSceneIndex(); + + QGraphicsScene *scene() const; + + virtual QList<QGraphicsItem *> items(Qt::SortOrder order = Qt::DescendingOrder) const = 0; + virtual QList<QGraphicsItem *> items(const QPointF &pos, Qt::ItemSelectionMode mode, + Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const; + virtual QList<QGraphicsItem *> items(const QRectF &rect, Qt::ItemSelectionMode mode, + Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const; + virtual QList<QGraphicsItem *> items(const QPolygonF &polygon, Qt::ItemSelectionMode mode, + Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const; + virtual QList<QGraphicsItem *> items(const QPainterPath &path, Qt::ItemSelectionMode mode, + Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const; + virtual QList<QGraphicsItem *> estimateItems(const QPointF &point, Qt::SortOrder order) const; + virtual QList<QGraphicsItem *> estimateItems(const QRectF &rect, Qt::SortOrder order) const = 0; + virtual QList<QGraphicsItem *> estimateTopLevelItems(const QRectF &, Qt::SortOrder order) const; + +protected Q_SLOTS: + virtual void updateSceneRect(const QRectF &rect); + +protected: + virtual void clear(); + virtual void addItem(QGraphicsItem *item) = 0; + virtual void removeItem(QGraphicsItem *item) = 0; + virtual void deleteItem(QGraphicsItem *item); + + virtual void itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange, const void *const value); + virtual void prepareBoundingRectChange(const QGraphicsItem *item); + + QGraphicsSceneIndex(QGraphicsSceneIndexPrivate &dd, QGraphicsScene *scene); + + friend class QGraphicsScene; + friend class QGraphicsScenePrivate; + friend class QGraphicsItem; + friend class QGraphicsItemPrivate; + friend class QGraphicsSceneBspTreeIndex; +private: + Q_DISABLE_COPY(QGraphicsSceneIndex) + Q_DECLARE_PRIVATE(QGraphicsSceneIndex) +}; + +class QGraphicsSceneIndexPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsSceneIndex) +public: + QGraphicsSceneIndexPrivate(QGraphicsScene *scene); + ~QGraphicsSceneIndexPrivate(); + + void init(); + static bool itemCollidesWithPath(const QGraphicsItem *item, const QPainterPath &path, Qt::ItemSelectionMode mode); + + void recursive_items_helper(QGraphicsItem *item, QRectF exposeRect, + QGraphicsSceneIndexIntersector intersect, QList<QGraphicsItem *> *items, + const QTransform &viewTransform, + Qt::ItemSelectionMode mode, qreal parentOpacity, const void *intersectData) const; + inline void items_helper(const QRectF &rect, QGraphicsSceneIndexIntersector intersect, + QList<QGraphicsItem *> *items, const QTransform &viewTransform, + Qt::ItemSelectionMode mode, Qt::SortOrder order, const void *intersectData) const; + + QGraphicsScene *scene; +}; + +inline void QGraphicsSceneIndexPrivate::items_helper(const QRectF &rect, QGraphicsSceneIndexIntersector intersect, + QList<QGraphicsItem *> *items, const QTransform &viewTransform, + Qt::ItemSelectionMode mode, Qt::SortOrder order, const void *intersectData) const +{ + Q_Q(const QGraphicsSceneIndex); + const QList<QGraphicsItem *> tli = q->estimateTopLevelItems(rect, Qt::AscendingOrder); + for (int i = 0; i < tli.size(); ++i) + recursive_items_helper(tli.at(i), rect, intersect, items, viewTransform, mode, 1.0, intersectData); + if (order == Qt::DescendingOrder) { + const int n = items->size(); + for (int i = 0; i < n / 2; ++i) + items->swap(i, n - i - 1); + } +} + +QT_END_NAMESPACE + +#endif // QGRAPHICSSCENEINDEX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscenelinearindex_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscenelinearindex_p.h new file mode 100644 index 000000000..a59a8ac1b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsscenelinearindex_p.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSSCENELINEARINDEX_H +#define QGRAPHICSSCENELINEARINDEX_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> + +#include <QtCore/qrect.h> +#include <QtCore/qlist.h> +#include <QtWidgets/qgraphicsitem.h> +#include <private/qgraphicssceneindex_p.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class Q_AUTOTEST_EXPORT QGraphicsSceneLinearIndex : public QGraphicsSceneIndex +{ + Q_OBJECT + +public: + QGraphicsSceneLinearIndex(QGraphicsScene *scene = 0) : QGraphicsSceneIndex(scene), m_numSortedElements(0) + { } + + QList<QGraphicsItem *> items(Qt::SortOrder order = Qt::DescendingOrder) const Q_DECL_OVERRIDE + { Q_UNUSED(order); return m_items; } + + virtual QList<QGraphicsItem *> estimateItems(const QRectF &rect, Qt::SortOrder order) const Q_DECL_OVERRIDE + { + Q_UNUSED(rect); + Q_UNUSED(order); + return m_items; + } + +protected : + virtual void clear() Q_DECL_OVERRIDE + { + m_items.clear(); + m_numSortedElements = 0; + } + + virtual void addItem(QGraphicsItem *item) Q_DECL_OVERRIDE + { m_items << item; } + + virtual void removeItem(QGraphicsItem *item) Q_DECL_OVERRIDE + { + // Sort m_items if needed + if (m_numSortedElements < m_items.size()) + { + std::sort(m_items.begin() + m_numSortedElements, m_items.end() ); + std::inplace_merge(m_items.begin(), m_items.begin() + m_numSortedElements, m_items.end()); + m_numSortedElements = m_items.size(); + } + + QList<QGraphicsItem*>::iterator element = std::lower_bound(m_items.begin(), m_items.end(), item); + if (element != m_items.end() && *element == item) + { + m_items.erase(element); + --m_numSortedElements; + } + } + +private: + QList<QGraphicsItem*> m_items; + int m_numSortedElements; +}; + +QT_END_NAMESPACE + +#endif // QGRAPHICSSCENELINEARINDEX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicstransform_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicstransform_p.h new file mode 100644 index 000000000..e54ee9fb3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicstransform_p.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSTRANSFORM_P_H +#define QGRAPHICSTRANSFORM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qobject_p.h" + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsItem; + +// ### Qt 6: unexport again, if QtQuick1's QDeclarativeTranslatePrivate is gone by then +class Q_WIDGETS_EXPORT QGraphicsTransformPrivate : public QObjectPrivate { +public: + Q_DECLARE_PUBLIC(QGraphicsTransform) + + QGraphicsTransformPrivate() + : QObjectPrivate(), item(0) {} + ~QGraphicsTransformPrivate(); + + QGraphicsItem *item; + + void setItem(QGraphicsItem *item); + static void updateItem(QGraphicsItem *item); +}; + +QT_END_NAMESPACE + +#endif // QGRAPHICSTRANSFORM_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsview_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsview_p.h new file mode 100644 index 000000000..0428b9ce7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicsview_p.h @@ -0,0 +1,234 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSVIEW_P_H +#define QGRAPHICSVIEW_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qgraphicsview.h" + +#include <QtGui/qevent.h> +#include <QtCore/qcoreapplication.h> +#include "qgraphicssceneevent.h" +#include <QtWidgets/qstyleoption.h> +#include <private/qabstractscrollarea_p.h> +#include <private/qapplication_p.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class Q_WIDGETS_EXPORT QGraphicsViewPrivate : public QAbstractScrollAreaPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsView) +public: + QGraphicsViewPrivate(); + ~QGraphicsViewPrivate(); + + void recalculateContentSize(); + void centerView(QGraphicsView::ViewportAnchor anchor); + + QPainter::RenderHints renderHints; + + QGraphicsView::DragMode dragMode; + + quint32 sceneInteractionAllowed : 1; + quint32 hasSceneRect : 1; + quint32 connectedToScene : 1; + quint32 useLastMouseEvent : 1; + quint32 identityMatrix : 1; + quint32 dirtyScroll : 1; + quint32 accelerateScrolling : 1; + quint32 keepLastCenterPoint : 1; + quint32 transforming : 1; + quint32 handScrolling : 1; + quint32 mustAllocateStyleOptions : 1; + quint32 mustResizeBackgroundPixmap : 1; + quint32 fullUpdatePending : 1; + quint32 hasUpdateClip : 1; + quint32 padding : 18; + + QRectF sceneRect; + void updateLastCenterPoint(); + + qint64 horizontalScroll() const; + qint64 verticalScroll() const; + + QRectF mapRectToScene(const QRect &rect) const; + QRectF mapRectFromScene(const QRectF &rect) const; + + QRect updateClip; + QPointF mousePressItemPoint; + QPointF mousePressScenePoint; + QPoint mousePressViewPoint; + QPoint mousePressScreenPoint; + QPointF lastMouseMoveScenePoint; + QPointF lastRubberbandScenePoint; + QPoint lastMouseMoveScreenPoint; + QPoint dirtyScrollOffset; + Qt::MouseButton mousePressButton; + QTransform matrix; + qint64 scrollX, scrollY; + void updateScroll(); + + qreal leftIndent; + qreal topIndent; + + // Replaying mouse events + QMouseEvent lastMouseEvent; + void replayLastMouseEvent(); + void storeMouseEvent(QMouseEvent *event); + void mouseMoveEventHandler(QMouseEvent *event); + + QPointF lastCenterPoint; + Qt::Alignment alignment; + + QGraphicsView::ViewportAnchor transformationAnchor; + QGraphicsView::ViewportAnchor resizeAnchor; + QGraphicsView::ViewportUpdateMode viewportUpdateMode; + QGraphicsView::OptimizationFlags optimizationFlags; + + QPointer<QGraphicsScene> scene; +#if QT_CONFIG(rubberband) + QRect rubberBandRect; + QRegion rubberBandRegion(const QWidget *widget, const QRect &rect) const; + void updateRubberBand(const QMouseEvent *event); + bool rubberBanding; + Qt::ItemSelectionMode rubberBandSelectionMode; + Qt::ItemSelectionOperation rubberBandSelectionOperation; +#endif + int handScrollMotions; + + QGraphicsView::CacheMode cacheMode; + + QVector<QStyleOptionGraphicsItem> styleOptions; + QStyleOptionGraphicsItem *allocStyleOptionsArray(int numItems); + void freeStyleOptionsArray(QStyleOptionGraphicsItem *array); + + QBrush backgroundBrush; + QBrush foregroundBrush; + QPixmap backgroundPixmap; + QRegion backgroundPixmapExposed; + +#ifndef QT_NO_CURSOR + QCursor originalCursor; + bool hasStoredOriginalCursor; + void _q_setViewportCursor(const QCursor &cursor); + void _q_unsetViewportCursor(); +#endif + + QGraphicsSceneDragDropEvent *lastDragDropEvent; + void storeDragDropEvent(const QGraphicsSceneDragDropEvent *event); + void populateSceneDragDropEvent(QGraphicsSceneDragDropEvent *dest, + QDropEvent *source); + + QRect mapToViewRect(const QGraphicsItem *item, const QRectF &rect) const; + QRegion mapToViewRegion(const QGraphicsItem *item, const QRectF &rect) const; + QRegion dirtyRegion; + QRect dirtyBoundingRect; + void processPendingUpdates(); + inline void updateAll() + { + viewport->update(); + fullUpdatePending = true; + dirtyBoundingRect = QRect(); + dirtyRegion = QRegion(); + } + + inline void dispatchPendingUpdateRequests() + { +#if 0 // Used to be included in Qt4 for Q_WS_MAC + // QWidget::update() works slightly different on the Mac without the raster engine; + // it's not part of our backing store so it needs special threatment. + if (QApplicationPrivate::graphics_system_name != QLatin1String("raster")) { + // At this point either HIViewSetNeedsDisplay (Carbon) or setNeedsDisplay: YES (Cocoa) + // is called, which means there's a pending update request. We want to dispatch it + // now because otherwise graphics view updates would require two + // round-trips in the event loop before the item is painted. + extern void qt_mac_dispatchPendingUpdateRequests(QWidget *); + qt_mac_dispatchPendingUpdateRequests(viewport->window()); + } else +#endif + { + if (qt_widget_private(viewport)->paintOnScreen()) + QCoreApplication::sendPostedEvents(viewport, QEvent::UpdateRequest); + else + QCoreApplication::sendPostedEvents(viewport->window(), QEvent::UpdateRequest); + } + } + + void setUpdateClip(QGraphicsItem *); + + inline bool updateRectF(const QRectF &rect) + { + if (rect.isEmpty()) + return false; + if (optimizationFlags & QGraphicsView::DontAdjustForAntialiasing) + return updateRect(rect.toAlignedRect().adjusted(-1, -1, 1, 1)); + return updateRect(rect.toAlignedRect().adjusted(-2, -2, 2, 2)); + } + + bool updateRect(const QRect &rect); + bool updateRegion(const QRectF &rect, const QTransform &xform); + bool updateSceneSlotReimplementedChecked; + QRegion exposedRegion; + + QList<QGraphicsItem *> findItems(const QRegion &exposedRegion, bool *allItems, + const QTransform &viewTransform) const; + + QPointF mapToScene(const QPointF &point) const; + QRectF mapToScene(const QRectF &rect) const; + static void translateTouchEvent(QGraphicsViewPrivate *d, QTouchEvent *touchEvent); + void updateInputMethodSensitivity(); +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicswidget_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicswidget_p.h new file mode 100644 index 000000000..0fb9fbba0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qgraphicswidget_p.h @@ -0,0 +1,207 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSWIDGET_P_H +#define QGRAPHICSWIDGET_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <private/qobject_p.h> +#include "qgraphicsitem_p.h" +#include "qgraphicswidget.h" +#include <QtGui/qfont.h> +#include <QtGui/qpalette.h> +#include <QtWidgets/qsizepolicy.h> +#include <QtWidgets/qstyle.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsLayout; +class QStyleOptionTitleBar; + +class QGraphicsWidgetPrivate : public QGraphicsItemPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsWidget) +public: + QGraphicsWidgetPrivate(); + virtual ~QGraphicsWidgetPrivate(); + + void init(QGraphicsItem *parentItem, Qt::WindowFlags wFlags); + qreal titleBarHeight(const QStyleOptionTitleBar &options) const; + + // Margins + enum {Left, Top, Right, Bottom}; + mutable qreal *margins; + void ensureMargins() const; + + void fixFocusChainBeforeReparenting(QGraphicsWidget *newParent, QGraphicsScene *oldScene, QGraphicsScene *newScene = 0); + void setLayout_helper(QGraphicsLayout *l); + + // Layouts + QGraphicsLayout *layout; + void setLayoutDirection_helper(Qt::LayoutDirection direction); + void resolveLayoutDirection(); + + // Style + QPalette palette; + uint inheritedPaletteResolveMask; + void setPalette_helper(const QPalette &palette); + void resolvePalette(uint inheritedMask) Q_DECL_OVERRIDE; + void updatePalette(const QPalette &palette); + QPalette naturalWidgetPalette() const; + QFont font; + uint inheritedFontResolveMask; + void setFont_helper(const QFont &font); + void resolveFont(uint inheritedMask) Q_DECL_OVERRIDE; + void updateFont(const QFont &font); + QFont naturalWidgetFont() const; + + // Window specific + void initStyleOptionTitleBar(QStyleOptionTitleBar *option); + void adjustWindowFlags(Qt::WindowFlags *wFlags); + void windowFrameMouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void windowFrameMousePressEvent(QGraphicsSceneMouseEvent *event); + void windowFrameMouseMoveEvent(QGraphicsSceneMouseEvent *event); + void windowFrameHoverMoveEvent(QGraphicsSceneHoverEvent *event); + void windowFrameHoverLeaveEvent(QGraphicsSceneHoverEvent *event); + bool hasDecoration() const; + + // Private Properties + qreal width() const Q_DECL_OVERRIDE; + void setWidth(qreal) Q_DECL_OVERRIDE; + void resetWidth() Q_DECL_OVERRIDE; + + qreal height() const Q_DECL_OVERRIDE; + void setHeight(qreal) Q_DECL_OVERRIDE; + void resetHeight() Q_DECL_OVERRIDE; + void setGeometryFromSetPos(); + + // State + inline int attributeToBitIndex(Qt::WidgetAttribute att) const + { + int bit = -1; + switch (att) { + case Qt::WA_SetLayoutDirection: bit = 0; break; + case Qt::WA_RightToLeft: bit = 1; break; + case Qt::WA_SetStyle: bit = 2; break; + case Qt::WA_Resized: bit = 3; break; + case Qt::WA_DeleteOnClose: bit = 4; break; + case Qt::WA_NoSystemBackground: bit = 5; break; + case Qt::WA_OpaquePaintEvent: bit = 6; break; + case Qt::WA_SetPalette: bit = 7; break; + case Qt::WA_SetFont: bit = 8; break; + case Qt::WA_WindowPropagation: bit = 9; break; + default: break; + } + return bit; + } + inline void setAttribute(Qt::WidgetAttribute att, bool value) + { + int bit = attributeToBitIndex(att); + if (bit == -1) { + qWarning("QGraphicsWidget::setAttribute: unsupported attribute %d", int(att)); + return; + } + if (value) + attributes |= (1 << bit); + else + attributes &= ~(1 << bit); + } + inline bool testAttribute(Qt::WidgetAttribute att) const + { + int bit = attributeToBitIndex(att); + if (bit == -1) + return false; + return (attributes & (1 << bit)) != 0; + } + quint32 attributes : 10; + quint32 inSetGeometry : 1; + quint32 polished: 1; + quint32 inSetPos : 1; + quint32 autoFillBackground : 1; + + // Focus + Qt::FocusPolicy focusPolicy; + QGraphicsWidget *focusNext; + QGraphicsWidget *focusPrev; + + // Windows + Qt::WindowFlags windowFlags; + struct WindowData { + QString windowTitle; + QStyle::SubControl hoveredSubControl; + Qt::WindowFrameSection grabbedSection; + uint buttonMouseOver : 1; + uint buttonSunken : 1; + QRectF startGeometry; + QRect buttonRect; + WindowData() + : hoveredSubControl(QStyle::SC_None) + , grabbedSection(Qt::NoSection) + , buttonMouseOver(false) + , buttonSunken(false) + {} + } *windowData; + void ensureWindowData(); + + bool setWindowFrameMargins; + mutable qreal *windowFrameMargins; + void ensureWindowFrameMargins() const; + +#ifndef QT_NO_ACTION + QList<QAction *> actions; +#endif +}; + +QT_END_NAMESPACE + +#endif //QGRAPHICSWIDGET_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qheaderview_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qheaderview_p.h new file mode 100644 index 000000000..8fc8b88aa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qheaderview_p.h @@ -0,0 +1,394 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHEADERVIEW_P_H +#define QHEADERVIEW_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qabstractitemview_p.h" + +#include "QtCore/qbitarray.h" +#include "QtWidgets/qapplication.h" +#if QT_CONFIG(label) +#include "QtWidgets/qlabel.h" +#endif + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +class QHeaderViewPrivate: public QAbstractItemViewPrivate +{ + Q_DECLARE_PUBLIC(QHeaderView) + +public: + enum StateVersion { VersionMarker = 0xff }; + + QHeaderViewPrivate() + : state(NoState), + offset(0), + sortIndicatorOrder(Qt::DescendingOrder), + sortIndicatorSection(0), + sortIndicatorShown(false), + lastPos(-1), + firstPos(-1), + originalSize(-1), + section(-1), + target(-1), + pressed(-1), + hover(-1), + length(0), + preventCursorChangeInSetOffset(false), + movableSections(false), + clickableSections(false), + highlightSelected(false), + stretchLastSection(false), + cascadingResizing(false), + resizeRecursionBlock(false), + allowUserMoveOfSection0(true), // will be false for QTreeView and true for QTableView + customDefaultSectionSize(false), + stretchSections(0), + contentsSections(0), + minimumSectionSize(-1), + maximumSectionSize(-1), + lastSectionSize(0), + lastSectionLogicalIdx(-1), // Only trust when we stretch last section + sectionIndicatorOffset(0), +#if QT_CONFIG(label) + sectionIndicator(0), +#endif + globalResizeMode(QHeaderView::Interactive), + sectionStartposRecalc(true), + resizeContentsPrecision(1000) + {} + + + int lastVisibleVisualIndex() const; + void restoreSizeOnPrevLastSection(); + void setNewLastSection(int visualIndexForLastSection); + void maybeRestorePrevLastSectionAndStretchLast(); + int sectionHandleAt(int position); + void setupSectionIndicator(int section, int position); + void updateSectionIndicator(int section, int position); + void updateHiddenSections(int logicalFirst, int logicalLast); + void resizeSections(QHeaderView::ResizeMode globalMode, bool useGlobalMode = false); + void _q_sectionsRemoved(const QModelIndex &,int,int); + void _q_layoutAboutToBeChanged(); + void _q_layoutChanged() override; + + bool isSectionSelected(int section) const; + bool isFirstVisibleSection(int section) const; + bool isLastVisibleSection(int section) const; + + inline bool rowIntersectsSelection(int row) const { + return (selectionModel ? selectionModel->rowIntersectsSelection(row, root) : false); + } + + inline bool columnIntersectsSelection(int column) const { + return (selectionModel ? selectionModel->columnIntersectsSelection(column, root) : false); + } + + inline bool sectionIntersectsSelection(int logical) const { + return (orientation == Qt::Horizontal ? columnIntersectsSelection(logical) : rowIntersectsSelection(logical)); + } + + inline bool isRowSelected(int row) const { + return (selectionModel ? selectionModel->isRowSelected(row, root) : false); + } + + inline bool isColumnSelected(int column) const { + return (selectionModel ? selectionModel->isColumnSelected(column, root) : false); + } + + inline void prepareSectionSelected() { + if (!selectionModel || !selectionModel->hasSelection()) + sectionSelected.clear(); + else if (sectionSelected.count() != sectionCount() * 2) + sectionSelected.fill(false, sectionCount() * 2); + else sectionSelected.fill(false); + } + + inline int sectionCount() const {return sectionItems.count();} + + inline bool reverse() const { + return orientation == Qt::Horizontal && q_func()->isRightToLeft(); + } + + inline int logicalIndex(int visualIndex) const { + return logicalIndices.isEmpty() ? visualIndex : logicalIndices.at(visualIndex); + } + + inline int visualIndex(int logicalIndex) const { + return visualIndices.isEmpty() ? logicalIndex : visualIndices.at(logicalIndex); + } + + inline void setDefaultValues(Qt::Orientation o) { + orientation = o; + updateDefaultSectionSizeFromStyle(); + defaultAlignment = (o == Qt::Horizontal + ? Qt::Alignment(Qt::AlignCenter) + : Qt::AlignLeft|Qt::AlignVCenter); + } + + inline bool isVisualIndexHidden(int visual) const { + return sectionItems.at(visual).isHidden; + } + + inline void setVisualIndexHidden(int visual, bool hidden) { + sectionItems[visual].isHidden = hidden; + } + + inline bool hasAutoResizeSections() const { + return stretchSections || stretchLastSection || contentsSections; + } + + QStyleOptionHeader getStyleOption() const; + + inline void invalidateCachedSizeHint() const { + cachedSizeHint = QSize(); + } + + inline void initializeIndexMapping() const { + if (visualIndices.count() != sectionCount() + || logicalIndices.count() != sectionCount()) { + visualIndices.resize(sectionCount()); + logicalIndices.resize(sectionCount()); + for (int s = 0; s < sectionCount(); ++s) { + visualIndices[s] = s; + logicalIndices[s] = s; + } + } + } + + inline void clearCascadingSections() { + firstCascadingSection = sectionItems.count(); + lastCascadingSection = 0; + cascadingSectionSize.clear(); + } + + inline void saveCascadingSectionSize(int visual, int size) { + if (!cascadingSectionSize.contains(visual)) { + cascadingSectionSize.insert(visual, size); + firstCascadingSection = qMin(firstCascadingSection, visual); + lastCascadingSection = qMax(lastCascadingSection, visual); + } + } + + inline bool sectionIsCascadable(int visual) const { + return headerSectionResizeMode(visual) == QHeaderView::Interactive; + } + + inline int modelSectionCount() const { + return (orientation == Qt::Horizontal + ? model->columnCount(root) + : model->rowCount(root)); + } + + inline bool modelIsEmpty() const { + return (model->rowCount(root) == 0 || model->columnCount(root) == 0); + } + + inline void doDelayedResizeSections() { + if (!delayedResize.isActive()) + delayedResize.start(0, q_func()); + } + + inline void executePostedResize() const { + if (delayedResize.isActive() && state == NoState) { + const_cast<QHeaderView*>(q_func())->resizeSections(); + } + } + + inline void setAllowUserMoveOfSection0(bool b) { + allowUserMoveOfSection0 = b; + } + + void clear(); + void flipSortIndicator(int section); + void cascadingResize(int visual, int newSize); + + enum State { NoState, ResizeSection, MoveSection, SelectSections, NoClear } state; + + int offset; + Qt::Orientation orientation; + Qt::SortOrder sortIndicatorOrder; + int sortIndicatorSection; + bool sortIndicatorShown; + + mutable QVector<int> visualIndices; // visualIndex = visualIndices.at(logicalIndex) + mutable QVector<int> logicalIndices; // logicalIndex = row or column in the model + mutable QBitArray sectionSelected; // from logical index to bit + mutable QHash<int, int> hiddenSectionSize; // from logical index to section size + mutable QHash<int, int> cascadingSectionSize; // from visual index to section size + mutable QSize cachedSizeHint; + mutable QBasicTimer delayedResize; + + int firstCascadingSection; + int lastCascadingSection; + + int lastPos; + int firstPos; + int originalSize; + int section; // used for resizing and moving sections + int target; + int pressed; + int hover; + + int length; + bool preventCursorChangeInSetOffset; + bool movableSections; + bool clickableSections; + bool highlightSelected; + bool stretchLastSection; + bool cascadingResizing; + bool resizeRecursionBlock; + bool allowUserMoveOfSection0; + bool customDefaultSectionSize; + int stretchSections; + int contentsSections; + int defaultSectionSize; + int minimumSectionSize; + int maximumSectionSize; + int lastSectionSize; + int lastSectionLogicalIdx; // Only trust if we stretch LastSection + int sectionIndicatorOffset; + Qt::Alignment defaultAlignment; +#if QT_CONFIG(label) + QLabel *sectionIndicator; +#endif + QHeaderView::ResizeMode globalResizeMode; + QList<QPersistentModelIndex> persistentHiddenSections; + mutable bool sectionStartposRecalc; + int resizeContentsPrecision; + // header sections + + struct SectionItem { + uint size : 20; + uint isHidden : 1; + uint resizeMode : 5; // (holding QHeaderView::ResizeMode) + uint currentlyUnusedPadding : 6; + + union { // This union is made in order to save space and ensure good vector performance (on remove) + mutable int calculated_startpos; // <- this is the primary used member. + mutable int tmpLogIdx; // When one of these 'tmp'-members has been used we call + int tmpDataStreamSectionCount; // recalcSectionStartPos() or set sectionStartposRecalc to true + }; // to ensure that calculated_startpos will be calculated afterwards. + + inline SectionItem() : size(0), isHidden(0), resizeMode(QHeaderView::Interactive) {} + inline SectionItem(int length, QHeaderView::ResizeMode mode) + : size(length), isHidden(0), resizeMode(mode), calculated_startpos(-1) {} + inline int sectionSize() const { return size; } + inline int calculatedEndPos() const { return calculated_startpos + size; } +#ifndef QT_NO_DATASTREAM + inline void write(QDataStream &out) const + { out << static_cast<int>(size); out << 1; out << (int)resizeMode; } + inline void read(QDataStream &in) + { int m; in >> m; size = m; in >> tmpDataStreamSectionCount; in >> m; resizeMode = m; } +#endif + }; + + QVector<SectionItem> sectionItems; + + void createSectionItems(int start, int end, int size, QHeaderView::ResizeMode mode); + void removeSectionsFromSectionItems(int start, int end); + void resizeSectionItem(int visualIndex, int oldSize, int newSize); + void setDefaultSectionSize(int size); + void updateDefaultSectionSizeFromStyle(); + void recalcSectionStartPos() const; // not really const + + inline int headerLength() const { // for debugging + int len = 0; + for (const auto §ion : sectionItems) + len += section.size; + return len; + } + + QBitArray sectionsHiddenToBitVector() const + { + QBitArray sectionHidden; + if (!hiddenSectionSize.isEmpty()) { + sectionHidden.resize(sectionItems.size()); + for (int u = 0; u < sectionItems.size(); ++u) + sectionHidden[u] = sectionItems.at(u).isHidden; + } + return sectionHidden; + } + + void setHiddenSectionsFromBitVector(const QBitArray §ionHidden) { + SectionItem *sectionData = sectionItems.data(); + for (int i = 0; i < sectionHidden.count(); ++i) + sectionData[i].isHidden = sectionHidden.at(i); + } + + int headerSectionSize(int visual) const; + int headerSectionPosition(int visual) const; + int headerVisualIndexAt(int position) const; + + // resize mode + void setHeaderSectionResizeMode(int visual, QHeaderView::ResizeMode mode); + QHeaderView::ResizeMode headerSectionResizeMode(int visual) const; + void setGlobalHeaderResizeMode(QHeaderView::ResizeMode mode); + + // other + int viewSectionSizeHint(int logical) const; + int adjustedVisualIndex(int visualIndex) const; + void setScrollOffset(const QScrollBar *scrollBar, QAbstractItemView::ScrollMode scrollMode); + +#ifndef QT_NO_DATASTREAM + void write(QDataStream &out) const; + bool read(QDataStream &in); +#endif + +}; +Q_DECLARE_TYPEINFO(QHeaderViewPrivate::SectionItem, Q_PRIMITIVE_TYPE); + +QT_END_NAMESPACE + +#endif // QHEADERVIEW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qitemeditorfactory_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qitemeditorfactory_p.h new file mode 100644 index 000000000..46a8da1d8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qitemeditorfactory_p.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QITEMEDITORFACTORY_P_H +#define QITEMEDITORFACTORY_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 <QtWidgets/private/qtwidgetsglobal_p.h> + +#if QT_CONFIG(lineedit) +#include <qlineedit.h> + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +class QExpandingLineEdit : public QLineEdit +{ + Q_OBJECT + +public: + QExpandingLineEdit(QWidget *parent); + + void setWidgetOwnsGeometry(bool value) + { + widgetOwnsGeometry = value; + } + +protected: + void changeEvent(QEvent *e) Q_DECL_OVERRIDE; + +public Q_SLOTS: + void resizeToContents(); + +private: + void updateMinimumWidth(); + + int originalWidth; + bool widgetOwnsGeometry; +}; + + +QT_END_NAMESPACE + +#endif // QT_CONFIG(lineedit) + +#endif //QITEMEDITORFACTORY_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qkeysequenceedit_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qkeysequenceedit_p.h new file mode 100644 index 000000000..7af034e73 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qkeysequenceedit_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2013 Ivan Komissarov. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QKEYSEQUENCEEDIT_P_H +#define QKEYSEQUENCEEDIT_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qkeysequenceedit.h" + +#include <private/qwidget_p.h> +#include <private/qkeysequence_p.h> + +QT_REQUIRE_CONFIG(keysequenceedit); + +QT_BEGIN_NAMESPACE + +class QLineEdit; + +class QKeySequenceEditPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QKeySequenceEdit) +public: + void init(); + int translateModifiers(Qt::KeyboardModifiers state, const QString &text); + void resetState(); + void finishEditing(); + + QLineEdit *lineEdit; + QKeySequence keySequence; + int keyNum; + int key[QKeySequencePrivate::MaxKeyCount]; + int prevKey; + int releaseTimer; +}; + +QT_END_NAMESPACE + +#endif // QKEYSEQUENCEEDIT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlabel_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlabel_p.h new file mode 100644 index 000000000..e05a5b5c3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlabel_p.h @@ -0,0 +1,160 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLABEL_P_H +#define QLABEL_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qlabel.h" + +#include "private/qtextdocumentlayout_p.h" +#include "private/qwidgettextcontrol_p.h" +#include "qtextdocumentfragment.h" +#include "qframe_p.h" +#include "qtextdocument.h" +#if QT_CONFIG(movie) +#include "qmovie.h" +#endif +#include "qimage.h" +#include "qbitmap.h" +#include "qpicture.h" +#if QT_CONFIG(menu) +#include "qmenu.h" +#endif + +QT_BEGIN_NAMESPACE + +class Q_AUTOTEST_EXPORT QLabelPrivate : public QFramePrivate +{ + Q_DECLARE_PUBLIC(QLabel) +public: + QLabelPrivate(); + ~QLabelPrivate(); + + void init(); + void clearContents(); + void updateLabel(); + QSize sizeForWidth(int w) const; + +#if QT_CONFIG(movie) + void _q_movieUpdated(const QRect&); + void _q_movieResized(const QSize&); +#endif +#ifndef QT_NO_SHORTCUT + void updateShortcut(); +#endif + inline bool needTextControl() const { + return isTextLabel + && (isRichText + || (!isRichText && (textInteractionFlags & (Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard)))); + } + + void ensureTextPopulated() const; + void ensureTextLayouted() const; + void ensureTextControl() const; + void sendControlEvent(QEvent *e); + + void _q_linkHovered(const QString &link); + + QRectF layoutRect() const; + QRect documentRect() const; + QPoint layoutPoint(const QPoint& p) const; + Qt::LayoutDirection textDirection() const; +#ifndef QT_NO_CONTEXTMENU + QMenu *createStandardContextMenu(const QPoint &pos); +#endif + + mutable QSize sh; + mutable QSize msh; + QString text; + QPixmap *pixmap; + QPixmap *scaledpixmap; + QImage *cachedimage; +#ifndef QT_NO_PICTURE + QPicture *picture; +#endif +#if QT_CONFIG(movie) + QPointer<QMovie> movie; +#endif + mutable QWidgetTextControl *control; + mutable QTextCursor shortcutCursor; +#ifndef QT_NO_CURSOR + QCursor cursor; +#endif +#ifndef QT_NO_SHORTCUT + QPointer<QWidget> buddy; + int shortcutId; +#endif + Qt::TextFormat textformat; + Qt::TextInteractionFlags textInteractionFlags; + mutable QSizePolicy sizePolicy; + int margin; + ushort align; + short indent; + mutable uint valid_hints : 1; + uint scaledcontents : 1; + mutable uint textLayoutDirty : 1; + mutable uint textDirty : 1; + mutable uint isRichText : 1; + mutable uint isTextLabel : 1; + mutable uint hasShortcut : 1; +#ifndef QT_NO_CURSOR + uint validCursor : 1; + uint onAnchor : 1; +#endif + uint openExternalLinks : 1; + // <-- space for more bit field values here + + friend class QMessageBoxPrivate; +}; + +QT_END_NAMESPACE + +#endif // QLABEL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlayout_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlayout_p.h new file mode 100644 index 000000000..8a1b12a6b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlayout_p.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLAYOUT_P_H +#define QLAYOUT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qlayout*.cpp, and qabstractlayout.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qobject_p.h" +#include "qstyle.h" +#include "qsizepolicy.h" + +QT_BEGIN_NAMESPACE + +class QWidgetItem; +class QSpacerItem; +class QLayoutItem; + +class Q_WIDGETS_EXPORT QLayoutPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QLayout) + +public: + typedef QWidgetItem * (*QWidgetItemFactoryMethod)(const QLayout *layout, QWidget *widget); + typedef QSpacerItem * (*QSpacerItemFactoryMethod)(const QLayout *layout, int w, int h, QSizePolicy::Policy hPolicy, QSizePolicy::Policy); + + QLayoutPrivate(); + + void getMargin(int *result, int userMargin, QStyle::PixelMetric pm) const; + void doResize(const QSize &); + void reparentChildWidgets(QWidget *mw); + bool checkWidget(QWidget *widget) const; + bool checkLayout(QLayout *otherLayout) const; + + static QWidgetItem *createWidgetItem(const QLayout *layout, QWidget *widget); + static QSpacerItem *createSpacerItem(const QLayout *layout, int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum); + virtual QLayoutItem* replaceAt(int index, QLayoutItem *newitem) { Q_UNUSED(index); Q_UNUSED(newitem); return 0; } + + static QWidgetItemFactoryMethod widgetItemFactoryMethod; + static QSpacerItemFactoryMethod spacerItemFactoryMethod; + + int insideSpacing; + int userLeftMargin; + int userTopMargin; + int userRightMargin; + int userBottomMargin; + uint topLevel : 1; + uint enabled : 1; + uint activated : 1; + uint autoNewChild : 1; + QLayout::SizeConstraint constraint; + QRect rect; + QWidget *menubar; +}; + +QT_END_NAMESPACE + +#endif // QLAYOUT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlayoutengine_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlayoutengine_p.h new file mode 100644 index 000000000..812fa7cf3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlayoutengine_p.h @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLAYOUTENGINE_P_H +#define QLAYOUTENGINE_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qlayoutitem.h" +#include "QtWidgets/qstyle.h" + +QT_BEGIN_NAMESPACE + +template <typename T> class QVector; + +struct QLayoutStruct +{ + inline void init(int stretchFactor = 0, int minSize = 0) { + stretch = stretchFactor; + minimumSize = sizeHint = minSize; + maximumSize = QLAYOUTSIZE_MAX; + expansive = false; + empty = true; + spacing = 0; + } + + int smartSizeHint() { + return (stretch > 0) ? minimumSize : sizeHint; + } + int effectiveSpacer(int uniformSpacer) const { + Q_ASSERT(uniformSpacer >= 0 || spacing >= 0); + return (uniformSpacer >= 0) ? uniformSpacer : spacing; + } + + // parameters + int stretch; + int sizeHint; + int maximumSize; + int minimumSize; + int spacing; + bool expansive; + bool empty; + + // temporary storage + bool done; + + // result + int pos; + int size; +}; + + +Q_WIDGETS_EXPORT void qGeomCalc(QVector<QLayoutStruct> &chain, int start, int count, + int pos, int space, int spacer = -1); +Q_WIDGETS_EXPORT QSize qSmartMinSize(const QSize &sizeHint, const QSize &minSizeHint, + const QSize &minSize, const QSize &maxSize, + const QSizePolicy &sizePolicy); +Q_WIDGETS_EXPORT QSize qSmartMinSize(const QWidgetItem *i); +Q_WIDGETS_EXPORT QSize qSmartMinSize(const QWidget *w); +Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QSize &sizeHint, + const QSize &minSize, const QSize &maxSize, + const QSizePolicy &sizePolicy, Qt::Alignment align = 0); +Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QWidgetItem *i, Qt::Alignment align = 0); +Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QWidget *w, Qt::Alignment align = 0); + +Q_WIDGETS_EXPORT int qSmartSpacing(const QLayout *layout, QStyle::PixelMetric pm); + +/* + Modify total maximum (max), total expansion (exp), and total empty + when adding boxmax/boxexp. + + Expansive boxes win over non-expansive boxes. + Non-empty boxes win over empty boxes. +*/ +static inline void qMaxExpCalc(int & max, bool &exp, bool &empty, + int boxmax, bool boxexp, bool boxempty) +{ + if (exp) { + if (boxexp) + max = qMax(max, boxmax); + } else { + if (boxexp || (empty && (!boxempty || max == 0))) + max = boxmax; + else if (empty == boxempty) + max = qMin(max, boxmax); + } + exp = exp || boxexp; + empty = empty && boxempty; +} + +QT_END_NAMESPACE + +#endif // QLAYOUTENGINE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlineedit_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlineedit_p.h new file mode 100644 index 000000000..77a91880d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlineedit_p.h @@ -0,0 +1,262 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLINEEDIT_P_H +#define QLINEEDIT_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 <QtWidgets/private/qtwidgetsglobal_p.h> + +#include "private/qwidget_p.h" +#include "QtWidgets/qlineedit.h" +#if QT_CONFIG(toolbutton) +#include "QtWidgets/qtoolbutton.h" +#endif +#include "QtGui/qtextlayout.h" +#include "QtGui/qicon.h" +#include "QtWidgets/qstyleoption.h" +#include "QtCore/qbasictimer.h" +#if QT_CONFIG(completer) +#include "QtWidgets/qcompleter.h" +#endif +#include "QtCore/qpointer.h" +#include "QtCore/qmimedata.h" + +#include "private/qwidgetlinecontrol_p.h" + +#include <algorithm> + +QT_REQUIRE_CONFIG(lineedit); + +QT_BEGIN_NAMESPACE + +class QLineEditPrivate; + +// QLineEditIconButton: This is a simple helper class that represents clickable icons that fade in with text +#if QT_CONFIG(toolbutton) +class Q_AUTOTEST_EXPORT QLineEditIconButton : public QToolButton +{ + Q_OBJECT + Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity) +public: + explicit QLineEditIconButton(QWidget *parent = 0); + + qreal opacity() const { return m_opacity; } + void setOpacity(qreal value); +#ifndef QT_NO_ANIMATION + void animateShow(bool visible) { startOpacityAnimation(visible ? 1.0 : 0.0); } +#endif + +protected: + void actionEvent(QActionEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + +private slots: + void updateCursor(); + +private: +#ifndef QT_NO_ANIMATION + void startOpacityAnimation(qreal endValue); +#endif + QLineEditPrivate *lineEditPrivate() const; + + qreal m_opacity; +}; +#endif // QT_CONFIG(toolbutton) + +class Q_AUTOTEST_EXPORT QLineEditPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QLineEdit) +public: + enum SideWidgetFlag { + SideWidgetFadeInWithText = 0x1, + SideWidgetCreatedByWidgetAction = 0x2, + SideWidgetClearButton = 0x4 + }; + + struct SideWidgetEntry { + explicit SideWidgetEntry(QWidget *w = 0, QAction *a = 0, int _flags = 0) : widget(w), action(a), flags(_flags) {} + + QWidget *widget; + QAction *action; + int flags; + }; + typedef std::vector<SideWidgetEntry> SideWidgetEntryList; + + struct SideWidgetParameters { + int iconSize; + int widgetWidth; + int widgetHeight; + int margin; + }; + + QLineEditPrivate() + : control(0), frame(1), contextMenuEnabled(1), cursorVisible(0), + dragEnabled(0), clickCausedFocus(0), hscroll(0), vscroll(0), + alignment(Qt::AlignLeading | Qt::AlignVCenter), + leftTextMargin(0), topTextMargin(0), rightTextMargin(0), bottomTextMargin(0), + lastTextSize(0) + { + } + + ~QLineEditPrivate() + { + } + + QWidgetLineControl *control; + +#ifndef QT_NO_CONTEXTMENU + QPointer<QAction> selectAllAction; +#endif + void init(const QString&); + + QRect adjustedControlRect(const QRect &) const; + + int xToPos(int x, QTextLine::CursorPosition = QTextLine::CursorBetweenCharacters) const; + bool inSelection(int x) const; + QRect cursorRect() const; + void setCursorVisible(bool visible); + + void updatePasswordEchoEditing(bool); + + void resetInputMethod(); + + inline bool shouldEnableInputMethod() const + { + return !control->isReadOnly(); + } + inline bool shouldShowPlaceholderText() const + { + return control->text().isEmpty() && control->preeditAreaText().isEmpty() + && !((alignment & Qt::AlignHCenter) && q_func()->hasFocus()); + } + + static inline QLineEditPrivate *get(QLineEdit *lineEdit) { + return lineEdit->d_func(); + } + + QPoint tripleClick; + QBasicTimer tripleClickTimer; + uint frame : 1; + uint contextMenuEnabled : 1; + uint cursorVisible : 1; + uint dragEnabled : 1; + uint clickCausedFocus : 1; + int hscroll; + int vscroll; + uint alignment; + static const int verticalMargin; + static const int horizontalMargin; + + bool sendMouseEventToInputContext(QMouseEvent *e); + + QRect adjustedContentsRect() const; + + void _q_handleWindowActivate(); + void _q_textEdited(const QString &); + void _q_cursorPositionChanged(int, int); +#ifdef QT_KEYPAD_NAVIGATION + void _q_editFocusChange(bool); +#endif + void _q_selectionChanged(); + void _q_updateNeeded(const QRect &); +#if QT_CONFIG(completer) + void _q_completionHighlighted(const QString &); +#endif + QPoint mousePressPos; +#ifndef QT_NO_DRAGANDDROP + QBasicTimer dndTimer; + void drag(); +#endif + void _q_textChanged(const QString &); + void _q_clearButtonClicked(); + + int leftTextMargin; // use effectiveLeftTextMargin() in case of icon. + int topTextMargin; + int rightTextMargin; // use effectiveRightTextMargin() in case of icon. + int bottomTextMargin; + + QString placeholderText; + + QWidget *addAction(QAction *newAction, QAction *before, QLineEdit::ActionPosition, int flags = 0); + void removeAction(QAction *action); + SideWidgetParameters sideWidgetParameters() const; + QIcon clearButtonIcon() const; + void setClearButtonEnabled(bool enabled); + void positionSideWidgets(); + inline bool hasSideWidgets() const { return !leadingSideWidgets.empty() || !trailingSideWidgets.empty(); } + inline const SideWidgetEntryList &leftSideWidgetList() const + { return q_func()->layoutDirection() == Qt::LeftToRight ? leadingSideWidgets : trailingSideWidgets; } + inline const SideWidgetEntryList &rightSideWidgetList() const + { return q_func()->layoutDirection() == Qt::LeftToRight ? trailingSideWidgets : leadingSideWidgets; } + + int effectiveLeftTextMargin() const; + int effectiveRightTextMargin() const; + +private: + struct SideWidgetLocation { + QLineEdit::ActionPosition position; + int index; + + bool isValid() const { return index >= 0; } + }; + friend class QTypeInfo<SideWidgetLocation>; + + SideWidgetLocation findSideWidget(const QAction *a) const; + + SideWidgetEntryList leadingSideWidgets; + SideWidgetEntryList trailingSideWidgets; + int lastTextSize; +}; +Q_DECLARE_TYPEINFO(QLineEditPrivate::SideWidgetEntry, Q_PRIMITIVE_TYPE); +Q_DECLARE_TYPEINFO(QLineEditPrivate::SideWidgetLocation, Q_PRIMITIVE_TYPE); + +QT_END_NAMESPACE + +#endif // QLINEEDIT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlistview_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlistview_p.h new file mode 100644 index 000000000..8d2976795 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlistview_p.h @@ -0,0 +1,477 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLISTVIEW_P_H +#define QLISTVIEW_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qabstractitemview_p.h" +#include "qbitarray.h" +#include "qbsptree_p.h" +#include <limits.h> +#include <qscrollbar.h> + +QT_REQUIRE_CONFIG(listview); + +QT_BEGIN_NAMESPACE + +class QListViewItem +{ + friend class QListViewPrivate; + friend class QListModeViewBase; + friend class QIconModeViewBase; +public: + Q_DECL_CONSTEXPR QListViewItem() + : x(-1), y(-1), w(0), h(0), indexHint(-1), visited(0xffff) {} + Q_DECL_CONSTEXPR QListViewItem(QRect r, int i) + : x(r.x()), y(r.y()), w(qMin(r.width(), SHRT_MAX)), h(qMin(r.height(), SHRT_MAX)), + indexHint(i), visited(0xffff) {} + Q_DECL_CONSTEXPR bool operator==(const QListViewItem &other) const { + return (x == other.x && y == other.y && w == other.w && h == other.h && + indexHint == other.indexHint); } + Q_DECL_CONSTEXPR bool operator!=(const QListViewItem &other) const + { return !(*this == other); } + Q_DECL_CONSTEXPR bool isValid() const + { return rect().isValid() && (indexHint > -1); } + Q_DECL_RELAXED_CONSTEXPR void invalidate() + { x = -1; y = -1; w = 0; h = 0; } + Q_DECL_RELAXED_CONSTEXPR void resize(QSize size) + { w = qMin(size.width(), SHRT_MAX); h = qMin(size.height(), SHRT_MAX); } + Q_DECL_RELAXED_CONSTEXPR void move(QPoint position) + { x = position.x(); y = position.y(); } + Q_DECL_CONSTEXPR int width() const { return w; } + Q_DECL_CONSTEXPR int height() const { return h; } +private: + Q_DECL_CONSTEXPR QRect rect() const + { return QRect(x, y, w, h); } + int x, y; + short w, h; + mutable int indexHint; + uint visited; +}; +Q_DECLARE_TYPEINFO(QListViewItem, Q_PRIMITIVE_TYPE); + +struct QListViewLayoutInfo +{ + QRect bounds; + QSize grid; + int spacing; + int first; + int last; + bool wrap; + QListView::Flow flow; + int max; +}; +Q_DECLARE_TYPEINFO(QListViewLayoutInfo, Q_PRIMITIVE_TYPE); + +class QListView; +class QListViewPrivate; + +class QCommonListViewBase +{ +public: + inline QCommonListViewBase(QListView *q, QListViewPrivate *d) : dd(d), qq(q), batchStartRow(0), batchSavedDeltaSeg(0) {} + virtual ~QCommonListViewBase() {} + + //common interface + virtual int itemIndex(const QListViewItem &item) const = 0; + virtual QListViewItem indexToListViewItem(const QModelIndex &index) const = 0; + virtual bool doBatchedItemLayout(const QListViewLayoutInfo &info, int max) = 0; + virtual void clear() = 0; + virtual void setRowCount(int) = 0; + virtual QVector<QModelIndex> intersectingSet(const QRect &area) const = 0; + virtual void dataChanged(const QModelIndex &, const QModelIndex &) = 0; + + virtual int horizontalScrollToValue(int index, QListView::ScrollHint hint, + bool leftOf, bool rightOf, const QRect &area, const QRect &rect) const; + virtual int verticalScrollToValue(int index, QListView::ScrollHint hint, + bool above, bool below, const QRect &area, const QRect &rect) const; + virtual void scrollContentsBy(int dx, int dy, bool scrollElasticBand); + virtual QRect mapToViewport(const QRect &rect) const {return rect;} + virtual int horizontalOffset() const; + virtual int verticalOffset() const { return verticalScrollBar()->value(); } + virtual void updateHorizontalScrollBar(const QSize &step); + virtual void updateVerticalScrollBar(const QSize &step); + virtual void appendHiddenRow(int row); + virtual void removeHiddenRow(int row); + virtual void setPositionForIndex(const QPoint &, const QModelIndex &) { } + +#ifndef QT_NO_DRAGANDDROP + virtual void paintDragDrop(QPainter *painter); + virtual bool filterDragMoveEvent(QDragMoveEvent *) { return false; } + virtual bool filterDragLeaveEvent(QDragLeaveEvent *) { return false; } + virtual bool filterDropEvent(QDropEvent *) { return false; } + virtual bool filterStartDrag(Qt::DropActions) { return false; } +#endif + + + //other inline members + inline int spacing() const; + inline bool isWrapping() const; + inline QSize gridSize() const; + inline QListView::Flow flow() const; + inline QListView::Movement movement() const; + + inline QPoint offset() const; + inline QPoint pressedPosition() const; + inline bool uniformItemSizes() const; + inline int column() const; + + inline QScrollBar *verticalScrollBar() const; + inline QScrollBar *horizontalScrollBar() const; + inline QListView::ScrollMode verticalScrollMode() const; + inline QListView::ScrollMode horizontalScrollMode() const; + + inline QModelIndex modelIndex(int row) const; + inline int rowCount() const; + + inline QStyleOptionViewItem viewOptions() const; + inline QWidget *viewport() const; + inline QRect clipRect() const; + + inline QSize cachedItemSize() const; + inline QRect viewItemRect(const QListViewItem &item) const; + inline QSize itemSize(const QStyleOptionViewItem &opt, const QModelIndex &idx) const; + inline QAbstractItemDelegate *delegate(const QModelIndex &idx) const; + + inline bool isHidden(int row) const; + inline int hiddenCount() const; + + inline bool isRightToLeft() const; + + QListViewPrivate *dd; + QListView *qq; + QSize contentsSize; + int batchStartRow; + int batchSavedDeltaSeg; +}; + +class QListModeViewBase : public QCommonListViewBase +{ +public: + QListModeViewBase(QListView *q, QListViewPrivate *d); + + QVector<int> flowPositions; + QVector<int> segmentPositions; + QVector<int> segmentStartRows; + QVector<int> segmentExtents; + QVector<int> scrollValueMap; + + // used when laying out in batches + int batchSavedPosition; + + //reimplementations + int itemIndex(const QListViewItem &item) const override { return item.indexHint; } + QListViewItem indexToListViewItem(const QModelIndex &index) const override; + bool doBatchedItemLayout(const QListViewLayoutInfo &info, int max) override; + void clear() override; + void setRowCount(int rowCount) override { flowPositions.resize(rowCount); } + QVector<QModelIndex> intersectingSet(const QRect &area) const override; + void dataChanged(const QModelIndex &, const QModelIndex &) override; + + int horizontalScrollToValue(int index, QListView::ScrollHint hint, + bool leftOf, bool rightOf,const QRect &area, const QRect &rect) const override; + int verticalScrollToValue(int index, QListView::ScrollHint hint, + bool above, bool below, const QRect &area, const QRect &rect) const override; + void scrollContentsBy(int dx, int dy, bool scrollElasticBand) override; + QRect mapToViewport(const QRect &rect) const override; + int horizontalOffset() const override; + int verticalOffset() const override; + inline static QSize viewportSize(const QAbstractItemView *v); + void updateHorizontalScrollBar(const QSize &step) override; + void updateVerticalScrollBar(const QSize &step) override; + +#ifndef QT_NO_DRAGANDDROP + // The next two methods are to be used on LefToRight flow only. + // WARNING: Plenty of duplicated code from QAbstractItemView{,Private}. + QAbstractItemView::DropIndicatorPosition position(const QPoint &pos, const QRect &rect, const QModelIndex &idx) const; + void dragMoveEvent(QDragMoveEvent *e); + bool dropOn(QDropEvent *event, int *row, int *col, QModelIndex *index); +#endif + +private: + QPoint initStaticLayout(const QListViewLayoutInfo &info); + void doStaticLayout(const QListViewLayoutInfo &info); + int perItemScrollToValue(int index, int value, int height, + QAbstractItemView::ScrollHint hint, + Qt::Orientation orientation, bool wrap, int extent) const; + int perItemScrollingPageSteps(int length, int bounds, bool wrap) const; +}; + +class QIconModeViewBase : public QCommonListViewBase +{ +public: + QIconModeViewBase(QListView *q, QListViewPrivate *d) : QCommonListViewBase(q, d), interSectingVector(0) {} + + QBspTree tree; + QVector<QListViewItem> items; + QBitArray moved; + + QVector<QModelIndex> draggedItems; // indices to the tree.itemVector + mutable QPoint draggedItemsPos; + + // used when laying out in batches + QVector<QModelIndex> *interSectingVector; //used from within intersectingSet + + //reimplementations + int itemIndex(const QListViewItem &item) const override; + QListViewItem indexToListViewItem(const QModelIndex &index) const override; + bool doBatchedItemLayout(const QListViewLayoutInfo &info, int max) override; + void clear() override; + void setRowCount(int rowCount) override; + QVector<QModelIndex> intersectingSet(const QRect &area) const override; + + void scrollContentsBy(int dx, int dy, bool scrollElasticBand) override; + void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) override; + void appendHiddenRow(int row) override; + void removeHiddenRow(int row) override; + void setPositionForIndex(const QPoint &position, const QModelIndex &index) override; + +#ifndef QT_NO_DRAGANDDROP + bool filterDragMoveEvent(QDragMoveEvent *) override; + bool filterDragLeaveEvent(QDragLeaveEvent *) override; + bool filterDropEvent(QDropEvent *e) override; + bool filterStartDrag(Qt::DropActions) override; +#endif + +private: + void initBspTree(const QSize &contents); + QPoint initDynamicLayout(const QListViewLayoutInfo &info); + void doDynamicLayout(const QListViewLayoutInfo &info); + static void addLeaf(QVector<int> &leaf, const QRect &area, + uint visited, QBspTree::Data data); + QRect itemsRect(const QVector<QModelIndex> &indexes) const; + QRect draggedItemsRect() const; + QPoint snapToGrid(const QPoint &pos) const; + void updateContentsSize(); + QPoint draggedItemsDelta() const; + void drawItems(QPainter *painter, const QVector<QModelIndex> &indexes) const; + void moveItem(int index, const QPoint &dest); + +}; + +class Q_AUTOTEST_EXPORT QListViewPrivate: public QAbstractItemViewPrivate +{ + Q_DECLARE_PUBLIC(QListView) +public: + QListViewPrivate(); + ~QListViewPrivate(); + + void clear(); + void prepareItemsLayout(); + + bool doItemsLayout(int num); + + inline QVector<QModelIndex> intersectingSet(const QRect &area, bool doLayout = true) const { + if (doLayout) executePostedLayout(); + QRect a = (q_func()->isRightToLeft() ? flipX(area.normalized()) : area.normalized()); + return commonListView->intersectingSet(a); + } + + inline void resetBatchStartRow() { commonListView->batchStartRow = 0; } + inline int batchStartRow() const { return commonListView->batchStartRow; } + inline QSize contentsSize() const { return commonListView->contentsSize; } + inline void setContentsSize(int w, int h) { commonListView->contentsSize = QSize(w, h); } + + inline int flipX(int x) const + { return qMax(viewport->width(), contentsSize().width()) - x; } + inline QPoint flipX(const QPoint &p) const + { return QPoint(flipX(p.x()), p.y()); } + inline QRect flipX(const QRect &r) const + { return QRect(flipX(r.x()) - r.width(), r.y(), r.width(), r.height()); } + inline QRect viewItemRect(const QListViewItem &item) const + { if (q_func()->isRightToLeft()) return flipX(item.rect()); return item.rect(); } + + QListViewItem indexToListViewItem(const QModelIndex &index) const; + inline QModelIndex listViewItemToIndex(const QListViewItem &item) const + { return model->index(commonListView->itemIndex(item), column, root); } + + QRect rectForIndex(const QModelIndex &index) const + { + if (!isIndexValid(index) || index.parent() != root || index.column() != column || isHidden(index.row())) + return QRect(); + executePostedLayout(); + return viewItemRect(indexToListViewItem(index)); + } + + void viewUpdateGeometries() { q_func()->updateGeometries(); } + + + QRect mapToViewport(const QRect &rect, bool extend = true) const; + + QModelIndex closestIndex(const QRect &target, const QVector<QModelIndex> &candidates) const; + QSize itemSize(const QStyleOptionViewItem &option, const QModelIndex &index) const; + + bool selectionAllowed(const QModelIndex &index) const override + { if (viewMode == QListView::ListMode && !showElasticBand) return index.isValid(); return true; } + + int horizontalScrollToValue(const QModelIndex &index, const QRect &rect, QListView::ScrollHint hint) const; + int verticalScrollToValue(const QModelIndex &index, const QRect &rect, QListView::ScrollHint hint) const; + + QItemSelection selection(const QRect &rect) const; + void selectAll(QItemSelectionModel::SelectionFlags command) override; + +#ifndef QT_NO_DRAGANDDROP + QAbstractItemView::DropIndicatorPosition position(const QPoint &pos, const QRect &rect, const QModelIndex &idx) const override; + bool dropOn(QDropEvent *event, int *row, int *col, QModelIndex *index) override; +#endif + + inline void setGridSize(const QSize &size) { grid = size; } + inline QSize gridSize() const { return grid; } + inline void setWrapping(bool b) { wrap = b; } + inline bool isWrapping() const { return wrap; } + inline void setSpacing(int s) { space = s; } + inline int spacing() const { return space; } + inline void setSelectionRectVisible(bool visible) { showElasticBand = visible; } + inline bool isSelectionRectVisible() const { return showElasticBand; } + + inline QModelIndex modelIndex(int row) const { return model->index(row, column, root); } + inline bool isHidden(int row) const { + QModelIndex idx = model->index(row, 0, root); + return isPersistent(idx) && hiddenRows.contains(idx); + } + inline bool isHiddenOrDisabled(int row) const { return isHidden(row) || !isIndexEnabled(modelIndex(row)); } + + void removeCurrentAndDisabled(QVector<QModelIndex> *indexes, const QModelIndex ¤t) const; + + void scrollElasticBandBy(int dx, int dy); + + QItemViewPaintPairs draggablePaintPairs(const QModelIndexList &indexes, QRect *r) const override; + + void emitIndexesMoved(const QModelIndexList &indexes) { emit q_func()->indexesMoved(indexes); } + + + QCommonListViewBase *commonListView; + + // ### FIXME: see if we can move the members into the dynamic/static classes + + bool wrap; + int space; + QSize grid; + + QListView::Flow flow; + QListView::Movement movement; + QListView::ResizeMode resizeMode; + QListView::LayoutMode layoutMode; + QListView::ViewMode viewMode; + + // the properties controlling the + // icon- or list-view modes + enum ModeProperties { + Wrap = 1, + Spacing = 2, + GridSize = 4, + Flow = 8, + Movement = 16, + ResizeMode = 32, + SelectionRectVisible = 64 + }; + + uint modeProperties : 8; + + QRect layoutBounds; + + // timers + QBasicTimer batchLayoutTimer; + + // used for hidden items + QSet<QPersistentModelIndex> hiddenRows; + + int column; + bool uniformItemSizes; + mutable QSize cachedItemSize; + int batchSize; + + QRect elasticBand; + bool showElasticBand; +}; + +// inline implementations + +inline int QCommonListViewBase::spacing() const { return dd->spacing(); } +inline bool QCommonListViewBase::isWrapping() const { return dd->isWrapping(); } +inline QSize QCommonListViewBase::gridSize() const { return dd->gridSize(); } +inline QListView::Flow QCommonListViewBase::flow() const { return dd->flow; } +inline QListView::Movement QCommonListViewBase::movement() const { return dd->movement; } + +inline QPoint QCommonListViewBase::offset() const { return dd->offset(); } +inline QPoint QCommonListViewBase::pressedPosition() const { return dd->pressedPosition; } +inline bool QCommonListViewBase::uniformItemSizes() const { return dd->uniformItemSizes; } +inline int QCommonListViewBase::column() const { return dd->column; } + +inline QScrollBar *QCommonListViewBase::verticalScrollBar() const { return qq->verticalScrollBar(); } +inline QScrollBar *QCommonListViewBase::horizontalScrollBar() const { return qq->horizontalScrollBar(); } +inline QListView::ScrollMode QCommonListViewBase::verticalScrollMode() const { return qq->verticalScrollMode(); } +inline QListView::ScrollMode QCommonListViewBase::horizontalScrollMode() const { return qq->horizontalScrollMode(); } + +inline QModelIndex QCommonListViewBase::modelIndex(int row) const + { return dd->model->index(row, dd->column, dd->root); } +inline int QCommonListViewBase::rowCount() const { return dd->model->rowCount(dd->root); } + +inline QStyleOptionViewItem QCommonListViewBase::viewOptions() const { return dd->viewOptionsV1(); } +inline QWidget *QCommonListViewBase::viewport() const { return dd->viewport; } +inline QRect QCommonListViewBase::clipRect() const { return dd->clipRect(); } + +inline QSize QCommonListViewBase::cachedItemSize() const { return dd->cachedItemSize; } +inline QRect QCommonListViewBase::viewItemRect(const QListViewItem &item) const { return dd->viewItemRect(item); } +inline QSize QCommonListViewBase::itemSize(const QStyleOptionViewItem &opt, const QModelIndex &idx) const + { return dd->itemSize(opt, idx); } + +inline QAbstractItemDelegate *QCommonListViewBase::delegate(const QModelIndex &idx) const + { return dd->delegateForIndex(idx); } + +inline bool QCommonListViewBase::isHidden(int row) const { return dd->isHidden(row); } +inline int QCommonListViewBase::hiddenCount() const { return dd->hiddenRows.count(); } + +inline bool QCommonListViewBase::isRightToLeft() const { return qq->isRightToLeft(); } + +QT_END_NAMESPACE + +#endif // QLISTVIEW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlistwidget_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlistwidget_p.h new file mode 100644 index 000000000..e8f5540f9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qlistwidget_p.h @@ -0,0 +1,174 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLISTWIDGET_P_H +#define QLISTWIDGET_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/qabstractitemmodel.h> +#include <QtWidgets/qabstractitemview.h> +#include <QtWidgets/qlistwidget.h> +#include <qitemdelegate.h> +#include <private/qlistview_p.h> +#include <private/qwidgetitemdata_p.h> + +QT_REQUIRE_CONFIG(listwidget); + +QT_BEGIN_NAMESPACE + +class QListModelLessThan +{ +public: + inline bool operator()(QListWidgetItem *i1, QListWidgetItem *i2) const + { return *i1 < *i2; } +}; + +class QListModelGreaterThan +{ +public: + inline bool operator()(QListWidgetItem *i1, QListWidgetItem *i2) const + { return *i2 < *i1; } +}; + +class Q_AUTOTEST_EXPORT QListModel : public QAbstractListModel +{ + Q_OBJECT + friend class QListWidget; + +public: + QListModel(QListWidget *parent); + ~QListModel(); + + void clear(); + QListWidgetItem *at(int row) const; + void insert(int row, QListWidgetItem *item); + void insert(int row, const QStringList &items); + void remove(QListWidgetItem *item); + QListWidgetItem *take(int row); + void move(int srcRow, int dstRow); + + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + + QModelIndex index(QListWidgetItem *item) const; + QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const override; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + bool setData(const QModelIndex &index, const QVariant &value, int role) override; + + QMap<int, QVariant> itemData(const QModelIndex &index) const override; + + bool insertRows(int row, int count = 1, const QModelIndex &parent = QModelIndex()) override; + bool removeRows(int row, int count = 1, const QModelIndex &parent = QModelIndex()) override; + + Qt::ItemFlags flags(const QModelIndex &index) const override; + + void sort(int column, Qt::SortOrder order) override; + void ensureSorted(int column, Qt::SortOrder order, int start, int end); + static bool itemLessThan(const QPair<QListWidgetItem*,int> &left, + const QPair<QListWidgetItem*,int> &right); + static bool itemGreaterThan(const QPair<QListWidgetItem*,int> &left, + const QPair<QListWidgetItem*,int> &right); + static QList<QListWidgetItem*>::iterator sortedInsertionIterator( + const QList<QListWidgetItem*>::iterator &begin, + const QList<QListWidgetItem*>::iterator &end, + Qt::SortOrder order, QListWidgetItem *item); + + void itemChanged(QListWidgetItem *item); + + // dnd + QStringList mimeTypes() const override; + QMimeData *mimeData(const QModelIndexList &indexes) const override; +#ifndef QT_NO_DRAGANDDROP + bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) override; + Qt::DropActions supportedDropActions() const override; +#endif + + QMimeData *internalMimeData() const; +private: + QList<QListWidgetItem*> items; + + // A cache must be mutable if get-functions should have const modifiers + mutable QModelIndexList cachedIndexes; +}; + + + +class QListWidgetPrivate : public QListViewPrivate +{ + Q_DECLARE_PUBLIC(QListWidget) +public: + QListWidgetPrivate() : QListViewPrivate(), sortOrder(Qt::AscendingOrder), sortingEnabled(false) {} + inline QListModel *listModel() const { return qobject_cast<QListModel*>(model); } + void setup(); + void _q_emitItemPressed(const QModelIndex &index); + void _q_emitItemClicked(const QModelIndex &index); + void _q_emitItemDoubleClicked(const QModelIndex &index); + void _q_emitItemActivated(const QModelIndex &index); + void _q_emitItemEntered(const QModelIndex &index); + void _q_emitItemChanged(const QModelIndex &index); + void _q_emitCurrentItemChanged(const QModelIndex ¤t, const QModelIndex &previous); + void _q_sort(); + void _q_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); + Qt::SortOrder sortOrder; + bool sortingEnabled; +}; + +class QListWidgetItemPrivate +{ +public: + QListWidgetItemPrivate(QListWidgetItem *item) : q(item), theid(-1) {} + QListWidgetItem *q; + QVector<QWidgetItemData> values; + int theid; +}; + +QT_END_NAMESPACE + +#endif // QLISTWIDGET_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmacgesturerecognizer_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmacgesturerecognizer_p.h new file mode 100644 index 000000000..be3f3266a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmacgesturerecognizer_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMACSWIPEGESTURERECOGNIZER_MAC_P_H +#define QMACSWIPEGESTURERECOGNIZER_MAC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qtimer.h" +#include "qpoint.h" +#include "qgesturerecognizer.h" + +#ifndef QT_NO_GESTURES + +QT_BEGIN_NAMESPACE + +class QMacSwipeGestureRecognizer : public QGestureRecognizer +{ +public: + QMacSwipeGestureRecognizer(); + + QGesture *create(QObject *target); + QGestureRecognizer::Result recognize(QGesture *gesture, QObject *watched, QEvent *event); + void reset(QGesture *gesture); +}; + +class QMacPinchGestureRecognizer : public QGestureRecognizer +{ +public: + QMacPinchGestureRecognizer(); + + QGesture *create(QObject *target); + QGestureRecognizer::Result recognize(QGesture *gesture, QObject *watched, QEvent *event); + void reset(QGesture *gesture); +}; + +class QMacPanGestureRecognizer : public QObject, public QGestureRecognizer +{ +public: + QMacPanGestureRecognizer(); + + QGesture *create(QObject *target); + QGestureRecognizer::Result recognize(QGesture *gesture, QObject *watched, QEvent *event); + void reset(QGesture *gesture); +private: + QPointF _startPos; + QBasicTimer _panTimer; + bool _panCanceled; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_GESTURES + +#endif // QMACSWIPEGESTURERECOGNIZER_MAC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmacstyle_mac_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmacstyle_mac_p.h new file mode 100644 index 000000000..729653935 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmacstyle_mac_p.h @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMACSTYLE_MAC_P_H +#define QMACSTYLE_MAC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtWidgets/qcommonstyle.h> + +QT_BEGIN_NAMESPACE + + +#if QT_CONFIG(style_mac) + +class QPalette; + +class QPushButton; +class QStyleOptionButton; +class QMacStylePrivate; +class QMacStyle : public QCommonStyle +{ + Q_OBJECT +public: + QMacStyle(); + virtual ~QMacStyle(); + + void polish(QWidget *w); + void unpolish(QWidget *w); + + void polish(QApplication*); + void unpolish(QApplication*); + + void polish(QPalette &pal); + + void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, + const QWidget *w = 0) const; + void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, + const QWidget *w = 0) const; + QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget = 0) const; + void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, + const QWidget *w = 0) const; + SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, + const QPoint &pt, const QWidget *w = 0) const; + QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, + const QWidget *w = 0) const; + QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, + const QSize &contentsSize, const QWidget *w = 0) const; + + int pixelMetric(PixelMetric pm, const QStyleOption *opt = 0, const QWidget *widget = 0) const; + + QPalette standardPalette() const; + + virtual int styleHint(StyleHint sh, const QStyleOption *opt = 0, const QWidget *w = 0, + QStyleHintReturn *shret = 0) const; + + enum WidgetSizePolicy { SizeSmall, SizeLarge, SizeMini, SizeDefault + }; + + static void setWidgetSizePolicy(const QWidget *w, WidgetSizePolicy policy); + static WidgetSizePolicy widgetSizePolicy(const QWidget *w, const QStyleOption *opt = 0); + + QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt, + const QWidget *widget = 0) const; + + QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, + const QStyleOption *opt) const; + + virtual void drawItemText(QPainter *p, const QRect &r, int flags, const QPalette &pal, + bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; + + bool event(QEvent *e); + + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *opt = 0, + const QWidget *widget = 0) const; + int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, + Qt::Orientation orientation, const QStyleOption *option = 0, + const QWidget *widget = 0) const; + +private: + Q_DISABLE_COPY(QMacStyle) + Q_DECLARE_PRIVATE(QMacStyle) + +#if QT_CONFIG(pushbutton) + friend bool qt_mac_buttonIsRenderedFlat(const QPushButton *pushButton, const QStyleOptionButton *option); +#endif +}; + +#endif + +QT_END_NAMESPACE + +#endif // QMACSTYLE_MAC_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmacstyle_mac_p_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmacstyle_mac_p_p.h new file mode 100644 index 000000000..228abf950 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmacstyle_mac_p_p.h @@ -0,0 +1,292 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QMACSTYLE_MAC_P_P_H +#define QMACSTYLE_MAC_P_P_H + +#include <Carbon/Carbon.h> +#undef check + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qmacstyle_mac_p.h" +#include "qcommonstyle_p.h" +#include <private/qapplication_p.h> +#if QT_CONFIG(combobox) +#include <private/qcombobox_p.h> +#endif +#include <private/qpainter_p.h> +#include <private/qstylehelper_p.h> +#include <qapplication.h> +#include <qbitmap.h> +#if QT_CONFIG(checkbox) +#include <qcheckbox.h> +#endif +#include <qcombobox.h> +#if QT_CONFIG(dialogbuttonbox) +#include <qdialogbuttonbox.h> +#endif +#if QT_CONFIG(dockwidget) +#include <qdockwidget.h> +#endif +#include <qevent.h> +#include <qfocusframe.h> +#include <qformlayout.h> +#if QT_CONFIG(groupbox) +#include <qgroupbox.h> +#endif +#include <qhash.h> +#include <qheaderview.h> +#include <qlayout.h> +#if QT_CONFIG(lineedit) +#include <qlineedit.h> +#endif +#if QT_CONFIG(listview) +#include <qlistview.h> +#endif +#if QT_CONFIG(mainwindow) +#include <qmainwindow.h> +#endif +#include <qmap.h> +#if QT_CONFIG(menubar) +#include <qmenubar.h> +#endif +#include <qpaintdevice.h> +#include <qpainter.h> +#include <qpixmapcache.h> +#include <qpointer.h> +#if QT_CONFIG(progressbar) +#include <qprogressbar.h> +#endif +#if QT_CONFIG(pushbutton) +#include <qpushbutton.h> +#endif +#include <qradiobutton.h> +#if QT_CONFIG(rubberband) +#include <qrubberband.h> +#endif +#if QT_CONFIG(sizegrip) +#include <qsizegrip.h> +#endif +#if QT_CONFIG(spinbox) +#include <qspinbox.h> +#endif +#if QT_CONFIG(splitter) +#include <qsplitter.h> +#endif +#include <qstyleoption.h> +#include <qtextedit.h> +#include <qtextstream.h> +#include <qtoolbar.h> +#if QT_CONFIG(toolbutton) +#include <qtoolbutton.h> +#endif +#if QT_CONFIG(treeview) +#include <qtreeview.h> +#endif +#if QT_CONFIG(tableview) +#include <qtableview.h> +#endif +#include <qdebug.h> +#if QT_CONFIG(datetimeedit) +#include <qdatetimeedit.h> +#endif +#include <qmath.h> +#include <qpair.h> +#include <qvector.h> +#include <QtWidgets/qgraphicsproxywidget.h> +#include <QtWidgets/qgraphicsview.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. +// + +Q_FORWARD_DECLARE_OBJC_CLASS(NSView); +Q_FORWARD_DECLARE_OBJC_CLASS(NSScroller); + +QT_BEGIN_NAMESPACE + +/* + AHIG: + Apple Human Interface Guidelines + http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/ + + Builder: + Apple Interface Builder v. 3.1.1 +*/ + +// this works as long as we have at most 16 different control types +#define CT1(c) CT2(c, c) +#define CT2(c1, c2) ((uint(c1) << 16) | uint(c2)) + +enum QAquaWidgetSize { QAquaSizeLarge = 0, QAquaSizeSmall = 1, QAquaSizeMini = 2, + QAquaSizeUnknown = -1 }; + +enum QCocoaWidgetKind { + QCocoaArrowButton, // Disclosure triangle, like in QTreeView + QCocoaCheckBox, + QCocoaComboBox, // Editable QComboBox + QCocoaPopupButton, // Non-editable QComboBox + QCocoaPullDownButton, // QPushButton with menu + QCocoaPushButton, + QCocoaRadioButton, + QCocoaHorizontalSlider, + QCocoaVerticalSlider +}; + +typedef QPair<QCocoaWidgetKind, QAquaWidgetSize> QCocoaWidget; + +typedef void (^QCocoaDrawRectBlock)(NSRect, CGContextRef); + +#define SIZE(large, small, mini) \ + (controlSize == QAquaSizeLarge ? (large) : controlSize == QAquaSizeSmall ? (small) : (mini)) + +// same as return SIZE(...) but optimized +#define return_SIZE(large, small, mini) \ + do { \ + static const int sizes[] = { (large), (small), (mini) }; \ + return sizes[controlSize]; \ + } while (false) + +#if QT_CONFIG(pushbutton) +bool qt_mac_buttonIsRenderedFlat(const QPushButton *pushButton, const QStyleOptionButton *option); +#endif + +class QMacStylePrivate : public QCommonStylePrivate +{ + Q_DECLARE_PUBLIC(QMacStyle) +public: + QMacStylePrivate(); + ~QMacStylePrivate(); + + // Ideally these wouldn't exist, but since they already exist we need some accessors. + static const int PushButtonLeftOffset; + static const int PushButtonTopOffset; + static const int PushButtonRightOffset; + static const int PushButtonBottomOffset; + static const int MiniButtonH; + static const int SmallButtonH; + static const int BevelButtonW; + static const int BevelButtonH; + static const int PushButtonContentPadding; + + enum Animates { AquaPushButton, AquaProgressBar, AquaListViewItemOpen, AquaScrollBar }; + static ThemeDrawState getDrawState(QStyle::State flags); + QAquaWidgetSize aquaSizeConstrain(const QStyleOption *option, const QWidget *widg, + QStyle::ContentsType ct = QStyle::CT_CustomBase, + QSize szHint=QSize(-1, -1), QSize *insz = 0) const; + QAquaWidgetSize effectiveAquaSizeConstrain(const QStyleOption *option, const QWidget *widg, + QStyle::ContentsType ct = QStyle::CT_CustomBase, + QSize szHint=QSize(-1, -1), QSize *insz = 0) const; + void getSliderInfo(QStyle::ComplexControl cc, const QStyleOptionSlider *slider, + HIThemeTrackDrawInfo *tdi, const QWidget *needToRemoveMe) const; + inline int animateSpeed(Animates) const { return 33; } + + // Utility functions + void drawColorlessButton(const HIRect &macRect, HIThemeButtonDrawInfo *bdi, + QPainter *p, const QStyleOption *opt) const; + + QSize pushButtonSizeFromContents(const QStyleOptionButton *btn) const; + + HIRect pushButtonContentBounds(const QStyleOptionButton *btn, + const HIThemeButtonDrawInfo *bdi) const; + + void initComboboxBdi(const QStyleOptionComboBox *combo, HIThemeButtonDrawInfo *bdi, + const QWidget *widget, const ThemeDrawState &tds) const; + + static HIRect comboboxInnerBounds(const HIRect &outerBounds, int buttonKind); + + static QRect comboboxEditBounds(const QRect &outerBounds, const HIThemeButtonDrawInfo &bdi); + + static void drawCombobox(const HIRect &outerBounds, const HIThemeButtonDrawInfo &bdi, QPainter *p); + static void drawTableHeader(const HIRect &outerBounds, bool drawTopBorder, bool drawLeftBorder, + const HIThemeButtonDrawInfo &bdi, QPainter *p); + bool contentFitsInPushButton(const QStyleOptionButton *btn, HIThemeButtonDrawInfo *bdi, + ThemeButtonKind buttonKindToCheck) const; + void initHIThemePushButton(const QStyleOptionButton *btn, const QWidget *widget, + const ThemeDrawState tds, + HIThemeButtonDrawInfo *bdi) const; + QPixmap generateBackgroundPattern() const; + + void setAutoDefaultButton(QObject *button) const; + + NSView *cocoaControl(QCocoaWidget widget) const; + + void drawNSViewInRect(QCocoaWidget widget, NSView *view, const QRect &rect, QPainter *p, bool isQWidget = true, QCocoaDrawRectBlock drawRectBlock = nil) const; + void resolveCurrentNSView(QWindow *window); + + void drawFocusRing(QPainter *p, const QRect &targetRect, int hMargin, int vMargin, qreal radius = 0) const; + +#if QT_CONFIG(tabbar) + void tabLayout(const QStyleOptionTab *opt, const QWidget *widget, QRect *textRect, QRect *iconRect) const; +#endif + +public: + mutable QPointer<QObject> pressedButton; + mutable QPointer<QObject> defaultButton; + mutable QPointer<QObject> autoDefaultButton; + static QVector<QPointer<QObject> > scrollBars; + + struct ButtonState { + int frame; + enum { ButtonDark, ButtonLight } dir; + } buttonState; + mutable QPointer<QFocusFrame> focusWidget; + CFAbsoluteTime defaultButtonStart; + bool mouseDown; + void* receiver; + NSScroller *horizontalScroller; + NSScroller *verticalScroller; + void *indicatorBranchButtonCell; + NSView *backingStoreNSView; + QHash<QCocoaWidget, NSView *> cocoaControls; +}; + +QT_END_NAMESPACE + +#endif // QMACSTYLE_MAC_P_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmainwindowlayout_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmainwindowlayout_p.h new file mode 100644 index 000000000..615035d2f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmainwindowlayout_p.h @@ -0,0 +1,382 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDYNAMICMAINWINDOWLAYOUT_P_H +#define QDYNAMICMAINWINDOWLAYOUT_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qmainwindow.h" + +#include "QtWidgets/qlayout.h" +#if QT_CONFIG(tabbar) +#include "QtWidgets/qtabbar.h" +#endif +#include "QtCore/qvector.h" +#include "QtCore/qset.h" +#include "QtCore/qbasictimer.h" +#include "private/qlayoutengine_p.h" +#include "private/qwidgetanimator_p.h" + +#if QT_CONFIG(dockwidget) +#include "qdockarealayout_p.h" +#endif +#include "qtoolbararealayout_p.h" + +QT_REQUIRE_CONFIG(mainwindow); + +QT_BEGIN_NAMESPACE + +class QToolBar; +class QRubberBand; + +#if QT_CONFIG(dockwidget) +class QDockWidgetGroupWindow : public QWidget +{ + Q_OBJECT +public: + explicit QDockWidgetGroupWindow(QWidget* parent = 0, Qt::WindowFlags f = 0) + : QWidget(parent, f) {} + QDockAreaLayoutInfo *layoutInfo() const; + QDockWidget *topDockWidget() const; + void destroyOrHideIfEmpty(); + void adjustFlags(); + bool hasNativeDecos() const; + +protected: + bool event(QEvent *) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent*) Q_DECL_OVERRIDE; + +private: + QSize m_removedFrameSize; +}; + +// This item will be used in the layout for the gap item. We cannot use QWidgetItem directly +// because QWidgetItem functions return an empty size for widgets that are are floating. +class QDockWidgetGroupWindowItem : public QWidgetItem +{ +public: + explicit QDockWidgetGroupWindowItem(QDockWidgetGroupWindow *parent) : QWidgetItem(parent) {} + QSize minimumSize() const Q_DECL_OVERRIDE { return lay()->minimumSize(); } + QSize maximumSize() const Q_DECL_OVERRIDE { return lay()->maximumSize(); } + QSize sizeHint() const Q_DECL_OVERRIDE { return lay()->sizeHint(); } + +private: + QLayout *lay() const { return const_cast<QDockWidgetGroupWindowItem *>(this)->widget()->layout(); } +}; +#endif + +/* This data structure represents the state of all the tool-bars and dock-widgets. It's value based + so it can be easilly copied into a temporary variable. All operations are performed without moving + any widgets. Only when we are sure we have the desired state, we call apply(), which moves the + widgets. +*/ + +class QMainWindowLayoutState +{ +public: + QRect rect; + QMainWindow *mainWindow; + + QMainWindowLayoutState(QMainWindow *win); + +#ifndef QT_NO_TOOLBAR + QToolBarAreaLayout toolBarAreaLayout; +#endif + +#if QT_CONFIG(dockwidget) + QDockAreaLayout dockAreaLayout; +#else + QLayoutItem *centralWidgetItem; + QRect centralWidgetRect; +#endif + + void apply(bool animated); + void deleteAllLayoutItems(); + void deleteCentralWidgetItem(); + + QSize sizeHint() const; + QSize minimumSize() const; + void fitLayout(); + + QLayoutItem *itemAt(int index, int *x) const; + QLayoutItem *takeAt(int index, int *x); + QList<int> indexOf(QWidget *widget) const; + QLayoutItem *item(const QList<int> &path); + QRect itemRect(const QList<int> &path) const; + QRect gapRect(const QList<int> &path) const; // ### get rid of this, use itemRect() instead + + bool contains(QWidget *widget) const; + + void setCentralWidget(QWidget *widget); + QWidget *centralWidget() const; + + QList<int> gapIndex(QWidget *widget, const QPoint &pos) const; + bool insertGap(const QList<int> &path, QLayoutItem *item); + void remove(const QList<int> &path); + void remove(QLayoutItem *item); + void clear(); + bool isValid() const; + + QLayoutItem *plug(const QList<int> &path); + QLayoutItem *unplug(const QList<int> &path, QMainWindowLayoutState *savedState = 0); + + void saveState(QDataStream &stream) const; + bool checkFormat(QDataStream &stream); + bool restoreState(QDataStream &stream, const QMainWindowLayoutState &oldState); +}; + +class Q_AUTOTEST_EXPORT QMainWindowLayout : public QLayout +{ + Q_OBJECT + +public: + QMainWindowLayoutState layoutState, savedState; + + QMainWindowLayout(QMainWindow *mainwindow, QLayout *parentLayout); + ~QMainWindowLayout(); + + QMainWindow::DockOptions dockOptions; + void setDockOptions(QMainWindow::DockOptions opts); + bool usesHIToolBar(QToolBar *toolbar) const; + + void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE; + + // status bar + + QLayoutItem *statusbar; + +#if QT_CONFIG(statusbar) + QStatusBar *statusBar() const; + void setStatusBar(QStatusBar *sb); +#endif + + // central widget + + QWidget *centralWidget() const; + void setCentralWidget(QWidget *cw); + + // toolbars + +#ifndef QT_NO_TOOLBAR + void addToolBarBreak(Qt::ToolBarArea area); + void insertToolBarBreak(QToolBar *before); + void removeToolBarBreak(QToolBar *before); + + void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar, bool needAddChildWidget = true); + void insertToolBar(QToolBar *before, QToolBar *toolbar); + Qt::ToolBarArea toolBarArea(QToolBar *toolbar) const; + bool toolBarBreak(QToolBar *toolBar) const; + void getStyleOptionInfo(QStyleOptionToolBar *option, QToolBar *toolBar) const; + void removeToolBar(QToolBar *toolbar); + void toggleToolBarsVisible(); + void moveToolBar(QToolBar *toolbar, int pos); +#endif + + // dock widgets + +#if QT_CONFIG(dockwidget) + void setCorner(Qt::Corner corner, Qt::DockWidgetArea area); + Qt::DockWidgetArea corner(Qt::Corner corner) const; + void addDockWidget(Qt::DockWidgetArea area, + QDockWidget *dockwidget, + Qt::Orientation orientation); + void splitDockWidget(QDockWidget *after, + QDockWidget *dockwidget, + Qt::Orientation orientation); + void tabifyDockWidget(QDockWidget *first, QDockWidget *second); + Qt::DockWidgetArea dockWidgetArea(QWidget* widget) const; + void raise(QDockWidget *widget); + void setVerticalTabsEnabled(bool enabled); + bool restoreDockWidget(QDockWidget *dockwidget); + +#if QT_CONFIG(tabbar) + QDockAreaLayoutInfo *dockInfo(QWidget *w); + bool _documentMode; + bool documentMode() const; + void setDocumentMode(bool enabled); + + QTabBar *getTabBar(); + QSet<QTabBar*> usedTabBars; + QList<QTabBar*> unusedTabBars; + bool verticalTabsEnabled; + + QWidget *getSeparatorWidget(); + QSet<QWidget*> usedSeparatorWidgets; + QList<QWidget*> unusedSeparatorWidgets; + int sep; // separator extent + +#if QT_CONFIG(tabwidget) + QTabWidget::TabPosition tabPositions[4]; + QTabWidget::TabShape _tabShape; + + QTabWidget::TabShape tabShape() const; + void setTabShape(QTabWidget::TabShape tabShape); + QTabWidget::TabPosition tabPosition(Qt::DockWidgetArea area) const; + void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition); + + QDockWidgetGroupWindow *createTabbedDockWindow(); +#endif // QT_CONFIG(tabwidget) +#endif // QT_CONFIG(tabbar) + + // separators + + QList<int> movingSeparator; + QPoint movingSeparatorOrigin, movingSeparatorPos; + QBasicTimer separatorMoveTimer; + + bool startSeparatorMove(const QPoint &pos); + bool separatorMove(const QPoint &pos); + bool endSeparatorMove(const QPoint &pos); + void keepSize(QDockWidget *w); +#endif // QT_CONFIG(dockwidget) + + // save/restore + + enum VersionMarkers { // sentinel values used to validate state data + VersionMarker = 0xff + }; + void saveState(QDataStream &stream) const; + bool restoreState(QDataStream &stream); + + // QLayout interface + + void addItem(QLayoutItem *item) Q_DECL_OVERRIDE; + void setGeometry(const QRect &r) Q_DECL_OVERRIDE; + QLayoutItem *itemAt(int index) const Q_DECL_OVERRIDE; + QLayoutItem *takeAt(int index) Q_DECL_OVERRIDE; + int count() const Q_DECL_OVERRIDE; + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSize() const Q_DECL_OVERRIDE; + mutable QSize szHint; + mutable QSize minSize; + void invalidate() Q_DECL_OVERRIDE; + + // animations + + QWidgetAnimator widgetAnimator; + QList<int> currentGapPos; + QRect currentGapRect; + QWidget *pluggingWidget; +#if QT_CONFIG(rubberband) + QPointer<QRubberBand> gapIndicator; +#endif +#if QT_CONFIG(dockwidget) + QPointer<QWidget> currentHoveredFloat; // set when dragging over a floating dock widget + void setCurrentHoveredFloat(QWidget *w); +#endif + + void hover(QLayoutItem *widgetItem, const QPoint &mousePos); + bool plug(QLayoutItem *widgetItem); + QLayoutItem *unplug(QWidget *widget, bool group = false); + void revert(QLayoutItem *widgetItem); + void paintDropIndicator(QPainter *p, QWidget *widget, const QRegion &clip); + void applyState(QMainWindowLayoutState &newState, bool animate = true); + void restore(bool keepSavedState = false); + void updateHIToolBarStatus(); + void animationFinished(QWidget *widget); + +private Q_SLOTS: + void updateGapIndicator(); +#if QT_CONFIG(dockwidget) +#if QT_CONFIG(tabbar) + void tabChanged(); + void tabMoved(int from, int to); +#endif +#endif +private: +#if QT_CONFIG(tabbar) + void updateTabBarShapes(); +#endif +#if 0 // Used to be included in Qt4 for Q_WS_MAC + static OSStatus qtmacToolbarDelegate(EventHandlerCallRef, EventRef , void *); + static OSStatus qtoolbarInHIToolbarHandler(EventHandlerCallRef inCallRef, EventRef event, + void *data); + static void qtMacHIToolbarRegisterQToolBarInHIToolborItemClass(); + static HIToolbarItemRef CreateToolbarItemForIdentifier(CFStringRef identifier, CFTypeRef data); + static HIToolbarItemRef createQToolBarInHIToolbarItem(QToolBar *toolbar, + QMainWindowLayout *layout); +public: + struct ToolBarSaveState { + ToolBarSaveState() : movable(false) { } + ToolBarSaveState(bool newMovable, const QSize &newMax) + : movable(newMovable), maximumSize(newMax) { } + bool movable; + QSize maximumSize; + }; + QList<QToolBar *> qtoolbarsInUnifiedToolbarList; + QList<void *> toolbarItemsCopy; + QHash<void *, QToolBar *> unifiedToolbarHash; + QHash<QToolBar *, ToolBarSaveState> toolbarSaveState; + QHash<QString, QToolBar *> cocoaItemIDToToolbarHash; + void insertIntoMacToolbar(QToolBar *before, QToolBar *after); + void removeFromMacToolbar(QToolBar *toolbar); + void cleanUpMacToolbarItems(); + void fixSizeInUnifiedToolbar(QToolBar *tb) const; + bool useHIToolBar; + bool activateUnifiedToolbarAfterFullScreen; + void syncUnifiedToolbarVisibility(); + bool blockVisiblityCheck; + + QUnifiedToolbarSurface *unifiedSurface; + void updateUnifiedToolbarOffset(); + +#endif +}; + +#if QT_CONFIG(dockwidget) && !defined(QT_NO_DEBUG_STREAM) +class QDebug; +QDebug operator<<(QDebug debug, const QDockAreaLayout &layout); +QDebug operator<<(QDebug debug, const QMainWindowLayout *layout); +#endif + +QT_END_NAMESPACE + +#endif // QDYNAMICMAINWINDOWLAYOUT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmdiarea_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmdiarea_p.h new file mode 100644 index 000000000..4740993af --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmdiarea_p.h @@ -0,0 +1,271 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMDIAREA_P_H +#define QMDIAREA_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qmdiarea.h" +#include "qmdisubwindow.h" + +QT_REQUIRE_CONFIG(mdiarea); + +#include <QList> +#include <QVector> +#include <QRect> +#include <QPoint> +#include <QtWidgets/qapplication.h> +#include <private/qmdisubwindow_p.h> +#include <private/qabstractscrollarea_p.h> + +QT_BEGIN_NAMESPACE + +namespace QMdi { +class Rearranger +{ +public: + enum Type { + RegularTiler, + SimpleCascader, + IconTiler + }; + + // Rearranges widgets relative to domain. + virtual void rearrange(QList<QWidget *> &widgets, const QRect &domain) const = 0; + virtual Type type() const = 0; + virtual ~Rearranger() {} +}; + +class RegularTiler : public Rearranger +{ + // Rearranges widgets according to a regular tiling pattern + // covering the entire domain. + // Both positions and sizes may change. + void rearrange(QList<QWidget *> &widgets, const QRect &domain) const Q_DECL_OVERRIDE; + Type type() const Q_DECL_OVERRIDE { return Rearranger::RegularTiler; } +}; + +class SimpleCascader : public Rearranger +{ + // Rearranges widgets according to a simple, regular cascading pattern. + // Widgets are resized to minimumSize. + // Both positions and sizes may change. + void rearrange(QList<QWidget *> &widgets, const QRect &domain) const Q_DECL_OVERRIDE; + Type type() const Q_DECL_OVERRIDE { return Rearranger::SimpleCascader; } +}; + +class IconTiler : public Rearranger +{ + // Rearranges icons (assumed to be the same size) according to a regular + // tiling pattern filling up the domain from the bottom. + // Only positions may change. + void rearrange(QList<QWidget *> &widgets, const QRect &domain) const Q_DECL_OVERRIDE; + Type type() const Q_DECL_OVERRIDE { return Rearranger::IconTiler; } +}; + +class Placer +{ +public: + // Places the rectangle defined by 'size' relative to 'rects' and 'domain'. + // Returns the position of the resulting rectangle. + virtual QPoint place( + const QSize &size, const QVector<QRect> &rects, const QRect &domain) const = 0; + virtual ~Placer() {} +}; + +class MinOverlapPlacer : public Placer +{ + QPoint place(const QSize &size, const QVector<QRect> &rects, const QRect &domain) const Q_DECL_OVERRIDE; + static int accumulatedOverlap(const QRect &source, const QVector<QRect> &rects); + static QRect findMinOverlapRect(const QVector<QRect> &source, const QVector<QRect> &rects); + static QVector<QRect> getCandidatePlacements(const QSize &size, const QVector<QRect> &rects, const QRect &domain); + static QPoint findBestPlacement(const QRect &domain, const QVector<QRect> &rects, QVector<QRect> &source); + static QVector<QRect> findNonInsiders(const QRect &domain, QVector<QRect> &source); + static QVector<QRect> findMaxOverlappers(const QRect &domain, const QVector<QRect> &source); +}; +} // namespace QMdi + +class QMdiAreaTabBar; +class QMdiAreaPrivate : public QAbstractScrollAreaPrivate +{ + Q_DECLARE_PUBLIC(QMdiArea) +public: + QMdiAreaPrivate(); + + // Variables. + QMdi::Rearranger *cascader; + QMdi::Rearranger *regularTiler; + QMdi::Rearranger *iconTiler; + QMdi::Placer *placer; +#if QT_CONFIG(rubberband) + QRubberBand *rubberBand; +#endif + QMdiAreaTabBar *tabBar; + QList<QMdi::Rearranger *> pendingRearrangements; + QVector< QPointer<QMdiSubWindow> > pendingPlacements; + QVector< QPointer<QMdiSubWindow> > childWindows; + QVector<int> indicesToActivatedChildren; + QPointer<QMdiSubWindow> active; + QPointer<QMdiSubWindow> aboutToBecomeActive; + QBrush background; + QMdiArea::WindowOrder activationOrder; + QMdiArea::AreaOptions options; + QMdiArea::ViewMode viewMode; +#if QT_CONFIG(tabbar) + bool documentMode; + bool tabsClosable; + bool tabsMovable; +#endif +#if QT_CONFIG(tabwidget) + QTabWidget::TabShape tabShape; + QTabWidget::TabPosition tabPosition; +#endif + bool ignoreGeometryChange; + bool ignoreWindowStateChange; + bool isActivated; + bool isSubWindowsTiled; + bool showActiveWindowMaximized; + bool tileCalledFromResizeEvent; + bool updatesDisabledByUs; + bool inViewModeChange; + int indexToNextWindow; + int indexToPreviousWindow; + int indexToHighlighted; + int indexToLastActiveTab; + int resizeTimerId; + int tabToPreviousTimerId; + + // Slots. + void _q_deactivateAllWindows(QMdiSubWindow *aboutToActivate = 0); + void _q_processWindowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState); + void _q_currentTabChanged(int index); + void _q_closeTab(int index); + void _q_moveTab(int from, int to); + + // Functions. + void appendChild(QMdiSubWindow *child); + void place(QMdi::Placer *placer, QMdiSubWindow *child); + void rearrange(QMdi::Rearranger *rearranger); + void arrangeMinimizedSubWindows(); + void activateWindow(QMdiSubWindow *child); + void activateCurrentWindow(); + void activateHighlightedWindow(); + void emitWindowActivated(QMdiSubWindow *child); + void resetActiveWindow(QMdiSubWindow *child = 0); + void updateActiveWindow(int removedIndex, bool activeRemoved); + void updateScrollBars(); + void internalRaise(QMdiSubWindow *child) const; + bool scrollBarsEnabled() const; + bool lastWindowAboutToBeDestroyed() const; + void setChildActivationEnabled(bool enable = true, bool onlyNextActivationEvent = false) const; + QRect resizeToMinimumTileSize(const QSize &minSubWindowSize, int subWindowCount); + void scrollBarPolicyChanged(Qt::Orientation, Qt::ScrollBarPolicy) Q_DECL_OVERRIDE; // reimp + QMdiSubWindow *nextVisibleSubWindow(int increaseFactor, QMdiArea::WindowOrder, + int removed = -1, int fromIndex = -1) const; + void highlightNextSubWindow(int increaseFactor); + QList<QMdiSubWindow *> subWindowList(QMdiArea::WindowOrder, bool reversed = false) const; + void disconnectSubWindow(QObject *subWindow); + void setViewMode(QMdiArea::ViewMode mode); +#if QT_CONFIG(tabbar) + void updateTabBarGeometry(); + void refreshTabBar(); +#endif + + inline void startResizeTimer() + { + Q_Q(QMdiArea); + if (resizeTimerId > 0) + q->killTimer(resizeTimerId); + resizeTimerId = q->startTimer(200); + } + + inline void startTabToPreviousTimer() + { + Q_Q(QMdiArea); + if (tabToPreviousTimerId > 0) + q->killTimer(tabToPreviousTimerId); + tabToPreviousTimerId = q->startTimer(QApplication::keyboardInputInterval()); + } + + inline bool windowStaysOnTop(QMdiSubWindow *subWindow) const + { + if (!subWindow) + return false; + return subWindow->windowFlags() & Qt::WindowStaysOnTopHint; + } + + inline bool isExplicitlyDeactivated(QMdiSubWindow *subWindow) const + { + if (!subWindow) + return true; + return subWindow->d_func()->isExplicitlyDeactivated; + } + + inline void setActive(QMdiSubWindow *subWindow, bool active = true, bool changeFocus = true) const + { + if (subWindow) + subWindow->d_func()->setActive(active, changeFocus); + } + +#if QT_CONFIG(rubberband) + void showRubberBandFor(QMdiSubWindow *subWindow); + + inline void hideRubberBand() + { + if (rubberBand && rubberBand->isVisible()) + rubberBand->hide(); + indexToHighlighted = -1; + } +#endif // QT_CONFIG(rubberband) +}; + +QT_END_NAMESPACE + +#endif // QMDIAREA_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmdisubwindow_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmdisubwindow_p.h new file mode 100644 index 000000000..d03aca168 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmdisubwindow_p.h @@ -0,0 +1,350 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMDISUBWINDOW_P_H +#define QMDISUBWINDOW_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qmdisubwindow.h" + +#include <QStyle> +#include <QStyleOptionTitleBar> +#if QT_CONFIG(menubar) +#include <QMenuBar> +#endif +#if QT_CONFIG(sizegrip) +#include <QSizeGrip> +#endif +#include <QPointer> +#include <QDebug> +#include <private/qwidget_p.h> + +QT_REQUIRE_CONFIG(mdiarea); + +QT_BEGIN_NAMESPACE + +class QVBoxLayout; +class QMouseEvent; + +namespace QMdi { +template<typename T> +class ControlElement : public T +{ +public: + ControlElement(QMdiSubWindow *child) : T(child, 0) + { + Q_ASSERT(child); + mdiChild = child; + } + + void *qt_metacast(const char *classname) override + { + if (classname && strcmp(classname, "ControlElement") == 0) + return this; + return 0; + } + + QPointer<QMdiSubWindow> mdiChild; +}; + +class ControlContainer : public QObject +{ +public: + ControlContainer(QMdiSubWindow *mdiChild); + ~ControlContainer(); + +#if QT_CONFIG(menubar) + void showButtonsInMenuBar(QMenuBar *menuBar); + void removeButtonsFromMenuBar(QMenuBar *menuBar = 0); + QMenuBar *menuBar() const { return m_menuBar; } +#endif + void updateWindowIcon(const QIcon &windowIcon); + QWidget *controllerWidget() const { return m_controllerWidget; } + QWidget *systemMenuLabel() const { return m_menuLabel; } + +private: + QPointer<QWidget> previousLeft; + QPointer<QWidget> previousRight; +#if QT_CONFIG(menubar) + QPointer<QMenuBar> m_menuBar; +#endif + QPointer<QWidget> m_controllerWidget; + QPointer<QWidget> m_menuLabel; + QPointer<QMdiSubWindow> mdiChild; +}; +} // namespace QMdi + +class QMdiSubWindowPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QMdiSubWindow) +public: + // Enums and typedefs. + enum Operation { + None, + Move, + TopResize, + BottomResize, + LeftResize, + RightResize, + TopLeftResize, + TopRightResize, + BottomLeftResize, + BottomRightResize + }; + + enum ChangeFlag { + HMove = 0x01, + VMove = 0x02, + HResize = 0x04, + VResize = 0x08, + HResizeReverse = 0x10, + VResizeReverse = 0x20 + }; + + enum WindowStateAction { + RestoreAction, + MoveAction, + ResizeAction, + MinimizeAction, + MaximizeAction, + StayOnTopAction, + CloseAction, + /* Add new states _above_ this line! */ + NumWindowStateActions + }; + + struct OperationInfo { + uint changeFlags; + Qt::CursorShape cursorShape; + QRegion region; + bool hover; + OperationInfo(uint changeFlags, Qt::CursorShape cursorShape, bool hover = true) + : changeFlags(changeFlags), + cursorShape(cursorShape), + hover(hover) + {} + }; + + typedef QMap<Operation, OperationInfo> OperationInfoMap; + + QMdiSubWindowPrivate(); + + // Variables. + QPointer<QWidget> baseWidget; + QPointer<QWidget> restoreFocusWidget; + QPointer<QMdi::ControlContainer> controlContainer; +#if QT_CONFIG(sizegrip) + QPointer<QSizeGrip> sizeGrip; +#endif +#if QT_CONFIG(rubberband) + QRubberBand *rubberBand; +#endif + QPoint mousePressPosition; + QRect oldGeometry; + QSize internalMinimumSize; + QSize userMinimumSize; + QSize restoreSize; + bool resizeEnabled; + bool moveEnabled; + bool isInInteractiveMode; +#if QT_CONFIG(rubberband) + bool isInRubberBandMode; +#endif + bool isShadeMode; + bool ignoreWindowTitleChange; + bool ignoreNextActivationEvent; + bool activationEnabled; + bool isShadeRequestFromMinimizeMode; + bool isMaximizeMode; + bool isWidgetHiddenByUs; + bool isActive; + bool isExplicitlyDeactivated; + int keyboardSingleStep; + int keyboardPageStep; + int resizeTimerId; + Operation currentOperation; + QStyle::SubControl hoveredSubControl; + QStyle::SubControl activeSubControl; + Qt::FocusReason focusInReason; + OperationInfoMap operationMap; + QPointer<QMenu> systemMenu; +#ifndef QT_NO_ACTION + QPointer<QAction> actions[NumWindowStateActions]; +#endif + QMdiSubWindow::SubWindowOptions options; + QString lastChildWindowTitle; + QPalette titleBarPalette; + QString windowTitle; + QFont font; + QIcon menuIcon; + QStyleOptionTitleBar cachedStyleOptions; + QString originalTitle; + + // Slots. + void _q_updateStaysOnTopHint(); + void _q_enterInteractiveMode(); + void _q_processFocusChanged(QWidget *old, QWidget *now); + + // Functions. + void leaveInteractiveMode(); + void removeBaseWidget(); + void initOperationMap(); +#if QT_CONFIG(menu) + void createSystemMenu(); +#endif + void updateCursor(); + void updateDirtyRegions(); + void updateGeometryConstraints(); + void updateMask(); + void setNewGeometry(const QPoint &pos); + void setMinimizeMode(); + void setNormalMode(); + void setMaximizeMode(); + void setActive(bool activate, bool changeFocus = true); + void processClickedSubControl(); + QRegion getRegion(Operation operation) const; + Operation getOperation(const QPoint &pos) const; + QStyleOptionTitleBar titleBarOptions() const; + void ensureWindowState(Qt::WindowState state); + int titleBarHeight(const QStyleOptionTitleBar &options) const; + void sizeParameters(int *margin, int *minWidth) const; + bool drawTitleBarWhenMaximized() const; +#if QT_CONFIG(menubar) + QMenuBar *menuBar() const; + void showButtonsInMenuBar(QMenuBar *menuBar); + void removeButtonsFromMenuBar(); +#endif + void updateWindowTitle(bool requestFromChild); +#if QT_CONFIG(rubberband) + void enterRubberBandMode(); + void leaveRubberBandMode(); +#endif + QPalette desktopPalette() const; + void updateActions(); + void setFocusWidget(); + bool restoreFocus(); + void storeFocusWidget(); + void setWindowFlags(Qt::WindowFlags windowFlags) Q_DECL_OVERRIDE; + void setVisible(WindowStateAction, bool visible = true); +#ifndef QT_NO_ACTION + void setEnabled(WindowStateAction, bool enable = true); +#if QT_CONFIG(menu) + void addToSystemMenu(WindowStateAction, const QString &text, const char *slot); +#endif +#endif // QT_NO_ACTION + QSize iconSize() const; +#if QT_CONFIG(sizegrip) + void setSizeGrip(QSizeGrip *sizeGrip); + void setSizeGripVisible(bool visible = true) const; +#endif + void updateInternalWindowTitle(); + QString originalWindowTitle(); + void setNewWindowTitle(); + + inline int titleBarHeight() const + { + Q_Q(const QMdiSubWindow); + if (!parent || q->windowFlags() & Qt::FramelessWindowHint + || (q->isMaximized() && !drawTitleBarWhenMaximized())) { + return 0; + } + QStyleOptionTitleBar options = titleBarOptions(); + int height = options.rect.height(); + if (hasBorder(options)) + height += q->isMinimized() ? 8 : 4; + return height; + } + + inline QStyle::SubControl getSubControl(const QPoint &pos) const + { + Q_Q(const QMdiSubWindow); + QStyleOptionTitleBar titleBarOptions = this->titleBarOptions(); + return q->style()->hitTestComplexControl(QStyle::CC_TitleBar, &titleBarOptions, pos, q); + } + + inline void setNewGeometry(QRect *geometry) + { + Q_Q(QMdiSubWindow); + Q_ASSERT(parent); + geometry->setSize(geometry->size().expandedTo(internalMinimumSize)); +#if QT_CONFIG(rubberband) + if (isInRubberBandMode) + rubberBand->setGeometry(*geometry); + else +#endif + q->setGeometry(*geometry); + } + + inline bool hasBorder(const QStyleOptionTitleBar &options) const + { + Q_Q(const QMdiSubWindow); + return !q->style()->styleHint(QStyle::SH_TitleBar_NoBorder, &options, q); + } + + inline bool autoRaise() const + { + Q_Q(const QMdiSubWindow); + return q->style()->styleHint(QStyle::SH_TitleBar_AutoRaise, 0, q); + } + + inline bool isResizeOperation() const + { + return currentOperation != None && currentOperation != Move; + } + + inline bool isMoveOperation() const + { + return currentOperation == Move; + } +}; + +QT_END_NAMESPACE + +#endif // QMDISUBWINDOW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmenu_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmenu_p.h new file mode 100644 index 000000000..64d22087e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmenu_p.h @@ -0,0 +1,482 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMENU_P_H +#define QMENU_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#if QT_CONFIG(menubar) +#include "QtWidgets/qmenubar.h" +#endif +#include "QtWidgets/qstyleoption.h" +#include "QtCore/qdatetime.h" +#include "QtCore/qmap.h" +#include "QtCore/qhash.h" +#include "QtCore/qbasictimer.h" +#include "private/qwidget_p.h" + +#include <qpa/qplatformmenu.h> + +QT_REQUIRE_CONFIG(menu); + +QT_BEGIN_NAMESPACE + +class QTornOffMenu; +class QEventLoop; + +template <typename T> +class QSetValueOnDestroy +{ +public: + QSetValueOnDestroy(T &toSet, T value) + : toSet(toSet) + , value(value) + { } + + ~QSetValueOnDestroy() { toSet = value; } +private: + T &toSet; + T value; +}; + +class QMenuSloppyState +{ + Q_DISABLE_COPY(QMenuSloppyState) +public: + QMenuSloppyState() + : m_enabled(false) + , m_uni_directional(false) + , m_select_other_actions(false) + , m_use_reset_action(true) + { } + + ~QMenuSloppyState() { reset(); } + + void initialize(QMenu *menu) + { + m_menu = menu; + m_uni_directional = menu->style()->styleHint(QStyle::SH_Menu_SubMenuUniDirection, 0, menu); + m_uni_dir_fail_at_count = short(menu->style()->styleHint(QStyle::SH_Menu_SubMenuUniDirectionFailCount, 0, menu)); + m_select_other_actions = menu->style()->styleHint(QStyle::SH_Menu_SubMenuSloppySelectOtherActions, 0 , menu); + m_timeout = short(menu->style()->styleHint(QStyle::SH_Menu_SubMenuSloppyCloseTimeout)); + m_discard_state_when_entering_parent = menu->style()->styleHint(QStyle::SH_Menu_SubMenuResetWhenReenteringParent); + m_dont_start_time_on_leave = menu->style()->styleHint(QStyle::SH_Menu_SubMenuDontStartSloppyOnLeave); + reset(); + } + + void reset(); + bool enabled() const { return m_enabled; } + + enum MouseEventResult { + EventIsProcessed, + EventShouldBePropagated, + EventDiscardsSloppyState + }; + + void startTimer() + { + if (m_enabled) + m_time.start(m_timeout, m_menu); + } + + void startTimerIfNotRunning() + { + if (!m_time.isActive()) + startTimer(); + } + + void stopTimer() + { + m_time.stop(); + } + + void enter(); + void childEnter(); + + void leave(); + void childLeave(); + + static qreal slope(const QPointF &p1, const QPointF &p2) + { + const QPointF slope = p2 - p1; + if (qFuzzyIsNull(slope.x())) + return 9999; + return slope.y() / slope.x(); + } + + bool checkSlope(qreal oldS, qreal newS, bool wantSteeper) + { + if (wantSteeper) + return oldS <= newS; + return newS <= oldS; + } + + MouseEventResult processMouseEvent(const QPointF &mousePos, QAction *resetAction, QAction *currentAction) + { + if (m_parent) + m_parent->stopTimer(); + + if (!m_enabled) + return EventShouldBePropagated; + + startTimerIfNotRunning(); + + if (!m_sub_menu) { + reset(); + return EventShouldBePropagated; + } + + QSetValueOnDestroy<bool> setFirstMouse(m_first_mouse, false); + QSetValueOnDestroy<QPointF> setPreviousPoint(m_previous_point, mousePos); + + if (resetAction && resetAction->isSeparator()) { + m_reset_action = Q_NULLPTR; + m_use_reset_action = true; + } else if (m_reset_action != resetAction) { + if (m_use_reset_action && resetAction) { + const QList<QAction *> actions = m_menu->actions(); + const int resetIdx = actions.indexOf(resetAction); + const int originIdx = actions.indexOf(m_origin_action); + if (resetIdx > -1 && originIdx > -1 && qAbs(resetIdx - originIdx) > 1) + m_use_reset_action = false; + } + m_reset_action = resetAction; + } + + if (m_action_rect.contains(mousePos)) { + startTimer(); + return currentAction == m_menu->menuAction() ? EventIsProcessed : EventShouldBePropagated; + } + + if (m_uni_directional && !m_first_mouse && resetAction != m_origin_action) { + bool left_to_right = m_menu->layoutDirection() == Qt::LeftToRight; + QRect sub_menu_rect = m_sub_menu->geometry(); + QPoint sub_menu_top = + left_to_right? sub_menu_rect.topLeft() : sub_menu_rect.topRight(); + QPoint sub_menu_bottom = + left_to_right? sub_menu_rect.bottomLeft() : sub_menu_rect.bottomRight(); + qreal prev_slope_top = slope(m_previous_point, sub_menu_top); + qreal prev_slope_bottom = slope(m_previous_point, sub_menu_bottom); + + qreal current_slope_top = slope(mousePos, sub_menu_top); + qreal current_slope_bottom = slope(mousePos, sub_menu_bottom); + + bool slopeTop = checkSlope(prev_slope_top, current_slope_top, sub_menu_top.y() < mousePos.y()); + bool slopeBottom = checkSlope(prev_slope_bottom, current_slope_bottom, sub_menu_bottom.y() > mousePos.y()); + bool rightDirection = false; + int mouseDir = int(m_previous_point.y() - mousePos.y()); + if (mouseDir >= 0) { + rightDirection = rightDirection || slopeTop; + } + if (mouseDir <= 0) { + rightDirection = rightDirection || slopeBottom; + } + + if (m_uni_dir_discarded_count >= m_uni_dir_fail_at_count && !rightDirection) { + m_uni_dir_discarded_count = 0; + return EventDiscardsSloppyState; + } + + if (!rightDirection) + m_uni_dir_discarded_count++; + else + m_uni_dir_discarded_count = 0; + + } + + return m_select_other_actions ? EventShouldBePropagated : EventIsProcessed; + } + + void setSubMenuPopup(const QRect &actionRect, QAction *resetAction, QMenu *subMenu); + bool hasParentActiveDelayTimer() const; + void timeout(); + int timeForTimeout() const { return m_timeout; } + + bool isTimerId(int timerId) const { return m_time.timerId() == timerId; } + QMenu *subMenu() const { return m_sub_menu; } + +private: + QMenu *m_menu = nullptr; + QAction *m_reset_action = nullptr; + QAction *m_origin_action = nullptr; + QRectF m_action_rect; + QPointF m_previous_point; + QPointer<QMenu> m_sub_menu; + QMenuSloppyState *m_parent = nullptr; + QBasicTimer m_time; + short m_uni_dir_discarded_count = 0; + short m_uni_dir_fail_at_count = 0; + short m_timeout = 0; + bool m_init_guard = false; + bool m_first_mouse = true; + + bool m_enabled : 1; + bool m_uni_directional : 1; + bool m_select_other_actions : 1; + bool m_discard_state_when_entering_parent : 1; + bool m_dont_start_time_on_leave : 1; + bool m_use_reset_action : 1; +}; + +class QMenuPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QMenu) +public: + QMenuPrivate() : + itemsDirty(false), + hasCheckableItems(false), + collapsibleSeparators(true), + toolTipsVisible(false), + delayedPopupGuard(false), + hasReceievedEnter(false), + hasHadMouse(false), + aboutToHide(false), + tearoff(false), + tornoff(false), + tearoffHighlighted(false), + doChildEffects(false) + { } + + ~QMenuPrivate() + { + delete scroll; + if (!platformMenu.isNull() && !platformMenu->parent()) + delete platformMenu.data(); + } + void init(); + QPlatformMenu *createPlatformMenu(); + void setPlatformMenu(QPlatformMenu *menu); + void syncPlatformMenu(); +#ifdef Q_OS_OSX + void moveWidgetToPlatformItem(QWidget *w, QPlatformMenuItem* item); +#endif + + static QMenuPrivate *get(QMenu *m) { return m->d_func(); } + int scrollerHeight() const; + + //item calculations + QRect actionRect(QAction *) const; + + mutable QVector<QRect> actionRects; + mutable QHash<QAction *, QWidget *> widgetItems; + void updateActionRects() const; + void updateActionRects(const QRect &screen) const; + QRect popupGeometry() const; + QRect popupGeometry(int screen) const; + int getLastVisibleAction() const; + + //selection + static QMenu *mouseDown; + QPoint mousePopupPos; + + QAction *currentAction = nullptr; +#ifdef QT_KEYPAD_NAVIGATION + QAction *selectAction = nullptr; + QAction *cancelAction = nullptr; +#endif + struct DelayState { + DelayState() + { } + void initialize(QMenu *parent) + { + this->parent = parent; + } + + void start(int timeout, QAction *toStartAction) + { + if (timer.isActive() && toStartAction == action) + return; + action = toStartAction; + timer.start(timeout,parent); + } + void stop() + { + action = 0; + timer.stop(); + } + + QMenu *parent = nullptr; + QAction *action = nullptr; + QBasicTimer timer; + } delayState; + enum SelectionReason { + SelectedFromKeyboard, + SelectedFromElsewhere + }; + QWidget *topCausedWidget() const; + QAction *actionAt(QPoint p) const; + void setFirstActionActive(); + void setCurrentAction(QAction *, int popup = -1, SelectionReason reason = SelectedFromElsewhere, bool activateFirst = false); + void popupAction(QAction *, int, bool); + void setSyncAction(); + + //scrolling support + struct QMenuScroller { + enum ScrollLocation { ScrollStay, ScrollBottom, ScrollTop, ScrollCenter }; + enum ScrollDirection { ScrollNone=0, ScrollUp=0x01, ScrollDown=0x02 }; + int scrollOffset = 0; + QBasicTimer scrollTimer; + quint8 scrollFlags = ScrollNone; + quint8 scrollDirection = ScrollNone; + + QMenuScroller() { } + ~QMenuScroller() { } + } *scroll = nullptr; + void scrollMenu(QMenuScroller::ScrollLocation location, bool active=false); + void scrollMenu(QMenuScroller::ScrollDirection direction, bool page=false, bool active=false); + void scrollMenu(QAction *action, QMenuScroller::ScrollLocation location, bool active=false); + + //synchronous operation (ie exec()) + QEventLoop *eventLoop = nullptr; + QPointer<QAction> syncAction; + + //search buffer + QString searchBuffer; + QBasicTimer searchBufferTimer; + + //passing of mouse events up the parent hierarchy + QPointer<QMenu> activeMenu; + bool mouseEventTaken(QMouseEvent *); + + //used to walk up the popup list + struct QMenuCaused { + QPointer<QWidget> widget; + QPointer<QAction> action; + }; + virtual QVector<QPointer<QWidget> > calcCausedStack() const; + QMenuCaused causedPopup; + void hideUpToMenuBar(); + void hideMenu(QMenu *menu); + + //index mappings + inline QAction *actionAt(int i) const { return q_func()->actions().at(i); } + inline int indexOf(QAction *act) const { return q_func()->actions().indexOf(act); } + + //tear off support + QPointer<QTornOffMenu> tornPopup; + + QMenuSloppyState sloppyState; + + //default action + QPointer<QAction> defaultAction; + + QAction *menuAction = nullptr; + QAction *defaultMenuAction = nullptr; + + void setOverrideMenuAction(QAction *); + void _q_overrideMenuActionDestroyed(); + + //firing of events + void activateAction(QAction *, QAction::ActionEvent, bool self=true); + void activateCausedStack(const QVector<QPointer<QWidget> > &, QAction *, QAction::ActionEvent, bool); + + void _q_actionTriggered(); + void _q_actionHovered(); + void _q_platformMenuAboutToShow(); + + bool hasMouseMoved(const QPoint &globalPos); + + void adjustMenuScreen(const QPoint &p); + void updateLayoutDirection(); + + QPointer<QPlatformMenu> platformMenu; + + QPointer<QAction> actionAboutToTrigger; + + QPointer<QWidget> noReplayFor; + + class ScrollerTearOffItem : public QWidget { + public: + enum Type { ScrollUp, ScrollDown }; + ScrollerTearOffItem(Type type, QMenuPrivate *mPrivate, + QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + void updateScrollerRects(const QRect &rect); + + private: + QMenuPrivate *menuPrivate; + Type scrollType; + }; + ScrollerTearOffItem *scrollUpTearOffItem = nullptr; + ScrollerTearOffItem *scrollDownItem = nullptr; + + void drawScroller(QPainter *painter, ScrollerTearOffItem::Type type, const QRect &rect); + void drawTearOff(QPainter *painter, const QRect &rect); + QRect rect() const; + + mutable uint maxIconWidth = 0; + mutable uint tabWidth = 0; + int motions = 0; + int mousePopupDelay = 0; + + bool activationRecursionGuard = false; + + mutable quint8 ncols = 0; // "255cols ought to be enough for anybody." + + mutable bool itemsDirty : 1; + mutable bool hasCheckableItems : 1; + bool collapsibleSeparators : 1; + bool toolTipsVisible : 1; + bool delayedPopupGuard : 1; + bool hasReceievedEnter : 1; + // Selection + bool hasHadMouse : 1; + bool aboutToHide : 1; + // Tear-off menus + bool tearoff : 1; + bool tornoff : 1; + bool tearoffHighlighted : 1; + //menu fading/scrolling effects + bool doChildEffects : 1; +}; + +QT_END_NAMESPACE + +#endif // QMENU_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmenubar_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmenubar_p.h new file mode 100644 index 000000000..c276a4512 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qmenubar_p.h @@ -0,0 +1,144 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMENUBAR_P_H +#define QMENUBAR_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qstyleoption.h" +#include <private/qmenu_p.h> // Mac needs what in this file! +#include <qpa/qplatformmenu.h> + +QT_REQUIRE_CONFIG(menubar); + +QT_BEGIN_NAMESPACE + +class QMenuBarExtension; +class QMenuBarPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QMenuBar) +public: + QMenuBarPrivate() : itemsDirty(0), currentAction(0), mouseDown(0), + closePopupMode(0), defaultPopDown(1), popupState(0), keyboardState(0), altPressed(0), + doChildEffects(false), platformMenuBar(0) + { } + + ~QMenuBarPrivate() + { + delete platformMenuBar; + } + + void init(); + QAction *getNextAction(const int start, const int increment) const; + + //item calculations + uint itemsDirty : 1; + + QVector<int> shortcutIndexMap; + mutable QVector<QRect> actionRects; + void calcActionRects(int max_width, int start) const; + QRect actionRect(QAction *) const; + void updateGeometries(); + + //selection + QPointer<QAction>currentAction; + uint mouseDown : 1, closePopupMode : 1, defaultPopDown; + QAction *actionAt(QPoint p) const; + void setCurrentAction(QAction *, bool =false, bool =false); + void popupAction(QAction *, bool); + + //active popup state + uint popupState : 1; + QPointer<QMenu> activeMenu; + + //keyboard mode for keyboard navigation + void focusFirstAction(); + void setKeyboardMode(bool); + uint keyboardState : 1, altPressed : 1; + QPointer<QWidget> keyboardFocusWidget; + + //firing of events + void activateAction(QAction *, QAction::ActionEvent); + + void _q_actionTriggered(); + void _q_actionHovered(); + void _q_internalShortcutActivated(int); + void _q_updateLayout(); + + //extra widgets in the menubar + QPointer<QWidget> leftWidget, rightWidget; + QMenuBarExtension *extension; + bool isVisible(QAction *action); + + //menu fading/scrolling effects + bool doChildEffects; + + QRect menuRect(bool) const; + + // reparenting + void handleReparent(); + QVector<QPointer<QWidget> > oldParents; + + QList<QAction*> hiddenActions; + //default action + QPointer<QAction> defaultAction; + + QBasicTimer autoReleaseTimer; + QPlatformMenuBar *platformMenuBar; + QPlatformMenu *getPlatformMenu(const QAction *action); + QPlatformMenu *findInsertionPlatformMenu(const QAction *action); + void copyActionToPlatformMenu(const QAction *e, QPlatformMenu *menu); + + inline int indexOf(QAction *act) const { return q_func()->actions().indexOf(act); } +}; + +QT_END_NAMESPACE + +#endif // QMENUBAR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpixmapfilter_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpixmapfilter_p.h new file mode 100644 index 000000000..399a83514 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpixmapfilter_p.h @@ -0,0 +1,190 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPIXMAPFILTER_H +#define QPIXMAPFILTER_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/qnamespace.h> +#include <QtGui/qpixmap.h> +#include <QtWidgets/qgraphicseffect.h> + +QT_REQUIRE_CONFIG(graphicseffect); + +QT_BEGIN_NAMESPACE + +class QPainter; +class QPlatformPixmap; + +class QPixmapFilterPrivate; + +class Q_WIDGETS_EXPORT QPixmapFilter : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPixmapFilter) +public: + virtual ~QPixmapFilter() = 0; + + enum FilterType { + ConvolutionFilter, + ColorizeFilter, + DropShadowFilter, + BlurFilter, + + UserFilter = 1024 + }; + + FilterType type() const; + + virtual QRectF boundingRectFor(const QRectF &rect) const; + + virtual void draw(QPainter *painter, const QPointF &p, const QPixmap &src, const QRectF &srcRect = QRectF()) const = 0; + +protected: + QPixmapFilter(QPixmapFilterPrivate &d, FilterType type, QObject *parent); + QPixmapFilter(FilterType type, QObject *parent); +}; + +class QPixmapConvolutionFilterPrivate; + +class Q_WIDGETS_EXPORT QPixmapConvolutionFilter : public QPixmapFilter +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPixmapConvolutionFilter) + +public: + QPixmapConvolutionFilter(QObject *parent = 0); + ~QPixmapConvolutionFilter(); + + void setConvolutionKernel(const qreal *matrix, int rows, int columns); + + QRectF boundingRectFor(const QRectF &rect) const Q_DECL_OVERRIDE; + void draw(QPainter *painter, const QPointF &dest, const QPixmap &src, const QRectF &srcRect = QRectF()) const Q_DECL_OVERRIDE; + +private: + friend class QGLPixmapConvolutionFilter; + friend class QVGPixmapConvolutionFilter; + const qreal *convolutionKernel() const; + int rows() const; + int columns() const; +}; + +class QPixmapBlurFilterPrivate; + +class Q_WIDGETS_EXPORT QPixmapBlurFilter : public QPixmapFilter +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPixmapBlurFilter) + +public: + QPixmapBlurFilter(QObject *parent = 0); + ~QPixmapBlurFilter(); + + void setRadius(qreal radius); + void setBlurHints(QGraphicsBlurEffect::BlurHints hints); + + qreal radius() const; + QGraphicsBlurEffect::BlurHints blurHints() const; + + QRectF boundingRectFor(const QRectF &rect) const Q_DECL_OVERRIDE; + void draw(QPainter *painter, const QPointF &dest, const QPixmap &src, const QRectF &srcRect = QRectF()) const Q_DECL_OVERRIDE; + +private: + friend class QGLPixmapBlurFilter; +}; + +class QPixmapColorizeFilterPrivate; + +class Q_WIDGETS_EXPORT QPixmapColorizeFilter : public QPixmapFilter +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPixmapColorizeFilter) + +public: + QPixmapColorizeFilter(QObject *parent = 0); + ~QPixmapColorizeFilter(); + + void setColor(const QColor& color); + QColor color() const; + + void setStrength(qreal strength); + qreal strength() const; + + void draw(QPainter *painter, const QPointF &dest, const QPixmap &src, const QRectF &srcRect = QRectF()) const Q_DECL_OVERRIDE; +}; + +class QPixmapDropShadowFilterPrivate; + +class Q_WIDGETS_EXPORT QPixmapDropShadowFilter : public QPixmapFilter +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPixmapDropShadowFilter) + +public: + QPixmapDropShadowFilter(QObject *parent = 0); + ~QPixmapDropShadowFilter(); + + QRectF boundingRectFor(const QRectF &rect) const Q_DECL_OVERRIDE; + void draw(QPainter *p, const QPointF &pos, const QPixmap &px, const QRectF &src = QRectF()) const Q_DECL_OVERRIDE; + + qreal blurRadius() const; + void setBlurRadius(qreal radius); + + QColor color() const; + void setColor(const QColor &color); + + QPointF offset() const; + void setOffset(const QPointF &offset); + inline void setOffset(qreal dx, qreal dy) { setOffset(QPointF(dx, dy)); } +}; + +QT_END_NAMESPACE + +#endif // QPIXMAPFILTER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpixmapstyle_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpixmapstyle_p.h new file mode 100644 index 000000000..618d6d2f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpixmapstyle_p.h @@ -0,0 +1,231 @@ +/*************************************************************************** +** +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Copyright (C) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPIXMAPSTYLE_H +#define QPIXMAPSTYLE_H + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtWidgets/QCommonStyle> +#include <QtWidgets/QTileRules> + +// +// 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. +// + +QT_BEGIN_NAMESPACE + +class QPixmapStylePrivate; + +class Q_WIDGETS_EXPORT QPixmapStyle : public QCommonStyle +{ + Q_OBJECT + +public: + enum ControlDescriptor { + BG_Background, + LE_Enabled, // QLineEdit + LE_Disabled, + LE_Focused, + PB_Enabled, // QPushButton + PB_Pressed, + PB_PressedDisabled, + PB_Checked, + PB_Disabled, + TE_Enabled, // QTextEdit + TE_Disabled, + TE_Focused, + PB_HBackground, // Horizontal QProgressBar + PB_HContent, + PB_HComplete, + PB_VBackground, // Vertical QProgressBar + PB_VContent, + PB_VComplete, + SG_HEnabled, // Horizontal QSlider groove + SG_HDisabled, + SG_HActiveEnabled, + SG_HActivePressed, + SG_HActiveDisabled, + SG_VEnabled, // Vertical QSlider groove + SG_VDisabled, + SG_VActiveEnabled, + SG_VActivePressed, + SG_VActiveDisabled, + DD_ButtonEnabled, // QComboBox (DropDown) + DD_ButtonDisabled, + DD_ButtonPressed, + DD_PopupDown, + DD_PopupUp, + DD_ItemSelected, + ID_Selected, // QStyledItemDelegate + SB_Horizontal, // QScrollBar + SB_Vertical + }; + + enum ControlPixmap { + CB_Enabled, // QCheckBox + CB_Checked, + CB_Pressed, + CB_PressedChecked, + CB_Disabled, + CB_DisabledChecked, + RB_Enabled, // QRadioButton + RB_Checked, + RB_Pressed, + RB_Disabled, + RB_DisabledChecked, + SH_HEnabled, // Horizontal QSlider handle + SH_HDisabled, + SH_HPressed, + SH_VEnabled, // Vertical QSlider handle + SH_VDisabled, + SH_VPressed, + DD_ArrowEnabled, // QComboBox (DropDown) arrow + DD_ArrowDisabled, + DD_ArrowPressed, + DD_ArrowOpen, + DD_ItemSeparator, + ID_Separator // QStyledItemDelegate separator + }; + +public: + QPixmapStyle(); + ~QPixmapStyle(); + + void polish(QApplication *application) Q_DECL_OVERRIDE; + void polish(QPalette &palette) Q_DECL_OVERRIDE; + void polish(QWidget *widget) Q_DECL_OVERRIDE; + void unpolish(QApplication *application) Q_DECL_OVERRIDE; + void unpolish(QWidget *widget) Q_DECL_OVERRIDE; + + void drawPrimitive(PrimitiveElement element, const QStyleOption *option, + QPainter *painter, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + void drawControl(ControlElement element, const QStyleOption *option, + QPainter *painter, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *option, + QPainter *painter, const QWidget *widget=0) const Q_DECL_OVERRIDE; + + QSize sizeFromContents(ContentsType type, const QStyleOption *option, + const QSize &contentsSize, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + QRect subElementRect(SubElement element, const QStyleOption *option, + const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *option, + SubControl sc, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + + int pixelMetric(PixelMetric metric, const QStyleOption *option = Q_NULLPTR, + const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + int styleHint(StyleHint hint, const QStyleOption *option, + const QWidget *widget, QStyleHintReturn *returnData) const Q_DECL_OVERRIDE; + SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, + const QPoint &pos, const QWidget *widget) const Q_DECL_OVERRIDE; + + bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE; + + void addDescriptor(ControlDescriptor control, const QString &fileName, + QMargins margins = QMargins(), + QTileRules tileRules = QTileRules(Qt::RepeatTile, Qt::RepeatTile)); + void copyDescriptor(ControlDescriptor source, ControlDescriptor dest); + void drawCachedPixmap(ControlDescriptor control, const QRect &rect, QPainter *p) const; + + void addPixmap(ControlPixmap control, const QString &fileName, + QMargins margins = QMargins()); + void copyPixmap(ControlPixmap source, ControlPixmap dest); + +protected: + void drawPushButton(const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawLineEdit(const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawTextEdit(const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawCheckBox(const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawRadioButton(const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawPanelItemViewItem(const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawProgressBarBackground(const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawProgressBarLabel(const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawProgressBarFill(const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawSlider(const QStyleOptionComplex *option, + QPainter *painter, const QWidget *widget) const; + void drawComboBox(const QStyleOptionComplex *option, + QPainter *painter, const QWidget *widget) const; + void drawScrollBar(const QStyleOptionComplex *option, + QPainter *painter, const QWidget *widget) const; + + QSize pushButtonSizeFromContents(const QStyleOption *option, + const QSize &contentsSize, const QWidget *widget) const; + QSize lineEditSizeFromContents(const QStyleOption *option, + const QSize &contentsSize, const QWidget *widget) const; + QSize progressBarSizeFromContents(const QStyleOption *option, + const QSize &contentsSize, const QWidget *widget) const; + QSize sliderSizeFromContents(const QStyleOption *option, + const QSize &contentsSize, const QWidget *widget) const; + QSize comboBoxSizeFromContents(const QStyleOption *option, + const QSize &contentsSize, const QWidget *widget) const; + QSize itemViewSizeFromContents(const QStyleOption *option, + const QSize &contentsSize, const QWidget *widget) const; + + QRect comboBoxSubControlRect(const QStyleOptionComplex *option, QPixmapStyle::SubControl sc, + const QWidget *widget) const; + QRect scrollBarSubControlRect(const QStyleOptionComplex *option, QPixmapStyle::SubControl sc, + const QWidget *widget) const; + +protected: + QPixmapStyle(QPixmapStylePrivate &dd); + +private: + Q_DECLARE_PRIVATE(QPixmapStyle) +}; + +QT_END_NAMESPACE + +#endif // QPIXMAPSTYLE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpixmapstyle_p_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpixmapstyle_p_p.h new file mode 100644 index 000000000..481262d5c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpixmapstyle_p_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPIXMAPSTYLE_P_H +#define QPIXMAPSTYLE_P_H + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qpixmapstyle_p.h" +#include "qcommonstyle_p.h" + +QT_BEGIN_NAMESPACE + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +struct QPixmapStyleDescriptor +{ + QString fileName; + QSize size; + QMargins margins; + QTileRules tileRules; +}; + +struct QPixmapStylePixmap +{ + QPixmap pixmap; + QMargins margins; +}; + +class QPixmapStylePrivate : public QCommonStylePrivate +{ + Q_DECLARE_PUBLIC(QPixmapStyle) + +public: + QHash<QPixmapStyle::ControlDescriptor, QPixmapStyleDescriptor> descriptors; + QHash<QPixmapStyle::ControlPixmap, QPixmapStylePixmap> pixmaps; + + static QPixmap scale(int w, int h, const QPixmap &pixmap, const QPixmapStyleDescriptor &desc); + + QPixmap getCachedPixmap(QPixmapStyle::ControlDescriptor control, + const QPixmapStyleDescriptor &desc, + const QSize &size) const; + + QSize computeSize(const QPixmapStyleDescriptor &desc, int width, int height) const; +}; + +QT_END_NAMESPACE + +#endif // QPIXMAPSTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qplaintextedit_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qplaintextedit_p.h new file mode 100644 index 000000000..3d6e7781e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qplaintextedit_p.h @@ -0,0 +1,192 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLAINTEXTEDIT_P_H +#define QPLAINTEXTEDIT_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qabstractscrollarea_p.h" +#include "QtGui/qtextdocumentfragment.h" +#if QT_CONFIG(scrollbar) +#include "QtWidgets/qscrollbar.h" +#endif +#include "QtGui/qtextcursor.h" +#include "QtGui/qtextformat.h" +#if QT_CONFIG(menu) +#include "QtWidgets/qmenu.h" +#endif +#include "QtGui/qabstracttextdocumentlayout.h" +#include "QtCore/qbasictimer.h" +#include "qplaintextedit.h" + +#include "private/qwidgettextcontrol_p.h" + +QT_REQUIRE_CONFIG(textedit); + +QT_BEGIN_NAMESPACE + +class QMimeData; + +class QPlainTextEdit; +class ExtraArea; + +class QPlainTextEditControl : public QWidgetTextControl +{ + Q_OBJECT +public: + QPlainTextEditControl(QPlainTextEdit *parent); + + + QMimeData *createMimeDataFromSelection() const Q_DECL_OVERRIDE; + bool canInsertFromMimeData(const QMimeData *source) const Q_DECL_OVERRIDE; + void insertFromMimeData(const QMimeData *source) Q_DECL_OVERRIDE; + int hitTest(const QPointF &point, Qt::HitTestAccuracy = Qt::FuzzyHit) const Q_DECL_OVERRIDE; + QRectF blockBoundingRect(const QTextBlock &block) const Q_DECL_OVERRIDE; + QString anchorAt(const QPointF &pos) const Q_DECL_OVERRIDE; + inline QRectF cursorRect(const QTextCursor &cursor) const { + QRectF r = QWidgetTextControl::cursorRect(cursor); + r.setLeft(qMax(r.left(), (qreal) 0.)); + return r; + } + inline QRectF cursorRect() { return cursorRect(textCursor()); } + void ensureCursorVisible() Q_DECL_OVERRIDE { + textEdit->ensureCursorVisible(); + emit microFocusChanged(); + } + + + QPlainTextEdit *textEdit; + int topBlock; + QTextBlock firstVisibleBlock() const; + + QVariant loadResource(int type, const QUrl &name) Q_DECL_OVERRIDE { + return textEdit->loadResource(type, name); + } + +}; + + +class QPlainTextEditPrivate : public QAbstractScrollAreaPrivate +{ + Q_DECLARE_PUBLIC(QPlainTextEdit) +public: + QPlainTextEditPrivate(); + + void init(const QString &txt = QString()); + void _q_repaintContents(const QRectF &contentsRect); + + inline QPoint mapToContents(const QPoint &point) const + { return QPoint(point.x() + horizontalOffset(), point.y() + verticalOffset()); } + + void _q_adjustScrollbars(); + void _q_verticalScrollbarActionTriggered(int action); + void ensureViewportLayouted(); + void relayoutDocument(); + + void pageUpDown(QTextCursor::MoveOperation op, QTextCursor::MoveMode moveMode, bool moveCursor = true); + + inline int horizontalOffset() const + { return (q_func()->isRightToLeft() ? (hbar->maximum() - hbar->value()) : hbar->value()); } + qreal verticalOffset(int topBlock, int topLine) const; + qreal verticalOffset() const; + + inline void sendControlEvent(QEvent *e) + { control->processEvent(e, QPointF(horizontalOffset(), verticalOffset()), viewport); } + + void updateDefaultTextOption(); + + QPlainTextEditControl *control; + + bool tabChangesFocus; + + QBasicTimer autoScrollTimer; + QPoint autoScrollDragPos; + + QPlainTextEdit::LineWrapMode lineWrap; + QTextOption::WrapMode wordWrap; + + uint showCursorOnInitialShow : 1; + uint backgroundVisible : 1; + uint centerOnScroll : 1; + uint inDrag : 1; + uint clickCausedFocus : 1; + + int topLine; + qreal topLineFracture; // for non-int sized fonts + + void setTopLine(int visualTopLine, int dx = 0); + void setTopBlock(int newTopBlock, int newTopLine, int dx = 0); + + void ensureVisible(int position, bool center, bool forceCenter = false); + void ensureCursorVisible(bool center = false); + void updateViewport(); + + QPointer<QPlainTextDocumentLayout> documentLayoutPtr; + + void append(const QString &text, Qt::TextFormat format = Qt::AutoText); + + qreal pageUpDownLastCursorY; + bool pageUpDownLastCursorYIsValid; + + +#ifdef QT_KEYPAD_NAVIGATION + QBasicTimer deleteAllTimer; +#endif + + void _q_cursorPositionChanged(); + void _q_modificationChanged(bool); + + int originalOffsetY; + QString placeholderText; +}; + +QT_END_NAMESPACE + +#endif // QPLAINTEXTEDIT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qproxystyle_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qproxystyle_p.h new file mode 100644 index 000000000..2343a03e2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qproxystyle_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPROXYSTYLE_P_H +#define QPROXYSTYLE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qcommonstyle.h" +#include "qcommonstyle_p.h" +#include "qproxystyle.h" + +#ifndef QT_NO_STYLE_PROXY + +QT_BEGIN_NAMESPACE + +class QProxyStylePrivate : public QCommonStylePrivate +{ + Q_DECLARE_PUBLIC(QProxyStyle) +public: + void ensureBaseStyle() const; +private: + QProxyStylePrivate() : + QCommonStylePrivate(), baseStyle(0) {} + mutable QPointer <QStyle> baseStyle; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_STYLE_PROXY + +#endif //QPROXYSTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpushbutton_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpushbutton_p.h new file mode 100644 index 000000000..a58675fe6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qpushbutton_p.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPUSHBUTTON_P_H +#define QPUSHBUTTON_P_H + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qabstractbutton_p.h" + +QT_REQUIRE_CONFIG(pushbutton); + +// +// 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. +// + +QT_BEGIN_NAMESPACE + +class QDialog; +class QPushButton; + +class QPushButtonPrivate : public QAbstractButtonPrivate +{ + Q_DECLARE_PUBLIC(QPushButton) +public: + enum AutoDefaultValue { Off = 0, On = 1, Auto = 2 }; + + QPushButtonPrivate() + : QAbstractButtonPrivate(QSizePolicy::PushButton), autoDefault(Auto), + defaultButton(false), flat(false), menuOpen(false), lastAutoDefault(false) {} + + inline void init() { resetLayoutItemMargins(); } + static QPushButtonPrivate* get(QPushButton *b) { return b->d_func(); } +#if 0 // Used to be included in Qt4 for Q_WS_MAC + bool hitButton(const QPoint &pos); +#endif +#if QT_CONFIG(menu) + QPoint adjustedMenuPosition(); +#endif + void resetLayoutItemMargins(); + void _q_popupPressed(); +#if QT_CONFIG(dialog) + QDialog *dialogParent() const; +#else + QDialog *dialogParent() const { return 0; }; +#endif + + QPointer<QMenu> menu; + uint autoDefault : 2; + uint defaultButton : 1; + uint flat : 1; + uint menuOpen : 1; + mutable uint lastAutoDefault : 1; +}; + +QT_END_NAMESPACE + +#endif // QPUSHBUTTON_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscrollarea_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscrollarea_p.h new file mode 100644 index 000000000..fa2e0241c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscrollarea_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCROLLAREA_P_H +#define QSCROLLAREA_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 <QtWidgets/private/qtwidgetsglobal_p.h> + +#include "private/qabstractscrollarea_p.h" +#include <QtWidgets/qscrollbar.h> + +QT_REQUIRE_CONFIG(scrollarea); + +QT_BEGIN_NAMESPACE + +class QScrollAreaPrivate: public QAbstractScrollAreaPrivate +{ + Q_DECLARE_PUBLIC(QScrollArea) + +public: + QScrollAreaPrivate(): resizable(false), alignment(0){} + void updateScrollBars(); + void updateWidgetPosition(); + QPointer<QWidget> widget; + mutable QSize widgetSize; + bool resizable; + Qt::Alignment alignment; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscrollbar_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscrollbar_p.h new file mode 100644 index 000000000..8693495c6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscrollbar_p.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCROLLBAR_P_H +#define QSCROLLBAR_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qabstractslider_p.h" +#include "qstyle.h" + +QT_REQUIRE_CONFIG(scrollbar); + +QT_BEGIN_NAMESPACE + +class QScrollBarPrivate : public QAbstractSliderPrivate +{ + Q_DECLARE_PUBLIC(QScrollBar) +public: + QStyle::SubControl pressedControl; + bool pointerOutsidePressedControl; + + int clickOffset, snapBackPosition; + + void activateControl(uint control, int threshold = 500); + void stopRepeatAction(); + int pixelPosToRangeValue(int pos) const; + void init(); + bool updateHoverControl(const QPoint &pos); + QStyle::SubControl newHoverControl(const QPoint &pos); + + QStyle::SubControl hoverControl; + QRect hoverRect; + + bool transient; + void setTransient(bool value); + + bool flashed; + int flashTimer; + void flash(); +}; + +QT_END_NAMESPACE + +#endif // QSCROLLBAR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscroller_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscroller_p.h new file mode 100644 index 000000000..4557e7cc3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscroller_p.h @@ -0,0 +1,214 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCROLLER_P_H +#define QSCROLLER_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QObject> +#include <QPointer> +#include <QQueue> +#include <QSet> +#include <QEasingCurve> +#include <QElapsedTimer> +#include <QSizeF> +#include <QPointF> +#include <QRectF> +#include <qscroller.h> +#include <qscrollerproperties.h> +#include <private/qscrollerproperties_p.h> +#include <QAbstractAnimation> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_GESTURES +class QFlickGestureRecognizer; +#endif + +#ifndef QT_NO_ANIMATION +class QScrollTimer; +#endif +class QScrollerPrivate : public QObject +{ + Q_OBJECT + Q_DECLARE_PUBLIC(QScroller) + +public: + QScrollerPrivate(QScroller *q, QObject *target); + void init(); + + void sendEvent(QObject *o, QEvent *e); + + void setState(QScroller::State s); + + enum ScrollType { + ScrollTypeFlick = 0, + ScrollTypeScrollTo, + ScrollTypeOvershoot + }; + + struct ScrollSegment { + qint64 startTime; + qint64 deltaTime; + qreal startPos; + qreal deltaPos; + QEasingCurve curve; + qreal stopProgress; // whatever is.. + qreal stopPos; // ..reached first + ScrollType type; + }; + + bool pressWhileInactive(const QPointF &position, qint64 timestamp); + bool moveWhilePressed(const QPointF &position, qint64 timestamp); + bool releaseWhilePressed(const QPointF &position, qint64 timestamp); + bool moveWhileDragging(const QPointF &position, qint64 timestamp); + bool releaseWhileDragging(const QPointF &position, qint64 timestamp); + bool pressWhileScrolling(const QPointF &position, qint64 timestamp); + + void timerTick(); + void timerEventWhileDragging(); + void timerEventWhileScrolling(); + + bool prepareScrolling(const QPointF &position); + void handleDrag(const QPointF &position, qint64 timestamp); + + QPointF realDpi(int screen) const; + QPointF dpi() const; + void setDpi(const QPointF &dpi); + void setDpiFromWidget(QWidget *widget); + + void updateVelocity(const QPointF &deltaPixelRaw, qint64 deltaTime); + void pushSegment(ScrollType type, qreal deltaTime, qreal stopProgress, qreal startPos, qreal deltaPos, qreal stopPos, QEasingCurve::Type curve, Qt::Orientation orientation); + void recalcScrollingSegments(bool forceRecalc = false); + qreal scrollingSegmentsEndPos(Qt::Orientation orientation) const; + bool scrollingSegmentsValid(Qt::Orientation orientation) const; + void createScrollToSegments(qreal v, qreal deltaTime, qreal endPos, Qt::Orientation orientation, ScrollType type); + void createScrollingSegments(qreal v, qreal startPos, + qreal deltaTime, qreal deltaPos, + Qt::Orientation orientation); + void createScrollingSegments(const QPointF &v, const QPointF &startPos, const QPointF &ppm); + + void setContentPositionHelperDragging(const QPointF &deltaPos); + void setContentPositionHelperScrolling(); + + qreal nextSnapPos(qreal p, int dir, Qt::Orientation orientation) const; + static qreal nextSegmentPosition(QQueue<ScrollSegment> &segments, qint64 now, qreal oldPos); + + inline int frameRateSkip() const { return properties.d.data()->frameRate; } + + static const char *stateName(QScroller::State state); + static const char *inputName(QScroller::Input input); + +public slots: + void targetDestroyed(); + +public: + // non static + QObject *target; + QScrollerProperties properties; +#ifndef QT_NO_GESTURES + QFlickGestureRecognizer *recognizer; + Qt::GestureType recognizerType; +#endif + + // scroller state: + + // QPointer<QObject> scrollTarget; + QSizeF viewportSize; + QRectF contentPosRange; + QPointF contentPosition; + QPointF overshootPosition; // the number of pixels we are overshooting (before overshootDragResistanceFactor) + + // state + + bool enabled; + QScroller::State state; + bool firstScroll; // true if we haven't already send a scroll event + + QPointF oldVelocity; // the release velocity of the last drag + + QPointF pressPosition; + QPointF lastPosition; + qint64 pressTimestamp; + qint64 lastTimestamp; + + QPointF dragDistance; // the distance we should move during the next drag timer event + + QQueue<ScrollSegment> xSegments; + QQueue<ScrollSegment> ySegments; + + // snap positions + QList<qreal> snapPositionsX; + qreal snapFirstX; + qreal snapIntervalX; + QList<qreal> snapPositionsY; + qreal snapFirstY; + qreal snapIntervalY; + + QPointF pixelPerMeter; + + QElapsedTimer monotonicTimer; + + QPointF releaseVelocity; // the starting velocity of the scrolling state +#ifndef QT_NO_ANIMATION + QScrollTimer *scrollTimer; +#endif + + QScroller *q_ptr; +}; +template <> +class QTypeInfo<QScrollerPrivate::ScrollSegment> + : public QTypeInfoMerger<QScrollerPrivate::ScrollSegment, QEasingCurve> {}; + + +QT_END_NAMESPACE + +#endif // QSCROLLER_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscrollerproperties_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscrollerproperties_p.h new file mode 100644 index 000000000..796517132 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qscrollerproperties_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCROLLERPROPERTIES_P_H +#define QSCROLLERPROPERTIES_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QPointF> +#include <QEasingCurve> +#include <qscrollerproperties.h> + +QT_BEGIN_NAMESPACE + +class QScrollerPropertiesPrivate +{ +public: + static QScrollerPropertiesPrivate *defaults(); + + bool operator==(const QScrollerPropertiesPrivate &) const; + + qreal mousePressEventDelay; + qreal dragStartDistance; + qreal dragVelocitySmoothingFactor; + qreal axisLockThreshold; + QEasingCurve scrollingCurve; + qreal decelerationFactor; + qreal minimumVelocity; + qreal maximumVelocity; + qreal maximumClickThroughVelocity; + qreal acceleratingFlickMaximumTime; + qreal acceleratingFlickSpeedupFactor; + qreal snapPositionRatio; + qreal snapTime; + qreal overshootDragResistanceFactor; + qreal overshootDragDistanceFactor; + qreal overshootScrollDistanceFactor; + qreal overshootScrollTime; + QScrollerProperties::OvershootPolicy hOvershootPolicy; + QScrollerProperties::OvershootPolicy vOvershootPolicy; + QScrollerProperties::FrameRates frameRate; +}; + +QT_END_NAMESPACE + +#endif // QSCROLLERPROPERTIES_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsidebar_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsidebar_p.h new file mode 100644 index 000000000..1f27d477a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsidebar_p.h @@ -0,0 +1,163 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIDEBAR_H +#define QSIDEBAR_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <qlistview.h> +#include <qstandarditemmodel.h> +#include <qstyleditemdelegate.h> +#include <qurl.h> +#include <qvector.h> + +QT_REQUIRE_CONFIG(filedialog); + +QT_BEGIN_NAMESPACE + +class QFileSystemModel; + +class QSideBarDelegate : public QStyledItemDelegate +{ + public: + QSideBarDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent) {} + void initStyleOption(QStyleOptionViewItem *option, + const QModelIndex &index) const Q_DECL_OVERRIDE; +}; + +class Q_AUTOTEST_EXPORT QUrlModel : public QStandardItemModel +{ + Q_OBJECT + +public: + enum Roles { + UrlRole = Qt::UserRole + 1, + EnabledRole = Qt::UserRole + 2 + }; + + QUrlModel(QObject *parent = 0); + + QStringList mimeTypes() const Q_DECL_OVERRIDE; + QMimeData *mimeData(const QModelIndexList &indexes) const Q_DECL_OVERRIDE; +#ifndef QT_NO_DRAGANDDROP + bool canDrop(QDragEnterEvent *event); + bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; +#endif + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) Q_DECL_OVERRIDE; + + void setUrls(const QList<QUrl> &list); + void addUrls(const QList<QUrl> &urls, int row = -1, bool move = true); + QList<QUrl> urls() const; + void setFileSystemModel(QFileSystemModel *model); + bool showFullPath; + +private Q_SLOTS: + void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); + void layoutChanged(); + +private: + void setUrl(const QModelIndex &index, const QUrl &url, const QModelIndex &dirIndex); + void changed(const QString &path); + void addIndexToWatch(const QString &path, const QModelIndex &index); + QFileSystemModel *fileSystemModel; + struct WatchItem { + QModelIndex index; + QString path; + }; + friend class QTypeInfo<WatchItem>; + + QVector<WatchItem> watching; + QList<QUrl> invalidUrls; +}; +Q_DECLARE_TYPEINFO(QUrlModel::WatchItem, Q_MOVABLE_TYPE); + +class Q_AUTOTEST_EXPORT QSidebar : public QListView +{ + Q_OBJECT + +Q_SIGNALS: + void goToUrl(const QUrl &url); + +public: + QSidebar(QWidget *parent = 0); + void setModelAndUrls(QFileSystemModel *model, const QList<QUrl> &newUrls); + ~QSidebar(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + + void setUrls(const QList<QUrl> &list) { urlModel->setUrls(list); } + void addUrls(const QList<QUrl> &list, int row) { urlModel->addUrls(list, row); } + QList<QUrl> urls() const { return urlModel->urls(); } + + void selectUrl(const QUrl &url); + +protected: + bool event(QEvent * e) Q_DECL_OVERRIDE; + void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE; +#ifndef QT_NO_DRAGANDDROP + void dragEnterEvent(QDragEnterEvent *event) Q_DECL_OVERRIDE; +#endif + +private Q_SLOTS: + void clicked(const QModelIndex &index); +#if QT_CONFIG(menu) + void showContextMenu(const QPoint &position); +#endif + void removeEntry(); + +private: + QUrlModel *urlModel; +}; + +QT_END_NAMESPACE + +#endif // QSIDEBAR_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsimplex_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsimplex_p.h new file mode 100644 index 000000000..2342da243 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsimplex_p.h @@ -0,0 +1,211 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIMPLEX_P_H +#define QSIMPLEX_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/qhash.h> +#include <QtCore/qpair.h> +#include <QtCore/qstring.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +struct QSimplexVariable +{ + QSimplexVariable() : result(0), index(0) {} + + qreal result; + int index; +}; + + +/*! + \internal + + Representation of a LP constraint like: + + (c1 * X1) + (c2 * X2) + ... = K + or <= K + or >= K + + Where (ci, Xi) are the pairs in "variables" and K the real "constant". +*/ +struct QSimplexConstraint +{ + QSimplexConstraint() : constant(0), ratio(Equal), artificial(0) {} + + enum Ratio { + LessOrEqual = 0, + Equal, + MoreOrEqual + }; + + QHash<QSimplexVariable *, qreal> variables; + qreal constant; + Ratio ratio; + + QPair<QSimplexVariable *, qreal> helper; + QSimplexVariable * artificial; + + void invert(); + + bool isSatisfied() { + qreal leftHandSide(0); + + QHash<QSimplexVariable *, qreal>::const_iterator iter; + for (iter = variables.constBegin(); iter != variables.constEnd(); ++iter) { + leftHandSide += iter.value() * iter.key()->result; + } + + Q_ASSERT(constant > 0 || qFuzzyCompare(1, 1 + constant)); + + if ((leftHandSide == constant) || qAbs(leftHandSide - constant) < 0.0000001) + return true; + + switch (ratio) { + case LessOrEqual: + return leftHandSide < constant; + case MoreOrEqual: + return leftHandSide > constant; + default: + return false; + } + } + +#ifdef QT_DEBUG + QString toString() { + QString result; + result += QString::fromLatin1("-- QSimplexConstraint %1 --").arg(quintptr(this), 0, 16); + + QHash<QSimplexVariable *, qreal>::const_iterator iter; + for (iter = variables.constBegin(); iter != variables.constEnd(); ++iter) { + result += QString::fromLatin1(" %1 x %2").arg(iter.value()).arg(quintptr(iter.key()), 0, 16); + } + + switch (ratio) { + case LessOrEqual: + result += QString::fromLatin1(" (less) <= %1").arg(constant); + break; + case MoreOrEqual: + result += QString::fromLatin1(" (more) >= %1").arg(constant); + break; + default: + result += QString::fromLatin1(" (eqal) == %1").arg(constant); + } + + return result; + } +#endif +}; + +class QSimplex +{ + Q_DISABLE_COPY(QSimplex) +public: + QSimplex(); + ~QSimplex(); + + qreal solveMin(); + qreal solveMax(); + + bool setConstraints(const QList<QSimplexConstraint *> &constraints); + void setObjective(QSimplexConstraint *objective); + + void dumpMatrix(); + +private: + // Matrix handling + inline qreal valueAt(int row, int column); + inline void setValueAt(int row, int column, qreal value); + void clearRow(int rowIndex); + void clearColumns(int first, int last); + void combineRows(int toIndex, int fromIndex, qreal factor); + + // Simplex + bool simplifyConstraints(QList<QSimplexConstraint *> *constraints); + int findPivotColumn(); + int pivotRowForColumn(int column); + void reducedRowEchelon(); + bool iterate(); + + // Helpers + void clearDataStructures(); + void solveMaxHelper(); + enum SolverFactor { Minimum = -1, Maximum = 1 }; + qreal solver(SolverFactor factor); + void collectResults(); + + QList<QSimplexConstraint *> constraints; + QList<QSimplexVariable *> variables; + QSimplexConstraint *objective; + + int rows; + int columns; + int firstArtificial; + + qreal *matrix; +}; + +inline qreal QSimplex::valueAt(int rowIndex, int columnIndex) +{ + return matrix[rowIndex * columns + columnIndex]; +} + +inline void QSimplex::setValueAt(int rowIndex, int columnIndex, qreal value) +{ + matrix[rowIndex * columns + columnIndex] = value; +} + +QT_END_NAMESPACE + +#endif // QSIMPLEX_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsplitter_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsplitter_p.h new file mode 100644 index 000000000..f0d621004 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsplitter_p.h @@ -0,0 +1,158 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSPLITTER_P_H +#define QSPLITTER_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qframe_p.h" + +QT_REQUIRE_CONFIG(splitter); + +QT_BEGIN_NAMESPACE + +static const uint Default = 2; + +class QSplitterLayoutStruct +{ +public: + QRect rect; + int sizer; + uint collapsed : 1; + uint collapsible : 2; + QWidget *widget; + QSplitterHandle *handle; + + QSplitterLayoutStruct() : sizer(-1), collapsed(false), collapsible(Default), widget(0), handle(0) {} + ~QSplitterLayoutStruct() { delete handle; } + int getWidgetSize(Qt::Orientation orient); + int getHandleSize(Qt::Orientation orient); + int pick(const QSize &size, Qt::Orientation orient) + { return (orient == Qt::Horizontal) ? size.width() : size.height(); } +}; + +class QSplitterPrivate : public QFramePrivate +{ + Q_DECLARE_PUBLIC(QSplitter) +public: + QSplitterPrivate() : +#if QT_CONFIG(rubberband) + rubberBand(0), +#endif + opaque(true), firstShow(true), + childrenCollapsible(true), compatMode(false), handleWidth(-1), blockChildAdd(false), opaqueResizeSet(false) {} + ~QSplitterPrivate(); + +#if QT_CONFIG(rubberband) + QPointer<QRubberBand> rubberBand; +#endif + mutable QList<QSplitterLayoutStruct *> list; + Qt::Orientation orient; + bool opaque : 8; + bool firstShow : 8; + bool childrenCollapsible : 8; + bool compatMode : 8; + int handleWidth; + bool blockChildAdd; + bool opaqueResizeSet; + + inline int pick(const QPoint &pos) const + { return orient == Qt::Horizontal ? pos.x() : pos.y(); } + inline int pick(const QSize &s) const + { return orient == Qt::Horizontal ? s.width() : s.height(); } + + inline int trans(const QPoint &pos) const + { return orient == Qt::Vertical ? pos.x() : pos.y(); } + inline int trans(const QSize &s) const + { return orient == Qt::Vertical ? s.width() : s.height(); } + + void init(); + void recalc(bool update = false); + void doResize(); + void storeSizes(); + void getRange(int index, int *, int *, int *, int *) const; + void addContribution(int, int *, int *, bool) const; + int adjustPos(int, int, int *, int *, int *, int *) const; + bool collapsible(QSplitterLayoutStruct *) const; + bool collapsible(int index) const + { return (index < 0 || index >= list.size()) ? true : collapsible(list.at(index)); } + QSplitterLayoutStruct *findWidget(QWidget *) const; + void insertWidget_helper(int index, QWidget *widget, bool show); + QSplitterLayoutStruct *insertWidget(int index, QWidget *); + void doMove(bool backwards, int pos, int index, int delta, + bool mayCollapse, int *positions, int *widths); + void setGeo(QSplitterLayoutStruct *s, int pos, int size, bool allowCollapse); + int findWidgetJustBeforeOrJustAfter(int index, int delta, int &collapsibleSize) const; + void updateHandles(); + void setSizes_helper(const QList<int> &sizes, bool clampNegativeSize = false); + bool shouldShowWidget(const QWidget *w) const; + +}; + +class QSplitterHandlePrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QSplitterHandle) +public: + QSplitterHandlePrivate() : s(0), orient(Qt::Horizontal), mouseOffset(0), opaq(false), hover(false), pressed(false) {} + + inline int pick(const QPoint &pos) const + { return orient == Qt::Horizontal ? pos.x() : pos.y(); } + + QSplitter *s; + Qt::Orientation orient; + int mouseOffset; + bool opaq : 1; + bool hover : 1; + bool pressed : 1; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstandardgestures_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstandardgestures_p.h new file mode 100644 index 000000000..9b2cffaa9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstandardgestures_p.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTANDARDGESTURES_P_H +#define QSTANDARDGESTURES_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qgesturerecognizer.h" +#include "private/qgesture_p.h" + +#ifndef QT_NO_GESTURES + +QT_BEGIN_NAMESPACE + +class QPanGestureRecognizer : public QGestureRecognizer +{ +public: + explicit QPanGestureRecognizer(int pointCount = 2) : m_pointCount(pointCount) {} + + QGesture *create(QObject *target) Q_DECL_OVERRIDE; + QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event) Q_DECL_OVERRIDE; + void reset(QGesture *state) Q_DECL_OVERRIDE; + +private: + const int m_pointCount; +}; + +class QPinchGestureRecognizer : public QGestureRecognizer +{ +public: + QPinchGestureRecognizer(); + + QGesture *create(QObject *target) Q_DECL_OVERRIDE; + QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event) Q_DECL_OVERRIDE; + void reset(QGesture *state) Q_DECL_OVERRIDE; +}; + +class QSwipeGestureRecognizer : public QGestureRecognizer +{ +public: + QSwipeGestureRecognizer(); + + QGesture *create(QObject *target) Q_DECL_OVERRIDE; + QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event) Q_DECL_OVERRIDE; + void reset(QGesture *state) Q_DECL_OVERRIDE; +}; + +class QTapGestureRecognizer : public QGestureRecognizer +{ +public: + QTapGestureRecognizer(); + + QGesture *create(QObject *target) Q_DECL_OVERRIDE; + QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event) Q_DECL_OVERRIDE; + void reset(QGesture *state) Q_DECL_OVERRIDE; +}; + +class QTapAndHoldGestureRecognizer : public QGestureRecognizer +{ +public: + QTapAndHoldGestureRecognizer(); + + QGesture *create(QObject *target) Q_DECL_OVERRIDE; + QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event) Q_DECL_OVERRIDE; + void reset(QGesture *state) Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_GESTURES + +#endif // QSTANDARDGESTURES_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstyle_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstyle_p.h new file mode 100644 index 000000000..94e4540d0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstyle_p.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTYLE_P_H +#define QSTYLE_P_H + +#include "private/qobject_p.h" +#include <QtGui/qguiapplication.h> +#include <QtWidgets/qstyle.h> + +QT_BEGIN_NAMESPACE + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qstyle_*.cpp. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +// Private class + +class QStyle; + +class QStylePrivate: public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QStyle) +public: + inline QStylePrivate() + : layoutSpacingIndex(-1), proxyStyle(0) {} + mutable int layoutSpacingIndex; + QStyle *proxyStyle; +}; + +inline QImage styleCacheImage(const QSize &size) +{ + const qreal pixelRatio = qApp->devicePixelRatio(); + QImage cacheImage = QImage(size * pixelRatio, QImage::Format_ARGB32_Premultiplied); + cacheImage.setDevicePixelRatio(pixelRatio); + return cacheImage; +} + +inline QPixmap styleCachePixmap(const QSize &size) +{ + const qreal pixelRatio = qApp->devicePixelRatio(); + QPixmap cachePixmap = QPixmap(size * pixelRatio); + cachePixmap.setDevicePixelRatio(pixelRatio); + return cachePixmap; +} + +#define BEGIN_STYLE_PIXMAPCACHE(a) \ + QRect rect = option->rect; \ + QPixmap internalPixmapCache; \ + QImage imageCache; \ + QPainter *p = painter; \ + QString unique = QStyleHelper::uniqueName((a), option, option->rect.size()); \ + int txType = painter->deviceTransform().type() | painter->worldTransform().type(); \ + bool doPixmapCache = (!option->rect.isEmpty()) \ + && ((txType <= QTransform::TxTranslate) || (painter->deviceTransform().type() == QTransform::TxScale)); \ + if (doPixmapCache && QPixmapCache::find(unique, internalPixmapCache)) { \ + painter->drawPixmap(option->rect.topLeft(), internalPixmapCache); \ + } else { \ + if (doPixmapCache) { \ + rect.setRect(0, 0, option->rect.width(), option->rect.height()); \ + imageCache = styleCacheImage(option->rect.size()); \ + imageCache.fill(0); \ + p = new QPainter(&imageCache); \ + } + + + +#define END_STYLE_PIXMAPCACHE \ + if (doPixmapCache) { \ + p->end(); \ + delete p; \ + internalPixmapCache = QPixmap::fromImage(imageCache); \ + painter->drawPixmap(option->rect.topLeft(), internalPixmapCache); \ + QPixmapCache::insert(unique, internalPixmapCache); \ + } \ + } + +QT_END_NAMESPACE + +#endif //QSTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstyleanimation_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstyleanimation_p.h new file mode 100644 index 000000000..3b10eeea2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstyleanimation_p.h @@ -0,0 +1,207 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTYLEANIMATION_P_H +#define QSTYLEANIMATION_P_H + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qabstractanimation.h" +#include "qdatetime.h" +#include "qimage.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_ANIMATION + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience of +// qcommonstyle.cpp. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +class QStyleAnimation : public QAbstractAnimation +{ + Q_OBJECT + +public: + QStyleAnimation(QObject *target); + virtual ~QStyleAnimation(); + + QObject *target() const; + + int duration() const Q_DECL_OVERRIDE; + void setDuration(int duration); + + int delay() const; + void setDelay(int delay); + + QTime startTime() const; + void setStartTime(const QTime &time); + + enum FrameRate { + DefaultFps, + SixtyFps, + ThirtyFps, + TwentyFps + }; + + FrameRate frameRate() const; + void setFrameRate(FrameRate fps); + + void updateTarget(); + +public Q_SLOTS: + void start(); + +protected: + virtual bool isUpdateNeeded() const; + virtual void updateCurrentTime(int time) Q_DECL_OVERRIDE; + +private: + int _delay; + int _duration; + QTime _startTime; + FrameRate _fps; + int _skip; +}; + +class QProgressStyleAnimation : public QStyleAnimation +{ + Q_OBJECT + +public: + QProgressStyleAnimation(int speed, QObject *target); + + int animationStep() const; + int progressStep(int width) const; + + int speed() const; + void setSpeed(int speed); + +protected: + bool isUpdateNeeded() const Q_DECL_OVERRIDE; + +private: + int _speed; + mutable int _step; +}; + +class QNumberStyleAnimation : public QStyleAnimation +{ + Q_OBJECT + +public: + QNumberStyleAnimation(QObject *target); + + qreal startValue() const; + void setStartValue(qreal value); + + qreal endValue() const; + void setEndValue(qreal value); + + qreal currentValue() const; + +protected: + bool isUpdateNeeded() const Q_DECL_OVERRIDE; + +private: + qreal _start; + qreal _end; + mutable qreal _prev; +}; + +class QBlendStyleAnimation : public QStyleAnimation +{ + Q_OBJECT + +public: + enum Type { Transition, Pulse }; + + QBlendStyleAnimation(Type type, QObject *target); + + QImage startImage() const; + void setStartImage(const QImage& image); + + QImage endImage() const; + void setEndImage(const QImage& image); + + QImage currentImage() const; + +protected: + virtual void updateCurrentTime(int time) Q_DECL_OVERRIDE; + +private: + Type _type; + QImage _start; + QImage _end; + QImage _current; +}; + +class QScrollbarStyleAnimation : public QNumberStyleAnimation +{ + Q_OBJECT + +public: + enum Mode { Activating, Deactivating }; + + QScrollbarStyleAnimation(Mode mode, QObject *target); + + Mode mode() const; + + bool wasActive() const; + void setActive(bool active); + +private slots: + void updateCurrentTime(int time) Q_DECL_OVERRIDE; + +private: + Mode _mode; + bool _active; +}; + +#endif // QT_NO_ANIMATION + +QT_END_NAMESPACE + +#endif // QSTYLEANIMATION_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstylehelper_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstylehelper_p.h new file mode 100644 index 000000000..17b6d9ab4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstylehelper_p.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/qpoint.h> +#include <QtCore/qstring.h> +#include <QtGui/qpolygon.h> +#include <QtCore/qstringbuilder.h> +#include <QtGui/qaccessible.h> + +#ifndef QSTYLEHELPER_P_H +#define QSTYLEHELPER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <private/qhexstring_p.h> + +QT_BEGIN_NAMESPACE + +class QPainter; +class QPixmap; +class QStyleOptionSlider; +class QStyleOption; +class QWindow; + +namespace QStyleHelper +{ + QString uniqueName(const QString &key, const QStyleOption *option, const QSize &size); + qreal dpiScaled(qreal value); +#if QT_CONFIG(dial) + qreal angle(const QPointF &p1, const QPointF &p2); + QPolygonF calcLines(const QStyleOptionSlider *dial); + int calcBigLineSize(int radius); + void drawDial(const QStyleOptionSlider *dial, QPainter *painter); +#endif //QT_CONFIG(dial) + void drawBorderPixmap(const QPixmap &pixmap, QPainter *painter, const QRect &rect, + int left = 0, int top = 0, int right = 0, + int bottom = 0); +#ifndef QT_NO_ACCESSIBILITY + bool isInstanceOf(QObject *obj, QAccessible::Role role); + bool hasAncestor(QObject *obj, QAccessible::Role role); +#endif + QColor backgroundColor(const QPalette &pal, const QWidget* widget = 0); + QWindow *styleObjectWindow(QObject *so); +} + + +QT_END_NAMESPACE + +#endif // QSTYLEHELPER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstylesheetstyle_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstylesheetstyle_p.h new file mode 100644 index 000000000..2d302305b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qstylesheetstyle_p.h @@ -0,0 +1,220 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTYLESHEETSTYLE_P_H +#define QSTYLESHEETSTYLE_P_H + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qwindowsstyle_p.h" + +#ifndef QT_NO_STYLE_STYLESHEET + +#include "QtWidgets/qstyleoption.h" +#include "QtCore/qhash.h" +#include "QtGui/qevent.h" +#include "QtCore/qvector.h" +#include "QtCore/qset.h" +#include "QtWidgets/qapplication.h" +#include "private/qcssparser_p.h" +#include "QtGui/qbrush.h" + +QT_BEGIN_NAMESPACE + +// +// 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. +// + +class QRenderRule; +class QAbstractScrollArea; +class QStyleSheetStylePrivate; +class QStyleOptionTitleBar; + +class Q_AUTOTEST_EXPORT QStyleSheetStyle : public QWindowsStyle +{ + typedef QWindowsStyle ParentStyle; + + Q_OBJECT +public: + QStyleSheetStyle(QStyle *baseStyle); + ~QStyleSheetStyle(); + + void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, + const QWidget *w = 0) const Q_DECL_OVERRIDE; + void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, + const QWidget *w = 0) const Q_DECL_OVERRIDE; + void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const Q_DECL_OVERRIDE; + void drawItemText(QPainter *painter, const QRect& rect, int alignment, const QPalette &pal, + bool enabled, const QString& text, QPalette::ColorRole textRole = QPalette::NoRole) const Q_DECL_OVERRIDE; + void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, + const QWidget *w = 0) const Q_DECL_OVERRIDE; + QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, + const QStyleOption *option) const Q_DECL_OVERRIDE; + SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, + const QPoint &pt, const QWidget *w = 0) const Q_DECL_OVERRIDE; + QRect itemPixmapRect(const QRect &rect, int alignment, const QPixmap &pixmap) const Q_DECL_OVERRIDE; + QRect itemTextRect(const QFontMetrics &metrics, const QRect &rect, int alignment, bool enabled, + const QString &text) const Q_DECL_OVERRIDE; + int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const Q_DECL_OVERRIDE; + void polish(QWidget *widget) Q_DECL_OVERRIDE; + void polish(QApplication *app) Q_DECL_OVERRIDE; + void polish(QPalette &pal) Q_DECL_OVERRIDE; + QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, + const QSize &contentsSize, const QWidget *widget = 0) const Q_DECL_OVERRIDE; + QPalette standardPalette() const Q_DECL_OVERRIDE; + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *opt = 0, + const QWidget *widget = 0) const Q_DECL_OVERRIDE; + QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *option = 0, + const QWidget *w = 0 ) const Q_DECL_OVERRIDE; + int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, + Qt::Orientation orientation, const QStyleOption *option = 0, + const QWidget *widget = 0) const Q_DECL_OVERRIDE; + int styleHint(StyleHint sh, const QStyleOption *opt = 0, const QWidget *w = 0, + QStyleHintReturn *shret = 0) const Q_DECL_OVERRIDE; + QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget = 0) const Q_DECL_OVERRIDE; + QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, + const QWidget *w = 0) const Q_DECL_OVERRIDE; + + // These functions are called from QApplication/QWidget. Be careful. + QStyle *baseStyle() const; + void repolish(QWidget *widget); + void repolish(QApplication *app); + + void unpolish(QWidget *widget) Q_DECL_OVERRIDE; + void unpolish(QApplication *app) Q_DECL_OVERRIDE; + + QStyle *base; + void ref() { ++refcount; } + void deref() { Q_ASSERT(refcount > 0); if (!--refcount) delete this; } + + void updateStyleSheetFont(QWidget* w) const; + void saveWidgetFont(QWidget* w, const QFont& font) const; + void clearWidgetFont(QWidget* w) const; + + bool styleSheetPalette(const QWidget* w, const QStyleOption* opt, QPalette* pal); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + +private: + int refcount; + + friend class QRenderRule; + int nativeFrameWidth(const QWidget *); + QRenderRule renderRule(const QObject *, int, quint64 = 0) const; + QRenderRule renderRule(const QObject *, const QStyleOption *, int = 0) const; + QSize defaultSize(const QWidget *, QSize, const QRect&, int) const; + QRect positionRect(const QWidget *, const QRenderRule&, const QRenderRule&, int, + const QRect&, Qt::LayoutDirection) const; + QRect positionRect(const QWidget *w, const QRenderRule &rule2, int pe, + const QRect &originRect, Qt::LayoutDirection dir) const; + + mutable QCss::Parser parser; + + void setPalette(QWidget *); + void unsetPalette(QWidget *); + void setProperties(QWidget *); + void setGeometry(QWidget *); + void unsetStyleSheetFont(QWidget *) const; + QVector<QCss::StyleRule> styleRules(const QObject *obj) const; + bool hasStyleRule(const QObject *obj, int part) const; + + QHash<QStyle::SubControl, QRect> titleBarLayout(const QWidget *w, const QStyleOptionTitleBar *tb) const; + + QCss::StyleSheet getDefaultStyleSheet() const; + + static Qt::Alignment resolveAlignment(Qt::LayoutDirection, Qt::Alignment); + static bool isNaturalChild(const QObject *obj); + bool initObject(const QObject *obj) const; +public: + static int numinstances; + +private: + Q_DISABLE_COPY(QStyleSheetStyle) + Q_DECLARE_PRIVATE(QStyleSheetStyle) +}; + +class QStyleSheetStyleCaches : public QObject +{ + Q_OBJECT +public Q_SLOTS: + void objectDestroyed(QObject *); + void styleDestroyed(QObject *); +public: + QHash<const QObject *, QVector<QCss::StyleRule> > styleRulesCache; + QHash<const QObject *, QHash<int, bool> > hasStyleRuleCache; + typedef QHash<int, QHash<quint64, QRenderRule> > QRenderRules; + QHash<const QObject *, QRenderRules> renderRulesCache; + QHash<const void *, QCss::StyleSheet> styleSheetCache; // parsed style sheets + QSet<const QWidget *> autoFillDisabledWidgets; + // widgets with whose palettes and fonts we have tampered: + template <typename T> + struct Tampered { + T oldWidgetValue; + uint resolveMask; + + // only call this function on an rvalue *this (it mangles oldWidgetValue) + T reverted(T current) +#ifdef Q_COMPILER_REF_QUALIFIERS + && +#endif + { + oldWidgetValue.resolve(oldWidgetValue.resolve() & resolveMask); + current.resolve(current.resolve() & ~resolveMask); + current.resolve(oldWidgetValue); + current.resolve(current.resolve() | oldWidgetValue.resolve()); + return current; + } + }; + QHash<const QWidget *, Tampered<QPalette>> customPaletteWidgets; + QHash<const QWidget *, Tampered<QFont>> customFontWidgets; +}; +template <typename T> +class QTypeInfo<QStyleSheetStyleCaches::Tampered<T>> + : QTypeInfoMerger<QStyleSheetStyleCaches::Tampered<T>, T> {}; + +QT_END_NAMESPACE +#endif // QT_NO_STYLE_STYLESHEET +#endif // QSTYLESHEETSTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsystemtrayicon_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsystemtrayicon_p.h new file mode 100644 index 000000000..318edbd1e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qsystemtrayicon_p.h @@ -0,0 +1,147 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSYSTEMTRAYICON_P_H +#define QSYSTEMTRAYICON_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qsystemtrayicon.h" +#include "private/qobject_p.h" + +#ifndef QT_NO_SYSTEMTRAYICON + +#if QT_CONFIG(menu) +#include "QtWidgets/qmenu.h" +#endif +#include "QtWidgets/qwidget.h" +#include "QtGui/qpixmap.h" +#include <qpa/qplatformsystemtrayicon.h> +#include "QtCore/qstring.h" +#include "QtCore/qpointer.h" + +QT_BEGIN_NAMESPACE + +class QSystemTrayIconSys; +class QPlatformSystemTrayIcon; +class QToolButton; +class QLabel; + +class QSystemTrayIconPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QSystemTrayIcon) + +public: + QSystemTrayIconPrivate(); + ~QSystemTrayIconPrivate(); + + void install_sys(); + void remove_sys(); + void updateIcon_sys(); + void updateToolTip_sys(); + void updateMenu_sys(); + QRect geometry_sys() const; + void showMessage_sys(const QString &title, const QString &msg, const QIcon &icon, + QSystemTrayIcon::MessageIcon msgIcon, int msecs); + + static bool isSystemTrayAvailable_sys(); + static bool supportsMessages_sys(); + + void _q_emitActivated(QPlatformSystemTrayIcon::ActivationReason reason); + + QPointer<QMenu> menu; + QIcon icon; + QString toolTip; + QSystemTrayIconSys *sys; + QPlatformSystemTrayIcon *qpa_sys; + bool visible; + +private: + void install_sys_qpa(); + void remove_sys_qpa(); + + void addPlatformMenu(QMenu *menu) const; +}; + +class QBalloonTip : public QWidget +{ + Q_OBJECT +public: + static void showBalloon(const QIcon &icon, const QString &title, + const QString &msg, QSystemTrayIcon *trayIcon, + const QPoint &pos, int timeout, bool showArrow = true); + static void hideBalloon(); + static bool isBalloonVisible(); + static void updateBalloonPosition(const QPoint& pos); + +private: + QBalloonTip(const QIcon &icon, const QString &title, + const QString &msg, QSystemTrayIcon *trayIcon); + ~QBalloonTip(); + void balloon(const QPoint&, int, bool); + +protected: + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE; + +private: + QSystemTrayIcon *trayIcon; + QPixmap pixmap; + int timerId; + bool showArrow; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SYSTEMTRAYICON + +#endif // QSYSTEMTRAYICON_P_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qt_widgets_pch.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qt_widgets_pch.h new file mode 100644 index 000000000..924a68d62 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qt_widgets_pch.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* + * This is a precompiled header file for use in Xcode / Mac GCC / + * GCC >= 3.4 / VC to greatly speed the building of Qt. It may also be + * of use to people developing their own project, but it is probably + * better to define your own header. Use of this header is currently + * UNSUPPORTED. + */ + +// from corelib/global/qt_pch.h +#if defined __cplusplus +#include <qtwidgetsglobal.h> + + +#if 0 // Used to be included in Qt4 for Q_WS_WIN +# define _POSIX_ +# include <limits.h> +# undef _POSIX_ +#endif + +#include <qcoreapplication.h> +#include <qlist.h> +#include <qvariant.h> // All moc genereated code has this include +#include <qobject.h> +#include <qregexp.h> +#include <qstring.h> +#include <qstringlist.h> +#include <qtextcodec.h> + +#include <qapplication.h> +#include <qbitmap.h> +#include <qcursor.h> +#include <qdesktopwidget.h> +#include <qevent.h> +#include <qimage.h> +#include <qlayout.h> +#include <qpainter.h> +#include <qpixmap.h> +#include <qstyle.h> +#include <qtimer.h> +#include <qwidget.h> + +#include <stdlib.h> + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtabbar_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtabbar_p.h new file mode 100644 index 000000000..52e139c70 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtabbar_p.h @@ -0,0 +1,291 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTABBAR_P_H +#define QTABBAR_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qtabbar.h" +#include "private/qwidget_p.h" + +#include <qicon.h> +#include <qtoolbutton.h> +#include <qdebug.h> +#include <qvariantanimation.h> + +#define ANIMATION_DURATION 250 + +#include <qstyleoption.h> + +QT_REQUIRE_CONFIG(tabbar); + +QT_BEGIN_NAMESPACE + +class QMovableTabWidget : public QWidget +{ +public: + explicit QMovableTabWidget(QWidget *parent = Q_NULLPTR); + void setPixmap(const QPixmap &pixmap); + +protected: + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + +private: + QPixmap m_pixmap; +}; + +class QTabBarPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QTabBar) +public: + QTabBarPrivate() + :currentIndex(-1), pressedIndex(-1), shape(QTabBar::RoundedNorth), layoutDirty(false), + drawBase(true), scrollOffset(0), hoverIndex(-1), elideModeSetByUser(false), useScrollButtonsSetByUser(false), expanding(true), closeButtonOnTabs(false), + selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), + dragInProgress(false), documentMode(false), autoHide(false), changeCurrentOnDrag(false), + switchTabCurrentIndex(-1), switchTabTimerId(0), movingTab(0) +#if 0 // Used to be included in Qt4 for Q_WS_MAC + , previousPressedIndex(-1) +#endif + {} + + int currentIndex; + int pressedIndex; + QTabBar::Shape shape; + bool layoutDirty; + bool drawBase; + int scrollOffset; + + struct Tab { + inline Tab(const QIcon &ico, const QString &txt) + : enabled(true) , shortcutId(0), text(txt), icon(ico), + leftWidget(0), rightWidget(0), lastTab(-1), dragOffset(0) +#ifndef QT_NO_ANIMATION + , animation(0) +#endif //QT_NO_ANIMATION + {} + bool operator==(const Tab &other) const { return &other == this; } + bool enabled; + int shortcutId; + QString text; +#ifndef QT_NO_TOOLTIP + QString toolTip; +#endif +#if QT_CONFIG(whatsthis) + QString whatsThis; +#endif + QIcon icon; + QRect rect; + QRect minRect; + QRect maxRect; + + QColor textColor; + QVariant data; + QWidget *leftWidget; + QWidget *rightWidget; + int lastTab; + int dragOffset; +#ifndef QT_NO_ACCESSIBILITY + QString accessibleName; +#endif + +#ifndef QT_NO_ANIMATION + ~Tab() { delete animation; } + struct TabBarAnimation : public QVariantAnimation { + TabBarAnimation(Tab *t, QTabBarPrivate *_priv) : tab(t), priv(_priv) + { setEasingCurve(QEasingCurve::InOutQuad); } + + void updateCurrentValue(const QVariant ¤t) Q_DECL_OVERRIDE; + + void updateState(State, State newState) Q_DECL_OVERRIDE; + private: + //these are needed for the callbacks + Tab *tab; + QTabBarPrivate *priv; + } *animation; + + void startAnimation(QTabBarPrivate *priv, int duration) { + if (!priv->isAnimated()) { + priv->moveTabFinished(priv->tabList.indexOf(*this)); + return; + } + if (!animation) + animation = new TabBarAnimation(this, priv); + animation->setStartValue(dragOffset); + animation->setEndValue(0); + animation->setDuration(duration); + animation->start(); + } +#else + void startAnimation(QTabBarPrivate *priv, int duration) + { Q_UNUSED(duration); priv->moveTabFinished(priv->tabList.indexOf(*this)); } +#endif //QT_NO_ANIMATION + }; + QList<Tab> tabList; + mutable QHash<QString, QSize> textSizes; + + int calculateNewPosition(int from, int to, int index) const; + void slide(int from, int to); + void init(); + + Tab *at(int index); + const Tab *at(int index) const; + + int indexAtPos(const QPoint &p) const; + + inline bool isAnimated() const { Q_Q(const QTabBar); return q->style()->styleHint(QStyle::SH_Widget_Animate, 0, q); } + inline bool validIndex(int index) const { return index >= 0 && index < tabList.count(); } + void setCurrentNextEnabledIndex(int offset); + + QToolButton* rightB; // right or bottom + QToolButton* leftB; // left or top + + void _q_scrollTabs(); + void _q_closeTab(); + void moveTab(int index, int offset); + void moveTabFinished(int index); + QRect hoverRect; + int hoverIndex; + + void refresh(); + void layoutTabs(); + void layoutWidgets(int start = 0); + void layoutTab(int index); + void updateMacBorderMetrics(); + bool isTabInMacUnifiedToolbarArea() const; + void setupMovableTab(); + void autoHideTabs(); + QRect normalizedScrollRect(int index = -1); + int hoveredTabIndex() const; + + void initBasicStyleOption(QStyleOptionTab *option, int tabIndex) const; + + void makeVisible(int index); + QSize iconSize; + Qt::TextElideMode elideMode; + bool elideModeSetByUser; + bool useScrollButtons; + bool useScrollButtonsSetByUser; + + bool expanding; + bool closeButtonOnTabs; + QTabBar::SelectionBehavior selectionBehaviorOnRemove; + + QPoint dragStartPosition; + bool paintWithOffsets; + bool movable; + bool dragInProgress; + bool documentMode; + bool autoHide; + bool changeCurrentOnDrag; + + int switchTabCurrentIndex; + int switchTabTimerId; + + QMovableTabWidget *movingTab; +#if 0 // Used to be included in Qt4 for Q_WS_MAC + int previousPressedIndex; +#endif + // shared by tabwidget and qtabbar + static void initStyleBaseOption(QStyleOptionTabBarBase *optTabBase, QTabBar *tabbar, QSize size) + { + QStyleOptionTab tabOverlap; + tabOverlap.shape = tabbar->shape(); + int overlap = tabbar->style()->pixelMetric(QStyle::PM_TabBarBaseOverlap, &tabOverlap, tabbar); + QWidget *theParent = tabbar->parentWidget(); + optTabBase->init(tabbar); + optTabBase->shape = tabbar->shape(); + optTabBase->documentMode = tabbar->documentMode(); + if (theParent && overlap > 0) { + QRect rect; + switch (tabOverlap.shape) { + case QTabBar::RoundedNorth: + case QTabBar::TriangularNorth: + rect.setRect(0, size.height()-overlap, size.width(), overlap); + break; + case QTabBar::RoundedSouth: + case QTabBar::TriangularSouth: + rect.setRect(0, 0, size.width(), overlap); + break; + case QTabBar::RoundedEast: + case QTabBar::TriangularEast: + rect.setRect(0, 0, overlap, size.height()); + break; + case QTabBar::RoundedWest: + case QTabBar::TriangularWest: + rect.setRect(size.width() - overlap, 0, overlap, size.height()); + break; + } + optTabBase->rect = rect; + } + } + + void killSwitchTabTimer(); + +}; + +class CloseButton : public QAbstractButton +{ + Q_OBJECT + +public: + explicit CloseButton(QWidget *parent = 0); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE + { return sizeHint(); } + void enterEvent(QEvent *event) Q_DECL_OVERRIDE; + void leaveEvent(QEvent *event) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtableview_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtableview_p.h new file mode 100644 index 000000000..1a0fef901 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtableview_p.h @@ -0,0 +1,264 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTABLEVIEW_P_H +#define QTABLEVIEW_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/QList> +#include <QtCore/QLinkedList> +#include <QtCore/QMap> +#include <QtCore/QSet> +#include <QtCore/QDebug> +#include "private/qabstractitemview_p.h" + +QT_REQUIRE_CONFIG(tableview); + +QT_BEGIN_NAMESPACE + +/** \internal +* +* This is a list of span with a binary index to look up quickly a span at a certain index. +* +* The index is a map of map. +* spans are mentaly divided into sub spans so that the start of any subspans doesn't overlap +* with any other subspans. There is no real representation of the subspans. +* The key of the first map is the row where the subspan starts, the value of the first map is +* a list (map) of all subspans that starts at the same row. It is indexed with its row +*/ +class Q_AUTOTEST_EXPORT QSpanCollection +{ +public: + struct Span + { + int m_top; + int m_left; + int m_bottom; + int m_right; + bool will_be_deleted; + Span() + : m_top(-1), m_left(-1), m_bottom(-1), m_right(-1), will_be_deleted(false) { } + Span(int row, int column, int rowCount, int columnCount) + : m_top(row), m_left(column), m_bottom(row+rowCount-1), m_right(column+columnCount-1), will_be_deleted(false) { } + inline int top() const { return m_top; } + inline int left() const { return m_left; } + inline int bottom() const { return m_bottom; } + inline int right() const { return m_right; } + inline int height() const { return m_bottom - m_top + 1; } + inline int width() const { return m_right - m_left + 1; } + }; + + ~QSpanCollection() + { + qDeleteAll(spans); + } + + void addSpan(Span *span); + void updateSpan(Span *span, int old_height); + Span *spanAt(int x, int y) const; + void clear(); + QList<Span *> spansInRect(int x, int y, int w, int h) const; + + void updateInsertedRows(int start, int end); + void updateInsertedColumns(int start, int end); + void updateRemovedRows(int start, int end); + void updateRemovedColumns(int start, int end); + +#ifdef QT_BUILD_INTERNAL + bool checkConsistency() const; +#endif + + typedef QLinkedList<Span *> SpanList; + SpanList spans; //lists of all spans +private: + //the indexes are negative so the QMap::lowerBound do what i need. + typedef QMap<int, Span *> SubIndex; + typedef QMap<int, SubIndex> Index; + Index index; + + bool cleanSpanSubIndex(SubIndex &subindex, int end, bool update = false); +}; + +Q_DECLARE_TYPEINFO ( QSpanCollection::Span, Q_MOVABLE_TYPE); + + +class QTableViewPrivate : public QAbstractItemViewPrivate +{ + Q_DECLARE_PUBLIC(QTableView) +public: + QTableViewPrivate() + : showGrid(true), gridStyle(Qt::SolidLine), + rowSectionAnchor(-1), columnSectionAnchor(-1), + columnResizeTimerID(0), rowResizeTimerID(0), + horizontalHeader(0), verticalHeader(0), + sortingEnabled(false), geometryRecursionBlock(false), + visualCursor(QPoint()) + { + wrapItemText = true; +#ifndef QT_NO_DRAGANDDROP + overwrite = true; +#endif + } + void init(); + void trimHiddenSelections(QItemSelectionRange *range) const; + + inline bool isHidden(int row, int col) const { + return verticalHeader->isSectionHidden(row) + || horizontalHeader->isSectionHidden(col); + } + inline int visualRow(int logicalRow) const { + return verticalHeader->visualIndex(logicalRow); + } + inline int visualColumn(int logicalCol) const { + return horizontalHeader->visualIndex(logicalCol); + } + inline int logicalRow(int visualRow) const { + return verticalHeader->logicalIndex(visualRow); + } + inline int logicalColumn(int visualCol) const { + return horizontalHeader->logicalIndex(visualCol); + } + + inline int accessibleTable2Index(const QModelIndex &index) const { + const int vHeader = verticalHeader ? 1 : 0; + return (index.row() + (horizontalHeader ? 1 : 0)) * (index.model()->columnCount() + vHeader) + + index.column() + vHeader; + } + + int sectionSpanEndLogical(const QHeaderView *header, int logical, int span) const; + int sectionSpanSize(const QHeaderView *header, int logical, int span) const; + bool spanContainsSection(const QHeaderView *header, int logical, int spanLogical, int span) const; + void drawAndClipSpans(const QRegion &area, QPainter *painter, + const QStyleOptionViewItem &option, QBitArray *drawn, + int firstVisualRow, int lastVisualRow, int firstVisualColumn, int lastVisualColumn); + void drawCell(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index); + int widthHintForIndex(const QModelIndex &index, int hint, const QStyleOptionViewItem &option) const; + int heightHintForIndex(const QModelIndex &index, int hint, QStyleOptionViewItem &option) const; + + bool showGrid; + Qt::PenStyle gridStyle; + int rowSectionAnchor; + int columnSectionAnchor; + int columnResizeTimerID; + int rowResizeTimerID; + QVector<int> columnsToUpdate; + QVector<int> rowsToUpdate; + QHeaderView *horizontalHeader; + QHeaderView *verticalHeader; +#if QT_CONFIG(abstractbutton) + QWidget *cornerWidget; +#endif + bool sortingEnabled; + bool geometryRecursionBlock; + QPoint visualCursor; // (Row,column) cell coordinates to track through span navigation. + + QSpanCollection spans; + + void setSpan(int row, int column, int rowSpan, int columnSpan); + QSpanCollection::Span span(int row, int column) const; + inline int rowSpan(int row, int column) const { + return span(row, column).height(); + } + inline int columnSpan(int row, int column) const { + return span(row, column).width(); + } + inline bool hasSpans() const { + return !spans.spans.isEmpty(); + } + inline int rowSpanHeight(int row, int span) const { + return sectionSpanSize(verticalHeader, row, span); + } + inline int columnSpanWidth(int column, int span) const { + return sectionSpanSize(horizontalHeader, column, span); + } + inline int rowSpanEndLogical(int row, int span) const { + return sectionSpanEndLogical(verticalHeader, row, span); + } + inline int columnSpanEndLogical(int column, int span) const { + return sectionSpanEndLogical(horizontalHeader, column, span); + } + + inline bool isRowHidden(int row) const { + return verticalHeader->isSectionHidden(row); + } + inline bool isColumnHidden(int column) const { + return horizontalHeader->isSectionHidden(column); + } + inline bool isCellEnabled(int row, int column) const { + return isIndexEnabled(model->index(row, column, root)); + } + inline bool isVisualRowHiddenOrDisabled(int row, int column) const { + int r = logicalRow(row); + int c = logicalColumn(column); + return isRowHidden(r) || !isCellEnabled(r, c); + } + inline bool isVisualColumnHiddenOrDisabled(int row, int column) const { + int r = logicalRow(row); + int c = logicalColumn(column); + return isColumnHidden(c) || !isCellEnabled(r, c); + } + + QRect visualSpanRect(const QSpanCollection::Span &span) const; + + void _q_selectRow(int row); + void _q_selectColumn(int column); + + void selectRow(int row, bool anchor); + void selectColumn(int column, bool anchor); + + void _q_updateSpanInsertedRows(const QModelIndex &parent, int start, int end); + void _q_updateSpanInsertedColumns(const QModelIndex &parent, int start, int end); + void _q_updateSpanRemovedRows(const QModelIndex &parent, int start, int end); + void _q_updateSpanRemovedColumns(const QModelIndex &parent, int start, int end); +}; + +QT_END_NAMESPACE + +#endif // QTABLEVIEW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtablewidget_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtablewidget_p.h new file mode 100644 index 000000000..6412477be --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtablewidget_p.h @@ -0,0 +1,221 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTABLEWIDGET_P_H +#define QTABLEWIDGET_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <qheaderview.h> +#include <qtablewidget.h> +#include <qabstractitemmodel.h> +#include <private/qabstractitemmodel_p.h> +#include <private/qtableview_p.h> +#include <private/qwidgetitemdata_p.h> + +QT_REQUIRE_CONFIG(tablewidget); + +QT_BEGIN_NAMESPACE + +// workaround for VC++ 6.0 linker bug +typedef bool(*LessThan)(const QPair<QTableWidgetItem*,int>&,const QPair<QTableWidgetItem*,int>&); + +class QTableWidgetMimeData : public QMimeData +{ + Q_OBJECT +public: + QList<QTableWidgetItem*> items; +}; + +class QTableModelLessThan +{ +public: + inline bool operator()(QTableWidgetItem *i1, QTableWidgetItem *i2) const + { return (*i1 < *i2); } +}; + +class QTableModelGreaterThan +{ +public: + inline bool operator()(QTableWidgetItem *i1, QTableWidgetItem *i2) const + { return (*i2 < *i1); } +}; + +class QTableModel : public QAbstractTableModel +{ + Q_OBJECT + friend class QTableWidget; + +public: + enum ItemFlagsExtension { + ItemIsHeaderItem = 128 + }; // we need this to separate header items from other items + + QTableModel(int rows, int columns, QTableWidget *parent); + ~QTableModel(); + + bool insertRows(int row, int count = 1, const QModelIndex &parent = QModelIndex()) override; + bool insertColumns(int column, int count = 1, const QModelIndex &parent = QModelIndex()) override; + + bool removeRows(int row, int count = 1, const QModelIndex &parent = QModelIndex()) override; + bool removeColumns(int column, int count = 1, const QModelIndex &parent = QModelIndex()) override; + + void setItem(int row, int column, QTableWidgetItem *item); + QTableWidgetItem *takeItem(int row, int column); + QTableWidgetItem *item(int row, int column) const; + QTableWidgetItem *item(const QModelIndex &index) const; + void removeItem(QTableWidgetItem *item); + + void setHorizontalHeaderItem(int section, QTableWidgetItem *item); + void setVerticalHeaderItem(int section, QTableWidgetItem *item); + QTableWidgetItem *takeHorizontalHeaderItem(int section); + QTableWidgetItem *takeVerticalHeaderItem(int section); + QTableWidgetItem *horizontalHeaderItem(int section); + QTableWidgetItem *verticalHeaderItem(int section); + + QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override + { return QAbstractTableModel::index(row, column, parent); } + + QModelIndex index(const QTableWidgetItem *item) const; + + void setRowCount(int rows); + void setColumnCount(int columns); + + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + int columnCount(const QModelIndex &parent = QModelIndex()) const override; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + bool setData(const QModelIndex &index, const QVariant &value, int role) override; + bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles) override; + + QMap<int, QVariant> itemData(const QModelIndex &index) const override; + + QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role) override; + + Qt::ItemFlags flags(const QModelIndex &index) const override; + + void sort(int column, Qt::SortOrder order) override; + static bool itemLessThan(const QPair<QTableWidgetItem*,int> &left, + const QPair<QTableWidgetItem*,int> &right); + static bool itemGreaterThan(const QPair<QTableWidgetItem*,int> &left, + const QPair<QTableWidgetItem*,int> &right); + + void ensureSorted(int column, Qt::SortOrder order, int start, int end); + QVector<QTableWidgetItem*> columnItems(int column) const; + void updateRowIndexes(QModelIndexList &indexes, int movedFromRow, int movedToRow); + static QVector<QTableWidgetItem*>::iterator sortedInsertionIterator( + const QVector<QTableWidgetItem*>::iterator &begin, + const QVector<QTableWidgetItem*>::iterator &end, + Qt::SortOrder order, QTableWidgetItem *item); + + bool isValid(const QModelIndex &index) const; + inline long tableIndex(int row, int column) const + { return (row * horizontalHeaderItems.count()) + column; } + + void clear(); + void clearContents(); + void itemChanged(QTableWidgetItem *item); + + QTableWidgetItem *createItem() const; + const QTableWidgetItem *itemPrototype() const; + void setItemPrototype(const QTableWidgetItem *item); + + // dnd + QStringList mimeTypes() const override; + QMimeData *mimeData(const QModelIndexList &indexes) const override; + bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) override; + Qt::DropActions supportedDropActions() const override; + + QMimeData *internalMimeData() const; + +private: + const QTableWidgetItem *prototype; + QVector<QTableWidgetItem*> tableItems; + QVector<QTableWidgetItem*> verticalHeaderItems; + QVector<QTableWidgetItem*> horizontalHeaderItems; + + // A cache must be mutable if get-functions should have const modifiers + mutable QModelIndexList cachedIndexes; +}; + +class QTableWidgetPrivate : public QTableViewPrivate +{ + Q_DECLARE_PUBLIC(QTableWidget) +public: + QTableWidgetPrivate() : QTableViewPrivate() {} + inline QTableModel *tableModel() const { return qobject_cast<QTableModel*>(model); } + void setup(); + + // view signals + void _q_emitItemPressed(const QModelIndex &index); + void _q_emitItemClicked(const QModelIndex &index); + void _q_emitItemDoubleClicked(const QModelIndex &index); + void _q_emitItemActivated(const QModelIndex &index); + void _q_emitItemEntered(const QModelIndex &index); + // model signals + void _q_emitItemChanged(const QModelIndex &index); + // selection signals + void _q_emitCurrentItemChanged(const QModelIndex &previous, const QModelIndex ¤t); + // sorting + void _q_sort(); + void _q_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); +}; + +class QTableWidgetItemPrivate +{ +public: + QTableWidgetItemPrivate(QTableWidgetItem *item) : q(item), id(-1) {} + QTableWidgetItem *q; + int id; +}; + +QT_END_NAMESPACE + +#endif // QTABLEWIDGET_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtextedit_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtextedit_p.h new file mode 100644 index 000000000..c4ee75c78 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtextedit_p.h @@ -0,0 +1,146 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTEDIT_P_H +#define QTEXTEDIT_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qabstractscrollarea_p.h" +#include "QtGui/qtextdocumentfragment.h" +#if QT_CONFIG(scrollbar) +#include "QtWidgets/qscrollbar.h" +#endif +#include "QtGui/qtextcursor.h" +#include "QtGui/qtextformat.h" +#if QT_CONFIG(menu) +#include "QtWidgets/qmenu.h" +#endif +#include "QtGui/qabstracttextdocumentlayout.h" +#include "QtCore/qbasictimer.h" +#include "QtCore/qurl.h" +#include "qtextedit.h" + +#include "private/qwidgettextcontrol_p.h" + +QT_REQUIRE_CONFIG(textedit); + +QT_BEGIN_NAMESPACE + +class QMimeData; +class QTextEditPrivate : public QAbstractScrollAreaPrivate +{ + Q_DECLARE_PUBLIC(QTextEdit) +public: + QTextEditPrivate(); + + void init(const QString &html = QString()); + void paint(QPainter *p, QPaintEvent *e); + void _q_repaintContents(const QRectF &contentsRect); + + inline QPoint mapToContents(const QPoint &point) const + { return QPoint(point.x() + horizontalOffset(), point.y() + verticalOffset()); } + + void _q_adjustScrollbars(); + void _q_ensureVisible(const QRectF &rect); + void relayoutDocument(); + + void createAutoBulletList(); + void pageUpDown(QTextCursor::MoveOperation op, QTextCursor::MoveMode moveMode); + + inline int horizontalOffset() const + { return q_func()->isRightToLeft() ? (hbar->maximum() - hbar->value()) : hbar->value(); } + inline int verticalOffset() const + { return vbar->value(); } + + inline void sendControlEvent(QEvent *e) + { control->processEvent(e, QPointF(horizontalOffset(), verticalOffset()), viewport); } + + void _q_currentCharFormatChanged(const QTextCharFormat &format); + void _q_cursorPositionChanged(); + + void updateDefaultTextOption(); + + // re-implemented by QTextBrowser, called by QTextDocument::loadResource + virtual QUrl resolveUrl(const QUrl &url) const + { return url; } + + QWidgetTextControl *control; + + QTextEdit::AutoFormatting autoFormatting; + bool tabChangesFocus; + + QBasicTimer autoScrollTimer; + QPoint autoScrollDragPos; + + QTextEdit::LineWrapMode lineWrap; + int lineWrapColumnOrWidth; + QTextOption::WrapMode wordWrap; + + uint ignoreAutomaticScrollbarAdjustment : 1; + uint preferRichText : 1; + uint showCursorOnInitialShow : 1; + uint inDrag : 1; + uint clickCausedFocus : 1; + + // Qt3 COMPAT only, for setText + Qt::TextFormat textFormat; + + QString anchorToScrollToWhenVisible; + + QString placeholderText; + +#ifdef QT_KEYPAD_NAVIGATION + QBasicTimer deleteAllTimer; +#endif +}; + +QT_END_NAMESPACE + +#endif // QTEXTEDIT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbar_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbar_p.h new file mode 100644 index 000000000..616f53f71 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbar_p.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDYNAMICTOOLBAR_P_H +#define QDYNAMICTOOLBAR_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qtoolbar.h" +#include "QtWidgets/qaction.h" +#include "private/qwidget_p.h" +#include <QtCore/qbasictimer.h> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_TOOLBAR + +class QToolBarLayout; +class QTimer; + +class QToolBarPrivate : public QWidgetPrivate +{ + Q_DECLARE_PUBLIC(QToolBar) + +public: + inline QToolBarPrivate() + : explicitIconSize(false), explicitToolButtonStyle(false), movable(true), floatable(true), + allowedAreas(Qt::AllToolBarAreas), orientation(Qt::Horizontal), + toolButtonStyle(Qt::ToolButtonIconOnly), + layout(0), state(0) +#ifdef Q_OS_OSX + , macWindowDragging(false) +#endif + { } + + void init(); + void actionTriggered(); + void _q_toggleView(bool b); + void _q_updateIconSize(const QSize &sz); + void _q_updateToolButtonStyle(Qt::ToolButtonStyle style); + + bool explicitIconSize; + bool explicitToolButtonStyle; + bool movable; + bool floatable; + Qt::ToolBarAreas allowedAreas; + Qt::Orientation orientation; + Qt::ToolButtonStyle toolButtonStyle; + QSize iconSize; + + QAction *toggleViewAction; + + QToolBarLayout *layout; + + struct DragState { + QPoint pressPos; + bool dragging; + bool moving; + QLayoutItem *widgetItem; + }; + DragState *state; + +#ifdef Q_OS_OSX + bool macWindowDragging; + QPoint macWindowDragPressPosition; +#endif + + bool mousePressEvent(QMouseEvent *e); + bool mouseReleaseEvent(QMouseEvent *e); + bool mouseMoveEvent(QMouseEvent *e); + + void updateWindowFlags(bool floating, bool unplug = false); + void setWindowState(bool floating, bool unplug = false, const QRect &rect = QRect()); + void initDrag(const QPoint &pos); + void startDrag(bool moving = false); + void endDrag(); + + void unplug(const QRect &r); + void plug(const QRect &r); + + QBasicTimer waitForPopupTimer; +}; + +#endif // QT_NO_TOOLBAR + +QT_END_NAMESPACE + +#endif // QDYNAMICTOOLBAR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbararealayout_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbararealayout_p.h new file mode 100644 index 000000000..901f04cf1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbararealayout_p.h @@ -0,0 +1,250 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTOOLBARAREALAYOUT_P_H +#define QTOOLBARAREALAYOUT_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QList> +#include <QSize> +#include <QRect> + +QT_BEGIN_NAMESPACE + +static inline int pick(Qt::Orientation o, const QPoint &pos) +{ return o == Qt::Horizontal ? pos.x() : pos.y(); } + +static inline int pick(Qt::Orientation o, const QSize &size) +{ return o == Qt::Horizontal ? size.width() : size.height(); } + +static inline int &rpick(Qt::Orientation o, QPoint &pos) +{ return o == Qt::Horizontal ? pos.rx() : pos.ry(); } + +static inline int &rpick(Qt::Orientation o, QSize &size) +{ return o == Qt::Horizontal ? size.rwidth() : size.rheight(); } + +static inline QSizePolicy::Policy pick(Qt::Orientation o, const QSizePolicy &policy) +{ return o == Qt::Horizontal ? policy.horizontalPolicy() : policy.verticalPolicy(); } + +static inline int perp(Qt::Orientation o, const QPoint &pos) +{ return o == Qt::Vertical ? pos.x() : pos.y(); } + +static inline int perp(Qt::Orientation o, const QSize &size) +{ return o == Qt::Vertical ? size.width() : size.height(); } + +static inline int &rperp(Qt::Orientation o, QPoint &pos) +{ return o == Qt::Vertical ? pos.rx() : pos.ry(); } + +static inline int &rperp(Qt::Orientation o, QSize &size) +{ return o == Qt::Vertical ? size.rwidth() : size.rheight(); } + +#ifndef QT_NO_TOOLBAR + +class QToolBar; +class QLayoutItem; +class QMainWindow; +class QStyleOptionToolBar; + +class QToolBarAreaLayoutItem +{ +public: + QToolBarAreaLayoutItem(QLayoutItem *item = 0) + : widgetItem(item), pos(0), size(-1), preferredSize(-1), gap(false) {} + + bool skip() const; + QSize minimumSize() const; + QSize sizeHint() const; + QSize realSizeHint() const; + + void resize(Qt::Orientation o, int newSize) + { + newSize = qMax(pick(o, minimumSize()), newSize); + int sizeh = pick(o, sizeHint()); + if (newSize == sizeh) { + preferredSize = -1; + size = sizeh; + } else { + preferredSize = newSize; + } + } + + void extendSize(Qt::Orientation o, int extent) + { + int newSize = qMax(pick(o, minimumSize()), (preferredSize > 0 ? preferredSize : pick(o, sizeHint())) + extent); + int sizeh = pick(o, sizeHint()); + if (newSize == sizeh) { + preferredSize = -1; + size = sizeh; + } else { + preferredSize = newSize; + } + } + + QLayoutItem *widgetItem; + int pos; + int size; + int preferredSize; + bool gap; +}; +Q_DECLARE_TYPEINFO(QToolBarAreaLayoutItem, Q_PRIMITIVE_TYPE); + +class QToolBarAreaLayoutLine +{ +public: + QToolBarAreaLayoutLine() {} // for QVector, don't use + QToolBarAreaLayoutLine(Qt::Orientation orientation); + + QSize sizeHint() const; + QSize minimumSize() const; + + void fitLayout(); + bool skip() const; + + QRect rect; + Qt::Orientation o; + + QVector<QToolBarAreaLayoutItem> toolBarItems; +}; +Q_DECLARE_TYPEINFO(QToolBarAreaLayoutLine, Q_MOVABLE_TYPE); + +class QToolBarAreaLayoutInfo +{ +public: + QToolBarAreaLayoutInfo(QInternal::DockPosition pos = QInternal::TopDock); + + QSize sizeHint() const; + QSize minimumSize() const; + + void fitLayout(); + + QLayoutItem *insertToolBar(QToolBar *before, QToolBar *toolBar); + void insertItem(QToolBar *before, QLayoutItem *item); + void removeToolBar(QToolBar *toolBar); + void insertToolBarBreak(QToolBar *before); + void removeToolBarBreak(QToolBar *before); + void moveToolBar(QToolBar *toolbar, int pos); + + QList<int> gapIndex(const QPoint &pos, int *maxDistance) const; + bool insertGap(const QList<int> &path, QLayoutItem *item); + void clear(); + QRect itemRect(const QList<int> &path) const; + int distance(const QPoint &pos) const; + + QVector<QToolBarAreaLayoutLine> lines; + QRect rect; + Qt::Orientation o; + QInternal::DockPosition dockPos; + bool dirty; +}; +Q_DECLARE_TYPEINFO(QToolBarAreaLayoutInfo, Q_MOVABLE_TYPE); + +class QToolBarAreaLayout +{ +public: + enum { // sentinel values used to validate state data + ToolBarStateMarker = 0xfe, + ToolBarStateMarkerEx = 0xfc + }; + + QRect rect; + const QMainWindow *mainWindow; + QToolBarAreaLayoutInfo docks[4]; + bool visible; + + QToolBarAreaLayout(const QMainWindow *win); + + QRect fitLayout(); + + QSize minimumSize(const QSize ¢erMin) const; + QRect rectHint(const QRect &r) const; + QSize sizeHint(const QSize ¢er) const; + void apply(bool animate); + + QLayoutItem *itemAt(int *x, int index) const; + QLayoutItem *takeAt(int *x, int index); + void deleteAllLayoutItems(); + + QLayoutItem *insertToolBar(QToolBar *before, QToolBar *toolBar); + void removeToolBar(QToolBar *toolBar); + QLayoutItem *addToolBar(QInternal::DockPosition pos, QToolBar *toolBar); + void insertToolBarBreak(QToolBar *before); + void removeToolBarBreak(QToolBar *before); + void addToolBarBreak(QInternal::DockPosition pos); + void moveToolBar(QToolBar *toolbar, int pos); + + void insertItem(QInternal::DockPosition pos, QLayoutItem *item); + void insertItem(QToolBar *before, QLayoutItem *item); + + QInternal::DockPosition findToolBar(QToolBar *toolBar) const; + bool toolBarBreak(QToolBar *toolBar) const; + + void getStyleOptionInfo(QStyleOptionToolBar *option, QToolBar *toolBar) const; + + QList<int> indexOf(QWidget *toolBar) const; + QList<int> gapIndex(const QPoint &pos) const; + QList<int> currentGapIndex() const; + bool insertGap(const QList<int> &path, QLayoutItem *item); + void remove(const QList<int> &path); + void remove(QLayoutItem *item); + void clear(); + QToolBarAreaLayoutItem *item(const QList<int> &path); + QRect itemRect(const QList<int> &path) const; + QLayoutItem *plug(const QList<int> &path); + QLayoutItem *unplug(const QList<int> &path, QToolBarAreaLayout *other); + + void saveState(QDataStream &stream) const; + bool restoreState(QDataStream &stream, const QList<QToolBar*> &toolBars, uchar tmarker, bool testing = false); + bool isEmpty() const; +}; + + +QT_END_NAMESPACE +#endif // QT_NO_TOOLBAR +#endif // QTOOLBARAREALAYOUT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbarextension_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbarextension_p.h new file mode 100644 index 000000000..b6223107c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbarextension_p.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDYNAMICTOOLBAREXTENSION_P_H +#define QDYNAMICTOOLBAREXTENSION_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qtoolbutton.h" + +QT_REQUIRE_CONFIG(toolbutton); + +QT_BEGIN_NAMESPACE + +class Q_AUTOTEST_EXPORT QToolBarExtension : public QToolButton +{ + Q_OBJECT + +public: + explicit QToolBarExtension(QWidget *parent); + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + QSize sizeHint() const Q_DECL_OVERRIDE; + +public Q_SLOTS: + void setOrientation(Qt::Orientation o); +}; + +QT_END_NAMESPACE + +#endif // QDYNAMICTOOLBAREXTENSION_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbarlayout_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbarlayout_p.h new file mode 100644 index 000000000..9a81c4e50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbarlayout_p.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTOOLBARLAYOUT_P_H +#define QTOOLBARLAYOUT_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtWidgets/qlayout.h> +#include <private/qlayoutengine_p.h> +#include <QVector> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_TOOLBAR + +class QAction; +class QToolBarExtension; +class QMenu; + +class QToolBarItem : public QWidgetItem +{ +public: + QToolBarItem(QWidget *widget); + bool isEmpty() const Q_DECL_OVERRIDE; + + QAction *action; + bool customWidget; +}; + +class QToolBarLayout : public QLayout +{ + Q_OBJECT + +public: + QToolBarLayout(QWidget *parent = 0); + ~QToolBarLayout(); + + void addItem(QLayoutItem *item) Q_DECL_OVERRIDE; + QLayoutItem *itemAt(int index) const Q_DECL_OVERRIDE; + QLayoutItem *takeAt(int index) Q_DECL_OVERRIDE; + int count() const Q_DECL_OVERRIDE; + + bool isEmpty() const Q_DECL_OVERRIDE; + void invalidate() Q_DECL_OVERRIDE; + Qt::Orientations expandingDirections() const Q_DECL_OVERRIDE; + + void setGeometry(const QRect &r) Q_DECL_OVERRIDE; + QSize minimumSize() const Q_DECL_OVERRIDE; + QSize sizeHint() const Q_DECL_OVERRIDE; + + void insertAction(int index, QAction *action); + int indexOf(QAction *action) const; + int indexOf(QWidget *widget) const Q_DECL_OVERRIDE { return QLayout::indexOf(widget); } + + bool layoutActions(const QSize &size); + QSize expandedSize(const QSize &size) const; + bool expanded, animating; + + void setUsePopupMenu(bool set); // Yeah, there's no getter, but it's internal. + void checkUsePopupMenu(); + + bool movable() const; + void updateMarginAndSpacing(); + bool hasExpandFlag() const; + + void updateMacBorderMetrics(); +public Q_SLOTS: + void setExpanded(bool b); + +private: + QList<QToolBarItem*> items; + QSize hint, minSize; + bool dirty, expanding, empty, expandFlag; + QVector<QLayoutStruct> geomArray; + QRect handRect; + QToolBarExtension *extension; + + void updateGeomArray() const; + QToolBarItem *createItem(QAction *action); + QMenu *popupMenu; +}; + +#endif // QT_NO_TOOLBAR + +QT_END_NAMESPACE + +#endif // QTOOLBARLAYOUT_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbarseparator_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbarseparator_p.h new file mode 100644 index 000000000..8c9cf9f46 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtoolbarseparator_p.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDYNAMICTOOLBARSEPARATOR_P_H +#define QDYNAMICTOOLBARSEPARATOR_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qwidget.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_TOOLBAR + +class QStyleOption; +class QToolBar; + +class QToolBarSeparator : public QWidget +{ + Q_OBJECT + Qt::Orientation orient; + +public: + explicit QToolBarSeparator(QToolBar *parent); + + Qt::Orientation orientation() const; + + QSize sizeHint() const Q_DECL_OVERRIDE; + + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOption *option) const; + +public Q_SLOTS: + void setOrientation(Qt::Orientation orientation); +}; + +#endif // QT_NO_TOOLBAR + +QT_END_NAMESPACE + +#endif // QDYNAMICTOOLBARSEPARATOR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtreeview_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtreeview_p.h new file mode 100644 index 000000000..9a391ee88 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtreeview_p.h @@ -0,0 +1,275 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTREEVIEW_P_H +#define QTREEVIEW_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qabstractitemview_p.h" +#include <QtCore/qvariantanimation.h> +#include <QtCore/qabstractitemmodel.h> +#include <QtCore/qvector.h> + +QT_REQUIRE_CONFIG(treeview); + +QT_BEGIN_NAMESPACE + +struct QTreeViewItem +{ + QTreeViewItem() : parentItem(-1), expanded(false), spanning(false), hasChildren(false), + hasMoreSiblings(false), total(0), level(0), height(0) {} + QModelIndex index; // we remove items whenever the indexes are invalidated + int parentItem; // parent item index in viewItems + uint expanded : 1; + uint spanning : 1; + uint hasChildren : 1; // if the item has visible children (even if collapsed) + uint hasMoreSiblings : 1; + uint total : 28; // total number of children visible + uint level : 16; // indentation + int height : 16; // row height +}; + +Q_DECLARE_TYPEINFO(QTreeViewItem, Q_MOVABLE_TYPE); + +class Q_WIDGETS_EXPORT QTreeViewPrivate : public QAbstractItemViewPrivate +{ + Q_DECLARE_PUBLIC(QTreeView) +public: + + QTreeViewPrivate() + : QAbstractItemViewPrivate(), + header(0), indent(20), lastViewedItem(0), defaultItemHeight(-1), + uniformRowHeights(false), rootDecoration(true), + itemsExpandable(true), sortingEnabled(false), + expandsOnDoubleClick(true), + allColumnsShowFocus(false), customIndent(false), current(0), spanning(false), + animationsEnabled(false), columnResizeTimerID(0), + autoExpandDelay(-1), hoverBranch(-1), geometryRecursionBlock(false), hasRemovedItems(false), + treePosition(0) {} + + ~QTreeViewPrivate() {} + void initialize(); + int logicalIndexForTree() const; + inline bool isTreePosition(int logicalIndex) const + { + return logicalIndex == logicalIndexForTree(); + } + + QItemViewPaintPairs draggablePaintPairs(const QModelIndexList &indexes, QRect *r) const override; + void adjustViewOptionsForIndex(QStyleOptionViewItem *option, const QModelIndex ¤t) const override; + +#ifndef QT_NO_ANIMATION + struct AnimatedOperation : public QVariantAnimation + { + int item; + QPixmap before; + QPixmap after; + QWidget *viewport; + AnimatedOperation() : item(0) { setEasingCurve(QEasingCurve::InOutQuad); } + int top() const { return startValue().toInt(); } + QRect rect() const { QRect rect = viewport->rect(); rect.moveTop(top()); return rect; } + void updateCurrentValue(const QVariant &) override { viewport->update(rect()); } + void updateState(State state, State) override { if (state == Stopped) before = after = QPixmap(); } + } animatedOperation; + void prepareAnimatedOperation(int item, QVariantAnimation::Direction d); + void beginAnimatedOperation(); + void drawAnimatedOperation(QPainter *painter) const; + QPixmap renderTreeToPixmapForAnimation(const QRect &rect) const; + void _q_endAnimatedOperation(); +#endif //QT_NO_ANIMATION + + void expand(int item, bool emitSignal); + void collapse(int item, bool emitSignal); + + void _q_columnsAboutToBeRemoved(const QModelIndex &, int, int) override; + void _q_columnsRemoved(const QModelIndex &, int, int) override; + void _q_modelAboutToBeReset(); + void _q_sortIndicatorChanged(int column, Qt::SortOrder order); + void _q_modelDestroyed() override; + + void layout(int item, bool recusiveExpanding = false, bool afterIsUninitialized = false); + + int pageUp(int item) const; + int pageDown(int item) const; + + int itemHeight(int item) const; + int indentationForItem(int item) const; + int coordinateForItem(int item) const; + int itemAtCoordinate(int coordinate) const; + + int viewIndex(const QModelIndex &index) const; + QModelIndex modelIndex(int i, int column = 0) const; + + void insertViewItems(int pos, int count, const QTreeViewItem &viewItem); + void removeViewItems(int pos, int count); +#if 0 + bool checkViewItems() const; +#endif + + int firstVisibleItem(int *offset = 0) const; + int lastVisibleItem(int firstVisual = -1, int offset = -1) const; + int columnAt(int x) const; + bool hasVisibleChildren( const QModelIndex& parent) const; + + bool expandOrCollapseItemAtPos(const QPoint &pos); + + void updateScrollBars(); + + int itemDecorationAt(const QPoint &pos) const; + QRect itemDecorationRect(const QModelIndex &index) const; + + + QVector<QPair<int, int> > columnRanges(const QModelIndex &topIndex, const QModelIndex &bottomIndex) const; + void select(const QModelIndex &start, const QModelIndex &stop, QItemSelectionModel::SelectionFlags command); + + QPair<int,int> startAndEndColumns(const QRect &rect) const; + + void updateChildCount(const int parentItem, const int delta); + + void paintAlternatingRowColors(QPainter *painter, QStyleOptionViewItem *option, int y, int bottom) const; + + // logicalIndices: vector of currently visibly logical indices + // itemPositions: vector of view item positions (beginning/middle/end/onlyone) + void calcLogicalIndices(QVector<int> *logicalIndices, QVector<QStyleOptionViewItem::ViewItemPosition> *itemPositions, int left, int right) const; + int widthHintForIndex(const QModelIndex &index, int hint, const QStyleOptionViewItem &option, int i) const; + QHeaderView *header; + int indent; + + mutable QVector<QTreeViewItem> viewItems; + mutable int lastViewedItem; + int defaultItemHeight; // this is just a number; contentsHeight() / numItems + bool uniformRowHeights; // used when all rows have the same height + bool rootDecoration; + bool itemsExpandable; + bool sortingEnabled; + bool expandsOnDoubleClick; + bool allColumnsShowFocus; + bool customIndent; + + // used for drawing + mutable QPair<int,int> leftAndRight; + mutable int current; + mutable bool spanning; + + // used when expanding and collapsing items + QSet<QPersistentModelIndex> expandedIndexes; + bool animationsEnabled; + + inline bool storeExpanded(const QPersistentModelIndex &idx) { + if (expandedIndexes.contains(idx)) + return false; + expandedIndexes.insert(idx); + return true; + } + + inline bool isIndexExpanded(const QModelIndex &idx) const { + //We first check if the idx is a QPersistentModelIndex, because creating QPersistentModelIndex is slow + return !(idx.flags() & Qt::ItemNeverHasChildren) && isPersistent(idx) && expandedIndexes.contains(idx); + } + + // used when hiding and showing items + QSet<QPersistentModelIndex> hiddenIndexes; + + inline bool isRowHidden(const QModelIndex &idx) const { + if (hiddenIndexes.isEmpty()) + return false; + //We first check if the idx is a QPersistentModelIndex, because creating QPersistentModelIndex is slow + return isPersistent(idx) && hiddenIndexes.contains(idx); + } + + inline bool isItemHiddenOrDisabled(int i) const { + if (i < 0 || i >= viewItems.count()) + return false; + const QModelIndex index = viewItems.at(i).index; + return isRowHidden(index) || !isIndexEnabled(index); + } + + inline int above(int item) const + { int i = item; while (isItemHiddenOrDisabled(--item)){} return item < 0 ? i : item; } + inline int below(int item) const + { int i = item; while (isItemHiddenOrDisabled(++item)){} return item >= viewItems.count() ? i : item; } + inline void invalidateHeightCache(int item) const + { viewItems[item].height = 0; } + + inline int accessibleTable2Index(const QModelIndex &index) const { + return (viewIndex(index) + (header ? 1 : 0)) * model->columnCount()+index.column(); + } + + int accessibleTree2Index(const QModelIndex &index) const; + + void updateIndentationFromStyle(); + + // used for spanning rows + QVector<QPersistentModelIndex> spanningIndexes; + + // used for updating resized columns + int columnResizeTimerID; + QList<int> columnsToUpdate; + + // used for the automatic opening of nodes during DND + int autoExpandDelay; + QBasicTimer openTimer; + + // used for drawing hilighted expand/collapse indicators + mutable int hoverBranch; + + // used for blocking recursion when calling setViewportMargins from updateGeometries + bool geometryRecursionBlock; + + // If we should clean the set + bool hasRemovedItems; + + // tree position + int treePosition; +}; + +QT_END_NAMESPACE + +#endif // QTREEVIEW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtreewidget_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtreewidget_p.h new file mode 100644 index 000000000..7aa4daefc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtreewidget_p.h @@ -0,0 +1,245 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTREEWIDGET_P_H +#define QTREEWIDGET_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/qabstractitemmodel.h> +#include <private/qabstractitemmodel_p.h> +#include <QtCore/qpair.h> +#include <QtCore/qbasictimer.h> +#include <QtWidgets/qtreewidget.h> +#include <private/qtreeview_p.h> +#include <QtWidgets/qheaderview.h> + +QT_REQUIRE_CONFIG(treewidget); + +QT_BEGIN_NAMESPACE + +class QTreeWidgetItem; +class QTreeWidgetItemIterator; +class QTreeModelPrivate; + +class QTreeModel : public QAbstractItemModel +{ + Q_OBJECT + friend class QTreeWidget; + friend class QTreeWidgetPrivate; + friend class QTreeWidgetItem; + friend class QTreeWidgetItemPrivate; + friend class QTreeWidgetItemIterator; + friend class QTreeWidgetItemIteratorPrivate; + +public: + explicit QTreeModel(int columns = 0, QTreeWidget *parent = 0); + ~QTreeModel(); + + inline QTreeWidget *view() const + { return qobject_cast<QTreeWidget*>(QObject::parent()); } + + void clear(); + void setColumnCount(int columns); + + QTreeWidgetItem *item(const QModelIndex &index) const; + void itemChanged(QTreeWidgetItem *item); + + QModelIndex index(const QTreeWidgetItem *item, int column) const; + QModelIndex index(int row, int column, const QModelIndex &parent) const Q_DECL_OVERRIDE; + QModelIndex parent(const QModelIndex &child) const Q_DECL_OVERRIDE; + int rowCount(const QModelIndex &parent) const Q_DECL_OVERRIDE; + int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + bool hasChildren(const QModelIndex &parent) const Q_DECL_OVERRIDE; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + bool setData(const QModelIndex &index, const QVariant &value, int role) Q_DECL_OVERRIDE; + + QMap<int, QVariant> itemData(const QModelIndex &index) const Q_DECL_OVERRIDE; + + QVariant headerData(int section, Qt::Orientation orientation, int role) const Q_DECL_OVERRIDE; + bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, + int role) Q_DECL_OVERRIDE; + + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + + void sort(int column, Qt::SortOrder order) Q_DECL_OVERRIDE; + void ensureSorted(int column, Qt::SortOrder order, + int start, int end, const QModelIndex &parent); + static bool itemLessThan(const QPair<QTreeWidgetItem*,int> &left, + const QPair<QTreeWidgetItem*,int> &right); + static bool itemGreaterThan(const QPair<QTreeWidgetItem*,int> &left, + const QPair<QTreeWidgetItem*,int> &right); + static QList<QTreeWidgetItem*>::iterator sortedInsertionIterator( + const QList<QTreeWidgetItem*>::iterator &begin, + const QList<QTreeWidgetItem*>::iterator &end, + Qt::SortOrder order, QTreeWidgetItem *item); + + bool insertRows(int row, int count, const QModelIndex &) Q_DECL_OVERRIDE; + bool insertColumns(int column, int count, const QModelIndex &) Q_DECL_OVERRIDE; + + bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + + // dnd + QStringList mimeTypes() const Q_DECL_OVERRIDE; + QMimeData *mimeData(const QModelIndexList &indexes) const Q_DECL_OVERRIDE; + bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; + Qt::DropActions supportedDropActions() const Q_DECL_OVERRIDE; + + QMimeData *internalMimeData() const; + + inline QModelIndex createIndexFromItem(int row, int col, QTreeWidgetItem *item) const + { return createIndex(row, col, item); } + +protected: + QTreeModel(QTreeModelPrivate &, QTreeWidget *parent = 0); + void emitDataChanged(QTreeWidgetItem *item, int column); + void beginInsertItems(QTreeWidgetItem *parent, int row, int count); + void endInsertItems(); + void beginRemoveItems(QTreeWidgetItem *parent, int row, int count); + void endRemoveItems(); + void sortItems(QList<QTreeWidgetItem*> *items, int column, Qt::SortOrder order); + void timerEvent(QTimerEvent *) Q_DECL_OVERRIDE; + +private: + QTreeWidgetItem *rootItem; + QTreeWidgetItem *headerItem; + + mutable QModelIndexList cachedIndexes; + QList<QTreeWidgetItemIterator*> iterators; + + mutable QBasicTimer sortPendingTimer; + mutable bool skipPendingSort; //while doing internal operation we don't care about sorting + bool inline executePendingSort() const; + + bool isChanging() const; + +private: + Q_DECLARE_PRIVATE(QTreeModel) +public: + struct SkipSorting + { + const QTreeModel * const model; + const bool previous; + SkipSorting(const QTreeModel *m) : model(m), previous(model->skipPendingSort) + { model->skipPendingSort = true; } + ~SkipSorting() { model->skipPendingSort = previous; } + }; + friend struct SkipSorting; +}; + +QT_BEGIN_INCLUDE_NAMESPACE +#include "private/qabstractitemmodel_p.h" +QT_END_INCLUDE_NAMESPACE + +class QTreeModelPrivate : public QAbstractItemModelPrivate +{ + Q_DECLARE_PUBLIC(QTreeModel) +}; + +class QTreeWidgetItemPrivate +{ +public: + QTreeWidgetItemPrivate(QTreeWidgetItem *item) + : q(item), disabled(false), selected(false), rowGuess(-1), policy(QTreeWidgetItem::DontShowIndicatorWhenChildless) {} + void propagateDisabled(QTreeWidgetItem *item); + void sortChildren(int column, Qt::SortOrder order, bool climb); + QTreeWidgetItem *q; + QVariantList display; + uint disabled : 1; + uint selected : 1; + int rowGuess; + QTreeWidgetItem::ChildIndicatorPolicy policy; +}; + + +inline bool QTreeModel::executePendingSort() const +{ + if (!skipPendingSort && sortPendingTimer.isActive() && !isChanging()) { + sortPendingTimer.stop(); + int column = view()->header()->sortIndicatorSection(); + Qt::SortOrder order = view()->header()->sortIndicatorOrder(); + QTreeModel *that = const_cast<QTreeModel*>(this); + that->sort(column, order); + return true; + } + return false; +} + +class QTreeWidgetPrivate : public QTreeViewPrivate +{ + friend class QTreeModel; + Q_DECLARE_PUBLIC(QTreeWidget) +public: + QTreeWidgetPrivate() : QTreeViewPrivate(), explicitSortColumn(-1) {} + inline QTreeModel *treeModel() const { return qobject_cast<QTreeModel*>(model); } + inline QModelIndex index(const QTreeWidgetItem *item, int column = 0) const + { return treeModel()->index(item, column); } + inline QTreeWidgetItem *item(const QModelIndex &index) const + { return treeModel()->item(index); } + void _q_emitItemPressed(const QModelIndex &index); + void _q_emitItemClicked(const QModelIndex &index); + void _q_emitItemDoubleClicked(const QModelIndex &index); + void _q_emitItemActivated(const QModelIndex &index); + void _q_emitItemEntered(const QModelIndex &index); + void _q_emitItemChanged(const QModelIndex &index); + void _q_emitItemExpanded(const QModelIndex &index); + void _q_emitItemCollapsed(const QModelIndex &index); + void _q_emitCurrentItemChanged(const QModelIndex &previous, const QModelIndex &index); + void _q_sort(); + void _q_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); + void _q_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); + + // used by QTreeWidgetItem::sortChildren to make sure the column argument is used + int explicitSortColumn; +}; + +QT_END_NAMESPACE + +#endif // QTREEWIDGET_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtreewidgetitemiterator_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtreewidgetitemiterator_p.h new file mode 100644 index 000000000..e68f6103d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtreewidgetitemiterator_p.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTREEWIDGETITEMITERATOR_P_H +#define QTREEWIDGETITEMITERATOR_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/qstack.h> + +#include "qtreewidgetitemiterator.h" +#if QT_CONFIG(treewidget) + +QT_BEGIN_NAMESPACE + +class QTreeModel; +class QTreeWidgetItem; + +class QTreeWidgetItemIteratorPrivate { + Q_DECLARE_PUBLIC(QTreeWidgetItemIterator) +public: + QTreeWidgetItemIteratorPrivate(QTreeWidgetItemIterator *q, QTreeModel *model) + : m_currentIndex(0), m_model(model), q_ptr(q) + { + + } + + QTreeWidgetItemIteratorPrivate(const QTreeWidgetItemIteratorPrivate& other) + : m_currentIndex(other.m_currentIndex), m_model(other.m_model), + m_parentIndex(other.m_parentIndex), q_ptr(other.q_ptr) + { + + } + + QTreeWidgetItemIteratorPrivate &operator=(const QTreeWidgetItemIteratorPrivate& other) + { + m_currentIndex = other.m_currentIndex; + m_parentIndex = other.m_parentIndex; + m_model = other.m_model; + return (*this); + } + + ~QTreeWidgetItemIteratorPrivate() + { + } + + QTreeWidgetItem* nextSibling(const QTreeWidgetItem* item) const; + void ensureValidIterator(const QTreeWidgetItem *itemToBeRemoved); + + QTreeWidgetItem *next(const QTreeWidgetItem *current); + QTreeWidgetItem *previous(const QTreeWidgetItem *current); +private: + int m_currentIndex; + QTreeModel *m_model; // This iterator class should not have ownership of the model. + QStack<int> m_parentIndex; + QTreeWidgetItemIterator *q_ptr; +}; + +QT_END_NAMESPACE + +#endif // QT_CONFIG(treewidget) + +#endif //QTREEWIDGETITEMITERATOR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtwidgets-config_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtwidgets-config_p.h new file mode 100644 index 000000000..f1e9f5c96 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtwidgets-config_p.h @@ -0,0 +1,9 @@ +#define QT_FEATURE_widgettextcontrol 1 +#define QT_FEATURE_effects 1 +#define QT_FEATURE_gtk3 -1 +#define QT_FEATURE_style_android -1 +#define QT_FEATURE_style_fusion 1 +#define QT_FEATURE_style_mac -1 +#define QT_FEATURE_style_windows 1 +#define QT_FEATURE_style_windowsxp 1 +#define QT_FEATURE_style_windowsvista 1 diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtwidgetsglobal_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtwidgetsglobal_p.h new file mode 100644 index 000000000..22ba87602 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qtwidgetsglobal_p.h @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTWIDGETSGLOBAL_P_H +#define QTWIDGETSGLOBAL_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 <QtWidgets/qtwidgetsglobal.h> +#include <QtGui/private/qtguiglobal_p.h> +#include <QtWidgets/private/qtwidgets-config_p.h> + +#endif // QTWIDGETSGLOBAL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qundostack_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qundostack_p.h new file mode 100644 index 000000000..04bc38111 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qundostack_p.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUNDOSTACK_P_H +#define QUNDOSTACK_P_H + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <private/qobject_p.h> +#include <QtCore/qlist.h> +#include <QtCore/qstring.h> +#include <QtWidgets/qaction.h> + +#include "qundostack.h" + +QT_BEGIN_NAMESPACE +class QUndoCommand; +class QUndoGroup; + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +class QUndoCommandPrivate +{ +public: + QUndoCommandPrivate() : id(-1), obsolete(false) {} + QList<QUndoCommand*> child_list; + QString text; + QString actionText; + int id; + bool obsolete; +}; + +#if QT_CONFIG(undostack) + +class QUndoStackPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QUndoStack) +public: + QUndoStackPrivate() : index(0), clean_index(0), group(0), undo_limit(0) {} + + QList<QUndoCommand*> command_list; + QList<QUndoCommand*> macro_stack; + int index; + int clean_index; + QUndoGroup *group; + int undo_limit; + + void setIndex(int idx, bool clean); + bool checkUndoLimit(); +}; + +#ifndef QT_NO_ACTION +class QUndoAction : public QAction +{ + Q_OBJECT +public: + explicit QUndoAction(const QString &prefix, QObject *parent = 0); + void setTextFormat(const QString &textFormat, const QString &defaultText); +public Q_SLOTS: + void setPrefixedText(const QString &text); +private: + QString m_prefix; + QString m_defaultText; +}; +#endif // QT_NO_ACTION + +QT_END_NAMESPACE +#endif // QT_CONFIG(undostack) +#endif // QUNDOSTACK_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidget_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidget_p.h new file mode 100644 index 000000000..15704f32c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidget_p.h @@ -0,0 +1,1000 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGET_P_H +#define QWIDGET_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtWidgets/qwidget.h" +#include "private/qobject_p.h" +#include "QtCore/qrect.h" +#include "QtCore/qlocale.h" +#include "QtCore/qset.h" +#include "QtGui/qregion.h" +#include "QtGui/qinputmethod.h" +#include "QtGui/qopengl.h" +#include "QtGui/qsurfaceformat.h" +#include "QtWidgets/qsizepolicy.h" +#include "QtWidgets/qstyle.h" +#include "QtWidgets/qapplication.h" +#if QT_CONFIG(graphicseffect) +#include <private/qgraphicseffect_p.h> +#endif +#if QT_CONFIG(graphicsview) +#include "QtWidgets/qgraphicsproxywidget.h" +#include "QtWidgets/qgraphicsscene.h" +#include "QtWidgets/qgraphicsview.h" +#endif +#include <private/qgesture_p.h> + +QT_BEGIN_NAMESPACE + +// Extra QWidget data +// - to minimize memory usage for members that are seldom used. +// - top-level widgets have extra extra data to reduce cost further +class QPaintEngine; +class QPixmap; +class QWidgetBackingStore; +class QGraphicsProxyWidget; +class QWidgetItemV2; +class QOpenGLContext; +class QPlatformTextureList; + +class QStyle; + +class QUnifiedToolbarSurface; + +// implemented in qshortcut.cpp +bool qWidgetShortcutContextMatcher(QObject *object, Qt::ShortcutContext context); + +class QUpdateLaterEvent : public QEvent +{ +public: + explicit QUpdateLaterEvent(const QRegion& paintRegion) + : QEvent(UpdateLater), m_region(paintRegion) + { + } + + ~QUpdateLaterEvent() + { + } + + inline const QRegion ®ion() const { return m_region; } + +protected: + QRegion m_region; +}; + + + +class Q_AUTOTEST_EXPORT QWidgetBackingStoreTracker +{ + +public: + QWidgetBackingStoreTracker(); + ~QWidgetBackingStoreTracker(); + + void create(QWidget *tlw); + void destroy(); + + void registerWidget(QWidget *w); + void unregisterWidget(QWidget *w); + void unregisterWidgetSubtree(QWidget *w); + + inline QWidgetBackingStore* data() + { + return m_ptr; + } + + inline QWidgetBackingStore* operator->() + { + return m_ptr; + } + + inline QWidgetBackingStore& operator*() + { + return *m_ptr; + } + + inline operator bool() const + { + return (0 != m_ptr); + } + +private: + Q_DISABLE_COPY(QWidgetBackingStoreTracker) + +private: + QWidgetBackingStore* m_ptr; + QSet<QWidget *> m_widgets; +}; + +struct QTLWExtra { + // *************************** Cross-platform variables ***************************** + + // Regular pointers (keep them together to avoid gaps on 64 bits architectures). + QIcon *icon; // widget icon + QWidgetBackingStoreTracker backingStoreTracker; + QBackingStore *backingStore; + QPainter *sharedPainter; + QWindow *window; + QOpenGLContext *shareContext; + + // Implicit pointers (shared_null). + QString caption; // widget caption + QString iconText; // widget icon text + QString role; // widget role + QString filePath; // widget file path + + // Other variables. + short incw, inch; // size increments + short basew, baseh; // base sizes + // frame strut, don't use these directly, use QWidgetPrivate::frameStrut() instead. + QRect frameStrut; + QRect normalGeometry; // used by showMin/maximized/FullScreen + Qt::WindowFlags savedFlags; // Save widget flags while showing fullscreen + int initialScreenIndex; // Screen number when passing a QDesktop[Screen]Widget as parent. + + QVector<QPlatformTextureList *> widgetTextures; + + // *************************** Cross-platform bit fields **************************** + uint opacity : 8; + uint posIncludesFrame : 1; + uint sizeAdjusted : 1; + uint inTopLevelResize : 1; + uint inRepaint : 1; + uint embedded : 1; + + // *************************** Platform specific values (bit fields first) ********** +#if 0 /* Used to be included in Qt4 for Q_WS_X11 */ // <----------------------------------------------------------- X11 + uint spont_unmapped: 1; // window was spontaneously unmapped + uint dnd : 1; // DND properties installed + uint validWMState : 1; // is WM_STATE valid? + uint waitingForMapNotify : 1; // show() has been called, haven't got the MapNotify yet + WId parentWinId; // parent window Id (valid after reparenting) + WId userTimeWindow; // window id that contains user-time timestamp when WM supports a _NET_WM_USER_TIME_WINDOW atom + QPoint fullScreenOffset; +#ifndef QT_NO_XSYNC + WId syncUpdateCounter; + ulong syncRequestTimestamp; + qint32 newCounterValueHi; + quint32 newCounterValueLo; +#endif +#elif 0 /* Used to be included in Qt4 for Q_WS_WIN */ // <--------------------------------------------------------- WIN + uint hotkeyRegistered: 1; // Hot key from the STARTUPINFO has been registered. + HICON winIconBig; // internal big Windows icon + HICON winIconSmall; // internal small Windows icon +#elif 0 /* Used to be included in Qt4 for Q_WS_MAC */ // <--------------------------------------------------------- MAC + uint resizer : 4; + uint isSetGeometry : 1; + uint isMove : 1; + quint32 wattr; + quint32 wclass; + WindowGroupRef group; + IconRef windowIcon; // the current window icon, if set with setWindowIcon_sys. + quint32 savedWindowAttributesFromMaximized; // Saved attributes from when the calling updateMaximizeButton_sys() + // This value is just to make sure we maximize and restore to the right location, yet we allow apps to be maximized and + // manually resized. + // The name is misleading, since this is set when maximizing the window. It is a hint to saveGeometry(..) to record the + // starting position as 0,0 instead of the normal starting position. + bool wasMaximized; +#endif +}; + +struct QWExtra { + // *************************** Cross-platform variables ***************************** + + // Regular pointers (keep them together to avoid gaps on 64 bits architectures). + void *glContext; // if the widget is hijacked by QGLWindowSurface + QTLWExtra *topextra; // only useful for TLWs +#if QT_CONFIG(graphicsview) + QGraphicsProxyWidget *proxyWidget; // if the widget is embedded +#endif +#ifndef QT_NO_CURSOR + QCursor *curs; +#endif + QPointer<QStyle> style; + QPointer<QWidget> focus_proxy; + + // Implicit pointers (shared_empty/shared_null). + QRegion mask; // widget mask + QString styleSheet; + + // Other variables. + qint32 minw; + qint32 minh; // minimum size + qint32 maxw; + qint32 maxh; // maximum size + quint16 customDpiX; + quint16 customDpiY; + QSize staticContentsSize; + + // *************************** Cross-platform bit fields **************************** + uint explicitMinSize : 2; + uint explicitMaxSize : 2; + uint autoFillBackground : 1; + uint nativeChildrenForced : 1; + uint inRenderWithPainter : 1; + uint hasMask : 1; + uint hasWindowContainer : 1; + + // *************************** Platform specific values (bit fields first) ********** +#if 0 /* Used to be included in Qt4 for Q_WS_WIN */ // <----------------------------------------------------------- WIN +#ifndef QT_NO_DRAGANDDROP + QOleDropTarget *dropTarget; // drop target + QList<QPointer<QWidget> > oleDropWidgets; +#endif +#elif 0 /* Used to be included in Qt4 for Q_WS_X11 */ // <--------------------------------------------------------- X11 + uint compress_events : 1; + WId xDndProxy; // XDND forwarding to embedded windows +#elif 0 /* Used to be included in Qt4 for Q_WS_MAC */ // <------------------------------------------------------ MAC + // Cocoa Mask stuff + QImage maskBits; + CGImageRef imageMask; +#endif +}; + +/*! + \internal + + Returns \c true if \a p or any of its parents enable the + Qt::BypassGraphicsProxyWidget window flag. Used in QWidget::show() and + QWidget::setParent() to determine whether it's necessary to embed the + widget into a QGraphicsProxyWidget or not. +*/ +static inline bool bypassGraphicsProxyWidget(const QWidget *p) +{ + while (p) { + if (p->windowFlags() & Qt::BypassGraphicsProxyWidget) + return true; + p = p->parentWidget(); + } + return false; +} + +class Q_WIDGETS_EXPORT QWidgetPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QWidget) + +public: + // *************************** Cross-platform *************************************** + enum DrawWidgetFlags { + DrawAsRoot = 0x01, + DrawPaintOnScreen = 0x02, + DrawRecursive = 0x04, + DrawInvisible = 0x08, + DontSubtractOpaqueChildren = 0x10, + DontDrawOpaqueChildren = 0x20, + DontDrawNativeChildren = 0x40, + DontSetCompositionMode = 0x80 + }; + + enum CloseMode { + CloseNoEvent, + CloseWithEvent, + CloseWithSpontaneousEvent + }; + + enum Direction { + DirectionNorth = 0x01, + DirectionEast = 0x10, + DirectionSouth = 0x02, + DirectionWest = 0x20 + }; + + // Functions. + explicit QWidgetPrivate(int version = QObjectPrivateVersion); + ~QWidgetPrivate(); + + static QWidgetPrivate *get(QWidget *w) { return w->d_func(); } + static const QWidgetPrivate *get(const QWidget *w) { return w->d_func(); } + + QWExtra *extraData() const; + QTLWExtra *topData() const; + QTLWExtra *maybeTopData() const; + QPainter *sharedPainter() const; + void setSharedPainter(QPainter *painter); + QWidgetBackingStore *maybeBackingStore() const; + + template <typename T> + void repaint(T t); + + template <typename T> + void update(T t); + + void init(QWidget *desktopWidget, Qt::WindowFlags f); + void create_sys(WId window, bool initializeWindow, bool destroyOldWindow); + void createRecursively(); + void createWinId(); + + void createTLExtra(); + void createExtra(); + void deleteExtra(); + void createSysExtra(); + void deleteSysExtra(); + void createTLSysExtra(); + void deleteTLSysExtra(); + void updateSystemBackground(); + void propagatePaletteChange(); + + void setPalette_helper(const QPalette &); + void resolvePalette(); + QPalette naturalWidgetPalette(uint inheritedMask) const; + + void setMask_sys(const QRegion &); + + void raise_sys(); + void lower_sys(); + void stackUnder_sys(QWidget *); + + void setFocus_sys(); + void updateFocusChild(); + + void updateFont(const QFont &); + inline void setFont_helper(const QFont &font) { + if (data.fnt.resolve() == font.resolve() && data.fnt == font) + return; + updateFont(font); + } + void resolveFont(); + QFont naturalWidgetFont(uint inheritedMask) const; + + void setLayoutDirection_helper(Qt::LayoutDirection); + void resolveLayoutDirection(); + + void setLocale_helper(const QLocale &l, bool forceUpdate = false); + void resolveLocale(); + + void setStyle_helper(QStyle *newStyle, bool propagate, bool metalHack = false); + void inheritStyle(); + + void setUpdatesEnabled_helper(bool ); + + void paintBackground(QPainter *, const QRegion &, int flags = DrawAsRoot) const; + bool isAboutToShow() const; + QRegion prepareToRender(const QRegion ®ion, QWidget::RenderFlags renderFlags); + void render_helper(QPainter *painter, const QPoint &targetOffset, const QRegion &sourceRegion, + QWidget::RenderFlags renderFlags); + void render(QPaintDevice *target, const QPoint &targetOffset, const QRegion &sourceRegion, + QWidget::RenderFlags renderFlags); + void drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QPoint &offset, int flags, + QPainter *sharedPainter = 0, QWidgetBackingStore *backingStore = 0); + void sendPaintEvent(const QRegion &toBePainted); + + + void paintSiblingsRecursive(QPaintDevice *pdev, const QObjectList& children, int index, + const QRegion &rgn, const QPoint &offset, int flags, + QPainter *sharedPainter, QWidgetBackingStore *backingStore); + +#if QT_CONFIG(graphicsview) + static QGraphicsProxyWidget * nearestGraphicsProxyWidget(const QWidget *origin); +#endif + void repaint_sys(const QRegion &rgn); + + QRect clipRect() const; + QRegion clipRegion() const; + void setSystemClip(QPaintDevice *paintDevice, const QRegion ®ion); + void subtractOpaqueChildren(QRegion &rgn, const QRect &clipRect) const; + void subtractOpaqueSiblings(QRegion &source, bool *hasDirtySiblingsAbove = 0, + bool alsoNonOpaque = false) const; + void clipToEffectiveMask(QRegion ®ion) const; + void updateIsOpaque(); + void setOpaque(bool opaque); + void updateIsTranslucent(); + bool paintOnScreen() const; +#if QT_CONFIG(graphicseffect) + void invalidateGraphicsEffectsRecursively(); +#endif // QT_CONFIG(graphicseffect) + + const QRegion &getOpaqueChildren() const; + void setDirtyOpaqueRegion(); + + bool close_helper(CloseMode mode); + + void setWindowIcon_helper(); + void setWindowIcon_sys(); + void setWindowOpacity_sys(qreal opacity); + void adjustQuitOnCloseAttribute(); + + void scrollChildren(int dx, int dy); + void moveRect(const QRect &, int dx, int dy); + void scrollRect(const QRect &, int dx, int dy); + void invalidateBuffer_resizeHelper(const QPoint &oldPos, const QSize &oldSize); + // ### Qt 4.6: Merge into a template function (after MSVC isn't supported anymore). + void invalidateBuffer(const QRegion &); + void invalidateBuffer(const QRect &); + bool isOverlapped(const QRect&) const; + void syncBackingStore(); + void syncBackingStore(const QRegion ®ion); + + // tells the input method about the widgets transform + void updateWidgetTransform(QEvent *event); + + void reparentFocusWidgets(QWidget *oldtlw); + + static int pointToRect(const QPoint &p, const QRect &r); + + void setWinId(WId); + void showChildren(bool spontaneous); + void hideChildren(bool spontaneous); + void setParent_sys(QWidget *parent, Qt::WindowFlags); + void scroll_sys(int dx, int dy); + void scroll_sys(int dx, int dy, const QRect &r); + void deactivateWidgetCleanup(); + void setGeometry_sys(int, int, int, int, bool); + void fixPosIncludesFrame(); + void sendPendingMoveAndResizeEvents(bool recursive = false, bool disableUpdates = false); + void activateChildLayoutsRecursively(); + void show_recursive(); + void show_helper(); + void show_sys(); + void hide_sys(); + void hide_helper(); + void _q_showIfNotHidden(); + + void setEnabled_helper(bool); + void registerDropSite(bool); + static void adjustFlags(Qt::WindowFlags &flags, QWidget *w = 0); + + void updateFrameStrut(); + QRect frameStrut() const; + +#ifdef QT_KEYPAD_NAVIGATION + static bool navigateToDirection(Direction direction); + static QWidget *widgetInNavigationDirection(Direction direction); + static bool canKeypadNavigate(Qt::Orientation orientation); + static bool inTabWidget(QWidget *widget); +#endif + + void setWindowIconText_sys(const QString &cap); + void setWindowIconText_helper(const QString &cap); + void setWindowTitle_sys(const QString &cap); + void setWindowFilePath_sys(const QString &filePath); + +#ifndef QT_NO_CURSOR + void setCursor_sys(const QCursor &cursor); + void unsetCursor_sys(); +#endif + + void setWindowTitle_helper(const QString &cap); + void setWindowFilePath_helper(const QString &filePath); + void setWindowModified_helper(); + virtual void setWindowFlags(Qt::WindowFlags windowFlags); + + bool setMinimumSize_helper(int &minw, int &minh); + bool setMaximumSize_helper(int &maxw, int &maxh); + void setConstraints_sys(); + bool pointInsideRectAndMask(const QPoint &) const; + QWidget *childAt_helper(const QPoint &, bool) const; + QWidget *childAtRecursiveHelper(const QPoint &p, bool) const; + void updateGeometry_helper(bool forceUpdate); + + void getLayoutItemMargins(int *left, int *top, int *right, int *bottom) const; + void setLayoutItemMargins(int left, int top, int right, int bottom); + void setLayoutItemMargins(QStyle::SubElement element, const QStyleOption *opt = 0); + + void updateContentsRect(); + QMargins safeAreaMargins() const; + + // aboutToDestroy() is called just before the contents of + // QWidget::destroy() is executed. It's used to signal QWidget + // sub-classes that their internals are about to be released. + virtual void aboutToDestroy() {} + + inline QWidget *effectiveFocusWidget() { + QWidget *w = q_func(); + while (w->focusProxy()) + w = w->focusProxy(); + return w; + } + + void setModal_sys(); + + // This is an helper function that return the available geometry for + // a widget and takes care is this one is in QGraphicsView. + // If the widget is not embed in a scene then the geometry available is + // null, we let QDesktopWidget decide for us. + static QRect screenGeometry(const QWidget *widget) + { + QRect screen; +#if QT_CONFIG(graphicsview) + QGraphicsProxyWidget *ancestorProxy = widget->d_func()->nearestGraphicsProxyWidget(widget); + //It's embedded if it has an ancestor + if (ancestorProxy) { + if (!bypassGraphicsProxyWidget(widget) && ancestorProxy->scene() != 0) { + // One view, let be smart and return the viewport rect then the popup is aligned + if (ancestorProxy->scene()->views().size() == 1) { + QGraphicsView *view = ancestorProxy->scene()->views().at(0); + screen = view->mapToScene(view->viewport()->rect()).boundingRect().toRect(); + } else { + screen = ancestorProxy->scene()->sceneRect().toRect(); + } + } + } +#else + Q_UNUSED(widget); +#endif + return screen; + } + + inline void setRedirected(QPaintDevice *replacement, const QPoint &offset) + { + Q_ASSERT(q_func()->testAttribute(Qt::WA_WState_InPaintEvent)); + redirectDev = replacement; + redirectOffset = offset; + } + + inline QPaintDevice *redirected(QPoint *offset) const + { + if (offset) + *offset = redirectDev ? redirectOffset : QPoint(); + return redirectDev; + } + + inline void restoreRedirected() + { redirectDev = 0; } + + inline void enforceNativeChildren() + { + if (!extra) + createExtra(); + + if (extra->nativeChildrenForced) + return; + extra->nativeChildrenForced = 1; + + for (int i = 0; i < children.size(); ++i) { + if (QWidget *child = qobject_cast<QWidget *>(children.at(i))) + child->setAttribute(Qt::WA_NativeWindow); + } + } + + inline bool nativeChildrenForced() const + { + return extra ? extra->nativeChildrenForced : false; + } + + inline QRect effectiveRectFor(const QRect &rect) const + { +#if QT_CONFIG(graphicseffect) + if (graphicsEffect && graphicsEffect->isEnabled()) + return graphicsEffect->boundingRectFor(rect).toAlignedRect(); +#endif // QT_CONFIG(graphicseffect) + return rect; + } + + QSize adjustedSize() const; + + inline void handleSoftwareInputPanel(Qt::MouseButton button, bool clickCausedFocus) + { + Q_Q(QWidget); + if (button == Qt::LeftButton && qApp->autoSipEnabled()) { + QStyle::RequestSoftwareInputPanel behavior = QStyle::RequestSoftwareInputPanel( + q->style()->styleHint(QStyle::SH_RequestSoftwareInputPanel)); + if (!clickCausedFocus || behavior == QStyle::RSIP_OnMouseClick) { + QGuiApplication::inputMethod()->show(); + } + } + } + + void setWSGeometry(); + + inline QPoint mapToWS(const QPoint &p) const + { return p - data.wrect.topLeft(); } + + inline QPoint mapFromWS(const QPoint &p) const + { return p + data.wrect.topLeft(); } + + inline QRect mapToWS(const QRect &r) const + { return r.translated(-data.wrect.topLeft()); } + + inline QRect mapFromWS(const QRect &r) const + { return r.translated(data.wrect.topLeft()); } + + QOpenGLContext *shareContext() const; + + virtual QObject *focusObject() { return 0; } + +#ifndef QT_NO_OPENGL + virtual GLuint textureId() const { return 0; } + virtual QImage grabFramebuffer() { return QImage(); } + virtual void beginBackingStorePainting() { } + virtual void endBackingStorePainting() { } + virtual void beginCompose() { } + virtual void endCompose() { } + void setRenderToTexture() { renderToTexture = true; setTextureChildSeen(); } + void setTextureChildSeen() + { + Q_Q(QWidget); + if (textureChildSeen) + return; + textureChildSeen = 1; + + if (!q->isWindow()) { + QWidget *parent = q->parentWidget(); + if (parent) + get(parent)->setTextureChildSeen(); + } + } + static void sendComposeStatus(QWidget *w, bool end); + // Called on setViewport(). + virtual void initializeViewportFramebuffer() { } + // When using a QOpenGLWidget as viewport with QAbstractScrollArea, resize events are + // filtered away from the widget. This is fine for QGLWidget but bad for QOpenGLWidget + // since the fbo must be resized. We need an alternative way to notify. + virtual void resizeViewportFramebuffer() { } + // Called after each paint event. + virtual void resolveSamples() { } +#endif + + static void setWidgetParentHelper(QObject *widgetAsObject, QObject *newParent); + + // Variables. + // Regular pointers (keep them together to avoid gaps on 64 bit architectures). + QWExtra *extra; + QWidget *focus_next; + QWidget *focus_prev; + QWidget *focus_child; + QLayout *layout; + QRegion *needsFlush; + QPaintDevice *redirectDev; + QWidgetItemV2 *widgetItem; + QPaintEngine *extraPaintEngine; + mutable const QMetaObject *polished; + QGraphicsEffect *graphicsEffect; + // All widgets are added into the allWidgets set. Once + // they receive a window id they are also added to the mapper. + // This should just ensure that all widgets are deleted by QApplication + static QWidgetMapper *mapper; + static QWidgetSet *allWidgets; +#if !defined(QT_NO_IM) + Qt::InputMethodHints imHints; +#endif +#ifdef QT_KEYPAD_NAVIGATION + static QPointer<QWidget> editingWidget; +#endif + + // Implicit pointers (shared_null/shared_empty). + QRegion opaqueChildren; + QRegion dirty; +#ifndef QT_NO_TOOLTIP + QString toolTip; + int toolTipDuration; +#endif +#if QT_CONFIG(statustip) + QString statusTip; +#endif +#if QT_CONFIG(whatsthis) + QString whatsThis; +#endif +#ifndef QT_NO_ACCESSIBILITY + QString accessibleName; + QString accessibleDescription; +#endif + + // Other variables. + uint inheritedFontResolveMask; + uint inheritedPaletteResolveMask; + short leftmargin; + short topmargin; + short rightmargin; + short bottommargin; + signed char leftLayoutItemMargin; + signed char topLayoutItemMargin; + signed char rightLayoutItemMargin; + signed char bottomLayoutItemMargin; + static int instanceCounter; // Current number of widget instances + static int maxInstances; // Maximum number of widget instances + Qt::HANDLE hd; + QWidgetData data; + QSizePolicy size_policy; + QLocale locale; + QPoint redirectOffset; +#ifndef QT_NO_ACTION + QList<QAction*> actions; +#endif +#ifndef QT_NO_GESTURES + QMap<Qt::GestureType, Qt::GestureFlags> gestureContext; +#endif + + // Bit fields. + uint high_attributes[4]; // the low ones are in QWidget::widget_attributes + QPalette::ColorRole fg_role : 8; + QPalette::ColorRole bg_role : 8; + uint dirtyOpaqueChildren : 1; + uint isOpaque : 1; + uint retainSizeWhenHiddenChanged : 1; + uint inDirtyList : 1; + uint isScrolled : 1; + uint isMoved : 1; + uint usesDoubleBufferedGLContext : 1; + uint mustHaveWindowHandle : 1; + uint renderToTexture : 1; + uint textureChildSeen : 1; +#ifndef QT_NO_IM + uint inheritsInputMethodHints : 1; +#endif +#ifndef QT_NO_OPENGL + uint renderToTextureReallyDirty : 1; + uint renderToTextureComposeActive : 1; +#endif + uint childrenHiddenByWState : 1; + uint childrenShownByExpose : 1; + + // *************************** Platform specific ************************************ +#if defined(Q_OS_WIN) + uint noPaintOnScreen : 1; // see qwidget.cpp ::paintEngine() +#endif +#if 0 /* Used to be included in Qt4 for Q_WS_X11 */ // <----------------------------------------------------------- X11 + Qt::HANDLE picture; + static QWidget *mouseGrabber; + static QWidget *keyboardGrabber; + + void setWindowRole(); + void sendStartupMessage(const char *message) const; + void x11UpdateIsOpaque(); + bool isBackgroundInherited() const; + void updateX11AcceptFocus(); + QPoint mapToGlobal(const QPoint &pos) const; + QPoint mapFromGlobal(const QPoint &pos) const; +#elif 0 /* Used to be included in Qt4 for Q_WS_WIN */ // <--------------------------------------------------------- WIN +#ifndef QT_NO_GESTURES + uint nativeGesturePanEnabled : 1; +#endif + bool shouldShowMaximizeButton(); + void winUpdateIsOpaque(); + void reparentChildren(); +#ifndef QT_NO_DRAGANDDROP + QOleDropTarget *registerOleDnd(QWidget *widget); + void unregisterOleDnd(QWidget *widget, QOleDropTarget *target); +#endif + void grabMouseWhileInWindow(); + void registerTouchWindow(); + void winSetupGestures(); +#elif defined(Q_OS_MAC) // <--------------------------------------------------------- MAC + void macUpdateSizeAttribute(); +#elif 0 /* Used to be included in Qt4 for Q_WS_MAC */ // <--------------------------------------------------------- MAC (old stuff) + // This is new stuff + uint needWindowChange : 1; + + // Each wiget keeps a list of all its child and grandchild OpenGL widgets. + // This list is used to update the gl context whenever a parent and a granparent + // moves, and also to check for intersections with gl widgets within the window + // when a widget moves. + struct GlWidgetInfo + { + GlWidgetInfo(QWidget *widget) : widget(widget), lastUpdateWidget(0) { } + bool operator==(const GlWidgetInfo &other) const { return (widget == other.widget); } + QWidget * widget; + QWidget * lastUpdateWidget; + }; + + // dirtyOnWidget contains the areas in the widget that needs to be repained, + // in the same way as dirtyOnScreen does for the window. Areas are added in + // dirtyWidget_sys and cleared in the paint event. In scroll_sys we then use + // this information repaint invalid areas when widgets are scrolled. + QRegion dirtyOnWidget; + EventHandlerRef window_event; + QList<GlWidgetInfo> glWidgets; + + //these are here just for code compat (HIViews) + Qt::HANDLE qd_hd; + + void macUpdateHideOnSuspend(); + void macUpdateOpaqueSizeGrip(); + void macUpdateIgnoreMouseEvents(); + void macUpdateMetalAttribute(); + void macUpdateIsOpaque(); + void macSetNeedsDisplay(QRegion region); + void setEnabled_helper_sys(bool enable); + bool isRealWindow() const; + void adjustWithinMaxAndMinSize(int &w, int &h); + void applyMaxAndMinSizeOnWindow(); + void update_sys(const QRect &rect); + void update_sys(const QRegion &rgn); + void setGeometry_sys_helper(int, int, int, int, bool); + void updateMaximizeButton_sys(); + void createWindow_sys(); + void recreateMacWindow(); + void setSubWindowStacking(bool set); + void setWindowLevel(); + void finishCreateWindow_sys_Cocoa(void * /*NSWindow * */ windowRef); + void syncCocoaMask(); + void finishCocoaMaskSetup(); + // Did we add the drawRectOriginal method? + bool drawRectOriginalAdded; + // Is the original drawRect method available? + bool originalDrawMethod; + // Do we need to change the methods? + bool changeMethods; + + // Unified toolbar variables + bool isInUnifiedToolbar; + QUnifiedToolbarSurface *unifiedSurface; + QPoint toolbar_offset; + QWidget *toolbar_ancestor; + bool flushRequested; + bool touchEventsEnabled; + void determineWindowClass(); + void transferChildren(); + bool qt_mac_dnd_event(uint, DragRef); + void toggleDrawers(bool); + //mac event functions + static bool qt_create_root_win(); + static void qt_clean_root_win(); + static bool qt_mac_update_sizer(QWidget *, int up = 0); + static OSStatus qt_window_event(EventHandlerCallRef er, EventRef event, void *); + static OSStatus qt_widget_event(EventHandlerCallRef er, EventRef event, void *); + static bool qt_widget_rgn(QWidget *, short, RgnHandle, bool); + void registerTouchWindow(bool enable = true); +#endif + void setNetWmWindowTypes(bool skipIfMissing = false); + + bool stealKeyboardGrab(bool grab); + bool stealMouseGrab(bool grab); +}; + +struct QWidgetPaintContext +{ + inline QWidgetPaintContext(QPaintDevice *d, const QRegion &r, const QPoint &o, int f, + QPainter *p, QWidgetBackingStore *b) + : pdev(d), rgn(r), offset(o), flags(f), sharedPainter(p), backingStore(b), painter(0) {} + + QPaintDevice *pdev; + QRegion rgn; + QPoint offset; + int flags; + QPainter *sharedPainter; + QWidgetBackingStore *backingStore; + QPainter *painter; +}; + +#if QT_CONFIG(graphicseffect) +class QWidgetEffectSourcePrivate : public QGraphicsEffectSourcePrivate +{ +public: + QWidgetEffectSourcePrivate(QWidget *widget) + : QGraphicsEffectSourcePrivate(), m_widget(widget), context(0), updateDueToGraphicsEffect(false) + {} + + void detach() Q_DECL_OVERRIDE + { m_widget->d_func()->graphicsEffect = 0; } + + const QGraphicsItem *graphicsItem() const Q_DECL_OVERRIDE + { return 0; } + + const QWidget *widget() const Q_DECL_OVERRIDE + { return m_widget; } + + void update() Q_DECL_OVERRIDE + { + updateDueToGraphicsEffect = true; + m_widget->update(); + updateDueToGraphicsEffect = false; + } + + bool isPixmap() const Q_DECL_OVERRIDE + { return false; } + + void effectBoundingRectChanged() Q_DECL_OVERRIDE + { + // ### This function should take a rect parameter; then we can avoid + // updating too much on the parent widget. + if (QWidget *parent = m_widget->parentWidget()) + parent->update(); + else + update(); + } + + const QStyleOption *styleOption() const Q_DECL_OVERRIDE + { return 0; } + + QRect deviceRect() const Q_DECL_OVERRIDE + { return m_widget->window()->rect(); } + + QRectF boundingRect(Qt::CoordinateSystem system) const Q_DECL_OVERRIDE; + void draw(QPainter *p) Q_DECL_OVERRIDE; + QPixmap pixmap(Qt::CoordinateSystem system, QPoint *offset, + QGraphicsEffect::PixmapPadMode mode) const Q_DECL_OVERRIDE; + + QWidget *m_widget; + QWidgetPaintContext *context; + QTransform lastEffectTransform; + bool updateDueToGraphicsEffect; +}; +#endif // QT_CONFIG(graphicseffect) + +inline QWExtra *QWidgetPrivate::extraData() const +{ + return extra; +} + +inline QTLWExtra *QWidgetPrivate::topData() const +{ + const_cast<QWidgetPrivate *>(this)->createTLExtra(); + return extra->topextra; +} + +inline QTLWExtra *QWidgetPrivate::maybeTopData() const +{ + return extra ? extra->topextra : 0; +} + +inline QPainter *QWidgetPrivate::sharedPainter() const +{ + Q_Q(const QWidget); + QTLWExtra *x = q->window()->d_func()->maybeTopData(); + return x ? x->sharedPainter : 0; +} + +inline void QWidgetPrivate::setSharedPainter(QPainter *painter) +{ + Q_Q(QWidget); + QTLWExtra *x = q->window()->d_func()->topData(); + x->sharedPainter = painter; +} + +inline bool QWidgetPrivate::pointInsideRectAndMask(const QPoint &p) const +{ + Q_Q(const QWidget); + return q->rect().contains(p) && (!extra || !extra->hasMask || q->testAttribute(Qt::WA_MouseNoMask) + || extra->mask.contains(p)); +} + +inline QWidgetBackingStore *QWidgetPrivate::maybeBackingStore() const +{ + Q_Q(const QWidget); + QTLWExtra *x = q->window()->d_func()->maybeTopData(); + return x ? x->backingStoreTracker.data() : 0; +} + +QT_END_NAMESPACE + +#endif // QWIDGET_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetaction_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetaction_p.h new file mode 100644 index 000000000..1fbcf236a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetaction_p.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGETACTION_P_H +#define QWIDGETACTION_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "private/qaction_p.h" + +QT_BEGIN_NAMESPACE + +class QWidgetActionPrivate : public QActionPrivate +{ + Q_DECLARE_PUBLIC(QWidgetAction) +public: + inline QWidgetActionPrivate() : defaultWidgetInUse(false), autoCreated(false) {} + QPointer<QWidget> defaultWidget; + 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)); + } +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetanimator_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetanimator_p.h new file mode 100644 index 000000000..90be22c27 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetanimator_p.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGET_ANIMATOR_P_H +#define QWIDGET_ANIMATOR_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <qobject.h> +#include <qhash.h> +#include <qpointer.h> + +QT_BEGIN_NAMESPACE + +class QWidget; +class QMainWindowLayout; +class QPropertyAnimation; +class QRect; + +class QWidgetAnimator : public QObject +{ + Q_OBJECT +public: + QWidgetAnimator(QMainWindowLayout *layout); + void animate(QWidget *widget, const QRect &final_geometry, bool animate); + bool animating() const; + + void abort(QWidget *widget); + +#ifndef QT_NO_ANIMATION +private Q_SLOTS: + void animationFinished(); +#endif + +private: + typedef QHash<QWidget*, QPointer<QPropertyAnimation> > AnimationMap; + AnimationMap m_animation_map; + QMainWindowLayout *m_mainWindowLayout; +}; + +QT_END_NAMESPACE + +#endif // QWIDGET_ANIMATOR_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetbackingstore_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetbackingstore_p.h new file mode 100644 index 000000000..fa51cb71d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetbackingstore_p.h @@ -0,0 +1,317 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGETBACKINGSTORE_P_H +#define QWIDGETBACKINGSTORE_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QDebug> +#include <QtWidgets/qwidget.h> +#include <private/qwidget_p.h> +#include <QtGui/qbackingstore.h> + +QT_BEGIN_NAMESPACE + +class QPlatformTextureList; +class QPlatformTextureListWatcher; +class QWidgetBackingStore; + +struct BeginPaintInfo { + inline BeginPaintInfo() : wasFlushed(0), nothingToPaint(0), backingStoreRecreated(0) {} + uint wasFlushed : 1; + uint nothingToPaint : 1; + uint backingStoreRecreated : 1; +}; + +#ifndef QT_NO_OPENGL +class QPlatformTextureListWatcher : public QObject +{ + Q_OBJECT + +public: + QPlatformTextureListWatcher(QWidgetBackingStore *backingStore); + void watch(QPlatformTextureList *textureList); + bool isLocked() const; + +private slots: + void onLockStatusChanged(bool locked); + +private: + QHash<QPlatformTextureList *, bool> m_locked; + QWidgetBackingStore *m_backingStore; +}; +#endif + +class Q_AUTOTEST_EXPORT QWidgetBackingStore +{ +public: + enum UpdateTime { + UpdateNow, + UpdateLater + }; + + enum BufferState{ + BufferValid, + BufferInvalid + }; + + QWidgetBackingStore(QWidget *t); + ~QWidgetBackingStore(); + + static void showYellowThing(QWidget *widget, const QRegion &rgn, int msec, bool); + + void sync(QWidget *exposedWidget, const QRegion &exposedRegion); + void sync(); + void flush(QWidget *widget = 0); + + inline QPoint topLevelOffset() const { return tlwOffset; } + + QBackingStore *backingStore() const { return store; } + + inline bool isDirty() const + { + return !(dirtyWidgets.isEmpty() && dirty.isEmpty() && dirtyRenderToTextureWidgets.isEmpty()); + } + + // ### Qt 4.6: Merge into a template function (after MSVC isn't supported anymore). + void markDirty(const QRegion &rgn, QWidget *widget, UpdateTime updateTime = UpdateLater, + BufferState bufferState = BufferValid); + void markDirty(const QRect &rect, QWidget *widget, UpdateTime updateTime = UpdateLater, + BufferState bufferState = BufferValid); + +private: + QWidget *tlw; + QRegion dirtyOnScreen; // needsFlush + QRegion dirty; // needsRepaint + QRegion dirtyFromPreviousSync; + QVector<QWidget *> dirtyWidgets; + QVector<QWidget *> dirtyRenderToTextureWidgets; + QVector<QWidget *> *dirtyOnScreenWidgets; + QList<QWidget *> staticWidgets; + QBackingStore *store; + uint updateRequestSent : 1; + + QPoint tlwOffset; + + QPlatformTextureListWatcher *textureListWatcher; + QElapsedTimer perfTime; + int perfFrames; + + void sendUpdateRequest(QWidget *widget, UpdateTime updateTime); + + static bool flushPaint(QWidget *widget, const QRegion &rgn); + static void unflushPaint(QWidget *widget, const QRegion &rgn); + static void qt_flush(QWidget *widget, const QRegion ®ion, QBackingStore *backingStore, + QWidget *tlw, const QPoint &tlwOffset, + QPlatformTextureList *widgetTextures, + QWidgetBackingStore *widgetBackingStore); + + void doSync(); + bool bltRect(const QRect &rect, int dx, int dy, QWidget *widget); + void releaseBuffer(); + + void beginPaint(QRegion &toClean, QWidget *widget, QBackingStore *backingStore, + BeginPaintInfo *returnInfo, bool toCleanIsInTopLevelCoordinates = true); + void endPaint(const QRegion &cleaned, QBackingStore *backingStore, BeginPaintInfo *beginPaintInfo); + + QRegion dirtyRegion(QWidget *widget = 0) const; + QRegion staticContents(QWidget *widget = 0, const QRect &withinClipRect = QRect()) const; + + void markDirtyOnScreen(const QRegion &dirtyOnScreen, QWidget *widget, const QPoint &topLevelOffset); + + void removeDirtyWidget(QWidget *w); + + void updateLists(QWidget *widget); + + bool syncAllowed(); + + inline void addDirtyWidget(QWidget *widget, const QRegion &rgn) + { + if (widget && !widget->d_func()->inDirtyList && !widget->data->in_destructor) { + QWidgetPrivate *widgetPrivate = widget->d_func(); +#if QT_CONFIG(graphicseffect) + if (widgetPrivate->graphicsEffect) + widgetPrivate->dirty = widgetPrivate->effectiveRectFor(rgn.boundingRect()); + else +#endif // QT_CONFIG(graphicseffect) + widgetPrivate->dirty = rgn; + dirtyWidgets.append(widget); + widgetPrivate->inDirtyList = true; + } + } + + inline void addDirtyRenderToTextureWidget(QWidget *widget) + { + if (widget && !widget->d_func()->inDirtyList && !widget->data->in_destructor) { + QWidgetPrivate *widgetPrivate = widget->d_func(); + Q_ASSERT(widgetPrivate->renderToTexture); + dirtyRenderToTextureWidgets.append(widget); + widgetPrivate->inDirtyList = true; + } + } + + inline void dirtyWidgetsRemoveAll(QWidget *widget) + { + int i = 0; + while (i < dirtyWidgets.size()) { + if (dirtyWidgets.at(i) == widget) + dirtyWidgets.remove(i); + else + ++i; + } + } + + inline void addStaticWidget(QWidget *widget) + { + if (!widget) + return; + + Q_ASSERT(widget->testAttribute(Qt::WA_StaticContents)); + if (!staticWidgets.contains(widget)) + staticWidgets.append(widget); + } + + inline void removeStaticWidget(QWidget *widget) + { staticWidgets.removeAll(widget); } + + // Move the reparented widget and all its static children from this backing store + // to the new backing store if reparented into another top-level / backing store. + inline void moveStaticWidgets(QWidget *reparented) + { + Q_ASSERT(reparented); + QWidgetBackingStore *newBs = reparented->d_func()->maybeBackingStore(); + if (newBs == this) + return; + + int i = 0; + while (i < staticWidgets.size()) { + QWidget *w = staticWidgets.at(i); + if (reparented == w || reparented->isAncestorOf(w)) { + staticWidgets.removeAt(i); + if (newBs) + newBs->addStaticWidget(w); + } else { + ++i; + } + } + } + + inline QRect topLevelRect() const + { + return tlw->data->crect; + } + + inline void appendDirtyOnScreenWidget(QWidget *widget) + { + if (!widget) + return; + + if (!dirtyOnScreenWidgets) { + dirtyOnScreenWidgets = new QVector<QWidget *>; + dirtyOnScreenWidgets->append(widget); + } else if (!dirtyOnScreenWidgets->contains(widget)) { + dirtyOnScreenWidgets->append(widget); + } + } + + inline void dirtyOnScreenWidgetsRemoveAll(QWidget *widget) + { + if (!widget || !dirtyOnScreenWidgets) + return; + + int i = 0; + while (i < dirtyOnScreenWidgets->size()) { + if (dirtyOnScreenWidgets->at(i) == widget) + dirtyOnScreenWidgets->remove(i); + else + ++i; + } + } + + inline void resetWidget(QWidget *widget) + { + if (widget) { + widget->d_func()->inDirtyList = false; + widget->d_func()->isScrolled = false; + widget->d_func()->isMoved = false; + widget->d_func()->dirty = QRegion(); + } + } + + inline void updateStaticContentsSize() + { + for (int i = 0; i < staticWidgets.size(); ++i) { + QWidgetPrivate *wd = staticWidgets.at(i)->d_func(); + if (!wd->extra) + wd->createExtra(); + wd->extra->staticContentsSize = wd->data.crect.size(); + } + } + + inline bool hasStaticContents() const + { +#if defined(Q_OS_WIN) + return !staticWidgets.isEmpty(); +#else + return !staticWidgets.isEmpty() && false; +#endif + } + + friend QRegion qt_dirtyRegion(QWidget *); + friend class QWidgetPrivate; + friend class QWidget; + friend class QBackingStore; + + Q_DISABLE_COPY(QWidgetBackingStore) +}; + +QT_END_NAMESPACE + +#endif // QBACKINGSTORE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetitemdata_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetitemdata_p.h new file mode 100644 index 000000000..b7ed6ed86 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetitemdata_p.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGETITEMDATA_P_H +#define QWIDGETITEMDATA_P_H + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/qdatastream.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. +// + +QT_BEGIN_NAMESPACE + +class QWidgetItemData +{ +public: + inline QWidgetItemData() : role(-1) {} + inline QWidgetItemData(int r, const QVariant &v) : role(r), value(v) {} + int role; + QVariant value; + inline bool operator==(const QWidgetItemData &other) const { return role == other.role && value == other.value; } +}; +Q_DECLARE_TYPEINFO(QWidgetItemData, Q_MOVABLE_TYPE); + +#ifndef QT_NO_DATASTREAM + +inline QDataStream &operator>>(QDataStream &in, QWidgetItemData &data) +{ + in >> data.role; + in >> data.value; + return in; +} + +inline QDataStream &operator<<(QDataStream &out, const QWidgetItemData &data) +{ + out << data.role; + out << data.value; + return out; +} + +#endif // QT_NO_DATASTREAM + +QT_END_NAMESPACE + +#endif // QWIDGETITEMDATA_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetlinecontrol_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetlinecontrol_p.h new file mode 100644 index 000000000..16c9cc71e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetlinecontrol_p.h @@ -0,0 +1,567 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGETLINECONTROL_P_H +#define QWIDGETLINECONTROL_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 <QtWidgets/private/qtwidgetsglobal_p.h> + +#include "private/qwidget_p.h" +#include "QtWidgets/qlineedit.h" +#include "QtGui/qtextlayout.h" +#include "QtWidgets/qstyleoption.h" +#include "QtCore/qpointer.h" +#include "QtGui/qclipboard.h" +#include "QtGui/qinputmethod.h" +#include "QtCore/qpoint.h" +#if QT_CONFIG(completer) +#include "QtWidgets/qcompleter.h" +#endif +#include "QtCore/qthread.h" +#include "QtGui/private/qinputcontrol_p.h" + +#include "qplatformdefs.h" + +#include <vector> + +#ifdef DrawText +# undef DrawText +#endif + +QT_REQUIRE_CONFIG(lineedit); + +QT_BEGIN_NAMESPACE + +class Q_WIDGETS_EXPORT QWidgetLineControl : public QInputControl +{ + Q_OBJECT + +public: + QWidgetLineControl(const QString &txt = QString()) + : QInputControl(LineEdit) + , m_cursor(0), m_preeditCursor(0), m_cursorWidth(0), m_layoutDirection(Qt::LayoutDirectionAuto), + m_hideCursor(false), m_separator(0), m_readOnly(0), + m_dragEnabled(0), m_echoMode(0), m_textDirty(0), m_selDirty(0), + m_validInput(1), m_blinkStatus(0), m_blinkEnabled(false), m_blinkTimer(0), m_deleteAllTimer(0), + m_ascent(0), m_maxLength(32767), m_lastCursorPos(-1), + m_tripleClickTimer(0), m_maskData(0), m_modifiedState(0), m_undoState(0), + m_selstart(0), m_selend(0), m_passwordEchoEditing(false) + , m_passwordEchoTimer(0) + , m_passwordMaskDelay(-1) +#if 0 // Used to be included in Qt4 for Q_WS_MAC + , m_threadChecks(false) + , m_textLayoutThread(0) + #endif +#if defined(QT_BUILD_INTERNAL) + , m_passwordMaskDelayOverride(-1) +#endif + , m_keyboardScheme(0) + , m_accessibleObject(0) + { + init(txt); + } + + ~QWidgetLineControl() + { + delete [] m_maskData; + } + + void setAccessibleObject(QObject *object) + { + Q_ASSERT(object); + m_accessibleObject = object; + } + + QObject *accessibleObject() + { + if (m_accessibleObject) + return m_accessibleObject; + return parent(); + } + + int nextMaskBlank(int pos) + { + int c = findInMask(pos, true, false); + m_separator |= (c != pos); + return (c != -1 ? c : m_maxLength); + } + + int prevMaskBlank(int pos) + { + int c = findInMask(pos, false, false); + m_separator |= (c != pos); + return (c != -1 ? c : 0); + } + + bool isUndoAvailable() const; + bool isRedoAvailable() const; + void clearUndo() { m_history.clear(); m_modifiedState = m_undoState = 0; } + + bool isModified() const { return m_modifiedState != m_undoState; } + void setModified(bool modified) { m_modifiedState = modified ? -1 : m_undoState; } + + bool allSelected() const { return !m_text.isEmpty() && m_selstart == 0 && m_selend == (int)m_text.length(); } + bool hasSelectedText() const { return !m_text.isEmpty() && m_selend > m_selstart; } + + int width() const { return qRound(m_textLayout.lineAt(0).width()) + 1; } + int height() const { return qRound(m_textLayout.lineAt(0).height()) + 1; } + int ascent() const { return m_ascent; } + qreal naturalTextWidth() const { return m_textLayout.lineAt(0).naturalTextWidth(); } + + void setSelection(int start, int length); + + inline QString selectedText() const { return hasSelectedText() ? m_text.mid(m_selstart, m_selend - m_selstart) : QString(); } + QString textBeforeSelection() const { return hasSelectedText() ? m_text.left(m_selstart) : QString(); } + QString textAfterSelection() const { return hasSelectedText() ? m_text.mid(m_selend) : QString(); } + + int selectionStart() const { return hasSelectedText() ? m_selstart : -1; } + int selectionEnd() const { return hasSelectedText() ? m_selend : -1; } + bool inSelection(int x) const + { + if (m_selstart >= m_selend) + return false; + int pos = xToPos(x, QTextLine::CursorOnCharacter); + return pos >= m_selstart && pos < m_selend; + } + + void removeSelection() + { + int priorState = m_undoState; + removeSelectedText(); + finishChange(priorState); + } + + int start() const { return 0; } + int end() const { return m_text.length(); } + +#ifndef QT_NO_CLIPBOARD + void copy(QClipboard::Mode mode = QClipboard::Clipboard) const; + void paste(QClipboard::Mode mode = QClipboard::Clipboard); +#endif + + int cursor() const{ return m_cursor; } + int preeditCursor() const { return m_preeditCursor; } + + int cursorWidth() const { return m_cursorWidth; } + void setCursorWidth(int value) { m_cursorWidth = value; } + + Qt::CursorMoveStyle cursorMoveStyle() const { return m_textLayout.cursorMoveStyle(); } + void setCursorMoveStyle(Qt::CursorMoveStyle style) { m_textLayout.setCursorMoveStyle(style); } + + void moveCursor(int pos, bool mark = false); + void cursorForward(bool mark, int steps) + { + int c = m_cursor; + if (steps > 0) { + while (steps--) + c = cursorMoveStyle() == Qt::VisualMoveStyle ? m_textLayout.rightCursorPosition(c) + : m_textLayout.nextCursorPosition(c); + } else if (steps < 0) { + while (steps++) + c = cursorMoveStyle() == Qt::VisualMoveStyle ? m_textLayout.leftCursorPosition(c) + : m_textLayout.previousCursorPosition(c); + } + moveCursor(c, mark); + } + + void cursorWordForward(bool mark) { moveCursor(m_textLayout.nextCursorPosition(m_cursor, QTextLayout::SkipWords), mark); } + void cursorWordBackward(bool mark) { moveCursor(m_textLayout.previousCursorPosition(m_cursor, QTextLayout::SkipWords), mark); } + + void home(bool mark) { moveCursor(0, mark); } + void end(bool mark) { moveCursor(text().length(), mark); } + + int xToPos(int x, QTextLine::CursorPosition = QTextLine::CursorBetweenCharacters) const; + QRect rectForPos(int pos) const; + QRect cursorRect() const; + QRect anchorRect() const; + + qreal cursorToX(int cursor) const { return m_textLayout.lineAt(0).cursorToX(cursor); } + qreal cursorToX() const + { + int cursor = m_cursor; + if (m_preeditCursor != -1) + cursor += m_preeditCursor; + return cursorToX(cursor); + } + + bool isReadOnly() const { return m_readOnly; } + void setReadOnly(bool enable); + + QString text() const + { + QString content = m_text; + QString res = m_maskData ? stripString(content) : content; + return (res.isNull() ? QString::fromLatin1("") : res); + } + void setText(const QString &txt) + { +#ifndef QT_NO_IM + if (composeMode()) + QGuiApplication::inputMethod()->reset(); +#endif + internalSetText(txt, -1, false); + } + void commitPreedit(); + + QString displayText() const { return m_textLayout.text(); } + + QString surroundingText() const + { + return m_text.isNull() ? QString::fromLatin1("") : m_text; + } + + void backspace(); + void del(); + void deselect() { internalDeselect(); finishChange(); } + void selectAll() { m_selstart = m_selend = m_cursor = 0; moveCursor(m_text.length(), true); } + + void insert(const QString &); + void clear(); + void undo(); + void redo() { internalRedo(); finishChange(); } + void selectWordAtPos(int); + + uint echoMode() const { return m_echoMode; } + void setEchoMode(uint mode) + { + cancelPasswordEchoTimer(); + m_echoMode = mode; + m_passwordEchoEditing = false; + updateDisplayText(); + } + + int maxLength() const { return m_maxLength; } + void setMaxLength(int maxLength) + { + if (m_maskData) + return; + m_maxLength = maxLength; + setText(m_text); + } + +#ifndef QT_NO_VALIDATOR + const QValidator *validator() const { return m_validator; } + void setValidator(const QValidator *v) { m_validator = const_cast<QValidator*>(v); } +#endif + +#if QT_CONFIG(completer) + QCompleter *completer() const { return m_completer; } + /* Note that you must set the widget for the completer separately */ + void setCompleter(const QCompleter *c) { m_completer = const_cast<QCompleter*>(c); } + void complete(int key); +#endif + + int cursorPosition() const { return m_cursor; } + void setCursorPosition(int pos) { if (pos <= m_text.length()) moveCursor(qMax(0, pos)); } + + bool hasAcceptableInput() const { return hasAcceptableInput(m_text); } + bool fixup(); + + QString inputMask() const + { + QString mask; + if (m_maskData) { + mask = m_inputMask; + if (m_blank != QLatin1Char(' ')) { + mask += QLatin1Char(';'); + mask += m_blank; + } + } + return mask; + } + void setInputMask(const QString &mask) + { + parseInputMask(mask); + if (m_maskData) + moveCursor(nextMaskBlank(0)); + } + + // input methods +#ifndef QT_NO_IM + bool composeMode() const { return !m_textLayout.preeditAreaText().isEmpty(); } + void setPreeditArea(int cursor, const QString &text) { m_textLayout.setPreeditArea(cursor, text); } +#endif + + QString preeditAreaText() const { return m_textLayout.preeditAreaText(); } + + void updatePasswordEchoEditing(bool editing); + bool passwordEchoEditing() const { + if (m_passwordEchoTimer != 0) + return true; + return m_passwordEchoEditing ; + } + + QChar passwordCharacter() const { return m_passwordCharacter; } + void setPasswordCharacter(QChar character) { m_passwordCharacter = character; updateDisplayText(); } + + int passwordMaskDelay() const { return m_passwordMaskDelay; } + void setPasswordMaskDelay(int delay) { m_passwordMaskDelay = delay; } + + Qt::LayoutDirection layoutDirection() const { + if (m_layoutDirection == Qt::LayoutDirectionAuto) { + if (m_text.isEmpty()) + return QGuiApplication::inputMethod()->inputDirection(); + return m_text.isRightToLeft() ? Qt::RightToLeft : Qt::LeftToRight; + } + return m_layoutDirection; + } + void setLayoutDirection(Qt::LayoutDirection direction) + { + if (direction != m_layoutDirection) { + m_layoutDirection = direction; + updateDisplayText(); + } + } + + void setFont(const QFont &font) { m_textLayout.setFont(font); updateDisplayText(); } + + void processInputMethodEvent(QInputMethodEvent *event); + void processKeyEvent(QKeyEvent* ev); + + void setBlinkingCursorEnabled(bool enable); + void updateCursorBlinking(); + void resetCursorBlinkTimer(); + + bool cursorBlinkStatus() const { return m_blinkStatus; } + + QString cancelText() const { return m_cancelText; } + void setCancelText(const QString &text) { m_cancelText = text; } + + const QPalette &palette() const { return m_palette; } + void setPalette(const QPalette &p) { m_palette = p; } + + enum DrawFlags { + DrawText = 0x01, + DrawSelections = 0x02, + DrawCursor = 0x04, + DrawAll = DrawText | DrawSelections | DrawCursor + }; + void draw(QPainter *, const QPoint &, const QRect &, int flags = DrawAll); + +#ifndef QT_NO_SHORTCUT + void processShortcutOverrideEvent(QKeyEvent *ke); +#endif + + QTextLayout *textLayout() const + { +#if 0 // Used to be included in Qt4 for Q_WS_MAC + if (m_threadChecks && QThread::currentThread() != m_textLayoutThread) + redoTextLayout(); +#endif + return &m_textLayout; + } + +#if 0 // Used to be included in Qt4 for Q_WS_MAC + void setThreadChecks(bool threadChecks) + { + m_threadChecks = threadChecks; + } + + bool threadChecks() const + { + return m_threadChecks; + } +#endif + +private: + void init(const QString &txt); + void removeSelectedText(); + void internalSetText(const QString &txt, int pos = -1, bool edited = true); + void updateDisplayText(bool forceUpdate = false); + + void internalInsert(const QString &s); + void internalDelete(bool wasBackspace = false); + void internalRemove(int pos); + + inline void internalDeselect() + { + m_selDirty |= (m_selend > m_selstart); + m_selstart = m_selend = 0; + } + + void internalUndo(int until = -1); + void internalRedo(); + + QString m_text; + QPalette m_palette; + int m_cursor; + int m_preeditCursor; + int m_cursorWidth; + Qt::LayoutDirection m_layoutDirection; + uint m_hideCursor : 1; // used to hide the m_cursor inside preedit areas + uint m_separator : 1; + uint m_readOnly : 1; + uint m_dragEnabled : 1; + uint m_echoMode : 2; + uint m_textDirty : 1; + uint m_selDirty : 1; + uint m_validInput : 1; + uint m_blinkStatus : 1; + uint m_blinkEnabled : 1; + int m_blinkTimer; + int m_deleteAllTimer; + int m_ascent; + int m_maxLength; + int m_lastCursorPos; + QList<int> m_transactions; + QPoint m_tripleClick; + int m_tripleClickTimer; + QString m_cancelText; + + void emitCursorPositionChanged(); + + bool finishChange(int validateFromState = -1, bool update = false, bool edited = true); + +#ifndef QT_NO_VALIDATOR + QPointer<QValidator> m_validator; +#endif + QPointer<QCompleter> m_completer; +#if QT_CONFIG(completer) + bool advanceToEnabledItem(int dir); +#endif + + struct MaskInputData { + enum Casemode { NoCaseMode, Upper, Lower }; + QChar maskChar; // either the separator char or the inputmask + bool separator; + Casemode caseMode; + }; + QString m_inputMask; + QChar m_blank; + MaskInputData *m_maskData; + + // undo/redo handling + enum CommandType { Separator, Insert, Remove, Delete, RemoveSelection, DeleteSelection, SetSelection }; + struct Command { + inline Command(CommandType t, int p, QChar c, int ss, int se) : type(t),uc(c),pos(p),selStart(ss),selEnd(se) {} + uint type : 4; + QChar uc; + int pos, selStart, selEnd; + }; + int m_modifiedState; + int m_undoState; + std::vector<Command> m_history; + void addCommand(const Command& cmd); + + inline void separate() { m_separator = true; } + + // selection + int m_selstart; + int m_selend; + + // masking + void parseInputMask(const QString &maskFields); + bool isValidInput(QChar key, QChar mask) const; + bool hasAcceptableInput(const QString &text) const; + QString maskString(uint pos, const QString &str, bool clear = false) const; + QString clearString(uint pos, uint len) const; + QString stripString(const QString &str) const; + int findInMask(int pos, bool forward, bool findSeparator, QChar searchChar = QChar()) const; + + // complex text layout (must be mutable so it can be reshaped at will) + mutable QTextLayout m_textLayout; + + bool m_passwordEchoEditing; + QChar m_passwordCharacter; + int m_passwordEchoTimer; + int m_passwordMaskDelay; + void cancelPasswordEchoTimer() + { + if (m_passwordEchoTimer != 0) { + killTimer(m_passwordEchoTimer); + m_passwordEchoTimer = 0; + } + } + + int redoTextLayout() const; +#if 0 // Used to be included in Qt4 for Q_WS_MAC + bool m_threadChecks; + mutable QThread *m_textLayoutThread; +#endif + +public: +#if defined(QT_BUILD_INTERNAL) + int m_passwordMaskDelayOverride; +#endif + +Q_SIGNALS: + void cursorPositionChanged(int, int); + void selectionChanged(); + + void displayTextChanged(const QString &); + void textChanged(const QString &); + void textEdited(const QString &); + + void resetInputContext(); + void updateMicroFocus(); + + void accepted(); + void editingFinished(); + void updateNeeded(const QRect &); + +#ifdef QT_KEYPAD_NAVIGATION + void editFocusChange(bool); +#endif +protected: + virtual void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE; + +private Q_SLOTS: + void _q_deleteSelected(); + +private: + int m_keyboardScheme; + + // accessibility events are sent for this object + QObject *m_accessibleObject; +}; + +QT_END_NAMESPACE + +#endif // QWIDGETLINECONTROL_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetresizehandler_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetresizehandler_p.h new file mode 100644 index 000000000..669cb6f25 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetresizehandler_p.h @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGETRESIZEHANDLER_P_H +#define QWIDGETRESIZEHANDLER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. This header file may +// change from version to version without notice, or even be +// removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtCore/qobject.h" +#include "QtCore/qpoint.h" + +QT_REQUIRE_CONFIG(resizehandler); + +QT_BEGIN_NAMESPACE + +class QMouseEvent; +class QKeyEvent; + +class Q_WIDGETS_EXPORT QWidgetResizeHandler : public QObject +{ + Q_OBJECT + +public: + enum Action { + Move = 0x01, + Resize = 0x02, + Any = Move|Resize + }; + + explicit QWidgetResizeHandler(QWidget *parent, QWidget *cw = 0); + void setActive(bool b) { setActive(Any, b); } + void setActive(Action ac, bool b); + bool isActive() const { return isActive(Any); } + bool isActive(Action ac) const; + void setMovingEnabled(bool b) { movingEnabled = b; } + bool isMovingEnabled() const { return movingEnabled; } + + bool isButtonDown() const { return buttonDown; } + + void setExtraHeight(int h) { extrahei = h; } + void setSizeProtection(bool b) { sizeprotect = b; } + + void setFrameWidth(int w) { fw = w; } + + void doResize(); + void doMove(); + +Q_SIGNALS: + void activate(); + +protected: + bool eventFilter(QObject *o, QEvent *e) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *e); + void keyPressEvent(QKeyEvent *e); + +private: + Q_DISABLE_COPY(QWidgetResizeHandler) + + enum MousePosition { + Nowhere, + TopLeft, BottomRight, BottomLeft, TopRight, + Top, Bottom, Left, Right, + Center + }; + + QWidget *widget; + QWidget *childWidget; + QPoint moveOffset; + QPoint invertedMoveOffset; + MousePosition mode; + int fw; + int extrahei; + int range; + uint buttonDown :1; + uint moveResizeMode :1; + uint activeForResize :1; + uint sizeprotect :1; + uint movingEnabled :1; + uint activeForMove :1; + + void setMouseCursor(MousePosition m); + bool isMove() const { + return moveResizeMode && mode == Center; + } + bool isResize() const { + return moveResizeMode && !isMove(); + } +}; + +QT_END_NAMESPACE + +#endif // QWIDGETRESIZEHANDLER_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgettextcontrol_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgettextcontrol_p.h new file mode 100644 index 000000000..11ff63c5e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgettextcontrol_p.h @@ -0,0 +1,310 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGETTEXTCONTROL_P_H +#define QWIDGETTEXTCONTROL_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtGui/qtextdocument.h> +#include <QtGui/qtextoption.h> +#include <QtGui/qtextcursor.h> +#include <QtGui/qtextformat.h> +#if QT_CONFIG(textedit) +#include <QtWidgets/qtextedit.h> +#endif +#if QT_CONFIG(menu) +#include <QtWidgets/qmenu.h> +#endif +#include <QtCore/qrect.h> +#include <QtGui/qabstracttextdocumentlayout.h> +#include <QtGui/qtextdocumentfragment.h> +#include <QtGui/qclipboard.h> +#include <QtCore/qmimedata.h> +#include <QtGui/private/qinputcontrol_p.h> + +QT_REQUIRE_CONFIG(widgettextcontrol); + +QT_BEGIN_NAMESPACE + + +class QStyleSheet; +class QTextDocument; +class QMenu; +class QWidgetTextControlPrivate; +class QAbstractScrollArea; +class QEvent; +class QTimerEvent; + +class Q_WIDGETS_EXPORT QWidgetTextControl : public QInputControl +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QWidgetTextControl) +#ifndef QT_NO_TEXTHTMLPARSER + Q_PROPERTY(QString html READ toHtml WRITE setHtml NOTIFY textChanged USER true) +#endif + Q_PROPERTY(bool overwriteMode READ overwriteMode WRITE setOverwriteMode) + Q_PROPERTY(bool acceptRichText READ acceptRichText WRITE setAcceptRichText) + Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth) + Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags WRITE setTextInteractionFlags) + Q_PROPERTY(bool openExternalLinks READ openExternalLinks WRITE setOpenExternalLinks) + Q_PROPERTY(bool ignoreUnusedNavigationEvents READ ignoreUnusedNavigationEvents WRITE setIgnoreUnusedNavigationEvents) +public: + explicit QWidgetTextControl(QObject *parent = 0); + explicit QWidgetTextControl(const QString &text, QObject *parent = 0); + explicit QWidgetTextControl(QTextDocument *doc, QObject *parent = 0); + virtual ~QWidgetTextControl(); + + void setDocument(QTextDocument *document); + QTextDocument *document() const; + + void setTextCursor(const QTextCursor &cursor); + QTextCursor textCursor() const; + + void setTextInteractionFlags(Qt::TextInteractionFlags flags); + Qt::TextInteractionFlags textInteractionFlags() const; + + void mergeCurrentCharFormat(const QTextCharFormat &modifier); + + void setCurrentCharFormat(const QTextCharFormat &format); + QTextCharFormat currentCharFormat() const; + + bool find(const QString &exp, QTextDocument::FindFlags options = 0); +#ifndef QT_NO_REGEXP + bool find(const QRegExp &exp, QTextDocument::FindFlags options = 0); +#endif + + QString toPlainText() const; +#ifndef QT_NO_TEXTHTMLPARSER + QString toHtml() const; +#endif + + virtual void ensureCursorVisible(); + + Q_INVOKABLE virtual QVariant loadResource(int type, const QUrl &name); +#ifndef QT_NO_CONTEXTMENU + QMenu *createStandardContextMenu(const QPointF &pos, QWidget *parent); +#endif + + QTextCursor cursorForPosition(const QPointF &pos) const; + QRectF cursorRect(const QTextCursor &cursor) const; + QRectF cursorRect() const; + QRectF selectionRect(const QTextCursor &cursor) const; + QRectF selectionRect() const; + + virtual QString anchorAt(const QPointF &pos) const; + QPointF anchorPosition(const QString &name) const; + + QString anchorAtCursor() const; + + bool overwriteMode() const; + void setOverwriteMode(bool overwrite); + + int cursorWidth() const; + void setCursorWidth(int width); + + bool acceptRichText() const; + void setAcceptRichText(bool accept); + +#if QT_CONFIG(textedit) + void setExtraSelections(const QList<QTextEdit::ExtraSelection> &selections); + QList<QTextEdit::ExtraSelection> extraSelections() const; +#endif + + void setTextWidth(qreal width); + qreal textWidth() const; + QSizeF size() const; + + void setOpenExternalLinks(bool open); + bool openExternalLinks() const; + + void setIgnoreUnusedNavigationEvents(bool ignore); + bool ignoreUnusedNavigationEvents() const; + + void moveCursor(QTextCursor::MoveOperation op, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); + + bool canPaste() const; + + void setCursorIsFocusIndicator(bool b); + bool cursorIsFocusIndicator() const; + + void setDragEnabled(bool enabled); + bool isDragEnabled() const; + + bool isWordSelectionEnabled() const; + void setWordSelectionEnabled(bool enabled); + + bool isPreediting(); + + void print(QPagedPaintDevice *printer) const; + + virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const; + virtual QRectF blockBoundingRect(const QTextBlock &block) const; + QAbstractTextDocumentLayout::PaintContext getPaintContext(QWidget *widget) const; + +public Q_SLOTS: + void setPlainText(const QString &text); + void setHtml(const QString &text); + +#ifndef QT_NO_CLIPBOARD + void cut(); + void copy(); + void paste(QClipboard::Mode mode = QClipboard::Clipboard); +#endif + + void undo(); + void redo(); + + void clear(); + void selectAll(); + + void insertPlainText(const QString &text); +#ifndef QT_NO_TEXTHTMLPARSER + void insertHtml(const QString &text); +#endif + + void append(const QString &text); + void appendHtml(const QString &html); + void appendPlainText(const QString &text); + + void adjustSize(); + +Q_SIGNALS: + void textChanged(); + void undoAvailable(bool b); + void redoAvailable(bool b); + void currentCharFormatChanged(const QTextCharFormat &format); + void copyAvailable(bool b); + void selectionChanged(); + void cursorPositionChanged(); + + // control signals + void updateRequest(const QRectF &rect = QRectF()); + void documentSizeChanged(const QSizeF &); + void blockCountChanged(int newBlockCount); + void visibilityRequest(const QRectF &rect); + void microFocusChanged(); + void linkActivated(const QString &link); + void linkHovered(const QString &); + void modificationChanged(bool m); + +public: + // control properties + QPalette palette() const; + void setPalette(const QPalette &pal); + + virtual void processEvent(QEvent *e, const QMatrix &matrix, QWidget *contextWidget = 0); + void processEvent(QEvent *e, const QPointF &coordinateOffset = QPointF(), QWidget *contextWidget = 0); + + // control methods + void drawContents(QPainter *painter, const QRectF &rect = QRectF(), QWidget *widget = 0); + + void setFocus(bool focus, Qt::FocusReason = Qt::OtherFocusReason); + + virtual QVariant inputMethodQuery(Qt::InputMethodQuery property, QVariant argument) const; + + virtual QMimeData *createMimeDataFromSelection() const; + virtual bool canInsertFromMimeData(const QMimeData *source) const; + virtual void insertFromMimeData(const QMimeData *source); + + bool setFocusToAnchor(const QTextCursor &newCursor); + bool setFocusToNextOrPreviousAnchor(bool next); + bool findNextPrevAnchor(const QTextCursor& from, bool next, QTextCursor& newAnchor); + +protected: + virtual void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE; + + virtual bool event(QEvent *e) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QWidgetTextControl) + Q_PRIVATE_SLOT(d_func(), void _q_updateCurrentCharFormatAndSelection()) + Q_PRIVATE_SLOT(d_func(), void _q_emitCursorPosChanged(const QTextCursor &)) + Q_PRIVATE_SLOT(d_func(), void _q_deleteSelected()) + Q_PRIVATE_SLOT(d_func(), void _q_copyLink()) + Q_PRIVATE_SLOT(d_func(), void _q_updateBlock(const QTextBlock &)) + Q_PRIVATE_SLOT(d_func(), void _q_documentLayoutChanged()) + Q_PRIVATE_SLOT(d_func(), void _q_contentsChanged(int, int, int)) +}; + + +#ifndef QT_NO_CONTEXTMENU +class QUnicodeControlCharacterMenu : public QMenu +{ + Q_OBJECT +public: + QUnicodeControlCharacterMenu(QObject *editWidget, QWidget *parent); + +private Q_SLOTS: + void menuActionTriggered(); + +private: + QObject *editWidget; +}; +#endif // QT_NO_CONTEXTMENU + + +// also used by QLabel +class QTextEditMimeData : public QMimeData +{ +public: + inline QTextEditMimeData(const QTextDocumentFragment &aFragment) : fragment(aFragment) {} + + virtual QStringList formats() const Q_DECL_OVERRIDE; +protected: + virtual QVariant retrieveData(const QString &mimeType, QVariant::Type type) const Q_DECL_OVERRIDE; +private: + void setup() const; + + mutable QTextDocumentFragment fragment; +}; + +QT_END_NAMESPACE + +#endif // QWidgetTextControl_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgettextcontrol_p_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgettextcontrol_p_p.h new file mode 100644 index 000000000..232dab180 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgettextcontrol_p_p.h @@ -0,0 +1,245 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGETTEXTCONTROL_P_P_H +#define QWIDGETTEXTCONTROL_P_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include "QtGui/qtextdocumentfragment.h" +#include "QtGui/qtextcursor.h" +#include "QtGui/qtextformat.h" +#if QT_CONFIG(menu) +#include "QtWidgets/qmenu.h" +#endif +#include "QtGui/qabstracttextdocumentlayout.h" +#include "QtCore/qbasictimer.h" +#include "QtCore/qpointer.h" +#include "private/qobject_p.h" + +QT_REQUIRE_CONFIG(widgettextcontrol); + +QT_BEGIN_NAMESPACE + +class QMimeData; +class QAbstractScrollArea; + +class QWidgetTextControlPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QWidgetTextControl) +public: + QWidgetTextControlPrivate(); + + bool cursorMoveKeyEvent(QKeyEvent *e); + + void updateCurrentCharFormat(); + + void indent(); + void outdent(); + + void gotoNextTableCell(); + void gotoPreviousTableCell(); + + void createAutoBulletList(); + + void init(Qt::TextFormat format = Qt::RichText, const QString &text = QString(), + QTextDocument *document = 0); + void setContent(Qt::TextFormat format = Qt::RichText, const QString &text = QString(), + QTextDocument *document = 0); + void startDrag(); + + void paste(const QMimeData *source); + + void setCursorPosition(const QPointF &pos); + void setCursorPosition(int pos, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); + + void repaintCursor(); + inline void repaintSelection() + { repaintOldAndNewSelection(QTextCursor()); } + void repaintOldAndNewSelection(const QTextCursor &oldSelection); + + void selectionChanged(bool forceEmitSelectionChanged = false); + + void _q_updateCurrentCharFormatAndSelection(); + +#ifndef QT_NO_CLIPBOARD + void setClipboardSelection(); +#endif + + void _q_emitCursorPosChanged(const QTextCursor &someCursor); + void _q_contentsChanged(int from, int charsRemoved, int charsAdded); + + void setCursorVisible(bool visible); + void setBlinkingCursorEnabled(bool enable); + void updateCursorBlinking(); + + void extendWordwiseSelection(int suggestedNewPosition, qreal mouseXPosition); + void extendBlockwiseSelection(int suggestedNewPosition); + + void _q_deleteSelected(); + + void _q_setCursorAfterUndoRedo(int undoPosition, int charsAdded, int charsRemoved); + + QRectF cursorRectPlusUnicodeDirectionMarkers(const QTextCursor &cursor) const; + QRectF rectForPosition(int position) const; + QRectF selectionRect(const QTextCursor &cursor) const; + inline QRectF selectionRect() const + { return selectionRect(this->cursor); } + + QString anchorForCursor(const QTextCursor &anchor) const; + + void keyPressEvent(QKeyEvent *e); + void mousePressEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos, + Qt::KeyboardModifiers modifiers, + Qt::MouseButtons buttons, + const QPoint &globalPos); + void mouseMoveEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos, + Qt::KeyboardModifiers modifiers, + Qt::MouseButtons buttons, + const QPoint &globalPos); + void mouseReleaseEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos, + Qt::KeyboardModifiers modifiers, + Qt::MouseButtons buttons, + const QPoint &globalPos); + void mouseDoubleClickEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos, + Qt::KeyboardModifiers modifiers, + Qt::MouseButtons buttons, + const QPoint &globalPos); + bool sendMouseEventToInputContext(QEvent *e, QEvent::Type eventType, Qt::MouseButton button, + const QPointF &pos, + Qt::KeyboardModifiers modifiers, + Qt::MouseButtons buttons, + const QPoint &globalPos); + void contextMenuEvent(const QPoint &screenPos, const QPointF &docPos, QWidget *contextWidget); + void focusEvent(QFocusEvent *e); +#ifdef QT_KEYPAD_NAVIGATION + void editFocusEvent(QEvent *e); +#endif + bool dragEnterEvent(QEvent *e, const QMimeData *mimeData); + void dragLeaveEvent(); + bool dragMoveEvent(QEvent *e, const QMimeData *mimeData, const QPointF &pos); + bool dropEvent(const QMimeData *mimeData, const QPointF &pos, Qt::DropAction dropAction, QObject *source); + + void inputMethodEvent(QInputMethodEvent *); + + void activateLinkUnderCursor(QString href = QString()); + +#ifndef QT_NO_TOOLTIP + void showToolTip(const QPoint &globalPos, const QPointF &pos, QWidget *contextWidget); +#endif + + bool isPreediting() const; + void commitPreedit(); + + void append(const QString &text, Qt::TextFormat format = Qt::AutoText); + + QTextDocument *doc; + bool cursorOn; + bool cursorVisible; + QTextCursor cursor; + bool cursorIsFocusIndicator; + QTextCharFormat lastCharFormat; + + QTextCursor dndFeedbackCursor; + + Qt::TextInteractionFlags interactionFlags; + + QBasicTimer cursorBlinkTimer; + QBasicTimer trippleClickTimer; + QPointF trippleClickPoint; + + bool dragEnabled; + + bool mousePressed; + + bool mightStartDrag; + QPoint mousePressPos; + QPointer<QWidget> contextWidget; + + int lastSelectionPosition; + int lastSelectionAnchor; + + bool ignoreAutomaticScrollbarAdjustement; + + QTextCursor selectedWordOnDoubleClick; + QTextCursor selectedBlockOnTrippleClick; + + bool overwriteMode; + bool acceptRichText; + + int preeditCursor; + bool hideCursor; // used to hide the cursor in the preedit area + + QVector<QAbstractTextDocumentLayout::Selection> extraSelections; + + QPalette palette; + bool hasFocus; +#ifdef QT_KEYPAD_NAVIGATION + bool hasEditFocus; +#endif + bool isEnabled; + + QString highlightedAnchor; // Anchor below cursor + QString anchorOnMousePress; + bool hadSelectionOnMousePress; + + bool ignoreUnusedNavigationEvents; + bool openExternalLinks; + + bool wordSelectionEnabled; + + QString linkToCopy; + void _q_copyLink(); + void _q_updateBlock(const QTextBlock &); + void _q_documentLayoutChanged(); +}; + +QT_END_NAMESPACE + +#endif // QWidgetTextControl_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetwindow_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetwindow_p.h new file mode 100644 index 000000000..50a2cfd57 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwidgetwindow_p.h @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGETWINDOW_P_H +#define QWIDGETWINDOW_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtGui/qwindow.h> + +#include <QtCore/private/qobject_p.h> +#include <QtGui/private/qevent_p.h> +#include <QtWidgets/qwidget.h> + +QT_BEGIN_NAMESPACE + + +class QCloseEvent; +class QMoveEvent; + +class QWidgetWindow : public QWindow +{ + Q_OBJECT +public: + QWidgetWindow(QWidget *widget); + ~QWidgetWindow(); + + QWidget *widget() const { return m_widget; } +#ifndef QT_NO_ACCESSIBILITY + QAccessibleInterface *accessibleRoot() const Q_DECL_OVERRIDE; +#endif + + QObject *focusObject() const Q_DECL_OVERRIDE; +protected: + bool event(QEvent *) Q_DECL_OVERRIDE; + + void handleCloseEvent(QCloseEvent *); + void handleEnterLeaveEvent(QEvent *); + void handleFocusInEvent(QFocusEvent *); + void handleKeyEvent(QKeyEvent *); + void handleMouseEvent(QMouseEvent *); + void handleNonClientAreaMouseEvent(QMouseEvent *); + void handleTouchEvent(QTouchEvent *); + void handleMoveEvent(QMoveEvent *); + void handleResizeEvent(QResizeEvent *); +#if QT_CONFIG(wheelevent) + void handleWheelEvent(QWheelEvent *); +#endif +#ifndef QT_NO_DRAGANDDROP + void handleDragEnterMoveEvent(QDragMoveEvent *); + void handleDragLeaveEvent(QDragLeaveEvent *); + void handleDropEvent(QDropEvent *); +#endif + void handleExposeEvent(QExposeEvent *); + void handleWindowStateChangedEvent(QWindowStateChangeEvent *event); + bool nativeEvent(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE; +#if QT_CONFIG(tabletevent) + void handleTabletEvent(QTabletEvent *); +#endif +#ifndef QT_NO_GESTURES + void handleGestureEvent(QNativeGestureEvent *); +#endif +#ifndef QT_NO_CONTEXTMENU + void handleContextMenuEvent(QContextMenuEvent *); +#endif + +private slots: + void updateObjectName(); + void handleScreenChange(); + +private: + void repaintWindow(); + bool updateSize(); + bool updatePos(); + void updateMargins(); + void updateNormalGeometry(); + + enum FocusWidgets { + FirstFocusWidget, + LastFocusWidget + }; + QWidget *getFocusWidget(FocusWidgets fw); + + QPointer<QWidget> m_widget; + QPointer<QWidget> m_implicit_mouse_grabber; +#ifndef QT_NO_DRAGANDDROP + QPointer<QWidget> m_dragTarget; +#endif +}; + +QT_END_NAMESPACE + +#endif // QWIDGETWINDOW_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowcontainer_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowcontainer_p.h new file mode 100644 index 000000000..1d838c8dd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowcontainer_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWCONTAINER_H +#define QWINDOWCONTAINER_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtWidgets/qwidget.h> + +QT_BEGIN_NAMESPACE + +class QWindowContainerPrivate; + +class Q_WIDGETS_EXPORT QWindowContainer : public QWidget +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QWindowContainer) + +public: + explicit QWindowContainer(QWindow *embeddedWindow, QWidget *parent = 0, Qt::WindowFlags f = 0); + ~QWindowContainer(); + QWindow *containedWindow() const; + + static void toplevelAboutToBeDestroyed(QWidget *parent); + static void parentWasChanged(QWidget *parent); + static void parentWasMoved(QWidget *parent); + static void parentWasRaised(QWidget *parent); + static void parentWasLowered(QWidget *parent); + +protected: + bool event(QEvent *ev) Q_DECL_OVERRIDE; + +private slots: + void focusWindowChanged(QWindow *focusWindow); +}; + +QT_END_NAMESPACE + +#endif // QWINDOWCONTAINER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsstyle_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsstyle_p.h new file mode 100644 index 000000000..a1d65610f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsstyle_p.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSSTYLE_P_H +#define QWINDOWSSTYLE_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtWidgets/qcommonstyle.h> + +QT_BEGIN_NAMESPACE + + +#if QT_CONFIG(style_windows) + +class QWindowsStylePrivate; + +class QWindowsStyle : public QCommonStyle +{ + Q_OBJECT +public: + QWindowsStyle(); + ~QWindowsStyle(); + + void polish(QApplication*) Q_DECL_OVERRIDE; + void unpolish(QApplication*) Q_DECL_OVERRIDE; + + void polish(QWidget*) Q_DECL_OVERRIDE; + void unpolish(QWidget*) Q_DECL_OVERRIDE; + + void polish(QPalette &) Q_DECL_OVERRIDE; + + void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, + const QWidget *w = 0) const Q_DECL_OVERRIDE; + void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, + const QWidget *w = 0) const Q_DECL_OVERRIDE; + QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget = 0) const Q_DECL_OVERRIDE; + void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, + const QWidget *w = 0) const Q_DECL_OVERRIDE; + QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, + const QSize &contentsSize, const QWidget *widget = 0) const Q_DECL_OVERRIDE; + + int pixelMetric(PixelMetric pm, const QStyleOption *option = 0, const QWidget *widget = 0) const Q_DECL_OVERRIDE; + + int styleHint(StyleHint hint, const QStyleOption *opt = 0, const QWidget *widget = 0, + QStyleHintReturn *returnData = 0) const Q_DECL_OVERRIDE; + + QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, + const QWidget *widget = 0) const Q_DECL_OVERRIDE; + + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = 0, + const QWidget *widget = 0) const Q_DECL_OVERRIDE; + +protected: + bool eventFilter(QObject *o, QEvent *e) Q_DECL_OVERRIDE; + QWindowsStyle(QWindowsStylePrivate &dd); + +private: + Q_DISABLE_COPY(QWindowsStyle) + Q_DECLARE_PRIVATE(QWindowsStyle) +}; + +#endif // style_windows + +QT_END_NAMESPACE + +#endif // QWINDOWSSTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsstyle_p_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsstyle_p_p.h new file mode 100644 index 000000000..5023fd104 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsstyle_p_p.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSSTYLE_P_P_H +#define QWINDOWSSTYLE_P_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qwindowsstyle_p.h" +#include "qcommonstyle_p.h" + +#if QT_CONFIG(style_windows) +#include <qlist.h> + +QT_BEGIN_NAMESPACE + +class QTime; + +class QWindowsStylePrivate : public QCommonStylePrivate +{ + Q_DECLARE_PUBLIC(QWindowsStyle) +public: + enum { InvalidMetric = -23576 }; + + QWindowsStylePrivate(); + static int pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option = 0, const QWidget *widget = 0); + static int fixedPixelMetric(QStyle::PixelMetric pm); + static qreal devicePixelRatio(const QWidget *widget = 0) + { return widget ? widget->devicePixelRatioF() : QWindowsStylePrivate::appDevicePixelRatio(); } + static qreal nativeMetricScaleFactor(const QWidget *widget = Q_NULLPTR); + + bool hasSeenAlt(const QWidget *widget) const; + bool altDown() const { return alt_down; } + bool alt_down; + QList<const QWidget *> seenAlt; + int menuBarTimer; + + QColor inactiveCaptionText; + QColor activeCaptionColor; + QColor activeGradientCaptionColor; + QColor inactiveCaptionColor; + QColor inactiveGradientCaptionColor; + + enum { + windowsItemFrame = 2, // menu item frame width + windowsSepHeight = 9, // separator item height + windowsItemHMargin = 3, // menu item hor text margin + windowsItemVMargin = 2, // menu item ver text margin + windowsArrowHMargin = 6, // arrow horizontal margin + windowsRightBorder = 15, // right border on windows + windowsCheckMarkWidth = 12 // checkmarks width on windows + }; + +private: + static qreal appDevicePixelRatio(); +}; + +QT_END_NAMESPACE + +#endif // style_windows + +#endif //QWINDOWSSTYLE_P_P_H +; diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsvistastyle_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsvistastyle_p.h new file mode 100644 index 000000000..8fbd1dc38 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsvistastyle_p.h @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSVISTASTYLE_P_H +#define QWINDOWSVISTASTYLE_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <private/qwindowsxpstyle_p.h> + +QT_BEGIN_NAMESPACE + + +#if QT_CONFIG(style_windowsvista) + +class QWindowsVistaStylePrivate; +class QWindowsVistaStyle : public QWindowsXPStyle +{ + Q_OBJECT +public: + QWindowsVistaStyle(); + ~QWindowsVistaStyle(); + + void drawPrimitive(PrimitiveElement element, const QStyleOption *option, + QPainter *painter, const QWidget *widget = 0) const; + void drawControl(ControlElement element, const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, + QPainter *painter, const QWidget *widget) const; + QSize sizeFromContents(ContentsType type, const QStyleOption *option, + const QSize &size, const QWidget *widget) const; + + QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const; + QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, + SubControl sc, const QWidget *widget) const; + + SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, + const QPoint &pos, const QWidget *widget = 0) const; + + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = 0, + const QWidget *widget = 0) const; + QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, + const QWidget *widget = 0) const; + int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const; + int styleHint(StyleHint hint, const QStyleOption *opt = 0, const QWidget *widget = 0, + QStyleHintReturn *returnData = 0) const; + + void polish(QWidget *widget); + void unpolish(QWidget *widget); + void polish(QPalette &pal); + void polish(QApplication *app); + void unpolish(QApplication *app); + QPalette standardPalette() const; + +private: + Q_DISABLE_COPY(QWindowsVistaStyle) + Q_DECLARE_PRIVATE(QWindowsVistaStyle) + friend class QStyleFactory; +}; +#endif // style_windowsvista + +QT_END_NAMESPACE + +#endif // QWINDOWSVISTASTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsvistastyle_p_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsvistastyle_p_p.h new file mode 100644 index 000000000..6e22f97cf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsvistastyle_p_p.h @@ -0,0 +1,204 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSVISTASTYLE_P_P_H +#define QWINDOWSVISTASTYLE_P_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qwindowsvistastyle_p.h" + +#if QT_CONFIG(style_windowsvista) +#include <private/qwindowsxpstyle_p_p.h> +#include <private/qstyleanimation_p.h> +#include <private/qpaintengine_raster_p.h> +#include <qpaintengine.h> +#include <qwidget.h> +#include <qapplication.h> +#include <qpixmapcache.h> +#include <qstyleoption.h> +#if QT_CONFIG(pushbutton) +#include <qpushbutton.h> +#endif +#include <qradiobutton.h> +#if QT_CONFIG(lineedit) +#include <qlineedit.h> +#endif +#include <qgroupbox.h> +#if QT_CONFIG(toolbutton) +#include <qtoolbutton.h> +#endif +#if QT_CONFIG(spinbox) +#include <qspinbox.h> +#endif +#include <qtoolbar.h> +#if QT_CONFIG(combobox) +#include <qcombobox.h> +#endif +#if QT_CONFIG(scrollbar) +#include <qscrollbar.h> +#endif +#if QT_CONFIG(progressbar) +#include <qprogressbar.h> +#endif +#if QT_CONFIG(dockwidget) +#include <qdockwidget.h> +#endif +#if QT_CONFIG(listview) +#include <qlistview.h> +#endif +#if QT_CONFIG(treeview) +#include <qtreeview.h> +#endif +#include <qtextedit.h> +#include <qmessagebox.h> +#if QT_CONFIG(dialogbuttonbox) +#include <qdialogbuttonbox.h> +#endif +#include <qinputdialog.h> +#if QT_CONFIG(tableview) +#include <qtableview.h> +#endif +#include <qdatetime.h> +#include <qcommandlinkbutton.h> + +QT_BEGIN_NAMESPACE + +#if !defined(SCHEMA_VERIFY_VSSYM32) +#define TMT_ANIMATIONDURATION 5006 +#define TMT_TRANSITIONDURATIONS 6000 +#define EP_EDITBORDER_NOSCROLL 6 +#define EP_EDITBORDER_HVSCROLL 9 +#define EP_BACKGROUND 3 +#define EBS_NORMAL 1 +#define EBS_HOT 2 +#define EBS_DISABLED 3 +#define EBS_READONLY 5 +#define PBS_DEFAULTED_ANIMATING 6 +#define MBI_NORMAL 1 +#define MBI_HOT 2 +#define MBI_PUSHED 3 +#define MBI_DISABLED 4 +#define MB_ACTIVE 1 +#define MB_INACTIVE 2 +#define PP_FILL 5 +#define PP_FILLVERT 6 +#define PP_MOVEOVERLAY 8 +#define PP_MOVEOVERLAYVERT 10 +#define MENU_BARBACKGROUND 7 +#define MENU_BARITEM 8 +#define MENU_POPUPCHECK 11 +#define MENU_POPUPCHECKBACKGROUND 12 +#define MENU_POPUPGUTTER 13 +#define MENU_POPUPITEM 14 +#define MENU_POPUPBORDERS 10 +#define MENU_POPUPSEPARATOR 15 +#define MC_CHECKMARKNORMAL 1 +#define MC_CHECKMARKDISABLED 2 +#define MC_BULLETNORMAL 3 +#define MC_BULLETDISABLED 4 +#define ABS_UPHOVER 17 +#define ABS_DOWNHOVER 18 +#define ABS_LEFTHOVER 19 +#define ABS_RIGHTHOVER 20 +#define CP_DROPDOWNBUTTONRIGHT 6 +#define CP_DROPDOWNBUTTONLEFT 7 +#define SCRBS_HOVER 5 +#define TVP_HOTGLYPH 4 +#define SPI_GETCLIENTAREAANIMATION 0x1042 +#define TDLG_PRIMARYPANEL 1 +#define TDLG_SECONDARYPANEL 8 +#endif + +class QWindowsVistaAnimation : public QBlendStyleAnimation +{ + Q_OBJECT +public: + QWindowsVistaAnimation(Type type, QObject *target) : QBlendStyleAnimation(type, target) { } + + virtual bool isUpdateNeeded() const; + void paint(QPainter *painter, const QStyleOption *option); +}; + + +// Handles state transition animations +class QWindowsVistaTransition : public QWindowsVistaAnimation +{ + Q_OBJECT +public: + QWindowsVistaTransition(QObject *target) : QWindowsVistaAnimation(Transition, target) {} +}; + + +// Handles pulse animations (default buttons) +class QWindowsVistaPulse: public QWindowsVistaAnimation +{ + Q_OBJECT +public: + QWindowsVistaPulse(QObject *target) : QWindowsVistaAnimation(Pulse, target) {} +}; + + +class QWindowsVistaStylePrivate : public QWindowsXPStylePrivate +{ + Q_DECLARE_PUBLIC(QWindowsVistaStyle) + +public: + QWindowsVistaStylePrivate(); + + static int fixedPixelMetric(QStyle::PixelMetric pm); + static inline bool useVista(); + bool transitionsEnabled() const; +}; + +QT_END_NAMESPACE + +#endif // style_windowsvista + +#endif // QWINDOWSVISTASTYLE_P_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsxpstyle_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsxpstyle_p.h new file mode 100644 index 000000000..62e3af927 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsxpstyle_p.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSXPSTYLE_P_H +#define QWINDOWSXPSTYLE_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <private/qwindowsstyle_p.h> + +QT_BEGIN_NAMESPACE + + +#if QT_CONFIG(style_windowsxp) + +class QWindowsXPStylePrivate; +class QWindowsXPStyle : public QWindowsStyle +{ + Q_OBJECT +public: + QWindowsXPStyle(); + QWindowsXPStyle(QWindowsXPStylePrivate &dd); + ~QWindowsXPStyle(); + + void unpolish(QApplication*); + void polish(QApplication*); + void polish(QWidget*); + void polish(QPalette&); + void unpolish(QWidget*); + + void drawPrimitive(PrimitiveElement pe, const QStyleOption *option, QPainter *p, + const QWidget *widget = 0) const; + void drawControl(ControlElement element, const QStyleOption *option, QPainter *p, + const QWidget *wwidget = 0) const; + QRect subElementRect(SubElement r, const QStyleOption *option, const QWidget *widget = 0) const; + QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *option, SubControl sc, + const QWidget *widget = 0) const; + void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *option, QPainter *p, + const QWidget *widget = 0) const; + QSize sizeFromContents(ContentsType ct, const QStyleOption *option, const QSize &contentsSize, + const QWidget *widget = 0) const; + int pixelMetric(PixelMetric pm, const QStyleOption *option = 0, + const QWidget *widget = 0) const; + int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, + QStyleHintReturn *returnData = 0) const; + + QPalette standardPalette() const; + QPixmap standardPixmap(StandardPixmap standardIcon, const QStyleOption *option, + const QWidget *widget = 0) const; + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = 0, + const QWidget *widget = 0) const; + +private: + Q_DISABLE_COPY(QWindowsXPStyle) + Q_DECLARE_PRIVATE(QWindowsXPStyle) + friend class QStyleFactory; +}; + +#endif // style_windowsxp + +QT_END_NAMESPACE + +#endif // QWINDOWSXPSTYLE_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsxpstyle_p_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsxpstyle_p_p.h new file mode 100644 index 000000000..fb5210cb0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwindowsxpstyle_p_p.h @@ -0,0 +1,345 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSXPSTYLE_P_P_H +#define QWINDOWSXPSTYLE_P_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWidgets/private/qtwidgetsglobal_p.h> +#include "qwindowsxpstyle_p.h" +#include "qwindowsstyle_p_p.h" +#include <qmap.h> +#include <qt_windows.h> + +#include <uxtheme.h> +#include <vssym32.h> + +#include <limits.h> + +QT_BEGIN_NAMESPACE + +// TMT_TEXTSHADOWCOLOR is wrongly defined in mingw +#if TMT_TEXTSHADOWCOLOR != 3818 +#undef TMT_TEXTSHADOWCOLOR +#define TMT_TEXTSHADOWCOLOR 3818 +#endif +#ifndef TST_NONE +# define TST_NONE 0 +#endif + +// These defines are missing from the tmschema, but still exist as +// states for their parts +#ifndef MINBS_INACTIVE +#define MINBS_INACTIVE 5 +#endif +#ifndef MAXBS_INACTIVE +#define MAXBS_INACTIVE 5 +#endif +#ifndef RBS_INACTIVE +#define RBS_INACTIVE 5 +#endif +#ifndef HBS_INACTIVE +#define HBS_INACTIVE 5 +#endif +#ifndef CBS_INACTIVE +#define CBS_INACTIVE 5 +#endif + +// Uncomment define below to build debug assisting code, and output +// #define DEBUG_XP_STYLE + +#if QT_CONFIG(style_windowsxp) + +// Declarations ----------------------------------------------------------------------------------- +class XPThemeData +{ +public: + explicit XPThemeData(const QWidget *w = 0, QPainter *p = 0, int themeIn = -1, + int part = 0, int state = 0, const QRect &r = QRect()) + : widget(w), painter(p), theme(themeIn), htheme(0), partId(part), stateId(state), + mirrorHorizontally(false), mirrorVertically(false), noBorder(false), + noContent(false), rotate(0), rect(r) + {} + + HRGN mask(QWidget *widget); + HTHEME handle(); + + static RECT toRECT(const QRect &qr); + bool isValid(); + + QSizeF size(); + QMarginsF margins(const QRect &rect, int propId = TMT_CONTENTMARGINS); + QMarginsF margins(int propId = TMT_CONTENTMARGINS); + + static QSizeF themeSize(const QWidget *w = 0, QPainter *p = 0, int themeIn = -1, int part = 0, int state = 0); + static QMarginsF themeMargins(const QRect &rect, const QWidget *w = 0, QPainter *p = 0, int themeIn = -1, + int part = 0, int state = 0, int propId = TMT_CONTENTMARGINS); + static QMarginsF themeMargins(const QWidget *w = 0, QPainter *p = 0, int themeIn = -1, + int part = 0, int state = 0, int propId = TMT_CONTENTMARGINS); + + const QWidget *widget; + QPainter *painter; + + int theme; + HTHEME htheme; + int partId; + int stateId; + + uint mirrorHorizontally : 1; + uint mirrorVertically : 1; + uint noBorder : 1; + uint noContent : 1; + uint rotate; + QRect rect; +}; + +struct ThemeMapKey { + int theme; + int partId; + int stateId; + bool noBorder; + bool noContent; + + ThemeMapKey() : partId(-1), stateId(-1) {} + ThemeMapKey(const XPThemeData &data) + : theme(data.theme), partId(data.partId), stateId(data.stateId), + noBorder(data.noBorder), noContent(data.noContent) {} + +}; + +inline uint qHash(const ThemeMapKey &key) +{ return key.theme ^ key.partId ^ key.stateId; } + +inline bool operator==(const ThemeMapKey &k1, const ThemeMapKey &k2) +{ + return k1.theme == k2.theme + && k1.partId == k2.partId + && k1.stateId == k2.stateId; +} + +enum AlphaChannelType { + UnknownAlpha = -1, // Alpha of part & state not yet known + NoAlpha, // Totally opaque, no need to touch alpha (RGB) + MaskAlpha, // Alpha channel must be fixed (ARGB) + RealAlpha // Proper alpha values from Windows (ARGB_Premultiplied) +}; + +struct ThemeMapData { + AlphaChannelType alphaType; // Which type of alpha on part & state + + bool dataValid : 1; // Only used to detect if hash value is ok + bool partIsTransparent : 1; + bool hasAlphaChannel : 1; // True = part & state has real Alpha + bool wasAlphaSwapped : 1; // True = alpha channel needs to be swapped + bool hadInvalidAlpha : 1; // True = alpha channel contained invalid alpha values + + ThemeMapData() : dataValid(false), partIsTransparent(false), + hasAlphaChannel(false), wasAlphaSwapped(false), hadInvalidAlpha(false) {} +}; + +class QWindowsXPStylePrivate : public QWindowsStylePrivate +{ + Q_DECLARE_PUBLIC(QWindowsXPStyle) +public: + enum Theme { + ButtonTheme, + ComboboxTheme, + EditTheme, + HeaderTheme, + ListViewTheme, + MenuTheme, + ProgressTheme, + RebarTheme, + ScrollBarTheme, + SpinTheme, + TabTheme, + TaskDialogTheme, + ToolBarTheme, + ToolTipTheme, + TrackBarTheme, + XpTreeViewTheme, // '+'/'-' shape treeview indicators (XP) + WindowTheme, + StatusTheme, + VistaTreeViewTheme, // arrow shape treeview indicators (Vista) obtained from "explorer" theme. + NThemes + }; + + QWindowsXPStylePrivate() + : QWindowsStylePrivate(), hasInitColors(false), bufferDC(0), bufferBitmap(0), nullBitmap(0), + bufferPixels(0), bufferW(0), bufferH(0) + { init(); } + + ~QWindowsXPStylePrivate() + { cleanup(); } + + static int pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option = 0, const QWidget *widget = 0); + static int fixedPixelMetric(QStyle::PixelMetric pm, const QStyleOption *option = 0, const QWidget *widget = 0); + + static HWND winId(const QWidget *widget); + + void init(bool force = false); + void cleanup(bool force = false); + void cleanupHandleMap(); + const QPixmap *tabBody(QWidget *widget); + + HBITMAP buffer(int w = 0, int h = 0); + HDC bufferHDC() + { return bufferDC;} + + static bool useXP(bool update = false); + static QRect scrollBarGripperBounds(QStyle::State flags, const QWidget *widget, XPThemeData *theme); + + bool isTransparent(XPThemeData &themeData); + QRegion region(XPThemeData &themeData); + + void setTransparency(QWidget *widget, XPThemeData &themeData); + bool drawBackground(XPThemeData &themeData); + bool drawBackgroundThruNativeBuffer(XPThemeData &themeData, qreal aditionalDevicePixelRatio); + bool drawBackgroundDirectly(HDC dc, XPThemeData &themeData, qreal aditionalDevicePixelRatio); + + bool hasAlphaChannel(const QRect &rect); + bool fixAlphaChannel(const QRect &rect); + bool swapAlphaChannel(const QRect &rect, bool allPixels = false); + + QRgb groupBoxTextColor; + QRgb groupBoxTextColorDisabled; + QRgb sliderTickColor; + bool hasInitColors; + + static HTHEME createTheme(int theme, HWND hwnd); + static QString themeName(int theme); + static inline bool hasTheme(int theme) { return theme >= 0 && theme < NThemes && m_themes[theme]; } + static bool isItemViewDelegateLineEdit(const QWidget *widget); + static bool isLineEditBaseColorSet(const QStyleOption *option, const QWidget *widget); + + QIcon dockFloat, dockClose; + +private: +#ifdef DEBUG_XP_STYLE + void dumpNativeDIB(int w, int h); + void showProperties(XPThemeData &themeData); +#endif + + static bool initVistaTreeViewTheming(); + static void cleanupVistaTreeViewTheming(); + + static QBasicAtomicInt ref; + static bool use_xp; + static QPixmap *tabbody; + + QHash<ThemeMapKey, ThemeMapData> alphaCache; + HDC bufferDC; + HBITMAP bufferBitmap; + HBITMAP nullBitmap; + uchar *bufferPixels; + int bufferW, bufferH; + + static HWND m_vistaTreeViewHelper; + static HTHEME m_themes[NThemes]; +}; + +inline QSizeF XPThemeData::size() +{ + QSizeF result(0, 0); + if (isValid()) { + SIZE size; + if (SUCCEEDED(GetThemePartSize(handle(), 0, partId, stateId, 0, TS_TRUE, &size))) + result = QSize(size.cx, size.cy); + } + return result; +} + +inline QMarginsF XPThemeData::margins(const QRect &qRect, int propId) +{ + QMarginsF result(0, 0, 0 ,0); + if (isValid()) { + MARGINS margins; + RECT rect = XPThemeData::toRECT(qRect); + if (SUCCEEDED(GetThemeMargins(handle(), 0, partId, stateId, propId, &rect, &margins))) + result = QMargins(margins.cxLeftWidth, margins.cyTopHeight, margins.cxRightWidth, margins.cyBottomHeight); + } + return result; +} + +inline QMarginsF XPThemeData::margins(int propId) +{ + QMarginsF result(0, 0, 0 ,0); + if (isValid()) { + MARGINS margins; + if (SUCCEEDED(GetThemeMargins(handle(), 0, partId, stateId, propId, NULL, &margins))) + result = QMargins(margins.cxLeftWidth, margins.cyTopHeight, margins.cxRightWidth, margins.cyBottomHeight); + } + return result; +} + +inline QSizeF XPThemeData::themeSize(const QWidget *w, QPainter *p, int themeIn, int part, int state) +{ + XPThemeData theme(w, p, themeIn, part, state); + return theme.size(); +} + +inline QMarginsF XPThemeData::themeMargins(const QRect &rect, const QWidget *w, QPainter *p, int themeIn, + int part, int state, int propId) +{ + XPThemeData theme(w, p, themeIn, part, state); + return theme.margins(rect, propId); +} + +inline QMarginsF XPThemeData::themeMargins(const QWidget *w, QPainter *p, int themeIn, + int part, int state, int propId) +{ + XPThemeData theme(w, p, themeIn, part, state); + return theme.margins(propId); +} + +#endif // style_windows + +QT_END_NAMESPACE + +#endif //QWINDOWSXPSTYLE_P_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwizard_win_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwizard_win_p.h new file mode 100644 index 000000000..f9122865c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/qwizard_win_p.h @@ -0,0 +1,161 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIZARD_WIN_P_H +#define QWIZARD_WIN_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 <QtWidgets/private/qtwidgetsglobal_p.h> + +#if QT_CONFIG(style_windowsvista) + +#include <qobject.h> +#include <qwidget.h> +#include <qabstractbutton.h> +#include <QtWidgets/private/qwidget_p.h> +#include <QtWidgets/private/qstylehelper_p.h> +#include <qt_windows.h> + +QT_REQUIRE_CONFIG(wizard); + +QT_BEGIN_NAMESPACE + +class QVistaBackButton : public QAbstractButton +{ +public: + QVistaBackButton(QWidget *widget); + + QSize sizeHint() const; + inline QSize minimumSizeHint() const + { return sizeHint(); } + + void enterEvent(QEvent *event); + void leaveEvent(QEvent *event); + void paintEvent(QPaintEvent *event); +}; + +class QWizard; + +class QVistaHelper : public QObject +{ +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); + bool handleWinEvent(MSG *message, long *result); + void resizeEvent(QResizeEvent *event); + void paintEvent(QPaintEvent *event); + QVistaBackButton *backButton() const { return backButton_; } + void disconnectBackButton(); + void hideBackButton() { if (backButton_) backButton_->hide(); } + QColor basicWindowFrameColor(); + enum VistaState { VistaAero, VistaBasic, Classic, Dirty }; + static VistaState vistaState(); + static int titleBarSize() { return QVistaHelper::titleBarSizeDp() / QVistaHelper::m_devicePixelRatio; } + static int titleBarSizeDp() { return QVistaHelper::frameSizeDp() + QVistaHelper::captionSizeDp(); } + static int topPadding() { // padding under text + return int(QStyleHelper::dpiScaled( + QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS7 ? 4 : 6)); + } + static int topOffset(); + + static HDC backingStoreDC(const QWidget *wizard, QPoint *offset); + +private: + HWND wizardHWND() const; + bool drawTitleText(QPainter *painter, const QString &text, const QRect &rect, HDC hdc); + static bool drawBlackRect(const QRect &rect, HDC hdc); + + static int frameSize() { return QVistaHelper::frameSizeDp() / QVistaHelper::m_devicePixelRatio; } + static int frameSizeDp(); + static int captionSize() { return QVistaHelper::captionSizeDp() / QVistaHelper::m_devicePixelRatio; } + static int captionSizeDp(); + + static int backButtonSize() { return int(QStyleHelper::dpiScaled(30)); } + static int iconSize(); + static int glowSize(); + int leftMargin() { return backButton_->isVisible() ? backButtonSize() + iconSpacing : 0; } + + int titleOffset(); + void drawTitleBar(QPainter *painter); + void setMouseCursor(QPoint pos); + void collapseTopFrameStrut(); + bool winEvent(MSG *message, long *result); + void mouseMoveEvent(QMouseEvent *event); + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + bool eventFilter(QObject *obj, QEvent *event); + + static int instanceCount; + static VistaState cachedVistaState; + static bool isCompositionEnabled(); + static bool isThemeActive(); + enum Changes { resizeTop, movePosition, noChange } change; + QPoint pressedPos; + bool pressed; + QRect rtTop; + QRect rtTitle; + QWizard *wizard; + QVistaBackButton *backButton_; + + int titleBarOffset; // Extra spacing above the text + int iconSpacing; // Space between button and icon + int textSpacing; // Space between icon and text + static int m_devicePixelRatio; +}; + + +QT_END_NAMESPACE + +#endif // style_windowsvista +#endif // QWIZARD_WIN_P_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/rangecontrols_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/rangecontrols_p.h new file mode 100644 index 000000000..8af86681a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/rangecontrols_p.h @@ -0,0 +1,206 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef RANGECONTROLS_H +#define RANGECONTROLS_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtWidgets/qaccessiblewidget.h> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_ACCESSIBILITY + +class QAbstractSpinBox; +class QAbstractSlider; +class QScrollBar; +class QSlider; +class QSpinBox; +class QDoubleSpinBox; +class QDial; +class QAccessibleLineEdit; + +#if QT_CONFIG(spinbox) +class QAccessibleAbstractSpinBox: + public QAccessibleWidget, + public QAccessibleValueInterface, + public QAccessibleTextInterface, + public QAccessibleEditableTextInterface +{ +public: + explicit QAccessibleAbstractSpinBox(QWidget *w); + virtual ~QAccessibleAbstractSpinBox(); + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + + // QAccessibleValueInterface + QVariant currentValue() const Q_DECL_OVERRIDE; + void setCurrentValue(const QVariant &value) Q_DECL_OVERRIDE; + QVariant maximumValue() const Q_DECL_OVERRIDE; + QVariant minimumValue() const Q_DECL_OVERRIDE; + QVariant minimumStepSize() const Q_DECL_OVERRIDE; + + // QAccessibleTextInterface + void addSelection(int startOffset, int endOffset) Q_DECL_OVERRIDE; + QString attributes(int offset, int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + int cursorPosition() const Q_DECL_OVERRIDE; + QRect characterRect(int offset) const Q_DECL_OVERRIDE; + int selectionCount() const Q_DECL_OVERRIDE; + int offsetAtPoint(const QPoint &point) const Q_DECL_OVERRIDE; + void selection(int selectionIndex, int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + QString text(int startOffset, int endOffset) const Q_DECL_OVERRIDE; + QString textBeforeOffset (int offset, QAccessible::TextBoundaryType boundaryType, + int *endOffset, int *startOffset) const Q_DECL_OVERRIDE; + QString textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + QString textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + void removeSelection(int selectionIndex) Q_DECL_OVERRIDE; + void setCursorPosition(int position) Q_DECL_OVERRIDE; + void setSelection(int selectionIndex, int startOffset, int endOffset) Q_DECL_OVERRIDE; + int characterCount() const Q_DECL_OVERRIDE; + void scrollToSubstring(int startIndex, int endIndex) Q_DECL_OVERRIDE; + + // QAccessibleEditableTextInterface + void deleteText(int startOffset, int endOffset) Q_DECL_OVERRIDE; + void insertText(int offset, const QString &text) Q_DECL_OVERRIDE; + void replaceText(int startOffset, int endOffset, const QString &text) Q_DECL_OVERRIDE; + +protected: + QAbstractSpinBox *abstractSpinBox() const; + QAccessibleInterface *lineEditIface() const; +private: + mutable QAccessibleLineEdit *lineEdit; +}; + +class QAccessibleSpinBox : public QAccessibleAbstractSpinBox +{ +public: + explicit QAccessibleSpinBox(QWidget *w); + +protected: + QSpinBox *spinBox() const; +}; + +class QAccessibleDoubleSpinBox : public QAccessibleAbstractSpinBox +{ +public: + explicit QAccessibleDoubleSpinBox(QWidget *widget); + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + + using QAccessibleAbstractSpinBox::text; +protected: + QDoubleSpinBox *doubleSpinBox() const; +}; +#endif // QT_CONFIG(spinbox) + +#if QT_CONFIG(slider) +class QAccessibleAbstractSlider: public QAccessibleWidget, public QAccessibleValueInterface +{ +public: + explicit QAccessibleAbstractSlider(QWidget *w, QAccessible::Role r = QAccessible::Slider); + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + + // QAccessibleValueInterface + QVariant currentValue() const Q_DECL_OVERRIDE; + void setCurrentValue(const QVariant &value) Q_DECL_OVERRIDE; + QVariant maximumValue() const Q_DECL_OVERRIDE; + QVariant minimumValue() const Q_DECL_OVERRIDE; + QVariant minimumStepSize() const Q_DECL_OVERRIDE; + +protected: + QAbstractSlider *abstractSlider() const; +}; +#endif // QT_CONFIG(slider) + +#if QT_CONFIG(scrollbar) +class QAccessibleScrollBar : public QAccessibleAbstractSlider +{ +public: + explicit QAccessibleScrollBar(QWidget *w); + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + +protected: + QScrollBar *scrollBar() const; +}; +#endif // QT_CONFIG(scrollbar) + +#if QT_CONFIG(slider) +class QAccessibleSlider : public QAccessibleAbstractSlider +{ +public: + explicit QAccessibleSlider(QWidget *w); + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + +protected: + QSlider *slider() const; +}; +#endif // QT_CONFIG(slider) + +#if QT_CONFIG(dial) +class QAccessibleDial : public QAccessibleAbstractSlider +{ +public: + explicit QAccessibleDial(QWidget *w); + + QString text(QAccessible::Text textType) const Q_DECL_OVERRIDE; + +protected: + QDial *dial() const; +}; +#endif // QT_CONFIG(dial) + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif // RANGECONTROLS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/simplewidgets_p.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/simplewidgets_p.h new file mode 100644 index 000000000..902b403d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/5.9.4/QtWidgets/private/simplewidgets_p.h @@ -0,0 +1,229 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef SIMPLEWIDGETS_H +#define SIMPLEWIDGETS_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 <QtWidgets/private/qtwidgetsglobal_p.h> +#include <QtCore/qcoreapplication.h> +#include <QtWidgets/qaccessiblewidget.h> + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_ACCESSIBILITY + +class QAbstractButton; +class QLineEdit; +class QToolButton; +class QGroupBox; +class QProgressBar; + +#if QT_CONFIG(abstractbutton) +class QAccessibleButton : public QAccessibleWidget +{ + Q_DECLARE_TR_FUNCTIONS(QAccessibleButton) +public: + QAccessibleButton(QWidget *w); + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + QRect rect() const Q_DECL_OVERRIDE; + QAccessible::Role role() const Q_DECL_OVERRIDE; + + QStringList actionNames() const Q_DECL_OVERRIDE; + void doAction(const QString &actionName) Q_DECL_OVERRIDE; + QStringList keyBindingsForAction(const QString &actionName) const Q_DECL_OVERRIDE; + +protected: + QAbstractButton *button() const; +}; +#endif + +#if QT_CONFIG(toolbutton) +class QAccessibleToolButton : public QAccessibleButton +{ +public: + QAccessibleToolButton(QWidget *w); + + QAccessible::State state() const Q_DECL_OVERRIDE; + QAccessible::Role role() const Q_DECL_OVERRIDE; + + int childCount() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + + // QAccessibleActionInterface + QStringList actionNames() const Q_DECL_OVERRIDE; + void doAction(const QString &actionName) Q_DECL_OVERRIDE; + +protected: + QToolButton *toolButton() const; + + bool isSplitButton() const; +}; +#endif // QT_CONFIG(toolbutton) + +class QAccessibleDisplay : public QAccessibleWidget, public QAccessibleImageInterface +{ +public: + explicit QAccessibleDisplay(QWidget *w, QAccessible::Role role = QAccessible::StaticText); + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + QAccessible::Role role() const Q_DECL_OVERRIDE; + + QVector<QPair<QAccessibleInterface*, QAccessible::Relation> >relations(QAccessible::Relation match = QAccessible::AllRelations) const Q_DECL_OVERRIDE; + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + + // QAccessibleImageInterface + QString imageDescription() const Q_DECL_OVERRIDE; + QSize imageSize() const Q_DECL_OVERRIDE; + QPoint imagePosition() const Q_DECL_OVERRIDE; +}; + +#if QT_CONFIG(groupbox) +class QAccessibleGroupBox : public QAccessibleWidget +{ +public: + explicit QAccessibleGroupBox(QWidget *w); + + QAccessible::State state() const Q_DECL_OVERRIDE; + QAccessible::Role role() const Q_DECL_OVERRIDE; + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + + QVector<QPair<QAccessibleInterface*, QAccessible::Relation> >relations(QAccessible::Relation match = QAccessible::AllRelations) const Q_DECL_OVERRIDE; + + //QAccessibleActionInterface + QStringList actionNames() const Q_DECL_OVERRIDE; + void doAction(const QString &actionName) Q_DECL_OVERRIDE; + QStringList keyBindingsForAction(const QString &) const Q_DECL_OVERRIDE; + +private: + QGroupBox *groupBox() const; +}; +#endif + +#if QT_CONFIG(lineedit) +class QAccessibleLineEdit : public QAccessibleWidget, public QAccessibleTextInterface, public QAccessibleEditableTextInterface +{ +public: + explicit QAccessibleLineEdit(QWidget *o, const QString &name = QString()); + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + void setText(QAccessible::Text t, const QString &text) Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + + // QAccessibleTextInterface + void addSelection(int startOffset, int endOffset) Q_DECL_OVERRIDE; + QString attributes(int offset, int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + int cursorPosition() const Q_DECL_OVERRIDE; + QRect characterRect(int offset) const Q_DECL_OVERRIDE; + int selectionCount() const Q_DECL_OVERRIDE; + int offsetAtPoint(const QPoint &point) const Q_DECL_OVERRIDE; + void selection(int selectionIndex, int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + QString text(int startOffset, int endOffset) const Q_DECL_OVERRIDE; + QString textBeforeOffset (int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + QString textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + QString textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, + int *startOffset, int *endOffset) const Q_DECL_OVERRIDE; + void removeSelection(int selectionIndex) Q_DECL_OVERRIDE; + void setCursorPosition(int position) Q_DECL_OVERRIDE; + void setSelection(int selectionIndex, int startOffset, int endOffset) Q_DECL_OVERRIDE; + int characterCount() const Q_DECL_OVERRIDE; + void scrollToSubstring(int startIndex, int endIndex) Q_DECL_OVERRIDE; + + // QAccessibleEditableTextInterface + void deleteText(int startOffset, int endOffset) Q_DECL_OVERRIDE; + void insertText(int offset, const QString &text) Q_DECL_OVERRIDE; + void replaceText(int startOffset, int endOffset, const QString &text) Q_DECL_OVERRIDE; +protected: + QLineEdit *lineEdit() const; + friend class QAccessibleAbstractSpinBox; +}; +#endif // QT_CONFIG(lineedit) + +#if QT_CONFIG(progressbar) +class QAccessibleProgressBar : public QAccessibleDisplay, public QAccessibleValueInterface +{ +public: + explicit QAccessibleProgressBar(QWidget *o); + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + + // QAccessibleValueInterface + QVariant currentValue() const Q_DECL_OVERRIDE; + QVariant maximumValue() const Q_DECL_OVERRIDE; + QVariant minimumValue() const Q_DECL_OVERRIDE; + QVariant minimumStepSize() const Q_DECL_OVERRIDE; + void setCurrentValue(const QVariant &) Q_DECL_OVERRIDE {} + +protected: + QProgressBar *progressBar() const; +}; +#endif + +class QWindowContainer; +class QAccessibleWindowContainer : public QAccessibleWidget +{ +public: + QAccessibleWindowContainer(QWidget *w); + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int i) const Q_DECL_OVERRIDE; + +private: + QWindowContainer *container() const; +}; + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif // SIMPLEWIDGETS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractButton b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractButton new file mode 100644 index 000000000..8dc66839e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractButton @@ -0,0 +1 @@ +#include "qabstractbutton.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractGraphicsShapeItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractGraphicsShapeItem new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractGraphicsShapeItem @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractItemDelegate b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractItemDelegate new file mode 100644 index 000000000..cb6f86109 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractItemDelegate @@ -0,0 +1 @@ +#include "qabstractitemdelegate.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractItemView b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractItemView new file mode 100644 index 000000000..7260f2ab5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractItemView @@ -0,0 +1 @@ +#include "qabstractitemview.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractScrollArea b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractScrollArea new file mode 100644 index 000000000..e85367229 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractScrollArea @@ -0,0 +1 @@ +#include "qabstractscrollarea.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractSlider b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractSlider new file mode 100644 index 000000000..f8b3dcf66 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractSlider @@ -0,0 +1 @@ +#include "qabstractslider.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractSpinBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractSpinBox new file mode 100644 index 000000000..4c3cb7cc3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAbstractSpinBox @@ -0,0 +1 @@ +#include "qabstractspinbox.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QAccessibleWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAccessibleWidget new file mode 100644 index 000000000..4489fcad7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAccessibleWidget @@ -0,0 +1 @@ +#include "qaccessiblewidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QAction b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAction new file mode 100644 index 000000000..43a5a8e9e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QAction @@ -0,0 +1 @@ +#include "qaction.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QActionGroup b/qrenderdoc/3rdparty/qt/include/QtWidgets/QActionGroup new file mode 100644 index 000000000..0da664bf8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QActionGroup @@ -0,0 +1 @@ +#include "qactiongroup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QApplication b/qrenderdoc/3rdparty/qt/include/QtWidgets/QApplication new file mode 100644 index 000000000..8be2bfe15 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QApplication @@ -0,0 +1 @@ +#include "qapplication.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QBoxLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QBoxLayout new file mode 100644 index 000000000..27dabc8a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QBoxLayout @@ -0,0 +1 @@ +#include "qboxlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QButtonGroup b/qrenderdoc/3rdparty/qt/include/QtWidgets/QButtonGroup new file mode 100644 index 000000000..d63df248a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QButtonGroup @@ -0,0 +1 @@ +#include "qbuttongroup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QCalendarWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QCalendarWidget new file mode 100644 index 000000000..05ed5a235 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QCalendarWidget @@ -0,0 +1 @@ +#include "qcalendarwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QCheckBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QCheckBox new file mode 100644 index 000000000..436275271 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QCheckBox @@ -0,0 +1 @@ +#include "qcheckbox.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QColorDialog b/qrenderdoc/3rdparty/qt/include/QtWidgets/QColorDialog new file mode 100644 index 000000000..474216196 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QColorDialog @@ -0,0 +1 @@ +#include "qcolordialog.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QColormap b/qrenderdoc/3rdparty/qt/include/QtWidgets/QColormap new file mode 100644 index 000000000..662a758dd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QColormap @@ -0,0 +1 @@ +#include "qcolormap.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QColumnView b/qrenderdoc/3rdparty/qt/include/QtWidgets/QColumnView new file mode 100644 index 000000000..1414c655a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QColumnView @@ -0,0 +1 @@ +#include "qcolumnview.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QComboBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QComboBox new file mode 100644 index 000000000..8a70d0721 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QComboBox @@ -0,0 +1 @@ +#include "qcombobox.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QCommandLinkButton b/qrenderdoc/3rdparty/qt/include/QtWidgets/QCommandLinkButton new file mode 100644 index 000000000..9e345343e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QCommandLinkButton @@ -0,0 +1 @@ +#include "qcommandlinkbutton.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QCommonStyle b/qrenderdoc/3rdparty/qt/include/QtWidgets/QCommonStyle new file mode 100644 index 000000000..c621a1d56 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QCommonStyle @@ -0,0 +1 @@ +#include "qcommonstyle.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QCompleter b/qrenderdoc/3rdparty/qt/include/QtWidgets/QCompleter new file mode 100644 index 000000000..d9bcd5549 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QCompleter @@ -0,0 +1 @@ +#include "qcompleter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QDataWidgetMapper b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDataWidgetMapper new file mode 100644 index 000000000..21609b66e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDataWidgetMapper @@ -0,0 +1 @@ +#include "qdatawidgetmapper.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QDateEdit b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDateEdit new file mode 100644 index 000000000..ca7a94383 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDateEdit @@ -0,0 +1 @@ +#include "qdatetimeedit.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QDateTimeEdit b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDateTimeEdit new file mode 100644 index 000000000..ca7a94383 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDateTimeEdit @@ -0,0 +1 @@ +#include "qdatetimeedit.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QDesktopWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDesktopWidget new file mode 100644 index 000000000..eaf03e024 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDesktopWidget @@ -0,0 +1 @@ +#include "qdesktopwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QDial b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDial new file mode 100644 index 000000000..d58e21f09 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDial @@ -0,0 +1 @@ +#include "qdial.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QDialog b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDialog new file mode 100644 index 000000000..2f6cce8f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDialog @@ -0,0 +1 @@ +#include "qdialog.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QDialogButtonBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDialogButtonBox new file mode 100644 index 000000000..1553e92f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDialogButtonBox @@ -0,0 +1 @@ +#include "qdialogbuttonbox.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QDirModel b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDirModel new file mode 100644 index 000000000..1096eae83 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDirModel @@ -0,0 +1 @@ +#include "qdirmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QDockWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDockWidget new file mode 100644 index 000000000..8e748e55e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDockWidget @@ -0,0 +1 @@ +#include "qdockwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QDoubleSpinBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDoubleSpinBox new file mode 100644 index 000000000..cd37ea441 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QDoubleSpinBox @@ -0,0 +1 @@ +#include "qspinbox.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QErrorMessage b/qrenderdoc/3rdparty/qt/include/QtWidgets/QErrorMessage new file mode 100644 index 000000000..4e2121b54 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QErrorMessage @@ -0,0 +1 @@ +#include "qerrormessage.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QFileDialog b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFileDialog new file mode 100644 index 000000000..b6717d4e0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFileDialog @@ -0,0 +1 @@ +#include "qfiledialog.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QFileIconProvider b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFileIconProvider new file mode 100644 index 000000000..dda2c33de --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFileIconProvider @@ -0,0 +1 @@ +#include "qfileiconprovider.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QFileSystemModel b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFileSystemModel new file mode 100644 index 000000000..7d8bab917 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFileSystemModel @@ -0,0 +1 @@ +#include "qfilesystemmodel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QFocusFrame b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFocusFrame new file mode 100644 index 000000000..69ad6828c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFocusFrame @@ -0,0 +1 @@ +#include "qfocusframe.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QFontComboBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFontComboBox new file mode 100644 index 000000000..5db1adc7c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFontComboBox @@ -0,0 +1 @@ +#include "qfontcombobox.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QFontDialog b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFontDialog new file mode 100644 index 000000000..9fbce168b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFontDialog @@ -0,0 +1 @@ +#include "qfontdialog.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QFormLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFormLayout new file mode 100644 index 000000000..ff966d3f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFormLayout @@ -0,0 +1 @@ +#include "qformlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QFrame b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFrame new file mode 100644 index 000000000..4d03d7824 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QFrame @@ -0,0 +1 @@ +#include "qframe.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGesture b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGesture new file mode 100644 index 000000000..df1143c9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGesture @@ -0,0 +1 @@ +#include "qgesture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGestureEvent b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGestureEvent new file mode 100644 index 000000000..df1143c9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGestureEvent @@ -0,0 +1 @@ +#include "qgesture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGestureRecognizer b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGestureRecognizer new file mode 100644 index 000000000..549561de2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGestureRecognizer @@ -0,0 +1 @@ +#include "qgesturerecognizer.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsAnchor b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsAnchor new file mode 100644 index 000000000..a69f294f4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsAnchor @@ -0,0 +1 @@ +#include "qgraphicsanchorlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsAnchorLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsAnchorLayout new file mode 100644 index 000000000..a69f294f4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsAnchorLayout @@ -0,0 +1 @@ +#include "qgraphicsanchorlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsBlurEffect b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsBlurEffect new file mode 100644 index 000000000..6fcfca416 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsBlurEffect @@ -0,0 +1 @@ +#include "qgraphicseffect.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsColorizeEffect b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsColorizeEffect new file mode 100644 index 000000000..6fcfca416 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsColorizeEffect @@ -0,0 +1 @@ +#include "qgraphicseffect.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsDropShadowEffect b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsDropShadowEffect new file mode 100644 index 000000000..6fcfca416 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsDropShadowEffect @@ -0,0 +1 @@ +#include "qgraphicseffect.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsEffect b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsEffect new file mode 100644 index 000000000..6fcfca416 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsEffect @@ -0,0 +1 @@ +#include "qgraphicseffect.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsEllipseItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsEllipseItem new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsEllipseItem @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsGridLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsGridLayout new file mode 100644 index 000000000..29bf45e62 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsGridLayout @@ -0,0 +1 @@ +#include "qgraphicsgridlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsItem new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsItem @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsItemAnimation b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsItemAnimation new file mode 100644 index 000000000..8bee4dacd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsItemAnimation @@ -0,0 +1 @@ +#include "qgraphicsitemanimation.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsItemGroup b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsItemGroup new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsItemGroup @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLayout new file mode 100644 index 000000000..4bed633e0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLayout @@ -0,0 +1 @@ +#include "qgraphicslayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLayoutItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLayoutItem new file mode 100644 index 000000000..6b64084ac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLayoutItem @@ -0,0 +1 @@ +#include "qgraphicslayoutitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLineItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLineItem new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLineItem @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLinearLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLinearLayout new file mode 100644 index 000000000..3fa65c0db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsLinearLayout @@ -0,0 +1 @@ +#include "qgraphicslinearlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsObject b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsObject new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsObject @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsOpacityEffect b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsOpacityEffect new file mode 100644 index 000000000..6fcfca416 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsOpacityEffect @@ -0,0 +1 @@ +#include "qgraphicseffect.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsPathItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsPathItem new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsPathItem @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsPixmapItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsPixmapItem new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsPixmapItem @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsPolygonItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsPolygonItem new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsPolygonItem @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsProxyWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsProxyWidget new file mode 100644 index 000000000..eba15057c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsProxyWidget @@ -0,0 +1 @@ +#include "qgraphicsproxywidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsRectItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsRectItem new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsRectItem @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsRotation b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsRotation new file mode 100644 index 000000000..ccf35e232 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsRotation @@ -0,0 +1 @@ +#include "qgraphicstransform.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsScale b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsScale new file mode 100644 index 000000000..ccf35e232 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsScale @@ -0,0 +1 @@ +#include "qgraphicstransform.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsScene b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsScene new file mode 100644 index 000000000..d74e9ed50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsScene @@ -0,0 +1 @@ +#include "qgraphicsscene.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneContextMenuEvent b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneContextMenuEvent new file mode 100644 index 000000000..589ca909a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneContextMenuEvent @@ -0,0 +1 @@ +#include "qgraphicssceneevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneDragDropEvent b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneDragDropEvent new file mode 100644 index 000000000..589ca909a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneDragDropEvent @@ -0,0 +1 @@ +#include "qgraphicssceneevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneEvent b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneEvent new file mode 100644 index 000000000..589ca909a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneEvent @@ -0,0 +1 @@ +#include "qgraphicssceneevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneHelpEvent b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneHelpEvent new file mode 100644 index 000000000..589ca909a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneHelpEvent @@ -0,0 +1 @@ +#include "qgraphicssceneevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneHoverEvent b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneHoverEvent new file mode 100644 index 000000000..589ca909a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneHoverEvent @@ -0,0 +1 @@ +#include "qgraphicssceneevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneMouseEvent b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneMouseEvent new file mode 100644 index 000000000..589ca909a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneMouseEvent @@ -0,0 +1 @@ +#include "qgraphicssceneevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneMoveEvent b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneMoveEvent new file mode 100644 index 000000000..589ca909a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneMoveEvent @@ -0,0 +1 @@ +#include "qgraphicssceneevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneResizeEvent b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneResizeEvent new file mode 100644 index 000000000..589ca909a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneResizeEvent @@ -0,0 +1 @@ +#include "qgraphicssceneevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneWheelEvent b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneWheelEvent new file mode 100644 index 000000000..589ca909a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSceneWheelEvent @@ -0,0 +1 @@ +#include "qgraphicssceneevent.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSimpleTextItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSimpleTextItem new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsSimpleTextItem @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsTextItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsTextItem new file mode 100644 index 000000000..ae70646e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsTextItem @@ -0,0 +1 @@ +#include "qgraphicsitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsTransform b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsTransform new file mode 100644 index 000000000..ccf35e232 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsTransform @@ -0,0 +1 @@ +#include "qgraphicstransform.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsView b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsView new file mode 100644 index 000000000..59092fe78 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsView @@ -0,0 +1 @@ +#include "qgraphicsview.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsWidget new file mode 100644 index 000000000..880613fa4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGraphicsWidget @@ -0,0 +1 @@ +#include "qgraphicswidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGridLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGridLayout new file mode 100644 index 000000000..162ac8dd6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGridLayout @@ -0,0 +1 @@ +#include "qgridlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QGroupBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGroupBox new file mode 100644 index 000000000..478e5799d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QGroupBox @@ -0,0 +1 @@ +#include "qgroupbox.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QHBoxLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QHBoxLayout new file mode 100644 index 000000000..27dabc8a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QHBoxLayout @@ -0,0 +1 @@ +#include "qboxlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QHeaderView b/qrenderdoc/3rdparty/qt/include/QtWidgets/QHeaderView new file mode 100644 index 000000000..28e5d088a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QHeaderView @@ -0,0 +1 @@ +#include "qheaderview.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QInputDialog b/qrenderdoc/3rdparty/qt/include/QtWidgets/QInputDialog new file mode 100644 index 000000000..c4ff7d435 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QInputDialog @@ -0,0 +1 @@ +#include "qinputdialog.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemDelegate b/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemDelegate new file mode 100644 index 000000000..c330bf18f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemDelegate @@ -0,0 +1 @@ +#include "qitemdelegate.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemEditorCreator b/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemEditorCreator new file mode 100644 index 000000000..48c55060d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemEditorCreator @@ -0,0 +1 @@ +#include "qitemeditorfactory.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemEditorCreatorBase b/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemEditorCreatorBase new file mode 100644 index 000000000..48c55060d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemEditorCreatorBase @@ -0,0 +1 @@ +#include "qitemeditorfactory.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemEditorFactory b/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemEditorFactory new file mode 100644 index 000000000..48c55060d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QItemEditorFactory @@ -0,0 +1 @@ +#include "qitemeditorfactory.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QKeyEventTransition b/qrenderdoc/3rdparty/qt/include/QtWidgets/QKeyEventTransition new file mode 100644 index 000000000..cc545b5f3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QKeyEventTransition @@ -0,0 +1 @@ +#include "qkeyeventtransition.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QKeySequenceEdit b/qrenderdoc/3rdparty/qt/include/QtWidgets/QKeySequenceEdit new file mode 100644 index 000000000..97f884428 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QKeySequenceEdit @@ -0,0 +1 @@ +#include "qkeysequenceedit.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QLCDNumber b/qrenderdoc/3rdparty/qt/include/QtWidgets/QLCDNumber new file mode 100644 index 000000000..9f04cd674 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QLCDNumber @@ -0,0 +1 @@ +#include "qlcdnumber.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QLabel b/qrenderdoc/3rdparty/qt/include/QtWidgets/QLabel new file mode 100644 index 000000000..56dfe696f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QLabel @@ -0,0 +1 @@ +#include "qlabel.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QLayout new file mode 100644 index 000000000..711d50d25 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QLayout @@ -0,0 +1 @@ +#include "qlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QLayoutItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QLayoutItem new file mode 100644 index 000000000..a1f1542e1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QLayoutItem @@ -0,0 +1 @@ +#include "qlayoutitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QLineEdit b/qrenderdoc/3rdparty/qt/include/QtWidgets/QLineEdit new file mode 100644 index 000000000..88e170517 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QLineEdit @@ -0,0 +1 @@ +#include "qlineedit.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QListView b/qrenderdoc/3rdparty/qt/include/QtWidgets/QListView new file mode 100644 index 000000000..e32c9c91c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QListView @@ -0,0 +1 @@ +#include "qlistview.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QListWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QListWidget new file mode 100644 index 000000000..258b90560 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QListWidget @@ -0,0 +1 @@ +#include "qlistwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QListWidgetItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QListWidgetItem new file mode 100644 index 000000000..258b90560 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QListWidgetItem @@ -0,0 +1 @@ +#include "qlistwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QMacCocoaViewContainer b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMacCocoaViewContainer new file mode 100644 index 000000000..0b76478ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMacCocoaViewContainer @@ -0,0 +1 @@ +#include "qmaccocoaviewcontainer_mac.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QMacNativeWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMacNativeWidget new file mode 100644 index 000000000..427960388 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMacNativeWidget @@ -0,0 +1 @@ +#include "qmacnativewidget_mac.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QMainWindow b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMainWindow new file mode 100644 index 000000000..4f729a422 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMainWindow @@ -0,0 +1 @@ +#include "qmainwindow.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QMdiArea b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMdiArea new file mode 100644 index 000000000..e0f313216 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMdiArea @@ -0,0 +1 @@ +#include "qmdiarea.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QMdiSubWindow b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMdiSubWindow new file mode 100644 index 000000000..c84029335 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMdiSubWindow @@ -0,0 +1 @@ +#include "qmdisubwindow.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QMenu b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMenu new file mode 100644 index 000000000..e86f1f59c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMenu @@ -0,0 +1 @@ +#include "qmenu.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QMenuBar b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMenuBar new file mode 100644 index 000000000..eff4d7d0e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMenuBar @@ -0,0 +1 @@ +#include "qmenubar.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QMessageBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMessageBox new file mode 100644 index 000000000..ff79320e1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMessageBox @@ -0,0 +1 @@ +#include "qmessagebox.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QMouseEventTransition b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMouseEventTransition new file mode 100644 index 000000000..1609b8c03 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QMouseEventTransition @@ -0,0 +1 @@ +#include "qmouseeventtransition.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QOpenGLWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QOpenGLWidget new file mode 100644 index 000000000..e999b1601 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QOpenGLWidget @@ -0,0 +1 @@ +#include "qopenglwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QPanGesture b/qrenderdoc/3rdparty/qt/include/QtWidgets/QPanGesture new file mode 100644 index 000000000..df1143c9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QPanGesture @@ -0,0 +1 @@ +#include "qgesture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QPinchGesture b/qrenderdoc/3rdparty/qt/include/QtWidgets/QPinchGesture new file mode 100644 index 000000000..df1143c9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QPinchGesture @@ -0,0 +1 @@ +#include "qgesture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QPlainTextDocumentLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QPlainTextDocumentLayout new file mode 100644 index 000000000..7a36a6d47 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QPlainTextDocumentLayout @@ -0,0 +1 @@ +#include "qplaintextedit.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QPlainTextEdit b/qrenderdoc/3rdparty/qt/include/QtWidgets/QPlainTextEdit new file mode 100644 index 000000000..7a36a6d47 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QPlainTextEdit @@ -0,0 +1 @@ +#include "qplaintextedit.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QProgressBar b/qrenderdoc/3rdparty/qt/include/QtWidgets/QProgressBar new file mode 100644 index 000000000..126478dc3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QProgressBar @@ -0,0 +1 @@ +#include "qprogressbar.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QProgressDialog b/qrenderdoc/3rdparty/qt/include/QtWidgets/QProgressDialog new file mode 100644 index 000000000..250d82b69 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QProgressDialog @@ -0,0 +1 @@ +#include "qprogressdialog.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QProxyStyle b/qrenderdoc/3rdparty/qt/include/QtWidgets/QProxyStyle new file mode 100644 index 000000000..f1d2d5b40 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QProxyStyle @@ -0,0 +1 @@ +#include "qproxystyle.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QPushButton b/qrenderdoc/3rdparty/qt/include/QtWidgets/QPushButton new file mode 100644 index 000000000..1bdb0f987 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QPushButton @@ -0,0 +1 @@ +#include "qpushbutton.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QRadioButton b/qrenderdoc/3rdparty/qt/include/QtWidgets/QRadioButton new file mode 100644 index 000000000..defdae406 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QRadioButton @@ -0,0 +1 @@ +#include "qradiobutton.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QRubberBand b/qrenderdoc/3rdparty/qt/include/QtWidgets/QRubberBand new file mode 100644 index 000000000..71d5fb993 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QRubberBand @@ -0,0 +1 @@ +#include "qrubberband.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QScrollArea b/qrenderdoc/3rdparty/qt/include/QtWidgets/QScrollArea new file mode 100644 index 000000000..9f53e9f39 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QScrollArea @@ -0,0 +1 @@ +#include "qscrollarea.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QScrollBar b/qrenderdoc/3rdparty/qt/include/QtWidgets/QScrollBar new file mode 100644 index 000000000..9102a5394 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QScrollBar @@ -0,0 +1 @@ +#include "qscrollbar.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QScroller b/qrenderdoc/3rdparty/qt/include/QtWidgets/QScroller new file mode 100644 index 000000000..df76c30c0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QScroller @@ -0,0 +1 @@ +#include "qscroller.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QScrollerProperties b/qrenderdoc/3rdparty/qt/include/QtWidgets/QScrollerProperties new file mode 100644 index 000000000..54929e630 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QScrollerProperties @@ -0,0 +1 @@ +#include "qscrollerproperties.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QShortcut b/qrenderdoc/3rdparty/qt/include/QtWidgets/QShortcut new file mode 100644 index 000000000..4aac60072 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QShortcut @@ -0,0 +1 @@ +#include "qshortcut.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QSizeGrip b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSizeGrip new file mode 100644 index 000000000..9b249f569 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSizeGrip @@ -0,0 +1 @@ +#include "qsizegrip.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QSizePolicy b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSizePolicy new file mode 100644 index 000000000..21b744d31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSizePolicy @@ -0,0 +1 @@ +#include "qsizepolicy.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QSlider b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSlider new file mode 100644 index 000000000..375b9409a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSlider @@ -0,0 +1 @@ +#include "qslider.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QSpacerItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSpacerItem new file mode 100644 index 000000000..a1f1542e1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSpacerItem @@ -0,0 +1 @@ +#include "qlayoutitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QSpinBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSpinBox new file mode 100644 index 000000000..cd37ea441 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSpinBox @@ -0,0 +1 @@ +#include "qspinbox.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QSplashScreen b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSplashScreen new file mode 100644 index 000000000..ae4d10f24 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSplashScreen @@ -0,0 +1 @@ +#include "qsplashscreen.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QSplitter b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSplitter new file mode 100644 index 000000000..3720d9ee7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSplitter @@ -0,0 +1 @@ +#include "qsplitter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QSplitterHandle b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSplitterHandle new file mode 100644 index 000000000..3720d9ee7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSplitterHandle @@ -0,0 +1 @@ +#include "qsplitter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStackedLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStackedLayout new file mode 100644 index 000000000..46dac8584 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStackedLayout @@ -0,0 +1 @@ +#include "qstackedlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStackedWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStackedWidget new file mode 100644 index 000000000..607dda9f3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStackedWidget @@ -0,0 +1 @@ +#include "qstackedwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStandardItemEditorCreator b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStandardItemEditorCreator new file mode 100644 index 000000000..48c55060d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStandardItemEditorCreator @@ -0,0 +1 @@ +#include "qitemeditorfactory.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStatusBar b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStatusBar new file mode 100644 index 000000000..94633d8f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStatusBar @@ -0,0 +1 @@ +#include "qstatusbar.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyle b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyle new file mode 100644 index 000000000..407dfce1a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyle @@ -0,0 +1 @@ +#include "qstyle.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleFactory b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleFactory new file mode 100644 index 000000000..4b2262a7f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleFactory @@ -0,0 +1 @@ +#include "qstylefactory.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleHintReturn b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleHintReturn new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleHintReturn @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleHintReturnMask b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleHintReturnMask new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleHintReturnMask @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleHintReturnVariant b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleHintReturnVariant new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleHintReturnVariant @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOption b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOption new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOption @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionButton b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionButton new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionButton @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionComboBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionComboBox new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionComboBox @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionComplex b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionComplex new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionComplex @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionDockWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionDockWidget new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionDockWidget @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionDockWidgetV2 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionDockWidgetV2 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionDockWidgetV2 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFocusRect b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFocusRect new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFocusRect @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFrame b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFrame new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFrame @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFrameV2 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFrameV2 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFrameV2 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFrameV3 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFrameV3 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionFrameV3 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionGraphicsItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionGraphicsItem new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionGraphicsItem @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionGroupBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionGroupBox new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionGroupBox @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionHeader b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionHeader new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionHeader @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionMenuItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionMenuItem new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionMenuItem @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionProgressBar b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionProgressBar new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionProgressBar @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionProgressBarV2 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionProgressBarV2 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionProgressBarV2 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionRubberBand b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionRubberBand new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionRubberBand @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionSizeGrip b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionSizeGrip new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionSizeGrip @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionSlider b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionSlider new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionSlider @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionSpinBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionSpinBox new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionSpinBox @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTab b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTab new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTab @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabBarBase b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabBarBase new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabBarBase @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabBarBaseV2 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabBarBaseV2 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabBarBaseV2 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabV2 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabV2 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabV2 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabV3 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabV3 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabV3 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabWidgetFrame b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabWidgetFrame new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabWidgetFrame @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabWidgetFrameV2 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabWidgetFrameV2 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTabWidgetFrameV2 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTitleBar b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTitleBar new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionTitleBar @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolBar b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolBar new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolBar @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolBox new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolBox @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolBoxV2 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolBoxV2 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolBoxV2 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolButton b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolButton new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionToolButton @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItem new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItem @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItemV2 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItemV2 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItemV2 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItemV3 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItemV3 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItemV3 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItemV4 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItemV4 new file mode 100644 index 000000000..9533d3938 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyleOptionViewItemV4 @@ -0,0 +1 @@ +#include "qstyleoption.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStylePainter b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStylePainter new file mode 100644 index 000000000..ae8094d3e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStylePainter @@ -0,0 +1 @@ +#include "qstylepainter.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStylePlugin b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStylePlugin new file mode 100644 index 000000000..25ac54d57 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStylePlugin @@ -0,0 +1 @@ +#include "qstyleplugin.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyledItemDelegate b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyledItemDelegate new file mode 100644 index 000000000..7aa846c23 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QStyledItemDelegate @@ -0,0 +1 @@ +#include "qstyleditemdelegate.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QSwipeGesture b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSwipeGesture new file mode 100644 index 000000000..df1143c9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSwipeGesture @@ -0,0 +1 @@ +#include "qgesture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QSystemTrayIcon b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSystemTrayIcon new file mode 100644 index 000000000..960700aef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QSystemTrayIcon @@ -0,0 +1 @@ +#include "qsystemtrayicon.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTabBar b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTabBar new file mode 100644 index 000000000..bd50bcb3b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTabBar @@ -0,0 +1 @@ +#include "qtabbar.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTabWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTabWidget new file mode 100644 index 000000000..8bfb2dc6f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTabWidget @@ -0,0 +1 @@ +#include "qtabwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableView b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableView new file mode 100644 index 000000000..b5a483f0a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableView @@ -0,0 +1 @@ +#include "qtableview.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableWidget new file mode 100644 index 000000000..a2baad69d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableWidget @@ -0,0 +1 @@ +#include "qtablewidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableWidgetItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableWidgetItem new file mode 100644 index 000000000..a2baad69d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableWidgetItem @@ -0,0 +1 @@ +#include "qtablewidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableWidgetSelectionRange b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableWidgetSelectionRange new file mode 100644 index 000000000..a2baad69d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTableWidgetSelectionRange @@ -0,0 +1 @@ +#include "qtablewidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTapAndHoldGesture b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTapAndHoldGesture new file mode 100644 index 000000000..df1143c9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTapAndHoldGesture @@ -0,0 +1 @@ +#include "qgesture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTapGesture b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTapGesture new file mode 100644 index 000000000..df1143c9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTapGesture @@ -0,0 +1 @@ +#include "qgesture.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTextBrowser b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTextBrowser new file mode 100644 index 000000000..d0b9de197 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTextBrowser @@ -0,0 +1 @@ +#include "qtextbrowser.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTextEdit b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTextEdit new file mode 100644 index 000000000..eaa45cc8b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTextEdit @@ -0,0 +1 @@ +#include "qtextedit.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTileRules b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTileRules new file mode 100644 index 000000000..6a8352c6d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTileRules @@ -0,0 +1 @@ +#include "qdrawutil.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTimeEdit b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTimeEdit new file mode 100644 index 000000000..ca7a94383 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTimeEdit @@ -0,0 +1 @@ +#include "qdatetimeedit.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolBar b/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolBar new file mode 100644 index 000000000..ef4eda776 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolBar @@ -0,0 +1 @@ +#include "qtoolbar.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolBox b/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolBox new file mode 100644 index 000000000..090cc62ff --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolBox @@ -0,0 +1 @@ +#include "qtoolbox.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolButton b/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolButton new file mode 100644 index 000000000..7525e1656 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolButton @@ -0,0 +1 @@ +#include "qtoolbutton.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolTip b/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolTip new file mode 100644 index 000000000..c571d5154 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QToolTip @@ -0,0 +1 @@ +#include "qtooltip.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeView b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeView new file mode 100644 index 000000000..3a274d0a4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeView @@ -0,0 +1 @@ +#include "qtreeview.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeWidget new file mode 100644 index 000000000..2d0e40157 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeWidget @@ -0,0 +1 @@ +#include "qtreewidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeWidgetItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeWidgetItem new file mode 100644 index 000000000..2d0e40157 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeWidgetItem @@ -0,0 +1 @@ +#include "qtreewidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeWidgetItemIterator b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeWidgetItemIterator new file mode 100644 index 000000000..91cc2b9d8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QTreeWidgetItemIterator @@ -0,0 +1 @@ +#include "qtreewidgetitemiterator.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoCommand b/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoCommand new file mode 100644 index 000000000..6bd1e5e5b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoCommand @@ -0,0 +1 @@ +#include "qundostack.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoGroup b/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoGroup new file mode 100644 index 000000000..366e13dae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoGroup @@ -0,0 +1 @@ +#include "qundogroup.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoStack b/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoStack new file mode 100644 index 000000000..6bd1e5e5b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoStack @@ -0,0 +1 @@ +#include "qundostack.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoView b/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoView new file mode 100644 index 000000000..9356344aa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QUndoView @@ -0,0 +1 @@ +#include "qundoview.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QVBoxLayout b/qrenderdoc/3rdparty/qt/include/QtWidgets/QVBoxLayout new file mode 100644 index 000000000..27dabc8a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QVBoxLayout @@ -0,0 +1 @@ +#include "qboxlayout.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QWhatsThis b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWhatsThis new file mode 100644 index 000000000..51ad8b31e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWhatsThis @@ -0,0 +1 @@ +#include "qwhatsthis.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidget b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidget new file mode 100644 index 000000000..2e4c22539 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidget @@ -0,0 +1 @@ +#include "qwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetAction b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetAction new file mode 100644 index 000000000..941438023 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetAction @@ -0,0 +1 @@ +#include "qwidgetaction.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetData b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetData new file mode 100644 index 000000000..2e4c22539 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetData @@ -0,0 +1 @@ +#include "qwidget.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetItem b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetItem new file mode 100644 index 000000000..a1f1542e1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetItem @@ -0,0 +1 @@ +#include "qlayoutitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetItemV2 b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetItemV2 new file mode 100644 index 000000000..a1f1542e1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWidgetItemV2 @@ -0,0 +1 @@ +#include "qlayoutitem.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QWizard b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWizard new file mode 100644 index 000000000..134ce99fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWizard @@ -0,0 +1 @@ +#include "qwizard.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QWizardPage b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWizardPage new file mode 100644 index 000000000..134ce99fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QWizardPage @@ -0,0 +1 @@ +#include "qwizard.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QtWidgets b/qrenderdoc/3rdparty/qt/include/QtWidgets/QtWidgets new file mode 100644 index 000000000..356c1a9e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QtWidgets @@ -0,0 +1,318 @@ +#ifndef QT_QTWIDGETS_MODULE_H +#define QT_QTWIDGETS_MODULE_H +#include <QtWidgets/QtWidgetsDepends> +#include "qtwidgetsglobal.h" +#if QT_CONFIG(abstractbutton) +#include "qabstractbutton.h" +#endif +#if QT_CONFIG(itemviews) +#include "qabstractitemdelegate.h" +#endif +#if QT_CONFIG(itemviews) +#include "qabstractitemview.h" +#endif +#include "qabstractscrollarea.h" +#if QT_CONFIG(abstractslider) +#include "qabstractslider.h" +#endif +#if QT_CONFIG(spinbox) +#include "qabstractspinbox.h" +#endif +#include "qaccessiblewidget.h" +#include "qaction.h" +#include "qactiongroup.h" +#include "qapplication.h" +#include "qboxlayout.h" +#if QT_CONFIG(buttongroup) +#include "qbuttongroup.h" +#endif +#if QT_CONFIG(calendarwidget) +#include "qcalendarwidget.h" +#endif +#if QT_CONFIG(checkbox) +#include "qcheckbox.h" +#endif +#if QT_CONFIG(colordialog) +#include "qcolordialog.h" +#endif +#include "qcolormap.h" +#if QT_CONFIG(columnview) +#include "qcolumnview.h" +#endif +#if QT_CONFIG(combobox) +#include "qcombobox.h" +#endif +#if QT_CONFIG(commandlinkbutton) +#include "qcommandlinkbutton.h" +#endif +#include "qcommonstyle.h" +#if QT_CONFIG(completer) +#include "qcompleter.h" +#endif +#if QT_CONFIG(datawidgetmapper) +#include "qdatawidgetmapper.h" +#endif +#if QT_CONFIG(datetimeedit) +#include "qdatetimeedit.h" +#endif +#include "qdesktopwidget.h" +#if QT_CONFIG(dial) +#include "qdial.h" +#endif +#if QT_CONFIG(dialog) +#include "qdialog.h" +#endif +#if QT_CONFIG(dialogbuttonbox) +#include "qdialogbuttonbox.h" +#endif +#if QT_CONFIG(dirmodel) +#include "qdirmodel.h" +#endif +#if QT_CONFIG(dockwidget) +#include "qdockwidget.h" +#endif +#include "qdrawutil.h" +#if QT_CONFIG(errormessage) +#include "qerrormessage.h" +#endif +#if QT_CONFIG(filedialog) +#include "qfiledialog.h" +#endif +#include "qfileiconprovider.h" +#if QT_CONFIG(filesystemmodel) +#include "qfilesystemmodel.h" +#endif +#include "qfocusframe.h" +#if QT_CONFIG(fontcombobox) +#include "qfontcombobox.h" +#endif +#if QT_CONFIG(fontdialog) +#include "qfontdialog.h" +#endif +#if QT_CONFIG(formlayout) +#include "qformlayout.h" +#endif +#include "qframe.h" +#include "qgesture.h" +#include "qgesturerecognizer.h" +#if QT_CONFIG(graphicsview) +#include "qgraphicsanchorlayout.h" +#endif +#if QT_CONFIG(graphicseffect) +#include "qgraphicseffect.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicsgridlayout.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicsitem.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicsitemanimation.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicslayout.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicslayoutitem.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicslinearlayout.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicsproxywidget.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicsscene.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicssceneevent.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicstransform.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicsview.h" +#endif +#if QT_CONFIG(graphicsview) +#include "qgraphicswidget.h" +#endif +#include "qgridlayout.h" +#if QT_CONFIG(groupbox) +#include "qgroupbox.h" +#endif +#if QT_CONFIG(itemviews) +#include "qheaderview.h" +#endif +#if QT_CONFIG(inputdialog) +#include "qinputdialog.h" +#endif +#if QT_CONFIG(itemviews) +#include "qitemdelegate.h" +#endif +#if QT_CONFIG(itemviews) +#include "qitemeditorfactory.h" +#endif +#if QT_CONFIG(qeventtransition) +#include "qkeyeventtransition.h" +#endif +#if QT_CONFIG(keysequenceedit) +#include "qkeysequenceedit.h" +#endif +#if QT_CONFIG(label) +#include "qlabel.h" +#endif +#include "qlayout.h" +#include "qlayoutitem.h" +#if QT_CONFIG(lcdnumber) +#include "qlcdnumber.h" +#endif +#if QT_CONFIG(lineedit) +#include "qlineedit.h" +#endif +#if QT_CONFIG(listview) +#include "qlistview.h" +#endif +#if QT_CONFIG(listwidget) +#include "qlistwidget.h" +#endif +#if QT_CONFIG(mainwindow) +#include "qmainwindow.h" +#endif +#if QT_CONFIG(mdiarea) +#include "qmdiarea.h" +#endif +#if QT_CONFIG(mdiarea) +#include "qmdisubwindow.h" +#endif +#if QT_CONFIG(menu) +#include "qmenu.h" +#endif +#if QT_CONFIG(menubar) +#include "qmenubar.h" +#endif +#if QT_CONFIG(messagebox) +#include "qmessagebox.h" +#endif +#if QT_CONFIG(qeventtransition) +#include "qmouseeventtransition.h" +#endif +#include "qopenglwidget.h" +#if QT_CONFIG(textedit) +#include "qplaintextedit.h" +#endif +#if QT_CONFIG(progressbar) +#include "qprogressbar.h" +#endif +#if QT_CONFIG(progressdialog) +#include "qprogressdialog.h" +#endif +#include "qproxystyle.h" +#if QT_CONFIG(pushbutton) +#include "qpushbutton.h" +#endif +#if QT_CONFIG(radiobutton) +#include "qradiobutton.h" +#endif +#if QT_CONFIG(rubberband) +#include "qrubberband.h" +#endif +#if QT_CONFIG(scrollarea) +#include "qscrollarea.h" +#endif +#if QT_CONFIG(scrollbar) +#include "qscrollbar.h" +#endif +#if QT_CONFIG(scroller) +#include "qscroller.h" +#endif +#if QT_CONFIG(scroller) +#include "qscrollerproperties.h" +#endif +#include "qshortcut.h" +#if QT_CONFIG(sizegrip) +#include "qsizegrip.h" +#endif +#include "qsizepolicy.h" +#if QT_CONFIG(slider) +#include "qslider.h" +#endif +#if QT_CONFIG(spinbox) +#include "qspinbox.h" +#endif +#if QT_CONFIG(splashscreen) +#include "qsplashscreen.h" +#endif +#if QT_CONFIG(splitter) +#include "qsplitter.h" +#endif +#include "qstackedlayout.h" +#if QT_CONFIG(stackedwidget) +#include "qstackedwidget.h" +#endif +#if QT_CONFIG(statusbar) +#include "qstatusbar.h" +#endif +#include "qstyle.h" +#if QT_CONFIG(itemviews) +#include "qstyleditemdelegate.h" +#endif +#include "qstylefactory.h" +#include "qstyleoption.h" +#include "qstylepainter.h" +#include "qstyleplugin.h" +#include "qsystemtrayicon.h" +#if QT_CONFIG(tabbar) +#include "qtabbar.h" +#endif +#if QT_CONFIG(tableview) +#include "qtableview.h" +#endif +#if QT_CONFIG(tablewidget) +#include "qtablewidget.h" +#endif +#if QT_CONFIG(tabwidget) +#include "qtabwidget.h" +#endif +#if QT_CONFIG(textbrowser) +#include "qtextbrowser.h" +#endif +#if QT_CONFIG(textedit) +#include "qtextedit.h" +#endif +#include "qtoolbar.h" +#if QT_CONFIG(toolbox) +#include "qtoolbox.h" +#endif +#if QT_CONFIG(toolbutton) +#include "qtoolbutton.h" +#endif +#include "qtooltip.h" +#if QT_CONFIG(treeview) +#include "qtreeview.h" +#endif +#if QT_CONFIG(treewidget) +#include "qtreewidget.h" +#endif +#if QT_CONFIG(treewidget) +#include "qtreewidgetitemiterator.h" +#endif +#if QT_CONFIG(undogroup) +#include "qundogroup.h" +#endif +#if QT_CONFIG(undocommand) +#include "qundostack.h" +#endif +#if QT_CONFIG(undoview) +#include "qundoview.h" +#endif +#if QT_CONFIG(whatsthis) +#include "qwhatsthis.h" +#endif +#include "qwidget.h" +#include "qwidgetaction.h" +#if QT_CONFIG(wizard) +#include "qwizard.h" +#endif +#include "qtwidgetsversion.h" +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QtWidgetsDepends b/qrenderdoc/3rdparty/qt/include/QtWidgets/QtWidgetsDepends new file mode 100644 index 000000000..80cfcaf27 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QtWidgetsDepends @@ -0,0 +1,5 @@ +/* This file was generated by qmake with the info from <root>/src/widgets/widgets.pro. */ +#ifdef __cplusplus /* create empty PCH in C mode */ +#include <QtCore/QtCore> +#include <QtGui/QtGui> +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/QtWidgetsVersion b/qrenderdoc/3rdparty/qt/include/QtWidgets/QtWidgetsVersion new file mode 100644 index 000000000..446651b5f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/QtWidgetsVersion @@ -0,0 +1 @@ +#include "qtwidgetsversion.h" diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractbutton.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractbutton.h new file mode 100644 index 000000000..01dbf4e92 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractbutton.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTBUTTON_H +#define QABSTRACTBUTTON_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtGui/qicon.h> +#include <QtGui/qkeysequence.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(abstractbutton); + +QT_BEGIN_NAMESPACE + + +class QButtonGroup; +class QAbstractButtonPrivate; + +class Q_WIDGETS_EXPORT QAbstractButton : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(QIcon icon READ icon WRITE setIcon) + Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) +#ifndef QT_NO_SHORTCUT + Q_PROPERTY(QKeySequence shortcut READ shortcut WRITE setShortcut) +#endif + Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable) + Q_PROPERTY(bool checked READ isChecked WRITE setChecked DESIGNABLE isCheckable NOTIFY toggled USER true) + Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat) + Q_PROPERTY(bool autoExclusive READ autoExclusive WRITE setAutoExclusive) + Q_PROPERTY(int autoRepeatDelay READ autoRepeatDelay WRITE setAutoRepeatDelay) + Q_PROPERTY(int autoRepeatInterval READ autoRepeatInterval WRITE setAutoRepeatInterval) + Q_PROPERTY(bool down READ isDown WRITE setDown DESIGNABLE false) + +public: + explicit QAbstractButton(QWidget *parent = Q_NULLPTR); + ~QAbstractButton(); + + void setText(const QString &text); + QString text() const; + + void setIcon(const QIcon &icon); + QIcon icon() const; + + QSize iconSize() const; + +#ifndef QT_NO_SHORTCUT + void setShortcut(const QKeySequence &key); + QKeySequence shortcut() const; +#endif + + void setCheckable(bool); + bool isCheckable() const; + + bool isChecked() const; + + void setDown(bool); + bool isDown() const; + + void setAutoRepeat(bool); + bool autoRepeat() const; + + void setAutoRepeatDelay(int); + int autoRepeatDelay() const; + + void setAutoRepeatInterval(int); + int autoRepeatInterval() const; + + void setAutoExclusive(bool); + bool autoExclusive() const; + +#if QT_CONFIG(buttongroup) + QButtonGroup *group() const; +#endif + +public Q_SLOTS: + void setIconSize(const QSize &size); + void animateClick(int msec = 100); + void click(); + void toggle(); + void setChecked(bool); + +Q_SIGNALS: + void pressed(); + void released(); + void clicked(bool checked = false); + void toggled(bool checked); + +protected: + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE = 0; + virtual bool hitButton(const QPoint &pos) const; + virtual void checkStateSet(); + virtual void nextCheckState(); + + bool event(QEvent *e) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + void keyReleaseEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void focusInEvent(QFocusEvent *e) Q_DECL_OVERRIDE; + void focusOutEvent(QFocusEvent *e) Q_DECL_OVERRIDE; + void changeEvent(QEvent *e) Q_DECL_OVERRIDE; + void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE; + + +protected: + QAbstractButton(QAbstractButtonPrivate &dd, QWidget* parent = Q_NULLPTR); + +private: + Q_DECLARE_PRIVATE(QAbstractButton) + Q_DISABLE_COPY(QAbstractButton) + friend class QButtonGroup; +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTBUTTON_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractitemdelegate.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractitemdelegate.h new file mode 100644 index 000000000..9b6bde1c8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractitemdelegate.h @@ -0,0 +1,131 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTITEMDELEGATE_H +#define QABSTRACTITEMDELEGATE_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtWidgets/qstyleoption.h> + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +class QPainter; +class QModelIndex; +class QAbstractItemModel; +class QAbstractItemView; +class QHelpEvent; +class QAbstractItemDelegatePrivate; + +class Q_WIDGETS_EXPORT QAbstractItemDelegate : public QObject +{ + Q_OBJECT + +public: + + enum EndEditHint { + NoHint, + EditNextItem, + EditPreviousItem, + SubmitModelCache, + RevertModelCache + }; + + explicit QAbstractItemDelegate(QObject *parent = Q_NULLPTR); + virtual ~QAbstractItemDelegate(); + + // painting + virtual void paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const = 0; + + virtual QSize sizeHint(const QStyleOptionViewItem &option, + const QModelIndex &index) const = 0; + + // editing + virtual QWidget *createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const; + + virtual void destroyEditor(QWidget *editor, const QModelIndex &index) const; + + virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; + + virtual void setModelData(QWidget *editor, + QAbstractItemModel *model, + const QModelIndex &index) const; + + virtual void updateEditorGeometry(QWidget *editor, + const QStyleOptionViewItem &option, + const QModelIndex &index) const; + + // for non-widget editors + virtual bool editorEvent(QEvent *event, + QAbstractItemModel *model, + const QStyleOptionViewItem &option, + const QModelIndex &index); + + static QString elidedText(const QFontMetrics &fontMetrics, int width, + Qt::TextElideMode mode, const QString &text); + + virtual bool helpEvent(QHelpEvent *event, + QAbstractItemView *view, + const QStyleOptionViewItem &option, + const QModelIndex &index); + + virtual QVector<int> paintingRoles() const; + +Q_SIGNALS: + void commitData(QWidget *editor); + void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint = NoHint); + void sizeHintChanged(const QModelIndex &); + +protected: + QAbstractItemDelegate(QObjectPrivate &, QObject *parent = Q_NULLPTR); +private: + Q_DECLARE_PRIVATE(QAbstractItemDelegate) + Q_DISABLE_COPY(QAbstractItemDelegate) + Q_PRIVATE_SLOT(d_func(), void _q_commitDataAndCloseEditor(QWidget*)) +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTITEMDELEGATE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractitemview.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractitemview.h new file mode 100644 index 000000000..6be776ec5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractitemview.h @@ -0,0 +1,385 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTITEMVIEW_H +#define QABSTRACTITEMVIEW_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractscrollarea.h> +#include <QtCore/qabstractitemmodel.h> +#include <QtCore/qitemselectionmodel.h> +#include <QtWidgets/qabstractitemdelegate.h> + +class tst_QAbstractItemView; +class tst_QTreeView; + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +class QMenu; +class QDrag; +class QEvent; +class QAbstractItemViewPrivate; + +class Q_WIDGETS_EXPORT QAbstractItemView : public QAbstractScrollArea +{ + Q_OBJECT + Q_PROPERTY(bool autoScroll READ hasAutoScroll WRITE setAutoScroll) + Q_PROPERTY(int autoScrollMargin READ autoScrollMargin WRITE setAutoScrollMargin) + Q_PROPERTY(EditTriggers editTriggers READ editTriggers WRITE setEditTriggers) + Q_PROPERTY(bool tabKeyNavigation READ tabKeyNavigation WRITE setTabKeyNavigation) +#ifndef QT_NO_DRAGANDDROP + Q_PROPERTY(bool showDropIndicator READ showDropIndicator WRITE setDropIndicatorShown) + Q_PROPERTY(bool dragEnabled READ dragEnabled WRITE setDragEnabled) + Q_PROPERTY(bool dragDropOverwriteMode READ dragDropOverwriteMode WRITE setDragDropOverwriteMode) + Q_PROPERTY(DragDropMode dragDropMode READ dragDropMode WRITE setDragDropMode) + Q_PROPERTY(Qt::DropAction defaultDropAction READ defaultDropAction WRITE setDefaultDropAction) +#endif + Q_PROPERTY(bool alternatingRowColors READ alternatingRowColors WRITE setAlternatingRowColors) + Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) + Q_PROPERTY(SelectionBehavior selectionBehavior READ selectionBehavior WRITE setSelectionBehavior) + Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize NOTIFY iconSizeChanged) + Q_PROPERTY(Qt::TextElideMode textElideMode READ textElideMode WRITE setTextElideMode) + Q_PROPERTY(ScrollMode verticalScrollMode READ verticalScrollMode WRITE setVerticalScrollMode RESET resetVerticalScrollMode) + Q_PROPERTY(ScrollMode horizontalScrollMode READ horizontalScrollMode WRITE setHorizontalScrollMode RESET resetHorizontalScrollMode) + +public: + enum SelectionMode { + NoSelection, + SingleSelection, + MultiSelection, + ExtendedSelection, + ContiguousSelection + }; + Q_ENUM(SelectionMode) + + enum SelectionBehavior { + SelectItems, + SelectRows, + SelectColumns + }; + Q_ENUM(SelectionBehavior) + + enum ScrollHint { + EnsureVisible, + PositionAtTop, + PositionAtBottom, + PositionAtCenter + }; + Q_ENUM(ScrollHint) + + enum EditTrigger { + NoEditTriggers = 0, + CurrentChanged = 1, + DoubleClicked = 2, + SelectedClicked = 4, + EditKeyPressed = 8, + AnyKeyPressed = 16, + AllEditTriggers = 31 + }; + + Q_DECLARE_FLAGS(EditTriggers, EditTrigger) + Q_FLAG(EditTriggers) + + enum ScrollMode { + ScrollPerItem, + ScrollPerPixel + }; + Q_ENUM(ScrollMode) + + explicit QAbstractItemView(QWidget *parent = Q_NULLPTR); + ~QAbstractItemView(); + + virtual void setModel(QAbstractItemModel *model); + QAbstractItemModel *model() const; + + virtual void setSelectionModel(QItemSelectionModel *selectionModel); + QItemSelectionModel *selectionModel() const; + + void setItemDelegate(QAbstractItemDelegate *delegate); + QAbstractItemDelegate *itemDelegate() const; + + void setSelectionMode(QAbstractItemView::SelectionMode mode); + QAbstractItemView::SelectionMode selectionMode() const; + + void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior); + QAbstractItemView::SelectionBehavior selectionBehavior() const; + + QModelIndex currentIndex() const; + QModelIndex rootIndex() const; + + void setEditTriggers(EditTriggers triggers); + EditTriggers editTriggers() const; + + void setVerticalScrollMode(ScrollMode mode); + ScrollMode verticalScrollMode() const; + void resetVerticalScrollMode(); + + void setHorizontalScrollMode(ScrollMode mode); + ScrollMode horizontalScrollMode() const; + void resetHorizontalScrollMode(); + + void setAutoScroll(bool enable); + bool hasAutoScroll() const; + + void setAutoScrollMargin(int margin); + int autoScrollMargin() const; + + void setTabKeyNavigation(bool enable); + bool tabKeyNavigation() const; + +#ifndef QT_NO_DRAGANDDROP + void setDropIndicatorShown(bool enable); + bool showDropIndicator() const; + + void setDragEnabled(bool enable); + bool dragEnabled() const; + + void setDragDropOverwriteMode(bool overwrite); + bool dragDropOverwriteMode() const; + + enum DragDropMode { + NoDragDrop, + DragOnly, + DropOnly, + DragDrop, + InternalMove + }; + Q_ENUM(DragDropMode) + + void setDragDropMode(DragDropMode behavior); + DragDropMode dragDropMode() const; + + void setDefaultDropAction(Qt::DropAction dropAction); + Qt::DropAction defaultDropAction() const; +#endif + + void setAlternatingRowColors(bool enable); + bool alternatingRowColors() const; + + void setIconSize(const QSize &size); + QSize iconSize() const; + + void setTextElideMode(Qt::TextElideMode mode); + Qt::TextElideMode textElideMode() const; + + virtual void keyboardSearch(const QString &search); + + virtual QRect visualRect(const QModelIndex &index) const = 0; + virtual void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) = 0; + virtual QModelIndex indexAt(const QPoint &point) const = 0; + + QSize sizeHintForIndex(const QModelIndex &index) const; + virtual int sizeHintForRow(int row) const; + virtual int sizeHintForColumn(int column) const; + + void openPersistentEditor(const QModelIndex &index); + void closePersistentEditor(const QModelIndex &index); + + void setIndexWidget(const QModelIndex &index, QWidget *widget); + QWidget *indexWidget(const QModelIndex &index) const; + + void setItemDelegateForRow(int row, QAbstractItemDelegate *delegate); + QAbstractItemDelegate *itemDelegateForRow(int row) const; + + void setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate); + QAbstractItemDelegate *itemDelegateForColumn(int column) const; + + QAbstractItemDelegate *itemDelegate(const QModelIndex &index) const; + + virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const Q_DECL_OVERRIDE; + + using QAbstractScrollArea::update; + +public Q_SLOTS: + virtual void reset(); + virtual void setRootIndex(const QModelIndex &index); + virtual void doItemsLayout(); + virtual void selectAll(); + void edit(const QModelIndex &index); + void clearSelection(); + void setCurrentIndex(const QModelIndex &index); + void scrollToTop(); + void scrollToBottom(); + void update(const QModelIndex &index); + +protected Q_SLOTS: + virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int>()); + virtual void rowsInserted(const QModelIndex &parent, int start, int end); + virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); + virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); + virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); + virtual void updateEditorData(); + virtual void updateEditorGeometries(); + virtual void updateGeometries(); + virtual void verticalScrollbarAction(int action); + virtual void horizontalScrollbarAction(int action); + virtual void verticalScrollbarValueChanged(int value); + virtual void horizontalScrollbarValueChanged(int value); + virtual void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint); + virtual void commitData(QWidget *editor); + virtual void editorDestroyed(QObject *editor); + +Q_SIGNALS: + void pressed(const QModelIndex &index); + void clicked(const QModelIndex &index); + void doubleClicked(const QModelIndex &index); + + void activated(const QModelIndex &index); + void entered(const QModelIndex &index); + void viewportEntered(); + + void iconSizeChanged(const QSize &size); + +protected: + QAbstractItemView(QAbstractItemViewPrivate &, QWidget *parent = Q_NULLPTR); + + void setHorizontalStepsPerItem(int steps); + int horizontalStepsPerItem() const; + void setVerticalStepsPerItem(int steps); + int verticalStepsPerItem() const; + + enum CursorAction { MoveUp, MoveDown, MoveLeft, MoveRight, + MoveHome, MoveEnd, MovePageUp, MovePageDown, + MoveNext, MovePrevious }; + virtual QModelIndex moveCursor(CursorAction cursorAction, + Qt::KeyboardModifiers modifiers) = 0; + + virtual int horizontalOffset() const = 0; + virtual int verticalOffset() const = 0; + + virtual bool isIndexHidden(const QModelIndex &index) const = 0; + + virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) = 0; + virtual QRegion visualRegionForSelection(const QItemSelection &selection) const = 0; + virtual QModelIndexList selectedIndexes() const; + + virtual bool edit(const QModelIndex &index, EditTrigger trigger, QEvent *event); + + virtual QItemSelectionModel::SelectionFlags selectionCommand(const QModelIndex &index, + const QEvent *event = Q_NULLPTR) const; + +#ifndef QT_NO_DRAGANDDROP + virtual void startDrag(Qt::DropActions supportedActions); +#endif + + virtual QStyleOptionViewItem viewOptions() const; + + enum State { + NoState, + DraggingState, + DragSelectingState, + EditingState, + ExpandingState, + CollapsingState, + AnimatingState + }; + + State state() const; + void setState(State state); + + void scheduleDelayedItemsLayout(); + void executeDelayedItemsLayout(); + + void setDirtyRegion(const QRegion ®ion); + void scrollDirtyRegion(int dx, int dy); + QPoint dirtyRegionOffset() const; + + void startAutoScroll(); + void stopAutoScroll(); + void doAutoScroll(); + + bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE; + bool event(QEvent *event) Q_DECL_OVERRIDE; + bool viewportEvent(QEvent *event) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE; +#ifndef QT_NO_DRAGANDDROP + void dragEnterEvent(QDragEnterEvent *event) Q_DECL_OVERRIDE; + void dragMoveEvent(QDragMoveEvent *event) Q_DECL_OVERRIDE; + void dragLeaveEvent(QDragLeaveEvent *event) Q_DECL_OVERRIDE; + void dropEvent(QDropEvent *event) Q_DECL_OVERRIDE; +#endif + void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; + void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE; + void inputMethodEvent(QInputMethodEvent *event) Q_DECL_OVERRIDE; + +#ifndef QT_NO_DRAGANDDROP + enum DropIndicatorPosition { OnItem, AboveItem, BelowItem, OnViewport }; + DropIndicatorPosition dropIndicatorPosition() const; +#endif + + QSize viewportSizeHint() const Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QAbstractItemView) + Q_DISABLE_COPY(QAbstractItemView) + Q_PRIVATE_SLOT(d_func(), void _q_columnsAboutToBeRemoved(const QModelIndex&, int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_columnsRemoved(const QModelIndex&, int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_columnsInserted(const QModelIndex&, int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_rowsInserted(const QModelIndex&, int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_rowsRemoved(const QModelIndex&, int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_columnsMoved(const QModelIndex&, int, int, const QModelIndex&, int)) + Q_PRIVATE_SLOT(d_func(), void _q_rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int)) + Q_PRIVATE_SLOT(d_func(), void _q_modelDestroyed()) + Q_PRIVATE_SLOT(d_func(), void _q_layoutChanged()) + Q_PRIVATE_SLOT(d_func(), void _q_headerDataChanged()) +#if QT_CONFIG(gestures) && QT_CONFIG(scroller) + Q_PRIVATE_SLOT(d_func(), void _q_scrollerStateChanged()) +#endif + + friend class ::tst_QAbstractItemView; + friend class ::tst_QTreeView; + friend class QTreeViewPrivate; // needed to compile with MSVC + friend class QListModeViewBase; + friend class QListViewPrivate; + friend class QAbstractSlider; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractItemView::EditTriggers) + +QT_END_NAMESPACE + +#endif // QABSTRACTITEMVIEW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractscrollarea.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractscrollarea.h new file mode 100644 index 000000000..cee8481e6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractscrollarea.h @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSCROLLAREA_H +#define QABSTRACTSCROLLAREA_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qframe.h> + +QT_BEGIN_NAMESPACE + + +#if QT_CONFIG(scrollarea) + +class QMargins; +class QScrollBar; +class QAbstractScrollAreaPrivate; + +class Q_WIDGETS_EXPORT QAbstractScrollArea : public QFrame +{ + Q_OBJECT + + Q_PROPERTY(Qt::ScrollBarPolicy verticalScrollBarPolicy READ verticalScrollBarPolicy WRITE setVerticalScrollBarPolicy) + Q_PROPERTY(Qt::ScrollBarPolicy horizontalScrollBarPolicy READ horizontalScrollBarPolicy WRITE setHorizontalScrollBarPolicy) + Q_PROPERTY(SizeAdjustPolicy sizeAdjustPolicy READ sizeAdjustPolicy WRITE setSizeAdjustPolicy) + +public: + explicit QAbstractScrollArea(QWidget *parent = Q_NULLPTR); + ~QAbstractScrollArea(); + + enum SizeAdjustPolicy { + AdjustIgnored, + AdjustToContentsOnFirstShow, + AdjustToContents + }; + Q_ENUM(SizeAdjustPolicy) + + Qt::ScrollBarPolicy verticalScrollBarPolicy() const; + void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy); + QScrollBar *verticalScrollBar() const; + void setVerticalScrollBar(QScrollBar *scrollbar); + + Qt::ScrollBarPolicy horizontalScrollBarPolicy() const; + void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy); + QScrollBar *horizontalScrollBar() const; + void setHorizontalScrollBar(QScrollBar *scrollbar); + + QWidget *cornerWidget() const; + void setCornerWidget(QWidget *widget); + + void addScrollBarWidget(QWidget *widget, Qt::Alignment alignment); + QWidgetList scrollBarWidgets(Qt::Alignment alignment); + + QWidget *viewport() const; + void setViewport(QWidget *widget); + QSize maximumViewportSize() const; + + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + QSize sizeHint() const Q_DECL_OVERRIDE; + + virtual void setupViewport(QWidget *viewport); + + SizeAdjustPolicy sizeAdjustPolicy() const; + void setSizeAdjustPolicy(SizeAdjustPolicy policy); + +protected: + QAbstractScrollArea(QAbstractScrollAreaPrivate &dd, QWidget *parent = Q_NULLPTR); + void setViewportMargins(int left, int top, int right, int bottom); + void setViewportMargins(const QMargins &margins); + QMargins viewportMargins() const; + + bool eventFilter(QObject *, QEvent *) Q_DECL_OVERRIDE; + bool event(QEvent *) Q_DECL_OVERRIDE; + virtual bool viewportEvent(QEvent *); + + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *) Q_DECL_OVERRIDE; +#if QT_CONFIG(wheelevent) + void wheelEvent(QWheelEvent *) Q_DECL_OVERRIDE; +#endif +#ifndef QT_NO_CONTEXTMENU + void contextMenuEvent(QContextMenuEvent *) Q_DECL_OVERRIDE; +#endif +#ifndef QT_NO_DRAGANDDROP + void dragEnterEvent(QDragEnterEvent *) Q_DECL_OVERRIDE; + void dragMoveEvent(QDragMoveEvent *) Q_DECL_OVERRIDE; + void dragLeaveEvent(QDragLeaveEvent *) Q_DECL_OVERRIDE; + void dropEvent(QDropEvent *) Q_DECL_OVERRIDE; +#endif + + void keyPressEvent(QKeyEvent *) Q_DECL_OVERRIDE; + + virtual void scrollContentsBy(int dx, int dy); + + virtual QSize viewportSizeHint() const; + +private: + Q_DECLARE_PRIVATE(QAbstractScrollArea) + Q_DISABLE_COPY(QAbstractScrollArea) + Q_PRIVATE_SLOT(d_func(), void _q_hslide(int)) + Q_PRIVATE_SLOT(d_func(), void _q_vslide(int)) + Q_PRIVATE_SLOT(d_func(), void _q_showOrHideScrollBars()) + + friend class QStyleSheetStyle; + friend class QWidgetPrivate; +}; + +#endif // QT_CONFIG(scrollarea) + +QT_END_NAMESPACE + +#endif // QABSTRACTSCROLLAREA_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractslider.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractslider.h new file mode 100644 index 000000000..d26d6a879 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractslider.h @@ -0,0 +1,165 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSLIDER_H +#define QABSTRACTSLIDER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(abstractslider); + +QT_BEGIN_NAMESPACE + + +class QAbstractSliderPrivate; + +class Q_WIDGETS_EXPORT QAbstractSlider : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(int minimum READ minimum WRITE setMinimum) + Q_PROPERTY(int maximum READ maximum WRITE setMaximum) + Q_PROPERTY(int singleStep READ singleStep WRITE setSingleStep) + Q_PROPERTY(int pageStep READ pageStep WRITE setPageStep) + Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged USER true) + Q_PROPERTY(int sliderPosition READ sliderPosition WRITE setSliderPosition NOTIFY sliderMoved) + Q_PROPERTY(bool tracking READ hasTracking WRITE setTracking) + Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) + Q_PROPERTY(bool invertedAppearance READ invertedAppearance WRITE setInvertedAppearance) + Q_PROPERTY(bool invertedControls READ invertedControls WRITE setInvertedControls) + Q_PROPERTY(bool sliderDown READ isSliderDown WRITE setSliderDown DESIGNABLE false) + +public: + explicit QAbstractSlider(QWidget *parent = Q_NULLPTR); + ~QAbstractSlider(); + + Qt::Orientation orientation() const; + + void setMinimum(int); + int minimum() const; + + void setMaximum(int); + int maximum() const; + + void setSingleStep(int); + int singleStep() const; + + void setPageStep(int); + int pageStep() const; + + void setTracking(bool enable); + bool hasTracking() const; + + void setSliderDown(bool); + bool isSliderDown() const; + + void setSliderPosition(int); + int sliderPosition() const; + + void setInvertedAppearance(bool); + bool invertedAppearance() const; + + void setInvertedControls(bool); + bool invertedControls() const; + + enum SliderAction { + SliderNoAction, + SliderSingleStepAdd, + SliderSingleStepSub, + SliderPageStepAdd, + SliderPageStepSub, + SliderToMinimum, + SliderToMaximum, + SliderMove + }; + + int value() const; + + void triggerAction(SliderAction action); + +public Q_SLOTS: + void setValue(int); + void setOrientation(Qt::Orientation); + void setRange(int min, int max); + +Q_SIGNALS: + void valueChanged(int value); + + void sliderPressed(); + void sliderMoved(int position); + void sliderReleased(); + + void rangeChanged(int min, int max); + + void actionTriggered(int action); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + + void setRepeatAction(SliderAction action, int thresholdTime = 500, int repeatTime = 50); + SliderAction repeatAction() const; + + enum SliderChange { + SliderRangeChange, + SliderOrientationChange, + SliderStepsChange, + SliderValueChange + }; + virtual void sliderChange(SliderChange change); + + void keyPressEvent(QKeyEvent *ev) Q_DECL_OVERRIDE; + void timerEvent(QTimerEvent *) Q_DECL_OVERRIDE; +#if QT_CONFIG(wheelevent) + void wheelEvent(QWheelEvent *e) Q_DECL_OVERRIDE; +#endif + void changeEvent(QEvent *e) Q_DECL_OVERRIDE; + + +protected: + QAbstractSlider(QAbstractSliderPrivate &dd, QWidget *parent = Q_NULLPTR); + +private: + Q_DISABLE_COPY(QAbstractSlider) + Q_DECLARE_PRIVATE(QAbstractSlider) +}; + +QT_END_NAMESPACE + +#endif // QABSTRACTSLIDER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractspinbox.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractspinbox.h new file mode 100644 index 000000000..88735baf1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qabstractspinbox.h @@ -0,0 +1,179 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QABSTRACTSPINBOX_H +#define QABSTRACTSPINBOX_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> +#include <QtGui/qvalidator.h> + +QT_REQUIRE_CONFIG(spinbox); + +QT_BEGIN_NAMESPACE + +class QLineEdit; + +class QAbstractSpinBoxPrivate; +class QStyleOptionSpinBox; + +class Q_WIDGETS_EXPORT QAbstractSpinBox : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(bool wrapping READ wrapping WRITE setWrapping) + Q_PROPERTY(bool frame READ hasFrame WRITE setFrame) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) + Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) + Q_PROPERTY(ButtonSymbols buttonSymbols READ buttonSymbols WRITE setButtonSymbols) + Q_PROPERTY(QString specialValueText READ specialValueText WRITE setSpecialValueText) + Q_PROPERTY(QString text READ text) + Q_PROPERTY(bool accelerated READ isAccelerated WRITE setAccelerated) + Q_PROPERTY(CorrectionMode correctionMode READ correctionMode WRITE setCorrectionMode) + Q_PROPERTY(bool acceptableInput READ hasAcceptableInput) + Q_PROPERTY(bool keyboardTracking READ keyboardTracking WRITE setKeyboardTracking) + Q_PROPERTY(bool showGroupSeparator READ isGroupSeparatorShown WRITE setGroupSeparatorShown) +public: + explicit QAbstractSpinBox(QWidget *parent = Q_NULLPTR); + ~QAbstractSpinBox(); + + enum StepEnabledFlag { StepNone = 0x00, StepUpEnabled = 0x01, + StepDownEnabled = 0x02 }; + Q_DECLARE_FLAGS(StepEnabled, StepEnabledFlag) + + enum ButtonSymbols { UpDownArrows, PlusMinus, NoButtons }; + Q_ENUM(ButtonSymbols) + + ButtonSymbols buttonSymbols() const; + void setButtonSymbols(ButtonSymbols bs); + + enum CorrectionMode { CorrectToPreviousValue, CorrectToNearestValue }; + Q_ENUM(CorrectionMode) + + void setCorrectionMode(CorrectionMode cm); + CorrectionMode correctionMode() const; + + bool hasAcceptableInput() const; + QString text() const; + + QString specialValueText() const; + void setSpecialValueText(const QString &txt); + + bool wrapping() const; + void setWrapping(bool w); + + void setReadOnly(bool r); + bool isReadOnly() const; + + void setKeyboardTracking(bool kt); + bool keyboardTracking() const; + + void setAlignment(Qt::Alignment flag); + Qt::Alignment alignment() const; + + void setFrame(bool); + bool hasFrame() const; + + void setAccelerated(bool on); + bool isAccelerated() const; + + void setGroupSeparatorShown(bool shown); + bool isGroupSeparatorShown() const; + + QSize sizeHint() const override; + QSize minimumSizeHint() const override; + void interpretText(); + bool event(QEvent *event) override; + + QVariant inputMethodQuery(Qt::InputMethodQuery) const override; + + virtual QValidator::State validate(QString &input, int &pos) const; + virtual void fixup(QString &input) const; + + virtual void stepBy(int steps); +public Q_SLOTS: + void stepUp(); + void stepDown(); + void selectAll(); + virtual void clear(); +protected: + void resizeEvent(QResizeEvent *event) override; + void keyPressEvent(QKeyEvent *event) override; + void keyReleaseEvent(QKeyEvent *event) override; +#if QT_CONFIG(wheelevent) + void wheelEvent(QWheelEvent *event) override; +#endif + void focusInEvent(QFocusEvent *event) override; + void focusOutEvent(QFocusEvent *event) override; +#if QT_CONFIG(contextmenu) + void contextMenuEvent(QContextMenuEvent *event) override; +#endif + void changeEvent(QEvent *event) override; + void closeEvent(QCloseEvent *event) override; + void hideEvent(QHideEvent *event) override; + void mousePressEvent(QMouseEvent *event) override; + void mouseReleaseEvent(QMouseEvent *event) override; + void mouseMoveEvent(QMouseEvent *event) override; + void timerEvent(QTimerEvent *event) override; + void paintEvent(QPaintEvent *event) override; + void showEvent(QShowEvent *event) override; + void initStyleOption(QStyleOptionSpinBox *option) const; + + QLineEdit *lineEdit() const; + void setLineEdit(QLineEdit *edit); + + virtual StepEnabled stepEnabled() const; +Q_SIGNALS: + void editingFinished(); +protected: + QAbstractSpinBox(QAbstractSpinBoxPrivate &dd, QWidget *parent = Q_NULLPTR); + +private: + Q_PRIVATE_SLOT(d_func(), void _q_editorTextChanged(const QString &)) + Q_PRIVATE_SLOT(d_func(), void _q_editorCursorPositionChanged(int, int)) + + Q_DECLARE_PRIVATE(QAbstractSpinBox) + Q_DISABLE_COPY(QAbstractSpinBox) + friend class QAccessibleAbstractSpinBox; +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractSpinBox::StepEnabled) + +QT_END_NAMESPACE + +#endif // QABSTRACTSPINBOX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qaccessiblewidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qaccessiblewidget.h new file mode 100644 index 000000000..e09c3ff48 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qaccessiblewidget.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACCESSIBLEWIDGET_H +#define QACCESSIBLEWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtGui/qaccessibleobject.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ACCESSIBILITY + +class QAccessibleWidgetPrivate; + +class Q_WIDGETS_EXPORT QAccessibleWidget : public QAccessibleObject, public QAccessibleActionInterface +{ +public: + explicit QAccessibleWidget(QWidget *o, QAccessible::Role r = QAccessible::Client, const QString& name = QString()); + bool isValid() const Q_DECL_OVERRIDE; + + QWindow *window() const Q_DECL_OVERRIDE; + int childCount() const Q_DECL_OVERRIDE; + int indexOfChild(const QAccessibleInterface *child) const Q_DECL_OVERRIDE; + QVector<QPair<QAccessibleInterface*, QAccessible::Relation> > relations(QAccessible::Relation match = QAccessible::AllRelations) const Q_DECL_OVERRIDE; + QAccessibleInterface *focusChild() const Q_DECL_OVERRIDE; + + QRect rect() const Q_DECL_OVERRIDE; + + QAccessibleInterface *parent() const Q_DECL_OVERRIDE; + QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE; + + QString text(QAccessible::Text t) const Q_DECL_OVERRIDE; + QAccessible::Role role() const Q_DECL_OVERRIDE; + QAccessible::State state() const Q_DECL_OVERRIDE; + + QColor foregroundColor() const Q_DECL_OVERRIDE; + QColor backgroundColor() const Q_DECL_OVERRIDE; + + void *interface_cast(QAccessible::InterfaceType t) Q_DECL_OVERRIDE; + + // QAccessibleActionInterface + QStringList actionNames() const Q_DECL_OVERRIDE; + void doAction(const QString &actionName) Q_DECL_OVERRIDE; + QStringList keyBindingsForAction(const QString &actionName) const Q_DECL_OVERRIDE; +protected: + ~QAccessibleWidget(); + QWidget *widget() const; + QObject *parentObject() const; + + void addControllingSignal(const QString &signal); + +private: + QAccessibleWidgetPrivate *d; + Q_DISABLE_COPY(QAccessibleWidget) +}; + + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif // QACCESSIBLEWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qaction.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qaction.h new file mode 100644 index 000000000..41e29e6ab --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qaction.h @@ -0,0 +1,225 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACTION_H +#define QACTION_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtGui/qkeysequence.h> +#include <QtCore/qstring.h> +#include <QtWidgets/qwidget.h> +#include <QtCore/qvariant.h> +#include <QtGui/qicon.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ACTION + +class QMenu; +class QActionGroup; +class QActionPrivate; +class QGraphicsWidget; + +class Q_WIDGETS_EXPORT QAction : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QAction) + + Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable NOTIFY changed) + Q_PROPERTY(bool checked READ isChecked WRITE setChecked DESIGNABLE isCheckable NOTIFY toggled) + Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY changed) + Q_PROPERTY(QIcon icon READ icon WRITE setIcon NOTIFY changed) + Q_PROPERTY(QString text READ text WRITE setText NOTIFY changed) + Q_PROPERTY(QString iconText READ iconText WRITE setIconText NOTIFY changed) + Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip NOTIFY changed) + Q_PROPERTY(QString statusTip READ statusTip WRITE setStatusTip NOTIFY changed) + Q_PROPERTY(QString whatsThis READ whatsThis WRITE setWhatsThis NOTIFY changed) + Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY changed) +#ifndef QT_NO_SHORTCUT + Q_PROPERTY(QKeySequence shortcut READ shortcut WRITE setShortcut NOTIFY changed) + Q_PROPERTY(Qt::ShortcutContext shortcutContext READ shortcutContext WRITE setShortcutContext NOTIFY changed) + Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat NOTIFY changed) +#endif + Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY changed) + Q_PROPERTY(MenuRole menuRole READ menuRole WRITE setMenuRole NOTIFY changed) + Q_PROPERTY(bool iconVisibleInMenu READ isIconVisibleInMenu WRITE setIconVisibleInMenu NOTIFY changed) + Q_PROPERTY(Priority priority READ priority WRITE setPriority) + +public: + // note this is copied into qplatformmenu.h, which must stay in sync + enum MenuRole { NoRole = 0, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole, + AboutRole, PreferencesRole, QuitRole }; + Q_ENUM(MenuRole) + enum Priority { LowPriority = 0, + NormalPriority = 128, + HighPriority = 256}; + Q_ENUM(Priority) + explicit QAction(QObject *parent = nullptr); + explicit QAction(const QString &text, QObject *parent = nullptr); + explicit QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr); + + ~QAction(); + + void setActionGroup(QActionGroup *group); + QActionGroup *actionGroup() const; + void setIcon(const QIcon &icon); + QIcon icon() const; + + void setText(const QString &text); + QString text() const; + + void setIconText(const QString &text); + QString iconText() const; + + void setToolTip(const QString &tip); + QString toolTip() const; + + void setStatusTip(const QString &statusTip); + QString statusTip() const; + + void setWhatsThis(const QString &what); + QString whatsThis() const; + + void setPriority(Priority priority); + Priority priority() const; + +#if QT_CONFIG(menu) + QMenu *menu() const; + void setMenu(QMenu *menu); +#endif + + void setSeparator(bool b); + bool isSeparator() const; + +#ifndef QT_NO_SHORTCUT + void setShortcut(const QKeySequence &shortcut); + QKeySequence shortcut() const; + + void setShortcuts(const QList<QKeySequence> &shortcuts); + void setShortcuts(QKeySequence::StandardKey); + QList<QKeySequence> shortcuts() const; + + void setShortcutContext(Qt::ShortcutContext context); + Qt::ShortcutContext shortcutContext() const; + + void setAutoRepeat(bool); + bool autoRepeat() const; +#endif + + void setFont(const QFont &font); + QFont font() const; + + void setCheckable(bool); + bool isCheckable() const; + + QVariant data() const; + void setData(const QVariant &var); + + bool isChecked() const; + + bool isEnabled() const; + + bool isVisible() const; + + enum ActionEvent { Trigger, Hover }; + void activate(ActionEvent event); + bool showStatusText(QWidget *widget = Q_NULLPTR); + + void setMenuRole(MenuRole menuRole); + MenuRole menuRole() const; + + void setIconVisibleInMenu(bool visible); + bool isIconVisibleInMenu() const; + + + QWidget *parentWidget() const; + + QList<QWidget *> associatedWidgets() const; +#if QT_CONFIG(graphicsview) + QList<QGraphicsWidget *> associatedGraphicsWidgets() const; // ### suboptimal +#endif + +protected: + bool event(QEvent *) Q_DECL_OVERRIDE; + QAction(QActionPrivate &dd, QObject *parent); + +public Q_SLOTS: + void trigger() { activate(Trigger); } + void hover() { activate(Hover); } + void setChecked(bool); + void toggle(); + void setEnabled(bool); + inline void setDisabled(bool b) { setEnabled(!b); } + void setVisible(bool); + +Q_SIGNALS: + void changed(); + void triggered(bool checked = false); + void hovered(); + void toggled(bool); + +private: + Q_DISABLE_COPY(QAction) + + friend class QGraphicsWidget; + friend class QWidget; + friend class QActionGroup; + friend class QMenu; + friend class QMenuPrivate; + friend class QMenuBar; + friend class QToolButton; +#ifdef Q_OS_MAC + friend void qt_mac_clear_status_text(QAction *action); +#endif +}; + +#ifndef QT_NO_DEBUG_STREAM +Q_WIDGETS_EXPORT QDebug operator<<(QDebug, const QAction *); +#endif + +QT_BEGIN_INCLUDE_NAMESPACE +#include <QtWidgets/qactiongroup.h> +QT_END_INCLUDE_NAMESPACE + +#endif // QT_NO_ACTION + +QT_END_NAMESPACE + +#endif // QACTION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qactiongroup.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qactiongroup.h new file mode 100644 index 000000000..61c90b911 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qactiongroup.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACTIONGROUP_H +#define QACTIONGROUP_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qaction.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ACTION + +class QActionGroupPrivate; + +class Q_WIDGETS_EXPORT QActionGroup : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QActionGroup) + + Q_PROPERTY(bool exclusive READ isExclusive WRITE setExclusive) + Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled) + Q_PROPERTY(bool visible READ isVisible WRITE setVisible) + +public: + explicit QActionGroup(QObject* parent); + ~QActionGroup(); + + QAction *addAction(QAction* a); + QAction *addAction(const QString &text); + QAction *addAction(const QIcon &icon, const QString &text); + void removeAction(QAction *a); + QList<QAction*> actions() const; + + QAction *checkedAction() const; + bool isExclusive() const; + bool isEnabled() const; + bool isVisible() const; + + +public Q_SLOTS: + void setEnabled(bool); + inline void setDisabled(bool b) { setEnabled(!b); } + void setVisible(bool); + void setExclusive(bool); + +Q_SIGNALS: + void triggered(QAction *); + void hovered(QAction *); + +private: + Q_DISABLE_COPY(QActionGroup) + Q_PRIVATE_SLOT(d_func(), void _q_actionTriggered()) + Q_PRIVATE_SLOT(d_func(), void _q_actionChanged()) + Q_PRIVATE_SLOT(d_func(), void _q_actionHovered()) +}; + +#endif // QT_NO_ACTION + +QT_END_NAMESPACE + +#endif // QACTIONGROUP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qapplication.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qapplication.h new file mode 100644 index 000000000..396d0c947 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qapplication.h @@ -0,0 +1,234 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QAPPLICATION_H +#define QAPPLICATION_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qcoreapplication.h> +#include <QtGui/qwindowdefs.h> +#include <QtCore/qpoint.h> +#include <QtCore/qsize.h> +#include <QtGui/qcursor.h> +#ifdef QT_INCLUDE_COMPAT +# include <QtWidgets/qdesktopwidget.h> +#endif +#include <QtGui/qguiapplication.h> + +QT_BEGIN_NAMESPACE + + +class QDesktopWidget; +class QStyle; +class QEventLoop; +class QIcon; +template <typename T> class QList; +class QLocale; +class QPlatformNativeInterface; + +class QApplication; +class QApplicationPrivate; +#if defined(qApp) +#undef qApp +#endif +#define qApp (static_cast<QApplication *>(QCoreApplication::instance())) + +class Q_WIDGETS_EXPORT QApplication : public QGuiApplication +{ + Q_OBJECT + Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon) + Q_PROPERTY(int cursorFlashTime READ cursorFlashTime WRITE setCursorFlashTime) + Q_PROPERTY(int doubleClickInterval READ doubleClickInterval WRITE setDoubleClickInterval) + Q_PROPERTY(int keyboardInputInterval READ keyboardInputInterval WRITE setKeyboardInputInterval) +#if QT_CONFIG(wheelevent) + Q_PROPERTY(int wheelScrollLines READ wheelScrollLines WRITE setWheelScrollLines) +#endif + Q_PROPERTY(QSize globalStrut READ globalStrut WRITE setGlobalStrut) + Q_PROPERTY(int startDragTime READ startDragTime WRITE setStartDragTime) + Q_PROPERTY(int startDragDistance READ startDragDistance WRITE setStartDragDistance) +#ifndef QT_NO_STYLE_STYLESHEET + Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet) +#endif + Q_PROPERTY(bool autoSipEnabled READ autoSipEnabled WRITE setAutoSipEnabled) + +public: +#ifdef Q_QDOC + QApplication(int &argc, char **argv); +#else + QApplication(int &argc, char **argv, int = ApplicationFlags); +#endif + virtual ~QApplication(); + + static QStyle *style(); + static void setStyle(QStyle*); + static QStyle *setStyle(const QString&); + enum ColorSpec { NormalColor=0, CustomColor=1, ManyColor=2 }; +#if QT_DEPRECATED_SINCE(5, 8) + QT_DEPRECATED static int colorSpec(); + QT_DEPRECATED static void setColorSpec(int); +#endif // QT_DEPRECATED_SINCE(5, 8) +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED static inline void setGraphicsSystem(const QString &) {} +#endif + + using QGuiApplication::palette; + static QPalette palette(const QWidget *); + static QPalette palette(const char *className); + static void setPalette(const QPalette &, const char* className = Q_NULLPTR); + static QFont font(); + static QFont font(const QWidget*); + static QFont font(const char *className); + static void setFont(const QFont &, const char* className = Q_NULLPTR); + static QFontMetrics fontMetrics(); + +#if QT_VERSION < 0x060000 // remove these forwarders in Qt 6 + static void setWindowIcon(const QIcon &icon); + static QIcon windowIcon(); +#endif + + static QWidgetList allWidgets(); + static QWidgetList topLevelWidgets(); + + static QDesktopWidget *desktop(); + + static QWidget *activePopupWidget(); + static QWidget *activeModalWidget(); + static QWidget *focusWidget(); + + static QWidget *activeWindow(); + static void setActiveWindow(QWidget* act); + + static QWidget *widgetAt(const QPoint &p); + static inline QWidget *widgetAt(int x, int y) { return widgetAt(QPoint(x, y)); } + static QWidget *topLevelAt(const QPoint &p); + static inline QWidget *topLevelAt(int x, int y) { return topLevelAt(QPoint(x, y)); } + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED static inline void syncX() {} +#endif + static void beep(); + static void alert(QWidget *widget, int duration = 0); + + static void setCursorFlashTime(int); + static int cursorFlashTime(); + + static void setDoubleClickInterval(int); + static int doubleClickInterval(); + + static void setKeyboardInputInterval(int); + static int keyboardInputInterval(); + +#if QT_CONFIG(wheelevent) + static void setWheelScrollLines(int); + static int wheelScrollLines(); +#endif + static void setGlobalStrut(const QSize &); + static QSize globalStrut(); + + static void setStartDragTime(int ms); + static int startDragTime(); + static void setStartDragDistance(int l); + static int startDragDistance(); + + static bool isEffectEnabled(Qt::UIEffect); + static void setEffectEnabled(Qt::UIEffect, bool enable = true); + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED static QLocale keyboardInputLocale() + { return qApp ? QGuiApplication::inputMethod()->locale() : QLocale::c(); } + QT_DEPRECATED static Qt::LayoutDirection keyboardInputDirection() + { return qApp ? QGuiApplication::inputMethod()->inputDirection() : Qt::LeftToRight; } +#endif + + static int exec(); + bool notify(QObject *, QEvent *) Q_DECL_OVERRIDE; + +#ifdef QT_KEYPAD_NAVIGATION + static Q_DECL_DEPRECATED void setKeypadNavigationEnabled(bool); + static bool keypadNavigationEnabled(); + static void setNavigationMode(Qt::NavigationMode mode); + static Qt::NavigationMode navigationMode(); +#endif + +Q_SIGNALS: + void focusChanged(QWidget *old, QWidget *now); + +public: + QString styleSheet() const; +public Q_SLOTS: +#ifndef QT_NO_STYLE_STYLESHEET + void setStyleSheet(const QString& sheet); +#endif + void setAutoSipEnabled(const bool enabled); + bool autoSipEnabled() const; + static void closeAllWindows(); + static void aboutQt(); + +protected: + bool event(QEvent *) Q_DECL_OVERRIDE; + bool compressEvent(QEvent *, QObject *receiver, QPostEventList *) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QApplication) + Q_DECLARE_PRIVATE(QApplication) + + friend class QGraphicsWidget; + friend class QGraphicsItem; + friend class QGraphicsScene; + friend class QGraphicsScenePrivate; + friend class QWidget; + friend class QWidgetPrivate; + friend class QWidgetWindow; + friend class QTranslator; + friend class QWidgetAnimator; +#ifndef QT_NO_SHORTCUT + friend class QShortcut; + friend class QLineEdit; + friend class QWidgetTextControl; +#endif + friend class QAction; + +#ifndef QT_NO_GESTURES + friend class QGestureManager; +#endif +}; + +QT_END_NAMESPACE + +#endif // QAPPLICATION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qboxlayout.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qboxlayout.h new file mode 100644 index 000000000..9c7d0e593 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qboxlayout.h @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBOXLAYOUT_H +#define QBOXLAYOUT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qlayout.h> +#ifdef QT_INCLUDE_COMPAT +#include <QtWidgets/qwidget.h> +#endif + +#include <limits.h> + +QT_BEGIN_NAMESPACE + + +class QBoxLayoutPrivate; + +class Q_WIDGETS_EXPORT QBoxLayout : public QLayout +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QBoxLayout) +public: + enum Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop, + Down = TopToBottom, Up = BottomToTop }; + + explicit QBoxLayout(Direction, QWidget *parent = Q_NULLPTR); + + ~QBoxLayout(); + + Direction direction() const; + void setDirection(Direction); + + void addSpacing(int size); + void addStretch(int stretch = 0); + void addSpacerItem(QSpacerItem *spacerItem); + void addWidget(QWidget *, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()); + void addLayout(QLayout *layout, int stretch = 0); + void addStrut(int); + void addItem(QLayoutItem *) Q_DECL_OVERRIDE; + + void insertSpacing(int index, int size); + void insertStretch(int index, int stretch = 0); + void insertSpacerItem(int index, QSpacerItem *spacerItem); + void insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()); + void insertLayout(int index, QLayout *layout, int stretch = 0); + void insertItem(int index, QLayoutItem *); + + int spacing() const; + void setSpacing(int spacing); + + bool setStretchFactor(QWidget *w, int stretch); + bool setStretchFactor(QLayout *l, int stretch); + void setStretch(int index, int stretch); + int stretch(int index) const; + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSize() const Q_DECL_OVERRIDE; + QSize maximumSize() const Q_DECL_OVERRIDE; + + bool hasHeightForWidth() const Q_DECL_OVERRIDE; + int heightForWidth(int) const Q_DECL_OVERRIDE; + int minimumHeightForWidth(int) const Q_DECL_OVERRIDE; + + Qt::Orientations expandingDirections() const Q_DECL_OVERRIDE; + void invalidate() Q_DECL_OVERRIDE; + QLayoutItem *itemAt(int) const Q_DECL_OVERRIDE; + QLayoutItem *takeAt(int) Q_DECL_OVERRIDE; + int count() const Q_DECL_OVERRIDE; + void setGeometry(const QRect&) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QBoxLayout) +}; + +class Q_WIDGETS_EXPORT QHBoxLayout : public QBoxLayout +{ + Q_OBJECT +public: + QHBoxLayout(); + explicit QHBoxLayout(QWidget *parent); + ~QHBoxLayout(); + + +private: + Q_DISABLE_COPY(QHBoxLayout) +}; + +class Q_WIDGETS_EXPORT QVBoxLayout : public QBoxLayout +{ + Q_OBJECT +public: + QVBoxLayout(); + explicit QVBoxLayout(QWidget *parent); + ~QVBoxLayout(); + + +private: + Q_DISABLE_COPY(QVBoxLayout) +}; + +QT_END_NAMESPACE + +#endif // QBOXLAYOUT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qbuttongroup.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qbuttongroup.h new file mode 100644 index 000000000..1b4f2377a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qbuttongroup.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBUTTONGROUP_H +#define QBUTTONGROUP_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> + +QT_REQUIRE_CONFIG(buttongroup); + +QT_BEGIN_NAMESPACE + +class QAbstractButton; +class QAbstractButtonPrivate; +class QButtonGroupPrivate; + +class Q_WIDGETS_EXPORT QButtonGroup : public QObject +{ + Q_OBJECT + + Q_PROPERTY(bool exclusive READ exclusive WRITE setExclusive) +public: + explicit QButtonGroup(QObject *parent = Q_NULLPTR); + ~QButtonGroup(); + + void setExclusive(bool); + bool exclusive() const; + + void addButton(QAbstractButton *, int id = -1); + void removeButton(QAbstractButton *); + + QList<QAbstractButton*> buttons() const; + + QAbstractButton * checkedButton() const; + // no setter on purpose! + + QAbstractButton *button(int id) const; + void setId(QAbstractButton *button, int id); + int id(QAbstractButton *button) const; + int checkedId() const; + +Q_SIGNALS: + void buttonClicked(QAbstractButton *); + void buttonClicked(int); + void buttonPressed(QAbstractButton *); + void buttonPressed(int); + void buttonReleased(QAbstractButton *); + void buttonReleased(int); + void buttonToggled(QAbstractButton *, bool); + void buttonToggled(int, bool); + +private: + Q_DISABLE_COPY(QButtonGroup) + Q_DECLARE_PRIVATE(QButtonGroup) + friend class QAbstractButton; + friend class QAbstractButtonPrivate; +}; + +QT_END_NAMESPACE + +#endif // QBUTTONGROUP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qcalendarwidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcalendarwidget.h new file mode 100644 index 000000000..29e2ff698 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcalendarwidget.h @@ -0,0 +1,188 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCALENDARWIDGET_H +#define QCALENDARWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> +#include <QtCore/qdatetime.h> + +QT_REQUIRE_CONFIG(calendarwidget); + +QT_BEGIN_NAMESPACE + +class QDate; +class QTextCharFormat; +class QCalendarWidgetPrivate; + +class Q_WIDGETS_EXPORT QCalendarWidget : public QWidget +{ + Q_OBJECT + Q_ENUMS(Qt::DayOfWeek) + Q_PROPERTY(QDate selectedDate READ selectedDate WRITE setSelectedDate) + Q_PROPERTY(QDate minimumDate READ minimumDate WRITE setMinimumDate) + Q_PROPERTY(QDate maximumDate READ maximumDate WRITE setMaximumDate) + Q_PROPERTY(Qt::DayOfWeek firstDayOfWeek READ firstDayOfWeek WRITE setFirstDayOfWeek) + Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible) + Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) + Q_PROPERTY(HorizontalHeaderFormat horizontalHeaderFormat READ horizontalHeaderFormat WRITE setHorizontalHeaderFormat) + Q_PROPERTY(VerticalHeaderFormat verticalHeaderFormat READ verticalHeaderFormat WRITE setVerticalHeaderFormat) + Q_PROPERTY(bool navigationBarVisible READ isNavigationBarVisible WRITE setNavigationBarVisible) + Q_PROPERTY(bool dateEditEnabled READ isDateEditEnabled WRITE setDateEditEnabled) + Q_PROPERTY(int dateEditAcceptDelay READ dateEditAcceptDelay WRITE setDateEditAcceptDelay) + +public: + enum HorizontalHeaderFormat { + NoHorizontalHeader, + SingleLetterDayNames, + ShortDayNames, + LongDayNames + }; + Q_ENUM(HorizontalHeaderFormat) + + enum VerticalHeaderFormat { + NoVerticalHeader, + ISOWeekNumbers + }; + Q_ENUM(VerticalHeaderFormat) + + enum SelectionMode { + NoSelection, + SingleSelection + }; + Q_ENUM(SelectionMode) + + explicit QCalendarWidget(QWidget *parent = Q_NULLPTR); + ~QCalendarWidget(); + + virtual QSize sizeHint() const Q_DECL_OVERRIDE; + virtual QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + QDate selectedDate() const; + + int yearShown() const; + int monthShown() const; + + QDate minimumDate() const; + void setMinimumDate(const QDate &date); + + QDate maximumDate() const; + void setMaximumDate(const QDate &date); + + Qt::DayOfWeek firstDayOfWeek() const; + void setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek); + + bool isNavigationBarVisible() const; + bool isGridVisible() const; + + SelectionMode selectionMode() const; + void setSelectionMode(SelectionMode mode); + + HorizontalHeaderFormat horizontalHeaderFormat() const; + void setHorizontalHeaderFormat(HorizontalHeaderFormat format); + + VerticalHeaderFormat verticalHeaderFormat() const; + void setVerticalHeaderFormat(VerticalHeaderFormat format); + + QTextCharFormat headerTextFormat() const; + void setHeaderTextFormat(const QTextCharFormat &format); + + QTextCharFormat weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const; + void setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format); + + QMap<QDate, QTextCharFormat> dateTextFormat() const; + QTextCharFormat dateTextFormat(const QDate &date) const; + void setDateTextFormat(const QDate &date, const QTextCharFormat &format); + + bool isDateEditEnabled() const; + void setDateEditEnabled(bool enable); + + int dateEditAcceptDelay() const; + void setDateEditAcceptDelay(int delay); + +protected: + bool event(QEvent *event) Q_DECL_OVERRIDE; + bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent * event) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent * event) Q_DECL_OVERRIDE; + + virtual void paintCell(QPainter *painter, const QRect &rect, const QDate &date) const; + void updateCell(const QDate &date); + void updateCells(); + +public Q_SLOTS: + void setSelectedDate(const QDate &date); + void setDateRange(const QDate &min, const QDate &max); + void setCurrentPage(int year, int month); + void setGridVisible(bool show); + void setNavigationBarVisible(bool visible); + void showNextMonth(); + void showPreviousMonth(); + void showNextYear(); + void showPreviousYear(); + void showSelectedDate(); + void showToday(); + +Q_SIGNALS: + void selectionChanged(); + void clicked(const QDate &date); + void activated(const QDate &date); + void currentPageChanged(int year, int month); + +private: + Q_DECLARE_PRIVATE(QCalendarWidget) + Q_DISABLE_COPY(QCalendarWidget) + + Q_PRIVATE_SLOT(d_func(), void _q_slotShowDate(const QDate &date)) + Q_PRIVATE_SLOT(d_func(), void _q_slotChangeDate(const QDate &date)) + Q_PRIVATE_SLOT(d_func(), void _q_slotChangeDate(const QDate &date, bool changeMonth)) + Q_PRIVATE_SLOT(d_func(), void _q_editingFinished()) + Q_PRIVATE_SLOT(d_func(), void _q_prevMonthClicked()) + Q_PRIVATE_SLOT(d_func(), void _q_nextMonthClicked()) + Q_PRIVATE_SLOT(d_func(), void _q_yearEditingFinished()) + Q_PRIVATE_SLOT(d_func(), void _q_yearClicked()) + Q_PRIVATE_SLOT(d_func(), void _q_monthChanged(QAction *act)) + +}; + +QT_END_NAMESPACE + +#endif // QCALENDARWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qcheckbox.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcheckbox.h new file mode 100644 index 000000000..8543c4c86 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcheckbox.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCHECKBOX_H +#define QCHECKBOX_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractbutton.h> + +QT_REQUIRE_CONFIG(checkbox); + +QT_BEGIN_NAMESPACE + + +class QCheckBoxPrivate; +class QStyleOptionButton; + +class Q_WIDGETS_EXPORT QCheckBox : public QAbstractButton +{ + Q_OBJECT + + Q_PROPERTY(bool tristate READ isTristate WRITE setTristate) + +public: + explicit QCheckBox(QWidget *parent = Q_NULLPTR); + explicit QCheckBox(const QString &text, QWidget *parent = Q_NULLPTR); + ~QCheckBox(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + void setTristate(bool y = true); + bool isTristate() const; + + Qt::CheckState checkState() const; + void setCheckState(Qt::CheckState state); + +Q_SIGNALS: + void stateChanged(int); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + bool hitButton(const QPoint &pos) const Q_DECL_OVERRIDE; + void checkStateSet() Q_DECL_OVERRIDE; + void nextCheckState() Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionButton *option) const; + + +private: + Q_DECLARE_PRIVATE(QCheckBox) + Q_DISABLE_COPY(QCheckBox) + friend class QAccessibleButton; +}; + +QT_END_NAMESPACE + +#endif // QCHECKBOX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qcolordialog.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcolordialog.h new file mode 100644 index 000000000..a27cfaf95 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcolordialog.h @@ -0,0 +1,129 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOLORDIALOG_H +#define QCOLORDIALOG_H + +#include <QtWidgets/qtwidgetsglobal.h> + +#include <QtWidgets/qdialog.h> + +QT_REQUIRE_CONFIG(colordialog); + +QT_BEGIN_NAMESPACE + +class QColorDialogPrivate; + +class Q_WIDGETS_EXPORT QColorDialog : public QDialog +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QColorDialog) + Q_PROPERTY(QColor currentColor READ currentColor WRITE setCurrentColor + NOTIFY currentColorChanged) + Q_PROPERTY(ColorDialogOptions options READ options WRITE setOptions) + +public: + enum ColorDialogOption { + ShowAlphaChannel = 0x00000001, + NoButtons = 0x00000002, + DontUseNativeDialog = 0x00000004 + }; + Q_ENUM(ColorDialogOption) + + Q_DECLARE_FLAGS(ColorDialogOptions, ColorDialogOption) + + explicit QColorDialog(QWidget *parent = Q_NULLPTR); + explicit QColorDialog(const QColor &initial, QWidget *parent = Q_NULLPTR); + ~QColorDialog(); + + void setCurrentColor(const QColor &color); + QColor currentColor() const; + + QColor selectedColor() const; + + void setOption(ColorDialogOption option, bool on = true); + bool testOption(ColorDialogOption option) const; + void setOptions(ColorDialogOptions options); + ColorDialogOptions options() const; + + using QDialog::open; + void open(QObject *receiver, const char *member); + + void setVisible(bool visible) Q_DECL_OVERRIDE; + + static QColor getColor(const QColor &initial = Qt::white, + QWidget *parent = Q_NULLPTR, + const QString &title = QString(), + ColorDialogOptions options = ColorDialogOptions()); + + // obsolete + static QRgb getRgba(QRgb rgba = 0xffffffff, bool *ok = Q_NULLPTR, QWidget *parent = Q_NULLPTR); + + static int customCount(); + static QColor customColor(int index); + static void setCustomColor(int index, QColor color); + static QColor standardColor(int index); + static void setStandardColor(int index, QColor color); + +Q_SIGNALS: + void currentColorChanged(const QColor &color); + void colorSelected(const QColor &color); + +protected: + void changeEvent(QEvent *event) Q_DECL_OVERRIDE; + void done(int result) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QColorDialog) + + Q_PRIVATE_SLOT(d_func(), void _q_addCustom()) + Q_PRIVATE_SLOT(d_func(), void _q_newHsv(int h, int s, int v)) + Q_PRIVATE_SLOT(d_func(), void _q_newColorTypedIn(QRgb rgb)) + Q_PRIVATE_SLOT(d_func(), void _q_nextCustom(int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_newCustom(int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_newStandard(int, int)) + Q_PRIVATE_SLOT(d_func(), void _q_pickScreenColor()) + Q_PRIVATE_SLOT(d_func(), void _q_updateColorPicking()) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QColorDialog::ColorDialogOptions) + +QT_END_NAMESPACE + +#endif // QCOLORDIALOG_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qcolormap.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcolormap.h new file mode 100644 index 000000000..8e652d815 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcolormap.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOLORMAP_H +#define QCOLORMAP_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qatomic.h> +#include <QtGui/qrgb.h> +#include <QtCore/qvector.h> +#include <QtGui/qwindowdefs.h> + +QT_BEGIN_NAMESPACE + + +class QColor; +class QColormapPrivate; + +class Q_WIDGETS_EXPORT QColormap +{ +public: + enum Mode { Direct, Indexed, Gray }; + + static void initialize(); + static void cleanup(); + + static QColormap instance(int screen = -1); + + QColormap(const QColormap &colormap); + ~QColormap(); + + QColormap &operator=(const QColormap &colormap); + + Mode mode() const; + + int depth() const; + int size() const; + + uint pixel(const QColor &color) const; + const QColor colorAt(uint pixel) const; + + const QVector<QColor> colormap() const; + +private: + QColormap(); + QColormapPrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QCOLORMAP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qcolumnview.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcolumnview.h new file mode 100644 index 000000000..42eac7426 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcolumnview.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOLUMNVIEW_H +#define QCOLUMNVIEW_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractitemview.h> + +QT_REQUIRE_CONFIG(columnview); + +QT_BEGIN_NAMESPACE + +class QColumnViewPrivate; + +class Q_WIDGETS_EXPORT QColumnView : public QAbstractItemView { + +Q_OBJECT + Q_PROPERTY(bool resizeGripsVisible READ resizeGripsVisible WRITE setResizeGripsVisible) + +Q_SIGNALS: + void updatePreviewWidget(const QModelIndex &index); + +public: + explicit QColumnView(QWidget *parent = Q_NULLPTR); + ~QColumnView(); + + // QAbstractItemView overloads + QModelIndex indexAt(const QPoint &point) const Q_DECL_OVERRIDE; + void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) Q_DECL_OVERRIDE; + QSize sizeHint() const Q_DECL_OVERRIDE; + QRect visualRect(const QModelIndex &index) const Q_DECL_OVERRIDE; + void setModel(QAbstractItemModel *model) Q_DECL_OVERRIDE; + void setSelectionModel(QItemSelectionModel * selectionModel) Q_DECL_OVERRIDE; + void setRootIndex(const QModelIndex &index) Q_DECL_OVERRIDE; + void selectAll() Q_DECL_OVERRIDE; + + // QColumnView functions + void setResizeGripsVisible(bool visible); + bool resizeGripsVisible() const; + + QWidget *previewWidget() const; + void setPreviewWidget(QWidget *widget); + + void setColumnWidths(const QList<int> &list); + QList<int> columnWidths() const; + +protected: + QColumnView(QColumnViewPrivate &dd, QWidget *parent = Q_NULLPTR); + + // QAbstractItemView overloads + bool isIndexHidden(const QModelIndex &index) const Q_DECL_OVERRIDE; + QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; + void setSelection(const QRect & rect, QItemSelectionModel::SelectionFlags command) Q_DECL_OVERRIDE; + QRegion visualRegionForSelection(const QItemSelection &selection) const Q_DECL_OVERRIDE; + int horizontalOffset() const Q_DECL_OVERRIDE; + int verticalOffset() const Q_DECL_OVERRIDE; + void rowsInserted(const QModelIndex &parent, int start, int end) Q_DECL_OVERRIDE; + void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) Q_DECL_OVERRIDE; + + // QColumnView functions + void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE; + virtual QAbstractItemView* createColumn(const QModelIndex &rootIndex); + void initializeColumn(QAbstractItemView *column) const; + +private: + Q_DECLARE_PRIVATE(QColumnView) + Q_DISABLE_COPY(QColumnView) + Q_PRIVATE_SLOT(d_func(), void _q_gripMoved(int)) + Q_PRIVATE_SLOT(d_func(), void _q_changeCurrentColumn()) + Q_PRIVATE_SLOT(d_func(), void _q_clicked(const QModelIndex &)) +}; + +QT_END_NAMESPACE + +#endif // QCOLUMNVIEW_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qcombobox.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcombobox.h new file mode 100644 index 000000000..59f2a425a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcombobox.h @@ -0,0 +1,283 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMBOBOX_H +#define QCOMBOBOX_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> +#include <QtWidgets/qabstractitemdelegate.h> +#include <QtCore/qabstractitemmodel.h> +#include <QtCore/qvariant.h> +#include <QtGui/qvalidator.h> + +QT_REQUIRE_CONFIG(combobox); + +QT_BEGIN_NAMESPACE + +class QAbstractItemView; +class QLineEdit; +class QComboBoxPrivate; +class QCompleter; + +class Q_WIDGETS_EXPORT QComboBox : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(bool editable READ isEditable WRITE setEditable) + Q_PROPERTY(int count READ count) + Q_PROPERTY(QString currentText READ currentText WRITE setCurrentText NOTIFY currentTextChanged USER true) + Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) + Q_PROPERTY(QVariant currentData READ currentData) + Q_PROPERTY(int maxVisibleItems READ maxVisibleItems WRITE setMaxVisibleItems) + Q_PROPERTY(int maxCount READ maxCount WRITE setMaxCount) + Q_PROPERTY(InsertPolicy insertPolicy READ insertPolicy WRITE setInsertPolicy) + Q_PROPERTY(SizeAdjustPolicy sizeAdjustPolicy READ sizeAdjustPolicy WRITE setSizeAdjustPolicy) + Q_PROPERTY(int minimumContentsLength READ minimumContentsLength WRITE setMinimumContentsLength) + Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) + +#if QT_CONFIG(completer) + Q_PROPERTY(bool autoCompletion READ autoCompletion WRITE setAutoCompletion DESIGNABLE false) + Q_PROPERTY(Qt::CaseSensitivity autoCompletionCaseSensitivity READ autoCompletionCaseSensitivity WRITE setAutoCompletionCaseSensitivity DESIGNABLE false) +#endif // QT_CONFIG(completer) + + Q_PROPERTY(bool duplicatesEnabled READ duplicatesEnabled WRITE setDuplicatesEnabled) + Q_PROPERTY(bool frame READ hasFrame WRITE setFrame) + Q_PROPERTY(int modelColumn READ modelColumn WRITE setModelColumn) + +public: + explicit QComboBox(QWidget *parent = Q_NULLPTR); + ~QComboBox(); + + int maxVisibleItems() const; + void setMaxVisibleItems(int maxItems); + + int count() const; + void setMaxCount(int max); + int maxCount() const; + +#if QT_CONFIG(completer) + bool autoCompletion() const; + void setAutoCompletion(bool enable); + + Qt::CaseSensitivity autoCompletionCaseSensitivity() const; + void setAutoCompletionCaseSensitivity(Qt::CaseSensitivity sensitivity); +#endif + + bool duplicatesEnabled() const; + void setDuplicatesEnabled(bool enable); + + void setFrame(bool); + bool hasFrame() const; + + inline int findText(const QString &text, + Qt::MatchFlags flags = static_cast<Qt::MatchFlags>(Qt::MatchExactly|Qt::MatchCaseSensitive)) const + { return findData(text, Qt::DisplayRole, flags); } + int findData(const QVariant &data, int role = Qt::UserRole, + Qt::MatchFlags flags = static_cast<Qt::MatchFlags>(Qt::MatchExactly|Qt::MatchCaseSensitive)) const; + + enum InsertPolicy { + NoInsert, + InsertAtTop, + InsertAtCurrent, + InsertAtBottom, + InsertAfterCurrent, + InsertBeforeCurrent, + InsertAlphabetically + }; + Q_ENUM(InsertPolicy) + + InsertPolicy insertPolicy() const; + void setInsertPolicy(InsertPolicy policy); + + enum SizeAdjustPolicy { + AdjustToContents, + AdjustToContentsOnFirstShow, + AdjustToMinimumContentsLength, // ### Qt 6: remove + AdjustToMinimumContentsLengthWithIcon + }; + Q_ENUM(SizeAdjustPolicy) + + SizeAdjustPolicy sizeAdjustPolicy() const; + void setSizeAdjustPolicy(SizeAdjustPolicy policy); + int minimumContentsLength() const; + void setMinimumContentsLength(int characters); + QSize iconSize() const; + void setIconSize(const QSize &size); + + bool isEditable() const; + void setEditable(bool editable); + void setLineEdit(QLineEdit *edit); + QLineEdit *lineEdit() const; +#ifndef QT_NO_VALIDATOR + void setValidator(const QValidator *v); + const QValidator *validator() const; +#endif + +#if QT_CONFIG(completer) + void setCompleter(QCompleter *c); + QCompleter *completer() const; +#endif + + QAbstractItemDelegate *itemDelegate() const; + void setItemDelegate(QAbstractItemDelegate *delegate); + + QAbstractItemModel *model() const; + void setModel(QAbstractItemModel *model); + + QModelIndex rootModelIndex() const; + void setRootModelIndex(const QModelIndex &index); + + int modelColumn() const; + void setModelColumn(int visibleColumn); + + int currentIndex() const; + QString currentText() const; + QVariant currentData(int role = Qt::UserRole) const; + + QString itemText(int index) const; + QIcon itemIcon(int index) const; + QVariant itemData(int index, int role = Qt::UserRole) const; + + inline void addItem(const QString &text, const QVariant &userData = QVariant()); + inline void addItem(const QIcon &icon, const QString &text, + const QVariant &userData = QVariant()); + inline void addItems(const QStringList &texts) + { insertItems(count(), texts); } + + inline void insertItem(int index, const QString &text, const QVariant &userData = QVariant()); + void insertItem(int index, const QIcon &icon, const QString &text, + const QVariant &userData = QVariant()); + void insertItems(int index, const QStringList &texts); + void insertSeparator(int index); + + void removeItem(int index); + + void setItemText(int index, const QString &text); + void setItemIcon(int index, const QIcon &icon); + void setItemData(int index, const QVariant &value, int role = Qt::UserRole); + + QAbstractItemView *view() const; + void setView(QAbstractItemView *itemView); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + virtual void showPopup(); + virtual void hidePopup(); + + bool event(QEvent *event) Q_DECL_OVERRIDE; + QVariant inputMethodQuery(Qt::InputMethodQuery) const Q_DECL_OVERRIDE; + Q_INVOKABLE QVariant inputMethodQuery(Qt::InputMethodQuery query, const QVariant &argument) const; + +public Q_SLOTS: + void clear(); + void clearEditText(); + void setEditText(const QString &text); + void setCurrentIndex(int index); + void setCurrentText(const QString &text); + +Q_SIGNALS: + void editTextChanged(const QString &); + void activated(int index); + void activated(const QString &); + void highlighted(int index); + void highlighted(const QString &); + void currentIndexChanged(int index); + void currentIndexChanged(const QString &); + void currentTextChanged(const QString &); + +protected: + void focusInEvent(QFocusEvent *e) Q_DECL_OVERRIDE; + void focusOutEvent(QFocusEvent *e) Q_DECL_OVERRIDE; + void changeEvent(QEvent *e) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + void showEvent(QShowEvent *e) Q_DECL_OVERRIDE; + void hideEvent(QHideEvent *e) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + void keyReleaseEvent(QKeyEvent *e) Q_DECL_OVERRIDE; +#if QT_CONFIG(wheelevent) + void wheelEvent(QWheelEvent *e) Q_DECL_OVERRIDE; +#endif +#ifndef QT_NO_CONTEXTMENU + void contextMenuEvent(QContextMenuEvent *e) Q_DECL_OVERRIDE; +#endif // QT_NO_CONTEXTMENU + void inputMethodEvent(QInputMethodEvent *) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionComboBox *option) const; + + +protected: + QComboBox(QComboBoxPrivate &, QWidget *); + +private: + Q_DECLARE_PRIVATE(QComboBox) + Q_DISABLE_COPY(QComboBox) + Q_PRIVATE_SLOT(d_func(), void _q_itemSelected(const QModelIndex &item)) + Q_PRIVATE_SLOT(d_func(), void _q_emitHighlighted(const QModelIndex &)) + Q_PRIVATE_SLOT(d_func(), void _q_emitCurrentIndexChanged(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_editingFinished()) + Q_PRIVATE_SLOT(d_func(), void _q_returnPressed()) + Q_PRIVATE_SLOT(d_func(), void _q_resetButton()) + Q_PRIVATE_SLOT(d_func(), void _q_dataChanged(const QModelIndex &, const QModelIndex &)) + Q_PRIVATE_SLOT(d_func(), void _q_updateIndexBeforeChange()) + Q_PRIVATE_SLOT(d_func(), void _q_rowsInserted(const QModelIndex & parent, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_rowsRemoved(const QModelIndex & parent, int start, int end)) + Q_PRIVATE_SLOT(d_func(), void _q_modelDestroyed()) + Q_PRIVATE_SLOT(d_func(), void _q_modelReset()) +#if QT_CONFIG(completer) + Q_PRIVATE_SLOT(d_func(), void _q_completerActivated(const QModelIndex &index)) +#endif +}; + +inline void QComboBox::addItem(const QString &atext, const QVariant &auserData) +{ insertItem(count(), atext, auserData); } +inline void QComboBox::addItem(const QIcon &aicon, const QString &atext, + const QVariant &auserData) +{ insertItem(count(), aicon, atext, auserData); } + +inline void QComboBox::insertItem(int aindex, const QString &atext, + const QVariant &auserData) +{ insertItem(aindex, QIcon(), atext, auserData); } + +QT_END_NAMESPACE + +#endif // QCOMBOBOX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qcommandlinkbutton.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcommandlinkbutton.h new file mode 100644 index 000000000..d8215a256 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcommandlinkbutton.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMMANDLINKBUTTON_H +#define QCOMMANDLINKBUTTON_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qpushbutton.h> + +QT_REQUIRE_CONFIG(commandlinkbutton); + +QT_BEGIN_NAMESPACE + + +class QCommandLinkButtonPrivate; + +class Q_WIDGETS_EXPORT QCommandLinkButton: public QPushButton +{ + Q_OBJECT + + Q_PROPERTY(QString description READ description WRITE setDescription) + Q_PROPERTY(bool flat READ isFlat WRITE setFlat DESIGNABLE false) + +public: + explicit QCommandLinkButton(QWidget *parent = Q_NULLPTR); + explicit QCommandLinkButton(const QString &text, QWidget *parent = Q_NULLPTR); + explicit QCommandLinkButton(const QString &text, const QString &description, QWidget *parent = Q_NULLPTR); + ~QCommandLinkButton(); + + QString description() const; + void setDescription(const QString &description); + +protected: + QSize sizeHint() const Q_DECL_OVERRIDE; + int heightForWidth(int) const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + bool event(QEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QCommandLinkButton) + Q_DECLARE_PRIVATE(QCommandLinkButton) +}; + +QT_END_NAMESPACE + +#endif // QCOMMANDLINKBUTTON diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qcommonstyle.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcommonstyle.h new file mode 100644 index 000000000..ed880a150 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcommonstyle.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMMONSTYLE_H +#define QCOMMONSTYLE_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qstyle.h> + +QT_BEGIN_NAMESPACE + +class QCommonStylePrivate; + +class Q_WIDGETS_EXPORT QCommonStyle: public QStyle +{ + Q_OBJECT + +public: + QCommonStyle(); + ~QCommonStyle(); + + void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, + const QWidget *w = Q_NULLPTR) const Q_DECL_OVERRIDE; + void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, + const QWidget *w = Q_NULLPTR) const Q_DECL_OVERRIDE; + QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, + const QWidget *w = Q_NULLPTR) const Q_DECL_OVERRIDE; + SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, + const QPoint &pt, const QWidget *w = Q_NULLPTR) const Q_DECL_OVERRIDE; + QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, + const QWidget *w = Q_NULLPTR) const Q_DECL_OVERRIDE; + QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, + const QSize &contentsSize, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + + int pixelMetric(PixelMetric m, const QStyleOption *opt = Q_NULLPTR, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + + int styleHint(StyleHint sh, const QStyleOption *opt = Q_NULLPTR, const QWidget *w = Q_NULLPTR, + QStyleHintReturn *shret = Q_NULLPTR) const Q_DECL_OVERRIDE; + + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *opt = Q_NULLPTR, + const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt = Q_NULLPTR, + const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + + QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, + const QStyleOption *opt) const Q_DECL_OVERRIDE; + int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, + Qt::Orientation orientation, const QStyleOption *option = Q_NULLPTR, + const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + + void polish(QPalette &) Q_DECL_OVERRIDE; + void polish(QApplication *app) Q_DECL_OVERRIDE; + void polish(QWidget *widget) Q_DECL_OVERRIDE; + void unpolish(QWidget *widget) Q_DECL_OVERRIDE; + void unpolish(QApplication *application) Q_DECL_OVERRIDE; + +protected: + QCommonStyle(QCommonStylePrivate &dd); + +private: + Q_DECLARE_PRIVATE(QCommonStyle) + Q_DISABLE_COPY(QCommonStyle) +#ifndef QT_NO_ANIMATION + Q_PRIVATE_SLOT(d_func(), void _q_removeAnimation()) +#endif +}; + +QT_END_NAMESPACE + +#endif // QCOMMONSTYLE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qcompleter.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcompleter.h new file mode 100644 index 000000000..1a2c2440f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qcompleter.h @@ -0,0 +1,166 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOMPLETER_H +#define QCOMPLETER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qpoint.h> +#include <QtCore/qstring.h> +#include <QtCore/qabstractitemmodel.h> +#include <QtCore/qrect.h> + +QT_REQUIRE_CONFIG(completer); + +QT_BEGIN_NAMESPACE + +class QCompleterPrivate; +class QAbstractItemView; +class QAbstractProxyModel; +class QWidget; + +class Q_WIDGETS_EXPORT QCompleter : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString completionPrefix READ completionPrefix WRITE setCompletionPrefix) + Q_PROPERTY(ModelSorting modelSorting READ modelSorting WRITE setModelSorting) + Q_PROPERTY(Qt::MatchFlags filterMode READ filterMode WRITE setFilterMode) + Q_PROPERTY(CompletionMode completionMode READ completionMode WRITE setCompletionMode) + Q_PROPERTY(int completionColumn READ completionColumn WRITE setCompletionColumn) + Q_PROPERTY(int completionRole READ completionRole WRITE setCompletionRole) + Q_PROPERTY(int maxVisibleItems READ maxVisibleItems WRITE setMaxVisibleItems) + Q_PROPERTY(Qt::CaseSensitivity caseSensitivity READ caseSensitivity WRITE setCaseSensitivity) + Q_PROPERTY(bool wrapAround READ wrapAround WRITE setWrapAround) + +public: + enum CompletionMode { + PopupCompletion, + UnfilteredPopupCompletion, + InlineCompletion + }; + + enum ModelSorting { + UnsortedModel = 0, + CaseSensitivelySortedModel, + CaseInsensitivelySortedModel + }; + + QCompleter(QObject *parent = Q_NULLPTR); + QCompleter(QAbstractItemModel *model, QObject *parent = Q_NULLPTR); +#ifndef QT_NO_STRINGLISTMODEL + QCompleter(const QStringList& completions, QObject *parent = Q_NULLPTR); +#endif + ~QCompleter(); + + void setWidget(QWidget *widget); + QWidget *widget() const; + + void setModel(QAbstractItemModel *c); + QAbstractItemModel *model() const; + + void setCompletionMode(CompletionMode mode); + CompletionMode completionMode() const; + + void setFilterMode(Qt::MatchFlags filterMode); + Qt::MatchFlags filterMode() const; + + QAbstractItemView *popup() const; + void setPopup(QAbstractItemView *popup); + + void setCaseSensitivity(Qt::CaseSensitivity caseSensitivity); + Qt::CaseSensitivity caseSensitivity() const; + + void setModelSorting(ModelSorting sorting); + ModelSorting modelSorting() const; + + void setCompletionColumn(int column); + int completionColumn() const; + + void setCompletionRole(int role); + int completionRole() const; + + bool wrapAround() const; + + int maxVisibleItems() const; + void setMaxVisibleItems(int maxItems); + + int completionCount() const; + bool setCurrentRow(int row); + int currentRow() const; + + QModelIndex currentIndex() const; + QString currentCompletion() const; + + QAbstractItemModel *completionModel() const; + + QString completionPrefix() const; + +public Q_SLOTS: + void setCompletionPrefix(const QString &prefix); + void complete(const QRect& rect = QRect()); + void setWrapAround(bool wrap); + +public: + virtual QString pathFromIndex(const QModelIndex &index) const; + virtual QStringList splitPath(const QString &path) const; + +protected: + bool eventFilter(QObject *o, QEvent *e) Q_DECL_OVERRIDE; + bool event(QEvent *) Q_DECL_OVERRIDE; + +Q_SIGNALS: + void activated(const QString &text); + void activated(const QModelIndex &index); + void highlighted(const QString &text); + void highlighted(const QModelIndex &index); + +private: + Q_DISABLE_COPY(QCompleter) + Q_DECLARE_PRIVATE(QCompleter) + + Q_PRIVATE_SLOT(d_func(), void _q_complete(QModelIndex)) + Q_PRIVATE_SLOT(d_func(), void _q_completionSelected(const QItemSelection&)) + Q_PRIVATE_SLOT(d_func(), void _q_autoResizePopup()) + Q_PRIVATE_SLOT(d_func(), void _q_fileSystemModelDirectoryLoaded(const QString&)) +}; + +QT_END_NAMESPACE + +#endif // QCOMPLETER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qdatawidgetmapper.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdatawidgetmapper.h new file mode 100644 index 000000000..7d4d61378 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdatawidgetmapper.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDATAWIDGETMAPPER_H +#define QDATAWIDGETMAPPER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include "QtCore/qobject.h" + +QT_REQUIRE_CONFIG(datawidgetmapper); + +QT_BEGIN_NAMESPACE + +class QAbstractItemDelegate; +class QAbstractItemModel; +class QModelIndex; +class QDataWidgetMapperPrivate; + +class Q_WIDGETS_EXPORT QDataWidgetMapper: public QObject +{ + Q_OBJECT + + Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) + Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) + Q_PROPERTY(SubmitPolicy submitPolicy READ submitPolicy WRITE setSubmitPolicy) + +public: + explicit QDataWidgetMapper(QObject *parent = Q_NULLPTR); + ~QDataWidgetMapper(); + + void setModel(QAbstractItemModel *model); + QAbstractItemModel *model() const; + + void setItemDelegate(QAbstractItemDelegate *delegate); + QAbstractItemDelegate *itemDelegate() const; + + void setRootIndex(const QModelIndex &index); + QModelIndex rootIndex() const; + + void setOrientation(Qt::Orientation aOrientation); + Qt::Orientation orientation() const; + + enum SubmitPolicy { AutoSubmit, ManualSubmit }; + Q_ENUM(SubmitPolicy) + void setSubmitPolicy(SubmitPolicy policy); + SubmitPolicy submitPolicy() const; + + void addMapping(QWidget *widget, int section); + void addMapping(QWidget *widget, int section, const QByteArray &propertyName); + void removeMapping(QWidget *widget); + int mappedSection(QWidget *widget) const; + QByteArray mappedPropertyName(QWidget *widget) const; + QWidget *mappedWidgetAt(int section) const; + void clearMapping(); + + int currentIndex() const; + +public Q_SLOTS: + void revert(); + bool submit(); + + void toFirst(); + void toLast(); + void toNext(); + void toPrevious(); + virtual void setCurrentIndex(int index); + void setCurrentModelIndex(const QModelIndex &index); + +Q_SIGNALS: + void currentIndexChanged(int index); + +private: + Q_DECLARE_PRIVATE(QDataWidgetMapper) + Q_DISABLE_COPY(QDataWidgetMapper) + Q_PRIVATE_SLOT(d_func(), void _q_dataChanged(const QModelIndex &, const QModelIndex &, const QVector<int> &)) + Q_PRIVATE_SLOT(d_func(), void _q_commitData(QWidget *)) + Q_PRIVATE_SLOT(d_func(), void _q_closeEditor(QWidget *, QAbstractItemDelegate::EndEditHint)) + Q_PRIVATE_SLOT(d_func(), void _q_modelDestroyed()) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qdatetimeedit.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdatetimeedit.h new file mode 100644 index 000000000..b46434c1a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdatetimeedit.h @@ -0,0 +1,232 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDATETIMEEDIT_H +#define QDATETIMEEDIT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qdatetime.h> +#include <QtCore/qvariant.h> +#include <QtWidgets/qabstractspinbox.h> + +QT_REQUIRE_CONFIG(datetimeedit); + +QT_BEGIN_NAMESPACE + +class QDateTimeEditPrivate; +class QStyleOptionSpinBox; +class QCalendarWidget; + +class Q_WIDGETS_EXPORT QDateTimeEdit : public QAbstractSpinBox +{ + Q_OBJECT + + Q_PROPERTY(QDateTime dateTime READ dateTime WRITE setDateTime NOTIFY dateTimeChanged USER true) + Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY dateChanged) + Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY timeChanged) + Q_PROPERTY(QDateTime maximumDateTime READ maximumDateTime WRITE setMaximumDateTime RESET clearMaximumDateTime) + Q_PROPERTY(QDateTime minimumDateTime READ minimumDateTime WRITE setMinimumDateTime RESET clearMinimumDateTime) + Q_PROPERTY(QDate maximumDate READ maximumDate WRITE setMaximumDate RESET clearMaximumDate) + Q_PROPERTY(QDate minimumDate READ minimumDate WRITE setMinimumDate RESET clearMinimumDate) + Q_PROPERTY(QTime maximumTime READ maximumTime WRITE setMaximumTime RESET clearMaximumTime) + Q_PROPERTY(QTime minimumTime READ minimumTime WRITE setMinimumTime RESET clearMinimumTime) + Q_PROPERTY(Section currentSection READ currentSection WRITE setCurrentSection) + Q_PROPERTY(Sections displayedSections READ displayedSections) + Q_PROPERTY(QString displayFormat READ displayFormat WRITE setDisplayFormat) + Q_PROPERTY(bool calendarPopup READ calendarPopup WRITE setCalendarPopup) + Q_PROPERTY(int currentSectionIndex READ currentSectionIndex WRITE setCurrentSectionIndex) + Q_PROPERTY(int sectionCount READ sectionCount) + Q_PROPERTY(Qt::TimeSpec timeSpec READ timeSpec WRITE setTimeSpec) +public: + enum Section { // a sub-type of QDateTimeParser's like-named enum. + NoSection = 0x0000, + AmPmSection = 0x0001, + MSecSection = 0x0002, + SecondSection = 0x0004, + MinuteSection = 0x0008, + HourSection = 0x0010, + DaySection = 0x0100, + MonthSection = 0x0200, + YearSection = 0x0400, + TimeSections_Mask = AmPmSection|MSecSection|SecondSection|MinuteSection|HourSection, + DateSections_Mask = DaySection|MonthSection|YearSection + }; + Q_ENUM(Section) + + Q_DECLARE_FLAGS(Sections, Section) + Q_FLAG(Sections) + + explicit QDateTimeEdit(QWidget *parent = Q_NULLPTR); + explicit QDateTimeEdit(const QDateTime &dt, QWidget *parent = Q_NULLPTR); + explicit QDateTimeEdit(const QDate &d, QWidget *parent = Q_NULLPTR); + explicit QDateTimeEdit(const QTime &t, QWidget *parent = Q_NULLPTR); + ~QDateTimeEdit(); + + QDateTime dateTime() const; + QDate date() const; + QTime time() const; + + QDateTime minimumDateTime() const; + void clearMinimumDateTime(); + void setMinimumDateTime(const QDateTime &dt); + + QDateTime maximumDateTime() const; + void clearMaximumDateTime(); + void setMaximumDateTime(const QDateTime &dt); + + void setDateTimeRange(const QDateTime &min, const QDateTime &max); + + QDate minimumDate() const; + void setMinimumDate(const QDate &min); + void clearMinimumDate(); + + QDate maximumDate() const; + void setMaximumDate(const QDate &max); + void clearMaximumDate(); + + void setDateRange(const QDate &min, const QDate &max); + + QTime minimumTime() const; + void setMinimumTime(const QTime &min); + void clearMinimumTime(); + + QTime maximumTime() const; + void setMaximumTime(const QTime &max); + void clearMaximumTime(); + + void setTimeRange(const QTime &min, const QTime &max); + + Sections displayedSections() const; + Section currentSection() const; + Section sectionAt(int index) const; + void setCurrentSection(Section section); + + int currentSectionIndex() const; + void setCurrentSectionIndex(int index); + + QCalendarWidget *calendarWidget() const; + void setCalendarWidget(QCalendarWidget *calendarWidget); + + int sectionCount() const; + + void setSelectedSection(Section section); + + QString sectionText(Section section) const; + + QString displayFormat() const; + void setDisplayFormat(const QString &format); + + bool calendarPopup() const; + void setCalendarPopup(bool enable); + + Qt::TimeSpec timeSpec() const; + void setTimeSpec(Qt::TimeSpec spec); + + QSize sizeHint() const override; + + void clear() override; + void stepBy(int steps) override; + + bool event(QEvent *event) override; +Q_SIGNALS: + void dateTimeChanged(const QDateTime &dateTime); + void timeChanged(const QTime &time); + void dateChanged(const QDate &date); + +public Q_SLOTS: + void setDateTime(const QDateTime &dateTime); + void setDate(const QDate &date); + void setTime(const QTime &time); + +protected: + void keyPressEvent(QKeyEvent *event) override; +#if QT_CONFIG(wheelevent) + void wheelEvent(QWheelEvent *event) override; +#endif + void focusInEvent(QFocusEvent *event) override; + bool focusNextPrevChild(bool next) override; + QValidator::State validate(QString &input, int &pos) const override; + void fixup(QString &input) const override; + + virtual QDateTime dateTimeFromText(const QString &text) const; + virtual QString textFromDateTime(const QDateTime &dt) const; + StepEnabled stepEnabled() const override; + void mousePressEvent(QMouseEvent *event) override; + void paintEvent(QPaintEvent *event) override; + void initStyleOption(QStyleOptionSpinBox *option) const; + + QDateTimeEdit(const QVariant &val, QVariant::Type parserType, QWidget *parent = Q_NULLPTR); +private: + Q_DECLARE_PRIVATE(QDateTimeEdit) + Q_DISABLE_COPY(QDateTimeEdit) + + Q_PRIVATE_SLOT(d_func(), void _q_resetButton()) +}; + +class Q_WIDGETS_EXPORT QTimeEdit : public QDateTimeEdit +{ + Q_OBJECT + Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY userTimeChanged USER true) +public: + explicit QTimeEdit(QWidget *parent = Q_NULLPTR); + explicit QTimeEdit(const QTime &time, QWidget *parent = Q_NULLPTR); + ~QTimeEdit(); + +Q_SIGNALS: + void userTimeChanged(const QTime &time); +}; + +class Q_WIDGETS_EXPORT QDateEdit : public QDateTimeEdit +{ + Q_OBJECT + Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY userDateChanged USER true) +public: + explicit QDateEdit(QWidget *parent = Q_NULLPTR); + explicit QDateEdit(const QDate &date, QWidget *parent = Q_NULLPTR); + ~QDateEdit(); + +Q_SIGNALS: + void userDateChanged(const QDate &date); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeEdit::Sections) + +QT_END_NAMESPACE + +#endif // QDATETIMEEDIT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qdesktopwidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdesktopwidget.h new file mode 100644 index 000000000..64e1c568e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdesktopwidget.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDESKTOPWIDGET_H +#define QDESKTOPWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_BEGIN_NAMESPACE + + +class QApplication; +class QDesktopWidgetPrivate; + +class Q_WIDGETS_EXPORT QDesktopWidget : public QWidget +{ + Q_OBJECT + Q_PROPERTY(bool virtualDesktop READ isVirtualDesktop) + Q_PROPERTY(int screenCount READ screenCount NOTIFY screenCountChanged) + Q_PROPERTY(int primaryScreen READ primaryScreen NOTIFY primaryScreenChanged) +public: + QDesktopWidget(); + ~QDesktopWidget(); + + bool isVirtualDesktop() const; + + int numScreens() const; + int screenCount() const; + int primaryScreen() const; + + int screenNumber(const QWidget *widget = Q_NULLPTR) const; + int screenNumber(const QPoint &) const; + + QWidget *screen(int screen = -1); + + const QRect screenGeometry(int screen = -1) const; + const QRect screenGeometry(const QWidget *widget) const; + const QRect screenGeometry(const QPoint &point) const + { return screenGeometry(screenNumber(point)); } + + const QRect availableGeometry(int screen = -1) const; + const QRect availableGeometry(const QWidget *widget) const; + const QRect availableGeometry(const QPoint &point) const + { return availableGeometry(screenNumber(point)); } + +Q_SIGNALS: + void resized(int); + void workAreaResized(int); + void screenCountChanged(int); + void primaryScreenChanged(); + +protected: + void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QDesktopWidget) + Q_DECLARE_PRIVATE(QDesktopWidget) + Q_PRIVATE_SLOT(d_func(), void _q_updateScreens()) + Q_PRIVATE_SLOT(d_func(), void _q_availableGeometryChanged()) + + friend class QApplication; + friend class QApplicationPrivate; +}; + +inline int QDesktopWidget::screenCount() const +{ return numScreens(); } + +QT_END_NAMESPACE + +#endif // QDESKTOPWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qdial.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdial.h new file mode 100644 index 000000000..ed753d86b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdial.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QDIAL_H +#define QDIAL_H + +#include <QtWidgets/qtwidgetsglobal.h> + +#include <QtWidgets/qabstractslider.h> + +QT_REQUIRE_CONFIG(dial); + +QT_BEGIN_NAMESPACE + +class QDialPrivate; +class QStyleOptionSlider; + +class Q_WIDGETS_EXPORT QDial: public QAbstractSlider +{ + Q_OBJECT + + Q_PROPERTY(bool wrapping READ wrapping WRITE setWrapping) + Q_PROPERTY(int notchSize READ notchSize) + Q_PROPERTY(qreal notchTarget READ notchTarget WRITE setNotchTarget) + Q_PROPERTY(bool notchesVisible READ notchesVisible WRITE setNotchesVisible) +public: + explicit QDial(QWidget *parent = Q_NULLPTR); + + ~QDial(); + + bool wrapping() const; + + int notchSize() const; + + void setNotchTarget(double target); + qreal notchTarget() const; + bool notchesVisible() const; + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + +public Q_SLOTS: + void setNotchesVisible(bool visible); + void setWrapping(bool on); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *re) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *pe) Q_DECL_OVERRIDE; + + void mousePressEvent(QMouseEvent *me) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *me) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *me) Q_DECL_OVERRIDE; + + void sliderChange(SliderChange change) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionSlider *option) const; + + +private: + Q_DECLARE_PRIVATE(QDial) + Q_DISABLE_COPY(QDial) +}; + +QT_END_NAMESPACE + +#endif // QDIAL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qdialog.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdialog.h new file mode 100644 index 000000000..72250172d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdialog.h @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDIALOG_H +#define QDIALOG_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(dialog); + +QT_BEGIN_NAMESPACE + + +class QPushButton; +class QDialogPrivate; + +class Q_WIDGETS_EXPORT QDialog : public QWidget +{ + Q_OBJECT + friend class QPushButton; + + Q_PROPERTY(bool sizeGripEnabled READ isSizeGripEnabled WRITE setSizeGripEnabled) + Q_PROPERTY(bool modal READ isModal WRITE setModal) + +public: + explicit QDialog(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); + ~QDialog(); + + enum DialogCode { Rejected, Accepted }; + + int result() const; + + void setVisible(bool visible) override; + + void setOrientation(Qt::Orientation orientation); + Qt::Orientation orientation() const; + + void setExtension(QWidget* extension); + QWidget* extension() const; + + QSize sizeHint() const override; + QSize minimumSizeHint() const override; + + void setSizeGripEnabled(bool); + bool isSizeGripEnabled() const; + + void setModal(bool modal); + void setResult(int r); + +Q_SIGNALS: + void finished(int result); + void accepted(); + void rejected(); + +public Q_SLOTS: + virtual void open(); + virtual int exec(); + virtual void done(int); + virtual void accept(); + virtual void reject(); + + void showExtension(bool); + +protected: + QDialog(QDialogPrivate &, QWidget *parent, Qt::WindowFlags f = Qt::WindowFlags()); + + void keyPressEvent(QKeyEvent *) override; + void closeEvent(QCloseEvent *) override; + void showEvent(QShowEvent *) override; + void resizeEvent(QResizeEvent *) override; +#ifndef QT_NO_CONTEXTMENU + void contextMenuEvent(QContextMenuEvent *) override; +#endif + bool eventFilter(QObject *, QEvent *) override; + void adjustPosition(QWidget*); +private: + Q_DECLARE_PRIVATE(QDialog) + Q_DISABLE_COPY(QDialog) +}; + +QT_END_NAMESPACE + +#endif // QDIALOG_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qdialogbuttonbox.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdialogbuttonbox.h new file mode 100644 index 000000000..af9e70523 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdialogbuttonbox.h @@ -0,0 +1,166 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDIALOGBUTTONBOX_H +#define QDIALOGBUTTONBOX_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(dialogbuttonbox); + +QT_BEGIN_NAMESPACE + + +class QAbstractButton; +class QPushButton; +class QDialogButtonBoxPrivate; + +class Q_WIDGETS_EXPORT QDialogButtonBox : public QWidget +{ + Q_OBJECT + Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) + Q_PROPERTY(StandardButtons standardButtons READ standardButtons WRITE setStandardButtons) + Q_PROPERTY(bool centerButtons READ centerButtons WRITE setCenterButtons) + +public: + enum ButtonRole { + // keep this in sync with QMessageBox::ButtonRole and QPlatformDialogHelper::ButtonRole + InvalidRole = -1, + AcceptRole, + RejectRole, + DestructiveRole, + ActionRole, + HelpRole, + YesRole, + NoRole, + ResetRole, + ApplyRole, + + NRoles + }; + + enum StandardButton { + // keep this in sync with QMessageBox::StandardButton and QPlatformDialogHelper::StandardButton + NoButton = 0x00000000, + Ok = 0x00000400, + Save = 0x00000800, + SaveAll = 0x00001000, + Open = 0x00002000, + Yes = 0x00004000, + YesToAll = 0x00008000, + No = 0x00010000, + NoToAll = 0x00020000, + Abort = 0x00040000, + Retry = 0x00080000, + Ignore = 0x00100000, + Close = 0x00200000, + Cancel = 0x00400000, + Discard = 0x00800000, + Help = 0x01000000, + Apply = 0x02000000, + Reset = 0x04000000, + RestoreDefaults = 0x08000000, + +#ifndef Q_MOC_RUN + FirstButton = Ok, + LastButton = RestoreDefaults +#endif + }; + + Q_DECLARE_FLAGS(StandardButtons, StandardButton) + Q_FLAG(StandardButtons) + + enum ButtonLayout { + // keep this in sync with QMessageBox::ButtonLayout and QPlatformDialogHelper::ButtonLayout + WinLayout, + MacLayout, + KdeLayout, + GnomeLayout + }; + + QDialogButtonBox(QWidget *parent = Q_NULLPTR); + QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR); + explicit QDialogButtonBox(StandardButtons buttons, QWidget *parent = Q_NULLPTR); + QDialogButtonBox(StandardButtons buttons, Qt::Orientation orientation, + QWidget *parent = Q_NULLPTR); + ~QDialogButtonBox(); + + void setOrientation(Qt::Orientation orientation); + Qt::Orientation orientation() const; + + void addButton(QAbstractButton *button, ButtonRole role); + QPushButton *addButton(const QString &text, ButtonRole role); + QPushButton *addButton(StandardButton button); + void removeButton(QAbstractButton *button); + void clear(); + + QList<QAbstractButton *> buttons() const; + ButtonRole buttonRole(QAbstractButton *button) const; + + void setStandardButtons(StandardButtons buttons); + StandardButtons standardButtons() const; + StandardButton standardButton(QAbstractButton *button) const; + QPushButton *button(StandardButton which) const; + + void setCenterButtons(bool center); + bool centerButtons() const; + +Q_SIGNALS: + void clicked(QAbstractButton *button); + void accepted(); + void helpRequested(); + void rejected(); + +protected: + void changeEvent(QEvent *event) Q_DECL_OVERRIDE; + bool event(QEvent *event) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QDialogButtonBox) + Q_DECLARE_PRIVATE(QDialogButtonBox) + Q_PRIVATE_SLOT(d_func(), void _q_handleButtonClicked()) + Q_PRIVATE_SLOT(d_func(), void _q_handleButtonDestroyed()) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QDialogButtonBox::StandardButtons) + +QT_END_NAMESPACE + +#endif // QDIALOGBUTTONBOX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qdirmodel.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdirmodel.h new file mode 100644 index 000000000..30810cf4f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdirmodel.h @@ -0,0 +1,147 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDIRMODEL_H +#define QDIRMODEL_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qabstractitemmodel.h> +#include <QtCore/qdir.h> +#include <QtWidgets/qfileiconprovider.h> + +QT_REQUIRE_CONFIG(dirmodel); + +QT_BEGIN_NAMESPACE + +class QDirModelPrivate; + +class Q_WIDGETS_EXPORT QDirModel : public QAbstractItemModel +{ + Q_OBJECT + Q_PROPERTY(bool resolveSymlinks READ resolveSymlinks WRITE setResolveSymlinks) + Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) + Q_PROPERTY(bool lazyChildCount READ lazyChildCount WRITE setLazyChildCount) + +public: + enum Roles { + FileIconRole = Qt::DecorationRole, + FilePathRole = Qt::UserRole + 1, + FileNameRole + }; + + QDirModel(const QStringList &nameFilters, QDir::Filters filters, + QDir::SortFlags sort, QObject *parent = Q_NULLPTR); + explicit QDirModel(QObject *parent = Q_NULLPTR); + ~QDirModel(); + + QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex parent(const QModelIndex &child) const Q_DECL_OVERRIDE; + + int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; + + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + + bool hasChildren(const QModelIndex &index = QModelIndex()) const Q_DECL_OVERRIDE; + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + + void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) Q_DECL_OVERRIDE; + + QStringList mimeTypes() const Q_DECL_OVERRIDE; + QMimeData *mimeData(const QModelIndexList &indexes) const Q_DECL_OVERRIDE; + bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; + Qt::DropActions supportedDropActions() const Q_DECL_OVERRIDE; + + // QDirModel specific API + + void setIconProvider(QFileIconProvider *provider); + QFileIconProvider *iconProvider() const; + + void setNameFilters(const QStringList &filters); + QStringList nameFilters() const; + + void setFilter(QDir::Filters filters); + QDir::Filters filter() const; + + void setSorting(QDir::SortFlags sort); + QDir::SortFlags sorting() const; + + void setResolveSymlinks(bool enable); + bool resolveSymlinks() const; + + void setReadOnly(bool enable); + bool isReadOnly() const; + + void setLazyChildCount(bool enable); + bool lazyChildCount() const; + + QModelIndex index(const QString &path, int column = 0) const; + + bool isDir(const QModelIndex &index) const; + QModelIndex mkdir(const QModelIndex &parent, const QString &name); + bool rmdir(const QModelIndex &index); + bool remove(const QModelIndex &index); + + QString filePath(const QModelIndex &index) const; + QString fileName(const QModelIndex &index) const; + QIcon fileIcon(const QModelIndex &index) const; + QFileInfo fileInfo(const QModelIndex &index) const; + + using QObject::parent; + +public Q_SLOTS: + void refresh(const QModelIndex &parent = QModelIndex()); + +protected: + QDirModel(QDirModelPrivate &, QObject *parent = Q_NULLPTR); + friend class QFileDialogPrivate; + +private: + Q_DECLARE_PRIVATE(QDirModel) + Q_DISABLE_COPY(QDirModel) + Q_PRIVATE_SLOT(d_func(), void _q_refresh()) +}; + +QT_END_NAMESPACE + +#endif // QDIRMODEL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qdockwidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdockwidget.h new file mode 100644 index 000000000..b53fa19a0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdockwidget.h @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDYNAMICDOCKWIDGET_H +#define QDYNAMICDOCKWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(dockwidget); + +QT_BEGIN_NAMESPACE + +class QDockAreaLayout; +class QDockWidgetPrivate; +class QMainWindow; +class QStyleOptionDockWidget; + +class Q_WIDGETS_EXPORT QDockWidget : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(bool floating READ isFloating WRITE setFloating) + Q_PROPERTY(DockWidgetFeatures features READ features WRITE setFeatures NOTIFY featuresChanged) + Q_PROPERTY(Qt::DockWidgetAreas allowedAreas READ allowedAreas + WRITE setAllowedAreas NOTIFY allowedAreasChanged) + Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle DESIGNABLE true) + +public: + explicit QDockWidget(const QString &title, QWidget *parent = Q_NULLPTR, + Qt::WindowFlags flags = Qt::WindowFlags()); + explicit QDockWidget(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()); + ~QDockWidget(); + + QWidget *widget() const; + void setWidget(QWidget *widget); + + enum DockWidgetFeature { + DockWidgetClosable = 0x01, + DockWidgetMovable = 0x02, + DockWidgetFloatable = 0x04, + DockWidgetVerticalTitleBar = 0x08, + + DockWidgetFeatureMask = 0x0f, + AllDockWidgetFeatures = DockWidgetClosable|DockWidgetMovable|DockWidgetFloatable, // ### Qt 6: remove + NoDockWidgetFeatures = 0x00, + + Reserved = 0xff + }; + Q_DECLARE_FLAGS(DockWidgetFeatures, DockWidgetFeature) + Q_FLAG(DockWidgetFeatures) + + void setFeatures(DockWidgetFeatures features); + DockWidgetFeatures features() const; + + void setFloating(bool floating); + inline bool isFloating() const { return isWindow(); } + + void setAllowedAreas(Qt::DockWidgetAreas areas); + Qt::DockWidgetAreas allowedAreas() const; + + void setTitleBarWidget(QWidget *widget); + QWidget *titleBarWidget() const; + + inline bool isAreaAllowed(Qt::DockWidgetArea area) const + { return (allowedAreas() & area) == area; } + +#ifndef QT_NO_ACTION + QAction *toggleViewAction() const; +#endif + +Q_SIGNALS: + void featuresChanged(QDockWidget::DockWidgetFeatures features); + void topLevelChanged(bool topLevel); + void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas); + void visibilityChanged(bool visible); + void dockLocationChanged(Qt::DockWidgetArea area); + +protected: + void changeEvent(QEvent *event) Q_DECL_OVERRIDE; + void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + bool event(QEvent *event) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionDockWidget *option) const; + +private: + Q_DECLARE_PRIVATE(QDockWidget) + Q_DISABLE_COPY(QDockWidget) + Q_PRIVATE_SLOT(d_func(), void _q_toggleView(bool)) + Q_PRIVATE_SLOT(d_func(), void _q_toggleTopLevel()) + friend class QDockAreaLayout; + friend class QDockWidgetItem; + friend class QMainWindowLayout; + friend class QDockWidgetLayout; + friend class QDockAreaLayoutInfo; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QDockWidget::DockWidgetFeatures) + +QT_END_NAMESPACE + +#endif // QDYNAMICDOCKWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qdrawutil.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdrawutil.h new file mode 100644 index 000000000..d5582f2c9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qdrawutil.h @@ -0,0 +1,169 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDRAWUTIL_H +#define QDRAWUTIL_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qnamespace.h> +#include <QtCore/qstring.h> // char*->QString conversion +#include <QtCore/qmargins.h> +#include <QtGui/qpixmap.h> +QT_BEGIN_NAMESPACE + + +class QPainter; +class QPalette; +class QPoint; +class QColor; +class QBrush; +class QRect; + +// +// Standard shade drawing +// + +Q_WIDGETS_EXPORT void qDrawShadeLine(QPainter *p, int x1, int y1, int x2, int y2, + const QPalette &pal, bool sunken = true, + int lineWidth = 1, int midLineWidth = 0); + +Q_WIDGETS_EXPORT void qDrawShadeLine(QPainter *p, const QPoint &p1, const QPoint &p2, + const QPalette &pal, bool sunken = true, + int lineWidth = 1, int midLineWidth = 0); + +Q_WIDGETS_EXPORT void qDrawShadeRect(QPainter *p, int x, int y, int w, int h, + const QPalette &pal, bool sunken = false, + int lineWidth = 1, int midLineWidth = 0, + const QBrush *fill = Q_NULLPTR); + +Q_WIDGETS_EXPORT void qDrawShadeRect(QPainter *p, const QRect &r, + const QPalette &pal, bool sunken = false, + int lineWidth = 1, int midLineWidth = 0, + const QBrush *fill = Q_NULLPTR); + +Q_WIDGETS_EXPORT void qDrawShadePanel(QPainter *p, int x, int y, int w, int h, + const QPalette &pal, bool sunken = false, + int lineWidth = 1, const QBrush *fill = Q_NULLPTR); + +Q_WIDGETS_EXPORT void qDrawShadePanel(QPainter *p, const QRect &r, + const QPalette &pal, bool sunken = false, + int lineWidth = 1, const QBrush *fill = Q_NULLPTR); + +Q_WIDGETS_EXPORT void qDrawWinButton(QPainter *p, int x, int y, int w, int h, + const QPalette &pal, bool sunken = false, + const QBrush *fill = Q_NULLPTR); + +Q_WIDGETS_EXPORT void qDrawWinButton(QPainter *p, const QRect &r, + const QPalette &pal, bool sunken = false, + const QBrush *fill = Q_NULLPTR); + +Q_WIDGETS_EXPORT void qDrawWinPanel(QPainter *p, int x, int y, int w, int h, + const QPalette &pal, bool sunken = false, + const QBrush *fill = Q_NULLPTR); + +Q_WIDGETS_EXPORT void qDrawWinPanel(QPainter *p, const QRect &r, + const QPalette &pal, bool sunken = false, + const QBrush *fill = Q_NULLPTR); + +Q_WIDGETS_EXPORT void qDrawPlainRect(QPainter *p, int x, int y, int w, int h, const QColor &, + int lineWidth = 1, const QBrush *fill = Q_NULLPTR); + +Q_WIDGETS_EXPORT void qDrawPlainRect(QPainter *p, const QRect &r, const QColor &, + int lineWidth = 1, const QBrush *fill = Q_NULLPTR); + + + +struct QTileRules +{ + inline QTileRules(Qt::TileRule horizontalRule, Qt::TileRule verticalRule) + : horizontal(horizontalRule), vertical(verticalRule) {} + inline QTileRules(Qt::TileRule rule = Qt::StretchTile) + : horizontal(rule), vertical(rule) {} + Qt::TileRule horizontal; + Qt::TileRule vertical; +}; + +#ifndef Q_CLANG_QDOC +// For internal use only. +namespace QDrawBorderPixmap +{ + enum DrawingHint + { + OpaqueTopLeft = 0x0001, + OpaqueTop = 0x0002, + OpaqueTopRight = 0x0004, + OpaqueLeft = 0x0008, + OpaqueCenter = 0x0010, + OpaqueRight = 0x0020, + OpaqueBottomLeft = 0x0040, + OpaqueBottom = 0x0080, + OpaqueBottomRight = 0x0100, + OpaqueCorners = OpaqueTopLeft | OpaqueTopRight | OpaqueBottomLeft | OpaqueBottomRight, + OpaqueEdges = OpaqueTop | OpaqueLeft | OpaqueRight | OpaqueBottom, + OpaqueFrame = OpaqueCorners | OpaqueEdges, + OpaqueAll = OpaqueCenter | OpaqueFrame + }; + + Q_DECLARE_FLAGS(DrawingHints, DrawingHint) +} +#endif + +Q_WIDGETS_EXPORT void qDrawBorderPixmap(QPainter *painter, + const QRect &targetRect, + const QMargins &targetMargins, + const QPixmap &pixmap, + const QRect &sourceRect, + const QMargins &sourceMargins, + const QTileRules &rules = QTileRules() +#ifndef Q_CLANG_QDOC + , QDrawBorderPixmap::DrawingHints hints = QDrawBorderPixmap::DrawingHints() +#endif + ); + +inline void qDrawBorderPixmap(QPainter *painter, + const QRect &target, + const QMargins &margins, + const QPixmap &pixmap) +{ + qDrawBorderPixmap(painter, target, margins, pixmap, pixmap.rect(), margins); +} + +QT_END_NAMESPACE + +#endif // QDRAWUTIL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qerrormessage.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qerrormessage.h new file mode 100644 index 000000000..4cb1fad84 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qerrormessage.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QERRORMESSAGE_H +#define QERRORMESSAGE_H + +#include <QtWidgets/qtwidgetsglobal.h> + +#include <QtWidgets/qdialog.h> + +QT_REQUIRE_CONFIG(errormessage); + +QT_BEGIN_NAMESPACE + +class QErrorMessagePrivate; + +class Q_WIDGETS_EXPORT QErrorMessage: public QDialog +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QErrorMessage) +public: + explicit QErrorMessage(QWidget* parent = Q_NULLPTR); + ~QErrorMessage(); + + static QErrorMessage * qtHandler(); + +public Q_SLOTS: + void showMessage(const QString &message); + void showMessage(const QString &message, const QString &type); + +protected: + void done(int) Q_DECL_OVERRIDE; + void changeEvent(QEvent *e) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QErrorMessage) +}; + +QT_END_NAMESPACE + +#endif // QERRORMESSAGE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qfiledialog.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfiledialog.h new file mode 100644 index 000000000..b9092e036 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfiledialog.h @@ -0,0 +1,317 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILEDIALOG_H +#define QFILEDIALOG_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qdir.h> +#include <QtCore/qstring.h> +#include <QtCore/qurl.h> +#include <QtWidgets/qdialog.h> + +QT_REQUIRE_CONFIG(filedialog); + +QT_BEGIN_NAMESPACE + +class QModelIndex; +class QItemSelection; +struct QFileDialogArgs; +class QFileIconProvider; +class QFileDialogPrivate; +class QAbstractItemDelegate; +class QAbstractProxyModel; + +class Q_WIDGETS_EXPORT QFileDialog : public QDialog +{ + Q_OBJECT + Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode) + Q_PROPERTY(FileMode fileMode READ fileMode WRITE setFileMode) + Q_PROPERTY(AcceptMode acceptMode READ acceptMode WRITE setAcceptMode) + Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly DESIGNABLE false) + Q_PROPERTY(bool resolveSymlinks READ resolveSymlinks WRITE setResolveSymlinks DESIGNABLE false) + Q_PROPERTY(bool confirmOverwrite READ confirmOverwrite WRITE setConfirmOverwrite DESIGNABLE false) + Q_PROPERTY(QString defaultSuffix READ defaultSuffix WRITE setDefaultSuffix) + Q_PROPERTY(bool nameFilterDetailsVisible READ isNameFilterDetailsVisible + WRITE setNameFilterDetailsVisible DESIGNABLE false) + Q_PROPERTY(Options options READ options WRITE setOptions) + Q_PROPERTY(QStringList supportedSchemes READ supportedSchemes WRITE setSupportedSchemes) + +public: + enum ViewMode { Detail, List }; + Q_ENUM(ViewMode) + enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly }; + Q_ENUM(FileMode) + enum AcceptMode { AcceptOpen, AcceptSave }; + Q_ENUM(AcceptMode) + enum DialogLabel { LookIn, FileName, FileType, Accept, Reject }; + + enum Option + { + ShowDirsOnly = 0x00000001, + DontResolveSymlinks = 0x00000002, + DontConfirmOverwrite = 0x00000004, + DontUseSheet = 0x00000008, + DontUseNativeDialog = 0x00000010, + ReadOnly = 0x00000020, + HideNameFilterDetails = 0x00000040, + DontUseCustomDirectoryIcons = 0x00000080 + }; + Q_ENUM(Option) + Q_DECLARE_FLAGS(Options, Option) + Q_FLAG(Options) + + QFileDialog(QWidget *parent, Qt::WindowFlags f); + explicit QFileDialog(QWidget *parent = Q_NULLPTR, + const QString &caption = QString(), + const QString &directory = QString(), + const QString &filter = QString()); + ~QFileDialog(); + + void setDirectory(const QString &directory); + inline void setDirectory(const QDir &directory); + QDir directory() const; + + void setDirectoryUrl(const QUrl &directory); + QUrl directoryUrl() const; + + void selectFile(const QString &filename); + QStringList selectedFiles() const; + + void selectUrl(const QUrl &url); + QList<QUrl> selectedUrls() const; + + void setNameFilterDetailsVisible(bool enabled); + bool isNameFilterDetailsVisible() const; + + void setNameFilter(const QString &filter); + void setNameFilters(const QStringList &filters); + QStringList nameFilters() const; + void selectNameFilter(const QString &filter); + QString selectedMimeTypeFilter() const; + QString selectedNameFilter() const; + +#ifndef QT_NO_MIMETYPE + void setMimeTypeFilters(const QStringList &filters); + QStringList mimeTypeFilters() const; + void selectMimeTypeFilter(const QString &filter); +#endif + + QDir::Filters filter() const; + void setFilter(QDir::Filters filters); + + void setViewMode(ViewMode mode); + ViewMode viewMode() const; + + void setFileMode(FileMode mode); + FileMode fileMode() const; + + void setAcceptMode(AcceptMode mode); + AcceptMode acceptMode() const; + + void setReadOnly(bool enabled); + bool isReadOnly() const; + + void setResolveSymlinks(bool enabled); + bool resolveSymlinks() const; + + void setSidebarUrls(const QList<QUrl> &urls); + QList<QUrl> sidebarUrls() const; + + QByteArray saveState() const; + bool restoreState(const QByteArray &state); + + void setConfirmOverwrite(bool enabled); + bool confirmOverwrite() const; + + void setDefaultSuffix(const QString &suffix); + QString defaultSuffix() const; + + void setHistory(const QStringList &paths); + QStringList history() const; + + void setItemDelegate(QAbstractItemDelegate *delegate); + QAbstractItemDelegate *itemDelegate() const; + + void setIconProvider(QFileIconProvider *provider); + QFileIconProvider *iconProvider() const; + + void setLabelText(DialogLabel label, const QString &text); + QString labelText(DialogLabel label) const; + + void setSupportedSchemes(const QStringList &schemes); + QStringList supportedSchemes() const; + +#ifndef QT_NO_PROXYMODEL + void setProxyModel(QAbstractProxyModel *model); + QAbstractProxyModel *proxyModel() const; +#endif + + void setOption(Option option, bool on = true); + bool testOption(Option option) const; + void setOptions(Options options); + Options options() const; + + using QDialog::open; + void open(QObject *receiver, const char *member); + void setVisible(bool visible) Q_DECL_OVERRIDE; + +Q_SIGNALS: + void fileSelected(const QString &file); + void filesSelected(const QStringList &files); + void currentChanged(const QString &path); + void directoryEntered(const QString &directory); + + void urlSelected(const QUrl &url); + void urlsSelected(const QList<QUrl> &urls); + void currentUrlChanged(const QUrl &url); + void directoryUrlEntered(const QUrl &directory); + + void filterSelected(const QString &filter); + +public: + + static QString getOpenFileName(QWidget *parent = Q_NULLPTR, + const QString &caption = QString(), + const QString &dir = QString(), + const QString &filter = QString(), + QString *selectedFilter = Q_NULLPTR, + Options options = Options()); + + static QUrl getOpenFileUrl(QWidget *parent = Q_NULLPTR, + const QString &caption = QString(), + const QUrl &dir = QUrl(), + const QString &filter = QString(), + QString *selectedFilter = Q_NULLPTR, + Options options = Options(), + const QStringList &supportedSchemes = QStringList()); + + static QString getSaveFileName(QWidget *parent = Q_NULLPTR, + const QString &caption = QString(), + const QString &dir = QString(), + const QString &filter = QString(), + QString *selectedFilter = Q_NULLPTR, + Options options = Options()); + + static QUrl getSaveFileUrl(QWidget *parent = Q_NULLPTR, + const QString &caption = QString(), + const QUrl &dir = QUrl(), + const QString &filter = QString(), + QString *selectedFilter = Q_NULLPTR, + Options options = Options(), + const QStringList &supportedSchemes = QStringList()); + + static QString getExistingDirectory(QWidget *parent = Q_NULLPTR, + const QString &caption = QString(), + const QString &dir = QString(), + Options options = ShowDirsOnly); + + static QUrl getExistingDirectoryUrl(QWidget *parent = Q_NULLPTR, + const QString &caption = QString(), + const QUrl &dir = QUrl(), + Options options = ShowDirsOnly, + const QStringList &supportedSchemes = QStringList()); + + static QStringList getOpenFileNames(QWidget *parent = Q_NULLPTR, + const QString &caption = QString(), + const QString &dir = QString(), + const QString &filter = QString(), + QString *selectedFilter = Q_NULLPTR, + Options options = Options()); + + static QList<QUrl> getOpenFileUrls(QWidget *parent = Q_NULLPTR, + const QString &caption = QString(), + const QUrl &dir = QUrl(), + const QString &filter = QString(), + QString *selectedFilter = Q_NULLPTR, + Options options = Options(), + const QStringList &supportedSchemes = QStringList()); + + +protected: + QFileDialog(const QFileDialogArgs &args); + void done(int result) Q_DECL_OVERRIDE; + void accept() Q_DECL_OVERRIDE; + void changeEvent(QEvent *e) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QFileDialog) + Q_DISABLE_COPY(QFileDialog) + + Q_PRIVATE_SLOT(d_func(), void _q_pathChanged(const QString &)) + + Q_PRIVATE_SLOT(d_func(), void _q_navigateBackward()) + Q_PRIVATE_SLOT(d_func(), void _q_navigateForward()) + Q_PRIVATE_SLOT(d_func(), void _q_navigateToParent()) + Q_PRIVATE_SLOT(d_func(), void _q_createDirectory()) + Q_PRIVATE_SLOT(d_func(), void _q_showListView()) + Q_PRIVATE_SLOT(d_func(), void _q_showDetailsView()) + Q_PRIVATE_SLOT(d_func(), void _q_showContextMenu(const QPoint &)) + Q_PRIVATE_SLOT(d_func(), void _q_renameCurrent()) + Q_PRIVATE_SLOT(d_func(), void _q_deleteCurrent()) + Q_PRIVATE_SLOT(d_func(), void _q_showHidden()) + Q_PRIVATE_SLOT(d_func(), void _q_updateOkButton()) + Q_PRIVATE_SLOT(d_func(), void _q_currentChanged(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_enterDirectory(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitUrlSelected(const QUrl &)) + Q_PRIVATE_SLOT(d_func(), void _q_emitUrlsSelected(const QList<QUrl> &)) + Q_PRIVATE_SLOT(d_func(), void _q_nativeCurrentChanged(const QUrl &)) + Q_PRIVATE_SLOT(d_func(), void _q_nativeEnterDirectory(const QUrl&)) + Q_PRIVATE_SLOT(d_func(), void _q_goToDirectory(const QString &path)) + Q_PRIVATE_SLOT(d_func(), void _q_useNameFilter(int index)) + Q_PRIVATE_SLOT(d_func(), void _q_selectionChanged()) + Q_PRIVATE_SLOT(d_func(), void _q_goToUrl(const QUrl &url)) + Q_PRIVATE_SLOT(d_func(), void _q_goHome()) + Q_PRIVATE_SLOT(d_func(), void _q_showHeader(QAction *)) + Q_PRIVATE_SLOT(d_func(), void _q_autoCompleteFileName(const QString &text)) + Q_PRIVATE_SLOT(d_func(), void _q_rowsInserted(const QModelIndex & parent)) + Q_PRIVATE_SLOT(d_func(), void _q_fileRenamed(const QString &path, + const QString &oldName, + const QString &newName)) + friend class QPlatformDialogHelper; +}; + +inline void QFileDialog::setDirectory(const QDir &adirectory) +{ setDirectory(adirectory.absolutePath()); } + +Q_DECLARE_OPERATORS_FOR_FLAGS(QFileDialog::Options) + +QT_END_NAMESPACE + +#endif // QFILEDIALOG_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qfileiconprovider.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfileiconprovider.h new file mode 100644 index 000000000..732ca1ac8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfileiconprovider.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILEICONPROVIDER_H +#define QFILEICONPROVIDER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qfileinfo.h> +#include <QtCore/qscopedpointer.h> +#include <QtGui/qicon.h> + +QT_BEGIN_NAMESPACE + + +class QFileIconProviderPrivate; + +class Q_WIDGETS_EXPORT QFileIconProvider +{ +public: + QFileIconProvider(); + virtual ~QFileIconProvider(); + enum IconType { Computer, Desktop, Trashcan, Network, Drive, Folder, File }; + + enum Option { + DontUseCustomDirectoryIcons = 0x00000001 + }; + Q_DECLARE_FLAGS(Options, Option) + + virtual QIcon icon(IconType type) const; + virtual QIcon icon(const QFileInfo &info) const; + virtual QString type(const QFileInfo &info) const; + + void setOptions(Options options); + Options options() const; + +private: + Q_DECLARE_PRIVATE(QFileIconProvider) + QScopedPointer<QFileIconProviderPrivate> d_ptr; + Q_DISABLE_COPY(QFileIconProvider) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QFileIconProvider::Options) + +QT_END_NAMESPACE + +#endif // QFILEICONPROVIDER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qfilesystemmodel.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfilesystemmodel.h new file mode 100644 index 000000000..a5f23c922 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfilesystemmodel.h @@ -0,0 +1,170 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFILESYSTEMMODEL_H +#define QFILESYSTEMMODEL_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qabstractitemmodel.h> +#include <QtCore/qpair.h> +#include <QtCore/qdir.h> +#include <QtGui/qicon.h> +#include <QtCore/qdiriterator.h> + +QT_REQUIRE_CONFIG(filesystemmodel); + +QT_BEGIN_NAMESPACE + +class ExtendedInformation; +class QFileSystemModelPrivate; +class QFileIconProvider; + +class Q_WIDGETS_EXPORT QFileSystemModel : public QAbstractItemModel +{ + Q_OBJECT + Q_PROPERTY(bool resolveSymlinks READ resolveSymlinks WRITE setResolveSymlinks) + Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) + Q_PROPERTY(bool nameFilterDisables READ nameFilterDisables WRITE setNameFilterDisables) + +Q_SIGNALS: + void rootPathChanged(const QString &newPath); + void fileRenamed(const QString &path, const QString &oldName, const QString &newName); + void directoryLoaded(const QString &path); + +public: + enum Roles { + FileIconRole = Qt::DecorationRole, + FilePathRole = Qt::UserRole + 1, + FileNameRole = Qt::UserRole + 2, + FilePermissions = Qt::UserRole + 3 + }; + + explicit QFileSystemModel(QObject *parent = Q_NULLPTR); + ~QFileSystemModel(); + + QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex index(const QString &path, int column = 0) const; + QModelIndex parent(const QModelIndex &child) const Q_DECL_OVERRIDE; + using QObject::parent; + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; + bool hasChildren(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + bool canFetchMore(const QModelIndex &parent) const Q_DECL_OVERRIDE; + void fetchMore(const QModelIndex &parent) Q_DECL_OVERRIDE; + + int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + + QVariant myComputer(int role = Qt::DisplayRole) const; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; + + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + + void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) Q_DECL_OVERRIDE; + + QStringList mimeTypes() const Q_DECL_OVERRIDE; + QMimeData *mimeData(const QModelIndexList &indexes) const Q_DECL_OVERRIDE; + bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; + Qt::DropActions supportedDropActions() const Q_DECL_OVERRIDE; + + // QFileSystemModel specific API + QModelIndex setRootPath(const QString &path); + QString rootPath() const; + QDir rootDirectory() const; + + void setIconProvider(QFileIconProvider *provider); + QFileIconProvider *iconProvider() const; + + void setFilter(QDir::Filters filters); + QDir::Filters filter() const; + + void setResolveSymlinks(bool enable); + bool resolveSymlinks() const; + + void setReadOnly(bool enable); + bool isReadOnly() const; + + void setNameFilterDisables(bool enable); + bool nameFilterDisables() const; + + void setNameFilters(const QStringList &filters); + QStringList nameFilters() const; + + QString filePath(const QModelIndex &index) const; + bool isDir(const QModelIndex &index) const; + qint64 size(const QModelIndex &index) const; + QString type(const QModelIndex &index) const; + QDateTime lastModified(const QModelIndex &index) const; + + QModelIndex mkdir(const QModelIndex &parent, const QString &name); + bool rmdir(const QModelIndex &index); + inline QString fileName(const QModelIndex &index) const; + inline QIcon fileIcon(const QModelIndex &index) const; + QFile::Permissions permissions(const QModelIndex &index) const; + QFileInfo fileInfo(const QModelIndex &index) const; + bool remove(const QModelIndex &index); + +protected: + QFileSystemModel(QFileSystemModelPrivate &, QObject *parent = Q_NULLPTR); + void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE; + bool event(QEvent *event) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QFileSystemModel) + Q_DISABLE_COPY(QFileSystemModel) + + Q_PRIVATE_SLOT(d_func(), void _q_directoryChanged(const QString &directory, const QStringList &list)) + Q_PRIVATE_SLOT(d_func(), void _q_performDelayedSort()) + Q_PRIVATE_SLOT(d_func(), void _q_fileSystemChanged(const QString &path, const QVector<QPair<QString, QFileInfo> > &)) + Q_PRIVATE_SLOT(d_func(), void _q_resolvedName(const QString &fileName, const QString &resolvedName)) + + friend class QFileDialogPrivate; +}; + +inline QString QFileSystemModel::fileName(const QModelIndex &aindex) const +{ return aindex.data(Qt::DisplayRole).toString(); } +inline QIcon QFileSystemModel::fileIcon(const QModelIndex &aindex) const +{ return qvariant_cast<QIcon>(aindex.data(Qt::DecorationRole)); } + +QT_END_NAMESPACE + +#endif // QFILESYSTEMMODEL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qfocusframe.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfocusframe.h new file mode 100644 index 000000000..a1fc6d345 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfocusframe.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFOCUSFRAME_H +#define QFOCUSFRAME_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_BEGIN_NAMESPACE + + +class QFocusFramePrivate; +class QStyleOption; + +class Q_WIDGETS_EXPORT QFocusFrame : public QWidget +{ + Q_OBJECT +public: + QFocusFrame(QWidget *parent = Q_NULLPTR); + ~QFocusFrame(); + + void setWidget(QWidget *widget); + QWidget *widget() const; + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + + bool eventFilter(QObject *, QEvent *) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOption *option) const; + +private: + Q_DECLARE_PRIVATE(QFocusFrame) + Q_DISABLE_COPY(QFocusFrame) +}; + +QT_END_NAMESPACE + +#endif // QFOCUSFRAME_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qfontcombobox.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfontcombobox.h new file mode 100644 index 000000000..1e4555ce2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfontcombobox.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONTCOMBOBOX_H +#define QFONTCOMBOBOX_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qcombobox.h> +#include <QtGui/qfontdatabase.h> + +QT_REQUIRE_CONFIG(fontcombobox); + +QT_BEGIN_NAMESPACE + +class QFontComboBoxPrivate; + +class Q_WIDGETS_EXPORT QFontComboBox : public QComboBox +{ + Q_OBJECT + Q_PROPERTY(QFontDatabase::WritingSystem writingSystem READ writingSystem WRITE setWritingSystem) + Q_PROPERTY(FontFilters fontFilters READ fontFilters WRITE setFontFilters) + Q_PROPERTY(QFont currentFont READ currentFont WRITE setCurrentFont NOTIFY currentFontChanged) + +public: + explicit QFontComboBox(QWidget *parent = Q_NULLPTR); + ~QFontComboBox(); + + void setWritingSystem(QFontDatabase::WritingSystem); + QFontDatabase::WritingSystem writingSystem() const; + + enum FontFilter { + AllFonts = 0, + ScalableFonts = 0x1, + NonScalableFonts = 0x2, + MonospacedFonts = 0x4, + ProportionalFonts = 0x8 + }; + Q_DECLARE_FLAGS(FontFilters, FontFilter) + Q_FLAG(FontFilters) + + void setFontFilters(FontFilters filters); + FontFilters fontFilters() const; + + QFont currentFont() const; + QSize sizeHint() const Q_DECL_OVERRIDE; + +public Q_SLOTS: + void setCurrentFont(const QFont &f); + +Q_SIGNALS: + void currentFontChanged(const QFont &f); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QFontComboBox) + Q_DECLARE_PRIVATE(QFontComboBox) + Q_PRIVATE_SLOT(d_func(), void _q_currentChanged(const QString &)) + Q_PRIVATE_SLOT(d_func(), void _q_updateModel()) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QFontComboBox::FontFilters) + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qfontdialog.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfontdialog.h new file mode 100644 index 000000000..3fb3997b8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qfontdialog.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFONTDIALOG_H +#define QFONTDIALOG_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtGui/qwindowdefs.h> +#include <QtGui/qfont.h> + +#include <QtWidgets/qdialog.h> + +QT_REQUIRE_CONFIG(fontdialog); + +QT_BEGIN_NAMESPACE + +class QFontDialogPrivate; + +class Q_WIDGETS_EXPORT QFontDialog : public QDialog +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QFontDialog) + Q_PROPERTY(QFont currentFont READ currentFont WRITE setCurrentFont NOTIFY currentFontChanged) + Q_PROPERTY(FontDialogOptions options READ options WRITE setOptions) + +public: + enum FontDialogOption { + NoButtons = 0x00000001, + DontUseNativeDialog = 0x00000002, + ScalableFonts = 0x00000004, + NonScalableFonts = 0x00000008, + MonospacedFonts = 0x00000010, + ProportionalFonts = 0x00000020 + }; + Q_ENUM(FontDialogOption) + + Q_DECLARE_FLAGS(FontDialogOptions, FontDialogOption) + + explicit QFontDialog(QWidget *parent = Q_NULLPTR); + explicit QFontDialog(const QFont &initial, QWidget *parent = Q_NULLPTR); + ~QFontDialog(); + + void setCurrentFont(const QFont &font); + QFont currentFont() const; + + QFont selectedFont() const; + + void setOption(FontDialogOption option, bool on = true); + bool testOption(FontDialogOption option) const; + void setOptions(FontDialogOptions options); + FontDialogOptions options() const; + + using QDialog::open; + void open(QObject *receiver, const char *member); + + void setVisible(bool visible) Q_DECL_OVERRIDE; + + static QFont getFont(bool *ok, QWidget *parent = Q_NULLPTR); + static QFont getFont(bool *ok, const QFont &initial, QWidget *parent = Q_NULLPTR, const QString &title = QString(), + FontDialogOptions options = FontDialogOptions()); + +Q_SIGNALS: + void currentFontChanged(const QFont &font); + void fontSelected(const QFont &font); + +protected: + void changeEvent(QEvent *event) Q_DECL_OVERRIDE; + void done(int result) Q_DECL_OVERRIDE; + bool eventFilter(QObject *object, QEvent *event) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QFontDialog) + + Q_PRIVATE_SLOT(d_func(), void _q_sizeChanged(const QString &)) + Q_PRIVATE_SLOT(d_func(), void _q_familyHighlighted(int)) + Q_PRIVATE_SLOT(d_func(), void _q_writingSystemHighlighted(int)) + Q_PRIVATE_SLOT(d_func(), void _q_styleHighlighted(int)) + Q_PRIVATE_SLOT(d_func(), void _q_sizeHighlighted(int)) + Q_PRIVATE_SLOT(d_func(), void _q_updateSample()) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QFontDialog::FontDialogOptions) + +QT_END_NAMESPACE + +#endif // QFONTDIALOG_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qformlayout.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qformlayout.h new file mode 100644 index 000000000..5ec27433d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qformlayout.h @@ -0,0 +1,176 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFORMLAYOUT_H +#define QFORMLAYOUT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/QLayout> + +QT_REQUIRE_CONFIG(formlayout); + +QT_BEGIN_NAMESPACE + + +class QFormLayoutPrivate; + +class Q_WIDGETS_EXPORT QFormLayout : public QLayout +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QFormLayout) + Q_PROPERTY(FieldGrowthPolicy fieldGrowthPolicy READ fieldGrowthPolicy WRITE setFieldGrowthPolicy RESET resetFieldGrowthPolicy) + Q_PROPERTY(RowWrapPolicy rowWrapPolicy READ rowWrapPolicy WRITE setRowWrapPolicy RESET resetRowWrapPolicy) + Q_PROPERTY(Qt::Alignment labelAlignment READ labelAlignment WRITE setLabelAlignment RESET resetLabelAlignment) + Q_PROPERTY(Qt::Alignment formAlignment READ formAlignment WRITE setFormAlignment RESET resetFormAlignment) + Q_PROPERTY(int horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing) + Q_PROPERTY(int verticalSpacing READ verticalSpacing WRITE setVerticalSpacing) + +public: + enum FieldGrowthPolicy { + FieldsStayAtSizeHint, + ExpandingFieldsGrow, + AllNonFixedFieldsGrow + }; + Q_ENUM(FieldGrowthPolicy) + + enum RowWrapPolicy { + DontWrapRows, + WrapLongRows, + WrapAllRows + }; + Q_ENUM(RowWrapPolicy) + + enum ItemRole { + LabelRole = 0, + FieldRole = 1, + SpanningRole = 2 + }; + Q_ENUM(ItemRole) + + struct TakeRowResult { + QLayoutItem *labelItem; + QLayoutItem *fieldItem; + }; + + explicit QFormLayout(QWidget *parent = Q_NULLPTR); + ~QFormLayout(); + + void setFieldGrowthPolicy(FieldGrowthPolicy policy); + FieldGrowthPolicy fieldGrowthPolicy() const; + void setRowWrapPolicy(RowWrapPolicy policy); + RowWrapPolicy rowWrapPolicy() const; + void setLabelAlignment(Qt::Alignment alignment); + Qt::Alignment labelAlignment() const; + void setFormAlignment(Qt::Alignment alignment); + Qt::Alignment formAlignment() const; + + void setHorizontalSpacing(int spacing); + int horizontalSpacing() const; + void setVerticalSpacing(int spacing); + int verticalSpacing() const; + + int spacing() const; + void setSpacing(int); + + void addRow(QWidget *label, QWidget *field); + void addRow(QWidget *label, QLayout *field); + void addRow(const QString &labelText, QWidget *field); + void addRow(const QString &labelText, QLayout *field); + void addRow(QWidget *widget); + void addRow(QLayout *layout); + + void insertRow(int row, QWidget *label, QWidget *field); + void insertRow(int row, QWidget *label, QLayout *field); + void insertRow(int row, const QString &labelText, QWidget *field); + void insertRow(int row, const QString &labelText, QLayout *field); + void insertRow(int row, QWidget *widget); + void insertRow(int row, QLayout *layout); + + void removeRow(int row); + void removeRow(QWidget *widget); + void removeRow(QLayout *layout); + + TakeRowResult takeRow(int row); + TakeRowResult takeRow(QWidget *widget); + TakeRowResult takeRow(QLayout *layout); + + void setItem(int row, ItemRole role, QLayoutItem *item); + void setWidget(int row, ItemRole role, QWidget *widget); + void setLayout(int row, ItemRole role, QLayout *layout); + + QLayoutItem *itemAt(int row, ItemRole role) const; + void getItemPosition(int index, int *rowPtr, ItemRole *rolePtr) const; + void getWidgetPosition(QWidget *widget, int *rowPtr, ItemRole *rolePtr) const; + void getLayoutPosition(QLayout *layout, int *rowPtr, ItemRole *rolePtr) const; + QWidget *labelForField(QWidget *field) const; + QWidget *labelForField(QLayout *field) const; + + // reimplemented from QLayout + void addItem(QLayoutItem *item) Q_DECL_OVERRIDE; + QLayoutItem *itemAt(int index) const Q_DECL_OVERRIDE; + QLayoutItem *takeAt(int index) Q_DECL_OVERRIDE; + + void setGeometry(const QRect &rect) Q_DECL_OVERRIDE; + QSize minimumSize() const Q_DECL_OVERRIDE; + QSize sizeHint() const Q_DECL_OVERRIDE; + void invalidate() Q_DECL_OVERRIDE; + + bool hasHeightForWidth() const Q_DECL_OVERRIDE; + int heightForWidth(int width) const Q_DECL_OVERRIDE; + Qt::Orientations expandingDirections() const Q_DECL_OVERRIDE; + int count() const Q_DECL_OVERRIDE; + + int rowCount() const; + +#if 0 + void dump() const; +#endif + +private: + void resetFieldGrowthPolicy(); + void resetRowWrapPolicy(); + void resetLabelAlignment(); + void resetFormAlignment(); +}; + +Q_DECLARE_TYPEINFO(QFormLayout::TakeRowResult, Q_PRIMITIVE_TYPE); + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qframe.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qframe.h new file mode 100644 index 000000000..986915a28 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qframe.h @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFRAME_H +#define QFRAME_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_BEGIN_NAMESPACE + + +class QFramePrivate; +class QStyleOptionFrame; + +class Q_WIDGETS_EXPORT QFrame : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(Shape frameShape READ frameShape WRITE setFrameShape) + Q_PROPERTY(Shadow frameShadow READ frameShadow WRITE setFrameShadow) + Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth) + Q_PROPERTY(int midLineWidth READ midLineWidth WRITE setMidLineWidth) + Q_PROPERTY(int frameWidth READ frameWidth) + Q_PROPERTY(QRect frameRect READ frameRect WRITE setFrameRect DESIGNABLE false) + +public: + explicit QFrame(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); + ~QFrame(); + + int frameStyle() const; + void setFrameStyle(int); + + int frameWidth() const; + + QSize sizeHint() const Q_DECL_OVERRIDE; + + enum Shape { + NoFrame = 0, // no frame + Box = 0x0001, // rectangular box + Panel = 0x0002, // rectangular panel + WinPanel = 0x0003, // rectangular panel (Windows) + HLine = 0x0004, // horizontal line + VLine = 0x0005, // vertical line + StyledPanel = 0x0006 // rectangular panel depending on the GUI style + }; + Q_ENUM(Shape) + enum Shadow { + Plain = 0x0010, // plain line + Raised = 0x0020, // raised shadow effect + Sunken = 0x0030 // sunken shadow effect + }; + Q_ENUM(Shadow) + + enum StyleMask { + Shadow_Mask = 0x00f0, // mask for the shadow + Shape_Mask = 0x000f // mask for the shape + }; + + Shape frameShape() const; + void setFrameShape(Shape); + Shadow frameShadow() const; + void setFrameShadow(Shadow); + + int lineWidth() const; + void setLineWidth(int); + + int midLineWidth() const; + void setMidLineWidth(int); + + QRect frameRect() const; + void setFrameRect(const QRect &); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void changeEvent(QEvent *) Q_DECL_OVERRIDE; + void drawFrame(QPainter *); + + +protected: + QFrame(QFramePrivate &dd, QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); + void initStyleOption(QStyleOptionFrame *option) const; + +private: + Q_DISABLE_COPY(QFrame) + Q_DECLARE_PRIVATE(QFrame) +}; + +QT_END_NAMESPACE + +#endif // QFRAME_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgesture.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgesture.h new file mode 100644 index 000000000..1eda611d6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgesture.h @@ -0,0 +1,328 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGESTURE_H +#define QGESTURE_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qlist.h> +#include <QtCore/qdatetime.h> +#include <QtCore/qpoint.h> +#include <QtCore/qrect.h> +#include <QtCore/qmetatype.h> +#include <QtGui/qevent.h> + +#ifndef QT_NO_GESTURES + +Q_DECLARE_METATYPE(Qt::GestureState) +Q_DECLARE_METATYPE(Qt::GestureType) + +QT_BEGIN_NAMESPACE + + +class QGesturePrivate; +class Q_WIDGETS_EXPORT QGesture : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QGesture) + + Q_PROPERTY(Qt::GestureState state READ state) + Q_PROPERTY(Qt::GestureType gestureType READ gestureType) + Q_PROPERTY(QGesture::GestureCancelPolicy gestureCancelPolicy READ gestureCancelPolicy WRITE setGestureCancelPolicy) + Q_PROPERTY(QPointF hotSpot READ hotSpot WRITE setHotSpot RESET unsetHotSpot) + Q_PROPERTY(bool hasHotSpot READ hasHotSpot) + +public: + explicit QGesture(QObject *parent = Q_NULLPTR); + ~QGesture(); + + Qt::GestureType gestureType() const; + + Qt::GestureState state() const; + + QPointF hotSpot() const; + void setHotSpot(const QPointF &value); + bool hasHotSpot() const; + void unsetHotSpot(); + + enum GestureCancelPolicy { + CancelNone = 0, + CancelAllInContext + }; + + void setGestureCancelPolicy(GestureCancelPolicy policy); + GestureCancelPolicy gestureCancelPolicy() const; + +protected: + QGesture(QGesturePrivate &dd, QObject *parent); + +private: + friend class QGestureEvent; + friend class QGestureRecognizer; + friend class QGestureManager; + friend class QGraphicsScenePrivate; +}; + +class QPanGesturePrivate; +class Q_WIDGETS_EXPORT QPanGesture : public QGesture +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPanGesture) + + Q_PROPERTY(QPointF lastOffset READ lastOffset WRITE setLastOffset) + Q_PROPERTY(QPointF offset READ offset WRITE setOffset) + Q_PROPERTY(QPointF delta READ delta STORED false) + Q_PROPERTY(qreal acceleration READ acceleration WRITE setAcceleration) + Q_PRIVATE_PROPERTY(QPanGesture::d_func(), qreal horizontalVelocity READ horizontalVelocity WRITE setHorizontalVelocity) + Q_PRIVATE_PROPERTY(QPanGesture::d_func(), qreal verticalVelocity READ verticalVelocity WRITE setVerticalVelocity) + +public: + explicit QPanGesture(QObject *parent = Q_NULLPTR); + ~QPanGesture(); + + QPointF lastOffset() const; + QPointF offset() const; + QPointF delta() const; + qreal acceleration() const; + + void setLastOffset(const QPointF &value); + void setOffset(const QPointF &value); + void setAcceleration(qreal value); + + friend class QPanGestureRecognizer; + friend class QWinNativePanGestureRecognizer; +}; + +class QPinchGesturePrivate; +class Q_WIDGETS_EXPORT QPinchGesture : public QGesture +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPinchGesture) + +public: + enum ChangeFlag { + ScaleFactorChanged = 0x1, + RotationAngleChanged = 0x2, + CenterPointChanged = 0x4 + }; + Q_FLAG(ChangeFlag) + Q_DECLARE_FLAGS(ChangeFlags, ChangeFlag) + Q_FLAG(ChangeFlags) + + Q_PROPERTY(ChangeFlags totalChangeFlags READ totalChangeFlags WRITE setTotalChangeFlags) + Q_PROPERTY(ChangeFlags changeFlags READ changeFlags WRITE setChangeFlags) + + Q_PROPERTY(qreal totalScaleFactor READ totalScaleFactor WRITE setTotalScaleFactor) + Q_PROPERTY(qreal lastScaleFactor READ lastScaleFactor WRITE setLastScaleFactor) + Q_PROPERTY(qreal scaleFactor READ scaleFactor WRITE setScaleFactor) + + Q_PROPERTY(qreal totalRotationAngle READ totalRotationAngle WRITE setTotalRotationAngle) + Q_PROPERTY(qreal lastRotationAngle READ lastRotationAngle WRITE setLastRotationAngle) + Q_PROPERTY(qreal rotationAngle READ rotationAngle WRITE setRotationAngle) + + Q_PROPERTY(QPointF startCenterPoint READ startCenterPoint WRITE setStartCenterPoint) + Q_PROPERTY(QPointF lastCenterPoint READ lastCenterPoint WRITE setLastCenterPoint) + Q_PROPERTY(QPointF centerPoint READ centerPoint WRITE setCenterPoint) + +public: + explicit QPinchGesture(QObject *parent = Q_NULLPTR); + ~QPinchGesture(); + + ChangeFlags totalChangeFlags() const; + void setTotalChangeFlags(ChangeFlags value); + + ChangeFlags changeFlags() const; + void setChangeFlags(ChangeFlags value); + + QPointF startCenterPoint() const; + QPointF lastCenterPoint() const; + QPointF centerPoint() const; + void setStartCenterPoint(const QPointF &value); + void setLastCenterPoint(const QPointF &value); + void setCenterPoint(const QPointF &value); + + qreal totalScaleFactor() const; + qreal lastScaleFactor() const; + qreal scaleFactor() const; + void setTotalScaleFactor(qreal value); + void setLastScaleFactor(qreal value); + void setScaleFactor(qreal value); + + qreal totalRotationAngle() const; + qreal lastRotationAngle() const; + qreal rotationAngle() const; + void setTotalRotationAngle(qreal value); + void setLastRotationAngle(qreal value); + void setRotationAngle(qreal value); + + friend class QPinchGestureRecognizer; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QPinchGesture::ChangeFlags) + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QPinchGesture::ChangeFlags) + +QT_BEGIN_NAMESPACE + +class QSwipeGesturePrivate; +class Q_WIDGETS_EXPORT QSwipeGesture : public QGesture +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QSwipeGesture) + + Q_PROPERTY(SwipeDirection horizontalDirection READ horizontalDirection STORED false) + Q_PROPERTY(SwipeDirection verticalDirection READ verticalDirection STORED false) + Q_PROPERTY(qreal swipeAngle READ swipeAngle WRITE setSwipeAngle) + Q_PRIVATE_PROPERTY(QSwipeGesture::d_func(), qreal velocity READ velocity WRITE setVelocity) + +public: + enum SwipeDirection { NoDirection, Left, Right, Up, Down }; + Q_ENUM(SwipeDirection) + + explicit QSwipeGesture(QObject *parent = Q_NULLPTR); + ~QSwipeGesture(); + + SwipeDirection horizontalDirection() const; + SwipeDirection verticalDirection() const; + + qreal swipeAngle() const; + void setSwipeAngle(qreal value); + + friend class QSwipeGestureRecognizer; +}; + +class QTapGesturePrivate; +class Q_WIDGETS_EXPORT QTapGesture : public QGesture +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QTapGesture) + + Q_PROPERTY(QPointF position READ position WRITE setPosition) + +public: + explicit QTapGesture(QObject *parent = Q_NULLPTR); + ~QTapGesture(); + + QPointF position() const; + void setPosition(const QPointF &pos); + + friend class QTapGestureRecognizer; +}; + +class QTapAndHoldGesturePrivate; +class Q_WIDGETS_EXPORT QTapAndHoldGesture : public QGesture +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QTapAndHoldGesture) + + Q_PROPERTY(QPointF position READ position WRITE setPosition) + +public: + explicit QTapAndHoldGesture(QObject *parent = Q_NULLPTR); + ~QTapAndHoldGesture(); + + QPointF position() const; + void setPosition(const QPointF &pos); + + static void setTimeout(int msecs); + static int timeout(); + + friend class QTapAndHoldGestureRecognizer; +}; + +class QGesture; +class QGestureEventPrivate; +class Q_WIDGETS_EXPORT QGestureEvent : public QEvent +{ +public: + explicit QGestureEvent(const QList<QGesture *> &gestures); + ~QGestureEvent(); + + QList<QGesture *> gestures() const; + QGesture *gesture(Qt::GestureType type) const; + + QList<QGesture *> activeGestures() const; + QList<QGesture *> canceledGestures() const; + + using QEvent::setAccepted; + using QEvent::isAccepted; + using QEvent::accept; + using QEvent::ignore; + + void setAccepted(QGesture *, bool); + void accept(QGesture *); + void ignore(QGesture *); + bool isAccepted(QGesture *) const; + + void setAccepted(Qt::GestureType, bool); + void accept(Qt::GestureType); + void ignore(Qt::GestureType); + bool isAccepted(Qt::GestureType) const; + + void setWidget(QWidget *widget); + QWidget *widget() const; + +#if QT_CONFIG(graphicsview) + QPointF mapToGraphicsScene(const QPointF &gesturePoint) const; +#endif + +private: + QList<QGesture *> m_gestures; + QWidget *m_widget; + QMap<Qt::GestureType, bool> m_accepted; + QMap<Qt::GestureType, QWidget *> m_targetWidgets; + + friend class QApplication; + friend class QGestureManager; +}; + +# ifndef QT_NO_DEBUG_STREAM +Q_WIDGETS_EXPORT QDebug operator<<(QDebug, const QGesture *); +Q_WIDGETS_EXPORT QDebug operator<<(QDebug, const QGestureEvent *); +# endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGesture::GestureCancelPolicy) +#endif // QT_NO_GESTURES + +#endif // QGESTURE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgesturerecognizer.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgesturerecognizer.h new file mode 100644 index 000000000..04e85c46c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgesturerecognizer.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGESTURERECOGNIZER_H +#define QGESTURERECOGNIZER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qnamespace.h> + +#ifndef QT_NO_GESTURES + +QT_BEGIN_NAMESPACE + + +class QObject; +class QEvent; +class QGesture; +class Q_WIDGETS_EXPORT QGestureRecognizer +{ +public: + enum ResultFlag + { + Ignore = 0x0001, + + MayBeGesture = 0x0002, + TriggerGesture = 0x0004, + FinishGesture = 0x0008, + CancelGesture = 0x0010, + + ResultState_Mask = 0x00ff, + + ConsumeEventHint = 0x0100, + // StoreEventHint = 0x0200, + // ReplayStoredEventsHint = 0x0400, + // DiscardStoredEventsHint = 0x0800, + + ResultHint_Mask = 0xff00 + }; + Q_DECLARE_FLAGS(Result, ResultFlag) + + QGestureRecognizer(); + virtual ~QGestureRecognizer(); + + virtual QGesture *create(QObject *target); + virtual Result recognize(QGesture *state, QObject *watched, + QEvent *event) = 0; + virtual void reset(QGesture *state); + + static Qt::GestureType registerRecognizer(QGestureRecognizer *recognizer); + static void unregisterRecognizer(Qt::GestureType type); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QGestureRecognizer::Result) + +QT_END_NAMESPACE + +#endif // QT_NO_GESTURES + +#endif // QGESTURERECOGNIZER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsanchorlayout.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsanchorlayout.h new file mode 100644 index 000000000..01dc30718 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsanchorlayout.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSANCHORLAYOUT_H +#define QGRAPHICSANCHORLAYOUT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qgraphicsitem.h> +#include <QtWidgets/qgraphicslayout.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsAnchorPrivate; +class QGraphicsAnchorLayout; +class QGraphicsAnchorLayoutPrivate; + +class Q_WIDGETS_EXPORT QGraphicsAnchor : public QObject +{ + Q_OBJECT + Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing RESET unsetSpacing) + Q_PROPERTY(QSizePolicy::Policy sizePolicy READ sizePolicy WRITE setSizePolicy) +public: + void setSpacing(qreal spacing); + void unsetSpacing(); + qreal spacing() const; + void setSizePolicy(QSizePolicy::Policy policy); + QSizePolicy::Policy sizePolicy() const; + ~QGraphicsAnchor(); +private: + QGraphicsAnchor(QGraphicsAnchorLayout *parent); + + Q_DECLARE_PRIVATE(QGraphicsAnchor) + + friend class QGraphicsAnchorLayoutPrivate; + friend struct AnchorData; +}; + +class Q_WIDGETS_EXPORT QGraphicsAnchorLayout : public QGraphicsLayout +{ +public: + QGraphicsAnchorLayout(QGraphicsLayoutItem *parent = Q_NULLPTR); + virtual ~QGraphicsAnchorLayout(); + + QGraphicsAnchor *addAnchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, + QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge); + QGraphicsAnchor *anchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, + QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge); + + void addCornerAnchors(QGraphicsLayoutItem *firstItem, Qt::Corner firstCorner, + QGraphicsLayoutItem *secondItem, Qt::Corner secondCorner); + + void addAnchors(QGraphicsLayoutItem *firstItem, + QGraphicsLayoutItem *secondItem, + Qt::Orientations orientations = Qt::Horizontal | Qt::Vertical); + + void setHorizontalSpacing(qreal spacing); + void setVerticalSpacing(qreal spacing); + void setSpacing(qreal spacing); + qreal horizontalSpacing() const; + qreal verticalSpacing() const; + + void removeAt(int index) Q_DECL_OVERRIDE; + void setGeometry(const QRectF &rect) Q_DECL_OVERRIDE; + int count() const Q_DECL_OVERRIDE; + QGraphicsLayoutItem *itemAt(int index) const Q_DECL_OVERRIDE; + + void invalidate() Q_DECL_OVERRIDE; +protected: + QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGraphicsAnchorLayout) + Q_DECLARE_PRIVATE(QGraphicsAnchorLayout) + + friend class QGraphicsAnchor; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicseffect.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicseffect.h new file mode 100644 index 000000000..78d025ded --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicseffect.h @@ -0,0 +1,283 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSEFFECT_H +#define QGRAPHICSEFFECT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qpoint.h> +#include <QtCore/qrect.h> +#include <QtGui/qcolor.h> +#include <QtGui/qbrush.h> + +QT_REQUIRE_CONFIG(graphicseffect); + +QT_BEGIN_NAMESPACE + +class QGraphicsItem; +class QStyleOption; +class QPainter; +class QPixmap; + +class QGraphicsEffectSource; + +class QGraphicsEffectPrivate; +class Q_WIDGETS_EXPORT QGraphicsEffect : public QObject +{ + Q_OBJECT + Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged) +public: + enum ChangeFlag { + SourceAttached = 0x1, + SourceDetached = 0x2, + SourceBoundingRectChanged = 0x4, + SourceInvalidated = 0x8 + }; + Q_DECLARE_FLAGS(ChangeFlags, ChangeFlag) + Q_FLAG(ChangeFlags) + + enum PixmapPadMode { + NoPad, + PadToTransparentBorder, + PadToEffectiveBoundingRect + }; + + QGraphicsEffect(QObject *parent = Q_NULLPTR); + virtual ~QGraphicsEffect(); + + virtual QRectF boundingRectFor(const QRectF &sourceRect) const; + QRectF boundingRect() const; + + bool isEnabled() const; + +public Q_SLOTS: + void setEnabled(bool enable); + void update(); + +Q_SIGNALS: + void enabledChanged(bool enabled); + +protected: + QGraphicsEffect(QGraphicsEffectPrivate &d, QObject *parent = Q_NULLPTR); + virtual void draw(QPainter *painter) = 0; + virtual void sourceChanged(ChangeFlags flags); + void updateBoundingRect(); + + bool sourceIsPixmap() const; + QRectF sourceBoundingRect(Qt::CoordinateSystem system = Qt::LogicalCoordinates) const; + void drawSource(QPainter *painter); + QPixmap sourcePixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates, + QPoint *offset = Q_NULLPTR, + PixmapPadMode mode = PadToEffectiveBoundingRect) const; + +private: + Q_DECLARE_PRIVATE(QGraphicsEffect) + Q_DISABLE_COPY(QGraphicsEffect) + friend class QGraphicsItem; + friend class QGraphicsItemPrivate; + friend class QGraphicsScenePrivate; + friend class QWidget; + friend class QWidgetPrivate; + +public: + QGraphicsEffectSource *source() const; // internal + +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsEffect::ChangeFlags) + +class QGraphicsColorizeEffectPrivate; +class Q_WIDGETS_EXPORT QGraphicsColorizeEffect: public QGraphicsEffect +{ + Q_OBJECT + Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) + Q_PROPERTY(qreal strength READ strength WRITE setStrength NOTIFY strengthChanged) +public: + QGraphicsColorizeEffect(QObject *parent = Q_NULLPTR); + ~QGraphicsColorizeEffect(); + + QColor color() const; + qreal strength() const; + +public Q_SLOTS: + void setColor(const QColor &c); + void setStrength(qreal strength); + +Q_SIGNALS: + void colorChanged(const QColor &color); + void strengthChanged(qreal strength); + +protected: + void draw(QPainter *painter) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QGraphicsColorizeEffect) + Q_DISABLE_COPY(QGraphicsColorizeEffect) +}; + +class QGraphicsBlurEffectPrivate; +class Q_WIDGETS_EXPORT QGraphicsBlurEffect: public QGraphicsEffect +{ + Q_OBJECT + Q_PROPERTY(qreal blurRadius READ blurRadius WRITE setBlurRadius NOTIFY blurRadiusChanged) + Q_PROPERTY(BlurHints blurHints READ blurHints WRITE setBlurHints NOTIFY blurHintsChanged) +public: + enum BlurHint { + PerformanceHint = 0x00, + QualityHint = 0x01, + AnimationHint = 0x02 + }; + Q_FLAG(BlurHint) + Q_DECLARE_FLAGS(BlurHints, BlurHint) + Q_FLAG(BlurHints) + + QGraphicsBlurEffect(QObject *parent = Q_NULLPTR); + ~QGraphicsBlurEffect(); + + QRectF boundingRectFor(const QRectF &rect) const Q_DECL_OVERRIDE; + qreal blurRadius() const; + BlurHints blurHints() const; + +public Q_SLOTS: + void setBlurRadius(qreal blurRadius); + void setBlurHints(BlurHints hints); + +Q_SIGNALS: + void blurRadiusChanged(qreal blurRadius); + void blurHintsChanged(BlurHints hints); + +protected: + void draw(QPainter *painter) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QGraphicsBlurEffect) + Q_DISABLE_COPY(QGraphicsBlurEffect) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsBlurEffect::BlurHints) + +class QGraphicsDropShadowEffectPrivate; +class Q_WIDGETS_EXPORT QGraphicsDropShadowEffect: public QGraphicsEffect +{ + Q_OBJECT + Q_PROPERTY(QPointF offset READ offset WRITE setOffset NOTIFY offsetChanged) + Q_PROPERTY(qreal xOffset READ xOffset WRITE setXOffset NOTIFY offsetChanged) + Q_PROPERTY(qreal yOffset READ yOffset WRITE setYOffset NOTIFY offsetChanged) + Q_PROPERTY(qreal blurRadius READ blurRadius WRITE setBlurRadius NOTIFY blurRadiusChanged) + Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) +public: + QGraphicsDropShadowEffect(QObject *parent = Q_NULLPTR); + ~QGraphicsDropShadowEffect(); + + QRectF boundingRectFor(const QRectF &rect) const Q_DECL_OVERRIDE; + QPointF offset() const; + + inline qreal xOffset() const + { return offset().x(); } + + inline qreal yOffset() const + { return offset().y(); } + + qreal blurRadius() const; + QColor color() const; + +public Q_SLOTS: + void setOffset(const QPointF &ofs); + + inline void setOffset(qreal dx, qreal dy) + { setOffset(QPointF(dx, dy)); } + + inline void setOffset(qreal d) + { setOffset(QPointF(d, d)); } + + inline void setXOffset(qreal dx) + { setOffset(QPointF(dx, yOffset())); } + + inline void setYOffset(qreal dy) + { setOffset(QPointF(xOffset(), dy)); } + + void setBlurRadius(qreal blurRadius); + void setColor(const QColor &color); + +Q_SIGNALS: + void offsetChanged(const QPointF &offset); + void blurRadiusChanged(qreal blurRadius); + void colorChanged(const QColor &color); + +protected: + void draw(QPainter *painter) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QGraphicsDropShadowEffect) + Q_DISABLE_COPY(QGraphicsDropShadowEffect) +}; + +class QGraphicsOpacityEffectPrivate; +class Q_WIDGETS_EXPORT QGraphicsOpacityEffect: public QGraphicsEffect +{ + Q_OBJECT + Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged) + Q_PROPERTY(QBrush opacityMask READ opacityMask WRITE setOpacityMask NOTIFY opacityMaskChanged) +public: + QGraphicsOpacityEffect(QObject *parent = Q_NULLPTR); + ~QGraphicsOpacityEffect(); + + qreal opacity() const; + QBrush opacityMask() const; + +public Q_SLOTS: + void setOpacity(qreal opacity); + void setOpacityMask(const QBrush &mask); + +Q_SIGNALS: + void opacityChanged(qreal opacity); + void opacityMaskChanged(const QBrush &mask); + +protected: + void draw(QPainter *painter) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QGraphicsOpacityEffect) + Q_DISABLE_COPY(QGraphicsOpacityEffect) +}; + +QT_END_NAMESPACE + +#endif // QGRAPHICSEFFECT_H + diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsgridlayout.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsgridlayout.h new file mode 100644 index 000000000..fb9bc2e32 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsgridlayout.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSGRIDLAYOUT_H +#define QGRAPHICSGRIDLAYOUT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qgraphicsitem.h> +#include <QtWidgets/qgraphicslayout.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsGridLayoutPrivate; + +class Q_WIDGETS_EXPORT QGraphicsGridLayout : public QGraphicsLayout +{ +public: + QGraphicsGridLayout(QGraphicsLayoutItem *parent = Q_NULLPTR); + virtual ~QGraphicsGridLayout(); + + void addItem(QGraphicsLayoutItem *item, int row, int column, int rowSpan, int columnSpan, + Qt::Alignment alignment = Qt::Alignment()); + inline void addItem(QGraphicsLayoutItem *item, int row, int column, Qt::Alignment alignment = Qt::Alignment()); + + void setHorizontalSpacing(qreal spacing); + qreal horizontalSpacing() const; + void setVerticalSpacing(qreal spacing); + qreal verticalSpacing() const; + void setSpacing(qreal spacing); + + void setRowSpacing(int row, qreal spacing); + qreal rowSpacing(int row) const; + void setColumnSpacing(int column, qreal spacing); + qreal columnSpacing(int column) const; + + void setRowStretchFactor(int row, int stretch); + int rowStretchFactor(int row) const; + void setColumnStretchFactor(int column, int stretch); + int columnStretchFactor(int column) const; + + void setRowMinimumHeight(int row, qreal height); + qreal rowMinimumHeight(int row) const; + void setRowPreferredHeight(int row, qreal height); + qreal rowPreferredHeight(int row) const; + void setRowMaximumHeight(int row, qreal height); + qreal rowMaximumHeight(int row) const; + void setRowFixedHeight(int row, qreal height); + + void setColumnMinimumWidth(int column, qreal width); + qreal columnMinimumWidth(int column) const; + void setColumnPreferredWidth(int column, qreal width); + qreal columnPreferredWidth(int column) const; + void setColumnMaximumWidth(int column, qreal width); + qreal columnMaximumWidth(int column) const; + void setColumnFixedWidth(int column, qreal width); + + void setRowAlignment(int row, Qt::Alignment alignment); + Qt::Alignment rowAlignment(int row) const; + void setColumnAlignment(int column, Qt::Alignment alignment); + Qt::Alignment columnAlignment(int column) const; + + void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment); + Qt::Alignment alignment(QGraphicsLayoutItem *item) const; + + int rowCount() const; + int columnCount() const; + + QGraphicsLayoutItem *itemAt(int row, int column) const; + + // inherited from QGraphicsLayout + int count() const Q_DECL_OVERRIDE; + QGraphicsLayoutItem *itemAt(int index) const Q_DECL_OVERRIDE; + void removeAt(int index) Q_DECL_OVERRIDE; + void removeItem(QGraphicsLayoutItem *item); + + void invalidate() Q_DECL_OVERRIDE; + + // inherited from QGraphicsLayoutItem + void setGeometry(const QRectF &rect) Q_DECL_OVERRIDE; + QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const Q_DECL_OVERRIDE; + + // #### + //QRect cellRect(int row, int column, int rowSpan = 1, int columnSpan = 1) const; + //QSizePolicy::ControlTypes controlTypes(LayoutSide side) const; + +private: + Q_DISABLE_COPY(QGraphicsGridLayout) + Q_DECLARE_PRIVATE(QGraphicsGridLayout) +}; + +inline void QGraphicsGridLayout::addItem(QGraphicsLayoutItem *aitem, int arow, int acolumn, Qt::Alignment aalignment) +{ addItem(aitem, arow, acolumn, 1, 1, aalignment); } + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsitem.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsitem.h new file mode 100644 index 000000000..11d872f6e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsitem.h @@ -0,0 +1,1054 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSITEM_H +#define QGRAPHICSITEM_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qvariant.h> +#include <QtCore/qrect.h> +#include <QtCore/qscopedpointer.h> +#include <QtGui/qpainterpath.h> +#include <QtGui/qpixmap.h> + +class tst_QGraphicsItem; + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QBrush; +class QCursor; +class QFocusEvent; +class QGraphicsEffect; +class QGraphicsItemGroup; +class QGraphicsObject; +class QGraphicsSceneContextMenuEvent; +class QGraphicsSceneDragDropEvent; +class QGraphicsSceneEvent; +class QGraphicsSceneHoverEvent; +class QGraphicsSceneMouseEvent; +class QGraphicsSceneWheelEvent; +class QGraphicsScene; +class QGraphicsTransform; +class QGraphicsWidget; +class QInputMethodEvent; +class QKeyEvent; +class QMatrix; +class QMenu; +class QPainter; +class QPen; +class QPointF; +class QRectF; +class QStyleOptionGraphicsItem; + +class QGraphicsItemPrivate; +class Q_WIDGETS_EXPORT QGraphicsItem +{ +public: + enum GraphicsItemFlag { + ItemIsMovable = 0x1, + ItemIsSelectable = 0x2, + ItemIsFocusable = 0x4, + ItemClipsToShape = 0x8, + ItemClipsChildrenToShape = 0x10, + ItemIgnoresTransformations = 0x20, + ItemIgnoresParentOpacity = 0x40, + ItemDoesntPropagateOpacityToChildren = 0x80, + ItemStacksBehindParent = 0x100, + ItemUsesExtendedStyleOption = 0x200, + ItemHasNoContents = 0x400, + ItemSendsGeometryChanges = 0x800, + ItemAcceptsInputMethod = 0x1000, + ItemNegativeZStacksBehindParent = 0x2000, + ItemIsPanel = 0x4000, + ItemIsFocusScope = 0x8000, // internal + ItemSendsScenePositionChanges = 0x10000, + ItemStopsClickFocusPropagation = 0x20000, + ItemStopsFocusHandling = 0x40000, + ItemContainsChildrenInShape = 0x80000 + // NB! Don't forget to increase the d_ptr->flags bit field by 1 when adding a new flag. + }; + Q_DECLARE_FLAGS(GraphicsItemFlags, GraphicsItemFlag) + + enum GraphicsItemChange { + ItemPositionChange, + ItemMatrixChange, + ItemVisibleChange, + ItemEnabledChange, + ItemSelectedChange, + ItemParentChange, + ItemChildAddedChange, + ItemChildRemovedChange, + ItemTransformChange, + ItemPositionHasChanged, + ItemTransformHasChanged, + ItemSceneChange, + ItemVisibleHasChanged, + ItemEnabledHasChanged, + ItemSelectedHasChanged, + ItemParentHasChanged, + ItemSceneHasChanged, + ItemCursorChange, + ItemCursorHasChanged, + ItemToolTipChange, + ItemToolTipHasChanged, + ItemFlagsChange, + ItemFlagsHaveChanged, + ItemZValueChange, + ItemZValueHasChanged, + ItemOpacityChange, + ItemOpacityHasChanged, + ItemScenePositionHasChanged, + ItemRotationChange, + ItemRotationHasChanged, + ItemScaleChange, + ItemScaleHasChanged, + ItemTransformOriginPointChange, + ItemTransformOriginPointHasChanged + }; + + enum CacheMode { + NoCache, + ItemCoordinateCache, + DeviceCoordinateCache + }; + + enum PanelModality + { + NonModal, + PanelModal, + SceneModal + }; + + explicit QGraphicsItem(QGraphicsItem *parent = Q_NULLPTR); + virtual ~QGraphicsItem(); + + QGraphicsScene *scene() const; + + QGraphicsItem *parentItem() const; + QGraphicsItem *topLevelItem() const; + QGraphicsObject *parentObject() const; + QGraphicsWidget *parentWidget() const; + QGraphicsWidget *topLevelWidget() const; + QGraphicsWidget *window() const; + QGraphicsItem *panel() const; + void setParentItem(QGraphicsItem *parent); +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline QList<QGraphicsItem *> children() const { return childItems(); } +#endif + QList<QGraphicsItem *> childItems() const; + bool isWidget() const; + bool isWindow() const; + bool isPanel() const; + + QGraphicsObject *toGraphicsObject(); + const QGraphicsObject *toGraphicsObject() const; + + QGraphicsItemGroup *group() const; + void setGroup(QGraphicsItemGroup *group); + + GraphicsItemFlags flags() const; + void setFlag(GraphicsItemFlag flag, bool enabled = true); + void setFlags(GraphicsItemFlags flags); + + CacheMode cacheMode() const; + void setCacheMode(CacheMode mode, const QSize &cacheSize = QSize()); + + PanelModality panelModality() const; + void setPanelModality(PanelModality panelModality); + bool isBlockedByModalPanel(QGraphicsItem **blockingPanel = Q_NULLPTR) const; + +#ifndef QT_NO_TOOLTIP + QString toolTip() const; + void setToolTip(const QString &toolTip); +#endif + +#ifndef QT_NO_CURSOR + QCursor cursor() const; + void setCursor(const QCursor &cursor); + bool hasCursor() const; + void unsetCursor(); +#endif + + bool isVisible() const; + bool isVisibleTo(const QGraphicsItem *parent) const; + void setVisible(bool visible); + inline void hide() { setVisible(false); } + inline void show() { setVisible(true); } + + bool isEnabled() const; + void setEnabled(bool enabled); + + bool isSelected() const; + void setSelected(bool selected); + + bool acceptDrops() const; + void setAcceptDrops(bool on); + + qreal opacity() const; + qreal effectiveOpacity() const; + void setOpacity(qreal opacity); + +#if QT_CONFIG(graphicseffect) + // Effect + QGraphicsEffect *graphicsEffect() const; + void setGraphicsEffect(QGraphicsEffect *effect); +#endif // QT_CONFIG(graphicseffect) + + Qt::MouseButtons acceptedMouseButtons() const; + void setAcceptedMouseButtons(Qt::MouseButtons buttons); +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline bool acceptsHoverEvents() const { return acceptHoverEvents(); } + QT_DEPRECATED inline void setAcceptsHoverEvents(bool enabled) { setAcceptHoverEvents(enabled); } +#endif + bool acceptHoverEvents() const; + void setAcceptHoverEvents(bool enabled); + bool acceptTouchEvents() const; + void setAcceptTouchEvents(bool enabled); + + bool filtersChildEvents() const; + void setFiltersChildEvents(bool enabled); + + bool handlesChildEvents() const; + void setHandlesChildEvents(bool enabled); + + bool isActive() const; + void setActive(bool active); + + bool hasFocus() const; + void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason); + void clearFocus(); + + QGraphicsItem *focusProxy() const; + void setFocusProxy(QGraphicsItem *item); + + QGraphicsItem *focusItem() const; + QGraphicsItem *focusScopeItem() const; + + void grabMouse(); + void ungrabMouse(); + void grabKeyboard(); + void ungrabKeyboard(); + + // Positioning in scene coordinates + QPointF pos() const; + inline qreal x() const { return pos().x(); } + void setX(qreal x); + inline qreal y() const { return pos().y(); } + void setY(qreal y); + QPointF scenePos() const; + void setPos(const QPointF &pos); + inline void setPos(qreal x, qreal y); + inline void moveBy(qreal dx, qreal dy) { setPos(pos().x() + dx, pos().y() + dy); } + + void ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50); + inline void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50); + + // Local transformation + QMatrix matrix() const; + QMatrix sceneMatrix() const; + void setMatrix(const QMatrix &matrix, bool combine = false); + void resetMatrix(); + QTransform transform() const; + QTransform sceneTransform() const; + QTransform deviceTransform(const QTransform &viewportTransform) const; + QTransform itemTransform(const QGraphicsItem *other, bool *ok = Q_NULLPTR) const; + void setTransform(const QTransform &matrix, bool combine = false); + void resetTransform(); +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline void rotate(qreal angle) { setTransform(QTransform().rotate(angle), true); } + QT_DEPRECATED inline void scale(qreal sx, qreal sy) { setTransform(QTransform::fromScale(sx, sy), true); } + QT_DEPRECATED inline void shear(qreal sh, qreal sv) { setTransform(QTransform().shear(sh, sv), true); } + QT_DEPRECATED inline void translate(qreal dx, qreal dy) { setTransform(QTransform::fromTranslate(dx, dy), true); } +#endif + void setRotation(qreal angle); + qreal rotation() const; + + void setScale(qreal scale); + qreal scale() const; + + QList<QGraphicsTransform *> transformations() const; + void setTransformations(const QList<QGraphicsTransform *> &transformations); + + QPointF transformOriginPoint() const; + void setTransformOriginPoint(const QPointF &origin); + inline void setTransformOriginPoint(qreal ax, qreal ay) + { setTransformOriginPoint(QPointF(ax,ay)); } + + virtual void advance(int phase); + + // Stacking order + qreal zValue() const; + void setZValue(qreal z); + void stackBefore(const QGraphicsItem *sibling); + + // Hit test + virtual QRectF boundingRect() const = 0; + QRectF childrenBoundingRect() const; + QRectF sceneBoundingRect() const; + virtual QPainterPath shape() const; + bool isClipped() const; + QPainterPath clipPath() const; + virtual bool contains(const QPointF &point) const; + virtual bool collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; + virtual bool collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; + QList<QGraphicsItem *> collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; + bool isObscured(const QRectF &rect = QRectF()) const; + inline bool isObscured(qreal x, qreal y, qreal w, qreal h) const; + virtual bool isObscuredBy(const QGraphicsItem *item) const; + virtual QPainterPath opaqueArea() const; + + QRegion boundingRegion(const QTransform &itemToDeviceTransform) const; + qreal boundingRegionGranularity() const; + void setBoundingRegionGranularity(qreal granularity); + + // Drawing + virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) = 0; + void update(const QRectF &rect = QRectF()); + inline void update(qreal x, qreal y, qreal width, qreal height); + void scroll(qreal dx, qreal dy, const QRectF &rect = QRectF()); + + // Coordinate mapping + QPointF mapToItem(const QGraphicsItem *item, const QPointF &point) const; + QPointF mapToParent(const QPointF &point) const; + QPointF mapToScene(const QPointF &point) const; + QPolygonF mapToItem(const QGraphicsItem *item, const QRectF &rect) const; + QPolygonF mapToParent(const QRectF &rect) const; + QPolygonF mapToScene(const QRectF &rect) const; + QRectF mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const; + QRectF mapRectToParent(const QRectF &rect) const; + QRectF mapRectToScene(const QRectF &rect) const; + QPolygonF mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const; + QPolygonF mapToParent(const QPolygonF &polygon) const; + QPolygonF mapToScene(const QPolygonF &polygon) const; + QPainterPath mapToItem(const QGraphicsItem *item, const QPainterPath &path) const; + QPainterPath mapToParent(const QPainterPath &path) const; + QPainterPath mapToScene(const QPainterPath &path) const; + QPointF mapFromItem(const QGraphicsItem *item, const QPointF &point) const; + QPointF mapFromParent(const QPointF &point) const; + QPointF mapFromScene(const QPointF &point) const; + QPolygonF mapFromItem(const QGraphicsItem *item, const QRectF &rect) const; + QPolygonF mapFromParent(const QRectF &rect) const; + QPolygonF mapFromScene(const QRectF &rect) const; + QRectF mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const; + QRectF mapRectFromParent(const QRectF &rect) const; + QRectF mapRectFromScene(const QRectF &rect) const; + QPolygonF mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const; + QPolygonF mapFromParent(const QPolygonF &polygon) const; + QPolygonF mapFromScene(const QPolygonF &polygon) const; + QPainterPath mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const; + QPainterPath mapFromParent(const QPainterPath &path) const; + QPainterPath mapFromScene(const QPainterPath &path) const; + + inline QPointF mapToItem(const QGraphicsItem *item, qreal x, qreal y) const; + inline QPointF mapToParent(qreal x, qreal y) const; + inline QPointF mapToScene(qreal x, qreal y) const; + inline QPolygonF mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const; + inline QPolygonF mapToParent(qreal x, qreal y, qreal w, qreal h) const; + inline QPolygonF mapToScene(qreal x, qreal y, qreal w, qreal h) const; + inline QRectF mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const; + inline QRectF mapRectToParent(qreal x, qreal y, qreal w, qreal h) const; + inline QRectF mapRectToScene(qreal x, qreal y, qreal w, qreal h) const; + inline QPointF mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const; + inline QPointF mapFromParent(qreal x, qreal y) const; + inline QPointF mapFromScene(qreal x, qreal y) const; + inline QPolygonF mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const; + inline QPolygonF mapFromParent(qreal x, qreal y, qreal w, qreal h) const; + inline QPolygonF mapFromScene(qreal x, qreal y, qreal w, qreal h) const; + inline QRectF mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const; + inline QRectF mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const; + inline QRectF mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const; + + bool isAncestorOf(const QGraphicsItem *child) const; + QGraphicsItem *commonAncestorItem(const QGraphicsItem *other) const; + bool isUnderMouse() const; + + // Custom data + QVariant data(int key) const; + void setData(int key, const QVariant &value); + + Qt::InputMethodHints inputMethodHints() const; + void setInputMethodHints(Qt::InputMethodHints hints); + + enum { + Type = 1, + UserType = 65536 + }; + virtual int type() const; + + void installSceneEventFilter(QGraphicsItem *filterItem); + void removeSceneEventFilter(QGraphicsItem *filterItem); + +protected: + void updateMicroFocus(); + virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event); + virtual bool sceneEvent(QEvent *event); + virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); + virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); + virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); + virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); + virtual void dropEvent(QGraphicsSceneDragDropEvent *event); + virtual void focusInEvent(QFocusEvent *event); + virtual void focusOutEvent(QFocusEvent *event); + virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); + virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); + virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); + virtual void keyPressEvent(QKeyEvent *event); + virtual void keyReleaseEvent(QKeyEvent *event); + virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); + virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + virtual void wheelEvent(QGraphicsSceneWheelEvent *event); + virtual void inputMethodEvent(QInputMethodEvent *event); + virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; + + virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); + + enum Extension { + UserExtension = 0x80000000 + }; + virtual bool supportsExtension(Extension extension) const; + virtual void setExtension(Extension extension, const QVariant &variant); + virtual QVariant extension(const QVariant &variant) const; + +protected: + QGraphicsItem(QGraphicsItemPrivate &dd, QGraphicsItem *parent); + QScopedPointer<QGraphicsItemPrivate> d_ptr; + + void addToIndex(); + void removeFromIndex(); + void prepareGeometryChange(); + +private: + Q_DISABLE_COPY(QGraphicsItem) + Q_DECLARE_PRIVATE(QGraphicsItem) + friend class QGraphicsItemGroup; + friend class QGraphicsScene; + friend class QGraphicsScenePrivate; + friend class QGraphicsSceneFindItemBspTreeVisitor; + friend class QGraphicsSceneBspTree; + friend class QGraphicsView; + friend class QGraphicsViewPrivate; + friend class QGraphicsObject; + friend class QGraphicsWidget; + friend class QGraphicsWidgetPrivate; + friend class QGraphicsProxyWidgetPrivate; + friend class QGraphicsSceneIndex; + friend class QGraphicsSceneIndexPrivate; + friend class QGraphicsSceneBspTreeIndex; + friend class QGraphicsSceneBspTreeIndexPrivate; + friend class QGraphicsItemEffectSourcePrivate; + friend class QGraphicsTransformPrivate; +#ifndef QT_NO_GESTURES + friend class QGestureManager; +#endif + friend class ::tst_QGraphicsItem; + friend bool qt_closestLeaf(const QGraphicsItem *, const QGraphicsItem *); + friend bool qt_closestItemFirst(const QGraphicsItem *, const QGraphicsItem *); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsItem::GraphicsItemFlags) +Q_DECLARE_INTERFACE(QGraphicsItem, "org.qt-project.Qt.QGraphicsItem") + +inline void QGraphicsItem::setPos(qreal ax, qreal ay) +{ setPos(QPointF(ax, ay)); } +inline void QGraphicsItem::ensureVisible(qreal ax, qreal ay, qreal w, qreal h, int xmargin, int ymargin) +{ ensureVisible(QRectF(ax, ay, w, h), xmargin, ymargin); } +inline void QGraphicsItem::update(qreal ax, qreal ay, qreal width, qreal height) +{ update(QRectF(ax, ay, width, height)); } +inline bool QGraphicsItem::isObscured(qreal ax, qreal ay, qreal w, qreal h) const +{ return isObscured(QRectF(ax, ay, w, h)); } +inline QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal ax, qreal ay) const +{ return mapToItem(item, QPointF(ax, ay)); } +inline QPointF QGraphicsItem::mapToParent(qreal ax, qreal ay) const +{ return mapToParent(QPointF(ax, ay)); } +inline QPointF QGraphicsItem::mapToScene(qreal ax, qreal ay) const +{ return mapToScene(QPointF(ax, ay)); } +inline QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal ax, qreal ay) const +{ return mapFromItem(item, QPointF(ax, ay)); } +inline QPointF QGraphicsItem::mapFromParent(qreal ax, qreal ay) const +{ return mapFromParent(QPointF(ax, ay)); } +inline QPointF QGraphicsItem::mapFromScene(qreal ax, qreal ay) const +{ return mapFromScene(QPointF(ax, ay)); } +inline QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const +{ return mapToItem(item, QRectF(ax, ay, w, h)); } +inline QPolygonF QGraphicsItem::mapToParent(qreal ax, qreal ay, qreal w, qreal h) const +{ return mapToParent(QRectF(ax, ay, w, h)); } +inline QPolygonF QGraphicsItem::mapToScene(qreal ax, qreal ay, qreal w, qreal h) const +{ return mapToScene(QRectF(ax, ay, w, h)); } +inline QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const +{ return mapRectToItem(item, QRectF(ax, ay, w, h)); } +inline QRectF QGraphicsItem::mapRectToParent(qreal ax, qreal ay, qreal w, qreal h) const +{ return mapRectToParent(QRectF(ax, ay, w, h)); } +inline QRectF QGraphicsItem::mapRectToScene(qreal ax, qreal ay, qreal w, qreal h) const +{ return mapRectToScene(QRectF(ax, ay, w, h)); } +inline QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const +{ return mapFromItem(item, QRectF(ax, ay, w, h)); } +inline QPolygonF QGraphicsItem::mapFromParent(qreal ax, qreal ay, qreal w, qreal h) const +{ return mapFromParent(QRectF(ax, ay, w, h)); } +inline QPolygonF QGraphicsItem::mapFromScene(qreal ax, qreal ay, qreal w, qreal h) const +{ return mapFromScene(QRectF(ax, ay, w, h)); } +inline QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const +{ return mapRectFromItem(item, QRectF(ax, ay, w, h)); } +inline QRectF QGraphicsItem::mapRectFromParent(qreal ax, qreal ay, qreal w, qreal h) const +{ return mapRectFromParent(QRectF(ax, ay, w, h)); } +inline QRectF QGraphicsItem::mapRectFromScene(qreal ax, qreal ay, qreal w, qreal h) const +{ return mapRectFromScene(QRectF(ax, ay, w, h)); } + + +class Q_WIDGETS_EXPORT QGraphicsObject : public QObject, public QGraphicsItem +{ + Q_OBJECT + Q_PROPERTY(QGraphicsObject * parent READ parentObject WRITE setParentItem NOTIFY parentChanged DESIGNABLE false) + Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged FINAL) + Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged) + Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) + Q_PROPERTY(QPointF pos READ pos WRITE setPos FINAL) + Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged FINAL) + Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged FINAL) + Q_PROPERTY(qreal z READ zValue WRITE setZValue NOTIFY zChanged FINAL) + Q_PROPERTY(qreal rotation READ rotation WRITE setRotation NOTIFY rotationChanged) + Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged) + Q_PROPERTY(QPointF transformOriginPoint READ transformOriginPoint WRITE setTransformOriginPoint) +#if QT_CONFIG(graphicseffect) + Q_PROPERTY(QGraphicsEffect *effect READ graphicsEffect WRITE setGraphicsEffect) +#endif + Q_PRIVATE_PROPERTY(QGraphicsItem::d_func(), QDeclarativeListProperty<QGraphicsObject> children READ childrenList DESIGNABLE false NOTIFY childrenChanged) + Q_PRIVATE_PROPERTY(QGraphicsItem::d_func(), qreal width READ width WRITE setWidth NOTIFY widthChanged RESET resetWidth FINAL) + Q_PRIVATE_PROPERTY(QGraphicsItem::d_func(), qreal height READ height WRITE setHeight NOTIFY heightChanged RESET resetHeight FINAL) + Q_CLASSINFO("DefaultProperty", "children") + Q_INTERFACES(QGraphicsItem) +public: + explicit QGraphicsObject(QGraphicsItem *parent = Q_NULLPTR); + ~QGraphicsObject(); + + using QObject::children; + +#ifndef QT_NO_GESTURES + void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags()); + void ungrabGesture(Qt::GestureType type); +#endif + +protected Q_SLOTS: + void updateMicroFocus(); + +Q_SIGNALS: + void parentChanged(); + void opacityChanged(); + void visibleChanged(); + void enabledChanged(); + void xChanged(); + void yChanged(); + void zChanged(); + void rotationChanged(); + void scaleChanged(); + void childrenChanged(); + void widthChanged(); + void heightChanged(); + +protected: + QGraphicsObject(QGraphicsItemPrivate &dd, QGraphicsItem *parent); + + bool event(QEvent *ev) Q_DECL_OVERRIDE; + +private: + friend class QGraphicsItem; + friend class QGraphicsItemPrivate; +}; + + +class QAbstractGraphicsShapeItemPrivate; +class Q_WIDGETS_EXPORT QAbstractGraphicsShapeItem : public QGraphicsItem +{ +public: + explicit QAbstractGraphicsShapeItem(QGraphicsItem *parent = Q_NULLPTR); + ~QAbstractGraphicsShapeItem(); + + QPen pen() const; + void setPen(const QPen &pen); + + QBrush brush() const; + void setBrush(const QBrush &brush); + + bool isObscuredBy(const QGraphicsItem *item) const Q_DECL_OVERRIDE; + QPainterPath opaqueArea() const Q_DECL_OVERRIDE; + +protected: + QAbstractGraphicsShapeItem(QAbstractGraphicsShapeItemPrivate &dd, + QGraphicsItem *parent); + +private: + Q_DISABLE_COPY(QAbstractGraphicsShapeItem) + Q_DECLARE_PRIVATE(QAbstractGraphicsShapeItem) +}; + +class QGraphicsPathItemPrivate; +class Q_WIDGETS_EXPORT QGraphicsPathItem : public QAbstractGraphicsShapeItem +{ +public: + explicit QGraphicsPathItem(QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsPathItem(const QPainterPath &path, QGraphicsItem *parent = Q_NULLPTR); + ~QGraphicsPathItem(); + + QPainterPath path() const; + void setPath(const QPainterPath &path); + + QRectF boundingRect() const Q_DECL_OVERRIDE; + QPainterPath shape() const Q_DECL_OVERRIDE; + bool contains(const QPointF &point) const Q_DECL_OVERRIDE; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) Q_DECL_OVERRIDE; + + bool isObscuredBy(const QGraphicsItem *item) const Q_DECL_OVERRIDE; + QPainterPath opaqueArea() const Q_DECL_OVERRIDE; + + enum { Type = 2 }; + int type() const Q_DECL_OVERRIDE; + +protected: + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; + void setExtension(Extension extension, const QVariant &variant) Q_DECL_OVERRIDE; + QVariant extension(const QVariant &variant) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGraphicsPathItem) + Q_DECLARE_PRIVATE(QGraphicsPathItem) +}; + +class QGraphicsRectItemPrivate; +class Q_WIDGETS_EXPORT QGraphicsRectItem : public QAbstractGraphicsShapeItem +{ +public: + explicit QGraphicsRectItem(QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsRectItem(const QRectF &rect, QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsRectItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent = Q_NULLPTR); + ~QGraphicsRectItem(); + + QRectF rect() const; + void setRect(const QRectF &rect); + inline void setRect(qreal x, qreal y, qreal w, qreal h); + + QRectF boundingRect() const Q_DECL_OVERRIDE; + QPainterPath shape() const Q_DECL_OVERRIDE; + bool contains(const QPointF &point) const Q_DECL_OVERRIDE; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) Q_DECL_OVERRIDE; + + bool isObscuredBy(const QGraphicsItem *item) const Q_DECL_OVERRIDE; + QPainterPath opaqueArea() const Q_DECL_OVERRIDE; + + enum { Type = 3 }; + int type() const Q_DECL_OVERRIDE; + +protected: + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; + void setExtension(Extension extension, const QVariant &variant) Q_DECL_OVERRIDE; + QVariant extension(const QVariant &variant) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGraphicsRectItem) + Q_DECLARE_PRIVATE(QGraphicsRectItem) +}; + +inline void QGraphicsRectItem::setRect(qreal ax, qreal ay, qreal w, qreal h) +{ setRect(QRectF(ax, ay, w, h)); } + +class QGraphicsEllipseItemPrivate; +class Q_WIDGETS_EXPORT QGraphicsEllipseItem : public QAbstractGraphicsShapeItem +{ +public: + explicit QGraphicsEllipseItem(QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsEllipseItem(const QRectF &rect, QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsEllipseItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent = Q_NULLPTR); + ~QGraphicsEllipseItem(); + + QRectF rect() const; + void setRect(const QRectF &rect); + inline void setRect(qreal x, qreal y, qreal w, qreal h); + + int startAngle() const; + void setStartAngle(int angle); + + int spanAngle() const; + void setSpanAngle(int angle); + + QRectF boundingRect() const Q_DECL_OVERRIDE; + QPainterPath shape() const Q_DECL_OVERRIDE; + bool contains(const QPointF &point) const Q_DECL_OVERRIDE; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) Q_DECL_OVERRIDE; + + bool isObscuredBy(const QGraphicsItem *item) const Q_DECL_OVERRIDE; + QPainterPath opaqueArea() const Q_DECL_OVERRIDE; + + enum { Type = 4 }; + int type() const Q_DECL_OVERRIDE; + +protected: + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; + void setExtension(Extension extension, const QVariant &variant) Q_DECL_OVERRIDE; + QVariant extension(const QVariant &variant) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGraphicsEllipseItem) + Q_DECLARE_PRIVATE(QGraphicsEllipseItem) +}; + +inline void QGraphicsEllipseItem::setRect(qreal ax, qreal ay, qreal w, qreal h) +{ setRect(QRectF(ax, ay, w, h)); } + +class QGraphicsPolygonItemPrivate; +class Q_WIDGETS_EXPORT QGraphicsPolygonItem : public QAbstractGraphicsShapeItem +{ +public: + explicit QGraphicsPolygonItem(QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsPolygonItem(const QPolygonF &polygon, + QGraphicsItem *parent = Q_NULLPTR); + ~QGraphicsPolygonItem(); + + QPolygonF polygon() const; + void setPolygon(const QPolygonF &polygon); + + Qt::FillRule fillRule() const; + void setFillRule(Qt::FillRule rule); + + QRectF boundingRect() const Q_DECL_OVERRIDE; + QPainterPath shape() const Q_DECL_OVERRIDE; + bool contains(const QPointF &point) const Q_DECL_OVERRIDE; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) Q_DECL_OVERRIDE; + + bool isObscuredBy(const QGraphicsItem *item) const Q_DECL_OVERRIDE; + QPainterPath opaqueArea() const Q_DECL_OVERRIDE; + + enum { Type = 5 }; + int type() const Q_DECL_OVERRIDE; + +protected: + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; + void setExtension(Extension extension, const QVariant &variant) Q_DECL_OVERRIDE; + QVariant extension(const QVariant &variant) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGraphicsPolygonItem) + Q_DECLARE_PRIVATE(QGraphicsPolygonItem) +}; + +class QGraphicsLineItemPrivate; +class Q_WIDGETS_EXPORT QGraphicsLineItem : public QGraphicsItem +{ +public: + explicit QGraphicsLineItem(QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsLineItem(const QLineF &line, QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsLineItem(qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem *parent = Q_NULLPTR); + ~QGraphicsLineItem(); + + QPen pen() const; + void setPen(const QPen &pen); + + QLineF line() const; + void setLine(const QLineF &line); + inline void setLine(qreal x1, qreal y1, qreal x2, qreal y2) + { setLine(QLineF(x1, y1, x2, y2)); } + + QRectF boundingRect() const Q_DECL_OVERRIDE; + QPainterPath shape() const Q_DECL_OVERRIDE; + bool contains(const QPointF &point) const Q_DECL_OVERRIDE; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) Q_DECL_OVERRIDE; + + bool isObscuredBy(const QGraphicsItem *item) const Q_DECL_OVERRIDE; + QPainterPath opaqueArea() const Q_DECL_OVERRIDE; + + enum { Type = 6 }; + int type() const Q_DECL_OVERRIDE; + +protected: + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; + void setExtension(Extension extension, const QVariant &variant) Q_DECL_OVERRIDE; + QVariant extension(const QVariant &variant) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGraphicsLineItem) + Q_DECLARE_PRIVATE(QGraphicsLineItem) +}; + +class QGraphicsPixmapItemPrivate; +class Q_WIDGETS_EXPORT QGraphicsPixmapItem : public QGraphicsItem +{ +public: + enum ShapeMode { + MaskShape, + BoundingRectShape, + HeuristicMaskShape + }; + + explicit QGraphicsPixmapItem(QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsPixmapItem(const QPixmap &pixmap, QGraphicsItem *parent = Q_NULLPTR); + ~QGraphicsPixmapItem(); + + QPixmap pixmap() const; + void setPixmap(const QPixmap &pixmap); + + Qt::TransformationMode transformationMode() const; + void setTransformationMode(Qt::TransformationMode mode); + + QPointF offset() const; + void setOffset(const QPointF &offset); + inline void setOffset(qreal x, qreal y); + + QRectF boundingRect() const Q_DECL_OVERRIDE; + QPainterPath shape() const Q_DECL_OVERRIDE; + bool contains(const QPointF &point) const Q_DECL_OVERRIDE; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE; + + bool isObscuredBy(const QGraphicsItem *item) const Q_DECL_OVERRIDE; + QPainterPath opaqueArea() const Q_DECL_OVERRIDE; + + enum { Type = 7 }; + int type() const Q_DECL_OVERRIDE; + + ShapeMode shapeMode() const; + void setShapeMode(ShapeMode mode); + +protected: + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; + void setExtension(Extension extension, const QVariant &variant) Q_DECL_OVERRIDE; + QVariant extension(const QVariant &variant) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGraphicsPixmapItem) + Q_DECLARE_PRIVATE(QGraphicsPixmapItem) +}; + +inline void QGraphicsPixmapItem::setOffset(qreal ax, qreal ay) +{ setOffset(QPointF(ax, ay)); } + +class QGraphicsTextItemPrivate; +class QTextDocument; +class QTextCursor; +class Q_WIDGETS_EXPORT QGraphicsTextItem : public QGraphicsObject +{ + Q_OBJECT + QDOC_PROPERTY(bool openExternalLinks READ openExternalLinks WRITE setOpenExternalLinks) + QDOC_PROPERTY(QTextCursor textCursor READ textCursor WRITE setTextCursor) + +public: + explicit QGraphicsTextItem(QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsTextItem(const QString &text, QGraphicsItem *parent = Q_NULLPTR); + ~QGraphicsTextItem(); + + QString toHtml() const; + void setHtml(const QString &html); + + QString toPlainText() const; + void setPlainText(const QString &text); + + QFont font() const; + void setFont(const QFont &font); + + void setDefaultTextColor(const QColor &c); + QColor defaultTextColor() const; + + QRectF boundingRect() const Q_DECL_OVERRIDE; + QPainterPath shape() const Q_DECL_OVERRIDE; + bool contains(const QPointF &point) const Q_DECL_OVERRIDE; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE; + + bool isObscuredBy(const QGraphicsItem *item) const Q_DECL_OVERRIDE; + QPainterPath opaqueArea() const Q_DECL_OVERRIDE; + + enum { Type = 8 }; + int type() const Q_DECL_OVERRIDE; + + void setTextWidth(qreal width); + qreal textWidth() const; + + void adjustSize(); + + void setDocument(QTextDocument *document); + QTextDocument *document() const; + + void setTextInteractionFlags(Qt::TextInteractionFlags flags); + Qt::TextInteractionFlags textInteractionFlags() const; + + void setTabChangesFocus(bool b); + bool tabChangesFocus() const; + + void setOpenExternalLinks(bool open); + bool openExternalLinks() const; + + void setTextCursor(const QTextCursor &cursor); + QTextCursor textCursor() const; + +Q_SIGNALS: + void linkActivated(const QString &); + void linkHovered(const QString &); + +protected: + bool sceneEvent(QEvent *event) Q_DECL_OVERRIDE; + void mousePressEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; + void mouseMoveEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; + void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; + void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE; + void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + void dragEnterEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE; + void dragLeaveEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE; + void dragMoveEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE; + void dropEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE; + void inputMethodEvent(QInputMethodEvent *event) Q_DECL_OVERRIDE; + void hoverEnterEvent(QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; + void hoverMoveEvent(QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; + void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; + + QVariant inputMethodQuery(Qt::InputMethodQuery query) const Q_DECL_OVERRIDE; + + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; + void setExtension(Extension extension, const QVariant &variant) Q_DECL_OVERRIDE; + QVariant extension(const QVariant &variant) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGraphicsTextItem) + Q_PRIVATE_SLOT(dd, void _q_updateBoundingRect(const QSizeF &)) + Q_PRIVATE_SLOT(dd, void _q_update(QRectF)) + Q_PRIVATE_SLOT(dd, void _q_ensureVisible(QRectF)) + QGraphicsTextItemPrivate *dd; + friend class QGraphicsTextItemPrivate; +}; + +class QGraphicsSimpleTextItemPrivate; +class Q_WIDGETS_EXPORT QGraphicsSimpleTextItem : public QAbstractGraphicsShapeItem +{ +public: + explicit QGraphicsSimpleTextItem(QGraphicsItem *parent = Q_NULLPTR); + explicit QGraphicsSimpleTextItem(const QString &text, QGraphicsItem *parent = Q_NULLPTR); + ~QGraphicsSimpleTextItem(); + + void setText(const QString &text); + QString text() const; + + void setFont(const QFont &font); + QFont font() const; + + QRectF boundingRect() const Q_DECL_OVERRIDE; + QPainterPath shape() const Q_DECL_OVERRIDE; + bool contains(const QPointF &point) const Q_DECL_OVERRIDE; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE; + + bool isObscuredBy(const QGraphicsItem *item) const Q_DECL_OVERRIDE; + QPainterPath opaqueArea() const Q_DECL_OVERRIDE; + + enum { Type = 9 }; + int type() const Q_DECL_OVERRIDE; + +protected: + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; + void setExtension(Extension extension, const QVariant &variant) Q_DECL_OVERRIDE; + QVariant extension(const QVariant &variant) const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGraphicsSimpleTextItem) + Q_DECLARE_PRIVATE(QGraphicsSimpleTextItem) +}; + +class QGraphicsItemGroupPrivate; +class Q_WIDGETS_EXPORT QGraphicsItemGroup : public QGraphicsItem +{ +public: + explicit QGraphicsItemGroup(QGraphicsItem *parent = Q_NULLPTR); + ~QGraphicsItemGroup(); + + void addToGroup(QGraphicsItem *item); + void removeFromGroup(QGraphicsItem *item); + + QRectF boundingRect() const Q_DECL_OVERRIDE; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) Q_DECL_OVERRIDE; + + bool isObscuredBy(const QGraphicsItem *item) const Q_DECL_OVERRIDE; + QPainterPath opaqueArea() const Q_DECL_OVERRIDE; + + enum { Type = 10 }; + int type() const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGraphicsItemGroup) + Q_DECLARE_PRIVATE(QGraphicsItemGroup) +}; + +template <class T> inline T qgraphicsitem_cast(QGraphicsItem *item) +{ + typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Item; + return int(Item::Type) == int(QGraphicsItem::Type) + || (item && int(Item::Type) == item->type()) ? static_cast<T>(item) : 0; +} + +template <class T> inline T qgraphicsitem_cast(const QGraphicsItem *item) +{ + typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Item; + return int(Item::Type) == int(QGraphicsItem::Type) + || (item && int(Item::Type) == item->type()) ? static_cast<T>(item) : 0; +} + +#ifndef QT_NO_DEBUG_STREAM +Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, QGraphicsItem *item); +Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, QGraphicsObject *item); +Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, QGraphicsItem::GraphicsItemChange change); +Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, QGraphicsItem::GraphicsItemFlag flag); +Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, QGraphicsItem::GraphicsItemFlags flags); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGraphicsItem *) + +QT_BEGIN_NAMESPACE + +QT_END_NAMESPACE + +#endif // QGRAPHICSITEM_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsitemanimation.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsitemanimation.h new file mode 100644 index 000000000..a819acc88 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsitemanimation.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSITEMANIMATION_H +#define QGRAPHICSITEMANIMATION_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsItem; +class QMatrix; +class QPointF; +class QTimeLine; +template <class T1, class T2> struct QPair; + +class QGraphicsItemAnimationPrivate; +class Q_WIDGETS_EXPORT QGraphicsItemAnimation : public QObject +{ + Q_OBJECT +public: + QGraphicsItemAnimation(QObject *parent = Q_NULLPTR); + virtual ~QGraphicsItemAnimation(); + + QGraphicsItem *item() const; + void setItem(QGraphicsItem *item); + + QTimeLine *timeLine() const; + void setTimeLine(QTimeLine *timeLine); + + QPointF posAt(qreal step) const; + QList<QPair<qreal, QPointF> > posList() const; + void setPosAt(qreal step, const QPointF &pos); + + QMatrix matrixAt(qreal step) const; + + qreal rotationAt(qreal step) const; + QList<QPair<qreal, qreal> > rotationList() const; + void setRotationAt(qreal step, qreal angle); + + qreal xTranslationAt(qreal step) const; + qreal yTranslationAt(qreal step) const; + QList<QPair<qreal, QPointF> > translationList() const; + void setTranslationAt(qreal step, qreal dx, qreal dy); + + qreal verticalScaleAt(qreal step) const; + qreal horizontalScaleAt(qreal step) const; + QList<QPair<qreal, QPointF> > scaleList() const; + void setScaleAt(qreal step, qreal sx, qreal sy); + + qreal verticalShearAt(qreal step) const; + qreal horizontalShearAt(qreal step) const; + QList<QPair<qreal, QPointF> > shearList() const; + void setShearAt(qreal step, qreal sh, qreal sv); + + void clear(); + +public Q_SLOTS: + void setStep(qreal x); + void reset(); + +protected: + virtual void beforeAnimationStep(qreal step); + virtual void afterAnimationStep(qreal step); + +private: + Q_DISABLE_COPY(QGraphicsItemAnimation) + QGraphicsItemAnimationPrivate *d; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicslayout.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicslayout.h new file mode 100644 index 000000000..bbe45bbdd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicslayout.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSLAYOUT_H +#define QGRAPHICSLAYOUT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qgraphicslayoutitem.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsLayoutPrivate; +class QGraphicsLayoutItem; +class QGraphicsWidget; + +class Q_WIDGETS_EXPORT QGraphicsLayout : public QGraphicsLayoutItem +{ +public: + QGraphicsLayout(QGraphicsLayoutItem *parent = Q_NULLPTR); + ~QGraphicsLayout(); + + void setContentsMargins(qreal left, qreal top, qreal right, qreal bottom); + void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const Q_DECL_OVERRIDE; + + void activate(); + bool isActivated() const; + virtual void invalidate(); + virtual void updateGeometry() Q_DECL_OVERRIDE; + + virtual void widgetEvent(QEvent *e); + + virtual int count() const = 0; + virtual QGraphicsLayoutItem *itemAt(int i) const = 0; + virtual void removeAt(int index) = 0; + + static void setInstantInvalidatePropagation(bool enable); + static bool instantInvalidatePropagation(); +protected: + QGraphicsLayout(QGraphicsLayoutPrivate &, QGraphicsLayoutItem *); + void addChildLayoutItem(QGraphicsLayoutItem *layoutItem); + +private: + Q_DISABLE_COPY(QGraphicsLayout) + Q_DECLARE_PRIVATE(QGraphicsLayout) + friend class QGraphicsWidget; +}; + +Q_DECLARE_INTERFACE(QGraphicsLayout, "org.qt-project.Qt.QGraphicsLayout") + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicslayoutitem.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicslayoutitem.h new file mode 100644 index 000000000..10c787041 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicslayoutitem.h @@ -0,0 +1,145 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSLAYOUTITEM_H +#define QGRAPHICSLAYOUTITEM_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qscopedpointer.h> +#include <QtWidgets/qsizepolicy.h> +#include <QtGui/qevent.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsLayoutItemPrivate; +class QGraphicsItem; +class Q_WIDGETS_EXPORT QGraphicsLayoutItem +{ +public: + QGraphicsLayoutItem(QGraphicsLayoutItem *parent = Q_NULLPTR, bool isLayout = false); + virtual ~QGraphicsLayoutItem(); + + void setSizePolicy(const QSizePolicy &policy); + void setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType); + QSizePolicy sizePolicy() const; + + void setMinimumSize(const QSizeF &size); + inline void setMinimumSize(qreal w, qreal h); + QSizeF minimumSize() const; + void setMinimumWidth(qreal width); + inline qreal minimumWidth() const; + void setMinimumHeight(qreal height); + inline qreal minimumHeight() const; + + void setPreferredSize(const QSizeF &size); + inline void setPreferredSize(qreal w, qreal h); + QSizeF preferredSize() const; + void setPreferredWidth(qreal width); + inline qreal preferredWidth() const; + void setPreferredHeight(qreal height); + inline qreal preferredHeight() const; + + void setMaximumSize(const QSizeF &size); + inline void setMaximumSize(qreal w, qreal h); + QSizeF maximumSize() const; + void setMaximumWidth(qreal width); + inline qreal maximumWidth() const; + void setMaximumHeight(qreal height); + inline qreal maximumHeight() const; + + virtual void setGeometry(const QRectF &rect); + QRectF geometry() const; + virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; + QRectF contentsRect() const; + + QSizeF effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; + + virtual void updateGeometry(); + + QGraphicsLayoutItem *parentLayoutItem() const; + void setParentLayoutItem(QGraphicsLayoutItem *parent); + + bool isLayout() const; + QGraphicsItem *graphicsItem() const; + bool ownedByLayout() const; + +protected: + void setGraphicsItem(QGraphicsItem *item); + void setOwnedByLayout(bool ownedByLayout); + QGraphicsLayoutItem(QGraphicsLayoutItemPrivate &dd); + + virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const = 0; + QScopedPointer<QGraphicsLayoutItemPrivate> d_ptr; + +private: + QSizeF *effectiveSizeHints(const QSizeF &constraint) const; + Q_DECLARE_PRIVATE(QGraphicsLayoutItem) + + friend class QGraphicsLayout; +}; + +Q_DECLARE_INTERFACE(QGraphicsLayoutItem, "org.qt-project.Qt.QGraphicsLayoutItem") + +inline void QGraphicsLayoutItem::setMinimumSize(qreal aw, qreal ah) +{ setMinimumSize(QSizeF(aw, ah)); } +inline void QGraphicsLayoutItem::setPreferredSize(qreal aw, qreal ah) +{ setPreferredSize(QSizeF(aw, ah)); } +inline void QGraphicsLayoutItem::setMaximumSize(qreal aw, qreal ah) +{ setMaximumSize(QSizeF(aw, ah)); } + +inline qreal QGraphicsLayoutItem::minimumWidth() const +{ return effectiveSizeHint(Qt::MinimumSize).width(); } +inline qreal QGraphicsLayoutItem::minimumHeight() const +{ return effectiveSizeHint(Qt::MinimumSize).height(); } + +inline qreal QGraphicsLayoutItem::preferredWidth() const +{ return effectiveSizeHint(Qt::PreferredSize).width(); } +inline qreal QGraphicsLayoutItem::preferredHeight() const +{ return effectiveSizeHint(Qt::PreferredSize).height(); } + +inline qreal QGraphicsLayoutItem::maximumWidth() const +{ return effectiveSizeHint(Qt::MaximumSize).width(); } +inline qreal QGraphicsLayoutItem::maximumHeight() const +{ return effectiveSizeHint(Qt::MaximumSize).height(); } + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicslinearlayout.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicslinearlayout.h new file mode 100644 index 000000000..8186eea98 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicslinearlayout.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSLINEARLAYOUT_H +#define QGRAPHICSLINEARLAYOUT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qgraphicsitem.h> +#include <QtWidgets/qgraphicslayout.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsLinearLayoutPrivate; + +class Q_WIDGETS_EXPORT QGraphicsLinearLayout : public QGraphicsLayout +{ +public: + QGraphicsLinearLayout(QGraphicsLayoutItem *parent = Q_NULLPTR); + QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent = Q_NULLPTR); + virtual ~QGraphicsLinearLayout(); + + void setOrientation(Qt::Orientation orientation); + Qt::Orientation orientation() const; + + inline void addItem(QGraphicsLayoutItem *item) { insertItem(-1, item); } + inline void addStretch(int stretch = 1) { insertStretch(-1, stretch); } + + void insertItem(int index, QGraphicsLayoutItem *item); + void insertStretch(int index, int stretch = 1); + + void removeItem(QGraphicsLayoutItem *item); + void removeAt(int index) Q_DECL_OVERRIDE; + + void setSpacing(qreal spacing); + qreal spacing() const; + void setItemSpacing(int index, qreal spacing); + qreal itemSpacing(int index) const; + + void setStretchFactor(QGraphicsLayoutItem *item, int stretch); + int stretchFactor(QGraphicsLayoutItem *item) const; + + void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment); + Qt::Alignment alignment(QGraphicsLayoutItem *item) const; + + void setGeometry(const QRectF &rect) Q_DECL_OVERRIDE; + + int count() const Q_DECL_OVERRIDE; + QGraphicsLayoutItem *itemAt(int index) const Q_DECL_OVERRIDE; + + void invalidate() Q_DECL_OVERRIDE; + QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const Q_DECL_OVERRIDE; + +#if 0 // ### + Q5SizePolicy::ControlTypes controlTypes(LayoutSide side) const; +#endif + + void dump(int indent = 0) const; + +protected: +#if 0 + QSize contentsSizeHint(Qt::SizeHint which, const QSize &constraint = QSize()) const; +#endif + +private: + Q_DISABLE_COPY(QGraphicsLinearLayout) + Q_DECLARE_PRIVATE(QGraphicsLinearLayout) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsproxywidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsproxywidget.h new file mode 100644 index 000000000..fd6369a1f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsproxywidget.h @@ -0,0 +1,137 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSPROXYWIDGET_H +#define QGRAPHICSPROXYWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qgraphicswidget.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsProxyWidgetPrivate; + +class Q_WIDGETS_EXPORT QGraphicsProxyWidget : public QGraphicsWidget +{ + Q_OBJECT +public: + QGraphicsProxyWidget(QGraphicsItem *parent = Q_NULLPTR, Qt::WindowFlags wFlags = Qt::WindowFlags()); + ~QGraphicsProxyWidget(); + + void setWidget(QWidget *widget); + QWidget *widget() const; + + QRectF subWidgetRect(const QWidget *widget) const; + + void setGeometry(const QRectF &rect) Q_DECL_OVERRIDE; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE; + + enum { + Type = 12 + }; + int type() const Q_DECL_OVERRIDE; + + QGraphicsProxyWidget *createProxyForChildWidget(QWidget *child); + +protected: + QVariant itemChange(GraphicsItemChange change, const QVariant &value) Q_DECL_OVERRIDE; + + bool event(QEvent *event) Q_DECL_OVERRIDE; + bool eventFilter(QObject *object, QEvent *event) Q_DECL_OVERRIDE; + + void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; + void hideEvent(QHideEvent *event) Q_DECL_OVERRIDE; + +#ifndef QT_NO_CONTEXTMENU + void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) Q_DECL_OVERRIDE; +#endif + +#ifndef QT_NO_DRAGANDDROP + void dragEnterEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE; + void dragLeaveEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE; + void dragMoveEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE; + void dropEvent(QGraphicsSceneDragDropEvent *event) Q_DECL_OVERRIDE; +#endif + + void hoverEnterEvent(QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; + void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; + void hoverMoveEvent(QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; + void grabMouseEvent(QEvent *event) Q_DECL_OVERRIDE; + void ungrabMouseEvent(QEvent *event) Q_DECL_OVERRIDE; + + void mouseMoveEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; + void mousePressEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; +#if QT_CONFIG(wheelevent) + void wheelEvent(QGraphicsSceneWheelEvent *event) Q_DECL_OVERRIDE; +#endif + + void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; + void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE; + + void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE; + + QVariant inputMethodQuery(Qt::InputMethodQuery query) const Q_DECL_OVERRIDE; + void inputMethodEvent(QInputMethodEvent *event) Q_DECL_OVERRIDE; + + QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const Q_DECL_OVERRIDE; + void resizeEvent(QGraphicsSceneResizeEvent *event) Q_DECL_OVERRIDE; + +protected Q_SLOTS: + QGraphicsProxyWidget *newProxyWidget(const QWidget *); + +private: + Q_DISABLE_COPY(QGraphicsProxyWidget) + Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QGraphicsProxyWidget) + Q_PRIVATE_SLOT(d_func(), void _q_removeWidgetSlot()) + + friend class QWidget; + friend class QWidgetPrivate; + friend class QGraphicsItem; +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsscene.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsscene.h new file mode 100644 index 000000000..d51558506 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsscene.h @@ -0,0 +1,332 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSSCENE_H +#define QGRAPHICSSCENE_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qpoint.h> +#include <QtCore/qrect.h> +#include <QtGui/qbrush.h> +#include <QtGui/qfont.h> +#include <QtGui/qtransform.h> +#include <QtGui/qmatrix.h> +#include <QtGui/qpen.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +template<typename T> class QList; +class QFocusEvent; +class QFont; +class QFontMetrics; +class QGraphicsEllipseItem; +class QGraphicsItem; +class QGraphicsItemGroup; +class QGraphicsLineItem; +class QGraphicsPathItem; +class QGraphicsPixmapItem; +class QGraphicsPolygonItem; +class QGraphicsProxyWidget; +class QGraphicsRectItem; +class QGraphicsSceneContextMenuEvent; +class QGraphicsSceneDragDropEvent; +class QGraphicsSceneEvent; +class QGraphicsSceneHelpEvent; +class QGraphicsSceneHoverEvent; +class QGraphicsSceneMouseEvent; +class QGraphicsSceneWheelEvent; +class QGraphicsSimpleTextItem; +class QGraphicsTextItem; +class QGraphicsView; +class QGraphicsWidget; +class QGraphicsSceneIndex; +class QHelpEvent; +class QInputMethodEvent; +class QKeyEvent; +class QLineF; +class QPainterPath; +class QPixmap; +class QPointF; +class QPolygonF; +class QRectF; +class QSizeF; +class QStyle; +class QStyleOptionGraphicsItem; + +class QGraphicsScenePrivate; +class Q_WIDGETS_EXPORT QGraphicsScene : public QObject +{ + Q_OBJECT + Q_PROPERTY(QBrush backgroundBrush READ backgroundBrush WRITE setBackgroundBrush) + Q_PROPERTY(QBrush foregroundBrush READ foregroundBrush WRITE setForegroundBrush) + Q_PROPERTY(ItemIndexMethod itemIndexMethod READ itemIndexMethod WRITE setItemIndexMethod) + Q_PROPERTY(QRectF sceneRect READ sceneRect WRITE setSceneRect) + Q_PROPERTY(int bspTreeDepth READ bspTreeDepth WRITE setBspTreeDepth) + Q_PROPERTY(QPalette palette READ palette WRITE setPalette) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(bool sortCacheEnabled READ isSortCacheEnabled WRITE setSortCacheEnabled) + Q_PROPERTY(bool stickyFocus READ stickyFocus WRITE setStickyFocus) + Q_PROPERTY(qreal minimumRenderSize READ minimumRenderSize WRITE setMinimumRenderSize) + +public: + enum ItemIndexMethod { + BspTreeIndex, + NoIndex = -1 + }; + + enum SceneLayer { + ItemLayer = 0x1, + BackgroundLayer = 0x2, + ForegroundLayer = 0x4, + AllLayers = 0xffff + }; + Q_DECLARE_FLAGS(SceneLayers, SceneLayer) + + QGraphicsScene(QObject *parent = Q_NULLPTR); + QGraphicsScene(const QRectF &sceneRect, QObject *parent = Q_NULLPTR); + QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = Q_NULLPTR); + virtual ~QGraphicsScene(); + + QRectF sceneRect() const; + inline qreal width() const { return sceneRect().width(); } + inline qreal height() const { return sceneRect().height(); } + void setSceneRect(const QRectF &rect); + inline void setSceneRect(qreal x, qreal y, qreal w, qreal h) + { setSceneRect(QRectF(x, y, w, h)); } + + void render(QPainter *painter, + const QRectF &target = QRectF(), const QRectF &source = QRectF(), + Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio); + + ItemIndexMethod itemIndexMethod() const; + void setItemIndexMethod(ItemIndexMethod method); + + bool isSortCacheEnabled() const; + void setSortCacheEnabled(bool enabled); + + int bspTreeDepth() const; + void setBspTreeDepth(int depth); + + QRectF itemsBoundingRect() const; + + QList<QGraphicsItem *> items(Qt::SortOrder order = Qt::DescendingOrder) const; + + QList<QGraphicsItem *> items(const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; + QList<QGraphicsItem *> items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; + QList<QGraphicsItem *> items(const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; + QList<QGraphicsItem *> items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; + + QList<QGraphicsItem *> collidingItems(const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline QGraphicsItem *itemAt(const QPointF &position) const { + QList<QGraphicsItem *> itemsAtPoint = items(position); + return itemsAtPoint.isEmpty() ? Q_NULLPTR : itemsAtPoint.first(); + } +#endif + QGraphicsItem *itemAt(const QPointF &pos, const QTransform &deviceTransform) const; +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline QList<QGraphicsItem *> items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const + { return items(QRectF(x, y, w, h), mode); } +#endif + inline QList<QGraphicsItem *> items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, + const QTransform &deviceTransform = QTransform()) const + { return items(QRectF(x, y, w, h), mode, order, deviceTransform); } +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED inline QGraphicsItem *itemAt(qreal x, qreal y) const { + QList<QGraphicsItem *> itemsAtPoint = items(QPointF(x, y)); + return itemsAtPoint.isEmpty() ? Q_NULLPTR : itemsAtPoint.first(); + } +#endif + inline QGraphicsItem *itemAt(qreal x, qreal y, const QTransform &deviceTransform) const + { return itemAt(QPointF(x, y), deviceTransform); } + + QList<QGraphicsItem *> selectedItems() const; + QPainterPath selectionArea() const; + void setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform); + void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform()); + void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform()); + // ### Qt6 merge the last 2 functions and add a default: Qt::ItemSelectionOperation selectionOperation = Qt::ReplaceSelection + + QGraphicsItemGroup *createItemGroup(const QList<QGraphicsItem *> &items); + void destroyItemGroup(QGraphicsItemGroup *group); + + void addItem(QGraphicsItem *item); + QGraphicsEllipseItem *addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush()); + QGraphicsLineItem *addLine(const QLineF &line, const QPen &pen = QPen()); + QGraphicsPathItem *addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush()); + QGraphicsPixmapItem *addPixmap(const QPixmap &pixmap); + QGraphicsPolygonItem *addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush()); + QGraphicsRectItem *addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush()); + QGraphicsTextItem *addText(const QString &text, const QFont &font = QFont()); + QGraphicsSimpleTextItem *addSimpleText(const QString &text, const QFont &font = QFont()); + QGraphicsProxyWidget *addWidget(QWidget *widget, Qt::WindowFlags wFlags = Qt::WindowFlags()); + inline QGraphicsEllipseItem *addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush()) + { return addEllipse(QRectF(x, y, w, h), pen, brush); } + inline QGraphicsLineItem *addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen()) + { return addLine(QLineF(x1, y1, x2, y2), pen); } + inline QGraphicsRectItem *addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush()) + { return addRect(QRectF(x, y, w, h), pen, brush); } + void removeItem(QGraphicsItem *item); + + QGraphicsItem *focusItem() const; + void setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason); + bool hasFocus() const; + void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason); + void clearFocus(); + + void setStickyFocus(bool enabled); + bool stickyFocus() const; + + QGraphicsItem *mouseGrabberItem() const; + + QBrush backgroundBrush() const; + void setBackgroundBrush(const QBrush &brush); + + QBrush foregroundBrush() const; + void setForegroundBrush(const QBrush &brush); + + virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; + + QList <QGraphicsView *> views() const; + + inline void update(qreal x, qreal y, qreal w, qreal h) + { update(QRectF(x, y, w, h)); } + inline void invalidate(qreal x, qreal y, qreal w, qreal h, SceneLayers layers = AllLayers) + { invalidate(QRectF(x, y, w, h), layers); } + + QStyle *style() const; + void setStyle(QStyle *style); + + QFont font() const; + void setFont(const QFont &font); + + QPalette palette() const; + void setPalette(const QPalette &palette); + + bool isActive() const; + QGraphicsItem *activePanel() const; + void setActivePanel(QGraphicsItem *item); + QGraphicsWidget *activeWindow() const; + void setActiveWindow(QGraphicsWidget *widget); + + bool sendEvent(QGraphicsItem *item, QEvent *event); + + qreal minimumRenderSize() const; + void setMinimumRenderSize(qreal minSize); + +public Q_SLOTS: + void update(const QRectF &rect = QRectF()); + void invalidate(const QRectF &rect = QRectF(), SceneLayers layers = AllLayers); + void advance(); + void clearSelection(); + void clear(); + +protected: + bool event(QEvent *event) Q_DECL_OVERRIDE; + bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE; + virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); + virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); + virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); + virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); + virtual void dropEvent(QGraphicsSceneDragDropEvent *event); + virtual void focusInEvent(QFocusEvent *event); + virtual void focusOutEvent(QFocusEvent *event); + virtual void helpEvent(QGraphicsSceneHelpEvent *event); + virtual void keyPressEvent(QKeyEvent *event); + virtual void keyReleaseEvent(QKeyEvent *event); + virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); + virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + virtual void wheelEvent(QGraphicsSceneWheelEvent *event); + virtual void inputMethodEvent(QInputMethodEvent *event); + + virtual void drawBackground(QPainter *painter, const QRectF &rect); + virtual void drawForeground(QPainter *painter, const QRectF &rect); + virtual void drawItems(QPainter *painter, int numItems, + QGraphicsItem *items[], + const QStyleOptionGraphicsItem options[], + QWidget *widget = Q_NULLPTR); + +protected Q_SLOTS: + // ### Qt 6: make unconditional +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + virtual +#endif + bool focusNextPrevChild(bool next); + +Q_SIGNALS: + void changed(const QList<QRectF> ®ion); + void sceneRectChanged(const QRectF &rect); + void selectionChanged(); + void focusItemChanged(QGraphicsItem *newFocus, QGraphicsItem *oldFocus, Qt::FocusReason reason); + +private: + Q_DECLARE_PRIVATE(QGraphicsScene) + Q_DISABLE_COPY(QGraphicsScene) + Q_PRIVATE_SLOT(d_func(), void _q_emitUpdated()) + Q_PRIVATE_SLOT(d_func(), void _q_polishItems()) + Q_PRIVATE_SLOT(d_func(), void _q_processDirtyItems()) + Q_PRIVATE_SLOT(d_func(), void _q_updateScenePosDescendants()) + friend class QGraphicsItem; + friend class QGraphicsItemPrivate; + friend class QGraphicsObject; + friend class QGraphicsView; + friend class QGraphicsViewPrivate; + friend class QGraphicsWidget; + friend class QGraphicsWidgetPrivate; + friend class QGraphicsEffect; + friend class QGraphicsSceneIndex; + friend class QGraphicsSceneIndexPrivate; + friend class QGraphicsSceneBspTreeIndex; + friend class QGraphicsSceneBspTreeIndexPrivate; + friend class QGraphicsItemEffectSourcePrivate; +#ifndef QT_NO_GESTURES + friend class QGesture; +#endif +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsScene::SceneLayers) + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicssceneevent.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicssceneevent.h new file mode 100644 index 000000000..77b53e401 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicssceneevent.h @@ -0,0 +1,325 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSSCENEEVENT_H +#define QGRAPHICSSCENEEVENT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qcoreevent.h> +#include <QtCore/qpoint.h> +#include <QtCore/qscopedpointer.h> +#include <QtCore/qrect.h> +#include <QtGui/qpolygon.h> +#include <QtCore/qset.h> +#if QT_DEPRECATED_SINCE(5, 5) +#include <QtCore/qhash.h> +#endif + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QMimeData; +class QPointF; +class QSizeF; +class QWidget; + +class QGraphicsSceneEventPrivate; +class Q_WIDGETS_EXPORT QGraphicsSceneEvent : public QEvent +{ +public: + explicit QGraphicsSceneEvent(Type type); + ~QGraphicsSceneEvent(); + + QWidget *widget() const; + void setWidget(QWidget *widget); + +protected: + QGraphicsSceneEvent(QGraphicsSceneEventPrivate &dd, Type type = None); + QScopedPointer<QGraphicsSceneEventPrivate> d_ptr; + Q_DECLARE_PRIVATE(QGraphicsSceneEvent) +private: + Q_DISABLE_COPY(QGraphicsSceneEvent) +}; + +class QGraphicsSceneMouseEventPrivate; +class Q_WIDGETS_EXPORT QGraphicsSceneMouseEvent : public QGraphicsSceneEvent +{ +public: + explicit QGraphicsSceneMouseEvent(Type type = None); + ~QGraphicsSceneMouseEvent(); + + QPointF pos() const; + void setPos(const QPointF &pos); + + QPointF scenePos() const; + void setScenePos(const QPointF &pos); + + QPoint screenPos() const; + void setScreenPos(const QPoint &pos); + + QPointF buttonDownPos(Qt::MouseButton button) const; + void setButtonDownPos(Qt::MouseButton button, const QPointF &pos); + + QPointF buttonDownScenePos(Qt::MouseButton button) const; + void setButtonDownScenePos(Qt::MouseButton button, const QPointF &pos); + + QPoint buttonDownScreenPos(Qt::MouseButton button) const; + void setButtonDownScreenPos(Qt::MouseButton button, const QPoint &pos); + + QPointF lastPos() const; + void setLastPos(const QPointF &pos); + + QPointF lastScenePos() const; + void setLastScenePos(const QPointF &pos); + + QPoint lastScreenPos() const; + void setLastScreenPos(const QPoint &pos); + + Qt::MouseButtons buttons() const; + void setButtons(Qt::MouseButtons buttons); + + Qt::MouseButton button() const; + void setButton(Qt::MouseButton button); + + Qt::KeyboardModifiers modifiers() const; + void setModifiers(Qt::KeyboardModifiers modifiers); + + Qt::MouseEventSource source() const; + void setSource(Qt::MouseEventSource source); + + Qt::MouseEventFlags flags() const; + void setFlags(Qt::MouseEventFlags); + +private: + Q_DECLARE_PRIVATE(QGraphicsSceneMouseEvent) + Q_DISABLE_COPY(QGraphicsSceneMouseEvent) +}; + +class QGraphicsSceneWheelEventPrivate; +class Q_WIDGETS_EXPORT QGraphicsSceneWheelEvent : public QGraphicsSceneEvent +{ +public: + explicit QGraphicsSceneWheelEvent(Type type = None); + ~QGraphicsSceneWheelEvent(); + + QPointF pos() const; + void setPos(const QPointF &pos); + + QPointF scenePos() const; + void setScenePos(const QPointF &pos); + + QPoint screenPos() const; + void setScreenPos(const QPoint &pos); + + Qt::MouseButtons buttons() const; + void setButtons(Qt::MouseButtons buttons); + + Qt::KeyboardModifiers modifiers() const; + void setModifiers(Qt::KeyboardModifiers modifiers); + + int delta() const; + void setDelta(int delta); + + Qt::Orientation orientation() const; + void setOrientation(Qt::Orientation orientation); + +private: + Q_DECLARE_PRIVATE(QGraphicsSceneWheelEvent) + Q_DISABLE_COPY(QGraphicsSceneWheelEvent) +}; + +class QGraphicsSceneContextMenuEventPrivate; +class Q_WIDGETS_EXPORT QGraphicsSceneContextMenuEvent : public QGraphicsSceneEvent +{ +public: + enum Reason { Mouse, Keyboard, Other }; + + explicit QGraphicsSceneContextMenuEvent(Type type = None); + ~QGraphicsSceneContextMenuEvent(); + + QPointF pos() const; + void setPos(const QPointF &pos); + + QPointF scenePos() const; + void setScenePos(const QPointF &pos); + + QPoint screenPos() const; + void setScreenPos(const QPoint &pos); + + Qt::KeyboardModifiers modifiers() const; + void setModifiers(Qt::KeyboardModifiers modifiers); + + Reason reason() const; + void setReason(Reason reason); + +private: + Q_DECLARE_PRIVATE(QGraphicsSceneContextMenuEvent) + Q_DISABLE_COPY(QGraphicsSceneContextMenuEvent) +}; + +class QGraphicsSceneHoverEventPrivate; +class Q_WIDGETS_EXPORT QGraphicsSceneHoverEvent : public QGraphicsSceneEvent +{ +public: + explicit QGraphicsSceneHoverEvent(Type type = None); + ~QGraphicsSceneHoverEvent(); + + QPointF pos() const; + void setPos(const QPointF &pos); + + QPointF scenePos() const; + void setScenePos(const QPointF &pos); + + QPoint screenPos() const; + void setScreenPos(const QPoint &pos); + + QPointF lastPos() const; + void setLastPos(const QPointF &pos); + + QPointF lastScenePos() const; + void setLastScenePos(const QPointF &pos); + + QPoint lastScreenPos() const; + void setLastScreenPos(const QPoint &pos); + + Qt::KeyboardModifiers modifiers() const; + void setModifiers(Qt::KeyboardModifiers modifiers); + +private: + Q_DECLARE_PRIVATE(QGraphicsSceneHoverEvent) + Q_DISABLE_COPY(QGraphicsSceneHoverEvent) +}; + +class QGraphicsSceneHelpEventPrivate; +class Q_WIDGETS_EXPORT QGraphicsSceneHelpEvent : public QGraphicsSceneEvent +{ +public: + explicit QGraphicsSceneHelpEvent(Type type = None); + ~QGraphicsSceneHelpEvent(); + + QPointF scenePos() const; + void setScenePos(const QPointF &pos); + + QPoint screenPos() const; + void setScreenPos(const QPoint &pos); + +private: + Q_DECLARE_PRIVATE(QGraphicsSceneHelpEvent) + Q_DISABLE_COPY(QGraphicsSceneHelpEvent) +}; + +class QGraphicsSceneDragDropEventPrivate; +class Q_WIDGETS_EXPORT QGraphicsSceneDragDropEvent : public QGraphicsSceneEvent +{ +public: + explicit QGraphicsSceneDragDropEvent(Type type = None); + ~QGraphicsSceneDragDropEvent(); + + QPointF pos() const; + void setPos(const QPointF &pos); + + QPointF scenePos() const; + void setScenePos(const QPointF &pos); + + QPoint screenPos() const; + void setScreenPos(const QPoint &pos); + + Qt::MouseButtons buttons() const; + void setButtons(Qt::MouseButtons buttons); + + Qt::KeyboardModifiers modifiers() const; + void setModifiers(Qt::KeyboardModifiers modifiers); + + Qt::DropActions possibleActions() const; + void setPossibleActions(Qt::DropActions actions); + + Qt::DropAction proposedAction() const; + void setProposedAction(Qt::DropAction action); + void acceptProposedAction(); + + Qt::DropAction dropAction() const; + void setDropAction(Qt::DropAction action); + + QWidget *source() const; + void setSource(QWidget *source); + + const QMimeData *mimeData() const; + void setMimeData(const QMimeData *data); + +private: + Q_DECLARE_PRIVATE(QGraphicsSceneDragDropEvent) + Q_DISABLE_COPY(QGraphicsSceneDragDropEvent) +}; + +class QGraphicsSceneResizeEventPrivate; +class Q_WIDGETS_EXPORT QGraphicsSceneResizeEvent : public QGraphicsSceneEvent +{ + Q_DECLARE_PRIVATE(QGraphicsSceneResizeEvent) + Q_DISABLE_COPY(QGraphicsSceneResizeEvent) +public: + QGraphicsSceneResizeEvent(); + ~QGraphicsSceneResizeEvent(); + + QSizeF oldSize() const; + void setOldSize(const QSizeF &size); + + QSizeF newSize() const; + void setNewSize(const QSizeF &size); +}; + +class QGraphicsSceneMoveEventPrivate; +class Q_WIDGETS_EXPORT QGraphicsSceneMoveEvent : public QGraphicsSceneEvent +{ + Q_DECLARE_PRIVATE(QGraphicsSceneMoveEvent) + Q_DISABLE_COPY(QGraphicsSceneMoveEvent) +public: + QGraphicsSceneMoveEvent(); + ~QGraphicsSceneMoveEvent(); + + QPointF oldPos() const; + void setOldPos(const QPointF &pos); + + QPointF newPos() const; + void setNewPos(const QPointF &pos); +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicstransform.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicstransform.h new file mode 100644 index 000000000..ceeb314c8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicstransform.h @@ -0,0 +1,152 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSTRANSFORM_H +#define QGRAPHICSTRANSFORM_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/QObject> +#include <QtGui/QVector3D> +#include <QtGui/QTransform> +#include <QtGui/QMatrix4x4> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsItem; +class QGraphicsTransformPrivate; + +class Q_WIDGETS_EXPORT QGraphicsTransform : public QObject +{ + Q_OBJECT +public: + QGraphicsTransform(QObject *parent = Q_NULLPTR); + ~QGraphicsTransform(); + + virtual void applyTo(QMatrix4x4 *matrix) const = 0; + +protected Q_SLOTS: + void update(); + +protected: + QGraphicsTransform(QGraphicsTransformPrivate &p, QObject *parent); + +private: + friend class QGraphicsItem; + friend class QGraphicsItemPrivate; + Q_DECLARE_PRIVATE(QGraphicsTransform) +}; + +class QGraphicsScalePrivate; + +class Q_WIDGETS_EXPORT QGraphicsScale : public QGraphicsTransform +{ + Q_OBJECT + + Q_PROPERTY(QVector3D origin READ origin WRITE setOrigin NOTIFY originChanged) + Q_PROPERTY(qreal xScale READ xScale WRITE setXScale NOTIFY xScaleChanged) + Q_PROPERTY(qreal yScale READ yScale WRITE setYScale NOTIFY yScaleChanged) + Q_PROPERTY(qreal zScale READ zScale WRITE setZScale NOTIFY zScaleChanged) +public: + QGraphicsScale(QObject *parent = Q_NULLPTR); + ~QGraphicsScale(); + + QVector3D origin() const; + void setOrigin(const QVector3D &point); + + qreal xScale() const; + void setXScale(qreal); + + qreal yScale() const; + void setYScale(qreal); + + qreal zScale() const; + void setZScale(qreal); + + void applyTo(QMatrix4x4 *matrix) const Q_DECL_OVERRIDE; + +Q_SIGNALS: + void originChanged(); + void xScaleChanged(); + void yScaleChanged(); + void zScaleChanged(); + void scaleChanged(); + +private: + Q_DECLARE_PRIVATE(QGraphicsScale) +}; + +class QGraphicsRotationPrivate; + +class Q_WIDGETS_EXPORT QGraphicsRotation : public QGraphicsTransform +{ + Q_OBJECT + + Q_PROPERTY(QVector3D origin READ origin WRITE setOrigin NOTIFY originChanged) + Q_PROPERTY(qreal angle READ angle WRITE setAngle NOTIFY angleChanged) + Q_PROPERTY(QVector3D axis READ axis WRITE setAxis NOTIFY axisChanged) +public: + QGraphicsRotation(QObject *parent = Q_NULLPTR); + ~QGraphicsRotation(); + + QVector3D origin() const; + void setOrigin(const QVector3D &point); + + qreal angle() const; + void setAngle(qreal); + + QVector3D axis() const; + void setAxis(const QVector3D &axis); + void setAxis(Qt::Axis axis); + + void applyTo(QMatrix4x4 *matrix) const Q_DECL_OVERRIDE; + +Q_SIGNALS: + void originChanged(); + void angleChanged(); + void axisChanged(); + +private: + Q_DECLARE_PRIVATE(QGraphicsRotation) +}; + +QT_END_NAMESPACE + +#endif // QFXTRANSFORM_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsview.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsview.h new file mode 100644 index 000000000..a9e4efefa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicsview.h @@ -0,0 +1,317 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSVIEW_H +#define QGRAPHICSVIEW_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qmetatype.h> +#include <QtGui/qpainter.h> +#include <QtWidgets/qscrollarea.h> +#include <QtWidgets/qgraphicsscene.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QGraphicsItem; +class QPainterPath; +class QPolygonF; +class QStyleOptionGraphicsItem; + +class QGraphicsViewPrivate; +class Q_WIDGETS_EXPORT QGraphicsView : public QAbstractScrollArea +{ + Q_OBJECT + Q_FLAGS(QPainter::RenderHints CacheMode OptimizationFlags) + Q_PROPERTY(QBrush backgroundBrush READ backgroundBrush WRITE setBackgroundBrush) + Q_PROPERTY(QBrush foregroundBrush READ foregroundBrush WRITE setForegroundBrush) + Q_PROPERTY(bool interactive READ isInteractive WRITE setInteractive) + Q_PROPERTY(QRectF sceneRect READ sceneRect WRITE setSceneRect) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) + Q_PROPERTY(QPainter::RenderHints renderHints READ renderHints WRITE setRenderHints) + Q_PROPERTY(DragMode dragMode READ dragMode WRITE setDragMode) + Q_PROPERTY(CacheMode cacheMode READ cacheMode WRITE setCacheMode) + Q_PROPERTY(ViewportAnchor transformationAnchor READ transformationAnchor WRITE setTransformationAnchor) + Q_PROPERTY(ViewportAnchor resizeAnchor READ resizeAnchor WRITE setResizeAnchor) + Q_PROPERTY(ViewportUpdateMode viewportUpdateMode READ viewportUpdateMode WRITE setViewportUpdateMode) +#if QT_CONFIG(rubberband) + Q_PROPERTY(Qt::ItemSelectionMode rubberBandSelectionMode READ rubberBandSelectionMode WRITE setRubberBandSelectionMode) +#endif + Q_PROPERTY(OptimizationFlags optimizationFlags READ optimizationFlags WRITE setOptimizationFlags) + +public: + enum ViewportAnchor { + NoAnchor, + AnchorViewCenter, + AnchorUnderMouse + }; + Q_ENUM(ViewportAnchor) + + enum CacheModeFlag { + CacheNone = 0x0, + CacheBackground = 0x1 + }; + Q_DECLARE_FLAGS(CacheMode, CacheModeFlag) + + enum DragMode { + NoDrag, + ScrollHandDrag, + RubberBandDrag + }; + Q_ENUM(DragMode) + + enum ViewportUpdateMode { + FullViewportUpdate, + MinimalViewportUpdate, + SmartViewportUpdate, + NoViewportUpdate, + BoundingRectViewportUpdate + }; + Q_ENUM(ViewportUpdateMode) + + enum OptimizationFlag { + DontClipPainter = 0x1, // obsolete + DontSavePainterState = 0x2, + DontAdjustForAntialiasing = 0x4, + IndirectPainting = 0x8 + }; + Q_DECLARE_FLAGS(OptimizationFlags, OptimizationFlag) + + QGraphicsView(QWidget *parent = Q_NULLPTR); + QGraphicsView(QGraphicsScene *scene, QWidget *parent = Q_NULLPTR); + ~QGraphicsView(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + + QPainter::RenderHints renderHints() const; + void setRenderHint(QPainter::RenderHint hint, bool enabled = true); + void setRenderHints(QPainter::RenderHints hints); + + Qt::Alignment alignment() const; + void setAlignment(Qt::Alignment alignment); + + ViewportAnchor transformationAnchor() const; + void setTransformationAnchor(ViewportAnchor anchor); + + ViewportAnchor resizeAnchor() const; + void setResizeAnchor(ViewportAnchor anchor); + + ViewportUpdateMode viewportUpdateMode() const; + void setViewportUpdateMode(ViewportUpdateMode mode); + + OptimizationFlags optimizationFlags() const; + void setOptimizationFlag(OptimizationFlag flag, bool enabled = true); + void setOptimizationFlags(OptimizationFlags flags); + + DragMode dragMode() const; + void setDragMode(DragMode mode); + +#if QT_CONFIG(rubberband) + Qt::ItemSelectionMode rubberBandSelectionMode() const; + void setRubberBandSelectionMode(Qt::ItemSelectionMode mode); + QRect rubberBandRect() const; +#endif + + CacheMode cacheMode() const; + void setCacheMode(CacheMode mode); + void resetCachedContent(); + + bool isInteractive() const; + void setInteractive(bool allowed); + + QGraphicsScene *scene() const; + void setScene(QGraphicsScene *scene); + + QRectF sceneRect() const; + void setSceneRect(const QRectF &rect); + inline void setSceneRect(qreal x, qreal y, qreal w, qreal h); + + QMatrix matrix() const; + void setMatrix(const QMatrix &matrix, bool combine = false); + void resetMatrix(); + QTransform transform() const; + QTransform viewportTransform() const; + bool isTransformed() const; + void setTransform(const QTransform &matrix, bool combine = false); + void resetTransform(); + void rotate(qreal angle); + void scale(qreal sx, qreal sy); + void shear(qreal sh, qreal sv); + void translate(qreal dx, qreal dy); + + void centerOn(const QPointF &pos); + inline void centerOn(qreal x, qreal y); + void centerOn(const QGraphicsItem *item); + void ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50); + inline void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50); + void ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50); + void fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRadioMode = Qt::IgnoreAspectRatio); + inline void fitInView(qreal x, qreal y, qreal w, qreal h, + Qt::AspectRatioMode aspectRadioMode = Qt::IgnoreAspectRatio); + void fitInView(const QGraphicsItem *item, + Qt::AspectRatioMode aspectRadioMode = Qt::IgnoreAspectRatio); + + void render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), + Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio); + + QList<QGraphicsItem *> items() const; + QList<QGraphicsItem *> items(const QPoint &pos) const; + inline QList<QGraphicsItem *> items(int x, int y) const; + QList<QGraphicsItem *> items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; + inline QList<QGraphicsItem *> items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; + QList<QGraphicsItem *> items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; + QList<QGraphicsItem *> items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; + QGraphicsItem *itemAt(const QPoint &pos) const; + inline QGraphicsItem *itemAt(int x, int y) const; + + QPointF mapToScene(const QPoint &point) const; + QPolygonF mapToScene(const QRect &rect) const; + QPolygonF mapToScene(const QPolygon &polygon) const; + QPainterPath mapToScene(const QPainterPath &path) const; + QPoint mapFromScene(const QPointF &point) const; + QPolygon mapFromScene(const QRectF &rect) const; + QPolygon mapFromScene(const QPolygonF &polygon) const; + QPainterPath mapFromScene(const QPainterPath &path) const; + inline QPointF mapToScene(int x, int y) const; + inline QPolygonF mapToScene(int x, int y, int w, int h) const; + inline QPoint mapFromScene(qreal x, qreal y) const; + inline QPolygon mapFromScene(qreal x, qreal y, qreal w, qreal h) const; + + QVariant inputMethodQuery(Qt::InputMethodQuery query) const Q_DECL_OVERRIDE; + + QBrush backgroundBrush() const; + void setBackgroundBrush(const QBrush &brush); + + QBrush foregroundBrush() const; + void setForegroundBrush(const QBrush &brush); + +public Q_SLOTS: + void updateScene(const QList<QRectF> &rects); + void invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers); + void updateSceneRect(const QRectF &rect); + +#if QT_CONFIG(rubberband) +Q_SIGNALS: + void rubberBandChanged(QRect viewportRect, QPointF fromScenePoint, QPointF toScenePoint); +#endif + +protected Q_SLOTS: + void setupViewport(QWidget *widget) Q_DECL_OVERRIDE; + +protected: + QGraphicsView(QGraphicsViewPrivate &, QWidget *parent = Q_NULLPTR); + bool event(QEvent *event) Q_DECL_OVERRIDE; + bool viewportEvent(QEvent *event) Q_DECL_OVERRIDE; + +#ifndef QT_NO_CONTEXTMENU + void contextMenuEvent(QContextMenuEvent *event) Q_DECL_OVERRIDE; +#endif +#if QT_CONFIG(draganddrop) + void dragEnterEvent(QDragEnterEvent *event) Q_DECL_OVERRIDE; + void dragLeaveEvent(QDragLeaveEvent *event) Q_DECL_OVERRIDE; + void dragMoveEvent(QDragMoveEvent *event) Q_DECL_OVERRIDE; + void dropEvent(QDropEvent *event) Q_DECL_OVERRIDE; +#endif + void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE; + void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; + void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; +#if QT_CONFIG(wheelevent) + void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE; +#endif + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; + void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE; + void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; + void inputMethodEvent(QInputMethodEvent *event) Q_DECL_OVERRIDE; + + virtual void drawBackground(QPainter *painter, const QRectF &rect); + virtual void drawForeground(QPainter *painter, const QRectF &rect); + virtual void drawItems(QPainter *painter, int numItems, + QGraphicsItem *items[], + const QStyleOptionGraphicsItem options[]); + +private: + Q_DECLARE_PRIVATE(QGraphicsView) + Q_DISABLE_COPY(QGraphicsView) +#ifndef QT_NO_CURSOR + Q_PRIVATE_SLOT(d_func(), void _q_setViewportCursor(const QCursor &)) + Q_PRIVATE_SLOT(d_func(), void _q_unsetViewportCursor()) +#endif + friend class QGraphicsSceneWidget; + friend class QGraphicsScene; + friend class QGraphicsScenePrivate; + friend class QGraphicsItemPrivate; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsView::CacheMode) +Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsView::OptimizationFlags) + +inline void QGraphicsView::setSceneRect(qreal ax, qreal ay, qreal aw, qreal ah) +{ setSceneRect(QRectF(ax, ay, aw, ah)); } +inline void QGraphicsView::centerOn(qreal ax, qreal ay) +{ centerOn(QPointF(ax, ay)); } +inline void QGraphicsView::ensureVisible(qreal ax, qreal ay, qreal aw, qreal ah, int xmargin, int ymargin) +{ ensureVisible(QRectF(ax, ay, aw, ah), xmargin, ymargin); } +inline void QGraphicsView::fitInView(qreal ax, qreal ay, qreal w, qreal h, Qt::AspectRatioMode mode) +{ fitInView(QRectF(ax, ay, w, h), mode); } +inline QList<QGraphicsItem *> QGraphicsView::items(int ax, int ay) const +{ return items(QPoint(ax, ay)); } +inline QList<QGraphicsItem *> QGraphicsView::items(int ax, int ay, int w, int h, Qt::ItemSelectionMode mode) const +{ return items(QRect(ax, ay, w, h), mode); } +inline QGraphicsItem *QGraphicsView::itemAt(int ax, int ay) const +{ return itemAt(QPoint(ax, ay)); } +inline QPointF QGraphicsView::mapToScene(int ax, int ay) const +{ return mapToScene(QPoint(ax, ay)); } +inline QPolygonF QGraphicsView::mapToScene(int ax, int ay, int w, int h) const +{ return mapToScene(QRect(ax, ay, w, h)); } +inline QPoint QGraphicsView::mapFromScene(qreal ax, qreal ay) const +{ return mapFromScene(QPointF(ax, ay)); } +inline QPolygon QGraphicsView::mapFromScene(qreal ax, qreal ay, qreal w, qreal h) const +{ return mapFromScene(QRectF(ax, ay, w, h)); } + +QT_END_NAMESPACE + +#endif // QGRAPHICSVIEW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicswidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicswidget.h new file mode 100644 index 000000000..831511d14 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgraphicswidget.h @@ -0,0 +1,244 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRAPHICSWIDGET_H +#define QGRAPHICSWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtGui/qfont.h> +#include <QtWidgets/qgraphicslayoutitem.h> +#include <QtWidgets/qgraphicsitem.h> +#include <QtGui/qpalette.h> + +QT_REQUIRE_CONFIG(graphicsview); + +QT_BEGIN_NAMESPACE + +class QFont; +class QFontMetrics; +class QGraphicsLayout; +class QGraphicsSceneMoveEvent; +class QGraphicsWidgetPrivate; +class QGraphicsSceneResizeEvent; +class QStyle; +class QStyleOption; + +class QGraphicsWidgetPrivate; + +class Q_WIDGETS_EXPORT QGraphicsWidget : public QGraphicsObject, public QGraphicsLayoutItem +{ + Q_OBJECT + Q_INTERFACES(QGraphicsItem QGraphicsLayoutItem) + Q_PROPERTY(QPalette palette READ palette WRITE setPalette) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection RESET unsetLayoutDirection) + Q_PROPERTY(QSizeF size READ size WRITE resize NOTIFY geometryChanged) + Q_PROPERTY(QSizeF minimumSize READ minimumSize WRITE setMinimumSize) + Q_PROPERTY(QSizeF preferredSize READ preferredSize WRITE setPreferredSize) + Q_PROPERTY(QSizeF maximumSize READ maximumSize WRITE setMaximumSize) + Q_PROPERTY(QSizePolicy sizePolicy READ sizePolicy WRITE setSizePolicy) + Q_PROPERTY(Qt::FocusPolicy focusPolicy READ focusPolicy WRITE setFocusPolicy) + Q_PROPERTY(Qt::WindowFlags windowFlags READ windowFlags WRITE setWindowFlags) + Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle) + Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometry NOTIFY geometryChanged) + Q_PROPERTY(bool autoFillBackground READ autoFillBackground WRITE setAutoFillBackground) + Q_PROPERTY(QGraphicsLayout* layout READ layout WRITE setLayout NOTIFY layoutChanged) +public: + QGraphicsWidget(QGraphicsItem *parent = Q_NULLPTR, Qt::WindowFlags wFlags = Qt::WindowFlags()); + ~QGraphicsWidget(); + QGraphicsLayout *layout() const; + void setLayout(QGraphicsLayout *layout); + void adjustSize(); + + Qt::LayoutDirection layoutDirection() const; + void setLayoutDirection(Qt::LayoutDirection direction); + void unsetLayoutDirection(); + + QStyle *style() const; + void setStyle(QStyle *style); + + QFont font() const; + void setFont(const QFont &font); + + QPalette palette() const; + void setPalette(const QPalette &palette); + + bool autoFillBackground() const; + void setAutoFillBackground(bool enabled); + + void resize(const QSizeF &size); + inline void resize(qreal w, qreal h) { resize(QSizeF(w, h)); } + QSizeF size() const; + + void setGeometry(const QRectF &rect) Q_DECL_OVERRIDE; + inline void setGeometry(qreal x, qreal y, qreal w, qreal h); + inline QRectF rect() const { return QRectF(QPointF(), size()); } + + void setContentsMargins(qreal left, qreal top, qreal right, qreal bottom); + void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const Q_DECL_OVERRIDE; + + void setWindowFrameMargins(qreal left, qreal top, qreal right, qreal bottom); + void getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; + void unsetWindowFrameMargins(); + QRectF windowFrameGeometry() const; + QRectF windowFrameRect() const; + + // Window handling + Qt::WindowFlags windowFlags() const; + Qt::WindowType windowType() const; + void setWindowFlags(Qt::WindowFlags wFlags); + bool isActiveWindow() const; + void setWindowTitle(const QString &title); + QString windowTitle() const; + + // Focus handling + Qt::FocusPolicy focusPolicy() const; + void setFocusPolicy(Qt::FocusPolicy policy); + static void setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second); + QGraphicsWidget *focusWidget() const; + +#ifndef QT_NO_SHORTCUT + int grabShortcut(const QKeySequence &sequence, Qt::ShortcutContext context = Qt::WindowShortcut); + void releaseShortcut(int id); + void setShortcutEnabled(int id, bool enabled = true); + void setShortcutAutoRepeat(int id, bool enabled = true); +#endif + +#ifndef QT_NO_ACTION + //actions + void addAction(QAction *action); +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + void addActions(const QList<QAction*> &actions); + void insertActions(QAction *before, const QList<QAction*> &actions); +#else + void addActions(QList<QAction*> actions); + void insertActions(QAction *before, QList<QAction*> actions); +#endif + void insertAction(QAction *before, QAction *action); + void removeAction(QAction *action); + QList<QAction*> actions() const; +#endif + + void setAttribute(Qt::WidgetAttribute attribute, bool on = true); + bool testAttribute(Qt::WidgetAttribute attribute) const; + + enum { + Type = 11 + }; + int type() const Q_DECL_OVERRIDE; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) Q_DECL_OVERRIDE; + virtual void paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR); + QRectF boundingRect() const Q_DECL_OVERRIDE; + QPainterPath shape() const Q_DECL_OVERRIDE; + +#if 0 + void dumpFocusChain(); +#endif + + using QObject::children; + +Q_SIGNALS: + void geometryChanged(); + void layoutChanged(); + +public Q_SLOTS: + bool close(); + +protected: + virtual void initStyleOption(QStyleOption *option) const; + + QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const Q_DECL_OVERRIDE; + void updateGeometry() Q_DECL_OVERRIDE; + + // Notification + QVariant itemChange(GraphicsItemChange change, const QVariant &value) Q_DECL_OVERRIDE; + virtual QVariant propertyChange(const QString &propertyName, const QVariant &value); + + // Scene events + bool sceneEvent(QEvent *event) Q_DECL_OVERRIDE; + virtual bool windowFrameEvent(QEvent *e); + virtual Qt::WindowFrameSection windowFrameSectionAt(const QPointF& pos) const; + + // Base event handlers + bool event(QEvent *event) Q_DECL_OVERRIDE; + //virtual void actionEvent(QActionEvent *event); + virtual void changeEvent(QEvent *event); + virtual void closeEvent(QCloseEvent *event); + //void create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true); + //void destroy(bool destroyWindow = true, bool destroySubWindows = true); + void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + virtual bool focusNextPrevChild(bool next); + void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + virtual void hideEvent(QHideEvent *event); + //virtual int metric(PaintDeviceMetric m ) const; + virtual void moveEvent(QGraphicsSceneMoveEvent *event); + virtual void polishEvent(); + //void resetInputContext (); + virtual void resizeEvent(QGraphicsSceneResizeEvent *event); + virtual void showEvent(QShowEvent *event); + //virtual void tabletEvent(QTabletEvent *event); + virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; + virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; + virtual void grabMouseEvent(QEvent *event); + virtual void ungrabMouseEvent(QEvent *event); + virtual void grabKeyboardEvent(QEvent *event); + virtual void ungrabKeyboardEvent(QEvent *event); + QGraphicsWidget(QGraphicsWidgetPrivate &, QGraphicsItem *parent, Qt::WindowFlags wFlags = Qt::WindowFlags()); + +private: + Q_DISABLE_COPY(QGraphicsWidget) + Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QGraphicsWidget) + friend class QGraphicsScene; + friend class QGraphicsScenePrivate; + friend class QGraphicsView; + friend class QGraphicsItem; + friend class QGraphicsItemPrivate; + friend class QGraphicsLayout; + friend class QWidget; + friend class QApplication; +}; + +inline void QGraphicsWidget::setGeometry(qreal ax, qreal ay, qreal aw, qreal ah) +{ setGeometry(QRectF(ax, ay, aw, ah)); } + +QT_END_NAMESPACE + +#endif + diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgridlayout.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgridlayout.h new file mode 100644 index 000000000..51dd65d18 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgridlayout.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGRIDLAYOUT_H +#define QGRIDLAYOUT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qlayout.h> +#ifdef QT_INCLUDE_COMPAT +#include <QtWidgets/qwidget.h> +#endif + +#include <limits.h> + +QT_BEGIN_NAMESPACE + + +class QGridLayoutPrivate; + +class Q_WIDGETS_EXPORT QGridLayout : public QLayout +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QGridLayout) + QDOC_PROPERTY(int horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing) + QDOC_PROPERTY(int verticalSpacing READ verticalSpacing WRITE setVerticalSpacing) + +public: + explicit QGridLayout(QWidget *parent); + QGridLayout(); + + ~QGridLayout(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSize() const Q_DECL_OVERRIDE; + QSize maximumSize() const Q_DECL_OVERRIDE; + + void setHorizontalSpacing(int spacing); + int horizontalSpacing() const; + void setVerticalSpacing(int spacing); + int verticalSpacing() const; + void setSpacing(int spacing); + int spacing() const; + + void setRowStretch(int row, int stretch); + void setColumnStretch(int column, int stretch); + int rowStretch(int row) const; + int columnStretch(int column) const; + + void setRowMinimumHeight(int row, int minSize); + void setColumnMinimumWidth(int column, int minSize); + int rowMinimumHeight(int row) const; + int columnMinimumWidth(int column) const; + + int columnCount() const; + int rowCount() const; + + QRect cellRect(int row, int column) const; + + bool hasHeightForWidth() const Q_DECL_OVERRIDE; + int heightForWidth(int) const Q_DECL_OVERRIDE; + int minimumHeightForWidth(int) const Q_DECL_OVERRIDE; + + Qt::Orientations expandingDirections() const Q_DECL_OVERRIDE; + void invalidate() Q_DECL_OVERRIDE; + + inline void addWidget(QWidget *w) { QLayout::addWidget(w); } + void addWidget(QWidget *, int row, int column, Qt::Alignment = Qt::Alignment()); + void addWidget(QWidget *, int row, int column, int rowSpan, int columnSpan, Qt::Alignment = Qt::Alignment()); + void addLayout(QLayout *, int row, int column, Qt::Alignment = Qt::Alignment()); + void addLayout(QLayout *, int row, int column, int rowSpan, int columnSpan, Qt::Alignment = Qt::Alignment()); + + void setOriginCorner(Qt::Corner); + Qt::Corner originCorner() const; + + QLayoutItem *itemAt(int index) const Q_DECL_OVERRIDE; + QLayoutItem *itemAtPosition(int row, int column) const; + QLayoutItem *takeAt(int index) Q_DECL_OVERRIDE; + int count() const Q_DECL_OVERRIDE; + void setGeometry(const QRect&) Q_DECL_OVERRIDE; + + void addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment = Qt::Alignment()); + + void setDefaultPositioning(int n, Qt::Orientation orient); + void getItemPosition(int idx, int *row, int *column, int *rowSpan, int *columnSpan) const; + +protected: + void addItem(QLayoutItem *) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QGridLayout) + +}; + +QT_END_NAMESPACE + +#endif // QGRIDLAYOUT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qgroupbox.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgroupbox.h new file mode 100644 index 000000000..668dc03f3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qgroupbox.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGROUPBOX_H +#define QGROUPBOX_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qframe.h> + +QT_REQUIRE_CONFIG(groupbox); + +QT_BEGIN_NAMESPACE + +class QGroupBoxPrivate; +class QStyleOptionGroupBox; +class Q_WIDGETS_EXPORT QGroupBox : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(QString title READ title WRITE setTitle) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) + Q_PROPERTY(bool flat READ isFlat WRITE setFlat) + Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable) + Q_PROPERTY(bool checked READ isChecked WRITE setChecked DESIGNABLE isCheckable NOTIFY toggled USER true) +public: + explicit QGroupBox(QWidget *parent = Q_NULLPTR); + explicit QGroupBox(const QString &title, QWidget *parent = Q_NULLPTR); + ~QGroupBox(); + + QString title() const; + void setTitle(const QString &title); + + Qt::Alignment alignment() const; + void setAlignment(int alignment); + + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + bool isFlat() const; + void setFlat(bool flat); + bool isCheckable() const; + void setCheckable(bool checkable); + bool isChecked() const; + +public Q_SLOTS: + void setChecked(bool checked); + +Q_SIGNALS: + void clicked(bool checked = false); + void toggled(bool); + +protected: + bool event(QEvent *event) Q_DECL_OVERRIDE; + void childEvent(QChildEvent *event) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE; + void changeEvent(QEvent *event) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionGroupBox *option) const; + + +private: + Q_DISABLE_COPY(QGroupBox) + Q_DECLARE_PRIVATE(QGroupBox) + Q_PRIVATE_SLOT(d_func(), void _q_setChildrenEnabled(bool b)) +}; + +QT_END_NAMESPACE + +#endif // QGROUPBOX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qheaderview.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qheaderview.h new file mode 100644 index 000000000..ec4500d81 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qheaderview.h @@ -0,0 +1,269 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHEADERVIEW_H +#define QHEADERVIEW_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractitemview.h> + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +class QHeaderViewPrivate; +class QStyleOptionHeader; + +class Q_WIDGETS_EXPORT QHeaderView : public QAbstractItemView +{ + Q_OBJECT + Q_PROPERTY(bool showSortIndicator READ isSortIndicatorShown WRITE setSortIndicatorShown) + Q_PROPERTY(bool highlightSections READ highlightSections WRITE setHighlightSections) + Q_PROPERTY(bool stretchLastSection READ stretchLastSection WRITE setStretchLastSection) + Q_PROPERTY(bool cascadingSectionResizes READ cascadingSectionResizes WRITE setCascadingSectionResizes) + Q_PROPERTY(int defaultSectionSize READ defaultSectionSize WRITE setDefaultSectionSize RESET resetDefaultSectionSize) + Q_PROPERTY(int minimumSectionSize READ minimumSectionSize WRITE setMinimumSectionSize) + Q_PROPERTY(int maximumSectionSize READ maximumSectionSize WRITE setMaximumSectionSize) + Q_PROPERTY(Qt::Alignment defaultAlignment READ defaultAlignment WRITE setDefaultAlignment) + +public: + + enum ResizeMode + { + Interactive, + Stretch, + Fixed, + ResizeToContents, + Custom = Fixed + }; + Q_ENUM(ResizeMode) + + explicit QHeaderView(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR); + virtual ~QHeaderView(); + + void setModel(QAbstractItemModel *model) Q_DECL_OVERRIDE; + + Qt::Orientation orientation() const; + int offset() const; + int length() const; + QSize sizeHint() const Q_DECL_OVERRIDE; + void setVisible(bool v) Q_DECL_OVERRIDE; + int sectionSizeHint(int logicalIndex) const; + + int visualIndexAt(int position) const; + int logicalIndexAt(int position) const; + + inline int logicalIndexAt(int x, int y) const; + inline int logicalIndexAt(const QPoint &pos) const; + + int sectionSize(int logicalIndex) const; + int sectionPosition(int logicalIndex) const; + int sectionViewportPosition(int logicalIndex) const; + + void moveSection(int from, int to); + void swapSections(int first, int second); + void resizeSection(int logicalIndex, int size); + void resizeSections(QHeaderView::ResizeMode mode); + + bool isSectionHidden(int logicalIndex) const; + void setSectionHidden(int logicalIndex, bool hide); + int hiddenSectionCount() const; + + inline void hideSection(int logicalIndex); + inline void showSection(int logicalIndex); + + int count() const; + int visualIndex(int logicalIndex) const; + int logicalIndex(int visualIndex) const; + + void setSectionsMovable(bool movable); + bool sectionsMovable() const; +#if QT_DEPRECATED_SINCE(5, 0) + inline QT_DEPRECATED void setMovable(bool movable) { setSectionsMovable(movable); } + inline QT_DEPRECATED bool isMovable() const { return sectionsMovable(); } +#endif + + void setSectionsClickable(bool clickable); + bool sectionsClickable() const; +#if QT_DEPRECATED_SINCE(5, 0) + inline QT_DEPRECATED void setClickable(bool clickable) { setSectionsClickable(clickable); } + inline QT_DEPRECATED bool isClickable() const { return sectionsClickable(); } +#endif + + void setHighlightSections(bool highlight); + bool highlightSections() const; + + ResizeMode sectionResizeMode(int logicalIndex) const; + void setSectionResizeMode(ResizeMode mode); + void setSectionResizeMode(int logicalIndex, ResizeMode mode); + + void setResizeContentsPrecision(int precision); + int resizeContentsPrecision() const; + +#if QT_DEPRECATED_SINCE(5, 0) + inline QT_DEPRECATED void setResizeMode(ResizeMode mode) + { setSectionResizeMode(mode); } + inline QT_DEPRECATED void setResizeMode(int logicalindex, ResizeMode mode) + { setSectionResizeMode(logicalindex, mode); } + inline QT_DEPRECATED ResizeMode resizeMode(int logicalindex) const + { return sectionResizeMode(logicalindex); } +#endif + + int stretchSectionCount() const; + + void setSortIndicatorShown(bool show); + bool isSortIndicatorShown() const; + + void setSortIndicator(int logicalIndex, Qt::SortOrder order); + int sortIndicatorSection() const; + Qt::SortOrder sortIndicatorOrder() const; + + bool stretchLastSection() const; + void setStretchLastSection(bool stretch); + + bool cascadingSectionResizes() const; + void setCascadingSectionResizes(bool enable); + + int defaultSectionSize() const; + void setDefaultSectionSize(int size); + void resetDefaultSectionSize(); + + int minimumSectionSize() const; + void setMinimumSectionSize(int size); + int maximumSectionSize() const; + void setMaximumSectionSize(int size); + + Qt::Alignment defaultAlignment() const; + void setDefaultAlignment(Qt::Alignment alignment); + + void doItemsLayout() Q_DECL_OVERRIDE; + bool sectionsMoved() const; + bool sectionsHidden() const; + +#ifndef QT_NO_DATASTREAM + QByteArray saveState() const; + bool restoreState(const QByteArray &state); +#endif + + void reset() Q_DECL_OVERRIDE; + +public Q_SLOTS: + void setOffset(int offset); + void setOffsetToSectionPosition(int visualIndex); + void setOffsetToLastSection(); + void headerDataChanged(Qt::Orientation orientation, int logicalFirst, int logicalLast); + +Q_SIGNALS: + void sectionMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex); + void sectionResized(int logicalIndex, int oldSize, int newSize); + void sectionPressed(int logicalIndex); + void sectionClicked(int logicalIndex); + void sectionEntered(int logicalIndex); + void sectionDoubleClicked(int logicalIndex); + void sectionCountChanged(int oldCount, int newCount); + void sectionHandleDoubleClicked(int logicalIndex); + void geometriesChanged(); + void sortIndicatorChanged(int logicalIndex, Qt::SortOrder order); + +protected Q_SLOTS: + void updateSection(int logicalIndex); + void resizeSections(); + void sectionsInserted(const QModelIndex &parent, int logicalFirst, int logicalLast); + void sectionsAboutToBeRemoved(const QModelIndex &parent, int logicalFirst, int logicalLast); + +protected: + QHeaderView(QHeaderViewPrivate &dd, Qt::Orientation orientation, QWidget *parent = Q_NULLPTR); + void initialize(); + + void initializeSections(); + void initializeSections(int start, int end); + void currentChanged(const QModelIndex ¤t, const QModelIndex &old) Q_DECL_OVERRIDE; + + bool event(QEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + bool viewportEvent(QEvent *e) Q_DECL_OVERRIDE; + + virtual void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const; + virtual QSize sectionSizeFromContents(int logicalIndex) const; + + int horizontalOffset() const Q_DECL_OVERRIDE; + int verticalOffset() const Q_DECL_OVERRIDE; + void updateGeometries() Q_DECL_OVERRIDE; + void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE; + + void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int>()) Q_DECL_OVERRIDE; + void rowsInserted(const QModelIndex &parent, int start, int end) Q_DECL_OVERRIDE; + + QRect visualRect(const QModelIndex &index) const Q_DECL_OVERRIDE; + void scrollTo(const QModelIndex &index, ScrollHint hint) Q_DECL_OVERRIDE; + + QModelIndex indexAt(const QPoint &p) const Q_DECL_OVERRIDE; + bool isIndexHidden(const QModelIndex &index) const Q_DECL_OVERRIDE; + + QModelIndex moveCursor(CursorAction, Qt::KeyboardModifiers) Q_DECL_OVERRIDE; + void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags flags) Q_DECL_OVERRIDE; + QRegion visualRegionForSelection(const QItemSelection &selection) const Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionHeader *option) const; + + friend class QTableView; + friend class QTreeView; + +private: + Q_PRIVATE_SLOT(d_func(), void _q_sectionsRemoved(const QModelIndex &parent, int logicalFirst, int logicalLast)) + Q_PRIVATE_SLOT(d_func(), void _q_layoutAboutToBeChanged()) + Q_DECLARE_PRIVATE(QHeaderView) + Q_DISABLE_COPY(QHeaderView) +}; + +inline int QHeaderView::logicalIndexAt(int ax, int ay) const +{ return orientation() == Qt::Horizontal ? logicalIndexAt(ax) : logicalIndexAt(ay); } +inline int QHeaderView::logicalIndexAt(const QPoint &apos) const +{ return logicalIndexAt(apos.x(), apos.y()); } +inline void QHeaderView::hideSection(int alogicalIndex) +{ setSectionHidden(alogicalIndex, true); } +inline void QHeaderView::showSection(int alogicalIndex) +{ setSectionHidden(alogicalIndex, false); } + +QT_END_NAMESPACE + +#endif // QHEADERVIEW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qinputdialog.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qinputdialog.h new file mode 100644 index 000000000..5f0678588 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qinputdialog.h @@ -0,0 +1,214 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QINPUTDIALOG_H +#define QINPUTDIALOG_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qstring.h> +#include <QtWidgets/qlineedit.h> + +#include <QtWidgets/qdialog.h> + +QT_REQUIRE_CONFIG(inputdialog); + +QT_BEGIN_NAMESPACE + +class QInputDialogPrivate; + +class Q_WIDGETS_EXPORT QInputDialog : public QDialog +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QInputDialog) +// Q_ENUMS(InputMode InputDialogOption) + QDOC_PROPERTY(InputMode inputMode READ inputMode WRITE setInputMode) + QDOC_PROPERTY(QString labelText READ labelText WRITE setLabelText) + QDOC_PROPERTY(InputDialogOptions options READ options WRITE setOptions) + QDOC_PROPERTY(QString textValue READ textValue WRITE setTextValue NOTIFY textValueChanged) + QDOC_PROPERTY(int intValue READ intValue WRITE setIntValue NOTIFY intValueChanged) + QDOC_PROPERTY(int doubleValue READ doubleValue WRITE setDoubleValue NOTIFY doubleValueChanged) + QDOC_PROPERTY(QLineEdit::EchoMode textEchoMode READ textEchoMode WRITE setTextEchoMode) + QDOC_PROPERTY(bool comboBoxEditable READ isComboBoxEditable WRITE setComboBoxEditable) + QDOC_PROPERTY(QStringList comboBoxItems READ comboBoxItems WRITE setComboBoxItems) + QDOC_PROPERTY(int intMinimum READ intMinimum WRITE setIntMinimum) + QDOC_PROPERTY(int intMaximum READ intMaximum WRITE setIntMaximum) + QDOC_PROPERTY(int intStep READ intStep WRITE setIntStep) + QDOC_PROPERTY(double doubleMinimum READ doubleMinimum WRITE setDoubleMinimum) + QDOC_PROPERTY(double doubleMaximum READ doubleMaximum WRITE setDoubleMaximum) + QDOC_PROPERTY(int doubleDecimals READ doubleDecimals WRITE setDoubleDecimals) + QDOC_PROPERTY(QString okButtonText READ okButtonText WRITE setOkButtonText) + QDOC_PROPERTY(QString cancelButtonText READ cancelButtonText WRITE setCancelButtonText) + +public: + enum InputDialogOption { + NoButtons = 0x00000001, + UseListViewForComboBoxItems = 0x00000002, + UsePlainTextEditForTextInput = 0x00000004 + }; + + Q_DECLARE_FLAGS(InputDialogOptions, InputDialogOption) + + enum InputMode { + TextInput, + IntInput, + DoubleInput + }; + + QInputDialog(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()); + ~QInputDialog(); + + void setInputMode(InputMode mode); + InputMode inputMode() const; + + void setLabelText(const QString &text); + QString labelText() const; + + void setOption(InputDialogOption option, bool on = true); + bool testOption(InputDialogOption option) const; + void setOptions(InputDialogOptions options); + InputDialogOptions options() const; + + void setTextValue(const QString &text); + QString textValue() const; + + void setTextEchoMode(QLineEdit::EchoMode mode); + QLineEdit::EchoMode textEchoMode() const; + + void setComboBoxEditable(bool editable); + bool isComboBoxEditable() const; + + void setComboBoxItems(const QStringList &items); + QStringList comboBoxItems() const; + + void setIntValue(int value); + int intValue() const; + + void setIntMinimum(int min); + int intMinimum() const; + + void setIntMaximum(int max); + int intMaximum() const; + + void setIntRange(int min, int max); + + void setIntStep(int step); + int intStep() const; + + void setDoubleValue(double value); + double doubleValue() const; + + void setDoubleMinimum(double min); + double doubleMinimum() const; + + void setDoubleMaximum(double max); + double doubleMaximum() const; + + void setDoubleRange(double min, double max); + + void setDoubleDecimals(int decimals); + int doubleDecimals() const; + + void setOkButtonText(const QString &text); + QString okButtonText() const; + + void setCancelButtonText(const QString &text); + QString cancelButtonText() const; + + using QDialog::open; + void open(QObject *receiver, const char *member); + + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + QSize sizeHint() const Q_DECL_OVERRIDE; + + void setVisible(bool visible) Q_DECL_OVERRIDE; + + static QString getText(QWidget *parent, const QString &title, const QString &label, + QLineEdit::EchoMode echo = QLineEdit::Normal, + const QString &text = QString(), bool *ok = Q_NULLPTR, + Qt::WindowFlags flags = Qt::WindowFlags(), + Qt::InputMethodHints inputMethodHints = Qt::ImhNone); + static QString getMultiLineText(QWidget *parent, const QString &title, const QString &label, + const QString &text = QString(), bool *ok = Q_NULLPTR, + Qt::WindowFlags flags = Qt::WindowFlags(), + Qt::InputMethodHints inputMethodHints = Qt::ImhNone); + static QString getItem(QWidget *parent, const QString &title, const QString &label, + const QStringList &items, int current = 0, bool editable = true, + bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(), + Qt::InputMethodHints inputMethodHints = Qt::ImhNone); + + static int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, + int minValue = -2147483647, int maxValue = 2147483647, + int step = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()); + static double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, + double minValue = -2147483647, double maxValue = 2147483647, + int decimals = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()); + +#if QT_DEPRECATED_SINCE(5, 0) + QT_DEPRECATED static inline int getInteger(QWidget *parent, const QString &title, const QString &label, int value = 0, + int minValue = -2147483647, int maxValue = 2147483647, + int step = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()) + { + return getInt(parent, title, label, value, minValue, maxValue, step, ok, flags); + } +#endif + +Q_SIGNALS: + // ### emit signals! + void textValueChanged(const QString &text); + void textValueSelected(const QString &text); + void intValueChanged(int value); + void intValueSelected(int value); + void doubleValueChanged(double value); + void doubleValueSelected(double value); + +public: + void done(int result) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QInputDialog) + Q_PRIVATE_SLOT(d_func(), void _q_textChanged(const QString&)) + Q_PRIVATE_SLOT(d_func(), void _q_plainTextEditTextChanged()) + Q_PRIVATE_SLOT(d_func(), void _q_currentRowChanged(const QModelIndex&, const QModelIndex&)) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QInputDialog::InputDialogOptions) + +QT_END_NAMESPACE + +#endif // QINPUTDIALOG_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qitemdelegate.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qitemdelegate.h new file mode 100644 index 000000000..21594327e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qitemdelegate.h @@ -0,0 +1,130 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QITEMDELEGATE_H +#define QITEMDELEGATE_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractitemdelegate.h> +#include <QtCore/qstring.h> +#include <QtGui/qpixmap.h> +#include <QtCore/qvariant.h> + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +class QItemDelegatePrivate; +class QItemEditorFactory; + +class Q_WIDGETS_EXPORT QItemDelegate : public QAbstractItemDelegate +{ + Q_OBJECT + Q_PROPERTY(bool clipping READ hasClipping WRITE setClipping) + +public: + explicit QItemDelegate(QObject *parent = Q_NULLPTR); + ~QItemDelegate(); + + bool hasClipping() const; + void setClipping(bool clip); + + // painting + void paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const Q_DECL_OVERRIDE; + QSize sizeHint(const QStyleOptionViewItem &option, + const QModelIndex &index) const Q_DECL_OVERRIDE; + + // editing + QWidget *createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const Q_DECL_OVERRIDE; + + void setEditorData(QWidget *editor, const QModelIndex &index) const Q_DECL_OVERRIDE; + void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const Q_DECL_OVERRIDE; + + void updateEditorGeometry(QWidget *editor, + const QStyleOptionViewItem &option, + const QModelIndex &index) const Q_DECL_OVERRIDE; + + // editor factory + QItemEditorFactory *itemEditorFactory() const; + void setItemEditorFactory(QItemEditorFactory *factory); + +protected: + virtual void drawDisplay(QPainter *painter, const QStyleOptionViewItem &option, + const QRect &rect, const QString &text) const; + virtual void drawDecoration(QPainter *painter, const QStyleOptionViewItem &option, + const QRect &rect, const QPixmap &pixmap) const; + virtual void drawFocus(QPainter *painter, const QStyleOptionViewItem &option, + const QRect &rect) const; + virtual void drawCheck(QPainter *painter, const QStyleOptionViewItem &option, + const QRect &rect, Qt::CheckState state) const; + void drawBackground(QPainter *painter, const QStyleOptionViewItem &option, + const QModelIndex &index) const; + + void doLayout(const QStyleOptionViewItem &option, + QRect *checkRect, QRect *iconRect, QRect *textRect, bool hint) const; + + QRect rect(const QStyleOptionViewItem &option, const QModelIndex &index, int role) const; + + bool eventFilter(QObject *object, QEvent *event) Q_DECL_OVERRIDE; + bool editorEvent(QEvent *event, QAbstractItemModel *model, + const QStyleOptionViewItem &option, const QModelIndex &index) Q_DECL_OVERRIDE; + + QStyleOptionViewItem setOptions(const QModelIndex &index, + const QStyleOptionViewItem &option) const; + + QPixmap decoration(const QStyleOptionViewItem &option, const QVariant &variant) const; + QPixmap *selected(const QPixmap &pixmap, const QPalette &palette, bool enabled) const; + + QRect doCheck(const QStyleOptionViewItem &option, const QRect &bounding, + const QVariant &variant) const; + QRect textRectangle(QPainter *painter, const QRect &rect, + const QFont &font, const QString &text) const; + +private: + Q_DECLARE_PRIVATE(QItemDelegate) + Q_DISABLE_COPY(QItemDelegate) +}; + +QT_END_NAMESPACE + +#endif // QITEMDELEGATE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qitemeditorfactory.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qitemeditorfactory.h new file mode 100644 index 000000000..f2610ad3d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qitemeditorfactory.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QITEMEDITORFACTORY_H +#define QITEMEDITORFACTORY_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qmetaobject.h> +#include <QtCore/qbytearray.h> +#include <QtCore/qhash.h> +#include <QtCore/qvariant.h> + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +class QWidget; + +class Q_WIDGETS_EXPORT QItemEditorCreatorBase +{ +public: + virtual ~QItemEditorCreatorBase(); + + virtual QWidget *createWidget(QWidget *parent) const = 0; + virtual QByteArray valuePropertyName() const = 0; +}; + +template <class T> +class QItemEditorCreator : public QItemEditorCreatorBase +{ +public: + inline explicit QItemEditorCreator(const QByteArray &valuePropertyName); + inline QWidget *createWidget(QWidget *parent) const { return new T(parent); } + inline QByteArray valuePropertyName() const { return propertyName; } + +private: + QByteArray propertyName; +}; + +template <class T> +class QStandardItemEditorCreator: public QItemEditorCreatorBase +{ +public: + inline QStandardItemEditorCreator() + : propertyName(T::staticMetaObject.userProperty().name()) + {} + inline QWidget *createWidget(QWidget *parent) const override { return new T(parent); } + inline QByteArray valuePropertyName() const override { return propertyName; } + +private: + QByteArray propertyName; +}; + + +template <class T> +Q_INLINE_TEMPLATE QItemEditorCreator<T>::QItemEditorCreator(const QByteArray &avaluePropertyName) + : propertyName(avaluePropertyName) {} + +class Q_WIDGETS_EXPORT QItemEditorFactory +{ +public: + inline QItemEditorFactory() {} + virtual ~QItemEditorFactory(); + + virtual QWidget *createEditor(int userType, QWidget *parent) const; + virtual QByteArray valuePropertyName(int userType) const; + + void registerEditor(int userType, QItemEditorCreatorBase *creator); + + static const QItemEditorFactory *defaultFactory(); + static void setDefaultFactory(QItemEditorFactory *factory); + +private: + QHash<int, QItemEditorCreatorBase *> creatorMap; +}; + +QT_END_NAMESPACE + +#endif // QITEMEDITORFACTORY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qkeyeventtransition.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qkeyeventtransition.h new file mode 100644 index 000000000..23ce3c40b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qkeyeventtransition.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QKEYEVENTTRANSITION_H +#define QKEYEVENTTRANSITION_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qeventtransition.h> + +QT_REQUIRE_CONFIG(qeventtransition); + +QT_BEGIN_NAMESPACE + +class QKeyEventTransitionPrivate; +class Q_WIDGETS_EXPORT QKeyEventTransition : public QEventTransition +{ + Q_OBJECT + Q_PROPERTY(int key READ key WRITE setKey) + Q_PROPERTY(Qt::KeyboardModifiers modifierMask READ modifierMask WRITE setModifierMask) +public: + QKeyEventTransition(QState *sourceState = Q_NULLPTR); + QKeyEventTransition(QObject *object, QEvent::Type type, int key, + QState *sourceState = Q_NULLPTR); + ~QKeyEventTransition(); + + int key() const; + void setKey(int key); + + Qt::KeyboardModifiers modifierMask() const; + void setModifierMask(Qt::KeyboardModifiers modifiers); + +protected: + void onTransition(QEvent *event) Q_DECL_OVERRIDE; + bool eventTest(QEvent *event) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QKeyEventTransition) + Q_DECLARE_PRIVATE(QKeyEventTransition) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qkeysequenceedit.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qkeysequenceedit.h new file mode 100644 index 000000000..d5b4b199c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qkeysequenceedit.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2013 Ivan Komissarov. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QKEYSEQUENCEEDIT_H +#define QKEYSEQUENCEEDIT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(keysequenceedit); + +QT_BEGIN_NAMESPACE + +class QKeySequenceEditPrivate; +class Q_WIDGETS_EXPORT QKeySequenceEdit : public QWidget +{ + Q_OBJECT + Q_PROPERTY(QKeySequence keySequence READ keySequence WRITE setKeySequence NOTIFY keySequenceChanged USER true) + +public: + explicit QKeySequenceEdit(QWidget *parent = Q_NULLPTR); + explicit QKeySequenceEdit(const QKeySequence &keySequence, QWidget *parent = Q_NULLPTR); + ~QKeySequenceEdit(); + + QKeySequence keySequence() const; + +public Q_SLOTS: + void setKeySequence(const QKeySequence &keySequence); + void clear(); + +Q_SIGNALS: + void editingFinished(); + void keySequenceChanged(const QKeySequence &keySequence); + +protected: + QKeySequenceEdit(QKeySequenceEditPrivate &d, QWidget *parent, Qt::WindowFlags f); + + bool event(QEvent *) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *) Q_DECL_OVERRIDE; + void keyReleaseEvent(QKeyEvent *) Q_DECL_OVERRIDE; + void timerEvent(QTimerEvent *) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QKeySequenceEdit) + Q_DECLARE_PRIVATE(QKeySequenceEdit) +}; + +QT_END_NAMESPACE + +#endif // QKEYSEQUENCEEDIT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qlabel.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlabel.h new file mode 100644 index 000000000..469254a14 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlabel.h @@ -0,0 +1,168 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLABEL_H +#define QLABEL_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qframe.h> + +QT_REQUIRE_CONFIG(label); + +QT_BEGIN_NAMESPACE + + +class QLabelPrivate; + +class Q_WIDGETS_EXPORT QLabel : public QFrame +{ + Q_OBJECT + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(Qt::TextFormat textFormat READ textFormat WRITE setTextFormat) + Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap) + Q_PROPERTY(bool scaledContents READ hasScaledContents WRITE setScaledContents) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) + Q_PROPERTY(bool wordWrap READ wordWrap WRITE setWordWrap) + Q_PROPERTY(int margin READ margin WRITE setMargin) + Q_PROPERTY(int indent READ indent WRITE setIndent) + Q_PROPERTY(bool openExternalLinks READ openExternalLinks WRITE setOpenExternalLinks) + Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags WRITE setTextInteractionFlags) + Q_PROPERTY(bool hasSelectedText READ hasSelectedText) + Q_PROPERTY(QString selectedText READ selectedText) + +public: + explicit QLabel(QWidget *parent=Q_NULLPTR, Qt::WindowFlags f=Qt::WindowFlags()); + explicit QLabel(const QString &text, QWidget *parent=Q_NULLPTR, Qt::WindowFlags f=Qt::WindowFlags()); + ~QLabel(); + + QString text() const; + const QPixmap *pixmap() const; +#ifndef QT_NO_PICTURE + const QPicture *picture() const; +#endif +#if QT_CONFIG(movie) + QMovie *movie() const; +#endif + + Qt::TextFormat textFormat() const; + void setTextFormat(Qt::TextFormat); + + Qt::Alignment alignment() const; + void setAlignment(Qt::Alignment); + + void setWordWrap(bool on); + bool wordWrap() const; + + int indent() const; + void setIndent(int); + + int margin() const; + void setMargin(int); + + bool hasScaledContents() const; + void setScaledContents(bool); + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; +#ifndef QT_NO_SHORTCUT + void setBuddy(QWidget *); + QWidget *buddy() const; +#endif + int heightForWidth(int) const Q_DECL_OVERRIDE; + + bool openExternalLinks() const; + void setOpenExternalLinks(bool open); + + void setTextInteractionFlags(Qt::TextInteractionFlags flags); + Qt::TextInteractionFlags textInteractionFlags() const; + + void setSelection(int, int); + bool hasSelectedText() const; + QString selectedText() const; + int selectionStart() const; + +public Q_SLOTS: + void setText(const QString &); + void setPixmap(const QPixmap &); +#ifndef QT_NO_PICTURE + void setPicture(const QPicture &); +#endif +#if QT_CONFIG(movie) + void setMovie(QMovie *movie); +#endif + void setNum(int); + void setNum(double); + void clear(); + +Q_SIGNALS: + void linkActivated(const QString& link); + void linkHovered(const QString& link); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *ev) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void changeEvent(QEvent *) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *ev) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *ev) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *ev) Q_DECL_OVERRIDE; +#ifndef QT_NO_CONTEXTMENU + void contextMenuEvent(QContextMenuEvent *ev) Q_DECL_OVERRIDE; +#endif // QT_NO_CONTEXTMENU + void focusInEvent(QFocusEvent *ev) Q_DECL_OVERRIDE; + void focusOutEvent(QFocusEvent *ev) Q_DECL_OVERRIDE; + bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE; + + +private: + Q_DISABLE_COPY(QLabel) + Q_DECLARE_PRIVATE(QLabel) +#if QT_CONFIG(movie) + Q_PRIVATE_SLOT(d_func(), void _q_movieUpdated(const QRect&)) + Q_PRIVATE_SLOT(d_func(), void _q_movieResized(const QSize&)) +#endif + Q_PRIVATE_SLOT(d_func(), void _q_linkHovered(const QString &)) + + friend class QTipLabel; + friend class QMessageBoxPrivate; + friend class QBalloonTip; +}; + +QT_END_NAMESPACE + +#endif // QLABEL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qlayout.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlayout.h new file mode 100644 index 000000000..2de12b4f9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlayout.h @@ -0,0 +1,171 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLAYOUT_H +#define QLAYOUT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtWidgets/qlayoutitem.h> +#include <QtWidgets/qsizepolicy.h> +#include <QtCore/qrect.h> +#include <QtCore/qmargins.h> + +#include <limits.h> + +QT_BEGIN_NAMESPACE + + +class QLayout; +class QSize; + + +class QLayoutPrivate; + +class Q_WIDGETS_EXPORT QLayout : public QObject, public QLayoutItem +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QLayout) + + Q_PROPERTY(int margin READ margin WRITE setMargin) + Q_PROPERTY(int spacing READ spacing WRITE setSpacing) + Q_PROPERTY(SizeConstraint sizeConstraint READ sizeConstraint WRITE setSizeConstraint) +public: + enum SizeConstraint { + SetDefaultConstraint, + SetNoConstraint, + SetMinimumSize, + SetFixedSize, + SetMaximumSize, + SetMinAndMaxSize + }; + Q_ENUM(SizeConstraint) + + QLayout(QWidget *parent); + QLayout(); + ~QLayout(); + + int margin() const; + int spacing() const; + + void setMargin(int); + void setSpacing(int); + + void setContentsMargins(int left, int top, int right, int bottom); + void setContentsMargins(const QMargins &margins); + void getContentsMargins(int *left, int *top, int *right, int *bottom) const; + QMargins contentsMargins() const; + QRect contentsRect() const; + + bool setAlignment(QWidget *w, Qt::Alignment alignment); + bool setAlignment(QLayout *l, Qt::Alignment alignment); + using QLayoutItem::setAlignment; + + void setSizeConstraint(SizeConstraint); + SizeConstraint sizeConstraint() const; + void setMenuBar(QWidget *w); + QWidget *menuBar() const; + + QWidget *parentWidget() const; + + void invalidate() Q_DECL_OVERRIDE; + QRect geometry() const Q_DECL_OVERRIDE; + bool activate(); + void update(); + + void addWidget(QWidget *w); + virtual void addItem(QLayoutItem *) = 0; + + void removeWidget(QWidget *w); + void removeItem(QLayoutItem *); + + Qt::Orientations expandingDirections() const Q_DECL_OVERRIDE; + QSize minimumSize() const Q_DECL_OVERRIDE; + QSize maximumSize() const Q_DECL_OVERRIDE; + virtual void setGeometry(const QRect&) Q_DECL_OVERRIDE; + virtual QLayoutItem *itemAt(int index) const = 0; + virtual QLayoutItem *takeAt(int index) = 0; + virtual int indexOf(QWidget *) const; + virtual int count() const = 0; + bool isEmpty() const Q_DECL_OVERRIDE; + QSizePolicy::ControlTypes controlTypes() const Q_DECL_OVERRIDE; + + // ### Qt 6 make this function virtual + QLayoutItem *replaceWidget(QWidget *from, QWidget *to, Qt::FindChildOptions options = Qt::FindChildrenRecursively); + + int totalHeightForWidth(int w) const; + QSize totalMinimumSize() const; + QSize totalMaximumSize() const; + QSize totalSizeHint() const; + QLayout *layout() Q_DECL_OVERRIDE; + + void setEnabled(bool); + bool isEnabled() const; + + + static QSize closestAcceptableSize(const QWidget *w, const QSize &s); + +protected: + void widgetEvent(QEvent *); + void childEvent(QChildEvent *e) Q_DECL_OVERRIDE; + void addChildLayout(QLayout *l); + void addChildWidget(QWidget *w); + bool adoptLayout(QLayout *layout); + + QRect alignmentRect(const QRect&) const; +protected: + QLayout(QLayoutPrivate &d, QLayout*, QWidget*); + +private: + Q_DISABLE_COPY(QLayout) + + static void activateRecursiveHelper(QLayoutItem *item); + + friend class QApplicationPrivate; + friend class QWidget; + +}; + +QT_END_NAMESPACE + +//### support old includes +#include <QtWidgets/qboxlayout.h> +#include <QtWidgets/qgridlayout.h> + +#endif // QLAYOUT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qlayoutitem.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlayoutitem.h new file mode 100644 index 000000000..059ff2d47 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlayoutitem.h @@ -0,0 +1,181 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLAYOUTITEM_H +#define QLAYOUTITEM_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qsizepolicy.h> +#include <QtCore/qrect.h> + +#include <limits.h> + +QT_BEGIN_NAMESPACE + + +static const Q_DECL_UNUSED int QLAYOUTSIZE_MAX = INT_MAX/256/16; + +class QLayout; +class QLayoutItem; +class QSpacerItem; +class QWidget; +class QSize; + +class Q_WIDGETS_EXPORT QLayoutItem +{ +public: + inline explicit QLayoutItem(Qt::Alignment alignment = Qt::Alignment()); + virtual ~QLayoutItem(); + virtual QSize sizeHint() const = 0; + virtual QSize minimumSize() const = 0; + virtual QSize maximumSize() const = 0; + virtual Qt::Orientations expandingDirections() const = 0; + virtual void setGeometry(const QRect&) = 0; + virtual QRect geometry() const = 0; + virtual bool isEmpty() const = 0; + virtual bool hasHeightForWidth() const; + virtual int heightForWidth(int) const; + virtual int minimumHeightForWidth(int) const; + virtual void invalidate(); + + virtual QWidget *widget(); + virtual QLayout *layout(); + virtual QSpacerItem *spacerItem(); + + Qt::Alignment alignment() const { return align; } + void setAlignment(Qt::Alignment a); + virtual QSizePolicy::ControlTypes controlTypes() const; + +protected: + Qt::Alignment align; +}; + +inline QLayoutItem::QLayoutItem(Qt::Alignment aalignment) + : align(aalignment) { } + +class Q_WIDGETS_EXPORT QSpacerItem : public QLayoutItem +{ +public: + QSpacerItem(int w, int h, + QSizePolicy::Policy hData = QSizePolicy::Minimum, + QSizePolicy::Policy vData = QSizePolicy::Minimum) + : width(w), height(h), sizeP(hData, vData) { } + ~QSpacerItem(); + + void changeSize(int w, int h, + QSizePolicy::Policy hData = QSizePolicy::Minimum, + QSizePolicy::Policy vData = QSizePolicy::Minimum); + QSize sizeHint() const override; + QSize minimumSize() const override; + QSize maximumSize() const override; + Qt::Orientations expandingDirections() const override; + bool isEmpty() const override; + void setGeometry(const QRect&) override; + QRect geometry() const override; + QSpacerItem *spacerItem() override; + QSizePolicy sizePolicy() const { return sizeP; } + +private: + int width; + int height; + QSizePolicy sizeP; + QRect rect; +}; + +class Q_WIDGETS_EXPORT QWidgetItem : public QLayoutItem +{ + Q_DISABLE_COPY(QWidgetItem) + +public: + explicit QWidgetItem(QWidget *w) : wid(w) { } + ~QWidgetItem(); + + QSize sizeHint() const override; + QSize minimumSize() const override; + QSize maximumSize() const override; + Qt::Orientations expandingDirections() const override; + bool isEmpty() const override; + void setGeometry(const QRect&) override; + QRect geometry() const override; + QWidget *widget() override; + + bool hasHeightForWidth() const override; + int heightForWidth(int) const override; + QSizePolicy::ControlTypes controlTypes() const override; +protected: + QWidget *wid; +}; + +class Q_WIDGETS_EXPORT QWidgetItemV2 : public QWidgetItem +{ +public: + explicit QWidgetItemV2(QWidget *widget); + ~QWidgetItemV2(); + + QSize sizeHint() const override; + QSize minimumSize() const override; + QSize maximumSize() const override; + int heightForWidth(int width) const override; + +private: + enum { Dirty = -123, HfwCacheMaxSize = 3 }; + + inline bool useSizeCache() const; + void updateCacheIfNecessary() const; + inline void invalidateSizeCache() { + q_cachedMinimumSize.setWidth(Dirty); + q_hfwCacheSize = 0; + } + + mutable QSize q_cachedMinimumSize; + mutable QSize q_cachedSizeHint; + mutable QSize q_cachedMaximumSize; + mutable QSize q_cachedHfws[HfwCacheMaxSize]; + mutable short q_firstCachedHfw; + mutable short q_hfwCacheSize; + void *d; + + friend class QWidgetPrivate; + + Q_DISABLE_COPY(QWidgetItemV2) +}; + +QT_END_NAMESPACE + +#endif // QLAYOUTITEM_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qlcdnumber.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlcdnumber.h new file mode 100644 index 000000000..28fd530e6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlcdnumber.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLCDNUMBER_H +#define QLCDNUMBER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qframe.h> + +QT_BEGIN_NAMESPACE + +QT_REQUIRE_CONFIG(lcdnumber); + +class QLCDNumberPrivate; +class Q_WIDGETS_EXPORT QLCDNumber : public QFrame // LCD number widget +{ + Q_OBJECT + Q_PROPERTY(bool smallDecimalPoint READ smallDecimalPoint WRITE setSmallDecimalPoint) + Q_PROPERTY(int digitCount READ digitCount WRITE setDigitCount) + Q_PROPERTY(Mode mode READ mode WRITE setMode) + Q_PROPERTY(SegmentStyle segmentStyle READ segmentStyle WRITE setSegmentStyle) + Q_PROPERTY(double value READ value WRITE display) + Q_PROPERTY(int intValue READ intValue WRITE display) + +public: + explicit QLCDNumber(QWidget* parent = Q_NULLPTR); + explicit QLCDNumber(uint numDigits, QWidget* parent = Q_NULLPTR); + ~QLCDNumber(); + + enum Mode { + Hex, Dec, Oct, Bin + }; + Q_ENUM(Mode) + enum SegmentStyle { + Outline, Filled, Flat + }; + Q_ENUM(SegmentStyle) + + bool smallDecimalPoint() const; + int digitCount() const; + void setDigitCount(int nDigits); + + bool checkOverflow(double num) const; + bool checkOverflow(int num) const; + + Mode mode() const; + void setMode(Mode); + + SegmentStyle segmentStyle() const; + void setSegmentStyle(SegmentStyle); + + double value() const; + int intValue() const; + + QSize sizeHint() const Q_DECL_OVERRIDE; + +public Q_SLOTS: + void display(const QString &str); + void display(int num); + void display(double num); + void setHexMode(); + void setDecMode(); + void setOctMode(); + void setBinMode(); + void setSmallDecimalPoint(bool); + +Q_SIGNALS: + void overflow(); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + +public: + +private: + Q_DISABLE_COPY(QLCDNumber) + Q_DECLARE_PRIVATE(QLCDNumber) +}; + +QT_END_NAMESPACE + +#endif // QLCDNUMBER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qlineedit.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlineedit.h new file mode 100644 index 000000000..08dd6f3b8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlineedit.h @@ -0,0 +1,266 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLINEEDIT_H +#define QLINEEDIT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qframe.h> +#include <QtGui/qtextcursor.h> +#include <QtCore/qstring.h> +#include <QtCore/qmargins.h> + +QT_REQUIRE_CONFIG(lineedit); + +QT_BEGIN_NAMESPACE + +class QValidator; +class QMenu; +class QLineEditPrivate; +class QCompleter; +class QStyleOptionFrame; +class QAbstractSpinBox; +class QDateTimeEdit; +class QIcon; +class QToolButton; + +class Q_WIDGETS_EXPORT QLineEdit : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(QString inputMask READ inputMask WRITE setInputMask) + Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged USER true) + Q_PROPERTY(int maxLength READ maxLength WRITE setMaxLength) + Q_PROPERTY(bool frame READ hasFrame WRITE setFrame) + Q_PROPERTY(EchoMode echoMode READ echoMode WRITE setEchoMode) + Q_PROPERTY(QString displayText READ displayText) + Q_PROPERTY(int cursorPosition READ cursorPosition WRITE setCursorPosition) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) + Q_PROPERTY(bool modified READ isModified WRITE setModified DESIGNABLE false) + Q_PROPERTY(bool hasSelectedText READ hasSelectedText) + Q_PROPERTY(QString selectedText READ selectedText) + Q_PROPERTY(bool dragEnabled READ dragEnabled WRITE setDragEnabled) + Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) + Q_PROPERTY(bool undoAvailable READ isUndoAvailable) + Q_PROPERTY(bool redoAvailable READ isRedoAvailable) + Q_PROPERTY(bool acceptableInput READ hasAcceptableInput) + Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText) + Q_PROPERTY(Qt::CursorMoveStyle cursorMoveStyle READ cursorMoveStyle WRITE setCursorMoveStyle) + Q_PROPERTY(bool clearButtonEnabled READ isClearButtonEnabled WRITE setClearButtonEnabled) +public: + enum ActionPosition { + LeadingPosition, + TrailingPosition + }; + Q_ENUM(ActionPosition) + + explicit QLineEdit(QWidget *parent = Q_NULLPTR); + explicit QLineEdit(const QString &, QWidget *parent = Q_NULLPTR); + ~QLineEdit(); + + QString text() const; + + QString displayText() const; + + QString placeholderText() const; + void setPlaceholderText(const QString &); + + int maxLength() const; + void setMaxLength(int); + + void setFrame(bool); + bool hasFrame() const; + + void setClearButtonEnabled(bool enable); + bool isClearButtonEnabled() const; + + enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit }; + Q_ENUM(EchoMode) + EchoMode echoMode() const; + void setEchoMode(EchoMode); + + bool isReadOnly() const; + void setReadOnly(bool); + +#ifndef QT_NO_VALIDATOR + void setValidator(const QValidator *); + const QValidator * validator() const; +#endif + +#if QT_CONFIG(completer) + void setCompleter(QCompleter *completer); + QCompleter *completer() const; +#endif + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + int cursorPosition() const; + void setCursorPosition(int); + int cursorPositionAt(const QPoint &pos); + + void setAlignment(Qt::Alignment flag); + Qt::Alignment alignment() const; + + void cursorForward(bool mark, int steps = 1); + void cursorBackward(bool mark, int steps = 1); + void cursorWordForward(bool mark); + void cursorWordBackward(bool mark); + void backspace(); + void del(); + void home(bool mark); + void end(bool mark); + + bool isModified() const; + void setModified(bool); + + void setSelection(int, int); + bool hasSelectedText() const; + QString selectedText() const; + int selectionStart() const; + + bool isUndoAvailable() const; + bool isRedoAvailable() const; + + void setDragEnabled(bool b); + bool dragEnabled() const; + + void setCursorMoveStyle(Qt::CursorMoveStyle style); + Qt::CursorMoveStyle cursorMoveStyle() const; + + QString inputMask() const; + void setInputMask(const QString &inputMask); + bool hasAcceptableInput() const; + + void setTextMargins(int left, int top, int right, int bottom); + void setTextMargins(const QMargins &margins); + void getTextMargins(int *left, int *top, int *right, int *bottom) const; + QMargins textMargins() const; + +#if QT_CONFIG(action) + using QWidget::addAction; + void addAction(QAction *action, ActionPosition position); + QAction *addAction(const QIcon &icon, ActionPosition position); +#endif + +public Q_SLOTS: + void setText(const QString &); + void clear(); + void selectAll(); + void undo(); + void redo(); +#ifndef QT_NO_CLIPBOARD + void cut(); + void copy() const; + void paste(); +#endif + +public: + void deselect(); + void insert(const QString &); +#ifndef QT_NO_CONTEXTMENU + QMenu *createStandardContextMenu(); +#endif + +Q_SIGNALS: + void textChanged(const QString &); + void textEdited(const QString &); + void cursorPositionChanged(int, int); + void returnPressed(); + void editingFinished(); + void selectionChanged(); + +protected: + void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *) Q_DECL_OVERRIDE; + void focusInEvent(QFocusEvent *) Q_DECL_OVERRIDE; + void focusOutEvent(QFocusEvent *) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; +#ifndef QT_NO_DRAGANDDROP + void dragEnterEvent(QDragEnterEvent *) Q_DECL_OVERRIDE; + void dragMoveEvent(QDragMoveEvent *e) Q_DECL_OVERRIDE; + void dragLeaveEvent(QDragLeaveEvent *e) Q_DECL_OVERRIDE; + void dropEvent(QDropEvent *) Q_DECL_OVERRIDE; +#endif + void changeEvent(QEvent *) Q_DECL_OVERRIDE; +#ifndef QT_NO_CONTEXTMENU + void contextMenuEvent(QContextMenuEvent *) Q_DECL_OVERRIDE; +#endif + + void inputMethodEvent(QInputMethodEvent *) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionFrame *option) const; +public: + QVariant inputMethodQuery(Qt::InputMethodQuery) const Q_DECL_OVERRIDE; + Q_INVOKABLE QVariant inputMethodQuery(Qt::InputMethodQuery property, QVariant argument) const; + bool event(QEvent *) Q_DECL_OVERRIDE; +protected: + QRect cursorRect() const; + +public: + +private: + friend class QAbstractSpinBox; + friend class QAccessibleLineEdit; + friend class QComboBox; +#ifdef QT_KEYPAD_NAVIGATION + friend class QDateTimeEdit; +#endif + Q_DISABLE_COPY(QLineEdit) + Q_DECLARE_PRIVATE(QLineEdit) + Q_PRIVATE_SLOT(d_func(), void _q_handleWindowActivate()) + Q_PRIVATE_SLOT(d_func(), void _q_textEdited(const QString &)) + Q_PRIVATE_SLOT(d_func(), void _q_cursorPositionChanged(int, int)) +#if QT_CONFIG(completer) + Q_PRIVATE_SLOT(d_func(), void _q_completionHighlighted(const QString &)) +#endif +#ifdef QT_KEYPAD_NAVIGATION + Q_PRIVATE_SLOT(d_func(), void _q_editFocusChange(bool)) +#endif + Q_PRIVATE_SLOT(d_func(), void _q_selectionChanged()) + Q_PRIVATE_SLOT(d_func(), void _q_updateNeeded(const QRect &)) + Q_PRIVATE_SLOT(d_func(), void _q_textChanged(const QString &)) + Q_PRIVATE_SLOT(d_func(), void _q_clearButtonClicked()) +}; + +QT_END_NAMESPACE + +#endif // QLINEEDIT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qlistview.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlistview.h new file mode 100644 index 000000000..66ec9b18b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlistview.h @@ -0,0 +1,199 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLISTVIEW_H +#define QLISTVIEW_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractitemview.h> + +QT_REQUIRE_CONFIG(listview); + +QT_BEGIN_NAMESPACE + +class QListViewPrivate; + +class Q_WIDGETS_EXPORT QListView : public QAbstractItemView +{ + Q_OBJECT + Q_PROPERTY(Movement movement READ movement WRITE setMovement) + Q_PROPERTY(Flow flow READ flow WRITE setFlow) + Q_PROPERTY(bool isWrapping READ isWrapping WRITE setWrapping) + Q_PROPERTY(ResizeMode resizeMode READ resizeMode WRITE setResizeMode) + Q_PROPERTY(LayoutMode layoutMode READ layoutMode WRITE setLayoutMode) + Q_PROPERTY(int spacing READ spacing WRITE setSpacing) + Q_PROPERTY(QSize gridSize READ gridSize WRITE setGridSize) + Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode) + Q_PROPERTY(int modelColumn READ modelColumn WRITE setModelColumn) + Q_PROPERTY(bool uniformItemSizes READ uniformItemSizes WRITE setUniformItemSizes) + Q_PROPERTY(int batchSize READ batchSize WRITE setBatchSize) + Q_PROPERTY(bool wordWrap READ wordWrap WRITE setWordWrap) + Q_PROPERTY(bool selectionRectVisible READ isSelectionRectVisible WRITE setSelectionRectVisible) + +public: + enum Movement { Static, Free, Snap }; + Q_ENUM(Movement) + enum Flow { LeftToRight, TopToBottom }; + Q_ENUM(Flow) + enum ResizeMode { Fixed, Adjust }; + Q_ENUM(ResizeMode) + enum LayoutMode { SinglePass, Batched }; + Q_ENUM(LayoutMode) + enum ViewMode { ListMode, IconMode }; + Q_ENUM(ViewMode) + + explicit QListView(QWidget *parent = Q_NULLPTR); + ~QListView(); + + void setMovement(Movement movement); + Movement movement() const; + + void setFlow(Flow flow); + Flow flow() const; + + void setWrapping(bool enable); + bool isWrapping() const; + + void setResizeMode(ResizeMode mode); + ResizeMode resizeMode() const; + + void setLayoutMode(LayoutMode mode); + LayoutMode layoutMode() const; + + void setSpacing(int space); + int spacing() const; + + void setBatchSize(int batchSize); + int batchSize() const; + + void setGridSize(const QSize &size); + QSize gridSize() const; + + void setViewMode(ViewMode mode); + ViewMode viewMode() const; + + void clearPropertyFlags(); + + bool isRowHidden(int row) const; + void setRowHidden(int row, bool hide); + + void setModelColumn(int column); + int modelColumn() const; + + void setUniformItemSizes(bool enable); + bool uniformItemSizes() const; + + void setWordWrap(bool on); + bool wordWrap() const; + + void setSelectionRectVisible(bool show); + bool isSelectionRectVisible() const; + + QRect visualRect(const QModelIndex &index) const Q_DECL_OVERRIDE; + void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) Q_DECL_OVERRIDE; + QModelIndex indexAt(const QPoint &p) const Q_DECL_OVERRIDE; + + void doItemsLayout() Q_DECL_OVERRIDE; + void reset() Q_DECL_OVERRIDE; + void setRootIndex(const QModelIndex &index) Q_DECL_OVERRIDE; + +Q_SIGNALS: + void indexesMoved(const QModelIndexList &indexes); + +protected: + QListView(QListViewPrivate &, QWidget *parent = Q_NULLPTR); + + bool event(QEvent *e) Q_DECL_OVERRIDE; + + void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE; + + void resizeContents(int width, int height); + QSize contentsSize() const; + + void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int>()) Q_DECL_OVERRIDE; + void rowsInserted(const QModelIndex &parent, int start, int end) Q_DECL_OVERRIDE; + void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) Q_DECL_OVERRIDE; + + void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; +#if QT_CONFIG(wheelevent) + void wheelEvent(QWheelEvent *e) Q_DECL_OVERRIDE; +#endif + + void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; +#ifndef QT_NO_DRAGANDDROP + void dragMoveEvent(QDragMoveEvent *e) Q_DECL_OVERRIDE; + void dragLeaveEvent(QDragLeaveEvent *e) Q_DECL_OVERRIDE; + void dropEvent(QDropEvent *e) Q_DECL_OVERRIDE; + void startDrag(Qt::DropActions supportedActions) Q_DECL_OVERRIDE; +#endif // QT_NO_DRAGANDDROP + + QStyleOptionViewItem viewOptions() const Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + + int horizontalOffset() const Q_DECL_OVERRIDE; + int verticalOffset() const Q_DECL_OVERRIDE; + QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) Q_DECL_OVERRIDE; + QRect rectForIndex(const QModelIndex &index) const; + void setPositionForIndex(const QPoint &position, const QModelIndex &index); + + void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) Q_DECL_OVERRIDE; + QRegion visualRegionForSelection(const QItemSelection &selection) const Q_DECL_OVERRIDE; + QModelIndexList selectedIndexes() const Q_DECL_OVERRIDE; + + void updateGeometries() Q_DECL_OVERRIDE; + + bool isIndexHidden(const QModelIndex &index) const Q_DECL_OVERRIDE; + + void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) Q_DECL_OVERRIDE; + void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) Q_DECL_OVERRIDE; + + QSize viewportSizeHint() const Q_DECL_OVERRIDE; + +private: + int visualIndex(const QModelIndex &index) const; + + Q_DECLARE_PRIVATE(QListView) + Q_DISABLE_COPY(QListView) +}; + +QT_END_NAMESPACE + +#endif // QLISTVIEW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qlistwidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlistwidget.h new file mode 100644 index 000000000..8471645fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qlistwidget.h @@ -0,0 +1,333 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLISTWIDGET_H +#define QLISTWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qlistview.h> +#include <QtCore/qvariant.h> +#include <QtCore/qvector.h> +#include <QtCore/qitemselectionmodel.h> + +QT_REQUIRE_CONFIG(listwidget); + +QT_BEGIN_NAMESPACE + +class QListWidget; +class QListModel; +class QWidgetItemData; +class QListWidgetItemPrivate; + +class Q_WIDGETS_EXPORT QListWidgetItem +{ + friend class QListModel; + friend class QListWidget; +public: + enum ItemType { Type = 0, UserType = 1000 }; + explicit QListWidgetItem(QListWidget *view = Q_NULLPTR, int type = Type); + explicit QListWidgetItem(const QString &text, QListWidget *view = Q_NULLPTR, int type = Type); + explicit QListWidgetItem(const QIcon &icon, const QString &text, + QListWidget *view = Q_NULLPTR, int type = Type); + QListWidgetItem(const QListWidgetItem &other); + virtual ~QListWidgetItem(); + + virtual QListWidgetItem *clone() const; + + inline QListWidget *listWidget() const { return view; } + + inline void setSelected(bool select); + inline bool isSelected() const; + + inline void setHidden(bool hide); + inline bool isHidden() const; + + inline Qt::ItemFlags flags() const { return itemFlags; } + void setFlags(Qt::ItemFlags flags); + + inline QString text() const + { return data(Qt::DisplayRole).toString(); } + inline void setText(const QString &text); + + inline QIcon icon() const + { return qvariant_cast<QIcon>(data(Qt::DecorationRole)); } + inline void setIcon(const QIcon &icon); + + inline QString statusTip() const + { return data(Qt::StatusTipRole).toString(); } + inline void setStatusTip(const QString &statusTip); + +#ifndef QT_NO_TOOLTIP + inline QString toolTip() const + { return data(Qt::ToolTipRole).toString(); } + inline void setToolTip(const QString &toolTip); +#endif + +#if QT_CONFIG(whatsthis) + inline QString whatsThis() const + { return data(Qt::WhatsThisRole).toString(); } + inline void setWhatsThis(const QString &whatsThis); +#endif + + inline QFont font() const + { return qvariant_cast<QFont>(data(Qt::FontRole)); } + inline void setFont(const QFont &font); + + inline int textAlignment() const + { return data(Qt::TextAlignmentRole).toInt(); } + inline void setTextAlignment(int alignment) + { setData(Qt::TextAlignmentRole, alignment); } + + inline QColor backgroundColor() const + { return qvariant_cast<QColor>(data(Qt::BackgroundColorRole)); } + virtual void setBackgroundColor(const QColor &color) + { setData(Qt::BackgroundColorRole, color); } + + inline QBrush background() const + { return qvariant_cast<QBrush>(data(Qt::BackgroundRole)); } + inline void setBackground(const QBrush &brush) + { setData(Qt::BackgroundRole, brush); } + + inline QColor textColor() const + { return qvariant_cast<QColor>(data(Qt::TextColorRole)); } + inline void setTextColor(const QColor &color) + { setData(Qt::TextColorRole, color); } + + inline QBrush foreground() const + { return qvariant_cast<QBrush>(data(Qt::ForegroundRole)); } + inline void setForeground(const QBrush &brush) + { setData(Qt::ForegroundRole, brush); } + + inline Qt::CheckState checkState() const + { return static_cast<Qt::CheckState>(data(Qt::CheckStateRole).toInt()); } + inline void setCheckState(Qt::CheckState state) + { setData(Qt::CheckStateRole, static_cast<int>(state)); } + + inline QSize sizeHint() const + { return qvariant_cast<QSize>(data(Qt::SizeHintRole)); } + inline void setSizeHint(const QSize &size) + { setData(Qt::SizeHintRole, size); } + + virtual QVariant data(int role) const; + virtual void setData(int role, const QVariant &value); + + virtual bool operator<(const QListWidgetItem &other) const; + +#ifndef QT_NO_DATASTREAM + virtual void read(QDataStream &in); + virtual void write(QDataStream &out) const; +#endif + QListWidgetItem &operator=(const QListWidgetItem &other); + + inline int type() const { return rtti; } + +private: + int rtti; + QVector<void *> dummy; + QListWidget *view; + QListWidgetItemPrivate *d; + Qt::ItemFlags itemFlags; +}; + +inline void QListWidgetItem::setText(const QString &atext) +{ setData(Qt::DisplayRole, atext); } + +inline void QListWidgetItem::setIcon(const QIcon &aicon) +{ setData(Qt::DecorationRole, aicon); } + +inline void QListWidgetItem::setStatusTip(const QString &astatusTip) +{ setData(Qt::StatusTipRole, astatusTip); } + +#ifndef QT_NO_TOOLTIP +inline void QListWidgetItem::setToolTip(const QString &atoolTip) +{ setData(Qt::ToolTipRole, atoolTip); } +#endif + +#if QT_CONFIG(whatsthis) +inline void QListWidgetItem::setWhatsThis(const QString &awhatsThis) +{ setData(Qt::WhatsThisRole, awhatsThis); } +#endif + +inline void QListWidgetItem::setFont(const QFont &afont) +{ setData(Qt::FontRole, afont); } + +#ifndef QT_NO_DATASTREAM +Q_WIDGETS_EXPORT QDataStream &operator<<(QDataStream &out, const QListWidgetItem &item); +Q_WIDGETS_EXPORT QDataStream &operator>>(QDataStream &in, QListWidgetItem &item); +#endif + +class QListWidgetPrivate; + +class Q_WIDGETS_EXPORT QListWidget : public QListView +{ + Q_OBJECT + Q_PROPERTY(int count READ count) + Q_PROPERTY(int currentRow READ currentRow WRITE setCurrentRow NOTIFY currentRowChanged USER true) + Q_PROPERTY(bool sortingEnabled READ isSortingEnabled WRITE setSortingEnabled) + + friend class QListWidgetItem; + friend class QListModel; +public: + explicit QListWidget(QWidget *parent = Q_NULLPTR); + ~QListWidget(); + + void setSelectionModel(QItemSelectionModel *selectionModel) Q_DECL_OVERRIDE; + + QListWidgetItem *item(int row) const; + int row(const QListWidgetItem *item) const; + void insertItem(int row, QListWidgetItem *item); + void insertItem(int row, const QString &label); + void insertItems(int row, const QStringList &labels); + inline void addItem(const QString &label) { insertItem(count(), label); } + inline void addItem(QListWidgetItem *item); + inline void addItems(const QStringList &labels) { insertItems(count(), labels); } + QListWidgetItem *takeItem(int row); + int count() const; + + QListWidgetItem *currentItem() const; + void setCurrentItem(QListWidgetItem *item); + void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command); + + int currentRow() const; + void setCurrentRow(int row); + void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command); + + QListWidgetItem *itemAt(const QPoint &p) const; + inline QListWidgetItem *itemAt(int x, int y) const; + QRect visualItemRect(const QListWidgetItem *item) const; + + void sortItems(Qt::SortOrder order = Qt::AscendingOrder); + void setSortingEnabled(bool enable); + bool isSortingEnabled() const; + + void editItem(QListWidgetItem *item); + void openPersistentEditor(QListWidgetItem *item); + void closePersistentEditor(QListWidgetItem *item); + + QWidget *itemWidget(QListWidgetItem *item) const; + void setItemWidget(QListWidgetItem *item, QWidget *widget); + inline void removeItemWidget(QListWidgetItem *item); + + bool isItemSelected(const QListWidgetItem *item) const; + void setItemSelected(const QListWidgetItem *item, bool select); + QList<QListWidgetItem*> selectedItems() const; + QList<QListWidgetItem*> findItems(const QString &text, Qt::MatchFlags flags) const; + + bool isItemHidden(const QListWidgetItem *item) const; + void setItemHidden(const QListWidgetItem *item, bool hide); +#if QT_CONFIG(draganddrop) + void dropEvent(QDropEvent *event) Q_DECL_OVERRIDE; +#endif +public Q_SLOTS: + void scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible); + void clear(); + +Q_SIGNALS: + void itemPressed(QListWidgetItem *item); + void itemClicked(QListWidgetItem *item); + void itemDoubleClicked(QListWidgetItem *item); + void itemActivated(QListWidgetItem *item); + void itemEntered(QListWidgetItem *item); + void itemChanged(QListWidgetItem *item); + + void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous); + void currentTextChanged(const QString ¤tText); + void currentRowChanged(int currentRow); + + void itemSelectionChanged(); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + virtual QStringList mimeTypes() const; +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + virtual QMimeData *mimeData(const QList<QListWidgetItem *> &items) const; +#else + virtual QMimeData *mimeData(const QList<QListWidgetItem*> items) const; +#endif +#ifndef QT_NO_DRAGANDDROP + virtual bool dropMimeData(int index, const QMimeData *data, Qt::DropAction action); + virtual Qt::DropActions supportedDropActions() const; +#endif + QList<QListWidgetItem*> items(const QMimeData *data) const; + + QModelIndex indexFromItem(QListWidgetItem *item) const; + QListWidgetItem *itemFromIndex(const QModelIndex &index) const; + +private: + void setModel(QAbstractItemModel *model) Q_DECL_OVERRIDE; + Qt::SortOrder sortOrder() const; + + Q_DECLARE_PRIVATE(QListWidget) + Q_DISABLE_COPY(QListWidget) + + Q_PRIVATE_SLOT(d_func(), void _q_emitItemPressed(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemClicked(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemDoubleClicked(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemActivated(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemEntered(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemChanged(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitCurrentItemChanged(const QModelIndex &previous, const QModelIndex ¤t)) + Q_PRIVATE_SLOT(d_func(), void _q_sort()) + Q_PRIVATE_SLOT(d_func(), void _q_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)) +}; + +inline void QListWidget::removeItemWidget(QListWidgetItem *aItem) +{ setItemWidget(aItem, Q_NULLPTR); } + +inline void QListWidget::addItem(QListWidgetItem *aitem) +{ insertItem(count(), aitem); } + +inline QListWidgetItem *QListWidget::itemAt(int ax, int ay) const +{ return itemAt(QPoint(ax, ay)); } + +inline void QListWidgetItem::setSelected(bool aselect) +{ if (view) view->setItemSelected(this, aselect); } + +inline bool QListWidgetItem::isSelected() const +{ return (view ? view->isItemSelected(this) : false); } + +inline void QListWidgetItem::setHidden(bool ahide) +{ if (view) view->setItemHidden(this, ahide); } + +inline bool QListWidgetItem::isHidden() const +{ return (view ? view->isItemHidden(this) : false); } + +QT_END_NAMESPACE + +#endif // QLISTWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qmaccocoaviewcontainer_mac.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmaccocoaviewcontainer_mac.h new file mode 100644 index 000000000..d926ef856 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmaccocoaviewcontainer_mac.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCOCOAVIEWCONTAINER_H +#define QCOCOAVIEWCONTAINER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/QWidget> + +Q_FORWARD_DECLARE_OBJC_CLASS(NSView); + +QT_BEGIN_NAMESPACE + +class QMacCocoaViewContainerPrivate; +class Q_WIDGETS_EXPORT QMacCocoaViewContainer : public QWidget +{ + Q_OBJECT +public: + QMacCocoaViewContainer(NSView *cocoaViewToWrap, QWidget *parent = Q_NULLPTR); + virtual ~QMacCocoaViewContainer(); + + void setCocoaView(NSView *view); + NSView *cocoaView() const; + +private: + Q_DECLARE_PRIVATE(QMacCocoaViewContainer) +}; + +QT_END_NAMESPACE + +#endif // QCOCOAVIEWCONTAINER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qmacnativewidget_mac.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmacnativewidget_mac.h new file mode 100644 index 000000000..a8faffd6b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmacnativewidget_mac.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMACNATIVEWIDGET_H +#define QMACNATIVEWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/QWidget> + +Q_FORWARD_DECLARE_OBJC_CLASS(NSView); + +QT_BEGIN_NAMESPACE + +class Q_WIDGETS_EXPORT QMacNativeWidget : public QWidget +{ + Q_OBJECT +public: + QMacNativeWidget(NSView *parentView = Q_NULLPTR); + ~QMacNativeWidget(); + + QSize sizeHint() const override; + NSView *nativeView() const; + +protected: + bool event(QEvent *ev) override; +}; + +QT_END_NAMESPACE + +#endif // QMACNATIVEWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qmainwindow.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmainwindow.h new file mode 100644 index 000000000..50d840cf6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmainwindow.h @@ -0,0 +1,219 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDYNAMICMAINWINDOW_H +#define QDYNAMICMAINWINDOW_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> +#if QT_CONFIG(tabwidget) +#include <QtWidgets/qtabwidget.h> +#endif + +QT_REQUIRE_CONFIG(mainwindow); + +QT_BEGIN_NAMESPACE + +class QDockWidget; +class QMainWindowPrivate; +class QMenuBar; +class QStatusBar; +class QToolBar; +class QMenu; + +class Q_WIDGETS_EXPORT QMainWindow : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) + Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle) +#if QT_CONFIG(dockwidget) + Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated) +#if QT_CONFIG(tabbar) + Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode) +#endif // QT_CONFIG(tabbar) +#if QT_CONFIG(tabwidget) + Q_PROPERTY(QTabWidget::TabShape tabShape READ tabShape WRITE setTabShape) +#endif // QT_CONFIG(tabwidget) + Q_PROPERTY(bool dockNestingEnabled READ isDockNestingEnabled WRITE setDockNestingEnabled) +#endif // QT_CONFIG(dockwidget) + Q_PROPERTY(DockOptions dockOptions READ dockOptions WRITE setDockOptions) +#ifndef QT_NO_TOOLBAR + Q_PROPERTY(bool unifiedTitleAndToolBarOnMac READ unifiedTitleAndToolBarOnMac WRITE setUnifiedTitleAndToolBarOnMac) +#endif + +public: + enum DockOption { + AnimatedDocks = 0x01, + AllowNestedDocks = 0x02, + AllowTabbedDocks = 0x04, + ForceTabbedDocks = 0x08, // implies AllowTabbedDocks, !AllowNestedDocks + VerticalTabs = 0x10, // implies AllowTabbedDocks + GroupedDragging = 0x20 // implies AllowTabbedDocks + }; + Q_ENUM(DockOption) + Q_DECLARE_FLAGS(DockOptions, DockOption) + Q_FLAG(DockOptions) + + explicit QMainWindow(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()); + ~QMainWindow(); + + QSize iconSize() const; + void setIconSize(const QSize &iconSize); + + Qt::ToolButtonStyle toolButtonStyle() const; + void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle); + +#if QT_CONFIG(dockwidget) + bool isAnimated() const; + bool isDockNestingEnabled() const; +#endif + +#if QT_CONFIG(tabbar) + bool documentMode() const; + void setDocumentMode(bool enabled); +#endif + +#if QT_CONFIG(tabwidget) + QTabWidget::TabShape tabShape() const; + void setTabShape(QTabWidget::TabShape tabShape); + QTabWidget::TabPosition tabPosition(Qt::DockWidgetArea area) const; + void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition); +#endif // QT_CONFIG(tabwidget) + + void setDockOptions(DockOptions options); + DockOptions dockOptions() const; + + bool isSeparator(const QPoint &pos) const; + +#if QT_CONFIG(menubar) + QMenuBar *menuBar() const; + void setMenuBar(QMenuBar *menubar); + + QWidget *menuWidget() const; + void setMenuWidget(QWidget *menubar); +#endif + +#if QT_CONFIG(statusbar) + QStatusBar *statusBar() const; + void setStatusBar(QStatusBar *statusbar); +#endif + + QWidget *centralWidget() const; + void setCentralWidget(QWidget *widget); + + QWidget *takeCentralWidget(); + +#if QT_CONFIG(dockwidget) + void setCorner(Qt::Corner corner, Qt::DockWidgetArea area); + Qt::DockWidgetArea corner(Qt::Corner corner) const; +#endif + +#ifndef QT_NO_TOOLBAR + void addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea); + void insertToolBarBreak(QToolBar *before); + + void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar); + void addToolBar(QToolBar *toolbar); + QToolBar *addToolBar(const QString &title); + void insertToolBar(QToolBar *before, QToolBar *toolbar); + void removeToolBar(QToolBar *toolbar); + void removeToolBarBreak(QToolBar *before); + + bool unifiedTitleAndToolBarOnMac() const; + + Qt::ToolBarArea toolBarArea(QToolBar *toolbar) const; + bool toolBarBreak(QToolBar *toolbar) const; +#endif +#if QT_CONFIG(dockwidget) + void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget); + void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, + Qt::Orientation orientation); + void splitDockWidget(QDockWidget *after, QDockWidget *dockwidget, + Qt::Orientation orientation); + void tabifyDockWidget(QDockWidget *first, QDockWidget *second); + QList<QDockWidget*> tabifiedDockWidgets(QDockWidget *dockwidget) const; + void removeDockWidget(QDockWidget *dockwidget); + bool restoreDockWidget(QDockWidget *dockwidget); + + Qt::DockWidgetArea dockWidgetArea(QDockWidget *dockwidget) const; + + void resizeDocks(const QList<QDockWidget *> &docks, + const QList<int> &sizes, Qt::Orientation orientation); +#endif // QT_CONFIG(dockwidget) + + QByteArray saveState(int version = 0) const; + bool restoreState(const QByteArray &state, int version = 0); + +#if QT_CONFIG(menu) + virtual QMenu *createPopupMenu(); +#endif + +public Q_SLOTS: +#if QT_CONFIG(dockwidget) + void setAnimated(bool enabled); + void setDockNestingEnabled(bool enabled); +#endif +#ifndef QT_NO_TOOLBAR + void setUnifiedTitleAndToolBarOnMac(bool set); +#endif + +Q_SIGNALS: + void iconSizeChanged(const QSize &iconSize); + void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle); +#if QT_CONFIG(dockwidget) + void tabifiedDockWidgetActivated(QDockWidget *dockWidget); +#endif + +protected: +#ifndef QT_NO_CONTEXTMENU + void contextMenuEvent(QContextMenuEvent *event) Q_DECL_OVERRIDE; +#endif + bool event(QEvent *event) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QMainWindow) + Q_DISABLE_COPY(QMainWindow) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QMainWindow::DockOptions) + +QT_END_NAMESPACE + +#endif // QDYNAMICMAINWINDOW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qmdiarea.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmdiarea.h new file mode 100644 index 000000000..05deb9e21 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmdiarea.h @@ -0,0 +1,173 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMDIAREA_H +#define QMDIAREA_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractscrollarea.h> +#if QT_CONFIG(tabwidget) +#include <QtWidgets/qtabwidget.h> +#endif + +QT_REQUIRE_CONFIG(mdiarea); + +QT_BEGIN_NAMESPACE + +class QMdiSubWindow; + +class QMdiAreaPrivate; +class Q_WIDGETS_EXPORT QMdiArea : public QAbstractScrollArea +{ + Q_OBJECT + Q_PROPERTY(QBrush background READ background WRITE setBackground) + Q_PROPERTY(WindowOrder activationOrder READ activationOrder WRITE setActivationOrder) + Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode) +#if QT_CONFIG(tabbar) + Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode) + Q_PROPERTY(bool tabsClosable READ tabsClosable WRITE setTabsClosable) + Q_PROPERTY(bool tabsMovable READ tabsMovable WRITE setTabsMovable) +#endif +#if QT_CONFIG(tabwidget) + Q_PROPERTY(QTabWidget::TabShape tabShape READ tabShape WRITE setTabShape) + Q_PROPERTY(QTabWidget::TabPosition tabPosition READ tabPosition WRITE setTabPosition) +#endif +public: + enum AreaOption { + DontMaximizeSubWindowOnActivation = 0x1 + }; + Q_DECLARE_FLAGS(AreaOptions, AreaOption) + + enum WindowOrder { + CreationOrder, + StackingOrder, + ActivationHistoryOrder + }; + Q_ENUM(WindowOrder) + + enum ViewMode { + SubWindowView, + TabbedView + }; + Q_ENUM(ViewMode) + + QMdiArea(QWidget *parent = Q_NULLPTR); + ~QMdiArea(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + QMdiSubWindow *currentSubWindow() const; + QMdiSubWindow *activeSubWindow() const; + QList<QMdiSubWindow *> subWindowList(WindowOrder order = CreationOrder) const; + + QMdiSubWindow *addSubWindow(QWidget *widget, Qt::WindowFlags flags = Qt::WindowFlags()); + void removeSubWindow(QWidget *widget); + + QBrush background() const; + void setBackground(const QBrush &background); + + WindowOrder activationOrder() const; + void setActivationOrder(WindowOrder order); + + void setOption(AreaOption option, bool on = true); + bool testOption(AreaOption opton) const; + + void setViewMode(ViewMode mode); + ViewMode viewMode() const; + +#if QT_CONFIG(tabbar) + bool documentMode() const; + void setDocumentMode(bool enabled); + + void setTabsClosable(bool closable); + bool tabsClosable() const; + + void setTabsMovable(bool movable); + bool tabsMovable() const; +#endif +#if QT_CONFIG(tabwidget) + void setTabShape(QTabWidget::TabShape shape); + QTabWidget::TabShape tabShape() const; + + void setTabPosition(QTabWidget::TabPosition position); + QTabWidget::TabPosition tabPosition() const; +#endif + +Q_SIGNALS: + void subWindowActivated(QMdiSubWindow *); + +public Q_SLOTS: + void setActiveSubWindow(QMdiSubWindow *window); + void tileSubWindows(); + void cascadeSubWindows(); + void closeActiveSubWindow(); + void closeAllSubWindows(); + void activateNextSubWindow(); + void activatePreviousSubWindow(); + +protected Q_SLOTS: + void setupViewport(QWidget *viewport) Q_DECL_OVERRIDE; + +protected: + bool event(QEvent *event) Q_DECL_OVERRIDE; + bool eventFilter(QObject *object, QEvent *event) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *paintEvent) Q_DECL_OVERRIDE; + void childEvent(QChildEvent *childEvent) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *resizeEvent) Q_DECL_OVERRIDE; + void timerEvent(QTimerEvent *timerEvent) Q_DECL_OVERRIDE; + void showEvent(QShowEvent *showEvent) Q_DECL_OVERRIDE; + bool viewportEvent(QEvent *event) Q_DECL_OVERRIDE; + void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QMdiArea) + Q_DECLARE_PRIVATE(QMdiArea) + Q_PRIVATE_SLOT(d_func(), void _q_deactivateAllWindows()) + Q_PRIVATE_SLOT(d_func(), void _q_processWindowStateChanged(Qt::WindowStates, Qt::WindowStates)) + Q_PRIVATE_SLOT(d_func(), void _q_currentTabChanged(int)) + Q_PRIVATE_SLOT(d_func(), void _q_closeTab(int)) + Q_PRIVATE_SLOT(d_func(), void _q_moveTab(int, int)) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QMdiArea::AreaOptions) + +QT_END_NAMESPACE + +#endif // QMDIAREA_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qmdisubwindow.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmdisubwindow.h new file mode 100644 index 000000000..adaafa352 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmdisubwindow.h @@ -0,0 +1,150 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMDISUBWINDOW_H +#define QMDISUBWINDOW_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(mdiarea); + +QT_BEGIN_NAMESPACE + +class QMenu; +class QMdiArea; + +namespace QMdi { class ControlContainer; } +class QMdiSubWindowPrivate; +class Q_WIDGETS_EXPORT QMdiSubWindow : public QWidget +{ + Q_OBJECT + Q_PROPERTY(int keyboardSingleStep READ keyboardSingleStep WRITE setKeyboardSingleStep) + Q_PROPERTY(int keyboardPageStep READ keyboardPageStep WRITE setKeyboardPageStep) +public: + enum SubWindowOption { + AllowOutsideAreaHorizontally = 0x1, // internal + AllowOutsideAreaVertically = 0x2, // internal + RubberBandResize = 0x4, + RubberBandMove = 0x8 + }; + Q_DECLARE_FLAGS(SubWindowOptions, SubWindowOption) + + QMdiSubWindow(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()); + ~QMdiSubWindow(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + void setWidget(QWidget *widget); + QWidget *widget() const; + + QWidget *maximizedButtonsWidget() const; // internal + QWidget *maximizedSystemMenuIconWidget() const; // internal + + bool isShaded() const; + + void setOption(SubWindowOption option, bool on = true); + bool testOption(SubWindowOption) const; + + void setKeyboardSingleStep(int step); + int keyboardSingleStep() const; + + void setKeyboardPageStep(int step); + int keyboardPageStep() const; + +#if QT_CONFIG(menu) + void setSystemMenu(QMenu *systemMenu); + QMenu *systemMenu() const; +#endif + + QMdiArea *mdiArea() const; + +Q_SIGNALS: + void windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState); + void aboutToActivate(); + +public Q_SLOTS: +#if QT_CONFIG(menu) + void showSystemMenu(); +#endif + void showShaded(); + +protected: + bool eventFilter(QObject *object, QEvent *event) Q_DECL_OVERRIDE; + bool event(QEvent *event) Q_DECL_OVERRIDE; + void showEvent(QShowEvent *showEvent) Q_DECL_OVERRIDE; + void hideEvent(QHideEvent *hideEvent) Q_DECL_OVERRIDE; + void changeEvent(QEvent *changeEvent) Q_DECL_OVERRIDE; + void closeEvent(QCloseEvent *closeEvent) Q_DECL_OVERRIDE; + void leaveEvent(QEvent *leaveEvent) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *resizeEvent) Q_DECL_OVERRIDE; + void timerEvent(QTimerEvent *timerEvent) Q_DECL_OVERRIDE; + void moveEvent(QMoveEvent *moveEvent) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *paintEvent) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *mouseEvent) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QMouseEvent *mouseEvent) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *mouseEvent) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *mouseEvent) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *keyEvent) Q_DECL_OVERRIDE; +#ifndef QT_NO_CONTEXTMENU + void contextMenuEvent(QContextMenuEvent *contextMenuEvent) Q_DECL_OVERRIDE; +#endif + void focusInEvent(QFocusEvent *focusInEvent) Q_DECL_OVERRIDE; + void focusOutEvent(QFocusEvent *focusOutEvent) Q_DECL_OVERRIDE; + void childEvent(QChildEvent *childEvent) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QMdiSubWindow) + Q_DECLARE_PRIVATE(QMdiSubWindow) + Q_PRIVATE_SLOT(d_func(), void _q_updateStaysOnTopHint()) + Q_PRIVATE_SLOT(d_func(), void _q_enterInteractiveMode()) + Q_PRIVATE_SLOT(d_func(), void _q_processFocusChanged(QWidget *, QWidget *)) + friend class QMdiAreaPrivate; +#if QT_CONFIG(tabbar) + friend class QMdiAreaTabBar; +#endif + friend class QMdi::ControlContainer; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QMdiSubWindow::SubWindowOptions) + +QT_END_NAMESPACE + +#endif // QMDISUBWINDOW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qmenu.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmenu.h new file mode 100644 index 000000000..0b5ed579c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmenu.h @@ -0,0 +1,284 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMENU_H +#define QMENU_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> +#include <QtCore/qstring.h> +#include <QtGui/qicon.h> +#include <QtWidgets/qaction.h> + +#ifdef Q_OS_OSX +Q_FORWARD_DECLARE_OBJC_CLASS(NSMenu); +#endif + +QT_REQUIRE_CONFIG(menu); + +QT_BEGIN_NAMESPACE + +class QMenuPrivate; +class QStyleOptionMenuItem; +class QPlatformMenu; + +class Q_WIDGETS_EXPORT QMenu : public QWidget +{ +private: + Q_OBJECT + Q_DECLARE_PRIVATE(QMenu) + + Q_PROPERTY(bool tearOffEnabled READ isTearOffEnabled WRITE setTearOffEnabled) + 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 = Q_NULLPTR); + explicit QMenu(const QString &title, QWidget *parent = Q_NULLPTR); + ~QMenu(); + + using QWidget::addAction; + QAction *addAction(const QString &text); + QAction *addAction(const QIcon &icon, const QString &text); + QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0); + QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0); + +#ifdef Q_QDOC + template<typename PointerToMemberFunction> + QAction *addAction(const QString &text, const QObject *receiver, PointerToMemberFunction method, const QKeySequence &shortcut = 0); + template<typename Functor> + QAction *addAction(const QString &text, Functor functor, const QKeySequence &shortcut = 0); + template<typename Functor> + QAction *addAction(const QString &text, const QObject *context, Functor functor, const QKeySequence &shortcut = 0); + template<typename PointerToMemberFunction> + QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, PointerToMemberFunction method, const QKeySequence &shortcut = 0); + template<typename Functor> + QAction *addAction(const QIcon &icon, const QString &text, Functor functor, const QKeySequence &shortcut = 0); + template<typename Functor> + QAction *addAction(const QIcon &icon, const QString &text, const QObject *context, Functor functor, const QKeySequence &shortcut = 0); +#else + // addAction(QString): Connect to a QObject slot / functor or function pointer (with context) + template<class Obj, typename Func1> + inline typename std::enable_if<!std::is_same<const char*, Func1>::value + && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type + addAction(const QString &text, const Obj *object, Func1 slot, const QKeySequence &shortcut = 0) + { + QAction *result = addAction(text); +#ifdef QT_NO_SHORTCUT + Q_UNUSED(shortcut) +#else + result->setShortcut(shortcut); +#endif + connect(result, &QAction::triggered, object, slot); + return result; + } + // addAction(QString): Connect to a functor or function pointer (without context) + template <typename Func1> + inline QAction *addAction(const QString &text, Func1 slot, const QKeySequence &shortcut = 0) + { + QAction *result = addAction(text); +#ifdef QT_NO_SHORTCUT + Q_UNUSED(shortcut) +#else + result->setShortcut(shortcut); +#endif + connect(result, &QAction::triggered, slot); + return result; + } + // addAction(QIcon, QString): Connect to a QObject slot / functor or function pointer (with context) + template<class Obj, typename Func1> + inline typename std::enable_if<!std::is_same<const char*, Func1>::value + && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type + addAction(const QIcon &actionIcon, const QString &text, const Obj *object, Func1 slot, const QKeySequence &shortcut = 0) + { + QAction *result = addAction(actionIcon, text); +#ifdef QT_NO_SHORTCUT + Q_UNUSED(shortcut) +#else + result->setShortcut(shortcut); +#endif + connect(result, &QAction::triggered, object, slot); + return result; + } + // addAction(QIcon, QString): Connect to a functor or function pointer (without context) + template <typename Func1> + inline QAction *addAction(const QIcon &actionIcon, const QString &text, Func1 slot, const QKeySequence &shortcut = 0) + { + QAction *result = addAction(actionIcon, text); +#ifdef QT_NO_SHORTCUT + Q_UNUSED(shortcut) +#else + result->setShortcut(shortcut); +#endif + connect(result, &QAction::triggered, slot); + return result; + } +#endif // !Q_QDOC + + QAction *addMenu(QMenu *menu); + QMenu *addMenu(const QString &title); + QMenu *addMenu(const QIcon &icon, const QString &title); + + 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(); + + void setTearOffEnabled(bool); + bool isTearOffEnabled() const; + + bool isTearOffMenuVisible() const; + void showTearOffMenu(); + void showTearOffMenu(const QPoint &pos); + void hideTearOffMenu(); + + void setDefaultAction(QAction *); + QAction *defaultAction() const; + + void setActiveAction(QAction *act); + QAction *activeAction() const; + + void popup(const QPoint &pos, QAction *at = Q_NULLPTR); + QAction *exec(); + QAction *exec(const QPoint &pos, QAction *at = Q_NULLPTR); + +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + static QAction *exec(const QList<QAction *> &actions, const QPoint &pos, QAction *at = Q_NULLPTR, QWidget *parent = Q_NULLPTR); +#else + static QAction *exec(QList<QAction*> actions, const QPoint &pos, QAction *at = Q_NULLPTR, QWidget *parent = Q_NULLPTR); +#endif + + QSize sizeHint() const Q_DECL_OVERRIDE; + + QRect actionGeometry(QAction *) const; + QAction *actionAt(const QPoint &) const; + + QAction *menuAction() const; + + QString title() const; + void setTitle(const QString &title); + + QIcon icon() const; + void setIcon(const QIcon &icon); + + void setNoReplayFor(QWidget *widget); + QPlatformMenu *platformMenu(); + void setPlatformMenu(QPlatformMenu *platformMenu); + +#ifdef Q_OS_OSX + NSMenu* toNSMenu(); + void setAsDockMenu(); +#endif + + bool separatorsCollapsible() const; + void setSeparatorsCollapsible(bool collapse); + + bool toolTipsVisible() const; + void setToolTipsVisible(bool visible); + +Q_SIGNALS: + void aboutToShow(); + void aboutToHide(); + void triggered(QAction *action); + void hovered(QAction *action); + +protected: + int columnCount() const; + + void changeEvent(QEvent *) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *) Q_DECL_OVERRIDE; +#if QT_CONFIG(wheelevent) + void wheelEvent(QWheelEvent *) Q_DECL_OVERRIDE; +#endif + void enterEvent(QEvent *) Q_DECL_OVERRIDE; + void leaveEvent(QEvent *) Q_DECL_OVERRIDE; + void hideEvent(QHideEvent *) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void actionEvent(QActionEvent *) Q_DECL_OVERRIDE; + void timerEvent(QTimerEvent *) Q_DECL_OVERRIDE; + bool event(QEvent *) Q_DECL_OVERRIDE; + bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const; + +private Q_SLOTS: + void internalDelayedPopup(); + +private: + Q_PRIVATE_SLOT(d_func(), void _q_actionTriggered()) + Q_PRIVATE_SLOT(d_func(), void _q_actionHovered()) + Q_PRIVATE_SLOT(d_func(), void _q_overrideMenuActionDestroyed()) + Q_PRIVATE_SLOT(d_func(), void _q_platformMenuAboutToShow()) + +protected: + QMenu(QMenuPrivate &dd, QWidget* parent = Q_NULLPTR); + +private: + Q_DISABLE_COPY(QMenu) + + friend class QMenuBar; + friend class QMenuBarPrivate; + friend class QTornOffMenu; + friend class QComboBox; + friend class QAction; + friend class QToolButtonPrivate; + friend void qt_mac_emit_menuSignals(QMenu *menu, bool show); + friend void qt_mac_menu_emit_hovered(QMenu *menu, QAction *action); +}; + +#ifdef Q_OS_OSX +// ### Qt 4 compatibility; remove in Qt 6 +inline QT_DEPRECATED void qt_mac_set_dock_menu(QMenu *menu) { menu->setAsDockMenu(); } +#endif + +QT_END_NAMESPACE + +#endif // QMENU_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qmenubar.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmenubar.h new file mode 100644 index 000000000..be70f4ea4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmenubar.h @@ -0,0 +1,144 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMENUBAR_H +#define QMENUBAR_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qmenu.h> + +QT_REQUIRE_CONFIG(menubar); + +QT_BEGIN_NAMESPACE + +class QMenuBarPrivate; +class QStyleOptionMenuItem; +class QWindowsStyle; +class QPlatformMenuBar; + +class Q_WIDGETS_EXPORT QMenuBar : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(bool defaultUp READ isDefaultUp WRITE setDefaultUp) + Q_PROPERTY(bool nativeMenuBar READ isNativeMenuBar WRITE setNativeMenuBar) + +public: + explicit QMenuBar(QWidget *parent = Q_NULLPTR); + ~QMenuBar(); + + using QWidget::addAction; + QAction *addAction(const QString &text); + QAction *addAction(const QString &text, const QObject *receiver, const char* member); + + QAction *addMenu(QMenu *menu); + QMenu *addMenu(const QString &title); + QMenu *addMenu(const QIcon &icon, const QString &title); + + + QAction *addSeparator(); + QAction *insertSeparator(QAction *before); + + QAction *insertMenu(QAction *before, QMenu *menu); + + void clear(); + + QAction *activeAction() const; + void setActiveAction(QAction *action); + + void setDefaultUp(bool); + bool isDefaultUp() const; + + QSize sizeHint() const override; + QSize minimumSizeHint() const override; + int heightForWidth(int) const override; + + QRect actionGeometry(QAction *) const; + QAction *actionAt(const QPoint &) const; + + void setCornerWidget(QWidget *w, Qt::Corner corner = Qt::TopRightCorner); + QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const; + +#ifdef Q_OS_OSX + NSMenu* toNSMenu(); +#endif + + bool isNativeMenuBar() const; + void setNativeMenuBar(bool nativeMenuBar); + QPlatformMenuBar *platformMenuBar(); +public Q_SLOTS: + void setVisible(bool visible) override; + +Q_SIGNALS: + void triggered(QAction *action); + void hovered(QAction *action); + +protected: + void changeEvent(QEvent *) override; + void keyPressEvent(QKeyEvent *) override; + void mouseReleaseEvent(QMouseEvent *) override; + void mousePressEvent(QMouseEvent *) override; + void mouseMoveEvent(QMouseEvent *) override; + void leaveEvent(QEvent *) override; + void paintEvent(QPaintEvent *) override; + void resizeEvent(QResizeEvent *) override; + void actionEvent(QActionEvent *) override; + void focusOutEvent(QFocusEvent *) override; + void focusInEvent(QFocusEvent *) override; + void timerEvent(QTimerEvent *) override; + bool eventFilter(QObject *, QEvent *) override; + bool event(QEvent *) override; + void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const; + +private: + Q_DECLARE_PRIVATE(QMenuBar) + Q_DISABLE_COPY(QMenuBar) + Q_PRIVATE_SLOT(d_func(), void _q_actionTriggered()) + Q_PRIVATE_SLOT(d_func(), void _q_actionHovered()) + Q_PRIVATE_SLOT(d_func(), void _q_internalShortcutActivated(int)) + Q_PRIVATE_SLOT(d_func(), void _q_updateLayout()) + + friend class QMenu; + friend class QMenuPrivate; + friend class QWindowsStyle; +}; + +QT_END_NAMESPACE + +#endif // QMENUBAR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qmessagebox.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmessagebox.h new file mode 100644 index 000000000..fd7d7936b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmessagebox.h @@ -0,0 +1,327 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMESSAGEBOX_H +#define QMESSAGEBOX_H + +#include <QtWidgets/qtwidgetsglobal.h> + +#include <QtWidgets/qdialog.h> + +QT_REQUIRE_CONFIG(messagebox); + +QT_BEGIN_NAMESPACE + +class QLabel; +class QMessageBoxPrivate; +class QAbstractButton; +class QCheckBox; + +class Q_WIDGETS_EXPORT QMessageBox : public QDialog +{ + Q_OBJECT + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(Icon icon READ icon WRITE setIcon) + Q_PROPERTY(QPixmap iconPixmap READ iconPixmap WRITE setIconPixmap) + Q_PROPERTY(Qt::TextFormat textFormat READ textFormat WRITE setTextFormat) + Q_PROPERTY(StandardButtons standardButtons READ standardButtons WRITE setStandardButtons) +#if QT_CONFIG(textedit) + 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 { + // keep this in sync with QMessageDialogOptions::Icon + NoIcon = 0, + Information = 1, + Warning = 2, + Critical = 3, + Question = 4 + }; + Q_ENUM(Icon) + + enum ButtonRole { + // keep this in sync with QDialogButtonBox::ButtonRole and QPlatformDialogHelper::ButtonRole + InvalidRole = -1, + AcceptRole, + RejectRole, + DestructiveRole, + ActionRole, + HelpRole, + YesRole, + NoRole, + ResetRole, + ApplyRole, + + NRoles + }; + + enum StandardButton { + // keep this in sync with QDialogButtonBox::StandardButton and QPlatformDialogHelper::StandardButton + NoButton = 0x00000000, + Ok = 0x00000400, + Save = 0x00000800, + SaveAll = 0x00001000, + Open = 0x00002000, + Yes = 0x00004000, + YesToAll = 0x00008000, + No = 0x00010000, + NoToAll = 0x00020000, + Abort = 0x00040000, + Retry = 0x00080000, + Ignore = 0x00100000, + Close = 0x00200000, + Cancel = 0x00400000, + Discard = 0x00800000, + Help = 0x01000000, + Apply = 0x02000000, + Reset = 0x04000000, + RestoreDefaults = 0x08000000, + + FirstButton = Ok, // internal + LastButton = RestoreDefaults, // internal + + YesAll = YesToAll, // obsolete + NoAll = NoToAll, // obsolete + + Default = 0x00000100, // obsolete + Escape = 0x00000200, // obsolete + FlagMask = 0x00000300, // obsolete + ButtonMask = ~FlagMask // obsolete + }; + typedef StandardButton Button; // obsolete + + Q_DECLARE_FLAGS(StandardButtons, StandardButton) + Q_FLAG(StandardButtons) + + explicit QMessageBox(QWidget *parent = Q_NULLPTR); + QMessageBox(Icon icon, const QString &title, const QString &text, + StandardButtons buttons = NoButton, QWidget *parent = Q_NULLPTR, + Qt::WindowFlags flags = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint); + ~QMessageBox(); + + void addButton(QAbstractButton *button, ButtonRole role); + QPushButton *addButton(const QString &text, ButtonRole role); + QPushButton *addButton(StandardButton button); + void removeButton(QAbstractButton *button); + + using QDialog::open; + void open(QObject *receiver, const char *member); + + QList<QAbstractButton *> buttons() const; + ButtonRole buttonRole(QAbstractButton *button) const; + + void setStandardButtons(StandardButtons buttons); + StandardButtons standardButtons() const; + StandardButton standardButton(QAbstractButton *button) const; + QAbstractButton *button(StandardButton which) const; + + QPushButton *defaultButton() const; + void setDefaultButton(QPushButton *button); + void setDefaultButton(StandardButton button); + + QAbstractButton *escapeButton() const; + void setEscapeButton(QAbstractButton *button); + void setEscapeButton(StandardButton button); + + QAbstractButton *clickedButton() const; + + QString text() const; + void setText(const QString &text); + + Icon icon() const; + void setIcon(Icon); + + QPixmap iconPixmap() const; + void setIconPixmap(const QPixmap &pixmap); + + Qt::TextFormat textFormat() const; + void setTextFormat(Qt::TextFormat format); + + void setTextInteractionFlags(Qt::TextInteractionFlags flags); + Qt::TextInteractionFlags textInteractionFlags() const; + + void setCheckBox(QCheckBox *cb); + QCheckBox* checkBox() const; + + static StandardButton information(QWidget *parent, const QString &title, + const QString &text, StandardButtons buttons = Ok, + StandardButton defaultButton = NoButton); + static StandardButton question(QWidget *parent, const QString &title, + const QString &text, StandardButtons buttons = StandardButtons(Yes | No), + StandardButton defaultButton = NoButton); + static StandardButton warning(QWidget *parent, const QString &title, + const QString &text, StandardButtons buttons = Ok, + StandardButton defaultButton = NoButton); + static StandardButton critical(QWidget *parent, const QString &title, + const QString &text, StandardButtons buttons = Ok, + StandardButton defaultButton = NoButton); + static void about(QWidget *parent, const QString &title, const QString &text); + static void aboutQt(QWidget *parent, const QString &title = QString()); + + // the following functions are obsolete: + + QMessageBox(const QString &title, const QString &text, Icon icon, + int button0, int button1, int button2, + QWidget *parent = Q_NULLPTR, + Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint); + + static int information(QWidget *parent, const QString &title, + const QString& text, + int button0, int button1 = 0, int button2 = 0); + static int information(QWidget *parent, const QString &title, + const QString& text, + const QString& button0Text, + const QString& button1Text = QString(), + const QString& button2Text = QString(), + int defaultButtonNumber = 0, + int escapeButtonNumber = -1); + inline static StandardButton information(QWidget *parent, const QString &title, + const QString& text, + StandardButton button0, StandardButton button1 = NoButton) + { return information(parent, title, text, StandardButtons(button0), button1); } + + static int question(QWidget *parent, const QString &title, + const QString& text, + int button0, int button1 = 0, int button2 = 0); + static int question(QWidget *parent, const QString &title, + const QString& text, + const QString& button0Text, + const QString& button1Text = QString(), + const QString& button2Text = QString(), + int defaultButtonNumber = 0, + int escapeButtonNumber = -1); + inline static int question(QWidget *parent, const QString &title, + const QString& text, + StandardButton button0, StandardButton button1) + { return question(parent, title, text, StandardButtons(button0), button1); } + + static int warning(QWidget *parent, const QString &title, + const QString& text, + int button0, int button1, int button2 = 0); + static int warning(QWidget *parent, const QString &title, + const QString& text, + const QString& button0Text, + const QString& button1Text = QString(), + const QString& button2Text = QString(), + int defaultButtonNumber = 0, + int escapeButtonNumber = -1); + inline static int warning(QWidget *parent, const QString &title, + const QString& text, + StandardButton button0, StandardButton button1) + { return warning(parent, title, text, StandardButtons(button0), button1); } + + static int critical(QWidget *parent, const QString &title, + const QString& text, + int button0, int button1, int button2 = 0); + static int critical(QWidget *parent, const QString &title, + const QString& text, + const QString& button0Text, + const QString& button1Text = QString(), + const QString& button2Text = QString(), + int defaultButtonNumber = 0, + int escapeButtonNumber = -1); + inline static int critical(QWidget *parent, const QString &title, + const QString& text, + StandardButton button0, StandardButton button1) + { return critical(parent, title, text, StandardButtons(button0), button1); } + + QString buttonText(int button) const; + void setButtonText(int button, const QString &text); + + QString informativeText() const; + void setInformativeText(const QString &text); + +#if QT_CONFIG(textedit) + QString detailedText() const; + void setDetailedText(const QString &text); +#endif + + void setWindowTitle(const QString &title); + void setWindowModality(Qt::WindowModality windowModality); + + + static QPixmap standardIcon(Icon icon); + +Q_SIGNALS: + void buttonClicked(QAbstractButton *button); + +#ifdef Q_QDOC +public Q_SLOTS: + int exec(); +#endif + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; + void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; + void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; + void changeEvent(QEvent *event) Q_DECL_OVERRIDE; + +private: + Q_PRIVATE_SLOT(d_func(), void _q_buttonClicked(QAbstractButton *)) + Q_PRIVATE_SLOT(d_func(), void _q_clicked(QPlatformDialogHelper::StandardButton, QPlatformDialogHelper::ButtonRole)) + + Q_DISABLE_COPY(QMessageBox) + Q_DECLARE_PRIVATE(QMessageBox) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QMessageBox::StandardButtons) + +#define QT_REQUIRE_VERSION(argc, argv, str) { QString s = QString::fromLatin1(str);\ +QString sq = QString::fromLatin1(qVersion()); \ +if ((sq.section(QChar::fromLatin1('.'),0,0).toInt()<<16)+\ +(sq.section(QChar::fromLatin1('.'),1,1).toInt()<<8)+\ +sq.section(QChar::fromLatin1('.'),2,2).toInt()<(s.section(QChar::fromLatin1('.'),0,0).toInt()<<16)+\ +(s.section(QChar::fromLatin1('.'),1,1).toInt()<<8)+\ +s.section(QChar::fromLatin1('.'),2,2).toInt()) { \ +if (!qApp){ \ + new QApplication(argc,argv); \ +} \ +QString s = QApplication::tr("Executable '%1' requires Qt "\ + "%2, found Qt %3.").arg(qAppName()).arg(QString::fromLatin1(\ +str)).arg(QString::fromLatin1(qVersion())); QMessageBox::critical(0, QApplication::tr(\ +"Incompatible Qt Library Error"), s, QMessageBox::Abort, 0); qFatal("%s", s.toLatin1().data()); }} + +QT_END_NAMESPACE + +#endif // QMESSAGEBOX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qmouseeventtransition.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmouseeventtransition.h new file mode 100644 index 000000000..3f40224d8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qmouseeventtransition.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMOUSEEVENTTRANSITION_H +#define QMOUSEEVENTTRANSITION_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qeventtransition.h> + +QT_REQUIRE_CONFIG(qeventtransition); + +QT_BEGIN_NAMESPACE + +class QMouseEventTransitionPrivate; +class QPainterPath; +class Q_WIDGETS_EXPORT QMouseEventTransition : public QEventTransition +{ + Q_OBJECT + Q_PROPERTY(Qt::MouseButton button READ button WRITE setButton) + Q_PROPERTY(Qt::KeyboardModifiers modifierMask READ modifierMask WRITE setModifierMask) +public: + QMouseEventTransition(QState *sourceState = Q_NULLPTR); + QMouseEventTransition(QObject *object, QEvent::Type type, + Qt::MouseButton button, QState *sourceState = Q_NULLPTR); + ~QMouseEventTransition(); + + Qt::MouseButton button() const; + void setButton(Qt::MouseButton button); + + Qt::KeyboardModifiers modifierMask() const; + void setModifierMask(Qt::KeyboardModifiers modifiers); + + QPainterPath hitTestPath() const; + void setHitTestPath(const QPainterPath &path); + +protected: + void onTransition(QEvent *event) Q_DECL_OVERRIDE; + bool eventTest(QEvent *event) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QMouseEventTransition) + Q_DECLARE_PRIVATE(QMouseEventTransition) +}; + +QT_END_NAMESPACE + +#endif diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qopenglwidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qopenglwidget.h new file mode 100644 index 000000000..b60d79bed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qopenglwidget.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLWIDGET_H +#define QOPENGLWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> + +#ifndef QT_NO_OPENGL + +#include <QtWidgets/QWidget> +#include <QtGui/QSurfaceFormat> +#include <QtGui/qopengl.h> + +QT_BEGIN_NAMESPACE + +class QOpenGLWidgetPrivate; + +class Q_WIDGETS_EXPORT QOpenGLWidget : public QWidget +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QOpenGLWidget) + +public: + enum UpdateBehavior { + NoPartialUpdate, + PartialUpdate + }; + + explicit QOpenGLWidget(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); + ~QOpenGLWidget(); + + void setUpdateBehavior(UpdateBehavior updateBehavior); + UpdateBehavior updateBehavior() const; + + void setFormat(const QSurfaceFormat &format); + QSurfaceFormat format() const; + + bool isValid() const; + + void makeCurrent(); + void doneCurrent(); + + QOpenGLContext *context() const; + GLuint defaultFramebufferObject() const; + + QImage grabFramebuffer(); + +Q_SIGNALS: + void aboutToCompose(); + void frameSwapped(); + void aboutToResize(); + void resized(); + +protected: + virtual void initializeGL(); + virtual void resizeGL(int w, int h); + virtual void paintGL(); + + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; + bool event(QEvent *e) Q_DECL_OVERRIDE; + + int metric(QPaintDevice::PaintDeviceMetric metric) const Q_DECL_OVERRIDE; + QPaintDevice *redirected(QPoint *p) const Q_DECL_OVERRIDE; + QPaintEngine *paintEngine() const Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QOpenGLWidget) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif // QOPENGLWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qplaintextedit.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qplaintextedit.h new file mode 100644 index 000000000..29d610a12 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qplaintextedit.h @@ -0,0 +1,331 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLAINTEXTEDIT_H +#define QPLAINTEXTEDIT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qtextedit.h> + +#include <QtWidgets/qabstractscrollarea.h> +#include <QtGui/qtextdocument.h> +#include <QtGui/qtextoption.h> +#include <QtGui/qtextcursor.h> +#include <QtGui/qtextformat.h> +#include <QtGui/qabstracttextdocumentlayout.h> + +QT_REQUIRE_CONFIG(textedit); + +QT_BEGIN_NAMESPACE + +class QStyleSheet; +class QTextDocument; +class QMenu; +class QPlainTextEditPrivate; +class QMimeData; +class QPagedPaintDevice; + +class Q_WIDGETS_EXPORT QPlainTextEdit : public QAbstractScrollArea +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPlainTextEdit) + Q_PROPERTY(bool tabChangesFocus READ tabChangesFocus WRITE setTabChangesFocus) + Q_PROPERTY(QString documentTitle READ documentTitle WRITE setDocumentTitle) + Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled) + Q_PROPERTY(LineWrapMode lineWrapMode READ lineWrapMode WRITE setLineWrapMode) + QDOC_PROPERTY(QTextOption::WrapMode wordWrapMode READ wordWrapMode WRITE setWordWrapMode) + Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) + Q_PROPERTY(QString plainText READ toPlainText WRITE setPlainText NOTIFY textChanged USER true) + Q_PROPERTY(bool overwriteMode READ overwriteMode WRITE setOverwriteMode) + Q_PROPERTY(int tabStopWidth READ tabStopWidth WRITE setTabStopWidth) + Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth) + Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags WRITE setTextInteractionFlags) + Q_PROPERTY(int blockCount READ blockCount) + Q_PROPERTY(int maximumBlockCount READ maximumBlockCount WRITE setMaximumBlockCount) + Q_PROPERTY(bool backgroundVisible READ backgroundVisible WRITE setBackgroundVisible) + Q_PROPERTY(bool centerOnScroll READ centerOnScroll WRITE setCenterOnScroll) + Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText) +public: + enum LineWrapMode { + NoWrap, + WidgetWidth + }; + Q_ENUM(LineWrapMode) + + explicit QPlainTextEdit(QWidget *parent = Q_NULLPTR); + explicit QPlainTextEdit(const QString &text, QWidget *parent = Q_NULLPTR); + virtual ~QPlainTextEdit(); + + void setDocument(QTextDocument *document); + QTextDocument *document() const; + + void setPlaceholderText(const QString &placeholderText); + QString placeholderText() const; + + void setTextCursor(const QTextCursor &cursor); + QTextCursor textCursor() const; + + bool isReadOnly() const; + void setReadOnly(bool ro); + + void setTextInteractionFlags(Qt::TextInteractionFlags flags); + Qt::TextInteractionFlags textInteractionFlags() const; + + void mergeCurrentCharFormat(const QTextCharFormat &modifier); + void setCurrentCharFormat(const QTextCharFormat &format); + QTextCharFormat currentCharFormat() const; + + bool tabChangesFocus() const; + void setTabChangesFocus(bool b); + + inline void setDocumentTitle(const QString &title) + { document()->setMetaInformation(QTextDocument::DocumentTitle, title); } + inline QString documentTitle() const + { return document()->metaInformation(QTextDocument::DocumentTitle); } + + inline bool isUndoRedoEnabled() const + { return document()->isUndoRedoEnabled(); } + inline void setUndoRedoEnabled(bool enable) + { document()->setUndoRedoEnabled(enable); } + + inline void setMaximumBlockCount(int maximum) + { document()->setMaximumBlockCount(maximum); } + inline int maximumBlockCount() const + { return document()->maximumBlockCount(); } + + + LineWrapMode lineWrapMode() const; + void setLineWrapMode(LineWrapMode mode); + + QTextOption::WrapMode wordWrapMode() const; + void setWordWrapMode(QTextOption::WrapMode policy); + + void setBackgroundVisible(bool visible); + bool backgroundVisible() const; + + void setCenterOnScroll(bool enabled); + bool centerOnScroll() const; + + bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); +#ifndef QT_NO_REGEXP + bool find(const QRegExp &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); +#endif + + inline QString toPlainText() const + { return document()->toPlainText(); } + + void ensureCursorVisible(); + + virtual QVariant loadResource(int type, const QUrl &name); +#ifndef QT_NO_CONTEXTMENU + QMenu *createStandardContextMenu(); + QMenu *createStandardContextMenu(const QPoint &position); +#endif + + QTextCursor cursorForPosition(const QPoint &pos) const; + QRect cursorRect(const QTextCursor &cursor) const; + QRect cursorRect() const; + + QString anchorAt(const QPoint &pos) const; + + bool overwriteMode() const; + void setOverwriteMode(bool overwrite); + + int tabStopWidth() const; + void setTabStopWidth(int width); + + int cursorWidth() const; + void setCursorWidth(int width); + + void setExtraSelections(const QList<QTextEdit::ExtraSelection> &selections); + QList<QTextEdit::ExtraSelection> extraSelections() const; + + void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); + + bool canPaste() const; + + void print(QPagedPaintDevice *printer) const; + + int blockCount() const; + QVariant inputMethodQuery(Qt::InputMethodQuery property) const Q_DECL_OVERRIDE; + Q_INVOKABLE QVariant inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const; + +public Q_SLOTS: + + void setPlainText(const QString &text); + +#ifndef QT_NO_CLIPBOARD + void cut(); + void copy(); + void paste(); +#endif + + void undo(); + void redo(); + + void clear(); + void selectAll(); + + void insertPlainText(const QString &text); + + void appendPlainText(const QString &text); + void appendHtml(const QString &html); + + void centerCursor(); + + void zoomIn(int range = 1); + void zoomOut(int range = 1); + +Q_SIGNALS: + void textChanged(); + void undoAvailable(bool b); + void redoAvailable(bool b); + void copyAvailable(bool b); + void selectionChanged(); + void cursorPositionChanged(); + + void updateRequest(const QRect &rect, int dy); + void blockCountChanged(int newBlockCount); + void modificationChanged(bool); + +protected: + virtual bool event(QEvent *e) Q_DECL_OVERRIDE; + virtual void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE; + virtual void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + virtual void keyReleaseEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + virtual void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; + virtual void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + virtual void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + virtual void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + virtual void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + virtual void mouseDoubleClickEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + virtual bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE; +#ifndef QT_NO_CONTEXTMENU + virtual void contextMenuEvent(QContextMenuEvent *e) Q_DECL_OVERRIDE; +#endif +#ifndef QT_NO_DRAGANDDROP + virtual void dragEnterEvent(QDragEnterEvent *e) Q_DECL_OVERRIDE; + virtual void dragLeaveEvent(QDragLeaveEvent *e) Q_DECL_OVERRIDE; + virtual void dragMoveEvent(QDragMoveEvent *e) Q_DECL_OVERRIDE; + virtual void dropEvent(QDropEvent *e) Q_DECL_OVERRIDE; +#endif + virtual void focusInEvent(QFocusEvent *e) Q_DECL_OVERRIDE; + virtual void focusOutEvent(QFocusEvent *e) Q_DECL_OVERRIDE; + virtual void showEvent(QShowEvent *) Q_DECL_OVERRIDE; + virtual void changeEvent(QEvent *e) Q_DECL_OVERRIDE; +#if QT_CONFIG(wheelevent) + virtual void wheelEvent(QWheelEvent *e) Q_DECL_OVERRIDE; +#endif + + virtual QMimeData *createMimeDataFromSelection() const; + virtual bool canInsertFromMimeData(const QMimeData *source) const; + virtual void insertFromMimeData(const QMimeData *source); + + virtual void inputMethodEvent(QInputMethodEvent *) Q_DECL_OVERRIDE; + + QPlainTextEdit(QPlainTextEditPrivate &dd, QWidget *parent); + + virtual void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE; + virtual void doSetTextCursor(const QTextCursor &cursor); + + QTextBlock firstVisibleBlock() const; + QPointF contentOffset() const; + QRectF blockBoundingRect(const QTextBlock &block) const; + QRectF blockBoundingGeometry(const QTextBlock &block) const; + QAbstractTextDocumentLayout::PaintContext getPaintContext() const; + + void zoomInF(float range); + +private: + Q_DISABLE_COPY(QPlainTextEdit) + Q_PRIVATE_SLOT(d_func(), void _q_repaintContents(const QRectF &r)) + Q_PRIVATE_SLOT(d_func(), void _q_adjustScrollbars()) + Q_PRIVATE_SLOT(d_func(), void _q_verticalScrollbarActionTriggered(int)) + Q_PRIVATE_SLOT(d_func(), void _q_cursorPositionChanged()) + + friend class QPlainTextEditControl; +}; + + +class QPlainTextDocumentLayoutPrivate; +class Q_WIDGETS_EXPORT QPlainTextDocumentLayout : public QAbstractTextDocumentLayout +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QPlainTextDocumentLayout) + Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth) + +public: + QPlainTextDocumentLayout(QTextDocument *document); + ~QPlainTextDocumentLayout(); + + void draw(QPainter *, const PaintContext &) Q_DECL_OVERRIDE; + int hitTest(const QPointF &, Qt::HitTestAccuracy ) const Q_DECL_OVERRIDE; + + int pageCount() const Q_DECL_OVERRIDE; + QSizeF documentSize() const Q_DECL_OVERRIDE; + + QRectF frameBoundingRect(QTextFrame *) const Q_DECL_OVERRIDE; + QRectF blockBoundingRect(const QTextBlock &block) const Q_DECL_OVERRIDE; + + void ensureBlockLayout(const QTextBlock &block) const; + + void setCursorWidth(int width); + int cursorWidth() const; + + void requestUpdate(); + +protected: + void documentChanged(int from, int /*charsRemoved*/, int charsAdded) Q_DECL_OVERRIDE; + + +private: + void setTextWidth(qreal newWidth); + qreal textWidth() const; + void layoutBlock(const QTextBlock &block); + qreal blockWidth(const QTextBlock &block); + + QPlainTextDocumentLayoutPrivate *priv() const; + + friend class QPlainTextEdit; + friend class QPlainTextEditPrivate; +}; + +QT_END_NAMESPACE + +#endif // QPLAINTEXTEDIT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qprogressbar.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qprogressbar.h new file mode 100644 index 000000000..e0f5e9084 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qprogressbar.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPROGRESSBAR_H +#define QPROGRESSBAR_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qframe.h> + +QT_REQUIRE_CONFIG(progressbar); + +QT_BEGIN_NAMESPACE + +class QProgressBarPrivate; +class QStyleOptionProgressBar; + +class Q_WIDGETS_EXPORT QProgressBar : public QWidget +{ + Q_OBJECT + Q_PROPERTY(int minimum READ minimum WRITE setMinimum) + Q_PROPERTY(int maximum READ maximum WRITE setMaximum) + Q_PROPERTY(QString text READ text) + Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) + Q_PROPERTY(bool textVisible READ isTextVisible WRITE setTextVisible) + 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 RESET resetFormat) + +public: + enum Direction { TopToBottom, BottomToTop }; + Q_ENUM(Direction) + + explicit QProgressBar(QWidget *parent = Q_NULLPTR); + ~QProgressBar(); + + int minimum() const; + int maximum() const; + + int value() const; + + virtual QString text() const; + void setTextVisible(bool visible); + bool isTextVisible() const; + + Qt::Alignment alignment() const; + void setAlignment(Qt::Alignment alignment); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + Qt::Orientation orientation() const; + + void setInvertedAppearance(bool invert); + bool invertedAppearance() const; + void setTextDirection(QProgressBar::Direction textDirection); + QProgressBar::Direction textDirection() const; + + void setFormat(const QString &format); + void resetFormat(); + QString format() const; + +public Q_SLOTS: + void reset(); + void setRange(int minimum, int maximum); + void setMinimum(int minimum); + void setMaximum(int maximum); + void setValue(int value); + void setOrientation(Qt::Orientation); + +Q_SIGNALS: + void valueChanged(int value); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionProgressBar *option) const; + +private: + Q_DECLARE_PRIVATE(QProgressBar) + Q_DISABLE_COPY(QProgressBar) +}; + +QT_END_NAMESPACE + +#endif // QPROGRESSBAR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qprogressdialog.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qprogressdialog.h new file mode 100644 index 000000000..902a4de5d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qprogressdialog.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPROGRESSDIALOG_H +#define QPROGRESSDIALOG_H + +#include <QtWidgets/qtwidgetsglobal.h> + +#include <QtWidgets/qdialog.h> + +QT_REQUIRE_CONFIG(progressdialog); + +QT_BEGIN_NAMESPACE + +class QPushButton; +class QLabel; +class QProgressBar; +class QTimer; +class QProgressDialogPrivate; + +class Q_WIDGETS_EXPORT QProgressDialog : public QDialog +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QProgressDialog) + Q_PROPERTY(bool wasCanceled READ wasCanceled) + Q_PROPERTY(int minimum READ minimum WRITE setMinimum) + Q_PROPERTY(int maximum READ maximum WRITE setMaximum) + Q_PROPERTY(int value READ value WRITE setValue) + Q_PROPERTY(bool autoReset READ autoReset WRITE setAutoReset) + Q_PROPERTY(bool autoClose READ autoClose WRITE setAutoClose) + Q_PROPERTY(int minimumDuration READ minimumDuration WRITE setMinimumDuration) + Q_PROPERTY(QString labelText READ labelText WRITE setLabelText) + +public: + explicit QProgressDialog(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()); + QProgressDialog(const QString &labelText, const QString &cancelButtonText, + int minimum, int maximum, QWidget *parent = Q_NULLPTR, + Qt::WindowFlags flags = Qt::WindowFlags()); + ~QProgressDialog(); + + void setLabel(QLabel *label); + void setCancelButton(QPushButton *button); + void setBar(QProgressBar *bar); + + bool wasCanceled() const; + + int minimum() const; + int maximum() const; + + int value() const; + + QSize sizeHint() const Q_DECL_OVERRIDE; + + QString labelText() const; + int minimumDuration() const; + + void setAutoReset(bool reset); + bool autoReset() const; + void setAutoClose(bool close); + bool autoClose() const; + + using QDialog::open; + void open(QObject *receiver, const char *member); + +public Q_SLOTS: + void cancel(); + void reset(); + void setMaximum(int maximum); + void setMinimum(int minimum); + void setRange(int minimum, int maximum); + void setValue(int progress); + void setLabelText(const QString &text); + void setCancelButtonText(const QString &text); + void setMinimumDuration(int ms); + +Q_SIGNALS: + void canceled(); + +protected: + void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; + void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; + void changeEvent(QEvent *event) Q_DECL_OVERRIDE; + void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; + +protected Q_SLOTS: + void forceShow(); + +private: + Q_DISABLE_COPY(QProgressDialog) + + Q_PRIVATE_SLOT(d_func(), void _q_disconnectOnClose()) +}; + +QT_END_NAMESPACE + +#endif // QPROGRESSDIALOG_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qproxystyle.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qproxystyle.h new file mode 100644 index 000000000..20a0f1286 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qproxystyle.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPROXYSTYLE_H +#define QPROXYSTYLE_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/QCommonStyle> + +QT_BEGIN_NAMESPACE + + +#if !defined(QT_NO_STYLE_PROXY) + +class QProxyStylePrivate; +class Q_WIDGETS_EXPORT QProxyStyle : public QCommonStyle +{ + Q_OBJECT + +public: + QProxyStyle(QStyle *style = Q_NULLPTR); + QProxyStyle(const QString &key); + ~QProxyStyle(); + + QStyle *baseStyle() const; + void setBaseStyle(QStyle *style); + + void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + void drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, + const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const Q_DECL_OVERRIDE; + virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const Q_DECL_OVERRIDE; + + QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const Q_DECL_OVERRIDE; + + QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const Q_DECL_OVERRIDE; + QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const Q_DECL_OVERRIDE; + QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const Q_DECL_OVERRIDE; + QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const Q_DECL_OVERRIDE; + + SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + int styleHint(StyleHint hint, const QStyleOption *option = Q_NULLPTR, const QWidget *widget = Q_NULLPTR, QStyleHintReturn *returnData = Q_NULLPTR) const Q_DECL_OVERRIDE; + int pixelMetric(PixelMetric metric, const QStyleOption *option = Q_NULLPTR, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, + Qt::Orientation orientation, const QStyleOption *option = Q_NULLPTR, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = Q_NULLPTR, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; + QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const Q_DECL_OVERRIDE; + QPalette standardPalette() const Q_DECL_OVERRIDE; + + void polish(QWidget *widget) Q_DECL_OVERRIDE; + void polish(QPalette &pal) Q_DECL_OVERRIDE; + void polish(QApplication *app) Q_DECL_OVERRIDE; + + void unpolish(QWidget *widget) Q_DECL_OVERRIDE; + void unpolish(QApplication *app) Q_DECL_OVERRIDE; + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QProxyStyle) + Q_DECLARE_PRIVATE(QProxyStyle) +}; + +#endif // QT_NO_STYLE_PROXY + +QT_END_NAMESPACE + +#endif // QPROXYSTYLE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qpushbutton.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qpushbutton.h new file mode 100644 index 000000000..c005f320c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qpushbutton.h @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPUSHBUTTON_H +#define QPUSHBUTTON_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractbutton.h> + +QT_REQUIRE_CONFIG(pushbutton); + +QT_BEGIN_NAMESPACE + + +class QPushButtonPrivate; +class QMenu; +class QStyleOptionButton; + +class Q_WIDGETS_EXPORT QPushButton : public QAbstractButton +{ + Q_OBJECT + + Q_PROPERTY(bool autoDefault READ autoDefault WRITE setAutoDefault) + Q_PROPERTY(bool default READ isDefault WRITE setDefault) + Q_PROPERTY(bool flat READ isFlat WRITE setFlat) + +public: + explicit QPushButton(QWidget *parent = Q_NULLPTR); + explicit QPushButton(const QString &text, QWidget *parent = Q_NULLPTR); + QPushButton(const QIcon& icon, const QString &text, QWidget *parent = Q_NULLPTR); + ~QPushButton(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + bool autoDefault() const; + void setAutoDefault(bool); + bool isDefault() const; + void setDefault(bool); + +#if QT_CONFIG(menu) + void setMenu(QMenu* menu); + QMenu* menu() const; +#endif + + void setFlat(bool); + bool isFlat() const; + +public Q_SLOTS: +#if QT_CONFIG(menu) + void showMenu(); +#endif + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *) Q_DECL_OVERRIDE; + void focusInEvent(QFocusEvent *) Q_DECL_OVERRIDE; + void focusOutEvent(QFocusEvent *) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionButton *option) const; + QPushButton(QPushButtonPrivate &dd, QWidget* parent = Q_NULLPTR); + +public: + +private: + Q_DISABLE_COPY(QPushButton) + Q_DECLARE_PRIVATE(QPushButton) +#if QT_CONFIG(menu) + Q_PRIVATE_SLOT(d_func(), void _q_popupPressed()) +#endif +}; + +QT_END_NAMESPACE + +#endif // QPUSHBUTTON_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qradiobutton.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qradiobutton.h new file mode 100644 index 000000000..137ae0138 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qradiobutton.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRADIOBUTTON_H +#define QRADIOBUTTON_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractbutton.h> + +QT_REQUIRE_CONFIG(radiobutton); + +QT_BEGIN_NAMESPACE + + +class QRadioButtonPrivate; +class QStyleOptionButton; + +class Q_WIDGETS_EXPORT QRadioButton : public QAbstractButton +{ + Q_OBJECT + +public: + explicit QRadioButton(QWidget *parent = Q_NULLPTR); + explicit QRadioButton(const QString &text, QWidget *parent = Q_NULLPTR); + ~QRadioButton(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + bool hitButton(const QPoint &) const Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionButton *button) const; + + +private: + Q_DECLARE_PRIVATE(QRadioButton) + Q_DISABLE_COPY(QRadioButton) + friend class QAccessibleButton; +}; + +QT_END_NAMESPACE + +#endif // QRADIOBUTTON_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qrubberband.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qrubberband.h new file mode 100644 index 000000000..a05eb0d54 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qrubberband.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRUBBERBAND_H +#define QRUBBERBAND_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(rubberband); + +QT_BEGIN_NAMESPACE + +class QRubberBandPrivate; +class QStyleOptionRubberBand; + +class Q_WIDGETS_EXPORT QRubberBand : public QWidget +{ + Q_OBJECT + +public: + enum Shape { Line, Rectangle }; + explicit QRubberBand(Shape, QWidget * = Q_NULLPTR); + ~QRubberBand(); + + Shape shape() const; + + void setGeometry(const QRect &r); + + inline void setGeometry(int x, int y, int w, int h); + inline void move(int x, int y); + inline void move(const QPoint &p) + { move(p.x(), p.y()); } + inline void resize(int w, int h) + { setGeometry(geometry().x(), geometry().y(), w, h); } + inline void resize(const QSize &s) + { resize(s.width(), s.height()); } + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void changeEvent(QEvent *) Q_DECL_OVERRIDE; + void showEvent(QShowEvent *) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + void moveEvent(QMoveEvent *) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionRubberBand *option) const; + +private: + Q_DECLARE_PRIVATE(QRubberBand) +}; + +inline void QRubberBand::setGeometry(int ax, int ay, int aw, int ah) +{ setGeometry(QRect(ax, ay, aw, ah)); } +inline void QRubberBand::move(int ax, int ay) +{ setGeometry(ax, ay, width(), height()); } + +QT_END_NAMESPACE + +#endif // QRUBBERBAND_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qscrollarea.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qscrollarea.h new file mode 100644 index 000000000..d38bced2f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qscrollarea.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCROLLAREA_H +#define QSCROLLAREA_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractscrollarea.h> + +QT_REQUIRE_CONFIG(scrollarea); + +QT_BEGIN_NAMESPACE + +class QScrollAreaPrivate; + +class Q_WIDGETS_EXPORT QScrollArea : public QAbstractScrollArea +{ + Q_OBJECT + Q_PROPERTY(bool widgetResizable READ widgetResizable WRITE setWidgetResizable) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) + +public: + explicit QScrollArea(QWidget *parent = Q_NULLPTR); + ~QScrollArea(); + + QWidget *widget() const; + void setWidget(QWidget *widget); + QWidget *takeWidget(); + + bool widgetResizable() const; + void setWidgetResizable(bool resizable); + + QSize sizeHint() const Q_DECL_OVERRIDE; + + bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE; + + Qt::Alignment alignment() const; + void setAlignment(Qt::Alignment); + + void ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50); + void ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50); + +protected: + QScrollArea(QScrollAreaPrivate &dd, QWidget *parent = Q_NULLPTR); + bool event(QEvent *) Q_DECL_OVERRIDE; + bool eventFilter(QObject *, QEvent *) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE; + + QSize viewportSizeHint() const Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QScrollArea) + Q_DISABLE_COPY(QScrollArea) +}; + +QT_END_NAMESPACE + +#endif // QSCROLLAREA_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qscrollbar.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qscrollbar.h new file mode 100644 index 000000000..22b9bfcdd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qscrollbar.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCROLLBAR_H +#define QSCROLLBAR_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +#include <QtWidgets/qabstractslider.h> + +QT_REQUIRE_CONFIG(scrollbar); + +QT_BEGIN_NAMESPACE + +class QScrollBarPrivate; +class QStyleOptionSlider; + +class Q_WIDGETS_EXPORT QScrollBar : public QAbstractSlider +{ + Q_OBJECT +public: + explicit QScrollBar(QWidget *parent = Q_NULLPTR); + explicit QScrollBar(Qt::Orientation, QWidget *parent = Q_NULLPTR); + ~QScrollBar(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + bool event(QEvent *event) Q_DECL_OVERRIDE; + +protected: +#if QT_CONFIG(wheelevent) + void wheelEvent(QWheelEvent *) Q_DECL_OVERRIDE; +#endif + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void hideEvent(QHideEvent*) Q_DECL_OVERRIDE; + void sliderChange(SliderChange change) Q_DECL_OVERRIDE; +#ifndef QT_NO_CONTEXTMENU + void contextMenuEvent(QContextMenuEvent *) Q_DECL_OVERRIDE; +#endif + void initStyleOption(QStyleOptionSlider *option) const; + + +private: + friend class QAbstractScrollAreaPrivate; + friend Q_WIDGETS_EXPORT QStyleOptionSlider qt_qscrollbarStyleOption(QScrollBar *scrollBar); + + Q_DISABLE_COPY(QScrollBar) + Q_DECLARE_PRIVATE(QScrollBar) +#if QT_CONFIG(itemviews) + friend class QTableView; + friend class QTreeViewPrivate; + friend class QCommonListViewBase; + friend class QListModeViewBase; + friend class QAbstractItemView; +#endif +}; + +QT_END_NAMESPACE + +#endif // QSCROLLBAR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qscroller.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qscroller.h new file mode 100644 index 000000000..ca8d059f5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qscroller.h @@ -0,0 +1,151 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCROLLER_H +#define QSCROLLER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/QObject> +#include <QtCore/QPointF> +#include <QtWidgets/QScrollerProperties> + +QT_REQUIRE_CONFIG(scroller); + +QT_BEGIN_NAMESPACE + + +class QWidget; +class QScrollerPrivate; +class QScrollerProperties; +#ifndef QT_NO_GESTURES +class QFlickGestureRecognizer; +class QMouseFlickGestureRecognizer; +#endif + +class Q_WIDGETS_EXPORT QScroller : public QObject +{ + Q_OBJECT + Q_PROPERTY(State state READ state NOTIFY stateChanged) + Q_PROPERTY(QScrollerProperties scrollerProperties READ scrollerProperties WRITE setScrollerProperties NOTIFY scrollerPropertiesChanged) + +public: + enum State + { + Inactive, + Pressed, + Dragging, + Scrolling + }; + Q_ENUM(State) + + enum ScrollerGestureType + { + TouchGesture, + LeftMouseButtonGesture, + RightMouseButtonGesture, + MiddleMouseButtonGesture + }; + + enum Input + { + InputPress = 1, + InputMove, + InputRelease + }; + + static bool hasScroller(QObject *target); + + static QScroller *scroller(QObject *target); + static const QScroller *scroller(const QObject *target); + +#ifndef QT_NO_GESTURES + static Qt::GestureType grabGesture(QObject *target, ScrollerGestureType gestureType = TouchGesture); + static Qt::GestureType grabbedGesture(QObject *target); + static void ungrabGesture(QObject *target); +#endif + + static QList<QScroller *> activeScrollers(); + + QObject *target() const; + + State state() const; + + bool handleInput(Input input, const QPointF &position, qint64 timestamp = 0); + + void stop(); + QPointF velocity() const; + QPointF finalPosition() const; + QPointF pixelPerMeter() const; + + QScrollerProperties scrollerProperties() const; + + void setSnapPositionsX( const QList<qreal> &positions ); + void setSnapPositionsX( qreal first, qreal interval ); + void setSnapPositionsY( const QList<qreal> &positions ); + void setSnapPositionsY( qreal first, qreal interval ); + +public Q_SLOTS: + void setScrollerProperties(const QScrollerProperties &prop); + void scrollTo(const QPointF &pos); + void scrollTo(const QPointF &pos, int scrollTime); + void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin); + void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime); + void resendPrepareEvent(); + +Q_SIGNALS: + void stateChanged(QScroller::State newstate); + void scrollerPropertiesChanged(const QScrollerProperties &); + +private: + QScrollerPrivate *d_ptr; + + QScroller(QObject *target); + virtual ~QScroller(); + + Q_DISABLE_COPY(QScroller) + Q_DECLARE_PRIVATE(QScroller) + +#ifndef QT_NO_GESTURES + friend class QFlickGestureRecognizer; +#endif +}; + +QT_END_NAMESPACE + +#endif // QSCROLLER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qscrollerproperties.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qscrollerproperties.h new file mode 100644 index 000000000..2fc1a5dc1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qscrollerproperties.h @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCROLLERPROPERTIES_H +#define QSCROLLERPROPERTIES_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/QScopedPointer> +#include <QtCore/QMetaType> +#include <QtCore/QVariant> + +QT_REQUIRE_CONFIG(scroller); + +QT_BEGIN_NAMESPACE + + +class QScroller; +class QScrollerPrivate; +class QScrollerPropertiesPrivate; + +class Q_WIDGETS_EXPORT QScrollerProperties +{ +public: + QScrollerProperties(); + QScrollerProperties(const QScrollerProperties &sp); + QScrollerProperties &operator=(const QScrollerProperties &sp); + virtual ~QScrollerProperties(); + + bool operator==(const QScrollerProperties &sp) const; + bool operator!=(const QScrollerProperties &sp) const; + + static void setDefaultScrollerProperties(const QScrollerProperties &sp); + static void unsetDefaultScrollerProperties(); + + enum OvershootPolicy + { + OvershootWhenScrollable, + OvershootAlwaysOff, + OvershootAlwaysOn + }; + + enum FrameRates { + Standard, + Fps60, + Fps30, + Fps20 + }; + + enum ScrollMetric + { + MousePressEventDelay, // qreal [s] + DragStartDistance, // qreal [m] + DragVelocitySmoothingFactor, // qreal [0..1/s] (complex calculation involving time) v = v_new* DASF + v_old * (1-DASF) + AxisLockThreshold, // qreal [0..1] atan(|min(dx,dy)|/|max(dx,dy)|) + + ScrollingCurve, // QEasingCurve + DecelerationFactor, // slope of the curve + + MinimumVelocity, // qreal [m/s] + MaximumVelocity, // qreal [m/s] + MaximumClickThroughVelocity, // qreal [m/s] + + AcceleratingFlickMaximumTime, // qreal [s] + AcceleratingFlickSpeedupFactor, // qreal [1..] + + SnapPositionRatio, // qreal [0..1] + SnapTime, // qreal [s] + + OvershootDragResistanceFactor, // qreal [0..1] + OvershootDragDistanceFactor, // qreal [0..1] + OvershootScrollDistanceFactor, // qreal [0..1] + OvershootScrollTime, // qreal [s] + + HorizontalOvershootPolicy, // enum OvershootPolicy + VerticalOvershootPolicy, // enum OvershootPolicy + FrameRate, // enum FrameRates + + ScrollMetricCount + }; + + QVariant scrollMetric(ScrollMetric metric) const; + void setScrollMetric(ScrollMetric metric, const QVariant &value); + +protected: + QScopedPointer<QScrollerPropertiesPrivate> d; + +private: + QScrollerProperties(QScrollerPropertiesPrivate &dd); + + friend class QScrollerPropertiesPrivate; + friend class QScroller; + friend class QScrollerPrivate; +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QScrollerProperties::OvershootPolicy) +Q_DECLARE_METATYPE(QScrollerProperties::FrameRates) + +#endif // QSCROLLERPROPERTIES_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qshortcut.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qshortcut.h new file mode 100644 index 000000000..22c667c9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qshortcut.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSHORTCUT_H +#define QSHORTCUT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> +#include <QtGui/qkeysequence.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_SHORTCUT + +class QShortcutPrivate; +class Q_WIDGETS_EXPORT QShortcut : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QShortcut) + Q_PROPERTY(QKeySequence key READ key WRITE setKey) + Q_PROPERTY(QString whatsThis READ whatsThis WRITE setWhatsThis) + Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled) + Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat) + Q_PROPERTY(Qt::ShortcutContext context READ context WRITE setContext) +public: + explicit QShortcut(QWidget *parent); + QShortcut(const QKeySequence& key, QWidget *parent, + const char *member = Q_NULLPTR, const char *ambiguousMember = Q_NULLPTR, + Qt::ShortcutContext context = Qt::WindowShortcut); + ~QShortcut(); + + void setKey(const QKeySequence& key); + QKeySequence key() const; + + void setEnabled(bool enable); + bool isEnabled() const; + + void setContext(Qt::ShortcutContext context); + Qt::ShortcutContext context() const; + + void setWhatsThis(const QString &text); + QString whatsThis() const; + + void setAutoRepeat(bool on); + bool autoRepeat() const; + + int id() const; + + inline QWidget *parentWidget() const + { return static_cast<QWidget *>(QObject::parent()); } + +Q_SIGNALS: + void activated(); + void activatedAmbiguously(); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; +}; + +#endif // QT_NO_SHORTCUT + +QT_END_NAMESPACE + +#endif // QSHORTCUT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qsizegrip.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qsizegrip.h new file mode 100644 index 000000000..6ad240533 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qsizegrip.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIZEGRIP_H +#define QSIZEGRIP_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(sizegrip); + +QT_BEGIN_NAMESPACE + +class QSizeGripPrivate; +class Q_WIDGETS_EXPORT QSizeGrip : public QWidget +{ + Q_OBJECT +public: + explicit QSizeGrip(QWidget *parent); + ~QSizeGrip(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + void setVisible(bool) Q_DECL_OVERRIDE; + +protected: + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *mouseEvent) Q_DECL_OVERRIDE; + void moveEvent(QMoveEvent *moveEvent) Q_DECL_OVERRIDE; + void showEvent(QShowEvent *showEvent) Q_DECL_OVERRIDE; + void hideEvent(QHideEvent *hideEvent) Q_DECL_OVERRIDE; + bool eventFilter(QObject *, QEvent *) Q_DECL_OVERRIDE; + bool event(QEvent *) Q_DECL_OVERRIDE; + +public: + +private: + Q_DECLARE_PRIVATE(QSizeGrip) + Q_DISABLE_COPY(QSizeGrip) + Q_PRIVATE_SLOT(d_func(), void _q_showIfNotHidden()) +}; + +QT_END_NAMESPACE + +#endif // QSIZEGRIP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qsizepolicy.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qsizepolicy.h new file mode 100644 index 000000000..dba742dec --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qsizepolicy.h @@ -0,0 +1,251 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSIZEPOLICY_H +#define QSIZEPOLICY_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qalgorithms.h> + +QT_BEGIN_NAMESPACE + +// gcc < 4.8.0 has problems with init'ing variant members in constexpr ctors +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54922 +#if !defined(Q_CC_GNU) || defined(Q_CC_INTEL) || defined(Q_CC_CLANG) || Q_CC_GNU >= 408 +# define QT_SIZEPOLICY_CONSTEXPR Q_DECL_CONSTEXPR +# if defined(Q_COMPILER_UNIFORM_INIT) +# define QT_SIZEPOLICY_CONSTEXPR_AND_UNIFORM_INIT Q_DECL_CONSTEXPR +# endif // uniform-init +#endif + +#ifndef QT_SIZEPOLICY_CONSTEXPR +# define QT_SIZEPOLICY_CONSTEXPR +#endif +#ifndef QT_SIZEPOLICY_CONSTEXPR_AND_UNIFORM_INIT +# define QT_SIZEPOLICY_CONSTEXPR_AND_UNIFORM_INIT +#endif + +class QVariant; +class QSizePolicy; + +Q_DECL_CONST_FUNCTION inline uint qHash(QSizePolicy key, uint seed = 0) Q_DECL_NOTHROW; + +class Q_WIDGETS_EXPORT QSizePolicy +{ + Q_GADGET + +public: + enum PolicyFlag { + GrowFlag = 1, + ExpandFlag = 2, + ShrinkFlag = 4, + IgnoreFlag = 8 + }; + + enum Policy { + Fixed = 0, + Minimum = GrowFlag, + Maximum = ShrinkFlag, + Preferred = GrowFlag | ShrinkFlag, + MinimumExpanding = GrowFlag | ExpandFlag, + Expanding = GrowFlag | ShrinkFlag | ExpandFlag, + Ignored = ShrinkFlag | GrowFlag | IgnoreFlag + }; + Q_ENUM(Policy) + + enum ControlType { + DefaultType = 0x00000001, + ButtonBox = 0x00000002, + CheckBox = 0x00000004, + ComboBox = 0x00000008, + Frame = 0x00000010, + GroupBox = 0x00000020, + Label = 0x00000040, + Line = 0x00000080, + LineEdit = 0x00000100, + PushButton = 0x00000200, + RadioButton = 0x00000400, + Slider = 0x00000800, + SpinBox = 0x00001000, + TabWidget = 0x00002000, + ToolButton = 0x00004000 + }; + Q_DECLARE_FLAGS(ControlTypes, ControlType) + Q_FLAG(ControlTypes) + + QT_SIZEPOLICY_CONSTEXPR QSizePolicy() Q_DECL_NOTHROW : data(0) { } + +#if defined(Q_COMPILER_UNIFORM_INIT) && !defined(Q_QDOC) + QT_SIZEPOLICY_CONSTEXPR QSizePolicy(Policy horizontal, Policy vertical, ControlType type = DefaultType) Q_DECL_NOTHROW + : bits{0, 0, quint32(horizontal), quint32(vertical), + type == DefaultType ? 0 : toControlTypeFieldValue(type), 0, 0, 0} + {} +#else + QSizePolicy(Policy horizontal, Policy vertical, ControlType type = DefaultType) Q_DECL_NOTHROW + : data(0) { + bits.horPolicy = horizontal; + bits.verPolicy = vertical; + setControlType(type); + } +#endif // uniform-init + QT_SIZEPOLICY_CONSTEXPR Policy horizontalPolicy() const Q_DECL_NOTHROW { return static_cast<Policy>(bits.horPolicy); } + QT_SIZEPOLICY_CONSTEXPR Policy verticalPolicy() const Q_DECL_NOTHROW { return static_cast<Policy>(bits.verPolicy); } + ControlType controlType() const Q_DECL_NOTHROW; + + Q_DECL_RELAXED_CONSTEXPR void setHorizontalPolicy(Policy d) Q_DECL_NOTHROW { bits.horPolicy = d; } + Q_DECL_RELAXED_CONSTEXPR void setVerticalPolicy(Policy d) Q_DECL_NOTHROW { bits.verPolicy = d; } + void setControlType(ControlType type) Q_DECL_NOTHROW; + + QT_SIZEPOLICY_CONSTEXPR Qt::Orientations expandingDirections() const Q_DECL_NOTHROW { + return ( (verticalPolicy() & ExpandFlag) ? Qt::Vertical : Qt::Orientations() ) + | ( (horizontalPolicy() & ExpandFlag) ? Qt::Horizontal : Qt::Orientations() ) ; + } + + Q_DECL_RELAXED_CONSTEXPR void setHeightForWidth(bool b) Q_DECL_NOTHROW { bits.hfw = b; } + QT_SIZEPOLICY_CONSTEXPR bool hasHeightForWidth() const Q_DECL_NOTHROW { return bits.hfw; } + Q_DECL_RELAXED_CONSTEXPR void setWidthForHeight(bool b) Q_DECL_NOTHROW { bits.wfh = b; } + QT_SIZEPOLICY_CONSTEXPR bool hasWidthForHeight() const Q_DECL_NOTHROW { return bits.wfh; } + + QT_SIZEPOLICY_CONSTEXPR bool operator==(const QSizePolicy& s) const Q_DECL_NOTHROW { return data == s.data; } + QT_SIZEPOLICY_CONSTEXPR bool operator!=(const QSizePolicy& s) const Q_DECL_NOTHROW { return data != s.data; } + + friend Q_DECL_CONST_FUNCTION uint qHash(QSizePolicy key, uint seed) Q_DECL_NOTHROW { return qHash(key.data, seed); } + + operator QVariant() const; + + QT_SIZEPOLICY_CONSTEXPR int horizontalStretch() const Q_DECL_NOTHROW { return static_cast<int>(bits.horStretch); } + QT_SIZEPOLICY_CONSTEXPR int verticalStretch() const Q_DECL_NOTHROW { return static_cast<int>(bits.verStretch); } + Q_DECL_RELAXED_CONSTEXPR void setHorizontalStretch(int stretchFactor) { bits.horStretch = static_cast<quint32>(qBound(0, stretchFactor, 255)); } + Q_DECL_RELAXED_CONSTEXPR void setVerticalStretch(int stretchFactor) { bits.verStretch = static_cast<quint32>(qBound(0, stretchFactor, 255)); } + + QT_SIZEPOLICY_CONSTEXPR bool retainSizeWhenHidden() const Q_DECL_NOTHROW { return bits.retainSizeWhenHidden; } + Q_DECL_RELAXED_CONSTEXPR void setRetainSizeWhenHidden(bool retainSize) Q_DECL_NOTHROW { bits.retainSizeWhenHidden = retainSize; } + + Q_DECL_RELAXED_CONSTEXPR void transpose() Q_DECL_NOTHROW { *this = transposed(); } + Q_REQUIRED_RESULT +#ifndef Q_QDOC + QT_SIZEPOLICY_CONSTEXPR_AND_UNIFORM_INIT +#endif + QSizePolicy transposed() const Q_DECL_NOTHROW + { + return QSizePolicy(bits.transposed()); + } + +private: +#ifndef QT_NO_DATASTREAM + friend Q_WIDGETS_EXPORT QDataStream &operator<<(QDataStream &, const QSizePolicy &); + friend Q_WIDGETS_EXPORT QDataStream &operator>>(QDataStream &, QSizePolicy &); +#endif + QT_SIZEPOLICY_CONSTEXPR QSizePolicy(int i) Q_DECL_NOTHROW : data(i) { } + struct Bits; + QT_SIZEPOLICY_CONSTEXPR explicit QSizePolicy(Bits b) Q_DECL_NOTHROW : bits(b) { } + + static Q_DECL_RELAXED_CONSTEXPR quint32 toControlTypeFieldValue(ControlType type) Q_DECL_NOTHROW + { + /* + The control type is a flag type, with values 0x1, 0x2, 0x4, 0x8, 0x10, + etc. In memory, we pack it onto the available bits (CTSize) in + setControlType(), and unpack it here. + + Example: + + 0x00000001 maps to 0 + 0x00000002 maps to 1 + 0x00000004 maps to 2 + 0x00000008 maps to 3 + etc. + */ + + return qCountTrailingZeroBits(static_cast<quint32>(type)); + } + + struct Bits { + quint32 horStretch : 8; + quint32 verStretch : 8; + quint32 horPolicy : 4; + quint32 verPolicy : 4; + quint32 ctype : 5; + quint32 hfw : 1; + quint32 wfh : 1; + quint32 retainSizeWhenHidden : 1; + + QT_SIZEPOLICY_CONSTEXPR_AND_UNIFORM_INIT + Bits transposed() const Q_DECL_NOTHROW + { + return {verStretch, // \ swap + horStretch, // / + verPolicy, // \ swap + horPolicy, // / + ctype, + hfw, // \ don't swap (historic behavior) + wfh, // / + retainSizeWhenHidden}; + } + }; + union { + Bits bits; + quint32 data; + }; +}; +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) +// Can't add in Qt 5, as QList<QSizePolicy> would be BiC: +Q_DECLARE_TYPEINFO(QSizePolicy, Q_PRIMITIVE_TYPE); +#else +Q_DECLARE_TYPEINFO(QSizePolicy, Q_RELOCATABLE_TYPE); +#endif + +Q_DECLARE_OPERATORS_FOR_FLAGS(QSizePolicy::ControlTypes) + +#ifndef QT_NO_DATASTREAM +Q_WIDGETS_EXPORT QDataStream &operator<<(QDataStream &, const QSizePolicy &); +Q_WIDGETS_EXPORT QDataStream &operator>>(QDataStream &, QSizePolicy &); +#endif + +#ifndef QT_NO_DEBUG_STREAM +Q_WIDGETS_EXPORT QDebug operator<<(QDebug dbg, const QSizePolicy &); +#endif + + +#undef QT_SIZEPOLICY_CONSTEXPR +#undef QT_SIZEPOLICY_CONSTEXPR_AND_UNIFORM_INIT + +QT_END_NAMESPACE + +#endif // QSIZEPOLICY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qslider.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qslider.h new file mode 100644 index 000000000..642e836af --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qslider.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSLIDER_H +#define QSLIDER_H + +#include <QtWidgets/qtwidgetsglobal.h> + +#include <QtWidgets/qabstractslider.h> + +QT_REQUIRE_CONFIG(slider); + +QT_BEGIN_NAMESPACE + +class QSliderPrivate; +class QStyleOptionSlider; +class Q_WIDGETS_EXPORT QSlider : public QAbstractSlider +{ + Q_OBJECT + + Q_PROPERTY(TickPosition tickPosition READ tickPosition WRITE setTickPosition) + Q_PROPERTY(int tickInterval READ tickInterval WRITE setTickInterval) + +public: + enum TickPosition { + NoTicks = 0, + TicksAbove = 1, + TicksLeft = TicksAbove, + TicksBelow = 2, + TicksRight = TicksBelow, + TicksBothSides = 3 + }; + Q_ENUM(TickPosition) + + explicit QSlider(QWidget *parent = Q_NULLPTR); + explicit QSlider(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR); + + ~QSlider(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + void setTickPosition(TickPosition position); + TickPosition tickPosition() const; + + void setTickInterval(int ti); + int tickInterval() const; + + bool event(QEvent *event) Q_DECL_OVERRIDE; + +protected: + void paintEvent(QPaintEvent *ev) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *ev) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *ev) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *ev) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionSlider *option) const; + + +private: + friend Q_WIDGETS_EXPORT QStyleOptionSlider qt_qsliderStyleOption(QSlider *slider); + + Q_DISABLE_COPY(QSlider) + Q_DECLARE_PRIVATE(QSlider) +}; + +QT_END_NAMESPACE + +#endif // QSLIDER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qspinbox.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qspinbox.h new file mode 100644 index 000000000..b61e66541 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qspinbox.h @@ -0,0 +1,172 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSPINBOX_H +#define QSPINBOX_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractspinbox.h> + +QT_REQUIRE_CONFIG(spinbox); + +QT_BEGIN_NAMESPACE + +class QSpinBoxPrivate; +class Q_WIDGETS_EXPORT QSpinBox : public QAbstractSpinBox +{ + Q_OBJECT + + Q_PROPERTY(QString suffix READ suffix WRITE setSuffix) + Q_PROPERTY(QString prefix READ prefix WRITE setPrefix) + Q_PROPERTY(QString cleanText READ cleanText) + Q_PROPERTY(int minimum READ minimum WRITE setMinimum) + Q_PROPERTY(int maximum READ maximum WRITE setMaximum) + Q_PROPERTY(int singleStep READ singleStep WRITE setSingleStep) + Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged USER true) + Q_PROPERTY(int displayIntegerBase READ displayIntegerBase WRITE setDisplayIntegerBase) + +public: + explicit QSpinBox(QWidget *parent = Q_NULLPTR); + ~QSpinBox(); + + int value() const; + + QString prefix() const; + void setPrefix(const QString &prefix); + + QString suffix() const; + void setSuffix(const QString &suffix); + + QString cleanText() const; + + int singleStep() const; + void setSingleStep(int val); + + int minimum() const; + void setMinimum(int min); + + int maximum() const; + void setMaximum(int max); + + void setRange(int min, int max); + + int displayIntegerBase() const; + void setDisplayIntegerBase(int base); + +protected: + bool event(QEvent *event) override; + QValidator::State validate(QString &input, int &pos) const override; + virtual int valueFromText(const QString &text) const; + virtual QString textFromValue(int val) const; + void fixup(QString &str) const override; + + +public Q_SLOTS: + void setValue(int val); + +Q_SIGNALS: + void valueChanged(int); + void valueChanged(const QString &); + +private: + Q_DISABLE_COPY(QSpinBox) + Q_DECLARE_PRIVATE(QSpinBox) +}; + +class QDoubleSpinBoxPrivate; +class Q_WIDGETS_EXPORT QDoubleSpinBox : public QAbstractSpinBox +{ + Q_OBJECT + + Q_PROPERTY(QString prefix READ prefix WRITE setPrefix) + Q_PROPERTY(QString suffix READ suffix WRITE setSuffix) + Q_PROPERTY(QString cleanText READ cleanText) + Q_PROPERTY(int decimals READ decimals WRITE setDecimals) + Q_PROPERTY(double minimum READ minimum WRITE setMinimum) + Q_PROPERTY(double maximum READ maximum WRITE setMaximum) + Q_PROPERTY(double singleStep READ singleStep WRITE setSingleStep) + Q_PROPERTY(double value READ value WRITE setValue NOTIFY valueChanged USER true) +public: + explicit QDoubleSpinBox(QWidget *parent = Q_NULLPTR); + ~QDoubleSpinBox(); + + double value() const; + + QString prefix() const; + void setPrefix(const QString &prefix); + + QString suffix() const; + void setSuffix(const QString &suffix); + + QString cleanText() const; + + double singleStep() const; + void setSingleStep(double val); + + double minimum() const; + void setMinimum(double min); + + double maximum() const; + void setMaximum(double max); + + void setRange(double min, double max); + + int decimals() const; + void setDecimals(int prec); + + QValidator::State validate(QString &input, int &pos) const override; + virtual double valueFromText(const QString &text) const; + virtual QString textFromValue(double val) const; + void fixup(QString &str) const override; + +public Q_SLOTS: + void setValue(double val); + +Q_SIGNALS: + void valueChanged(double); + void valueChanged(const QString &); + +private: + Q_DISABLE_COPY(QDoubleSpinBox) + Q_DECLARE_PRIVATE(QDoubleSpinBox) +}; + +QT_END_NAMESPACE + +#endif // QSPINBOX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qsplashscreen.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qsplashscreen.h new file mode 100644 index 000000000..1971b8bac --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qsplashscreen.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSPLASHSCREEN_H +#define QSPLASHSCREEN_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtGui/qpixmap.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(splashscreen); + +QT_BEGIN_NAMESPACE + +class QSplashScreenPrivate; + +class Q_WIDGETS_EXPORT QSplashScreen : public QWidget +{ + Q_OBJECT +public: + explicit QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags()); + QSplashScreen(QWidget *parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags()); + virtual ~QSplashScreen(); + + void setPixmap(const QPixmap &pixmap); + const QPixmap pixmap() const; + void finish(QWidget *w); + void repaint(); + QString message() const; + +public Q_SLOTS: + void showMessage(const QString &message, int alignment = Qt::AlignLeft, + const QColor &color = Qt::black); + void clearMessage(); + +Q_SIGNALS: + void messageChanged(const QString &message); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + virtual void drawContents(QPainter *painter); + void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QSplashScreen) + Q_DECLARE_PRIVATE(QSplashScreen) +}; + +QT_END_NAMESPACE + +#endif // QSPLASHSCREEN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qsplitter.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qsplitter.h new file mode 100644 index 000000000..bc4d7bca3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qsplitter.h @@ -0,0 +1,168 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSPLITTER_H +#define QSPLITTER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qframe.h> +#include <QtWidgets/qsizepolicy.h> + +QT_REQUIRE_CONFIG(splitter); + +QT_BEGIN_NAMESPACE + +class QSplitterPrivate; +class QTextStream; +template <typename T> class QList; + +class QSplitterHandle; + +class Q_WIDGETS_EXPORT QSplitter : public QFrame +{ + Q_OBJECT + + Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) + Q_PROPERTY(bool opaqueResize READ opaqueResize WRITE setOpaqueResize) + Q_PROPERTY(int handleWidth READ handleWidth WRITE setHandleWidth) + Q_PROPERTY(bool childrenCollapsible READ childrenCollapsible WRITE setChildrenCollapsible) + +public: + explicit QSplitter(QWidget* parent = Q_NULLPTR); + explicit QSplitter(Qt::Orientation, QWidget* parent = Q_NULLPTR); + ~QSplitter(); + + void addWidget(QWidget *widget); + void insertWidget(int index, QWidget *widget); + QWidget *replaceWidget(int index, QWidget *widget); + + void setOrientation(Qt::Orientation); + Qt::Orientation orientation() const; + + void setChildrenCollapsible(bool); + bool childrenCollapsible() const; + + void setCollapsible(int index, bool); + bool isCollapsible(int index) const; + void setOpaqueResize(bool opaque = true); + bool opaqueResize() const; + void refresh(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + QList<int> sizes() const; + void setSizes(const QList<int> &list); + + QByteArray saveState() const; + bool restoreState(const QByteArray &state); + + int handleWidth() const; + void setHandleWidth(int); + + int indexOf(QWidget *w) const; + QWidget *widget(int index) const; + int count() const; + + void getRange(int index, int *, int *) const; + QSplitterHandle *handle(int index) const; + + void setStretchFactor(int index, int stretch); + +Q_SIGNALS: + void splitterMoved(int pos, int index); + +protected: + virtual QSplitterHandle *createHandle(); + + void childEvent(QChildEvent *) Q_DECL_OVERRIDE; + + bool event(QEvent *) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + + void changeEvent(QEvent *) Q_DECL_OVERRIDE; + void moveSplitter(int pos, int index); + void setRubberBand(int position); + int closestLegalPosition(int, int); + + +private: + Q_DISABLE_COPY(QSplitter) + Q_DECLARE_PRIVATE(QSplitter) +private: + friend class QSplitterHandle; +}; + +Q_WIDGETS_EXPORT QTextStream& operator<<(QTextStream&, const QSplitter&); +Q_WIDGETS_EXPORT QTextStream& operator>>(QTextStream&, QSplitter&); + +class QSplitterHandlePrivate; +class Q_WIDGETS_EXPORT QSplitterHandle : public QWidget +{ + Q_OBJECT +public: + explicit QSplitterHandle(Qt::Orientation o, QSplitter *parent); + ~QSplitterHandle(); + + void setOrientation(Qt::Orientation o); + Qt::Orientation orientation() const; + bool opaqueResize() const; + QSplitter *splitter() const; + + QSize sizeHint() const Q_DECL_OVERRIDE; + +protected: + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + bool event(QEvent *) Q_DECL_OVERRIDE; + + void moveSplitter(int p); + int closestLegalPosition(int p); + +private: + Q_DISABLE_COPY(QSplitterHandle) + Q_DECLARE_PRIVATE(QSplitterHandle) +}; + +QT_END_NAMESPACE + +#endif // QSPLITTER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qstackedlayout.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstackedlayout.h new file mode 100644 index 000000000..6f5eded1f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstackedlayout.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTACKEDLAYOUT_H +#define QSTACKEDLAYOUT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qlayout.h> + +QT_BEGIN_NAMESPACE + + +class QStackedLayoutPrivate; + +class Q_WIDGETS_EXPORT QStackedLayout : public QLayout +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QStackedLayout) + Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentChanged) + Q_PROPERTY(StackingMode stackingMode READ stackingMode WRITE setStackingMode) + QDOC_PROPERTY(int count READ count) + +public: + enum StackingMode { + StackOne, + StackAll + }; + Q_ENUM(StackingMode) + + QStackedLayout(); + explicit QStackedLayout(QWidget *parent); + explicit QStackedLayout(QLayout *parentLayout); + ~QStackedLayout(); + + int addWidget(QWidget *w); + int insertWidget(int index, QWidget *w); + + QWidget *currentWidget() const; + int currentIndex() const; + using QLayout::widget; + QWidget *widget(int) const; + int count() const Q_DECL_OVERRIDE; + + StackingMode stackingMode() const; + void setStackingMode(StackingMode stackingMode); + + // abstract virtual functions: + void addItem(QLayoutItem *item) Q_DECL_OVERRIDE; + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSize() const Q_DECL_OVERRIDE; + QLayoutItem *itemAt(int) const Q_DECL_OVERRIDE; + QLayoutItem *takeAt(int) Q_DECL_OVERRIDE; + void setGeometry(const QRect &rect) Q_DECL_OVERRIDE; + bool hasHeightForWidth() const Q_DECL_OVERRIDE; + int heightForWidth(int width) const Q_DECL_OVERRIDE; + +Q_SIGNALS: + void widgetRemoved(int index); + void currentChanged(int index); + +public Q_SLOTS: + void setCurrentIndex(int index); + void setCurrentWidget(QWidget *w); + +private: + Q_DISABLE_COPY(QStackedLayout) +}; + +QT_END_NAMESPACE + +#endif // QSTACKEDLAYOUT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qstackedwidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstackedwidget.h new file mode 100644 index 000000000..29df145b7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstackedwidget.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTACKEDWIDGET_H +#define QSTACKEDWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qframe.h> + +QT_REQUIRE_CONFIG(stackedwidget); + +QT_BEGIN_NAMESPACE + +class QStackedWidgetPrivate; + +class Q_WIDGETS_EXPORT QStackedWidget : public QFrame +{ + Q_OBJECT + + Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentChanged) + Q_PROPERTY(int count READ count) +public: + explicit QStackedWidget(QWidget *parent = Q_NULLPTR); + ~QStackedWidget(); + + int addWidget(QWidget *w); + int insertWidget(int index, QWidget *w); + void removeWidget(QWidget *w); + + QWidget *currentWidget() const; + int currentIndex() const; + + int indexOf(QWidget *) const; + QWidget *widget(int) const; + int count() const; + +public Q_SLOTS: + void setCurrentIndex(int index); + void setCurrentWidget(QWidget *w); + +Q_SIGNALS: + void currentChanged(int); + void widgetRemoved(int index); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QStackedWidget) + Q_DECLARE_PRIVATE(QStackedWidget) +}; + +QT_END_NAMESPACE + +#endif // QSTACKEDWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qstatusbar.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstatusbar.h new file mode 100644 index 000000000..9ac637931 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstatusbar.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTATUSBAR_H +#define QSTATUSBAR_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(statusbar); + +QT_BEGIN_NAMESPACE + +class QStatusBarPrivate; + +class Q_WIDGETS_EXPORT QStatusBar: public QWidget +{ + Q_OBJECT + + Q_PROPERTY(bool sizeGripEnabled READ isSizeGripEnabled WRITE setSizeGripEnabled) + +public: + explicit QStatusBar(QWidget *parent = Q_NULLPTR); + virtual ~QStatusBar(); + + void addWidget(QWidget *widget, int stretch = 0); + int insertWidget(int index, QWidget *widget, int stretch = 0); + void addPermanentWidget(QWidget *widget, int stretch = 0); + int insertPermanentWidget(int index, QWidget *widget, int stretch = 0); + void removeWidget(QWidget *widget); + + void setSizeGripEnabled(bool); + bool isSizeGripEnabled() const; + + QString currentMessage() const; + +public Q_SLOTS: + void showMessage(const QString &text, int timeout = 0); + void clearMessage(); + + +Q_SIGNALS: + void messageChanged(const QString &text); + +protected: + void showEvent(QShowEvent *) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + + // ### Qt 6: consider making reformat() and hideOrShow() private + void reformat(); + void hideOrShow(); + bool event(QEvent *) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QStatusBar) + Q_DECLARE_PRIVATE(QStatusBar) +}; + +QT_END_NAMESPACE + +#endif // QSTATUSBAR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyle.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyle.h new file mode 100644 index 000000000..ce33dbed6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyle.h @@ -0,0 +1,878 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTYLE_H +#define QSTYLE_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qrect.h> +#include <QtCore/qsize.h> +#include <QtGui/qicon.h> +#include <QtGui/qpixmap.h> +#include <QtGui/qpalette.h> +#include <QtWidgets/qsizepolicy.h> + +QT_BEGIN_NAMESPACE + + +class QAction; +class QDebug; +class QTab; +class QFontMetrics; +class QStyleHintReturn; +class QStyleOption; +class QStyleOptionComplex; +class QStylePrivate; + +class Q_WIDGETS_EXPORT QStyle : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QStyle) + +protected: + QStyle(QStylePrivate &dd); + +public: + QStyle(); + virtual ~QStyle(); + + virtual void polish(QWidget *widget); + virtual void unpolish(QWidget *widget); + + virtual void polish(QApplication *application); + virtual void unpolish(QApplication *application); + + virtual void polish(QPalette &palette); + + virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, + int flags, bool enabled, + const QString &text) const; + + virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const; + + virtual void drawItemText(QPainter *painter, const QRect &rect, + int flags, const QPalette &pal, bool enabled, + const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; + + virtual void drawItemPixmap(QPainter *painter, const QRect &rect, + int alignment, const QPixmap &pixmap) const; + + virtual QPalette standardPalette() const; + + enum StateFlag { + State_None = 0x00000000, + State_Enabled = 0x00000001, + State_Raised = 0x00000002, + State_Sunken = 0x00000004, + State_Off = 0x00000008, + State_NoChange = 0x00000010, + State_On = 0x00000020, + State_DownArrow = 0x00000040, + State_Horizontal = 0x00000080, + State_HasFocus = 0x00000100, + State_Top = 0x00000200, + State_Bottom = 0x00000400, + State_FocusAtBorder = 0x00000800, + State_AutoRaise = 0x00001000, + State_MouseOver = 0x00002000, + State_UpArrow = 0x00004000, + State_Selected = 0x00008000, + State_Active = 0x00010000, + State_Window = 0x00020000, + State_Open = 0x00040000, + State_Children = 0x00080000, + State_Item = 0x00100000, + State_Sibling = 0x00200000, + State_Editing = 0x00400000, + State_KeyboardFocusChange = 0x00800000, +#ifdef QT_KEYPAD_NAVIGATION + State_HasEditFocus = 0x01000000, +#endif + State_ReadOnly = 0x02000000, + State_Small = 0x04000000, + State_Mini = 0x08000000 + }; + Q_ENUM(StateFlag) + Q_DECLARE_FLAGS(State, StateFlag) + + + enum PrimitiveElement { + PE_Frame, + PE_FrameDefaultButton, + PE_FrameDockWidget, + PE_FrameFocusRect, + PE_FrameGroupBox, + PE_FrameLineEdit, + PE_FrameMenu, + PE_FrameStatusBar, // ### Qt 6: remove + PE_FrameStatusBarItem = PE_FrameStatusBar, + PE_FrameTabWidget, + PE_FrameWindow, + PE_FrameButtonBevel, + PE_FrameButtonTool, + PE_FrameTabBarBase, + + PE_PanelButtonCommand, + PE_PanelButtonBevel, + PE_PanelButtonTool, + PE_PanelMenuBar, + PE_PanelToolBar, + PE_PanelLineEdit, + + PE_IndicatorArrowDown, + PE_IndicatorArrowLeft, + PE_IndicatorArrowRight, + PE_IndicatorArrowUp, + PE_IndicatorBranch, + PE_IndicatorButtonDropDown, + PE_IndicatorViewItemCheck, // ### Qt 6: remove + PE_IndicatorItemViewItemCheck = PE_IndicatorViewItemCheck, + PE_IndicatorCheckBox, + PE_IndicatorDockWidgetResizeHandle, + PE_IndicatorHeaderArrow, + PE_IndicatorMenuCheckMark, + PE_IndicatorProgressChunk, + PE_IndicatorRadioButton, + PE_IndicatorSpinDown, + PE_IndicatorSpinMinus, + PE_IndicatorSpinPlus, + PE_IndicatorSpinUp, + PE_IndicatorToolBarHandle, + PE_IndicatorToolBarSeparator, + PE_PanelTipLabel, + PE_IndicatorTabTear, + PE_IndicatorTabTearLeft = PE_IndicatorTabTear, + PE_PanelScrollAreaCorner, + + PE_Widget, + + PE_IndicatorColumnViewArrow, + PE_IndicatorItemViewItemDrop, + + PE_PanelItemViewItem, + PE_PanelItemViewRow, // ### Qt 6: remove + + PE_PanelStatusBar, + + PE_IndicatorTabClose, + PE_PanelMenu, + + PE_IndicatorTabTearRight, + + // do not add any values below/greater this + PE_CustomBase = 0xf000000 + }; + Q_ENUM(PrimitiveElement) + + virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, + const QWidget *w = Q_NULLPTR) const = 0; + enum ControlElement { + CE_PushButton, + CE_PushButtonBevel, + CE_PushButtonLabel, + + CE_CheckBox, + CE_CheckBoxLabel, + + CE_RadioButton, + CE_RadioButtonLabel, + + CE_TabBarTab, + CE_TabBarTabShape, + CE_TabBarTabLabel, + + CE_ProgressBar, + CE_ProgressBarGroove, + CE_ProgressBarContents, + CE_ProgressBarLabel, + + CE_MenuItem, + CE_MenuScroller, + CE_MenuVMargin, + CE_MenuHMargin, + CE_MenuTearoff, + CE_MenuEmptyArea, + + CE_MenuBarItem, + CE_MenuBarEmptyArea, + + CE_ToolButtonLabel, + + CE_Header, + CE_HeaderSection, + CE_HeaderLabel, + + CE_ToolBoxTab, + CE_SizeGrip, + CE_Splitter, + CE_RubberBand, + CE_DockWidgetTitle, + + CE_ScrollBarAddLine, + CE_ScrollBarSubLine, + CE_ScrollBarAddPage, + CE_ScrollBarSubPage, + CE_ScrollBarSlider, + CE_ScrollBarFirst, + CE_ScrollBarLast, + + CE_FocusFrame, + CE_ComboBoxLabel, + + CE_ToolBar, + CE_ToolBoxTabShape, + CE_ToolBoxTabLabel, + CE_HeaderEmptyArea, + + CE_ColumnViewGrip, + + CE_ItemViewItem, + + CE_ShapedFrame, + + // do not add any values below/greater than this + CE_CustomBase = 0xf0000000 + }; + Q_ENUM(ControlElement) + + virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, + const QWidget *w = Q_NULLPTR) const = 0; + + enum SubElement { + SE_PushButtonContents, + SE_PushButtonFocusRect, + + SE_CheckBoxIndicator, + SE_CheckBoxContents, + SE_CheckBoxFocusRect, + SE_CheckBoxClickRect, + + SE_RadioButtonIndicator, + SE_RadioButtonContents, + SE_RadioButtonFocusRect, + SE_RadioButtonClickRect, + + SE_ComboBoxFocusRect, + + SE_SliderFocusRect, + + SE_ProgressBarGroove, + SE_ProgressBarContents, + SE_ProgressBarLabel, + + SE_ToolBoxTabContents, + + SE_HeaderLabel, + SE_HeaderArrow, + + SE_TabWidgetTabBar, + SE_TabWidgetTabPane, + SE_TabWidgetTabContents, + SE_TabWidgetLeftCorner, + SE_TabWidgetRightCorner, + + SE_ViewItemCheckIndicator, // ### Qt 6: remove + SE_ItemViewItemCheckIndicator = SE_ViewItemCheckIndicator, + + SE_TabBarTearIndicator, + SE_TabBarTearIndicatorLeft = SE_TabBarTearIndicator, + + SE_TreeViewDisclosureItem, + + SE_LineEditContents, + SE_FrameContents, + + SE_DockWidgetCloseButton, + SE_DockWidgetFloatButton, + SE_DockWidgetTitleBarText, + SE_DockWidgetIcon, + + SE_CheckBoxLayoutItem, + SE_ComboBoxLayoutItem, + SE_DateTimeEditLayoutItem, + SE_DialogButtonBoxLayoutItem, // ### Qt 6: remove + SE_LabelLayoutItem, + SE_ProgressBarLayoutItem, + SE_PushButtonLayoutItem, + SE_RadioButtonLayoutItem, + SE_SliderLayoutItem, + SE_SpinBoxLayoutItem, + SE_ToolButtonLayoutItem, + + SE_FrameLayoutItem, + SE_GroupBoxLayoutItem, + SE_TabWidgetLayoutItem, + + SE_ItemViewItemDecoration, + SE_ItemViewItemText, + SE_ItemViewItemFocusRect, + + SE_TabBarTabLeftButton, + SE_TabBarTabRightButton, + SE_TabBarTabText, + + SE_ShapedFrameContents, + + SE_ToolBarHandle, + + SE_TabBarScrollLeftButton, + SE_TabBarScrollRightButton, + SE_TabBarTearIndicatorRight, + + // do not add any values below/greater than this + SE_CustomBase = 0xf0000000 + }; + Q_ENUM(SubElement) + + virtual QRect subElementRect(SubElement subElement, const QStyleOption *option, + const QWidget *widget = Q_NULLPTR) const = 0; + + + enum ComplexControl { + CC_SpinBox, + CC_ComboBox, + CC_ScrollBar, + CC_Slider, + CC_ToolButton, + CC_TitleBar, + CC_Dial, + CC_GroupBox, + CC_MdiControls, + + // do not add any values below/greater than this + CC_CustomBase = 0xf0000000 + }; + Q_ENUM(ComplexControl) + + enum SubControl { + SC_None = 0x00000000, + + SC_ScrollBarAddLine = 0x00000001, + SC_ScrollBarSubLine = 0x00000002, + SC_ScrollBarAddPage = 0x00000004, + SC_ScrollBarSubPage = 0x00000008, + SC_ScrollBarFirst = 0x00000010, + SC_ScrollBarLast = 0x00000020, + SC_ScrollBarSlider = 0x00000040, + SC_ScrollBarGroove = 0x00000080, + + SC_SpinBoxUp = 0x00000001, + SC_SpinBoxDown = 0x00000002, + SC_SpinBoxFrame = 0x00000004, + SC_SpinBoxEditField = 0x00000008, + + SC_ComboBoxFrame = 0x00000001, + SC_ComboBoxEditField = 0x00000002, + SC_ComboBoxArrow = 0x00000004, + SC_ComboBoxListBoxPopup = 0x00000008, + + SC_SliderGroove = 0x00000001, + SC_SliderHandle = 0x00000002, + SC_SliderTickmarks = 0x00000004, + + SC_ToolButton = 0x00000001, + SC_ToolButtonMenu = 0x00000002, + + SC_TitleBarSysMenu = 0x00000001, + SC_TitleBarMinButton = 0x00000002, + SC_TitleBarMaxButton = 0x00000004, + SC_TitleBarCloseButton = 0x00000008, + SC_TitleBarNormalButton = 0x00000010, + SC_TitleBarShadeButton = 0x00000020, + SC_TitleBarUnshadeButton = 0x00000040, + SC_TitleBarContextHelpButton = 0x00000080, + SC_TitleBarLabel = 0x00000100, + + SC_DialGroove = 0x00000001, + SC_DialHandle = 0x00000002, + SC_DialTickmarks = 0x00000004, + + SC_GroupBoxCheckBox = 0x00000001, + SC_GroupBoxLabel = 0x00000002, + SC_GroupBoxContents = 0x00000004, + SC_GroupBoxFrame = 0x00000008, + + SC_MdiMinButton = 0x00000001, + SC_MdiNormalButton = 0x00000002, + SC_MdiCloseButton = 0x00000004, + + SC_CustomBase = 0xf0000000, + SC_All = 0xffffffff + }; + Q_ENUM(SubControl) + Q_DECLARE_FLAGS(SubControls, SubControl) + + + virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, + const QWidget *widget = Q_NULLPTR) const = 0; + virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, + const QPoint &pt, const QWidget *widget = Q_NULLPTR) const = 0; + virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, + SubControl sc, const QWidget *widget = Q_NULLPTR) const = 0; + + enum PixelMetric { + PM_ButtonMargin, + PM_ButtonDefaultIndicator, + PM_MenuButtonIndicator, + PM_ButtonShiftHorizontal, + PM_ButtonShiftVertical, + + PM_DefaultFrameWidth, + PM_SpinBoxFrameWidth, + PM_ComboBoxFrameWidth, + + PM_MaximumDragDistance, + + PM_ScrollBarExtent, + PM_ScrollBarSliderMin, + + PM_SliderThickness, // total slider thickness + PM_SliderControlThickness, // thickness of the business part + PM_SliderLength, // total length of slider + PM_SliderTickmarkOffset, // + PM_SliderSpaceAvailable, // available space for slider to move + + PM_DockWidgetSeparatorExtent, + PM_DockWidgetHandleExtent, + PM_DockWidgetFrameWidth, + + PM_TabBarTabOverlap, + PM_TabBarTabHSpace, + PM_TabBarTabVSpace, + PM_TabBarBaseHeight, + PM_TabBarBaseOverlap, + + PM_ProgressBarChunkWidth, + + PM_SplitterWidth, + PM_TitleBarHeight, + + PM_MenuScrollerHeight, + PM_MenuHMargin, + PM_MenuVMargin, + PM_MenuPanelWidth, + PM_MenuTearoffHeight, + PM_MenuDesktopFrameWidth, + + PM_MenuBarPanelWidth, + PM_MenuBarItemSpacing, + PM_MenuBarVMargin, + PM_MenuBarHMargin, + + PM_IndicatorWidth, + PM_IndicatorHeight, + PM_ExclusiveIndicatorWidth, + PM_ExclusiveIndicatorHeight, + + PM_DialogButtonsSeparator, + PM_DialogButtonsButtonWidth, + PM_DialogButtonsButtonHeight, + + PM_MdiSubWindowFrameWidth, + PM_MDIFrameWidth = PM_MdiSubWindowFrameWidth, // ### Qt 6: remove + PM_MdiSubWindowMinimizedWidth, + PM_MDIMinimizedWidth = PM_MdiSubWindowMinimizedWidth, // ### Qt 6: remove + + PM_HeaderMargin, + PM_HeaderMarkSize, + PM_HeaderGripMargin, + PM_TabBarTabShiftHorizontal, + PM_TabBarTabShiftVertical, + PM_TabBarScrollButtonWidth, + + PM_ToolBarFrameWidth, + PM_ToolBarHandleExtent, + PM_ToolBarItemSpacing, + PM_ToolBarItemMargin, + PM_ToolBarSeparatorExtent, + PM_ToolBarExtensionExtent, + + PM_SpinBoxSliderHeight, + + PM_DefaultTopLevelMargin, // ### Qt 6: remove + PM_DefaultChildMargin, // ### Qt 6: remove + PM_DefaultLayoutSpacing, // ### Qt 6: remove + + PM_ToolBarIconSize, + PM_ListViewIconSize, + PM_IconViewIconSize, + PM_SmallIconSize, + PM_LargeIconSize, + + PM_FocusFrameVMargin, + PM_FocusFrameHMargin, + + PM_ToolTipLabelFrameWidth, + PM_CheckBoxLabelSpacing, + PM_TabBarIconSize, + PM_SizeGripSize, + PM_DockWidgetTitleMargin, + PM_MessageBoxIconSize, + PM_ButtonIconSize, + + PM_DockWidgetTitleBarButtonMargin, + + PM_RadioButtonLabelSpacing, + PM_LayoutLeftMargin, + PM_LayoutTopMargin, + PM_LayoutRightMargin, + PM_LayoutBottomMargin, + PM_LayoutHorizontalSpacing, + PM_LayoutVerticalSpacing, + PM_TabBar_ScrollButtonOverlap, + + PM_TextCursorWidth, + + PM_TabCloseIndicatorWidth, + PM_TabCloseIndicatorHeight, + + PM_ScrollView_ScrollBarSpacing, + PM_ScrollView_ScrollBarOverlap, + PM_SubMenuOverlap, + PM_TreeViewIndentation, + + PM_HeaderDefaultSectionSizeHorizontal, + PM_HeaderDefaultSectionSizeVertical, + + PM_TitleBarButtonIconSize, + PM_TitleBarButtonSize, + + // do not add any values below/greater than this + PM_CustomBase = 0xf0000000 + }; + Q_ENUM(PixelMetric) + + virtual int pixelMetric(PixelMetric metric, const QStyleOption *option = Q_NULLPTR, + const QWidget *widget = Q_NULLPTR) const = 0; + + enum ContentsType { + CT_PushButton, + CT_CheckBox, + CT_RadioButton, + CT_ToolButton, + CT_ComboBox, + CT_Splitter, + CT_ProgressBar, + CT_MenuItem, + CT_MenuBarItem, + CT_MenuBar, + CT_Menu, + CT_TabBarTab, + CT_Slider, + CT_ScrollBar, + CT_LineEdit, + CT_SpinBox, + CT_SizeGrip, + CT_TabWidget, + CT_DialogButtons, + CT_HeaderSection, + CT_GroupBox, + CT_MdiControls, + CT_ItemViewItem, + // do not add any values below/greater than this + CT_CustomBase = 0xf0000000 + }; + Q_ENUM(ContentsType) + + virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, + const QSize &contentsSize, const QWidget *w = Q_NULLPTR) const = 0; + + enum RequestSoftwareInputPanel { + RSIP_OnMouseClickAndAlreadyFocused, + RSIP_OnMouseClick + }; + Q_ENUM(RequestSoftwareInputPanel) + + enum StyleHint { + SH_EtchDisabledText, + SH_DitherDisabledText, + SH_ScrollBar_MiddleClickAbsolutePosition, + SH_ScrollBar_ScrollWhenPointerLeavesControl, + SH_TabBar_SelectMouseType, + SH_TabBar_Alignment, + SH_Header_ArrowAlignment, + SH_Slider_SnapToValue, + SH_Slider_SloppyKeyEvents, + SH_ProgressDialog_CenterCancelButton, + SH_ProgressDialog_TextLabelAlignment, + SH_PrintDialog_RightAlignButtons, + SH_MainWindow_SpaceBelowMenuBar, + SH_FontDialog_SelectAssociatedText, + SH_Menu_AllowActiveAndDisabled, + SH_Menu_SpaceActivatesItem, + SH_Menu_SubMenuPopupDelay, + SH_ScrollView_FrameOnlyAroundContents, + SH_MenuBar_AltKeyNavigation, + SH_ComboBox_ListMouseTracking, + SH_Menu_MouseTracking, + SH_MenuBar_MouseTracking, + SH_ItemView_ChangeHighlightOnFocus, + SH_Widget_ShareActivation, + SH_Workspace_FillSpaceOnMaximize, + SH_ComboBox_Popup, + SH_TitleBar_NoBorder, + SH_Slider_StopMouseOverSlider, + SH_ScrollBar_StopMouseOverSlider = SH_Slider_StopMouseOverSlider, // ### Qt 6: remove + SH_BlinkCursorWhenTextSelected, + SH_RichText_FullWidthSelection, + SH_Menu_Scrollable, + SH_GroupBox_TextLabelVerticalAlignment, + SH_GroupBox_TextLabelColor, + SH_Menu_SloppySubMenus, + SH_Table_GridLineColor, + SH_LineEdit_PasswordCharacter, + SH_DialogButtons_DefaultButton, + SH_ToolBox_SelectedPageTitleBold, + SH_TabBar_PreferNoArrows, + SH_ScrollBar_LeftClickAbsolutePosition, + SH_ListViewExpand_SelectMouseType, + SH_UnderlineShortcut, + SH_SpinBox_AnimateButton, + SH_SpinBox_KeyPressAutoRepeatRate, + SH_SpinBox_ClickAutoRepeatRate, + SH_Menu_FillScreenWithScroll, + SH_ToolTipLabel_Opacity, + SH_DrawMenuBarSeparator, + SH_TitleBar_ModifyNotification, + SH_Button_FocusPolicy, + SH_MessageBox_UseBorderForButtonSpacing, + SH_TitleBar_AutoRaise, + SH_ToolButton_PopupDelay, + SH_FocusFrame_Mask, + SH_RubberBand_Mask, + SH_WindowFrame_Mask, + SH_SpinControls_DisableOnBounds, + SH_Dial_BackgroundRole, + SH_ComboBox_LayoutDirection, + SH_ItemView_EllipsisLocation, + SH_ItemView_ShowDecorationSelected, + SH_ItemView_ActivateItemOnSingleClick, + SH_ScrollBar_ContextMenu, + SH_ScrollBar_RollBetweenButtons, + SH_Slider_AbsoluteSetButtons, + SH_Slider_PageSetButtons, + SH_Menu_KeyboardSearch, + SH_TabBar_ElideMode, + SH_DialogButtonLayout, + SH_ComboBox_PopupFrameStyle, + SH_MessageBox_TextInteractionFlags, + SH_DialogButtonBox_ButtonsHaveIcons, + SH_SpellCheckUnderlineStyle, + SH_MessageBox_CenterButtons, + SH_Menu_SelectionWrap, + SH_ItemView_MovementWithoutUpdatingSelection, + SH_ToolTip_Mask, + SH_FocusFrame_AboveWidget, + SH_TextControl_FocusIndicatorTextCharFormat, + SH_WizardStyle, + SH_ItemView_ArrowKeysNavigateIntoChildren, + SH_Menu_Mask, + SH_Menu_FlashTriggeredItem, + SH_Menu_FadeOutOnHide, + SH_SpinBox_ClickAutoRepeatThreshold, + SH_ItemView_PaintAlternatingRowColorsForEmptyArea, + SH_FormLayoutWrapPolicy, + SH_TabWidget_DefaultTabPosition, + SH_ToolBar_Movable, + SH_FormLayoutFieldGrowthPolicy, + SH_FormLayoutFormAlignment, + SH_FormLayoutLabelAlignment, + SH_ItemView_DrawDelegateFrame, + SH_TabBar_CloseButtonPosition, + SH_DockWidget_ButtonsHaveFrame, + SH_ToolButtonStyle, + SH_RequestSoftwareInputPanel, + SH_ScrollBar_Transient, + SH_Menu_SupportsSections, + SH_ToolTip_WakeUpDelay, + SH_ToolTip_FallAsleepDelay, + SH_Widget_Animate, + SH_Splitter_OpaqueResize, + // Whether we should use a native popup. + // Only supported for non-editable combo boxes on Mac OS X so far. + SH_ComboBox_UseNativePopup, + SH_LineEdit_PasswordMaskDelay, + SH_TabBar_ChangeCurrentDelay, + SH_Menu_SubMenuUniDirection, + SH_Menu_SubMenuUniDirectionFailCount, + SH_Menu_SubMenuSloppySelectOtherActions, + SH_Menu_SubMenuSloppyCloseTimeout, + SH_Menu_SubMenuResetWhenReenteringParent, + SH_Menu_SubMenuDontStartSloppyOnLeave, + SH_ItemView_ScrollMode, + // Add new style hint values here + + SH_CustomBase = 0xf0000000 + }; + Q_ENUM(StyleHint) + + virtual int styleHint(StyleHint stylehint, const QStyleOption *opt = Q_NULLPTR, + const QWidget *widget = Q_NULLPTR, QStyleHintReturn* returnData = Q_NULLPTR) const = 0; + + enum StandardPixmap { + SP_TitleBarMenuButton, + SP_TitleBarMinButton, + SP_TitleBarMaxButton, + SP_TitleBarCloseButton, + SP_TitleBarNormalButton, + SP_TitleBarShadeButton, + SP_TitleBarUnshadeButton, + SP_TitleBarContextHelpButton, + SP_DockWidgetCloseButton, + SP_MessageBoxInformation, + SP_MessageBoxWarning, + SP_MessageBoxCritical, + SP_MessageBoxQuestion, + SP_DesktopIcon, + SP_TrashIcon, + SP_ComputerIcon, + SP_DriveFDIcon, + SP_DriveHDIcon, + SP_DriveCDIcon, + SP_DriveDVDIcon, + SP_DriveNetIcon, + SP_DirOpenIcon, + SP_DirClosedIcon, + SP_DirLinkIcon, + SP_DirLinkOpenIcon, + SP_FileIcon, + SP_FileLinkIcon, + SP_ToolBarHorizontalExtensionButton, + SP_ToolBarVerticalExtensionButton, + SP_FileDialogStart, + SP_FileDialogEnd, + SP_FileDialogToParent, + SP_FileDialogNewFolder, + SP_FileDialogDetailedView, + SP_FileDialogInfoView, + SP_FileDialogContentsView, + SP_FileDialogListView, + SP_FileDialogBack, + SP_DirIcon, + SP_DialogOkButton, + SP_DialogCancelButton, + SP_DialogHelpButton, + SP_DialogOpenButton, + SP_DialogSaveButton, + SP_DialogCloseButton, + SP_DialogApplyButton, + SP_DialogResetButton, + SP_DialogDiscardButton, + SP_DialogYesButton, + SP_DialogNoButton, + SP_ArrowUp, + SP_ArrowDown, + SP_ArrowLeft, + SP_ArrowRight, + SP_ArrowBack, + SP_ArrowForward, + SP_DirHomeIcon, + SP_CommandLink, + SP_VistaShield, + SP_BrowserReload, + SP_BrowserStop, + SP_MediaPlay, + SP_MediaStop, + SP_MediaPause, + SP_MediaSkipForward, + SP_MediaSkipBackward, + SP_MediaSeekForward, + SP_MediaSeekBackward, + SP_MediaVolume, + SP_MediaVolumeMuted, + SP_LineEditClearButton, + // do not add any values below/greater than this + SP_CustomBase = 0xf0000000 + }; + Q_ENUM(StandardPixmap) + + virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt = Q_NULLPTR, + const QWidget *widget = Q_NULLPTR) const = 0; + + virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = Q_NULLPTR, + const QWidget *widget = Q_NULLPTR) const = 0; + + virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, + const QStyleOption *opt) const = 0; + + static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, + const QRect &logicalRect); + static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, + const QPoint &logicalPos); + static int sliderPositionFromValue(int min, int max, int val, int space, + bool upsideDown = false); + static int sliderValueFromPosition(int min, int max, int pos, int space, + bool upsideDown = false); + static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment); + static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, + const QSize &size, const QRect &rectangle); + + virtual int layoutSpacing(QSizePolicy::ControlType control1, + QSizePolicy::ControlType control2, Qt::Orientation orientation, + const QStyleOption *option = Q_NULLPTR, const QWidget *widget = Q_NULLPTR) const = 0; + int combinedLayoutSpacing(QSizePolicy::ControlTypes controls1, + QSizePolicy::ControlTypes controls2, Qt::Orientation orientation, + QStyleOption *option = Q_NULLPTR, QWidget *widget = Q_NULLPTR) const; + + const QStyle * proxy() const; + +private: + Q_DISABLE_COPY(QStyle) + friend class QWidget; + friend class QWidgetPrivate; + friend class QApplication; + friend class QProxyStyle; + friend class QProxyStylePrivate; + void setProxy(QStyle *style); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QStyle::State) +Q_DECLARE_OPERATORS_FOR_FLAGS(QStyle::SubControls) + +#if !defined(QT_NO_DEBUG_STREAM) +// ### Qt 6: Remove in favor of template<class T> QDebug operator<<(QDebug, const QFlags<T> &). +# if QT_VERSION < QT_VERSION_CHECK(6,0,0) +Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, QStyle::State state); +# endif +#endif + +QT_END_NAMESPACE + +#endif // QSTYLE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyleditemdelegate.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyleditemdelegate.h new file mode 100644 index 000000000..f3b7c4d1f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyleditemdelegate.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTYLEDITEMDELEGATE_H +#define QSTYLEDITEMDELEGATE_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractitemdelegate.h> +#include <QtCore/qstring.h> +#include <QtGui/qpixmap.h> +#include <QtCore/qvariant.h> + +QT_REQUIRE_CONFIG(itemviews); + +QT_BEGIN_NAMESPACE + +class QStyledItemDelegatePrivate; +class QItemEditorFactory; + +class Q_WIDGETS_EXPORT QStyledItemDelegate : public QAbstractItemDelegate +{ + Q_OBJECT + +public: + explicit QStyledItemDelegate(QObject *parent = Q_NULLPTR); + ~QStyledItemDelegate(); + + // painting + void paint(QPainter *painter, + const QStyleOptionViewItem &option, const QModelIndex &index) const Q_DECL_OVERRIDE; + QSize sizeHint(const QStyleOptionViewItem &option, + const QModelIndex &index) const Q_DECL_OVERRIDE; + + // editing + QWidget *createEditor(QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const Q_DECL_OVERRIDE; + + void setEditorData(QWidget *editor, const QModelIndex &index) const Q_DECL_OVERRIDE; + void setModelData(QWidget *editor, + QAbstractItemModel *model, + const QModelIndex &index) const Q_DECL_OVERRIDE; + + void updateEditorGeometry(QWidget *editor, + const QStyleOptionViewItem &option, + const QModelIndex &index) const Q_DECL_OVERRIDE; + + // editor factory + QItemEditorFactory *itemEditorFactory() const; + void setItemEditorFactory(QItemEditorFactory *factory); + + virtual QString displayText(const QVariant &value, const QLocale &locale) const; + +protected: + virtual void initStyleOption(QStyleOptionViewItem *option, + const QModelIndex &index) const; + + bool eventFilter(QObject *object, QEvent *event) Q_DECL_OVERRIDE; + bool editorEvent(QEvent *event, QAbstractItemModel *model, + const QStyleOptionViewItem &option, const QModelIndex &index) Q_DECL_OVERRIDE; + +private: + Q_DECLARE_PRIVATE(QStyledItemDelegate) + Q_DISABLE_COPY(QStyledItemDelegate) +}; + +QT_END_NAMESPACE + +#endif // QSTYLEDITEMDELEGATE_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qstylefactory.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstylefactory.h new file mode 100644 index 000000000..50c3750b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstylefactory.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTYLEFACTORY_H +#define QSTYLEFACTORY_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qstringlist.h> + +QT_BEGIN_NAMESPACE + + +class QStyle; + +class Q_WIDGETS_EXPORT QStyleFactory +{ +public: + static QStringList keys(); + static QStyle *create(const QString&); +}; + +QT_END_NAMESPACE + +#endif // QSTYLEFACTORY_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyleoption.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyleoption.h new file mode 100644 index 000000000..f703c5691 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyleoption.h @@ -0,0 +1,766 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTYLEOPTION_H +#define QSTYLEOPTION_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qlocale.h> +#include <QtCore/qvariant.h> +#if QT_CONFIG(spinbox) +#include <QtWidgets/qabstractspinbox.h> +#endif +#include <QtGui/qicon.h> +#include <QtGui/qmatrix.h> +#if QT_CONFIG(slider) +#include <QtWidgets/qslider.h> +#endif +#include <QtWidgets/qstyle.h> +#if QT_CONFIG(tabbar) +#include <QtWidgets/qtabbar.h> +#endif +#if QT_CONFIG(tabwidget) +#include <QtWidgets/qtabwidget.h> +#endif +#if QT_CONFIG(rubberband) +#include <QtWidgets/qrubberband.h> +#endif +#include <QtWidgets/qframe.h> +#if QT_CONFIG(itemviews) +# include <QtCore/qabstractitemmodel.h> +#endif + +QT_BEGIN_NAMESPACE + + +class QDebug; + +class Q_WIDGETS_EXPORT QStyleOption +{ +public: + enum OptionType { + SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem, + SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header, + SO_DockWidget, SO_ViewItem, SO_TabWidgetFrame, + SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_GraphicsItem, + + SO_Complex = 0xf0000, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox, + SO_TitleBar, SO_GroupBox, SO_SizeGrip, + + SO_CustomBase = 0xf00, + SO_ComplexCustomBase = 0xf000000 + }; + + enum StyleOptionType { Type = SO_Default }; + enum StyleOptionVersion { Version = 1 }; + + int version; + int type; + QStyle::State state; + Qt::LayoutDirection direction; + QRect rect; + QFontMetrics fontMetrics; + QPalette palette; + QObject *styleObject; + + QStyleOption(int version = QStyleOption::Version, int type = SO_Default); + QStyleOption(const QStyleOption &other); + ~QStyleOption(); + + void init(const QWidget *w); + inline void initFrom(const QWidget *w) { init(w); } + QStyleOption &operator=(const QStyleOption &other); +}; + +class Q_WIDGETS_EXPORT QStyleOptionFocusRect : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_FocusRect }; + enum StyleOptionVersion { Version = 1 }; + + QColor backgroundColor; + + QStyleOptionFocusRect(); + QStyleOptionFocusRect(const QStyleOptionFocusRect &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionFocusRect(int version); +}; + +class Q_WIDGETS_EXPORT QStyleOptionFrame : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_Frame }; + enum StyleOptionVersion { Version = 3 }; + + int lineWidth; + int midLineWidth; + enum FrameFeature { + None = 0x00, + Flat = 0x01, + Rounded = 0x02 + }; + Q_DECLARE_FLAGS(FrameFeatures, FrameFeature) + FrameFeatures features; + QFrame::Shape frameShape; + + QStyleOptionFrame(); + QStyleOptionFrame(const QStyleOptionFrame &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionFrame(int version); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionFrame::FrameFeatures) + +typedef Q_DECL_DEPRECATED QStyleOptionFrame QStyleOptionFrameV2; +typedef Q_DECL_DEPRECATED QStyleOptionFrame QStyleOptionFrameV3; + +#if QT_CONFIG(tabwidget) +class Q_WIDGETS_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_TabWidgetFrame }; + enum StyleOptionVersion { Version = 2 }; + + int lineWidth; + int midLineWidth; + QTabBar::Shape shape; + QSize tabBarSize; + QSize rightCornerWidgetSize; + QSize leftCornerWidgetSize; + QRect tabBarRect; + QRect selectedTabRect; + + QStyleOptionTabWidgetFrame(); + inline QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other) + : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionTabWidgetFrame(int version); +}; + +typedef Q_DECL_DEPRECATED QStyleOptionTabWidgetFrame QStyleOptionTabWidgetFrameV2; +#endif // QT_CONFIG(tabwidget) + + +#if QT_CONFIG(tabbar) +class Q_WIDGETS_EXPORT QStyleOptionTabBarBase : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_TabBarBase }; + enum StyleOptionVersion { Version = 2 }; + + QTabBar::Shape shape; + QRect tabBarRect; + QRect selectedTabRect; + bool documentMode; + + QStyleOptionTabBarBase(); + QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionTabBarBase(int version); +}; + +typedef Q_DECL_DEPRECATED QStyleOptionTabBarBase QStyleOptionTabBarBaseV2; +#endif // QT_CONFIG(tabbar) + +class Q_WIDGETS_EXPORT QStyleOptionHeader : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_Header }; + enum StyleOptionVersion { Version = 1 }; + + enum SectionPosition { Beginning, Middle, End, OnlyOneSection }; + enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, + NextAndPreviousAreSelected }; + enum SortIndicator { None, SortUp, SortDown }; + + int section; + QString text; + Qt::Alignment textAlignment; + QIcon icon; + Qt::Alignment iconAlignment; + SectionPosition position; + SelectedPosition selectedPosition; + SortIndicator sortIndicator; + Qt::Orientation orientation; + + QStyleOptionHeader(); + QStyleOptionHeader(const QStyleOptionHeader &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionHeader(int version); +}; + +class Q_WIDGETS_EXPORT QStyleOptionButton : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_Button }; + enum StyleOptionVersion { Version = 1 }; + + enum ButtonFeature { None = 0x00, Flat = 0x01, HasMenu = 0x02, DefaultButton = 0x04, + AutoDefaultButton = 0x08, CommandLinkButton = 0x10 }; + Q_DECLARE_FLAGS(ButtonFeatures, ButtonFeature) + + ButtonFeatures features; + QString text; + QIcon icon; + QSize iconSize; + + QStyleOptionButton(); + QStyleOptionButton(const QStyleOptionButton &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionButton(int version); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionButton::ButtonFeatures) + +#if QT_CONFIG(tabbar) +class Q_WIDGETS_EXPORT QStyleOptionTab : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_Tab }; + enum StyleOptionVersion { Version = 3 }; + + enum TabPosition { Beginning, Middle, End, OnlyOneTab }; + enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected }; + enum CornerWidget { NoCornerWidgets = 0x00, LeftCornerWidget = 0x01, + RightCornerWidget = 0x02 }; + enum TabFeature { None = 0x00, HasFrame = 0x01 }; + Q_DECLARE_FLAGS(CornerWidgets, CornerWidget) + Q_DECLARE_FLAGS(TabFeatures, TabFeature) + + QTabBar::Shape shape; + QString text; + QIcon icon; + int row; + TabPosition position; + SelectedPosition selectedPosition; + CornerWidgets cornerWidgets; + QSize iconSize; + bool documentMode; + QSize leftButtonSize; + QSize rightButtonSize; + TabFeatures features; + + QStyleOptionTab(); + QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionTab(int version); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets) + +typedef Q_DECL_DEPRECATED QStyleOptionTab QStyleOptionTabV2; +typedef Q_DECL_DEPRECATED QStyleOptionTab QStyleOptionTabV3; +#endif // QT_CONFIG(tabbar) + + +#ifndef QT_NO_TOOLBAR + +class Q_WIDGETS_EXPORT QStyleOptionToolBar : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_ToolBar }; + enum StyleOptionVersion { Version = 1 }; + enum ToolBarPosition { Beginning, Middle, End, OnlyOne }; + enum ToolBarFeature { None = 0x0, Movable = 0x1 }; + Q_DECLARE_FLAGS(ToolBarFeatures, ToolBarFeature) + ToolBarPosition positionOfLine; // The toolbar line position + ToolBarPosition positionWithinLine; // The position within a toolbar + Qt::ToolBarArea toolBarArea; // The toolbar docking area + ToolBarFeatures features; + int lineWidth; + int midLineWidth; + QStyleOptionToolBar(); + QStyleOptionToolBar(const QStyleOptionToolBar &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionToolBar(int version); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolBar::ToolBarFeatures) + +#endif // QT_NO_TOOLBAR + +class Q_WIDGETS_EXPORT QStyleOptionProgressBar : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_ProgressBar }; + enum StyleOptionVersion { Version = 2 }; + + int minimum; + int maximum; + int progress; + QString text; + Qt::Alignment textAlignment; + bool textVisible; + Qt::Orientation orientation; // ### Qt 6: remove + bool invertedAppearance; + bool bottomToTop; + + QStyleOptionProgressBar(); + QStyleOptionProgressBar(const QStyleOptionProgressBar &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionProgressBar(int version); +}; + +typedef Q_DECL_DEPRECATED QStyleOptionProgressBar QStyleOptionProgressBarV2; + +class Q_WIDGETS_EXPORT QStyleOptionMenuItem : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_MenuItem }; + enum StyleOptionVersion { Version = 1 }; + + enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff, Margin, + EmptyArea }; + enum CheckType { NotCheckable, Exclusive, NonExclusive }; + + MenuItemType menuItemType; + CheckType checkType; + bool checked; + bool menuHasCheckableItems; + QRect menuRect; + QString text; + QIcon icon; + int maxIconWidth; + int tabWidth; + QFont font; + + QStyleOptionMenuItem(); + QStyleOptionMenuItem(const QStyleOptionMenuItem &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionMenuItem(int version); +}; + +class Q_WIDGETS_EXPORT QStyleOptionDockWidget : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_DockWidget }; + enum StyleOptionVersion { Version = 2 }; + + QString title; + bool closable; + bool movable; + bool floatable; + bool verticalTitleBar; + + QStyleOptionDockWidget(); + QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionDockWidget(int version); +}; + +typedef Q_DECL_DEPRECATED QStyleOptionDockWidget QStyleOptionDockWidgetV2; + +#if QT_CONFIG(itemviews) + +class Q_WIDGETS_EXPORT QStyleOptionViewItem : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_ViewItem }; + enum StyleOptionVersion { Version = 4 }; + + enum Position { Left, Right, Top, Bottom }; + + Qt::Alignment displayAlignment; + Qt::Alignment decorationAlignment; + Qt::TextElideMode textElideMode; + Position decorationPosition; + QSize decorationSize; + QFont font; + bool showDecorationSelected; + + enum ViewItemFeature { + None = 0x00, + WrapText = 0x01, + Alternate = 0x02, + HasCheckIndicator = 0x04, + HasDisplay = 0x08, + HasDecoration = 0x10 + }; + Q_DECLARE_FLAGS(ViewItemFeatures, ViewItemFeature) + + ViewItemFeatures features; + + QLocale locale; + const QWidget *widget; + + enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne }; + + QModelIndex index; + Qt::CheckState checkState; + QIcon icon; + QString text; + ViewItemPosition viewItemPosition; + QBrush backgroundBrush; + + QStyleOptionViewItem(); + QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionViewItem(int version); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItem::ViewItemFeatures) + +typedef Q_DECL_DEPRECATED QStyleOptionViewItem QStyleOptionViewItemV2; +typedef Q_DECL_DEPRECATED QStyleOptionViewItem QStyleOptionViewItemV3; +typedef Q_DECL_DEPRECATED QStyleOptionViewItem QStyleOptionViewItemV4; + +#endif // QT_CONFIG(itemviews) + +class Q_WIDGETS_EXPORT QStyleOptionToolBox : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_ToolBox }; + enum StyleOptionVersion { Version = 2 }; + + QString text; + QIcon icon; + + enum TabPosition { Beginning, Middle, End, OnlyOneTab }; + enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected }; + + TabPosition position; + SelectedPosition selectedPosition; + + QStyleOptionToolBox(); + QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionToolBox(int version); +}; + +typedef Q_DECL_DEPRECATED QStyleOptionToolBox QStyleOptionToolBoxV2; + +#if QT_CONFIG(rubberband) +class Q_WIDGETS_EXPORT QStyleOptionRubberBand : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_RubberBand }; + enum StyleOptionVersion { Version = 1 }; + + QRubberBand::Shape shape; + bool opaque; + + QStyleOptionRubberBand(); + QStyleOptionRubberBand(const QStyleOptionRubberBand &other) : QStyleOption(Version, Type) { *this = other; } + +protected: + QStyleOptionRubberBand(int version); +}; +#endif // QT_CONFIG(rubberband) + +// -------------------------- Complex style options ------------------------------- +class Q_WIDGETS_EXPORT QStyleOptionComplex : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_Complex }; + enum StyleOptionVersion { Version = 1 }; + + QStyle::SubControls subControls; + QStyle::SubControls activeSubControls; + + QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex); + QStyleOptionComplex(const QStyleOptionComplex &other) : QStyleOption(Version, Type) { *this = other; } +}; + +#if QT_CONFIG(slider) +class Q_WIDGETS_EXPORT QStyleOptionSlider : public QStyleOptionComplex +{ +public: + enum StyleOptionType { Type = SO_Slider }; + enum StyleOptionVersion { Version = 1 }; + + Qt::Orientation orientation; + int minimum; + int maximum; + QSlider::TickPosition tickPosition; + int tickInterval; + bool upsideDown; + int sliderPosition; + int sliderValue; + int singleStep; + int pageStep; + qreal notchTarget; + bool dialWrapping; + + QStyleOptionSlider(); + QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; } + +protected: + QStyleOptionSlider(int version); +}; +#endif // QT_CONFIG(slider) + +#if QT_CONFIG(spinbox) +class Q_WIDGETS_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex +{ +public: + enum StyleOptionType { Type = SO_SpinBox }; + enum StyleOptionVersion { Version = 1 }; + + QAbstractSpinBox::ButtonSymbols buttonSymbols; + QAbstractSpinBox::StepEnabled stepEnabled; + bool frame; + + QStyleOptionSpinBox(); + QStyleOptionSpinBox(const QStyleOptionSpinBox &other) : QStyleOptionComplex(Version, Type) { *this = other; } + +protected: + QStyleOptionSpinBox(int version); +}; +#endif // QT_CONFIG(spinbox) + +class Q_WIDGETS_EXPORT QStyleOptionToolButton : public QStyleOptionComplex +{ +public: + enum StyleOptionType { Type = SO_ToolButton }; + enum StyleOptionVersion { Version = 1 }; + + enum ToolButtonFeature { None = 0x00, Arrow = 0x01, Menu = 0x04, MenuButtonPopup = Menu, PopupDelay = 0x08, + HasMenu = 0x10 }; + Q_DECLARE_FLAGS(ToolButtonFeatures, ToolButtonFeature) + + ToolButtonFeatures features; + QIcon icon; + QSize iconSize; + QString text; + Qt::ArrowType arrowType; + Qt::ToolButtonStyle toolButtonStyle; + QPoint pos; + QFont font; + + QStyleOptionToolButton(); + QStyleOptionToolButton(const QStyleOptionToolButton &other) : QStyleOptionComplex(Version, Type) { *this = other; } + +protected: + QStyleOptionToolButton(int version); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures) + +class Q_WIDGETS_EXPORT QStyleOptionComboBox : public QStyleOptionComplex +{ +public: + enum StyleOptionType { Type = SO_ComboBox }; + enum StyleOptionVersion { Version = 1 }; + + bool editable; + QRect popupRect; + bool frame; + QString currentText; + QIcon currentIcon; + QSize iconSize; + + QStyleOptionComboBox(); + QStyleOptionComboBox(const QStyleOptionComboBox &other) : QStyleOptionComplex(Version, Type) { *this = other; } + +protected: + QStyleOptionComboBox(int version); +}; + +class Q_WIDGETS_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex +{ +public: + enum StyleOptionType { Type = SO_TitleBar }; + enum StyleOptionVersion { Version = 1 }; + + QString text; + QIcon icon; + int titleBarState; + Qt::WindowFlags titleBarFlags; + + QStyleOptionTitleBar(); + QStyleOptionTitleBar(const QStyleOptionTitleBar &other) : QStyleOptionComplex(Version, Type) { *this = other; } + +protected: + QStyleOptionTitleBar(int version); +}; + +class Q_WIDGETS_EXPORT QStyleOptionGroupBox : public QStyleOptionComplex +{ +public: + enum StyleOptionType { Type = SO_GroupBox }; + enum StyleOptionVersion { Version = 1 }; + + QStyleOptionFrame::FrameFeatures features; + QString text; + Qt::Alignment textAlignment; + QColor textColor; + int lineWidth; + int midLineWidth; + + QStyleOptionGroupBox(); + QStyleOptionGroupBox(const QStyleOptionGroupBox &other) : QStyleOptionComplex(Version, Type) { *this = other; } +protected: + QStyleOptionGroupBox(int version); +}; + +class Q_WIDGETS_EXPORT QStyleOptionSizeGrip : public QStyleOptionComplex +{ +public: + enum StyleOptionType { Type = SO_SizeGrip }; + enum StyleOptionVersion { Version = 1 }; + + Qt::Corner corner; + + QStyleOptionSizeGrip(); + QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other) : QStyleOptionComplex(Version, Type) { *this = other; } +protected: + QStyleOptionSizeGrip(int version); +}; + +class Q_WIDGETS_EXPORT QStyleOptionGraphicsItem : public QStyleOption +{ +public: + enum StyleOptionType { Type = SO_GraphicsItem }; + enum StyleOptionVersion { Version = 1 }; + + QRectF exposedRect; + QMatrix matrix; + qreal levelOfDetail; + + QStyleOptionGraphicsItem(); + QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other) : QStyleOption(Version, Type) { *this = other; } + static qreal levelOfDetailFromTransform(const QTransform &worldTransform); +protected: + QStyleOptionGraphicsItem(int version); +}; + +template <typename T> +T qstyleoption_cast(const QStyleOption *opt) +{ + typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt; + if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type + || int(Opt::Type) == QStyleOption::SO_Default + || (int(Opt::Type) == QStyleOption::SO_Complex + && opt->type > QStyleOption::SO_Complex))) + return static_cast<T>(opt); + return Q_NULLPTR; +} + +template <typename T> +T qstyleoption_cast(QStyleOption *opt) +{ + typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt; + if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type + || int(Opt::Type) == QStyleOption::SO_Default + || (int(Opt::Type) == QStyleOption::SO_Complex + && opt->type > QStyleOption::SO_Complex))) + return static_cast<T>(opt); + return Q_NULLPTR; +} + +// -------------------------- QStyleHintReturn ------------------------------- +class Q_WIDGETS_EXPORT QStyleHintReturn { +public: + enum HintReturnType { + SH_Default=0xf000, SH_Mask, SH_Variant + }; + + enum StyleOptionType { Type = SH_Default }; + enum StyleOptionVersion { Version = 1 }; + + QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default); + ~QStyleHintReturn(); + + int version; + int type; +}; + +class Q_WIDGETS_EXPORT QStyleHintReturnMask : public QStyleHintReturn { +public: + enum StyleOptionType { Type = SH_Mask }; + enum StyleOptionVersion { Version = 1 }; + + QStyleHintReturnMask(); + ~QStyleHintReturnMask(); + + QRegion region; +}; + +class Q_WIDGETS_EXPORT QStyleHintReturnVariant : public QStyleHintReturn { +public: + enum StyleOptionType { Type = SH_Variant }; + enum StyleOptionVersion { Version = 1 }; + + QStyleHintReturnVariant(); + ~QStyleHintReturnVariant(); + + QVariant variant; +}; + +template <typename T> +T qstyleoption_cast(const QStyleHintReturn *hint) +{ + typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt; + if (hint && hint->version <= Opt::Version && + (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default)) + return static_cast<T>(hint); + return Q_NULLPTR; +} + +template <typename T> +T qstyleoption_cast(QStyleHintReturn *hint) +{ + typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt; + if (hint && hint->version <= Opt::Version && + (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default)) + return static_cast<T>(hint); + return Q_NULLPTR; +} + +#if !defined(QT_NO_DEBUG_STREAM) +Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType); +Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption &option); +#endif + +QT_END_NAMESPACE + +#endif // QSTYLEOPTION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qstylepainter.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstylepainter.h new file mode 100644 index 000000000..191360727 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstylepainter.h @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTYLEPAINTER_H +#define QSTYLEPAINTER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtGui/qpainter.h> +#include <QtWidgets/qstyle.h> +#include <QtWidgets/qwidget.h> + +QT_BEGIN_NAMESPACE + + +class QStylePainter : public QPainter +{ +public: + inline QStylePainter() : QPainter(), widget(Q_NULLPTR), wstyle(Q_NULLPTR) {} + inline explicit QStylePainter(QWidget *w) { begin(w, w); } + inline QStylePainter(QPaintDevice *pd, QWidget *w) { begin(pd, w); } + inline bool begin(QWidget *w) { return begin(w, w); } + inline bool begin(QPaintDevice *pd, QWidget *w) { + Q_ASSERT_X(w, "QStylePainter::QStylePainter", "Widget must be non-zero"); + widget = w; + wstyle = w->style(); + return QPainter::begin(pd); + }; + inline void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption &opt); + inline void drawControl(QStyle::ControlElement ce, const QStyleOption &opt); + inline void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex &opt); + inline void drawItemText(const QRect &r, int flags, const QPalette &pal, bool enabled, + const QString &text, QPalette::ColorRole textRole = QPalette::NoRole); + inline void drawItemPixmap(const QRect &r, int flags, const QPixmap &pixmap); + inline QStyle *style() const { return wstyle; } + +private: + QWidget *widget; + QStyle *wstyle; + Q_DISABLE_COPY(QStylePainter) +}; + +void QStylePainter::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption &opt) +{ + wstyle->drawPrimitive(pe, &opt, this, widget); +} + +void QStylePainter::drawControl(QStyle::ControlElement ce, const QStyleOption &opt) +{ + wstyle->drawControl(ce, &opt, this, widget); +} + +void QStylePainter::drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex &opt) +{ + wstyle->drawComplexControl(cc, &opt, this, widget); +} + +void QStylePainter::drawItemText(const QRect &r, int flags, const QPalette &pal, bool enabled, + const QString &text, QPalette::ColorRole textRole) +{ + wstyle->drawItemText(this, r, flags, pal, enabled, text, textRole); +} + +void QStylePainter::drawItemPixmap(const QRect &r, int flags, const QPixmap &pixmap) +{ + wstyle->drawItemPixmap(this, r, flags, pixmap); +} + +QT_END_NAMESPACE + +#endif // QSTYLEPAINTER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyleplugin.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyleplugin.h new file mode 100644 index 000000000..d44f57d20 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qstyleplugin.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSTYLEPLUGIN_H +#define QSTYLEPLUGIN_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qplugin.h> +#include <QtCore/qfactoryinterface.h> + +QT_BEGIN_NAMESPACE + + +class QStyle; + +#define QStyleFactoryInterface_iid "org.qt-project.Qt.QStyleFactoryInterface" + +class Q_WIDGETS_EXPORT QStylePlugin : public QObject +{ + Q_OBJECT +public: + explicit QStylePlugin(QObject *parent = Q_NULLPTR); + ~QStylePlugin(); + + virtual QStyle *create(const QString &key) = 0; +}; + +QT_END_NAMESPACE + +#endif // QSTYLEPLUGIN_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qsystemtrayicon.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qsystemtrayicon.h new file mode 100644 index 000000000..81f396ed8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qsystemtrayicon.h @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSYSTEMTRAYICON_H +#define QSYSTEMTRAYICON_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> + +#ifndef QT_NO_SYSTEMTRAYICON + +#include <QtGui/qicon.h> + +QT_BEGIN_NAMESPACE + + +class QSystemTrayIconPrivate; + +class QMenu; +class QEvent; +class QWheelEvent; +class QMouseEvent; +class QPoint; + +class Q_WIDGETS_EXPORT QSystemTrayIcon : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip) + Q_PROPERTY(QIcon icon READ icon WRITE setIcon) + Q_PROPERTY(bool visible READ isVisible WRITE setVisible DESIGNABLE false) + +public: + QSystemTrayIcon(QObject *parent = Q_NULLPTR); + QSystemTrayIcon(const QIcon &icon, QObject *parent = Q_NULLPTR); + ~QSystemTrayIcon(); + + enum ActivationReason { + Unknown, + Context, + DoubleClick, + Trigger, + MiddleClick + }; + +#if QT_CONFIG(menu) + void setContextMenu(QMenu *menu); + QMenu *contextMenu() const; +#endif + + QIcon icon() const; + void setIcon(const QIcon &icon); + + QString toolTip() const; + void setToolTip(const QString &tip); + + static bool isSystemTrayAvailable(); + static bool supportsMessages(); + + enum MessageIcon { NoIcon, Information, Warning, Critical }; + + QRect geometry() const; + bool isVisible() const; + +public Q_SLOTS: + void setVisible(bool visible); + inline void show() { setVisible(true); } + inline void hide() { setVisible(false); } + void showMessage(const QString &title, const QString &msg, const QIcon &icon, int msecs = 10000); + void showMessage(const QString &title, const QString &msg, + QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, int msecs = 10000); + +Q_SIGNALS: + void activated(QSystemTrayIcon::ActivationReason reason); + void messageClicked(); + +protected: + bool event(QEvent *event) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QSystemTrayIcon) + Q_DECLARE_PRIVATE(QSystemTrayIcon) + + Q_PRIVATE_SLOT(d_func(), void _q_emitActivated(QPlatformSystemTrayIcon::ActivationReason)) + + friend class QSystemTrayIconSys; + friend class QBalloonTip; +}; + +QT_END_NAMESPACE + +#endif // QT_NO_SYSTEMTRAYICON +#endif // QSYSTEMTRAYICON_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtabbar.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtabbar.h new file mode 100644 index 000000000..ebcd1094e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtabbar.h @@ -0,0 +1,225 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTABBAR_H +#define QTABBAR_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_REQUIRE_CONFIG(tabbar); + +QT_BEGIN_NAMESPACE + +class QIcon; +class QTabBarPrivate; +class QStyleOptionTab; + +class Q_WIDGETS_EXPORT QTabBar: public QWidget +{ + Q_OBJECT + + Q_PROPERTY(Shape shape READ shape WRITE setShape) + Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentChanged) + Q_PROPERTY(int count READ count) + Q_PROPERTY(bool drawBase READ drawBase WRITE setDrawBase) + Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) + Q_PROPERTY(Qt::TextElideMode elideMode READ elideMode WRITE setElideMode) + Q_PROPERTY(bool usesScrollButtons READ usesScrollButtons WRITE setUsesScrollButtons) + Q_PROPERTY(bool tabsClosable READ tabsClosable WRITE setTabsClosable) + Q_PROPERTY(SelectionBehavior selectionBehaviorOnRemove READ selectionBehaviorOnRemove WRITE setSelectionBehaviorOnRemove) + Q_PROPERTY(bool expanding READ expanding WRITE setExpanding) + Q_PROPERTY(bool movable READ isMovable WRITE setMovable) + Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode) + Q_PROPERTY(bool autoHide READ autoHide WRITE setAutoHide) + Q_PROPERTY(bool changeCurrentOnDrag READ changeCurrentOnDrag WRITE setChangeCurrentOnDrag) + +public: + explicit QTabBar(QWidget *parent = Q_NULLPTR); + ~QTabBar(); + + enum Shape { RoundedNorth, RoundedSouth, RoundedWest, RoundedEast, + TriangularNorth, TriangularSouth, TriangularWest, TriangularEast + }; + Q_ENUM(Shape) + + enum ButtonPosition { + LeftSide, + RightSide + }; + + enum SelectionBehavior { + SelectLeftTab, + SelectRightTab, + SelectPreviousTab + }; + + Shape shape() const; + void setShape(Shape shape); + + int addTab(const QString &text); + int addTab(const QIcon &icon, const QString &text); + + int insertTab(int index, const QString &text); + int insertTab(int index, const QIcon&icon, const QString &text); + + void removeTab(int index); + void moveTab(int from, int to); + + bool isTabEnabled(int index) const; + void setTabEnabled(int index, bool); + + QString tabText(int index) const; + void setTabText(int index, const QString &text); + + QColor tabTextColor(int index) const; + void setTabTextColor(int index, const QColor &color); + + QIcon tabIcon(int index) const; + void setTabIcon(int index, const QIcon &icon); + + Qt::TextElideMode elideMode() const; + void setElideMode(Qt::TextElideMode); + +#ifndef QT_NO_TOOLTIP + void setTabToolTip(int index, const QString &tip); + QString tabToolTip(int index) const; +#endif + +#if QT_CONFIG(whatsthis) + void setTabWhatsThis(int index, const QString &text); + QString tabWhatsThis(int index) const; +#endif + + void setTabData(int index, const QVariant &data); + QVariant tabData(int index) const; + + QRect tabRect(int index) const; + int tabAt(const QPoint &pos) const; + + int currentIndex() const; + int count() const; + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + void setDrawBase(bool drawTheBase); + bool drawBase() const; + + QSize iconSize() const; + void setIconSize(const QSize &size); + + bool usesScrollButtons() const; + void setUsesScrollButtons(bool useButtons); + + bool tabsClosable() const; + void setTabsClosable(bool closable); + + void setTabButton(int index, ButtonPosition position, QWidget *widget); + QWidget *tabButton(int index, ButtonPosition position) const; + + SelectionBehavior selectionBehaviorOnRemove() const; + void setSelectionBehaviorOnRemove(SelectionBehavior behavior); + + bool expanding() const; + void setExpanding(bool enabled); + + bool isMovable() const; + void setMovable(bool movable); + + bool documentMode() const; + void setDocumentMode(bool set); + + bool autoHide() const; + void setAutoHide(bool hide); + + bool changeCurrentOnDrag() const; + void setChangeCurrentOnDrag(bool change); + +#ifndef QT_NO_ACCESSIBILITY + QString accessibleTabName(int index) const; + void setAccessibleTabName(int index, const QString &name); +#endif + +public Q_SLOTS: + void setCurrentIndex(int index); + +Q_SIGNALS: + void currentChanged(int index); + void tabCloseRequested(int index); + void tabMoved(int from, int to); + void tabBarClicked(int index); + void tabBarDoubleClicked(int index); + +protected: + virtual QSize tabSizeHint(int index) const; + virtual QSize minimumTabSizeHint(int index) const; + virtual void tabInserted(int index); + virtual void tabRemoved(int index); + virtual void tabLayoutChange(); + + bool event(QEvent *) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + void showEvent(QShowEvent *) Q_DECL_OVERRIDE; + void hideEvent(QHideEvent *) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void mousePressEvent (QMouseEvent *) Q_DECL_OVERRIDE; + void mouseMoveEvent (QMouseEvent *) Q_DECL_OVERRIDE; + void mouseReleaseEvent (QMouseEvent *) Q_DECL_OVERRIDE; +#if QT_CONFIG(wheelevent) + void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE; +#endif + void keyPressEvent(QKeyEvent *) Q_DECL_OVERRIDE; + void changeEvent(QEvent *) Q_DECL_OVERRIDE; + void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionTab *option, int tabIndex) const; + +#ifndef QT_NO_ACCESSIBILITY + friend class QAccessibleTabBar; +#endif +private: + Q_DISABLE_COPY(QTabBar) + Q_DECLARE_PRIVATE(QTabBar) + Q_PRIVATE_SLOT(d_func(), void _q_scrollTabs()) + Q_PRIVATE_SLOT(d_func(), void _q_closeTab()) +}; + +QT_END_NAMESPACE + +#endif // QTABBAR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtableview.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtableview.h new file mode 100644 index 000000000..75f2e7b44 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtableview.h @@ -0,0 +1,195 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTABLEVIEW_H +#define QTABLEVIEW_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractitemview.h> + +QT_REQUIRE_CONFIG(tableview); + +QT_BEGIN_NAMESPACE + +class QHeaderView; +class QTableViewPrivate; + +class Q_WIDGETS_EXPORT QTableView : public QAbstractItemView +{ + Q_OBJECT + Q_PROPERTY(bool showGrid READ showGrid WRITE setShowGrid) + Q_PROPERTY(Qt::PenStyle gridStyle READ gridStyle WRITE setGridStyle) + Q_PROPERTY(bool sortingEnabled READ isSortingEnabled WRITE setSortingEnabled) + Q_PROPERTY(bool wordWrap READ wordWrap WRITE setWordWrap) +#if QT_CONFIG(abstractbutton) + Q_PROPERTY(bool cornerButtonEnabled READ isCornerButtonEnabled WRITE setCornerButtonEnabled) +#endif + +public: + explicit QTableView(QWidget *parent = Q_NULLPTR); + ~QTableView(); + + void setModel(QAbstractItemModel *model) Q_DECL_OVERRIDE; + void setRootIndex(const QModelIndex &index) Q_DECL_OVERRIDE; + void setSelectionModel(QItemSelectionModel *selectionModel) Q_DECL_OVERRIDE; + void doItemsLayout() Q_DECL_OVERRIDE; + + QHeaderView *horizontalHeader() const; + QHeaderView *verticalHeader() const; + void setHorizontalHeader(QHeaderView *header); + void setVerticalHeader(QHeaderView *header); + + int rowViewportPosition(int row) const; + int rowAt(int y) const; + + void setRowHeight(int row, int height); + int rowHeight(int row) const; + + int columnViewportPosition(int column) const; + int columnAt(int x) const; + + void setColumnWidth(int column, int width); + int columnWidth(int column) const; + + bool isRowHidden(int row) const; + void setRowHidden(int row, bool hide); + + bool isColumnHidden(int column) const; + void setColumnHidden(int column, bool hide); + + void setSortingEnabled(bool enable); + bool isSortingEnabled() const; + + bool showGrid() const; + + Qt::PenStyle gridStyle() const; + void setGridStyle(Qt::PenStyle style); + + void setWordWrap(bool on); + bool wordWrap() const; + +#if QT_CONFIG(abstractbutton) + void setCornerButtonEnabled(bool enable); + bool isCornerButtonEnabled() const; +#endif + + QRect visualRect(const QModelIndex &index) const Q_DECL_OVERRIDE; + void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) Q_DECL_OVERRIDE; + QModelIndex indexAt(const QPoint &p) const Q_DECL_OVERRIDE; + + void setSpan(int row, int column, int rowSpan, int columnSpan); + int rowSpan(int row, int column) const; + int columnSpan(int row, int column) const; + void clearSpans(); + + void sortByColumn(int column, Qt::SortOrder order); + +public Q_SLOTS: + void selectRow(int row); + void selectColumn(int column); + void hideRow(int row); + void hideColumn(int column); + void showRow(int row); + void showColumn(int column); + void resizeRowToContents(int row); + void resizeRowsToContents(); + void resizeColumnToContents(int column); + void resizeColumnsToContents(); + void sortByColumn(int column); + void setShowGrid(bool show); + +protected Q_SLOTS: + void rowMoved(int row, int oldIndex, int newIndex); + void columnMoved(int column, int oldIndex, int newIndex); + void rowResized(int row, int oldHeight, int newHeight); + void columnResized(int column, int oldWidth, int newWidth); + void rowCountChanged(int oldCount, int newCount); + void columnCountChanged(int oldCount, int newCount); + +protected: + QTableView(QTableViewPrivate &, QWidget *parent); + void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE; + + QStyleOptionViewItem viewOptions() const Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + + void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE; + + int horizontalOffset() const Q_DECL_OVERRIDE; + int verticalOffset() const Q_DECL_OVERRIDE; + QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) Q_DECL_OVERRIDE; + + void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) Q_DECL_OVERRIDE; + QRegion visualRegionForSelection(const QItemSelection &selection) const Q_DECL_OVERRIDE; + QModelIndexList selectedIndexes() const Q_DECL_OVERRIDE; + + void updateGeometries() Q_DECL_OVERRIDE; + + QSize viewportSizeHint() const Q_DECL_OVERRIDE; + + int sizeHintForRow(int row) const Q_DECL_OVERRIDE; + int sizeHintForColumn(int column) const Q_DECL_OVERRIDE; + + void verticalScrollbarAction(int action) Q_DECL_OVERRIDE; + void horizontalScrollbarAction(int action) Q_DECL_OVERRIDE; + + bool isIndexHidden(const QModelIndex &index) const Q_DECL_OVERRIDE; + + void selectionChanged(const QItemSelection &selected, + const QItemSelection &deselected) Q_DECL_OVERRIDE; + void currentChanged(const QModelIndex ¤t, + const QModelIndex &previous) Q_DECL_OVERRIDE; + +private: + friend class QAccessibleItemView; + int visualIndex(const QModelIndex &index) const; + + Q_DECLARE_PRIVATE(QTableView) + Q_DISABLE_COPY(QTableView) + Q_PRIVATE_SLOT(d_func(), void _q_selectRow(int)) + Q_PRIVATE_SLOT(d_func(), void _q_selectColumn(int)) + Q_PRIVATE_SLOT(d_func(), void _q_updateSpanInsertedRows(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_updateSpanInsertedColumns(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_updateSpanRemovedRows(QModelIndex,int,int)) + Q_PRIVATE_SLOT(d_func(), void _q_updateSpanRemovedColumns(QModelIndex,int,int)) +}; + +QT_END_NAMESPACE + +#endif // QTABLEVIEW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtablewidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtablewidget.h new file mode 100644 index 000000000..3fecf194e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtablewidget.h @@ -0,0 +1,372 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTABLEWIDGET_H +#define QTABLEWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qtableview.h> +#include <QtCore/qvariant.h> +#include <QtCore/qvector.h> + +QT_REQUIRE_CONFIG(tablewidget); + +QT_BEGIN_NAMESPACE + +class Q_WIDGETS_EXPORT QTableWidgetSelectionRange +{ +public: + QTableWidgetSelectionRange(); + QTableWidgetSelectionRange(int top, int left, int bottom, int right); + QTableWidgetSelectionRange(const QTableWidgetSelectionRange &other); + ~QTableWidgetSelectionRange(); + + inline int topRow() const { return top; } + inline int bottomRow() const { return bottom; } + inline int leftColumn() const { return left; } + inline int rightColumn() const { return right; } + inline int rowCount() const { return bottom - top + 1; } + inline int columnCount() const { return right - left + 1; } + +private: + int top, left, bottom, right; +}; + +class QTableWidget; +class QTableModel; +class QWidgetItemData; +class QTableWidgetItemPrivate; + +class Q_WIDGETS_EXPORT QTableWidgetItem +{ + friend class QTableWidget; + friend class QTableModel; +public: + enum ItemType { Type = 0, UserType = 1000 }; + explicit QTableWidgetItem(int type = Type); + explicit QTableWidgetItem(const QString &text, int type = Type); + explicit QTableWidgetItem(const QIcon &icon, const QString &text, int type = Type); + QTableWidgetItem(const QTableWidgetItem &other); + virtual ~QTableWidgetItem(); + + virtual QTableWidgetItem *clone() const; + + inline QTableWidget *tableWidget() const { return view; } + + inline int row() const; + inline int column() const; + + inline void setSelected(bool select); + inline bool isSelected() const; + + inline Qt::ItemFlags flags() const { return itemFlags; } + void setFlags(Qt::ItemFlags flags); + + inline QString text() const + { return data(Qt::DisplayRole).toString(); } + inline void setText(const QString &text); + + inline QIcon icon() const + { return qvariant_cast<QIcon>(data(Qt::DecorationRole)); } + inline void setIcon(const QIcon &icon); + + inline QString statusTip() const + { return data(Qt::StatusTipRole).toString(); } + inline void setStatusTip(const QString &statusTip); + +#ifndef QT_NO_TOOLTIP + inline QString toolTip() const + { return data(Qt::ToolTipRole).toString(); } + inline void setToolTip(const QString &toolTip); +#endif + +#if QT_CONFIG(whatsthis) + inline QString whatsThis() const + { return data(Qt::WhatsThisRole).toString(); } + inline void setWhatsThis(const QString &whatsThis); +#endif + + inline QFont font() const + { return qvariant_cast<QFont>(data(Qt::FontRole)); } + inline void setFont(const QFont &font); + + inline int textAlignment() const + { return data(Qt::TextAlignmentRole).toInt(); } + inline void setTextAlignment(int alignment) + { setData(Qt::TextAlignmentRole, alignment); } + + inline QColor backgroundColor() const + { return qvariant_cast<QColor>(data(Qt::BackgroundColorRole)); } + inline void setBackgroundColor(const QColor &color) + { setData(Qt::BackgroundColorRole, color); } + + inline QBrush background() const + { return qvariant_cast<QBrush>(data(Qt::BackgroundRole)); } + inline void setBackground(const QBrush &brush) + { setData(Qt::BackgroundRole, brush); } + + inline QColor textColor() const + { return qvariant_cast<QColor>(data(Qt::TextColorRole)); } + inline void setTextColor(const QColor &color) + { setData(Qt::TextColorRole, color); } + + inline QBrush foreground() const + { return qvariant_cast<QBrush>(data(Qt::ForegroundRole)); } + inline void setForeground(const QBrush &brush) + { setData(Qt::ForegroundRole, brush); } + + inline Qt::CheckState checkState() const + { return static_cast<Qt::CheckState>(data(Qt::CheckStateRole).toInt()); } + inline void setCheckState(Qt::CheckState state) + { setData(Qt::CheckStateRole, state); } + + inline QSize sizeHint() const + { return qvariant_cast<QSize>(data(Qt::SizeHintRole)); } + inline void setSizeHint(const QSize &size) + { setData(Qt::SizeHintRole, size); } + + virtual QVariant data(int role) const; + virtual void setData(int role, const QVariant &value); + + virtual bool operator<(const QTableWidgetItem &other) const; + +#ifndef QT_NO_DATASTREAM + virtual void read(QDataStream &in); + virtual void write(QDataStream &out) const; +#endif + QTableWidgetItem &operator=(const QTableWidgetItem &other); + + inline int type() const { return rtti; } + +private: + int rtti; + QVector<QWidgetItemData> values; + QTableWidget *view; + QTableWidgetItemPrivate *d; + Qt::ItemFlags itemFlags; +}; + +inline void QTableWidgetItem::setText(const QString &atext) +{ setData(Qt::DisplayRole, atext); } + +inline void QTableWidgetItem::setIcon(const QIcon &aicon) +{ setData(Qt::DecorationRole, aicon); } + +inline void QTableWidgetItem::setStatusTip(const QString &astatusTip) +{ setData(Qt::StatusTipRole, astatusTip); } + +#ifndef QT_NO_TOOLTIP +inline void QTableWidgetItem::setToolTip(const QString &atoolTip) +{ setData(Qt::ToolTipRole, atoolTip); } +#endif + +#if QT_CONFIG(whatsthis) +inline void QTableWidgetItem::setWhatsThis(const QString &awhatsThis) +{ setData(Qt::WhatsThisRole, awhatsThis); } +#endif + +inline void QTableWidgetItem::setFont(const QFont &afont) +{ setData(Qt::FontRole, afont); } + +#ifndef QT_NO_DATASTREAM +Q_WIDGETS_EXPORT QDataStream &operator>>(QDataStream &in, QTableWidgetItem &item); +Q_WIDGETS_EXPORT QDataStream &operator<<(QDataStream &out, const QTableWidgetItem &item); +#endif + +class QTableWidgetPrivate; + +class Q_WIDGETS_EXPORT QTableWidget : public QTableView +{ + Q_OBJECT + Q_PROPERTY(int rowCount READ rowCount WRITE setRowCount) + Q_PROPERTY(int columnCount READ columnCount WRITE setColumnCount) + + friend class QTableModel; +public: + explicit QTableWidget(QWidget *parent = Q_NULLPTR); + QTableWidget(int rows, int columns, QWidget *parent = Q_NULLPTR); + ~QTableWidget(); + + void setRowCount(int rows); + int rowCount() const; + + void setColumnCount(int columns); + int columnCount() const; + + int row(const QTableWidgetItem *item) const; + int column(const QTableWidgetItem *item) const; + + QTableWidgetItem *item(int row, int column) const; + void setItem(int row, int column, QTableWidgetItem *item); + QTableWidgetItem *takeItem(int row, int column); + + QTableWidgetItem *verticalHeaderItem(int row) const; + void setVerticalHeaderItem(int row, QTableWidgetItem *item); + QTableWidgetItem *takeVerticalHeaderItem(int row); + + QTableWidgetItem *horizontalHeaderItem(int column) const; + void setHorizontalHeaderItem(int column, QTableWidgetItem *item); + QTableWidgetItem *takeHorizontalHeaderItem(int column); + void setVerticalHeaderLabels(const QStringList &labels); + void setHorizontalHeaderLabels(const QStringList &labels); + + int currentRow() const; + int currentColumn() const; + QTableWidgetItem *currentItem() const; + void setCurrentItem(QTableWidgetItem *item); + void setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command); + void setCurrentCell(int row, int column); + void setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command); + + void sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder); + void setSortingEnabled(bool enable); + bool isSortingEnabled() const; + + void editItem(QTableWidgetItem *item); + void openPersistentEditor(QTableWidgetItem *item); + void closePersistentEditor(QTableWidgetItem *item); + + QWidget *cellWidget(int row, int column) const; + void setCellWidget(int row, int column, QWidget *widget); + inline void removeCellWidget(int row, int column); + + bool isItemSelected(const QTableWidgetItem *item) const; + void setItemSelected(const QTableWidgetItem *item, bool select); + void setRangeSelected(const QTableWidgetSelectionRange &range, bool select); + + QList<QTableWidgetSelectionRange> selectedRanges() const; + QList<QTableWidgetItem*> selectedItems() const; + QList<QTableWidgetItem*> findItems(const QString &text, Qt::MatchFlags flags) const; + + int visualRow(int logicalRow) const; + int visualColumn(int logicalColumn) const; + + QTableWidgetItem *itemAt(const QPoint &p) const; + inline QTableWidgetItem *itemAt(int x, int y) const; + QRect visualItemRect(const QTableWidgetItem *item) const; + + const QTableWidgetItem *itemPrototype() const; + void setItemPrototype(const QTableWidgetItem *item); + +public Q_SLOTS: + void scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible); + void insertRow(int row); + void insertColumn(int column); + void removeRow(int row); + void removeColumn(int column); + void clear(); + void clearContents(); + +Q_SIGNALS: + void itemPressed(QTableWidgetItem *item); + void itemClicked(QTableWidgetItem *item); + void itemDoubleClicked(QTableWidgetItem *item); + + void itemActivated(QTableWidgetItem *item); + void itemEntered(QTableWidgetItem *item); + void itemChanged(QTableWidgetItem *item); + + void currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous); + void itemSelectionChanged(); + + void cellPressed(int row, int column); + void cellClicked(int row, int column); + void cellDoubleClicked(int row, int column); + + void cellActivated(int row, int column); + void cellEntered(int row, int column); + void cellChanged(int row, int column); + + void currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + virtual QStringList mimeTypes() const; +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + virtual QMimeData *mimeData(const QList<QTableWidgetItem *> &items) const; +#else + virtual QMimeData *mimeData(const QList<QTableWidgetItem*> items) const; +#endif + virtual bool dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action); + virtual Qt::DropActions supportedDropActions() const; + QList<QTableWidgetItem*> items(const QMimeData *data) const; + + QModelIndex indexFromItem(QTableWidgetItem *item) const; + QTableWidgetItem *itemFromIndex(const QModelIndex &index) const; +#if QT_CONFIG(draganddrop) + void dropEvent(QDropEvent *event) Q_DECL_OVERRIDE; +#endif +private: + void setModel(QAbstractItemModel *model) Q_DECL_OVERRIDE; + + Q_DECLARE_PRIVATE(QTableWidget) + Q_DISABLE_COPY(QTableWidget) + + Q_PRIVATE_SLOT(d_func(), void _q_emitItemPressed(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemClicked(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemDoubleClicked(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemActivated(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemEntered(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemChanged(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitCurrentItemChanged(const QModelIndex &previous, const QModelIndex ¤t)) + Q_PRIVATE_SLOT(d_func(), void _q_sort()) + Q_PRIVATE_SLOT(d_func(), void _q_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)) +}; + +inline void QTableWidget::removeCellWidget(int arow, int acolumn) +{ setCellWidget(arow, acolumn, Q_NULLPTR); } + +inline QTableWidgetItem *QTableWidget::itemAt(int ax, int ay) const +{ return itemAt(QPoint(ax, ay)); } + +inline int QTableWidgetItem::row() const +{ return (view ? view->row(this) : -1); } + +inline int QTableWidgetItem::column() const +{ return (view ? view->column(this) : -1); } + +inline void QTableWidgetItem::setSelected(bool aselect) +{ if (view) view->setItemSelected(this, aselect); } + +inline bool QTableWidgetItem::isSelected() const +{ return (view ? view->isItemSelected(this) : false); } + +QT_END_NAMESPACE + +#endif // QTABLEWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtabwidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtabwidget.h new file mode 100644 index 000000000..b80fdba1f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtabwidget.h @@ -0,0 +1,185 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTABWIDGET_H +#define QTABWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> +#include <QtGui/qicon.h> + +QT_REQUIRE_CONFIG(tabwidget); + +QT_BEGIN_NAMESPACE + +class QTabBar; +class QTabWidgetPrivate; +class QStyleOptionTabWidgetFrame; + +class Q_WIDGETS_EXPORT QTabWidget : public QWidget +{ + Q_OBJECT + Q_PROPERTY(TabPosition tabPosition READ tabPosition WRITE setTabPosition) + Q_PROPERTY(TabShape tabShape READ tabShape WRITE setTabShape) + Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentChanged) + Q_PROPERTY(int count READ count) + Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) + Q_PROPERTY(Qt::TextElideMode elideMode READ elideMode WRITE setElideMode) + Q_PROPERTY(bool usesScrollButtons READ usesScrollButtons WRITE setUsesScrollButtons) + Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode) + Q_PROPERTY(bool tabsClosable READ tabsClosable WRITE setTabsClosable) + Q_PROPERTY(bool movable READ isMovable WRITE setMovable) + Q_PROPERTY(bool tabBarAutoHide READ tabBarAutoHide WRITE setTabBarAutoHide) + +public: + explicit QTabWidget(QWidget *parent = Q_NULLPTR); + ~QTabWidget(); + + int addTab(QWidget *widget, const QString &); + int addTab(QWidget *widget, const QIcon& icon, const QString &label); + + int insertTab(int index, QWidget *widget, const QString &); + int insertTab(int index, QWidget *widget, const QIcon& icon, const QString &label); + + void removeTab(int index); + + bool isTabEnabled(int index) const; + void setTabEnabled(int index, bool); + + QString tabText(int index) const; + void setTabText(int index, const QString &); + + QIcon tabIcon(int index) const; + void setTabIcon(int index, const QIcon & icon); + +#ifndef QT_NO_TOOLTIP + void setTabToolTip(int index, const QString & tip); + QString tabToolTip(int index) const; +#endif + +#if QT_CONFIG(whatsthis) + void setTabWhatsThis(int index, const QString &text); + QString tabWhatsThis(int index) const; +#endif + + int currentIndex() const; + QWidget *currentWidget() const; + QWidget *widget(int index) const; + int indexOf(QWidget *widget) const; + int count() const; + + enum TabPosition { North, South, West, East }; + Q_ENUM(TabPosition) + TabPosition tabPosition() const; + void setTabPosition(TabPosition); + + bool tabsClosable() const; + void setTabsClosable(bool closeable); + + bool isMovable() const; + void setMovable(bool movable); + + enum TabShape { Rounded, Triangular }; + Q_ENUM(TabShape) + TabShape tabShape() const; + void setTabShape(TabShape s); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + int heightForWidth(int width) const Q_DECL_OVERRIDE; + bool hasHeightForWidth() const Q_DECL_OVERRIDE; + + void setCornerWidget(QWidget * w, Qt::Corner corner = Qt::TopRightCorner); + QWidget * cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const; + + Qt::TextElideMode elideMode() const; + void setElideMode(Qt::TextElideMode); + + QSize iconSize() const; + void setIconSize(const QSize &size); + + bool usesScrollButtons() const; + void setUsesScrollButtons(bool useButtons); + + bool documentMode() const; + void setDocumentMode(bool set); + + bool tabBarAutoHide() const; + void setTabBarAutoHide(bool enabled); + + void clear(); + + QTabBar* tabBar() const; + +public Q_SLOTS: + void setCurrentIndex(int index); + void setCurrentWidget(QWidget *widget); + +Q_SIGNALS: + void currentChanged(int index); + void tabCloseRequested(int index); + void tabBarClicked(int index); + void tabBarDoubleClicked(int index); + +protected: + virtual void tabInserted(int index); + virtual void tabRemoved(int index); + + void showEvent(QShowEvent *) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void setTabBar(QTabBar *); + void changeEvent(QEvent *) Q_DECL_OVERRIDE; + bool event(QEvent *) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionTabWidgetFrame *option) const; + + +private: + Q_DECLARE_PRIVATE(QTabWidget) + Q_DISABLE_COPY(QTabWidget) + Q_PRIVATE_SLOT(d_func(), void _q_showTab(int)) + Q_PRIVATE_SLOT(d_func(), void _q_removeTab(int)) + Q_PRIVATE_SLOT(d_func(), void _q_tabMoved(int, int)) + void setUpLayout(bool = false); +}; + +QT_END_NAMESPACE + +#endif // QTABWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtextbrowser.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtextbrowser.h new file mode 100644 index 000000000..f36c86bc8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtextbrowser.h @@ -0,0 +1,126 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTBROWSER_H +#define QTEXTBROWSER_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qtextedit.h> +#include <QtCore/qurl.h> + +QT_REQUIRE_CONFIG(textbrowser); + +QT_BEGIN_NAMESPACE + +class QTextBrowserPrivate; + +class Q_WIDGETS_EXPORT QTextBrowser : public QTextEdit +{ + Q_OBJECT + + Q_PROPERTY(QUrl source READ source WRITE setSource) + Q_OVERRIDE(bool modified SCRIPTABLE false) + Q_OVERRIDE(bool readOnly DESIGNABLE false SCRIPTABLE false) + Q_OVERRIDE(bool undoRedoEnabled DESIGNABLE false SCRIPTABLE false) + Q_PROPERTY(QStringList searchPaths READ searchPaths WRITE setSearchPaths) + Q_PROPERTY(bool openExternalLinks READ openExternalLinks WRITE setOpenExternalLinks) + Q_PROPERTY(bool openLinks READ openLinks WRITE setOpenLinks) + +public: + explicit QTextBrowser(QWidget* parent = Q_NULLPTR); + virtual ~QTextBrowser(); + + QUrl source() const; + + QStringList searchPaths() const; + void setSearchPaths(const QStringList &paths); + + virtual QVariant loadResource(int type, const QUrl &name) Q_DECL_OVERRIDE; + + bool isBackwardAvailable() const; + bool isForwardAvailable() const; + void clearHistory(); + QString historyTitle(int) const; + QUrl historyUrl(int) const; + int backwardHistoryCount() const; + int forwardHistoryCount() const; + + bool openExternalLinks() const; + void setOpenExternalLinks(bool open); + + bool openLinks() const; + void setOpenLinks(bool open); + +public Q_SLOTS: + virtual void setSource(const QUrl &name); + virtual void backward(); + virtual void forward(); + virtual void home(); + virtual void reload(); + +Q_SIGNALS: + void backwardAvailable(bool); + void forwardAvailable(bool); + void historyChanged(); + void sourceChanged(const QUrl &); + void highlighted(const QUrl &); + void highlighted(const QString &); + void anchorClicked(const QUrl &); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + virtual void keyPressEvent(QKeyEvent *ev) Q_DECL_OVERRIDE; + virtual void mouseMoveEvent(QMouseEvent *ev) Q_DECL_OVERRIDE; + virtual void mousePressEvent(QMouseEvent *ev) Q_DECL_OVERRIDE; + virtual void mouseReleaseEvent(QMouseEvent *ev) Q_DECL_OVERRIDE; + virtual void focusOutEvent(QFocusEvent *ev) Q_DECL_OVERRIDE; + virtual bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE; + virtual void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QTextBrowser) + Q_DECLARE_PRIVATE(QTextBrowser) + Q_PRIVATE_SLOT(d_func(), void _q_documentModified()) + Q_PRIVATE_SLOT(d_func(), void _q_activateAnchor(const QString &)) + Q_PRIVATE_SLOT(d_func(), void _q_highlightLink(const QString &)) +}; + +QT_END_NAMESPACE + +#endif // QTEXTBROWSER_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtextedit.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtextedit.h new file mode 100644 index 000000000..ff52fde2e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtextedit.h @@ -0,0 +1,322 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTEDIT_H +#define QTEXTEDIT_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractscrollarea.h> +#include <QtGui/qtextdocument.h> +#include <QtGui/qtextoption.h> +#include <QtGui/qtextcursor.h> +#include <QtGui/qtextformat.h> + +QT_REQUIRE_CONFIG(textedit); + +QT_BEGIN_NAMESPACE + +class QStyleSheet; +class QTextDocument; +class QMenu; +class QTextEditPrivate; +class QMimeData; +class QPagedPaintDevice; + +class Q_WIDGETS_EXPORT QTextEdit : public QAbstractScrollArea +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QTextEdit) + Q_PROPERTY(AutoFormatting autoFormatting READ autoFormatting WRITE setAutoFormatting) + Q_PROPERTY(bool tabChangesFocus READ tabChangesFocus WRITE setTabChangesFocus) + Q_PROPERTY(QString documentTitle READ documentTitle WRITE setDocumentTitle) + Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled) + Q_PROPERTY(LineWrapMode lineWrapMode READ lineWrapMode WRITE setLineWrapMode) + QDOC_PROPERTY(QTextOption::WrapMode wordWrapMode READ wordWrapMode WRITE setWordWrapMode) + Q_PROPERTY(int lineWrapColumnOrWidth READ lineWrapColumnOrWidth WRITE setLineWrapColumnOrWidth) + Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) +#ifndef QT_NO_TEXTHTMLPARSER + Q_PROPERTY(QString html READ toHtml WRITE setHtml NOTIFY textChanged USER true) +#endif + Q_PROPERTY(QString plainText READ toPlainText WRITE setPlainText DESIGNABLE false) + Q_PROPERTY(bool overwriteMode READ overwriteMode WRITE setOverwriteMode) + Q_PROPERTY(int tabStopWidth READ tabStopWidth WRITE setTabStopWidth) + Q_PROPERTY(bool acceptRichText READ acceptRichText WRITE setAcceptRichText) + Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth) + Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags WRITE setTextInteractionFlags) + Q_PROPERTY(QTextDocument *document READ document WRITE setDocument DESIGNABLE false) + Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText) +public: + enum LineWrapMode { + NoWrap, + WidgetWidth, + FixedPixelWidth, + FixedColumnWidth + }; + Q_ENUM(LineWrapMode) + + enum AutoFormattingFlag { + AutoNone = 0, + AutoBulletList = 0x00000001, + AutoAll = 0xffffffff + }; + + Q_DECLARE_FLAGS(AutoFormatting, AutoFormattingFlag) + Q_FLAG(AutoFormatting) + + explicit QTextEdit(QWidget *parent = Q_NULLPTR); + explicit QTextEdit(const QString &text, QWidget *parent = Q_NULLPTR); + virtual ~QTextEdit(); + + void setDocument(QTextDocument *document); + QTextDocument *document() const; + + void setPlaceholderText(const QString &placeholderText); + QString placeholderText() const; + + void setTextCursor(const QTextCursor &cursor); + QTextCursor textCursor() const; + + bool isReadOnly() const; + void setReadOnly(bool ro); + + void setTextInteractionFlags(Qt::TextInteractionFlags flags); + Qt::TextInteractionFlags textInteractionFlags() const; + + qreal fontPointSize() const; + QString fontFamily() const; + int fontWeight() const; + bool fontUnderline() const; + bool fontItalic() const; + QColor textColor() const; + QColor textBackgroundColor() const; + QFont currentFont() const; + Qt::Alignment alignment() const; + + void mergeCurrentCharFormat(const QTextCharFormat &modifier); + + void setCurrentCharFormat(const QTextCharFormat &format); + QTextCharFormat currentCharFormat() const; + + AutoFormatting autoFormatting() const; + void setAutoFormatting(AutoFormatting features); + + bool tabChangesFocus() const; + void setTabChangesFocus(bool b); + + inline void setDocumentTitle(const QString &title) + { document()->setMetaInformation(QTextDocument::DocumentTitle, title); } + inline QString documentTitle() const + { return document()->metaInformation(QTextDocument::DocumentTitle); } + + inline bool isUndoRedoEnabled() const + { return document()->isUndoRedoEnabled(); } + inline void setUndoRedoEnabled(bool enable) + { document()->setUndoRedoEnabled(enable); } + + LineWrapMode lineWrapMode() const; + void setLineWrapMode(LineWrapMode mode); + + int lineWrapColumnOrWidth() const; + void setLineWrapColumnOrWidth(int w); + + QTextOption::WrapMode wordWrapMode() const; + void setWordWrapMode(QTextOption::WrapMode policy); + + bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); +#ifndef QT_NO_REGEXP + bool find(const QRegExp &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); +#endif + + QString toPlainText() const; +#ifndef QT_NO_TEXTHTMLPARSER + QString toHtml() const; +#endif + + void ensureCursorVisible(); + + Q_INVOKABLE virtual QVariant loadResource(int type, const QUrl &name); +#ifndef QT_NO_CONTEXTMENU + QMenu *createStandardContextMenu(); + QMenu *createStandardContextMenu(const QPoint &position); +#endif + + QTextCursor cursorForPosition(const QPoint &pos) const; + QRect cursorRect(const QTextCursor &cursor) const; + QRect cursorRect() const; + + QString anchorAt(const QPoint& pos) const; + + bool overwriteMode() const; + void setOverwriteMode(bool overwrite); + + int tabStopWidth() const; + void setTabStopWidth(int width); + + int cursorWidth() const; + void setCursorWidth(int width); + + bool acceptRichText() const; + void setAcceptRichText(bool accept); + + struct ExtraSelection + { + QTextCursor cursor; + QTextCharFormat format; + }; + void setExtraSelections(const QList<ExtraSelection> &selections); + QList<ExtraSelection> extraSelections() const; + + void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); + + bool canPaste() const; + + void print(QPagedPaintDevice *printer) const; + + QVariant inputMethodQuery(Qt::InputMethodQuery property) const Q_DECL_OVERRIDE; + Q_INVOKABLE QVariant inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const; + +public Q_SLOTS: + void setFontPointSize(qreal s); + void setFontFamily(const QString &fontFamily); + void setFontWeight(int w); + void setFontUnderline(bool b); + void setFontItalic(bool b); + void setTextColor(const QColor &c); + void setTextBackgroundColor(const QColor &c); + void setCurrentFont(const QFont &f); + void setAlignment(Qt::Alignment a); + + void setPlainText(const QString &text); +#ifndef QT_NO_TEXTHTMLPARSER + void setHtml(const QString &text); +#endif + void setText(const QString &text); + +#ifndef QT_NO_CLIPBOARD + void cut(); + void copy(); + void paste(); +#endif + + void undo(); + void redo(); + + void clear(); + void selectAll(); + + void insertPlainText(const QString &text); +#ifndef QT_NO_TEXTHTMLPARSER + void insertHtml(const QString &text); +#endif // QT_NO_TEXTHTMLPARSER + + void append(const QString &text); + + void scrollToAnchor(const QString &name); + + void zoomIn(int range = 1); + void zoomOut(int range = 1); + +Q_SIGNALS: + void textChanged(); + void undoAvailable(bool b); + void redoAvailable(bool b); + void currentCharFormatChanged(const QTextCharFormat &format); + void copyAvailable(bool b); + void selectionChanged(); + void cursorPositionChanged(); + +protected: + virtual bool event(QEvent *e) Q_DECL_OVERRIDE; + virtual void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE; + virtual void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + virtual void keyReleaseEvent(QKeyEvent *e) Q_DECL_OVERRIDE; + virtual void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; + virtual void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; + virtual void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + virtual void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + virtual void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + virtual void mouseDoubleClickEvent(QMouseEvent *e) Q_DECL_OVERRIDE; + virtual bool focusNextPrevChild(bool next) Q_DECL_OVERRIDE; +#ifndef QT_NO_CONTEXTMENU + virtual void contextMenuEvent(QContextMenuEvent *e) Q_DECL_OVERRIDE; +#endif +#ifndef QT_NO_DRAGANDDROP + virtual void dragEnterEvent(QDragEnterEvent *e) Q_DECL_OVERRIDE; + virtual void dragLeaveEvent(QDragLeaveEvent *e) Q_DECL_OVERRIDE; + virtual void dragMoveEvent(QDragMoveEvent *e) Q_DECL_OVERRIDE; + virtual void dropEvent(QDropEvent *e) Q_DECL_OVERRIDE; +#endif + virtual void focusInEvent(QFocusEvent *e) Q_DECL_OVERRIDE; + virtual void focusOutEvent(QFocusEvent *e) Q_DECL_OVERRIDE; + virtual void showEvent(QShowEvent *) Q_DECL_OVERRIDE; + virtual void changeEvent(QEvent *e) Q_DECL_OVERRIDE; +#if QT_CONFIG(wheelevent) + virtual void wheelEvent(QWheelEvent *e) Q_DECL_OVERRIDE; +#endif + + virtual QMimeData *createMimeDataFromSelection() const; + virtual bool canInsertFromMimeData(const QMimeData *source) const; + virtual void insertFromMimeData(const QMimeData *source); + + virtual void inputMethodEvent(QInputMethodEvent *) Q_DECL_OVERRIDE; + + QTextEdit(QTextEditPrivate &dd, QWidget *parent); + + virtual void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE; + virtual void doSetTextCursor(const QTextCursor &cursor); + + void zoomInF(float range); + +private: + Q_DISABLE_COPY(QTextEdit) + Q_PRIVATE_SLOT(d_func(), void _q_repaintContents(const QRectF &r)) + Q_PRIVATE_SLOT(d_func(), void _q_currentCharFormatChanged(const QTextCharFormat &)) + Q_PRIVATE_SLOT(d_func(), void _q_adjustScrollbars()) + Q_PRIVATE_SLOT(d_func(), void _q_ensureVisible(const QRectF &)) + Q_PRIVATE_SLOT(d_func(), void _q_cursorPositionChanged()) + friend class QTextEditControl; + friend class QTextDocument; + friend class QWidgetTextControl; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QTextEdit::AutoFormatting) + +QT_END_NAMESPACE + +#endif // QTEXTEDIT_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtoolbar.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtoolbar.h new file mode 100644 index 000000000..e0f2d9b07 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtoolbar.h @@ -0,0 +1,218 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDYNAMICTOOLBAR_H +#define QDYNAMICTOOLBAR_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qaction.h> +#include <QtWidgets/qwidget.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_TOOLBAR + +class QToolBarPrivate; + +class QAction; +class QIcon; +class QMainWindow; +class QStyleOptionToolBar; + +class Q_WIDGETS_EXPORT QToolBar : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(bool movable READ isMovable WRITE setMovable + DESIGNABLE (qobject_cast<QMainWindow *>(parentWidget()) != 0) + NOTIFY movableChanged) + Q_PROPERTY(Qt::ToolBarAreas allowedAreas READ allowedAreas WRITE setAllowedAreas + DESIGNABLE (qobject_cast<QMainWindow *>(parentWidget()) != 0) + NOTIFY allowedAreasChanged) + Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation + DESIGNABLE (qobject_cast<QMainWindow *>(parentWidget()) == 0) + NOTIFY orientationChanged) + Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize NOTIFY iconSizeChanged) + Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle + NOTIFY toolButtonStyleChanged) + Q_PROPERTY(bool floating READ isFloating) + Q_PROPERTY(bool floatable READ isFloatable WRITE setFloatable) + +public: + explicit QToolBar(const QString &title, QWidget *parent = Q_NULLPTR); + explicit QToolBar(QWidget *parent = Q_NULLPTR); + ~QToolBar(); + + void setMovable(bool movable); + bool isMovable() const; + + void setAllowedAreas(Qt::ToolBarAreas areas); + Qt::ToolBarAreas allowedAreas() const; + + inline bool isAreaAllowed(Qt::ToolBarArea area) const + { return (allowedAreas() & area) == area; } + + void setOrientation(Qt::Orientation orientation); + Qt::Orientation orientation() const; + + void clear(); + + using QWidget::addAction; + QAction *addAction(const QString &text); + QAction *addAction(const QIcon &icon, const QString &text); + QAction *addAction(const QString &text, const QObject *receiver, const char* member); + QAction *addAction(const QIcon &icon, const QString &text, + const QObject *receiver, const char* member); +#ifdef Q_QDOC + template<typename PointerToMemberFunction> + QAction *addAction(const QString &text, const QObject *receiver, PointerToMemberFunction method); + template<typename Functor> + QAction *addAction(const QString &text, Functor functor); + template<typename Functor> + QAction *addAction(const QString &text, const QObject *context, Functor functor); + template<typename PointerToMemberFunction> + QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, PointerToMemberFunction method); + template<typename Functor> + QAction *addAction(const QIcon &icon, const QString &text, Functor functor); + template<typename Functor> + QAction *addAction(const QIcon &icon, const QString &text, const QObject *context, Functor functor); +#else + // addAction(QString): Connect to a QObject slot / functor or function pointer (with context) + template<class Obj, typename Func1> + inline typename std::enable_if<!std::is_same<const char*, Func1>::value + && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type + addAction(const QString &text, const Obj *object, Func1 slot) + { + QAction *result = addAction(text); + connect(result, &QAction::triggered, object, slot); + return result; + } + // addAction(QString): Connect to a functor or function pointer (without context) + template <typename Func1> + inline QAction *addAction(const QString &text, Func1 slot) + { + QAction *result = addAction(text); + connect(result, &QAction::triggered, slot); + return result; + } + // addAction(QString): Connect to a QObject slot / functor or function pointer (with context) + template<class Obj, typename Func1> + inline typename std::enable_if<!std::is_same<const char*, Func1>::value + && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type + addAction(const QIcon &actionIcon, const QString &text, const Obj *object, Func1 slot) + { + QAction *result = addAction(actionIcon, text); + connect(result, &QAction::triggered, object, slot); + return result; + } + // addAction(QIcon, QString): Connect to a functor or function pointer (without context) + template <typename Func1> + inline QAction *addAction(const QIcon &actionIcon, const QString &text, Func1 slot) + { + QAction *result = addAction(actionIcon, text); + connect(result, &QAction::triggered, slot); + return result; + } +#endif // !Q_QDOC + + QAction *addSeparator(); + QAction *insertSeparator(QAction *before); + + QAction *addWidget(QWidget *widget); + QAction *insertWidget(QAction *before, QWidget *widget); + + QRect actionGeometry(QAction *action) const; + QAction *actionAt(const QPoint &p) const; + inline QAction *actionAt(int x, int y) const; + + QAction *toggleViewAction() const; + + QSize iconSize() const; + Qt::ToolButtonStyle toolButtonStyle() const; + + QWidget *widgetForAction(QAction *action) const; + + bool isFloatable() const; + void setFloatable(bool floatable); + bool isFloating() const; + +public Q_SLOTS: + void setIconSize(const QSize &iconSize); + void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle); + +Q_SIGNALS: + void actionTriggered(QAction *action); + void movableChanged(bool movable); + void allowedAreasChanged(Qt::ToolBarAreas allowedAreas); + void orientationChanged(Qt::Orientation orientation); + void iconSizeChanged(const QSize &iconSize); + void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle); + void topLevelChanged(bool topLevel); + void visibilityChanged(bool visible); + +protected: + void actionEvent(QActionEvent *event) Q_DECL_OVERRIDE; + void changeEvent(QEvent *event) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + bool event(QEvent *event) Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionToolBar *option) const; + + +private: + Q_DECLARE_PRIVATE(QToolBar) + Q_DISABLE_COPY(QToolBar) + Q_PRIVATE_SLOT(d_func(), void _q_toggleView(bool)) + Q_PRIVATE_SLOT(d_func(), void _q_updateIconSize(const QSize &)) + Q_PRIVATE_SLOT(d_func(), void _q_updateToolButtonStyle(Qt::ToolButtonStyle)) + + friend class QMainWindow; + friend class QMainWindowLayout; + friend class QToolBarLayout; + friend class QToolBarAreaLayout; +}; + +inline QAction *QToolBar::actionAt(int ax, int ay) const +{ return actionAt(QPoint(ax, ay)); } + +#endif // QT_NO_TOOLBAR + +QT_END_NAMESPACE + +#endif // QDYNAMICTOOLBAR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtoolbox.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtoolbox.h new file mode 100644 index 000000000..321507ba0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtoolbox.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTOOLBOX_H +#define QTOOLBOX_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qframe.h> +#include <QtGui/qicon.h> + +QT_REQUIRE_CONFIG(toolbox); + +QT_BEGIN_NAMESPACE + +class QToolBoxPrivate; + +class Q_WIDGETS_EXPORT QToolBox : public QFrame +{ + Q_OBJECT + Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentChanged) + Q_PROPERTY(int count READ count) + +public: + explicit QToolBox(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); + ~QToolBox(); + + int addItem(QWidget *widget, const QString &text); + int addItem(QWidget *widget, const QIcon &icon, const QString &text); + int insertItem(int index, QWidget *widget, const QString &text); + int insertItem(int index, QWidget *widget, const QIcon &icon, const QString &text); + + void removeItem(int index); + + void setItemEnabled(int index, bool enabled); + bool isItemEnabled(int index) const; + + void setItemText(int index, const QString &text); + QString itemText(int index) const; + + void setItemIcon(int index, const QIcon &icon); + QIcon itemIcon(int index) const; + +#ifndef QT_NO_TOOLTIP + void setItemToolTip(int index, const QString &toolTip); + QString itemToolTip(int index) const; +#endif + + int currentIndex() const; + QWidget *currentWidget() const; + QWidget *widget(int index) const; + int indexOf(QWidget *widget) const; + int count() const; + +public Q_SLOTS: + void setCurrentIndex(int index); + void setCurrentWidget(QWidget *widget); + +Q_SIGNALS: + void currentChanged(int index); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + virtual void itemInserted(int index); + virtual void itemRemoved(int index); + void showEvent(QShowEvent *e) Q_DECL_OVERRIDE; + void changeEvent(QEvent *) Q_DECL_OVERRIDE; + + +private: + Q_DECLARE_PRIVATE(QToolBox) + Q_DISABLE_COPY(QToolBox) + Q_PRIVATE_SLOT(d_func(), void _q_buttonClicked()) + Q_PRIVATE_SLOT(d_func(), void _q_widgetDestroyed(QObject*)) +}; + + +inline int QToolBox::addItem(QWidget *item, const QString &text) +{ return insertItem(-1, item, QIcon(), text); } +inline int QToolBox::addItem(QWidget *item, const QIcon &iconSet, + const QString &text) +{ return insertItem(-1, item, iconSet, text); } +inline int QToolBox::insertItem(int index, QWidget *item, const QString &text) +{ return insertItem(index, item, QIcon(), text); } + +QT_END_NAMESPACE + +#endif // QTOOLBOX_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtoolbutton.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtoolbutton.h new file mode 100644 index 000000000..dd9964cb9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtoolbutton.h @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTOOLBUTTON_H +#define QTOOLBUTTON_H + +#include <QtWidgets/qtwidgetsglobal.h> + +#include <QtWidgets/qabstractbutton.h> + +QT_REQUIRE_CONFIG(toolbutton); + +QT_BEGIN_NAMESPACE + +class QToolButtonPrivate; +class QMenu; +class QStyleOptionToolButton; + +class Q_WIDGETS_EXPORT QToolButton : public QAbstractButton +{ + Q_OBJECT + Q_ENUMS(Qt::ToolButtonStyle Qt::ArrowType) +#if QT_CONFIG(menu) + Q_PROPERTY(ToolButtonPopupMode popupMode READ popupMode WRITE setPopupMode) +#endif + Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle) + Q_PROPERTY(bool autoRaise READ autoRaise WRITE setAutoRaise) + Q_PROPERTY(Qt::ArrowType arrowType READ arrowType WRITE setArrowType) + +public: + enum ToolButtonPopupMode { + DelayedPopup, + MenuButtonPopup, + InstantPopup + }; + Q_ENUM(ToolButtonPopupMode) + + explicit QToolButton(QWidget *parent = Q_NULLPTR); + ~QToolButton(); + + QSize sizeHint() const Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + + Qt::ToolButtonStyle toolButtonStyle() const; + + Qt::ArrowType arrowType() const; + void setArrowType(Qt::ArrowType type); + +#if QT_CONFIG(menu) + void setMenu(QMenu* menu); + QMenu* menu() const; + + void setPopupMode(ToolButtonPopupMode mode); + ToolButtonPopupMode popupMode() const; +#endif + + QAction *defaultAction() const; + + void setAutoRaise(bool enable); + bool autoRaise() const; + +public Q_SLOTS: +#if QT_CONFIG(menu) + void showMenu(); +#endif + void setToolButtonStyle(Qt::ToolButtonStyle style); + void setDefaultAction(QAction *); + +Q_SIGNALS: + void triggered(QAction *); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; + void actionEvent(QActionEvent *) Q_DECL_OVERRIDE; + + void enterEvent(QEvent *) Q_DECL_OVERRIDE; + void leaveEvent(QEvent *) Q_DECL_OVERRIDE; + void timerEvent(QTimerEvent *) Q_DECL_OVERRIDE; + void changeEvent(QEvent *) Q_DECL_OVERRIDE; + + bool hitButton(const QPoint &pos) const Q_DECL_OVERRIDE; + void nextCheckState() Q_DECL_OVERRIDE; + void initStyleOption(QStyleOptionToolButton *option) const; + +private: + Q_DISABLE_COPY(QToolButton) + Q_DECLARE_PRIVATE(QToolButton) +#if QT_CONFIG(menu) + Q_PRIVATE_SLOT(d_func(), void _q_buttonPressed()) + Q_PRIVATE_SLOT(d_func(), void _q_buttonReleased()) + Q_PRIVATE_SLOT(d_func(), void _q_updateButtonDown()) + Q_PRIVATE_SLOT(d_func(), void _q_menuTriggered(QAction*)) +#endif + Q_PRIVATE_SLOT(d_func(), void _q_actionTriggered()) + +}; + +QT_END_NAMESPACE + +#endif // QTOOLBUTTON_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtooltip.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtooltip.h new file mode 100644 index 000000000..5e68eef0a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtooltip.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTOOLTIP_H +#define QTOOLTIP_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qwidget.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_TOOLTIP + +class Q_WIDGETS_EXPORT QToolTip +{ + QToolTip() Q_DECL_EQ_DELETE; +public: + // ### Qt 6 - merge the three showText functions below + static void showText(const QPoint &pos, const QString &text, QWidget *w = Q_NULLPTR); + static void showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect); + static void showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect, int msecShowTime); + static inline void hideText() { showText(QPoint(), QString()); } + + static bool isVisible(); + static QString text(); + + static QPalette palette(); + static void setPalette(const QPalette &); + static QFont font(); + static void setFont(const QFont &); +}; + +#endif // QT_NO_TOOLTIP + +QT_END_NAMESPACE + +#endif // QTOOLTIP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtreeview.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtreeview.h new file mode 100644 index 000000000..c32c127cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtreeview.h @@ -0,0 +1,241 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTREEVIEW_H +#define QTREEVIEW_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qabstractitemview.h> + +class tst_QTreeView; + +QT_REQUIRE_CONFIG(treeview); + +QT_BEGIN_NAMESPACE + +class QTreeViewPrivate; +class QHeaderView; + +class Q_WIDGETS_EXPORT QTreeView : public QAbstractItemView +{ + Q_OBJECT + Q_PROPERTY(int autoExpandDelay READ autoExpandDelay WRITE setAutoExpandDelay) + Q_PROPERTY(int indentation READ indentation WRITE setIndentation RESET resetIndentation) + Q_PROPERTY(bool rootIsDecorated READ rootIsDecorated WRITE setRootIsDecorated) + Q_PROPERTY(bool uniformRowHeights READ uniformRowHeights WRITE setUniformRowHeights) + Q_PROPERTY(bool itemsExpandable READ itemsExpandable WRITE setItemsExpandable) + Q_PROPERTY(bool sortingEnabled READ isSortingEnabled WRITE setSortingEnabled) + Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated) + Q_PROPERTY(bool allColumnsShowFocus READ allColumnsShowFocus WRITE setAllColumnsShowFocus) + Q_PROPERTY(bool wordWrap READ wordWrap WRITE setWordWrap) + Q_PROPERTY(bool headerHidden READ isHeaderHidden WRITE setHeaderHidden) + Q_PROPERTY(bool expandsOnDoubleClick READ expandsOnDoubleClick WRITE setExpandsOnDoubleClick) + +public: + explicit QTreeView(QWidget *parent = Q_NULLPTR); + ~QTreeView(); + + void setModel(QAbstractItemModel *model) Q_DECL_OVERRIDE; + void setRootIndex(const QModelIndex &index) Q_DECL_OVERRIDE; + void setSelectionModel(QItemSelectionModel *selectionModel) Q_DECL_OVERRIDE; + + QHeaderView *header() const; + void setHeader(QHeaderView *header); + + int autoExpandDelay() const; + void setAutoExpandDelay(int delay); + + int indentation() const; + void setIndentation(int i); + void resetIndentation(); + + bool rootIsDecorated() const; + void setRootIsDecorated(bool show); + + bool uniformRowHeights() const; + void setUniformRowHeights(bool uniform); + + bool itemsExpandable() const; + void setItemsExpandable(bool enable); + + bool expandsOnDoubleClick() const; + void setExpandsOnDoubleClick(bool enable); + + int columnViewportPosition(int column) const; + int columnWidth(int column) const; + void setColumnWidth(int column, int width); + int columnAt(int x) const; + + bool isColumnHidden(int column) const; + void setColumnHidden(int column, bool hide); + + bool isHeaderHidden() const; + void setHeaderHidden(bool hide); + + bool isRowHidden(int row, const QModelIndex &parent) const; + void setRowHidden(int row, const QModelIndex &parent, bool hide); + + bool isFirstColumnSpanned(int row, const QModelIndex &parent) const; + void setFirstColumnSpanned(int row, const QModelIndex &parent, bool span); + + bool isExpanded(const QModelIndex &index) const; + void setExpanded(const QModelIndex &index, bool expand); + + void setSortingEnabled(bool enable); + bool isSortingEnabled() const; + + void setAnimated(bool enable); + bool isAnimated() const; + + void setAllColumnsShowFocus(bool enable); + bool allColumnsShowFocus() const; + + void setWordWrap(bool on); + bool wordWrap() const; + + void setTreePosition(int logicalIndex); + int treePosition() const; + + void keyboardSearch(const QString &search) Q_DECL_OVERRIDE; + + QRect visualRect(const QModelIndex &index) const Q_DECL_OVERRIDE; + void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) Q_DECL_OVERRIDE; + QModelIndex indexAt(const QPoint &p) const Q_DECL_OVERRIDE; + QModelIndex indexAbove(const QModelIndex &index) const; + QModelIndex indexBelow(const QModelIndex &index) const; + + void doItemsLayout() Q_DECL_OVERRIDE; + void reset() Q_DECL_OVERRIDE; + + void sortByColumn(int column, Qt::SortOrder order); + + void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int>()) Q_DECL_OVERRIDE; + void selectAll() Q_DECL_OVERRIDE; + +Q_SIGNALS: + void expanded(const QModelIndex &index); + void collapsed(const QModelIndex &index); + +public Q_SLOTS: + void hideColumn(int column); + void showColumn(int column); + void expand(const QModelIndex &index); + void collapse(const QModelIndex &index); + void resizeColumnToContents(int column); + void sortByColumn(int column); + void expandAll(); + void collapseAll(); + void expandToDepth(int depth); + +protected Q_SLOTS: + void columnResized(int column, int oldSize, int newSize); + void columnCountChanged(int oldCount, int newCount); + void columnMoved(); + void reexpand(); + void rowsRemoved(const QModelIndex &parent, int first, int last); + +protected: + QTreeView(QTreeViewPrivate &dd, QWidget *parent = Q_NULLPTR); + void scrollContentsBy(int dx, int dy) Q_DECL_OVERRIDE; + void rowsInserted(const QModelIndex &parent, int start, int end) Q_DECL_OVERRIDE; + void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) Q_DECL_OVERRIDE; + + QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) Q_DECL_OVERRIDE; + int horizontalOffset() const Q_DECL_OVERRIDE; + int verticalOffset() const Q_DECL_OVERRIDE; + + void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) Q_DECL_OVERRIDE; + QRegion visualRegionForSelection(const QItemSelection &selection) const Q_DECL_OVERRIDE; + QModelIndexList selectedIndexes() const Q_DECL_OVERRIDE; + + void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + + void drawTree(QPainter *painter, const QRegion ®ion) const; + virtual void drawRow(QPainter *painter, + const QStyleOptionViewItem &options, + const QModelIndex &index) const; + virtual void drawBranches(QPainter *painter, + const QRect &rect, + const QModelIndex &index) const; + + void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; +#ifndef QT_NO_DRAGANDDROP + void dragMoveEvent(QDragMoveEvent *event) Q_DECL_OVERRIDE; +#endif + bool viewportEvent(QEvent *event) Q_DECL_OVERRIDE; + + void updateGeometries() Q_DECL_OVERRIDE; + + QSize viewportSizeHint() const Q_DECL_OVERRIDE; + + int sizeHintForColumn(int column) const Q_DECL_OVERRIDE; + int indexRowSizeHint(const QModelIndex &index) const; + int rowHeight(const QModelIndex &index) const; + + void horizontalScrollbarAction(int action) Q_DECL_OVERRIDE; + + bool isIndexHidden(const QModelIndex &index) const Q_DECL_OVERRIDE; + void selectionChanged(const QItemSelection &selected, + const QItemSelection &deselected) Q_DECL_OVERRIDE; + void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) Q_DECL_OVERRIDE; + +private: + friend class ::tst_QTreeView; + friend class QAccessibleTable; + friend class QAccessibleTree; + friend class QAccessibleTableCell; + int visualIndex(const QModelIndex &index) const; + + Q_DECLARE_PRIVATE(QTreeView) + Q_DISABLE_COPY(QTreeView) +#ifndef QT_NO_ANIMATION + Q_PRIVATE_SLOT(d_func(), void _q_endAnimatedOperation()) +#endif //QT_NO_ANIMATION + Q_PRIVATE_SLOT(d_func(), void _q_modelAboutToBeReset()) + Q_PRIVATE_SLOT(d_func(), void _q_sortIndicatorChanged(int column, Qt::SortOrder order)) +}; + +QT_END_NAMESPACE + +#endif // QTREEVIEW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtreewidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtreewidget.h new file mode 100644 index 000000000..3bdeae08d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtreewidget.h @@ -0,0 +1,426 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTREEWIDGET_H +#define QTREEWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qtreeview.h> +#include <QtWidgets/qtreewidgetitemiterator.h> +#include <QtCore/qvariant.h> +#include <QtCore/qvector.h> + +QT_REQUIRE_CONFIG(treewidget); + +QT_BEGIN_NAMESPACE + +class QTreeWidget; +class QTreeModel; +class QWidgetItemData; +class QTreeWidgetItemPrivate; + +class Q_WIDGETS_EXPORT QTreeWidgetItem +{ + friend class QTreeModel; + friend class QTreeWidget; + friend class QTreeWidgetPrivate; + friend class QTreeWidgetItemIterator; + friend class QTreeWidgetItemPrivate; +public: + enum ItemType { Type = 0, UserType = 1000 }; + explicit QTreeWidgetItem(int type = Type); + explicit QTreeWidgetItem(const QStringList &strings, int type = Type); + explicit QTreeWidgetItem(QTreeWidget *view, int type = Type); + QTreeWidgetItem(QTreeWidget *view, const QStringList &strings, int type = Type); + QTreeWidgetItem(QTreeWidget *view, QTreeWidgetItem *after, int type = Type); + explicit QTreeWidgetItem(QTreeWidgetItem *parent, int type = Type); + QTreeWidgetItem(QTreeWidgetItem *parent, const QStringList &strings, int type = Type); + QTreeWidgetItem(QTreeWidgetItem *parent, QTreeWidgetItem *after, int type = Type); + QTreeWidgetItem(const QTreeWidgetItem &other); + virtual ~QTreeWidgetItem(); + + virtual QTreeWidgetItem *clone() const; + + inline QTreeWidget *treeWidget() const { return view; } + + inline void setSelected(bool select); + inline bool isSelected() const; + + inline void setHidden(bool hide); + inline bool isHidden() const; + + inline void setExpanded(bool expand); + inline bool isExpanded() const; + + inline void setFirstColumnSpanned(bool span); + inline bool isFirstColumnSpanned() const; + + inline void setDisabled(bool disabled); + inline bool isDisabled() const; + + enum ChildIndicatorPolicy { ShowIndicator, DontShowIndicator, DontShowIndicatorWhenChildless }; + void setChildIndicatorPolicy(QTreeWidgetItem::ChildIndicatorPolicy policy); + QTreeWidgetItem::ChildIndicatorPolicy childIndicatorPolicy() const; + + Qt::ItemFlags flags() const; + void setFlags(Qt::ItemFlags flags); + + inline QString text(int column) const + { return data(column, Qt::DisplayRole).toString(); } + inline void setText(int column, const QString &text); + + inline QIcon icon(int column) const + { return qvariant_cast<QIcon>(data(column, Qt::DecorationRole)); } + inline void setIcon(int column, const QIcon &icon); + + inline QString statusTip(int column) const + { return data(column, Qt::StatusTipRole).toString(); } + inline void setStatusTip(int column, const QString &statusTip); + +#ifndef QT_NO_TOOLTIP + inline QString toolTip(int column) const + { return data(column, Qt::ToolTipRole).toString(); } + inline void setToolTip(int column, const QString &toolTip); +#endif + +#if QT_CONFIG(whatsthis) + inline QString whatsThis(int column) const + { return data(column, Qt::WhatsThisRole).toString(); } + inline void setWhatsThis(int column, const QString &whatsThis); +#endif + + inline QFont font(int column) const + { return qvariant_cast<QFont>(data(column, Qt::FontRole)); } + inline void setFont(int column, const QFont &font); + + inline int textAlignment(int column) const + { return data(column, Qt::TextAlignmentRole).toInt(); } + inline void setTextAlignment(int column, int alignment) + { setData(column, Qt::TextAlignmentRole, alignment); } + + inline QColor backgroundColor(int column) const + { return qvariant_cast<QColor>(data(column, Qt::BackgroundColorRole)); } + inline void setBackgroundColor(int column, const QColor &color) + { setData(column, Qt::BackgroundColorRole, color); } + + inline QBrush background(int column) const + { return qvariant_cast<QBrush>(data(column, Qt::BackgroundRole)); } + inline void setBackground(int column, const QBrush &brush) + { setData(column, Qt::BackgroundRole, brush); } + + inline QColor textColor(int column) const + { return qvariant_cast<QColor>(data(column, Qt::TextColorRole)); } + inline void setTextColor(int column, const QColor &color) + { setData(column, Qt::TextColorRole, color); } + + inline QBrush foreground(int column) const + { return qvariant_cast<QBrush>(data(column, Qt::ForegroundRole)); } + inline void setForeground(int column, const QBrush &brush) + { setData(column, Qt::ForegroundRole, brush); } + + inline Qt::CheckState checkState(int column) const + { return static_cast<Qt::CheckState>(data(column, Qt::CheckStateRole).toInt()); } + inline void setCheckState(int column, Qt::CheckState state) + { setData(column, Qt::CheckStateRole, state); } + + inline QSize sizeHint(int column) const + { return qvariant_cast<QSize>(data(column, Qt::SizeHintRole)); } + inline void setSizeHint(int column, const QSize &size) + { setData(column, Qt::SizeHintRole, size); } + + virtual QVariant data(int column, int role) const; + virtual void setData(int column, int role, const QVariant &value); + + virtual bool operator<(const QTreeWidgetItem &other) const; + +#ifndef QT_NO_DATASTREAM + virtual void read(QDataStream &in); + virtual void write(QDataStream &out) const; +#endif + QTreeWidgetItem &operator=(const QTreeWidgetItem &other); + + inline QTreeWidgetItem *parent() const { return par; } + inline QTreeWidgetItem *child(int index) const { + if (index < 0 || index >= children.size()) + return Q_NULLPTR; + executePendingSort(); + return children.at(index); + } + inline int childCount() const { return children.count(); } + inline int columnCount() const { return values.count(); } + inline int indexOfChild(QTreeWidgetItem *child) const; + + void addChild(QTreeWidgetItem *child); + void insertChild(int index, QTreeWidgetItem *child); + void removeChild(QTreeWidgetItem *child); + QTreeWidgetItem *takeChild(int index); + + void addChildren(const QList<QTreeWidgetItem*> &children); + void insertChildren(int index, const QList<QTreeWidgetItem*> &children); + QList<QTreeWidgetItem*> takeChildren(); + + inline int type() const { return rtti; } + inline void sortChildren(int column, Qt::SortOrder order) + { sortChildren(column, order, false); } + +protected: + void emitDataChanged(); + +private: + void sortChildren(int column, Qt::SortOrder order, bool climb); + QVariant childrenCheckState(int column) const; + void itemChanged(); + void executePendingSort() const; + + int rtti; + // One item has a vector of column entries. Each column has a vector of (role, value) pairs. + QVector< QVector<QWidgetItemData> > values; + QTreeWidget *view; + QTreeWidgetItemPrivate *d; + QTreeWidgetItem *par; + QList<QTreeWidgetItem*> children; + Qt::ItemFlags itemFlags; +}; + +inline void QTreeWidgetItem::setText(int column, const QString &atext) +{ setData(column, Qt::DisplayRole, atext); } + +inline void QTreeWidgetItem::setIcon(int column, const QIcon &aicon) +{ setData(column, Qt::DecorationRole, aicon); } + +#if QT_CONFIG(statustip) +inline void QTreeWidgetItem::setStatusTip(int column, const QString &astatusTip) +{ setData(column, Qt::StatusTipRole, astatusTip); } +#endif + +#ifndef QT_NO_TOOLTIP +inline void QTreeWidgetItem::setToolTip(int column, const QString &atoolTip) +{ setData(column, Qt::ToolTipRole, atoolTip); } +#endif + +#if QT_CONFIG(whatsthis) +inline void QTreeWidgetItem::setWhatsThis(int column, const QString &awhatsThis) +{ setData(column, Qt::WhatsThisRole, awhatsThis); } +#endif + +inline void QTreeWidgetItem::setFont(int column, const QFont &afont) +{ setData(column, Qt::FontRole, afont); } + +inline int QTreeWidgetItem::indexOfChild(QTreeWidgetItem *achild) const +{ executePendingSort(); return children.indexOf(achild); } + +#ifndef QT_NO_DATASTREAM +Q_WIDGETS_EXPORT QDataStream &operator<<(QDataStream &out, const QTreeWidgetItem &item); +Q_WIDGETS_EXPORT QDataStream &operator>>(QDataStream &in, QTreeWidgetItem &item); +#endif + +class QTreeWidgetPrivate; + +class Q_WIDGETS_EXPORT QTreeWidget : public QTreeView +{ + Q_OBJECT + Q_PROPERTY(int columnCount READ columnCount WRITE setColumnCount) + Q_PROPERTY(int topLevelItemCount READ topLevelItemCount) + + friend class QTreeModel; + friend class QTreeWidgetItem; +public: + explicit QTreeWidget(QWidget *parent = Q_NULLPTR); + ~QTreeWidget(); + + int columnCount() const; + void setColumnCount(int columns); + + QTreeWidgetItem *invisibleRootItem() const; + QTreeWidgetItem *topLevelItem(int index) const; + int topLevelItemCount() const; + void insertTopLevelItem(int index, QTreeWidgetItem *item); + void addTopLevelItem(QTreeWidgetItem *item); + QTreeWidgetItem *takeTopLevelItem(int index); + int indexOfTopLevelItem(QTreeWidgetItem *item) const; + + void insertTopLevelItems(int index, const QList<QTreeWidgetItem*> &items); + void addTopLevelItems(const QList<QTreeWidgetItem*> &items); + + QTreeWidgetItem *headerItem() const; + void setHeaderItem(QTreeWidgetItem *item); + void setHeaderLabels(const QStringList &labels); + inline void setHeaderLabel(const QString &label); + + QTreeWidgetItem *currentItem() const; + int currentColumn() const; + void setCurrentItem(QTreeWidgetItem *item); + void setCurrentItem(QTreeWidgetItem *item, int column); + void setCurrentItem(QTreeWidgetItem *item, int column, QItemSelectionModel::SelectionFlags command); + + QTreeWidgetItem *itemAt(const QPoint &p) const; + inline QTreeWidgetItem *itemAt(int x, int y) const; + QRect visualItemRect(const QTreeWidgetItem *item) const; + + int sortColumn() const; + void sortItems(int column, Qt::SortOrder order); + + void editItem(QTreeWidgetItem *item, int column = 0); + void openPersistentEditor(QTreeWidgetItem *item, int column = 0); + void closePersistentEditor(QTreeWidgetItem *item, int column = 0); + + QWidget *itemWidget(QTreeWidgetItem *item, int column) const; + void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget); + inline void removeItemWidget(QTreeWidgetItem *item, int column); + + bool isItemSelected(const QTreeWidgetItem *item) const; + void setItemSelected(const QTreeWidgetItem *item, bool select); + QList<QTreeWidgetItem*> selectedItems() const; + QList<QTreeWidgetItem*> findItems(const QString &text, Qt::MatchFlags flags, + int column = 0) const; + + bool isItemHidden(const QTreeWidgetItem *item) const; + void setItemHidden(const QTreeWidgetItem *item, bool hide); + + bool isItemExpanded(const QTreeWidgetItem *item) const; + void setItemExpanded(const QTreeWidgetItem *item, bool expand); + + bool isFirstItemColumnSpanned(const QTreeWidgetItem *item) const; + void setFirstItemColumnSpanned(const QTreeWidgetItem *item, bool span); + + QTreeWidgetItem *itemAbove(const QTreeWidgetItem *item) const; + QTreeWidgetItem *itemBelow(const QTreeWidgetItem *item) const; + + void setSelectionModel(QItemSelectionModel *selectionModel) Q_DECL_OVERRIDE; + +public Q_SLOTS: + void scrollToItem(const QTreeWidgetItem *item, + QAbstractItemView::ScrollHint hint = EnsureVisible); + void expandItem(const QTreeWidgetItem *item); + void collapseItem(const QTreeWidgetItem *item); + void clear(); + +Q_SIGNALS: + void itemPressed(QTreeWidgetItem *item, int column); + void itemClicked(QTreeWidgetItem *item, int column); + void itemDoubleClicked(QTreeWidgetItem *item, int column); + void itemActivated(QTreeWidgetItem *item, int column); + void itemEntered(QTreeWidgetItem *item, int column); + void itemChanged(QTreeWidgetItem *item, int column); + void itemExpanded(QTreeWidgetItem *item); + void itemCollapsed(QTreeWidgetItem *item); + void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); + void itemSelectionChanged(); + +protected: + bool event(QEvent *e) Q_DECL_OVERRIDE; + virtual QStringList mimeTypes() const; +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + virtual QMimeData *mimeData(const QList<QTreeWidgetItem *> &items) const; +#else + virtual QMimeData *mimeData(const QList<QTreeWidgetItem*> items) const; +#endif + virtual bool dropMimeData(QTreeWidgetItem *parent, int index, + const QMimeData *data, Qt::DropAction action); + virtual Qt::DropActions supportedDropActions() const; + QList<QTreeWidgetItem*> items(const QMimeData *data) const; + + QModelIndex indexFromItem(const QTreeWidgetItem *item, int column = 0) const; + QModelIndex indexFromItem(QTreeWidgetItem *item, int column = 0) const; // ### Qt 6: remove + QTreeWidgetItem *itemFromIndex(const QModelIndex &index) const; +#if QT_CONFIG(draganddrop) + void dropEvent(QDropEvent *event) Q_DECL_OVERRIDE; +#endif +private: + void setModel(QAbstractItemModel *model) Q_DECL_OVERRIDE; + + Q_DECLARE_PRIVATE(QTreeWidget) + Q_DISABLE_COPY(QTreeWidget) + + Q_PRIVATE_SLOT(d_func(), void _q_emitItemPressed(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemClicked(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemDoubleClicked(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemActivated(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemEntered(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemChanged(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemExpanded(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitItemCollapsed(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_emitCurrentItemChanged(const QModelIndex &previous, const QModelIndex ¤t)) + Q_PRIVATE_SLOT(d_func(), void _q_sort()) + Q_PRIVATE_SLOT(d_func(), void _q_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)) + Q_PRIVATE_SLOT(d_func(), void _q_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)) +}; + +inline void QTreeWidget::removeItemWidget(QTreeWidgetItem *item, int column) +{ setItemWidget(item, column, Q_NULLPTR); } + +inline QTreeWidgetItem *QTreeWidget::itemAt(int ax, int ay) const +{ return itemAt(QPoint(ax, ay)); } + +inline void QTreeWidget::setHeaderLabel(const QString &alabel) +{ setHeaderLabels(QStringList(alabel)); } + +inline void QTreeWidgetItem::setSelected(bool aselect) +{ if (view) view->setItemSelected(this, aselect); } + +inline bool QTreeWidgetItem::isSelected() const +{ return (view ? view->isItemSelected(this) : false); } + +inline void QTreeWidgetItem::setHidden(bool ahide) +{ if (view) view->setItemHidden(this, ahide); } + +inline bool QTreeWidgetItem::isHidden() const +{ return (view ? view->isItemHidden(this) : false); } + +inline void QTreeWidgetItem::setExpanded(bool aexpand) +{ if (view) view->setItemExpanded(this, aexpand); } + +inline bool QTreeWidgetItem::isExpanded() const +{ return (view ? view->isItemExpanded(this) : false); } + +inline void QTreeWidgetItem::setFirstColumnSpanned(bool aspan) +{ if (view) view->setFirstItemColumnSpanned(this, aspan); } + +inline bool QTreeWidgetItem::isFirstColumnSpanned() const +{ return (view ? view->isFirstItemColumnSpanned(this) : false); } + +inline void QTreeWidgetItem::setDisabled(bool disabled) +{ setFlags(disabled ? (flags() & ~Qt::ItemIsEnabled) : flags() | Qt::ItemIsEnabled); } + +inline bool QTreeWidgetItem::isDisabled() const +{ return !(flags() & Qt::ItemIsEnabled); } + +QT_END_NAMESPACE + +#endif // QTREEWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtreewidgetitemiterator.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtreewidgetitemiterator.h new file mode 100644 index 000000000..39e024477 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtreewidgetitemiterator.h @@ -0,0 +1,149 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTREEWIDGETITEMITERATOR_H +#define QTREEWIDGETITEMITERATOR_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qscopedpointer.h> + +QT_REQUIRE_CONFIG(treewidget); + +QT_BEGIN_NAMESPACE + +class QTreeWidget; +class QTreeWidgetItem; +class QTreeModel; + +class QTreeWidgetItemIteratorPrivate; +class Q_WIDGETS_EXPORT QTreeWidgetItemIterator +{ + friend class QTreeModel; + +public: + enum IteratorFlag { + All = 0x00000000, + Hidden = 0x00000001, + NotHidden = 0x00000002, + Selected = 0x00000004, + Unselected = 0x00000008, + Selectable = 0x00000010, + NotSelectable = 0x00000020, + DragEnabled = 0x00000040, + DragDisabled = 0x00000080, + DropEnabled = 0x00000100, + DropDisabled = 0x00000200, + HasChildren = 0x00000400, + NoChildren = 0x00000800, + Checked = 0x00001000, + NotChecked = 0x00002000, + Enabled = 0x00004000, + Disabled = 0x00008000, + Editable = 0x00010000, + NotEditable = 0x00020000, + UserFlag = 0x01000000 // The first flag that can be used by the user. + }; + Q_DECLARE_FLAGS(IteratorFlags, IteratorFlag) + + QTreeWidgetItemIterator(const QTreeWidgetItemIterator &it); + explicit QTreeWidgetItemIterator(QTreeWidget *widget, IteratorFlags flags = All); + explicit QTreeWidgetItemIterator(QTreeWidgetItem *item, IteratorFlags flags = All); + ~QTreeWidgetItemIterator(); + + QTreeWidgetItemIterator &operator=(const QTreeWidgetItemIterator &it); + + QTreeWidgetItemIterator &operator++(); + inline const QTreeWidgetItemIterator operator++(int); + inline QTreeWidgetItemIterator &operator+=(int n); + + QTreeWidgetItemIterator &operator--(); + inline const QTreeWidgetItemIterator operator--(int); + inline QTreeWidgetItemIterator &operator-=(int n); + + inline QTreeWidgetItem *operator*() const; + +private: + bool matchesFlags(const QTreeWidgetItem *item) const; + QScopedPointer<QTreeWidgetItemIteratorPrivate> d_ptr; + QTreeWidgetItem *current; + IteratorFlags flags; + Q_DECLARE_PRIVATE(QTreeWidgetItemIterator) +}; + +inline const QTreeWidgetItemIterator QTreeWidgetItemIterator::operator++(int) +{ + QTreeWidgetItemIterator it = *this; + ++(*this); + return it; +} + +inline const QTreeWidgetItemIterator QTreeWidgetItemIterator::operator--(int) +{ + QTreeWidgetItemIterator it = *this; + --(*this); + return it; +} + +inline QTreeWidgetItemIterator &QTreeWidgetItemIterator::operator+=(int n) +{ + if (n < 0) + return (*this) -= (-n); + while (current && n--) + ++(*this); + return *this; +} + +inline QTreeWidgetItemIterator &QTreeWidgetItemIterator::operator-=(int n) +{ + if (n < 0) + return (*this) += (-n); + while (current && n--) + --(*this); + return *this; +} + +inline QTreeWidgetItem *QTreeWidgetItemIterator::operator*() const +{ + return current; +} + +Q_DECLARE_OPERATORS_FOR_FLAGS(QTreeWidgetItemIterator::IteratorFlags) + +QT_END_NAMESPACE +#endif // QTREEWIDGETITEMITERATOR_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtwidgets-config.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtwidgets-config.h new file mode 100644 index 000000000..3229c5626 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtwidgets-config.h @@ -0,0 +1,78 @@ +#define QT_FEATURE_abstractbutton 1 +#define QT_FEATURE_abstractslider 1 +#define QT_FEATURE_groupbox 1 +#define QT_FEATURE_buttongroup 1 +#define QT_FEATURE_label 1 +#define QT_FEATURE_pushbutton 1 +#define QT_FEATURE_menu 1 +#define QT_FEATURE_lineedit 1 +#define QT_FEATURE_spinbox 1 +#define QT_FEATURE_slider 1 +#define QT_FEATURE_scrollbar 1 +#define QT_FEATURE_scrollarea 1 +#define QT_FEATURE_itemviews 1 +#define QT_FEATURE_tableview 1 +#define QT_FEATURE_toolbutton 1 +#define QT_FEATURE_calendarwidget 1 +#define QT_FEATURE_checkbox 1 +#define QT_FEATURE_dialog 1 +#define QT_FEATURE_dialogbuttonbox 1 +#define QT_FEATURE_colordialog 1 +#define QT_FEATURE_listview 1 +#define QT_FEATURE_columnview 1 +#define QT_FEATURE_combobox 1 +#define QT_FEATURE_commandlinkbutton 1 +#define QT_FEATURE_completer 1 +#define QT_FEATURE_contextmenu 1 +#define QT_FEATURE_datawidgetmapper 1 +#define QT_FEATURE_datetimeedit 1 +#define QT_FEATURE_dial 1 +#define QT_FEATURE_filesystemmodel 1 +#define QT_FEATURE_dirmodel 1 +#define QT_FEATURE_resizehandler 1 +#define QT_FEATURE_mainwindow 1 +#define QT_FEATURE_dockwidget 1 +#define QT_FEATURE_textedit 1 +#define QT_FEATURE_errormessage 1 +#define QT_FEATURE_splitter 1 +#define QT_FEATURE_stackedwidget 1 +#define QT_FEATURE_treeview 1 +#define QT_FEATURE_filedialog 1 +#define QT_FEATURE_fontcombobox 1 +#define QT_FEATURE_fontdialog 1 +#define QT_FEATURE_formlayout 1 +#define QT_FEATURE_fscompleter 1 +#define QT_FEATURE_graphicsview 1 +#define QT_FEATURE_graphicseffect 1 +#define QT_FEATURE_inputdialog 1 +#define QT_FEATURE_keysequenceedit 1 +#define QT_FEATURE_lcdnumber 1 +#define QT_FEATURE_listwidget 1 +#define QT_FEATURE_mdiarea 1 +#define QT_FEATURE_menubar 1 +#define QT_FEATURE_messagebox 1 +#define QT_FEATURE_paint_debug 1 +#define QT_FEATURE_progressbar 1 +#define QT_FEATURE_progressdialog 1 +#define QT_FEATURE_radiobutton 1 +#define QT_FEATURE_rubberband 1 +#define QT_FEATURE_scroller 1 +#define QT_FEATURE_sizegrip 1 +#define QT_FEATURE_splashscreen 1 +#define QT_FEATURE_statusbar 1 +#define QT_FEATURE_statustip 1 +#define QT_FEATURE_style_stylesheet 1 +#define QT_FEATURE_syntaxhighlighter 1 +#define QT_FEATURE_tabbar 1 +#define QT_FEATURE_tablewidget 1 +#define QT_FEATURE_tabwidget 1 +#define QT_FEATURE_textbrowser 1 +#define QT_FEATURE_toolbar 1 +#define QT_FEATURE_toolbox 1 +#define QT_FEATURE_tooltip 1 +#define QT_FEATURE_treewidget 1 +#define QT_FEATURE_undocommand 1 +#define QT_FEATURE_undostack 1 +#define QT_FEATURE_undogroup 1 +#define QT_FEATURE_undoview 1 +#define QT_FEATURE_wizard 1 diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtwidgetsglobal.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtwidgetsglobal.h new file mode 100644 index 000000000..1c74f3761 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtwidgetsglobal.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTWIDGETSGLOBAL_H +#define QTWIDGETSGLOBAL_H + +#include <QtGui/qtguiglobal.h> +#include <QtWidgets/qtwidgets-config.h> + +QT_BEGIN_NAMESPACE + +#ifndef QT_STATIC +# if defined(QT_BUILD_WIDGETS_LIB) +# define Q_WIDGETS_EXPORT Q_DECL_EXPORT +# else +# define Q_WIDGETS_EXPORT Q_DECL_IMPORT +# endif +#else +# define Q_WIDGETS_EXPORT +#endif + +QT_END_NAMESPACE + +#endif // QTGUIGLOBAL_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qtwidgetsversion.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtwidgetsversion.h new file mode 100644 index 000000000..afd43d6fa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qtwidgetsversion.h @@ -0,0 +1,9 @@ +/* This file was generated by syncqt. */ +#ifndef QT_QTWIDGETS_VERSION_H +#define QT_QTWIDGETS_VERSION_H + +#define QTWIDGETS_VERSION_STR "5.9.4" + +#define QTWIDGETS_VERSION 0x050904 + +#endif // QT_QTWIDGETS_VERSION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qundogroup.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qundogroup.h new file mode 100644 index 000000000..dba79ea70 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qundogroup.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUNDOGROUP_H +#define QUNDOGROUP_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qstring.h> + +QT_REQUIRE_CONFIG(undogroup); + +QT_BEGIN_NAMESPACE + +class QUndoGroupPrivate; +class QUndoStack; +class QAction; + +class Q_WIDGETS_EXPORT QUndoGroup : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QUndoGroup) + +public: + explicit QUndoGroup(QObject *parent = Q_NULLPTR); + ~QUndoGroup(); + + void addStack(QUndoStack *stack); + void removeStack(QUndoStack *stack); + QList<QUndoStack*> stacks() const; + QUndoStack *activeStack() const; + +#ifndef QT_NO_ACTION + QAction *createUndoAction(QObject *parent, + const QString &prefix = QString()) const; + QAction *createRedoAction(QObject *parent, + const QString &prefix = QString()) const; +#endif // QT_NO_ACTION + bool canUndo() const; + bool canRedo() const; + QString undoText() const; + QString redoText() const; + bool isClean() const; + +public Q_SLOTS: + void undo(); + void redo(); + void setActiveStack(QUndoStack *stack); + +Q_SIGNALS: + void activeStackChanged(QUndoStack *stack); + void indexChanged(int idx); + void cleanChanged(bool clean); + void canUndoChanged(bool canUndo); + void canRedoChanged(bool canRedo); + void undoTextChanged(const QString &undoText); + void redoTextChanged(const QString &redoText); + +private: + Q_DISABLE_COPY(QUndoGroup) +}; + +QT_END_NAMESPACE + +#endif // QUNDOGROUP_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qundostack.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qundostack.h new file mode 100644 index 000000000..7ab90b507 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qundostack.h @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUNDOSTACK_H +#define QUNDOSTACK_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtCore/qstring.h> + +QT_REQUIRE_CONFIG(undocommand); + +QT_BEGIN_NAMESPACE + +class QAction; +class QUndoCommandPrivate; +class QUndoStackPrivate; + +class Q_WIDGETS_EXPORT QUndoCommand +{ + QUndoCommandPrivate *d; + +public: + explicit QUndoCommand(QUndoCommand *parent = Q_NULLPTR); + explicit QUndoCommand(const QString &text, QUndoCommand *parent = Q_NULLPTR); + virtual ~QUndoCommand(); + + virtual void undo(); + virtual void redo(); + + QString text() const; + QString actionText() const; + void setText(const QString &text); + + bool isObsolete() const; + void setObsolete(bool obsolete); + + virtual int id() const; + virtual bool mergeWith(const QUndoCommand *other); + + int childCount() const; + const QUndoCommand *child(int index) const; + +private: + Q_DISABLE_COPY(QUndoCommand) + friend class QUndoStack; +}; + +#if QT_CONFIG(undostack) + +class Q_WIDGETS_EXPORT QUndoStack : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QUndoStack) + Q_PROPERTY(bool active READ isActive WRITE setActive) + Q_PROPERTY(int undoLimit READ undoLimit WRITE setUndoLimit) + +public: + explicit QUndoStack(QObject *parent = Q_NULLPTR); + ~QUndoStack(); + void clear(); + + void push(QUndoCommand *cmd); + + bool canUndo() const; + bool canRedo() const; + QString undoText() const; + QString redoText() const; + + int count() const; + int index() const; + QString text(int idx) const; + +#ifndef QT_NO_ACTION + QAction *createUndoAction(QObject *parent, + const QString &prefix = QString()) const; + QAction *createRedoAction(QObject *parent, + const QString &prefix = QString()) const; +#endif // QT_NO_ACTION + + bool isActive() const; + bool isClean() const; + int cleanIndex() const; + + void beginMacro(const QString &text); + void endMacro(); + + void setUndoLimit(int limit); + int undoLimit() const; + + const QUndoCommand *command(int index) const; + +public Q_SLOTS: + void setClean(); + void resetClean(); + void setIndex(int idx); + void undo(); + void redo(); + void setActive(bool active = true); + +Q_SIGNALS: + void indexChanged(int idx); + void cleanChanged(bool clean); + void canUndoChanged(bool canUndo); + void canRedoChanged(bool canRedo); + void undoTextChanged(const QString &undoText); + void redoTextChanged(const QString &redoText); + +private: + Q_DISABLE_COPY(QUndoStack) + friend class QUndoGroup; +}; + +#endif // QT_CONFIG(undostack) + +QT_END_NAMESPACE + +#endif // QUNDOSTACK_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qundoview.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qundoview.h new file mode 100644 index 000000000..0bfcdd0c1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qundoview.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUNDOVIEW_H +#define QUNDOVIEW_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qlistview.h> +#include <QtCore/qstring.h> + +QT_REQUIRE_CONFIG(undoview); + +QT_BEGIN_NAMESPACE + +class QUndoViewPrivate; +class QUndoStack; +class QUndoGroup; +class QIcon; + + +class Q_WIDGETS_EXPORT QUndoView : public QListView +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QUndoView) + Q_PROPERTY(QString emptyLabel READ emptyLabel WRITE setEmptyLabel) + Q_PROPERTY(QIcon cleanIcon READ cleanIcon WRITE setCleanIcon) + +public: + explicit QUndoView(QWidget *parent = Q_NULLPTR); + explicit QUndoView(QUndoStack *stack, QWidget *parent = Q_NULLPTR); +#if QT_CONFIG(undogroup) + explicit QUndoView(QUndoGroup *group, QWidget *parent = Q_NULLPTR); +#endif + ~QUndoView(); + + QUndoStack *stack() const; +#if QT_CONFIG(undogroup) + QUndoGroup *group() const; +#endif + + void setEmptyLabel(const QString &label); + QString emptyLabel() const; + + void setCleanIcon(const QIcon &icon); + QIcon cleanIcon() const; + +public Q_SLOTS: + void setStack(QUndoStack *stack); +#if QT_CONFIG(undogroup) + void setGroup(QUndoGroup *group); +#endif + +private: + Q_DISABLE_COPY(QUndoView) +}; + +QT_END_NAMESPACE + +#endif // QUNDOVIEW_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qwhatsthis.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qwhatsthis.h new file mode 100644 index 000000000..3211796d3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qwhatsthis.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWHATSTHIS_H +#define QWHATSTHIS_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtCore/qobject.h> +#include <QtGui/qcursor.h> + +QT_REQUIRE_CONFIG(whatsthis); + +QT_BEGIN_NAMESPACE + +class QAction; + +class Q_WIDGETS_EXPORT QWhatsThis +{ + QWhatsThis() Q_DECL_EQ_DELETE; + +public: + static void enterWhatsThisMode(); + static bool inWhatsThisMode(); + static void leaveWhatsThisMode(); + + static void showText(const QPoint &pos, const QString &text, QWidget *w = Q_NULLPTR); + static void hideText(); + + static QAction *createAction(QObject *parent = Q_NULLPTR); + +}; + +QT_END_NAMESPACE + +#endif // QWHATSTHIS_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qwidget.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qwidget.h new file mode 100644 index 000000000..732af4de0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qwidget.h @@ -0,0 +1,880 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGET_H +#define QWIDGET_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtGui/qwindowdefs.h> +#include <QtCore/qobject.h> +#include <QtCore/qmargins.h> +#include <QtGui/qpaintdevice.h> +#include <QtGui/qpalette.h> +#include <QtGui/qfont.h> +#include <QtGui/qfontmetrics.h> +#include <QtGui/qfontinfo.h> +#include <QtWidgets/qsizepolicy.h> +#include <QtGui/qregion.h> +#include <QtGui/qbrush.h> +#include <QtGui/qcursor.h> +#include <QtGui/qkeysequence.h> + +#ifdef QT_INCLUDE_COMPAT +#include <QtGui/qevent.h> +#endif + +QT_BEGIN_NAMESPACE + + +class QLayout; +class QWSRegionManager; +class QStyle; +class QAction; +class QVariant; +class QWindow; +class QActionEvent; +class QMouseEvent; +class QWheelEvent; +class QHoverEvent; +class QKeyEvent; +class QFocusEvent; +class QPaintEvent; +class QMoveEvent; +class QResizeEvent; +class QCloseEvent; +class QContextMenuEvent; +class QInputMethodEvent; +class QTabletEvent; +class QDragEnterEvent; +class QDragMoveEvent; +class QDragLeaveEvent; +class QDropEvent; +class QShowEvent; +class QHideEvent; +class QIcon; +class QBackingStore; +class QPlatformWindow; +class QLocale; +class QGraphicsProxyWidget; +class QGraphicsEffect; +class QRasterWindowSurface; +class QUnifiedToolbarSurface; +class QPixmap; +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +#endif + +class QWidgetData +{ +public: + WId winid; + uint widget_attributes; + Qt::WindowFlags window_flags; + uint window_state : 4; + uint focus_policy : 4; + uint sizehint_forced :1; + uint is_closing :1; + uint in_show : 1; + uint in_set_window_state : 1; + mutable uint fstrut_dirty : 1; + uint context_menu_policy : 3; + uint window_modality : 2; + uint in_destructor : 1; + uint unused : 13; + QRect crect; + mutable QPalette pal; + QFont fnt; + QRect wrect; +}; + +class QWidgetPrivate; + +class Q_WIDGETS_EXPORT QWidget : public QObject, public QPaintDevice +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QWidget) + + Q_PROPERTY(bool modal READ isModal) + Q_PROPERTY(Qt::WindowModality windowModality READ windowModality WRITE setWindowModality) + Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled) + Q_PROPERTY(QRect geometry READ geometry WRITE setGeometry) + Q_PROPERTY(QRect frameGeometry READ frameGeometry) + Q_PROPERTY(QRect normalGeometry READ normalGeometry) + Q_PROPERTY(int x READ x) + Q_PROPERTY(int y READ y) + Q_PROPERTY(QPoint pos READ pos WRITE move DESIGNABLE false STORED false) + Q_PROPERTY(QSize frameSize READ frameSize) + Q_PROPERTY(QSize size READ size WRITE resize DESIGNABLE false STORED false) + Q_PROPERTY(int width READ width) + Q_PROPERTY(int height READ height) + Q_PROPERTY(QRect rect READ rect) + Q_PROPERTY(QRect childrenRect READ childrenRect) + Q_PROPERTY(QRegion childrenRegion READ childrenRegion) + Q_PROPERTY(QSizePolicy sizePolicy READ sizePolicy WRITE setSizePolicy) + Q_PROPERTY(QSize minimumSize READ minimumSize WRITE setMinimumSize) + Q_PROPERTY(QSize maximumSize READ maximumSize WRITE setMaximumSize) + Q_PROPERTY(int minimumWidth READ minimumWidth WRITE setMinimumWidth STORED false DESIGNABLE false) + Q_PROPERTY(int minimumHeight READ minimumHeight WRITE setMinimumHeight STORED false DESIGNABLE false) + Q_PROPERTY(int maximumWidth READ maximumWidth WRITE setMaximumWidth STORED false DESIGNABLE false) + Q_PROPERTY(int maximumHeight READ maximumHeight WRITE setMaximumHeight STORED false DESIGNABLE false) + Q_PROPERTY(QSize sizeIncrement READ sizeIncrement WRITE setSizeIncrement) + Q_PROPERTY(QSize baseSize READ baseSize WRITE setBaseSize) + Q_PROPERTY(QPalette palette READ palette WRITE setPalette) + Q_PROPERTY(QFont font READ font WRITE setFont) +#ifndef QT_NO_CURSOR + Q_PROPERTY(QCursor cursor READ cursor WRITE setCursor RESET unsetCursor) +#endif + Q_PROPERTY(bool mouseTracking READ hasMouseTracking WRITE setMouseTracking) + Q_PROPERTY(bool tabletTracking READ hasTabletTracking WRITE setTabletTracking) + Q_PROPERTY(bool isActiveWindow READ isActiveWindow) + Q_PROPERTY(Qt::FocusPolicy focusPolicy READ focusPolicy WRITE setFocusPolicy) + Q_PROPERTY(bool focus READ hasFocus) + Q_PROPERTY(Qt::ContextMenuPolicy contextMenuPolicy READ contextMenuPolicy WRITE setContextMenuPolicy) + Q_PROPERTY(bool updatesEnabled READ updatesEnabled WRITE setUpdatesEnabled DESIGNABLE false) + Q_PROPERTY(bool visible READ isVisible WRITE setVisible DESIGNABLE false) + Q_PROPERTY(bool minimized READ isMinimized) + Q_PROPERTY(bool maximized READ isMaximized) + Q_PROPERTY(bool fullScreen READ isFullScreen) + Q_PROPERTY(QSize sizeHint READ sizeHint) + Q_PROPERTY(QSize minimumSizeHint READ minimumSizeHint) + Q_PROPERTY(bool acceptDrops READ acceptDrops WRITE setAcceptDrops) + Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle NOTIFY windowTitleChanged DESIGNABLE isWindow) + Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon NOTIFY windowIconChanged DESIGNABLE isWindow) + Q_PROPERTY(QString windowIconText READ windowIconText WRITE setWindowIconText NOTIFY windowIconTextChanged DESIGNABLE isWindow) // deprecated + Q_PROPERTY(double windowOpacity READ windowOpacity WRITE setWindowOpacity DESIGNABLE isWindow) + Q_PROPERTY(bool windowModified READ isWindowModified WRITE setWindowModified DESIGNABLE isWindow) +#ifndef QT_NO_TOOLTIP + Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip) + Q_PROPERTY(int toolTipDuration READ toolTipDuration WRITE setToolTipDuration) +#endif +#if QT_CONFIG(statustip) + Q_PROPERTY(QString statusTip READ statusTip WRITE setStatusTip) +#endif +#if QT_CONFIG(whatsthis) + Q_PROPERTY(QString whatsThis READ whatsThis WRITE setWhatsThis) +#endif +#ifndef QT_NO_ACCESSIBILITY + Q_PROPERTY(QString accessibleName READ accessibleName WRITE setAccessibleName) + Q_PROPERTY(QString accessibleDescription READ accessibleDescription WRITE setAccessibleDescription) +#endif + Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection RESET unsetLayoutDirection) + QDOC_PROPERTY(Qt::WindowFlags windowFlags READ windowFlags WRITE setWindowFlags) + Q_PROPERTY(bool autoFillBackground READ autoFillBackground WRITE setAutoFillBackground) +#ifndef QT_NO_STYLE_STYLESHEET + Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet) +#endif + Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET unsetLocale) + Q_PROPERTY(QString windowFilePath READ windowFilePath WRITE setWindowFilePath DESIGNABLE isWindow) + Q_PROPERTY(Qt::InputMethodHints inputMethodHints READ inputMethodHints WRITE setInputMethodHints) + +public: + enum RenderFlag { + DrawWindowBackground = 0x1, + DrawChildren = 0x2, + IgnoreMask = 0x4 + }; + Q_DECLARE_FLAGS(RenderFlags, RenderFlag) + + explicit QWidget(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); + ~QWidget(); + + int devType() const Q_DECL_OVERRIDE; + + WId winId() const; + void createWinId(); // internal, going away + inline WId internalWinId() const { return data->winid; } + WId effectiveWinId() const; + + // GUI style setting + QStyle *style() const; + void setStyle(QStyle *); + // Widget types and states + + bool isTopLevel() const; + bool isWindow() const; + + bool isModal() const; + Qt::WindowModality windowModality() const; + void setWindowModality(Qt::WindowModality windowModality); + + bool isEnabled() const; + bool isEnabledTo(const QWidget *) const; + bool isEnabledToTLW() const; + +public Q_SLOTS: + void setEnabled(bool); + void setDisabled(bool); + void setWindowModified(bool); + + // Widget coordinates + +public: + QRect frameGeometry() const; + const QRect &geometry() const; + QRect normalGeometry() const; + + int x() const; + int y() const; + QPoint pos() const; + QSize frameSize() const; + QSize size() const; + inline int width() const; + inline int height() const; + inline QRect rect() const; + QRect childrenRect() const; + QRegion childrenRegion() const; + + QSize minimumSize() const; + QSize maximumSize() const; + int minimumWidth() const; + int minimumHeight() const; + int maximumWidth() const; + int maximumHeight() const; + void setMinimumSize(const QSize &); + void setMinimumSize(int minw, int minh); + void setMaximumSize(const QSize &); + void setMaximumSize(int maxw, int maxh); + void setMinimumWidth(int minw); + void setMinimumHeight(int minh); + void setMaximumWidth(int maxw); + void setMaximumHeight(int maxh); + +#ifdef Q_QDOC + void setupUi(QWidget *widget); +#endif + + QSize sizeIncrement() const; + void setSizeIncrement(const QSize &); + void setSizeIncrement(int w, int h); + QSize baseSize() const; + void setBaseSize(const QSize &); + void setBaseSize(int basew, int baseh); + + void setFixedSize(const QSize &); + void setFixedSize(int w, int h); + void setFixedWidth(int w); + void setFixedHeight(int h); + + // Widget coordinate mapping + + QPoint mapToGlobal(const QPoint &) const; + QPoint mapFromGlobal(const QPoint &) const; + QPoint mapToParent(const QPoint &) const; + QPoint mapFromParent(const QPoint &) const; + QPoint mapTo(const QWidget *, const QPoint &) const; + QPoint mapFrom(const QWidget *, const QPoint &) const; + + QWidget *window() const; + QWidget *nativeParentWidget() const; + inline QWidget *topLevelWidget() const { return window(); } + + // Widget appearance functions + const QPalette &palette() const; + void setPalette(const QPalette &); + + void setBackgroundRole(QPalette::ColorRole); + QPalette::ColorRole backgroundRole() const; + + void setForegroundRole(QPalette::ColorRole); + QPalette::ColorRole foregroundRole() const; + + const QFont &font() const; + void setFont(const QFont &); + QFontMetrics fontMetrics() const; + QFontInfo fontInfo() const; + +#ifndef QT_NO_CURSOR + QCursor cursor() const; + void setCursor(const QCursor &); + void unsetCursor(); +#endif + + void setMouseTracking(bool enable); + bool hasMouseTracking() const; + bool underMouse() const; + + void setTabletTracking(bool enable); + bool hasTabletTracking() const; + + void setMask(const QBitmap &); + void setMask(const QRegion &); + QRegion mask() const; + void clearMask(); + + void render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), + const QRegion &sourceRegion = QRegion(), + RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren)); + + void render(QPainter *painter, const QPoint &targetOffset = QPoint(), + const QRegion &sourceRegion = QRegion(), + RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren)); + + Q_INVOKABLE QPixmap grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1))); + +#if QT_CONFIG(graphicseffect) + QGraphicsEffect *graphicsEffect() const; + void setGraphicsEffect(QGraphicsEffect *effect); +#endif // QT_CONFIG(graphicseffect) + +#ifndef QT_NO_GESTURES + void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags()); + void ungrabGesture(Qt::GestureType type); +#endif + +public Q_SLOTS: + void setWindowTitle(const QString &); +#ifndef QT_NO_STYLE_STYLESHEET + void setStyleSheet(const QString& styleSheet); +#endif +public: +#ifndef QT_NO_STYLE_STYLESHEET + QString styleSheet() const; +#endif + QString windowTitle() const; + void setWindowIcon(const QIcon &icon); + QIcon windowIcon() const; + void setWindowIconText(const QString &); + QString windowIconText() const; + void setWindowRole(const QString &); + QString windowRole() const; + void setWindowFilePath(const QString &filePath); + QString windowFilePath() const; + + void setWindowOpacity(qreal level); + qreal windowOpacity() const; + + bool isWindowModified() const; +#ifndef QT_NO_TOOLTIP + void setToolTip(const QString &); + QString toolTip() const; + void setToolTipDuration(int msec); + int toolTipDuration() const; +#endif +#if QT_CONFIG(statustip) + void setStatusTip(const QString &); + QString statusTip() const; +#endif +#if QT_CONFIG(whatsthis) + void setWhatsThis(const QString &); + QString whatsThis() const; +#endif +#ifndef QT_NO_ACCESSIBILITY + QString accessibleName() const; + void setAccessibleName(const QString &name); + QString accessibleDescription() const; + void setAccessibleDescription(const QString &description); +#endif + + void setLayoutDirection(Qt::LayoutDirection direction); + Qt::LayoutDirection layoutDirection() const; + void unsetLayoutDirection(); + + void setLocale(const QLocale &locale); + QLocale locale() const; + void unsetLocale(); + + inline bool isRightToLeft() const { return layoutDirection() == Qt::RightToLeft; } + inline bool isLeftToRight() const { return layoutDirection() == Qt::LeftToRight; } + +public Q_SLOTS: + inline void setFocus() { setFocus(Qt::OtherFocusReason); } + +public: + bool isActiveWindow() const; + void activateWindow(); + void clearFocus(); + + void setFocus(Qt::FocusReason reason); + Qt::FocusPolicy focusPolicy() const; + void setFocusPolicy(Qt::FocusPolicy policy); + bool hasFocus() const; + static void setTabOrder(QWidget *, QWidget *); + void setFocusProxy(QWidget *); + QWidget *focusProxy() const; + Qt::ContextMenuPolicy contextMenuPolicy() const; + void setContextMenuPolicy(Qt::ContextMenuPolicy policy); + + // Grab functions + void grabMouse(); +#ifndef QT_NO_CURSOR + void grabMouse(const QCursor &); +#endif + void releaseMouse(); + void grabKeyboard(); + void releaseKeyboard(); +#ifndef QT_NO_SHORTCUT + int grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut); + void releaseShortcut(int id); + void setShortcutEnabled(int id, bool enable = true); + void setShortcutAutoRepeat(int id, bool enable = true); +#endif + static QWidget *mouseGrabber(); + static QWidget *keyboardGrabber(); + + // Update/refresh functions + inline bool updatesEnabled() const; + void setUpdatesEnabled(bool enable); + +#if QT_CONFIG(graphicsview) + QGraphicsProxyWidget *graphicsProxyWidget() const; +#endif + +public Q_SLOTS: + void update(); + void repaint(); + +public: + inline void update(int x, int y, int w, int h); + void update(const QRect&); + void update(const QRegion&); + + void repaint(int x, int y, int w, int h); + void repaint(const QRect &); + void repaint(const QRegion &); + +public Q_SLOTS: + // Widget management functions + + virtual void setVisible(bool visible); + void setHidden(bool hidden); + void show(); + void hide(); + + void showMinimized(); + void showMaximized(); + void showFullScreen(); + void showNormal(); + + bool close(); + void raise(); + void lower(); + +public: + void stackUnder(QWidget*); + void move(int x, int y); + void move(const QPoint &); + void resize(int w, int h); + void resize(const QSize &); + inline void setGeometry(int x, int y, int w, int h); + void setGeometry(const QRect &); + QByteArray saveGeometry() const; + bool restoreGeometry(const QByteArray &geometry); + void adjustSize(); + bool isVisible() const; + bool isVisibleTo(const QWidget *) const; + inline bool isHidden() const; + + bool isMinimized() const; + bool isMaximized() const; + bool isFullScreen() const; + + Qt::WindowStates windowState() const; + void setWindowState(Qt::WindowStates state); + void overrideWindowState(Qt::WindowStates state); + + virtual QSize sizeHint() const; + virtual QSize minimumSizeHint() const; + + QSizePolicy sizePolicy() const; + void setSizePolicy(QSizePolicy); + inline void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical); + virtual int heightForWidth(int) const; + virtual bool hasHeightForWidth() const; + + QRegion visibleRegion() const; + + void setContentsMargins(int left, int top, int right, int bottom); + void setContentsMargins(const QMargins &margins); + void getContentsMargins(int *left, int *top, int *right, int *bottom) const; + QMargins contentsMargins() const; + + QRect contentsRect() const; + +public: + QLayout *layout() const; + void setLayout(QLayout *); + void updateGeometry(); + + void setParent(QWidget *parent); + void setParent(QWidget *parent, Qt::WindowFlags f); + + void scroll(int dx, int dy); + void scroll(int dx, int dy, const QRect&); + + // Misc. functions + + QWidget *focusWidget() const; + QWidget *nextInFocusChain() const; + QWidget *previousInFocusChain() const; + + // drag and drop + bool acceptDrops() const; + void setAcceptDrops(bool on); + +#ifndef QT_NO_ACTION + //actions + void addAction(QAction *action); +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) + void addActions(const QList<QAction*> &actions); + void insertActions(const QAction *before, const QList<QAction*> &actions); +#else + void addActions(QList<QAction*> actions); + void insertActions(QAction *before, QList<QAction*> actions); +#endif + void insertAction(QAction *before, QAction *action); + void removeAction(QAction *action); + QList<QAction*> actions() const; +#endif + + QWidget *parentWidget() const; + + void setWindowFlags(Qt::WindowFlags type); + inline Qt::WindowFlags windowFlags() const; + void setWindowFlag(Qt::WindowType, bool on = true); + void overrideWindowFlags(Qt::WindowFlags type); + + inline Qt::WindowType windowType() const; + + static QWidget *find(WId); + inline QWidget *childAt(int x, int y) const; + QWidget *childAt(const QPoint &p) const; + + void setAttribute(Qt::WidgetAttribute, bool on = true); + inline bool testAttribute(Qt::WidgetAttribute) const; + + QPaintEngine *paintEngine() const Q_DECL_OVERRIDE; + + void ensurePolished() const; + + bool isAncestorOf(const QWidget *child) const; + +#ifdef QT_KEYPAD_NAVIGATION + bool hasEditFocus() const; + void setEditFocus(bool on); +#endif + + bool autoFillBackground() const; + void setAutoFillBackground(bool enabled); + + QBackingStore *backingStore() const; + + QWindow *windowHandle() const; + + static QWidget *createWindowContainer(QWindow *window, QWidget *parent=Q_NULLPTR, Qt::WindowFlags flags=Qt::WindowFlags()); + + friend class QDesktopScreenWidget; + +Q_SIGNALS: + void windowTitleChanged(const QString &title); + void windowIconChanged(const QIcon &icon); + void windowIconTextChanged(const QString &iconText); + void customContextMenuRequested(const QPoint &pos); + +protected: + // Event handlers + bool event(QEvent *event) Q_DECL_OVERRIDE; + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void mouseDoubleClickEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); +#if QT_CONFIG(wheelevent) + virtual void wheelEvent(QWheelEvent *event); +#endif + virtual void keyPressEvent(QKeyEvent *event); + virtual void keyReleaseEvent(QKeyEvent *event); + virtual void focusInEvent(QFocusEvent *event); + virtual void focusOutEvent(QFocusEvent *event); + virtual void enterEvent(QEvent *event); + virtual void leaveEvent(QEvent *event); + virtual void paintEvent(QPaintEvent *event); + virtual void moveEvent(QMoveEvent *event); + virtual void resizeEvent(QResizeEvent *event); + virtual void closeEvent(QCloseEvent *event); +#ifndef QT_NO_CONTEXTMENU + virtual void contextMenuEvent(QContextMenuEvent *event); +#endif +#if QT_CONFIG(tabletevent) + virtual void tabletEvent(QTabletEvent *event); +#endif +#ifndef QT_NO_ACTION + virtual void actionEvent(QActionEvent *event); +#endif + +#ifndef QT_NO_DRAGANDDROP + virtual void dragEnterEvent(QDragEnterEvent *event); + virtual void dragMoveEvent(QDragMoveEvent *event); + virtual void dragLeaveEvent(QDragLeaveEvent *event); + virtual void dropEvent(QDropEvent *event); +#endif + + virtual void showEvent(QShowEvent *event); + virtual void hideEvent(QHideEvent *event); + virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result); + + // Misc. protected functions + virtual void changeEvent(QEvent *); + + int metric(PaintDeviceMetric) const Q_DECL_OVERRIDE; + void initPainter(QPainter *painter) const Q_DECL_OVERRIDE; + QPaintDevice *redirected(QPoint *offset) const Q_DECL_OVERRIDE; + QPainter *sharedPainter() const Q_DECL_OVERRIDE; + + virtual void inputMethodEvent(QInputMethodEvent *); +public: + virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; + + Qt::InputMethodHints inputMethodHints() const; + void setInputMethodHints(Qt::InputMethodHints hints); + +protected Q_SLOTS: + void updateMicroFocus(); +protected: + + void create(WId = 0, bool initializeWindow = true, + bool destroyOldWindow = true); + void destroy(bool destroyWindow = true, + bool destroySubWindows = true); + + friend class QDataWidgetMapperPrivate; // for access to focusNextPrevChild + virtual bool focusNextPrevChild(bool next); + inline bool focusNextChild() { return focusNextPrevChild(true); } + inline bool focusPreviousChild() { return focusNextPrevChild(false); } + +protected: + QWidget(QWidgetPrivate &d, QWidget* parent, Qt::WindowFlags f); +private: + void setBackingStore(QBackingStore *store); + + bool testAttribute_helper(Qt::WidgetAttribute) const; + + QLayout *takeLayout(); + + friend class QBackingStoreDevice; + friend class QWidgetBackingStore; + friend class QApplication; + friend class QApplicationPrivate; + friend class QGuiApplication; + friend class QGuiApplicationPrivate; + friend class QBaseApplication; + friend class QPainter; + friend class QPainterPrivate; + friend class QPixmap; // for QPixmap::fill() + friend class QFontMetrics; + friend class QFontInfo; + friend class QLayout; + friend class QWidgetItem; + friend class QWidgetItemV2; + friend class QGLContext; + friend class QGLWidget; + friend class QGLWindowSurface; + friend class QX11PaintEngine; + friend class QWin32PaintEngine; + friend class QShortcutPrivate; + friend class QWindowSurface; + friend class QGraphicsProxyWidget; + friend class QGraphicsProxyWidgetPrivate; + friend class QStyleSheetStyle; + friend struct QWidgetExceptionCleaner; + friend class QWidgetWindow; + friend class QAccessibleWidget; + friend class QAccessibleTable; +#ifndef QT_NO_GESTURES + friend class QGestureManager; + friend class QWinNativePanGestureRecognizer; +#endif // QT_NO_GESTURES + friend class QWidgetEffectSourcePrivate; + +#ifdef Q_OS_MAC + friend bool qt_mac_is_metal(const QWidget *w); +#endif + friend Q_WIDGETS_EXPORT QWidgetData *qt_qwidget_data(QWidget *widget); + friend Q_WIDGETS_EXPORT QWidgetPrivate *qt_widget_private(QWidget *widget); + +private: + Q_DISABLE_COPY(QWidget) + Q_PRIVATE_SLOT(d_func(), void _q_showIfNotHidden()) + + QWidgetData *data; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QWidget::RenderFlags) + +#ifndef Q_QDOC +template <> inline QWidget *qobject_cast<QWidget*>(QObject *o) +{ + if (!o || !o->isWidgetType()) return Q_NULLPTR; + return static_cast<QWidget*>(o); +} +template <> inline const QWidget *qobject_cast<const QWidget*>(const QObject *o) +{ + if (!o || !o->isWidgetType()) return Q_NULLPTR; + return static_cast<const QWidget*>(o); +} +#endif // !Q_QDOC + +inline QWidget *QWidget::childAt(int ax, int ay) const +{ return childAt(QPoint(ax, ay)); } + +inline Qt::WindowType QWidget::windowType() const +{ return static_cast<Qt::WindowType>(int(data->window_flags & Qt::WindowType_Mask)); } +inline Qt::WindowFlags QWidget::windowFlags() const +{ return data->window_flags; } + +inline bool QWidget::isTopLevel() const +{ return (windowType() & Qt::Window); } + +inline bool QWidget::isWindow() const +{ return (windowType() & Qt::Window); } + +inline bool QWidget::isEnabled() const +{ return !testAttribute(Qt::WA_Disabled); } + +inline bool QWidget::isModal() const +{ return data->window_modality != Qt::NonModal; } + +inline bool QWidget::isEnabledToTLW() const +{ return isEnabled(); } + +inline int QWidget::minimumWidth() const +{ return minimumSize().width(); } + +inline int QWidget::minimumHeight() const +{ return minimumSize().height(); } + +inline int QWidget::maximumWidth() const +{ return maximumSize().width(); } + +inline int QWidget::maximumHeight() const +{ return maximumSize().height(); } + +inline void QWidget::setMinimumSize(const QSize &s) +{ setMinimumSize(s.width(),s.height()); } + +inline void QWidget::setMaximumSize(const QSize &s) +{ setMaximumSize(s.width(),s.height()); } + +inline void QWidget::setSizeIncrement(const QSize &s) +{ setSizeIncrement(s.width(),s.height()); } + +inline void QWidget::setBaseSize(const QSize &s) +{ setBaseSize(s.width(),s.height()); } + +inline const QFont &QWidget::font() const +{ return data->fnt; } + +inline QFontMetrics QWidget::fontMetrics() const +{ return QFontMetrics(data->fnt); } + +inline QFontInfo QWidget::fontInfo() const +{ return QFontInfo(data->fnt); } + +inline void QWidget::setMouseTracking(bool enable) +{ setAttribute(Qt::WA_MouseTracking, enable); } + +inline bool QWidget::hasMouseTracking() const +{ return testAttribute(Qt::WA_MouseTracking); } + +inline bool QWidget::underMouse() const +{ return testAttribute(Qt::WA_UnderMouse); } + +inline void QWidget::setTabletTracking(bool enable) +{ setAttribute(Qt::WA_TabletTracking, enable); } + +inline bool QWidget::hasTabletTracking() const +{ return testAttribute(Qt::WA_TabletTracking); } + +inline bool QWidget::updatesEnabled() const +{ return !testAttribute(Qt::WA_UpdatesDisabled); } + +inline void QWidget::update(int ax, int ay, int aw, int ah) +{ update(QRect(ax, ay, aw, ah)); } + +inline bool QWidget::isVisible() const +{ return testAttribute(Qt::WA_WState_Visible); } + +inline bool QWidget::isHidden() const +{ return testAttribute(Qt::WA_WState_Hidden); } + +inline void QWidget::move(int ax, int ay) +{ move(QPoint(ax, ay)); } + +inline void QWidget::resize(int w, int h) +{ resize(QSize(w, h)); } + +inline void QWidget::setGeometry(int ax, int ay, int aw, int ah) +{ setGeometry(QRect(ax, ay, aw, ah)); } + +inline QRect QWidget::rect() const +{ return QRect(0,0,data->crect.width(),data->crect.height()); } + +inline const QRect &QWidget::geometry() const +{ return data->crect; } + +inline QSize QWidget::size() const +{ return data->crect.size(); } + +inline int QWidget::width() const +{ return data->crect.width(); } + +inline int QWidget::height() const +{ return data->crect.height(); } + +inline QWidget *QWidget::parentWidget() const +{ return static_cast<QWidget *>(QObject::parent()); } + +inline void QWidget::setSizePolicy(QSizePolicy::Policy hor, QSizePolicy::Policy ver) +{ setSizePolicy(QSizePolicy(hor, ver)); } + +inline bool QWidget::testAttribute(Qt::WidgetAttribute attribute) const +{ + if (attribute < int(8*sizeof(uint))) + return data->widget_attributes & (1<<attribute); + return testAttribute_helper(attribute); +} + + +#define QWIDGETSIZE_MAX ((1<<24)-1) + +#ifndef QT_NO_DEBUG_STREAM +Q_WIDGETS_EXPORT QDebug operator<<(QDebug, const QWidget *); +#endif + +QT_END_NAMESPACE + +#endif // QWIDGET_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qwidgetaction.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qwidgetaction.h new file mode 100644 index 000000000..3da691a43 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qwidgetaction.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIDGETACTION_H +#define QWIDGETACTION_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qaction.h> + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ACTION + +class QWidgetActionPrivate; + +class Q_WIDGETS_EXPORT QWidgetAction : public QAction +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QWidgetAction) + +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 *) Q_DECL_OVERRIDE; + virtual bool eventFilter(QObject *, QEvent *) Q_DECL_OVERRIDE; + virtual QWidget *createWidget(QWidget *parent); + virtual void deleteWidget(QWidget *widget); + QList<QWidget *> createdWidgets() const; + +private: + Q_DISABLE_COPY(QWidgetAction) + Q_PRIVATE_SLOT(d_func(), void _q_widgetDestroyed(QObject *)) + friend class QToolBar; +}; + +#endif // QT_NO_ACTION + +QT_END_NAMESPACE + +#endif // QWIDGETACTION_H diff --git a/qrenderdoc/3rdparty/qt/include/QtWidgets/qwizard.h b/qrenderdoc/3rdparty/qt/include/QtWidgets/qwizard.h new file mode 100644 index 000000000..4d03bf91d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/include/QtWidgets/qwizard.h @@ -0,0 +1,262 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWIZARD_H +#define QWIZARD_H + +#include <QtWidgets/qtwidgetsglobal.h> +#include <QtWidgets/qdialog.h> + +QT_REQUIRE_CONFIG(wizard); + +QT_BEGIN_NAMESPACE + +class QAbstractButton; +class QWizardPage; +class QWizardPrivate; + +class Q_WIDGETS_EXPORT QWizard : public QDialog +{ + Q_OBJECT + Q_PROPERTY(WizardStyle wizardStyle READ wizardStyle WRITE setWizardStyle) + Q_PROPERTY(WizardOptions options READ options WRITE setOptions) + Q_PROPERTY(Qt::TextFormat titleFormat READ titleFormat WRITE setTitleFormat) + Q_PROPERTY(Qt::TextFormat subTitleFormat READ subTitleFormat WRITE setSubTitleFormat) + Q_PROPERTY(int startId READ startId WRITE setStartId) + Q_PROPERTY(int currentId READ currentId NOTIFY currentIdChanged) + +public: + enum WizardButton { + BackButton, + NextButton, + CommitButton, + FinishButton, + CancelButton, + HelpButton, + CustomButton1, + CustomButton2, + CustomButton3, + Stretch, + + NoButton = -1, + NStandardButtons = 6, + NButtons = 9 + }; + + enum WizardPixmap { + WatermarkPixmap, + LogoPixmap, + BannerPixmap, + BackgroundPixmap, + NPixmaps + }; + + enum WizardStyle { + ClassicStyle, + ModernStyle, + MacStyle, + AeroStyle, + NStyles + }; + Q_ENUM(WizardStyle) + + enum WizardOption { + IndependentPages = 0x00000001, + IgnoreSubTitles = 0x00000002, + ExtendedWatermarkPixmap = 0x00000004, + NoDefaultButton = 0x00000008, + NoBackButtonOnStartPage = 0x00000010, + NoBackButtonOnLastPage = 0x00000020, + DisabledBackButtonOnLastPage = 0x00000040, + HaveNextButtonOnLastPage = 0x00000080, + HaveFinishButtonOnEarlyPages = 0x00000100, + NoCancelButton = 0x00000200, + CancelButtonOnLeft = 0x00000400, + HaveHelpButton = 0x00000800, + HelpButtonOnRight = 0x00001000, + HaveCustomButton1 = 0x00002000, + HaveCustomButton2 = 0x00004000, + HaveCustomButton3 = 0x00008000, + NoCancelButtonOnLastPage = 0x00010000 + }; + Q_ENUM(WizardOption) + + Q_DECLARE_FLAGS(WizardOptions, WizardOption) + Q_FLAG(WizardOptions) + + explicit QWizard(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()); + ~QWizard(); + + int addPage(QWizardPage *page); + void setPage(int id, QWizardPage *page); + void removePage(int id); + QWizardPage *page(int id) const; + bool hasVisitedPage(int id) const; + QList<int> visitedPages() const; // ### Qt 6: visitedIds()? + QList<int> pageIds() const; + void setStartId(int id); + int startId() const; + QWizardPage *currentPage() const; + int currentId() const; + + virtual bool validateCurrentPage(); + virtual int nextId() const; + + void setField(const QString &name, const QVariant &value); + QVariant field(const QString &name) const; + + void setWizardStyle(WizardStyle style); + WizardStyle wizardStyle() const; + + void setOption(WizardOption option, bool on = true); + bool testOption(WizardOption option) const; + void setOptions(WizardOptions options); + WizardOptions options() const; + + void setButtonText(WizardButton which, const QString &text); + QString buttonText(WizardButton which) const; + void setButtonLayout(const QList<WizardButton> &layout); + void setButton(WizardButton which, QAbstractButton *button); + QAbstractButton *button(WizardButton which) const; + + void setTitleFormat(Qt::TextFormat format); + Qt::TextFormat titleFormat() const; + void setSubTitleFormat(Qt::TextFormat format); + Qt::TextFormat subTitleFormat() const; + void setPixmap(WizardPixmap which, const QPixmap &pixmap); + QPixmap pixmap(WizardPixmap which) const; + + void setSideWidget(QWidget *widget); + QWidget *sideWidget() const; + + void setDefaultProperty(const char *className, const char *property, + const char *changedSignal); + + void setVisible(bool visible) Q_DECL_OVERRIDE; + QSize sizeHint() const Q_DECL_OVERRIDE; + +Q_SIGNALS: + void currentIdChanged(int id); + void helpRequested(); + void customButtonClicked(int which); + void pageAdded(int id); + void pageRemoved(int id); + +public Q_SLOTS: + void back(); + void next(); + void restart(); + +protected: + bool event(QEvent *event) Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; +#if defined(Q_OS_WIN) || defined(Q_CLANG_QDOC) + bool nativeEvent(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE; +#endif + void done(int result) Q_DECL_OVERRIDE; + virtual void initializePage(int id); + virtual void cleanupPage(int id); + +private: + Q_DISABLE_COPY(QWizard) + Q_DECLARE_PRIVATE(QWizard) + Q_PRIVATE_SLOT(d_func(), void _q_emitCustomButtonClicked()) + Q_PRIVATE_SLOT(d_func(), void _q_updateButtonStates()) + Q_PRIVATE_SLOT(d_func(), void _q_handleFieldObjectDestroyed(QObject *)) + + friend class QWizardPage; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QWizard::WizardOptions) + +class QWizardPagePrivate; + +class Q_WIDGETS_EXPORT QWizardPage : public QWidget +{ + Q_OBJECT + Q_PROPERTY(QString title READ title WRITE setTitle) + Q_PROPERTY(QString subTitle READ subTitle WRITE setSubTitle) + +public: + explicit QWizardPage(QWidget *parent = Q_NULLPTR); + ~QWizardPage(); + + void setTitle(const QString &title); + QString title() const; + void setSubTitle(const QString &subTitle); + QString subTitle() const; + void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap); + QPixmap pixmap(QWizard::WizardPixmap which) const; + void setFinalPage(bool finalPage); + bool isFinalPage() const; + void setCommitPage(bool commitPage); + bool isCommitPage() const; + void setButtonText(QWizard::WizardButton which, const QString &text); + QString buttonText(QWizard::WizardButton which) const; + + virtual void initializePage(); + virtual void cleanupPage(); + virtual bool validatePage(); + virtual bool isComplete() const; + virtual int nextId() const; + +Q_SIGNALS: + void completeChanged(); + +protected: + void setField(const QString &name, const QVariant &value); + QVariant field(const QString &name) const; + void registerField(const QString &name, QWidget *widget, const char *property = Q_NULLPTR, + const char *changedSignal = Q_NULLPTR); + QWizard *wizard() const; + +private: + Q_DISABLE_COPY(QWizardPage) + Q_DECLARE_PRIVATE(QWizardPage) + Q_PRIVATE_SLOT(d_func(), void _q_maybeEmitCompleteChanged()) + Q_PRIVATE_SLOT(d_func(), void _q_updateCachedCompleteState()) + + friend class QWizard; + friend class QWizardPrivate; +}; + +QT_END_NAMESPACE + +#endif // QWIZARD_H diff --git a/qrenderdoc/3rdparty/qt/x64/bin/Qt5Core.dll b/qrenderdoc/3rdparty/qt/x64/bin/Qt5Core.dll new file mode 100644 index 000000000..b3d9f7924 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/bin/Qt5Core.dll differ diff --git a/qrenderdoc/3rdparty/qt/x64/bin/Qt5Gui.dll b/qrenderdoc/3rdparty/qt/x64/bin/Qt5Gui.dll new file mode 100644 index 000000000..2d3d11611 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/bin/Qt5Gui.dll differ diff --git a/qrenderdoc/3rdparty/qt/x64/bin/Qt5Network.dll b/qrenderdoc/3rdparty/qt/x64/bin/Qt5Network.dll new file mode 100644 index 000000000..62056b12f Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/bin/Qt5Network.dll differ diff --git a/qrenderdoc/3rdparty/qt/x64/bin/Qt5Svg.dll b/qrenderdoc/3rdparty/qt/x64/bin/Qt5Svg.dll new file mode 100644 index 000000000..b66884bb8 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/bin/Qt5Svg.dll differ diff --git a/qrenderdoc/3rdparty/qt/x64/bin/Qt5Widgets.dll b/qrenderdoc/3rdparty/qt/x64/bin/Qt5Widgets.dll new file mode 100644 index 000000000..0f794a6a4 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/bin/Qt5Widgets.dll differ diff --git a/qrenderdoc/3rdparty/qt/x64/bin/moc.exe b/qrenderdoc/3rdparty/qt/x64/bin/moc.exe new file mode 100644 index 000000000..8c199bebc Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/bin/moc.exe differ diff --git a/qrenderdoc/3rdparty/qt/x64/bin/rcc.exe b/qrenderdoc/3rdparty/qt/x64/bin/rcc.exe new file mode 100644 index 000000000..ef6c51b18 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/bin/rcc.exe differ diff --git a/qrenderdoc/3rdparty/qt/x64/bin/uic.exe b/qrenderdoc/3rdparty/qt/x64/bin/uic.exe new file mode 100644 index 000000000..dfcaf65dd Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/bin/uic.exe differ diff --git a/qrenderdoc/3rdparty/qt/x64/lib/Qt5Core.lib b/qrenderdoc/3rdparty/qt/x64/lib/Qt5Core.lib new file mode 100644 index 000000000..349f49ab6 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/lib/Qt5Core.lib differ diff --git a/qrenderdoc/3rdparty/qt/x64/lib/Qt5Gui.lib b/qrenderdoc/3rdparty/qt/x64/lib/Qt5Gui.lib new file mode 100644 index 000000000..22769d55a Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/lib/Qt5Gui.lib differ diff --git a/qrenderdoc/3rdparty/qt/x64/lib/Qt5Network.lib b/qrenderdoc/3rdparty/qt/x64/lib/Qt5Network.lib new file mode 100644 index 000000000..414061850 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/lib/Qt5Network.lib differ diff --git a/qrenderdoc/3rdparty/qt/x64/lib/Qt5Svg.lib b/qrenderdoc/3rdparty/qt/x64/lib/Qt5Svg.lib new file mode 100644 index 000000000..ab3d909a0 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/lib/Qt5Svg.lib differ diff --git a/qrenderdoc/3rdparty/qt/x64/lib/Qt5Widgets.lib b/qrenderdoc/3rdparty/qt/x64/lib/Qt5Widgets.lib new file mode 100644 index 000000000..185c62bc2 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/lib/Qt5Widgets.lib differ diff --git a/qrenderdoc/3rdparty/qt/x64/lib/qtmain.lib b/qrenderdoc/3rdparty/qt/x64/lib/qtmain.lib new file mode 100644 index 000000000..bf159e0b2 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/lib/qtmain.lib differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/aix/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/aix/qplatformdefs.h new file mode 100644 index 000000000..7bb8dfedd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/aix/qplatformdefs.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_AIX_QPLATFORMDEFS_H +#define Q_AIX_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 + + +// uncomment if you have problems with <sys/proc.h> because your gcc +// hasn't been built on exactly the same OS version your are using now. +// typedef int crid_t; +// typedef unsigned int class_id_t; +#include <pthread.h> +#include <dirent.h> +#include <fcntl.h> +#include <grp.h> +#include <pwd.h> +#include <signal.h> +#include <dlfcn.h> +#include <strings.h> // AIX X11 headers define FD_ZERO using bzero() + +#include <sys/types.h> +#include <sys/ioctl.h> +#include <sys/ipc.h> +#include <sys/time.h> +#include <sys/select.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 + +// Only AIX 4.3 and better support 64-bit + +#define QT_USE_XOPEN_LFS_EXTENSIONS +#include "../posix/qplatformdefs.h" + +#undef QT_SOCKLEN_T + +#ifdef _AIX43 +// AIX 4.3 and better +#define QT_SOCKLEN_T socklen_t +#elif _AIX42 +// AIX 4.2 +#define QT_SOCKLEN_T size_t +#else +// AIX 4.1 +#define QT_SOCKLEN_T size_t +// override +#define QT_SOCKOPTLEN_T int +#endif + +#ifdef QT_LARGEFILE_SUPPORT +#undef QT_DIR +#undef QT_OPENDIR +#undef QT_CLOSEDIR + +#define QT_DIR DIR64 +#define QT_OPENDIR ::opendir64 +#define QT_CLOSEDIR ::closedir64 +#endif + +#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE-0 >= 500) +// AIX 4.3 and better +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf +#endif + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/android-base-head.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/android-base-head.conf new file mode 100644 index 000000000..9be611191 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/android-base-head.conf @@ -0,0 +1,77 @@ +load(device_config) + +# In early configure setup; nothing useful to be done here. +isEmpty(DEFAULT_ANDROID_NDK_ROOT): return() + +NDK_ROOT = $$(ANDROID_NDK_ROOT) +!exists($$NDK_ROOT) { + NDK_ROOT = $$DEFAULT_ANDROID_NDK_ROOT +} + +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, x86_64): NDK_TOOLCHAIN_PREFIX = x86_64 + else: equals(ANDROID_TARGET_ARCH, mips): NDK_TOOLCHAIN_PREFIX = mipsel-linux-android + else: equals(ANDROID_TARGET_ARCH, mips64): NDK_TOOLCHAIN_PREFIX = mips64el-linux-android + else: equals(ANDROID_TARGET_ARCH, arm64-v8a): NDK_TOOLCHAIN_PREFIX = aarch64-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, x86_64): NDK_TOOLS_PREFIX = x86_64-linux-android + else: equals(ANDROID_TARGET_ARCH, mips): NDK_TOOLS_PREFIX = mipsel-linux-android + else: equals(ANDROID_TARGET_ARCH, mips64): NDK_TOOLS_PREFIX = mips64el-linux-android + else: equals(ANDROID_TARGET_ARCH, arm64-v8a): NDK_TOOLS_PREFIX = aarch64-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, x86_64): ANDROID_ARCHITECTURE = x86_64 +else: equals(ANDROID_TARGET_ARCH, mips): ANDROID_ARCHITECTURE = mips +else: equals(ANDROID_TARGET_ARCH, mips64): ANDROID_ARCHITECTURE = mips64 +else: equals(ANDROID_TARGET_ARCH, arm64-v8a): ANDROID_ARCHITECTURE = arm64 +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 + + +ANDROID_SDK_ROOT = $$(ANDROID_SDK_ROOT) +isEmpty(ANDROID_SDK_ROOT): ANDROID_SDK_ROOT = $$DEFAULT_ANDROID_SDK_ROOT + +ANDROID_SDK_BUILD_TOOLS_REVISION = $$(ANDROID_BUILD_TOOLS_REVISION) +isEmpty(ANDROID_SDK_BUILD_TOOLS_REVISION) { + SDK_BUILD_TOOLS_REVISIONS = $$files($$ANDROID_SDK_ROOT/build-tools/*) + for (REVISION, SDK_BUILD_TOOLS_REVISIONS) { + BASENAME = $$basename(REVISION) + greaterThan(BASENAME, $$ANDROID_SDK_BUILD_TOOLS_REVISION): ANDROID_SDK_BUILD_TOOLS_REVISION = $$BASENAME + } +} + +CONFIG += $$ANDROID_PLATFORM +QMAKE_CFLAGS = -D__ANDROID_API__=$$replace(ANDROID_PLATFORM, "android-", "") + +ANDROID_PLATFORM_ROOT_PATH = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/ +ANDROID_PLATFORM_PATH = $$ANDROID_PLATFORM_ROOT_PATH/usr + +equals(ANDROID_TARGET_ARCH, x86_64)|equals(ANDROID_TARGET_ARCH, mips64): \ + QMAKE_ANDROID_PLATFORM_LIBDIR = $${QMAKE_ANDROID_PLATFORM_LIBDIR}64 + +CROSS_COMPILE = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX- diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/android-base-tail.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/android-base-tail.conf new file mode 100644 index 000000000..160caf011 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/android-base-tail.conf @@ -0,0 +1,99 @@ +# In early configure setup; nothing useful to be done here. +isEmpty(DEFAULT_ANDROID_NDK_ROOT): return() + +# -fstack-protector-strong offers good protection against stack smashing attacks. +# It is (currently) enabled only on Android because we know for sure that Andoroid compilers supports it +QMAKE_CFLAGS += -fstack-protector-strong -DANDROID + +equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ + QMAKE_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove +else: equals(ANDROID_TARGET_ARCH, armeabi): \ + QMAKE_CFLAGS += -march=armv5te -mtune=xscale -msoft-float -fno-builtin-memmove +# -fno-builtin-memmove is used to workaround https://code.google.com/p/android/issues/detail?id=81692 + +QMAKE_CFLAGS_WARN_ON = -Wall -W +QMAKE_CFLAGS_WARN_OFF = +equals(ANDROID_TARGET_ARCH, armeabi-v7a) | equals(ANDROID_TARGET_ARCH, armeabi) { + QMAKE_CFLAGS_RELEASE = $$QMAKE_ARM_CFLAGS_RELEASE + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = $$QMAKE_ARM_CFLAGS_RELEASE_WITH_DEBUGINFO + QMAKE_CFLAGS_DEBUG = -g -marm -O0 + equals(ANDROID_TARGET_ARCH, armeabi):if(equals(NDK_TOOLCHAIN_VERSION, 4.8)|equals(NDK_TOOLCHAIN_VERSION, 4.9)) { + DEFINES += QT_OS_ANDROID_GCC_48_WORKAROUND + } else { + QMAKE_CFLAGS_RELEASE += -mthumb + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -mthumb + } + + # Don't override our options with -O3 + QMAKE_CFLAGS_OPTIMIZE_FULL = +} else { + QMAKE_CFLAGS_RELEASE = -O2 + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -O2 + QMAKE_CFLAGS_DEBUG = -g +} + +QMAKE_CFLAGS_SHLIB = -fPIC +QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_THREAD = -D_REENTRANT +QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden +QMAKE_CFLAGS_NEON = -mfpu=neon + +QMAKE_CXXFLAGS_CXX11 = -std=c++11 +QMAKE_CXXFLAGS_CXX14 = -std=c++14 +QMAKE_CXXFLAGS_CXX1Z = -std=c++1z +QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++11 +QMAKE_CXXFLAGS_GNUCXX14 = -std=gnu++14 +QMAKE_CXXFLAGS_GNUCXX1Z = -std=gnu++1z + +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +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 + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P + +QMAKE_STRIP = +#$${CROSS_COMPILE}strip + +QMAKE_RANLIB = $${CROSS_COMPILE}ranlib + +QMAKE_INCDIR_POST = +QMAKE_LIBDIR_POST = $$ANDROID_SOURCES_CXX_STL_LIBDIR +QMAKE_INCDIR_X11 = +QMAKE_LIBDIR_X11 = +QMAKE_INCDIR_OPENGL = +QMAKE_LIBDIR_OPENGL = + +QMAKE_LINK_SHLIB = $$QMAKE_LINK +QMAKE_LFLAGS = --sysroot=$$ANDROID_PLATFORM_ROOT_PATH +QMAKE_RPATHLINK = $$QMAKE_ANDROID_PLATFORM_LIBDIR +QMAKE_LFLAGS_APP = -Wl,--no-undefined -Wl,-z,noexecstack -shared +QMAKE_LFLAGS_SHLIB = -Wl,--no-undefined -Wl,-z,noexecstack -shared +QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_NOUNDEF = -Wl,--no-undefined +QMAKE_LFLAGS_RPATH = -Wl,-rpath= +QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link= + +QMAKE_LIBS_PRIVATE = $$ANDROID_CXX_STL_LIBS -llog -lz -lm -ldl -lc +QMAKE_LIBS_X11 = +QMAKE_LIBS_THREAD = +QMAKE_LIBS_EGL = -lEGL +QMAKE_LIBS_OPENGL = +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 + + +!exists($$NDK_ROOT): error("You need to set the ANDROID_NDK_ROOT environment variable to point to your Android NDK.") + +load(qt_config) + +QMAKE_DEFAULT_LIBDIRS = $$QMAKE_LIBDIR +QMAKE_DEFAULT_INCDIRS = $$QMAKE_INCDIR diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/android/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/android/qplatformdefs.h new file mode 100644 index 000000000..048eb47c6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/android/qplatformdefs.h @@ -0,0 +1,162 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Collabora Ltd, author <robin.burchell@collabora.co.uk> +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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 + +// 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 + +#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 + +#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 + +#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/qrenderdoc/3rdparty/qt/x64/mkspecs/common/angle.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/angle.conf new file mode 100644 index 000000000..fad0e719d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/angle.conf @@ -0,0 +1,13 @@ +# Renaming these files requires that the LIBRARY entry of their corresponding +# def files are also updated to reflect the name. +# The .def files are found in the angle directories: +# +# qtbase\src\3rdparty\angle\src\libEGL\libEGL[d?].def +# qtbase\src\3rdparty\angle\src\libEGL\libGLESv2[d?].def +# +# If a combined ANGLE library is used, the def files will automatically be +# combined into QtANGLE[d?].def by QtAngle.pro. + +LIBEGL_NAME = libEGL +LIBGLESV2_NAME = libGLESv2 +LIBQTANGLE_NAME = QtANGLE diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/bsd/bsd.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/bsd/bsd.conf new file mode 100644 index 000000000..390dfc58d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/bsd/bsd.conf @@ -0,0 +1,30 @@ +# +# common qmake configuration for *BSD +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM += bsd + +include(../unix.conf) + +QMAKE_CFLAGS_THREAD = -pthread + +QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD + +QMAKE_LFLAGS_THREAD = -pthread +QMAKE_LFLAGS_GCSECTIONS = -Wl,--gc-sections + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_EXECINFO = -lexecinfo +QMAKE_LIBS_X11 = -lXext -lX11 -lm +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = + +QMAKE_AR = ar cqs +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/bsd/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/bsd/qplatformdefs.h new file mode 100644 index 000000000..6c3a00b19 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/bsd/qplatformdefs.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_BSD_PLATFORMDEFS_H +#define Q_BSD_PLATFORMDEFS_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> +#include <dlfcn.h> + +#include <sys/param.h> +#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 "../posix/qplatformdefs.h" + +#undef QT_OPEN_LARGEFILE +#define QT_OPEN_LARGEFILE 0 + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/c89/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/c89/qplatformdefs.h new file mode 100644 index 000000000..b931c0384 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/c89/qplatformdefs.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_C89_QPLATFORMDEFS_H +#define Q_C89_QPLATFORMDEFS_H + +// #include <stdio.h> + +#define QT_FPOS_T fpos_t +#define QT_OFF_T long + +#define QT_FOPEN ::fopen +#define QT_FSEEK ::fseek +#define QT_FTELL ::ftell +#define QT_FGETPOS ::fgetpos +#define QT_FSETPOS ::fsetpos + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/clang-mac.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/clang-mac.conf new file mode 100644 index 000000000..cbae2e626 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/clang-mac.conf @@ -0,0 +1,13 @@ + +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 + +QMAKE_XCODE_GCC_VERSION = com.apple.compilers.llvm.clang.1_0 + +QMAKE_CXXFLAGS += -stdlib=libc++ +QMAKE_LFLAGS += -stdlib=libc++ +QMAKE_AR_LTCG = libtool -static -o + +QMAKE_CFLAGS_APPLICATION_EXTENSION = -fapplication-extension diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/clang.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/clang.conf new file mode 100644 index 000000000..e003b947a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/clang.conf @@ -0,0 +1,44 @@ +# +# Qmake configuration for Clang on Linux, OS X and iOS +# + +QMAKE_COMPILER = gcc clang llvm # clang pretends to be gcc + +QMAKE_CC = clang +QMAKE_CXX = clang++ + +QMAKE_LINK_C = $$QMAKE_CC +QMAKE_LINK_C_SHLIB = $$QMAKE_CC + +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX + +CONFIG += clang_pch_style +QMAKE_PCH_OUTPUT_EXT = .pch + +QMAKE_CFLAGS_ISYSTEM = -isystem +QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE = -Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_LTCG = -flto +QMAKE_CFLAGS_DISABLE_LTCG = -fno-lto + +QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE +QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG +QMAKE_CXXFLAGS_DISABLE_LTCG = $$QMAKE_CFLAGS_DISABLE_LTCG +QMAKE_CXXFLAGS_CXX11 = -std=c++11 +QMAKE_CXXFLAGS_CXX14 = -std=c++1y +QMAKE_CXXFLAGS_CXX1Z = -std=c++1z +QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++11 +QMAKE_CXXFLAGS_GNUCXX14 = -std=gnu++1y +QMAKE_CXXFLAGS_GNUCXX1Z = -std=gnu++1z + +QMAKE_LFLAGS_CXX11 = +QMAKE_LFLAGS_CXX14 = +QMAKE_LFLAGS_CXX1Z = +QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG + +# Wrapper tools that understand .o/.a files with LLVM bytecode instead of machine code +QMAKE_AR_LTCG = llvm-ar cqs +QMAKE_NM_LTCG = llvm-nm -P +QMAKE_RANLIB_LTCG = true # No need to run, since llvm-ar has "s" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++-base.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++-base.conf new file mode 100644 index 000000000..c42c46b0e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++-base.conf @@ -0,0 +1,38 @@ +# +# Qmake configuration for the GNU C++ compiler +# +# 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. +# + +QMAKE_COMPILER = gcc + +QMAKE_CC = gcc + +QMAKE_LINK_C = $$QMAKE_CC +QMAKE_LINK_C_SHLIB = $$QMAKE_CC + +QMAKE_CXX = g++ + +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX + +QMAKE_PCH_OUTPUT_EXT = .gch + +QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE} +QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_CXXFLAGS_CXX11 = -std=c++11 +QMAKE_CXXFLAGS_CXX14 = -std=c++1y +QMAKE_CXXFLAGS_CXX1Z = -std=c++1z +QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++11 +QMAKE_CXXFLAGS_GNUCXX14 = -std=gnu++1y +QMAKE_CXXFLAGS_GNUCXX1Z = -std=gnu++1z +QMAKE_LFLAGS_CXX11 = +QMAKE_LFLAGS_CXX14 = +QMAKE_LFLAGS_CXX1Z = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++-macx.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++-macx.conf new file mode 100644 index 000000000..0ee813082 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++-macx.conf @@ -0,0 +1,22 @@ +# +# Qmake configuration for the GNU C++ compiler on OS X +# +# 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(g++-base.conf) + +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -gdwarf-2 +QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -gdwarf-2 +QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += -g -gdwarf-2 + +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 +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/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++-unix.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++-unix.conf new file mode 100644 index 000000000..a493cd598 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++-unix.conf @@ -0,0 +1,14 @@ +# +# Qmake configuration for the GNU C++ compiler on *nix-systems +# +# 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(g++-base.conf) + +QMAKE_LFLAGS_RELEASE += -Wl,-O1 +QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++.conf new file mode 100644 index 000000000..c5a34a9db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/g++.conf @@ -0,0 +1,12 @@ +# +# Notice: g++.conf has been split into g++-base.conf and g++-unix.conf +# +# This file will make sure that anyone who's still including g++.conf +# directly will get a warning and an explanation of how to fix their mkspec +# + +warning($$escape_expand("Your mkspec is including 'common/g++.conf', but the mkspecs have been refactored\\n\\tTo fix this include 'common/gcc-base-$${TARGET_PLATFORM}.conf and 'common/g++-$${TARGET_PLATFORM}.conf' instead")) + +# We include gcc-base-unix.conf and g++-unix.conf to keep the behavior of the old g++.conf +include(gcc-base-unix.conf) +include(g++-unix.conf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/gcc-base-mac.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/gcc-base-mac.conf new file mode 100644 index 000000000..600895253 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/gcc-base-mac.conf @@ -0,0 +1,24 @@ +# +# Base qmake configuration for GCC on 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. +# +# To verify that your change has the desired effect on the final configuration +# you can use the manual test in tests/manual/mkspecs. +# + +QMAKE_CFLAGS_PIC = -fPIC + +include(gcc-base.conf) + +QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__=4 __APPLE_CC__ + +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} +QMAKE_LFLAGS_HEADERPAD += -headerpad_max_install_names +QMAKE_LFLAGS_VERSION += -current_version$${LITERAL_WHITESPACE} +QMAKE_LFLAGS_COMPAT_VERSION += -compatibility_version$${LITERAL_WHITESPACE} + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/gcc-base-unix.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/gcc-base-unix.conf new file mode 100644 index 000000000..2d63877dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/gcc-base-unix.conf @@ -0,0 +1,27 @@ +# +# Base qmake configuration for GCC on *nix-systems +# +# 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. +# + +QMAKE_CFLAGS_PIC = -fPIC + +include(gcc-base.conf) + +QMAKE_LFLAGS_SHLIB += -shared +QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME += -Wl,-soname, +QMAKE_LFLAGS_THREAD += +QMAKE_LFLAGS_RPATH = -Wl,-rpath, +QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link, +QMAKE_LFLAGS_NEW_DTAGS = -Wl,--enable-new-dtags +QMAKE_LFLAGS_USE_GOLD = -fuse-ld=gold + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions +QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list, +QMAKE_LFLAGS_VERSION_SCRIPT = -Wl,--version-script, diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/gcc-base.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/gcc-base.conf new file mode 100644 index 000000000..6a2fa4f50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/gcc-base.conf @@ -0,0 +1,110 @@ +# +# This file is used as a basis for the following compilers: +# +# - The GNU C++ compiler (g++) +# - LLVM +# - Clang +# +# Platform-specific options shared by these compilers are put into: +# +# - gcc-base-mac.conf +# - gcc-base-unix.conf +# +# These base files are then combined with configurations for each compiler: +# +# - g++-base.conf +# - g++-macx.conf +# - g++-unix.conf +# - llvm.conf +# - clang.conf +# +# The combination happens in the top level mkspec, by including a platform- +# 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 +# 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. +# +# To verify that your change has the desired effect on the final configuration +# you can use the manual test in tests/manual/mkspecs. +# + +QMAKE_CFLAGS_OPTIMIZE = -O2 +QMAKE_CFLAGS_OPTIMIZE_FULL = -O3 +QMAKE_CFLAGS_OPTIMIZE_DEBUG = -Og +QMAKE_CFLAGS_OPTIMIZE_SIZE = -Os + +!equals(QMAKE_HOST.os, Windows): QMAKE_CFLAGS += -pipe +QMAKE_CFLAGS_DEPS += -M +QMAKE_CFLAGS_WARN_ON += -Wall -W +QMAKE_CFLAGS_WARN_OFF += -w +QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g +QMAKE_CFLAGS_DEBUG += -g +QMAKE_CFLAGS_SHLIB += $$QMAKE_CFLAGS_PIC +QMAKE_CFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_PIC +QMAKE_CFLAGS_APP += $$QMAKE_CFLAGS_PIC +QMAKE_CFLAGS_ISYSTEM = -isystem +QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden +QMAKE_CFLAGS_EXCEPTIONS_OFF += -fno-exceptions +QMAKE_CFLAGS_SPLIT_SECTIONS += -ffunction-sections +QMAKE_CFLAGS_LTCG = -flto -fno-fat-lto-objects +QMAKE_CFLAGS_LTCG_FATOBJECTS = -ffat-lto-objects +QMAKE_CFLAGS_DISABLE_LTCG = -fno-lto + +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_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO +QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG +QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB +QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB +QMAKE_CXXFLAGS_APP += $$QMAKE_CFLAGS_APP +QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden +QMAKE_CXXFLAGS_EXCEPTIONS_OFF += $$QMAKE_CFLAGS_EXCEPTIONS_OFF +QMAKE_CXXFLAGS_SPLIT_SECTIONS += $$QMAKE_CFLAGS_SPLIT_SECTIONS +QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG +QMAKE_CXXFLAGS_LTCG_FATOBJECTS = $$QMAKE_CFLAGS_LTCG_FATOBJECTS +QMAKE_CXXFLAGS_DISABLE_LTCG = $$QMAKE_CFLAGS_DISABLE_LTCG + +QMAKE_LFLAGS += +QMAKE_LFLAGS_DEBUG += +QMAKE_LFLAGS_APP += +QMAKE_LFLAGS_RELEASE += +QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += +QMAKE_LFLAGS_EXCEPTIONS_OFF += +QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG -fuse-linker-plugin + +QMAKE_CFLAGS_SSE2 += -msse2 +QMAKE_CFLAGS_SSE3 += -msse3 +QMAKE_CFLAGS_SSSE3 += -mssse3 +QMAKE_CFLAGS_SSE4_1 += -msse4.1 +QMAKE_CFLAGS_SSE4_2 += -msse4.2 +QMAKE_CFLAGS_F16C += -mf16c +QMAKE_CFLAGS_AVX += -mavx +QMAKE_CFLAGS_AVX2 += -mavx2 +QMAKE_CFLAGS_AVX512F += -mavx512f +QMAKE_CFLAGS_AVX512ER += -mavx512er +QMAKE_CFLAGS_AVX512CD += -mavx512cd +QMAKE_CFLAGS_AVX512PF += -mavx512pf +QMAKE_CFLAGS_AVX512DQ += -mavx512dq +QMAKE_CFLAGS_AVX512BW += -mavx512bw +QMAKE_CFLAGS_AVX512VL += -mavx512vl +QMAKE_CFLAGS_AVX512IFMA += -mavx512ifma +QMAKE_CFLAGS_AVX512VBMI += -mavx512vbmi +QMAKE_CFLAGS_NEON += -mfpu=neon +QMAKE_CFLAGS_MIPS_DSP += -mdsp +QMAKE_CFLAGS_MIPS_DSPR2 += -mdspr2 + +# Wrapper tools that understand .o/.a files with GIMPLE instead of machine code +QMAKE_AR_LTCG = gcc-ar cqs +QMAKE_NM_LTCG = gcc-nm -P +QMAKE_RANLIB_LTCG = true # No need to run since gcc-ar has "s" + +include(sanitize.conf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-base.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-base.conf new file mode 100644 index 000000000..a66971578 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-base.conf @@ -0,0 +1,40 @@ +# +# This file is used as a basis for the following compilers: +# +# - The Green Hills Software compiler +# + +QMAKE_COMPILER = ghs + +QMAKE_CFLAGS += --signed_fields --no_commons --diag_suppress=1,82,228,236,381,611,961,997,1795,1974 +QMAKE_CFLAGS_DEPS += -MD +QMAKE_CFLAGS_RELEASE += -Ospeed -Olink -Omax +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE -g +QMAKE_CFLAGS_DEBUG += -g -Omaxdebug +QMAKE_CFLAGS_SHLIB += +QMAKE_CFLAGS_STATIC_LIB += +QMAKE_CFLAGS_APP += +QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_HIDESYMS += + +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor +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_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO +QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG +QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB +QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB +QMAKE_CXXFLAGS_APP += $$QMAKE_CFLAGS_APP +QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS +QMAKE_CXXFLAGS_CXX11 += --c++11 --thread_local_storage +QMAKE_CXXFLAGS_EXCEPTIONS_ON += --exceptions + +QMAKE_LFLAGS += --signed_fields --no_commons --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor +QMAKE_LFLAGS_DEBUG += -g -Omaxdebug +QMAKE_LFLAGS_RELEASE += -Ospeed -Olink -Omax +QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_LFLAGS_RELEASE -g +QMAKE_LFLAGS_CXX11 += --c++11 --thread_local_storage +QMAKE_LFLAGS_EXCEPTIONS_ON += --exceptions diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-integrity-armv7.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-integrity-armv7.conf new file mode 100644 index 000000000..8cdff7538 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-integrity-armv7.conf @@ -0,0 +1,21 @@ +# +# Base qmake configuration for GHS on INTEGRITY +# +MAKEFILE_GENERATOR = UNIX + +QMAKE_PLATFORM = integrity + +include(unix.conf) + +QMAKE_CFLAGS += -bigswitch + +include(ghs-base.conf) + +QMAKE_CC = cxintarm -bsp $$(INTEGRITY_BSP) -os_dir $$(INTEGRITY_DIR) -non_shared +QMAKE_CXX = cxintarm -bsp $$(INTEGRITY_BSP) -os_dir $$(INTEGRITY_DIR) -non_shared +QMAKE_LINK = $$QMAKE_CXX +QMAKE_AR = $$QMAKE_CXX -archive -o + +QMAKE_LIBS_GUI = -lfbdev -lhiddev + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-integrity-armv8.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-integrity-armv8.conf new file mode 100644 index 000000000..e454cfd24 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-integrity-armv8.conf @@ -0,0 +1,27 @@ +# +# Base qmake configuration for INTEGRITY armv8 targets +# +MAKEFILE_GENERATOR = UNIX + +QMAKE_PLATFORM = integrity + +include(unix.conf) + +include(ghs-base.conf) + +bsp_name = $$(INTEGRITY_BSP) +isEmpty(bsp_name): \ + error("This qmakespec requires $INTEGRITY_BSP to be set") + +os_directory = $$(INTEGRITY_DIR) +isEmpty(os_directory): \ + error("This qmakespec requires $INTEGRITY_DIR to be set") + +QMAKE_CC = cxintarm64 -bsp $$bsp_name -os_dir $$os_directory -non_shared +QMAKE_CXX = cxintarm64 -bsp $$bsp_name -os_dir $$os_directory -non_shared +QMAKE_LINK = $$QMAKE_CXX +QMAKE_AR = $$QMAKE_CXX -archive -o + +QMAKE_CFLAGS += -bigswitch +QMAKE_CXXFLAGS += -bigswitch +QMAKE_LFLAGS += -bigswitch diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-integrity-x86.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-integrity-x86.conf new file mode 100644 index 000000000..5525b8cd1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ghs-integrity-x86.conf @@ -0,0 +1,17 @@ +# +# Base qmake configuration for GHS on INTEGRITY +# +MAKEFILE_GENERATOR = UNIX + +QMAKE_PLATFORM = integrity + +include(unix.conf) + +include(ghs-base.conf) + +QMAKE_CC = cxint86 -bsp $$(INTEGRITY_BSP) -os_dir $$(INTEGRITY_DIR) -non_shared +QMAKE_CXX = cxint86 -bsp $$(INTEGRITY_BSP) -os_dir $$(INTEGRITY_DIR) -non_shared +QMAKE_LINK = $$QMAKE_CXX +QMAKE_AR = $$QMAKE_CXX -archive -o + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/integrity/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/integrity/qplatformdefs.h new file mode 100644 index 000000000..7039318f2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/integrity/qplatformdefs.h @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Green Hills Software. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_INTEGRITY_PLATFORMDEFS_H +#define Q_INTEGRITY_PLATFORMDEFS_H + +// Get Qt defines/settings + +#include "qglobal.h" + +#include <stdbool.h> +#include <stdlib.h> +#include <unistd.h> + +#define __STDC_CONSTANT_MACROS + +#include <pthread.h> +#include <dirent.h> +#include <fcntl.h> +#include <signal.h> +#include <sys/select.h> + +#include <sys/types.h> +#include <sys/ioctl.h> +#include <sys/time.h> +// INTEGRITY doesn't have the System V <sys/shm.h> header. This is not a standard +// POSIX header, it's only documented in the Single UNIX Specification. +// The preferred POSIX compliant way to share memory is to use the functions +// in <sys/mman.h> that comply with the POSIX Real Time Interface (1003.1b). +#include <sys/mman.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 + +// for htonl +#include <arpa/inet.h> + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +// INTEGRITY doesn't have getpagesize() +inline int getpagesize() +{ + return sysconf(_SC_PAGESIZE); +} + +// geteuid() is only available with multi-process posix, but we do not want +// to rely on it +inline uid_t geteuid(void) +{ + return 0; +} + +// getuid() is only available with multi-process posix, but we do not want +// to rely on it +inline uid_t getuid(void) +{ + return 0; +} + +#include "../posix/qplatformdefs.h" +#undef QT_OPEN_LARGEFILE +#define QT_OPEN_LARGEFILE 0 +#define PATH_MAX 1024 + +#endif // Q_INTEGRITY_PLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ios.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ios.conf new file mode 100644 index 000000000..dd9b29f9e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/ios.conf @@ -0,0 +1,20 @@ +# +# qmake common configuration for iOS +# + +QMAKE_PLATFORM += ios +QMAKE_MAC_SDK = iphoneos + +simulator.sdk = iphonesimulator +simulator.target = simulator +simulator.dir_affix = $${simulator.sdk} +simulator.CONFIG = $${simulator.sdk} +simulator.deployment_identifier = ios-simulator + +device.sdk = iphoneos +device.target = device +device.dir_affix = $${device.sdk} +device.CONFIG = $${device.sdk} +device.deployment_identifier = $${device.sdk} + +include(uikit.conf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/linux.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/linux.conf new file mode 100644 index 000000000..68e566aea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/linux.conf @@ -0,0 +1,51 @@ +# +# qmake configuration for common linux +# + +QMAKE_PLATFORM += linux + +include(unix.conf) + +QMAKE_CFLAGS_THREAD += -D_REENTRANT +QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD +QMAKE_LFLAGS_GCSECTIONS = -Wl,--gc-sections + +QMAKE_LFLAGS_REL_RPATH = -Wl,-z,origin +QMAKE_REL_RPATH_BASE = $ORIGIN + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = +QMAKE_LIBDIR_X11 = +QMAKE_INCDIR_OPENGL = +QMAKE_LIBDIR_OPENGL = +QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL +QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL +QMAKE_INCDIR_EGL = +QMAKE_LIBDIR_EGL = +QMAKE_INCDIR_OPENVG = +QMAKE_LIBDIR_OPENVG = + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = -ldl +QMAKE_LIBS_X11 = -lXext -lX11 -lm +QMAKE_LIBS_EGL = -lEGL +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 +QMAKE_LIBS_OPENVG = -lOpenVG +QMAKE_LIBS_THREAD = -lpthread + +QMAKE_INCDIR_WAYLAND = +QMAKE_LIBS_WAYLAND_CLIENT = -lwayland-client +QMAKE_LIBS_WAYLAND_SERVER = -lwayland-server +QMAKE_LIBDIR_WAYLAND = +QMAKE_DEFINES_WAYLAND = +QMAKE_WAYLAND_SCANNER = wayland-scanner + +QMAKE_AR = ar cqs +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/llvm.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/llvm.conf new file mode 100644 index 000000000..c906dce6f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/llvm.conf @@ -0,0 +1,18 @@ +# +# Qmake configuration for LLVM on Linux, OS X and iOS +# + +QMAKE_COMPILER = gcc llvm + +QMAKE_CC = llvm-gcc +QMAKE_CXX = llvm-g++ + +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX + +QMAKE_PCH_OUTPUT_EXT = .gch + +QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE} +QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/mac.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/mac.conf new file mode 100644 index 000000000..5208379f9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/mac.conf @@ -0,0 +1,44 @@ +# +# qmake configuration common to OS X and iOS +# + +!load(device_config): error(Could not successfully load device configuration) + +QMAKE_PLATFORM += mac darwin + +MAKEFILE_GENERATOR = UNIX +CONFIG += app_bundle incremental global_init_link_order lib_version_first sdk +QMAKE_INCREMENTAL_STYLE = sublib + +include(unix.conf) + +QMAKE_RESOURCE = /Developer/Tools/Rez +QMAKE_EXTENSION_SHLIB = dylib +QMAKE_LIBDIR = + +# 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_LFLAGS_RPATH = -Wl,-rpath, +QMAKE_LFLAGS_GCSECTIONS = -Wl,-dead_strip + +QMAKE_LFLAGS_REL_RPATH = +QMAKE_REL_RPATH_BASE = @loader_path + +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_OPENGL = -framework OpenGL -framework AGL +QMAKE_LIBS_THREAD = + +QMAKE_ACTOOL = actool + +QMAKE_DSYMUTIL = dsymutil +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += -S -x + +QMAKE_AR = ar cq +QMAKE_RANLIB = ranlib -s +QMAKE_NM = nm -P diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/mac/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/mac/qplatformdefs.h new file mode 100644 index 000000000..5cacd5a74 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/mac/qplatformdefs.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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> +#define __APPLE_USE_RFC_3542 +#include <netinet/in.h> +#ifndef QT_NO_IPV6IFNAME +#include <net/if.h> +#endif + +#include "../posix/qplatformdefs.h" + +#undef QT_OPEN_LARGEFILE +#undef QT_SOCKLEN_T +#undef QT_SIGNAL_IGNORE + +#define QT_OPEN_LARGEFILE 0 + +#define QT_SOCKLEN_T socklen_t + +#define QT_SIGNAL_IGNORE (void (*)(int))1 + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/macx.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/macx.conf new file mode 100644 index 000000000..4be0eb3c3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/macx.conf @@ -0,0 +1,14 @@ +# +# qmake configuration for common OS X +# + +QMAKE_PLATFORM += macos osx macx +QMAKE_MAC_SDK = macosx + +device.sdk = macosx +device.target = device +device.dir_affix = $${device.sdk} +device.CONFIG = $${device.sdk} +device.deployment_identifier = $${device.sdk} + +include(mac.conf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/msvc-desktop.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/msvc-desktop.conf new file mode 100644 index 000000000..496ca1179 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/msvc-desktop.conf @@ -0,0 +1,111 @@ +# +# This file is used as a basis for the following compilers: +# +# - Microsoft C/C++ Optimizing Compiler (all desktop versions) +# - Intel C++ Compiler on Windows +# - Clang-cl +# +# Baseline: +# +# - Visual Studio 2005 (8.0), VC++ 14.0 +# +# Version-specific settings go in msvc-version.conf (loaded by default_pre) +# + +MAKEFILE_GENERATOR = MSVC.NET +QMAKE_PLATFORM = win32 +QMAKE_COMPILER = msvc +CONFIG += incremental flat debug_and_release debug_and_release_target precompile_header autogen_precompile_source embed_manifest_dll embed_manifest_exe +DEFINES += UNICODE _UNICODE WIN32 +QMAKE_COMPILER_DEFINES += _WIN32 +contains(QMAKE_TARGET.arch, x86_64) { + DEFINES += WIN64 + QMAKE_COMPILER_DEFINES += _WIN64 +} + +QMAKE_CFLAGS_OPTIMIZE = -O2 +QMAKE_CFLAGS_OPTIMIZE_SIZE = -O1 + +QMAKE_CC = cl +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = bison -y +QMAKE_YACCFLAGS = -d +QMAKE_CFLAGS = -nologo -Zc:wchar_t +QMAKE_CFLAGS_WARN_ON = -W3 +QMAKE_CFLAGS_WARN_OFF = -W0 +QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MD +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MD +QMAKE_CFLAGS_DEBUG = -Zi -MDd +QMAKE_CFLAGS_YACC = +QMAKE_CFLAGS_LTCG = -GL + +contains(QMAKE_TARGET.arch, x86_64) { + # SSE2 is mandatory on 64-bit mode, so skip the option. It triggers: + # cl : Command line warning D9002 : ignoring unknown option '-arch:SSE2' + QMAKE_CFLAGS_SSE2 = +} else { + QMAKE_CFLAGS_SSE2 = -arch:SSE2 +} +QMAKE_CFLAGS_SSE3 = $$QMAKE_CFLAGS_SSE2 +QMAKE_CFLAGS_SSSE3 = $$QMAKE_CFLAGS_SSE2 +QMAKE_CFLAGS_SSE4_1 = $$QMAKE_CFLAGS_SSE2 +QMAKE_CFLAGS_SSE4_2 = $$QMAKE_CFLAGS_SSE2 + +QMAKE_CXX = $$QMAKE_CC +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON -w34100 -w34189 -w44996 +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_YACC = $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG +QMAKE_CXXFLAGS_STL_ON = -EHsc +QMAKE_CXXFLAGS_STL_OFF = +QMAKE_CXXFLAGS_RTTI_ON = -GR +QMAKE_CXXFLAGS_RTTI_OFF = +QMAKE_CXXFLAGS_EXCEPTIONS_ON = -EHsc +QMAKE_CXXFLAGS_EXCEPTIONS_OFF = + +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_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<< + +QMAKE_LINK = link +QMAKE_LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT +QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO +QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF /INCREMENTAL:NO +QMAKE_LFLAGS_DEBUG = /DEBUG +QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE +QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS +QMAKE_LFLAGS_EXE = \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\" +QMAKE_LFLAGS_DLL = /DLL +QMAKE_LFLAGS_LTCG = /LTCG +QMAKE_PREFIX_SHLIB = +QMAKE_EXTENSION_SHLIB = dll +QMAKE_PREFIX_STATICLIB = +QMAKE_EXTENSION_STATICLIB = 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 +QMAKE_LIBS_OPENGL_ES2 = gdi32.lib user32.lib +QMAKE_LIBS_OPENGL_ES2_DEBUG = gdi32.lib user32.lib +QMAKE_LIBS_COMPAT = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib +QMAKE_LIBS_QT_ENTRY = -lqtmain + +QMAKE_IDL = midl /NOLOGO +QMAKE_LIB = lib /NOLOGO +QMAKE_RC = rc /NOLOGO + +VCPROJ_EXTENSION = .vcproj +VCSOLUTION_EXTENSION = .sln +VCPROJ_KEYWORD = Qt4VSv1.0 + +include(angle.conf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/msvc-version.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/msvc-version.conf new file mode 100644 index 000000000..ba74c49f9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/msvc-version.conf @@ -0,0 +1,95 @@ +# +# qmake configuration for Microsoft Visual Studio C/C++ Compiler +# This file is used by win32-msvc, win32-clang-msvc, and all +# winrt-XXX-msvcXXX specs +# + +# +# Version-specific changes +# + +isEmpty(QMAKE_MSC_VER): error("msvc-version.conf loaded but QMAKE_MSC_VER isn't set") + +MSVC_VER = 8.0 +COMPAT_MKSPEC = win32-msvc2005 + +greaterThan(QMAKE_MSC_VER, 1499) { + # Visual Studio 2008 (9.0) / Visual C++ 15.0 and up + MSVC_VER = 9.0 + COMPAT_MKSPEC = win32-msvc2008 + QMAKE_CFLAGS_MP = -MP + QMAKE_CXXFLAGS_MP = $$QMAKE_CFLAGS_MP +} + +greaterThan(QMAKE_MSC_VER, 1599) { + # Visual Studio 2010 (10.0) / Visual C++ 16.0 and up + MSVC_VER = 10.0 + COMPAT_MKSPEC = win32-msvc2010 + MAKEFILE_GENERATOR = MSBUILD + + QMAKE_CFLAGS_AVX = -arch:AVX + QMAKE_CFLAGS_AVX2 = -arch:AVX + + VCPROJ_EXTENSION = .vcxproj +} + +greaterThan(QMAKE_MSC_VER, 1699) { + # Visual Studio 2012 (11.0) / Visual C++ 17.0 and up + MSVC_VER = 11.0 + COMPAT_MKSPEC = win32-msvc2012 + QMAKE_CXXFLAGS_EXCEPTIONS_OFF = /wd4530 /wd4577 + QT_CONFIG += c++11 + CONFIG += c++11 +} + +greaterThan(QMAKE_MSC_VER, 1799) { + # Visual Studio 2013 (12.0) / Visual C++ 18.0 and up + MSVC_VER = 12.0 + COMPAT_MKSPEC = win32-msvc2013 + QMAKE_CFLAGS += -FS + QMAKE_CXXFLAGS += -FS -Zc:rvalueCast -Zc:inline + + QMAKE_CFLAGS_F16C = -arch:AVX + + equals(QMAKE_MSC_VER, 1800) { + QMAKE_CFLAGS_RELEASE += -Zc:strictStrings + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -Zc:strictStrings + QMAKE_CXXFLAGS_RELEASE += -Zc:strictStrings + QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -Zc:strictStrings + } +} + +greaterThan(QMAKE_MSC_VER, 1899) { + # Visual Studio 2015 (14.0) / Visual C++ 19.0 and up + MSVC_VER = 14.0 + COMPAT_MKSPEC = win32-msvc2015 + QMAKE_CFLAGS += -Zc:strictStrings + QMAKE_CFLAGS_WARN_ON += -w44456 -w44457 -w44458 + QMAKE_CFLAGS_AVX2 = -arch:AVX2 + QMAKE_CXXFLAGS += -Zc:strictStrings -Zc:throwingNew + QMAKE_CXXFLAGS_WARN_ON += -w44456 -w44457 -w44458 -wd4577 -wd4467 + + greaterThan(QMAKE_MSC_FULL_VER, 190023918):!intel_icl { + isEmpty(QT_CLANG_MAJOR_VERSION)|!lessThan(QT_CLANG_MAJOR_VERSION, 4) { + QMAKE_CFLAGS_UTF8_SOURCE = -utf-8 + } + } +} + +greaterThan(QMAKE_MSC_VER, 1909) { + # Visual Studio 2017 (15.0) / Visual C++ 19.10 and up + MSVC_VER = 15.0 + COMPAT_MKSPEC = win32-msvc2017 + QMAKE_CXXFLAGS += -Zc:referenceBinding + # For now permissive fails as soon as UWP API comes into play. In qtbase this + # API is used in direct2d, but also in multimedia, positioning and sensors. + # We can try again with a later version of Visual Studio. + # QMAKE_CXXFLAGS_STRICTCXX = -permissive- +} + +greaterThan(QMAKE_MSC_VER, 1910) { + # No compat spec past MSVC 2017 + COMPAT_MKSPEC = +} + +!isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/g++-nacl32.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/g++-nacl32.conf new file mode 100644 index 000000000..319d3ca47 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/g++-nacl32.conf @@ -0,0 +1,12 @@ + +# 32-bit x86 nacl configuration. + +QMAKE_CC = i686-nacl-gcc +QMAKE_CXX = i686-nacl-g++ +QMAKE_LINK = i686-nacl-g++ +QMAKE_LINK_SHLIB = i686-nacl-g++ +QMAKE_AR = i686-nacl-ar q +QMAKE_OBJCOPY = i686-nacl-objcopy +QMAKE_NM = i686-nacl-nm -P +QMAKE_STRIP = i686-nacl-strip + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/g++-nacl64.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/g++-nacl64.conf new file mode 100644 index 000000000..8a2053577 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/g++-nacl64.conf @@ -0,0 +1,12 @@ + +# 32-bit x86 nacl configuration. + +QMAKE_CC = x86_64-nacl-gcc +QMAKE_CXX = x86_64-nacl-g++ +QMAKE_LINK = x86_64-nacl-g++ +QMAKE_LINK_SHLIB = x86_64-nacl-g++ +QMAKE_AR = x86_64-nacl-ar q +QMAKE_OBJCOPY = x86_64-nacl-objcopy +QMAKE_NM = x86_64-nacl-nm -P +QMAKE_STRIP = x86_64-nacl-strip + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/nacl-base.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/nacl-base.conf new file mode 100644 index 000000000..d94c5c96d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/nacl-base.conf @@ -0,0 +1,11 @@ +QMAKE_PLATFORM = nacl $$QMAKE_PLATFORM + +# Work around linker crash when using PIC. We are building +# statically so this is safe. +QMAKE_CFLAGS_STATIC_LIB -= -fPIC +QMAKE_CFLAGS_SHLIB -= -fPIC +QMAKE_CXXFLAGS_STATIC_LIB -= -fPIC +QMAKE_CXXFLAGS_SHLIB -= -fPIC + +QMAKE_LIBS_DYNLOAD -= -ldl +QMAKE_LIBS_OPENGL_ES2 = -lppapi_gles2 diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/qplatformdefs.h new file mode 100644 index 000000000..2b9c7227e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/nacl/qplatformdefs.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#define _POSIX_TIMERS + +#include "qglobal.h" + +// extra disabling. +#ifdef __native_client__ +#define QT_NO_FSFILEENGINE +#endif + +#define QT_NO_SOCKET_H + +#define DIR void * +#define PATH_MAX 256 + +#include "qfunctions_nacl.h" +#include <pthread.h> diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/posix/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/posix/qplatformdefs.h new file mode 100644 index 000000000..90fb90a7e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/posix/qplatformdefs.h @@ -0,0 +1,162 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_POSIX_QPLATFORMDEFS_H +#define Q_POSIX_QPLATFORMDEFS_H + +#include <signal.h> + +#include <sys/types.h> +#ifndef QT_NO_SOCKET_H +# include <sys/socket.h> +#endif +#include <sys/stat.h> + +#if defined(QT_USE_XOPEN_LFS_EXTENSIONS) && defined(QT_LARGEFILE_SUPPORT) + +#define QT_STATBUF struct stat64 +#define QT_FPOS_T fpos64_t +#define QT_OFF_T off64_t + +#define QT_STAT ::stat64 +#define QT_LSTAT ::lstat64 +#define QT_TRUNCATE ::truncate64 + +// File I/O +#define QT_OPEN ::open64 +#define QT_LSEEK ::lseek64 +#define QT_FSTAT ::fstat64 +#define QT_FTRUNCATE ::ftruncate64 + +// Standard C89 +#define QT_FOPEN ::fopen64 +#define QT_FSEEK ::fseeko64 +#define QT_FTELL ::ftello64 +#define QT_FGETPOS ::fgetpos64 +#define QT_FSETPOS ::fsetpos64 + +#define QT_MMAP ::mmap64 + +#else // !defined(QT_USE_XOPEN_LFS_EXTENSIONS) || !defined(QT_LARGEFILE_SUPPORT) + +#include "../c89/qplatformdefs.h" + +#define QT_STATBUF struct stat + +#define QT_STAT ::stat +#define QT_LSTAT ::lstat +#define QT_TRUNCATE ::truncate + +// File I/O +#define QT_OPEN ::open +#define QT_LSEEK ::lseek +#define QT_FSTAT ::fstat +#define QT_FTRUNCATE ::ftruncate + +// Posix extensions to C89 +#if !defined(QT_USE_XOPEN_LFS_EXTENSIONS) && !defined(QT_NO_USE_FSEEKO) +#undef QT_OFF_T +#undef QT_FSEEK +#undef QT_FTELL + +#define QT_OFF_T off_t + +#define QT_FSEEK ::fseeko +#define QT_FTELL ::ftello +#endif + +#define QT_MMAP ::mmap + +#endif // !defined (QT_USE_XOPEN_LFS_EXTENSIONS) || !defined(QT_LARGEFILE_SUPPORT) + +#define QT_STAT_MASK S_IFMT +#define QT_STAT_REG S_IFREG +#define QT_STAT_DIR S_IFDIR +#define QT_STAT_LNK S_IFLNK + +#define QT_ACCESS ::access +#define QT_GETCWD ::getcwd +#define QT_CHDIR ::chdir +#define QT_MKDIR ::mkdir +#define QT_RMDIR ::rmdir + +// File I/O +#define QT_CLOSE ::close +#define QT_READ ::read +#define QT_WRITE ::write + +#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 + +// Posix extensions to C89 +#define QT_FILENO fileno + +// 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_SOCKLEN_T socklen_t + +#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 + +#endif // include guard diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-aarch64le.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-aarch64le.conf new file mode 100644 index 000000000..914ef33f3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-aarch64le.conf @@ -0,0 +1,23 @@ +# +# qmake configuration for qnx-qcc aarch64le targets +# + +MAKEFILE_GENERATOR = UNIX + +include(g++-unix.conf) +include(unix.conf) + +QMAKE_CC = qcc -Vgcc_ntoaarch64le +QMAKE_CXX = qcc -Vgcc_ntoaarch64le +QNX_CPUDIR = aarch64le + +include(qcc-base-qnx.conf) + +QMAKE_AR = ntoaarch64-ar cqs +QMAKE_OBJCOPY = ntoaarch64-objcopy +QMAKE_NM = ntoaarch64-nm -P +QMAKE_RANLIB = ntoaarch64-ranlib + +QMAKE_STRIP = ntoaarch64-strip + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-armle-v7.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-armle-v7.conf new file mode 100644 index 000000000..ad3bb33da --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-armle-v7.conf @@ -0,0 +1,25 @@ +# +# qmake configuration for qnx-qcc armv7 targets +# + +MAKEFILE_GENERATOR = UNIX + +include(unix.conf) + +include(g++-unix.conf) + +QMAKE_CC = qcc -Vgcc_ntoarmv7le +QMAKE_CXX = qcc -Vgcc_ntoarmv7le +QNX_CPUDIR = armle-v7 +QMAKE_CFLAGS += -mfpu=neon + +include(qcc-base-qnx.conf) + +QMAKE_AR = ntoarmv7-ar cqs +QMAKE_OBJCOPY = ntoarmv7-objcopy +QMAKE_NM = ntoarmv7-nm -P +QMAKE_RANLIB = ntoarmv7-ranlib + +QMAKE_STRIP = ntoarmv7-strip + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-x86-64.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-x86-64.conf new file mode 100644 index 000000000..fd04104f7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-x86-64.conf @@ -0,0 +1,23 @@ +# +# qmake configuration for qnx-qcc x86-64 targets +# + +MAKEFILE_GENERATOR = UNIX + +include(g++-unix.conf) +include(unix.conf) + +QMAKE_CC = qcc -Vgcc_ntox86_64 +QMAKE_CXX = qcc -Vgcc_ntox86_64 +QNX_CPUDIR = x86_64 + +include(qcc-base-qnx.conf) + +QMAKE_AR = ntox86_64-ar cqs +QMAKE_OBJCOPY = ntox86_64-objcopy +QMAKE_NM = ntox86_64-nm -P +QMAKE_RANLIB = ntox86_64-ranlib + +QMAKE_STRIP = ntox86_64-strip + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-x86.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-x86.conf new file mode 100644 index 000000000..37a5d9ce7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx-x86.conf @@ -0,0 +1,24 @@ +# +# qmake configuration for qnx-qcc x86 targets +# + +MAKEFILE_GENERATOR = UNIX + +include(unix.conf) + +include(g++-unix.conf) + +QMAKE_CC = qcc -Vgcc_ntox86 +QMAKE_CXX = qcc -Vgcc_ntox86 +QNX_CPUDIR = x86 + +include(qcc-base-qnx.conf) + +QMAKE_AR = ntox86-ar cqs +QMAKE_OBJCOPY = ntox86-objcopy +QMAKE_NM = ntox86-nm -P +QMAKE_RANLIB = ntox86-ranlib + +QMAKE_STRIP = ntox86-strip + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx.conf new file mode 100644 index 000000000..148645b4e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base-qnx.conf @@ -0,0 +1,61 @@ +# +# Base qmake configuration for QCC on *nix-systems +# + +include(qcc-base.conf) + +QMAKE_PLATFORM = qnx $$QMAKE_PLATFORM + +QMAKE_LFLAGS_SHLIB += -shared +QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME += -Wl,-soname, +QMAKE_LFLAGS_THREAD += +QMAKE_LFLAGS_RPATH = -Wl,-rpath, +QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link, + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions +QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list, +QMAKE_LFLAGS_VERSION_SCRIPT = -Wl,--version-script, + +# Generic options for all QNX qcc mkspecs +QMAKE_CFLAGS_THREAD = -D_REENTRANT +QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD +QMAKE_COMPILER_DEFINES += __QNXNTO__ + +QMAKE_LIBS = -lm +QMAKE_LIBS_NETWORK = -lsocket + +# OpenGL libraries have a dependency on libEGL +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 -lEGL +QMAKE_LIBS_EGL = -lEGL + +# When using this mkspec to build Qt apps (ie - not Qt itself) we want to build +# against the NDK's target directory which is referenced by the QNX_TARGET environment +# variable, and which is guaranteed by the NDK to be set. +QNX_DIR = $$(QNX_TARGET) +isEmpty(QNX_DIR) { + error("QNX_TARGET environment variable not set") +} + +QMAKE_INCDIR_POST = $${QNX_DIR}/usr/include $${QNX_DIR}/usr/include/freetype2 +QMAKE_LIBDIR_POST = $${QNX_DIR}/$${QNX_CPUDIR}/lib $${QNX_DIR}/$${QNX_CPUDIR}/usr/lib +QMAKE_RPATHLINKDIR_POST += $${QNX_DIR}/$${QNX_CPUDIR}/lib $${QNX_DIR}/$${QNX_CPUDIR}/usr/lib + +QMAKE_CXXFLAGS_CXX11 = -Wc,-std=gnu++11 +QMAKE_CXXFLAGS_CXX14 = -Wc,-std=gnu++1y +QMAKE_CXXFLAGS_CXX1Z = -Wc,-std=gnu++1z + +QMAKE_LINK_C = $$QMAKE_CC +QMAKE_LINK_C_SHLIB = $$QMAKE_CC + +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX + +QMAKE_STRIPFLAGS_LIB += --strip-unneeded + +equals(QMAKE_HOST.os, Windows) { + isEmpty(QMAKE_SH): error("This mkspec requires an MSYS environment.") + QMAKE_DIR_SEP = / + QMAKE_DIRLIST_SEP = : +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base.conf new file mode 100644 index 000000000..b48e84ee1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qcc-base.conf @@ -0,0 +1,57 @@ +# +# This file is used as a basis for the following compilers: +# +# - The QNX qcc compiler +# +# The differences between this and gcc-base.conf are that +# +# 1) -pipe is removed as it's on by default in qcc (and has an analogous -nopipe option) +# 2) -Wno-psabi is added to silence harmless warnings about va_list mangling +# + +QMAKE_COMPILER = rim_qcc gcc # qcc is mostly gcc in disguise + +QMAKE_CFLAGS_OPTIMIZE = -O2 +QMAKE_CFLAGS_OPTIMIZE_FULL = -O3 + +QMAKE_CFLAGS += -Wno-psabi +QMAKE_CFLAGS_DEPS += -M +QMAKE_CFLAGS_WARN_ON += -Wall -W +QMAKE_CFLAGS_WARN_OFF += -w +QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g +QMAKE_CFLAGS_DEBUG += -g +QMAKE_CFLAGS_SHLIB += -fPIC -shared +QMAKE_CFLAGS_STATIC_LIB += -fPIC +QMAKE_CFLAGS_APP += -fPIC +QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden +QMAKE_CFLAGS_SSE2 += -msse2 +QMAKE_CFLAGS_SSE3 += -msse3 +QMAKE_CFLAGS_SSSE3 += -mssse3 +QMAKE_CFLAGS_SSE4_1 += -msse4.1 +QMAKE_CFLAGS_SSE4_2 += -msse4.2 +QMAKE_CFLAGS_AVX += -mavx +QMAKE_CFLAGS_AVX2 += -mavx2 + +QMAKE_CFLAGS_STACK_PROTECTOR_STRONG = -fstack-protector-strong + +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS -lang-c++ +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_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO +QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG +QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB +QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB +QMAKE_CXXFLAGS_APP += $$QMAKE_CFLAGS_APP +QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden + +QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE = -Wc,-include -Wc,${QMAKE_PCH_OUTPUT_BASE} +QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_LFLAGS += -lang-c++ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qnx/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qnx/qplatformdefs.h new file mode 100644 index 000000000..72fc92738 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/qnx/qplatformdefs.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef Q_QNX_PLATFORMDEFS_H +#define Q_QNX_PLATFORMDEFS_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> + +#define __STDC_CONSTANT_MACROS + +// 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> + +#include <sys/types.h> +#include <sys/ioctl.h> +#include <sys/ipc.h> +#include <sys/time.h> +// QNX doesn't have the System V <sys/shm.h> header. This is not a standard +// POSIX header, it's only documented in the Single UNIX Specification. +// The preferred POSIX compliant way to share memory is to use the functions +// in <sys/mman.h> that comply with the POSIX Real Time Interface (1003.1b). +#include <sys/mman.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 + +// for htonl +#include <arpa/inet.h> + +#define QT_USE_XOPEN_LFS_EXTENSIONS +#if !defined(__EXT_QNX__READDIR64_R) +#define QT_NO_READDIR64 +#endif +#include "../posix/qplatformdefs.h" +#if defined(__EXT_QNX__READDIR64_R) +#define QT_EXT_QNX_READDIR_R ::_readdir64_r +#elif defined(__EXT_QNX__READDIR_R) +#define QT_EXT_QNX_READDIR_R ::_readdir_r +#endif + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +// QNX6 doesn't have getpagesize() +inline int getpagesize() +{ + return ::sysconf(_SC_PAGESIZE); +} + +#include <stdlib.h> + +#define QT_QWS_TEMP_DIR QString::fromLatin1(qgetenv("TMP")) + +#endif // Q_QNX_PLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/sanitize.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/sanitize.conf new file mode 100644 index 000000000..5e09406cf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/sanitize.conf @@ -0,0 +1,23 @@ +# +# Qmake configuration for the GCC / Clang sanitize features +# + +QMAKE_COMMON_SANITIZE_CFLAGS = -fno-omit-frame-pointer +QMAKE_COMMON_SANITIZE_CXXFLAGS = -fno-omit-frame-pointer + +QMAKE_SANITIZE_ADDRESS_CFLAGS = -fsanitize=address +QMAKE_SANITIZE_ADDRESS_CXXFLAGS = -fsanitize=address +QMAKE_SANITIZE_ADDRESS_LFLAGS = -fsanitize=address + +QMAKE_SANITIZE_THREAD_CFLAGS = -fsanitize=thread +QMAKE_SANITIZE_THREAD_CXXFLAGS = -fsanitize=thread +QMAKE_SANITIZE_THREAD_LFLAGS = -fsanitize=thread + +QMAKE_SANITIZE_MEMORY_CFLAGS = -fsanitize=memory +QMAKE_SANITIZE_MEMORY_CXXFLAGS = -fsanitize=memory +QMAKE_SANITIZE_MEMORY_LFLAGS = -fsanitize=memory + +QMAKE_SANITIZE_UNDEFINED_CFLAGS = -fsanitize=undefined +QMAKE_SANITIZE_UNDEFINED_CXXFLAGS = -fsanitize=undefined +QMAKE_SANITIZE_UNDEFINED_LFLAGS = -fsanitize=undefined + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/shell-unix.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/shell-unix.conf new file mode 100644 index 000000000..2ab932f7b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/shell-unix.conf @@ -0,0 +1 @@ +warning("shell-unix.conf is deprecated and has no effect.") diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/shell-win32.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/shell-win32.conf new file mode 100644 index 000000000..c6f351469 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/shell-win32.conf @@ -0,0 +1 @@ +warning("shell-win32.conf is deprecated and has no effect.") diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/solaris.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/solaris.conf new file mode 100644 index 000000000..024b75a9d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/solaris.conf @@ -0,0 +1,32 @@ +# +# qmake configuration for common solaris +# + +QMAKE_PLATFORM += solaris + +include(unix.conf) + +QMAKE_CFLAGS_THREAD = -D_REENTRANT +QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD +QMAKE_LFLAGS_GCSECTIONS = -Wl,-z,ignore + +QMAKE_LFLAGS_REL_RPATH = -Wl,-z,origin +QMAKE_REL_RPATH_BASE = $ORIGIN + +QMAKE_INCDIR_X11 = /usr/X11/include +QMAKE_INCDIR_OPENGL = /usr/X11/include/mesa + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = -ldl +QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = -lpthread -lrt +QMAKE_LIBS_NETWORK = -lresolv -lsocket -lxnet -lnsl + +QMAKE_AR = ar cq +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/tvos.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/tvos.conf new file mode 100644 index 000000000..45e8c82c7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/tvos.conf @@ -0,0 +1,20 @@ +# +# qmake common configuration for tvOS +# + +QMAKE_PLATFORM += tvos +QMAKE_MAC_SDK = appletvos + +simulator.sdk = appletvsimulator +simulator.target = simulator +simulator.dir_affix = $${simulator.sdk} +simulator.CONFIG = $${simulator.sdk} +simulator.deployment_identifier = tvos-simulator + +device.sdk = appletvos +device.target = device +device.dir_affix = $${device.sdk} +device.CONFIG = $${device.sdk} +device.deployment_identifier = $${device.sdk} + +include(uikit.conf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit.conf new file mode 100644 index 000000000..0388b8e61 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit.conf @@ -0,0 +1,10 @@ +# +# qmake configuration for shared by UIKIT platforms +# + +QMAKE_PLATFORM += uikit +CONFIG += bitcode reduce_exports shallow_bundle no_qt_rpath + +INCLUDEPATH += $$PWD/uikit + +include(mac.conf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit/GLES2/gl2.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit/GLES2/gl2.h new file mode 100644 index 000000000..0974509a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit/GLES2/gl2.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <OpenGLES/ES2/gl.h> +#include <OpenGLES/ES2/glext.h> diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit/clang.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit/clang.conf new file mode 100644 index 000000000..6b9b7eea8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit/clang.conf @@ -0,0 +1,7 @@ +# +# compiler settings for iOS/tvOS/watchOS clang compilers +# + +# 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_OBJECTIVE_CFLAGS += -fobjc-nonfragile-abi -fobjc-legacy-dispatch diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit/qmake.conf new file mode 100644 index 000000000..45a4f0c80 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/uikit/qmake.conf @@ -0,0 +1,23 @@ +# +# Common build settings for all iOS/tvOS/watchOS configurations +# + +QMAKE_XCODE_CODE_SIGN_IDENTITY = "iPhone Developer" + +# 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 + +# OpenGL ES2 +QMAKE_INCDIR_OPENGL_ES2 = +QMAKE_LIBDIR_OPENGL_ES2 = +QMAKE_LIBS_OPENGL_ES2 = -framework OpenGLES + +# No desktop OpenGL +QMAKE_INCDIR_OPENGL = +QMAKE_LIBS_OPENGL = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/unix.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/unix.conf new file mode 100644 index 000000000..8521c85b9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/unix.conf @@ -0,0 +1,17 @@ +# +# qmake configuration for common unix +# + +QMAKE_PLATFORM += unix posix + +QMAKE_LEX = flex +QMAKE_LEXFLAGS += +QMAKE_YACC = yacc +QMAKE_YACCFLAGS += -d +QMAKE_YACCFLAGS_MANGLE += -p $base -b $base +QMAKE_YACC_HEADER = $base.tab.h +QMAKE_YACC_SOURCE = $base.tab.c +QMAKE_PREFIX_SHLIB = lib +QMAKE_EXTENSION_SHLIB = so +QMAKE_PREFIX_STATICLIB = lib +QMAKE_EXTENSION_STATICLIB = a diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/watchos.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/watchos.conf new file mode 100644 index 000000000..a9352aa9c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/watchos.conf @@ -0,0 +1,20 @@ +# +# qmake common configuration for watchOS +# + +QMAKE_PLATFORM += watchos +QMAKE_MAC_SDK = watchos + +simulator.sdk = watchsimulator +simulator.target = simulator +simulator.dir_affix = $${simulator.sdk} +simulator.CONFIG = apple$${simulator.sdk} +simulator.deployment_identifier = watchos-simulator + +device.sdk = watchos +device.target = device +device.dir_affix = $${device.sdk} +device.CONFIG = apple$${device.sdk} +device.deployment_identifier = $${device.sdk} + +include(uikit.conf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_150x150.png b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_150x150.png new file mode 100644 index 000000000..069171ca4 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_150x150.png differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_30x30.png b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_30x30.png new file mode 100644 index 000000000..2acac59e7 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_30x30.png differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_310x150.png b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_310x150.png new file mode 100644 index 000000000..1a7948294 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_310x150.png differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_310x310.png b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_310x310.png new file mode 100644 index 000000000..02144a9f3 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_310x310.png differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_44x44.png b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_44x44.png new file mode 100644 index 000000000..3cc5bec19 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_44x44.png differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_480x800.png b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_480x800.png new file mode 100644 index 000000000..39a37dac5 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_480x800.png differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_620x300.png b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_620x300.png new file mode 100644 index 000000000..a2be79f5d Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_620x300.png differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_70x70.png b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_70x70.png new file mode 100644 index 000000000..334b2722b Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_70x70.png differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_71x71.png b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_71x71.png new file mode 100644 index 000000000..16d080875 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_71x71.png differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_store.png b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_store.png new file mode 100644 index 000000000..417ccdcb5 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/assets/logo_store.png differ diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/manifests/10.0/AppxManifest.xml.in b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/manifests/10.0/AppxManifest.xml.in new file mode 100644 index 000000000..18683e01e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/manifests/10.0/AppxManifest.xml.in @@ -0,0 +1,51 @@ +<?xml version=\"1.0\" encoding=\"utf-8\"?> + +<Package + xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\" + xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\" + xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\" + xmlns:uap3=\"http://schemas.microsoft.com/appx/manifest/uap/windows10/3\" + xmlns:mobile=\"http://schemas.microsoft.com/appx/manifest/mobile/windows10\" + IgnorableNamespaces=\"uap uap3 mp mobile\"> + + <Identity + Name=\"$${WINRT_MANIFEST.identity}\" + Publisher=\"$${WINRT_MANIFEST.publisherid}\" + Version=\"$${WINRT_MANIFEST.version}\" + ProcessorArchitecture=\"$${WINRT_MANIFEST.architecture}\" /> + + <mp:PhoneIdentity PhoneProductId=\"$${WINRT_MANIFEST.identity}\" PhonePublisherId=\"$${WINRT_MANIFEST.phone_publisher_id}\"/> + + <Properties> + <DisplayName>$${WINRT_MANIFEST.name}</DisplayName> + <PublisherDisplayName>$${WINRT_MANIFEST.publisher}</PublisherDisplayName> + <Logo>$${WINRT_MANIFEST.logo_store}</Logo> + </Properties> + + <Dependencies> + <TargetDeviceFamily Name=\"Windows.Universal\" + MinVersion=\"$${WINRT_MANIFEST.minVersion}\" + MaxVersionTested=\"$${WINRT_MANIFEST.maxVersionTested}\" />$${WINRT_MANIFEST.dependencies} + </Dependencies> + + <Resources> + <Resource Language=\"en\"/> + </Resources> + + <Applications> + <Application Id=\"App\" + Executable=\"$${WINRT_MANIFEST.target}.exe\" + EntryPoint=\"$${WINRT_MANIFEST.target}.App\"> + <uap:VisualElements + DisplayName=\"$${WINRT_MANIFEST.name}\" + Description=\"$${WINRT_MANIFEST.description}\" + BackgroundColor=\"$${WINRT_MANIFEST.background}\" + Square150x150Logo=\"$${WINRT_MANIFEST.logo_150x150}\" + Square44x44Logo=\"$${WINRT_MANIFEST.logo_44x44}\"> + + <uap:SplashScreen Image=\"$${WINRT_MANIFEST.logo_620x300}\" /> + </uap:VisualElements> + </Application> + </Applications> + $${WINRT_MANIFEST.capabilities} +</Package> diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/qmake.conf new file mode 100644 index 000000000..0fa9c22e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/qmake.conf @@ -0,0 +1,98 @@ +# +# qmake configuration for winrt and windows phone 8.1 +# +# Written for Microsoft Visual C++ +# + +MAKEFILE_GENERATOR = MSBUILD +QMAKE_COMPILER = msvc +QMAKE_PLATFORM = winrt win32 +CONFIG = package_manifest $$CONFIG incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target rtti +DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT Q_BYTE_ORDER=Q_LITTLE_ENDIAN +QMAKE_COMPILER_DEFINES += _WIN32 + +DEPLOYMENT_PLUGIN += qwinrt + +QMAKE_CC = cl +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = bison -y +QMAKE_YACCFLAGS = -d +QMAKE_CFLAGS = -nologo +QMAKE_CFLAGS_WARN_ON = -W3 +QMAKE_CFLAGS_WARN_OFF = -W0 +QMAKE_CFLAGS_RELEASE = -O2 -MD +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi +QMAKE_CFLAGS_DEBUG = -Zi -MDd +QMAKE_CFLAGS_YACC = +QMAKE_CFLAGS_LTCG = -GL +QMAKE_CFLAGS_MP = -MP +QMAKE_CFLAGS_SSE2 = -arch:SSE2 +QMAKE_CFLAGS_SSE3 = -arch:SSE2 +QMAKE_CFLAGS_SSSE3 = -arch:SSE2 +QMAKE_CFLAGS_SSE4_1 = -arch:SSE2 +QMAKE_CFLAGS_SSE4_2 = -arch:SSE2 +QMAKE_CFLAGS_AVX = -arch:AVX +QMAKE_CFLAGS_AVX2 = -arch:AVX + +QMAKE_CXX = $$QMAKE_CC +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON -w34100 -w34189 -w44996 +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_YACC = $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG +QMAKE_CXXFLAGS_MP = $$QMAKE_CFLAGS_MP +QMAKE_CXXFLAGS_STL_ON = -EHsc +QMAKE_CXXFLAGS_STL_OFF = +QMAKE_CXXFLAGS_RTTI_ON = -GR +QMAKE_CXXFLAGS_RTTI_OFF = +QMAKE_CXXFLAGS_EXCEPTIONS_ON = -EHsc +QMAKE_CXXFLAGS_EXCEPTIONS_OFF = /wd4530 /wd4577 + +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_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<< + +QMAKE_LINK = link +QMAKE_LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT /NODEFAULTLIB:ole32.lib /APPCONTAINER +QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO +QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF /INCREMENTAL:NO +QMAKE_LFLAGS_DEBUG = /DEBUG +QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS +QMAKE_LFLAGS_EXE = /MANIFEST:NO +QMAKE_LFLAGS_DLL = /MANIFEST:NO /DLL +QMAKE_LFLAGS_LTCG = /LTCG +QMAKE_PREFIX_SHLIB = +QMAKE_EXTENSION_SHLIB = dll +QMAKE_PREFIX_STATICLIB = +QMAKE_EXTENSION_STATICLIB = lib + +QMAKE_LIBS += runtimeobject.lib +QMAKE_LIBS_GUI = +QMAKE_LIBS_NETWORK += ws2_32.lib + +QMAKE_LIBS_QT_ENTRY = -lqtmain + +QMAKE_IDL = midl +QMAKE_LIB = lib /NOLOGO +QMAKE_RC = rc + +VCPROJ_EXTENSION = .vcxproj +VCSOLUTION_EXTENSION = .sln +VCPROJ_KEYWORD = Qt4VSv1.0 +WINRT_ASSETS_PATH = $$PWD/assets + +WINRT_MANIFEST.capabilities = defaults +WINRT_MANIFEST.capabilities_device = defaults + +include(../angle.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/qplatformdefs.h new file mode 100644 index 000000000..c561e4166 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/common/winrt_winphone/qplatformdefs.h @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#ifdef UNICODE +#ifndef _UNICODE +#define _UNICODE +#endif +#endif + +// Get Qt defines/settings + +#include "qglobal.h" +#include "qfunctions_winrt.h" + +#define _POSIX_ +#include <limits.h> +#undef _POSIX_ + +#include <tchar.h> +#include <io.h> +#include <direct.h> +#include <stdio.h> +#include <fcntl.h> +#include <errno.h> +#include <sys/stat.h> +#include <stdlib.h> + +#ifdef QT_LARGEFILE_SUPPORT +#define QT_STATBUF struct _stati64 // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs +#define QT_STAT ::_stati64 +#define QT_FSTAT ::_fstati64 +#else +#define QT_STATBUF struct _stat // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stat // non-ANSI defs +#define QT_STAT ::_stat +#define QT_FSTAT ::_fstat +#endif +#define QT_STAT_REG _S_IFREG +#define QT_STAT_DIR _S_IFDIR +#define QT_STAT_MASK _S_IFMT +#if defined(_S_IFLNK) +# define QT_STAT_LNK _S_IFLNK +#endif +#define QT_FILENO _fileno +#define QT_OPEN ::_open +#define QT_CLOSE ::_close +#ifdef QT_LARGEFILE_SUPPORT +#define QT_LSEEK ::_lseeki64 +#define QT_TSTAT ::_tstati64 +#else +#define QT_LSEEK ::_lseek +#define QT_TSTAT ::_tstat +#endif +#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 0 +#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 +#if defined(O_TEXT) +# define QT_OPEN_TEXT _O_TEXT +# define QT_OPEN_BINARY _O_BINARY +#endif + +#include "../common/c89/qplatformdefs.h" + +#ifdef QT_LARGEFILE_SUPPORT +#undef QT_FSEEK +#undef QT_FTELL +#undef QT_OFF_T + +#define QT_FSEEK ::_fseeki64 +#define QT_FTELL ::_ftelli64 +#define QT_OFF_T __int64 +#endif + +#define QT_SIGNAL_ARGS int + +#define QT_VSNPRINTF(buffer, count, format, arg) \ + vsnprintf_s(buffer, count, count-1, format, arg) + +#define QT_SNPRINTF ::_snprintf + +# define F_OK 0 +# define X_OK 1 +# define W_OK 2 +# define R_OK 4 + +typedef int mode_t; + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/cygwin-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/cygwin-g++/qmake.conf new file mode 100644 index 000000000..a4f64d9c6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/cygwin-g++/qmake.conf @@ -0,0 +1,75 @@ +# +# qmake configuration for cygwin-g++ +# +# Written for Qt/X11 on Windows using Cygwin's POSIX API +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = cygwin unix posix +CONFIG += incremental unversioned_libname +QMAKE_INCREMENTAL_STYLE = sublib + +QMAKE_COMPILER = gcc + +QMAKE_CC = gcc +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = bison -y +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_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_LIBS = +QMAKE_LIBS_DYNLOAD = -ldl +QMAKE_LIBS_X11 = -lXext -lX11 +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = -lpthread +QMAKE_PREFIX_SHLIB = lib +QMAKE_EXTENSION_SHLIB = dll +QMAKE_PREFIX_STATICLIB = lib +QMAKE_EXTENSION_STATICLIB = a + +QMAKE_AR = ar cqs +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/cygwin-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/cygwin-g++/qplatformdefs.h new file mode 100644 index 000000000..6042f3809 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/cygwin-g++/qplatformdefs.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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 + +// 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 +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +#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> +#include <dlfcn.h> + +#include <sys/types.h> +#include <sys/ioctl.h> +// Cygwin does not provide <sys/ipc.h> and <sys/shm.h> because it +// doesn't support SysV IPC or shared memory. See for example: +// http://afni.nimh.nih.gov/afni/afniboard/messages/1725.html +#include <sys/time.h> +#include <sys/socket.h> +#include <sys/stat.h> +#include <sys/wait.h> +//#include <windows.h> +#include <netinet/in.h> + +#define QT_NO_USE_FSEEKO +#include "../common/posix/qplatformdefs.h" + +#undef QT_OPEN_LARGEFILE +#define QT_OPEN_LARGEFILE 0 + +#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf +#endif + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/darwin-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/darwin-g++/qmake.conf new file mode 100644 index 000000000..85955f7af --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/darwin-g++/qmake.conf @@ -0,0 +1,89 @@ +# +# qmake configuration for darwin-g++ +# +# Written for Qt/X11 on Darwin and XFree86 +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = macos osx macx mac darwin +CONFIG += native_precompiled_headers +DEFINES += __USE_WS_X11__ + +include(../common/unix.conf) + +QMAKE_COMPILER = gcc + +QMAKE_CC = cc +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = yacc +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 = -fPIC +QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB +QMAKE_EXTENSION_SHLIB = dylib +QMAKE_EXTENSION_PLUGIN = so +QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden +QMAKE_CFLAGS_THREAD = +QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE} + +QMAKE_CXX = c++ +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_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden +QMAKE_CXXFLAGS_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_LINK = c++ +QMAKE_LINK_SHLIB = c++ +QMAKE_LFLAGS = +QMAKE_LFLAGS_RELEASE = +QMAKE_LFLAGS_DEBUG = +QMAKE_LFLAGS_APP = -prebind +QMAKE_LFLAGS_SHLIB = -prebind -dynamiclib -single_module +QMAKE_LFLAGS_PLUGIN = -prebind -bundle +QMAKE_LFLAGS_THREAD = +QMAKE_LFLAGS_SONAME += -install_name$${LITERAL_WHITESPACE} +QMAKE_LFLAGS_HEADERPAD += -headerpad_max_install_names + +QMAKE_LFLAGS_VERSION = -current_version$${LITERAL_WHITESPACE} +QMAKE_LFLAGS_COMPAT_VERSION = -compatibility_version$${LITERAL_WHITESPACE} + +QMAKE_LFLAGS_RPATH = + +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_X11 = -lXext -lX11 -lm +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = + +QMAKE_AR = ar cq +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = ranlib -s + +QMAKE_PCH_OUTPUT_EXT = .gch + +QMAKE_CXXFLAGS_PRECOMPILE += -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/darwin-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/darwin-g++/qplatformdefs.h new file mode 100644 index 000000000..46a938323 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/darwin-g++/qplatformdefs.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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> + +#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 +#define QT_OPEN_LARGEFILE 0 + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/freebsd_device_post.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/freebsd_device_post.conf new file mode 100644 index 000000000..173eeb00a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/freebsd_device_post.conf @@ -0,0 +1,7 @@ +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QMAKE_CFLAGS += $$COMPILER_FLAGS +QMAKE_CXXFLAGS += $$COMPILER_FLAGS +QMAKE_LFLAGS += $$LINKER_FLAGS diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/freebsd_device_pre.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/freebsd_device_pre.conf new file mode 100644 index 000000000..8eb76f60f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/freebsd_device_pre.conf @@ -0,0 +1,27 @@ +QT_QPA_DEFAULT_PLATFORM = bsdfb + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../freebsd-clang/qmake.conf) + +load(device_config) + +# modifications to g++-unix.conf +QMAKE_CC = $${CROSS_COMPILE}cc +QMAKE_CXX = $${CROSS_COMPILE}c++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +# Do not set QMAKE_INCDIR to system include here +# it messes up system include order. --sysroot is +# sufficient. See link for details: +# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213217 +QMAKE_LIBDIR_POST = $$[QT_SYSROOT]/usr/lib diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/linux_arm_device_post.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/linux_arm_device_post.conf new file mode 100644 index 000000000..b450db03d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/linux_arm_device_post.conf @@ -0,0 +1,9 @@ +contains(DISTRO_OPTS, hard-float) { + COMPILER_FLAGS += -mfloat-abi=hard + LINKER_FLAGS += -mfloat-abi=hard +} else: !contains(DISTRO_OPTS, aarch64) { + COMPILER_FLAGS += -mfloat-abi=softfp + LINKER_FLAGS += -mfloat-abi=softfp +} + +include(linux_device_post.conf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/linux_device_post.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/linux_device_post.conf new file mode 100644 index 000000000..9a434dba7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/linux_device_post.conf @@ -0,0 +1,17 @@ +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +contains(DISTRO_OPTS, deb-multi-arch) { + QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib/$${GCC_MACHINE_DUMP} \ + $$[QT_SYSROOT]/lib/$${GCC_MACHINE_DUMP} +} + +contains(DISTRO_OPTS, boot2qt) { + QMAKE_PLATFORM += boot2qt +} + +QMAKE_CFLAGS += $$COMPILER_FLAGS +QMAKE_CXXFLAGS += $$COMPILER_FLAGS +QMAKE_LFLAGS += $$LINKER_FLAGS diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/linux_device_pre.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/linux_device_pre.conf new file mode 100644 index 000000000..8c6c87d0b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/common/linux_device_pre.conf @@ -0,0 +1,28 @@ +QT_QPA_DEFAULT_PLATFORM = eglfs + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +!load(device_config) { + error(Could not successfully load device configuration) +} + +# modifications to g++-unix.conf +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +contains(DISTRO_OPTS, deb-multi-arch): \ + QMAKE_PKG_CONFIG = $${CROSS_COMPILE}pkg-config diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-generic-clang/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-generic-clang/qmake.conf new file mode 100644 index 000000000..1c3ca9b1f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-generic-clang/qmake.conf @@ -0,0 +1,9 @@ +# +# Generic qmake configuration for cross-compiling with clang +# +# A minimal configure line could look something like this: +# ./configure -device freebsd-generic-clang -device-option CROSS_COMPILE=/usr/armv6-freebsd/usr/bin/ + +include(../common/freebsd_device_pre.conf) +include(../common/freebsd_device_post.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-generic-clang/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-generic-clang/qplatformdefs.h new file mode 100644 index 000000000..de53ea5e1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-generic-clang/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../common/bsd/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-rasp-pi-clang/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-rasp-pi-clang/qmake.conf new file mode 100644 index 000000000..2105f08c7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-rasp-pi-clang/qmake.conf @@ -0,0 +1,25 @@ +# qmake configuration for the Raspberry Pi and Raspberry Pi 2 + +include(../common/freebsd_device_pre.conf) + +QT_QPA_DEFAULT_PLATFORM = eglfs +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_brcm + +QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/usr/local/lib +QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 +QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 + +QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/local/include \ + $$[QT_SYSROOT]/usr/local/include/interface/vcos/pthreads \ + $$[QT_SYSROOT]/usr/local/include/interface/vmcs_host/linux +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} + +QMAKE_LIBS_EGL = -lEGL -lGLESv2 +QMAKE_LIBS_OPENGL_ES2 = $${QMAKE_LIBS_EGL} +QMAKE_LIBS_OPENVG = -lEGL -lOpenVG -lGLESv2 + +include(../common/freebsd_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-rasp-pi-clang/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-rasp-pi-clang/qplatformdefs.h new file mode 100644 index 000000000..3fd73d421 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/freebsd-rasp-pi-clang/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../freebsd-generic-clang/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-drive-cx/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-drive-cx/qmake.conf new file mode 100644 index 000000000..37474e9de --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-drive-cx/qmake.conf @@ -0,0 +1,39 @@ +# +# qmake configuration for 64-bit Tegra X1 boards, like the DRIVE CX, using Vibrante Integrity +# +# A typical configure line might look like: +# configure \ +# -device integrity-armv8-drive-cx \ +# -device-option VIBRANTE_INTEGRITY_PDK_TOPDIR=/opt/nvidia/vibrante-t186ref-integrity +# -static \ +# -opengl es2 + +load(device_config) + +include(../../common/ghs-integrity-armv8.conf) + +DEFINES += WIN_INTERFACE_CUSTOM + +QT_QPA_DEFAULT_PLATFORM = eglfs + +QMAKE_LIBS_EGL += -lEGL -lGLESv2 -lnvidia-glsi -lnvidia-eglcore -lnvidia-rmapi-tegra -lposix -livfs -ldrm-nvdc -lnvll -lnvdc -lnvrm -lnvrm_gpu -lnvrm_graphics -lnvos -lsocket -lnet -lnvtegrahv +QMAKE_LIBS_OPENGL_ES2 += $${QMAKE_LIBS_EGL} + +EGLFS_DEVICE_INTEGRATION = eglfs_kms_egldevice + +# Vibrante Integrity PDK headers & libraries +QMAKE_INCDIR += $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/include +QMAKE_LIBDIR += $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/libs + +# OpenGL libraries have a dependency on libEGL +QMAKE_INCDIR_EGL = $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/include +QMAKE_LIBDIR_EGL = $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/libs +QMAKE_INCDIR_OPENGL_ES2 = $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/include +QMAKE_LIBDIR_OPENGL_ES2 = $${VIBRANTE_INTEGRITY_PDK_TOPDIR}/libs + +defineTest(qtConfSanitizeMkspec) { + isEmpty(VIBRANTE_INTEGRITY_PDK_TOPDIR): \ + error("You must pass -device-option VIBRANTE_INTEGRITY_PDK_TOPDIR=/path/to/pdk") +} + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-drive-cx/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-drive-cx/qplatformdefs.h new file mode 100644 index 000000000..c8361113a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-drive-cx/qplatformdefs.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#include "../../common/integrity/qplatformdefs.h" + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-msm8996au/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-msm8996au/qmake.conf new file mode 100644 index 000000000..90299bf3e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-msm8996au/qmake.conf @@ -0,0 +1,57 @@ +# +# qmake configuration for INTEGRITY Qualcomm s820 Snapdragon MSM8996AU +# + +load(device_config) + +include(../../common/ghs-integrity-armv8.conf) + +QT_QPA_DEFAULT_PLATFORM = eglfs +EGLFS_DEVICE_INTEGRATION = eglfs_openwfd + +bsp_name = $$(INTEGRITY_BSP) +isEmpty(bsp_name): \ + error("This qmakespec requires $INTEGRITY_BSP to be set") + +os_directory = $$(INTEGRITY_DIR) +isEmpty(os_directory): \ + error("This qmakespec requires $INTEGRITY_DIR to be set") + +qclibs_directory = $$(QCLIBS_DIR) +isEmpty(qclibs_directory): \ + error("This qmakespec requires $QCLIBS_DIR to be set") + +qc_multimedia_inc_directory = $$(QC_MULTIMEDIA_INC_DIR) +isEmpty(qc_multimedia_inc_directory): \ + error("This qmakespec requires $QC_MULTIMEDIA_INC_DIR to be set") + +gl_inc_directory = $$(GL_INC_DIR) +isEmpty(gl_inc_directory): \ + error("This qmakespec requires $GL_INC_DIR to be set") + +gl_lib_directory = $$(GL_LIB_DIR) +isEmpty(gl_lib_directory): \ + error("This qmakespec requires $GL_LIB_DIR to be set") + +QMAKE_LIBDIR += $$(QCLIBS_DIR)/base +QMAKE_LIBDIR += $$(QCLIBS_DIR)/multimedia/display + +QMAKE_INCDIR += $$(QC_MULTIMEDIA_INC_DIR) + +QMAKE_LIBS_EGL += -lESXEGL_Adreno -lESXGLESv2_Adreno -ladreno_utils -lGSLUser -lOSUser -lpanel -livfs -lposix -lpmem -ltzbsp -lpaged_alloc -lglnext-llvm -lopenwfd +QMAKE_LIBS_OPENGL_ES2 += $${QMAKE_LIBS_EGL} + +QMAKE_CFLAGS += -DINTEGRITY +QMAKE_CXXFLAGS += -DINTEGRITY + +QMAKE_CFLAGS += -bigswitch +QMAKE_CXXFLAGS += -bigswitch +QMAKE_LFLAGS += -bigswitch + +# OpenGL libraries have a dependency on libEGL +QMAKE_INCDIR_EGL = $$(GL_INC_DIR) +QMAKE_LIBDIR_EGL = $$(GL_LIB_DIR) +QMAKE_INCDIR_OPENGL_ES2 = $$(GL_INC_DIR) +QMAKE_LIBDIR_OPENGL_ES2 = $$(GL_LIB_DIR) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-msm8996au/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-msm8996au/qplatformdefs.h new file mode 100644 index 000000000..c8361113a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/integrity-armv8-msm8996au/qplatformdefs.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#include "../../common/integrity/qplatformdefs.h" + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-archos-gen8-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-archos-gen8-g++/qmake.conf new file mode 100644 index 000000000..66662f90c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-archos-gen8-g++/qmake.conf @@ -0,0 +1,58 @@ +# +# qmake configuration for the Archos gen8 tablets (70 and 101) +# with the SDE (Software Developer Edition) firmware +# http://www.archos.com/support/support_tech/updates_dev.html +# +# OpenEmbedded platform build system for Qt5 available at: +# http://github.com/KDAB/OpenEmbedded-Archos + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QT_QPA_DEFAULT_PLATFORM = eglfs + +# modifications to g++.conf +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp + +#modifications to gcc-base.conf +QMAKE_CFLAGS += $${COMPILER_FLAGS} +QMAKE_CXXFLAGS += $${COMPILER_FLAGS} +QMAKE_CXXFLAGS_RELEASE += -O3 + +QMAKE_LIBS += -lrt -lpthread -ldl + +# Extra stuff (OpenGL, DirectFB, ...) +QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/include +QMAKE_LIBDIR_EGL = $$[QT_SYSROOT]/usr/lib +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} +QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} + +QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} +QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-archos-gen8-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-archos-gen8-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-archos-gen8-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-amlogic-8726M-g++/qeglfshooks_8726m.cpp b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-amlogic-8726M-g++/qeglfshooks_8726m.cpp new file mode 100644 index 000000000..184a47b68 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-amlogic-8726M-g++/qeglfshooks_8726m.cpp @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "private/qeglfshooks_p.h" +#include <EGL/fbdev_window.h> +#include <stdio.h> +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <linux/fb.h> + +QT_BEGIN_NAMESPACE + +class QEglFS8726MHooks : public QEglFSHooks +{ +public: + virtual QSize screenSize() const; + virtual EGLNativeWindowType createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format); + virtual void destroyNativeWindow(EGLNativeWindowType window); +}; + +QSize QEglFS8726MHooks::screenSize() const +{ + int fd = open("/dev/fb0", O_RDONLY); + if (fd == -1) { + qFatal("Failed to open fb to detect screen resolution!"); + } + + struct fb_var_screeninfo vinfo; + if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) { + qFatal("Could not get variable screen info"); + } + + close(fd); + + return QSize(vinfo.xres, vinfo.yres); +} + +EGLNativeWindowType QEglFS8726MHooks::createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format) +{ + Q_UNUSED(window) + Q_UNUSED(format) + + fbdev_window *window = new fbdev_window; + window->width = size.width(); + window->height = size.height(); + + return window; +} + +void QEglFS8726MHooks::destroyNativeWindow(EGLNativeWindowType window) +{ + delete window; +} + +QEglFS8726MHooks eglFS8726MHooks; +QEglFSHooks *platformHooks = &eglFS8726MHooks; + +QT_END_NAMESPACE diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-amlogic-8726M-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-amlogic-8726M-g++/qmake.conf new file mode 100644 index 000000000..74eaf0dd0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-amlogic-8726M-g++/qmake.conf @@ -0,0 +1,36 @@ +# +# qmake configuration for linux-g++ +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +QMAKE_CFLAGS += -mfloat-abi=softfp -mfpu=neon -mcpu=cortex-a9 +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS + +EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_8726m.cpp + +QT_QPA_DEFAULT_PLATFORM = eglfs + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-amlogic-8726M-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-amlogic-8726M-g++/qplatformdefs.h new file mode 100644 index 000000000..b2d14f7cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-amlogic-8726M-g++/qplatformdefs.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-generic-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-generic-g++/qmake.conf new file mode 100644 index 000000000..3dbd297b9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-generic-g++/qmake.conf @@ -0,0 +1,9 @@ +# +# Generic qmake configuration for building with g++ on arm devices. +# +# A minimal configure line could look something like this: +# ./configure -device arm-generic-g++ -device-option CROSS_COMPILE=arm-linux-gnueabi- + +include(../common/linux_device_pre.conf) +include(../common/linux_arm_device_post.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-generic-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-generic-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-generic-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf new file mode 100644 index 000000000..f65e9730d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf @@ -0,0 +1,46 @@ +# +# qmake configuration for linux-arm-hisilicon-hix5hd2-g++ using the arm-linux-gnueabihf-g++ crosscompiler +# +# A typical configure line looks like this: +# <path-to-qt-src>/configure -opensource -confirm-license -release -make libs -make examples -optimized-qmake +# -platform linux-g++-64 -device linux-arm-hisilicon-hix5hd2-g++ -device-option CROSS_COMPILE=arm-linux-gnueabihf- +# -opengl es2 -no-qml-debug -no-directfb -no-kms -no-xcb -no-alsa -qt-zlib -qt-libjpeg -qt-libpng +# -no-icu -no-nis -sysroot <path-to-rootfs> -extprefix <path-to-targetinstall> -hostprefix <path-to-hostinstall> +# -prefix <path-to-prefix> +# +# such as +# ./configure -opensource -confirm-license -release -make libs -make examples -optimized-qmake +# -platform linux-g++-64 -device linux-arm-hisilicon-hix5hd2-g++ -device-option CROSS_COMPILE=arm-linux-gnueabihf- +# -opengl es2 -no-qml-debug -no-directfb -no-kms -no-xcb -no-alsa -qt-zlib -qt-libjpeg -qt-libpng +# -no-icu -no-nis -sysroot /home/abc/project/sysbase +# -extprefix /home/abc/project/sysbase/qt_install +# -hostprefix /home/abc/project/qtdir/qtbase_hostinstall +# -prefix /home/abc/project/sysbase/qt_install + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += /usr/arm-linux-gnueabihf/include +QMAKE_LIBDIR_POST += /usr/arm-linux-gnueabihf/lib + +QMAKE_LIBS += -lrt + +QMAKE_INCDIR_EGL += $$[QT_SYSROOT]/egl/include +QMAKE_LIBDIR_EGL += $$[QT_SYSROOT]/egl/lib +QMAKE_INCDIR_OPENGL_ES2 += $$QMAKE_INCDIR_EGL +QMAKE_LIBDIR_OPENGL_ES2 += $$QMAKE_LIBDIR_EGL + +QMAKE_LIBS_EGL += -lMali +QMAKE_LIBS_OPENGL_ES2 += $$QMAKE_LIBS_EGL +QMAKE_LIBS_OPENVG += $$QMAKE_LIBS_EGL + +DISTRO_OPTS += hard-float + +QMAKE_CFLAGS +=-march=armv7-a -mcpu=cortex-a9 -mfpu=vfpv3-d16 +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_mali + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf new file mode 100644 index 000000000..5619c205f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf @@ -0,0 +1,68 @@ +# +# qmake configuration for building with arm-linux-uclibcgnueabi-g++ +# +# http://wiki.qt.io/Shiner +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + isEmpty(TRIDENT_SHINER_SDK_BUILDTREE): \ + error("TRIDENT_SHINER_SDK_BUILDTREE needs to be set via -device-option TRIDENT_SHINER_SDK_BUILDTREE=<path>") + isEmpty(TRIDENT_SHINER_SDK_BUILDSPEC): \ + error("TRIDENT_SHINER_SDK_BUILDSPEC needs to be set via -device-option TRIDENT_SHINER_SDK_BUILDSPEC=<build spec>") + isEmpty(TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2): \ + error("TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2 needs to be set via -device-option TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2=<path>") + isEmpty(TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2): \ + error("TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2 needs to be set via -device-option TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2=<path>") + deviceSanityCheckCompiler() +} + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${CROSS_COMPILE}g++ +QMAKE_LINK_SHLIB = $${CROSS_COMPILE}g++ + +# +# Usage configure options "-sysroot <sysroot path>" with "--prefix=<qt installation path>" results into installation of Qt at "<sysroot path><qt installation path>". +# Trident Shiner SDK expects all libs to be in "Application file system" which is not <sysroot path> +# +# Because of this fact not using "-sysroot <sysroot path>" and hence following code is required +# +QMAKE_CFLAGS += --sysroot=$${TRIDENT_SHINER_SDK_BUILDTREE}/open_source_archive/linux/toolchains/gcc-4.5.2_uclibc/ +QMAKE_CXXFLAGS += --sysroot=$${TRIDENT_SHINER_SDK_BUILDTREE}/open_source_archive/linux/toolchains/gcc-4.5.2_uclibc/ +QMAKE_LFLAGS += --sysroot=$${TRIDENT_SHINER_SDK_BUILDTREE}/open_source_archive/linux/toolchains/gcc-4.5.2_uclibc/ + +QMAKE_CFLAGS = -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +QMAKE_INCDIR_POST += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generic_apps/usr/include +QMAKE_LIBDIR_POST += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generic_apps/usr/lib +QMAKE_LIBDIR_POST += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generated/lib/armgnu_linux_el_cortex-a9 + +QMAKE_INCDIR_EGL = $${TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2} +QMAKE_LIBDIR_EGL = $${TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2} + +QMAKE_INCDIR_OPENGL_ES2 = $${TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2} +QMAKE_LIBDIR_OPENGL_ES2 = $${TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2} + +QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um -lusc +QMAKE_LIBS_OPENGL_ES2 = $$QMAKE_LIBS_EGL -lGLESv2 -lGLES_CM + +QT_QPA_DEFAULT_PLATFORM = eglfs + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-trident-pnx8473-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-trident-pnx8473-g++/qplatformdefs.h new file mode 100644 index 000000000..b2d14f7cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-arm-trident-pnx8473-g++/qplatformdefs.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-beagleboard-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-beagleboard-g++/qmake.conf new file mode 100644 index 000000000..604da50f6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-beagleboard-g++/qmake.conf @@ -0,0 +1,58 @@ +# +# qmake configuration for the BeagleBoard and BeagleBoard xM boards +# http://beagleboard.org/ + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +QT_QPA_DEFAULT_PLATFORM = eglfs + +# modifications to g++.conf +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb + +#modifications to gcc-base.conf +QMAKE_CFLAGS += $${COMPILER_FLAGS} +QMAKE_CXXFLAGS += $${COMPILER_FLAGS} +QMAKE_CXXFLAGS_RELEASE += -O3 + +QMAKE_LIBS += -lrt -lpthread -ldl + +# Extra stuff (OpenGL, DirectFB, ...) +QMAKE_INCDIR_EGL = +QMAKE_LIBDIR_EGL = +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} +QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} + +QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} +QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} + +DISTRO_OPTS += hard-float + +# No need for any special EGL device integration. +# Prioritize the default, compiled-in integration over any plugins. +EGLFS_DEVICE_INTEGRATION = none + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-beagleboard-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-beagleboard-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-beagleboard-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-colibri-vf-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-colibri-vf-g++/qmake.conf new file mode 100644 index 000000000..bc42f67f8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-colibri-vf-g++/qmake.conf @@ -0,0 +1,17 @@ +# +# qmake configuration for the NXP Colibri VFxx boards +# + +include(../common/linux_device_pre.conf) + +VFXX_CFLAGS = -march=armv7-a -mtune=cortex-a5 -mfpu=neon +QMAKE_CFLAGS += $$VFXX_CFLAGS +QMAKE_CXXFLAGS += $$VFXX_CFLAGS + +QT_QPA_DEFAULT_PLATFORM = linuxfb + +DISTRO_OPTS += hard-float + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-colibri-vf-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-colibri-vf-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-colibri-vf-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-drive-cx-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-drive-cx-g++/qmake.conf new file mode 100644 index 000000000..a0dcaddec --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-drive-cx-g++/qmake.conf @@ -0,0 +1,52 @@ +# +# qmake configuration for 64-bit Tegra X1 boards, like the DRIVE CX, using Vibrante Linux +# +# A typical configure line might look like: +# configure \ +# -device drive-cx \ +# -device-option VIBRANTE_SDK_TOPDIR=/opt/nvidia/vibrante-t186ref-linux +# -device-option CROSS_COMPILE=/opt/nvidia/toolchains/tegra-4.9-nv/usr/bin/aarch64-gnu-linux/aarch64-gnu-linux- \ +# -sysroot /opt/nvidia/vibrante-t186ref-linux/targetfs \ +# -no-gcc-sysroot \ +# -opengl es2 + +# Note: This enables eglfs and wayland only. To enable xcb (with EGL +# support) as well, add -qt-xcb and fix the SDK's X11 headers. See +# QTBUG-55140. + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/include \ + $$[QT_SYSROOT]/usr/include + +QMAKE_LIBDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/lib-target \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/lib/aarch64-linux-gnu \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu + +QMAKE_RPATHLINKDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/lib-target \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \ + $$[QT_SYSROOT]/lib/aarch64-linux-gnu + +DISTRO_OPTS += aarch64 + +# Do not define WIN_INTERFACE_CUSTOM here. It is suitable for drm and +# wayland, but not X11. Leave it to qt_egl_p.h instead. +COMPILER_FLAGS += -mtune=cortex-a57.cortex-a53 -march=armv8-a + +EGLFS_DEVICE_INTEGRATION = eglfs_kms_egldevice + +include(../common/linux_arm_device_post.conf) + +# override the default from linux_arm_device_post.conf +defineTest(qtConfSanitizeMkspec) { + isEmpty(VIBRANTE_SDK_TOPDIR): \ + error("You must pass -device-option VIBRANTE_SDK_TOPDIR=/path/to/sdk") + deviceSanityCheckCompiler() +} + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-drive-cx-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-drive-cx-g++/qplatformdefs.h new file mode 100644 index 000000000..e927f7501 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-drive-cx-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-emu-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-emu-g++/qmake.conf new file mode 100644 index 000000000..1de381ee7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-emu-g++/qmake.conf @@ -0,0 +1,29 @@ +# +# qmake configuration for the Qt Simulator for Embedded Linux +# (cross-compile for the x86-based Yocto image + use a custom EGL/GLES implementation) +# +# Example configure command: +# +# ./configure \ +# -prefix /usr/local/qt5 \ +# -hostprefix /usr/local/qt5-host \ +# -extprefix $PWD/../qt5 \ +# -device emu \ +# -device-option CROSS_COMPILE=$QT/Boot2Qt/emulator/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/i586-poky-linux/i586-poky-linux- \ +# -sysroot $QT/Boot2Qt/emulator/toolchain/sysroots/i586-poky-linux \ +# -nomake examples -nomake tests -v \ +# -release -force-debug-info \ +# -opengl es2 + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL = -lQtGlesStreamClient +QMAKE_LIBS_OPENGL_ES2 = $$QMAKE_LIBS_EGL +QMAKE_LIBS_OPENGL_ES2_DEBUG = $$QMAKE_LIBS_EGL + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_emu + +include(../common/linux_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-emu-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-emu-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-emu-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-generic-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-generic-g++/qmake.conf new file mode 100644 index 000000000..65cf6d055 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-generic-g++/qmake.conf @@ -0,0 +1,9 @@ +# +# Generic qmake configuration for building with g++ on generic devices. +# +# A minimal configure line could look something like this: +# ./configure -device linux-generic-g++ -device-option CROSS_COMPILE=mipsel-linux-gnu- + +include(../common/linux_device_pre.conf) +include(../common/linux_device_post.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-generic-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-generic-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-generic-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx53qsb-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx53qsb-g++/qmake.conf new file mode 100644 index 000000000..8572978cb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx53qsb-g++/qmake.conf @@ -0,0 +1,29 @@ +# +# qmake configuration for the Freescale iMX53 board +# +# This mkspec is based and tested on the Yocto Project's Poky Distribution +# with libEGL.so from Freescale without the X11 dependency. +# +# This mkspec is tested with a framebuffer (eglfs) configuration +# +# A typical configure line looks like: +# +# export PATH=/opt/imx53qsb/x86_64-linux/usr/bin/armv7a-vfp-neon-poky-linux-gnueabi:$PATH +# +# ./configure -prefix /usr/local/qt5-imx53 -hostprefix /opt/imx53qsb/x86_64-linux/usr/local/qt5-imx53 -release -device linux-imx53qsb-g++ +# -opensource -confirm-license -device-option CROSS_COMPILE=arm-poky-linux-gnueabi- -sysroot /opt/imx53qsb/sysroot +# -eglfs -no-pch -opengl es2 -no-xcb -silent + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL += -lEGL +QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL +QMAKE_LIBS_OPENVG += -lOpenVG -lEGL + +IMX5_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 -Wno-psabi +QMAKE_CFLAGS += $$IMX5_CFLAGS +QMAKE_CXXFLAGS += $$IMX5_CFLAGS + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx53qsb-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx53qsb-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx53qsb-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx6-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx6-g++/qmake.conf new file mode 100644 index 000000000..46d631796 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx6-g++/qmake.conf @@ -0,0 +1,39 @@ +# +# qmake configuration for the Freescale iMX6 boards (single, dual and quad) +# +# The configuration below is set up for running with EGL on the framebuffer via +# the eglfs platform plugin and its eglfs_viv backend. + +# Wayland is also fully functional out of the box. However, when writing Wayland +# *compositors* with Qt, the eglfs backend will have to be switched to +# eglfs_viv_wl by setting the QT_QPA_EGLFS_INTEGRATION environment variable. +# +# Below is an example configure line that assumes the SDK is in +# $HOME/imx6/toolchain. On device Qt is expected to be placed under +# /usr/local/qt5 whereas on the host 'make install' will copy the host tools and +# the target libraries to $HOME/imx6/qt5. +# +# ./configure -prefix /usr/local/qt5 -extprefix $HOME/imx6/qt5 -device linux-imx6-g++ \ +# -device-option CROSS_COMPILE=$HOME/imx6/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- \ +# -sysroot $HOME/imx6/toolchain/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi \ +# -nomake examples -nomake tests -v +# + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL += -lEGL +QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL -lGAL +QMAKE_LIBS_OPENVG += -lOpenVG -lEGL -lGAL + +IMX6_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 +QMAKE_CFLAGS += $$IMX6_CFLAGS +QMAKE_CXXFLAGS += $$IMX6_CFLAGS + +DISTRO_OPTS += hard-float + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_viv + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx6-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx6-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx6-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx7-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx7-g++/qmake.conf new file mode 100644 index 000000000..04f7eeddd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx7-g++/qmake.conf @@ -0,0 +1,17 @@ +# +# qmake configuration for the NXP iMX7 boards (single, dual and quad) +# + +include(../common/linux_device_pre.conf) + +IMX7_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 +QMAKE_CFLAGS += $$IMX7_CFLAGS +QMAKE_CXXFLAGS += $$IMX7_CFLAGS + +DISTRO_OPTS += hard-float + +QT_QPA_DEFAULT_PLATFORM = linuxfb + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx7-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx7-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-imx7-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf new file mode 100644 index 000000000..4c733e8b7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf @@ -0,0 +1,34 @@ +# +# qmake configuration for the Jetson TK1 boards running Linux For Tegra +# +# Note that this environment has been tested with X11 only. +# +# A typical configure line might look like: +# configure \ +# -device linux-jetson-tk1-g++ \ +# -device-option CROSS_COMPILE=/opt/nvidia/toolchains/tegra-4.8.1-nv/usr/bin/arm-cortex_a15-linux-gnueabi/arm-cortex_a15-linux-gnueabi- \ +# -sysroot /opt/nvidia/l4t/targetfs + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += \ + $$[QT_SYSROOT]/usr/include \ + $$[QT_SYSROOT]/usr/include/arm-linux-gnueabihf + +QMAKE_LIBDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf + +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf + +DISTRO_OPTS += hard-float +COMPILER_FLAGS += -mtune=cortex-a15 -march=armv7-a -mfpu=neon-vfpv4 + +EGLFS_DEVICE_INTEGRATION = eglfs_kms_egldevice + +include(../common/linux_arm_device_post.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-g++/qplatformdefs.h new file mode 100644 index 000000000..e927f7501 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf new file mode 100644 index 000000000..fb8972179 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf @@ -0,0 +1,47 @@ +# +# qmake configuration for the Jetson TK1 Pro boards running Vibrante Linux +# +# This environment supports eglfs (via DRM, EGLDevice, and EGLStream), +# Wayland (requires an EGLStream-capable compositor), and X11 (untested). +# +# A typical configure line might look like: +# configure \ +# -device jetson-tk1-pro \ +# -device-option VIBRANTE_SDK_TOPDIR=/opt/nvidia/vibrante-vcm30t124-linux +# -device-option CROSS_COMPILE=/opt/nvidia/toolchains/tegra-4.8.1-nv/usr/bin/arm-cortex_a15-linux-gnueabi/arm-cortex_a15-linux-gnueabi- \ +# -sysroot /opt/nvidia/vibrante-vcm30t124-linux/targetfs \ +# -no-gcc-sysroot + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/include \ + $$[QT_SYSROOT]/usr/include + +QMAKE_LIBDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/lib-target \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf + +QMAKE_RPATHLINKDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/lib-target \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf + +DISTRO_OPTS += hard-float +COMPILER_FLAGS += -mtune=cortex-a15 -march=armv7-a -mfpu=neon-vfpv4 -DWIN_INTERFACE_CUSTOM + +EGLFS_DEVICE_INTEGRATION = eglfs_kms_egldevice + +include(../common/linux_arm_device_post.conf) + +# override the default from linux_arm_device_post.conf +defineTest(qtConfSanitizeMkspec) { + isEmpty(VIBRANTE_SDK_TOPDIR): \ + error("You must pass -device-option VIBRANTE_SDK_TOPDIR=/path/to/sdk") + deviceSanityCheckCompiler() +} + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-pro-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-pro-g++/qplatformdefs.h new file mode 100644 index 000000000..e927f7501 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tk1-pro-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf new file mode 100644 index 000000000..f9dec441f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf @@ -0,0 +1,51 @@ +# +# qmake configuration for Jetson TX1 boards running 64-bit Linux For Tegra +# (tested with R24.2, sample root filesystem) +# +# Note that this environment has been tested with X11 only. +# +# A typical configure line might look like the following: +# +# configure \ +# -device linux-jetson-tx1-g++ \ +# -device-option CROSS_COMPILE=/opt/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- \ +# -sysroot /opt/Linux_for_Tegra/rootfs +# +# Note that this builds for GLX + OpenGL. To use EGL + OpenGL ES instead, pass +# -opengl es2 and ensure the rootfs has the headers (rootfs/usr/include/EGL, +# GLES2, GLES3), which may not be the case out of the box. +# +# Check the configure output carefully, some features may be disabled due to the +# rootfs not having the necessary dev files. +# +# If getting cryptic linker errors from static libs like libm.a, check that the +# symlinks libm.so, libz.so, etc. under rootfs/usr/lib/aarch64-linux-gnu are not +# broken. If they are, due to using absolute paths, change them so that they are +# relative to rootfs. + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += \ + $$[QT_SYSROOT]/usr/include \ + $$[QT_SYSROOT]/usr/include/aarch64-linux-gnu + +QMAKE_LIBDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/lib/aarch64-linux-gnu \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu + +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu/tegra \ + $$[QT_SYSROOT]/lib/aarch64-linux-gnu + +DISTRO_OPTS += aarch64 +COMPILER_FLAGS += -mtune=cortex-a57.cortex-a53 -march=armv8-a + +# When configured with -opengl es2, eglfs will be functional with its +# dummy fullscreen X11 backend, in addition to xcb. +EGLFS_DEVICE_INTEGRATION = eglfs_x11 + +include(../common/linux_arm_device_post.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tx1-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tx1-g++/qplatformdefs.h new file mode 100644 index 000000000..e927f7501 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-jetson-tx1-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qdirectfbeglhooks_bcm97425.cpp b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qdirectfbeglhooks_bcm97425.cpp new file mode 100644 index 000000000..396f0bbea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qdirectfbeglhooks_bcm97425.cpp @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qdirectfbeglhooks.h" +#include "qdirectfbconvenience.h" + +#include "default_directfb.h" + +QT_BEGIN_NAMESPACE + +// Exported to the directfb plugin +QDirectFBEGLHooks platform_hook; +static void *dbpl_handle; + +void QDirectFBEGLHooks::platformInit() +{ + DBPL_RegisterDirectFBDisplayPlatform(&dbpl_handle, QDirectFbConvenience::dfbInterface()); +} + +void QDirectFBEGLHooks::platformDestroy() +{ + DBPL_UnregisterDirectFBDisplayPlatform(dbpl_handle); + dbpl_handle = 0; +} + +bool QDirectFBEGLHooks::hasCapability(QPlatformIntegration::Capability cap) const +{ + switch (cap) { + case QPlatformIntegration::ThreadedOpenGL: + return true; + default: + return false; + } +} + +QT_END_NAMESPACE diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf new file mode 100644 index 000000000..c7b6970fe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf @@ -0,0 +1,68 @@ +# +# qmake configuration for linux-mipsel-broadcom-97425-g++ +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + isEmpty(B_REFSW_DEBUG): \ + error("B_REFSW_DEBUG needs to be set via -device-option B_REFSW_DEBUG=(y|n)") + isEmpty(BRCM_ROCKFORD_PATH): \ + error("BRCM_ROCKFORD_PATH needs to be set via -device-option BRCM_ROCKFORD_PATH=<path>") + isEmpty(BRCM_APPLIBS_PATH): \ + error("BRCM_APPLIBS_PATH needs to be set via -device-option BRCM_APPLIBS_PATH=<path>") + deviceSanityCheckCompiler() +} + +# Modify the defaults we loaded above +CROSS_COMPILE = mipsel-linux- +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +#TODO: Clean Qt to work with uclibc not calling itself GLIBC. +#QMAKE_CFLAGS += -D__FORCE_NOGLIBC +#QMAKE_CXXFLAGS += -D__FORCE_NOGLIBC + + +BRCM_PLATFORM = 97425 + +# Figure the kind of directfb build used. +BRCM_BUILD_TYPE = debug +contains(B_REFSW_DEBUG, [Nn]) { + BRCM_BUILD_TYPE = release +} + +QMAKE_INCDIR_OPENGL_ES2 = $${BRCM_ROCKFORD_PATH}/middleware/v3d/interface/khronos/include +QMAKE_LIBDIR_OPENGL_ES2 = $${BRCM_ROCKFORD_PATH}/middleware/v3d/lib_$${BRCM_PLATFORM}_$${BRCM_BUILD_TYPE} +QMAKE_LIBS_OPENGL_ES2 = -lv3ddriver -lrt +QMAKE_LIBS_EGL = + +QMAKE_INCDIR_POST += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 +QMAKE_LIBDIR_POST += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 +QMAKE_RPATHLINKDIR_POST += $$QMAKE_LIBDIR_OPENGL_ES2 $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 + +# DirectFB platform hooks for this hardware +QT_CONFIG += directfb_egl egl +DIRECTFB_PLATFORM_HOOKS_SOURCES = $$PWD/qdirectfbeglhooks_bcm97425.cpp +DIRECTFB_PLATFORM_HOOKS_INCLUDEPATH = $${BRCM_ROCKFORD_PATH}/middleware/platform/directfb +DIRECTFB_PLATFORM_HOOKS_LIBS = -ldbpl +DIRECTFB_PLATFORM_HOOKS_LIBDIR = $${BRCM_ROCKFORD_PATH}/middleware/platform/directfb/lib_$${BRCM_PLATFORM}_$${BRCM_BUILD_TYPE} + +QT_QPA_DEFAULT_PLATFORM = directfbegl + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-ci20-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-ci20-g++/qmake.conf new file mode 100644 index 000000000..6e5311eb4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-ci20-g++/qmake.conf @@ -0,0 +1,21 @@ +# +# qmake configuration for building with mips-mti-linux-gnu-g++ +# build for CI20 targets X11 +# + +CROSS_COMPILE = mips-mti-linux-gnu- + +include(../common/linux_device_pre.conf) + +QMAKE_CFLAGS = -EL -march=mips32r2 +QMAKE_CXXFLAGS = $${QMAKE_CFLAGS} +QMAKE_LFLAGS = -EL + +QT_QPA_DEFAULT_PLATFORM = xcb + +QMAKE_LIBS_EGL = -lEGL -lIMGegl -lusc +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} + +include(../common/linux_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-ci20-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-ci20-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-mipsel-ci20-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-nuc-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-nuc-g++/qmake.conf new file mode 100644 index 000000000..fef599134 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-nuc-g++/qmake.conf @@ -0,0 +1,20 @@ +# +# qmake configuration for the Intel NUC DE3815TYKE targeting EGL/GLES either via KMS (eglfs) or Wayland +# +# Verified with a core-image-weston image produced by Yocto. + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL += -lEGL +QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL + +NUC_CFLAGS = -m64 +QMAKE_CFLAGS += $$NUC_CFLAGS +QMAKE_CXXFLAGS += $$NUC_CFLAGS + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_kms + +include(../common/linux_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-nuc-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-nuc-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-nuc-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-odroid-xu3-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-odroid-xu3-g++/qmake.conf new file mode 100644 index 000000000..85f2a4cfb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-odroid-xu3-g++/qmake.conf @@ -0,0 +1,17 @@ +# +# qmake configuration for linux-odroid-xu3-g++ using the arm-linux-gnueabihf-g++ crosscompiler +# + +include(../common/linux_device_pre.conf) + +DISTRO_OPTS += hard-float + +QMAKE_CFLAGS += -mcpu=cortex-a15 -mfpu=neon-vfpv4 -marm +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_mali + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-odroid-xu3-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-odroid-xu3-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-odroid-xu3-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi-g++/qmake.conf new file mode 100644 index 000000000..5497b0ce1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi-g++/qmake.conf @@ -0,0 +1,47 @@ +# +# qmake configuration for Broadcom's Raspberry PI +# http://wiki.qt.io/RaspberryPi + +include(../common/linux_device_pre.conf) + +QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/opt/vc/lib + +QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/opt/vc/lib +QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 +QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 + +QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/opt/vc/include \ + $$[QT_SYSROOT]/opt/vc/include/interface/vcos/pthreads \ + $$[QT_SYSROOT]/opt/vc/include/interface/vmcs_host/linux +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} + +QMAKE_LIBS_EGL = -lEGL -lGLESv2 +QMAKE_LIBS_OPENVG = -lEGL -lOpenVG -lGLESv2 + +contains(DISTRO, squeeze) { + #Debian Squeeze: Legacy everything + QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 -lEGL +} else:contains(DISTRO, arch) { + #On principle: no wizardry required +} else { + #This is not strictly necessary + DISTRO_OPTS += deb-multi-arch + DISTRO_OPTS += hard-float +} + +QMAKE_CFLAGS += \ + -marm \ + -mfpu=vfp \ + -mtune=arm1176jzf-s \ + -march=armv6zk \ + -mabi=aapcs-linux + +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_brcm + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf new file mode 100644 index 000000000..ffe8f5739 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf @@ -0,0 +1,30 @@ +# qmake configuration for the Raspberry Pi 2 + +include(../common/linux_device_pre.conf) + +QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/opt/vc/lib + +QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/opt/vc/lib +QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 +QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 + +QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/opt/vc/include \ + $$[QT_SYSROOT]/opt/vc/include/interface/vcos/pthreads \ + $$[QT_SYSROOT]/opt/vc/include/interface/vmcs_host/linux +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} + +QMAKE_LIBS_EGL = -lEGL -lGLESv2 +QMAKE_LIBS_OPENVG = -lEGL -lOpenVG -lGLESv2 +QMAKE_CFLAGS += -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=cortex-a7 -mabi=aapcs-linux +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +DISTRO_OPTS += hard-float +DISTRO_OPTS += deb-multi-arch + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_brcm + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi2-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi2-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi2-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf new file mode 100644 index 000000000..2bb70ffb5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf @@ -0,0 +1,44 @@ +# qmake configuration for the Raspberry Pi 3 using the Broadcom graphics stack + +include(../common/linux_device_pre.conf) + +# For modern Yocto-based sysroots that have the proper include and lib +# setup in egl.pc we will pull the necessary arguments from +# there. However, to support Raspbian and older stuff that has /opt/vc +# and possibly no pkg-config, have some static values as well: + +# I consider it a bug that this is required, but our EGL config.test _requires_ it +QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/opt/vc/lib + +VC_LIBRARY_PATH = /opt/vc/lib +VC_INCLUDE_PATH = =/opt/vc/include + +VC_LINK_LINE = -L=$${VC_LIBRARY_PATH} + +QMAKE_LIBDIR_OPENGL_ES2 = =$${VC_LIBRARY_PATH} +QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 +QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 + +QMAKE_INCDIR_EGL = \ + $${VC_INCLUDE_PATH} \ + $${VC_INCLUDE_PATH}/interface/vcos/pthreads \ + $${VC_INCLUDE_PATH}/interface/vmcs_host/linux + +QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} + +QMAKE_LIBS_OPENGL_ES2 = $${VC_LINK_LINE} -lGLESv2 + +# The official opt vc EGL references GLESv2 symbols: need to link it +QMAKE_LIBS_EGL = $${VC_LINK_LINE} -lEGL -lGLESv2 + +QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +DISTRO_OPTS += hard-float +DISTRO_OPTS += deb-multi-arch + +EGLFS_DEVICE_INTEGRATION= eglfs_brcm + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-g++/qplatformdefs.h new file mode 100644 index 000000000..4435fb255 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-vc4-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-vc4-g++/qmake.conf new file mode 100644 index 000000000..75b6ad7db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-vc4-g++/qmake.conf @@ -0,0 +1,44 @@ +# qmake configuration for the Raspberry Pi 3 (32-bit) using the +# *experimental* VC4 driver for Mesa and DRM. +# +# This should allow accelerated EGL and OpenGL with eglfs via +# KMS/DRM/GBM (instead of the Broadcom-specific backend), under X11 +# with xcb, and also enables (Qt)Wayland via the standard wayland-egl +# path. See https://dri.freedesktop.org/wiki/VC4 +# +# Note that this is not the same as the default, Broadcom proprietary +# driver. Some functionality and extensions may therefore be missing, +# in particular when it comes to accelerated multimedia (video, +# camera). +# +# At the time of writing Raspbian has to be switched explicitly to the +# experimental VC4 driver. To do this, run raspi-config and enable it +# in Advanced Options -> GL Driver. +# +# Example configure command below. We disable using the GNU gold +# linker as it apparently has issues with ARMv8. In the configure +# output check that "EGLFS GBM .......... yes" is present, otherwise +# eglfs will not be functional. +# +# ./configure -release -opengl es2 -device linux-rpi3-vc4-g++ \ +# -device-option CROSS_COMPILE=~/raspbian/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- \ +# -sysroot ~/raspbian/sysroot \ +# -prefix /usr/local/qt5pi -extprefix ~/raspbian/qt5pi -hostprefix ~/raspbian/qt5 \ +# -v -nomake examples -nomake tests -no-use-gold-linker + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL += -lEGL +QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL + +QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +DISTRO_OPTS += hard-float +DISTRO_OPTS += deb-multi-arch + +EGLFS_DEVICE_INTEGRATION = eglfs_kms + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-vc4-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-vc4-g++/qplatformdefs.h new file mode 100644 index 000000000..4435fb255 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rasp-pi3-vc4-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rcar-h2-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rcar-h2-g++/qmake.conf new file mode 100644 index 000000000..6a9346e4d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rcar-h2-g++/qmake.conf @@ -0,0 +1,31 @@ +# +# qmake configuration for the Renesas R-Car H2 (Lager) +# +# Both eglfs and wayland should be functional, via DRM/KMS. +# +# Below is an example configure line that assumes the SDK is in +# $HOME/rcar/toolchain. 'make install' will copy the host tools to qt5-host and +# the target contents to qt5. The latter is what should be deployed to +# /usr/local/qt5 on the target device. +# +# ./configure -prefix /usr/local/qt5 -extprefix $HOME/rcar/qt5 -hostprefix $HOME/rcar/qt5-host \ +# -device rcar-h2 \ +# -device-option CROSS_COMPILE=$HOME/rcar/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- \ +# -sysroot $HOME/rcar/toolchain/sysroots/cortexa15hf-neon-poky-linux-gnueabi \ +# -nomake examples -nomake tests -v + +include(../common/linux_device_pre.conf) + +QMAKE_LIBS_EGL += -lEGL +QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL +QMAKE_LIBS_OPENVG += -lOpenVG -lEGL + +DISTRO_OPTS += hard-float +COMPILER_FLAGS += -mtune=cortex-a15 -march=armv7-a -mfpu=neon-vfpv4 + +# Preferred eglfs backend +EGLFS_DEVICE_INTEGRATION = eglfs_kms + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rcar-h2-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rcar-h2-g++/qplatformdefs.h new file mode 100644 index 000000000..e927f7501 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-rcar-h2-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qmake.conf new file mode 100644 index 000000000..8dab1ea28 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qmake.conf @@ -0,0 +1,35 @@ +# +# qmake configuration for linux-g++ using the sh4-linux-g++ crosscompiler +# +# http://wiki.qt.io/ST7108 +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +QMAKE_LIBS_EGL += -lMali + +QT_QPA_DEFAULT_PLATFORM = eglfs + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qplatformdefs.h new file mode 100644 index 000000000..b2d14f7cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qplatformdefs.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qmake.conf new file mode 100644 index 000000000..04b0a80d1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qmake.conf @@ -0,0 +1,47 @@ +# +# qmake configuration for linux-g++ using the sh4-linux-g++ crosscompiler +# +# http://wiki.qt.io/ST7540 +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +QMAKE_INCDIR_EGL += $$[QT_SYSROOT]/root/modules/include/ +QMAKE_LIBDIR_EGL += $$[QT_SYSROOT]/root/modules/ + +# +# The EGL library used for ST7540 is based on DirectFB so it has to be linked with +# 1. libdirectfb.so 2. libfusion.so 3. libdirect.so +# +QMAKE_LIBS_EGL += -lMali -ldirectfb -lfusion -ldirect + +QMAKE_INCDIR_OPENGL_ES2 += $$QMAKE_INCDIR_EGL +QMAKE_LIBDIR_OPENGL_ES2 += $$QMAKE_LIBDIR_EGL +QMAKE_LIBS_OPENGL_ES2 += $$QMAKE_LIBS_EGL + +QT_QPA_DEFAULT_PLATFORM = eglfs + +load(qt_config) + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qplatformdefs.h new file mode 100644 index 000000000..b2d14f7cd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qplatformdefs.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-snowball-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-snowball-g++/qmake.conf new file mode 100644 index 000000000..ff0f3ab1a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-snowball-g++/qmake.conf @@ -0,0 +1,34 @@ +# +# qmake configuration for ST Ericsson's Snowball +# http://wiki.qt.io/Snowball + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +load(device_config) + +defineTest(qtConfSanitizeMkspec) { + deviceSanityCheckCompiler() +} + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_LINK = $${QMAKE_CXX} +QMAKE_LINK_SHLIB = $${QMAKE_CXX} + +# modifications to linux.conf +QMAKE_AR = $${CROSS_COMPILE}ar cqs +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P +QMAKE_STRIP = $${CROSS_COMPILE}strip + +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-snowball-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-snowball-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-snowball-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-tegra2-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-tegra2-g++/qmake.conf new file mode 100644 index 000000000..3f6da7668 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-tegra2-g++/qmake.conf @@ -0,0 +1,30 @@ +# +# qmake configuration for the Tegra2 boards. +# +# This mkspec is based and tested on the TrimSlice using "Ubuntu Natty (11.04) - l4t.r15.01"-release. +# It might work with other boards and releases as well. +# A typical configure line looks like this: +# <path-to-qt-src>/configure -opensource -confirm-license -make libs -prefix /usr/local/Qt-5.0.0/Qt5-tegra2 +# -device tegra2 -device-option CROSS_COMPILE=<path-to-crosstoolchain>/bin/arm-none-linux-gnueabi- \ +# -sysroot <path-to-rootfs> + +include(../common/linux_device_pre.conf) + +QMAKE_INCDIR_POST += $$[QT_SYSROOT]/usr/include + +QMAKE_LIBDIR_POST += $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabi \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabi + +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabi \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabi + +TEGRA2_CFLAGS = -mtune=cortex-a9 -march=armv7-a -mhard-float -mfloat-abi=softfp -mfpu=vfpv3-d16 +QMAKE_CFLAGS += $$TEGRA2_CFLAGS +QMAKE_CXXFLAGS += $$TEGRA2_CFLAGS + +include(../common/linux_arm_device_post.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-tegra2-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-tegra2-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/devices/linux-tegra2-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/dummy/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/dummy/qmake.conf new file mode 100644 index 000000000..7077fe634 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/dummy/qmake.conf @@ -0,0 +1,8 @@ +# +# Minimal qmake configuration qt_configure.prf is run with. +# + +# Make spec_post.prf happy. +MAKEFILE_GENERATOR = DUMMY +QMAKE_PLATFORM = dummy_platform +QMAKE_COMPILER = dummy_compiler diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/android.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/android.prf new file mode 100644 index 000000000..1dc8f8731 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/android.prf @@ -0,0 +1,14 @@ +contains(TEMPLATE, ".*app") { + !android_app { + !contains(TARGET, ".so"): TARGET = lib$${TARGET}.so + QMAKE_LFLAGS += -Wl,-soname,$$shell_quote($$TARGET) + + android_install { + target.path=/libs/$$ANDROID_TARGET_ARCH/ + INSTALLS *= target + } + } +} else: contains(TEMPLATE, "lib"):!static:!QTDIR_build:android_install { + target.path = /libs/$$ANDROID_TARGET_ARCH/ + INSTALLS *= target +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/android_deployment_settings.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/android_deployment_settings.prf new file mode 100644 index 000000000..913ab7141 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/android_deployment_settings.prf @@ -0,0 +1,74 @@ +contains(TEMPLATE, ".*app"):!build_pass: { + + defineReplace(emitString) { + return("\"$$replace(1, \\\\, \\\\)\"") + } + + FILE_CONTENT = "{" + FILE_CONTENT += " \"description\": \"This file is generated by qmake to be read by androiddeployqt and should not be modified by hand.\"," + + FILE_CONTENT += " \"qt\": $$emitString($$[QT_INSTALL_PREFIX])," + + # Settings from mkspecs/environment + FILE_CONTENT += " \"sdk\": $$emitString($$ANDROID_SDK_ROOT)," + FILE_CONTENT += " \"sdkBuildToolsRevision\": $$emitString($$ANDROID_SDK_BUILD_TOOLS_REVISION)," + + isEmpty(NDK_ROOT): NDK_ROOT = $$(ANDROID_NDK_ROOT) + isEmpty(NDK_ROOT): NDK_ROOT = $$DEFAULT_ANDROID_NDK_ROOT + FILE_CONTENT += " \"ndk\": $$emitString($$NDK_ROOT)," + + 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, x86_64): NDK_TOOLCHAIN_PREFIX = x86_64 + else: equals(ANDROID_TARGET_ARCH, mips): NDK_TOOLCHAIN_PREFIX = mipsel-linux-android + else: equals(ANDROID_TARGET_ARCH, mips64): NDK_TOOLCHAIN_PREFIX = mips64el-linux-android + else: equals(ANDROID_TARGET_ARCH, arm64-v8a): NDK_TOOLCHAIN_PREFIX = aarch64-linux-android + else: NDK_TOOLCHAIN_PREFIX = arm-linux-androideabi + } + FILE_CONTENT += " \"toolchain-prefix\": $$emitString($$NDK_TOOLCHAIN_PREFIX)," + FILE_CONTENT += " \"tool-prefix\": $$emitString($$NDK_TOOLS_PREFIX)," + + NDK_TOOLCHAIN_VERSION = $$(ANDROID_NDK_TOOLCHAIN_VERSION) + isEmpty(NDK_TOOLCHAIN_VERSION): NDK_TOOLCHAIN_VERSION = $$DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION + FILE_CONTENT += " \"toolchain-version\": $$emitString($$NDK_TOOLCHAIN_VERSION)," + + NDK_HOST = $$(ANDROID_NDK_HOST) + isEmpty(NDK_HOST): NDK_HOST = $$DEFAULT_ANDROID_NDK_HOST + FILE_CONTENT += " \"ndk-host\": $$emitString($$NDK_HOST)," + + ANDROID_TARGET_ARCH = $$(ANDROID_TARGET_ARCH) + isEmpty(ANDROID_TARGET_ARCH): ANDROID_TARGET_ARCH = $$DEFAULT_ANDROID_TARGET_ARCH + FILE_CONTENT += " \"target-architecture\": $$emitString($$ANDROID_TARGET_ARCH)," + + # Explicitly set qt dependencies of application for deployment + !isEmpty(ANDROID_DEPLOYMENT_DEPENDENCIES): \ + FILE_CONTENT += " \"deployment-dependencies\": $$emitString($$join(ANDROID_DEPLOYMENT_DEPENDENCIES, ","))," + + # Explicitly set external dependencies of application for deployment + !isEmpty(ANDROID_EXTRA_PLUGINS): \ + FILE_CONTENT += " \"android-extra-plugins\": $$emitString($$join(ANDROID_EXTRA_PLUGINS, ","))," + + # Android-specific settings of Project + !isEmpty(ANDROID_PACKAGE_SOURCE_DIR): \ + FILE_CONTENT += " \"android-package-source-directory\": $$emitString($$ANDROID_PACKAGE_SOURCE_DIR)," + + !isEmpty(ANDROID_EXTRA_LIBS): \ + FILE_CONTENT += " \"android-extra-libs\": $$emitString($$join(ANDROID_EXTRA_LIBS, ","))," + + !isEmpty(QML_IMPORT_PATH): \ + FILE_CONTENT += " \"qml-import-paths\": $$emitString($$join(QML_IMPORT_PATH, ","))," + + isEmpty(QML_ROOT_PATH): \ + QML_ROOT_PATH = $$_PRO_FILE_PWD_ + FILE_CONTENT += " \"qml-root-path\": $$emitString($$QML_ROOT_PATH)," + FILE_CONTENT += " \"stdcpp-path\": $$emitString($$ANDROID_STDCPP_PATH)," + + FILE_CONTENT += " \"application-binary\": $$emitString($$absolute_path($$DESTDIR, $$OUT_PWD)/$$TARGET)" + FILE_CONTENT += "}" + + isEmpty(ANDROID_DEPLOYMENT_SETTINGS_FILE): ANDROID_DEPLOYMENT_SETTINGS_FILE = $$OUT_PWD/android-$$TARGET-deployment-settings.json + + write_file($$ANDROID_DEPLOYMENT_SETTINGS_FILE, FILE_CONTENT)|error() +} + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/resolve_target.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/resolve_target.prf new file mode 100644 index 000000000..25682cd89 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/resolve_target.prf @@ -0,0 +1,3 @@ +load(resolve_config) +load(android) +load(resolve_target) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/sdk.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/sdk.prf new file mode 100644 index 000000000..eee7ac2d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/android/sdk.prf @@ -0,0 +1,21 @@ +API_VERSION_TO_USE = $$(ANDROID_API_VERSION) +isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = $$API_VERSION +isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = android-16 + +ANDROID_JAR_FILE = $$ANDROID_SDK_ROOT/platforms/$$API_VERSION_TO_USE/android.jar +!exists($$ANDROID_JAR_FILE) { + ANDROID_API_VERSION = $$section(API_VERSION_TO_USE, -, 1, 1) # Get version number from android-XY to ensure numeric comparison + ANDROID_API_VERSIONS = $$files($$ANDROID_SDK_ROOT/platforms/*) + for (VERSION, ANDROID_API_VERSIONS) { + BASENAME = $$basename(VERSION) + BASENAME = $$section(BASENAME, -, 1, 1) + greaterThan(BASENAME, $$ANDROID_API_VERSION): ANDROID_API_VERSION = $$BASENAME + } + API_VERSION_TO_USE = android-$$ANDROID_API_VERSION + ANDROID_JAR_FILE = $$ANDROID_SDK_ROOT/platforms/$$API_VERSION_TO_USE/android.jar +} +!exists($$ANDROID_JAR_FILE) { + error("No suitable Android SDK platform found. Minimum version is $${API_VERSION_TO_USE}.") +} +JAVACLASSPATH += $$ANDROID_JAR_FILE + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/benchmark.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/benchmark.prf new file mode 100644 index 000000000..bfae92270 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/benchmark.prf @@ -0,0 +1 @@ +load(testcase) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/build_pass.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/build_pass.prf new file mode 100644 index 000000000..6547c9744 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/build_pass.prf @@ -0,0 +1 @@ +CONFIG += no_autoqmake diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/cmake_functions.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/cmake_functions.prf new file mode 100644 index 000000000..1e6b05c78 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/cmake_functions.prf @@ -0,0 +1,70 @@ +# +# 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. +# + +defineReplace(cmakeModuleName) { + _module = $$1 + _name = $$eval(QT.$${_module}.name) + cmake_module_name = $$replace(_name, ^Qt, ) + return ($$cmake_module_name) +} + +defineReplace(cmakeModuleList) { + variable = $$1 + out = + for(v, variable) { + out += $$cmakeModuleName($$v) + } + return ($$join(out, ";")) +} + +defineReplace(cmakeTargetPath) { + SYSR = $$[QT_SYSROOT] + !isEmpty(SYSR): path = /$$relative_path($$1, $$[QT_SYSROOT]) + else: path = $$1 + return($$clean_path($$path)) +} + +defineReplace(cmakeTargetPaths) { + variable = $$1 + out = + for(v, variable) { + out += \"$$cmakeTargetPath($$v)\" + } + return ($$join(out, " ")) +} + +defineReplace(cmakePortablePaths) { + variable = $$1 + out = + for(v, variable) { + out += $$[QT_SYSROOT]$$cmakeTargetPath($$v) + } + return ($$join(out, ";")) +} + +defineReplace(cmakeProcessLibs) { + variable = $$1 + out = + for(v, variable) { + if(!equals(v, -framework):!contains(v, -L.*)) { + v ~= s,^-l,, + v ~= s,^-lib,, + v ~= s,.lib$,, + out += $$v + } + } + return ($$join(out, ";")) +} + +defineReplace(cmakeRelativePath) { + path = $$relative_path($$1, $$2) + return($$replace(path, ([^/])$, \\1/)) +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/configure.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/configure.prf new file mode 100644 index 000000000..934a18a92 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/configure.prf @@ -0,0 +1,88 @@ +# Ensure that a cache is present. If none was found on startup, this will create +# one in the build directory of the project which loads this feature. +cache() + +load(configure_base) + +isEmpty(QMAKE_CONFIG_VERBOSE): QMAKE_CONFIG_VERBOSE = false + +QMAKE_CONFIG_LOG = $$dirname(_QMAKE_CACHE_)/config.log +recheck: write_file($$QMAKE_CONFIG_LOG, "") + +isEmpty(QMAKE_CONFIG_TESTS_DIR): QMAKE_CONFIG_TESTS_DIR = $$_PRO_FILE_PWD_/config.tests + +# Try to build the test project in $$QMAKE_CONFIG_TESTS_DIR/$$1 +# ($$_PRO_FILE_PWD_/config.tests/$$1 by default). +# +# If the test passes, config_$$1 will be added to CONFIG. +# The result is automatically cached. Use of cached results +# can be suppressed by passing CONFIG+=recheck to qmake. +# +# Returns: true iff the test passes +defineTest(qtCompileTest) { + positive = config_$$1 + done = done_config_$$1 + + $$done:!recheck { + $$positive:return(true) + return(false) + } + + log("Checking for $${1}... ") + msg = "executing config test $$1" + write_file($$QMAKE_CONFIG_LOG, msg, append) + + test_dir = $$QMAKE_CONFIG_TESTS_DIR/$$1 + test_out_dir = $$shadowed($$test_dir) + test_cmd_base = "$$QMAKE_CD $$system_quote($$system_path($$test_out_dir)) &&" + + # Disable qmake features which are typically counterproductive for tests + qmake_configs = "\"CONFIG -= qt debug_and_release app_bundle lib_bundle\"" + + # On WinRT we need to change the entry point as we cannot create windows + # applications + winrt { + qmake_configs += " \"QMAKE_LFLAGS+=/ENTRY:main\"" + } + + # Clean up after previous run + exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE distclean") + + mkpath($$test_out_dir)|error() + + !isEmpty (QMAKE_QTCONF): qtconfarg = -qtconf $$QMAKE_QTCONF + + qtRunLoggedCommand("$$test_cmd_base $$system_quote($$system_path($$QMAKE_QMAKE)) $$qtconfarg -spec $$QMAKESPEC $$qmake_configs $$shell_quote($$test_dir)") { + qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE") { + log("yes$$escape_expand(\\n)") + msg = "test $$1 succeeded" + write_file($$QMAKE_CONFIG_LOG, msg, append) + + !$$positive { + CONFIG += $$positive + cache(CONFIG, add, positive) + } + !$$done { + CONFIG += $$done + cache(CONFIG, add, done) + } + export(CONFIG) + return(true) + } + } + + log("no$$escape_expand(\\n)") + msg = "test $$1 FAILED" + write_file($$QMAKE_CONFIG_LOG, msg, append) + + $$positive { + CONFIG -= $$positive + cache(CONFIG, sub, positive) + } + !$$done { + CONFIG += $$done + cache(CONFIG, add, done) + } + export(CONFIG) + return(false) +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/configure_base.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/configure_base.prf new file mode 100644 index 000000000..e870e2ee1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/configure_base.prf @@ -0,0 +1,48 @@ +equals(QMAKE_HOST.os, Windows) { + SETENV_PFX = "set " + SETENV_SFX = "&" +} else { + SETENV_PFX = + SETENV_SFX = +} + +QMAKE_MAKE = $$(MAKE) +!isEmpty(QMAKE_MAKE) { + # We were called recursively. Use the same make. +} else: if(equals(MAKEFILE_GENERATOR, UNIX)|equals(MAKEFILE_GENERATOR, MINGW)) { + !equals(QMAKE_HOST.os, Windows): \ + QMAKE_MAKE = make + else: \ + QMAKE_MAKE = mingw32-make +} else: if(equals(MAKEFILE_GENERATOR, MSVC.NET)|equals(MAKEFILE_GENERATOR, MSBUILD)) { + QMAKE_MAKE = nmake +} else { + error("Configure tests are not supported with the $$MAKEFILE_GENERATOR Makefile generator.") +} +QMAKE_MAKE_NAME = $$basename(QMAKE_MAKE) +# Make sure we don't inherit MAKEFLAGS - -i in particular is fatal. +QMAKE_MAKE = "$${SETENV_PFX}MAKEFLAGS=$$SETENV_SFX $$QMAKE_MAKE" + +defineTest(qtLog) { + write_file($$QMAKE_CONFIG_LOG, 1, append) + $$QMAKE_CONFIG_VERBOSE: for (l, 1): log("$$l$$escape_expand(\\n)") +} + +defineTest(qtRunLoggedCommand) { + qtLog("+ $$1") + + !equals(3, false): \ + 1 = "( $$1 ) 2>&1" + output = $$system("$$1", lines, result) + lg = + for (l, output): \ + lg += "> $$l" + qtLog($$lg) + !isEmpty(2) { + $$2 = $$output + export($$2) + } + + !equals(result, 0): return(false) + return(true) +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/create_cmake.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/create_cmake.prf new file mode 100644 index 000000000..bb5083c92 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/create_cmake.prf @@ -0,0 +1,330 @@ +# +# 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. +# + +load(cmake_functions) + +# Several distros (ArchLinux, Fedora) have in the past installed libraries +# in /lib(64)?, but are now moving to install libraries in /usr/lib(64)?/. +# The /lib paths are made symlinks to the /usr/lib paths. If someone searching +# for a Qt 5 package finds it in /lib/cmake/Qt5Core, although it has been +# installed in /usr/lib/cmake/Qt5Core, relative paths to the includes and +# executables will not work. +# To work around this, we insert code into the generated config files to check +# at cmake time whether package has been found via a symlink, and correct +# that to an absolute path. This is only done for installations to +# the /usr or / prefix. +CMAKE_INSTALL_LIBS_DIR = $$cmakeTargetPath($$[QT_INSTALL_LIBS]) +contains(CMAKE_INSTALL_LIBS_DIR, ^(/usr)?/lib(64)?.*): CMAKE_USR_MOVE_WORKAROUND = $$CMAKE_INSTALL_LIBS_DIR + +CMAKE_OUT_DIR = $$MODULE_BASE_OUTDIR/lib/cmake + +CMAKE_MODULE_NAME = $$cmakeModuleName($${MODULE}) + +split_incpath { + CMAKE_ADD_SOURCE_INCLUDE_DIRS = true + CMAKE_NO_PRIVATE_INCLUDES = true # Don't add private includes in the build dir which don't exist + CMAKE_SOURCE_INCLUDES = \ + $$cmakeTargetPaths($$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt$${CMAKE_MODULE_NAME}) + CMAKE_SOURCE_PRIVATE_INCLUDES = \ + $$cmakeTargetPaths($$QT_MODULE_INCLUDE_BASE/Qt$${CMAKE_MODULE_NAME}/$$eval(QT.$${MODULE}.VERSION) \ + $$QT_MODULE_INCLUDE_BASE/Qt$${CMAKE_MODULE_NAME}/$$eval(QT.$${MODULE}.VERSION)/Qt$${CMAKE_MODULE_NAME}) + + cmake_extra_source_includes.input = $$PWD/data/cmake/ExtraSourceIncludes.cmake.in + cmake_extra_source_includes.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/ExtraSourceIncludes.cmake + + !build_pass:QMAKE_SUBSTITUTES += \ + cmake_extra_source_includes + + cmake_qt5_module_files.files = \ + $$cmake_extra_source_includes.output +} + +CMAKE_INCLUDE_DIR = $$cmakeRelativePath($$[QT_INSTALL_HEADERS], $$[QT_INSTALL_PREFIX]) +contains(CMAKE_INCLUDE_DIR, "^\\.\\./.*") { + CMAKE_INCLUDE_DIR = $$[QT_INSTALL_HEADERS]/ + CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True +} + +!exists($$first(QT.$${MODULE}_private.includes)): CMAKE_NO_PRIVATE_INCLUDES = true + +CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) +contains(CMAKE_LIB_DIR,"^\\.\\./.*") { + CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/ + CMAKE_LIB_DIR_IS_ABSOLUTE = True +} else { + CMAKE_RELATIVE_INSTALL_LIBS_DIR = $$cmakeRelativePath($$[QT_INSTALL_PREFIX], $$[QT_INSTALL_LIBS]) + # We need to go up another two levels because the CMake files are + # installed in $${CMAKE_LIB_DIR}/cmake/Qt5$${CMAKE_MODULE_NAME} + CMAKE_RELATIVE_INSTALL_DIR = "$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}../../" +} + +CMAKE_BIN_DIR = $$cmakeRelativePath($$[QT_HOST_BINS], $$[QT_INSTALL_PREFIX]) +contains(CMAKE_BIN_DIR, "^\\.\\./.*") { + CMAKE_BIN_DIR = $$[QT_HOST_BINS]/ + CMAKE_BIN_DIR_IS_ABSOLUTE = True +} + +CMAKE_PLUGIN_DIR = $$cmakeRelativePath($$[QT_INSTALL_PLUGINS], $$[QT_INSTALL_PREFIX]) +contains(CMAKE_PLUGIN_DIR, "^\\.\\./.*") { + CMAKE_PLUGIN_DIR = $$[QT_INSTALL_PLUGINS]/ + CMAKE_PLUGIN_DIR_IS_ABSOLUTE = True +} + +win32:!static:!staticlib { + CMAKE_DLL_DIR = $$cmakeRelativePath($$[QT_INSTALL_BINS], $$[QT_INSTALL_PREFIX]) + contains(CMAKE_DLL_DIR, "^\\.\\./.*") { + CMAKE_DLL_DIR = $$[QT_INSTALL_BINS]/ + CMAKE_DLL_DIR_IS_ABSOLUTE = True + } +} else { + CMAKE_DLL_DIR = $$CMAKE_LIB_DIR + CMAKE_DLL_DIR_IS_ABSOLUTE = $$CMAKE_LIB_DIR_IS_ABSOLUTE +} + +static|staticlib:CMAKE_STATIC_TYPE = true + +CMAKE_DEBUG_TYPE = +CMAKE_RELEASE_TYPE = + +# Requirements: +# * If Qt is configured with -debug, we're creating debug libraries and not +# release libraries, regardless of whether we're on a platform where +# debug_and_release is true. +# * If Qt is configured with -release, we're creating release libraries and not +# debug libraries, regardless of whether we're on a platform where +# debug_and_release is true. +# * If Qt is configured with neither -debug nor -release, and we are on a +# platform where debug_and_release is true, we're creating both +# debug and release libraries. +# * If Qt is configured with -debug on a platform where debug_and_release is +# true, and 'make release' is subsequently invoked, CMake is only aware of +# the debug libraries at build time. + +equals(QMAKE_HOST.os, Windows): CMAKE_BIN_SUFFIX = ".exe" +if(build_all|CONFIG(debug, debug|release)): CMAKE_DEBUG_TYPE = debug +if(build_all|CONFIG(release, debug|release)): CMAKE_RELEASE_TYPE = release + +contains(CONFIG, plugin) { + !isEmpty(PLUGIN_EXTENDS):!equals(PLUGIN_EXTENDS, -) { + count(PLUGIN_EXTENDS, 1, greaterThan): \ + error("Plugin declares to extend multiple modules. We don't handle that ...") + PLUGIN_MODULE_NAME = $$PLUGIN_EXTENDS + } else { + PLUGIN_MODULE_NAME = + for (mod, QT_MODULES) { + contains(QT.$${mod}.plugin_types, $$PLUGIN_TYPE) { + !isEmpty(PLUGIN_MODULE_NAME): \ + error("Multiple modules claim plugin type '$$PLUGIN_TYPE' ($$mod, in addition to $$PLUGIN_MODULE_NAME)") + PLUGIN_MODULE_NAME = $$mod + break() + } + } + isEmpty(PLUGIN_MODULE_NAME): error("No module claims plugin type '$$PLUGIN_TYPE'") + } + + CMAKE_MODULE_NAME = $$cmakeModuleName($$PLUGIN_MODULE_NAME) + + CMAKE_PLUGIN_NAME = $$PLUGIN_CLASS_NAME + + win32 { + isEmpty(CMAKE_STATIC_TYPE) { + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${TARGET}.dll + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${TARGET}d.dll + } else:mingw { + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}.a + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}d.a + } else { # MSVC static + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${TARGET}.lib + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${TARGET}d.lib + } + } else { + mac { + isEmpty(CMAKE_STATIC_TYPE): CMAKE_PlUGIN_EXT = .dylib + else: CMAKE_PlUGIN_EXT = .a + + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} + } else { + isEmpty(CMAKE_STATIC_TYPE): CMAKE_PlUGIN_EXT = .so + else: CMAKE_PlUGIN_EXT = .a + + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} + } + } + cmake_target_file.input = $$PWD/data/cmake/Qt5PluginTarget.cmake.in + cmake_target_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}_$${PLUGIN_CLASS_NAME}.cmake + + !build_pass:QMAKE_SUBSTITUTES += \ + cmake_target_file + + cmake_qt5_plugin_file.files = $$cmake_target_file.output + cmake_qt5_plugin_file.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} + INSTALLS += cmake_qt5_plugin_file + + return() +} + +CMAKE_MKSPEC = $$[QMAKE_XSPEC] + +sorted_deps = $$sort_depends(QT.$${MODULE}.depends, QT.) +mod_deps = +lib_deps = +aux_mod_deps = +aux_lib_deps = +# Until CMake 3.0 is the minimum requirement of Qt 5, we need to filter +# out header-only modules from dependencies. CMake 3.0 provides INTERFACE +# libraries which are equivalent to header-only modules. +for (dep, sorted_deps) { + cdep = $$cmakeModuleName($$dep) + !contains(QT.$${dep}.module_config, no_link) { + mod_deps += $$cdep + lib_deps += Qt5::$$cdep + } else { + aux_mod_deps += $$cdep + aux_lib_deps += Qt5::$$cdep + } +} +CMAKE_MODULE_DEPS = $$join(mod_deps, ";") +CMAKE_QT5_MODULE_DEPS = $$join(lib_deps, ";") +CMAKE_INTERFACE_MODULE_DEPS = $$join(aux_mod_deps, ";") +CMAKE_INTERFACE_QT5_MODULE_DEPS = $$join(aux_lib_deps, ";") + +CMAKE_QT_STEM = Qt$$QT_MAJOR_VERSION$${CMAKE_MODULE_NAME}$${QT_LIBINFIX} + +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 + + CMAKE_PRL_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}_debug.prl + CMAKE_PRL_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.prl + } else { + qt_framework { + CMAKE_LIB_FILE_LOCATION_DEBUG = Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}.framework/Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX} + CMAKE_LIB_FILE_LOCATION_RELEASE = Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}.framework/Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX} + CMAKE_BUILD_IS_FRAMEWORK = "true" + } else { + CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}_debug.$$eval(QT.$${MODULE}.VERSION).dylib + CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.$$eval(QT.$${MODULE}.VERSION).dylib + } + } +} else:win32 { + CMAKE_WINDOWS_BUILD = "true" + CMAKE_FIND_OTHER_LIBRARY_BUILD = "true" + + CMAKE_LIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.dll + CMAKE_LIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.dll + + mingw { + CMAKE_WINMAIN_FILE_LOCATION_DEBUG = libqtmain$${QT_LIBINFIX}d.a + CMAKE_WINMAIN_FILE_LOCATION_RELEASE = libqtmain$${QT_LIBINFIX}.a + + !isEmpty(CMAKE_STATIC_TYPE) { + CMAKE_STATIC_WINDOWS_BUILD = "true" + CMAKE_IMPLIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}d.a + CMAKE_IMPLIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a + + CMAKE_PRL_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}d.prl + CMAKE_PRL_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.prl + } else { + CMAKE_IMPLIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}d.a + CMAKE_IMPLIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a + } + } else { + CMAKE_WINMAIN_FILE_LOCATION_DEBUG = qtmain$${QT_LIBINFIX}d.lib + CMAKE_WINMAIN_FILE_LOCATION_RELEASE = qtmain$${QT_LIBINFIX}.lib + + !isEmpty(CMAKE_STATIC_TYPE) { + CMAKE_STATIC_WINDOWS_BUILD = "true" + CMAKE_IMPLIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.lib + CMAKE_IMPLIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.lib + + CMAKE_PRL_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.prl + CMAKE_PRL_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.prl + } else { + CMAKE_IMPLIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.lib + CMAKE_IMPLIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.lib + } + } +} else { + !isEmpty(CMAKE_STATIC_TYPE) { + CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.a + CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a + CMAKE_PRL_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.prl + CMAKE_PRL_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.prl + } else:unversioned_libname { + CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.so + CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.so + CMAKE_LIB_SONAME = lib$${CMAKE_QT_STEM}.so + } else { + CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.so.$$eval(QT.$${MODULE}.VERSION) + CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.so.$$eval(QT.$${MODULE}.VERSION) + CMAKE_LIB_SONAME = lib$${CMAKE_QT_STEM}.so.$$section(QT.$${MODULE}.VERSION, ., 0, 0) + } +} + +INSTALLS += cmake_qt5_module_files + +cmake_config_file.input = $$PWD/data/cmake/Qt5BasicConfig.cmake.in +cmake_config_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}Config.cmake + +CMAKE_PACKAGE_VERSION = $$eval(QT.$${MODULE}.VERSION) + +cmake_config_version_file.input = $$PWD/data/cmake/Qt5ConfigVersion.cmake.in +cmake_config_version_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}ConfigVersion.cmake + +!build_pass:QMAKE_SUBSTITUTES += \ + cmake_config_file \ + cmake_config_version_file + +cmake_qt5_module_files.files = \ + $$cmake_config_file.output \ + $$cmake_config_version_file.output + +cmake_extras_file.input = $$_PRO_FILE_PWD_/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake.in +exists($$cmake_extras_file.input) { + + CMAKE_MODULE_EXTRAS = "true" + cmake_extras_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake + + !build_pass:QMAKE_SUBSTITUTES += cmake_extras_file + + cmake_qt5_module_files.files += \ + $$cmake_extras_file.output +} + +cmake_macros_file.input = $$_PRO_FILE_PWD_/Qt5$${CMAKE_MODULE_NAME}Macros.cmake +exists($$cmake_macros_file.input) { + CMAKE_MODULE_MACROS = "true" + + cmake_macros_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}Macros.cmake + cmake_macros_file.CONFIG = verbatim + + !build_pass:QMAKE_SUBSTITUTES += cmake_macros_file + + cmake_qt5_module_files.files += $$cmake_macros_file.output +} + +cmake_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} + +# We are generating cmake files. Most developers of Qt are not aware of cmake, +# so we require automatic tests to be available. The only module which should +# set CMAKE_MODULE_TESTS to '-' is enginio because that is known to be broken. +# Other modules should either create proper tests in tests/auto/cmake or, as +# a temporary measure, disable the generation of cmake files +# with 'CONFIG -= create_cmake' +!equals(CMAKE_MODULE_TESTS, -) { + isEmpty(CMAKE_MODULE_TESTS): CMAKE_MODULE_TESTS = $$MODULE_BASE_INDIR/tests/auto/cmake + !exists($$CMAKE_MODULE_TESTS): \ + error("Missing CMake tests. Either create tests in tests/auto/cmake," \ + "or disable cmake config file creation with CONFIG-=create_cmake.") +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ctest_testcase.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ctest_testcase.prf new file mode 100644 index 000000000..3b7f3091c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ctest_testcase.prf @@ -0,0 +1,9 @@ + +CMAKE_TEST_LOCATION = $$_PRO_FILE_PWD_ + +for(d, $$list($$split($$list($$[QMAKE_MKSPECS]), $$DIRLIST_SEPARATOR))) { + CMAKE_PREFIX_PATH *= $$clean_path($$dirname(d)) +} +CMAKE_PREFIX_PATH=\"$$join(CMAKE_PREFIX_PATH, ;)\" + +include(ctest_testcase_common.prf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ctest_testcase_common.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ctest_testcase_common.prf new file mode 100644 index 000000000..adb9da1b6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ctest_testcase_common.prf @@ -0,0 +1,95 @@ + +CMAKE_VERSION = $$system(cmake --version 2>$$QMAKE_SYSTEM_NULL_DEVICE, lines) +CMAKE_VERSION = $$member(CMAKE_VERSION, 0, 0) + +check.commands = +QMAKE_EXTRA_TARGETS *= check + +isEmpty(CMAKE_VERSION) { + message("cmake executable not found. Not running CMake unit tests") + return() +} + +CTEST_VERSION = $$system(ctest --version 2>$$QMAKE_SYSTEM_NULL_DEVICE) +isEmpty(CTEST_VERSION) { + message("ctest executable not found. Not running CMake unit tests") + return() +} + +CMAKE_VERSION = $$last(CMAKE_VERSION) +CMAKE_VERSION_MAJOR = $$section(CMAKE_VERSION, ., 0, 0) +CMAKE_VERSION_MINOR = $$section(CMAKE_VERSION, ., 1, 1) +CMAKE_VERSION_PATCH = $$section(CMAKE_VERSION, ., 2, 2) +# CMake can report versions like 2.8.11-rc1, so strip off the rc part. +CMAKE_VERSION_PATCH ~= s,-.*,, + +VERSION_OK = +greaterThan(CMAKE_VERSION_MAJOR, 2) { + VERSION_OK = 1 +} else:greaterThan(CMAKE_VERSION_MAJOR, 1):greaterThan(CMAKE_VERSION_MINOR, 8) { + VERSION_OK = 1 +} else:greaterThan(CMAKE_VERSION_MAJOR, 1):greaterThan(CMAKE_VERSION_MINOR, 7):greaterThan(CMAKE_VERSION_PATCH, 2) { + VERSION_OK = 1 +} + +isEmpty(VERSION_OK) { + message("cmake $$CMAKE_VERSION is too old for this test.") + return() +} + +load(cmake_functions) + +CMAKE_BUILD_TYPE = Debug +CONFIG(release, debug|release):CMAKE_BUILD_TYPE = Release +win32: CMAKE_GENERATOR = -G \"NMake Makefiles\" +mingw:isEmpty(CROSS_COMPILE):CMAKE_GENERATOR = -G \"MinGW Makefiles\" + +BUILD_DIR = $$replace($$list($$OUT_PWD/build), /, $$QMAKE_DIR_SEP) + +!qtHaveModule(gui): CMAKE_MODULE_DEFINES += -DNO_GUI=True +!qtHaveModule(widgets): CMAKE_MODULE_DEFINES += -DNO_WIDGETS=True +!qtHaveModule(dbus): CMAKE_MODULE_DEFINES += -DNO_DBUS=True + +dependentmodules = $$resolve_depends(CMAKE_QT_MODULES_UNDER_TEST, "QT.") +dependentmodules -= $$CMAKE_QT_MODULES_UNDER_TEST + +mod_deps = +for (dep, dependentmodules): \ + !contains(QT.$${dep}.module_config, no_link): \ + mod_deps += $$cmakeModuleName($$dep) +dependentmodules = $$join(mod_deps, ";") + +QT_FOR_CONFIG += gui-private +qtConfig(angle): CMAKE_GL_DEFINES = -DQT_WITH_ANGLE=True +!qtConfig(egl): CMAKE_GL_DEFINES += -DNO_EGL=True + +CMAKE_MODULE_VERSIONS = +CMAKE_MODULES_UNDER_TEST = +for (MODULE_UNDER_TEST, CMAKE_QT_MODULES_UNDER_TEST) { + CMAKE_NAME = $$cmakeModuleName($$MODULE_UNDER_TEST) + ver = $$eval(QT.$${MODULE_UNDER_TEST}.VERSION) + CMAKE_MODULE_VERSIONS += \ + -DCMAKE_$${CMAKE_NAME}_MODULE_MAJOR_VERSION=$$section(ver, ., 0, 0) \ + -DCMAKE_$${CMAKE_NAME}_MODULE_MINOR_VERSION=$$section(ver, ., 1, 1) \ + -DCMAKE_$${CMAKE_NAME}_MODULE_PATCH_VERSION=$$section(ver, ., 2, 2) + CMAKE_MODULES_UNDER_TEST += $$CMAKE_NAME +} +CMAKE_MODULES_UNDER_TEST = $$join(CMAKE_MODULES_UNDER_TEST, ;) + +check.commands = \ + $(MKDIR) $$BUILD_DIR && $$QMAKE_CD $$BUILD_DIR && \ + cmake $$CMAKE_TEST_LOCATION $$CMAKE_GENERATOR \ + -DCMAKE_C_COMPILER=$$QMAKE_CC \ + -DCMAKE_CXX_COMPILER=$$QMAKE_CXX \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + $$CMAKE_MODULE_DEFINES \ + $$CMAKE_GL_DEFINES \ + -DCMAKE_BUILD_TYPE=$${CMAKE_BUILD_TYPE} \ + -DCMAKE_PREFIX_PATH=$$CMAKE_PREFIX_PATH \ + -DQt5_MODULE_TEST_DEPENDS=\"$${dependentmodules}\" \ + $${CMAKE_MODULE_VERSIONS} \ + -DCMAKE_MODULES_UNDER_TEST=\"$$CMAKE_MODULES_UNDER_TEST\" && \ + $(TESTRUNNER) ctest --output-on-failure + +insignificant_test:!isEmpty(check.commands): \ + check.commands = -$${check.commands} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ctest_testcase_installed.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ctest_testcase_installed.prf new file mode 100644 index 000000000..b54f32100 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ctest_testcase_installed.prf @@ -0,0 +1,10 @@ + +prefix_build { + CMAKE_TEST_LOCATION = $$_PRO_FILE_PWD_/../cmake + + CMAKE_PREFIX_PATH = $$[QT_INSTALL_PREFIX] + + CONFIG += insignificant_test + + include(ctest_testcase_common.prf) +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/android/dx.bat b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/android/dx.bat new file mode 100644 index 000000000..9816f9607 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/android/dx.bat @@ -0,0 +1,108 @@ +@echo off +REM Copyright (C) 2007 The Android Open Source Project +REM +REM Licensed under the Apache License, Version 2.0 (the "License"); +REM you may not use this file except in compliance with the License. +REM You may obtain a copy of the License at +REM +REM http://www.apache.org/licenses/LICENSE-2.0 +REM +REM Unless required by applicable law or agreed to in writing, software +REM distributed under the License is distributed on an "AS IS" BASIS, +REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +REM See the License for the specific language governing permissions and +REM limitations under the License. + +REM If/when Google merge: +REM https://android-review.googlesource.com/#/c/52680/ +REM this file will become redundant. + +REM don't modify the caller's environment +setlocal + +REM Locate dx.jar in the directory where dx.bat was found and start it. + +REM Set up prog to be the path of this script, including following symlinks, +REM and set up progdir to be the fully-qualified pathname of its directory. +set prog=%~f0 + +if [%1]==[] goto badArgs +set "dx_jar_path=%1" +shift /1 + +if [%1]==[] goto badArgs + +REM Use dpZ here to make it more like the Google version. +for %%F in ("%dx_jar_path%") do set dpZ=%%~dpF + +rem Check we have a valid Java.exe in the path. +set java_exe= +if exist "%dpZ%..\tools\lib\find_java.bat" call "%dpZ%..\tools\lib\find_java.bat" +if exist "%dpZ%..\..\tools\lib\find_java.bat" call "%dpZ%..\..\tools\lib\find_java.bat" + +if not defined java_exe goto :EOF + +set jarfile=dx.jar +set "frameworkdir=%dpZ%" +rem frameworkdir must not end with a dir sep. +set "frameworkdir=%frameworkdir:~0,-1%" + +if exist "%frameworkdir%\%jarfile%" goto JarFileOk + set "frameworkdir=%dpZ%lib" + +if exist "%frameworkdir%\%jarfile%" goto JarFileOk + set "frameworkdir=%dpZ%..\framework" + +:JarFileOk + +set "jarpath=%frameworkdir%\%jarfile%" + +set javaOpts= +set args= + +REM By default, give dx a max heap size of 1 gig and a stack size of 1meg. +rem This can be overridden by using "-JXmx..." and "-JXss..." options below. +set defaultXmx=-Xmx1024M +set defaultXss=-Xss1m + +REM Capture all arguments that are not -J options. +REM Note that when reading the input arguments with %1, the cmd.exe +REM automagically converts --name=value arguments into 2 arguments "--name" +REM followed by "value". Dx has been changed to know how to deal with that. +set params= + +:firstArg +if [%1]==[] goto endArgs +set a=%~1 + + if [%defaultXmx%]==[] goto notXmx + if %a:~0,5% NEQ -JXmx goto notXmx + set defaultXmx= + :notXmx + + if [%defaultXss%]==[] goto notXss + if %a:~0,5% NEQ -JXss goto notXss + set defaultXss= + :notXss + + if %a:~0,2% NEQ -J goto notJ + set javaOpts=%javaOpts% -%a:~2% + shift /1 + goto firstArg + + :notJ + set params=%params% %1 + shift /1 + goto firstArg + +:endArgs + +set javaOpts=%javaOpts% %defaultXmx% %defaultXss% +call "%java_exe%" %javaOpts% -Djava.ext.dirs="%frameworkdir%" -jar "%jarpath%" %params% + +goto :EOF + +:badArgs +echo Usage: dx (for Qt) ^<android_sdk_dx_jar_path^> ^<dx_arguments^> +echo Example: dx (for Qt) C:\android-sdk\build-tools\17.0.0\dx.jar --dex --output=target.jar .classes + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/ExtraSourceIncludes.cmake.in b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/ExtraSourceIncludes.cmake.in new file mode 100644 index 000000000..ec8075f3f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/ExtraSourceIncludes.cmake.in @@ -0,0 +1,7 @@ + +list(APPEND _Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS + $$CMAKE_SOURCE_INCLUDES +) +set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS + $$CMAKE_SOURCE_PRIVATE_INCLUDES +) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in new file mode 100644 index 000000000..55c74aad6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in @@ -0,0 +1,385 @@ + +!!IF !equals(TEMPLATE, aux) +if (CMAKE_VERSION VERSION_LESS 2.8.3) + message(FATAL_ERROR \"Qt 5 requires at least CMake version 2.8.3\") +endif() +!!ELSE +if (CMAKE_VERSION VERSION_LESS 3.0.0) + message(FATAL_ERROR \"Qt 5 $${CMAKE_MODULE_NAME} module requires at least CMake version 3.0.0\") +endif() +!!ENDIF + +!!IF !isEmpty(CMAKE_USR_MOVE_WORKAROUND) +!!IF !isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") +!!ELSE +get_filename_component(_IMPORT_PREFIX \"${CMAKE_CURRENT_LIST_FILE}\" PATH) +# Use original install prefix when loaded through a +# cross-prefix symbolic link such as /lib -> /usr/lib. +get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH) +get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5$${CMAKE_MODULE_NAME}\" REALPATH) +if(_realCurr STREQUAL _realOrig) + get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE) +else() + get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) +endif() +unset(_realOrig) +unset(_realCurr) +unset(_IMPORT_PREFIX) +!!ENDIF +!!ELIF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) +!!ELSE +set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") +!!ENDIF + +!!IF !equals(TEMPLATE, aux) +# For backwards compatibility only. Use Qt5$${CMAKE_MODULE_NAME}_VERSION instead. +set(Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING "$$eval(QT.$${MODULE}.VERSION)") + +set(Qt5$${CMAKE_MODULE_NAME}_LIBRARIES Qt5::$${CMAKE_MODULE_NAME}) +!!ENDIF // TEMPLATE != aux + +macro(_qt5_$${CMAKE_MODULE_NAME}_check_file_exists file) + if(NOT EXISTS \"${file}\" ) + message(FATAL_ERROR \"The imported target \\\"Qt5::$${CMAKE_MODULE_NAME}\\\" references the file + \\\"${file}\\\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \\\"${CMAKE_CURRENT_LIST_FILE}\\\" +but not all the files it references. +\") + endif() +endmacro() + +!!IF !equals(TEMPLATE, aux) +macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + +!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") +!!ELSE + set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") +!!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES + \"INTERFACE_LINK_LIBRARIES\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" + \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} +!!IF !isEmpty(CMAKE_LIB_SONAME) + \"IMPORTED_SONAME_${Configuration}\" \"$${CMAKE_LIB_SONAME}\" +!!ENDIF + # For backward compatibility with CMake < 2.8.12 + \"IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" + ) + +!!IF !isEmpty(CMAKE_WINDOWS_BUILD) +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") +!!ELSE + set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") +!!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_implib}) + if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\") + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES + \"IMPORTED_IMPLIB_${Configuration}\" ${imported_implib} + ) + endif() +!!ENDIF +endmacro() +!!ENDIF + +if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) + +!!IF !no_module_headers +!!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" + ) +!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" + ) +!!ELSE + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") +!!ENDIF +!!ELSE +!!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\") +!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\" + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\" + ) +!!ELSE + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") +!!ENDIF +!!ELSE + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR\" \"$${CMAKE_INCLUDE_DIR}Qt$${CMAKE_MODULE_NAME}\") +!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS + \"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\" + \"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\" + ) +!!ELSE + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") +!!ENDIF +!!ENDIF +!!ENDIF +!!IF !isEmpty(CMAKE_ADD_SOURCE_INCLUDE_DIRS) + include(\"${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake\" OPTIONAL) +!!ENDIF +!!ELSE + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"\") + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") +!!ENDIF + + foreach(_dir ${_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS}) + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${_dir}) + endforeach() + +!!IF isEmpty(CMAKE_BUILD_IS_FRAMEWORK) + # Only check existence of private includes if the Private component is + # specified. + list(FIND Qt5$${CMAKE_MODULE_NAME}_FIND_COMPONENTS Private _check_private) + if (NOT _check_private STREQUAL -1) + foreach(_dir ${Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS}) + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${_dir}) + endforeach() + endif() +!!ENDIF + +!!IF !equals(TEMPLATE, aux) + set(Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS ${_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS}) + + set(Qt5$${CMAKE_MODULE_NAME}_DEFINITIONS -D$${MODULE_DEFINE}) + set(Qt5$${CMAKE_MODULE_NAME}_COMPILE_DEFINITIONS $${MODULE_DEFINES}) +!!ENDIF // TEMPLATE != aux + set(_Qt5$${CMAKE_MODULE_NAME}_MODULE_DEPENDENCIES \"$${CMAKE_MODULE_DEPS}\") + +!!IF !isEmpty(CMAKE_INTERFACE_MODULE_DEPS) + if (NOT CMAKE_VERSION VERSION_LESS 3.0.0) + list(APPEND _Qt5$${CMAKE_MODULE_NAME}_MODULE_DEPENDENCIES \"$${CMAKE_INTERFACE_MODULE_DEPS}\") + endif() +!!ENDIF + + set(Qt5$${CMAKE_MODULE_NAME}_OWN_PRIVATE_INCLUDE_DIRS ${Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS}) + + set(_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_REQUIRED) + if (Qt5$${CMAKE_MODULE_NAME}_FIND_REQUIRED) + set(_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_REQUIRED REQUIRED) + endif() + set(_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_QUIET) + if (Qt5$${CMAKE_MODULE_NAME}_FIND_QUIETLY) + set(_Qt5$${CMAKE_MODULE_NAME}_DEPENDENCIES_FIND_QUIET QUIET) + endif() + set(_Qt5$${CMAKE_MODULE_NAME}_FIND_VERSION_EXACT) + if (Qt5$${CMAKE_MODULE_NAME}_FIND_VERSION_EXACT) + set(_Qt5$${CMAKE_MODULE_NAME}_FIND_VERSION_EXACT EXACT) + endif() + +!!IF !equals(TEMPLATE, aux) + set(Qt5$${CMAKE_MODULE_NAME}_EXECUTABLE_COMPILE_FLAGS \"\") +!!ENDIF // TEMPLATE != aux + + foreach(_module_dep ${_Qt5$${CMAKE_MODULE_NAME}_MODULE_DEPENDENCIES}) + if (NOT Qt5${_module_dep}_FOUND) + find_package(Qt5${_module_dep} + $$VERSION ${_Qt5$${CMAKE_MODULE_NAME}_FIND_VERSION_EXACT} + ${_Qt5$${CMAKE_MODULE_NAME}_DEPENDENCIES_FIND_QUIET} + ${_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_REQUIRED} + PATHS \"${CMAKE_CURRENT_LIST_DIR}/..\" NO_DEFAULT_PATH + ) + endif() + + if (NOT Qt5${_module_dep}_FOUND) + set(Qt5$${CMAKE_MODULE_NAME}_FOUND False) + return() + endif() + +!!IF !equals(TEMPLATE, aux) + list(APPEND Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS \"${Qt5${_module_dep}_INCLUDE_DIRS}\") + list(APPEND Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"${Qt5${_module_dep}_PRIVATE_INCLUDE_DIRS}\") + list(APPEND Qt5$${CMAKE_MODULE_NAME}_DEFINITIONS ${Qt5${_module_dep}_DEFINITIONS}) + list(APPEND Qt5$${CMAKE_MODULE_NAME}_COMPILE_DEFINITIONS ${Qt5${_module_dep}_COMPILE_DEFINITIONS}) + list(APPEND Qt5$${CMAKE_MODULE_NAME}_EXECUTABLE_COMPILE_FLAGS ${Qt5${_module_dep}_EXECUTABLE_COMPILE_FLAGS}) +!!ENDIF // TEMPLATE != aux + endforeach() +!!IF !equals(TEMPLATE, aux) + list(REMOVE_DUPLICATES Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS) + list(REMOVE_DUPLICATES Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS) + list(REMOVE_DUPLICATES Qt5$${CMAKE_MODULE_NAME}_DEFINITIONS) + list(REMOVE_DUPLICATES Qt5$${CMAKE_MODULE_NAME}_COMPILE_DEFINITIONS) + list(REMOVE_DUPLICATES Qt5$${CMAKE_MODULE_NAME}_EXECUTABLE_COMPILE_FLAGS) +!!ENDIF // TEMPLATE != aux + + set(_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES \"$${CMAKE_QT5_MODULE_DEPS}\") + +!!IF !isEmpty(CMAKE_INTERFACE_QT5_MODULE_DEPS) + if (NOT CMAKE_VERSION VERSION_LESS 3.0.0) + list(APPEND _Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES \"$${CMAKE_INTERFACE_QT5_MODULE_DEPS}\") + endif() +!!ENDIF + +!!IF !isEmpty(CMAKE_STATIC_TYPE) + add_library(Qt5::$${CMAKE_MODULE_NAME} STATIC IMPORTED) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY IMPORTED_LINK_INTERFACE_LANGUAGES "CXX") +!!ELSE +!!IF equals(TEMPLATE, aux) + add_library(Qt5::$${CMAKE_MODULE_NAME} INTERFACE IMPORTED) +!!ELSE + add_library(Qt5::$${CMAKE_MODULE_NAME} SHARED IMPORTED) +!!ENDIF +!!ENDIF +!!IF !equals(TEMPLATE, aux) +!!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY FRAMEWORK 1) +!!ENDIF +!!ENDIF // TEMPLATE != aux + + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY + INTERFACE_INCLUDE_DIRECTORIES ${_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS}) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY + INTERFACE_COMPILE_DEFINITIONS $${MODULE_DEFINES}) + + set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST TRUE) + foreach (_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIR ${Qt5$${CMAKE_MODULE_NAME}_OWN_PRIVATE_INCLUDE_DIRS}) + if (NOT EXISTS ${_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIR}) + set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST FALSE) + endif() + endforeach() + + if (_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST + AND NOT CMAKE_VERSION VERSION_LESS 3.0.0 ) + add_library(Qt5::$${CMAKE_MODULE_NAME}Private INTERFACE IMPORTED) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME}Private PROPERTY + INTERFACE_INCLUDE_DIRECTORIES ${Qt5$${CMAKE_MODULE_NAME}_OWN_PRIVATE_INCLUDE_DIRS} + ) + set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATEDEPS) + foreach(dep ${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}) + if (TARGET ${dep}Private) + list(APPEND _Qt5$${CMAKE_MODULE_NAME}_PRIVATEDEPS ${dep}Private) + endif() + endforeach() + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME}Private PROPERTY + INTERFACE_LINK_LIBRARIES Qt5::$${CMAKE_MODULE_NAME} ${_Qt5$${CMAKE_MODULE_NAME}_PRIVATEDEPS} + ) + endif() + +!!IF !equals(TEMPLATE, aux) +!!IF !isEmpty(CMAKE_RELEASE_TYPE) +!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) + _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" ) +!!ELSE + _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD + +!!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) +!!IF isEmpty(CMAKE_DEBUG_TYPE) +!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE + if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE + _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) +!!ELSE // CMAKE_STATIC_WINDOWS_BUILD + if (EXISTS +!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" +!!ELSE + \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" +!!ENDIF + AND EXISTS +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ELSE + \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ENDIF + _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD + endif() +!!ENDIF // CMAKE_DEBUG_TYPE +!!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD + +!!ENDIF // CMAKE_RELEASE_TYPE + +!!IF !isEmpty(CMAKE_DEBUG_TYPE) +!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) + _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) +!!ELSE + _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD + +!!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) +!!IF isEmpty(CMAKE_RELEASE_TYPE) +!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE + if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE + _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" ) +!!ELSE // CMAKE_STATIC_WINDOWS_BUILD + if (EXISTS +!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" +!!ELSE + \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" +!!ENDIF + AND EXISTS +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ELSE + \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ENDIF + _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD + endif() +!!ENDIF // CMAKE_RELEASE_TYPE +!!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD + +!!ENDIF // CMAKE_DEBUG_TYPE +!!ELSE // TEMPLATE != aux + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES + INTERFACE_LINK_LIBRARIES \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" + ) +!!ENDIF // TEMPLATE != aux + + file(GLOB pluginTargets \"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}_*Plugin.cmake\") + + macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION) + set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + +!!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") +!!ELSE + set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") +!!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) + set_target_properties(Qt5::${Plugin} PROPERTIES + \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} + ) + endmacro() + + if (pluginTargets) + foreach(pluginTarget ${pluginTargets}) + include(${pluginTarget}) + endforeach() + endif() + + +!!IF !isEmpty(CMAKE_MODULE_EXTRAS) + include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake\") +!!ENDIF + +!!IF !isEmpty(CMAKE_MODULE_MACROS) + include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}Macros.cmake\") +!!ENDIF + +_qt5_$${CMAKE_MODULE_NAME}_check_file_exists(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigVersion.cmake\") + +endif() diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/Qt5ConfigVersion.cmake.in b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/Qt5ConfigVersion.cmake.in new file mode 100644 index 000000000..7c42430e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/Qt5ConfigVersion.cmake.in @@ -0,0 +1,11 @@ + +set(PACKAGE_VERSION $$CMAKE_PACKAGE_VERSION) + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in new file mode 100644 index 000000000..5baf0fdb1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in @@ -0,0 +1,11 @@ + +add_library(Qt5::$$CMAKE_PLUGIN_NAME MODULE IMPORTED) + +!!IF !isEmpty(CMAKE_RELEASE_TYPE) +_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\") +!!ENDIF +!!IF !isEmpty(CMAKE_DEBUG_TYPE) +_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\") +!!ENDIF + +list(APPEND Qt5$${CMAKE_MODULE_NAME}_PLUGINS Qt5::$$CMAKE_PLUGIN_NAME) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/configure.json b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/configure.json new file mode 100644 index 000000000..167c502e8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/configure.json @@ -0,0 +1,21 @@ +{ + "files": { + }, + + "commandline": { + "options": { + "v": { "type": "enum", "name": "verbose", "values": { "yes": "true", "no": "false" } }, + "verbose": { "type": "enum", "values": { "yes": "true", "no": "false" } }, + + "continue": "void", + + "recheck": { "type": "optionalString", "name": "cache_recheck" }, + "recheck-all": { "type": "void", "name": "cache_use", "value": "none" }, + + "redo": { "type": "redo" }, + + "list-features": "void", + "list-libraries": "void" + } + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/dummy.cpp b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/dummy.cpp new file mode 100644 index 000000000..6bda7320e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/dummy.cpp @@ -0,0 +1,2 @@ +// Used when we need to compile with no source code +// (controls are in the command-line) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/mac/objc_namespace.sh b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/mac/objc_namespace.sh new file mode 100644 index 000000000..6ac004fe2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/mac/objc_namespace.sh @@ -0,0 +1,222 @@ +#!/bin/bash + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is the build configuration utility of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +script_argument_prefix="-Wobjc_namespace,--" + +required_arguments="target suffix original_ld" +optional_arguments="exclude_list exclude_regex slient" + +for argument in $required_arguments $optional_arguments; do + declare "$argument=" +done + +declare -i silent=0 +declare -a linker_arguments + +for i in "$@"; do + case $1 in + $script_argument_prefix*) + declare "${1#$script_argument_prefix}" + ;; + -o) + if [ -n "$2" ]; then + target="$2" + fi + linker_arguments+=("$1") + ;; + *) + linker_arguments+=("$1") + ;; + esac + shift +done + +get_entry() { + local map=$1 key=$2 + local i="${map}_map_${2}" + printf '%s' "${!i}" +} + +error() { + echo "$0: error: $*" >&2 + exit 1 +} + +for argument in $required_arguments; do + if [ -z "${!argument}" ]; then + error "missing argument --${argument}" + fi +done + +# Normalize suffix so we can use it as a bash variable +suffix=${suffix//[-. ]/_} + +link_binary() { + (PS4=; test $silent -ne 1 && set -x; $original_ld "${linker_arguments[@]}" "$@") 2>&1 || exit 1 +} + +sanitize_address() { + local address="$1" + address=${address#0x} # Remove hex prefix + address=${address: ${#address} < 8 ? 0 : -8} # Limit to 32-bit + echo "0x$address" +} + +read_binary() { + local address=$1 + local length=$2 + + dd if="$target" bs=1 iseek=$address count=$length 2>|/dev/null +} + +read_32bit_value() { + local address=$1 + read_binary $address 4 | xxd -p | dd conv=swab 2>/dev/null | rev +} + +inspect_binary() { + inspect_mode="$1" + + echo -n "🔎 Inspecting binary '$target', " + if [ ! -f "$target" ]; then + echo "target does not exist!" + exit 1 + fi + + read -a mach_header <<< "$(otool -h "$target" -v | tail -n 1)" + if [ "${mach_header[1]}" != "X86_64" ]; then + echo "binary is not 64-bit, only 64-bit binaries are supported!" + exit 1 + fi + + classnames_section="__objc_classname" + classnames=$(otool -v -s __TEXT $classnames_section "$target" | tail -n +3) + while read -a classname; do + address=$(sanitize_address ${classname[0]}) + name=${classname[1]} + + declare "address_to_classname_map_$address=$name" + declare "classname_to_address_map_$name=$address" + done <<< "$classnames" + + extra_classnames_file="$(mktemp -t ${classnames_section}_additions).S" + + if [ "$inspect_mode" == "inject_classnames" ]; then + echo "class names have not been namespaced, adding suffix '$suffix'..." + printf ".section __TEXT,$classnames_section,cstring_literals,no_dead_strip\n" > $extra_classnames_file + elif [ "$inspect_mode" == "patch_classes" ]; then + echo "found namespaced class names, updating class entries..." + fi + + classes=$(otool -o "$target" | grep class_ro_t) + while read -a class; do + address="$(sanitize_address ${class[1]})" + + class_flags="0x$(read_32bit_value $address)" + if [ -z "$class_flags" ]; then + echo " 💥 failed to read class flags for class at $address" + continue + fi + + is_metaclass=$(($class_flags & 0x1)) + + name_offset=$(($address + 24)) + classname_address="0x$(read_32bit_value $name_offset)" + if [ -z "$classname_address" ]; then + echo " 💥 failed to read class name address for class at $address" + continue + fi + + classname=$(get_entry address_to_classname $classname_address) + if [ -z "$classname" ]; then + echo " 💥 failed to resolve class name for address '$classname_address'" + continue + fi + + if [[ $exclude_list =~ $classname || $classname =~ $exclude_regex ]]; then + if [ $is_metaclass -eq 1 ]; then + class_type="meta class" + else + class_type="class" + fi + echo " 🚽 skipping excluded $class_type '$classname'" + continue + fi + + newclassname="${classname}_${suffix}" + + if [ "$inspect_mode" == "inject_classnames" ]; then + if [ $is_metaclass -eq 1 ]; then + continue + fi + + echo " 💉 injecting $classnames_section entry '$newclassname' for '$classname'" + printf ".asciz \"$newclassname\"\n" >> $extra_classnames_file + + elif [ "$inspect_mode" == "patch_classes" ]; then + newclassname_address=$(get_entry classname_to_address ${newclassname}) + if [ -z "$newclassname_address" ]; then + echo " 💥 failed to resolve class name address for class '$newclassname'" + continue + fi + + if [ $is_metaclass -eq 1 ]; then + class_type="meta" + else + class_type="class" + fi + + echo " 🔨 patching class_ro_t at $address ($class_type) from $classname_address ($classname) to $newclassname_address ($newclassname)" + echo ${newclassname_address: -8} | rev | dd conv=swab 2>/dev/null | xxd -p -r -seek $name_offset -l 4 - "$target" + fi + done <<< "$classes" +} + +echo "🔩 Linking binary using '$original_ld'..." +link_binary + +inspect_binary inject_classnames + +echo "🔩 Re-linking binary with extra __objc_classname section..." +link_binary $extra_classnames_file + +inspect_binary patch_classes + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/macros.cpp b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/macros.cpp new file mode 100644 index 000000000..9dcb8f091 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/macros.cpp @@ -0,0 +1,29 @@ +// Keep this file small. The pre-processed contents are eval'd by qmake. +QT_COMPILER_STDCXX = __cplusplus +#ifdef _MSC_VER +QMAKE_MSC_VER = _MSC_VER +QMAKE_MSC_FULL_VER = _MSC_FULL_VER +#endif +#ifdef __INTEL_COMPILER +QMAKE_ICC_VER = __INTEL_COMPILER +QMAKE_ICC_UPDATE_VER = __INTEL_COMPILER_UPDATE +#endif +#ifdef __APPLE_CC__ +QMAKE_APPLE_CC = __APPLE_CC__ +#endif +#ifdef __clang__ +#ifdef __APPLE_CC__ +QMAKE_APPLE_CLANG_MAJOR_VERSION = __clang_major__ +QMAKE_APPLE_CLANG_MINOR_VERSION = __clang_minor__ +QMAKE_APPLE_CLANG_PATCH_VERSION = __clang_patchlevel__ +#else +QMAKE_CLANG_MAJOR_VERSION = __clang_major__ +QMAKE_CLANG_MINOR_VERSION = __clang_minor__ +QMAKE_CLANG_PATCH_VERSION = __clang_patchlevel__ +#endif +#endif +#ifdef __GNUC__ +QMAKE_GCC_MAJOR_VERSION = __GNUC__ +QMAKE_GCC_MINOR_VERSION = __GNUC_MINOR__ +QMAKE_GCC_PATCH_VERSION = __GNUC_PATCHLEVEL__ +#endif diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/unix/findclasslist.pl b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/unix/findclasslist.pl new file mode 100644 index 000000000..b74b8b6a5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/data/unix/findclasslist.pl @@ -0,0 +1,64 @@ +#!/usr/bin/env perl +############################################################################# +## +## Copyright (C) 2016 Intel Corporation. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the build configuration tools of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +use strict; +my $syntax = "findclasslist.pl\n" . + "Replaces each \@FILE:filename\@ in stdin with the classes found in that file\n"; + +$\ = $/; +while (<STDIN>) { + chomp; + unless (/\@FILE:(.*)\@/) { + print; + next; + } + + # Replace this line with the class list + open HDR, "<$1" or die("Could not open header $1: $!"); + my $comment = " /* $1 */"; + while (my $line = <HDR>) { + # Match a struct or class declaration, but not a forward declaration + $line =~ /^(?:struct|class|namespace) (?:Q_.*_EXPORT)? (\w+)(?!;)/ or next; + print $comment if $comment; + printf " *%d%s*;\n", length $1, $1; + $comment = 0; + } + close HDR; +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/dbusadaptors.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/dbusadaptors.prf new file mode 100644 index 000000000..43134e2a3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/dbusadaptors.prf @@ -0,0 +1,4 @@ +dbus_type = adaptor +qdbusxml2cpp_option = -a + +include(dbuscommon.pri) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/dbuscommon.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/dbuscommon.pri new file mode 100644 index 000000000..cadcd46d6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/dbuscommon.pri @@ -0,0 +1,82 @@ +# +# 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. +# + +load(moc) +qtPrepareTool(QMAKE_QDBUSXML2CPP, qdbusxml2cpp) + +defineReplace(qdbusOutputBasename) { + return($$lower($$section($$list($$basename(1)),.,-2,-2))) +} + +dbus_TYPE = $$upper($$dbus_type) + +groups = +for(entry, DBUS_$${dbus_TYPE}S) { + + files = $$eval($${entry}.files) + isEmpty(files) { + files = $$entry + group = dbus_$${dbus_type} + } else { + group = $${entry}_dbus_$${dbus_type} + } + groups *= $$group + + input_list = $$upper($$group)_LIST + for(subent, $$list($$unique(files))) { + + !contains(subent, .*\\w\\.xml$) { + warning("Invalid D-BUS $${dbus_type}: '$$subent', please use 'com.mydomain.myinterface.xml' instead.") + next() + } + + $$input_list += $$subent + } +} + +for(group, groups) { + GROUP = $$upper($$group) + input_list = $${GROUP}_LIST + + # qmake does not keep empty elements in lists, so we reverse-engineer the short name + grp = $$replace(group, _?dbus_$${dbus_type}\$, ) + isEmpty(grp) { + hdr_flags = $$eval(QDBUSXML2CPP_$${dbus_TYPE}_HEADER_FLAGS) + src_flags = $$eval(QDBUSXML2CPP_$${dbus_TYPE}_SOURCE_FLAGS) + } else { + hdr_flags = $$eval($${grp}.header_flags) + src_flags = $$eval($${grp}.source_flags) + } + + $${group}_header.commands = $$QMAKE_QDBUSXML2CPP $$hdr_flags $$qdbusxml2cpp_option ${QMAKE_FILE_OUT}: ${QMAKE_FILE_IN} + $${group}_header.depends += $$QMAKE_QDBUSXML2CPP_EXE + $${group}_header.output = ${QMAKE_FUNC_FILE_IN_qdbusOutputBasename}_$${dbus_type}.h + $${group}_header.name = DBUSXML2CPP $${dbus_TYPE} HEADER ${QMAKE_FILE_IN} + $${group}_header.variable_out = $${GROUP}_HEADERS + $${group}_header.input = $$input_list + + $${group}_source.commands = $$QMAKE_QDBUSXML2CPP -i ${QMAKE_FILE_OUT_BASE}.h $$src_flags $$qdbusxml2cpp_option :${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + $${group}_source.depends += $$QMAKE_QDBUSXML2CPP_EXE + $${group}_source.output = ${QMAKE_FUNC_FILE_IN_qdbusOutputBasename}_$${dbus_type}.cpp + $${group}_source.name = DBUSXML2CPP $${dbus_TYPE} SOURCE ${QMAKE_FILE_IN} + $${group}_source.variable_out = SOURCES + $${group}_source.input = $$input_list + $${group}_source.depends += $$eval($${group}_header.output) # this actually belongs to the object file + + $${group}_moc.commands = $$moc_header.commands + $${group}_moc.depends += $$QMAKE_MOC_EXE + $${group}_moc.output = $$moc_header.output + $${group}_moc.input = $${GROUP}_HEADERS + $${group}_moc.variable_out = GENERATED_SOURCES + $${group}_moc.name = $${GROUP}_$$moc_header.name + + QMAKE_EXTRA_COMPILERS += $${group}_header $${group}_source $${group}_moc +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/dbusinterfaces.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/dbusinterfaces.prf new file mode 100644 index 000000000..910dace35 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/dbusinterfaces.prf @@ -0,0 +1,4 @@ +dbus_type = interface +qdbusxml2cpp_option = -p + +include(dbuscommon.pri) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/declarative_debug.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/declarative_debug.prf new file mode 100644 index 000000000..59e45f662 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/declarative_debug.prf @@ -0,0 +1 @@ +DEFINES += QT_DECLARATIVE_DEBUG diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/default_post.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/default_post.prf new file mode 100644 index 000000000..7e027325b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/default_post.prf @@ -0,0 +1,150 @@ +# This file is loaded by qmake right after loading the actual project file. + +contains(TEMPLATE, ".*(lib|app)"):CONFIG += have_target + +!have_target:!force_qt: CONFIG -= qt + +load(resolve_config) + +exclusive_builds: load(exclusive_builds_post) + +# If the TARGET looks like a path, split it into DESTDIR and the resulting TARGET +target_dir_part = $$dirname(TARGET) +!isEmpty(target_dir_part) { + isEmpty(DESTDIR): \ + DESTDIR = $$target_dir_part + else: \ + DESTDIR = $$DESTDIR/$$target_dir_part + + TARGET = $$basename(TARGET) + DESTDIR = $$clean_path($$DESTDIR) +} + +QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH) +!isEmpty(QT_BREAKPAD_ROOT_PATH): \ # quick test first whether requested ... + !static:release:have_target: \ # is it applicable? + !contains(TARGET, .*phony_target.*): \ # monster hack, you don't really see this here, right? ;) + system($$QT_BREAKPAD_ROOT_PATH/qtbreakpadsymbols --breakpad-exists) { # do we really have it? + CONFIG += breakpad force_debug_info + CONFIG -= no_debug_info separate_debug_info +} + +force_debug_info|debug: \ + CONFIG += debug_info + +force_debug_info { + QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO + QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO + QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO +} + +optimize_size { + !isEmpty(QMAKE_CFLAGS_OPTIMIZE):!isEmpty(QMAKE_CFLAGS_OPTIMIZE_SIZE) { + QMAKE_CFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE + QMAKE_CXXFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE + QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_SIZE + QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_SIZE + } +} else: optimize_full { + !isEmpty(QMAKE_CFLAGS_OPTIMIZE):!isEmpty(QMAKE_CFLAGS_OPTIMIZE_FULL) { + QMAKE_CFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE + QMAKE_CXXFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE + QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_FULL + QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_FULL + } +} + +optimize_debug { + QMAKE_CFLAGS_DEBUG += $$QMAKE_CFLAGS_OPTIMIZE_DEBUG + QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_OPTIMIZE_DEBUG +} + +debug { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_DEBUG + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_DEBUG + QMAKE_LFLAGS += $$QMAKE_LFLAGS_DEBUG + QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_DEBUG +} else { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_RELEASE + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RELEASE + QMAKE_LFLAGS += $$QMAKE_LFLAGS_RELEASE + QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_RELEASE +} + +stack_protector_strong { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_STACK_PROTECTOR_STRONG + QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_STACK_PROTECTOR_STRONG +} + +# disable special linker flags for host builds (no proper test for host support yet) +!host_build|!cross_compile { + use_gold_linker: QMAKE_LFLAGS += $$QMAKE_LFLAGS_USE_GOLD + enable_new_dtags: QMAKE_LFLAGS += $$QMAKE_LFLAGS_NEW_DTAGS +} + +dll:win32: QMAKE_LFLAGS += $$QMAKE_LFLAGS_DLL +static:mac: QMAKE_LFLAGS += $$QMAKE_LFLAGS_STATIC_LIB +staticlib:unix { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_STATIC_LIB + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STATIC_LIB +} + +incredibuild_xge { + CONFIG -= 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 +} + +breakpad { + load(resolve_target) + DEBUGFILENAME = $$shell_quote($$system_path($$QMAKE_RESOLVED_TARGET)) + PROJECTPATH = $$shell_quote($$system_path($$OUT_PWD)) + + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t) + QMAKE_POST_LINK = $$QMAKE_POST_LINK$$quote($${QT_BREAKPAD_ROOT_PATH}$${QMAKE_DIR_SEP}qtbreakpadsymbols $$DEBUGFILENAME $$PROJECTPATH) + !isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME) +} + +!c++11:!c++14:!c++1z { + # Qt requires C++11 since 5.7, check if we need to force a compiler option + QT_COMPILER_STDCXX_no_L = $$replace(QT_COMPILER_STDCXX, "L$", "") + !greaterThan(QT_COMPILER_STDCXX_no_L, 199711): CONFIG += c++11 +} +c++11|c++14|c++1z { + # Disable special compiler flags for host builds + !host_build|!cross_compile { + c++1z: cxxstd = CXX1Z + else: c++14: cxxstd = CXX14 + else: cxxstd = CXX11 + } else { + # Fall back to c++11, because since 5.7 c++11 is required everywhere, + # including host builds + cxxstd = CXX11 + } + + # Check if we should disable compiler extensions or not + isEmpty(QMAKE_CXXFLAGS_GNU$$cxxstd) { + strict_c++: QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STRICTCXX + } else { + !strict_c++: cxxstd = GNU$$cxxstd + } + + QMAKE_CXXFLAGS += $$eval(QMAKE_CXXFLAGS_$$cxxstd) + QMAKE_LFLAGS += $$eval(QMAKE_LFLAGS_$$cxxstd) + + unset(cxxstd) +} + +utf8_source { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_UTF8_SOURCE + QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_UTF8_SOURCE +} + +!precompile_header: SOURCES += $$NO_PCH_SOURCES diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/default_pre.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/default_pre.prf new file mode 100644 index 000000000..07a9b1c40 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/default_pre.prf @@ -0,0 +1,29 @@ +# This file is loaded by qmake right before each actual project file. +# Note that evaluating variable assignments from the command line +# still happens in between these two steps. + +# In early configure setup; nothing useful to be done here. +isEmpty(QMAKE_CXX): return() + +load(exclusive_builds) +CONFIG = \ + lex yacc debug exceptions depend_includepath \ + testcase_targets import_plugins import_qpa_plugin \ + $$CONFIG + +!build_pass:defined(QT_EDITION, var):!equals(QT_EDITION, "OpenSource"):!equals(QT_EDITION, "Preview") { + # + # call license checker (but cache result for one day) + # + today = $$section(_DATE_, " ", 0, 2) + !isEqual(QMAKE_LICHECK_TIMESTAMP, $$today) { + !system("$$system_quote($$system_path($$[QT_HOST_BINS/src]/$$QT_LICHECK)) check" \ + "$$QT_RELEASE_DATE $$[QMAKE_SPEC] $$[QMAKE_XSPEC]"): \ + error("License check failed! Giving up ...") + + cache(QMAKE_LICHECK_TIMESTAMP, set stash, today) + } + unset(today) +} + +load(toolchain) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/designer_defines.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/designer_defines.prf new file mode 100644 index 000000000..443f2d7dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/designer_defines.prf @@ -0,0 +1 @@ +plugin:DEFINES += QDESIGNER_EXPORT_WIDGETS diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/device_config.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/device_config.prf new file mode 100644 index 000000000..c15559e17 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/device_config.prf @@ -0,0 +1,12 @@ +# This file is loaded by some qmakespecs to get early configuration data. + +# Some of these qmakespecs can be used also in host mode, but they are not +# supposed to be influenced by -device-option then. +host_build: return() + +DEVICE_PRI = $$[QT_HOST_DATA/get]/mkspecs/qdevice.pri +exists($$DEVICE_PRI):include($$DEVICE_PRI) +unset(DEVICE_PRI) + +# this variable can be persisted via qmake -set CROSS_COMPILE /foo +isEmpty(CROSS_COMPILE): CROSS_COMPILE = $$[CROSS_COMPILE] diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/egl.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/egl.prf new file mode 100644 index 000000000..9fa0c9e21 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/egl.prf @@ -0,0 +1,8 @@ +INCLUDEPATH += $$QMAKE_INCDIR_EGL +LIBS_PRIVATE += $$QMAKE_LIBS_EGL +QMAKE_CFLAGS += $$QMAKE_CFLAGS_EGL +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_EGL +LIBS += $$QMAKE_LFLAGS_EGL +for(p, QMAKE_LIBDIR_EGL) { + LIBS_PRIVATE += -L$$p +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exceptions.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exceptions.prf new file mode 100644 index 000000000..ebfd5837c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exceptions.prf @@ -0,0 +1,6 @@ +CONFIG -= exceptions_off +QMAKE_CFLAGS *= $$QMAKE_CFLAGS_EXCEPTIONS_ON +QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_EXCEPTIONS_ON +QMAKE_LFLAGS *= $$QMAKE_LFLAGS_EXCEPTIONS_ON +DEFINES -= QT_NO_EXCEPTIONS + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exceptions_off.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exceptions_off.prf new file mode 100644 index 000000000..9c8a4043e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exceptions_off.prf @@ -0,0 +1,5 @@ +CONFIG -= exceptions +QMAKE_CFLAGS += $$QMAKE_CFLAGS_EXCEPTIONS_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_EXCEPTIONS_OFF +QMAKE_LFLAGS += $$QMAKE_LFLAGS_EXCEPTIONS_OFF +DEFINES += QT_NO_EXCEPTIONS diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exclusive_builds.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exclusive_builds.prf new file mode 100644 index 000000000..f40cc9917 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exclusive_builds.prf @@ -0,0 +1,42 @@ + +defineTest(addExclusiveBuildsProper) { + !$$1:!fix_output_dirs: \ + return(true) + + for(build, 2) { + isEmpty($${build}.name) { + $${build}.name = $$title($$build) + export($${build}.name) + } + isEmpty($${build}.target) { + $${build}.target = $$lower($$build) + export($${build}.target) + } + isEmpty($${build}.dir_affix) { + $${build}.dir_affix = $$lower($$build) + export($${build}.dir_affix) + } + + $${build}.exclusive = $$2 + export($${build}.exclusive) + + QMAKE_EXCLUSIVE_BUILDS += $$build + } + + CONFIG *= exclusive_builds + export(CONFIG) + + export(QMAKE_EXCLUSIVE_BUILDS) + return(true) +} + +defineTest(addExclusiveBuilds) { + lessThan(ARGC, 2): \ + error("addExclusiveBuilds() requires at least two arguments") + + addExclusiveBuildsProper($$join(ARGS, _and_), $$ARGS) +} + +# Default directories to process +QMAKE_DIR_REPLACE = OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR QGLTF_DIR DESTDIR +QMAKE_DIR_REPLACE_SANE += QGLTF_DIR diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exclusive_builds_post.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exclusive_builds_post.prf new file mode 100644 index 000000000..936085af0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/exclusive_builds_post.prf @@ -0,0 +1,160 @@ + +contains(TEMPLATE, subdirs) { + for(build, QMAKE_EXCLUSIVE_BUILDS) { + prepareRecursiveTarget($$build) + QMAKE_EXTRA_TARGETS += $$build + } +} else { + # Recursively combines a list of exclusive builds into combinations + # of non-exclusive builds (separated by a ':' character), eg the + # list [debug, release, static, shared] will result in the four + # combinations [debug:static, debug:shared, release:static, + # release:shared]. + defineReplace(combineExclusiveBuilds) { + permutationBuilds = $$1 + existingBuilds = $$2 + + isEmpty(permutationBuilds): \ + # Exit-condition, no more recursing + return($$existingBuilds) + + # Choose the first build of the permutations and use the set of exclusive + # builds associated with that build as the list of existing builds. This + # partitions the permutations into one set of exclusive builds + the rest + # of the unknown permutations. + newExistingBuilds = $$eval($$first(permutationBuilds).exclusive) + permutationBuilds -= $$newExistingBuilds + + # Recursively compute the combination of these two sets + recursiveCombination = $$combineExclusiveBuilds($$permutationBuilds, $$newExistingBuilds) + + isEmpty(existingBuilds): \ + # No need to combine further + return($$recursiveCombination) + + result = + for(existingBuild, existingBuilds) { + for(combination, recursiveCombination): \ + result += "$${existingBuild}:$${combination}" + } + return($$result) + } + + buildCombinations = $$combineExclusiveBuilds($$QMAKE_EXCLUSIVE_BUILDS) + + for(combination, buildCombinations) { + builds = $$split(combination, :) + key = + config = + target = + priority = + for(build, builds) { + key = $${key}$$eval($${build}.name) + config *= $$eval($${build}.CONFIG) $${build} $$eval($${build}.name)Build + target += $$eval($${build}.target) + + # If a build has been prioritized through CONFIG we prefer that + CONFIG($$build, $$join($${build}.exclusive, |)): \ + priority += 1 + } + + $${key}.name = $$key + $${key}.target = $$join(target, -) + $${key}.CONFIG = $$config + $${key}.builds = $$builds + + BUILDS.$$size(priority) += $$key + + # Add makefile targets for each exclusive build that will aggregate all targets + # that include the exclusive build. This matches the targets in the SUBDIR files + # so that you can recursivly build a single exclusive build. + !build_pass:count(builds, 1, >) { + for(build, builds) { + $${build}.depends += $$eval($${key}.target) + QMAKE_EXTRA_TARGETS *= $$build + } + } + } + + BUILDS = + priority = + for(ever) { + # Keep the order in BUILDS matching the priority from CONFIG, so that the first + # entry in BUILDS will be the first/default target when not CONFIG(build_all). + BUILDS = $$eval(BUILDS.$$size(priority)) $$BUILDS + count(BUILDS, $$size(buildCombinations), >=): break() + priority += 1 + } + + build_pass|fix_output_dirs { + !build_pass { + # The builds are sorted by priority based on the current config + # so choosing the first one gives us the most appropriate build. + BUILD_PASS = $$first(BUILDS) + } + + for(dir, QMAKE_DIR_REPLACE) { + + # Limit builds to ones that should affect the current $$dir + builds = + for(build, $${BUILD_PASS}.builds) { + equals(dir, DESTDIR) { + !$$join($${build}.exclusive, _and_)_target: \ + next() + } + + builds += $$build + } + + isEmpty(builds): \ + next() + + affixes = + for(build, builds): \ + affixes += $$eval($${build}.dir_affix) + full_dir_affix = $$join(affixes, -) + + isEmpty($$dir)|isEqual($$dir, .) { + # Use affix directly + $$dir = $$full_dir_affix + next() + } + + contains(QMAKE_DIR_REPLACE_SANE, $$dir) { + # Suffix output dir + $$dir = $$clean_path($$eval($$dir)/$$full_dir_affix) + } else { + # "Compatibility mode" with QTBUG-491 + for(build, builds) { + did_replace = false + build_affix = $$eval($${build}.dir_affix) + for(exclusive, $${build}.exclusive) { + equals(exclusive, $$build): \ + next() + + exclusive_affix = $$eval($${exclusive}.dir_affix) + contains($$dir, .*$${exclusive_affix}.*) { + $$dir ~= s/$${exclusive_affix}/$${build_affix}/gi + did_replace = true + } + } + $$did_replace: next() + + # Append (as subdir or as suffix) + !build_pass { + dir_affix = $$eval($${build}.dir_affix) + !contains($$dir, .*$${dir_affix}.*) { + contains($$dir, .*/$) { + # Subdir + $$dir = $$eval($$dir)$$dir_affix + } else { + # Suffix + $$dir = $$eval($$dir)-$${dir_affix} + } + } + } + } + } + } + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/file_copies.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/file_copies.prf new file mode 100644 index 000000000..58e07bd39 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/file_copies.prf @@ -0,0 +1,51 @@ +isEmpty(COPIES): return() +contains(TEMPLATE, .*subdirs): error("COPIES does not work with TEMPLATE=subdirs") + +build_pass:build_all:!isEqual(BUILD_PASS, $$first(BUILDS)) { + # Avoid that multiple build passes race with each other. + # This will fail to copy anything if the user explicitly invokes + # only the non-primary build. This is unfixable, as at qmake time + # we cannot possibly know how make will be invoked, yet we must + # predict it here. + return() +} + +defineReplace(qtStripProPwd) { + return($$relative_path($$1, $$_PRO_FILE_PWD_)) +} + +for (cp, COPIES) { + isEmpty($${cp}.files): next() + pfx = copy_$${cp} + notdir = false + dir = false + for (f, $${cp}.files) { + fil = $$absolute_path($$f, $$_PRO_FILE_PWD_) + tfiles = $$files($$fil/*) + isEmpty(tfiles): \ + notdir = true + else: \ + dir = true + $${pfx}.files += $$fil + } + $$dir:$$notdir: \ + error("COPIES entry $$cp lists both files and directories.") + path = $$eval($${cp}.path) + isEmpty(path): error("COPIES entry $$cp defines no .path") + base = $$eval($${cp}.base) + isEmpty(base) { + $${pfx}.output = $$path/${QMAKE_FILE_IN_NAME} + } else: isEqual(base, $$_PRO_FILE_PWD_) { + $${pfx}.output = $$path/${QMAKE_FUNC_FILE_IN_qtStripProPwd} + } else { + eval(defineReplace(qtStripSrcDir_$$cp) { \ + return(\$\$relative_path(\$\$1, $$val_escape(base))) \ + }) + $${pfx}.output = $$path/${QMAKE_FUNC_FILE_IN_qtStripSrcDir_$$cp} + } + $${pfx}.input = $${pfx}.files + $${pfx}.commands = $(QINSTALL) ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT} + $${pfx}.name = COPY ${QMAKE_FILE_IN} + $${pfx}.CONFIG = no_link no_clean target_predeps + QMAKE_EXTRA_COMPILERS += $${pfx} +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/gcov.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/gcov.prf new file mode 100644 index 000000000..f45ba4c52 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/gcov.prf @@ -0,0 +1,30 @@ +# +# Tested with gcov 4.8.1 +# http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Gcov.html + +# To instrument a Qt application or library with the gcov coverage +# tool, do `CONFIG+=gcov' in the application .pro file. +# +# To instrument Qt itself with gcov, use the `-gcov' configure +# option. + +# The .gcno file is generated when the source file is compiled. +# The .gcda file is generated when a program is executed. + +# Example how to generate the html output after you've run the program or test +# +# lcov --capture --directory . --output-file coverage-gcov.info --no-external +# lcov --output-file coverage-gcov.info --remove coverage-gcov.info '*.moc*' '.*rcc*' '*3rdparty*' +# genhtml coverage-gcov.info --output-directory doc/coverage + +# If you want to use gcov directly, you most likely need to manually move the .gcda and .gcno files +# along with the program. +# +# mv .obj/debug-shared/tst_example.gc* . +# gcov -b -c tst_example.cpp + +QMAKE_CFLAGS += -fprofile-arcs -ftest-coverage +QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage +QMAKE_LFLAGS += -fprofile-arcs -ftest-coverage + +QMAKE_CLEAN += $(OBJECTS_DIR)*.gcno and $(OBJECTS_DIR)*.gcda diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/include_source_dir.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/include_source_dir.prf new file mode 100644 index 000000000..8794998f4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/include_source_dir.prf @@ -0,0 +1 @@ +!equals(_PRO_FILE_PWD_, $$OUT_PWD):INCLUDEPATH *= . diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/incredibuild_xge.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/incredibuild_xge.prf new file mode 100644 index 000000000..75c7a9a75 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/incredibuild_xge.prf @@ -0,0 +1,8 @@ +contains(TEMPLATE, "vc.*") { + # The VCPROJ generator will replace the \r\h with the coded \r\n: + EOC = $$escape_expand(\\r\\h) + + for(xge, INCREDIBUILD_XGE) { + $${xge}.commands = Rem IncrediBuild_AllowRemote $$EOC Rem IncrediBuild_OutputFile $$system_path($${xge}.output) $$EOC $$eval($${xge}.commands) + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/java.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/java.prf new file mode 100644 index 000000000..852954e5c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/java.prf @@ -0,0 +1,65 @@ +TEMPLATE = lib +android { + load(sdk) + + # 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) { + bundled_jar_file: CLASS_DIR = .classes.bundled + else: 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 -Xlint:unchecked -bootclasspath $$ANDROID_JAR_FILE -cp $$shell_quote($$system_path($$join(JAVACLASSPATH, $$DIRLIST_SEPARATOR))) -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() + +# 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 distributable Android archives) or jar (for other java builds) +android:!bundled_jar_file { + contains(QMAKE_HOST.os, Windows) { + # The location where dx.bat expects itself to be found is used as the landmark instead + # of the base sdk folder. + # Doing it this way makes this logic more similar to the other platforms and + # also means that our dx.bat is more like Google's dx.bat + DEX_BAT = $$ANDROID_SDK_ROOT/platform-tools/dx.bat + !exists($$DEX_BAT): DEX_BAT = $$ANDROID_SDK_ROOT/build-tools/$$ANDROID_SDK_BUILD_TOOLS_REVISION/dx.bat + DEX_CMD = $$PWD/data/android/dx $$DEX_BAT + } else { + DEX_CMD = $$ANDROID_SDK_ROOT/platform-tools/dx + !exists($$DEX_CMD): DEX_CMD = $$ANDROID_SDK_ROOT/build-tools/$$ANDROID_SDK_BUILD_TOOLS_REVISION/dx + !exists($$DEX_CMD): error("The path $$DEX_CMD does not exist. Please set the environment variable ANDROID_BUILD_TOOLS_REVISION to the revision of the build tools installed in your Android SDK.") + } + QMAKE_LINK_SHLIB_CMD = $$DEX_CMD --dex --output $(TARGET) $$CLASS_DIR +} else { + QMAKE_LINK_SHLIB_CMD = jar cf $(TARGET) -C $$CLASS_DIR . +} + +# Force link step to always happen, since we are always updating the +# .class files +PRE_TARGETDEPS += FORCE diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/lex.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/lex.prf new file mode 100644 index 000000000..7d8325bed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/lex.prf @@ -0,0 +1,38 @@ +# +# Lex extra-compiler for handling files specified in the LEXSOURCES variable +# + +{ + lex.name = Lex ${QMAKE_FILE_IN} + lex.input = LEXSOURCES + lex.dependency_type = TYPE_C + lex_included { + lex.CONFIG += no_link + } else { + lex.variable_out = GENERATED_SOURCES + } + + isEmpty(QMAKE_LEXFLAGS_MANGLE):QMAKE_LEXFLAGS_MANGLE = -P${QMAKE_FILE_BASE} + QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS + !yacc_no_name_mangle:QMAKE_LEXEXTRAFLAGS += $$QMAKE_LEXFLAGS_MANGLE + + contains(QMAKE_LEX, .*flex) { + # GNU flex, we can use -o outfile + lex.commands = $$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS --nounistd -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + } else { + # stupid POSIX lex, it only generates a file called lex.yy.c + # or lex.prefix.c if the -P<prefix> option is active + intermediate_file = lex.yy.c + QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS $$QMAKE_LEXFLAGS_MANGLE + + lex.commands = \ + -$(DEL_FILE) ${QMAKE_FILE_OUT}$$escape_expand(\\n\\t) \ + $$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS ${QMAKE_FILE_IN}$$escape_expand(\\n\\t) \ + $(MOVE) $$intermediate_file ${QMAKE_FILE_OUT} $$escape_expand(\\n\\t) + unset(intermediate_file) + } + lex.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_LEX}$${first(QMAKE_EXT_CPP)} + + silent:lex.commands = @echo Lex ${QMAKE_FILE_IN} && $$lex.commands + QMAKE_EXTRA_COMPILERS += lex +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/link_ltcg.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/link_ltcg.prf new file mode 100644 index 000000000..4da061e1f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/link_ltcg.prf @@ -0,0 +1,26 @@ +gcc { + # on Windows, MinGW's support for -flto=N is broken + intel_icc { + QMAKE_LFLAGS_LTCG ~= s/-ipo/-ipo=$$QMAKE_HOST.cpu_count/ + } else: !clang:!equals(QMAKE_HOST.os, Windows):greaterThan(QMAKE_HOST.cpu_count, 1) { + # Override LTO number of jobs + QMAKE_LFLAGS_LTCG ~= s/^-flto$/-flto=$$QMAKE_HOST.cpu_count/ + } + + # When doing link-time code generation, we need to pass the compiler + # flags during linking the stage too. This file is processed after + # default_post.prf, so the QMAKE_CXXFLAGS already contains + # QMAKE_CXXFLAGS_DEBUG or _RELEASE. + use_c_linker { + # use_c_linker.prf is in effect, use the C flags + QMAKE_LFLAGS_LTCG += $$QMAKE_CFLAGS $$QMAKE_CFLAGS_LTCG + QMAKE_LFLAGS_APP += $$QMAKE_CFLAGS_APP + QMAKE_LFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB + QMAKE_LFLAGS_PLUGIN += $$QMAKE_CFLAGS_SHLIB + } else { + QMAKE_LFLAGS_LTCG = $$QMAKE_CXXFLAGS $$QMAKE_LFLAGS_LTCG + QMAKE_LFLAGS_APP += $$QMAKE_CXXFLAGS_APP + QMAKE_LFLAGS_SHLIB += $$QMAKE_CXXFLAGS_SHLIB + QMAKE_LFLAGS_PLUGIN += $$QMAKE_CFLAGS_SHLIB + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/link_pkgconfig.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/link_pkgconfig.prf new file mode 100644 index 000000000..44d1a4c04 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/link_pkgconfig.prf @@ -0,0 +1,32 @@ +PKG_CONFIG = $$pkgConfigExecutable() + +# qmake supports no empty list elements, so the outer loop is a bit arcane +pkgsfx = +for(ever) { + pkgvar = PKGCONFIG$$pkgsfx + libvar = LIBS$$pkgsfx + for(PKGCONFIG_LIB, $$list($$unique($$pkgvar))) { + # don't proceed if the .pro asks for a package we don't have! + !packagesExist($$PKGCONFIG_LIB): error("$$PKGCONFIG_LIB development package not found") + + PKGCONFIG_CFLAGS = $$system($$PKG_CONFIG --cflags $$PKGCONFIG_LIB) + + PKGCONFIG_INCLUDEPATH = $$find(PKGCONFIG_CFLAGS, ^-I.*) + PKGCONFIG_INCLUDEPATH ~= s/^-I(.*)/\\1/g + + PKGCONFIG_DEFINES = $$find(PKGCONFIG_CFLAGS, ^-D.*) + PKGCONFIG_DEFINES ~= s/^-D(.*)/\\1/g + + PKGCONFIG_CFLAGS ~= s/^-[ID].*//g + + INCLUDEPATH *= $$PKGCONFIG_INCLUDEPATH + DEFINES *= $$PKGCONFIG_DEFINES + + QMAKE_CXXFLAGS += $$PKGCONFIG_CFLAGS + QMAKE_CFLAGS += $$PKGCONFIG_CFLAGS + $$libvar += $$system($$PKG_CONFIG --libs $$PKGCONFIG_LIB) + } + !isEmpty(pkgsfx): break() + pkgsfx = _PRIVATE +} + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ltcg.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ltcg.prf new file mode 100644 index 000000000..ccf022627 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/ltcg.prf @@ -0,0 +1,34 @@ +CONFIG(release, debug|release) { + # We need fat object files when creating static libraries on some platforms + # so the linker will know to load a particular object from the library + # in the first place. On others, we have special ar and nm to create the symbol + # tables so the linker will know better. For other compilers, we disable LTCG + # for static libraries. + msvc { + # Nothing to do + } else { + !isEmpty(QMAKE_AR_LTCG): QMAKE_AR = $$QMAKE_AR_LTCG + !isEmpty(QMAKE_NM_LTCG): QMAKE_NM = $$QMAKE_NM_LTCG + + equals(QMAKE_RANLIB_LTCG, true): QMAKE_RANLIB = + else: !isEmpty(QMAKE_RANLIB_LTCG): QMAKE_RANLIB = $$QMAKE_RANLIB_LTCG + + static:isEmpty(QMAKE_AR_LTCG):isEmpty(QMAKE_RANLIB_LTCG) { + # We don't know how to create symbol tables for static libs with this + # compiler, so disable LTCG + QMAKE_CFLAGS_LTCG = + QMAKE_CXXFLAGS_LTCG = + QMAKE_LFLAGS_LTCG = + } + } + + fat-lto { + QMAKE_CFLAGS_LTCG += $$QMAKE_CFLAGS_LTCG_FATOBJECTS + QMAKE_CXXFLAGS_LTCG += $$QMAKE_CXXFLAGS_LTCG_FATOBJECTS + } + + load(link_ltcg) + QMAKE_CFLAGS *= $$QMAKE_CFLAGS_LTCG + QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_LTCG + QMAKE_LFLAGS *= $$QMAKE_LFLAGS_LTCG +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/asset_catalogs.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/asset_catalogs.prf new file mode 100644 index 000000000..123a0e0fc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/asset_catalogs.prf @@ -0,0 +1,124 @@ +# QMAKE_ASSET_CATALOGS +# Paths to xcassets directories to be compiled +# +# QMAKE_ASSET_CATALOGS_BUILD_PATH +# Location which asset catalogs will be compiled to. +# If the current target is an app bundle, defaults to its Resources directory. +# Otherwise, this value must be set manually. +# +# QMAKE_ASSET_CATALOGS_APP_ICON +# Name of the icon resource in the asset catalogs that will be used as the app icon. +# Defaults to AppIcon. +# +# QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE +# Name of the launch image resource in the asset catalogs that will be used as the launch image. +# +# QMAKE_ASSET_CATALOGS_INSTALL_PATH +# Base path to install files to. Falls back to a path relative to the target install path, +# based on QMAKE_ASSET_CATALOGS_BUILD_PATH. + +!have_target|if(!build_pass:!isEmpty(BUILDS)): \ + return() + +!isEmpty(QMAKE_ASSET_CATALOGS) { + load(resolve_target) + + isEmpty(QMAKE_ASSET_CATALOGS_BUILD_PATH) { + !isEmpty(QMAKE_RESOLVED_BUNDLE):equals(TEMPLATE, app):app_bundle { + macos: \ + QMAKE_ASSET_CATALOGS_BUILD_PATH = $$QMAKE_RESOLVED_BUNDLE/Contents/Resources + else: \ + QMAKE_ASSET_CATALOGS_BUILD_PATH = $$QMAKE_RESOLVED_BUNDLE + } else { + error("QMAKE_ASSET_CATALOGS_BUILD_PATH must be set when using QMAKE_ASSET_CATALOGS.") + } + } + + QMAKE_ASSET_CATALOGS_BUILD_PATH = $$clean_path($$QMAKE_ASSET_CATALOGS_BUILD_PATH) + + macx-xcode { + !isEmpty(QMAKE_ASSET_CATALOGS_APP_ICON) { + asset_catalog_appicon.name = "ASSETCATALOG_COMPILER_APPICON_NAME" + asset_catalog_appicon.value = $$QMAKE_ASSET_CATALOGS_APP_ICON + QMAKE_MAC_XCODE_SETTINGS += asset_catalog_appicon + } + + !isEmpty(QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE) { + asset_catalog_launchimage.name = "ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME" + asset_catalog_launchimage.value = $$QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE + QMAKE_MAC_XCODE_SETTINGS += asset_catalog_launchimage + } + + asset_catalog_compiler.files = $$QMAKE_ASSET_CATALOGS + macos: asset_catalog_compiler.path = Contents/Resources + QMAKE_BUNDLE_DATA += asset_catalog_compiler + } else { + !isEmpty(QMAKE_ASSET_CATALOGS_APP_ICON) { + asset_catalog_app_icon_arg = \ + --app-icon $$shell_quote($$QMAKE_ASSET_CATALOGS_APP_ICON) + } + + !isEmpty(QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE) { + asset_catalog_launch_image_arg = \ + --launch-image $$shell_quote($$QMAKE_ASSET_CATALOGS_LAUNCH_IMAGE) + } + + asset_catalog_compiler.target = $$OUT_PWD/asset_catalog_compiler.Info.plist + asset_catalog_compiler.commands = $$shell_quote($$QMAKE_ACTOOL) \ + $$asset_catalog_app_icon_arg \ + $$asset_catalog_launch_image_arg \ + --output-partial-info-plist $$shell_quote($$asset_catalog_compiler.target) \ + --platform $${version_identifier} \ + --minimum-deployment-target $${deployment_target} \ + --compile $$shell_quote($$QMAKE_ASSET_CATALOGS_BUILD_PATH) + + for (catalog, QMAKE_ASSET_CATALOGS) { + asset_catalog_compiler.commands += $${catalog} + asset_catalog_compiler.depends += $$files($$catalog/*, true) + } + + actool_output_files = $$system(\ + mkdir -p $$system_quote($$QMAKE_ASSET_CATALOGS_BUILD_PATH) && \ + /usr/libexec/PlistBuddy -c \'Print :com.apple.actool.compilation-results:output-files\' \ + /dev/stdin <<< $($${asset_catalog_compiler.commands} 2>/dev/null) | sed -Ene \'s/^ +//p\', lines) + + for (output_file, actool_output_files) { + !equals(output_file, $$asset_catalog_compiler.target): \ + actool_output_files_rel += $$relative_path($$output_file, $$QMAKE_ASSET_CATALOGS_BUILD_PATH) + } + + QMAKE_EXTRA_TARGETS += asset_catalog_compiler + PRE_TARGETDEPS += $$asset_catalog_compiler.target + + isEmpty(QMAKE_ASSET_CATALOGS_INSTALL_PATH) { + !isEmpty(target.path): \ + QMAKE_ASSET_CATALOGS_INSTALL_PATH = $${target.path}/ + QMAKE_ASSET_CATALOGS_INSTALL_PATH = $${QMAKE_ASSET_CATALOGS_INSTALL_PATH}$$relative_path(\ + $$QMAKE_ASSET_CATALOGS_BUILD_PATH, $$absolute_path($$DESTDIR, $$OUT_PWD)) + } + + for (ac_install_file, actool_output_files_rel) { + asset_catalogs_files.files += \ + $$QMAKE_ASSET_CATALOGS_BUILD_PATH/$$ac_install_file + } + contains(INSTALLS, target): asset_catalogs_files.depends += install_target + asset_catalogs_files.path = $$QMAKE_ASSET_CATALOGS_INSTALL_PATH + asset_catalogs_files.CONFIG += no_check_exist + INSTALLS += asset_catalogs_files + } +} else: macx-xcode { + # Backwards compatibility + for (bundle_data, QMAKE_BUNDLE_DATA) { + for (bundle_file, $${bundle_data}.files) { + !contains(bundle_file, .*\.xcassets$): next() + warning("*.xcassets in QMAKE_BUNDLE_DATA is deprecated. Use QMAKE_ASSET_CATALOGS instead.") + !exists($$absolute_path($$bundle_file/AppIcon.appiconset, $$_PRO_FILE_PWD_)): next() + + asset_catalog_appicon.name = "ASSETCATALOG_COMPILER_APPICON_NAME" + asset_catalog_appicon.value = "AppIcon" + QMAKE_MAC_XCODE_SETTINGS += asset_catalog_appicon + break() + } + !isEmpty(asset_catalog_appicon.name): break() + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/default_post.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/default_post.prf new file mode 100644 index 000000000..e645ba580 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/default_post.prf @@ -0,0 +1,189 @@ +load(default_post) + +!no_objective_c:CONFIG += objective_c + +qt { + qtConfig(static) { + # C++11 support means using libc++ instead of libstd++. As the + # two libraries are incompatible we need to ensure the end user + # project is built using the same C++11 support/no support as Qt. + qtConfig(c++11) { + CONFIG += c++11 + } else: c++11 { + warning("Qt was not built with C++11 enabled, disabling feature") + CONFIG -= c++11 + } + + !c++11 { + # Explicitly use libstdc++ if C++11 support is not enabled, + # as otherwise the compiler will choose the standard library + # based on the deployment target, which for iOS 7 and OS X 10.9 + # is libc++, and we can't mix and match the two. + QMAKE_CXXFLAGS += -stdlib=libstdc++ + QMAKE_LFLAGS += -stdlib=libstdc++ + } + } +} + +# Add the same default rpaths as Xcode does for new projects. +# This is especially important for iOS/tvOS/watchOS where no other option is possible. +!no_default_rpath { + QMAKE_RPATHDIR += @executable_path/Frameworks + equals(TEMPLATE, lib):!plugin:lib_bundle: QMAKE_RPATHDIR += @loader_path/Frameworks +} + +# Don't pass -headerpad_max_install_names when using Bitcode. +# In that case the linker emits a warning stating that the flag is ignored when +# used with bitcode, for reasons that cannot be determined (rdar://problem/20748962). +# Using this flag is also unnecessary in practice on UIKit platforms since they +# are sandboxed, and only UIKit platforms support bitcode to begin with. +!bitcode: QMAKE_LFLAGS += $$QMAKE_LFLAGS_HEADERPAD + +app_extension_api_only { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION + QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION + QMAKE_CXXFLAGS_PRECOMPILE += $$QMAKE_CFLAGS_APPLICATION_EXTENSION + QMAKE_LFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION +} + +macx-xcode { + !isEmpty(QMAKE_XCODE_DEBUG_INFORMATION_FORMAT) { + debug_information_format.name = DEBUG_INFORMATION_FORMAT + debug_information_format.value = $$QMAKE_XCODE_DEBUG_INFORMATION_FORMAT + debug_information_format.build = debug + QMAKE_MAC_XCODE_SETTINGS += debug_information_format + } + + QMAKE_XCODE_ARCHS = + + arch_device.name = "ARCHS[sdk=$${device.sdk}*]" + arch_device.value = $$QMAKE_APPLE_DEVICE_ARCHS + QMAKE_XCODE_ARCHS += $$QMAKE_APPLE_DEVICE_ARCHS + QMAKE_MAC_XCODE_SETTINGS += arch_device + + simulator { + arch_simulator.name = "ARCHS[sdk=$${simulator.sdk}*]" + arch_simulator.value = $$QMAKE_APPLE_SIMULATOR_ARCHS + QMAKE_XCODE_ARCHS += $$QMAKE_APPLE_SIMULATOR_ARCHS + QMAKE_MAC_XCODE_SETTINGS += arch_simulator + } + + only_active_arch.name = ONLY_ACTIVE_ARCH + only_active_arch.value = YES + only_active_arch.build = debug + QMAKE_MAC_XCODE_SETTINGS += only_active_arch +} else { + device|!simulator: VALID_DEVICE_ARCHS = $$QMAKE_APPLE_DEVICE_ARCHS + simulator: VALID_SIMULATOR_ARCHS = $$QMAKE_APPLE_SIMULATOR_ARCHS + VALID_ARCHS = $$VALID_DEVICE_ARCHS $$VALID_SIMULATOR_ARCHS + + isEmpty(VALID_ARCHS): \ + error("QMAKE_APPLE_DEVICE_ARCHS or QMAKE_APPLE_SIMULATOR_ARCHS must contain at least one architecture") + + single_arch: VALID_ARCHS = $$first(VALID_ARCHS) + + ACTIVE_ARCHS = $(filter $(EXPORT_VALID_ARCHS), $(ARCHS)) + ARCH_ARGS = $(foreach arch, $(if $(EXPORT_ACTIVE_ARCHS), $(EXPORT_ACTIVE_ARCHS), $(EXPORT_VALID_ARCHS)), -arch $(arch)) + + QMAKE_EXTRA_VARIABLES += VALID_ARCHS ACTIVE_ARCHS ARCH_ARGS + + arch_flags = $(EXPORT_ARCH_ARGS) + + QMAKE_CFLAGS += $$arch_flags + QMAKE_CXXFLAGS += $$arch_flags + QMAKE_LFLAGS += $$arch_flags + + QMAKE_PCH_ARCHS = $$VALID_ARCHS + + macos: deployment_target = $$QMAKE_MACOSX_DEPLOYMENT_TARGET + ios: deployment_target = $$QMAKE_IOS_DEPLOYMENT_TARGET + tvos: deployment_target = $$QMAKE_TVOS_DEPLOYMENT_TARGET + watchos: deployment_target = $$QMAKE_WATCHOS_DEPLOYMENT_TARGET + + # If we're doing a simulator and device build, device and simulator + # architectures use different paths and flags for the sysroot and + # deployment target switch, so we must multiplex them across multiple + # architectures using -Xarch. Otherwise we fall back to the simple path. + # This is not strictly necessary, but results in cleaner command lines + # and makes it easier for people to override EXPORT_VALID_ARCHS to limit + # individual rules to a different set of architecture(s) from the overall + # build (such as machtest in QtCore). + simulator:device { + QMAKE_XARCH_CFLAGS = + QMAKE_XARCH_LFLAGS = + QMAKE_EXTRA_VARIABLES += QMAKE_XARCH_CFLAGS QMAKE_XARCH_LFLAGS + + for (arch, VALID_ARCHS) { + contains(VALID_SIMULATOR_ARCHS, $$arch) { + sdk = $$simulator.sdk + version_identifier = $$simulator.deployment_identifier + } else { + sdk = $$device.sdk + version_identifier = $$device.deployment_identifier + } + + version_min_flags = \ + -Xarch_$${arch} \ + -m$${version_identifier}-version-min=$$deployment_target + QMAKE_XARCH_CFLAGS_$${arch} = $$version_min_flags \ + -Xarch_$${arch} \ + -isysroot$$xcodeSDKInfo(Path, $$sdk) + QMAKE_XARCH_LFLAGS_$${arch} = $$version_min_flags \ + -Xarch_$${arch} \ + -Wl,-syslibroot,$$xcodeSDKInfo(Path, $$sdk) + + QMAKE_XARCH_CFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS_$${arch}) + QMAKE_XARCH_LFLAGS += $(EXPORT_QMAKE_XARCH_LFLAGS_$${arch}) + + QMAKE_EXTRA_VARIABLES += \ + QMAKE_XARCH_CFLAGS_$${arch} \ + QMAKE_XARCH_LFLAGS_$${arch} + } + + QMAKE_CFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS) + QMAKE_CXXFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS) + QMAKE_LFLAGS += $(EXPORT_QMAKE_XARCH_LFLAGS) + } else { + simulator: \ + version_identifier = $$simulator.deployment_identifier + else: \ + version_identifier = $$device.deployment_identifier + version_min_flag = -m$${version_identifier}-version-min=$$deployment_target + QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH $$version_min_flag + QMAKE_CXXFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH $$version_min_flag + QMAKE_LFLAGS += -Wl,-syslibroot,$$QMAKE_MAC_SDK_PATH $$version_min_flag + } + + # Enable precompiled headers for multiple architectures + QMAKE_CFLAGS_USE_PRECOMPILE = + for (arch, VALID_ARCHS) { + icc_pch_style: \ + use_flag = "-pch-use " + else: \ + use_flag = -include + + # Only use Xarch with multi-arch, as the option confuses ccache + count(VALID_ARCHS, 1, greaterThan): \ + QMAKE_CFLAGS_USE_PRECOMPILE += \ + -Xarch_$${arch} + + QMAKE_CFLAGS_USE_PRECOMPILE += \ + $${use_flag}${QMAKE_PCH_OUTPUT_$${arch}} + } + icc_pch_style { + QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE -include ${QMAKE_PCH_INPUT} + QMAKE_CFLAGS_USE_PRECOMPILE = + } else { + QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + } + + QMAKE_PCH_OUTPUT_EXT = _${QMAKE_PCH_ARCH}$${QMAKE_PCH_OUTPUT_EXT} +} + +cache(QMAKE_XCODE_DEVELOPER_PATH, stash) +!isEmpty(QMAKE_XCODE_VERSION): \ + cache(QMAKE_XCODE_VERSION, stash) + +QMAKE_XCODE_LIBRARY_SUFFIX = $$qtPlatformTargetSuffix() diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/default_pre.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/default_pre.prf new file mode 100644 index 000000000..44636f228 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/default_pre.prf @@ -0,0 +1,56 @@ +CONFIG = asset_catalogs rez $$CONFIG +load(default_pre) + +isEmpty(QMAKE_XCODE_DEVELOPER_PATH) { + # Get path of Xcode's Developer directory + QMAKE_XCODE_DEVELOPER_PATH = $$system("/usr/bin/xcode-select --print-path 2>/dev/null") + 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.") +} + +isEmpty(QMAKE_XCODEBUILD_PATH): \ + QMAKE_XCODEBUILD_PATH = $$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null") + +!isEmpty(QMAKE_XCODEBUILD_PATH) { + # Make sure Xcode is set up properly + !system("/usr/bin/xcrun xcodebuild -license check 2>/dev/null"): \ + error("Xcode not set up properly. You need to confirm the license agreement by running 'sudo xcrun xcodebuild -license accept'.") + + isEmpty(QMAKE_XCODE_VERSION) { + # Extract Xcode version using xcodebuild + xcode_version = $$system("/usr/bin/xcrun xcodebuild -version") + QMAKE_XCODE_VERSION = $$member(xcode_version, 1) + isEmpty(QMAKE_XCODE_VERSION): error("Could not resolve Xcode version.") + unset(xcode_version) + } +} + +isEmpty(QMAKE_TARGET_BUNDLE_PREFIX) { + QMAKE_XCODE_PREFERENCES_FILE = $$(HOME)/Library/Preferences/com.apple.dt.Xcode.plist + exists($$QMAKE_XCODE_PREFERENCES_FILE): \ + QMAKE_TARGET_BUNDLE_PREFIX = $$system("/usr/libexec/PlistBuddy -c 'print IDETemplateOptions:bundleIdentifierPrefix' $$QMAKE_XCODE_PREFERENCES_FILE 2>/dev/null") + + !isEmpty(_QMAKE_CACHE_):!isEmpty(QMAKE_TARGET_BUNDLE_PREFIX): \ + cache(QMAKE_TARGET_BUNDLE_PREFIX) +} + +QMAKE_ASSET_CATALOGS_APP_ICON = AppIcon + +# Make the default debug info format for static debug builds +# DWARF instead of DWARF with dSYM. This cuts down build times +# for application debug builds significantly, as Xcode doesn't +# have to pull out all the DWARF info from the Qt static libs +# and put it into a dSYM file. We don't need that dSYM file in +# the first place, since the information is available in the +# object files inside the archives (static libraries). +macx-xcode:qtConfig(static): \ + QMAKE_XCODE_DEBUG_INFORMATION_FORMAT = dwarf + +# This variable is used by the xcode_dynamic_library_suffix +# feature, which allows Xcode to choose the Qt libraries to link to +# at build time, depending on the current Xcode SDK and configuration. +QMAKE_XCODE_LIBRARY_SUFFIX_SETTING = QT_LIBRARY_SUFFIX diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/objective_c.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/objective_c.prf new file mode 100644 index 000000000..ed1ad8ad3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/objective_c.prf @@ -0,0 +1,12 @@ + +# Objective-C/C++ sources go in SOURCES, like all other sources +SOURCES += $$OBJECTIVE_SOURCES +unset(OBJECTIVE_SOURCES) + +# Strip C/C++ flags from QMAKE_OBJECTIVE_CFLAGS just in case +QMAKE_OBJECTIVE_CFLAGS -= $$QMAKE_CFLAGS $$QMAKE_CXXFLAGS + +# Add Objective-C/C++ flags to C/C++ flags, the compiler can handle it +QMAKE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS +QMAKE_CXXFLAGS += $$QMAKE_OBJECTIVE_CFLAGS +unset(QMAKE_OBJECTIVE_CFLAGS) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/rez.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/rez.prf new file mode 100644 index 000000000..3defd8685 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/rez.prf @@ -0,0 +1,16 @@ + +#global defaults +isEmpty(QMAKE_REZ) { + QMAKE_REZ = /Developer/Tools/Rez +} +isEmpty(REZ_DIR):REZ_DIR = . +isEmpty(QMAKE_EXT_REZ):QMAKE_EXT_REZ = .rsrc + +rez_source.CONFIG += no_link +rez_source.dependency_type = TYPE_C +rez_source.commands = $$QMAKE_REZ ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} -useDF +rez_source.output = $$REZ_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_REZ)} +rez_source.input = REZ_FILES +rez_source.name = REZ ${QMAKE_FILE_IN} +silent:rez_source.commands = @echo rez ${QMAKE_FILE_IN} && $$rez_source.commands +QMAKE_EXTRA_COMPILERS += rez_source diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/sdk.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/sdk.prf new file mode 100644 index 000000000..3f6dc076c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/sdk.prf @@ -0,0 +1,58 @@ + +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)") + +defineReplace(xcodeSDKInfo) { + info = $$1 + equals(info, "Path"): \ + info = --show-sdk-path + equals(info, "PlatformPath"): \ + info = --show-sdk-platform-path + equals(info, "SDKVersion"): \ + info = --show-sdk-version + sdk = $$2 + isEmpty(sdk): \ + sdk = $$QMAKE_MAC_SDK + + isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}) { + QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("/usr/bin/xcrun --sdk $$sdk $$info 2>/dev/null") + # --show-sdk-platform-path won't work for Command Line Tools; this is fine + # only used by the XCTest backend to testlib + isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}):if(!isEmpty(QMAKE_XCODEBUILD_PATH)|!equals(info, "--show-sdk-platform-path")): \ + error("Could not resolve SDK $$info for \'$$sdk\'") + cache(QMAKE_MAC_SDK.$${sdk}.$${info}, set stash, QMAKE_MAC_SDK.$${sdk}.$${info}) + } + + return($$eval(QMAKE_MAC_SDK.$${sdk}.$${info})) +} + +QMAKE_MAC_SDK_PATH = $$xcodeSDKInfo(Path) +QMAKE_MAC_SDK_PLATFORM_PATH = $$xcodeSDKInfo(PlatformPath) +QMAKE_MAC_SDK_VERSION = $$xcodeSDKInfo(SDKVersion) + +sysrootified = +for(val, QMAKE_INCDIR_OPENGL): sysrootified += $${QMAKE_MAC_SDK_PATH}$$val +QMAKE_INCDIR_OPENGL = $$sysrootified + +QMAKESPEC_NAME = $$basename(QMAKESPEC) + +# 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 QMAKE_ACTOOL)) { + tool_variable = QMAKE_MAC_SDK.$${QMAKESPEC_NAME}.$${QMAKE_MAC_SDK}.$${tool} + !isEmpty($$tool_variable) { + $$tool = $$eval($$tool_variable) + next() + } + + value = $$eval($$tool) + isEmpty(value): next() + + sysrooted = $$system("/usr/bin/xcrun -sdk $$QMAKE_MAC_SDK -find $$first(value) 2>/dev/null") + isEmpty(sysrooted): next() + + $$tool = $$sysrooted $$member(value, 1, -1) + cache($$tool_variable, set stash, $$tool) +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/toolchain.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/toolchain.prf new file mode 100644 index 000000000..df191eb13 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/toolchain.prf @@ -0,0 +1,5 @@ +# Ensure that we process sdk.prf first, as it will update QMAKE_CXX, +# which the default path determination uses. +sdk: load(sdk) + +load(toolchain) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/unsupported/objc_namespace.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/unsupported/objc_namespace.prf new file mode 100644 index 000000000..94e0fbe0d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/mac/unsupported/objc_namespace.prf @@ -0,0 +1,50 @@ +# +# 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. +# + +# The Objective-C runtime will complain when loading a binary that +# introduces as class name that already exists in the global namespace. +# This may happen when linking Qt statically into a plugin, and then +# loading more than two plugins into the same host, both using Qt. +# +# We work around this by doing a bit of post-processing on the final +# binary, adding new suffixed class name entries to the __objc_classname +# section of the __TEXT segment, and then patching the class_ro_t +# entries to point to the newly added class names. +# +# By linking the binary between these two steps we avoid having to +# manually remap all the offsets in the Mach-O binary due to the +# added class names, instead relying on the linker to do this +# for us by linking in an assembly file with the added names. + +objc_namespace_script = $$clean_path($$PWD/../../data/mac/objc_namespace.sh) + +isEmpty(QMAKE_OBJC_NAMESPACE_SUFFIX) { + QMAKE_OBJC_NAMESPACE_SUFFIX = $$TARGET + !isEmpty(QMAKE_TARGET_BUNDLE_PREFIX): \ + QMAKE_OBJC_NAMESPACE_SUFFIX = $${QMAKE_TARGET_BUNDLE_PREFIX}.$${QMAKE_OBJC_NAMESPACE_SUFFIX} +} + +QMAKE_LFLAGS += \ + -Wobjc_namespace,--target=$$shell_quote($$TARGET) \ + -Wobjc_namespace,--suffix=$$shell_quote($$QMAKE_OBJC_NAMESPACE_SUFFIX) \ + -Wobjc_namespace,--original_ld=$$shell_quote($$QMAKE_LINK) + +!isEmpty(QMAKE_OBJC_NAMESPACE_EXCLUDE): \ + QMAKE_LFLAGS += -Wobjc_namespace,--exclude_list=$$shell_quote($$QMAKE_OBJC_NAMESPACE_EXCLUDE) +!isEmpty(QMAKE_OBJC_NAMESPACE_EXCLUDE_REGEX) { + equals(MAKEFILE_GENERATOR, UNIX): \ + QMAKE_OBJC_NAMESPACE_EXCLUDE_REGEX ~= s/\\$/\$\$/ + QMAKE_LFLAGS += -Wobjc_namespace,--exclude_regex=$$shell_quote($$QMAKE_OBJC_NAMESPACE_EXCLUDE_REGEX) +} + +slient: QMAKE_LFLAGS += -Wobjc_namespace,--silent=1 + +QMAKE_LINK = $$objc_namespace_script diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/moc.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/moc.prf new file mode 100644 index 000000000..4f2080ee6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/moc.prf @@ -0,0 +1,108 @@ + +#global defaults +qtPrepareTool(QMAKE_MOC, moc) +isEmpty(MOC_DIR):MOC_DIR = . +isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_ +isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc + +MOC_INCLUDEPATH = +for (inc, INCLUDEPATH): \ + MOC_INCLUDEPATH += $$absolute_path($$inc, $$_PRO_FILE_PWD_) +!no_include_pwd:!isEqual(OUT_PWD, $$_PRO_FILE_PWD_): \ + MOC_INCLUDEPATH += . +MOC_INCLUDEPATH = $$QMAKESPEC $$_PRO_FILE_PWD_ $$MOC_INCLUDEPATH $$QMAKE_DEFAULT_INCDIRS + +# On Windows, put the includes into a .inc file which moc will read, if the project +# has too many includes. We do this to overcome a command-line limit on Win < XP +WIN_INCLUDETEMP= +win32:count(MOC_INCLUDEPATH, 40, >) { + WIN_INCLUDETEMP = $$MOC_DIR/mocinclude.opt + + WIN_INCLUDETEMP_CONT = + for (inc, MOC_INCLUDEPATH): \ + WIN_INCLUDETEMP_CONT += -I$$inc + write_file($$absolute_path($$WIN_INCLUDETEMP, $$OUT_PWD), WIN_INCLUDETEMP_CONT)|error() +} + +# QNX's compiler sets "gcc" config, but does not support the -dM option; +# UIKit builds are always multi-arch due to simulator_and_device (unless +# -sdk is used) so this feature cannot possibly work. +if(gcc|intel_icl|msvc):!rim_qcc:!uikit:!no_moc_predefs:if(!macos|count(QMAKE_APPLE_DEVICE_ARCHS, 1)) { + moc_predefs.name = "Generate moc_predefs.h" + moc_predefs.CONFIG = no_link + gcc: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -dM -E -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + else:intel_icl: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -QdM -P -Fi${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + else:msvc { + moc_predefs.commands += $$QMAKE_CXX -Bx$$shell_quote($$shell_path($$QMAKE_QMAKE)) $$QMAKE_CXXFLAGS \ + -E ${QMAKE_FILE_IN} 2>NUL >${QMAKE_FILE_OUT} + } else: error("Oops, I messed up") + moc_predefs.output = $$MOC_DIR/moc_predefs.h + moc_predefs.input = MOC_PREDEF_FILE + silent: moc_predefs.commands = @echo generating $$moc_predefs.output$$escape_expand(\n\t)@$$moc_predefs.commands + QMAKE_EXTRA_COMPILERS += moc_predefs + MOC_PREDEF_FILE = $$[QT_HOST_DATA/src]/mkspecs/features/data/dummy.cpp +} + +defineReplace(mocCmdBase) { + !isEmpty(WIN_INCLUDETEMP) { + incvar = @$$shell_quote($$WIN_INCLUDETEMP) + } else { + incvar = + for (inc, MOC_INCLUDEPATH): \ + incvar += -I$$shell_quote($$inc) + incvar += $$QMAKE_FRAMEWORKPATH_FLAGS + } + + RET = $$QMAKE_MOC $(DEFINES) + msvc: RET += --compiler-flavor=msvc + + isEmpty(MOC_PREDEF_FILE): RET += $$join(QMAKE_COMPILER_DEFINES, " -D", -D) + else: RET += --include $$shell_quote($$moc_predefs.output) + + RET += $$incvar $$QMAKE_MOC_OPTIONS + return($$RET) +} + +#moc headers +moc_header.CONFIG = moc_verify +moc_header.dependency_type = TYPE_C +moc_header.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} +moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} +moc_header.input = HEADERS +moc_header.variable_out = SOURCES +moc_header.name = MOC ${QMAKE_FILE_IN} +moc_header.depends += $$WIN_INCLUDETEMP $$moc_predefs.output +silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands +QMAKE_EXTRA_COMPILERS += moc_header +INCREDIBUILD_XGE += moc_header + +#moc sources +moc_source.CONFIG = no_link moc_verify +moc_source.dependency_type = TYPE_C +moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} +moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC} +moc_source.input = SOURCES +moc_source.name = MOC ${QMAKE_FILE_IN} +moc_source.depends += $$WIN_INCLUDETEMP $$moc_predefs.output +silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands +QMAKE_EXTRA_COMPILERS += moc_source +INCREDIBUILD_XGE += moc_source + +#make sure we can include these files +INCLUDEPATH += $$absolute_path($$MOC_DIR, $$OUT_PWD) + +#auto depend on moc +!no_mocdepend { + moc_source.depends += $$QMAKE_MOC_EXE + moc_header.depends += $$QMAKE_MOC_EXE +} + +#generate a mocclean +build_pass|isEmpty(BUILDS):mocclean.depends = compiler_moc_header_clean compiler_moc_source_clean +else:mocclean.CONFIG += recursive +QMAKE_EXTRA_TARGETS += mocclean + +#generate a mocables +build_pass|isEmpty(BUILDS):mocables.depends = compiler_moc_header_make_all compiler_moc_source_make_all +else:mocables.CONFIG += recursive +QMAKE_EXTRA_TARGETS += mocables diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/no_debug_info.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/no_debug_info.prf new file mode 100644 index 000000000..da14b7bb2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/no_debug_info.prf @@ -0,0 +1,13 @@ +msvc { + QMAKE_CFLAGS -= -Zi + QMAKE_CFLAGS_DEBUG -= -Zi + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO -= -Zi + QMAKE_CXXFLAGS -= -Zi + QMAKE_CXXFLAGS_DEBUG -= -Zi + QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zi +} else { + QMAKE_CFLAGS -= -g -ggdb3 -gstabs + QMAKE_CXXFLAGS -= -g -ggdb3 -gstabs + QMAKE_LFLAGS -= -g -ggdb3 -gstabs + QMAKE_LIBFLAGS -= -g -ggdb3 -gstabs +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/plugin_bundle.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/plugin_bundle.prf new file mode 100644 index 000000000..f3e7294c9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/plugin_bundle.prf @@ -0,0 +1,2 @@ +# Override mkspec default which creates a shared library +mac: QMAKE_LFLAGS_PLUGIN = -bundle diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/precompile_header.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/precompile_header.prf new file mode 100644 index 000000000..9b233dd87 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/precompile_header.prf @@ -0,0 +1,24 @@ +# +# 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. +# + +# +# Set up extra compiler for PCH disabled sources +# +no_pch_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} +msvc: no_pch_compiler.commands += -Fo${QMAKE_FILE_OUT} +else: no_pch_compiler.commands += -o ${QMAKE_FILE_OUT} +no_pch_compiler.dependency_type = TYPE_C +no_pch_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} +no_pch_compiler.input = NO_PCH_SOURCES +no_pch_compiler.variable_out = OBJECTS +no_pch_compiler.name = compiling[no_pch] ${QMAKE_FILE_IN} +silent: no_pch_compiler.commands = @echo compiling[no_pch] ${QMAKE_FILE_IN} && $$no_pch_compiler.commands +QMAKE_EXTRA_COMPILERS += no_pch_compiler diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qgltf.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qgltf.prf new file mode 100644 index 000000000..e3a5c64e3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qgltf.prf @@ -0,0 +1,12 @@ +qtPrepareTool(QMAKE_QGLTF, qgltf) + +isEmpty(QGLTF_DIR): QGLTF_DIR = . + +qgltf.input = QT3D_MODELS +qgltf.output = $$QGLTF_DIR/${QMAKE_FILE_BASE}.qrc +qgltf.variable_out += RESOURCES +qgltf.depends += $$QMAKE_QGLTF_EXE +qgltf.commands = $$QMAKE_QGLTF -d $$QGLTF_DIR $$QGLTF_PARAMS ${QMAKE_FILE_NAME} +silent: qgltf.commands = @echo qgltf ${QMAKE_FILE_IN} && $$qgltf.commands -s +qgltf.CONFIG += no_link +QMAKE_EXTRA_COMPILERS += qgltf diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qlalr.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qlalr.prf new file mode 100644 index 000000000..54d8b583c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qlalr.prf @@ -0,0 +1,50 @@ +qtPrepareTool(QMAKE_QLALR, qlalr) + +isEmpty(QLALR_DIR): QLALR_DIR = . + +!isEmpty(QLALRSOURCES) { + INCLUDEPATH += $$absolute_path($$QLALR_DIR, $$OUT_PWD) +} + +for (s, QLALRSOURCES) { + sf = $$absolute_path($$s, $$_PRO_FILE_PWD_) + QMAKE_INTERNAL_INCLUDED_FILES += $$sf + sfl = $$cat($$sf, lines) + parser = $$lower($$member($$list($$find(sfl, "^%parser\\s")), 1)) + isEmpty(parser): error("Could not extract %parser from $$sf") + decl = $$member($$list($$find(sfl, "^%decl\\s")), 1) + isEmpty(decl): error("Could not extract %decl from $$sf") + impl = $$member($$list($$find(sfl, "^%impl\\s")), 1) + isEmpty(impl): error("Could not extract %impl from $$sf") + base = qlalr_$$replace(sf, ^.*/([^./]+)[^/]*$, \\1) + + invar = $$upper($$base)_SOURCES + $$invar = $$sf + $${base}.input = $$invar + $${base}.output = $$QLALR_DIR/$${parser}.cpp + $${base}.variable_out = GENERATED_SOURCES + $${base}.depends += $$QMAKE_QLALR_EXE + $${base}.commands = $$QMAKE_QLALR $$QMAKE_QLALRFLAGS ${QMAKE_FILE_IN} + silent: $${base}.commands = @echo qlalr ${QMAKE_FILE_IN} && $$eval($${base}.commands) + $${base}.name = QLALR ${QMAKE_FILE_IN} + + $${base}_h.input = $$invar + $${base}_h.output = $$QLALR_DIR/$${parser}_p.h + $${base}_h.CONFIG = no_link + $${base}_h.depends += $$QLALR_DIR/$${parser}.cpp + $${base}_h.commands = $$escape_expand(\\n) # force creation of rule + + $${base}_decl.input = $$invar + $${base}_decl.output = $$QLALR_DIR/$${decl} + $${base}_decl.CONFIG = no_link + $${base}_decl.depends += $$QLALR_DIR/$${parser}.cpp + $${base}_decl.commands = $$escape_expand(\\n) # force creation of rule + + $${base}_impl.input = $$invar + $${base}_impl.output = $$QLALR_DIR/$${impl} + $${base}_impl.variable_out = GENERATED_SOURCES + $${base}_impl.depends += $$QLALR_DIR/$${parser}.cpp + $${base}_impl.commands = $$escape_expand(\\n) # force creation of rule + + QMAKE_EXTRA_COMPILERS += $$base $${base}_h $${base}_decl $${base}_impl +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qmake_use.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qmake_use.prf new file mode 100644 index 000000000..f81d1cece --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qmake_use.prf @@ -0,0 +1,25 @@ +suffix = +for(ever) { + QMAKE_USE$${suffix} = $$unique(QMAKE_USE$${suffix}) + for (use, QMAKE_USE$${suffix}) { + use = $$split(use, /) + name = $$take_first(use) + nu = $$upper($$name) + !defined(QMAKE_LIBS_$$nu, var): \ + error("Library '$$name' is not defined.") + + !contains(use, nolink) { + QMAKE_LIBDIR += $$eval(QMAKE_LIBDIR_$$nu) + debug: \ + LIBS$${suffix} += $$eval(QMAKE_LIBS_$${nu}_DEBUG) $$eval(QMAKE_LIBS_$$nu) + else: \ + LIBS$${suffix} += $$eval(QMAKE_LIBS_$${nu}_RELEASE) $$eval(QMAKE_LIBS_$$nu) + } + !contains(use, linkonly) { + DEFINES += $$eval(QMAKE_DEFINES_$${nu}) + INCLUDEPATH += $$eval(QMAKE_INCDIR_$${nu}) + } + } + !isEmpty(suffix): break() + suffix = "_PRIVATE" +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml1_module.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml1_module.prf new file mode 100644 index 000000000..33c3e4480 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml1_module.prf @@ -0,0 +1,13 @@ +# +# 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. +# + +CONFIG += qml1_target +load(qml_module) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml1_plugin.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml1_plugin.prf new file mode 100644 index 000000000..cb1f0ce26 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml1_plugin.prf @@ -0,0 +1,13 @@ +# +# 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. +# + +CONFIG += qml1_target +load(qml_plugin) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml_debug.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml_debug.prf new file mode 100644 index 000000000..72f4f2202 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml_debug.prf @@ -0,0 +1 @@ +DEFINES += QT_QML_DEBUG diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml_module.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml_module.prf new file mode 100644 index 000000000..4db0040dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml_module.prf @@ -0,0 +1,64 @@ +# +# 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. +# + +equals(TEMPLATE, app): TEMPLATE = aux + +isEmpty(TARGETPATH): error("Must set TARGETPATH (QML import name)") + +qmldir_file = $$_PRO_FILE_PWD_/qmldir + +fq_qml_files = +for(qmlf, QML_FILES): fq_qml_files += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_) + +fq_aux_qml_files = +for(qmlf, AUX_QML_FILES): fq_aux_qml_files += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_) + +load(qt_build_paths) + +qml1_target { + DESTDIR = $$MODULE_BASE_OUTDIR/imports/$$TARGETPATH + instbase = $$[QT_INSTALL_IMPORTS] +} else { + DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH + instbase = $$[QT_INSTALL_QML] +} + +!qml1_target:static: CONFIG += builtin_resources + +builtin_resources { + URITARGET = $$replace(URI, "\\.", "_") + # Ensure the QML files are included in the resources. In static builds, + # the QML engine reads also the qmldir file from the resources. + $${URITARGET}.files = $$qmldir_file $$fq_qml_files + # qt-project.org/imports is the path used for locating imports inside the resources + $${URITARGET}.prefix = /qt-project.org/imports/$$TARGETPATH + RESOURCES += $${URITARGET} +} + +# Install rules +qmldir.base = $$_PRO_FILE_PWD_ +# Tools need qmldir and plugins.qmltypes always installed on the file system +qmldir.files = $$qmldir_file $$fq_aux_qml_files +!builtin_resources: qmldir.files += $$fq_qml_files +qmldir.path = $$instbase/$$TARGETPATH +INSTALLS += qmldir + +!debug_and_release|!build_all|CONFIG(release, debug|release) { + !prefix_build { + COPIES += qmldir + } else { + # For non-installed static builds, tools need qmldir and plugins.qmltypes + # files in the build dir + qmldir2build.files = $$qmldir_file $$fq_aux_qml_files + qmldir2build.path = $$DESTDIR + COPIES += qmldir2build + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml_plugin.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml_plugin.prf new file mode 100644 index 000000000..d49f4c49c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qml_plugin.prf @@ -0,0 +1,122 @@ +# +# 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. +# + +load(qt_build_config) + +TEMPLATE = lib +CONFIG += plugin + +if(win32|mac):!macx-xcode { + qtConfig(debug_and_release): CONFIG += debug_and_release + qtConfig(build_all): CONFIG += build_all +} + +CONFIG += relative_qt_rpath # Qt's QML plugins should be relocatable + +# Qt libraries should only use Application Extension safe APIs +darwin:!no_app_extension_api_only: CONFIG += app_extension_api_only + +!no_cxx_module:isEmpty(CXX_MODULE) { + CXX_MODULE = $$TARGET + TARGET = declarative_$${TARGET} +} +isEmpty(TARGETPATH): TARGETPATH = $$eval(QT.$${CXX_MODULE}.name) + +win32:CONFIG(shared, static|shared) { + # Embed a VERSIONINFO resource into the plugin's DLL. + isEmpty(VERSION): VERSION = $$MODULE_VERSION + CONFIG += skip_target_version_ext +} + +# Insert the plugins URI into its meta data to enable usage +# of static plugins in QtDeclarative: +URI = $$replace(TARGETPATH, "/", ".") +QMAKE_MOC_OPTIONS += -Muri=$$URI + +QMLTYPEFILE = $$_PRO_FILE_PWD_/plugins.qmltypes +exists($$QMLTYPEFILE): AUX_QML_FILES += $$QMLTYPEFILE + +# Install rules + +load(qt_build_paths) + +qml1_target { + DESTDIR = $$MODULE_BASE_OUTDIR/imports/$$TARGETPATH + instbase = $$[QT_INSTALL_IMPORTS] +} else { + DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH + instbase = $$[QT_INSTALL_QML] +} + +target.path = $$instbase/$$TARGETPATH +INSTALLS += target + +# Some final setup + +TARGET = $$qt5LibraryTarget($$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 +# automatically at compile time because qmlplugindump does not support some QML features and it may +# not be possible when cross-compiling. +# +# To regenerate run 'make qmltypes' which will update the plugins.qmltypes file in the source +# directory. Then review and commit the changes made to plugins.qmltypes. +# +!cross_compile { + qml1_target { + qmlplugindump = qml1plugindump + importpath.name = QML_IMPORT_PATH + } else { + qmlplugindump = qmlplugindump + importpath.name = QML2_IMPORT_PATH + } + importpath.value = + for(qmod, QTREPOS) { + qml1_target: \ + qmod = $$qmod/imports + else: \ + qmod = $$qmod/qml + exists($$qmod): importpath.value += $$shell_path($$qmod) + } + importpath.value = $$unique(importpath.value) + QT_TOOL_ENV = importpath + qtPrepareTool(QMLPLUGINDUMP, $$qmlplugindump) + QT_TOOL_ENV = + + # qtPrepareTool() must be called outside a build pass, as it protects + # against concurrent wrapper creation by omitting it during build passes. + # However, creating the actual targets is reserved to the build passes. + build_pass|!debug_and_release { + isEmpty(IMPORT_VERSION) { + no_cxx_module { + IMPORT_VERSION = $$section(MODULE_VERSION, ., 0, 1) + isEmpty(IMPORT_VERSION): error("Must set IMPORT_VERSION") + } else { + IMPORT_VERSION = $$section(QT.$${CXX_MODULE}.VERSION, ., 0, 1) + } + } + + load(resolve_target) + TARGETPATHBASE = $$replace(TARGETPATH, \\.\\d+\$, ) + qmltypes.target = qmltypes + qmltypes.commands = $$QMLPLUGINDUMP -nonrelocatable $$replace(TARGETPATHBASE, /, .) $$IMPORT_VERSION > $$QMLTYPEFILE + qmltypes.depends = $$QMAKE_RESOLVED_TARGET + } else { + qmltypes.CONFIG += recursive + } + QMAKE_EXTRA_TARGETS += qmltypes +} + +load(qml_module) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qmlcache.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qmlcache.prf new file mode 100644 index 000000000..330da358b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qmlcache.prf @@ -0,0 +1,60 @@ +static { + message("QML cache generation ahead of time is not supported in static builds") + return() +} + +android { + message("QML cache generation ahead of time is not supported on Android") + return() +} + +qtPrepareTool(QML_CACHEGEN, qmlcachegen, _ARCH_CHECK) + +isEmpty(TARGETPATH): error("Must set TARGETPATH (QML import name) for ahead-of-time QML cache generation") + +!isEmpty(QT_TARGET_ARCH):QML_CACHEGEN_ARCH=$$QT_TARGET_ARCH +else:QML_CACHEGEN_ARCH=$$QT_ARCH + +!isEmpty(QT_TARGET_BUILDABI):QML_CACHEGEN_ABI=$$QT_TARGET_BUILDABI +else:QML_CACHEGEN_ABI=$$QT_BUILDABI + +QML_CACHEGEN_ARGS=--target-architecture=$$QML_CACHEGEN_ARCH --target-abi=$$QML_CACHEGEN_ABI + +!system($$QML_CACHEGEN_ARCH_CHECK $$QML_CACHEGEN_ARGS --check-if-supported) { + message("QML cache generation requested but target architecture $$QML_CACHEGEN_ARCH is not supported.") + return() +} + +load(qt_build_paths) + +prefix_build: QMLCACHE_DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH +else: QMLCACHE_DESTDIR = $$[QT_INSTALL_QML]/$$TARGETPATH + +CACHEGEN_FILES= +qmlcacheinst.files = +for(qmlf, QML_FILES) { + contains(qmlf,.*\\.js$)|contains(qmlf,.*\\.qml$) { + CACHEGEN_FILES += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_) + qmlcacheinst.files += $$QMLCACHE_DESTDIR/$$relative_path($$qmlf, $$_PRO_FILE_PWD_)c + } +} + +defineReplace(qmlCacheOutputFileName) { + return($$relative_path($$QMLCACHE_DESTDIR/$$relative_path($$1, $$_PRO_FILE_PWD_)c, $$OUT_PWD)) +} + +qmlcacheinst.base = $$QMLCACHE_DESTDIR +qmlcacheinst.path = $$[QT_INSTALL_QML]/$$TARGETPATH +qmlcacheinst.CONFIG = no_check_exist + +qmlcachegen.input = CACHEGEN_FILES +qmlcachegen.output = ${QMAKE_FUNC_FILE_IN_qmlCacheOutputFileName} +qmlcachegen.CONFIG = no_link target_predeps +qmlcachegen.commands = $$QML_CACHEGEN $$QML_CACHEGEN_ARGS -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} +qmlcachegen.name = Generate QML Cache ${QMAKE_FILE_IN} +qmlcachegen.variable_out = GENERATED_FILES + +!debug_and_release|!build_all|CONFIG(release, debug|release) { + QMAKE_EXTRA_COMPILERS += qmlcachegen + INSTALLS += qmlcacheinst +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qmltestcase.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qmltestcase.prf new file mode 100644 index 000000000..335ba9000 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qmltestcase.prf @@ -0,0 +1,13 @@ +CONFIG += testcase + +QT += qml qmltest + +mac: CONFIG -= app_bundle + +# If the .pro file specified an IMPORTPATH, then add that to +# the command-line when the test is run. +!isEmpty(IMPORTPATH) { + load(testcase) + for(import, IMPORTPATH): check.commands += -import \"$$import\" +} +DEFINES += QUICK_TEST_SOURCE_DIR=\"\\\"$$_PRO_FILE_PWD_\\\"\" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qscxmlc.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qscxmlc.prf new file mode 100644 index 000000000..ae1b3baea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qscxmlc.prf @@ -0,0 +1,39 @@ +qtPrepareTool(QMAKE_QSCXMLC, qscxmlc) + +isEmpty(QSCXMLC_DIR):QSCXMLC_DIR = . + +debug_and_release { + CONFIG(debug, debug|release):SUFFIX = /debug + CONFIG(release, debug|release):SUFFIX = /release +} + +QSCXMLC_DIR = $$QSCXMLC_DIR$$SUFFIX + +{ +qscxmlc.name = QSCXMLC ${QMAKE_FILE_IN}.h +qscxmlc.input = STATECHARTS +qscxmlc.variable_out = QSCXMLC_HEADERS +qscxmlc.commands = $$QMAKE_QSCXMLC ${QMAKE_FILE_IN} --header ${QMAKE_FILE_OUT} --impl $$QSCXMLC_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} $$QSCXMLC_ARGUMENTS +!isEmpty(QSCXMLC_NAMESPACE): qscxmlc.commands = $${qscxmlc.commands} --namespace $$QSCXMLC_NAMESPACE +qscxmlc.output = $$QSCXMLC_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +qscxmlc.CONFIG += target_predeps +qscxmlc.depends += $$QMAKE_QSCXMLC_EXE + +QMAKE_EXTRA_COMPILERS += qscxmlc + +qscxmlc_sm.name = QSCXMLC ${QMAKE_FILE_IN}.cpp +qscxmlc_sm.input = QSCXMLC_HEADERS +qscxmlc_sm.variable_out = GENERATED_SOURCES +qscxmlc_sm.commands = $$escape_expand(\\n) # force creation of rule +qscxmlc_sm.output = $$QSCXMLC_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} +qscxmlc_sm.CONFIG += target_predeps + +QMAKE_EXTRA_COMPILERS += qscxmlc_sm +} + +!isEmpty(STATECHARTS) { + INCLUDEPATH += $$absolute_path($$QSCXMLC_DIR, $$OUT_PWD) +} + +QMAKE_DIR_REPLACE += QSCXMLC_DIR +QMAKE_DIR_REPLACE_SANE += QSCXMLC_DIR diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt.prf new file mode 100644 index 000000000..3ccbbe706 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt.prf @@ -0,0 +1,342 @@ +CONFIG *= thread + +#handle defines +win32 { + qtConfig(shared) { + # this variable is read by qmake in qmake/generators/win32/msvc_vcproj.cpp + # function VcprojGenerator::initDeploymentTool() + QMAKE_DLL_PATHS += $$[QT_INSTALL_BINS/get] + } +} +CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG +qtConfig(force_asserts): DEFINES += QT_FORCE_ASSERTS +no_keywords:DEFINES += QT_NO_KEYWORDS +plugin { #Qt plugins + static:DEFINES += QT_STATICPLUGIN + DEFINES += QT_PLUGIN +} + +qtestlib { + warning("CONFIG+=qtestlib is deprecated. Use QT+=testlib instead.") + QT += testlib +} +qdbus { + warning("CONFIG+=qdbus is deprecated. Use QT+=dbus instead.") + QT += dbus +} +help { + warning("CONFIG+=help is deprecated. Use QT+=help instead.") + QT += help-private # sic! +} +designer { + warning("CONFIG+=designer is deprecated. Use QT+=designer instead.") + QT += designer +} +uitools { + warning("CONFIG+=uitools is deprecated. Use QT+=uitools instead.") + QT += uitools +} +qaxcontainer { + warning("CONFIG+=qaxcontainer is deprecated. Use QT+=axcontainer instead.") + QT += axcontainer +} +qaxserver { + warning("CONFIG+=qaxserver is deprecated. Use QT+=axserver instead.") + QT += axserver +} + +!import_qpa_plugin { + warning("CONFIG-=import_qpa_plugin is deprecated. Use QTPLUGIN.platforms=- instead.") + QTPLUGIN.platforms = - +} else: qpa_minimal_plugin { + warning("CONFIG+=qpa_minimal_plugin is deprecated. Use QTPLUGIN.platforms=qminimal instead.") + QTPLUGIN.platforms = qminimal +} + +!force_import_plugins:!contains(TEMPLATE, ".*app"):!if(contains(TEMPLATE, ".*lib"):dll): \ + CONFIG -= import_plugins + +# qmake variables cannot contain dashes, so normalize the names first +CLEAN_QT = $$replace(QT, -private$, _private) +CLEAN_QT_PRIVATE = $$replace(QT_PRIVATE, -private$, _private) + +qt_module_deps = $$CLEAN_QT $$CLEAN_QT_PRIVATE +all_qt_module_deps = $$resolve_depends(qt_module_deps, "QT.", ".depends" ".run_depends") + +QTPLUGIN = $$unique($$list($$lower($$QTPLUGIN))) + +import_plugins:qtConfig(static) { + manualplugs = $$QTPLUGIN # User may specify plugins. Mostly legacy. + autoplugs = # Auto-added plugins. + # First round: explicitly specified modules. + plugin_deps = $$all_qt_module_deps + for(ever) { + # Automatically link the default plugins for the linked Qt modules. + for (qtmod, plugin_deps) { + for (ptype, QT.$${qtmod}.plugin_types) { + nptype = $$replace(ptype, [-/], _) + isEmpty(QTPLUGIN.$$nptype) { + for (plug, QT_PLUGINS) { + equals(QT_PLUGIN.$${plug}.TYPE, $$ptype) { + for (dep, QT_PLUGIN.$${plug}.EXTENDS) { + !contains(all_qt_module_deps, $$dep) { + plug = + break() + } + } + autoplugs += $$plug + } + } + } else { + plug = $$eval(QTPLUGIN.$$nptype) + !equals(plug, -): \ + autoplugs += $$plug + } + } + } + QTPLUGIN = $$manualplugs $$autoplugs + QTPLUGIN = $$unique(QTPLUGIN) + + # Obtain the plugins' Qt dependencies ... + plugin_deps = + for (plug, QTPLUGIN): \ + plugin_deps += $$eval(QT_PLUGIN.$${plug}.DEPENDS) + plugin_deps = $$resolve_depends(plugin_deps, "QT.", ".depends" ".run_depends") + plugin_deps -= $$all_qt_module_deps + isEmpty(plugin_deps): \ + break() + # ... and start over if any new Qt modules appeared, + # as these may want to load plugins in turn. + all_qt_module_deps += $$plugin_deps + } + extraplugs = $$manualplugs + manualplugs -= $$autoplugs + extraplugs -= $$manualplugs + !isEmpty(extraplugs): \ + warning("Redundant entries in QTPLUGIN: $$extraplugs") + + !isEmpty(QTPLUGIN) { + IMPORT_FILE_CONT = \ + "// This file is autogenerated by qmake. It imports static plugin classes for" \ + "// static plugins specified using QTPLUGIN and QT_PLUGIN_CLASS.<plugin> variables." \ + "$${LITERAL_HASH}include <QtPlugin>" + for (plug, QTPLUGIN) { + plug_class = $$eval(QT_PLUGIN.$${plug}.CLASS_NAME) + !isEmpty(plug_class): \ + IMPORT_FILE_CONT += "Q_IMPORT_PLUGIN($$plug_class)" + else: \ + warning("Plugin class name could not be determined for plugin '$$plug'.") + } + IMPORT_CPP = $$OUT_PWD/$$lower($$basename(TARGET))_plugin_import.cpp + write_file($$IMPORT_CPP, IMPORT_FILE_CONT)|error() + GENERATED_SOURCES += $$IMPORT_CPP + QMAKE_DISTCLEAN += $$IMPORT_CPP + } +} + +# Only link against plugins in static builds +!isEmpty(QTPLUGIN):qtConfig(static) { + for (plug, QTPLUGIN) { + # Check if the plugin is known to Qt. We can use this to determine + # the plugin path. Unknown plugins must rely on the default link path. + plug_type = $$eval(QT_PLUGIN.$${plug}.TYPE) + !isEmpty(plug_type) { + plug_path = $$eval(QT_PLUGIN.$${plug}.PATH) + isEmpty(plug_path): \ + plug_path = $$[QT_INSTALL_PLUGINS/get] + LIBS += -L$$plug_path/$$plug_type + } + LIBS += -l$${plug}$$qtPlatformTargetSuffix() + } +} + +# target variable, flag source variable +defineTest(qtProcessModuleFlags) { + for(flag, $$2) { + contains(flag, ^-.*): \ + $$1 -= $$replace(flag, ^-, ) + else: \ + $$1 += $$flag + } + export($$1) +} + +unset(using_privates) +var_sfx = +for(ever) { + # Topological resolution of modules based on their QT.<module>.depends variable + FULL_QT$$var_sfx = $$resolve_depends(CLEAN_QT$$var_sfx, "QT.") + # Finally actually add the modules + unset(BAD_QT) + for(QTLIB, FULL_QT$$var_sfx) { + MODULE_NAME = $$eval(QT.$${QTLIB}.name) + MODULE_MODULE = $$eval(QT.$${QTLIB}.module) + MODULE_INCLUDES = $$eval(QT.$${QTLIB}.includes) + MODULE_LIBS = $$eval(QT.$${QTLIB}.libs) + MODULE_FRAMEWORKS = $$eval(QT.$${QTLIB}.frameworks) + MODULE_USES = $$eval(QT.$${QTLIB}.uses) + MODULE_CONFIG = $$eval(QT.$${QTLIB}.module_config) + + isEmpty(MODULE_NAME) { + BAD_QT += $$QTLIB + next() + } + + contains(MODULE_CONFIG, internal_module): \ + using_privates = true + contains(MODULE_CONFIG, ltcg): \ + CONFIG += link_ltcg + + qtProcessModuleFlags(CONFIG, QT.$${QTLIB}.CONFIG) + qtProcessModuleFlags(DEFINES, QT.$${QTLIB}.DEFINES) + + MODULE_INCLUDES -= $$QMAKE_DEFAULT_INCDIRS + MODULE_LIBS_ADD = $$MODULE_LIBS + MODULE_LIBS_ADD -= $$QMAKE_DEFAULT_LIBDIRS + + !contains(MODULE_CONFIG, v2) { + # Backwards compatibility with pre-5.6 module .pri files + + contains(MODULE_CONFIG, lib_bundle) { + MODULE_FRAMEWORKS = $$MODULE_LIBS + inc = $$MODULE_LIBS/$${MODULE_NAME}.framework/Headers + MODULE_INCLUDES = $$inc + contains(MODULE_CONFIG, internal_module): \ + MODULE_INCLUDES += \ + $$inc/$$eval(QT.$${QTLIB}.VERSION) \ + $$inc/$$eval(QT.$${QTLIB}.VERSION)/$$MODULE_NAME + } else { + # Re-insert the major version in the library name (cf qt5LibraryTarget above) + MODULE_NAME ~= s,^Qt,Qt$$QT_MAJOR_VERSION, + } + + # Only link to this module if a libs directory is set, else this is just a module + # to give access to sources or include files, and not for linking. + !isEmpty(MODULE_LIBS):!contains(MODULE_CONFIG, no_link): \ + MODULE_MODULE = $${MODULE_NAME}$${QT_LIBINFIX} + } + + # Frameworks shouldn't need include paths, but much code does not use + # module-qualified #includes, so by default we add paths which point + # directly into the frameworks. Private modules have somewhat convoluted + # header paths, so adding them is necessary in every case. + !if(contains(MODULE_CONFIG, lib_bundle):qt_no_framework_direct_includes) \ + |contains(MODULE_CONFIG, internal_module): \ + INCLUDEPATH *= $$MODULE_INCLUDES + QMAKE_FRAMEWORKPATH *= $$MODULE_FRAMEWORKS + !isEmpty(MODULE_MODULE) { + contains(MODULE_CONFIG, lib_bundle) { + LIBS$$var_sfx += -framework $$MODULE_MODULE + } else { + !isEmpty(MODULE_LIBS_ADD): \ + LIBS$$var_sfx += -L$$MODULE_LIBS_ADD + + lib = $$MODULE_MODULE$$qtPlatformTargetSuffix() + LIBS$$var_sfx += -l$$lib + + contains(MODULE_CONFIG, staticlib): \ + PRE_TARGETDEPS *= $$MODULE_LIBS/$${QMAKE_PREFIX_STATICLIB}$${lib}.$${QMAKE_EXTENSION_STATICLIB} + + !isEmpty(QMAKE_LSB) { + !isEmpty(MODULE_LIBS_ADD): \ + QMAKE_LFLAGS *= --lsb-libpath=$$MODULE_LIBS_ADD + QMAKE_LFLAGS *= --lsb-shared-libs=$$lib + QMAKE_LIBDIR *= /opt/lsb/lib + } + } + } + QMAKE_USE$$var_sfx += $$MODULE_USES + # Add capabilities as defined by modules used in the project + winrt { + MODULE_WINRT_CAPABILITIES = $$eval(QT.$${QTLIB}.winrt_capabilities) + !isEmpty(MODULE_WINRT_CAPABILITIES): \ + WINRT_MANIFEST.capabilities_default += $$MODULE_WINRT_CAPABILITIES + MODULE_WINRT_CAPABILITIES_DEVICE = $$eval(QT.$${QTLIB}.winrt_capabilities_device) + !isEmpty(MODULE_WINRT_CAPABILITIES_DEVICE): \ + WINRT_MANIFEST.capabilities_device_default += $$MODULE_WINRT_CAPABILITIES_DEVICE + } + } + !isEmpty(BAD_QT):error("Unknown module(s) in QT$$var_sfx: $$replace(BAD_QT, _private$, -private)") + + !isEmpty(var_sfx): break() + var_sfx = _PRIVATE +} +!isEmpty(using_privates):!no_private_qt_headers_warning:!build_pass { + message("This project is using private headers and will therefore be tied to this specific Qt module build version.") + message("Running this project against other versions of the Qt modules may crash at any arbitrary point.") + message("This is not a bug, but a result of using Qt internals. You have been warned!") +} + +!no_qt_rpath:!static:qtConfig(rpath):!qtConfig(static):\ + contains(all_qt_module_deps, core) { + relative_qt_rpath:!isEmpty(QMAKE_REL_RPATH_BASE):contains(INSTALLS, target):\ + isEmpty(target.files):isEmpty(target.commands):isEmpty(target.extra) { + # NOT the /dev property, as INSTALLS use host paths + QMAKE_RPATHDIR += $$relative_path($$[QT_INSTALL_LIBS], $$qtRelativeRPathBase()) + } else { + QMAKE_RPATHDIR += $$[QT_INSTALL_LIBS/dev] + } +} + +!isEmpty(QMAKE_LFLAGS_RPATHLINK):!qtConfig(static) { + # -rpath-link is used by the linker to find dependencies of dynamic + # libraries which were NOT specified on the command line. + # This means that paths of direct dependencies (QT & QT_PRIVATE) + # don't need to be listed, unlike their private dependencies' paths. + privdep = $$all_qt_module_deps + privdep -= $$resolve_depends(qt_module_deps, "QT.") + rpaths = + for(dep, privdep): \ + rpaths += $$eval(QT.$${dep}.libs) + QMAKE_RPATHLINKDIR *= $$unique(rpaths) +} + +# static builds: link qml import plugins into the target. +contains(all_qt_module_deps, qml): \ + qtConfig(static):import_plugins:!host_build:!no_import_scan { + exists($$[QT_INSTALL_QML/get]): \ + QMLPATHS *= $$[QT_INSTALL_QML/get] + + # run qmlimportscanner + qtPrepareTool(QMLIMPORTSCANNER, qmlimportscanner, , system) + for (QMLPATH, QMLPATHS): \ + IMPORTPATHS += -importPath $$system_quote($$QMLPATH) + + #message(run $$QMLIMPORTSCANNER $$_PRO_FILE_PWD_ $$IMPORTPATHS) + JSON = $$system($$QMLIMPORTSCANNER $$system_quote($$_PRO_FILE_PWD_) $$IMPORTPATHS) + + parseJson(JSON, IMPORTS)| error("Failed to parse qmlimportscanner output.") + + !isEmpty(IMPORTS._KEYS_) { + # add import plugins to LIBS line + for (key, IMPORTS._KEYS_) { + PATH = $$eval(IMPORTS.$${key}.path) + PLUGIN = $$eval(IMPORTS.$${key}.plugin) + !isEmpty(PATH):!isEmpty(PLUGIN): LIBS *= -L$$PATH -l$${PLUGIN}$$qtPlatformTargetSuffix() + } + + # create qml_plugin_import.cpp + IMPORT_FILE_CONT = \ + "// This file is autogenerated by qmake. It imports static plugin classes for" \ + "// static plugins used by QML imports." \ + "$${LITERAL_HASH}include <QtPlugin>" + for (key, IMPORTS._KEYS_) { + PLUGIN = $$eval(IMPORTS.$${key}.plugin) + CLASSNAME = $$eval(IMPORTS.$${key}.classname) + !isEmpty(PLUGIN) { + !isEmpty(CLASSNAME) { + !contains(ADDED_IMPORTS, $$PLUGIN) { + ADDED_IMPORTS += $$PLUGIN + IMPORT_FILE_CONT += "Q_IMPORT_PLUGIN($$CLASSNAME)" + } + } else { + error("Plugin $$PLUGIN is missing a classname entry, please add one to the qmldir file.") + } + } + } + QML_IMPORT_CPP = $$OUT_PWD/$$lower($$basename(TARGET))_qml_plugin_import.cpp + write_file($$QML_IMPORT_CPP, IMPORT_FILE_CONT)|error() + GENERATED_SOURCES += $$QML_IMPORT_CPP + QMAKE_DISTCLEAN += $$QML_IMPORT_CPP + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_android_deps.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_android_deps.prf new file mode 100644 index 000000000..c172ca8c4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_android_deps.prf @@ -0,0 +1,90 @@ + +# 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_BASE_OUTDIR/lib/ +DEPENDENCY_FILE = $$ANDROID_DEPENDS_DIR$$TARGET-android-dependencies.xml + +!build_pass { + !isEmpty(MODULE_PLUGIN_TYPES) { + for(PLUGIN_TYPE, MODULE_PLUGIN_TYPES) { + ANDROID_BUNDLED_FILES += "plugins/$$PLUGIN_TYPE" + } + } + + !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_BUNDLED_JAR_DEPENDENCIES) { + for(JAR_FILE, ANDROID_BUNDLED_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 bundling=\"1\" file=\"$$JAR_FILE\" $$INIT_CLASS />" + } + } + + !isEmpty(ANDROID_LIB_DEPENDENCIES) { + for(LIB_FILE, ANDROID_LIB_DEPENDENCIES) { + EXTENDS = $$section(LIB_FILE, ":", 1, 1) + !isEmpty(EXTENDS): EXTENDS = "extends=\"$$EXTENDS\"" + LIB_FILE = $$section(LIB_FILE, ":", 0, 0) + FILE_CONTENT += "<lib file=\"$$LIB_FILE\" $$EXTENDS />" + } + } + + !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(ANDROID_BUNDLED_FILES) { + for (BUNDLED_FILE, ANDROID_BUNDLED_FILES) { + FILE_CONTENT += "<bundled file=\"$$BUNDLED_FILE\" />" + } + } + + !isEmpty(ANDROID_PERMISSIONS) { + for (ANDROID_PERMISSION, ANDROID_PERMISSIONS) { + FILE_CONTENT += "<permission name=\"$$ANDROID_PERMISSION\" />" + } + } + + !isEmpty(ANDROID_FEATURES) { + for (ANDROID_FEATURE, ANDROID_FEATURES) { + FILE_CONTENT += "<feature name=\"$$ANDROID_FEATURE\" />" + } + } + + + !isEmpty(FILE_CONTENT) { + FILE_CONTENT = "<rules><dependencies><lib name=\"$$TARGET\"><depends>" $$FILE_CONTENT "</depends></lib></dependencies></rules>" + write_file($$DEPENDENCY_FILE, FILE_CONTENT)|error() + } +} + +!isEmpty(ANDROID_JAR_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCY_REPLACEMENTS)|!isEmpty(ANDROID_BUNDLED_JAR_DEPENDENCIES)|!isEmpty(ANDROID_BUNDLED_FILES) { + install_dependencies_file.files = $$DEPENDENCY_FILE + install_dependencies_file.path = $$[QT_INSTALL_LIBS] + INSTALLS += install_dependencies_file +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_app.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_app.prf new file mode 100644 index 000000000..883f8ca21 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_app.prf @@ -0,0 +1,68 @@ +# +# 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. +# + +TEMPLATE = app + +load(qt_build_paths) +DESTDIR = $$MODULE_BASE_OUTDIR/bin + +isEmpty(VERSION): VERSION = $$MODULE_VERSION +isEmpty(QMAKE_TARGET_DESCRIPTION): \ + QMAKE_TARGET_DESCRIPTION = "Qt $$title($$TARGET)" + +isEmpty(QMAKE_INFO_PLIST): CONFIG -= app_bundle + +# This decreases the binary size for tools if statically linked +QMAKE_LFLAGS += $$QMAKE_LFLAGS_GCSECTIONS + +host_build: QT -= gui # no host tool will ever use gui +host_build:force_bootstrap { + !build_pass:qtConfig(release_tools): CONFIG += release + contains(QT, core(-private)?|xml) { + QT -= core core-private xml + QT += bootstrap-private + } + target.path = $$[QT_HOST_BINS] +} else { + !build_pass:qtConfig(debug_and_release): CONFIG += release + target.path = $$[QT_INSTALL_BINS] + CONFIG += relative_qt_rpath # Qt's tools and apps should be relocatable +} +INSTALLS += target + +load(qt_targets) +load(qt_common) + +qtSetQmlPath() + +no_launch_target: return() + +load(resolve_target) +launch.commands = $$shell_quote($$shell_path($$QMAKE_RESOLVED_TARGET)) +QMAKE_EXTRA_TARGETS += launch + +# Add environment for non-installed builds. +QT_TOOL_NAME = target +qtAddTargetEnv(launch.commands, QT) + +isEmpty(BUILDS)|build_pass { + launch.depends = first +} else { + # For exclusive builds, run the app only once. + launch.CONFIG = recursive + launch.target = launch_all + launch.recurse_target = launch + launch.commands = + + launch_first.depends = $$eval($$first(BUILDS).target)-launch + launch_first.target = launch + QMAKE_EXTRA_TARGETS += launch_first +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_build_config.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_build_config.prf new file mode 100644 index 000000000..150d2b2cc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_build_config.prf @@ -0,0 +1,139 @@ +# +# 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(QMAKE_INTERNAL_INCLUDED_FILES, .*qmodule\\.pri) { + QMAKE_QT_MODULE = $$[QT_HOST_DATA/get]/mkspecs/qmodule.pri + !exists($$QMAKE_QT_MODULE)|!include($$QMAKE_QT_MODULE, "", true) { + debug(1, "Cannot load qmodule.pri!") + } else { + debug(1, "Loaded qmodule.pri from ($$QMAKE_QT_MODULE)") + } +} else { + debug(1, "Not loading qmodule.pri twice") +} + +PRECOMPILED_DIR = .pch +OBJECTS_DIR = .obj +MOC_DIR = .moc +RCC_DIR = .rcc +UI_DIR = .uic +intel_icl { + # ICL 14.0 has a bug that makes it not find #includes in dirs starting with . + MOC_DIR = tmp/moc + RCC_DIR = tmp/rcc + UI_DIR = tmp/uic +} + +QMAKE_DIR_REPLACE_SANE = PRECOMPILED_DIR OBJECTS_DIR MOC_DIR RCC_DIR UI_DIR + +# force_independent can be set externally. prefix_build not. +!exists($$[QT_HOST_DATA]/.qmake.cache): \ + CONFIG += prefix_build force_independent + +!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):force_independent { + # When doing a -prefix build of top-level qt5/qt.pro, we need to announce + # this repo's output dir to the other repos. + MODULE_BASE_OUTDIR = $$shadowed($$dirname(_QMAKE_CONF_)) + !contains(QTREPOS, $$MODULE_BASE_OUTDIR): \ + cache(QTREPOS, add super, MODULE_BASE_OUTDIR) + # This repo's module pris' location needs to be made known to qmake. + isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR + modpath = $$MODULE_QMAKE_OUTDIR/mkspecs/modules + !contains(QMAKEMODULES, $$modpath): \ + cache(QMAKEMODULES, add super, modpath) + unset(modpath) +} + +defineTest(qtSetQmlPath) { + !qtConfig(static)|host_build|no_import_scan: \ + return() + deps = $$replace(QT, -private$, _private) + deps = $$resolve_depends(deps, "QT.") + !contains(deps, qml): \ + return() + + isEmpty(QTREPOS): \ + QTREPOS = $$shadowed($$dirname(_QMAKE_CONF_)) + for (qrep, QTREPOS): \ + exists($$qrep/qml): \ + QMLPATHS += $$qrep/qml + export(QMLPATHS) +} + +# Apply extra compiler flags passed via configure last. +CONFIG = qt_build_extra $$CONFIG + +# Don't actually try to install anything in non-prefix builds. +# This is much easier and safer than making every single INSTALLS +# assignment conditional. +!prefix_build: \ + CONFIG += qt_clear_installs + +cross_compile: \ + CONFIG += force_bootstrap + +android|uikit|winrt: \ + CONFIG += builtin_testdata + +CONFIG += \ + utf8_source \ + create_prl link_prl \ + prepare_docs qt_docs_targets \ + no_private_qt_headers_warning QTDIR_build \ + qt_example_installs \ + # Qt modules get compiled without exceptions enabled by default. + # However, testcases should be still built with exceptions. + exceptions_off testcase_exceptions + +# Under Windows, this is neither necessary (transitive deps are automatically +# resolved), nor functional (.res files end up in .prl files and break things). +unix: CONFIG += explicitlib + +# By default we want tests on macOS to be built as standalone executables +macos: CONFIG += testcase_no_bundle + +defineTest(qtBuildPart) { + bp = $$eval($$upper($$section(_QMAKE_CONF_, /, -2, -2))_BUILD_PARTS) + isEmpty(bp): bp = $$QT_BUILD_PARTS + contains(bp, $$1): return(true) + return(false) +} + +defineTest(qtNomakeTools) { + qtBuildPart(tools): return() + for (d, 1) { + $${d}.CONFIG += no_default_target no_default_install + export($${d}.CONFIG) + } +} + +# This overloads the same function from qt_functions.prf. +# This is not in qt_module.prf, as that gets loaded too late. +defineTest(qtConfig) { + modules = $$QT $$QT_PRIVATE $$QT_FOR_PRIVATE $$QT_FOR_CONFIG + modules ~= s,-private$,_private,g + modules = $$resolve_depends(modules, "QT.", ".depends") + isEmpty(MODULE): \ + MODULE = $$section($$list($$basename(_PRO_FILE_)), ., 0, 0) + exists($$OUT_PWD/qt$${MODULE}-config.pri) { + include($$OUT_PWD/qt$${MODULE}-config.pri) + modules += $${MODULE} $${MODULE}_private + } + modules += global global_private + modules = $$reverse(modules) + for (module, modules) { + contains(QT.$${module}.enabled_features, $$1): \ + return(true) + contains(QT.$${module}.disabled_features, $$1): \ + return(false) + } + error("Could not find feature $${1}.") +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_build_extra.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_build_extra.prf new file mode 100644 index 000000000..a1512c3a1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_build_extra.prf @@ -0,0 +1,41 @@ +# +# 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. +# + +equals(TEMPLATE, subdirs): return() + +# It's likely that these extra flags will be wrong for host builds, +# and the bootstrapped tools usually don't need them anyway. +host_build:cross_compile: return() + +# The headersclean check needs defines and includes even for +# header-only modules. +DEFINES += $$EXTRA_DEFINES +INCLUDEPATH += $$EXTRA_INCLUDEPATH + +# The other flags are relevant only for actual libraries. +equals(TEMPLATE, aux): return() + +QMAKE_LIBDIR += $$EXTRA_LIBDIR +QMAKE_FRAMEWORKPATH += $$EXTRA_FRAMEWORKPATH + +# Static libs need no rpaths +static: return() + +for (rp, EXTRA_RPATHS) { + absrp = $$absolute_path($$rp, $$[QT_INSTALL_LIBS]) + !isEqual(absrp, $$rp) { + isEmpty(QMAKE_REL_RPATH_BASE)|!contains(INSTALLS, target): \ + rp = $$absrp + else: \ + rp = $$relative_path($$absrp, $$qtRelativeRPathBase()) + } + QMAKE_RPATHDIR += $$rp +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_build_paths.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_build_paths.prf new file mode 100644 index 000000000..1848f00e9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_build_paths.prf @@ -0,0 +1,28 @@ +# +# 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. +# + +# Find the module's source root dir. +isEmpty(_QMAKE_CONF_): error("Project has no top-level .qmake.conf file.") +MODULE_BASE_INDIR = $$dirname(_QMAKE_CONF_) +MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_INDIR) +!isEmpty(MODULE_BASE_DIR): MODULE_SYNCQT_DIR = $$MODULE_BASE_DIR # compat for webkit +isEmpty(MODULE_SYNCQT_DIR): MODULE_SYNCQT_DIR = $$MODULE_BASE_INDIR +isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR + +exists($$MODULE_BASE_INDIR/.git): \ + CONFIG += git_build + +!force_independent { + # If the module is not built independently, everything ends up in qtbase. + # This is the case in non-prefix builds, except for selected modules. + MODULE_BASE_OUTDIR = $$[QT_HOST_PREFIX] + MODULE_QMAKE_OUTDIR = $$[QT_HOST_PREFIX] +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_clear_installs.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_clear_installs.prf new file mode 100644 index 000000000..66d12f9d6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_clear_installs.prf @@ -0,0 +1,12 @@ +# +# 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. +# + +INSTALLS = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_common.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_common.prf new file mode 100644 index 000000000..fb96d1b6a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_common.prf @@ -0,0 +1,118 @@ +# +# 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. +# + +QMAKE_DIR_REPLACE_SANE += DESTDIR +CONFIG -= debug_and_release_target + +DEFINES *= QT_NO_NARROWING_CONVERSIONS_IN_CONNECT + +qtConfig(c++11): CONFIG += c++11 strict_c++ +qtConfig(c++14): CONFIG += c++14 +qtConfig(c++1z): CONFIG += c++1z +qtConfig(stack-protector-strong): CONFIG += stack_protector_strong +contains(TEMPLATE, .*lib) { + # module and plugins + if(!host_build|!cross_compile):qtConfig(reduce_exports): CONFIG += hide_symbols + unix:qtConfig(reduce_relocations): CONFIG += bsymbolic_functions + qtConfig(separate_debug_info): CONFIG += separate_debug_info + + !isEmpty(_QMAKE_SUPER_CACHE_): \ + rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]* + else: \ + rplbase = $$MODULE_BASE_OUTDIR + host_build { + qqt_libdir = \$\$\$\$[QT_HOST_LIBS] + qt_libdir = $$[QT_HOST_LIBS] + } else { + qqt_libdir = \$\$\$\$[QT_INSTALL_LIBS] + qt_libdir = $$[QT_INSTALL_LIBS] + } + contains(QMAKE_DEFAULT_LIBDIRS, $$qt_libdir) { + lib_replace.match = "[^ ']*$$rplbase/lib" + lib_replace.replace = + } else { + lib_replace.match = $$rplbase/lib + lib_replace.replace = $$qqt_libdir + } + lib_replace.CONFIG = path + QMAKE_PRL_INSTALL_REPLACE += lib_replace +} + +# The remainder of this file must not apply to host tools/libraries, +# as the host compiler's version and capabilities are not checked. +host_build:cross_compile: return() + +# Extra warnings for Qt non-example code, to ensure cleanliness of the sources. +# The block below may turn these warnings into errors for some Qt targets. +# -Wdate-time: warn if we use __DATE__ or __TIME__ (we want to be able to reproduce the exact same binary) +# -Wvla: use of variable-length arrays (an extension to C++) +clang { + # Clang 3.5 introduced -Wdate-time + # The conditional assumes we aren't compiling against Clang 2.x anymore + greaterThan(QT_CLANG_MAJOR_VERSION, 3)|greaterThan(QT_CLANG_MINOR_VERSION, 4): \ + QMAKE_CXXFLAGS_WARN_ON += -Wdate-time +} else: gcc:!intel_icc { + QMAKE_CXXFLAGS_WARN_ON += -Wvla + # GCC 5 introduced -Wdate-time + greaterThan(QT_GCC_MAJOR_VERSION, 4): QMAKE_CXXFLAGS_WARN_ON += -Wdate-time + # GCC 6 introduced these + greaterThan(QT_GCC_MAJOR_VERSION, 5): QMAKE_CXXFLAGS_WARN_ON += -Wshift-overflow=2 -Wduplicated-cond + # GCC 7 has a lot of false positives relating to this, so disable completely + greaterThan(QT_GCC_MAJOR_VERSION, 6): QMAKE_CXXFLAGS_WARN_ON += -Wno-stringop-overflow +} + +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-4.2,5.0-5.1,6.0-6.4,7.0-7.3 + # Regular clang 3.x-5.0 + apple_ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION} + reg_ver = $${QT_CLANG_MAJOR_VERSION}.$${QT_CLANG_MINOR_VERSION} + contains(apple_ver, "4\\.[012]|5\\.[01]|6\\.[01234]|7\\.[0123]")|contains(reg_ver, "[34]\\.|5\\.0") { + QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=\\$${LITERAL_HASH}warnings -Wno-error=deprecated-declarations $$WERROR + } + } else:intel_icc:linux { + # Intel CC 13.0 - 17.0, on Linux only + ver = $${QT_ICC_MAJOR_VERSION}.$${QT_ICC_MINOR_VERSION} + linux:contains(ver, "(1[3456]\\.|17\\.0)") { + # 177: function "entity" was declared but never referenced + # (too aggressive; ICC reports even for functions created due to template instantiation) + # 1224: #warning directive + # 1478: function "entity" (declared at line N) was declared deprecated + # 1881: argument must be a constant null pointer value + # (NULL in C++ is usually a literal 0) + QMAKE_CXXFLAGS_WARN_ON += -Werror -ww177,1224,1478,1881 $$WERROR + } + } else:gcc:!clang:!intel_icc:!rim_qcc { + # GCC 4.6-4.9, 5.x, ... + ver = $${QT_GCC_MAJOR_VERSION}.$${QT_GCC_MINOR_VERSION} + contains(ver, "(4\\.[6789]|[5-9]\\..)") { + QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=cpp -Wno-error=deprecated-declarations $$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_WARN_ON += -Wno-error=strict-overflow + + # GCC 7 includes -Wimplicit-fallthrough in -Wextra, but Qt is not yet free of implicit fallthroughs. + greaterThan(QT_GCC_MAJOR_VERSION, 6): QMAKE_CXXFLAGS_WARN_ON += -Wno-error=implicit-fallthrough + + # Work-around for bug https://code.google.com/p/android/issues/detail?id=58135 + android: QMAKE_CXXFLAGS_WARN_ON += -Wno-error=literal-suffix + } + } else:msvc:!intel_icl { + # enable for MSVC 2012, MSVC 2013, MSVC 2015 + contains(MSVC_VER, "1[124].0"): QMAKE_CXXFLAGS_WARN_ON += -WX + } + unset(ver) +} + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_config.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_config.prf new file mode 100644 index 000000000..93c54e301 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_config.prf @@ -0,0 +1,42 @@ +# This file is loaded as one of the last things by all qmakespecs. + +QMAKE_QT_CONFIG = $$[QT_HOST_DATA/get]/mkspecs/qconfig.pri +!exists($$QMAKE_QT_CONFIG)|!include($$QMAKE_QT_CONFIG, "", true) { + debug(1, "Cannot load qconfig.pri!") +} else { + debug(1, "Loaded .qconfig.pri from ($$QMAKE_QT_CONFIG)") + dirs = $$(QMAKEMODULES) + QMAKE_MODULE_PATH = $$split(dirs, $$DIRLIST_SEPARATOR) + QMAKE_MODULE_PATH += $$QMAKEMODULES + dirs = $$[QMAKEMODULES] + QMAKE_MODULE_PATH += $$split(dirs, $$DIRLIST_SEPARATOR) + dirs = $$[QMAKE_MKSPECS] + dirs = $$split(dirs, $$DIRLIST_SEPARATOR) + QMAKE_MODULE_PATH += $$replace(dirs, \$, /modules) + unset(dirs) + QMAKE_MODULE_PATH = $$unique(QMAKE_MODULE_PATH) + QMAKE_MODULE_PATH = $$reverse(QMAKE_MODULE_PATH) + for(dir, QMAKE_MODULE_PATH) { + debug(1, "Loading modules from $${dir}") + mods = $$files($$dir/qt_*.pri) + for (mod, mods) { + # For installed Qt these paths will be common for all modules. + # For uninstalled prefix builds these will vary per module, via the + # forwarding module pri files. Keep qt_module_pris.prf in sync with this! + QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS] + QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS] + QT_MODULE_HOST_LIB_BASE = $$[QT_HOST_LIBS] + QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS] + include($$mod) + } + unset(mods) + } + QT_MODULES = $$unique(QT_MODULES) # In case modules appear in multiple places + unset(QT_MODULE_INCLUDE_BASE) + unset(QT_MODULE_LIB_BASE) + unset(QT_MODULE_HOST_LIB_BASE) + unset(QT_MODULE_BIN_BASE) +} + +load(qt_functions) + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_configure.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_configure.prf new file mode 100644 index 000000000..d5dcda22a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_configure.prf @@ -0,0 +1,2158 @@ + +QT_CONFIGURE_REPORT = +QT_CONFIGURE_NOTES = +QT_CONFIGURE_WARNINGS = +QT_CONFIGURE_ERRORS = + +defineTest(qtConfAddReport) { + QT_CONFIGURE_REPORT += "$$join(1, $$escape_expand(\\n))" + export(QT_CONFIGURE_REPORT) +} + +defineTest(qtConfAddNote) { + QT_CONFIGURE_NOTES += "Note: $$join(1, $$escape_expand(\\n))" + export(QT_CONFIGURE_NOTES) +} + +defineTest(qtConfAddWarning) { + QT_CONFIGURE_WARNINGS += "WARNING: $$join(1, $$escape_expand(\\n))" + export(QT_CONFIGURE_WARNINGS) +} + +defineTest(qtConfAddError) { + QT_CONFIGURE_ERRORS += "ERROR: $$join(1, $$escape_expand(\\n))" + export(QT_CONFIGURE_ERRORS) + equals(2, log):qt_conf_tests_allowed { + CONFIG += mention_config_log + export(CONFIG) + } +} + +defineTest(qtConfFatalError) { + qtConfAddError($$1, $$2) + qtConfPrintReport() + error() +} + +# Return a string list for the specified JSON path, which may be either a +# single string or an array of strings. +# Note that this returns a variable name, so it can be directly iterated over. +defineReplace(qtConfScalarOrList) { + defined($$1, var): return($$1) + vals = $$list() + for (i, $${1}._KEYS_): \ + $$vals += $$eval($${1}.$$i) + export($$vals) + return($$vals) +} + +defineTest(qtConfCommandlineSetInput) { + arg = $${1} + val = $${2} + !isEmpty($${currentConfig}.commandline.options.$${arg}.name): \ + arg = $$eval($${currentConfig}.commandline.options.$${arg}.name) + + config.input.$$arg = $$val + export(config.input.$$arg) +} + +defineReplace(qtConfGetNextCommandlineArg) { + c = $$take_first(QMAKE_EXTRA_ARGS) + export(QMAKE_EXTRA_ARGS) + return($$c) +} + +defineReplace(qtConfPeekNextCommandlineArg) { + return($$first(QMAKE_EXTRA_ARGS)) +} + +defineTest(qtConfCommandline_boolean) { + opt = $${1} + val = $${2} + isEmpty(val): val = yes + + !equals(val, yes):!equals(val, no) { + qtConfAddError("Invalid value given for boolean command line option '$$opt'.") + return() + } + + qtConfCommandlineSetInput($$opt, $$val) +} + +defineTest(qtConfCommandline_void) { + opt = $${1} + val = $${2} + !isEmpty(val) { + qtConfAddError("Command line option '$$opt' expects no argument ('$$val' given).") + return() + } + + val = $$eval($${currentConfig}.commandline.options.$${opt}.value) + isEmpty(val): val = yes + + qtConfCommandlineSetInput($$opt, $$val) +} + +defineTest(qtConfCommandline_enum) { + opt = $${1} + val = $${2} + isEmpty(val): val = yes + + # validate and map value + mapped = $$eval($${currentConfig}.commandline.options.$${opt}.values.$${val}) + isEmpty(mapped) { + # just a list of allowed values + for (i, $${currentConfig}.commandline.options.$${opt}.values._KEYS_) { + equals($${currentConfig}.commandline.options.$${opt}.values.$${i}, $$val) { + mapped = $$val + break() + } + } + } + isEmpty(mapped) { + qtConfAddError("Invalid value '$$val' supplied to command line option '$$opt'.") + return() + } + + qtConfCommandlineSetInput($$opt, $$mapped) +} + +defineTest(qtConfValidateValue) { + opt = $${1} + val = $${2} + + validValues = $$eval($${currentConfig}.commandline.options.$${opt}.values._KEYS_) + isEmpty(validValues): \ + return(true) + + for (i, validValues) { + equals($${currentConfig}.commandline.options.$${opt}.values.$${i}, $$val): \ + return(true) + } + + qtConfAddError("Invalid value '$$val' supplied to command line option '$$opt'.") + return(false) +} + +defineTest(qtConfCommandline_string) { + opt = $${1} + val = $${2} + nextok = $${3} + isEmpty(val):$$nextok: val = $$qtConfGetNextCommandlineArg() + + # Note: Arguments which are variable assignments are legit here. + contains(val, "^-.*")|isEmpty(val) { + qtConfAddError("No value supplied to command line option '$$opt'.") + return() + } + + !qtConfValidateValue($$opt, $$val): \ + return() + + qtConfCommandlineSetInput($$opt, $$val) +} + +defineTest(qtConfCommandline_optionalString) { + opt = $${1} + val = $${2} + nextok = $${3} + isEmpty(val) { + $$nextok: val = $$qtConfPeekNextCommandlineArg() + contains(val, "^-.*|[A-Z_]+=.*")|isEmpty(val): \ + val = "yes" + else: \ + val = $$qtConfGetNextCommandlineArg() + } + + !qtConfValidateValue($$opt, $$val): \ + return() + + qtConfCommandlineSetInput($$opt, $$val) +} + + +defineTest(qtConfCommandline_addString) { + opt = $${1} + val = $${2} + nextok = $${3} + isEmpty(val):$$nextok: val = $$qtConfGetNextCommandlineArg() + + # Note: Arguments which are variable assignments are legit here. + contains(val, "^-.*")|isEmpty(val) { + qtConfAddError("No value supplied to command line option '$$opt'.") + return() + } + + !qtConfValidateValue($$opt, $$val): \ + return() + + !isEmpty($${currentConfig}.commandline.options.$${opt}.name): \ + opt = $$eval($${currentConfig}.commandline.options.$${opt}.name) + + config.input.$$opt += $$val + export(config.input.$$opt) +} + +defineTest(qtConfCommandline_redo) { + !exists($$OUT_PWD/config.opt) { + qtConfAddError("No config.opt present - cannot redo configuration.") + return() + } + QMAKE_EXTRA_REDO_ARGS = $$cat($$OUT_PWD/config.opt, lines) + export(QMAKE_EXTRA_REDO_ARGS) # just for config.log + QMAKE_EXTRA_ARGS = $$QMAKE_EXTRA_REDO_ARGS $$QMAKE_EXTRA_ARGS + export(QMAKE_EXTRA_ARGS) + QMAKE_REDO_CONFIG = true + export(QMAKE_REDO_CONFIG) +} + +defineTest(qtConfParseCommandLine) { + customCalls = + for (cc, allConfigs) { + custom = $$eval($${cc}.commandline.custom) + + !isEmpty(custom) { + customCall = qtConfCommandline_$$custom + !defined($$customCall, test): \ + error("Custom command line callback '$$custom' is undefined.") + customCalls += $$customCall + } + } + + for (ever) { + c = $$qtConfGetNextCommandlineArg() + isEmpty(c): break() + + didCustomCall = false + for (customCall, customCalls) { + $${customCall}($$c) { + didCustomCall = true + break() + } + } + $$didCustomCall: \ + next() + + contains(c, "([A-Z_]+)=(.*)") { + opt = $$replace(c, "^([A-Z_]+)=(.*)", "\\1") + val = $$replace(c, "^([A-Z_]+)=(.*)", "\\2") + for (cc, allConfigs) { + var = $$eval($${cc}.commandline.assignments.$${opt}) + !isEmpty(var): \ + break() + } + isEmpty(var) { + qtConfAddError("Assigning unknown variable '$$opt' on command line.") + return() + } + config.input.$$var = $$val + export(config.input.$$var) + next() + } + + # parse out opt and val + nextok = false + contains(c, "^--?enable-(.*)") { + opt = $$replace(c, "^--?enable-(.*)", "\\1") + val = yes + } else: contains(c, "^--?(disable|no)-(.*)") { + opt = $$replace(c, "^--?(disable|no)-(.*)", "\\2") + val = no + } else: contains(c, "^--([^=]+)=(.*)") { + opt = $$replace(c, "^--([^=]+)=(.*)", "\\1") + val = $$replace(c, "^--([^=]+)=(.*)", "\\2") + } else: contains(c, "^--(.*)") { + opt = $$replace(c, "^--(.*)", "\\1") + val = + } else: contains(c, "^-(.*)") { + opt = $$replace(c, "^-(.*)", "\\1") + val = + nextok = true + for (cc, allConfigs) { + type = $$eval($${cc}.commandline.options.$${opt}) + !isEmpty(type): break() + type = $$eval($${cc}.commandline.options.$${opt}.type) + !isEmpty(type): break() + } + isEmpty(type):contains(opt, "(qt|system)-.*") { + val = $$replace(opt, "(qt|system)-(.*)", "\\1") + opt = $$replace(opt, "(qt|system)-(.*)", "\\2") + } + } else { + qtConfAddError("Invalid command line parameter '$$c'.") + return() + } + + for (cc, allConfigs) { + type = $$eval($${cc}.commandline.options.$${opt}) + isEmpty(type): \ + type = $$eval($${cc}.commandline.options.$${opt}.type) + isEmpty(type) { + # no match in the regular options, try matching the prefixes + for (p, $${cc}.commandline.prefix._KEYS_) { + e = "^-$${p}(.*)" + contains(c, $$e) { + opt = $$eval($${cc}.commandline.prefix.$${p}) + val = $$replace(c, $$e, "\\1") + nextok = true + type = "addString" + break() + } + } + } + !isEmpty(type) { + currentConfig = $$cc + break() + } + } + # handle builtin [-no]-feature-xxx + isEmpty(type):contains(opt, "feature-(.*)") { + opt ~= s,^feature-,, + found = false + for (cc, allConfigs) { + contains($${cc}.features._KEYS_, $$opt) { + found = true + break() + } + } + !$$found { + qtConfAddError("Enabling/Disabling unknown feature '$$opt'.") + return() + } + # this is a boolean enabling/disabling the corresponding feature + type = boolean + } + + isEmpty(type) { + qtConfAddError("Unknown command line option '$$c'.") + return() + } + + call = "qtConfCommandline_$${type}" + !defined($$call, test): \ + error("Command line option '$$c' has unknown type '$$type'.") + + # now that we have opt and value, process it + $${call}($$opt, $$val, $$nextok) + } +} + +defineReplace(qtConfToolchainSupportsFlag) { + test_out_dir = $$OUT_PWD/$$basename(QMAKE_CONFIG_TESTS_DIR) + test_cmd_base = "$$QMAKE_CD $$system_quote($$system_path($$test_out_dir)) &&" + + conftest = "int main() { return 0; }" + write_file("$$test_out_dir/conftest.cpp", conftest)|error() + + qtRunLoggedCommand("$$test_cmd_base $$QMAKE_CXX $${1} -o conftest-out conftest.cpp"): \ + return(true) + return(false) +} + +defineTest(qtConfTest_compilerSupportsFlag) { + flag = $$eval($${1}.flag) + + return($$qtConfToolchainSupportsFlag($$flag)) +} + +defineTest(qtConfTest_linkerSupportsFlag) { + flag = $$eval($${1}.flag) + + use_gold_linker: \ + LFLAGS = -fuse-ld=gold + + return($$qtConfToolchainSupportsFlag($$LFLAGS "-Wl,$$flag")) +} + +defineReplace(qtConfFindInPathList) { + for (dir, 2) { + exists("$$dir/$${1}"): \ + return("$$dir/$${1}") + } + return() +} + +defineReplace(qtConfFindInPath) { + ensurePathEnv() + return($$qtConfFindInPathList($$1, $$2 $$QMAKE_PATH_ENV)) +} + +defineReplace(qtConfPkgConfigEnv) { + env = + !isEmpty(PKG_CONFIG_SYSROOT_DIR): env = "$${SETENV_PFX}PKG_CONFIG_SYSROOT_DIR=$${PKG_CONFIG_SYSROOT_DIR}$${SETENV_SFX} " + !isEmpty(PKG_CONFIG_LIBDIR): env = "$$env$${SETENV_PFX}PKG_CONFIG_LIBDIR=$${PKG_CONFIG_LIBDIR}$${SETENV_SFX} " + return($$env) +} + +defineReplace(qtConfPkgConfig) { + host = $$1 + isEmpty(host): host = false + + $$host { + pkg_config = $$qtConfFindInPath("pkg-config") + } else { + pkg_config = "$$qtConfPkgConfigEnv()$$PKG_CONFIG_EXECUTABLE" + } + + return($$pkg_config) +} + +defineTest(qtConfPkgConfigPackageExists) { + isEmpty(1)|isEmpty(2): \ + return(false) + + !qtRunLoggedCommand("$${1} --exists --silence-errors $${2}"): \ + return(false) + + return(true) +} + +defineReplace(qtSystemQuote) { + args = + for (a, 1): \ + args += $$system_quote($$a) + return($$args) +} + +defineReplace(qtConfPrepareArgs) { + return($$qtSystemQuote($$split(1))) +} + +defineTest(qtConfSetupLibraries) { + asspfx = $${currentConfig}.commandline.assignments + for (l, $${currentConfig}.libraries._KEYS_) { + lpfx = $${currentConfig}.libraries.$${l} + # 'export' may be omitted, in which case it falls back to the library's name + !defined($${lpfx}.export, var) { + $${lpfx}.export = $$l + export($${lpfx}.export) + } + # 'export' may also be empty, but we need a derived identifier + alias = $$eval($${lpfx}.export) + isEmpty(alias): alias = $$l + $${lpfx}.alias = $$alias + export($${lpfx}.alias) + # make it easy to refer to the library by its export name. + $${currentConfig}.exports._KEYS_ += $$alias + $${currentConfig}.exports.$$alias += $$l + export($${currentConfig}.exports.$$alias) + isEmpty($${lpfx}.sources._KEYS_): \ + error("Library $$l defines no sources") + for (s, $${lpfx}.sources._KEYS_) { + spfx = $${lpfx}.sources.$${s} + # link back to parent object + $${spfx}.library = $$l + export($${spfx}.library) + # a plain string is transformed into a structure + isEmpty($${spfx}._KEYS_) { + $${spfx}.libs = $$eval($${spfx}) + export($${spfx}.libs) + } + # if the type is missing (implicitly in the case of plain strings), assume 'inline' + isEmpty($${spfx}.type) { + $${spfx}.type = inline + export($${spfx}.type) + } + } + } + $${currentConfig}.exports._KEYS_ = $$unique($${currentConfig}.exports._KEYS_) + export($${currentConfig}.exports._KEYS_) + + for (alias, $${currentConfig}.exports._KEYS_) { + ua = $$upper($$alias) + $${asspfx}._KEYS_ += \ + $${ua}_PREFIX $${ua}_INCDIR $${ua}_LIBDIR \ + $${ua}_LIBS $${ua}_LIBS_DEBUG $${ua}_LIBS_RELEASE + uapfx = $${asspfx}.$${ua} + $${uapfx}_PREFIX = $${alias}.prefix + $${uapfx}_INCDIR = $${alias}.incdir + $${uapfx}_LIBDIR = $${alias}.libdir + $${uapfx}_LIBS = $${alias}.libs + $${uapfx}_LIBS_DEBUG = $${alias}.libs.debug + $${uapfx}_LIBS_RELEASE = $${alias}.libs.release + export($${uapfx}_PREFIX) + export($${uapfx}_INCDIR) + export($${uapfx}_LIBDIR) + export($${uapfx}_LIBS) + export($${uapfx}_LIBS_DEBUG) + export($${uapfx}_LIBS_RELEASE) + } + export($${asspfx}._KEYS_) + + # reverse mapping for assignments on command line. + for (a, $${asspfx}._KEYS_) { + apfx = $${asspfx}.$${a} + ra = config.commandline.rev_assignments.$$eval($$apfx) + $$ra = $$a + export($$ra) + } +} + +# the library is specified inline in a 'libs' field. +# overrides from the command line are accepted. +defineTest(qtConfLibrary_inline) { + lib = $$eval($${1}.library) + !defined($${1}.libs, var):isEmpty($${1}.builds._KEYS_): \ + error("'inline' source in library '$$lib' specifies neither 'libs' nor 'builds'.") + + # if multiple libraries provide the same export, it makes sense + # to make them recognize the same input variables. + input = $$eval($${2}.alias) + + # build-specific direct libs. overwrites inline libs. + vars = + any = false + all = true + for (b, $$list(debug release)) { + iv = $${input}.libs.$${b} + vars += $$eval(config.commandline.rev_assignments.$${iv}) + defined(config.input.$${iv}, var) { + $${1}.builds.$${b} = $$eval(config.input.$${iv}) + export($${1}.builds.$${b}) + $${1}.builds._KEYS_ *= $${b} + any = true + } else { + all = false + } + } + $$any { + !$$all { + qtConfAddError("Either none or all of $$join(vars, ", ", [, ]) must be specified.") + return(false) + } + export($${1}.builds._KEYS_) + # we also reset the generic libs, to avoid surprises. + $${1}.libs = + export($${1}.libs) + } + + # direct libs. overwrites inline libs. + defined(config.input.$${input}.libs, var) { + $${1}.libs = $$eval(config.input.$${input}.libs) + export($${1}.libs) + } + + # prefix. prepends to (possibly overwritten) inline libs. + prefix = $$val_escape(config.input.$${input}.prefix) + !isEmpty(prefix) { + $${1}.includedir = $$prefix/include + export($${1}.includedir) + $${1}.libs = "-L$$prefix/lib $$eval($${1}.libs)" + export($${1}.libs) + } + + incdir = $$val_escape(config.input.$${input}.incdir) + !isEmpty(incdir) { + $${1}.includedir = $$incdir + export($${1}.includedir) + } + + libdir = $$val_escape(config.input.$${input}.libdir) + !isEmpty(libdir) { + $${1}.libs = "-L$$libdir $$eval($${1}.libs)" + export($${1}.libs) + } + + return(true) +} + +# the library is provided by the qmake spec. +# this source type cannot fail. +defineTest(qtConfLibrary_makeSpec) { + spec = $$eval($${1}.spec) + isEmpty(spec): \ + error("makeSpec source in library '$$eval($${1}.library)' does not specify 'spec'.") + + $${1}.includedir = "$$val_escape(QMAKE_INCDIR_$$spec)" + export($${1}.includedir) + libs = + for (l, QMAKE_LIBDIR_$$spec): \ + libs += -L$$l + libs += $$eval(QMAKE_LIBS_$$spec) + $${1}.libs = "$$val_escape(libs)" + export($${1}.libs) + + # the library definition is always in scope, so no point in exporting it. + $${1}.export = false + export($${1}.export) + + return(true) +} + +# the library is found via pkg-config. +defineTest(qtConfLibrary_pkgConfig) { + pkg_config = $$qtConfPkgConfig($$eval($${1}.host)) + isEmpty(pkg_config) { + qtLog("pkg-config use disabled globally.") + return(false) + } + args = $$qtConfPrepareArgs($$eval($${1}.args)) + + !qtConfPkgConfigPackageExists($$pkg_config, $$args) { + qtLog("pkg-config did not find package.") + return(false) + } + + qtRunLoggedCommand("$$pkg_config --modversion $$args", version)|return(false) + qtRunLoggedCommand("$$pkg_config --libs-only-L $$args", libpaths)|return(false) + qtRunLoggedCommand("$$pkg_config --libs-only-l $$args", libs)|return(false) + qtRunLoggedCommand("$$pkg_config --cflags $$args", $${1}.cflags)|return(false) + version ~= s/[^0-9.].*$// + $${1}.version = $$first(version) + export($${1}.version) + libpaths += $$libs + $${1}.libs = "$$libpaths" + export($${1}.libs) + return(true) +} + +defineTest(qtConfTest_getPkgConfigVariable) { + pkg_config = $$qtConfPkgConfig($$eval($${1}.host)) + isEmpty(pkg_config): \ + return(false) + args = $$qtConfPrepareArgs($$eval($${1}.pkg-config-args)) + + !qtConfPkgConfigPackageExists($$pkg_config, $$args): \ + return(false) + + variable = $$eval($${1}.pkg-config-variable) + qtRunLoggedCommand("$$pkg_config --variable=$$variable $$args", $${1}.value)|return(false) + export($${1}.value) + $${1}.cache += value + export($${1}.cache) + return(true) +} + +defineReplace(qtConfLibraryArgs) { + qmake_args = + libs = $$eval($${1}.libs) + !isEmpty(libs): \ + qmake_args += $$system_quote(LIBS += $$libs) + for (b, $${1}.builds._KEYS_): \ + qmake_args += $$system_quote(LIBS_$$upper($$b) += $$eval($${1}.builds.$${b})) + includedir = $$eval($${1}.includedir) + !isEmpty(includedir): \ + qmake_args += $$system_quote(INCLUDEPATH *= $$includedir) + cflags = $$eval($${1}.cflags) + !isEmpty(cflags): \ + qmake_args += $$system_quote(QMAKE_CFLAGS += $$cflags) $$system_quote(QMAKE_CXXFLAGS += $$cflags) + return($$qmake_args) +} + +defineTest(qtConfExportLibrary) { + lpfx = $${currentConfig}.libraries.$$1 + alias = $$eval($${lpfx}.alias) + $${currentConfig}.found.$$alias = $$1 + export($${currentConfig}.found.$$alias) + name = $$eval($${lpfx}.export) + isEmpty(name): return() + spfx = $${lpfx}.sources.$$eval($${lpfx}.source) + !$$qtConfEvaluate($$eval($${spfx}.export)): return() + + output = privatePro + + eval(libs = $$eval($${spfx}.libs)) + eval(cflags = $$eval($${spfx}.cflags)) + eval(includes = $$eval($${spfx}.includedir)) + + # Split $$cflags into stuff that goes into DEFINES, INCLUDEPATH, and other stuff. + defines = + ignored = + for (i, cflags) { + contains(i, "-I.*") { + i ~= s/^-I// + includes += $$i + } else: contains(i, "-D.*") { + i ~= s/^-D// + defines += $$i + } else { + # Sometimes, pkg-config files or *-config scripts include other flags + # we really don't need and shouldn't add (pg_config is really bad). + ignored += $$i + } + } + !isEmpty(ignored): \ + qtConfAddNote("Dropped compiler flags '$$ignored' when detecting library '$$name'.") + + NAME = $$upper($$name) + # LIBS is emitted even if empty, as this allows the library to be "seen". + qtConfOutputVar(assign, $$output, QMAKE_LIBS_$$NAME, $$libs) + for (b, $${spfx}.builds._KEYS_) { + eval(blibs = $$eval($${spfx}.builds.$${b})) + qtConfOutputVar(assign, $$output, QMAKE_LIBS_$${NAME}_$$upper($$b), $$blibs) + } + !isEmpty(defines): qtConfOutputVar(assign, $$output, QMAKE_DEFINES_$$NAME, $$defines) + !isEmpty(includes): qtConfOutputVar(assign, $$output, QMAKE_INCDIR_$$NAME, $$includes) + !isEmpty($${currentConfig}.module): \ + qtConfExtendVar($$output, "QT.$${currentModule}_private.libraries", $$name) +} + +defineTest(qtConfHandleLibrary) { + lpfx = $${currentConfig}.libraries.$$1 + defined($${lpfx}.result, var): return() + + alias = $$eval($${lpfx}.alias) + !isEmpty($${currentConfig}.found.$$alias) { + # this happening indicates a logic error in the conditions + # of the feature(s) referring to this library. + # note that this does not look across module boundaries, as + # multiple modules may know the same libraries; de-duplication + # happens via the cache (obviously, this assumes identical + # definitions and logic). + error("A library exporting '$$alias' was already found.") + } + + qtConfEnsureTestTypeDeps("library") + !qtConfTestPrepare_compile($$lpfx) { + $${lpfx}.result = false + export($${lpfx}.result) + return() + } + use_args = $$eval($${lpfx}.literal_args) + + qtConfLoadResult($${lpfx}, $$1) { + $$eval($${lpfx}.result): \ + qtConfExportLibrary($$1) + return() + } + + qtLogTestIntro($${lpfx}, "looking for library $${1}") + + result = false + for (s, $${lpfx}.sources._KEYS_) { + spfx = $${lpfx}.sources.$${s} + + t = $$eval($${spfx}.type) + call = qtConfLibrary_$$t + !defined($$call, test): \ + error("Library $${1} source $${s} has unknown type '$$t'") + + qtLog("Trying source $$s (type $$t) of library $${1} ...") + + cond = $$eval($${spfx}.condition) + !$$qtConfEvaluate($$cond) { + qtLog(" => source failed condition '$$cond'.") + next() + } + + !$${call}($$spfx, $$lpfx) { + qtLog(" => source produced no result.") + next() + } + + # if the library defines a test, use it to verify the source. + !isEmpty($${lpfx}.test)|!isEmpty($${lpfx}.test._KEYS_) { + $${lpfx}.literal_args = $$qtConfLibraryArgs($$spfx) $$use_args + $${lpfx}.host = $$eval($${spfx}.host) + !qtConfTest_compile($$lpfx) { + qtLog(" => source failed verification.") + next() + } + } + + qtLog(" => source accepted.") + + $${lpfx}.cache += source + for (v, $$list(libs includedir cflags version export)): \ + $${lpfx}.cache += sources.$${s}.$${v} + for (b, $${spfx}.builds._KEYS_): \ + $${lpfx}.cache += sources.$${s}.builds.$${b} + + $${lpfx}.source = $$s + export($${lpfx}.source) + + # immediately output the library as well. + qtConfExportLibrary($$1) + + result = true + break() + } + + qtLogTestResult($${lpfx}, $$result) + + $${lpfx}.result = $$result + export($${lpfx}.result) + qtConfSaveResult($${lpfx}, $$1) +} + +# This is a fake test type for the test dependency system. +defineTest(qtConfTest_library) { + error("The test type 'library' may not be instantiated.") +} + +defineTest(qtConfTestPrepare_compile) { + !isEmpty($${1}.use._KEYS_) { + uses = + for (k, $${1}.use._KEYS_) { + use = $$eval($${1}.use.$${k}.lib) + isEmpty(use): \ + error("'use' entry $$k in test $$1 lacks 'lib' field.") + !$$qtConfEvaluate($$eval($${1}.use.$${k}.condition)): \ + next() + uses += $$use + } + } else { + uses = $$split($${1}.use) + } + for (u, uses) { + libConfig = + exports = $$eval($${currentConfig}.exports.$$u) + !isEmpty(exports) { + # using a local library by exported name. + ru = $$eval($${currentConfig}.found.$$u) + !isEmpty(ru) { + # if it was already found, all is good. + u = $$ru + } else: count(exports, 1) { + # otherwise, if there is only one option, ensure it's resolved. + u = $$exports + qtConfHandleLibrary($$u) + } else { + # otherwise, verify that all options were resolved. + for (x, exports) { + isEmpty($${currentConfig}.libraries.$${x}.result) { + # the higher-level logic is in the features, which we cannot + # infer from here. so the only option is failing. + error("Test $$1 refers to yet unresolved library export '$$u'") + } + } + return(false) + } + libConfig = $$currentConfig + } else: contains($${currentConfig}.libraries._KEYS_, $$u) { + # using a local library by real name. this should be the exception. + qtConfHandleLibrary($$u) + libConfig = $$currentConfig + } else { + for (d, QMAKE_LIBRARY_DEPS) { + exports = $$eval($${d}.exports.$$u) + !isEmpty(exports) { + # using a foreign library by exported name. + # foreign libraries may be external (if they are from a different + # repository and the build is modular), and using these by real + # name is impossible. so for consistency, uses by real name are + # limited to local libraries. + ru = $$eval($${d}.found.$$u) + !isEmpty(ru) { + u = $$ru + libConfig = $$d + break() + } + for (x, exports) { + isEmpty($${d}.libraries.$${x}.result): \ + error("Test $$1 refers to unresolved library export '$$u' in '$$d'") + } + return(false) + } + } + } + isEmpty(libConfig) { + nu = $$upper($$u) + !defined(QMAKE_LIBS_$$nu, var): \ + error("Test $$1 tries to use undeclared library '$$u'") + # using an external library by exported name. + $${1}.literal_args += $$system_quote(QMAKE_USE += $$u) + } else { + lpfx = $${libConfig}.libraries.$${u} + isEmpty($${lpfx}.source): \ + return(false) + $${1}.literal_args += $$qtConfLibraryArgs($${lpfx}.sources.$$eval($${lpfx}.source)) + } + } + export($${1}.literal_args) + return(true) +} + +defineTest(qtConfPrepareCompileTestSource) { + test_dir = $$2 + + # Create source code + contents = "/* Generated by configure */" + # Custom code before includes + for (ent, $$qtConfScalarOrList($${1}.head)): \ + contents += $$ent + # Includes + for (ent, $$qtConfScalarOrList($${1}.include)): \ + contents += "$${LITERAL_HASH}include <$$ent>" + # Custom code after includes + for (ent, $$qtConfScalarOrList($${1}.tail)): \ + contents += $$ent + # And finally the custom code inside main() + contents += \ + "int main(int argc, char **argv)" \ + "{" \ + " (void)argc; (void)argv;" \ + " /* BEGIN TEST: */" + for (ent, $$qtConfScalarOrList($${1}.main)): \ + contents += " $$ent" + contents += \ + " /* END TEST */" \ + " return 0;" \ + "}" + write_file($$test_dir/main.cpp, contents)|error() + + # Create stub .pro file + contents = "SOURCES = main.cpp" + # Custom project code + for (ent, $$qtConfScalarOrList($${1}.qmake)): \ + contents += $$ent + write_file($$test_dir/$$basename(test_dir).pro, contents)|error() +} + +defineTest(qtConfTest_compile) { + test = $$eval($${1}.test) + host = $$eval($${1}.host) + isEmpty(host): host = false + + test_base_out_dir = $$OUT_PWD/$$basename(QMAKE_CONFIG_TESTS_DIR) + isEmpty(test) { + test_dir = $$test_base_out_dir/$$section(1, ".", -1) + test_out_dir = $$test_dir + qtConfPrepareCompileTestSource($${1}.test, $$test_dir) + } else { + test_dir = $$QMAKE_CONFIG_TESTS_DIR/$$test + test_out_dir = $$test_base_out_dir/$$test + !isEmpty($${1}.pro): \ + test_dir = $$test_dir/$$eval($${1}.pro) + } + test_cmd_base = "$$QMAKE_CD $$system_quote($$system_path($$test_out_dir)) &&" + + qmake_args = $$qtConfPkgConfigEnv()$$system_quote($$system_path($$QMAKE_QMAKE)) + !isEmpty(QMAKE_QTCONF): \ + qmake_args += -qtconf $$system_quote($$QMAKE_QTCONF) + + # Disable qmake features which are typically counterproductive for tests + qmake_args += "\"CONFIG -= qt debug_and_release app_bundle lib_bundle\"" + + # allow tests to behave differently depending on the type of library + # being built (shared/static). e.g. see config.tests/unix/icu + shared: \ + qmake_configs = "shared" + else: \ + qmake_configs = "static" + + use_gold_linker: \ + qmake_configs += "use_gold_linker" + + # disable warnings from the builds, since they're just noise at this point. + qmake_configs += "warn_off" + + # add console to the CONFIG variable when running the tests, so that they + # can work with a regular main() entry point on Windows. + qmake_configs += "console" + + # for platforms with multiple architectures (macOS, iOS, tvOS, watchOS), + # make sure tests are only built for a single architecture + qmake_configs += "single_arch" + + qmake_args += "\"CONFIG += $$qmake_configs\"" + + !$$host|!cross_compile { + # On WinRT we need to change the entry point as we cannot create windows + # applications + winrt: \ + qmake_args += " \"QMAKE_LFLAGS += /ENTRY:main\"" + + # add compiler flags, these are set for the target and should not be applied to host tests + !isEmpty(EXTRA_DEFINES): \ + qmake_args += $$system_quote(DEFINES += $$val_escape(EXTRA_DEFINES)) + !isEmpty(EXTRA_LIBDIR) \ + qmake_args += $$system_quote(QMAKE_LIBDIR += $$val_escape(EXTRA_LIBDIR)) + !isEmpty(EXTRA_FRAMEWORKPATH) \ + qmake_args += $$system_quote(QMAKE_FRAMEWORKPATH += $$val_escape(EXTRA_FRAMEWORKPATH)) + !isEmpty(EXTRA_INCLUDEPATH): \ + qmake_args += $$system_quote(INCLUDEPATH += $$val_escape(EXTRA_INCLUDEPATH)) + qmake_args += $$EXTRA_QMAKE_ARGS + } + + # make sure to make this the last override (because of -early) + cross_compile { + # must be done before loading default_pre.prf. + qmake_args += -early "\"CONFIG += cross_compile\"" + } + + # Clean up after previous run + exists($$test_out_dir/Makefile): \ + QMAKE_MAKE = "$$QMAKE_MAKE clean && $$QMAKE_MAKE" + + mkpath($$test_out_dir)|error() + write_file($$test_base_out_dir/.qmake.cache)|error() + + # add possible command line args + qmake_args += $$qtConfPrepareArgs($$eval($${1}.args)) $$eval($${1}.literal_args) + + qtRunLoggedCommand("$$test_cmd_base $$qmake_args $$system_quote($$test_dir)") { + qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE"): \ + return(true) + } + + return(false) +} + +defineTest(qtConfTest_verifySpec) { + qtConfTest_compile($$1): return(true) + qtConfFatalError("Cannot compile a minimal program. The toolchain or QMakeSpec is broken.", log) +} + +defineTest(qtConfTest_files) { + for(i, $${1}.files._KEYS_) { + f = $$eval($${1}.files.$${i}) + qtLog("Searching for file $${f}.") + contains(f, ".*\.h") { + file = $$qtConfFindInPathList($$f, $$EXTRA_INCLUDEPATH $$QMAKE_DEFAULT_INCDIRS) + } else: contains(f, ".*\.(lib|so|a)") { + file = $$qtConfFindInPathList($$f, $$EXTRA_LIBDIR $$QMAKE_DEFAULT_LIBDIRS) + } else { + # assume we're looking for an executable + file = $$qtConfFindInPath($$f, $$EXTRA_PATH) + } + isEmpty(file) { + qtLog(" Not found."); + return(false) + } + qtLog(" Found at $${file}.") + } + return(true) +} + +defineTest(logn) { + log("$${1}$$escape_expand(\\n)") +} + +defineTest(qtLogTestIntro) { + label = $$eval($${1}.label) + isEmpty(label): return() + + log("Checking for $${label}... ") + $$QMAKE_CONFIG_VERBOSE: log("$$escape_expand(\\n)") + write_file($$QMAKE_CONFIG_LOG, 2, append) +} + +defineTest(qtLogTestResult) { + isEmpty($${1}.label): return() + + !isEmpty($${1}.log) { + field = $$eval($${1}.log) + log_msg = $$eval($${1}.$$field) + msg = "test $$1 gave result $$log_msg" + } else: $${2} { + log_msg = yes + msg = "test $$1 succeeded" + } else { + log_msg = no + msg = "test $$1 FAILED" + } + $$QMAKE_CONFIG_VERBOSE: log_msg = $$msg + logn("$$log_msg") + write_file($$QMAKE_CONFIG_LOG, msg, append) +} + +defineTest(qtConfSaveResult) { + equals($${1}.cache, -): \ + return() + keys = result $$eval($${1}.cache) + cont = "cache.$${2}._KEYS_ = $$keys" + cache.$${2}._KEYS_ = $$keys + export(cache.$${2}._KEYS_) + for (k, keys) { + cont += "cache.$${2}.$${k} = $$val_escape($${1}.$${k})" + cache.$${2}.$${k} = $$eval($${1}.$${k}) + export(cache.$${2}.$${k}) + } + write_file($$QMAKE_CONFIG_CACHE, cont, append)|error() +} + +defineTest(qtConfLoadResult) { + equals(QMAKE_CONFIG_CACHE_USE, none): \ + return(false) + isEmpty(cache.$${2}._KEYS_): \ + return(false) + equals(QMAKE_CONFIG_CACHE_USE, positive):!$$eval(cache.$${2}.result): \ + return(false) + for (k, cache.$${2}._KEYS_) { + $${1}.$${k} = $$eval(cache.$${2}.$${k}) + export($${1}.$${k}) + } + return(true) +} + +defineTest(qtConfIsBoolean) { + equals(1, "true")|equals(1, "false"): \ + return(true) + return(false) +} + +defineTest(qtConfSetupTestTypeDeps) { + for (tt, $${currentConfig}.testTypeDependencies._KEYS_) { + !defined(qtConfTest_$${tt}, test): \ + error("Declaring dependency for undefined test type '$$tt'.") + for (f, $${currentConfig}.testTypeDependencies.$${tt}._KEYS_) { + feature = $$eval($${currentConfig}.testTypeDependencies.$${tt}.$${f}) + isEmpty($${currentConfig}.features.$${feature}._KEYS_): \ + error("Test type '$$tt' depends on undefined feature '$$feature'.") + } + } + # Test type aliasing means that one test type's callback is called by + # another test type's callback. Put differently, one callback forwards + # the call to another one. The former representation is more natural + # (and concise) to write, while the latter is more efficient to process. + # Hence, this function inverts the mapping. + for (tt, $${currentConfig}.testTypeAliases._KEYS_) { + !defined(qtConfTest_$${tt}, test): \ + error("Aliasing undefined test type '$$tt'.") + for (tta, $${currentConfig}.testTypeAliases.$${tt}._KEYS_) { + type = $$eval($${currentConfig}.testTypeAliases.$${tt}.$${tta}) + !defined(qtConfTest_$${type}, test): \ + error("Aliasing '$$tt' to undefined test type '$$type'.") + $${currentConfig}.testTypeForwards.$${type} += $$tt + export($${currentConfig}.testTypeForwards.$${type}) + } + } +} + +defineTest(qtConfEnsureTestTypeDeps) { + depsn = $${currentConfig}.testTypeDependencies.$${1}._KEYS_ + !isEmpty($$depsn) { + for (dep, $$depsn) { + feature = $$eval($${currentConfig}.testTypeDependencies.$${1}.$${dep}) + !qtConfCheckFeature($$feature): \ + error("Test type '$$1' depends on non-emitted feature $${feature}.") + } + $$depsn = + export($$depsn) + } + fwdsn = $${currentConfig}.testTypeForwards.$${1} + !isEmpty($$fwdsn) { + for (fwd, $$fwdsn): \ + qtConfEnsureTestTypeDeps($$fwd) + $$fwdsn = + export($$fwdsn) + } +} + +defineTest(qtRunSingleTest) { + tpfx = $${currentConfig}.tests.$${1} + defined($${tpfx}.result, var): \ + return() + + type = $$eval($${tpfx}.type) + call = "qtConfTest_$$type" + !defined($$call, test): \ + error("Configure test $${1} refers to nonexistent type $$type") + + qtConfEnsureTestTypeDeps($$type) + + preCall = "qtConfTestPrepare_$$type" + defined($$preCall, test):!$${preCall}($${tpfx}) { + $${tpfx}.result = false + export($${tpfx}.result) + # don't cache the result; the pre-deps have their own caches. + return() + } + + # note: we do this only after resolving the dependencies and the + # preparation (which may resolve libraries), so that caching does + # not alter the execution order (and thus the output). + qtConfLoadResult($${tpfx}, $$1): \ + return() + + qtLogTestIntro($${tpfx}, "executing config test $${1}") + + result = false + $${call}($${tpfx}): result = true + + qtLogTestResult($${tpfx}, $$result) + + $${tpfx}.result = $$result + export($${tpfx}.result) + qtConfSaveResult($${tpfx}, $$1) +} + +defineTest(qtConfHaveModule) { + module = $$replace(1, -, _) + !isEmpty(QT.$${module}.skip):$$eval(QT.$${module}.skip): \ + return(false) + !isEmpty(QT.$${module}.name): \ + return(true) + return(false) +} + +defineReplace(qtConfEvaluate) { + isEmpty(1): return(true) + + 1 ~= s/$$escape_expand(\\t)/ /g + 1 ~= s/$$escape_expand(\\r)//g + 1 ~= s/$$escape_expand(\\n) */ /g + expr = $${1} + expr ~= s/&&/ && /g + expr ~= s/\|\|/ || /g + expr ~= s/!/ ! /g + expr ~= s/\\(/ ( /g + expr ~= s/\\)/ ) /g + expr ~= s/ *== */==/g + expr ~= s/ *! = */!=/g + expr_list = $$eval($$list($$expr)) + return($$qtConfEvaluateSubExpression($${1}, $$expr_list, 0)) +} + +defineReplace(qtConfEvaluateSingleExpression) { + e = $${2} + + equals(e, true) { + result = true + } else: equals(e, false) { + result = false + } else: contains(e, "^[0-9]+$") { + # numbers + result = $$e + } else: contains(e, "^'.*'$") { + # quoted literals + result = $$replace(e, "^'(.*)'$", "\\1") + } else: contains(e, "^tests\..*") { + !qt_conf_tests_allowed: \ + error("Expression '$${1}' refers to a test, which is not allowed at this stage of configuring.") + test = $$section(e, ".", 1, 1) + var = $$section(e, ".", 2, -1) + isEmpty(var): \ + var = result + !contains($${currentConfig}.tests._KEYS_, $$test): \ + error("Unknown test object $${test} in expression '$${1}'.") + qtRunSingleTest($$test) + result = $$eval($${currentConfig}.tests.$${test}.$${var}) + } else: contains(e, "^libs\..*") { + !qt_conf_tests_allowed: \ + error("Expression '$${1}' refers to a library, which is not allowed at this stage of configuring.") + lib = $$section(e, ".", 1, 1) + var = $$section(e, ".", 2, -1) + isEmpty(var): \ + var = result + !contains($${currentConfig}.libraries._KEYS_, $$lib): \ + error("Unknown library object $${lib} in expression '$${1}'.") + qtConfHandleLibrary($$lib) + !defined($${currentConfig}.libraries.$${lib}.$${var}, var): \ + var = sources.$$eval($${currentConfig}.libraries.$${lib}.source).$$var + result = $$eval($${currentConfig}.libraries.$${lib}.$${var}) + } else: contains(e, "^features\..*") { + feature = $$section(e, ".", 1, 1) + var = $$section(e, ".", 2, -1) + isEmpty(var): \ + var = available + !contains($${currentConfig}.features._KEYS_, $$feature) { + # this is basically a copy of what qtConfig() in qt_build_config.prf + # does, but we produce a nicer error message. + for (module, QMAKE_CONFIG_DEPS) { + contains(QT.$${module}.enabled_features, $$feature): \ + result = true + else: contains(QT.$${module}.disabled_features, $$feature): \ + result = false + else: \ + next() + !equals(var, available): \ + error("Expression '$$1' is accessing field '$$var' of non-local feature $${feature}.") + return($$result) + } + error("Unknown feature object $${feature} in expression '$${1}'.") + } + !qtConfCheckFeature($$feature): \ + error("Expression '$$1' is accessing non-emitted feature $${feature}.") + result = $$eval($${currentConfig}.features.$${feature}.$${var}) + } else: contains(e, "^config\..*") { + var = $$replace(e, "^config\.", "") + result = false + contains(CONFIG, $$var): result = true + } else: contains(e, "^module\..*") { + var = $$replace(e, "^module\.", "") + result = false + qtConfHaveModule($$var): result = true + } else: contains(e, "^arch\..*") { + var = $$replace(e, "^arch\.", "") + result = false + isEmpty(QT_ARCH): \ + qtConfCheckFeature(architecture) + contains(QT_ARCH, $$var): result = true + } else: contains(e, "^input\..*") { + result = $$eval(config.$$e) + } else: contains(e, "^var\..*") { + var = $$replace(e, "^var\.", "") + result = $$eval($$var) + } else: contains(e, "^call\..*") { + call = $$replace(e, "^call\.", "qtConfFunc_") + !defined($$call, replace): \ + error("Call $$call referenced in expression '$${1}' does not exist") + eval(result = \$\$"$$call"()) + } else { + error("Unrecognized token $$e in expression '$${1}'") + } + return($$result) +} + +defineReplace(qtConfEvaluateSubExpression) { + expr_list = $${2} + result = true + negate = false + runSubExpression = false + nesting_level = 0 + for (n, $${3}..$$num_add($$size(expr_list), -1)) { + e = $$member(expr_list, $$n) + $$runSubExpression { + runSubExpression = false + result = $$qtConfEvaluateSubExpression($${1}, $$expr_list, $$n) + } else: isEqual(e, "(") { + isEqual(nesting_level, 0): runSubExpression = true + nesting_level = $$num_add($$nesting_level, 1) + next() + } else: isEqual(e, ")") { + nesting_level = $$num_add($$nesting_level, -1) + lessThan(nesting_level, 0): break() + next() + } else: greaterThan(nesting_level, 0) { + next() + } else: isEqual(e, "!") { + negate = true + next() + } else: isEqual(e, "&&") { + !qtConfIsBoolean($$result): \ + error("Left hand side of && is non-boolean value '$$result' in expression '$${1}'") + !$$result: return(false) + } else: isEqual(e, "||") { + !qtConfIsBoolean($$result): \ + error("Left hand side of || is non-boolean value '$$result' in expression '$${1}'") + $$result: return(true) + } else { + contains(e, ".*==.*") { + lhs = $$qtConfEvaluateSingleExpression($${1}, $$replace(e, "==.*", "")) + rhs = $$qtConfEvaluateSingleExpression($${1}, $$replace(e, ".*==", "")) + result = false + equals(lhs, $$rhs): result = true + } else: contains(e, ".*!=.*") { + lhs = $$qtConfEvaluateSingleExpression($${1}, $$replace(e, "!=.*", "")) + rhs = $$qtConfEvaluateSingleExpression($${1}, $$replace(e, ".*!=", "")) + result = false + !equals(lhs, $$rhs): result = true + } else { + result = $$qtConfEvaluateSingleExpression($${1}, $$e) + } + } + $$negate { + !qtConfIsBoolean($$result): \ + error("Attempting to negate a non-boolean value '$$result' in expression '$${1}'") + $$result: \ + result = false + else: \ + result = true + negate = false + } + } + return($$result) +} + +defineReplace(qtIsFeatureEnabled) { + enable = $$eval($${currentConfig}.features.$${1}.enable) + !isEmpty(enable) { + $$qtConfEvaluate($$enable): \ + return(true) + } else { + equals(config.input.$${1}, "yes"): \ + return(true) + } + + return(false) +} + +defineReplace(qtIsFeatureDisabled) { + disable = $$eval($${currentConfig}.features.$${1}.disable) + !isEmpty(disable) { + $$qtConfEvaluate($$disable): \ + return(true) + } else { + equals(config.input.$${1}, "no"): \ + return(true) + } + + return(false) +} + +defineReplace(qtConfCheckSingleCondition) { + result = $$qtConfEvaluate($$2) + + !qtConfIsBoolean($$result): \ + error("Evaluation of condition '$$2' yielded non-boolean value '$$result' in feature '$${1}'.") + + !$$result { + $${3} { + qtConfAddError("Feature '$${1}' was enabled, but the pre-condition '$$2' failed.", log) + $$result = true + } + } + return($$result) +} + +defineTest(qtConfCheckFeature) { + fpfx = $${currentConfig}.features.$${1} + + available = $$eval($${fpfx}.available) + !isEmpty(available): return(true) + + # skip features that will not get emitted anyway + emitIf = $$qtConfEvaluate($$eval($${fpfx}.emitIf)) + enabled = $$qtIsFeatureEnabled($$1) + disabled = $$qtIsFeatureDisabled($$1) + + !$$emitIf { + $$enabled|$$disabled: \ + qtConfAddWarning("Feature $${1} is insignificant in this configuration, ignoring related command line option(s).") + return(false) + } + + $$disabled { + result = false + } else: !$$enabled:!$$qtConfEvaluate($$eval($${fpfx}.autoDetect)) { + # feature not auto-detected and not explicitly enabled + result = false + } else { + result = true + for (condition, $$qtConfScalarOrList($${fpfx}.condition)) { + result = $$qtConfCheckSingleCondition($$1, $$condition, $$enabled) + !$$result: break() + } + } + $${fpfx}.available = $$result + export($${fpfx}.available) + + for (i, $${fpfx}.output._KEYS_): \ + qtConfProcessOneOutput($${1}, $$i) + + return(true) +} + +defineTest(qtConfCheckModuleCondition) { + QT.$${currentModule}.skip = false + !$$qtConfEvaluate($$eval($${currentConfig}.condition)): \ + QT.$${currentModule}.skip = true + export(QT.$${currentModule}.skip) + + # ensure qtConfHaveModule() works + QT.$${currentModule}.name = - + export(QT.$${currentModule}.name) +} + + +defineTest(qtConfProcessFeatures) { + for (feature, $${currentConfig}.features._KEYS_): \ + qtConfCheckFeature($$feature) +} + +# +# reporting +# + +defineReplace(qtConfPadCols) { + pad = $$num_add($$str_size($$2), -$$str_size($${1})) + lessThan(pad, 0): pad = 0 + return("$$1 $$str_member($$2, 0, $$pad) $$3") +} + +defineTest(qtConfReportPadded) { + qtConfAddReport($$qtConfPadCols($$1, "........................................", $$2)) +} + +defineReplace(qtConfCollectFeatures) { + l = + for (feature, $$list($${1})) { + $$eval($${currentConfig}.features.$${feature}.available): \ + l += $$eval($${currentConfig}.features.$${feature}.label) + } + + isEmpty(l): return("<none>") + return($$join(l, ' ')) +} + +defineTest(qtConfReport_featureList) { + qtConfReportPadded($${1}, $$qtConfCollectFeatures($${2})) +} + +defineReplace(qtConfFindFirstAvailableFeature) { + for (feature, $$list($${1})) { + isEmpty($${currentConfig}.features.$${feature}._KEYS_): \ + error("Asking for a report on undefined feature $${2}.") + $$eval($${currentConfig}.features.$${feature}.available): \ + return($$eval($${currentConfig}.features.$${feature}.label)) + } + + return("<none>") +} + +defineTest(qtConfReport_firstAvailableFeature) { + qtConfReportPadded($${1}, $$qtConfFindFirstAvailableFeature($${2})) +} + +defineTest(qtConfReport_feature) { + !contains($${currentConfig}.features._KEYS_, $$2): \ + error("Asking for a report on undefined feature $${2}.") + + # hide report for not emitted features + isEmpty($${currentConfig}.features.$${2}.available): \ + return() + + $$eval($${currentConfig}.features.$${2}.available) { + result = "yes" + !isEmpty(3): result = "$${3}" + } else { + result = "no" + !isEmpty(4): result = "$${4}" + } + + text = $$eval($${currentConfig}.features.$${2}.label) + + qtConfReportPadded($${1}$$text, $$result) +} + +defineTest(qtConfReport_note) { + qtConfAddNote($${1}) +} + +defineTest(qtConfReport_warning) { + qtConfAddWarning($${1}) +} + +defineTest(qtConfReport_error) { + qtConfAddError($${1}, log) +} + +defineTest(qtConfReport_fatal) { + qtConfFatalError($${1}) +} + +defineTest(qtConfCreateReportRecurse) { + equals(2, false) { + indent = "" + recurse = false + } else { + indent = $${2} + recurse = true + } + + keys = $$eval($${1}._KEYS_) + for (n, keys) { + entry = $${1}.$$n + subKeys = $$eval($${entry}._KEYS_) + contains(subKeys, condition) { + condition = $$eval($${entry}.condition) + r = $$qtConfEvaluate($$condition) + !qtConfIsBoolean($$r): \ + error("Evaluation of condition '$$condition' in report entry $${entry} yielded non-boolean value '$$r'.") + !$$r: next() + } + contains(subKeys, "section") { + !$$recurse: \ + error("Report type 'section' is not allowed in '$$1'.") + section = $$eval($${entry}.section) + qtConfAddReport("$$indent$$section:") + qtConfCreateReportRecurse("$${entry}.entries", "$$indent ") + } else: !isEmpty($${entry}) { + feature = $$eval($${entry}) + qtConfReport_feature($$indent, $$feature) + } else { + text = $$eval($${entry}.message) + isEmpty($${entry}.type): \ + error("Report entry $${entry} doesn't define a type.") + r = "qtConfReport_$$eval($${entry}.type)" + !defined($$r, test): \ + error("Undefined report type $$eval($${entry}.type) used in report entry $${entry}.") + args = $$eval($${entry}.args) + $${r}($$indent$${text}, $$args) + } + } +} + +defineTest(qtConfProcessEarlyChecks) { + qtConfCreateReportRecurse($${currentConfig}.earlyReport, false) +} + +defineTest(qtConfCreateReport) { + qtConfCreateReportRecurse($${currentConfig}.report, false) +} + +defineTest(qtConfCreateSummary) { + qtConfCreateReportRecurse($${currentConfig}.summary, "") +} + +defineTest(qtConfPrintReport) { + blocks = \ + "$$join(QT_CONFIGURE_REPORT, $$escape_expand(\\n))" \ + "$$join(QT_CONFIGURE_NOTES, $$escape_expand(\\n\\n))" \ + "$$join(QT_CONFIGURE_WARNINGS, $$escape_expand(\\n\\n))" + + !isEmpty(QT_CONFIGURE_ERRORS) { + blocks += "$$join(QT_CONFIGURE_ERRORS, $$escape_expand(\\n\\n))" + mention_config_log:!$$QMAKE_CONFIG_VERBOSE: \ + blocks += "Check config.log for details." + } + blocks = "$$join(blocks, $$escape_expand(\\n\\n))" + logn($$blocks) + !isEmpty(QT_CONFIGURE_ERRORS):!equals(config.input.continue, yes): \ + error() + write_file($$OUT_PWD/config.summary, blocks)|error() +} + +defineTest(qtConfCheckErrors) { + !isEmpty(QT_CONFIGURE_ERRORS):!equals(config.input.continue, yes): \ + qtConfPrintReport() +} + +# +# output generation +# + +# qtConfOutputVar(modifier, output, name, value) +defineTest(qtConfOutputVar) { + modifier = $$1 + output = $$2 + name = $$3 + value = $$val_escape(4) + + defined($${currentConfig}.output.$${output}.assign.$${name}, var): \ + error("Trying to overwrite assigned variable '$$name' in '$$output' using modifier '$$modifier'.") + + equals(modifier, assign) { + !isEmpty($${currentConfig}.output.$${output}.append.$${name})|!isEmpty($${currentConfig}.output.$${output}.remove.$${name}): \ + error("Trying to assign variable '$$name' in '$$output', which has already appended or removed parts.") + $${currentConfig}.output.$${output}.assign.$${name} = $$value + } else: equals(modifier, append) { + contains($${currentConfig}.output.$${output}.remove.$${name}, $$value): \ + error("Trying to append removed '$$value' to variable '$$name' in '$$output'.") + $${currentConfig}.output.$${output}.append.$${name} += $$value + } else: equals(modifier, remove) { + contains($${currentConfig}.output.$${output}.append.$${name}, $$value): \ + error("Trying to remove appended '$$value' to variable '$$name' in '$$output'.") + $${currentConfig}.output.$${output}.remove.$${name} += $$value + } else { + error("Invalid modifier '$$modifier' passed to qtConfOutputVar.") + } + $${currentConfig}.output.$${output}.$${modifier}._KEYS_ *= $${name} + export($${currentConfig}.output.$${output}.$${modifier}.$${name}) + export($${currentConfig}.output.$${output}.$${modifier}._KEYS_) +} + +# qtConfExtendVar(output, name, value) +defineTest(qtConfExtendVar) { + output = $$1 + name = $$2 + value = $$val_escape(3) + + !defined($${currentConfig}.output.$${output}.assign.$${name}, var): \ + error("Trying to extend undefined variable '$$name' in '$$output'.") + + $${currentConfig}.output.$${output}.assign.$${name} += $$value + export($${currentConfig}.output.$${output}.assign.$${name}) +} + +defineTest(qtConfOutputVarHelper) { + !isEmpty($${2}.public):$$eval($${2}.public) { + output = "publicPro" + } else { + output = "privatePro" + } + + negative = $$eval($${2}.negative) + isEmpty(negative): negative = false + equals(3, $$negative): return() + + name = $$eval($${2}.name) + isEmpty(name): \ + error("Output type 'var$$title($$1)' used in feature '$$eval($${2}.feature)' without a 'name' entry.") + + value = $$qtConfEvaluate($$eval($${2}.value)) + !isEmpty($${2}.eval):$$qtConfEvaluate($$eval($${2}.eval)): \ + eval(value = $$value) + qtConfOutputVar($$1, $$output, $$name, $$value) + equals(output, "publicPro"):!isEmpty($${currentConfig}.module): \ + qtConfExtendVar($$output, "QT.$${currentModule}.exports", $$name) +} + +defineTest(qtConfOutput_varAssign) { + qtConfOutputVarHelper(assign, $$1, $$2) +} + +defineTest(qtConfOutput_varAppend) { + qtConfOutputVarHelper(append, $$1, $$2) +} + +defineTest(qtConfOutput_varRemove) { + qtConfOutputVarHelper(remove, $$1, $$2) +} + +defineTest(qtConfOutputConfigVar) { + pro = $$3 + var = $$4 + modular = $$5 + + negative = $$eval($${1}.negative) + isEmpty(negative): negative = false + equals(2, $$negative): return() + + val = $$eval($${1}.name) + isEmpty(val) { + val = $$eval($${1}.feature) + $$negative: val = no-$$val + } + + isEmpty($${currentConfig}.module)|!$$modular: \ + qtConfOutputVar(append, $$pro, $$var, $$val) + else: \ + qtConfExtendVar($$pro, "QT.$${currentModule}.$$var", $$val) +} + +defineTest(qtConfOutput_publicQtConfig) { + qtConfOutputConfigVar($$1, $$2, "publicPro", "QT_CONFIG", true) +} + +defineTest(qtConfOutput_publicConfig) { + !isEmpty($${currentConfig}.module): \ + error("Cannot use output type 'publicConfig' in module-local feature '$$eval($${1}.feature)'.") + qtConfOutputConfigVar($$1, $$2, "publicPro", "CONFIG", false) +} + +defineTest(qtConfOutput_privateConfig) { + qtConfOutputConfigVar($$1, $$2, "privatePro", "CONFIG", false) +} + +defineTest(qtConfOutputSetDefine) { + $${currentConfig}.output.$${1}.$${2} = $${3} + $${currentConfig}.output.$${1}._KEYS_ *= $${2} + export($${currentConfig}.output.$${1}.$${2}) + export($${currentConfig}.output.$${1}._KEYS_) +} + +defineTest(qtConfOutput_define) { + output = publicHeader + define = $$eval($${1}.name) + value = $$qtConfEvaluate($$eval($${1}.value)) + isEmpty(define): \ + error("Output type 'define' used in feature '$$eval($${1}.feature)' without a 'name' entry.") + + negative = $$eval($${1}.negative) + isEmpty(negative): negative = false + equals(2, $$negative): return() + + qtConfOutputSetDefine($$output, $$define, $$value) +} + +defineTest(qtConfOutput_feature) { + name = "$$eval($${1}.name)" + isEmpty(name): \ + name = $$eval($${1}.feature) + + $${2} { + isEmpty($${currentConfig}.module): \ + qtConfOutputVar(append, "publicPro", "QT_CONFIG", $$name) + else: \ + qtConfExtendVar("publicPro", "QT.$${currentModule}.QT_CONFIG", $$name) + } else { + f = $$upper($$replace(name, -, _)) + qtConfOutputSetDefine("publicHeader", "QT_NO_$$f") + } +} + +defineTest(qtConfSetModuleName) { + currentModule = $$eval($${currentConfig}.module) + isEmpty(currentModule): \ + currentModule = global + export(currentModule) +} + +defineTest(qtConfSetupModuleOutputs) { + qtConfOutputVar(assign, "publicPro", "QT.$${currentModule}.enabled_features", ) + qtConfOutputVar(assign, "publicPro", "QT.$${currentModule}.disabled_features", ) + qtConfOutputVar(assign, "privatePro", "QT.$${currentModule}_private.enabled_features", ) + qtConfOutputVar(assign, "privatePro", "QT.$${currentModule}_private.disabled_features", ) + !isEmpty($${currentConfig}.module) { + qtConfOutputVar(assign, "publicPro", "QT.$${currentModule}.QT_CONFIG", ) + qtConfOutputVar(assign, "publicPro", "QT.$${currentModule}.exports", ) + qtConfOutputVar(assign, "privatePro", "QT.$${currentModule}_private.libraries", ) + } +} + +defineTest(qtConfOutput_publicFeature) { + name = "$$eval($${1}.name)" + isEmpty(name): \ + name = $$eval($${1}.feature) + feature = $$replace(name, [-+.], _) + + $${2} { + qtConfExtendVar("publicPro", "QT.$${currentModule}.enabled_features", $$name) + QT.$${currentModule}.enabled_features += $$name + export(QT.$${currentModule}.enabled_features) + qtConfOutputSetDefine("publicHeader", "QT_FEATURE_$$feature", 1) + } else { + qtConfExtendVar("publicPro", "QT.$${currentModule}.disabled_features", $$name) + QT.$${currentModule}.disabled_features += $$name + export(QT.$${currentModule}.disabled_features) + qtConfOutputSetDefine("publicHeader", "QT_FEATURE_$$feature", -1) + } +} + +defineTest(qtConfOutput_privateFeature) { + name = "$$eval($${1}.name)" + isEmpty(name): \ + name = $$eval($${1}.feature) + feature = $$replace(name, [-+.], _) + + $${2} { + qtConfExtendVar("privatePro", "QT.$${currentModule}_private.enabled_features", $$name) + QT.$${currentModule}_private.enabled_features += $$name + export(QT.$${currentModule}_private.enabled_features) + qtConfOutputSetDefine("privateHeader", "QT_FEATURE_$$feature", 1) + } else { + qtConfExtendVar("privatePro", "QT.$${currentModule}_private.disabled_features", $$name) + QT.$${currentModule}_private.disabled_features += $$name + export(QT.$${currentModule}_private.disabled_features) + qtConfOutputSetDefine("privateHeader", "QT_FEATURE_$$feature", -1) + } +} + +defineTest(qtConfProcessOneOutput) { + feature = $${1} + fpfx = $${currentConfig}.features.$${feature} + opfx = $${fpfx}.output.$${2} + + call = $$eval($${opfx}.type) + isEmpty(call) { + # output is just a string, not an object + call = $$eval($$opfx) + } + !defined("qtConfOutput_$$call", test): \ + error("Undefined type '$$call' in output '$$2' of feature '$$feature'.") + + !$$qtConfEvaluate($$eval($${opfx}.condition)): \ + return() + + $${opfx}.feature = $$feature + qtConfOutput_$${call}($$opfx, $$eval($${fpfx}.available)) +} + +defineTest(qtConfProcessOutput) { + !contains($${currentConfig}._KEYS_, "features"): \ + return() + + basedir = $$shadowed($$eval($${currentConfig}.dir)) + module = $$eval($${currentConfig}.module) + + # write it to the output files + !defined($${currentConfig}.files._KEYS_, var) { + # set defaults that should work for most Qt modules + isEmpty(module): \ + error("Neither module nor files section specified in configuration file.") + + $${currentConfig}.files._KEYS_ = publicPro privatePro publicHeader privateHeader + $${currentConfig}.files.publicPro = qt$${module}-config.pri + $${currentConfig}.files.privatePro = qt$${module}-config.pri # sic! + $${currentConfig}.files.publicHeader = qt$${module}-config.h + $${currentConfig}.files.privateHeader = qt$${module}-config_p.h + } + + for (type, $${currentConfig}.files._KEYS_) { + contains(type, ".*Pro") { + for (k, $${currentConfig}.output.$${type}.assign._KEYS_): \ + $${currentConfig}.output.$$type += "$$k = $$eval($${currentConfig}.output.$${type}.assign.$$k)" + for (k, $${currentConfig}.output.$${type}.remove._KEYS_): \ + $${currentConfig}.output.$$type += "$$k -= $$eval($${currentConfig}.output.$${type}.remove.$$k)" + for (k, $${currentConfig}.output.$${type}.append._KEYS_): \ + $${currentConfig}.output.$$type += "$$k += $$eval($${currentConfig}.output.$${type}.append.$$k)" + } else: contains(type, ".*Header") { + for (define, $${currentConfig}.output.$${type}._KEYS_) { + value = $$eval($${currentConfig}.output.$${type}.$${define}) + $${currentConfig}.output.$$type += "$${LITERAL_HASH}define $$define $$value" + } + } + + content = $$eval($${currentConfig}.output.$${type}) + + !isEmpty(module): \ + call = qtConfOutputPostProcess_$${module}_$${type} + else: \ + call = qtConfOutputPostProcess_$${type} + defined($$call, replace): \ + eval(content = \$\$"$$call"(\$\$content)) + + file = $$eval($${currentConfig}.files.$${type}) + fileCont.$$file += $$content + fileCont._KEYS_ *= $$file + } + + for (file, fileCont._KEYS_): \ + write_file($$basedir/$$file, fileCont.$$file)|error() +} + +# +# tie it all together +# + +!isEmpty(_QMAKE_SUPER_CACHE_):!equals(OUT_PWD, $$dirname(_QMAKE_SUPER_CACHE_)) { + # sub-repo within a top-level build; no need to configure anything. + !isEmpty(QMAKE_EXTRA_ARGS) { + # sub-projects don't get the extra args passed down automatically, + # so we can use their presence to detect misguided attempts to + # configure the repositories separately. + # caveat: a plain qmake call is indistinguishable from a recursion + # (by design), so we cannot detect this case. + error("You cannot configure $$TARGET separately within a top-level build.") + } + return() +} + +config.$${TARGET}.dir = $$_PRO_FILE_PWD_ +cfgs = $$TARGET +!isEmpty(_QMAKE_SUPER_CACHE_) { + for (s, SUBDIRS) { + config.$${s}.dir = $$_PRO_FILE_PWD_/$${s} + cfgs += $$s + } +} +configsToProcess = +for (c, cfgs) { + s = $$eval(config.$${c}.dir) + exists($$s/configure.json): \ + configsToProcess += $$c +} +isEmpty(configsToProcess) { + !isEmpty(QMAKE_EXTRA_ARGS): \ + error("This module does not accept configure command line arguments.") + return() +} + +load(configure_base) + +QMAKE_POST_CONFIGURE = +config.builtins.dir = $$PWD/data +configsToProcess = builtins $$configsToProcess +allConfigs = +for(ever) { + isEmpty(configsToProcess): \ + break() + + currentConfig = config.$$take_first(configsToProcess) + thisDir = $$eval($${currentConfig}.dir) + jsonFile = $$thisDir/configure.json + priFile = $$thisDir/configure.pri + + # load configuration data + configure_data = $$cat($$jsonFile, blob) + !parseJson(configure_data, $$currentConfig): \ + error("Invalid or non-existent file $${jsonFile}.") + exists($$priFile): \ + !include($$priFile): error() + + # only configs which contain more than just subconfigs are saved for later. + $${currentConfig}._KEYS_ -= subconfigs + !isEmpty($${currentConfig}._KEYS_) { + allConfigs += $$currentConfig + contains($${currentConfig}._KEYS_, libraries) { + qtConfSetupLibraries() + # this ensures that references in QMAKE_LIBRARY_DEPS are unique. + qtConfSetModuleName() + ex = $$eval(config.modules.$${currentModule}) + !isEmpty(ex): \ + error("Module $$currentModule is claimed by both $$currentConfig and $${ex}.") + config.modules.$${currentModule} = $$currentConfig + } + } + + # prepend all subconfigs to files to keep a depth first search order + subconfigs = + for(n, $${currentConfig}.subconfigs._KEYS_) { + subconfig = $$eval($${currentConfig}.subconfigs.$${n}) + name = $$basename(subconfig) + ex = $$eval(config.$${name}.dir) + !isEmpty(ex): \ + error("Basename clash between $$thisDir/$$subconfig and $${ex}.") + config.$${name}.dir = $$thisDir/$$subconfig + subconfigs += $$name + } + configsToProcess = $$subconfigs $$configsToProcess +} + +QMAKE_SAVED_ARGS = $$QMAKE_EXTRA_ARGS +QMAKE_REDO_CONFIG = false +qtConfParseCommandLine() +qtConfCheckErrors() + +!isEmpty(config.input.list-features) { + all_ft = + for (currentConfig, allConfigs) { + for (k, $${currentConfig}.features._KEYS_) { + pp = $$eval($${currentConfig}.features.$${k}.purpose) + !isEmpty(pp) { + pfx = $$eval($${currentConfig}.features.$${k}.section) + !isEmpty(pfx): pfx = "$$pfx: " + all_ft += $$qtConfPadCols($$k, ".......................", \ + $$pfx$$section(pp, $$escape_expand(\\n), 0, 0)) + } + } + } + all_ft = $$sorted(all_ft) + logn() + for (ft, all_ft): \ + logn($$ft) + error() +} + +!isEmpty(config.input.list-libraries) { + logn() + for (currentConfig, allConfigs) { + !isEmpty($${currentConfig}.exports._KEYS_) { + !isEmpty($${currentConfig}.module): \ + logn($$eval($${currentConfig}.module):) + else: \ + logn($$section(currentConfig, ., -1):) + all_xp = + for (xport, $${currentConfig}.exports._KEYS_) { + libs = $$eval($${currentConfig}.exports.$$xport) + isEqual($${currentConfig}.libraries.$$first(libs).export, "") { # not isEmpty()! + !isEmpty(config.input.verbose): \ + all_xp += "$$xport!" + } else { + out = "$$xport" + !isEmpty(config.input.verbose):!isEqual(xport, $$libs): \ + out += "($$libs)" + all_xp += "$$out" + } + } + all_xp = $$sorted(all_xp) + all_xp ~= s,^([^!]*)!$,(\\1),g + for (xp, all_xp): \ + logn(" $$xp") + } + } + error() +} + +QMAKE_CONFIG_VERBOSE = $$eval(config.input.verbose) +isEmpty(QMAKE_CONFIG_VERBOSE): \ + QMAKE_CONFIG_VERBOSE = false +QMAKE_CONFIG_LOG = $$OUT_PWD/config.log +write_file($$QMAKE_CONFIG_LOG, "") +qtLog("Command line: $$qtSystemQuote($$QMAKE_SAVED_ARGS)") +$$QMAKE_REDO_CONFIG: \ + qtLog("config.opt: $$qtSystemQuote($$QMAKE_EXTRA_REDO_ARGS)") + +for (currentConfig, allConfigs) { + qtConfSetModuleName() + qtConfSetupModuleOutputs() + # do early checks, mainly to validate the command line + qtConfProcessEarlyChecks() +} +qtConfCheckErrors() + +QMAKE_CONFIG_CACHE = $$OUT_PWD/config.cache +QMAKE_CONFIG_CACHE_USE = $$eval(config.input.cache_use) +cache_recheck = $$eval(config.input.cache_recheck) +equals(cache_recheck, yes) { + QMAKE_CONFIG_CACHE_USE = positive + cache_recheck = +} +isEmpty(QMAKE_CONFIG_CACHE_USE): \ + QMAKE_CONFIG_CACHE_USE = all +!equals(QMAKE_CONFIG_CACHE_USE, none) { + include($$QMAKE_CONFIG_CACHE, , true) + # this crudely determines when to discard the cache. this also catches the case + # of no cache being there in the first place. + !equals(cache.platform, $$[QMAKE_SPEC])|!equals(cache.xplatform, $$[QMAKE_XSPEC]) { + QMAKE_CONFIG_CACHE_USE = none + } else: !isEmpty(cache_recheck) { + for (cr, $$list($$split(cache_recheck, ","))) { + !isEmpty(cache.$${cr}._KEYS_) { + cache.$${cr}._KEYS_ = + } else { + qtConfAddWarning("Attempting to discard non-cached result '$$cr'.") + } + } + } +} +equals(QMAKE_CONFIG_CACHE_USE, none) { + cont = \ + "cache.platform = $$[QMAKE_SPEC]" \ + "cache.xplatform = $$[QMAKE_XSPEC]" + write_file($$QMAKE_CONFIG_CACHE, cont) +} + +CONFIG += qt_conf_tests_allowed +logn() +logn("Running configuration tests...") + +for (currentConfig, allConfigs) { + tdir = $$eval($${currentConfig}.testDir) + isEmpty(tdir): tdir = config.tests + QMAKE_CONFIG_TESTS_DIR = $$absolute_path($$tdir, $$eval($${currentConfig}.dir)) + + qtConfSetModuleName() + + qtConfSetupTestTypeDeps() + + # correctly setup dependencies + QMAKE_CONFIG_DEPS = global global_private + QMAKE_LIBRARY_DEPS = $$eval(config.modules.global) + !isEmpty($${currentConfig}.module) { + for (d, $${currentConfig}.depends._KEYS_) { + dep = $$replace($${currentConfig}.depends.$$d, -private$, _private) + gdep = $$replace(dep, _private$, ) + dep *= $$gdep + QMAKE_CONFIG_DEPS += $$dep + !isEqual(gdep, $$dep): \ # libraries are in the private module. + QMAKE_LIBRARY_DEPS += $$eval(config.modules.$$gdep) + } + } + + qtConfCheckModuleCondition() + + qtConfHaveModule($$currentModule) { + # process all features + qtConfProcessFeatures() + } else { + qtConfOutputVar(assign, "privatePro", "QT.$${currentModule}.skip", "true") + } + + # generate files and reports + qtConfProcessOutput() + qtConfHaveModule($$currentModule) { + qtConfCreateReport() + qtConfCreateSummary() + } else { + QT_CONFIGURE_SKIPPED_MODULES += " $$currentModule" + } +} + +!isEmpty(QT_CONFIGURE_SKIPPED_MODULES): \ + qtConfAddNote("The following modules are not being compiled in this configuration:" $$QT_CONFIGURE_SKIPPED_MODULES) + +logn("Done running configuration tests.") +logn() + +!$$QMAKE_REDO_CONFIG { + write_file($$OUT_PWD/config.opt, QMAKE_SAVED_ARGS)|error() +} + +# these come from the pri files loaded above. +for (p, QMAKE_POST_CONFIGURE): \ + eval($$p) + +logn("Configure summary:") +logn() +qtConfPrintReport() + +# final notes for the user +logn() +logn("Qt is now configured for building. Just run '$$QMAKE_MAKE_NAME'.") +pfx = $$[QT_INSTALL_PREFIX] +equals(pfx, $$[QT_INSTALL_PREFIX/get]) { + logn("Once everything is built, Qt is installed.") + logn("You should NOT run '$$QMAKE_MAKE_NAME install'.") + logn("Note that this build cannot be deployed to other machines or devices.") +} else { + logn("Once everything is built, you must run '$$QMAKE_MAKE_NAME install'.") + logn("Qt will be installed into '$$system_path($$pfx)'.") +} +logn() +logn("Prior to reconfiguration, make sure you remove any leftovers from") +logn("the previous build.") +logn() diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_docs.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_docs.prf new file mode 100644 index 000000000..72dde61a4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_docs.prf @@ -0,0 +1,106 @@ +# +# 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. +# + +!exists($$QMAKE_DOCS): error("Cannot find documentation specification file $$QMAKE_DOCS") + +qtver.name = QT_VERSION +qtver.value = $$VERSION +isEmpty(qtver.value): qtver.value = $$MODULE_VERSION +isEmpty(qtver.value): error("No version for documentation specified.") +qtmver.name = QT_VER +qtmver.value = $$replace(qtver.value, ^(\\d+\\.\\d+).*$, \\1) +qtvertag.name = QT_VERSION_TAG +qtvertag.value = $$replace(qtver.value, \.,) +qtdocs.name = QT_INSTALL_DOCS +qtdocs.value = $$[QT_INSTALL_DOCS/src] +builddir.name = BUILDDIR +builddir.value = $$OUT_PWD +QT_TOOL_ENV = qtver qtmver qtvertag qtdocs builddir +qtPrepareTool(QDOC, qdoc) +QT_TOOL_ENV = + +!build_online_docs: qtPrepareTool(QHELPGENERATOR, qhelpgenerator) + +qtPrepareTool(QTATTRIBUTIONSSCANNER, qtattributionsscanner) + +# qtPrepareTool() must be called outside a build pass, as it protects +# against concurrent wrapper creation by omitting it during build passes. +# However, creating the actual targets is reserved to the build passes. +debug_and_release:!build_pass: return() + +load(qt_build_paths) +QMAKE_DOCS_BASE_OUTDIR = $$MODULE_BASE_OUTDIR/doc + +QMAKE_DOCS_TARGET = $$replace(QMAKE_DOCS, ^(.*/)?(.*)\\.qdocconf$, \\2) +isEmpty(QMAKE_DOCS_TARGETDIR): QMAKE_DOCS_TARGETDIR = $$QMAKE_DOCS_TARGET +QMAKE_DOCS_OUTPUTDIR = $$QMAKE_DOCS_BASE_OUTDIR/$$QMAKE_DOCS_TARGETDIR + +QDOC += -outputdir $$shell_quote($$QMAKE_DOCS_OUTPUTDIR) +!build_online_docs: \ + QDOC += -installdir $$shell_quote($$[QT_INSTALL_DOCS]) +PREP_DOC_INDEXES = +DOC_INDEXES = +!isEmpty(QTREPOS) { + prepare_docs { + # This is not for linking, but for providing type information. + mps = + deps = $$replace(QT, -private$, ) + deps = $$resolve_depends(deps, "QT.") + for (d, deps): \ + mps += $$dirname(QT.$${d}.libs) + mps = $$unique(mps) + for (mp, mps): \ + PREP_DOC_INDEXES += -indexdir $$shell_quote($$mp/doc) + } + for(qrep, QTREPOS): \ + DOC_INDEXES += -indexdir $$shell_quote($$qrep/doc) +} else { + prepare_docs: \ + PREP_DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get]) + DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get]) +} + +qtattributionsscanner.target = qtattributionsscanner +qtattributionsscanner.commands = $$QTATTRIBUTIONSSCANNER $$shell_quote($$MODULE_BASE_INDIR) \ + --filter "QDocModule=$$QMAKE_DOCS_TARGET" -o $$shell_quote($$OUT_PWD/codeattributions.qdoc) +qtattributionsscanner.CONFIG += phony +QMAKE_EXTRA_TARGETS += qtattributionsscanner + +doc_command = $$QDOC $$QMAKE_DOCS +prepare_docs { + prepare_docs.commands += $$doc_command -prepare $$PREP_DOC_INDEXES -no-link-errors + generate_docs.commands += $$doc_command -generate $$DOC_INDEXES + prepare_docs.depends += qtattributionsscanner +} else { + html_docs.commands += $$doc_command $$DOC_INDEXES + html_docs.depends += qtattributionsscanner +} + +!build_online_docs { + qch_docs.commands = $$QHELPGENERATOR $$shell_quote($$QMAKE_DOCS_OUTPUTDIR/$${QMAKE_DOCS_TARGET}.qhp) -o $$shell_quote($$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch) + + inst_html_docs.files = $$QMAKE_DOCS_OUTPUTDIR + inst_html_docs.path = $$[QT_INSTALL_DOCS] + inst_html_docs.CONFIG += no_check_exist directory no_default_install no_build + INSTALLS += inst_html_docs + + inst_qch_docs.files = $$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch + inst_qch_docs.path = $$[QT_INSTALL_DOCS] + inst_qch_docs.CONFIG += no_check_exist no_default_install no_build + INSTALLS += inst_qch_docs + + install_html_docs.depends = install_inst_html_docs + uninstall_html_docs.depends = uninstall_inst_html_docs + install_qch_docs.depends = install_inst_qch_docs + uninstall_qch_docs.depends = uninstall_inst_qch_docs + install_docs.depends = install_html_docs install_qch_docs + uninstall_docs.depends = uninstall_html_docs uninstall_qch_docs +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_docs_targets.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_docs_targets.prf new file mode 100644 index 000000000..9e9643246 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_docs_targets.prf @@ -0,0 +1,45 @@ +# +# 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. +# + +DOC_TARGETS = \ + install_html_docs uninstall_html_docs \ + install_qch_docs uninstall_qch_docs \ + install_docs uninstall_docs \ + qch_docs + +prepare_docs { + DOC_TARGETS += prepare_docs generate_docs + html_docs.commands = $(MAKE) -f $(MAKEFILE) prepare_docs && $(MAKE) -f $(MAKEFILE) generate_docs + QMAKE_EXTRA_TARGETS += html_docs +} else { + DOC_TARGETS += html_docs +} + +docs.commands = $(MAKE) -f $(MAKEFILE) html_docs && $(MAKE) -f $(MAKEFILE) qch_docs +QMAKE_EXTRA_TARGETS += docs + +contains(TEMPLATE, subdirs) { + for(inst, DOC_TARGETS): \ + prepareRecursiveTarget($$inst) +} else { + !isEmpty(BUILDS):!build_pass { + sub = $$first(BUILDS) + for(inst, DOC_TARGETS) { + $${inst}.CONFIG = recursive + $${inst}.recurse = $$sub + } + } + # Apps and libs request docs creation by setting QMAKE_DOCS. + # This is a backwards compat hack - technically, the modules which need it + # are supposed to load(qt_docs) themselves. + !isEmpty(QMAKE_DOCS): load(qt_docs) +} +QMAKE_EXTRA_TARGETS += $$DOC_TARGETS diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_example_installs.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_example_installs.prf new file mode 100644 index 000000000..668669e4c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_example_installs.prf @@ -0,0 +1,137 @@ +# +# 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. +# + +defineTest(addInstallFiles) { + for(sf, 2) { + sf = $$relative_path($$sf, $$_PRO_FILE_PWD_) + contains(sf, \\..*) { + check_examples: message("Notice: $$_PRO_FILE_ refers to $$sf") + } else { + sfp = $$replace(sf, /.*, ) + !equals(sfp, $$sf): \ + $$1 *= $$sfp + else: \ + $$1 += $$sf + } + } + export($$1) +} + +probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples) +isEmpty(probase)|contains(probase, ^\\..*): \ + return() + +isEmpty(_QMAKE_CACHE_) { + !equals(OUT_PWD, $$_PRO_FILE_PWD_): \ + return() + error("You cannot build examples inside the Qt source tree, except as part of a proper Qt build.") +} + +contains(TEMPLATE, "vc.*"): \ + return() + +contains(TEMPLATE, .*app): \ + qtSetQmlPath() + +for(ex, EXAMPLE_FILES): \ + sourcefiles += $$files($$absolute_path($$ex, $$_PRO_FILE_PWD_)) +for(res, RESOURCES) { + rfile = $$cat($$absolute_path($$res, $$_PRO_FILE_PWD_), lines) + for(rline, rfile) { + resrc = $$replace(rline, ^[ \\t]*<file[^>]*>([^<]+)</file>[ \\t]*$, \\1) + !equals(resrc, $$rline): \ + sourcefiles += $$resrc + } +} +for(res, RC_FILE) { + rfile = $$cat($$absolute_path($$res, $$_PRO_FILE_PWD_), lines) + for(rline, rfile) { + resrc = $$replace(rline, "^\\d+\\s+ICON\\s+[^\"]*\"([^\"]+)\"\$", \\1) + !equals(resrc, $$rline): \ + sourcefiles += $$resrc + } +} +sourcefiles += \ + $$ANDROID_PACKAGE_SOURCE_DIR \ + $$QMAKE_INFO_PLIST \ + $$DISTFILES +extras = \ + $$_PRO_FILE_PWD_/README \ + $$_PRO_FILE_PWD_/README.TXT \ + $$files($$_PRO_FILE_PWD_/*.pri) \ + $$replace(_PRO_FILE_, \\.pro$, .qmlproject) \ + $$replace(_PRO_FILE_, \\.pro$, .json) \ + $$replace(_PRO_FILE_, \\.pro$, .inf) +for(extra, extras): \ + exists($$extra): \ + sourcefiles += $$extra + +# Just for Qt Creator +OTHER_FILES += $$sourcefiles + +sourcefiles += \ + $$_PRO_FILE_ $$RC_FILE $$DEF_FILE \ + $$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \ + $$DBUS_ADAPTORS $$DBUS_INTERFACES +addInstallFiles(sources.files, $$sourcefiles) +sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase +INSTALLS += sources + +check_examples { + srcfiles = $$sources.files + for(inst, INSTALLS): \ + !equals(inst, target):!contains($${inst}.CONFIG, no_check_exist): \ + for(file, $${inst}.files): \ + instfiles += $$files($$absolute_path($$file, $$_PRO_FILE_PWD_)) + addInstallFiles(srcfiles, $$instfiles) + + thefiles = $$files($$_PRO_FILE_PWD_/*) + for(i, thefiles): \ + allfiles += $$relative_path($$i, $$_PRO_FILE_PWD_) + for(i, srcfiles): \ + allfiles -= $$relative_path($$i, $$_PRO_FILE_PWD_) + for(i, SUBDIRS) { + sd = $$eval($${i}.file) + !isEmpty(sd) { + sd ~= s,/.*,, + } else { + sd = $$eval($${i}.subdir) + isEmpty(sd): sd = $$i + } + allfiles -= $$sd + } + allfiles -= doc + !isEmpty(allfiles): warning("remaining files in $$_PRO_FILE_PWD_: $$allfiles") +} + +equals(TEMPLATE, app)|equals(TEMPLATE, lib) { + !contains(INSTALLS, target) { + !install_ok: \ + error("$$_PRO_FILE_ is lacking an install target.") + else: check_examples: \ + warning("$$_PRO_FILE_ is lacking an install target.") + } else: !equals(target.path, $$sources.path) { + !install_ok: \ + error("$$_PRO_FILE_ installs target to unexpected location.") + else: check_examples: \ + warning("$$_PRO_FILE_ installs target to unexpected location.") + } +} + +!equals(TEMPLATE, subdirs):!compile_examples { + TEMPLATE = aux + CONFIG -= have_target qt staticlib dll + SOURCES = + OBJECTIVE_SOURCES = + INSTALLS -= target +} else { + CONFIG += relative_qt_rpath # Examples built as part of Qt should be relocatable +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_functions.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_functions.prf new file mode 100644 index 000000000..1903e509c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_functions.prf @@ -0,0 +1,352 @@ + +defineReplace(qtPlatformTargetSuffix) { + suffix = + CONFIG(debug, debug|release) { + !debug_and_release|build_pass { + mac: return($${suffix}_debug) + win32: return($${suffix}d) + } + } + return($$suffix) +} + +defineReplace(qtLibraryTarget) { + LIBRARY_NAME = $$1 + CONFIG(shared, static|shared):qtConfig(framework) { + QMAKE_FRAMEWORK_BUNDLE_NAME = $$LIBRARY_NAME + export(QMAKE_FRAMEWORK_BUNDLE_NAME) + } + return($$LIBRARY_NAME$$qtPlatformTargetSuffix()) +} + +defineReplace(qt5LibraryTarget) { + LIBRARY_NAME = $$qtLibraryTarget($$1) + isEmpty(QMAKE_FRAMEWORK_BUNDLE_NAME) { + # Insert the major version of Qt in the library name + # unless it's a framework build. + LIBRARY_NAME ~= s,^Qt,Qt$$QT_MAJOR_VERSION, + } + return($$LIBRARY_NAME) +} + +defineReplace(qtRelativeRPathBase) { + darwin { + if(equals(TEMPLATE, app):app_bundle)|\ + if(equals(TEMPLATE, lib):plugin:plugin_bundle) { + shallow_bundle: return($$target.path/$${TARGET}.app) + return($$target.path/$${TARGET}.app/Contents/MacOS) + } + equals(TEMPLATE, lib):!plugin:lib_bundle { + shallow_bundle: return($$target.path/$${TARGET}.framework) + return($$target.path/$${TARGET}.framework/Versions/Current) + } + } + return($$target.path) +} + +defineTest(qtAddLibrary) { + warning("qtAddLibrary() is deprecated. Use QT+= instead.") + + # Reverse-engineer the module name from the library name. + for(var, QT_MODULES) { + isEqual(QT.$${var}.name, $$1) { + QT += $$var + export(QT) + return(true) + } + } + error("No module matching library '$$1' found.") +} + +# qt module +defineTest(qtHaveModule) { + !isEmpty(QT.$$replace(1, -, _).name): \ + return(true) + return(false) +} + +# variable, default, [suffix for variable for system() use], [prepare primary variable for system() use] +defineTest(qtPrepareTool) { + cmd = $$eval(QT_TOOL.$${2}.binary) + isEmpty(cmd) { + cmd = $$[QT_HOST_BINS]/$$2 + exists($${cmd}.pl) { + $${1}_EXE = $${cmd}.pl + cmd = perl -w $$system_path($${cmd}.pl) + } else: contains(QMAKE_HOST.os, Windows) { + $${1}_EXE = $${cmd}.exe + cmd = $$system_path($${cmd}.exe) + } else:contains(QMAKE_HOST.os, Darwin) { + BUNDLENAME = $${cmd}.app/Contents/MacOS/$$2 + exists($$BUNDLENAME) { + cmd = $$BUNDLENAME + } + $${1}_EXE = $$cmd + } else { + $${1}_EXE = $$cmd + } + } else { + $${1}_EXE = $$last(cmd) + } + export($${1}_EXE) + QT_TOOL_ENV += $$eval(QT_TOOL.$${2}.envvars) + QT_TOOL_NAME = $$2 + !isEmpty(3)|!isEmpty(4) { + $$1$$3 = + for (arg, cmd): \ + $$1$$3 += $$system_quote($$arg) + qtAddTargetEnv($$1$$3, QT_TOOL.$${2}.depends, system) + } + isEmpty(4) { + $$1 = + for (arg, cmd): \ + $$1 += $$shell_quote($$arg) + qtAddTargetEnv($$1, QT_TOOL.$${2}.depends, ) + } +} + +# target variable, list of env var names, [non-empty: prepare for system(), not make] +defineTest(qtAddToolEnv) { + isEmpty(3): \ + ds = $$QMAKE_DIR_SEP + else: \ + ds = $$DIR_SEPARATOR + batch_sets = + for(env, 2) { + value = $$eval($${env}.value) + !isEmpty(value) { + name = $$eval($${env}.name) + config = $$eval($${env}.CONFIG) + equals(ds, /) { + contains(config, prepend): infix = \${$$name:+:\$$$name} + else: contains(config, always_prepend): infix = :\$$$name + else: infix = + # Under msys, this path is taken only in the non-system() + # case, so using shell_quote() always works. + batch_sets += \ + "$$name=$$shell_quote($$join(value, :))$$infix" \ + "export $$name" + } else { + value ~= s,\\^,^^^^,g + value ~= s,!,^^!,g + value ~= s,\\),^),g + contains(config, prepend) { + batch_sets += \ + "if defined $$name (" \ + " set $$name=$$join(value, ;);!$$name!" \ + ") else (" \ + " set $$name=$$join(value, ;)" \ + ")" + } else: contains(config, always_prepend) { + batch_sets += "(set $$name=$$join(value, ;);!$$name!)" + } else { + batch_sets += "(set $$name=$$join(value, ;))" + } + } + } + } + !isEmpty(batch_sets) { + batch_name = wrapper + !isEmpty(QT_TOOL_NAME): batch_name = $${QT_TOOL_NAME}_wrapper + cmd = $$eval($$1) + !isEmpty(cmd): cmd = "$$cmd " + equals(ds, /) { + batch_name = $${batch_name}.sh + batch_cont = \ + "$$LITERAL_HASH!/bin/sh" \ + $$batch_sets \ + "exec $$cmd\"$@\"" + # It would be nicer to use the '.' command (without 'exec' above), + # but that doesn't set the positional arguments under (d)ash. + $$1 = + } else { + batch_name = $${batch_name}.bat + batch_cont = \ + "@echo off" \ + "SetLocal EnableDelayedExpansion" \ + $$batch_sets \ + "$$cmd%*" \ + "EndLocal" + $$1 = call + } + !build_pass:!write_file($$OUT_PWD/$$batch_name, batch_cont, exe): error() + isEmpty(3): \ + $$1 += $$shell_quote($$shell_path($$OUT_PWD/$$batch_name)) + else: \ + $$1 += $$system_quote($$system_path($$OUT_PWD/$$batch_name)) + QMAKE_DISTCLEAN += $$OUT_PWD/$$batch_name + } + export($$1) + export(QMAKE_DISTCLEAN) +} + +# target variable, dependency var name, [non-empty: prepare for system(), not make] +defineTest(qtAddTargetEnv) { + deps = $$replace($$2, -private$, _private) + deps = $$resolve_depends(deps, "QT.", ".depends" ".run_depends") + !isEmpty(deps) { + libs = libs + deppath.CONFIG = prepend + equals(QMAKE_HOST.os, Windows) { + libs = bins + deppath.CONFIG = always_prepend + deppath.name = PATH + } else:contains(QMAKE_HOST.os, Linux|FreeBSD|OpenBSD|NetBSD|DragonFly|SunOS|HP-UX|QNX|GNU) { + deppath.name = LD_LIBRARY_PATH + } else:contains(QMAKE_HOST.os, Haiku) { + deppath.name = LIBRARY_PATH + } else:equals(QMAKE_HOST.os, Darwin) { + qtConfig(framework): \ + deppath.name = DYLD_FRAMEWORK_PATH + else: \ + deppath.name = DYLD_LIBRARY_PATH + } else:equals(QMAKE_HOST.os, AIX) { + deppath.name = LIBPATH + } else { + error("Operating system not supported.") + } + ptypes = + for(dep, deps) { + isEmpty(3): \ + deppath += $$shell_path($$eval(QT.$${dep}.$$libs)) + else: \ + deppath += $$system_path($$eval(QT.$${dep}.$$libs)) + ptypes += $$eval(QT.$${dep}.plugin_types) + } + deppath.value = $$unique(deppath) + + pluginpath.value = + ppaths = $$[QT_INSTALL_PLUGINS/get] + for(qplug, QT_PLUGINS): \ + contains(ptypes, $$eval(QT_PLUGIN.$${qplug}.TYPE)): \ + ppaths += $$eval(QT_PLUGIN.$${qplug}.PATH) + ppaths = $$unique(ppaths) + for(qplug, ppaths) { + isEmpty(3): \ + pluginpath.value += $$shell_path($$qplug) + else: \ + pluginpath.value += $$system_path($$qplug) + } + pluginpath.name = QT_PLUGIN_PATH + pluginpath.CONFIG = prepend + + QT_TOOL_ENV += deppath pluginpath + } + qtAddToolEnv($$1, $$QT_TOOL_ENV, $$3) +} + +defineReplace(pkgConfigExecutable) { + isEmpty(PKG_CONFIG) { + !isEmpty(QMAKE_PKG_CONFIG) { + # Assumed to be properly sysrootified. + PKG_CONFIG = $$QMAKE_PKG_CONFIG + export(PKG_CONFIG) + } else { + PKG_CONFIG = pkg-config + !cross_compile { + export(PKG_CONFIG) + } else { + # Cross compiling, ensure that pkg-config is set up sanely. + sysroot = $$[QT_SYSROOT] + + pkgConfigLibdir = $$(PKG_CONFIG_LIBDIR) + isEmpty(pkgConfigLibdir) { + isEmpty(sysroot) { + warning("Cross compiling without sysroot. Disabling pkg-config.") + return() + } + !exists("$$sysroot/usr/lib/pkgconfig") { + warning("Disabling pkg-config since PKG_CONFIG_LIBDIR is not set and the") + warning("host's .pc files would be used (even if you set PKG_CONFIG_PATH).") + warning("Set this variable to the directory that contains target .pc files") + warning("for pkg-config to function correctly when cross-compiling.") + return() + } + + pkgConfigLibdir = $$system_path($$sysroot/usr/lib/pkgconfig)$$QMAKE_DIRLIST_SEP$$system_path($$sysroot/usr/share/pkgconfig) + !isEmpty(GCC_MACHINE_DUMP): \ + pkgConfigLibdir = "$$pkgConfigLibdir$$QMAKE_DIRLIST_SEP$$system_path($$sysroot/usr/lib/$$GCC_MACHINE_DUMP/pkgconfig)" + message("PKG_CONFIG_LIBDIR automatically set to $$pkgConfigLibdir") + } + pkgConfigSysrootDir = $$(PKG_CONFIG_SYSROOT_DIR) + isEmpty(pkgConfigSysrootDir) { + isEmpty(sysroot) { + warning("Disabling pkg-config since PKG_CONFIG_SYSROOT_DIR is not set.") + warning("Set this variable to your sysroot for pkg-config to function") + warning("correctly when cross-compiling.") + return() + } + + pkgConfigSysrootDir = $$sysroot + message("PKG_CONFIG_SYSROOT_DIR automatically set to $$pkgConfigSysrootDir") + } + + sysroot.name = PKG_CONFIG_SYSROOT_DIR + sysroot.value = $$pkgConfigSysrootDir + libdir.name = PKG_CONFIG_LIBDIR + libdir.value = $$pkgConfigLibdir + QT_TOOL_NAME = pkg-config + qtAddToolEnv(PKG_CONFIG, sysroot libdir, SYS) + } + } + } + + PKG_CONFIG += 2> $$QMAKE_SYSTEM_NULL_DEVICE + + return($$PKG_CONFIG) +} + +defineTest(packagesExist) { + # this can't be done in global scope here because qt_functions is loaded + # before the .pro is parsed, so if the .pro set PKG_CONFIG, we wouldn't know it + # yet. oops. + pkg_config = $$pkgConfigExecutable() + + for(package, ARGS) { + !system($$pkg_config --exists $$package):return(false) + } + + return(true) +} + +# Prepares target that will iterate through all subdirs (except those +# with no_default_target or no_{name_of_target}_target. The prepared +# target must still be manually added to QMAKE_EXTRA_TARGETS. +defineTest(prepareRecursiveTarget) { + target = $$1 + no_$${target}_target: return() + + for(subdir, SUBDIRS) { + subdir_config = $$eval($${subdir}.CONFIG) + contains(subdir_config, no_default_target): next() + contains(subdir_config, no_$${target}_target): next() + + $${target}.recurse += $$subdir + } + + # Set up the recurse target only when there + # is something to recurse into. + isEmpty($${target}.recurse): return() + + $${target}.CONFIG = recursive + $${target}.recurse_target = $${target} + + export($${target}.recurse) + export($${target}.CONFIG) + export($${target}.recurse_target) +} + +defineTest(qtConfig) { + modules = $$QT $$QT_PRIVATE $$QT_FOR_CONFIG + modules ~= s,-private$,_private,g + modules = $$resolve_depends(modules, "QT.", ".depends") + modules += global global_private + modules = $$reverse(modules) + for (module, modules) { + contains(QT.$${module}.enabled_features, $$1): \ + return(true) + contains(QT.$${module}.disabled_features, $$1): \ + return(false) + } + error("Could not find feature $${1}.") +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_helper_lib.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_helper_lib.prf new file mode 100644 index 000000000..b3e49e462 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_helper_lib.prf @@ -0,0 +1,60 @@ +# +# 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. +# + +load(qt_build_paths) + +TEMPLATE = lib +CONFIG -= qt +QT = # In case qt is re-added. + +INCLUDEPATH += $$MODULE_INCLUDEPATH +DEFINES += $$MODULE_DEFINES + +CONFIG -= warning_clean # Don't presume 3rd party code to be clean +load(qt_common) + +qtConfig(debug_and_release): CONFIG += debug_and_release +qtConfig(build_all): CONFIG += build_all + +DESTDIR = $$MODULE_BASE_OUTDIR/lib +DLLDESTDIR = $$MODULE_BASE_OUTDIR/bin + +THE_TARGET = $$qt5LibraryTarget($$TARGET) + +!build_pass { + MODULE = $$replace(TARGET, ^qt, ) + MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_ext_$${MODULE}.pri + ucmodule = $$upper($$MODULE) + + MODULE_PRI_CONT = \ + "QMAKE_INCDIR_$${ucmodule} = $$val_escape(MODULE_INCLUDEPATH)" \ + "QMAKE_DEFINES_$${ucmodule} = $$val_escape(MODULE_DEFINES)" + debug_and_release { + win32: MODULE_DEBUG_LIBS = -L$$DESTDIR -l$${TARGET}d + darwin: MODULE_DEBUG_LIBS = -L$$DESTDIR -l$${TARGET}_debug + MODULE_RELEASE_LIBS = -L$$DESTDIR -l$$TARGET + MODULE_PRI_CONT += \ + "QMAKE_LIBS_$${ucmodule} =" \ # Needed for the module to be recognized. + "QMAKE_LIBS_$${ucmodule}_DEBUG = $$val_escape(MODULE_DEBUG_LIBS)" \ + "QMAKE_LIBS_$${ucmodule}_RELEASE = $$val_escape(MODULE_RELEASE_LIBS)" + } else { + MODULE_LIBS = -L$$DESTDIR -l$$THE_TARGET + MODULE_PRI_CONT += \ + "QMAKE_LIBS_$${ucmodule} = $$val_escape(MODULE_LIBS)" + } + write_file($$MODULE_PRI, MODULE_PRI_CONT)|error() +} + +TARGET = $$THE_TARGET + +# In static builds of Qt, convenience libraries must be installed, +# as in this case they are not linked to the final library/plugin. +installed|if(!not_installed:qtConfig(static)): load(qt_installs) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_installs.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_installs.prf new file mode 100644 index 000000000..0d3dfb6b9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_installs.prf @@ -0,0 +1,62 @@ +# +# 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. +# + +#library +!qt_no_install_library { + win32 { + host_build: \ + dlltarget.path = $$[QT_HOST_BINS] + else: \ + dlltarget.path = $$[QT_INSTALL_BINS] + INSTALLS += dlltarget + } + host_build: \ + target.path = $$[QT_HOST_LIBS] + else: \ + target.path = $$[QT_INSTALL_LIBS] + !static: target.CONFIG = no_dll + INSTALLS += target +} + +#headers +qt_install_headers { + class_headers.files = $$SYNCQT.HEADER_CLASSES + class_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME + INSTALLS += class_headers + + targ_headers.files = $$SYNCQT.HEADER_FILES + targ_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME + INSTALLS += targ_headers + + private_headers.files = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.INJECTED_PRIVATE_HEADER_FILES + private_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private + INSTALLS += private_headers + + qpa_headers.files = $$SYNCQT.QPA_HEADER_FILES + qpa_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa + INSTALLS += qpa_headers +} + +#module +qt_install_module { + !isEmpty(MODULE_PRI) { + pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules + pritarget.files = $$MODULE_PRI + INSTALLS += pritarget + } else: isEmpty(MODULE_PRIVATE_PRI) { + warning("Project $$basename(_PRO_FILE_) is a module, but has not defined MODULE_PRI, which is required for Qt to expose the module to other projects.") + } + !isEmpty(MODULE_PRIVATE_PRI) { + privpritarget.path = $$[QT_HOST_DATA]/mkspecs/modules + privpritarget.files = $$MODULE_PRIVATE_PRI + INSTALLS += privpritarget + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_module.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_module.prf new file mode 100644 index 000000000..36f632e8c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_module.prf @@ -0,0 +1,316 @@ +# +# 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. +# + +isEmpty(MODULE):MODULE = $$section($$list($$basename(_PRO_FILE_)), ., 0, 0) +isEmpty(VERSION): VERSION = $$MODULE_VERSION +isEmpty(VERSION): error("Module does not define version.") + +exists($$OUT_PWD/qt$${MODULE}-config.pri) { + include($$OUT_PWD/qt$${MODULE}-config.pri) + CONFIG += generated_privates +} + +skip = $$eval(QT.$${MODULE}.skip) +isEmpty(skip): skip = false +requires(!$$skip) + +# Compile as shared/DLL or static according to the option given to configure +# unless overridden. Host builds are always static +host_build|staticlib: CONFIG += static + +host_build { + QT -= gui # no host module will ever use gui + QMAKE_CFLAGS += $$QMAKE_CFLAGS_SPLIT_SECTIONS + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_SPLIT_SECTIONS + force_bootstrap { + !build_pass:qtConfig(release_tools): CONFIG += release + contains(QT, core(-private)?|xml) { + QT -= core core-private xml + QT += bootstrap-private + } + } else { + !build_pass:qtConfig(debug_and_release): CONFIG += release + } +} + +qtConfig(framework) { + minimal_syncqt: \ + CONFIG += module_frameworks + else: CONFIG(shared, static|shared): \ + CONFIG += module_frameworks lib_bundle +} + +CONFIG += relative_qt_rpath # Qt libraries should be relocatable + +# Qt libraries should only use Application Extension safe APIs +darwin:!no_app_extension_api_only: CONFIG += app_extension_api_only + +ucmodule = $$upper($$MODULE) + +isEmpty(MODULE_INCNAME): MODULE_INCNAME = $$TARGET + +internal_module: \ + MODULE_DEPENDS = $$replace(QT, -private$, _private) +else: \ + MODULE_DEPENDS = $$replace(QT, -private$, ) +MODULE_DEPENDS = $$unique(MODULE_DEPENDS) +contains(MODULE_DEPENDS, $$MODULE): \ + error("$$TARGET depends on itself.") + +contains(TARGET, QtAddOn.*): \ + MODULE_DEFINE = QT_ADDON_$${ucmodule}_LIB +else: \ + MODULE_DEFINE = QT_$${ucmodule}_LIB +MODULE_DEFINES = $$MODULE_DEFINE $$MODULE_DEFINES + +# Make sure that the supporting runtime is linked into the application when +# the module is built with exceptions enabled. +integrity:CONFIG(exceptions, exceptions|exceptions_off): \ + MODULE_CONFIG += exceptions + +load(qt_build_paths) + +header_module { + TEMPLATE = aux + CONFIG += force_qt # Needed for the headers_clean tests. + !lib_bundle: \ + CONFIG += qt_no_install_library +} else { + TEMPLATE = lib +} +DESTDIR = $$MODULE_BASE_OUTDIR/lib +DLLDESTDIR = $$MODULE_BASE_OUTDIR/bin + +CONFIG += qmake_cache target_qt + +QMAKE_DOCS_TARGETDIR = qt$${MODULE} + +load(qt_common) +!no_module_headers: load(qt_module_headers) +load(qt_module_pris) + +INCLUDEPATH *= $$eval(QT.$${MODULE}.includes) $$eval(QT.$${MODULE}_private.includes) + +# If Qt was configured with -debug-and-release then build the module the same way +# - unless this is a host library +!host_build:if(win32|mac):!macx-xcode { + qtConfig(debug_and_release): CONFIG += debug_and_release + qtConfig(build_all): CONFIG += build_all +} + +QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF + +QT_PRIVATE += $$QT_FOR_PRIVATE +unset(QT_FOR_PRIVATE) +QMAKE_USE_PRIVATE += $$QMAKE_USE_FOR_PRIVATE +unset(QMAKE_USE_FOR_PRIVATE) + +!internal_module:CONFIG += create_cmake + +contains(TARGET, QtAddOn.*): \ + DEFINES += QT_BUILD_ADDON_$${ucmodule}_LIB +else: \ + DEFINES += QT_BUILD_$${ucmodule}_LIB + +# OS X and iOS frameworks +lib_bundle { + # Set the CFBundleIdentifier prefix for Qt frameworks + QMAKE_TARGET_BUNDLE_PREFIX = org.qt-project + #QMAKE_FRAMEWORK_VERSION = 4.0 + CONFIG += sliced_bundle + header_module { + CONFIG += bundle + QMAKE_BUNDLE_NAME = $$TARGET + QMAKE_BUNDLE_EXTENSION = .framework + QMAKE_INFO_PLIST = $$QMAKESPEC/Info.plist.lib + } + !build_all| \ + if(if(!debug_and_release|CONFIG(release, debug|release))) { + FRAMEWORK_HEADERS.version = Versions + FRAMEWORK_HEADERS.files = $$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES + FRAMEWORK_HEADERS.path = Headers + FRAMEWORK_PRIVATE_HEADERS.version = Versions + FRAMEWORK_PRIVATE_HEADERS.files = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.INJECTED_PRIVATE_HEADER_FILES + FRAMEWORK_PRIVATE_HEADERS.path = Headers/$$VERSION/$$MODULE_INCNAME/private + FRAMEWORK_QPA_HEADERS.version = Versions + FRAMEWORK_QPA_HEADERS.files = $$SYNCQT.QPA_HEADER_FILES + FRAMEWORK_QPA_HEADERS.path = Headers/$$VERSION/$$MODULE_INCNAME/qpa + QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS FRAMEWORK_PRIVATE_HEADERS FRAMEWORK_QPA_HEADERS + } +} + +mac { + macx-g++ { + QMAKE_CFLAGS += -fconstant-cfstrings + QMAKE_CXXFLAGS += -fconstant-cfstrings + } + + qtConfig(rpath): \ + QMAKE_SONAME_PREFIX = @rpath + else: \ + CONFIG += absolute_library_soname +} + +DEFINES += QT_BUILDING_QT +win32 { + INCLUDEPATH += tmp + CONFIG += skip_target_version_ext + # If the code is really "unsafe" then it is unsafe on + # other platforms as well; so fixing these warnings just + # for MSVC builds, would clutter the code and wouldn't help + # in fixing issues that might exist on other platforms. + # Using the same functions across all supported platforms + # keeps the code clean and helps in writing code that is + # safe across all platforms. + DEFINES *= _CRT_SECURE_NO_WARNINGS + + DEFINES += _USE_MATH_DEFINES +} + +aix-g++* { + QMAKE_CFLAGS += -mminimal-toc + QMAKE_CXXFLAGS += -mminimal-toc +} + +sse2:!contains(QT_CPU_FEATURES.$$QT_ARCH, sse2):!host_build:!if(static:qtConfig(shared)) { + # If the compiler supports SSE2, enable it unconditionally in all of Qt shared libraries + # (and only the libraries). This is not expected to be a problem because: + # - on Windows, sharing of libraries is uncommon + # - on Mac OS X, all x86 CPUs already have SSE2 support (we won't even reach here) + # - on Linux, the dynamic loader can find the libraries on LIBDIR/sse2/ + # The last guarantee does not apply to executables and plugins, so we can't enable for them. + QT_CPU_FEATURES.$$QT_ARCH += sse sse2 + QMAKE_CFLAGS += $$QMAKE_CFLAGS_SSE2 + QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE2 +} + +clang { + apple_clang_ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION} + reg_clang_ver = $${QT_CLANG_MAJOR_VERSION}.$${QT_CLANG_MINOR_VERSION} + !lessThan(apple_clang_ver, "5.1")|!lessThan(reg_clang_ver, "3.4"): \ + CONFIG += compiler_supports_fpmath +} else: gcc { + CONFIG += compiler_supports_fpmath +} + +equals(QT_ARCH, i386):contains(QT_CPU_FEATURES.$$QT_ARCH, sse2):compiler_supports_fpmath { + # Turn on SSE-based floating-point math + QMAKE_CFLAGS += -mfpmath=sse + QMAKE_CXXFLAGS += -mfpmath=sse +} + +android: CONFIG += qt_android_deps no_linker_version_script + +!header_module:unix:!isEmpty(QMAKE_LFLAGS_VERSION_SCRIPT):!no_linker_version_script:!static { + verscript = $${TARGET}.version + QMAKE_LFLAGS += $${QMAKE_LFLAGS_VERSION_SCRIPT}$$verscript + + internal_module { + verscript_content = "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API { *; };" + } else { + verscript_content = "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API {" \ + " qt_private_api_tag*;" + + private_api_headers = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.QPA_HEADER_FILES + + for(header, private_api_headers): \ + verscript_content += " @FILE:$${_PRO_FILE_PWD_}/$$header@" + verscript_content += "};" + + current = Qt_$$QT_MAJOR_VERSION + verscript_content += "$$current { *; };" + isEmpty(QT_NAMESPACE): tag_symbol = qt_version_tag + else: tag_symbol = qt_version_tag_$$QT_NAMESPACE + + for(i, 0..$$QT_MINOR_VERSION) { + previous = $$current + current = Qt_$${QT_MAJOR_VERSION}.$$i + equals(i, $$QT_MINOR_VERSION): verscript_content += "$$current { $$tag_symbol; } $$previous;" + else: verscript_content += "$$current {} $$previous;" + } + + # Add a post-processing step to replace the @FILE:filename@ + verscript_in = $${verscript}.in + verscriptprocess.name = linker version script ${QMAKE_FILE_BASE} + verscriptprocess.input = verscript_in + verscriptprocess.CONFIG += no_link target_predeps + for(header, private_api_headers): \ + verscriptprocess.depends += $${_PRO_FILE_PWD_}/$$header + verscriptprocess.output = $$verscript + verscriptprocess.commands = perl $${PWD}/data/unix/findclasslist.pl < ${QMAKE_FILE_IN} > $@ + silent:verscriptprocess.commands = @echo creating linker version script ${QMAKE_FILE_BASE} && $$verscriptprocess.commands + QMAKE_EXTRA_COMPILERS += verscriptprocess + + verscript = $$verscript_in + } + write_file($$OUT_PWD/$$verscript, verscript_content)|error() + unset(current) + unset(previous) + unset(verscript) + unset(verscript_content) +} + +#install directives +load(qt_installs) + +load(qt_targets) + +# this builds on top of qt_common +!internal_module:!lib_bundle:if(unix|mingw) { + CONFIG += create_pc + QMAKE_PKGCONFIG_DESTDIR = pkgconfig + host_build: \ + QMAKE_PKGCONFIG_LIBDIR = $$[QT_HOST_LIBS] + else: \ + QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw] + QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw] + QMAKE_PKGCONFIG_CFLAGS = -I${includedir}/$$MODULE_INCNAME + QMAKE_PKGCONFIG_NAME = $$replace(TARGET, ^Qt, "Qt$$QT_MAJOR_VERSION ") + QMAKE_PKGCONFIG_FILE = $$replace(TARGET, ^Qt, Qt$$QT_MAJOR_VERSION) + for(i, MODULE_DEPENDS): \ + QMAKE_PKGCONFIG_REQUIRES += $$replace(QT.$${i}.name, ^Qt, Qt$$section(QT.$${i}.VERSION, ., 0, 0)) + isEmpty(QMAKE_PKGCONFIG_DESCRIPTION): \ + QMAKE_PKGCONFIG_DESCRIPTION = $$replace(TARGET, ^Qt, "Qt ") module + pclib_replace.match = $$lib_replace.match + !isEmpty(lib_replace.replace): \ + pclib_replace.replace = $$QMAKE_PKGCONFIG_LIBDIR + pclib_replace.CONFIG = path + QMAKE_PKGCONFIG_INSTALL_REPLACE += pclib_replace +} +!lib_bundle:unix { + CONFIG += create_libtool + host_build: \ + QMAKE_LIBTOOL_LIBDIR = $$[QT_HOST_LIBS] + else: \ + QMAKE_LIBTOOL_LIBDIR = "=$$[QT_INSTALL_LIBS/raw]" + ltlib_replace.match = $$lib_replace.match + !isEmpty(lib_replace.replace): \ + ltlib_replace.replace = $$QMAKE_LIBTOOL_LIBDIR + ltlib_replace.CONFIG = path + QMAKE_LIBTOOL_INSTALL_REPLACE += ltlib_replace +} + +contains(QT_PRODUCT, OpenSource.*):DEFINES *= QT_OPENSOURCE +DEFINES *= QT_NO_CAST_TO_ASCII QT_ASCII_CAST_WARNINGS +DEFINES *= QT_MOC_COMPAT #we don't need warnings from calling moc code in our generated code +DEFINES *= QT_USE_QSTRINGBUILDER +DEFINES *= QT_DEPRECATED_WARNINGS + +win32 { + # On Windows, due to the way DLLs work, we need to export all functions, + # including the inlines + DEFINES *= QT_DISABLE_DEPRECATED_BEFORE=0x040800 +} else { + # On other platforms, Qt's own compilation goes needs to compile the Qt 5.0 API + DEFINES *= QT_DISABLE_DEPRECATED_BEFORE=0x050000 +} + +TARGET = $$qt5LibraryTarget($$TARGET$$QT_LIBINFIX) # Do this towards the end diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_module_headers.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_module_headers.prf new file mode 100644 index 000000000..8837410b8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_module_headers.prf @@ -0,0 +1,287 @@ +# +# 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. +# + +load(qt_build_paths) + +!build_pass:git_build { + qtPrepareTool(QMAKE_SYNCQT, syncqt, , system) + minimal_syncqt { + QMAKE_SYNCQT += -minimal $$QMAKE_SYNCQT_OPTIONS + } else { + qtConfig(private_tests): \ # -developer-build + QMAKE_SYNCQT += -check-includes + } + for(mod, MODULE_INCNAME): \ + QMAKE_SYNCQT += -module $$mod + QMAKE_SYNCQT += \ + -version $$VERSION -outdir $$system_quote($$MODULE_BASE_OUTDIR) $$MODULE_SYNCQT_DIR + !silent: message($$QMAKE_SYNCQT) + system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT") + + !minimal_syncqt { + include-distclean.commands = \ + $$QMAKE_DEL_TREE $$shell_quote($$shell_path($$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME)) + QMAKE_EXTRA_TARGETS += include-distclean + DISTCLEAN_DEPS += include-distclean + } +} + +# Pre-generated headers in the source tree (tar-ball) and +# - shadow build or +# - non-shadow non-prefix build of a module which is not qtbase +# (because the build-time generated headers all end up in qtbase). +!git_build: \ + if(!equals(_PRO_FILE_PWD_, $$OUT_PWD) \ + |if(!prefix_build:!equals(MODULE_BASE_INDIR, $$[QT_HOST_PREFIX]))): \ + CONFIG += split_incpath + +# To avoid stuffing the code with repetetive conditionals, +# we parametrize the names of the variables we assign to. + +# Internal modules have no private part - they *are* private. +!internal_module: \ + prv = _PRIVATE + +# When doing a framework build with a prefix, the module needs to point +# into the frameworks' Headers dirs directly, as no shared include/ dir +# is installed. +# However, during the build, it needs to point into the shared include/ +# dir, as the framework doesn't even exist yet. For bootstrapped modules +# which borrow headers from "proper" modules, this situation persists +# even beyond the module's own build. The implication of this is that +# qmake might never use a framework's headers in a non-prefix build, +# as there is no separate set of .pri files for users outside Qt. +# Borrowing is assumed to happen from modules which, in a framework build, +# actually are frameworks. +prefix_build:module_frameworks: \ + fwd = _FWD +# When using a split include path during the build, the installed module's +# include path is also structurally different from that in the build dir. +prefix_build:split_incpath: \ + sfwd = _FWD + +ibase = \$\$QT_MODULE_INCLUDE_BASE +MODULE$${fwd}_INCLUDES = $$ibase +split_incpath { + bibase = $$val_escape(MODULE_BASE_OUTDIR)/include + MODULE$${sfwd}_INCLUDES += $$bibase +} +for(mod, MODULE_INCNAME) { + mibase = $$ibase/$$mod + MODULE$${fwd}_INCLUDES += $$mibase + MODULE$${fwd}$${prv}_INCLUDES += $$mibase/$$VERSION $$mibase/$$VERSION/$$mod + split_incpath { + mbibase = $$bibase/$$mod + MODULE$${sfwd}_INCLUDES += $$mbibase + generated_privates: \ + MODULE$${sfwd}$${prv}_INCLUDES += $$mbibase/$$VERSION $$mbibase/$$VERSION/$$mod + } + prefix_build:module_frameworks { + mfbase = \$\$QT_MODULE_LIB_BASE/$${mod}.framework/Headers + MODULE_INCLUDES += $$mfbase + MODULE$${prv}_INCLUDES += $$mfbase/$$VERSION $$mfbase/$$VERSION/$$mod + } +} +MODULE_INCLUDES += $$MODULE_AUX_INCLUDES +MODULE_PRIVATE_INCLUDES += $$MODULE_PRIVATE_AUX_INCLUDES + +minimal_syncqt: return() + +#load up the headers info +git_build: \ + INC_PATH = $$MODULE_BASE_OUTDIR +else: \ + INC_PATH = $$MODULE_BASE_INDIR +include($$INC_PATH/include/$$MODULE_INCNAME/headers.pri, "", true) +!lib_bundle: \ # Headers are embedded into the bundle, so don't install them separately. + CONFIG += qt_install_headers + +alien_syncqt: return() + +MODULE_INC_OUTDIR = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME + +exists($$OUT_PWD/qt$${MODULE}-config.h) { + fwd_rel = $$relative_path($$OUT_PWD, $$MODULE_INC_OUTDIR) + SYNCQT.INJECTIONS += \ + $$fwd_rel/qt$${MODULE}-config.h:qt$${MODULE}-config.h \ + $$fwd_rel/qt$${MODULE}-config_p.h:$$MODULE_VERSION/$$MODULE_INCNAME/private/qt$${MODULE}-config_p.h + inst_rel = $$relative_path($$OUT_PWD, $$_PRO_FILE_PWD_) + SYNCQT.HEADER_FILES += $$inst_rel/qt$${MODULE}-config.h + SYNCQT.INJECTED_PRIVATE_HEADER_FILES += $$inst_rel/qt$${MODULE}-config_p.h +} + +for (injection, SYNCQT.INJECTIONS) { + injects = $$split(injection, :) + dst_hdr = $$absolute_path($$member(injects, 0), $$MODULE_INC_OUTDIR) + fwd_hdr = $$member(injects, 1) + MAIN_FWD = $$MODULE_INC_OUTDIR/$$fwd_hdr + MAIN_FWD_CONT = '$${LITERAL_HASH}include "$$relative_path($$dst_hdr, $$dirname(MAIN_FWD))"' + write_file($$MAIN_FWD, MAIN_FWD_CONT)|error() + touch($$MAIN_FWD, $$dst_hdr) + !git_build: QMAKE_DISTCLEAN += $$MAIN_FWD + injects = $$member(injects, 2, -1) + for (inject, injects) { + CLASS_FWD = $$MODULE_INC_OUTDIR/$$inject + CLASS_FWD_CONT = '$${LITERAL_HASH}include "$$fwd_hdr"' + write_file($$CLASS_FWD, CLASS_FWD_CONT)|error() + touch($$CLASS_FWD, $$dst_hdr) + !git_build: QMAKE_DISTCLEAN += $$CLASS_FWD + } +} + +autogen_warning = \ + "/* This file was generated by qmake with the info from <root>/$$relative_path($$_PRO_FILE_, $$MODULE_BASE_INDIR). */" + +# Create a module master depends header +MODULE_MASTER_DEPS_HEADER = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$${MODULE_INCNAME}Depends +!build_pass { + MODULE_MASTER_DEPS_HEADER_CONT = $$autogen_warning + MODULE_MASTER_DEPS_HEADER_CONT += "$${LITERAL_HASH}ifdef __cplusplus /* create empty PCH in C mode */" + for(dep, MODULE_DEPENDS) { + depname = $$eval(QT.$${dep}.master_header) + isEmpty(depname): \ + depname = $$eval(QT.$${dep}.name) + MODULE_MASTER_DEPS_HEADER_CONT += "$${LITERAL_HASH}include <$$depname/$$depname>" + } + MODULE_MASTER_DEPS_HEADER_CONT += "$${LITERAL_HASH}endif" + write_file($$MODULE_MASTER_DEPS_HEADER, MODULE_MASTER_DEPS_HEADER_CONT)|error() + !git_build: QMAKE_DISTCLEAN += $$MODULE_MASTER_DEPS_HEADER +} +SYNCQT.HEADER_FILES += $$MODULE_MASTER_DEPS_HEADER + +# Automatically enable precompiled headers for Qt modules with more than 2 sources +combined_SOURCES = $$SOURCES $$OBJECTIVE_SOURCES +count(combined_SOURCES, 2, >) { + # except for Gcc/Windows: Larger precompiled headers crash cc1plus.exe + # (e.g. with i686-4.8.2-release-posix-dwarf-rt_v3-rev3) + !if(gcc:equals(QMAKE_HOST.os, Windows)):!equals(TEMPLATE, aux) { + !defined(PRECOMPILED_HEADER, "var"): PRECOMPILED_HEADER = $$MODULE_MASTER_DEPS_HEADER + } +} else { + CONFIG -= precompile_header +} +unset(combined_SOURCES) + +headersclean:!internal_module { + # Make sure that the header compiles with our strict options + hcleanDEFS = -DQT_NO_CAST_TO_ASCII=1 \ + -DQT_NO_CAST_FROM_ASCII=1 \ + -UQT_RESTRICTED_CAST_FROM_ASCII \ + -DQT_STRICT_ITERATORS \ + -DQT_NO_URL_CAST_FROM_STRING=1 \ + -DQT_NO_CAST_FROM_BYTEARRAY=1 \ + -DQT_NO_KEYWORDS=1 \ + -DQT_USE_QSTRINGBUILDER \ + -DQT_USE_FAST_OPERATOR_PLUS \ + -Dsignals=int \ + -Dslots=int \ + -Demit=public: \ + -Dforeach=public: \ + -Dforever=public: + + gcc:!rim_qcc { + # Turn on some extra warnings not found in -Wall -Wextra. + # Common to GCC, Clang and ICC (and other compilers that masquerade as GCC): + hcleanFLAGS = -Wall -Wextra -Werror \ + -Woverloaded-virtual -Wshadow -Wundef -Wfloat-equal \ + -Wnon-virtual-dtor -Wpointer-arith -Wformat-security \ + -Wno-long-long -Wno-variadic-macros -pedantic-errors + + intel_icc { + # these warnings are disabled because explicit constructors with zero or + # multiple arguments are permitted in C++11: + # 2304: non-explicit constructor with single argument may cause implicit type conversion + # 2305: declaration of 'explicit' constructor without a single argument is redundant + hcleanFLAGS += -wd2304,2305 + greaterThan(QT_ICC_MAJOR_VERSION, 13) { + # ICC 14+ has a bug with -Wshadow, emitting it for cases where there's no shadowing + # (issue ID 0000698329, task DPD200245740) + hcleanFLAGS -= -Wshadow + } + } else { + # options accepted by GCC and Clang + hcleanFLAGS += -Wchar-subscripts -Wold-style-cast + + !contains(QT_ARCH, arm):!contains(QT_ARCH, mips): \ + hcleanFLAGS += -Wcast-align + + greaterThan(QT_CLANG_MAJOR_VERSION, 3) { + hcleanFLAGS += -Wdouble-promotion + } greaterThan(QT_CLANG_MAJOR_VERSION, 2):greaterThan(QT_CLANG_MINOR_VERSION, 7) { + hcleanFLAGS += -Wdouble-promotion + } + + !clang { + # options accepted only by GCC + + greaterThan(QT_GCC_MAJOR_VERSION, 4) { + hcleanFLAGS += -Wdouble-promotion + } greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 4) { + hcleanFLAGS += -Wdouble-promotion + } + c++11 { + # only enabled for actual c++11 builds due to + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52806 + hcleanFLAGS += -Wzero-as-null-pointer-constant + } + } + } + + # Use strict mode C++11 or C++98, with no GNU extensions (see -pedantic-errors above). + # The module might set CONFIG += c++11, but it might also change QMAKE_CXXFLAGS_CXX11 + # or the module (or the mkspec) can set the C++11 flag on QMAKE_CXXFLAGS + # (or QMAKE_CXXFLAGS_{RELEASE,DEBUG} but that's unlikely). + c++11:contains(QMAKE_CXXFLAGS_CXX11, -std=gnu++11) { + hcleanFLAGS += -std=c++11 + } else: contains(QMAKE_CXXFLAGS, -std=gnu++11) { + hcleanFLAGS += -std=c++11 + } else: c++11:contains(QMAKE_CXXFLAGS_CXX11, -std=gnu++0x) { + hcleanFLAGS += -std=c++0x + } else: contains(QMAKE_CXXFLAGS, -std=gnu++0x) { + hcleanFLAGS += -std=c++0x + } else: !c++11:!contains(QMAKE_CXXFLAGS, -std=c++0x):!contains(QMAKE_CXXFLAGS, -std=c++11) { + hcleanFLAGS += -std=c++98 + } + + hcleanCOMMAND = $$QMAKE_CXX -c $(CXXFLAGS) $$hcleanFLAGS $(INCPATH) $$hcleanDEFS -xc++ ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + } else: win32-msvc2013 { + # 4180: qualifier applied to function type has no meaning; ignored + # 4458: declaration of 'identifier' hides class member + # -Za enables strict standards behavior, but we can't add it because + # <windows.h> and <GL.h> violate the standards. + hcleanFLAGS = -WX -W3 -wd4180 -wd4458 + hcleanCOMMAND = $$QMAKE_CXX -c $(CXXFLAGS) $$hcleanFLAGS $(INCPATH) $$hcleanDEFS -FI${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} \ + $$[QT_INSTALL_DATA/src]/mkspecs/features/data/dummy.cpp + } + + !isEmpty(hcleanCOMMAND):if(!qtConfig(debug_and_release)|CONFIG(release, debug|release)) { + CLEAN_HEADERS = + for (h, SYNCQT.CLEAN_HEADER_FILES) { + hh = $$split(h, :) + hr = $$member(hh, 1) + isEmpty(hr)|qtConfig($$hr): \ + CLEAN_HEADERS += $$member(hh, 0) + } + CLEAN_HEADERS -= $$HEADERSCLEAN_EXCLUDE + header_check.dependency_type = TYPE_C + header_check.CONFIG += no_link + header_check.output = ${QMAKE_VAR_OBJECTS_DIR}header_${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + header_check.input = CLEAN_HEADERS + header_check.variable_out = PRE_TARGETDEPS + header_check.name = headercheck ${QMAKE_FILE_IN} + header_check.commands = $$hcleanCOMMAND + silent:header_check.commands = @echo compiling[header] ${QMAKE_FILE_IN} && $$hcleanCOMMAND + QMAKE_EXTRA_COMPILERS += header_check + } + unset(hcleanCOMMAND) + unset(hcleanFLAGS) + unset(hcleanDEFS) +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_module_pris.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_module_pris.prf new file mode 100644 index 000000000..163f52f23 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_module_pris.prf @@ -0,0 +1,221 @@ +# +# 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. +# + +load(qt_build_paths) +force_independent|split_incpath: \ + CONFIG += need_fwd_pri +mod_work_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules +need_fwd_pri: \ + mod_inst_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst +else: \ + mod_inst_pfx = $$mod_work_pfx +!internal_module { + MODULE_ID = $$MODULE + mods_to_load = $$MODULE + !no_private_module { + MODULE_PRIVATE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE}_private.pri + mods_to_load += $${MODULE}_private + } +} else { + MODULE_ID = $${MODULE}_private + mods_to_load = $${MODULE}_private +} +need_fwd_pri: \ + pris_to_load = $$MODULE_ID +else: \ + pris_to_load = $$mods_to_load +MODULE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE_ID}.pri +MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri + +defineReplace(qtGetFeaturesForModule) { + enabled = $$unique(QT.$${1}.enabled_features) + disabled = $$unique(QT.$${1}.disabled_features) + result = \ + "QT.$${1}.enabled_features =$$join(enabled, " ", " ")" \ + "QT.$${1}.disabled_features =$$join(disabled, " ", " ")" + return($$result) +} + +defineReplace(qtGetExportsForModule) { + result = + for (var, QT.$${1}.exports): \ + result += "$$var = $$val_escape($$var)" + return($$result) +} + +defineReplace(qtExportLibsForModule) { + result = + for (lib, QT.$${1}.libraries) { + NAME = $$upper($$lib) + vars = \ + QMAKE_LIBS_$$NAME QMAKE_LIBS_$${NAME}_DEBUG QMAKE_LIBS_$${NAME}_RELEASE \ + QMAKE_DEFINES_$$NAME QMAKE_INCDIR_$$NAME + for (var, vars) { + defined($$var, var): \ + result += "$$var = $$val_escape($$var)" + } + } + return($$result) +} + +!build_pass { + + # Create a module .pri file + host_build: \ + module_libs = "\$\$QT_MODULE_HOST_LIB_BASE" + else: \ + module_libs = "\$\$QT_MODULE_LIB_BASE" + # In addition to the library's private deps, the private module's deps + # are logically runtime deps of the public module. + runtime_deps = $$QT_PRIVATE $$QT_FOR_PRIVATE + !isEmpty(runtime_deps): \ + module_rundep = "QT.$${MODULE_ID}.run_depends = $$replace(runtime_deps, -private$, _private)" + else: \ + module_rundep = + module_build_type = v2 + static: \ + module_build_type += staticlib + lib_bundle: \ + module_build_type += lib_bundle + module_frameworks: \ + MODULE_FRAMEWORKS = " \$\$QT_MODULE_LIB_BASE" + internal_module: \ + module_build_type += internal_module + ltcg: \ + module_build_type += ltcg + module_module = + !equals(TEMPLATE, aux) { + module_module = $$TARGET$$QT_LIBINFIX + !lib_bundle: module_module ~= s,^Qt,Qt$$QT_MAJOR_VERSION, + } + !isEmpty(MODULE_CONFIG): \ + module_config = "QT.$${MODULE_ID}.CONFIG = $$MODULE_CONFIG" + else: \ + module_config = + !isEmpty(MODULE_PLUGIN_TYPES): \ + module_plugtypes = "QT.$${MODULE_ID}.plugin_types = $$replace(MODULE_PLUGIN_TYPES, /[^.]+\\.[^.]+$, )" + else: \ + module_plugtypes = + !isEmpty(MODULE_MASTER_HEADER): \ + module_master = "QT.$${MODULE_ID}.master_header = $$MODULE_MASTER_HEADER" + else: \ + module_master = + MODULE_PRI_CONT = \ + "QT.$${MODULE_ID}.VERSION = $${VERSION}" \ + "" \ + "QT.$${MODULE_ID}.name = $$TARGET" \ + "QT.$${MODULE_ID}.module = $$module_module" \ + "QT.$${MODULE_ID}.libs = $$module_libs" \ + $$module_master \ + "QT.$${MODULE_ID}.includes = $$MODULE_INCLUDES" \ + "QT.$${MODULE_ID}.frameworks =$$MODULE_FRAMEWORKS" + !host_build: MODULE_PRI_CONT += \ + "QT.$${MODULE_ID}.bins = \$\$QT_MODULE_BIN_BASE" \ + $$module_plugtypes + MODULE_PRI_CONT += \ + "QT.$${MODULE_ID}.depends =$$join(MODULE_DEPENDS, " ", " ")" \ + $$module_rundep \ + "QT.$${MODULE_ID}.uses =$$join(QMAKE_USE, " ", " ")" \ + "QT.$${MODULE_ID}.module_config =$$join(module_build_type, " ", " ")" \ + $$module_config \ + "QT.$${MODULE_ID}.DEFINES = $$val_escape(MODULE_DEFINES)" \ + $$qtGetFeaturesForModule($$MODULE_ID) \ + $$qtGetExportsForModule($$MODULE_ID) \ + "QT_CONFIG +=$$join(QT.$${MODULE_ID}.QT_CONFIG, " ", " ")" \ + "" \ + "QT_MODULES += $$MODULE" + winrt: MODULE_PRI_CONT += \ + "QT.$${MODULE_ID}.winrt_capabilities =$$join(MODULE_WINRT_CAPABILITIES, " ", " ")" \ + "QT.$${MODULE_ID}.winrt_capabilities_device =$$join(MODULE_WINRT_CAPABILITIES_DEVICE, " ", " ")" + write_file($$MODULE_PRI, MODULE_PRI_CONT)|error() + !internal_module:!no_private_module { + module_build_type += internal_module + private_deps = $$QT + private_deps -= $$MODULE_DEPENDS + private_deps += $$MODULE $$QT_FOR_PRIVATE + private_deps ~= s,-private$,_private,g + MODULE_PRIVATE_PRI_CONT = \ + "QT.$${MODULE}_private.VERSION = $${VERSION}" \ + "" \ + "QT.$${MODULE}_private.name = $${TARGET}" \ # Same name as base module + "QT.$${MODULE}_private.module =" \ + "QT.$${MODULE}_private.libs = $$module_libs" \ + "QT.$${MODULE}_private.includes = $$MODULE_PRIVATE_INCLUDES" \ + "QT.$${MODULE}_private.frameworks =" \ + "QT.$${MODULE}_private.depends = $$private_deps" \ + "QT.$${MODULE}_private.uses =$$join(QMAKE_USE_FOR_PRIVATE, " ", " ")" \ + "QT.$${MODULE}_private.module_config =$$join(module_build_type, " ", " ")" \ + $$qtGetFeaturesForModule($${MODULE}_private) \ + "" \ + $$qtExportLibsForModule($${MODULE}_private) + write_file($$MODULE_PRIVATE_PRI, MODULE_PRIVATE_PRI_CONT)|error() + } + MODULE_PRI_FILES = $$MODULE_PRI $$MODULE_PRIVATE_PRI + + need_fwd_pri { + + !git_build: \ + MODULE_BASE_INCDIR = $$MODULE_BASE_INDIR + else: \ + MODULE_BASE_INCDIR = $$MODULE_BASE_OUTDIR + + # Create a forwarding module .pri file + MODULE_FWD_PRI_CONT = \ + "QT_MODULE_BIN_BASE = $$val_escape(MODULE_BASE_OUTDIR)/bin" \ + "QT_MODULE_INCLUDE_BASE = $$val_escape(MODULE_BASE_INCDIR)/include" \ + "QT_MODULE_LIB_BASE = $$val_escape(MODULE_BASE_OUTDIR)/lib" \ + "QT_MODULE_HOST_LIB_BASE = $$val_escape(MODULE_BASE_OUTDIR)/lib" \ + "include($$val_escape(MODULE_PRI))" \ + "QT.$${MODULE_ID}.priority = 1" + !internal_module:!no_private_module: MODULE_FWD_PRI_CONT += \ + "include($$val_escape(MODULE_PRIVATE_PRI))" \ + "QT.$${MODULE}_private.priority = 1" + !isEmpty(MODULE_FWD_INCLUDES) { + !lib_bundle: \ + pls = + + MODULE_FWD_PRI_CONT += \ + "QT.$${MODULE_ID}.includes $$pls= $$MODULE_FWD_INCLUDES" + !internal_module: \ + MODULE_FWD_PRI_CONT += \ + "QT.$${MODULE}_private.includes $$pls= $$MODULE_FWD_PRIVATE_INCLUDES" + } + write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error() + touch($$MODULE_FWD_PRI, $$MODULE_PRI) + MODULE_PRI_FILES += $$MODULE_FWD_PRI + + } else { + + # This is needed for the direct include() below. Mirrors qt_config.prf + QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS] + QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS] + QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS] + QT_MODULE_HOST_LIB_BASE = $$[QT_HOST_LIBS] + + } + + # Then, inject the new module into the current cache state + !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_PRI): \ # before the actual include()! + cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, MODULE_PRI_FILES) + for(pri, pris_to_load): \ + include($$mod_work_pfx/qt_lib_$${pri}.pri) + for(mod, mods_to_load) { + for(var, $$list(VERSION MAJOR_VERSION MINOR_VERSION PATCH_VERSION \ + name module depends run_depends plugin_types module_config CONFIG DEFINES \ + priority includes bins libs frameworks \ + winrt_capabilities winrt_capabilities_device \ + )):defined(QT.$${mod}.$$var, var):cache(QT.$${mod}.$$var, transient) + } + cache(QT_MODULES, transient) + +} # !build_pass + +# Schedule the regular .pri file for installation +CONFIG += qt_install_module diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_parts.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_parts.prf new file mode 100644 index 000000000..67e218ca7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_parts.prf @@ -0,0 +1,94 @@ +# +# 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. +# + +# Ensure that each module has a .qmake.cache when properly qmake'd. +cache() + +load(qt_configure) + +load(qt_build_config) + +TEMPLATE = subdirs + +bp = $$eval($$upper($$TARGET)_BUILD_PARTS) +!isEmpty(bp): QT_BUILD_PARTS = $$bp + +exists($$_PRO_FILE_PWD_/src/src.pro) { + sub_src.subdir = src + sub_src.target = sub-src + SUBDIRS += sub_src + + exists($$_PRO_FILE_PWD_/tools/tools.pro) { + sub_tools.subdir = tools + sub_tools.target = sub-tools + sub_tools.depends = sub_src + # conditional treatment happens on a case-by-case basis + SUBDIRS += sub_tools + } +} + +exists($$_PRO_FILE_PWD_/examples/examples.pro) { + sub_examples.subdir = examples + sub_examples.target = sub-examples + contains(SUBDIRS, sub_src): sub_examples.depends = sub_src + examples_need_tools: sub_examples.depends += sub_tools + !contains(QT_BUILD_PARTS, examples): sub_examples.CONFIG = no_default_target no_default_install + SUBDIRS += sub_examples +} + +# Some modules still have these +exists($$_PRO_FILE_PWD_/demos/demos.pro) { + sub_demos.subdir = demos + sub_demos.target = sub-demos + contains(SUBDIRS, sub_src): sub_demos.depends = sub_src + examples_need_tools: sub_demos.depends += sub_tools + !contains(QT_BUILD_PARTS, examples): sub_demos.CONFIG = no_default_target no_default_install + SUBDIRS += sub_demos +} + +exists($$_PRO_FILE_PWD_/tests/tests.pro) { + sub_tests.subdir = tests + sub_tests.target = sub-tests + contains(SUBDIRS, sub_src): sub_tests.depends = sub_src # The tests may have a run-time only dependency on other parts + tests_need_tools: sub_tests.depends += sub_tools + sub_tests.CONFIG = no_default_install + !contains(QT_BUILD_PARTS, tests) { + sub_tests.CONFIG += no_default_target + } else: !uikit { + # Make sure these are there in case we need them + sub_tools.CONFIG -= no_default_target + sub_examples.CONFIG -= no_default_target + sub_demos.CONFIG -= no_default_target + } + SUBDIRS += sub_tests +} + +QT_BUILD_PARTS -= libs tools examples tests +!isEmpty(QT_BUILD_PARTS): warning("Unknown build part(s): $$QT_BUILD_PARTS") + +QMAKE_DISTCLEAN += \ + .qmake.cache \ + config.cache \ + config.log \ + mkspecs/modules/*.pri \ + mkspecs/modules-inst/*.pri + +tests = $$files($$_PRO_FILE_PWD_/config.tests/*.pro, true) +testdirs = +for (t, tests): \ + testdirs += $$relative_path($$dirname(t), $$_PRO_FILE_PWD_) +testdirs = $$unique(testdirs) +for (td, testdirs) { + t = $$basename(td)-distclean + $${t}.commands = -$$QMAKE_CD $$shell_path($$td) && $(MAKE) distclean + QMAKE_EXTRA_TARGETS += $$t + DISTCLEAN_DEPS += $$t +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_plugin.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_plugin.prf new file mode 100644 index 000000000..14fc5f9a9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_plugin.prf @@ -0,0 +1,101 @@ +# +# 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. +# + +load(qt_build_paths) + +isEmpty(PLUGIN_TYPE): error("PLUGIN_TYPE (plugins/ subdirectory) needs to be defined.") + +TEMPLATE = lib +CONFIG += plugin +DESTDIR = $$MODULE_BASE_OUTDIR/plugins/$$PLUGIN_TYPE + +win32:CONFIG(shared, static|shared) { + # Embed a VERSIONINFO resource into the plugin's DLL. + isEmpty(VERSION): VERSION = $$QT_VERSION + CONFIG += skip_target_version_ext +} + +tool_plugin { + !build_pass:qtConfig(debug_and_release): CONFIG += release +} else:if(win32|mac):!macx-xcode { + qtConfig(debug_and_release): CONFIG += debug_and_release + qtConfig(build_all): CONFIG += build_all +} + +CONFIG += relative_qt_rpath # Qt's plugins should be relocatable + +# Qt libraries should only use Application Extension safe APIs +darwin:!no_app_extension_api_only: CONFIG += app_extension_api_only + +CONFIG(static, static|shared)|prefix_build { + isEmpty(MODULE): MODULE = $$basename(TARGET) + + mod_work_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules + force_independent: \ + mod_inst_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst + else: \ + mod_inst_pfx = $$mod_work_pfx + MODULE_PRI = $$mod_inst_pfx/qt_plugin_$${MODULE}.pri + MODULE_FWD_PRI = $$mod_work_pfx/qt_plugin_$${MODULE}.pri + + !build_pass { + qt_plugin_deps = $$QT $$QT_PRIVATE + qt_plugin_deps ~= s,-private$,_private,g + + MODULE_PRI_CONT = \ + "QT_PLUGIN.$${MODULE}.TYPE = $$PLUGIN_TYPE" \ + "QT_PLUGIN.$${MODULE}.EXTENDS =$$join(PLUGIN_EXTENDS, " ", " ")" \ + "QT_PLUGIN.$${MODULE}.DEPENDS = $$qt_plugin_deps" \ + "QT_PLUGIN.$${MODULE}.CLASS_NAME = $$PLUGIN_CLASS_NAME" \ + "QT_PLUGINS += $$MODULE" + write_file($$MODULE_PRI, MODULE_PRI_CONT)|error() + MODULE_PRI_FILES = $$MODULE_PRI + + force_independent { + + # Create a forwarding module .pri file + MODULE_FWD_PRI_CONT = \ + "QT_PLUGIN.$${MODULE}.PATH = $$MODULE_BASE_OUTDIR/plugins" \ + "include($$MODULE_PRI)" + write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error() + touch($$MODULE_FWD_PRI, $$MODULE_PRI) + MODULE_PRI_FILES += $$MODULE_FWD_PRI + + } + + # Then, inject the new module into the current cache state + !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_FWD_PRI): \ # before the actual include()! + cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, MODULE_PRI_FILES) + include($$MODULE_FWD_PRI) + for(var, $$list(TYPE EXTENDS CLASS_NAME PATH)): \ + defined(QT_PLUGIN.$${MODULE}.$$var, var): \ + cache(QT_PLUGIN.$${MODULE}.$$var, transient) + cache(QT_PLUGINS, transient) + } + + CONFIG(static, static|shared) { + pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules + pritarget.files = $$MODULE_PRI + INSTALLS += pritarget + } +} + +target.path = $$[QT_INSTALL_PLUGINS]/$$PLUGIN_TYPE +INSTALLS += target + +TARGET = $$qt5LibraryTarget($$TARGET) + +CONFIG += create_cmake + +load(qt_targets) +load(qt_common) + +QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_targets.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_targets.prf new file mode 100644 index 000000000..49f7e6bd4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_targets.prf @@ -0,0 +1,4 @@ +QMAKE_TARGET_COMPANY = The Qt Company Ltd. +isEmpty(QMAKE_TARGET_PRODUCT): QMAKE_TARGET_PRODUCT = Qt5 +isEmpty(QMAKE_TARGET_DESCRIPTION): QMAKE_TARGET_DESCRIPTION = C++ Application Development Framework +QMAKE_TARGET_COPYRIGHT = Copyright (C) 2017 The Qt Company Ltd. diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_tool.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_tool.prf new file mode 100644 index 000000000..a8d589f0f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/qt_tool.prf @@ -0,0 +1,78 @@ +# +# 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. +# + +CONFIG += no_launch_target +load(qt_app) + +CONFIG += console +DEFINES *= QT_USE_QSTRINGBUILDER + +# If we are doing a prefix build, create a "module" pri which enables +# qtPrepareTool() to work with the non-installed build. +# Non-bootstrapped tools always need this because of the environment setup. +!build_pass:if(!host_build|!force_bootstrap|force_independent|!isEmpty(HOST_QT_TOOLS)) { + isEmpty(MODULE):MODULE = $$TARGET + + load(qt_build_paths) + + TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_tool_$${MODULE}.pri + + vars = binary depends + + !host_build|isEmpty(HOST_QT_TOOLS) { + load(resolve_target) + + !host_build|!force_bootstrap: MODULE_DEPENDS = $$replace(QT, -private$, _private) + + !isEmpty(QT_TOOL_ENV) { + vars += envvars + module_var_names = + module_var_sets = + for(var, QT_TOOL_ENV) { + vars += env.$${var}.name env.$${var}.value + module_var_names += QT_TOOL.$${MODULE}.env.$${var} + module_var_sets += \ + "QT_TOOL.$${MODULE}.env.$${var}.name = $$val_escape($${var}.name)" \ + "QT_TOOL.$${MODULE}.env.$${var}.value = $$val_escape($${var}.value)" + } + module_envvars = \ + "QT_TOOL.$${MODULE}.envvars = $$module_var_names" \ + $$module_var_sets + } else { + module_envvars = + } + + bin = $$system_path($$QMAKE_RESOLVED_TARGET) + } else { + bin = $${HOST_QT_TOOLS}/$${TARGET} + equals(QMAKE_HOST.os, Windows): bin = $${bin}.exe + bin = $$system_path($$bin) + } + + TOOL_PRI_CONT = \ + "QT_TOOL.$${MODULE}.binary = $$val_escape(bin)" \ + "QT_TOOL.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" \ + $$module_envvars + write_file($$TOOL_PRI, TOOL_PRI_CONT)|error() + + # Then, inject the new tool into the current cache state + !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$TOOL_PRI) { # before the actual include()! + added = $$TOOL_PRI + cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, added) + unset(added) + } + include($$TOOL_PRI) + for(var, vars): \ + cache(QT_TOOL.$${MODULE}.$$var, transient) + +} +# The variable is re-used by qtPrepareTool(), and we really don't want that. +unset(QT_TOOL_ENV) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/resolve_config.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/resolve_config.prf new file mode 100644 index 000000000..816c3b680 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/resolve_config.prf @@ -0,0 +1,59 @@ +# +# 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. +# + +staticlib: \ + CONFIG += static +else: dll: \ + CONFIG += shared + +CONFIG(static, static|shared) { + CONFIG -= shared dll + contains(TEMPLATE, ".*lib"): CONFIG += staticlib +} else { + CONFIG -= static staticlib + contains(TEMPLATE, ".*lib"): CONFIG += dll +} + +!macx-xcode: \ + addExclusiveBuilds(shared, static) + +CONFIG(debug, debug|release) { + CONFIG -= release + !force_debug_plist:debug_and_release: \ + CONFIG += no_plist +} else { + CONFIG -= debug +} + +!macx-xcode { + addExclusiveBuilds(debug, release) +} else { + # The Xcode generator always generates project files with + # debug and release configurations, regardless of whether + # or not debug_and_release is active. + for(build, $$list(debug release)) { + suffix = + qtConfig(debug_and_release) { + equals(build, debug): \ + suffix = _debug + } else { + contains(QT_CONFIG, debug): \ + suffix = _debug + } + + library_suffix_$${build}.name = $$QMAKE_XCODE_LIBRARY_SUFFIX_SETTING + library_suffix_$${build}.value = $$suffix + library_suffix_$${build}.build = $$build + QMAKE_MAC_XCODE_SETTINGS += library_suffix_$${build} + + CONFIG *= xcode_dynamic_library_suffix + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/resolve_target.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/resolve_target.prf new file mode 100644 index 000000000..a9fe0d76d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/resolve_target.prf @@ -0,0 +1,102 @@ +# +# 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. +# + +load(resolve_config) + +exclusive_builds: load(exclusive_builds_post) + +QMAKE_RESOLVED_TARGET = $$absolute_path($$DESTDIR, $$OUT_PWD)/ + +win32 { + contains(TEMPLATE, .*lib) { + !skip_target_version_ext:isEmpty(TARGET_VERSION_EXT):!isEmpty(VERSION) { + TARGET_VERSION_EXT = $$section(VERSION, ., 0, 0) + } + static:TARGET_EXT = .lib + else:TARGET_EXT = .dll + } else { + TARGET_EXT = .exe + } + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${TARGET}$${TARGET_VERSION_EXT}$${TARGET_EXT} +} else { + contains(TEMPLATE, .*lib):!if(plugin:no_plugin_name_prefix): LIBPREFIX = lib + + mac { + equals(TEMPLATE, lib) { + plugin:plugin_bundle { + !isEmpty(QMAKE_PLUGIN_BUNDLE_NAME): \ + plugin_target = $$QMAKE_PLUGIN_BUNDLE_NAME + else: \ + plugin_target = $$TARGET + QMAKE_RESOLVED_BUNDLE = $${QMAKE_RESOLVED_TARGET}$${plugin_target}.plugin + !shallow_bundle: \ + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/Contents/MacOS/$${TARGET} + else: \ + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}$${TARGET} + } else: !plugin:lib_bundle { + !isEmpty(QMAKE_FRAMEWORK_BUNDLE_NAME): \ + framework_target = $$QMAKE_FRAMEWORK_BUNDLE_NAME + else: \ + framework_target = $$TARGET + QMAKE_RESOLVED_BUNDLE = $${QMAKE_RESOLVED_TARGET}$${framework_target}.framework + !shallow_bundle { + TEMP_VERSION = $$section(VERSION, ., 0, 0) + isEmpty(TEMP_VERSION):TEMP_VERSION = A + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/Versions/$${TEMP_VERSION}/$${TARGET} + } else { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/$${TARGET} + } + } else { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${LIBPREFIX}$${TARGET} + !plugin { + TEMP_VERSION = $$section(VERSION, ., 0, 0) + isEmpty(TEMP_VERSION):TEMP_VERSION = 1 + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}.$${TEMP_VERSION} + } + static:QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}.$${QMAKE_EXTENSION_STATICLIB} + else:QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}.$${QMAKE_EXTENSION_SHLIB} + } + } else { + app_bundle { + !isEmpty(QMAKE_APPLICATION_BUNDLE_NAME): \ + app_target = $$QMAKE_APPLICATION_BUNDLE_NAME + else: \ + app_target = $$TARGET + QMAKE_RESOLVED_BUNDLE = $${QMAKE_RESOLVED_TARGET}$${app_target}.app + !shallow_bundle: \ + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/Contents/MacOS/$${TARGET} + else: \ + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/$${TARGET} + } else { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${TARGET} + } + } + } else { + equals(TEMPLATE, lib) { + static { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${LIBPREFIX}$${TARGET}.$${QMAKE_EXTENSION_STATICLIB} + } else: plugin|unversioned_libname { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${LIBPREFIX}$${TARGET}.$${QMAKE_EXTENSION_SHLIB} + } else { + TEMP_VERSION = $$VERSION + isEmpty(TEMP_VERSION):TEMP_VERSION = 1.0.0 + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${LIBPREFIX}$${TARGET}.$${QMAKE_EXTENSION_SHLIB}.$${TEMP_VERSION} + } + } else { + QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${TARGET} + } + } +} + +unset(TARGET_EXT) +unset(LIBPREFIX) +unset(TEMP_VERSION) + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/resources.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/resources.prf new file mode 100644 index 000000000..de769b4b8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/resources.prf @@ -0,0 +1,109 @@ +qtPrepareTool(QMAKE_RCC, rcc, _DEP) + +isEmpty(RCC_DIR):RCC_DIR = . +isEmpty(QMAKE_MOD_RCC):QMAKE_MOD_RCC = qrc + +!contains(QMAKE_RESOURCE_FLAGS, -root):!isEmpty(QMAKE_RESOURCE_ROOT):QMAKE_RESOURCE_FLAGS += -root $$QMAKE_RESOURCE_ROOT +!contains(QMAKE_RESOURCE_FLAGS, -name): QMAKE_RESOURCE_FLAGS += -name ${QMAKE_FILE_BASE} + +# http://www.w3.org/TR/xml/#syntax +defineReplace(xml_escape) { + 1 ~= s,&,&, + 1 ~= s,\',', + 1 ~= s,\",", + 1 ~= s,<,<, + 1 ~= s,>,>, + return($$1) +} + +RESOURCES += qmake_immediate +for(resource, RESOURCES) { + # Regular case of user qrc file + contains(resource, ".*\\.qrc$"): \ + next() + + # Fallback for stand-alone files/directories + !defined($${resource}.files, var) { + !equals(resource, qmake_immediate) { + !exists($$absolute_path($$resource, $$_PRO_FILE_PWD_)): \ + warning("Failure to find: $$resource") + qmake_immediate.files += $$resource + } + RESOURCES -= $$resource + next() + } + + resource_file = $$RCC_DIR/qmake_$${resource}.qrc + + isEmpty(BUILDS)|build_pass { + # Collection of files, generate qrc file + prefix = $$eval($${resource}.prefix) + isEmpty(prefix): \ + prefix = "/" + + resource_file_content = \ + "<!DOCTYPE RCC><RCC version=\"1.0\">" \ + "<qresource prefix=\"$$xml_escape($$prefix)\">" + + abs_base = $$absolute_path($$eval($${resource}.base), $$_PRO_FILE_PWD_) + + for(file, $${resource}.files) { + abs_path = $$absolute_path($$file, $$_PRO_FILE_PWD_) + files = $$files($$abs_path/*, true) + isEmpty(files): \ + files = $$abs_path + for (file, files) { + exists($$file/*): next() # exclude directories + alias = $$relative_path($$file, $$abs_base) + resource_file_content += \ + "<file alias=\"$$xml_escape($$alias)\">$$xml_escape($$file)</file>" + } + } + + resource_file_content += \ + "</qresource>" \ + "</RCC>" + + !write_file($$OUT_PWD/$$resource_file, resource_file_content): \ + error() + } + + RESOURCES -= $$resource + RESOURCES += $$resource_file +} + +rcc.input = RESOURCES +rcc.name = RCC ${QMAKE_FILE_IN} +rcc.depend_command = $$QMAKE_RCC_DEP -list $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} +rcc.CONFIG += add_inputs_as_makefile_deps + +!resources_big|ltcg|macx-xcode|contains(TEMPLATE, "vc.*") { + +rcc.output = $$RCC_DIR/$${first(QMAKE_MOD_RCC)}_${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} +rcc.commands = $$QMAKE_RCC $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} +rcc.variable_out = SOURCES + +} else { + +isEmpty(RCC_CXX):RCC_CXX = $$QMAKE_CXX $(CXXFLAGS) +RCC_OUT_BASE = $$RCC_DIR/$${first(QMAKE_MOD_RCC)}_${QMAKE_FILE_BASE} +RCC_CPP = $$RCC_OUT_BASE$${first(QMAKE_EXT_CPP)} +RCC_TMP = $${RCC_OUT_BASE}.tmp$${first(QMAKE_EXT_OBJ)} +RCC_OBJ = $$RCC_OUT_BASE$${first(QMAKE_EXT_OBJ)} + +msvc: RCC_CXX_O_FLAG = "-Fo" +else: RCC_CXX_O_FLAG = "-o " + +rcc.output = $$RCC_OBJ +rcc.commands = \ + $$QMAKE_RCC $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -pass 1 -o $$RCC_CPP && \ + $$RCC_CXX -c $$RCC_CPP $$RCC_CXX_O_FLAG$$RCC_TMP && \ + $$QMAKE_RCC $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -pass 2 -temp $$RCC_TMP -o ${QMAKE_FILE_OUT} +rcc.clean += $$RCC_CPP $$RCC_TMP + +} + +rcc.depends += $$QMAKE_RCC_EXE +silent:rcc.commands = @echo rcc ${QMAKE_FILE_IN} && $$rcc.commands +else:rcc.commands ~= s/&&/$$escape_expand(\\n\\t)/g +QMAKE_EXTRA_COMPILERS += rcc diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/sanitizer.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/sanitizer.prf new file mode 100644 index 000000000..9e7ff0218 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/sanitizer.prf @@ -0,0 +1,30 @@ +# Sanitizer flags + + +sanitize_address { + QMAKE_CFLAGS += $$QMAKE_SANITIZE_ADDRESS_CFLAGS + QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_ADDRESS_CXXFLAGS + QMAKE_LFLAGS += $$QMAKE_SANITIZE_ADDRESS_LFLAGS +} + +sanitize_memory { + QMAKE_CFLAGS += $$QMAKE_SANITIZE_MEMORY_CFLAGS + QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_MEMORY_CXXFLAGS + QMAKE_LFLAGS += $$QMAKE_SANITIZE_MEMORY_LFLAGS +} + +sanitize_thread { + QMAKE_CFLAGS += $$QMAKE_SANITIZE_THREAD_CFLAGS + QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_THREAD_CXXFLAGS + QMAKE_LFLAGS += $$QMAKE_SANITIZE_THREAD_LFLAGS +} + +sanitize_undefined { + QMAKE_CFLAGS += $$QMAKE_SANITIZE_UNDEFINED_CFLAGS + QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_UNDEFINED_CXXFLAGS + QMAKE_LFLAGS += $$QMAKE_SANITIZE_UNDEFINED_LFLAGS +} + +QMAKE_CFLAGS += $$QMAKE_COMMON_SANITIZE_CFLAGS +QMAKE_CXXFLAGS += $$QMAKE_COMMON_SANITIZE_CXXFLAGS + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/silent.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/silent.prf new file mode 100644 index 000000000..6d7c17041 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/silent.prf @@ -0,0 +1,11 @@ +!macx-xcode { + msvc { + QMAKE_CC = @$$QMAKE_CC + QMAKE_CXX = @$$QMAKE_CXX + } else { + QMAKE_CC = @echo compiling $< && $$QMAKE_CC + QMAKE_CXX = @echo compiling $< && $$QMAKE_CXX + } + !contains(QMAKE_LINK, "@:"):QMAKE_LINK = @echo linking $@ && $$QMAKE_LINK + QMAKE_LINK_SHLIB = @echo linking $@ && $$QMAKE_LINK_SHLIB +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/simd.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/simd.prf new file mode 100644 index 000000000..953fc52c6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/simd.prf @@ -0,0 +1,142 @@ +# +# 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. +# + +# Get the SIMD flags +load(qt_build_config) + +# Set QT_CPU_FEATURES for convenience +QT_CPU_FEATURES = $$eval(QT_CPU_FEATURES.$$QT_ARCH) + +# +# Set up compilers for SIMD (SSE/AVX, NEON etc) +# +defineTest(addSimdCompiler) { + name = $$1 + upname = $$upper($$name) + headers_var = $${upname}_HEADERS + sources_var = $${upname}_SOURCES + asm_var = $${upname}_ASM + + CONFIG($$1) { + cflags = $$eval(QMAKE_CFLAGS_$${upname}) + ltcg: cflags += $$QMAKE_CFLAGS_DISABLE_LTCG + contains(QT_CPU_FEATURES, $$name) { + # Default compiler settings include this feature, so just add to SOURCES + SOURCES += $$eval($$sources_var) + export(SOURCES) + } else { + # We need special compiler flags + $${name}_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) $$cflags $(INCPATH) ${QMAKE_FILE_IN} + msvc: $${name}_compiler.commands += -Fo${QMAKE_FILE_OUT} + else: $${name}_compiler.commands += -o ${QMAKE_FILE_OUT} + + $${name}_compiler.dependency_type = TYPE_C + $${name}_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + $${name}_compiler.input = $$sources_var + $${name}_compiler.variable_out = OBJECTS + $${name}_compiler.name = compiling[$${name}] ${QMAKE_FILE_IN} + silent: $${name}_compiler.commands = @echo compiling[$${name}] ${QMAKE_FILE_IN} && $$eval($${name}_compiler.commands) + QMAKE_EXTRA_COMPILERS += $${name}_compiler + + export($${name}_compiler.commands) + export($${name}_compiler.dependency_type) + export($${name}_compiler.output) + export($${name}_compiler.input) + export($${name}_compiler.variable_out) + export($${name}_compiler.name) + } + + # We always need an assembler (need to run the C compiler and without precompiled headers) + msvc { + # Don't know how to run MSVC's assembler... + !isEmpty($$asm_var): error("Sorry, not implemented: assembling $$upname for MSVC.") + } else: false { + # This is just for the IDE + SOURCES += $$eval($$asm_var) + export(SOURCES) + } else { + $${name}_assembler.commands = $$QMAKE_CC -c $(CFLAGS) + !contains(QT_CPU_FEATURES, $${name}): $${name}_assembler.commands += $$cflags + clang:no_clang_integrated_as: $${name}_assembler.commands += -fno-integrated-as + $${name}_assembler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + $${name}_assembler.dependency_type = TYPE_C + $${name}_assembler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + $${name}_assembler.input = $$asm_var + $${name}_assembler.variable_out = OBJECTS + $${name}_assembler.name = assembling[$${name}] ${QMAKE_FILE_IN} + silent: $${name}_assembler.commands = @echo assembling[$${name}] ${QMAKE_FILE_IN} && $$eval($${name}_assembler.commands) + QMAKE_EXTRA_COMPILERS += $${name}_assembler + + export($${name}_assembler.commands) + export($${name}_assembler.dependency_type) + export($${name}_assembler.output) + export($${name}_assembler.input) + export($${name}_assembler.variable_out) + export($${name}_assembler.name) + } + + HEADERS += $$eval($$headers_var) + export(HEADERS) + export(QMAKE_EXTRA_COMPILERS) + } +} +addSimdCompiler(sse2) +addSimdCompiler(sse3) +addSimdCompiler(ssse3) +addSimdCompiler(sse4_1) +addSimdCompiler(sse4_2) +addSimdCompiler(avx) +addSimdCompiler(avx2) +addSimdCompiler(avx512f) +addSimdCompiler(avx512cd) +addSimdCompiler(avx512er) +addSimdCompiler(avx512pf) +addSimdCompiler(avx512dq) +addSimdCompiler(avx512bw) +addSimdCompiler(avx512vl) +addSimdCompiler(avx512ifma) +addSimdCompiler(avx512vbmi) +addSimdCompiler(f16c) +addSimdCompiler(neon) +addSimdCompiler(mips_dsp) +addSimdCompiler(mips_dspr2) + +# Follow the Intel compiler's lead and define profiles of AVX512 instructions +defineTest(addAvx512Profile) { + name = $$1 + dependencies = $$2 + upname = $$upper($$name) + varname = QMAKE_CFLAGS_$$upname + + cpu_features_missing = + cflags = $$QMAKE_CFLAGS_AVX512F + for(part, dependencies) { + !CONFIG($$part): return() # Profile isn't supported by the compiler + + uppart = $$upper($$part) + cflags *= $$eval(QMAKE_CFLAGS_$${uppart}) + !contains(QT_CPU_FEATURES, $$uppart): cpu_features_missing += $$uppart + } + + CONFIG += $$name + isEmpty(cpu_features_missing): QT_CPU_FEATURES += $$name + $$varname = $$cflags + + export(QT_CPU_FEATURES) + export(CONFIG) + export($$varname) + addSimdCompiler($$name) +} +addAvx512Profile(avx512common, avx512cd) +addAvx512Profile(avx512mic, avx512cd avx512er avx512pf) +addAvx512Profile(avx512core, avx512cd avx512bw avx512dq avx512vl) +addAvx512Profile(avx512ifmavl, avx512ifma avx512vl) +addAvx512Profile(avx512vbmivl, avx512vbmi avx512vl) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/spec_post.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/spec_post.prf new file mode 100644 index 000000000..432bb5151 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/spec_post.prf @@ -0,0 +1,130 @@ +# This file is loaded by qmake right after loading the qmakespec. +# Afterwards, the project's .qmake.conf and .qmake.cache are loaded +# (if present). +# Note that up to this point, nothing specific to a particular SUBDIRS +# project or build pass can be done. + +isEmpty(MAKEFILE_GENERATOR):error("Qmake spec does not set MAKEFILE_GENERATOR.") +isEmpty(QMAKE_PLATFORM) { + isEmpty(TARGET_PLATFORM) { + equals(MAKEFILE_GENERATOR, UNIX) { + equals(QMAKE_HOST.os, Darwin): \ + TARGET_PLATFORM = macx # backwards compatibility; cannot change + else: \ + TARGET_PLATFORM = unix + } else:if(equals(MAKEFILE_GENERATOR, MSVC.NET) \ + |equals(MAKEFILE_GENERATOR, MSBUILD) \ + |equals(MAKEFILE_GENERATOR, MINGW)) { + TARGET_PLATFORM = win32 + } else:if(equals(MAKEFILE_GENERATOR, PROJECTBUILDER) \ + |equals(MAKEFILE_GENERATOR, XCODE)) { + TARGET_PLATFORM = macx + } else { + error("Qmake spec sets an invalid MAKEFILE_GENERATOR.") + } + } + equals(TARGET_PLATFORM, unix): \ + QMAKE_PLATFORM = unix + else:equals(TARGET_PLATFORM, macx): \ + QMAKE_PLATFORM = macos osx macx mac darwin unix + else:equals(TARGET_PLATFORM, win32): \ + QMAKE_PLATFORM = win32 + else: \ + error("Qmake spec sets an invalid TARGET_PLATFORM.") +} + +contains(QMAKE_PLATFORM, macx) { + !contains(QMAKE_PLATFORM, osx) { + warning("qmake spec specified platform macx, but not osx."); + QMAKE_PLATFORM = osx $$QMAKE_PLATFORM + } + + !contains(QMAKE_PLATFORM, macos) { + warning("qmake spec specifies platform macx, but not macos.") + QMAKE_PLATFORM = macos $$QMAKE_PLATFORM + } +} + +CONFIG += $$QMAKE_PLATFORM + +isEmpty(QMAKE_COMPILER) { + *-g++*: \ + QMAKE_COMPILER = gcc + else:*-llvm*: \ + QMAKE_COMPILER = gcc llvm + else:*-clang*: \ + QMAKE_COMPILER = gcc clang llvm + else:*-msvc*: \ + QMAKE_COMPILER = msvc + else: \ + error("qmake spec does not announce the compiler family, and it cannot be guessed.") + warning("qmake spec does not announce the compiler family. Guessed $${QMAKE_COMPILER}.") +} +CONFIG += $$QMAKE_COMPILER + +equals(MAKEFILE_GENERATOR, MSBUILD) \ +|equals(MAKEFILE_GENERATOR, MSVC.NET) \ +|isEmpty(QMAKE_SH) { + QMAKE_ZIP = zip -r -9 + + QMAKE_CD = cd /d + QMAKE_COPY = copy /y + QMAKE_COPY_FILE = $$QMAKE_COPY + QMAKE_COPY_DIR = xcopy /s /q /y /i + # xcopy copies the contained files if source is a directory. Deal with it. + CONFIG += copy_dir_files + QMAKE_MOVE = move + QMAKE_DEL_FILE = del + QMAKE_DEL_DIR = rmdir + QMAKE_DEL_TREE = rmdir /s /q + QMAKE_CHK_EXISTS = if not exist %1 + QMAKE_CHK_DIR_EXISTS = if not exist # legacy + QMAKE_MKDIR = mkdir # legacy + QMAKE_MKDIR_CMD = if not exist %1 mkdir %1 & if not exist %1 exit 1 + QMAKE_STREAM_EDITOR = $(QMAKE) -install sed + QMAKE_SHELL_NULL_DEVICE = NUL + QMAKE_INSTALL_FILE = copy /y + QMAKE_INSTALL_PROGRAM = copy /y +} else { + QMAKE_TAR = tar -cf + QMAKE_GZIP = gzip -9f + + QMAKE_CD = cd + QMAKE_COPY = cp -f + QMAKE_COPY_FILE = $$QMAKE_COPY + QMAKE_COPY_DIR = $$QMAKE_COPY -R + QMAKE_MOVE = mv -f + QMAKE_DEL_FILE = rm -f + QMAKE_DEL_DIR = rmdir + QMAKE_DEL_TREE = rm -rf + QMAKE_CHK_EXISTS = test -e %1 || + QMAKE_CHK_DIR_EXISTS = test -d # legacy + QMAKE_MKDIR = mkdir -p # legacy + QMAKE_MKDIR_CMD = test -d %1 || mkdir -p %1 + QMAKE_STREAM_EDITOR = sed + QMAKE_SHELL_NULL_DEVICE = /dev/null + + equals(QMAKE_HOST.os, Windows) { + MINGW_IN_SHELL = 1 # legacy + # Override built-ins. + QMAKE_DIR_SEP = / + QMAKE_DIRLIST_SEP = : + # Because install's ability to set permissions is not relevant on Windows, + # and git's msys does not provide it to start with. + QMAKE_INSTALL_FILE = cp -f + QMAKE_INSTALL_PROGRAM = cp -f + } else { + QMAKE_INSTALL_FILE = install -m 644 -p + QMAKE_INSTALL_PROGRAM = install -m 755 -p + } +} +QMAKE_INSTALL_DIR = $$QMAKE_COPY_DIR +equals(QMAKE_HOST.os, Windows) { + QMAKE_SYMBOLIC_LINK = $(QMAKE) -install ln -f -s + QMAKE_LN_SHLIB = $(QMAKE) -install ln -s + QMAKE_SYSTEM_NULL_DEVICE = NUL +} else { + QMAKE_SYMBOLIC_LINK = ln -f -s + QMAKE_LN_SHLIB = ln -s + QMAKE_SYSTEM_NULL_DEVICE = /dev/null +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/spec_pre.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/spec_pre.prf new file mode 100644 index 000000000..51ea3a832 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/spec_pre.prf @@ -0,0 +1,55 @@ +# This file is loaded by qmake right before loading the qmakespec. +# At this point, the built-in variables have been set up and the project's +# .qmake.super was read (if present). + +QMAKE_DIR_SEP = $$DIR_SEPARATOR +QMAKE_DIRLIST_SEP = $$DIRLIST_SEPARATOR + +QMAKE_EXT_C = .c +QMAKE_EXT_CPP = .cpp .cc .cxx +QMAKE_EXT_OBJC = .m +QMAKE_EXT_OBJCXX = .mm +QMAKE_EXT_CPP_MOC = .moc +QMAKE_EXT_H = .h .hpp .hh .hxx +QMAKE_EXT_H_MOC = .cpp +QMAKE_EXT_JS = .js +QMAKE_EXT_LEX = .l +QMAKE_EXT_LIBTOOL = .la +QMAKE_EXT_PKGCONFIG = .pc +QMAKE_EXT_PRL = .prl +QMAKE_EXT_UI = .ui +QMAKE_EXT_YACC = .y + +QMAKE_CPP_MOD_MOC = +QMAKE_H_MOD_MOC = moc_ +QMAKE_MOD_LEX = _lex +QMAKE_MOD_YACC = _yacc + +defineTest(ensurePathEnv) { + isEmpty(QMAKE_PATH_ENV) { + QMAKE_PATH_ENV = $$(PATH) + QMAKE_PATH_ENV = $$split(QMAKE_PATH_ENV, $$QMAKE_DIRLIST_SEP) + export(QMAKE_PATH_ENV) + } +} + +equals(QMAKE_HOST.os, Windows) { + QMAKE_EXT_OBJ = .obj + QMAKE_EXT_RES = .res + QMAKE_SH = + ensurePathEnv() + for(dir, QMAKE_PATH_ENV) { + exists($$dir/sh.exe) { + QMAKE_SH = $$dir/sh.exe + break() + } + } +} else { + QMAKE_EXT_CPP += .C + QMAKE_EXT_H += .H + QMAKE_EXT_OBJ = .o + QMAKE_SH = sh +} + +CONFIG = file_copies qmake_use qt warn_on release link_prl +QT = core gui diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/static_runtime.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/static_runtime.prf new file mode 100644 index 000000000..3275e6e2e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/static_runtime.prf @@ -0,0 +1,7 @@ +msvc { + # -MD becomes -MT, -MDd becomes -MTd + QMAKE_CFLAGS ~= s,^-MD(d?)$, -MT\1,g + QMAKE_CXXFLAGS ~= s,^-MD(d?)$, -MT\1,g +} else: mingw { + QMAKE_LFLAGS += -static +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testcase.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testcase.prf new file mode 100644 index 000000000..3e1537dde --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testcase.prf @@ -0,0 +1,209 @@ +!have_target: return() + +# qt_build_config.prf disables execptions for all Qt modules which don't +# explicitly turn it on again, while the qmake default is to build with +# exceptions. As we want tests to be built like 3rd party applications, +# qt_build_config tells us to re-enable exceptions here. +testcase_exceptions: CONFIG += exceptions + +# Set in qt_build_config.prf +testcase_no_bundle: CONFIG -= app_bundle + +benchmark: type = benchmark +else: type = check + +$${type}.files = +$${type}.path = . + +# Add environment for non-installed builds. Do this first, so the +# 'make' variable expansions don't end up in a batch file/script. +QT_TOOL_NAME = target +qtAddTargetEnv($${type}.commands, QT) + +# If the test ends up in a different directory, we should cd to that directory. +TESTRUN_CWD = $$DESTDIR + +debug_and_release:debug_and_release_target { + # But in debug-and-release-target mode we don't want to cd into the debug/release + # directory (e.g. if the test goes to foo/release/tst_thing.exe, we want to do + # 'cd foo && release/tst_thing.exe', not 'cd foo/release && tst_thing.exe'). + + TESTRUN_CWD ~= s/(release|debug)$// + TEST_TARGET_DIR = $$relative_path($$absolute_path($$DESTDIR, $$OUT_PWD), $$absolute_path($$TESTRUN_CWD, $$OUT_PWD)) +} + +# Allow for a custom test runner script +$${type}.commands += $(TESTRUNNER) + +unix { + isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = . + + app_bundle: \ + $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET) + else: \ + $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET) +} else { + # Windows + !isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = $${TEST_TARGET_DIR}$${QMAKE_DIR_SEP} + $${type}.commands += $${TEST_TARGET_DIR}$(TARGET) +} + +# Allow for custom arguments to tests +$${type}.commands += $(TESTARGS) + +!isEmpty(TESTRUN_CWD):!contains(TESTRUN_CWD, ^\\./?): \ + $${type}.commands = $$QMAKE_CD $$shell_path($$TESTRUN_CWD) && $$eval($${type}.commands) + +# If the test is marked as insignificant, discard the exit code +insignificant_test: $${type}.commands = -$$eval($${type}.commands) + +QMAKE_EXTRA_TARGETS *= $${type} + +isEmpty(BUILDS)|build_pass { + $${type}.depends = first +} else { + # For exclusive builds, only run the test once. + $${type}.CONFIG = recursive + $${type}.target = $${type}_all + $${type}.recurse_target = $${type} + $${type}.commands = + + $${type}_first.depends = $$eval($$first(BUILDS).target)-$${type} + $${type}_first.target = $${type} + QMAKE_EXTRA_TARGETS += $${type}_first +} + +!no_testcase_installs:!contains(INSTALLS, target) { + # Install tests unless no_testcase_installs is set, or there is already + # a `target' in INSTALLS. + # + # Tests are installed under a directory named after the target so that each + # test has its own directory for testdata etc. + # + load(resolve_target) + TARGET_BASENAME = $$basename(QMAKE_RESOLVED_TARGET) + target.path = $$[QT_INSTALL_TESTS]/$$TARGET_BASENAME + INSTALLS += target +} + +!builtin_testdata:contains(INSTALLS, target) { + # Install testdata and helpers as well, but only if we're actually installing the test. + # + # Testdata is installed relative to the directory containing the testcase + # binary itself, e.g. this: + # + # CONFIG += testcase + # TARGET = tst_qxmlreader + # + # TESTDATA += testdata/test1.xml testdata/test2.xml + # + # ... will result in: + # + # /usr/lib/qt5/tests/tst_qxmlreader/tst_qxmlreader + # /usr/lib/qt5/tests/tst_qxmlreader/testdata/test1.xml + # /usr/lib/qt5/tests/tst_qxmlreader/testdata/test2.xml + # ... + # + for(file, TESTDATA) { + tnam = $$file + tnam ~= s,\\.\\.,dotdot, + tnam ~= s,[?*],wildcard, + tnam ~= s,[^A-Za-z0-9],_, + tdi = testdata_$$tnam + + # TESTDATA consists of the files to install (source)... + $${tdi}.files = $$file + + # ... and the destination preserves the relative path. + # Strip any leading ../ from the testdata, so that installation does not escape + # the test's directory in the case of e.g. + # + # TARGET = ../tst_qprocess + # TESTDATA = ../thing1 ../thing2 + # + # The testdata should end up at $$[QT_INSTALL_TESTS]/tst_qprocess/thing1, + # rather than $$[QT_INSTALL_TESTS]/tst_qprocess/../thing1. + # + # Note that this does not guarantee the same relative path between test binary + # and testdata in the build and install tree, but should cover most cases. + # + file = $$replace(file, ^(\\.\\./)+, ) + $${tdi}.path = $${target.path}/$$dirname(file) + + INSTALLS += $$tdi + } + + # Install GENERATED_TESTDATA. + # Logic is copied from the TESTDATA installation, only difference being that + # INSTALL target is added with CONFIG = no_check_exist + for(file, GENERATED_TESTDATA) { + tnam = $$file + tnam ~= s,\\.\\.,dotdot, + tnam ~= s,[?*],wildcard, + tnam ~= s,[^A-Za-z0-9],_, + tdi = testdata_$$tnam + + $${tdi}.files = $$file + $${tdi}.CONFIG = no_check_exist + + file = $$replace(file, ^(\\.\\./)+, ) + $${tdi}.path = $${target.path}/$$dirname(file) + + INSTALLS += $$tdi + } + + # TEST_HELPER_INSTALLS specifies additional test helper executables for installation. + # + # Typical usage is: + # + # TEST_HELPER_INSTALLS += ../some/helper1 ../some/helper2 + # + # Resulting in the test helpers being installed to: + # + # $$[QT_INSTALL_TESTS]/$$TARGET/some/helper1 + # $$[QT_INSTALL_TESTS]/$$TARGET/some/helper2 + # + win32: extension = .exe + for(test_helper, TEST_HELPER_INSTALLS) { + test_helper_dir = $$dirname(test_helper) + output = $$basename(test_helper_dir) + target = $$basename(test_helper) + targetName = $$replace(target, ' ', '_') # handle spaces in name + subTarget = $${targetName}.target + subInstall = $${targetName}_install + subConfig = $${subInstall}.CONFIG + subFiles = $${subInstall}.files + subPath = $${subInstall}.path + $$subTarget = $${output}/$${target}$${extension} + $$subFiles = $${OUT_PWD}/$${test_helper}$${extension} + $$subPath = $${target.path}/$${output} + $$subConfig += no_check_exist executable + INSTALLS += $${subInstall} + } +} + +builtin_testdata { + ALL_TESTDATA = $$TESTDATA $$GENERATED_TESTDATA + + # BLACKLIST needs to be added to the testdata + BLACKLISTPATH = $$_PRO_FILE_PWD_/BLACKLIST + exists($$BLACKLISTPATH): ALL_TESTDATA *= $$BLACKLISTPATH + + # RESOURCES does not support wildcards (for good reasons) + for(td, ALL_TESTDATA): \ + testdata.files += $$files($$absolute_path($$td, $$_PRO_FILE_PWD_)) + !isEmpty(testdata.files) { + testdata.base = $$_PRO_FILE_PWD_ + RESOURCES += testdata + } + + !isEmpty(TEST_HELPER_INSTALLS): \ + error("This platform does not support tests which require helpers.") +} + +macx-xcode:bundle:isEmpty(QMAKE_BUNDLE_EXTENSION) { + QMAKE_PBX_PRODUCT_TYPE = com.apple.product-type.bundle.unit-test + QMAKE_PBX_BUNDLE_TYPE = wrapper.cfbundle + QMAKE_BUNDLE_EXTENSION = .xctest +} + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testcase_targets.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testcase_targets.prf new file mode 100644 index 000000000..16ec6a9f0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testcase_targets.prf @@ -0,0 +1,19 @@ + +# Let every project have a standard GNU `check' target +!contains(QMAKE_EXTRA_TARGETS, check) { + contains(TEMPLATE, subdirs): \ + prepareRecursiveTarget(check) + else: \ + check.depends = first # `make check' implies build + QMAKE_EXTRA_TARGETS += check +} + +# ... and the same for benchmarks, too. +!contains(QMAKE_EXTRA_TARGETS, benchmark) { + contains(TEMPLATE, subdirs): \ + prepareRecursiveTarget(benchmark) + else: \ + benchmark.depends = first # `make benchmark' implies build + QMAKE_EXTRA_TARGETS += benchmark +} + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testcocoon.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testcocoon.prf new file mode 100644 index 000000000..efa33ecb0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testcocoon.prf @@ -0,0 +1,57 @@ +# +# Tested with TestCocoon 1.6.14 +# + +load(resolve_target) + +# Retrieve the target basename +TARGET_BASENAME = $$basename(QMAKE_RESOLVED_TARGET) + +# Configure testcocoon for a full instrumentation - excluding the moc, ui and qrc files from the instrumentation +# --cs-output defines the name to give to the execution report (.csexe). +TESTCOCOON_COVERAGE_OPTIONS = \ + --cs-qt4 \ + --cs-exclude-file-regex=\'(^|[/\\\\])(qrc|moc)_.*\\.cpp\$\$\' \ + --cs-exclude-file-regex=\'.*\\.moc\$\$\' \ + --cs-exclude-file-regex=\'.*\\.g\$\$\' \ + --cs-exclude-file-regex=\'.*\\.h\$\$\' \ + --cs-output=\'$$TARGET_BASENAME\' # name of the csexe file (execution report) + +# The .csmes file should be placed alongside the .so or binary. +# Unfortunately, testcocoon has no option to specify the output directory, +# so we must move it into place if a custom destdir was used. +# We don't move applications' csmes because some qt applications (tools, examples) +# are using DESTDIR in some cases but always alongside target.path, so the binary +# is built directly in target.path and there is no need to move the csmes. +!isEmpty(DESTDIR):contains(TEMPLATE, lib) { + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK + QMAKE_POST_LINK = -$(MOVE) $${TARGET_BASENAME}.csmes $$shell_path($${QMAKE_RESOLVED_TARGET}.csmes)$$QMAKE_POST_LINK +} + +QMAKE_CLEAN += *.csexe *.csmes + +# The compiler/linker is replaced by the coveragescanner which is named after the name of the +# compiler/linker preceded by cs (ie gcc is replaced by csgcc). +# Testcocoon options defined in TESTCOCOON_COVERAGE_OPTIONS are added as argument to the coveragescanner (ie csgcc). +# In practice they are added as compiler/linker flags. + +*-g++* { + QMAKE_CXX ~= s/(\\S*g\\+\\+)/cs\\1/ + QMAKE_CC ~= s/(\\S*gcc)/cs\\1/ + QMAKE_LINK ~= s/(\\S*g\\+\\+|\\S*gcc)/cs\\1/ + QMAKE_AR ~= s/(\\S*ar)/cs\\1/ + QMAKE_AR += $$TESTCOCOON_COVERAGE_OPTIONS +} else { + error("Non-gcc qmake specs not supported by TestCocoon integration yet") +} + +QMAKE_CFLAGS += $$TESTCOCOON_COVERAGE_OPTIONS +QMAKE_CXXFLAGS += $$TESTCOCOON_COVERAGE_OPTIONS +QMAKE_LFLAGS += $$TESTCOCOON_COVERAGE_OPTIONS + +unix { + QMAKE_LFLAGS += --cs-libgen=-fPIC +} + +unset(TARGET_BASENAME) +unset(TESTCOCOON_COVERAGE_OPTIONS) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testlib_defines.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testlib_defines.prf new file mode 100644 index 000000000..901e03a91 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/testlib_defines.prf @@ -0,0 +1,2 @@ +contains(TEMPLATE, vc.*): DEFINES += QT_TESTCASE_BUILDDIR=\"$$OUT_PWD\" +else: DEFINES += QT_TESTCASE_BUILDDIR=$$shell_quote(\"$$OUT_PWD\") diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/toolchain.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/toolchain.prf new file mode 100644 index 000000000..fdf3d1cdd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/toolchain.prf @@ -0,0 +1,252 @@ + +defineReplace(qtMakeExpand) { + out = "$$1" + for(ever) { + m = $$replace(out, ".*\\$\\(EXPORT_([^)]+)\\).*", \\1) + equals(m, $$out): \ + return($$out) + out = $$replace(out, "\\$\\(EXPORT_$$m\\)", $$eval($$m)) + } +} + +defineTest(qtCompilerErrror) { + !cross_compile: \ + what = + else: host_build: \ + what = " host" + else: \ + what = " target" + msg = \ + "Cannot run$$what compiler '$$1'. Output:" \ + "===================" \ + $$2 \ + "===================" \ + "Maybe you forgot to setup the environment?" + error($$join(msg, $$escape_expand(\\n))) +} + +cross_compile:host_build: \ + target_prefix = QMAKE_HOST_CXX +else: \ + target_prefix = QMAKE_CXX + +isEmpty($${target_prefix}.INCDIRS) { + # + # Get default include and library paths from compiler + # + gcc { + cmd_suffix = "<$$QMAKE_SYSTEM_NULL_DEVICE >$$QMAKE_SYSTEM_NULL_DEVICE" + equals(QMAKE_HOST.os, Windows): \ + cmd_prefix = "set LC_ALL=C&" + else: \ + cmd_prefix = "LC_ALL=C" + + cxx_flags = $$QMAKE_CXXFLAGS + + # Manually inject the sysroot for Apple Platforms because its resolution + # normally does not happen until default_post.prf. This is especially + # important for moc to gain the correct default include directory list. + # While technically incorrect but without any likely practical effect, + # UIKit simulator platforms will see the device SDK's sysroot in + # QMAKE_DEFAULT_*DIRS, because they're handled in a single build pass. + darwin { + uikit:macx-xcode: \ + cxx_flags += -isysroot $$sdk_path_device.value + else: \ + cxx_flags += -isysroot $$QMAKE_MAC_SDK_PATH + } + + rim_qcc: \ + # Need the cc1plus and ld command lines to pick up the paths + cxx_flags += $$QMAKE_LFLAGS_SHLIB -o $$QMAKE_SYSTEM_NULL_DEVICE -v + else: darwin:clang: \ + # Need to link to pick up library paths + cxx_flags += $$QMAKE_LFLAGS_SHLIB -o /dev/null -v -Wl,-v + else: \ + # Just preprocess, might not pick up library paths + cxx_flags += -E -v + + output = $$system("$$cmd_prefix $$QMAKE_CXX $$qtMakeExpand($$cxx_flags) -xc++ - 2>&1 $$cmd_suffix", lines, ec) + !equals(ec, 0): qtCompilerErrror($$QMAKE_CXX, $$output) + + rim_qcc { + for (line, output) { + contains(line, "^[^ ]*cc1plus .*") { + take_next = false + for (parameter, $$list($$line)) { + $$take_next { + QMAKE_DEFAULT_INCDIRS += $$clean_path($$parameter) + take_next = false + } else: equals(parameter, "-isystem") { + take_next = true + } + } + } else: contains(line, "^[^ ]*-ld .*") { + for (parameter, $$list($$line)) { + contains(parameter, "^-L.*") { + parameter ~= s/^-L// + QMAKE_DEFAULT_LIBDIRS += $$clean_path($$parameter) + } + } + } + } + } else { + add_includes = false + add_libraries = false + for (line, output) { + line ~= s/^[ \\t]*// # remove leading spaces + contains(line, "LIBRARY_PATH=.*") { + line ~= s/^LIBRARY_PATH=// # remove leading LIBRARY_PATH= + paths = $$split(line, $$QMAKE_DIRLIST_SEP) + for (path, paths): \ + QMAKE_DEFAULT_LIBDIRS += $$clean_path($$path) + } else: contains(line, "Library search paths:") { + add_libraries = true + } else: contains(line, "$${LITERAL_HASH}include <.*") { # #include <...> search starts here: + add_includes = true + } else: contains(line, "End of search.*") { + add_includes = false + } else: $$add_libraries { + # We assume all library search paths are absolute + !contains(line, "^/.*") { + add_libraries = false + next() + } + QMAKE_DEFAULT_LIBDIRS += $$clean_path($$line) + } else: $$add_includes { + !contains(line, ".* \\(framework directory\\)"): \ + QMAKE_DEFAULT_INCDIRS += $$clean_path($$line) + } + } + } + if(!darwin:clang)|intel_icc { + # Clang on a non-Apple system (that is, a system without ld64 -- say, with GNU ld + # or gold under Linux) will not print any library search path. Need to use another + # invocation with different options (which in turn doesn't print include search + # paths, so it can't just be used in place of the above code). + # What's more, -print-search-dirs can't be used on clang on Apple because it + # won't print all the library paths (only the clang-internal ones). + output = $$system("$$cmd_prefix $$QMAKE_CXX -print-search-dirs", lines, ec) + !equals(ec, 0): qtCompilerErrror($$QMAKE_CXX, $$output) + + for (line, output) { + contains(line, "^libraries: .*") { + line ~= s,^libraries: ,, + paths = $$split(line, $$QMAKE_DIRLIST_SEP) + for (path, paths): \ + QMAKE_DEFAULT_LIBDIRS += $$clean_path($$replace(path, ^=, $$[SYSROOT])) + } + } + } + isEmpty(QMAKE_DEFAULT_LIBDIRS)|isEmpty(QMAKE_DEFAULT_INCDIRS): \ + !integrity: \ + error("failed to parse default search paths from compiler output") + QMAKE_DEFAULT_LIBDIRS = $$unique(QMAKE_DEFAULT_LIBDIRS) + } else: msvc { + # This doesn't differentiate between host and target, + # but neither do the compilers. + LIB = $$getenv("LIB") + QMAKE_DEFAULT_LIBDIRS = $$split(LIB, $$QMAKE_DIRLIST_SEP) + INCLUDE = $$getenv("INCLUDE") + QMAKE_DEFAULT_INCDIRS = $$split(INCLUDE, $$QMAKE_DIRLIST_SEP) + } + + unix { + isEmpty(QMAKE_DEFAULT_INCDIRS): QMAKE_DEFAULT_INCDIRS = /usr/include /usr/local/include + isEmpty(QMAKE_DEFAULT_LIBDIRS): QMAKE_DEFAULT_LIBDIRS = /lib /usr/lib + } + + cache($${target_prefix}.INCDIRS, set stash, QMAKE_DEFAULT_INCDIRS) + cache($${target_prefix}.LIBDIRS, set stash, QMAKE_DEFAULT_LIBDIRS) +} else { + QMAKE_DEFAULT_INCDIRS = $$eval($${target_prefix}.INCDIRS) + QMAKE_DEFAULT_LIBDIRS = $$eval($${target_prefix}.LIBDIRS) +} + +# +# Determine and cache the compiler version +# + +defineReplace(qtVariablesFromMSVC) { + ret = $$system("$$1 -nologo -E $$2 $$system_quote($$PWD/data/macros.cpp) <NUL 2>NUL", lines, ec) + !equals(ec, 0): qtCompilerErrror($$1, $$ret) + return($$ret) +} + +defineReplace(qtVariablesFromGCC) { + ret = $$system("$$1 -E $$system_quote($$PWD/data/macros.cpp) \ + <$$QMAKE_SYSTEM_NULL_DEVICE 2>$$QMAKE_SYSTEM_NULL_DEVICE", lines, ec) + !equals(ec, 0): qtCompilerErrror($$1, $$ret) + return($$ret) +} + +isEmpty($${target_prefix}.COMPILER_MACROS) { + msvc { + clang_cl { + # We need to obtain the cl.exe version first + vars = $$qtVariablesFromMSVC(cl) + for (v, vars) { + isEmpty(v)|contains(v, $${LITERAL_HASH}.*): next() + eval($$v) + } + isEmpty(QMAKE_MSC_FULL_VER): error("Could not determine the Visual Studio version") + + QMAKE_CFLAGS_MSVC_COMPAT = $$replace(QMAKE_MSC_FULL_VER, "(..)(..)(.*)", \ + "-fms-compatibility-version=\\1.\\2.\\3") + cache($${target_prefix}.QMAKE_CFLAGS_MSVC_COMPAT, set stash, QMAKE_CFLAGS_MSVC_COMPAT) + $${target_prefix}.COMPILER_MACROS += QMAKE_CFLAGS_MSVC_COMPAT + vars = $$qtVariablesFromMSVC($$QMAKE_CXX, $$QMAKE_CFLAGS_MSVC_COMPAT) + } else { + vars = $$qtVariablesFromMSVC($$QMAKE_CXX) + } + } else: gcc { + vars = $$qtVariablesFromGCC($$QMAKE_CXX) + } + for (v, vars) { + contains(v, $${LITERAL_HASH}.*)|contains(v, " *"): next() + # Set both <varname> for the outer scope ... + eval($$v) + v ~= s/ .*// + isEmpty($$v): error("Compiler produced empty value for $${v}.") + # ... and save QMAKE_(HOST_)?CXX.<varname> in the cache. + cache($${target_prefix}.$$v, set stash, $$v) + $${target_prefix}.COMPILER_MACROS += $$v + } + cache($${target_prefix}.COMPILER_MACROS, set stash) +} else { + # load from the cache + for (i, $${target_prefix}.COMPILER_MACROS): \ + $$i = $$eval($${target_prefix}.$$i) +} + +unset(target_prefix) + +# Populate QMAKE_COMPILER_DEFINES and some compatibility variables. +# The $$format_number() calls strip leading zeros to avoid misinterpretation as octal. +QMAKE_COMPILER_DEFINES += __cplusplus=$$QT_COMPILER_STDCXX +!isEmpty(QMAKE_MSC_VER): \ + QMAKE_COMPILER_DEFINES += _MSC_VER=$$QMAKE_MSC_VER _MSC_FULL_VER=$$QMAKE_MSC_FULL_VER +!isEmpty(QMAKE_ICC_VER): \ + QMAKE_COMPILER_DEFINES += __INTEL_COMPILER=$$QMAKE_ICC_VER __INTEL_COMPILER_UPDATE=$$QMAKE_ICC_UPDATE_VER +!isEmpty(QMAKE_APPLE_CC): \ + QMAKE_COMPILER_DEFINES += __APPLE_CC__=$$QMAKE_APPLE_CC +!isEmpty(QMAKE_APPLE_CLANG_MAJOR_VERSION): \ + QMAKE_COMPILER_DEFINES += __clang__ \ + __clang_major__=$$QMAKE_APPLE_CLANG_MAJOR_VERSION \ + __clang_minor__=$$QMAKE_APPLE_CLANG_MINOR_VERSION \ + __clang_patchlevel__=$$QMAKE_APPLE_CLANG_PATCH_VERSION +!isEmpty(QMAKE_CLANG_MAJOR_VERSION): \ + QMAKE_COMPILER_DEFINES += __clang__ \ + __clang_major__=$$QMAKE_CLANG_MAJOR_VERSION \ + __clang_minor__=$$QMAKE_CLANG_MINOR_VERSION \ + __clang_patchlevel__=$$QMAKE_CLANG_PATCH_VERSION +!isEmpty(QMAKE_GCC_MAJOR_VERSION): \ + QMAKE_COMPILER_DEFINES += \ + __GNUC__=$$QMAKE_GCC_MAJOR_VERSION \ + __GNUC_MINOR__=$$QMAKE_GCC_MINOR_VERSION \ + __GNUC_PATCHLEVEL__=$$QMAKE_GCC_PATCH_VERSION + +QMAKE_CFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT + +msvc:!intel_icl:!clang_cl: include(../common/msvc-version.conf) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uic.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uic.prf new file mode 100644 index 000000000..ca8283920 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uic.prf @@ -0,0 +1,20 @@ +qtPrepareTool(QMAKE_UIC, uic, _DEP) + +isEmpty(UI_DIR):UI_DIR = . +isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_ + +uic.depends += $$QMAKE_UIC_EXE +uic.commands = $$QMAKE_UIC ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} +uic.depend_command = $$QMAKE_UIC_DEP -d ${QMAKE_FILE_IN} +uic.output = $$UI_DIR/$${QMAKE_MOD_UIC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +uic.input = FORMS +uic.variable_out = GENERATED_FILES +uic.CONFIG += no_link target_predeps +uic.name = UIC ${QMAKE_FILE_IN} +silent:uic.commands = @echo uic ${QMAKE_FILE_IN} && $$uic.commands +QMAKE_EXTRA_COMPILERS += uic +INCREDIBUILD_XGE += uic + +!isEmpty(FORMS) { + INCLUDEPATH += $$absolute_path($$UI_DIR, $$OUT_PWD) +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/bitcode.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/bitcode.prf new file mode 100644 index 000000000..df298171c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/bitcode.prf @@ -0,0 +1,21 @@ +lessThan(QMAKE_XCODE_VERSION, "7.0") { + warning("You need to update Xcode to version 7 or newer to support bitcode") +} else: !macx-xcode { + # Simulator builds and all debug builds SHOULD use -fembed-bitcode-marker, + # but unfortunately the -fembed-bitcode and -fembed-bitcode-marker driver + # flags do not work in conjunction with -Xarch, so we'll have to let it use + # the "wrong" flags for now (note that this issue affects only the Makefile + # generator). We also don't want the flags to be passed in Xcode builds, as + # the Xcode ENABLE_BITCODE setting will take care of that for us. + release { + QMAKE_CFLAGS += -fembed-bitcode + QMAKE_CXXFLAGS += -fembed-bitcode + QMAKE_OBJECTIVE_CFLAGS += -fembed-bitcode + QMAKE_LFLAGS += -fembed-bitcode + } else { + QMAKE_CFLAGS += -fembed-bitcode-marker + QMAKE_CXXFLAGS += -fembed-bitcode-marker + QMAKE_OBJECTIVE_CFLAGS += -fembed-bitcode-marker + QMAKE_LFLAGS += -fembed-bitcode-marker + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/default_post.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/default_post.prf new file mode 100644 index 000000000..f7245e48b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/default_post.prf @@ -0,0 +1,62 @@ +equals(TEMPLATE, app):qt { + # If the application uses Qt, it needs to be an application bundle + # to be able to deploy and run on iOS. The only exception to this + # is if you're working with a jailbroken device and can run the + # resulting binary from the console/over SSH, but that's not a + # use-case we care about, so no need to complicate the logic. + CONFIG *= app_bundle + + # For Qt applications we want Xcode project files as the generated output, + # but since qmake doesn't handle the transition between makefiles and Xcode + # project files (which happens when using subdirs), we can't just override + # MAKEFILE_GENERATOR. Instead, we generate the Xcode project by spawning a + # child qmake process with -spec macx-xcode and let the top level qmake + # process generate a wrapper makefile that forwards everything to xcodebuild. + equals(MAKEFILE_GENERATOR, UNIX): \ + CONFIG = xcodebuild $$CONFIG +} + +load(default_post) + +macx-xcode { + ios:!isEmpty(QMAKE_IOS_TARGETED_DEVICE_FAMILY) { + warning("QMAKE_IOS_TARGETED_DEVICE_FAMILY is deprecated; use QMAKE_APPLE_TARGETED_DEVICE_FAMILY") + QMAKE_APPLE_TARGETED_DEVICE_FAMILY = $$QMAKE_IOS_TARGETED_DEVICE_FAMILY + } + + device_family.name = TARGETED_DEVICE_FAMILY + device_family.value = $$QMAKE_APPLE_TARGETED_DEVICE_FAMILY + QMAKE_MAC_XCODE_SETTINGS += device_family + + ios { + # Set up default 4-inch iPhone/iPod launch image so that our apps + # support the full screen resolution of those devices. + qmake_launch_image = Default-568h@2x.png + qmake_copy_image.input = $$QMAKESPEC/$$qmake_launch_image + qmake_copy_image.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$qmake_launch_image + qmake_copy_image.CONFIG = verbatim + QMAKE_SUBSTITUTES += qmake_copy_image + qmake_launch_images.files = $$qmake_copy_image.output + QMAKE_BUNDLE_DATA += qmake_launch_images + + lessThan(QMAKE_XCODE_VERSION, "6.0") { + warning("You need to update Xcode to version 6 or newer to fully support iPhone6/6+") + } else { + # Set up default LaunchScreen to support iPhone6/6+ + qmake_launch_screen = LaunchScreen.xib + qmake_copy_launch_screen.input = $$QMAKESPEC/$$qmake_launch_screen + qmake_copy_launch_screen.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$qmake_launch_screen + QMAKE_SUBSTITUTES += qmake_copy_launch_screen + qmake_launch_screens.files = $$qmake_copy_launch_screen.output + QMAKE_BUNDLE_DATA += qmake_launch_screens + } + } +} + +!xcodebuild:equals(TEMPLATE, app):!isEmpty(QMAKE_INFO_PLIST) { + # Only link in photo library support if Info.plist contains + # NSPhotoLibraryUsageDescription. Otherwise it will be rejected from AppStore. + plist_path = $$absolute_path($$QMAKE_INFO_PLIST, $$_PRO_FILE_PWD_) + system("/usr/libexec/PlistBuddy -c 'Print NSPhotoLibraryUsageDescription' $$system_quote($$plist_path) &>/dev/null"): \ + QTPLUGIN += qiosnsphotolibrarysupport +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/default_pre.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/default_pre.prf new file mode 100644 index 000000000..00e29a5c8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/default_pre.prf @@ -0,0 +1,28 @@ +sim_and_dev = false +!isEmpty(QT_VERSION):qtConfig(simulator_and_device): \ + sim_and_dev = true + +$$sim_and_dev|contains(QMAKE_MAC_SDK, ^$${device.sdk}.*): \ + CONFIG += device $${device.sdk} +$$sim_and_dev|contains(QMAKE_MAC_SDK, ^$${simulator.sdk}.*): \ + CONFIG += simulator $${simulator.sdk} + +$$sim_and_dev { + # For a simulator_and_device build all the config tests + # are based on the device's ARM SDK, but we know that the simulator + # is Intel and that we support SSE/SSE2. + QT_CPU_FEATURES.$$QT_ARCH += sse sse2 + CONFIG += sse sse2 + DEFINES += QT_COMPILER_SUPPORTS_SSE2 +} + +unset(sim_and_dev) + +load(default_pre) + +# Check for supported Xcode versions +lessThan(QMAKE_XCODE_VERSION, "4.3"): \ + error("This mkspec requires Xcode 4.3 or later") + +ios:shared:lessThan(QMAKE_IOS_DEPLOYMENT_TARGET, "8.0"): \ + QMAKE_IOS_DEPLOYMENT_TARGET = 8.0 diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/device_destinations.sh b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/device_destinations.sh new file mode 100644 index 000000000..162ad01aa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/device_destinations.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is the build configuration utility of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +booted_simulator=$($DIR/devices.pl "$1" "Booted" "NOT unavailable" | tail -n 1) +echo "SIMULATOR_DEVICES = $booted_simulator" + +xcodebuild test -scheme $2 -destination 'id=0' -destination-timeout 1 2>&1| sed -n 's/{ \(platform:.*\) }/\1/p' | while read destination; do + id=$(echo $destination | sed -n -E 's/.*id:([^ ,]+).*/\1/p') + [[ $id == *"placeholder"* ]] && continue + + echo $destination | tr ',' '\n' | while read keyval; do + key=$(echo $keyval | cut -d ':' -f 1 | tr '[:lower:]' '[:upper:]') + val=$(echo $keyval | cut -d ':' -f 2) + echo "%_$id: DESTINATION_${key} = $val" + + if [ $key = 'PLATFORM' ]; then + if [ "$val" = "iOS" ]; then + echo "HARDWARE_DEVICES += $id" + elif [ "$val" = "iOS Simulator" -a "$id" != "$booted_simulator" ]; then + echo "SIMULATOR_DEVICES += $id" + elif [ "$val" = "tvOS" ]; then + echo "HARDWARE_DEVICES += $id" + elif [ "$val" = "tvOS Simulator" -a "$id" != "$booted_simulator" ]; then + echo "SIMULATOR_DEVICES += $id" + elif [ "$val" = "watchOS" ]; then + echo "HARDWARE_DEVICES += $id" + elif [ "$val" = "watchOS Simulator" -a "$id" != "$booted_simulator" ]; then + echo "SIMULATOR_DEVICES += $id" + fi + fi + done + echo +done diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/devices.pl b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/devices.pl new file mode 100644 index 000000000..8d69a9727 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/devices.pl @@ -0,0 +1,56 @@ +#!/usr/bin/perl + +############################################################################# +## +## Copyright (C) 2017 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is the build configuration utility of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 3 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL3 included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 3 requirements +## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 2.0 or (at your option) the GNU General +## Public license version 3 or any later version approved by the KDE Free +## Qt Foundation. The licenses are as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-2.0.html and +## https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +$output = `xcrun simctl list devices --json 2>&1`; +$output =~ s/\n//g; + +BLOCK: +foreach $block ($output =~ /{.*?}/g) { + foreach $filter (@ARGV) { + if ($filter =~ /^NOT\s(.*)/) { + $block =~ /$1/ && next BLOCK; + } else { + $block =~ /$filter/ || next BLOCK; + } + } + $block =~ /udid[:|\s|\"]+(.*)\"/; + print "$1\n"; +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/exclusive_builds_post.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/exclusive_builds_post.prf new file mode 100644 index 000000000..1fb0a5584 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/exclusive_builds_post.prf @@ -0,0 +1,8 @@ + +xcodebuild { + # Prevent qmake from generating empty output dirs for each exclusive build, + # as Xcode will do this by itself, and with a different name. + QMAKE_DIR_REPLACE = +} + +load(exclusive_builds_post) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/qt.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/qt.prf new file mode 100644 index 000000000..4475c137d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/qt.prf @@ -0,0 +1,33 @@ + +qt_depends = $$resolve_depends(QT, "QT.") +!watchos:equals(TEMPLATE, app):contains(qt_depends, gui(-private)?) { + LIBS *= -L$$[QT_INSTALL_PLUGINS/get]/platforms + + lib_name = qios + lib_path_and_base = $$[QT_INSTALL_PLUGINS/get]/platforms/lib$${lib_name}$$qtPlatformTargetSuffix() + LIBS += -l$${lib_name}$$qtPlatformTargetSuffix() $$fromfile($${lib_path_and_base}.prl, QMAKE_PRL_LIBS) + + !bitcode { + # By marking qt_registerPlatformPlugin as undefined, we ensure that + # the plugin.o translation unit is considered for inclusion in + # the final binary, which in turn ensures that the plugin's + # static initializer is included and run. + QMAKE_LFLAGS += -u _qt_registerPlatformPlugin + + # We do link and dependency resolution for the platform plugin + # manually, since we know we always need the plugin, so we don't + # need to generate an import for it. + QTPLUGIN.platforms = - + } + + !no_main_wrapper { + # The LC_MAIN load command available in iOS 6.0 and above allows dyld to + # directly call the entrypoint instead of going through _start in crt.o. + # Passing -e to the linker changes the entrypoint from _main to our custom + # wrapper that calls UIApplicationMain and dispatches back to main() once + # the application has started up and is ready to initialize QApplication. + QMAKE_LFLAGS += -Wl,-e,_qt_main_wrapper + } +} + +load(qt) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/qt_parts.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/qt_parts.prf new file mode 100644 index 000000000..81814a62b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/qt_parts.prf @@ -0,0 +1,5 @@ + +# Disable tests for anything but qtbase for now +!equals(TARGET, qtbase): QT_BUILD_PARTS -= tests + +load(qt_parts) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/resolve_config.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/resolve_config.prf new file mode 100644 index 000000000..e3c9ae23a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/resolve_config.prf @@ -0,0 +1,17 @@ + +xcodebuild { + # Xcode project files always support both Debug and Release configurations + # and device and simulator targets, so we make sure the wrapper-makefile + # also does. + CONFIG += debug_and_release simulator_and_device +} + +load(resolve_config) + +!macx-xcode:xcodebuild { + # Switch the order to make sure that the first Makefile target is the right one + !qtConfig(simulator_and_device):contains(QMAKE_MAC_SDK, ^$${simulator.sdk}.*): \ + addExclusiveBuildsProper(simulator_and_device, simulator device) + else: \ + addExclusiveBuildsProper(simulator_and_device, device simulator) +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/sdk.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/sdk.prf new file mode 100644 index 000000000..0bfc26211 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/sdk.prf @@ -0,0 +1,17 @@ +load(sdk) + +macx-xcode { + sdk_path_device.name = "QMAKE_MAC_SDK_PATH[sdk=$${device.sdk}*]" + sdk_path_device.value = $$xcodeSDKInfo(Path, $${device.sdk}) + sdk_path_simulator.name = "QMAKE_MAC_SDK_PATH[sdk=$${simulator.sdk}*]" + sdk_path_simulator.value = $$xcodeSDKInfo(Path, $${simulator.sdk}) + QMAKE_MAC_XCODE_SETTINGS += sdk_path_device sdk_path_simulator + QMAKE_MAC_SDK_PATH = "$(QMAKE_MAC_SDK_PATH)" + + sdk_platform_path_device.name = "QMAKE_MAC_SDK_PLATFORM_PATH[sdk=$${device.sdk}*]" + sdk_platform_path_device.value = $$xcodeSDKInfo(PlatformPath, $${device.sdk}) + sdk_platform_path_simulator.name = "QMAKE_MAC_SDK_PLATFORM_PATH[sdk=$${simulator.sdk}*]" + sdk_platform_path_simulator.value = $$xcodeSDKInfo(PlatformPath, $${simulator.sdk}) + QMAKE_MAC_XCODE_SETTINGS += sdk_platform_path_device sdk_platform_path_simulator + QMAKE_MAC_SDK_PLATFORM_PATH = "$(QMAKE_MAC_SDK_PLATFORM_PATH)" +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/testcase.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/testcase.prf new file mode 100644 index 000000000..e16c163ff --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/testcase.prf @@ -0,0 +1,12 @@ +# Pretend we have a target, even though our template is aux +xcodebuild: \ + CONFIG += have_target + +load(testcase) + +# We provide our own check logic +xcodebuild { + check.depends = + check.commands = + QMAKE_EXTRA_TARGETS *= check +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/testcase_targets.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/testcase_targets.prf new file mode 100644 index 000000000..e0a2922c3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/testcase_targets.prf @@ -0,0 +1,3 @@ +# For the xcodebuild wrapper makefile we deal with test targets manually +!xcodebuild: \ + load(testcase_targets) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/xcodebuild.mk b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/xcodebuild.mk new file mode 100644 index 000000000..7d3275df6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/xcodebuild.mk @@ -0,0 +1,108 @@ + +# We don't want xcodebuild to run in parallel +.NOTPARALLEL: + +# Functions +targets = $(foreach target, $(EXPORT_SUBTARGETS), $(target)-$(strip $(1))) +toupper = $(shell echo $1 | tr '[:lower:]' '[:upper:]') +tolower = $(shell echo $1 | tr '[:upper:]' '[:lower:]') +basesdk = $(shell echo $1 | sed 's/[0-9.]*$$//') + +# Explicit comma variable +, := , + +# Default targets +first: build +all: build_all + +.DEFAULT_GOAL = first + +# Top level targets +build: build_first +clean: clean_first +install: install_first +check: check_first +distclean: clean_all + +$(EXPORT_SUBTARGETS): % : %-build + +# Generic targets +%_first: $(firstword $(call targets, %)) ; +%_all: $(call targets, %) ; + +# Actions +%-build: ACTION = build +%-build: xcodebuild-% ; + +%-clean: ACTION = clean +%-clean: xcodebuild-% ; + +%-install: ACTION = install +%-install: xcodebuild-% ; + +# Simulator doesn't support archiving +%-simulator-install: ACTION = build +simulator-install: ACTION = build + +# Limit check to a single configuration +%-device-check: check-device ; +%-simulator-check: check-simulator ; + +# SDK +%-device: SDK = $(DEVICE_SDK) +%-simulator: SDK = $(SIMULATOR_SDK) + +# Configuration +release-%: CONFIGURATION = Release +debug-%: CONFIGURATION = Debug + +MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) + +# Test and build (device) destinations +ifneq ($(filter check%,$(MAKECMDGOALS)),) + ifeq ($(DEVICES),) + $(info Enumerating test destinations (you may override this by setting DEVICES explicitly), please wait...) + DESTINATIONS_INCLUDE = /tmp/device_destinations.mk + $(shell $(MAKEFILE_DIR)device_destinations.sh '$(EXPORT_DEVICE_FILTER)' $(TARGET) > $(DESTINATIONS_INCLUDE)) + include $(DESTINATIONS_INCLUDE) + endif +endif + +%-simulator: DEVICES = $(firstword $(SIMULATOR_DEVICES)) +%-device: DEVICES = $(HARDWARE_DEVICES) + +GENERIC_DEVICE_DESTINATION := $(EXPORT_GENERIC_DEVICE_DESTINATION) +GENERIC_SIMULATOR_DESTINATION := "id=$(shell $(MAKEFILE_DIR)devices.pl '$(EXPORT_DEVICE_FILTER)' "NOT unavailable" | tail -n 1)" + +%-simulator: DESTINATION = $(if $(DESTINATION_ID),"id=$(DESTINATION_ID)",$(GENERIC_SIMULATOR_DESTINATION)) +%-device: DESTINATION = $(if $(DESTINATION_ID),"id=$(DESTINATION_ID)",$(GENERIC_DEVICE_DESTINATION)) + +XCODE_VERSION_MAJOR := $(shell xcodebuild -version | grep Xcode | sed -e 's/Xcode //' | sed -e 's/\..*//') + +ifeq ($(shell test $(XCODE_VERSION_MAJOR) -gt 7; echo $$?),0) + XCODEBUILD_FLAGS += $(shell echo "$(MAKEFLAGS)" | sed -e 's/\([^ ]*\).*/\1/' | grep -qv 's' || echo -quiet) +endif + +# Xcodebuild + +DESTINATION_MESSAGE = "Running $(call tolower,$(CONFIGURATION)) $(ACTION) \ + on '$(DESTINATION_NAME)' ($(DESTINATION_ID))$(if $(DESTINATION_OS),$(,) $(DESTINATION_PLATFORM) $(DESTINATION_OS),)" + +xcodebuild-%: + @$(if $(DESTINATION_NAME), echo $(DESTINATION_MESSAGE),) + xcodebuild $(ACTION) $(XCODEBUILD_FLAGS) -project $(TARGET).xcodeproj -scheme $(TARGET) $(if $(SDK), -sdk $(SDK),) $(if $(CONFIGURATION), -configuration $(CONFIGURATION),) $(if $(DESTINATION), -destination $(DESTINATION) -destination-timeout 1,) $(if $(DESTINATION_ID),, ENABLE_ONLY_ACTIVE_RESOURCES=NO) $(if $(INSTALL_ROOT), DSTROOT=$(INSTALL_ROOT),) + +xcodebuild-check-device_%: DESTINATION_ID=$(lastword $(subst _, ,$@)) + +# Special check target (requires SECONDEXPANSION due to devices) +.SECONDEXPANSION: +check-%: ACTION = test +check-%: $$(foreach device, $$(DEVICES), xcodebuild-check-device_$$(device)) ; + @echo $(if $^, Ran $(call tolower,$(CONFIGURATION)) tests on $(words $^) $(SDK) destination\(s\): $(DEVICES), No compatible test devices found for \'$(SDK)\' SDK && false) + +# Determined by device +check-%: SDK = + +# Default to debug for testing +check-%: CONFIGURATION = Debug + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/xcodebuild.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/xcodebuild.prf new file mode 100644 index 000000000..a766b9ea5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/uikit/xcodebuild.prf @@ -0,0 +1,69 @@ + +# For Qt applications we want Xcode project files as the generated output, +# but since qmake doesn't handle the transition between makefiles and Xcode +# project files (which happens when using subdirs), we can't just override +# MAKEFILE_GENERATOR. Instead, we generate the Xcode project by spawing a +# child qmake process with -spec macx-xcode and let the top level qmake +# process generate a wrapper makefile that forwards everything to xcodebuild. + +TEMPLATE = aux + +SOURCES = +OBJECTIVE_SOURCES = +RESOURCES = +INSTALLS = +QMAKE_EXTRA_COMPILERS = + +!mkpath($$OUT_PWD): \ + error("Failed to create $$OUT_PWD") + +args = +prev_arg = +for(arg, QMAKE_ARGS) { + !equals(arg, "-spec"):!equals(prev_arg, "-spec"): \ + args += $$system_quote($$arg) + prev_arg = $$arg +} + +cmd = "$$QMAKE_QMAKE $$system_quote($$_PRO_FILE_) -spec macx-xcode $$args" +debug(1, "Generating Xcode project in $$OUT_PWD using '$$cmd'") +system("$$QMAKE_CD $$system_quote($$OUT_PWD) && $$cmd") + +# Subtargets + +for(build, BUILDS): \ + SUBTARGETS += $$eval($${build}.target) +QMAKE_EXTRA_VARIABLES += SUBTARGETS + +CONFIG += no_default_goal_deps + +DEVICE_SDK = $${device.sdk} +SIMULATOR_SDK = $${simulator.sdk} +ios { + DEVICE_FILTER = "iPhone|iPad" + GENERIC_DEVICE_DESTINATION = "generic/platform=iOS" +} +tvos { + DEVICE_FILTER = "Apple TV" + GENERIC_DEVICE_DESTINATION = "generic/platform=tvOS" +} +watchos { + DEVICE_FILTER = "Apple Watch" + GENERIC_DEVICE_DESTINATION = "generic/platform=watchOS" +} +QMAKE_EXTRA_VARIABLES += DEVICE_SDK SIMULATOR_SDK DEVICE_FILTER GENERIC_DEVICE_DESTINATION + +QMAKE_EXTRA_INCLUDES += $$shell_quote($$PWD/xcodebuild.mk) + +# Distclean + +distfiles = $${TARGET}.xcodeproj +for(build, BUILDS): \ + distfiles += $$title($$eval($${build}.target)) +distclean_xcodebuild.commands = -$(DEL_FILE) -R $$distfiles + +distclean.depends += clean_all distclean_xcodebuild +QMAKE_EXTRA_TARGETS += distclean distclean_xcodebuild + +# Empty exclusive builds, we've set them up manually +BUILDS = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/bsymbolic_functions.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/bsymbolic_functions.prf new file mode 100644 index 000000000..5fca5ac17 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/bsymbolic_functions.prf @@ -0,0 +1,6 @@ + +dll { + QMAKE_LFLAGS_SHLIB += $$QMAKE_LFLAGS_BSYMBOLIC_FUNC + + !isEmpty(QMAKE_DYNAMIC_LIST_FILE):QMAKE_LFLAGS_SHLIB += $$QMAKE_LFLAGS_DYNAMIC_LIST$$QMAKE_DYNAMIC_LIST_FILE +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/ccache.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/ccache.prf new file mode 100644 index 000000000..d5739d3ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/ccache.prf @@ -0,0 +1,19 @@ +macx-xcode: return() + +darwin: load(sdk) + +ccache_prefix = ccache + +precompile_header { + CCACHE_SLOPPINESS += pch_defines time_macros + + ccache_prefix = \ + CCACHE_SLOPPINESS=\"$$join(CCACHE_SLOPPINESS, ',')\$${CCACHE_SLOPPINESS+,\$$CCACHE_SLOPPINESS}\" \ + # Make sure we build sources directly, not from their preprocessed version, + # otherwise precompiled headers will not be used during cache misses. + CCACHE_CPP2=true \ + $$ccache_prefix +} + +for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_LINK QMAKE_LINK_SHLIB QMAKE_LINK_C)): \ + $$tool = $$ccache_prefix $$eval($$tool) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/hide_symbols.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/hide_symbols.prf new file mode 100644 index 000000000..f4d3921cb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/hide_symbols.prf @@ -0,0 +1,3 @@ +QMAKE_CFLAGS += $$QMAKE_CFLAGS_HIDESYMS +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_HIDESYMS +QMAKE_LFLAGS += $$QMAKE_LFLAGS_HIDESYMS diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/largefile.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/largefile.prf new file mode 100644 index 000000000..104d6759a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/largefile.prf @@ -0,0 +1,2 @@ +DEFINES += _LARGEFILE64_SOURCE _LARGEFILE_SOURCE + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/opengl.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/opengl.prf new file mode 100644 index 000000000..72b5ac453 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/opengl.prf @@ -0,0 +1,12 @@ +qtConfig(opengles2) { + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES2 + !isEmpty(QMAKE_LIBDIR_OPENGL_ES2):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2 + target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES2 + else:LIBS += $$QMAKE_LIBS_OPENGL_ES2 +} else { + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL + !isEmpty(QMAKE_LIBDIR_OPENGL):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL + target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL + else:LIBS += $$QMAKE_LIBS_OPENGL +} + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/separate_debug_info.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/separate_debug_info.prf new file mode 100644 index 000000000..ebb37bdfc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/separate_debug_info.prf @@ -0,0 +1,97 @@ +have_target:!static:if(darwin|!isEmpty(QMAKE_OBJCOPY)) { + darwin { + debug_info_copy_bin = $$QMAKE_DSYMUTIL + debug_info_strip_bin = $$QMAKE_STRIP + debug_info_suffix = dSYM + debug_info_out = --flat -o + debug_info_strip = -S + } else { + debug_info_copy_bin = $$QMAKE_OBJCOPY + debug_info_strip_bin = $$QMAKE_OBJCOPY + 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 + } + } + load(resolve_target) + debug_info_target = $$QMAKE_RESOLVED_TARGET + + darwin { + !isEmpty(QMAKE_RESOLVED_BUNDLE) { + debug_info_target = $$QMAKE_RESOLVED_BUNDLE + CONFIG += any_bundle + } + + debug_info_target_rel = $$section(debug_info_target, /, -1, -1) + + debug_info_target_dir_suffix = .$$debug_info_suffix/Contents/Resources/DWARF + + debug_info_target_dir = $${debug_info_target}$${debug_info_target_dir_suffix} + debug_info_target_dir_rel = $${debug_info_target_rel}$${debug_info_target_dir_suffix} + !isEmpty(QMAKE_RESOLVED_BUNDLE): \ + QMAKE_TARGET_DEBUG_INFO = $$debug_info_target_dir/$$TARGET + else: \ + QMAKE_TARGET_DEBUG_INFO = $$debug_info_target_dir/$$section(QMAKE_RESOLVED_TARGET, /, -1, -1) + + if(any_bundle:!build_pass)|if(!any_bundle:if(build_pass|isEmpty(BUILDS))) { + equals(TEMPLATE, lib):lib_bundle:!isEmpty(QMAKE_FRAMEWORK_BUNDLE_NAME): \ + BUNDLEIDENTIFIER = $$replace(QMAKE_FRAMEWORK_BUNDLE_NAME, \\.framework$, ) + else: equals(TEMPLATE, app):app_bundle:!isEmpty(QMAKE_APPLICATION_BUNDLE_NAME): \ + BUNDLEIDENTIFIER = $$replace(QMAKE_APPLICATION_BUNDLE_NAME, \\.app$, ) + else: \ + BUNDLEIDENTIFIER = $${TARGET} + + !isEmpty(QMAKE_TARGET_BUNDLE_PREFIX): \ + BUNDLEIDENTIFIER = $$replace(QMAKE_TARGET_BUNDLE_PREFIX, \\.$, ).$${BUNDLEIDENTIFIER} + else: \ + BUNDLEIDENTIFIER = com.yourcompany.$${BUNDLEIDENTIFIER} + + BUNDLEIDENTIFIER ~= s,_,-, + + debug_info_plist.input = $$QMAKESPEC/Info.plist.dSYM.in + debug_info_plist.output = $${debug_info_target}.$$debug_info_suffix/Contents/Info.plist + QMAKE_SUBSTITUTES += debug_info_plist + } + + contains(INSTALLS, target):isEmpty(target.files):isEmpty(target.commands):isEmpty(target.extra) { + !build_pass|release { + debug_info_plist_target.CONFIG += no_check_exist + debug_info_plist_target.files = $${debug_info_target}.$$debug_info_suffix/Contents/Info.plist + debug_info_plist_target.path += $${target.path}/$${debug_info_target_rel}.$$debug_info_suffix/Contents + INSTALLS += debug_info_plist_target + } + + debug_info_target.CONFIG += no_check_exist + debug_info_target.files = $$QMAKE_TARGET_DEBUG_INFO + debug_info_target.path += $${target.path}/$${debug_info_target_dir_rel} + INSTALLS += debug_info_target + } + } else { + QMAKE_TARGET_DEBUG_INFO = $${QMAKE_RESOLVED_TARGET}.$$debug_info_suffix + target.targets += $$QMAKE_TARGET_DEBUG_INFO + } + + shell_target = $$shell_quote($$relative_path($$QMAKE_RESOLVED_TARGET, $$OUT_PWD)) + shell_target_debug_info = $$shell_quote($$relative_path($$QMAKE_TARGET_DEBUG_INFO, $$OUT_PWD)) + copy_debug_info = $$debug_info_copy_bin $$debug_info_keep $$shell_target $$debug_info_out $$shell_target_debug_info + strip_debug_info = $$debug_info_strip_bin $$debug_info_strip $$shell_target + + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK + darwin { + mkdir_debug_info = $$QMAKE_MKDIR $$shell_quote($$debug_info_target_dir) + QMAKE_POST_LINK = $$mkdir_debug_info && $$copy_debug_info && $$strip_debug_info $$QMAKE_POST_LINK + } else { + link_debug_info = $$QMAKE_OBJCOPY --add-gnu-debuglink=$$shell_target_debug_info $$shell_target + !contains(QMAKE_HOST.os, Windows): \ + QMAKE_POST_LINK = && chmod -x $$shell_target_debug_info $$QMAKE_POST_LINK + QMAKE_POST_LINK = $$copy_debug_info && $$strip_debug_info && $$link_debug_info $$QMAKE_POST_LINK + } + silent:QMAKE_POST_LINK = @echo creating $@.$$debug_info_suffix && $$QMAKE_POST_LINK + + QMAKE_DISTCLEAN += $$QMAKE_TARGET_DEBUG_INFO +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/thread.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/thread.prf new file mode 100644 index 000000000..d6df7b647 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/thread.prf @@ -0,0 +1,14 @@ +!isEmpty(QMAKE_CFLAGS_THREAD) { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_THREAD + QMAKE_EXPORT_CFLAGS += $$QMAKE_CFLAGS_THREAD +} +!isEmpty(QMAKE_CXXFLAGS_THREAD) { + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_THREAD + QMAKE_EXPORT_CXXFLAGS += $$QMAKE_CXXFLAGS_THREAD +} +INCLUDEPATH += $$QMAKE_INCDIR_THREAD +LIBS += $$QMAKE_LIBS_THREAD +!isEmpty(QMAKE_LFLAGS_THREAD):QMAKE_LFLAGS += $$QMAKE_LFLAGS_THREAD +!isEmpty(QMAKE_CC_THREAD):QMAKE_CC = $$QMAKE_CC_THREAD +!isEmpty(QMAKE_CXX_THREAD):QMAKE_CXX = $$QMAKE_CXX_THREAD +!isEmpty(QMAKE_LINK_THREAD):QMAKE_LINK = $$QMAKE_LINK_THREAD diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11.prf new file mode 100644 index 000000000..404ce08d4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11.prf @@ -0,0 +1 @@ +CONFIG *= x11lib x11inc diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11inc.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11inc.prf new file mode 100644 index 000000000..7e11b5bfa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11inc.prf @@ -0,0 +1,3 @@ +INCLUDEPATH += $$QMAKE_INCDIR_X11 +QMAKE_CFLAGS += $$QMAKE_CFLAGS_X11 +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_X11 diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11lib.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11lib.prf new file mode 100644 index 000000000..b661d53dd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11lib.prf @@ -0,0 +1,2 @@ +!isEmpty(QMAKE_LIBDIR_X11):QMAKE_LIBDIR += $$QMAKE_LIBDIR_X11 +LIBS_PRIVATE += $$QMAKE_LIBS_X11 diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11sm.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11sm.prf new file mode 100644 index 000000000..3ff309e63 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/unix/x11sm.prf @@ -0,0 +1 @@ +!isEmpty(QMAKE_LIBDIR_X11):QMAKE_LIBDIR += $$QMAKE_LIBDIR_X11 diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/use_c_linker.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/use_c_linker.prf new file mode 100644 index 000000000..e07ce6a3b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/use_c_linker.prf @@ -0,0 +1,5 @@ +!isEmpty(QMAKE_LINK_C):QMAKE_LINK = $$QMAKE_LINK_C +!isEmpty(QMAKE_LINK_C_SHLIB) { + !isEmpty(QMAKE_LINK_SHLIB_CMD):QMAKE_LINK_SHLIB_CMD ~= s/^$$re_escape($$QMAKE_LINK_SHLIB)$/$$QMAKE_LINK_C_SHLIB/ + QMAKE_LINK_SHLIB = $$QMAKE_LINK_C_SHLIB +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/vxworks.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/vxworks.prf new file mode 100644 index 000000000..e257cd7ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/vxworks.prf @@ -0,0 +1,64 @@ +# VxWorks Munching Feature +# When compiling C++ sources on VxWorks in kernel mode, all .o files have to +# be processed by the so-called 'munch' script which will generate +# additional code for static c'tors and d'tors. The resulting .c file has to +# be compiled in turn and linked to the executable. +# This can only been done when linking applications, since the munch script +# generates a .c file containing static symbols: linking a lib that was +# already munched to a munched application would lead to duplicate symbols! + +isEmpty(VXWORKS_MUNCH_EXT):VXWORKS_MUNCH_EXT = vxm +isEmpty(VXWORKS_MUNCH_TOOL):VXWORKS_MUNCH_TOOL = $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl + + +!exists($$VXWORKS_MUNCH_TOOL) { + error("Could not find VxWorks Munch tool: '$${VXWORKS_MUNCH_TOOL}'. Please set the environment variable WIND_BASE correctly.") +} + +# The following scope is entered for any project that specifies 'shared' as well +# as for any project specifying neither 'shared', nor 'lib', nor 'staticlib'. +# This means that for a static build only the executable is munched, while for +# a shared build, every lib, plugin and executable is munched separately. + +shared|!staticlib:!lib { + *-dcc { + VXWORKS_MUNCH_CMD = targ=`basename $(TARGET)`; \ + ddump -Ng \"$(TARGET)\" | tclsh $$VXWORKS_MUNCH_TOOL -c $$VXWORKS_ARCH_MUNCH >\"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" && \ + $$QMAKE_CC -c $$QMAKE_CFLAGS \"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" -o \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" && \ + $$QMAKE_LINK $$QMAKE_LFLAGS -X -r5 -r4 \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" \"$(TARGET)\" -o \"$(TARGET).munched\" && \ + mv \"$(TARGET).munched\" \"$(TARGET)\" && \ + chmod +x \"$(TARGET)\" + } + *-g++ { + VXWORKS_MUNCH_CMD = targ=`basename $(TARGET)`; \ + nm \"$(DESTDIR)$(TARGET)\" | tclsh $$VXWORKS_MUNCH_TOOL -c $$VXWORKS_ARCH_MUNCH >\"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" && \ + $$QMAKE_CC -c $$QMAKE_CFLAGS -fdollars-in-identifiers \"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" -o \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" && \ + $$QMAKE_LINK $$QMAKE_LFLAGS -nostdlib -Wl,-X -T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" \"$(DESTDIR)$(TARGET)\" -o \"$(DESTDIR)$(TARGET).munched\" && \ + mv \"$(DESTDIR)$(TARGET).munched\" \"$(DESTDIR)$(TARGET)\" && \ + chmod +x \"$(DESTDIR)$(TARGET)\" + } + + # We need to create a dummy lib.a in case someone links against this lib. + # In VxWorks it's the responsibility of the run-time linker ld to resolve + # symbols, since there are no real shared libraries for the toolchain linker + # to link against. + + shared:contains(TEMPLATE, lib) { + VXWORKS_MUNCH_CMD += "&&" + VXWORKS_MUNCH_CMD += (atarg=`basename $(TARGET) .so.$${VERSION}`.a ; touch \"$(DESTDIR)\$\${atarg}\") + } + + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK + QMAKE_POST_LINK = $$VXWORKS_MUNCH_CMD$$QMAKE_POST_LINK + silent:QMAKE_POST_LINK = @echo creating $@.$$VXWORKS_MUNCH_EXT && $$QMAKE_POST_LINK + + isEmpty(DESTDIR) { + target.targets += "`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT" + QMAKE_DISTCLEAN += "`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT" + } else { + target.targets += "$(DESTDIR)/`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT" + QMAKE_DISTCLEAN += "$(DESTDIR)/`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT" + } + *-g++:LIBS += -lgcc +} + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/warn_off.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/warn_off.prf new file mode 100644 index 000000000..072a7aca1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/warn_off.prf @@ -0,0 +1,3 @@ +CONFIG -= warn_on +QMAKE_CFLAGS += $$QMAKE_CFLAGS_WARN_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_WARN_OFF diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/warn_on.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/warn_on.prf new file mode 100644 index 000000000..03a4a24a6 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/warn_on.prf @@ -0,0 +1,4 @@ +CONFIG -= warn_off +QMAKE_CFLAGS += $$QMAKE_CFLAGS_WARN_ON +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_WARN_ON + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/wayland-scanner.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/wayland-scanner.prf new file mode 100644 index 000000000..9166ae775 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/wayland-scanner.prf @@ -0,0 +1,121 @@ +# +# Extra-compilers for handling files specified in +# the WAYLANDSERVERSOURCES and WAYLANDCLIENTSOURCES variables. +# +# WAYLANDSERVERSOURCES_SYSTEM and WAYLANDCLIENTSOURCES_SYSTEM +# are for protocols where the wayland-scanner output is already +# included in the system libraries. In that case, .c files must +# not be generated, to avoid the Qt version replacing driver-specific +# functions. These files are therefore omitted from wayland_code.input. +# Header files are still generated because they are used to build QtWayland. +# +# qtwaylandscanner must be used even in the _SYSTEM case, since the system +# Wayland libraries do not contain Qt code. + +isEmpty(QMAKE_WAYLAND_SCANNER):error("QMAKE_WAYLAND_SCANNER not defined for this mkspec") + +defineReplace(waylandScannerHeaderFiles) { + side = $$1 + path = $$2 + isEqual(side, "server"): \ + sources_list = $$WAYLANDSERVERSOURCES $$WAYLANDSERVERSOURCES_SYSTEM + else: \ + sources_list = $$WAYLANDCLIENTSOURCES $$WAYLANDCLIENTSOURCES_SYSTEM + wayland_header_files_for_side = + for(file, sources_list) { + basenameFile = $$basename(file) + basenameFile ~= s,\\.xml$,, + wayland_header_files_for_side += $$path/wayland-$$basenameFile-$$side-protocol$${first(QMAKE_EXT_H)} + isEqual(side, "server"): \ + wayland_header_files_for_side += $$path/qwayland-server-$$basenameFile$${first(QMAKE_EXT_H)} + else: \ + wayland_header_files_for_side += $$path/qwayland-$$basenameFile$${first(QMAKE_EXT_H)} + } + return($$wayland_header_files_for_side) +} + +qt_install_headers { + header_dest = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private + + header_files_client = $$waylandScannerHeaderFiles(client, $$header_dest) + !isEmpty(header_files_client) { + wayland_generated_client_headers.files = $$header_files_client + wayland_generated_client_headers.path = $$private_headers.path + wayland_generated_client_headers.CONFIG = no_check_exist + INSTALLS += wayland_generated_client_headers + WAYLAND_CLIENT_HEADER_DEST = $$header_dest/ + WAYLAND_CLIENT_INCLUDE_DIR = $$MODULE_INCNAME/private + } + + header_files_server = $$waylandScannerHeaderFiles(server, $$header_dest) + !isEmpty(header_files_server) { + wayland_generated_server_headers.files = $$header_files_server + wayland_generated_server_headers.path = $$private_headers.path + wayland_generated_server_headers.CONFIG = no_check_exist + INSTALLS += wayland_generated_server_headers + WAYLAND_SERVER_HEADER_DEST = $$header_dest/ + WAYLAND_SERVER_INCLUDE_DIR = $$MODULE_INCNAME/private + } +} + +wayland_server_header.name = wayland ${QMAKE_FILE_BASE} +wayland_server_header.input = WAYLANDSERVERSOURCES WAYLANDSERVERSOURCES_SYSTEM +wayland_server_header.variable_out = HEADERS +wayland_server_header.output = $${WAYLAND_SERVER_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-server-protocol$${first(QMAKE_EXT_H)} +wayland_server_header.commands = $$QMAKE_WAYLAND_SCANNER server-header < ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT} +silent:wayland_server_header.commands = @echo Wayland server header ${QMAKE_FILE_IN} && $$wayland_server_header.commands +QMAKE_EXTRA_COMPILERS += wayland_server_header + +wayland_client_header.name = wayland ${QMAKE_FILE_BASE} +wayland_client_header.input = WAYLANDCLIENTSOURCES WAYLANDCLIENTSOURCES_SYSTEM +wayland_client_header.variable_out = HEADERS +wayland_client_header.output = $${WAYLAND_CLIENT_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-client-protocol$${first(QMAKE_EXT_H)} +wayland_client_header.commands = $$QMAKE_WAYLAND_SCANNER client-header < ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT} +silent:wayland_client_header.commands = @echo Wayland client header ${QMAKE_FILE_IN} && $$wayland_client_header.commands +QMAKE_EXTRA_COMPILERS += wayland_client_header + +wayland_code.name = wayland ${QMAKE_FILE_BASE} +wayland_code.input = WAYLANDCLIENTSOURCES WAYLANDSERVERSOURCES +wayland_code.variable_out = SOURCES +wayland_code.output = wayland-${QMAKE_FILE_BASE}-protocol.c +wayland_code.commands = $$QMAKE_WAYLAND_SCANNER code < ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT} +silent:wayland_code.commands = @echo Wayland code header ${QMAKE_FILE_IN} && $$wayland_code.commands +QMAKE_EXTRA_COMPILERS += wayland_code + +qtPrepareTool(QMAKE_QTWAYLANDSCANNER, qtwaylandscanner) + +qtwayland_client_header.name = qtwayland ${QMAKE_FILE_BASE} +qtwayland_client_header.input = WAYLANDCLIENTSOURCES WAYLANDCLIENTSOURCES_SYSTEM +qtwayland_client_header.variable_out = HEADERS +qtwayland_client_header.depends += $$QMAKE_QTWAYLANDSCANNER_EXE $${WAYLAND_CLIENT_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-client-protocol$${first(QMAKE_EXT_H)} +qtwayland_client_header.output = $${WAYLAND_CLIENT_HEADER_DEST}qwayland-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +qtwayland_client_header.commands = $$QMAKE_QTWAYLANDSCANNER client-header ${QMAKE_FILE_IN} $$WAYLAND_CLIENT_INCLUDE_DIR > ${QMAKE_FILE_OUT} +silent:qtwayland_client_header.commands = @echo QtWayland client header ${QMAKE_FILE_IN} && $$qtwayland_client_header.commands +QMAKE_EXTRA_COMPILERS += qtwayland_client_header + +qtwayland_client_code.name = qtwayland ${QMAKE_FILE_BASE} +qtwayland_client_code.input = WAYLANDCLIENTSOURCES WAYLANDCLIENTSOURCES_SYSTEM +qtwayland_client_code.variable_out = SOURCES +qtwayland_client_code.depends += $$QMAKE_QTWAYLANDSCANNER_EXE $${WAYLAND_CLIENT_HEADER_DEST}qwayland-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +qtwayland_client_code.output = qwayland-${QMAKE_FILE_BASE}.cpp +qtwayland_client_code.commands = $$QMAKE_QTWAYLANDSCANNER client-code ${QMAKE_FILE_IN} $$WAYLAND_CLIENT_INCLUDE_DIR > ${QMAKE_FILE_OUT} +silent:qtwayland_client_code.commands = @echo QtWayland client code ${QMAKE_FILE_IN} && $$qtwayland_client_code.commands +QMAKE_EXTRA_COMPILERS += qtwayland_client_code + +qtwayland_server_header.name = qtwayland ${QMAKE_FILE_BASE} +qtwayland_server_header.input = WAYLANDSERVERSOURCES WAYLANDSERVERSOURCES_SYSTEM +qtwayland_server_header.variable_out = HEADERS +qtwayland_server_header.depends += $$QMAKE_QTWAYLANDSCANNER_EXE $${WAYLAND_SERVER_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-server-protocol$${first(QMAKE_EXT_H)} +qtwayland_server_header.output = $${WAYLAND_SERVER_HEADER_DEST}qwayland-server-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +qtwayland_server_header.commands = $$QMAKE_QTWAYLANDSCANNER server-header ${QMAKE_FILE_IN} $$WAYLAND_SERVER_INCLUDE_DIR > ${QMAKE_FILE_OUT} +silent:qtwayland_server_header.commands = @echo QtWayland server header ${QMAKE_FILE_IN} && $$qtwayland_server_header.commands +QMAKE_EXTRA_COMPILERS += qtwayland_server_header + +qtwayland_server_code.name = qtwayland ${QMAKE_FILE_BASE} +qtwayland_server_code.input = WAYLANDSERVERSOURCES WAYLANDSERVERSOURCES_SYSTEM +qtwayland_server_code.variable_out = SOURCES +qtwayland_server_code.depends += $$QMAKE_QTWAYLANDSCANNER_EXE $${WAYLAND_SERVER_HEADER_DEST}qwayland-server-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} +qtwayland_server_code.output = qwayland-server-${QMAKE_FILE_BASE}.cpp +qtwayland_server_code.commands = $$QMAKE_QTWAYLANDSCANNER server-code ${QMAKE_FILE_IN} $$WAYLAND_SERVER_INCLUDE_DIR > ${QMAKE_FILE_OUT} +silent:qtwayland_server_code.commands = @echo QtWayland server code ${QMAKE_FILE_IN} && $$qtwayland_server_code.commands +QMAKE_EXTRA_COMPILERS += qtwayland_server_code diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/console.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/console.prf new file mode 100644 index 000000000..739bb0e01 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/console.prf @@ -0,0 +1,5 @@ +CONFIG -= windows +QMAKE_LFLAGS += $$QMAKE_LFLAGS_CONSOLE +contains(TEMPLATE, ".*app") { + QMAKE_LFLAGS += $$QMAKE_LFLAGS_EXE +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/default_pre.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/default_pre.prf new file mode 100644 index 000000000..4bd1653ae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/default_pre.prf @@ -0,0 +1,2 @@ +CONFIG = windows $$CONFIG +load(default_pre) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/dumpcpp.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/dumpcpp.prf new file mode 100644 index 000000000..c8cb0dd24 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/dumpcpp.prf @@ -0,0 +1,36 @@ +qtPrepareTool(QMAKE_DUMPCPP, dumpcpp) + +dumpcpp_decl.depends += $$QMAKE_DUMPCPP_EXE +dumpcpp_decl.commands = $$QMAKE_DUMPCPP ${QMAKE_FILE_IN} -o ${QMAKE_FILE_BASE} +qaxcontainer_compat: dumpcpp_decl.commands += -compat +dumpcpp_decl.output = ${QMAKE_FILE_BASE}.h +dumpcpp_decl.input = TYPELIBS +dumpcpp_decl.variable_out = HEADERS +dumpcpp_decl.name = DUMP +dumpcpp_decl.CONFIG += no_link + +QMAKE_EXTRA_COMPILERS += dumpcpp_decl + + +dumpcpp_impl.commands = $$escape_expand(\\n) # dummy command +dumpcpp_impl.output = ${QMAKE_FILE_BASE}.cpp +dumpcpp_impl.input = TYPELIBS +dumpcpp_impl.variable_out = SOURCES +dumpcpp_impl.name = CPP +dumpcpp_impl.depends += ${QMAKE_FILE_BASE}.h + +QMAKE_EXTRA_COMPILERS += dumpcpp_impl + + +# Create dependencies from every object file to our generated header files. +if(isEmpty(BUILDS)|build_pass):have_target:!contains(TEMPLATE, vc.*) { + for(tlb, TYPELIBS) { + hdr = $$basename(tlb) + hdr = $$section(hdr, ., 0, -2).h + TYPELIB_HEADERS += $$hdr + } + + objtgt.target = $(OBJECTS) + objtgt.depends += $$TYPELIB_HEADERS + QMAKE_EXTRA_TARGETS += objtgt +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/idcidl.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/idcidl.prf new file mode 100644 index 000000000..922ae3f99 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/idcidl.prf @@ -0,0 +1,48 @@ +build_pass:console { + warning("QAxServer applications cannot be console applications.") + warning("Remove 'console' from your CONFIG.") +} + +# Do not link qtmain.lib +QMAKE_LIBS_QT_ENTRY = + +ACTIVEQT_VERSION = $$VERSION +isEmpty(ACTIVEQT_VERSION):ACTIVEQT_VERSION = 1.0 + +qtPrepareTool(QMAKE_IDC, idc) +contains(TEMPLATE, "vc.*") { + ACTIVEQT_IDC = $${QMAKE_IDC} + ACTIVEQT_IDL = $${QMAKE_IDL} + ACTIVEQT_TARGET = \"$(TargetPath)\" + ACTIVEQT_NEWLINE = $$escape_expand(\\n\\t) + ACTIVEQT_OUTPUT = $(IntDir)$${TARGET} + ACTIVEQT_TLBOUT = \"$(TargetDir)/$${TARGET}.tlb\" + GENERATED += $${OBJECTS_DIR}/$${TARGET}.idl $${ACTIVEQT_TLBOUT} +} else { + ACTIVEQT_IDC = -$(IDC) + ACTIVEQT_IDL = -$(IDL) + ACTIVEQT_NEWLINE = $$escape_expand(\\n\\t) + ACTIVEQT_TARGET = $(DESTDIR_TARGET) + ACTIVEQT_OUTPUT = $(OBJECTS_DIR)/$${TARGET} + isEmpty(DESTDIR) { + ACTIVEQT_TLBOUT = $${TARGET}.tlb + } else { + ACTIVEQT_TLBOUT = $${DESTDIR}/$${TARGET}.tlb + } +} + +!qaxserver_no_postlink { + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK += $$quote($$ACTIVEQT_NEWLINE) + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDC $${ACTIVEQT_TARGET} /idl $${ACTIVEQT_OUTPUT}.idl -version $${ACTIVEQT_VERSION}$${ACTIVEQT_NEWLINE}) + !isEmpty(RC_FILE) { + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDL "$${ACTIVEQT_OUTPUT}.idl" /nologo /tlb "$${ACTIVEQT_OUTPUT}.tlb"$$ACTIVEQT_NEWLINE) + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDC $${ACTIVEQT_TARGET} /tlb $${ACTIVEQT_OUTPUT}.tlb$$ACTIVEQT_NEWLINE) + } else { + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDL "$${ACTIVEQT_OUTPUT}.idl" /nologo /tlb "$${ACTIVEQT_TLBOUT}"$$ACTIVEQT_NEWLINE) + message("No rc-file linked into project; type library will be a separate file.") + } + !qaxserver_no_register: \ + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDC $${ACTIVEQT_TARGET} /regserver) + QMAKE_CLEAN += $${ACTIVEQT_OUTPUT}.idl $${ACTIVEQT_OUTPUT}.tlb +} + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/msvc_mp.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/msvc_mp.prf new file mode 100644 index 000000000..d6dea14db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/msvc_mp.prf @@ -0,0 +1,2 @@ +QMAKE_CFLAGS += $$QMAKE_CFLAGS_MP +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_MP diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/opengl.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/opengl.prf new file mode 100644 index 000000000..c6fba7770 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/opengl.prf @@ -0,0 +1,31 @@ +QT_FOR_CONFIG += gui + +qtConfig(opengles2) { + # Depending on the configuration we use libQtANGLE or libEGL and libGLESv2 + qtConfig(combined-angle-lib) { + QMAKE_LIBS_OPENGL_ES2 = -l$${LIBQTANGLE_NAME} $$QMAKE_LIBS_OPENGL_ES2 + QMAKE_LIBS_OPENGL_ES2_DEBUG = -l$${LIBQTANGLE_NAME}d $$QMAKE_LIBS_OPENGL_ES2_DEBUG + } else { + QMAKE_LIBS_OPENGL_ES2 = -l$${LIBEGL_NAME} -l$${LIBGLESV2_NAME} $$QMAKE_LIBS_OPENGL_ES2 + QMAKE_LIBS_OPENGL_ES2_DEBUG = -l$${LIBEGL_NAME}d -l$${LIBGLESV2_NAME}d $$QMAKE_LIBS_OPENGL_ES2_DEBUG + } +# For Desktop, use the ANGLE library location passed on from configure. + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES2 + CONFIG(debug, debug|release) { + QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2_DEBUG + qtConfig(angle) { + LIBS += $$QMAKE_LIBS_OPENGL_ES2_DEBUG + } else { + LIBS += $$QMAKE_LIBS_OPENGL_ES2 + } + } else { + LIBS += $$QMAKE_LIBS_OPENGL_ES2 + QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2_RELEASE + } + qtConfig(static): DEFINES += GL_APICALL= EGLAPI= +} else { + !qtConfig(dynamicgl) { + QMAKE_LIBS += $$QMAKE_LIBS_OPENGL + QMAKE_LFLAGS += $$QMAKE_LFLAGS_OPENGL + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/qt_dll.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/qt_dll.prf new file mode 100644 index 000000000..f03c0c08c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/qt_dll.prf @@ -0,0 +1 @@ +CONFIG *= qt diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/rtti.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/rtti.prf new file mode 100644 index 000000000..6d720d243 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/rtti.prf @@ -0,0 +1,3 @@ +CONFIG -= rtti_off +QMAKE_CFLAGS += $$QMAKE_CFLAGS_RTTI_ON +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RTTI_ON diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/rtti_off.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/rtti_off.prf new file mode 100644 index 000000000..b520bfa8b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/rtti_off.prf @@ -0,0 +1,4 @@ +CONFIG -= rtti +QMAKE_CFLAGS += $$QMAKE_CFLAGS_RTTI_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RTTI_OFF +DEFINES += QT_NO_DYNAMIC_CAST \ No newline at end of file diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/separate_debug_info.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/separate_debug_info.prf new file mode 100644 index 000000000..2838020f0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/separate_debug_info.prf @@ -0,0 +1,18 @@ +have_target:!static:!isEmpty(QMAKE_OBJCOPY) { + load(resolve_target) + QMAKE_TARGET_DEBUG_INFO = $${QMAKE_RESOLVED_TARGET}.debug + + shell_target = $$shell_quote($$relative_path($$QMAKE_RESOLVED_TARGET, $$OUT_PWD)) + shell_target_debug_info = $$shell_quote($$relative_path($$QMAKE_TARGET_DEBUG_INFO, $$OUT_PWD)) + copy_debug_info = $$QMAKE_OBJCOPY --only-keep-debug $$shell_target $$shell_target_debug_info + link_debug_info = $$QMAKE_OBJCOPY --add-gnu-debuglink=$$shell_target_debug_info $$shell_target + strip_debug_info = $$QMAKE_OBJCOPY --strip-debug $$shell_target + + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK + + QMAKE_POST_LINK = $$copy_debug_info && $$strip_debug_info && $$link_debug_info $$QMAKE_POST_LINK + silent:QMAKE_POST_LINK = @echo creating $@.debug && $$QMAKE_POST_LINK + + target.targets += $$QMAKE_TARGET_DEBUG_INFO + QMAKE_DISTCLEAN += $$QMAKE_TARGET_DEBUG_INFO +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/stl.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/stl.prf new file mode 100644 index 000000000..caf30ef68 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/stl.prf @@ -0,0 +1,3 @@ +CONFIG -= stl_off +QMAKE_CFLAGS *= $$QMAKE_CFLAGS_STL_ON +QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_STL_ON diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/stl_off.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/stl_off.prf new file mode 100644 index 000000000..10198c76d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/stl_off.prf @@ -0,0 +1,3 @@ +CONFIG -= stl +QMAKE_CFLAGS += $$QMAKE_CFLAGS_STL_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STL_OFF diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/windeployqt.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/windeployqt.prf new file mode 100644 index 000000000..fb5b2c423 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/windeployqt.prf @@ -0,0 +1,20 @@ +# Extra target for running windeployqt +qtPrepareTool(QMAKE_WINDEPLOYQT, windeployqt) +build_pass { + load(resolve_target) + + isEmpty(WINDEPLOYQT_OPTIONS): WINDEPLOYQT_OPTIONS = -qmldir $$shell_quote($$system_path($$_PRO_FILE_PWD_)) + WINDEPLOYQT_TARGET = $$shell_quote($$system_path($$QMAKE_RESOLVED_TARGET)) + WINDEPLOYQT_OUTPUT = $$shell_quote($$system_path($$dirname(QMAKE_RESOLVED_TARGET)/$$basename(TARGET).windeployqt)) + windeployqt.target = windeployqt + windeployqt.commands = $$QMAKE_WINDEPLOYQT $$WINDEPLOYQT_OPTIONS -list target $$WINDEPLOYQT_TARGET > $$WINDEPLOYQT_OUTPUT + + windeployqt_clean.commands = if exist $$WINDEPLOYQT_OUTPUT for /f %i in ($$WINDEPLOYQT_OUTPUT) do $$QMAKE_DEL_FILE %~fi && $$QMAKE_DEL_DIR %~pi + QMAKE_EXTRA_TARGETS += windeployqt_clean + DISTCLEAN_DEPS += windeployqt_clean + QMAKE_DISTCLEAN += $$WINDEPLOYQT_OUTPUT +} else { + windeployqt.CONFIG += recursive + windeployqt_clean.CONFIG += recursive +} +QMAKE_EXTRA_TARGETS += windeployqt windeployqt_clean diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/windows.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/windows.prf new file mode 100644 index 000000000..ecb167bf1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/win32/windows.prf @@ -0,0 +1,17 @@ +CONFIG -= console +QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS +contains(TEMPLATE, ".*app") { + QMAKE_LFLAGS += $$QMAKE_LFLAGS_EXE + mingw:DEFINES += QT_NEEDS_QMAIN + + qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) { + isEqual(entryLib, -lqtmain) { + !contains(QMAKE_DEFAULT_LIBDIRS, $$QT.core.libs): \ + QMAKE_LIBS += -L$$QT.core.libs + CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}d + else: QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX} + } else { + QMAKE_LIBS += $${entryLib} + } + } +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/winrt/console.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/winrt/console.prf new file mode 100644 index 000000000..c4afe5b96 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/winrt/console.prf @@ -0,0 +1,5 @@ +# This is an empty prf file to overwrite the win32 version. +# On Windows RT all applications need to be windows applications +# and also link to winmain. Inside winmain we create the launch +# arguments and also initialize the UI. + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/winrt/default_pre.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/winrt/default_pre.prf new file mode 100644 index 000000000..966d24f09 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/winrt/default_pre.prf @@ -0,0 +1,14 @@ +# Note that the order is important - ucrt(d) has to be first. +# Otherwise, the linker might use malloc from a different library, +# but free_dbg() from the runtime, causing an assertion failure +# due to deleting an item from a different heap. +# vcruntime(d) is necessary when we don't link to any libraries +# which would pull it in transitively. +CONFIG(debug, debug|release): \ + QMAKE_LIBS = ucrtd.lib vcruntimed.lib $$QMAKE_LIBS +else: \ + QMAKE_LIBS = ucrt.lib vcruntime.lib $$QMAKE_LIBS + +equals(TEMPLATE, "vcapp"):!static: CONFIG += windeployqt + +load(default_pre) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/winrt/package_manifest.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/winrt/package_manifest.prf new file mode 100644 index 000000000..d850254dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/winrt/package_manifest.prf @@ -0,0 +1,223 @@ +# This performs basic variable replacement on the contents of the WinRT manifest template, as +# specified by WINRT_MANIFEST. The resulting manifest file is written to the output directory. +# While the most common options are covered by the default template, the developer is expected +# to make an application-level copy of the template in order to customize the manifest further. +# Afterwards, they can override the default template by assigning their template to WINRT_MANIFEST. +# +# All subkeys in WINRT_MANIFEST will be replaced if defined/found, so new variables can be easily +# added. The following keys have default values and are present in the default templates: +# WINRT_MANIFEST: The name of the input manifest file. Defaults to a file defined by the mkspec. +# WINRT_MANIFEST.target: The name of the target (.exe). Defaults to TARGET. +# WINRT_MANIFEST.identity: The unique ID of the app. Defaults to reusing the existing generated manifest's UUID, or generates a new UUID if none is present. +# WINRT_MANIFEST.name: The name of the package as displayed to the user. Defaults to TARGET. +# WINRT_MANIFEST.architecture: The target architecture. Defaults to VCPROJ_ARCH. +# WINRT_MANIFEST.version: The version number of the package. Defaults to "1.0.0.0". +# WINRT_MANIFEST.publisher: Display name of the publisher. Defaults to "Default publisher display name". +# WINRT_MANIFEST.publisher_id: The publisher's distinguished name (default: CN=MyCN). +# WINRT_MANIFEST.phone_product_id: The GUID of the product. Defaults to the value of WINRT_MANIFEST.identity. (Windows Phone only) +# WINRT_MANIFEST.phone_publisher_id: The GUID of the publisher. Defaults to an invalid GUID. (Windows Phone only) +# WINRT_MANIFEST.description: Package description. Defaults to "Default package description". +# WINRT_MANIFEST.background: Tile background color. Defaults to "green". +# WINRT_MANIFEST.foreground: Tile foreground (text) color (Windows 8/RT only). Defaults to "light". +# WINRT_MANIFEST.logo_store: Logo image file for Windows Store. Default provided by the mkspec. +# WINRT_MANIFEST.logo_small: Small logo image file. Default provided by the mkspec. +# WINRT_MANIFEST.logo_medium: Medium logo image file. Default provided by the mkspec. +# WINRT_MANIFEST.logo_large: Large logo image file. Default provided by the mkspec. +# WINRT_MANIFEST.splash_screen: Splash screen image file. Default provided by the mkspec. +# WINRT_MANIFEST.rotation_preference: Orientation specification. Default is empty. (portrait, landscape, landscapeFlipped) +# WINRT_MANIFEST.iconic_tile_icon: Image file for the "iconic" tile template icon. Default provided by the mkspec. +# WINRT_MANIFEST.iconic_tile_small: Image file for the small "iconic" tile template logo. Default provided by the mkspec. +# WINRT_MANIFEST.default_language: Specifies the default language of the application +# WINRT_MANIFEST.capabilities: Specifies capabilities to add to the capability list. +# WINRT_MANIFEST.capabilities_device: Specifies device capabilities to add to the capability list. (location, webcam...) +# WINRT_MANIFEST.dependencies: Specifies dependencies required by the package. +# WINRT_MANIFEST.minVersion: Specifies the minimum required Windows version to run the package. Defaults to %UCRTVersion% +# WINRT_MANIFEST.maxVersionTested: Specifies the maximum Windows version the package has been tested against. Defaults to WINRT_MANIFEST.minVersion + +# The manifest is generated for each build pass for normal apps, and only once for vcapps. +# - Normal apps have their package root directory in the same place as the target (one for each build pass). +# - Visual Studio requires a design-mode manifest in the same location as the vcproj. +!isEmpty(WINRT_MANIFEST): \ + if(build_pass:equals(TEMPLATE, "app"))| \ + if(!build_pass:equals(TEMPLATE, "vcapp")) { + + manifest_file.input = $$WINRT_MANIFEST + + contains(TEMPLATE, "vc.*") { + BUILD_DIR = $$OUT_PWD + } else { + load(resolve_target) + BUILD_DIR = $$dirname(QMAKE_RESOLVED_TARGET) + } + + contains(TEMPLATE, "vc.*"): \ + manifest_file.output = $$BUILD_DIR/Package.appxmanifest + else: \ + manifest_file.output = $$BUILD_DIR/AppxManifest.xml + + !contains(WINRT_MANIFEST.CONFIG, "verbatim") { + # Provide the C-runtime dependency + equals(TEMPLATE, "app") { + VCLIBS = Microsoft.VCLibs.$$replace(MSVC_VER, \\., ).00 + CONFIG(debug, debug|release): \ + VCLIBS = $${VCLIBS}.Debug + else: \ + VCLIBS = $${VCLIBS} + # VS 2017 still uses vclibs 140 + contains(MSVC_VER, "15.0"): VCLIBS = $$replace(VCLIBS, 150, 140) + VCLIBS = "$${VCLIBS}\" MinVersion=\"14.0.0.0\" Publisher=\"CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" + WINRT_MANIFEST.dependencies += $$VCLIBS + } + + # Provide default values for required variables + isEmpty(WINRT_MANIFEST.target): WINRT_MANIFEST.target = $$TARGET + isEmpty(WINRT_MANIFEST.identity) { + # Reuse the existing UUID if possible + UUID_CACHE = $$OUT_PWD/.qmake.winrt_uuid_$$TARGET + exists($$UUID_CACHE) { + include($$UUID_CACHE) + } else { + WINRT_UUID = $$system(uuidgen) + isEmpty(WINRT_UUID): error("Unable to generate a UUID. Make sure uuidgen is in your PATH.") + WINRT_UUID = "WINRT_MANIFEST.identity = $$WINRT_UUID" + write_file($$UUID_CACHE, WINRT_UUID)|error("Unable to write the UUID cache; aborting.") + eval($$WINRT_UUID) + } + } + isEmpty(WINRT_MANIFEST.name): WINRT_MANIFEST.name = $$TARGET + isEmpty(WINRT_MANIFEST.architecture): WINRT_MANIFEST.architecture = $$VCPROJ_ARCH + isEmpty(WINRT_MANIFEST.version): WINRT_MANIFEST.version = 1.0.0.0 + isEmpty(WINRT_MANIFEST.publisher): WINRT_MANIFEST.publisher = Default publisher display name + isEmpty(WINRT_MANIFEST.publisherid): WINRT_MANIFEST.publisherid = CN=$$(USERNAME) + isEmpty(WINRT_MANIFEST.phone_product_id): WINRT_MANIFEST.phone_product_id = $$WINRT_MANIFEST.identity + isEmpty(WINRT_MANIFEST.phone_publisher_id): WINRT_MANIFEST.phone_publisher_id = 00000000-0000-0000-0000-000000000000 + isEmpty(WINRT_MANIFEST.description): WINRT_MANIFEST.description = Default package description + isEmpty(WINRT_MANIFEST.background): WINRT_MANIFEST.background = green + isEmpty(WINRT_MANIFEST.foreground): WINRT_MANIFEST.foreground = light + isEmpty(WINRT_MANIFEST.default_language): WINRT_MANIFEST.default_language = en + *-msvc2015|*-msvc2017 { + isEmpty(WINRT_MANIFEST.minVersion): WINRT_MANIFEST.minVersion = $$(UCRTVersion) + isEmpty(WINRT_MANIFEST.minVersion): error("No UCRTVersion found in environment.")) + isEmpty(WINRT_MANIFEST.maxVersionTested): WINRT_MANIFEST.maxVersionTested = $$WINRT_MANIFEST.minVersion + } + + INDENT = "$$escape_expand(\\r\\n) " + + VS_XML_NAMESPACE = "m2" + WINRT_MANIFEST.rotation_preference = $$unique(WINRT_MANIFEST.rotation_preference) + !isEmpty(WINRT_MANIFEST.rotation_preference) { + MANIFEST_ROTATION += "<$${VS_XML_NAMESPACE}:InitialRotationPreference>" + for(ROTATION, WINRT_MANIFEST.rotation_preference): \ + MANIFEST_ROTATION += " <$${VS_XML_NAMESPACE}:Rotation Preference=\"$$ROTATION\" />" + MANIFEST_ROTATION += "</$${VS_XML_NAMESPACE}:InitialRotationPreference>" + + WINRT_MANIFEST.rotation_preference = $$join(MANIFEST_ROTATION, $$INDENT, $$INDENT) + } + + INDENT = "$$escape_expand(\\r\\n) " + + # All Windows 10 applications need to have internetClient. + WINRT_MANIFEST.capabilities += internetClient + + contains(WINRT_MANIFEST.capabilities, defaults) { + WINRT_MANIFEST.capabilities -= defaults + WINRT_MANIFEST.capabilities += $$WINRT_MANIFEST.capabilities_default + } + + contains(WINRT_MANIFEST.capabilities_device, defaults) { + WINRT_MANIFEST.capabilities_device -= defaults + WINRT_MANIFEST.capabilities_device += $$WINRT_MANIFEST.capabilities_device_default + } + + UAP_CAPABILITIES += \ + appointments \ + blockedChatMessages \ + chat \ + contacts \ + enterpriseAuthentication \ + # internetClient is special, as it needs to be written without namespace + #internetClient \ + musicLibrary \ + objects3D \ + phoneCall \ + picturesLibrary \ + removableStorage \ + sharedUserCertificates \ + userAccountInformation \ + videosLibrary \ + voipCall + + UAP3_CAPABILITIES += backgroundMediaPlayback remoteSystem userNotificationListener + + # Capabilities are given as a string list and may change with the configuration (network, sensors, etc.) + WINRT_MANIFEST.capabilities = $$unique(WINRT_MANIFEST.capabilities) + WINRT_MANIFEST.capabilities_device = $$unique(WINRT_MANIFEST.capabilities_device) + !isEmpty(WINRT_MANIFEST.capabilities)|!isEmpty(WINRT_MANIFEST.capabilities_device) { + MANIFEST_CAPABILITIES += "<Capabilities>" + for (CAPABILITY, WINRT_MANIFEST.capabilities) { + contains(UAP_CAPABILITIES, $$CAPABILITY): \ + MANIFEST_CAPABILITIES += " <uap:Capability Name=\"$$CAPABILITY\" />" + else:contains(UAP3_CAPABILITIES, $$CAPABILITY): \ + MANIFEST_CAPABILITIES += " <uap3:Capability Name=\"$$CAPABILITY\" />" + else: \ + MANIFEST_CAPABILITIES += " <Capability Name=\"$$CAPABILITY\" />" + } + for(CAPABILITY, WINRT_MANIFEST.capabilities_device): \ + MANIFEST_CAPABILITIES += " <DeviceCapability Name=\"$$CAPABILITY\" />" + MANIFEST_CAPABILITIES += "</Capabilities>" + + WINRT_MANIFEST.capabilities = $$join(MANIFEST_CAPABILITIES, $$INDENT, $$INDENT) + } + + # Dependencies are given as a string list. The CRT dependency is added automatically above. + # For MSVC2015/2017 the dependencies are added in conjunction with TargetDeviceFamily + # Due to the hard coded dependency on "Windows.Universal" the <Dependencies> tag + # is already inside the MSVC2015 manifest. + WINRT_MANIFEST.dependencies = $$unique(WINRT_MANIFEST.dependencies) + !isEmpty(WINRT_MANIFEST.dependencies) { + for(DEPENDENCY, WINRT_MANIFEST.dependencies): \ + MANIFEST_DEPENDENCIES += " <PackageDependency Name=\"$$DEPENDENCY\" />" + + WINRT_MANIFEST.dependencies = $$join(MANIFEST_DEPENDENCIES, $$INDENT, $$INDENT) + } + + # Provide default icons where needed + isEmpty(WINRT_ASSETS_PATH): WINRT_ASSETS_PATH = $$[QT_HOST_DATA/get]/mkspecs/common/winrt_winphone/assets + TEMPLATE_CONTENTS = $$cat($$WINRT_MANIFEST, lines) + ICONS_FOUND = $$find(TEMPLATE_CONTENTS, \\\$\\\$\\{WINRT_MANIFEST\\.(logo|tile)_) + ICONS_FOUND ~= s/.*\\\$\\\$\\{WINRT_MANIFEST\\.((logo|tile)_[^\}]+)\\}.*/\\1/g + for (ICON_NAME, ICONS_FOUND) { + ICON_FILE = $$eval(WINRT_MANIFEST.$$ICON_NAME) + isEmpty(ICON_FILE) { + equals(ICON_NAME, "logo_310x150"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_wide) + else: equals(ICON_NAME, "logo_150x150"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_large) + # Windows Phone specifics + else: equals(ICON_NAME, "logo_480x800"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_splash) + else: equals(ICON_NAME, "logo_71x71"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_medium) + else: equals(ICON_NAME, "logo_44x44"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_small) + # Windows RT specifics + else: equals(ICON_NAME, "logo_620x300"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_splash) + else: equals(ICON_NAME, "logo_70x70"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_medium) + else: equals(ICON_NAME, "logo_30x30"): ICON_FILE = $$eval(WINRT_MANIFEST.logo_small) + } + isEmpty(ICON_FILE): ICON_FILE = $$WINRT_ASSETS_PATH/$${ICON_NAME}.png + icon_$${ICON_NAME}.input = $$ICON_FILE + icon_$${ICON_NAME}.output = $$BUILD_DIR/assets/$$basename(ICON_FILE) + icon_$${ICON_NAME}.CONFIG = verbatim + QMAKE_SUBSTITUTES += icon_$${ICON_NAME} + WINRT_MANIFEST.$${ICON_NAME} = assets/$$basename(ICON_FILE) + } + + !contains(TEMPLATE, "vc.*") { + winrt_manifest_install.files = $$manifest_file.output + winrt_manifest_install.path = $$target.path + winrt_assets_install.files = $$BUILD_DIR/assets/* + winrt_assets_install.path = $$target.path/assets + INSTALLS += winrt_manifest_install winrt_assets_install + } + } else { + manifest_file.CONFIG += verbatim + } + + QMAKE_SUBSTITUTES += manifest_file +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/xctest.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/xctest.prf new file mode 100644 index 000000000..4ee504f0a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/xctest.prf @@ -0,0 +1,7 @@ +equals(TEMPLATE, app) { + load(sdk) + # Make the XCTest framework available. This is normally handled automatically + # by Xcode based on heuristics, but we need to explicitly link to XCTest. + !isEmpty(QMAKE_MAC_SDK_PLATFORM_PATH): \ + QMAKE_LFLAGS += -F$${QMAKE_MAC_SDK_PLATFORM_PATH}/Developer/Library/Frameworks -weak_framework XCTest +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/features/yacc.prf b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/yacc.prf new file mode 100644 index 000000000..618f0668c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/features/yacc.prf @@ -0,0 +1,43 @@ +# +# Yacc extra-compiler for handling files specified in the YACCSOURCES variable +# + +{ + yacc_decl.name = Yacc header + yacc_decl.input = YACCSOURCES + yacc_decl.variable_out = GENERATED_FILES + + + isEmpty(QMAKE_YACCFLAGS_MANGLE) { + QMAKE_YACCFLAGS_MANGLE = -p ${QMAKE_FILE_BASE} -b ${QMAKE_FILE_BASE} + QMAKE_YACC_HEADER = ${QMAKE_FILE_BASE}.tab.h + QMAKE_YACC_SOURCE = ${QMAKE_FILE_BASE}.tab.c + } else { + QMAKE_YACCFLAGS_MANGLE ~= s/\\$base/${QMAKE_FILE_BASE}/g #backwards compat + QMAKE_YACC_HEADER ~= s/\\$base/${QMAKE_FILE_BASE}/g + QMAKE_YACC_SOURCE ~= s/\\$base/${QMAKE_FILE_BASE}/g + } + QMAKE_YACCDECLFLAGS = $$QMAKE_YACCFLAGS + !yacc_no_name_mangle:QMAKE_YACCDECLFLAGS += $$QMAKE_YACCFLAGS_MANGLE + + yacc_decl.commands = \ + -$(DEL_FILE) $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) \ + $$QMAKE_YACC $$QMAKE_YACCDECLFLAGS ${QMAKE_FILE_IN}$$escape_expand(\\n\\t) \ + $(MOVE) $${QMAKE_YACC_HEADER} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)}$$escape_expand(\\n\\t) \ + $(MOVE) $${QMAKE_YACC_SOURCE} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) + yacc_decl.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)} + + silent:yacc_decl.commands = @echo Yacc ${QMAKE_FILE_IN} && $$yacc_decl.commands + QMAKE_EXTRA_COMPILERS += yacc_decl +} + +{ + yacc_impl.name = source for ${QMAKE_FILE_IN} + yacc_impl.input = YACCSOURCES + yacc_impl.variable_out = GENERATED_SOURCES + yacc_impl.dependency_type = TYPE_C + yacc_impl.commands = $$escape_expand(\\n) # We don't want any commands where, but if command is empty no rules are created + yacc_impl.depends += $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)} # Make sure we depend on the step above + yacc_impl.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_CPP)} # Faked output from this step, output really created in step above + QMAKE_EXTRA_COMPILERS += yacc_impl +} diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3danimation.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3danimation.pri new file mode 100644 index 000000000..10b7208d9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3danimation.pri @@ -0,0 +1,15 @@ +QT.3danimation.VERSION = 5.9.4 +QT.3danimation.name = Qt3DAnimation +QT.3danimation.module = Qt53DAnimation +QT.3danimation.libs = $$QT_MODULE_LIB_BASE +QT.3danimation.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DAnimation +QT.3danimation.frameworks = +QT.3danimation.bins = $$QT_MODULE_BIN_BASE +QT.3danimation.depends = core gui 3dcore 3drender +QT.3danimation.uses = +QT.3danimation.module_config = v2 +QT.3danimation.DEFINES = QT_3DANIMATION_LIB +QT.3danimation.enabled_features = +QT.3danimation.disabled_features = +QT_CONFIG += +QT_MODULES += 3danimation diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3danimation_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3danimation_private.pri new file mode 100644 index 000000000..3a424ab07 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3danimation_private.pri @@ -0,0 +1,11 @@ +QT.3danimation_private.VERSION = 5.9.4 +QT.3danimation_private.name = Qt3DAnimation +QT.3danimation_private.module = +QT.3danimation_private.libs = $$QT_MODULE_LIB_BASE +QT.3danimation_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DAnimation/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DAnimation/5.9.4/Qt3DAnimation +QT.3danimation_private.frameworks = +QT.3danimation_private.depends = core_private 3dcore_private 3drender_private 3danimation +QT.3danimation_private.uses = +QT.3danimation_private.module_config = v2 internal_module +QT.3danimation_private.enabled_features = +QT.3danimation_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dcore.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dcore.pri new file mode 100644 index 000000000..84acedcd3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dcore.pri @@ -0,0 +1,15 @@ +QT.3dcore.VERSION = 5.9.4 +QT.3dcore.name = Qt3DCore +QT.3dcore.module = Qt53DCore +QT.3dcore.libs = $$QT_MODULE_LIB_BASE +QT.3dcore.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DCore +QT.3dcore.frameworks = +QT.3dcore.bins = $$QT_MODULE_BIN_BASE +QT.3dcore.depends = core gui network +QT.3dcore.uses = +QT.3dcore.module_config = v2 +QT.3dcore.DEFINES = QT_3DCORE_LIB +QT.3dcore.enabled_features = +QT.3dcore.disabled_features = +QT_CONFIG += assimp +QT_MODULES += 3dcore diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dcore_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dcore_private.pri new file mode 100644 index 000000000..f9aff0c6d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dcore_private.pri @@ -0,0 +1,11 @@ +QT.3dcore_private.VERSION = 5.9.4 +QT.3dcore_private.name = Qt3DCore +QT.3dcore_private.module = +QT.3dcore_private.libs = $$QT_MODULE_LIB_BASE +QT.3dcore_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DCore/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DCore/5.9.4/Qt3DCore +QT.3dcore_private.frameworks = +QT.3dcore_private.depends = core_private gui_private 3dcore +QT.3dcore_private.uses = +QT.3dcore_private.module_config = v2 internal_module +QT.3dcore_private.enabled_features = assimp +QT.3dcore_private.disabled_features = qt3d-profile-gl qt3d-profile-jobs system-assimp diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dextras.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dextras.pri new file mode 100644 index 000000000..0a8e67f7e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dextras.pri @@ -0,0 +1,15 @@ +QT.3dextras.VERSION = 5.9.4 +QT.3dextras.name = Qt3DExtras +QT.3dextras.module = Qt53DExtras +QT.3dextras.libs = $$QT_MODULE_LIB_BASE +QT.3dextras.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DExtras +QT.3dextras.frameworks = +QT.3dextras.bins = $$QT_MODULE_BIN_BASE +QT.3dextras.depends = core gui 3dcore 3drender 3dinput 3dlogic +QT.3dextras.uses = +QT.3dextras.module_config = v2 +QT.3dextras.DEFINES = QT_3DEXTRAS_LIB +QT.3dextras.enabled_features = +QT.3dextras.disabled_features = +QT_CONFIG += +QT_MODULES += 3dextras diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dextras_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dextras_private.pri new file mode 100644 index 000000000..a0cb65685 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dextras_private.pri @@ -0,0 +1,11 @@ +QT.3dextras_private.VERSION = 5.9.4 +QT.3dextras_private.name = Qt3DExtras +QT.3dextras_private.module = +QT.3dextras_private.libs = $$QT_MODULE_LIB_BASE +QT.3dextras_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DExtras/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DExtras/5.9.4/Qt3DExtras +QT.3dextras_private.frameworks = +QT.3dextras_private.depends = core_private 3dcore_private 3drender_private 3dextras +QT.3dextras_private.uses = +QT.3dextras_private.module_config = v2 internal_module +QT.3dextras_private.enabled_features = +QT.3dextras_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dinput.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dinput.pri new file mode 100644 index 000000000..dcc5ad6ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dinput.pri @@ -0,0 +1,16 @@ +QT.3dinput.VERSION = 5.9.4 +QT.3dinput.name = Qt3DInput +QT.3dinput.module = Qt53DInput +QT.3dinput.libs = $$QT_MODULE_LIB_BASE +QT.3dinput.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DInput +QT.3dinput.frameworks = +QT.3dinput.bins = $$QT_MODULE_BIN_BASE +QT.3dinput.plugin_types = 3dinputdevices +QT.3dinput.depends = core gui 3dcore gamepad +QT.3dinput.uses = +QT.3dinput.module_config = v2 +QT.3dinput.DEFINES = QT_3DINPUT_LIB +QT.3dinput.enabled_features = +QT.3dinput.disabled_features = +QT_CONFIG += +QT_MODULES += 3dinput diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dinput_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dinput_private.pri new file mode 100644 index 000000000..964f47b95 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dinput_private.pri @@ -0,0 +1,11 @@ +QT.3dinput_private.VERSION = 5.9.4 +QT.3dinput_private.name = Qt3DInput +QT.3dinput_private.module = +QT.3dinput_private.libs = $$QT_MODULE_LIB_BASE +QT.3dinput_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DInput/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DInput/5.9.4/Qt3DInput +QT.3dinput_private.frameworks = +QT.3dinput_private.depends = core_private 3dcore_private 3dinput +QT.3dinput_private.uses = +QT.3dinput_private.module_config = v2 internal_module +QT.3dinput_private.enabled_features = +QT.3dinput_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dlogic.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dlogic.pri new file mode 100644 index 000000000..09582e125 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dlogic.pri @@ -0,0 +1,15 @@ +QT.3dlogic.VERSION = 5.9.4 +QT.3dlogic.name = Qt3DLogic +QT.3dlogic.module = Qt53DLogic +QT.3dlogic.libs = $$QT_MODULE_LIB_BASE +QT.3dlogic.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DLogic +QT.3dlogic.frameworks = +QT.3dlogic.bins = $$QT_MODULE_BIN_BASE +QT.3dlogic.depends = core gui 3dcore +QT.3dlogic.uses = +QT.3dlogic.module_config = v2 +QT.3dlogic.DEFINES = QT_3DLOGIC_LIB +QT.3dlogic.enabled_features = +QT.3dlogic.disabled_features = +QT_CONFIG += +QT_MODULES += 3dlogic diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dlogic_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dlogic_private.pri new file mode 100644 index 000000000..bd2a96a1d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dlogic_private.pri @@ -0,0 +1,11 @@ +QT.3dlogic_private.VERSION = 5.9.4 +QT.3dlogic_private.name = Qt3DLogic +QT.3dlogic_private.module = +QT.3dlogic_private.libs = $$QT_MODULE_LIB_BASE +QT.3dlogic_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DLogic/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DLogic/5.9.4/Qt3DLogic +QT.3dlogic_private.frameworks = +QT.3dlogic_private.depends = core_private gui_private 3dcore_private 3dlogic +QT.3dlogic_private.uses = +QT.3dlogic_private.module_config = v2 internal_module +QT.3dlogic_private.enabled_features = +QT.3dlogic_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquick.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquick.pri new file mode 100644 index 000000000..4306ba21c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquick.pri @@ -0,0 +1,15 @@ +QT.3dquick.VERSION = 5.9.4 +QT.3dquick.name = Qt3DQuick +QT.3dquick.module = Qt53DQuick +QT.3dquick.libs = $$QT_MODULE_LIB_BASE +QT.3dquick.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuick +QT.3dquick.frameworks = +QT.3dquick.bins = $$QT_MODULE_BIN_BASE +QT.3dquick.depends = core gui qml quick 3dcore +QT.3dquick.uses = +QT.3dquick.module_config = v2 +QT.3dquick.DEFINES = QT_3DQUICK_LIB +QT.3dquick.enabled_features = +QT.3dquick.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquick diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquick_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquick_private.pri new file mode 100644 index 000000000..aeae2ef29 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquick_private.pri @@ -0,0 +1,11 @@ +QT.3dquick_private.VERSION = 5.9.4 +QT.3dquick_private.name = Qt3DQuick +QT.3dquick_private.module = +QT.3dquick_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquick_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuick/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuick/5.9.4/Qt3DQuick +QT.3dquick_private.frameworks = +QT.3dquick_private.depends = core_private gui_private qml_private quick_private 3dcore_private 3dquick +QT.3dquick_private.uses = +QT.3dquick_private.module_config = v2 internal_module +QT.3dquick_private.enabled_features = +QT.3dquick_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickanimation.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickanimation.pri new file mode 100644 index 000000000..5433d419a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickanimation.pri @@ -0,0 +1,15 @@ +QT.3dquickanimation.VERSION = 5.9.4 +QT.3dquickanimation.name = Qt3DQuickAnimation +QT.3dquickanimation.module = Qt53DQuickAnimation +QT.3dquickanimation.libs = $$QT_MODULE_LIB_BASE +QT.3dquickanimation.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuickAnimation +QT.3dquickanimation.frameworks = +QT.3dquickanimation.bins = $$QT_MODULE_BIN_BASE +QT.3dquickanimation.depends = core gui qml 3dcore 3drender 3danimation 3dquick +QT.3dquickanimation.uses = +QT.3dquickanimation.module_config = v2 +QT.3dquickanimation.DEFINES = QT_3DQUICKANIMATION_LIB +QT.3dquickanimation.enabled_features = +QT.3dquickanimation.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquickanimation diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickanimation_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickanimation_private.pri new file mode 100644 index 000000000..d800204cc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickanimation_private.pri @@ -0,0 +1,11 @@ +QT.3dquickanimation_private.VERSION = 5.9.4 +QT.3dquickanimation_private.name = Qt3DQuickAnimation +QT.3dquickanimation_private.module = +QT.3dquickanimation_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquickanimation_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuickAnimation/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuickAnimation/5.9.4/Qt3DQuickAnimation +QT.3dquickanimation_private.frameworks = +QT.3dquickanimation_private.depends = core_private qml_private 3dquick_private 3dcore_private 3drender_private 3dquickanimation +QT.3dquickanimation_private.uses = +QT.3dquickanimation_private.module_config = v2 internal_module +QT.3dquickanimation_private.enabled_features = +QT.3dquickanimation_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickextras.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickextras.pri new file mode 100644 index 000000000..e35521613 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickextras.pri @@ -0,0 +1,15 @@ +QT.3dquickextras.VERSION = 5.9.4 +QT.3dquickextras.name = Qt3DQuickExtras +QT.3dquickextras.module = Qt53DQuickExtras +QT.3dquickextras.libs = $$QT_MODULE_LIB_BASE +QT.3dquickextras.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuickExtras +QT.3dquickextras.frameworks = +QT.3dquickextras.bins = $$QT_MODULE_BIN_BASE +QT.3dquickextras.depends = core gui qml 3dcore 3dinput 3dquick 3drender 3dlogic 3dextras +QT.3dquickextras.uses = +QT.3dquickextras.module_config = v2 +QT.3dquickextras.DEFINES = QT_3DQUICKEXTRAS_LIB +QT.3dquickextras.enabled_features = +QT.3dquickextras.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquickextras diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickextras_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickextras_private.pri new file mode 100644 index 000000000..9d04f30fd --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickextras_private.pri @@ -0,0 +1,11 @@ +QT.3dquickextras_private.VERSION = 5.9.4 +QT.3dquickextras_private.name = Qt3DQuickExtras +QT.3dquickextras_private.module = +QT.3dquickextras_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquickextras_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuickExtras/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuickExtras/5.9.4/Qt3DQuickExtras +QT.3dquickextras_private.frameworks = +QT.3dquickextras_private.depends = core_private qml_private 3dquick_private 3drender_private 3dquickextras +QT.3dquickextras_private.uses = +QT.3dquickextras_private.module_config = v2 internal_module +QT.3dquickextras_private.enabled_features = +QT.3dquickextras_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickinput.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickinput.pri new file mode 100644 index 000000000..8cb15d2d0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickinput.pri @@ -0,0 +1,15 @@ +QT.3dquickinput.VERSION = 5.9.4 +QT.3dquickinput.name = Qt3DQuickInput +QT.3dquickinput.module = Qt53DQuickInput +QT.3dquickinput.libs = $$QT_MODULE_LIB_BASE +QT.3dquickinput.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuickInput +QT.3dquickinput.frameworks = +QT.3dquickinput.bins = $$QT_MODULE_BIN_BASE +QT.3dquickinput.depends = core gui qml 3dcore 3dinput 3dquick +QT.3dquickinput.uses = +QT.3dquickinput.module_config = v2 +QT.3dquickinput.DEFINES = QT_3DQUICKINPUT_LIB +QT.3dquickinput.enabled_features = +QT.3dquickinput.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquickinput diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickinput_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickinput_private.pri new file mode 100644 index 000000000..f20441f50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickinput_private.pri @@ -0,0 +1,11 @@ +QT.3dquickinput_private.VERSION = 5.9.4 +QT.3dquickinput_private.name = Qt3DQuickInput +QT.3dquickinput_private.module = +QT.3dquickinput_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquickinput_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuickInput/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuickInput/5.9.4/Qt3DQuickInput +QT.3dquickinput_private.frameworks = +QT.3dquickinput_private.depends = core_private qml_private 3dquick_private 3dcore_private 3dinput_private 3dquickinput +QT.3dquickinput_private.uses = +QT.3dquickinput_private.module_config = v2 internal_module +QT.3dquickinput_private.enabled_features = +QT.3dquickinput_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickrender.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickrender.pri new file mode 100644 index 000000000..2ef479d12 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickrender.pri @@ -0,0 +1,15 @@ +QT.3dquickrender.VERSION = 5.9.4 +QT.3dquickrender.name = Qt3DQuickRender +QT.3dquickrender.module = Qt53DQuickRender +QT.3dquickrender.libs = $$QT_MODULE_LIB_BASE +QT.3dquickrender.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuickRender +QT.3dquickrender.frameworks = +QT.3dquickrender.bins = $$QT_MODULE_BIN_BASE +QT.3dquickrender.depends = core gui qml 3dcore 3drender 3dquick +QT.3dquickrender.uses = +QT.3dquickrender.module_config = v2 +QT.3dquickrender.DEFINES = QT_3DQUICKRENDER_LIB +QT.3dquickrender.enabled_features = +QT.3dquickrender.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquickrender diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickrender_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickrender_private.pri new file mode 100644 index 000000000..e8c21f419 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickrender_private.pri @@ -0,0 +1,11 @@ +QT.3dquickrender_private.VERSION = 5.9.4 +QT.3dquickrender_private.name = Qt3DQuickRender +QT.3dquickrender_private.module = +QT.3dquickrender_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquickrender_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuickRender/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuickRender/5.9.4/Qt3DQuickRender +QT.3dquickrender_private.frameworks = +QT.3dquickrender_private.depends = core_private qml_private 3dquick_private 3dcore_private 3drender_private 3dquickrender +QT.3dquickrender_private.uses = +QT.3dquickrender_private.module_config = v2 internal_module +QT.3dquickrender_private.enabled_features = +QT.3dquickrender_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickscene2d.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickscene2d.pri new file mode 100644 index 000000000..53249af9f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickscene2d.pri @@ -0,0 +1,15 @@ +QT.3dquickscene2d.VERSION = 5.9.4 +QT.3dquickscene2d.name = Qt3DQuickScene2D +QT.3dquickscene2d.module = Qt53DQuickScene2D +QT.3dquickscene2d.libs = $$QT_MODULE_LIB_BASE +QT.3dquickscene2d.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DQuickScene2D +QT.3dquickscene2d.frameworks = +QT.3dquickscene2d.bins = $$QT_MODULE_BIN_BASE +QT.3dquickscene2d.depends = core gui qml 3dcore 3drender 3dquick +QT.3dquickscene2d.uses = +QT.3dquickscene2d.module_config = v2 +QT.3dquickscene2d.DEFINES = QT_3DQUICKSCENE2D_LIB +QT.3dquickscene2d.enabled_features = +QT.3dquickscene2d.disabled_features = +QT_CONFIG += +QT_MODULES += 3dquickscene2d diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickscene2d_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickscene2d_private.pri new file mode 100644 index 000000000..366c2e358 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3dquickscene2d_private.pri @@ -0,0 +1,11 @@ +QT.3dquickscene2d_private.VERSION = 5.9.4 +QT.3dquickscene2d_private.name = Qt3DQuickScene2D +QT.3dquickscene2d_private.module = +QT.3dquickscene2d_private.libs = $$QT_MODULE_LIB_BASE +QT.3dquickscene2d_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DQuickScene2D/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DQuickScene2D/5.9.4/Qt3DQuickScene2D +QT.3dquickscene2d_private.frameworks = +QT.3dquickscene2d_private.depends = core_private qml_private 3dquick_private 3dcore_private 3drender_private 3dquickscene2d +QT.3dquickscene2d_private.uses = +QT.3dquickscene2d_private.module_config = v2 internal_module +QT.3dquickscene2d_private.enabled_features = +QT.3dquickscene2d_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3drender.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3drender.pri new file mode 100644 index 000000000..8bb937381 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3drender.pri @@ -0,0 +1,17 @@ +QT.3drender.VERSION = 5.9.4 +QT.3drender.name = Qt3DRender +QT.3drender.module = Qt53DRender +QT.3drender.libs = $$QT_MODULE_LIB_BASE +QT.3drender.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/Qt3DRender +QT.3drender.frameworks = +QT.3drender.bins = $$QT_MODULE_BIN_BASE +QT.3drender.plugin_types = sceneparsers geometryloaders renderplugins +QT.3drender.depends = core gui 3dcore +QT.3drender.run_depends = openglextensions concurrent +QT.3drender.uses = +QT.3drender.module_config = v2 +QT.3drender.DEFINES = QT_3DRENDER_LIB +QT.3drender.enabled_features = +QT.3drender.disabled_features = +QT_CONFIG += +QT_MODULES += 3drender diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3drender_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3drender_private.pri new file mode 100644 index 000000000..9682be9ea --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_3drender_private.pri @@ -0,0 +1,11 @@ +QT.3drender_private.VERSION = 5.9.4 +QT.3drender_private.name = Qt3DRender +QT.3drender_private.module = +QT.3drender_private.libs = $$QT_MODULE_LIB_BASE +QT.3drender_private.includes = $$QT_MODULE_INCLUDE_BASE/Qt3DRender/5.9.4 $$QT_MODULE_INCLUDE_BASE/Qt3DRender/5.9.4/Qt3DRender +QT.3drender_private.frameworks = +QT.3drender_private.depends = core_private gui_private 3dcore_private 3drender concurrent +QT.3drender_private.uses = +QT.3drender_private.module_config = v2 internal_module +QT.3drender_private.enabled_features = +QT.3drender_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_accessibility_support_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_accessibility_support_private.pri new file mode 100644 index 000000000..58670a387 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_accessibility_support_private.pri @@ -0,0 +1,15 @@ +QT.accessibility_support_private.VERSION = 5.9.4 +QT.accessibility_support_private.name = QtAccessibilitySupport +QT.accessibility_support_private.module = Qt5AccessibilitySupport +QT.accessibility_support_private.libs = $$QT_MODULE_LIB_BASE +QT.accessibility_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtAccessibilitySupport $$QT_MODULE_INCLUDE_BASE/QtAccessibilitySupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtAccessibilitySupport/5.9.4/QtAccessibilitySupport +QT.accessibility_support_private.frameworks = +QT.accessibility_support_private.bins = $$QT_MODULE_BIN_BASE +QT.accessibility_support_private.depends = core_private gui_private +QT.accessibility_support_private.uses = +QT.accessibility_support_private.module_config = v2 staticlib internal_module +QT.accessibility_support_private.DEFINES = QT_ACCESSIBILITY_SUPPORT_LIB +QT.accessibility_support_private.enabled_features = +QT.accessibility_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += accessibility_support diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axbase.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axbase.pri new file mode 100644 index 000000000..758199251 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axbase.pri @@ -0,0 +1,15 @@ +QT.axbase.VERSION = 5.9.4 +QT.axbase.name = QtAxBase +QT.axbase.module = Qt5AxBase +QT.axbase.libs = $$QT_MODULE_LIB_BASE +QT.axbase.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/ActiveQt +QT.axbase.frameworks = +QT.axbase.bins = $$QT_MODULE_BIN_BASE +QT.axbase.depends = core gui widgets +QT.axbase.uses = +QT.axbase.module_config = v2 staticlib +QT.axbase.DEFINES = QT_AXBASE_LIB +QT.axbase.enabled_features = +QT.axbase.disabled_features = +QT_CONFIG += +QT_MODULES += axbase diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axbase_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axbase_private.pri new file mode 100644 index 000000000..131c25eae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axbase_private.pri @@ -0,0 +1,11 @@ +QT.axbase_private.VERSION = 5.9.4 +QT.axbase_private.name = QtAxBase +QT.axbase_private.module = +QT.axbase_private.libs = $$QT_MODULE_LIB_BASE +QT.axbase_private.includes = $$QT_MODULE_INCLUDE_BASE/ActiveQt/5.9.4 $$QT_MODULE_INCLUDE_BASE/ActiveQt/5.9.4/ActiveQt +QT.axbase_private.frameworks = +QT.axbase_private.depends = gui_private axbase +QT.axbase_private.uses = +QT.axbase_private.module_config = v2 staticlib internal_module +QT.axbase_private.enabled_features = +QT.axbase_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axcontainer.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axcontainer.pri new file mode 100644 index 000000000..32fa4369e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axcontainer.pri @@ -0,0 +1,17 @@ +QT.axcontainer.VERSION = 5.9.4 +QT.axcontainer.name = QtAxContainer +QT.axcontainer.module = Qt5AxContainer +QT.axcontainer.libs = $$QT_MODULE_LIB_BASE +QT.axcontainer.master_header = ActiveQt +QT.axcontainer.includes = +QT.axcontainer.frameworks = +QT.axcontainer.bins = $$QT_MODULE_BIN_BASE +QT.axcontainer.depends = core gui widgets axbase +QT.axcontainer.uses = +QT.axcontainer.module_config = v2 staticlib +QT.axcontainer.CONFIG = dumpcpp +QT.axcontainer.DEFINES = QT_AXCONTAINER_LIB +QT.axcontainer.enabled_features = +QT.axcontainer.disabled_features = +QT_CONFIG += +QT_MODULES += axcontainer diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axcontainer_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axcontainer_private.pri new file mode 100644 index 000000000..44e9a169a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axcontainer_private.pri @@ -0,0 +1,11 @@ +QT.axcontainer_private.VERSION = 5.9.4 +QT.axcontainer_private.name = QtAxContainer +QT.axcontainer_private.module = +QT.axcontainer_private.libs = $$QT_MODULE_LIB_BASE +QT.axcontainer_private.includes = +QT.axcontainer_private.frameworks = +QT.axcontainer_private.depends = core_private gui_private widgets_private axcontainer +QT.axcontainer_private.uses = +QT.axcontainer_private.module_config = v2 staticlib internal_module +QT.axcontainer_private.enabled_features = +QT.axcontainer_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axserver.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axserver.pri new file mode 100644 index 000000000..4bcfe6b1c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axserver.pri @@ -0,0 +1,17 @@ +QT.axserver.VERSION = 5.9.4 +QT.axserver.name = QtAxServer +QT.axserver.module = Qt5AxServer +QT.axserver.libs = $$QT_MODULE_LIB_BASE +QT.axserver.master_header = ActiveQt +QT.axserver.includes = +QT.axserver.frameworks = +QT.axserver.bins = $$QT_MODULE_BIN_BASE +QT.axserver.depends = core gui widgets axbase +QT.axserver.uses = +QT.axserver.module_config = v2 staticlib +QT.axserver.CONFIG = idcidl force_import_plugins +QT.axserver.DEFINES = QT_AXSERVER_LIB QAXSERVER +QT.axserver.enabled_features = +QT.axserver.disabled_features = +QT_CONFIG += +QT_MODULES += axserver diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axserver_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axserver_private.pri new file mode 100644 index 000000000..81ff714ff --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_axserver_private.pri @@ -0,0 +1,11 @@ +QT.axserver_private.VERSION = 5.9.4 +QT.axserver_private.name = QtAxServer +QT.axserver_private.module = +QT.axserver_private.libs = $$QT_MODULE_LIB_BASE +QT.axserver_private.includes = +QT.axserver_private.frameworks = +QT.axserver_private.depends = core_private gui_private axserver +QT.axserver_private.uses = +QT.axserver_private.module_config = v2 staticlib internal_module +QT.axserver_private.enabled_features = +QT.axserver_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_bluetooth.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_bluetooth.pri new file mode 100644 index 000000000..2177b7e80 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_bluetooth.pri @@ -0,0 +1,15 @@ +QT.bluetooth.VERSION = 5.9.4 +QT.bluetooth.name = QtBluetooth +QT.bluetooth.module = Qt5Bluetooth +QT.bluetooth.libs = $$QT_MODULE_LIB_BASE +QT.bluetooth.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtBluetooth +QT.bluetooth.frameworks = +QT.bluetooth.bins = $$QT_MODULE_BIN_BASE +QT.bluetooth.depends = core +QT.bluetooth.uses = +QT.bluetooth.module_config = v2 +QT.bluetooth.DEFINES = QT_BLUETOOTH_LIB +QT.bluetooth.enabled_features = +QT.bluetooth.disabled_features = bluez +QT_CONFIG += +QT_MODULES += bluetooth diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_bluetooth_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_bluetooth_private.pri new file mode 100644 index 000000000..d9b5841dc --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_bluetooth_private.pri @@ -0,0 +1,11 @@ +QT.bluetooth_private.VERSION = 5.9.4 +QT.bluetooth_private.name = QtBluetooth +QT.bluetooth_private.module = +QT.bluetooth_private.libs = $$QT_MODULE_LIB_BASE +QT.bluetooth_private.includes = $$QT_MODULE_INCLUDE_BASE/QtBluetooth/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtBluetooth/5.9.4/QtBluetooth +QT.bluetooth_private.frameworks = +QT.bluetooth_private.depends = core_private bluetooth +QT.bluetooth_private.uses = +QT.bluetooth_private.module_config = v2 internal_module +QT.bluetooth_private.enabled_features = +QT.bluetooth_private.disabled_features = bluez_le linux_crypto_api diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_bootstrap_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_bootstrap_private.pri new file mode 100644 index 000000000..89b775fc5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_bootstrap_private.pri @@ -0,0 +1,14 @@ +QT.bootstrap_private.VERSION = 5.9.4 +QT.bootstrap_private.name = QtBootstrap +QT.bootstrap_private.module = Qt5Bootstrap +QT.bootstrap_private.libs = $$QT_MODULE_HOST_LIB_BASE +QT.bootstrap_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtCore $$QT_MODULE_INCLUDE_BASE/QtCore/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtCore/5.9.4/QtCore $$QT_MODULE_INCLUDE_BASE/QtXml $$QT_MODULE_INCLUDE_BASE/QtXml/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtXml/5.9.4/QtXml +QT.bootstrap_private.frameworks = +QT.bootstrap_private.depends = +QT.bootstrap_private.uses = +QT.bootstrap_private.module_config = v2 staticlib internal_module +QT.bootstrap_private.DEFINES = QT_BOOTSTRAP_LIB QT_VERSION_STR=\"\\\"5.9.4\\\"\" QT_VERSION_MAJOR=5 QT_VERSION_MINOR=9 QT_VERSION_PATCH=4 QT_BOOTSTRAPPED QT_NO_CAST_TO_ASCII +QT.bootstrap_private.enabled_features = +QT.bootstrap_private.disabled_features = +QT_CONFIG += +QT_MODULES += bootstrap diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_concurrent.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_concurrent.pri new file mode 100644 index 000000000..f6d4ef120 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_concurrent.pri @@ -0,0 +1,15 @@ +QT.concurrent.VERSION = 5.9.4 +QT.concurrent.name = QtConcurrent +QT.concurrent.module = Qt5Concurrent +QT.concurrent.libs = $$QT_MODULE_LIB_BASE +QT.concurrent.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtConcurrent +QT.concurrent.frameworks = +QT.concurrent.bins = $$QT_MODULE_BIN_BASE +QT.concurrent.depends = core +QT.concurrent.uses = +QT.concurrent.module_config = v2 +QT.concurrent.DEFINES = QT_CONCURRENT_LIB +QT.concurrent.enabled_features = +QT.concurrent.disabled_features = +QT_CONFIG += +QT_MODULES += concurrent diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_concurrent_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_concurrent_private.pri new file mode 100644 index 000000000..0c47e4c41 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_concurrent_private.pri @@ -0,0 +1,11 @@ +QT.concurrent_private.VERSION = 5.9.4 +QT.concurrent_private.name = QtConcurrent +QT.concurrent_private.module = +QT.concurrent_private.libs = $$QT_MODULE_LIB_BASE +QT.concurrent_private.includes = $$QT_MODULE_INCLUDE_BASE/QtConcurrent/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtConcurrent/5.9.4/QtConcurrent +QT.concurrent_private.frameworks = +QT.concurrent_private.depends = core_private concurrent +QT.concurrent_private.uses = +QT.concurrent_private.module_config = v2 internal_module +QT.concurrent_private.enabled_features = +QT.concurrent_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_core.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_core.pri new file mode 100644 index 000000000..0ab063b58 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_core.pri @@ -0,0 +1,16 @@ +QT.core.VERSION = 5.9.4 +QT.core.name = QtCore +QT.core.module = Qt5Core +QT.core.libs = $$QT_MODULE_LIB_BASE +QT.core.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtCore +QT.core.frameworks = +QT.core.bins = $$QT_MODULE_BIN_BASE +QT.core.depends = +QT.core.uses = libatomic +QT.core.module_config = v2 +QT.core.CONFIG = moc resources +QT.core.DEFINES = QT_CORE_LIB +QT.core.enabled_features = properties animation textcodec big_codecs codecs commandlineparser textdate datestring filesystemiterator filesystemwatcher gestures itemmodel proxymodel identityproxymodel library mimetype processenvironment process statemachine qeventtransition regularexpression settings sharedmemory sortfilterproxymodel std-atomic64 stringlistmodel systemsemaphore temporaryfile timezone topleveldomain translation xmlstream xmlstreamreader xmlstreamwriter +QT.core.disabled_features = +QT_CONFIG += properties animation textcodec big_codecs codecs textdate datestring doubleconversion filesystemiterator filesystemwatcher gestures itemmodel proxymodel identityproxymodel library mimetype process statemachine regularexpression settings sharedmemory sortfilterproxymodel stringlistmodel systemsemaphore temporaryfile translation xmlstream xmlstreamreader xmlstreamwriter +QT_MODULES += core diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_core_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_core_private.pri new file mode 100644 index 000000000..b53539f5e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_core_private.pri @@ -0,0 +1,12 @@ +QT.core_private.VERSION = 5.9.4 +QT.core_private.name = QtCore +QT.core_private.module = +QT.core_private.libs = $$QT_MODULE_LIB_BASE +QT.core_private.includes = $$QT_MODULE_INCLUDE_BASE/QtCore/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtCore/5.9.4/QtCore +QT.core_private.frameworks = +QT.core_private.depends = core +QT.core_private.uses = +QT.core_private.module_config = v2 internal_module +QT.core_private.enabled_features = datetimeparser doubleconversion sha3-fast +QT.core_private.disabled_features = clock-gettime dlopen glib gnu-libiconv icu posix-libiconv iconv inotify journald slog2 syslog system-doubleconversion system-pcre2 +QMAKE_LIBS_LIBATOMIC = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_dbus.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_dbus.pri new file mode 100644 index 000000000..6280040f3 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_dbus.pri @@ -0,0 +1,16 @@ +QT.dbus.VERSION = 5.9.4 +QT.dbus.name = QtDBus +QT.dbus.module = Qt5DBus +QT.dbus.libs = $$QT_MODULE_LIB_BASE +QT.dbus.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtDBus +QT.dbus.frameworks = +QT.dbus.bins = $$QT_MODULE_BIN_BASE +QT.dbus.depends = core +QT.dbus.uses = +QT.dbus.module_config = v2 +QT.dbus.CONFIG = dbusadaptors dbusinterfaces +QT.dbus.DEFINES = QT_DBUS_LIB +QT.dbus.enabled_features = +QT.dbus.disabled_features = +QT_CONFIG += +QT_MODULES += dbus diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_dbus_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_dbus_private.pri new file mode 100644 index 000000000..47da34761 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_dbus_private.pri @@ -0,0 +1,11 @@ +QT.dbus_private.VERSION = 5.9.4 +QT.dbus_private.name = QtDBus +QT.dbus_private.module = +QT.dbus_private.libs = $$QT_MODULE_LIB_BASE +QT.dbus_private.includes = $$QT_MODULE_INCLUDE_BASE/QtDBus/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtDBus/5.9.4/QtDBus +QT.dbus_private.frameworks = +QT.dbus_private.depends = core_private dbus +QT.dbus_private.uses = +QT.dbus_private.module_config = v2 internal_module +QT.dbus_private.enabled_features = +QT.dbus_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_designer.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_designer.pri new file mode 100644 index 000000000..de717de42 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_designer.pri @@ -0,0 +1,17 @@ +QT.designer.VERSION = 5.9.4 +QT.designer.name = QtDesigner +QT.designer.module = Qt5Designer +QT.designer.libs = $$QT_MODULE_LIB_BASE +QT.designer.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtDesigner +QT.designer.frameworks = +QT.designer.bins = $$QT_MODULE_BIN_BASE +QT.designer.plugin_types = designer +QT.designer.depends = core gui widgets xml uiplugin +QT.designer.run_depends = uiplugin +QT.designer.uses = +QT.designer.module_config = v2 +QT.designer.DEFINES = QT_DESIGNER_LIB +QT.designer.enabled_features = +QT.designer.disabled_features = +QT_CONFIG += +QT_MODULES += designer diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_designer_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_designer_private.pri new file mode 100644 index 000000000..c963c3641 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_designer_private.pri @@ -0,0 +1,11 @@ +QT.designer_private.VERSION = 5.9.4 +QT.designer_private.name = QtDesigner +QT.designer_private.module = +QT.designer_private.libs = $$QT_MODULE_LIB_BASE +QT.designer_private.includes = $$QT_MODULE_INCLUDE_BASE/QtDesigner/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtDesigner/5.9.4/QtDesigner +QT.designer_private.frameworks = +QT.designer_private.depends = core_private gui_private widgets_private designer +QT.designer_private.uses = +QT.designer_private.module_config = v2 internal_module +QT.designer_private.enabled_features = +QT.designer_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_designercomponents_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_designercomponents_private.pri new file mode 100644 index 000000000..93a5c3066 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_designercomponents_private.pri @@ -0,0 +1,16 @@ +QT.designercomponents_private.VERSION = 5.9.4 +QT.designercomponents_private.name = QtDesignerComponents +QT.designercomponents_private.module = Qt5DesignerComponents +QT.designercomponents_private.libs = $$QT_MODULE_LIB_BASE +QT.designercomponents_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtDesignerComponents $$QT_MODULE_INCLUDE_BASE/QtDesignerComponents/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtDesignerComponents/5.9.4/QtDesignerComponents +QT.designercomponents_private.frameworks = +QT.designercomponents_private.bins = $$QT_MODULE_BIN_BASE +QT.designercomponents_private.depends = core gui_private widgets_private designer_private xml +QT.designercomponents_private.run_depends = xml +QT.designercomponents_private.uses = +QT.designercomponents_private.module_config = v2 internal_module +QT.designercomponents_private.DEFINES = QT_DESIGNERCOMPONENTS_LIB +QT.designercomponents_private.enabled_features = +QT.designercomponents_private.disabled_features = +QT_CONFIG += +QT_MODULES += designercomponents diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_devicediscovery_support_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_devicediscovery_support_private.pri new file mode 100644 index 000000000..5c55a1a31 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_devicediscovery_support_private.pri @@ -0,0 +1,15 @@ +QT.devicediscovery_support_private.VERSION = 5.9.4 +QT.devicediscovery_support_private.name = QtDeviceDiscoverySupport +QT.devicediscovery_support_private.module = Qt5DeviceDiscoverySupport +QT.devicediscovery_support_private.libs = $$QT_MODULE_LIB_BASE +QT.devicediscovery_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtDeviceDiscoverySupport $$QT_MODULE_INCLUDE_BASE/QtDeviceDiscoverySupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtDeviceDiscoverySupport/5.9.4/QtDeviceDiscoverySupport +QT.devicediscovery_support_private.frameworks = +QT.devicediscovery_support_private.bins = $$QT_MODULE_BIN_BASE +QT.devicediscovery_support_private.depends = core_private +QT.devicediscovery_support_private.uses = +QT.devicediscovery_support_private.module_config = v2 staticlib internal_module +QT.devicediscovery_support_private.DEFINES = QT_DEVICEDISCOVERY_SUPPORT_LIB +QT.devicediscovery_support_private.enabled_features = +QT.devicediscovery_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += devicediscovery_support diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_egl_support_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_egl_support_private.pri new file mode 100644 index 000000000..d1fe845c8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_egl_support_private.pri @@ -0,0 +1,15 @@ +QT.egl_support_private.VERSION = 5.9.4 +QT.egl_support_private.name = QtEglSupport +QT.egl_support_private.module = Qt5EglSupport +QT.egl_support_private.libs = $$QT_MODULE_LIB_BASE +QT.egl_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtEglSupport $$QT_MODULE_INCLUDE_BASE/QtEglSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtEglSupport/5.9.4/QtEglSupport +QT.egl_support_private.frameworks = +QT.egl_support_private.bins = $$QT_MODULE_BIN_BASE +QT.egl_support_private.depends = core_private gui_private +QT.egl_support_private.uses = +QT.egl_support_private.module_config = v2 staticlib internal_module +QT.egl_support_private.DEFINES = QT_EGL_SUPPORT_LIB +QT.egl_support_private.enabled_features = +QT.egl_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += egl_support diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri new file mode 100644 index 000000000..2315ba7eb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri @@ -0,0 +1,15 @@ +QT.eventdispatcher_support_private.VERSION = 5.9.4 +QT.eventdispatcher_support_private.name = QtEventDispatcherSupport +QT.eventdispatcher_support_private.module = Qt5EventDispatcherSupport +QT.eventdispatcher_support_private.libs = $$QT_MODULE_LIB_BASE +QT.eventdispatcher_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtEventDispatcherSupport $$QT_MODULE_INCLUDE_BASE/QtEventDispatcherSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtEventDispatcherSupport/5.9.4/QtEventDispatcherSupport +QT.eventdispatcher_support_private.frameworks = +QT.eventdispatcher_support_private.bins = $$QT_MODULE_BIN_BASE +QT.eventdispatcher_support_private.depends = core_private gui_private +QT.eventdispatcher_support_private.uses = +QT.eventdispatcher_support_private.module_config = v2 staticlib internal_module +QT.eventdispatcher_support_private.DEFINES = QT_EVENTDISPATCHER_SUPPORT_LIB +QT.eventdispatcher_support_private.enabled_features = +QT.eventdispatcher_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += eventdispatcher_support diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_fb_support_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_fb_support_private.pri new file mode 100644 index 000000000..a17ad6032 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_fb_support_private.pri @@ -0,0 +1,15 @@ +QT.fb_support_private.VERSION = 5.9.4 +QT.fb_support_private.name = QtFbSupport +QT.fb_support_private.module = Qt5FbSupport +QT.fb_support_private.libs = $$QT_MODULE_LIB_BASE +QT.fb_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtFbSupport $$QT_MODULE_INCLUDE_BASE/QtFbSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtFbSupport/5.9.4/QtFbSupport +QT.fb_support_private.frameworks = +QT.fb_support_private.bins = $$QT_MODULE_BIN_BASE +QT.fb_support_private.depends = core_private gui_private +QT.fb_support_private.uses = +QT.fb_support_private.module_config = v2 staticlib internal_module +QT.fb_support_private.DEFINES = QT_FB_SUPPORT_LIB +QT.fb_support_private.enabled_features = +QT.fb_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += fb_support diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_fontdatabase_support_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_fontdatabase_support_private.pri new file mode 100644 index 000000000..de835964e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_fontdatabase_support_private.pri @@ -0,0 +1,15 @@ +QT.fontdatabase_support_private.VERSION = 5.9.4 +QT.fontdatabase_support_private.name = QtFontDatabaseSupport +QT.fontdatabase_support_private.module = Qt5FontDatabaseSupport +QT.fontdatabase_support_private.libs = $$QT_MODULE_LIB_BASE +QT.fontdatabase_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtFontDatabaseSupport $$QT_MODULE_INCLUDE_BASE/QtFontDatabaseSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtFontDatabaseSupport/5.9.4/QtFontDatabaseSupport +QT.fontdatabase_support_private.frameworks = +QT.fontdatabase_support_private.bins = $$QT_MODULE_BIN_BASE +QT.fontdatabase_support_private.depends = core_private gui_private +QT.fontdatabase_support_private.uses = +QT.fontdatabase_support_private.module_config = v2 staticlib internal_module +QT.fontdatabase_support_private.DEFINES = QT_FONTDATABASE_SUPPORT_LIB +QT.fontdatabase_support_private.enabled_features = +QT.fontdatabase_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += fontdatabase_support diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gamepad.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gamepad.pri new file mode 100644 index 000000000..ab9a58a32 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gamepad.pri @@ -0,0 +1,16 @@ +QT.gamepad.VERSION = 5.9.4 +QT.gamepad.name = QtGamepad +QT.gamepad.module = Qt5Gamepad +QT.gamepad.libs = $$QT_MODULE_LIB_BASE +QT.gamepad.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtGamepad +QT.gamepad.frameworks = +QT.gamepad.bins = $$QT_MODULE_BIN_BASE +QT.gamepad.plugin_types = gamepads +QT.gamepad.depends = core gui +QT.gamepad.uses = +QT.gamepad.module_config = v2 +QT.gamepad.DEFINES = QT_GAMEPAD_LIB +QT.gamepad.enabled_features = +QT.gamepad.disabled_features = +QT_CONFIG += +QT_MODULES += gamepad diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gamepad_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gamepad_private.pri new file mode 100644 index 000000000..d0fddf302 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gamepad_private.pri @@ -0,0 +1,11 @@ +QT.gamepad_private.VERSION = 5.9.4 +QT.gamepad_private.name = QtGamepad +QT.gamepad_private.module = +QT.gamepad_private.libs = $$QT_MODULE_LIB_BASE +QT.gamepad_private.includes = $$QT_MODULE_INCLUDE_BASE/QtGamepad/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtGamepad/5.9.4/QtGamepad +QT.gamepad_private.frameworks = +QT.gamepad_private.depends = core_private gamepad +QT.gamepad_private.uses = +QT.gamepad_private.module_config = v2 internal_module +QT.gamepad_private.enabled_features = +QT.gamepad_private.disabled_features = sdl2 diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gui.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gui.pri new file mode 100644 index 000000000..bf749b3d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gui.pri @@ -0,0 +1,18 @@ +QT.gui.VERSION = 5.9.4 +QT.gui.name = QtGui +QT.gui.module = Qt5Gui +QT.gui.libs = $$QT_MODULE_LIB_BASE +QT.gui.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtGui $$QT_MODULE_INCLUDE_BASE/QtANGLE +QT.gui.frameworks = +QT.gui.bins = $$QT_MODULE_BIN_BASE +QT.gui.plugin_types = platforms platforms/darwin xcbglintegrations platformthemes platforminputcontexts generic iconengines imageformats egldeviceintegrations +QT.gui.depends = core +QT.gui.run_depends = core +QT.gui.uses = +QT.gui.module_config = v2 +QT.gui.CONFIG = opengl +QT.gui.DEFINES = QT_GUI_LIB +QT.gui.enabled_features = accessibility action dynamicgl angle clipboard colornames cssparser cursor desktopservices imageformat_xpm draganddrop opengl imageformatplugin highdpiscaling im image_heuristic_mask image_text imageformat_bmp imageformat_jpeg imageformat_png imageformat_ppm imageformat_xbm movie pdf picture sessionmanager shortcut standarditemmodel systemtrayicon tabletevent texthtmlparser textodfwriter validator whatsthis wheelevent +QT.gui.disabled_features = opengles2 combined-angle-lib opengles3 opengles31 openvg +QT_CONFIG += accessibility action clipboard colornames cssparser cursor desktopservices imageformat_xpm draganddrop opengl egl freetype imageformatplugin harfbuzz highdpiscaling ico im image_heuristic_mask image_text imageformat_bmp imageformat_jpeg imageformat_png imageformat_ppm imageformat_xbm movie pdf picture sessionmanager shortcut standarditemmodel systemtrayicon tabletevent texthtmlparser textodfwriter validator whatsthis wheelevent +QT_MODULES += gui diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gui_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gui_private.pri new file mode 100644 index 000000000..e54c62c08 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_gui_private.pri @@ -0,0 +1,11 @@ +QT.gui_private.VERSION = 5.9.4 +QT.gui_private.name = QtGui +QT.gui_private.module = +QT.gui_private.libs = $$QT_MODULE_LIB_BASE +QT.gui_private.includes = $$QT_MODULE_INCLUDE_BASE/QtGui/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtGui/5.9.4/QtGui +QT.gui_private.frameworks = +QT.gui_private.depends = core_private gui +QT.gui_private.uses = +QT.gui_private.module_config = v2 internal_module +QT.gui_private.enabled_features = angle_d3d11_qdtd direct2d directwrite directwrite2 egl freetype gif harfbuzz ico jpeg multiprocess png +QT.gui_private.disabled_features = xcb accessibility-atspi-bridge directfb egl_x11 eglfs eglfs_brcm eglfs_egldevice eglfs_gbm eglfs_mali eglfs_openwfd eglfs_rcar eglfs_viv eglfs_viv_wl evdev fontconfig integrityfb integrityhid kms libinput libinput-axis-api linuxfb mirclient mtdev system-freetype system-harfbuzz system-jpeg system-png system-xcb tslib vnc xkbcommon-evdev xlib diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_help.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_help.pri new file mode 100644 index 000000000..822f72392 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_help.pri @@ -0,0 +1,16 @@ +QT.help.VERSION = 5.9.4 +QT.help.name = QtHelp +QT.help.module = Qt5Help +QT.help.libs = $$QT_MODULE_LIB_BASE +QT.help.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtHelp +QT.help.frameworks = +QT.help.bins = $$QT_MODULE_BIN_BASE +QT.help.depends = core gui widgets sql +QT.help.run_depends = network +QT.help.uses = +QT.help.module_config = v2 +QT.help.DEFINES = QT_HELP_LIB +QT.help.enabled_features = +QT.help.disabled_features = +QT_CONFIG += +QT_MODULES += help diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_help_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_help_private.pri new file mode 100644 index 000000000..fd460923b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_help_private.pri @@ -0,0 +1,11 @@ +QT.help_private.VERSION = 5.9.4 +QT.help_private.name = QtHelp +QT.help_private.module = +QT.help_private.libs = $$QT_MODULE_LIB_BASE +QT.help_private.includes = $$QT_MODULE_INCLUDE_BASE/QtHelp/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtHelp/5.9.4/QtHelp +QT.help_private.frameworks = +QT.help_private.depends = core_private help +QT.help_private.uses = +QT.help_private.module_config = v2 internal_module +QT.help_private.enabled_features = +QT.help_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_location.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_location.pri new file mode 100644 index 000000000..34dc01cfe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_location.pri @@ -0,0 +1,16 @@ +QT.location.VERSION = 5.9.4 +QT.location.name = QtLocation +QT.location.module = Qt5Location +QT.location.libs = $$QT_MODULE_LIB_BASE +QT.location.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtLocation +QT.location.frameworks = +QT.location.bins = $$QT_MODULE_BIN_BASE +QT.location.plugin_types = geoservices +QT.location.depends = core positioning gui quick network qml +QT.location.uses = +QT.location.module_config = v2 +QT.location.DEFINES = QT_LOCATION_LIB +QT.location.enabled_features = +QT.location.disabled_features = +QT_CONFIG += +QT_MODULES += location diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_location_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_location_private.pri new file mode 100644 index 000000000..57d301232 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_location_private.pri @@ -0,0 +1,11 @@ +QT.location_private.VERSION = 5.9.4 +QT.location_private.name = QtLocation +QT.location_private.module = +QT.location_private.libs = $$QT_MODULE_LIB_BASE +QT.location_private.includes = $$QT_MODULE_INCLUDE_BASE/QtLocation/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtLocation/5.9.4/QtLocation +QT.location_private.frameworks = +QT.location_private.depends = core_private positioning_private quick_private positioning_private qml_private core_private gui_private location +QT.location_private.uses = +QT.location_private.module_config = v2 internal_module +QT.location_private.enabled_features = geoservices_esri geoservices_here geoservices_itemsoverlay geoservices_mapbox geoservices_osm +QT.location_private.disabled_features = geoservices_mapboxgl diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimedia.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimedia.pri new file mode 100644 index 000000000..dab8fcea9 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimedia.pri @@ -0,0 +1,16 @@ +QT.multimedia.VERSION = 5.9.4 +QT.multimedia.name = QtMultimedia +QT.multimedia.module = Qt5Multimedia +QT.multimedia.libs = $$QT_MODULE_LIB_BASE +QT.multimedia.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtMultimedia +QT.multimedia.frameworks = +QT.multimedia.bins = $$QT_MODULE_BIN_BASE +QT.multimedia.plugin_types = mediaservice audio video/bufferpool video/gstvideorenderer video/videonode playlistformats resourcepolicy +QT.multimedia.depends = core network gui +QT.multimedia.uses = +QT.multimedia.module_config = v2 +QT.multimedia.DEFINES = QT_MULTIMEDIA_LIB +QT.multimedia.enabled_features = +QT.multimedia.disabled_features = +QT_CONFIG += directshow evr wshellitem +QT_MODULES += multimedia diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimedia_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimedia_private.pri new file mode 100644 index 000000000..9012eb0b0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimedia_private.pri @@ -0,0 +1,13 @@ +QT.multimedia_private.VERSION = 5.9.4 +QT.multimedia_private.name = QtMultimedia +QT.multimedia_private.module = +QT.multimedia_private.libs = $$QT_MODULE_LIB_BASE +QT.multimedia_private.includes = $$QT_MODULE_INCLUDE_BASE/QtMultimedia/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtMultimedia/5.9.4/QtMultimedia +QT.multimedia_private.frameworks = +QT.multimedia_private.depends = core_private gui_private multimedia +QT.multimedia_private.uses = +QT.multimedia_private.module_config = v2 internal_module +QT.multimedia_private.enabled_features = directshow directshow-player evr wasapi wmf wmsdk wshellitem +QT.multimedia_private.disabled_features = alsa wmf-player gpu_vivante gstreamer_1_0 gstreamer_0_10 gstreamer gstreamer_app gstreamer_encodingprofiles gstreamer_photography linux_v4l openal pulseaudio resourcepolicy +QMAKE_LIBS_DIRECTSHOW = -lstrmiids -ldmoguids -luuid -lmsdmo -lole32 -loleaut32 +QMAKE_LIBS_WMF = -lstrmiids -ldmoguids -luuid -lmsdmo -lole32 -loleaut32 -lMf -lMfuuid -lMfplat -lPropsys diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimediawidgets.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimediawidgets.pri new file mode 100644 index 000000000..617c605c1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimediawidgets.pri @@ -0,0 +1,16 @@ +QT.multimediawidgets.VERSION = 5.9.4 +QT.multimediawidgets.name = QtMultimediaWidgets +QT.multimediawidgets.module = Qt5MultimediaWidgets +QT.multimediawidgets.libs = $$QT_MODULE_LIB_BASE +QT.multimediawidgets.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtMultimediaWidgets +QT.multimediawidgets.frameworks = +QT.multimediawidgets.bins = $$QT_MODULE_BIN_BASE +QT.multimediawidgets.depends = core gui multimedia widgets +QT.multimediawidgets.run_depends = opengl +QT.multimediawidgets.uses = +QT.multimediawidgets.module_config = v2 +QT.multimediawidgets.DEFINES = QT_MULTIMEDIAWIDGETS_LIB +QT.multimediawidgets.enabled_features = +QT.multimediawidgets.disabled_features = +QT_CONFIG += +QT_MODULES += multimediawidgets diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimediawidgets_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimediawidgets_private.pri new file mode 100644 index 000000000..f3abebf21 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_multimediawidgets_private.pri @@ -0,0 +1,11 @@ +QT.multimediawidgets_private.VERSION = 5.9.4 +QT.multimediawidgets_private.name = QtMultimediaWidgets +QT.multimediawidgets_private.module = +QT.multimediawidgets_private.libs = $$QT_MODULE_LIB_BASE +QT.multimediawidgets_private.includes = $$QT_MODULE_INCLUDE_BASE/QtMultimediaWidgets/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtMultimediaWidgets/5.9.4/QtMultimediaWidgets +QT.multimediawidgets_private.frameworks = +QT.multimediawidgets_private.depends = multimedia_private widgets_private multimediawidgets +QT.multimediawidgets_private.uses = +QT.multimediawidgets_private.module_config = v2 internal_module +QT.multimediawidgets_private.enabled_features = +QT.multimediawidgets_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_network.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_network.pri new file mode 100644 index 000000000..f2d10ff19 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_network.pri @@ -0,0 +1,17 @@ +QT.network.VERSION = 5.9.4 +QT.network.name = QtNetwork +QT.network.module = Qt5Network +QT.network.libs = $$QT_MODULE_LIB_BASE +QT.network.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtNetwork +QT.network.frameworks = +QT.network.bins = $$QT_MODULE_BIN_BASE +QT.network.plugin_types = bearer +QT.network.depends = core +QT.network.run_depends = core +QT.network.uses = +QT.network.module_config = v2 +QT.network.DEFINES = QT_NETWORK_LIB +QT.network.enabled_features = networkinterface bearermanagement ftp http localserver networkdiskcache networkproxy socks5 ssl udpsocket +QT.network.disabled_features = sctp +QT_CONFIG += networkinterface bearermanagement ftp http localserver networkdiskcache networkproxy openssl socks5 ssl udpsocket +QT_MODULES += network diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_network_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_network_private.pri new file mode 100644 index 000000000..aac487485 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_network_private.pri @@ -0,0 +1,12 @@ +QT.network_private.VERSION = 5.9.4 +QT.network_private.name = QtNetwork +QT.network_private.module = +QT.network_private.libs = $$QT_MODULE_LIB_BASE +QT.network_private.includes = $$QT_MODULE_INCLUDE_BASE/QtNetwork/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtNetwork/5.9.4/QtNetwork +QT.network_private.frameworks = +QT.network_private.depends = core_private network +QT.network_private.uses = openssl/nolink +QT.network_private.module_config = v2 internal_module +QT.network_private.enabled_features = openssl system-proxies +QT.network_private.disabled_features = libproxy securetransport openssl-linked +QMAKE_LIBS_OPENSSL = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_nfc.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_nfc.pri new file mode 100644 index 000000000..f4c290d98 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_nfc.pri @@ -0,0 +1,15 @@ +QT.nfc.VERSION = 5.9.4 +QT.nfc.name = QtNfc +QT.nfc.module = Qt5Nfc +QT.nfc.libs = $$QT_MODULE_LIB_BASE +QT.nfc.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtNfc +QT.nfc.frameworks = +QT.nfc.bins = $$QT_MODULE_BIN_BASE +QT.nfc.depends = core +QT.nfc.uses = +QT.nfc.module_config = v2 +QT.nfc.DEFINES = QT_NFC_LIB +QT.nfc.enabled_features = +QT.nfc.disabled_features = +QT_CONFIG += +QT_MODULES += nfc diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_nfc_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_nfc_private.pri new file mode 100644 index 000000000..2e62d435e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_nfc_private.pri @@ -0,0 +1,11 @@ +QT.nfc_private.VERSION = 5.9.4 +QT.nfc_private.name = QtNfc +QT.nfc_private.module = +QT.nfc_private.libs = $$QT_MODULE_LIB_BASE +QT.nfc_private.includes = $$QT_MODULE_INCLUDE_BASE/QtNfc/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtNfc/5.9.4/QtNfc +QT.nfc_private.frameworks = +QT.nfc_private.depends = nfc +QT.nfc_private.uses = +QT.nfc_private.module_config = v2 internal_module +QT.nfc_private.enabled_features = +QT.nfc_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_opengl.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_opengl.pri new file mode 100644 index 000000000..e0149a16b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_opengl.pri @@ -0,0 +1,15 @@ +QT.opengl.VERSION = 5.9.4 +QT.opengl.name = QtOpenGL +QT.opengl.module = Qt5OpenGL +QT.opengl.libs = $$QT_MODULE_LIB_BASE +QT.opengl.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtOpenGL +QT.opengl.frameworks = +QT.opengl.bins = $$QT_MODULE_BIN_BASE +QT.opengl.depends = core gui widgets +QT.opengl.uses = +QT.opengl.module_config = v2 +QT.opengl.DEFINES = QT_OPENGL_LIB +QT.opengl.enabled_features = +QT.opengl.disabled_features = +QT_CONFIG += +QT_MODULES += opengl diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_opengl_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_opengl_private.pri new file mode 100644 index 000000000..9f8911eb7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_opengl_private.pri @@ -0,0 +1,11 @@ +QT.opengl_private.VERSION = 5.9.4 +QT.opengl_private.name = QtOpenGL +QT.opengl_private.module = +QT.opengl_private.libs = $$QT_MODULE_LIB_BASE +QT.opengl_private.includes = $$QT_MODULE_INCLUDE_BASE/QtOpenGL/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtOpenGL/5.9.4/QtOpenGL +QT.opengl_private.frameworks = +QT.opengl_private.depends = core_private gui_private widgets_private opengl +QT.opengl_private.uses = +QT.opengl_private.module_config = v2 internal_module +QT.opengl_private.enabled_features = +QT.opengl_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_openglextensions.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_openglextensions.pri new file mode 100644 index 000000000..7957ebbd5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_openglextensions.pri @@ -0,0 +1,15 @@ +QT.openglextensions.VERSION = 5.9.4 +QT.openglextensions.name = QtOpenGLExtensions +QT.openglextensions.module = Qt5OpenGLExtensions +QT.openglextensions.libs = $$QT_MODULE_LIB_BASE +QT.openglextensions.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtOpenGLExtensions +QT.openglextensions.frameworks = +QT.openglextensions.bins = $$QT_MODULE_BIN_BASE +QT.openglextensions.depends = core gui +QT.openglextensions.uses = +QT.openglextensions.module_config = v2 staticlib +QT.openglextensions.DEFINES = QT_OPENGLEXTENSIONS_LIB +QT.openglextensions.enabled_features = +QT.openglextensions.disabled_features = +QT_CONFIG += +QT_MODULES += openglextensions diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_openglextensions_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_openglextensions_private.pri new file mode 100644 index 000000000..fc080706e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_openglextensions_private.pri @@ -0,0 +1,11 @@ +QT.openglextensions_private.VERSION = 5.9.4 +QT.openglextensions_private.name = QtOpenGLExtensions +QT.openglextensions_private.module = +QT.openglextensions_private.libs = $$QT_MODULE_LIB_BASE +QT.openglextensions_private.includes = $$QT_MODULE_INCLUDE_BASE/QtOpenGLExtensions/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtOpenGLExtensions/5.9.4/QtOpenGLExtensions +QT.openglextensions_private.frameworks = +QT.openglextensions_private.depends = openglextensions +QT.openglextensions_private.uses = +QT.openglextensions_private.module_config = v2 staticlib internal_module +QT.openglextensions_private.enabled_features = +QT.openglextensions_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_packetprotocol_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_packetprotocol_private.pri new file mode 100644 index 000000000..c1e48458f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_packetprotocol_private.pri @@ -0,0 +1,15 @@ +QT.packetprotocol_private.VERSION = 5.9.4 +QT.packetprotocol_private.name = QtPacketProtocol +QT.packetprotocol_private.module = Qt5PacketProtocol +QT.packetprotocol_private.libs = $$QT_MODULE_LIB_BASE +QT.packetprotocol_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtPacketProtocol $$QT_MODULE_INCLUDE_BASE/QtPacketProtocol/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtPacketProtocol/5.9.4/QtPacketProtocol +QT.packetprotocol_private.frameworks = +QT.packetprotocol_private.bins = $$QT_MODULE_BIN_BASE +QT.packetprotocol_private.depends = core_private qml_private +QT.packetprotocol_private.uses = +QT.packetprotocol_private.module_config = v2 staticlib internal_module +QT.packetprotocol_private.DEFINES = QT_PACKETPROTOCOL_LIB +QT.packetprotocol_private.enabled_features = +QT.packetprotocol_private.disabled_features = +QT_CONFIG += +QT_MODULES += packetprotocol diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_platformcompositor_support_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_platformcompositor_support_private.pri new file mode 100644 index 000000000..107c8ab38 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_platformcompositor_support_private.pri @@ -0,0 +1,15 @@ +QT.platformcompositor_support_private.VERSION = 5.9.4 +QT.platformcompositor_support_private.name = QtPlatformCompositorSupport +QT.platformcompositor_support_private.module = Qt5PlatformCompositorSupport +QT.platformcompositor_support_private.libs = $$QT_MODULE_LIB_BASE +QT.platformcompositor_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtPlatformCompositorSupport $$QT_MODULE_INCLUDE_BASE/QtPlatformCompositorSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtPlatformCompositorSupport/5.9.4/QtPlatformCompositorSupport +QT.platformcompositor_support_private.frameworks = +QT.platformcompositor_support_private.bins = $$QT_MODULE_BIN_BASE +QT.platformcompositor_support_private.depends = core_private gui_private +QT.platformcompositor_support_private.uses = +QT.platformcompositor_support_private.module_config = v2 staticlib internal_module +QT.platformcompositor_support_private.DEFINES = QT_PLATFORMCOMPOSITOR_SUPPORT_LIB +QT.platformcompositor_support_private.enabled_features = +QT.platformcompositor_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += platformcompositor_support diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_positioning.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_positioning.pri new file mode 100644 index 000000000..67b0d5d0f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_positioning.pri @@ -0,0 +1,16 @@ +QT.positioning.VERSION = 5.9.4 +QT.positioning.name = QtPositioning +QT.positioning.module = Qt5Positioning +QT.positioning.libs = $$QT_MODULE_LIB_BASE +QT.positioning.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtPositioning +QT.positioning.frameworks = +QT.positioning.bins = $$QT_MODULE_BIN_BASE +QT.positioning.plugin_types = position +QT.positioning.depends = core +QT.positioning.uses = +QT.positioning.module_config = v2 +QT.positioning.DEFINES = QT_POSITIONING_LIB +QT.positioning.enabled_features = +QT.positioning.disabled_features = +QT_CONFIG += +QT_MODULES += positioning diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_positioning_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_positioning_private.pri new file mode 100644 index 000000000..b0cd5b316 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_positioning_private.pri @@ -0,0 +1,11 @@ +QT.positioning_private.VERSION = 5.9.4 +QT.positioning_private.name = QtPositioning +QT.positioning_private.module = +QT.positioning_private.libs = $$QT_MODULE_LIB_BASE +QT.positioning_private.includes = $$QT_MODULE_INCLUDE_BASE/QtPositioning/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtPositioning/5.9.4/QtPositioning +QT.positioning_private.frameworks = +QT.positioning_private.depends = core_private positioning +QT.positioning_private.uses = +QT.positioning_private.module_config = v2 internal_module +QT.positioning_private.enabled_features = winrt_geolocation +QT.positioning_private.disabled_features = gypsy diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_printsupport.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_printsupport.pri new file mode 100644 index 000000000..f045d7c0f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_printsupport.pri @@ -0,0 +1,16 @@ +QT.printsupport.VERSION = 5.9.4 +QT.printsupport.name = QtPrintSupport +QT.printsupport.module = Qt5PrintSupport +QT.printsupport.libs = $$QT_MODULE_LIB_BASE +QT.printsupport.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtPrintSupport +QT.printsupport.frameworks = +QT.printsupport.bins = $$QT_MODULE_BIN_BASE +QT.printsupport.plugin_types = printsupport +QT.printsupport.depends = core gui widgets +QT.printsupport.uses = +QT.printsupport.module_config = v2 +QT.printsupport.DEFINES = QT_PRINTSUPPORT_LIB +QT.printsupport.enabled_features = printer printdialog printpreviewwidget printpreviewdialog +QT.printsupport.disabled_features = +QT_CONFIG += printer printdialog printpreviewwidget printpreviewdialog +QT_MODULES += printsupport diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_printsupport_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_printsupport_private.pri new file mode 100644 index 000000000..3d80cb64a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_printsupport_private.pri @@ -0,0 +1,11 @@ +QT.printsupport_private.VERSION = 5.9.4 +QT.printsupport_private.name = QtPrintSupport +QT.printsupport_private.module = +QT.printsupport_private.libs = $$QT_MODULE_LIB_BASE +QT.printsupport_private.includes = $$QT_MODULE_INCLUDE_BASE/QtPrintSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtPrintSupport/5.9.4/QtPrintSupport +QT.printsupport_private.frameworks = +QT.printsupport_private.depends = core_private gui_private widgets_private printsupport +QT.printsupport_private.uses = +QT.printsupport_private.module_config = v2 internal_module +QT.printsupport_private.enabled_features = +QT.printsupport_private.disabled_features = cups cupsjobwidget diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qml.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qml.pri new file mode 100644 index 000000000..d7b4de28a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qml.pri @@ -0,0 +1,16 @@ +QT.qml.VERSION = 5.9.4 +QT.qml.name = QtQml +QT.qml.module = Qt5Qml +QT.qml.libs = $$QT_MODULE_LIB_BASE +QT.qml.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQml +QT.qml.frameworks = +QT.qml.bins = $$QT_MODULE_BIN_BASE +QT.qml.plugin_types = qmltooling +QT.qml.depends = core network +QT.qml.uses = +QT.qml.module_config = v2 +QT.qml.DEFINES = QT_QML_LIB +QT.qml.enabled_features = qml-network +QT.qml.disabled_features = +QT_CONFIG += +QT_MODULES += qml diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qml_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qml_private.pri new file mode 100644 index 000000000..25486897a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qml_private.pri @@ -0,0 +1,11 @@ +QT.qml_private.VERSION = 5.9.4 +QT.qml_private.name = QtQml +QT.qml_private.module = +QT.qml_private.libs = $$QT_MODULE_LIB_BASE +QT.qml_private.includes = $$QT_MODULE_INCLUDE_BASE/QtQml/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQml/5.9.4/QtQml +QT.qml_private.frameworks = +QT.qml_private.depends = core_private qml +QT.qml_private.uses = +QT.qml_private.module_config = v2 internal_module +QT.qml_private.enabled_features = qml-interpreter qml-profiler +QT.qml_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmldebug_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmldebug_private.pri new file mode 100644 index 000000000..8f971f934 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmldebug_private.pri @@ -0,0 +1,15 @@ +QT.qmldebug_private.VERSION = 5.9.4 +QT.qmldebug_private.name = QtQmlDebug +QT.qmldebug_private.module = Qt5QmlDebug +QT.qmldebug_private.libs = $$QT_MODULE_LIB_BASE +QT.qmldebug_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQmlDebug $$QT_MODULE_INCLUDE_BASE/QtQmlDebug/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQmlDebug/5.9.4/QtQmlDebug +QT.qmldebug_private.frameworks = +QT.qmldebug_private.bins = $$QT_MODULE_BIN_BASE +QT.qmldebug_private.depends = core_private network packetprotocol_private qml_private +QT.qmldebug_private.uses = +QT.qmldebug_private.module_config = v2 staticlib internal_module +QT.qmldebug_private.DEFINES = QT_QMLDEBUG_LIB +QT.qmldebug_private.enabled_features = +QT.qmldebug_private.disabled_features = +QT_CONFIG += +QT_MODULES += qmldebug diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmldevtools_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmldevtools_private.pri new file mode 100644 index 000000000..f3ea1302e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmldevtools_private.pri @@ -0,0 +1,14 @@ +QT.qmldevtools_private.VERSION = 5.9.4 +QT.qmldevtools_private.name = QtQmlDevTools +QT.qmldevtools_private.module = Qt5QmlDevTools +QT.qmldevtools_private.libs = $$QT_MODULE_HOST_LIB_BASE +QT.qmldevtools_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQml $$QT_MODULE_INCLUDE_BASE/QtQml/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQml/5.9.4/QtQml +QT.qmldevtools_private.frameworks = +QT.qmldevtools_private.depends = core_private +QT.qmldevtools_private.uses = +QT.qmldevtools_private.module_config = v2 staticlib internal_module +QT.qmldevtools_private.DEFINES = QT_QMLDEVTOOLS_LIB +QT.qmldevtools_private.enabled_features = +QT.qmldevtools_private.disabled_features = +QT_CONFIG += +QT_MODULES += qmldevtools diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmltest.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmltest.pri new file mode 100644 index 000000000..27e951d51 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmltest.pri @@ -0,0 +1,17 @@ +QT.qmltest.VERSION = 5.9.4 +QT.qmltest.name = QtQuickTest +QT.qmltest.module = Qt5QuickTest +QT.qmltest.libs = $$QT_MODULE_LIB_BASE +QT.qmltest.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuickTest +QT.qmltest.frameworks = +QT.qmltest.bins = $$QT_MODULE_BIN_BASE +QT.qmltest.depends = core testlib widgets +QT.qmltest.run_depends = quick qml_private gui core_private gui_private +QT.qmltest.uses = +QT.qmltest.module_config = v2 +QT.qmltest.CONFIG = console testlib_defines +QT.qmltest.DEFINES = QT_QMLTEST_LIB +QT.qmltest.enabled_features = +QT.qmltest.disabled_features = +QT_CONFIG += +QT_MODULES += qmltest diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmltest_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmltest_private.pri new file mode 100644 index 000000000..a244cc692 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qmltest_private.pri @@ -0,0 +1,11 @@ +QT.qmltest_private.VERSION = 5.9.4 +QT.qmltest_private.name = QtQuickTest +QT.qmltest_private.module = +QT.qmltest_private.libs = $$QT_MODULE_LIB_BASE +QT.qmltest_private.includes = $$QT_MODULE_INCLUDE_BASE/QtQuickTest/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuickTest/5.9.4/QtQuickTest +QT.qmltest_private.frameworks = +QT.qmltest_private.depends = testlib_private qmltest +QT.qmltest_private.uses = +QT.qmltest_private.module_config = v2 internal_module +QT.qmltest_private.enabled_features = +QT.qmltest_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri new file mode 100644 index 000000000..44c6be83f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri @@ -0,0 +1,15 @@ +QT.qtmultimediaquicktools_private.VERSION = 5.9.4 +QT.qtmultimediaquicktools_private.name = QtMultimediaQuick_p +QT.qtmultimediaquicktools_private.module = Qt5MultimediaQuick_p +QT.qtmultimediaquicktools_private.libs = $$QT_MODULE_LIB_BASE +QT.qtmultimediaquicktools_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtMultimediaQuick_p $$QT_MODULE_INCLUDE_BASE/QtMultimediaQuick_p/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtMultimediaQuick_p/5.9.4/QtMultimediaQuick_p +QT.qtmultimediaquicktools_private.frameworks = +QT.qtmultimediaquicktools_private.bins = $$QT_MODULE_BIN_BASE +QT.qtmultimediaquicktools_private.depends = core quick multimedia_private +QT.qtmultimediaquicktools_private.uses = +QT.qtmultimediaquicktools_private.module_config = v2 internal_module +QT.qtmultimediaquicktools_private.DEFINES = QT_QTMULTIMEDIAQUICKTOOLS_LIB +QT.qtmultimediaquicktools_private.enabled_features = +QT.qtmultimediaquicktools_private.disabled_features = +QT_CONFIG += +QT_MODULES += qtmultimediaquicktools diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quick.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quick.pri new file mode 100644 index 000000000..d5604bada --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quick.pri @@ -0,0 +1,17 @@ +QT.quick.VERSION = 5.9.4 +QT.quick.name = QtQuick +QT.quick.module = Qt5Quick +QT.quick.libs = $$QT_MODULE_LIB_BASE +QT.quick.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuick +QT.quick.frameworks = +QT.quick.bins = $$QT_MODULE_BIN_BASE +QT.quick.plugin_types = accessible scenegraph +QT.quick.depends = core gui qml +QT.quick.run_depends = network +QT.quick.uses = +QT.quick.module_config = v2 +QT.quick.DEFINES = QT_QUICK_LIB +QT.quick.enabled_features = d3d12 +QT.quick.disabled_features = +QT_CONFIG += +QT_MODULES += quick diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quick_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quick_private.pri new file mode 100644 index 000000000..a560dca9d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quick_private.pri @@ -0,0 +1,11 @@ +QT.quick_private.VERSION = 5.9.4 +QT.quick_private.name = QtQuick +QT.quick_private.module = +QT.quick_private.libs = $$QT_MODULE_LIB_BASE +QT.quick_private.includes = $$QT_MODULE_INCLUDE_BASE/QtQuick/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuick/5.9.4/QtQuick +QT.quick_private.frameworks = +QT.quick_private.depends = core_private gui_private qml_private gui_private core_private qml_private core_private gui_private qml_private quick +QT.quick_private.uses = +QT.quick_private.module_config = v2 internal_module +QT.quick_private.enabled_features = quick-animatedimage quick-path quick-canvas quick-designer quick-flipable quick-gridview quick-itemview quick-listview quick-shadereffect quick-sprite quick-particles quick-pathview quick-positioners quick-viewtransitions +QT.quick_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickcontrols2.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickcontrols2.pri new file mode 100644 index 000000000..ec9a7d8e0 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickcontrols2.pri @@ -0,0 +1,16 @@ +QT.quickcontrols2.VERSION = 5.9.4 +QT.quickcontrols2.name = QtQuickControls2 +QT.quickcontrols2.module = Qt5QuickControls2 +QT.quickcontrols2.libs = $$QT_MODULE_LIB_BASE +QT.quickcontrols2.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuickControls2 +QT.quickcontrols2.frameworks = +QT.quickcontrols2.bins = $$QT_MODULE_BIN_BASE +QT.quickcontrols2.depends = core gui quick +QT.quickcontrols2.run_depends = core_private gui_private qml_private quick_private quicktemplates2_private +QT.quickcontrols2.uses = +QT.quickcontrols2.module_config = v2 +QT.quickcontrols2.DEFINES = QT_QUICKCONTROLS2_LIB +QT.quickcontrols2.enabled_features = +QT.quickcontrols2.disabled_features = +QT_CONFIG += +QT_MODULES += quickcontrols2 diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickcontrols2_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickcontrols2_private.pri new file mode 100644 index 000000000..deacf2ab7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickcontrols2_private.pri @@ -0,0 +1,11 @@ +QT.quickcontrols2_private.VERSION = 5.9.4 +QT.quickcontrols2_private.name = QtQuickControls2 +QT.quickcontrols2_private.module = +QT.quickcontrols2_private.libs = $$QT_MODULE_LIB_BASE +QT.quickcontrols2_private.includes = $$QT_MODULE_INCLUDE_BASE/QtQuickControls2/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuickControls2/5.9.4/QtQuickControls2 +QT.quickcontrols2_private.frameworks = +QT.quickcontrols2_private.depends = quickcontrols2 +QT.quickcontrols2_private.uses = +QT.quickcontrols2_private.module_config = v2 internal_module +QT.quickcontrols2_private.enabled_features = quickcontrols2-default quickcontrols2-material quickcontrols2-universal +QT.quickcontrols2_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickparticles_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickparticles_private.pri new file mode 100644 index 000000000..1d5e43e3e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickparticles_private.pri @@ -0,0 +1,15 @@ +QT.quickparticles_private.VERSION = 5.9.4 +QT.quickparticles_private.name = QtQuickParticles +QT.quickparticles_private.module = Qt5QuickParticles +QT.quickparticles_private.libs = $$QT_MODULE_LIB_BASE +QT.quickparticles_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuickParticles $$QT_MODULE_INCLUDE_BASE/QtQuickParticles/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuickParticles/5.9.4/QtQuickParticles +QT.quickparticles_private.frameworks = +QT.quickparticles_private.bins = $$QT_MODULE_BIN_BASE +QT.quickparticles_private.depends = core_private gui_private qml_private quick_private +QT.quickparticles_private.uses = +QT.quickparticles_private.module_config = v2 internal_module +QT.quickparticles_private.DEFINES = QT_QUICKPARTICLES_LIB +QT.quickparticles_private.enabled_features = +QT.quickparticles_private.disabled_features = +QT_CONFIG += +QT_MODULES += quickparticles diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quicktemplates2_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quicktemplates2_private.pri new file mode 100644 index 000000000..89b01eb1d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quicktemplates2_private.pri @@ -0,0 +1,16 @@ +QT.quicktemplates2_private.VERSION = 5.9.4 +QT.quicktemplates2_private.name = QtQuickTemplates2 +QT.quicktemplates2_private.module = Qt5QuickTemplates2 +QT.quicktemplates2_private.libs = $$QT_MODULE_LIB_BASE +QT.quicktemplates2_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuickTemplates2 $$QT_MODULE_INCLUDE_BASE/QtQuickTemplates2/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuickTemplates2/5.9.4/QtQuickTemplates2 +QT.quicktemplates2_private.frameworks = +QT.quicktemplates2_private.bins = $$QT_MODULE_BIN_BASE +QT.quicktemplates2_private.depends = core gui quick +QT.quicktemplates2_private.run_depends = core_private gui_private qml_private quick_private +QT.quicktemplates2_private.uses = +QT.quicktemplates2_private.module_config = v2 internal_module +QT.quicktemplates2_private.DEFINES = QT_QUICKTEMPLATES2_LIB +QT.quicktemplates2_private.enabled_features = quicktemplates2-hover quicktemplates2-multitouch +QT.quicktemplates2_private.disabled_features = +QT_CONFIG += +QT_MODULES += quicktemplates2 diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickwidgets.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickwidgets.pri new file mode 100644 index 000000000..6ad1ba95e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickwidgets.pri @@ -0,0 +1,15 @@ +QT.quickwidgets.VERSION = 5.9.4 +QT.quickwidgets.name = QtQuickWidgets +QT.quickwidgets.module = Qt5QuickWidgets +QT.quickwidgets.libs = $$QT_MODULE_LIB_BASE +QT.quickwidgets.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtQuickWidgets +QT.quickwidgets.frameworks = +QT.quickwidgets.bins = $$QT_MODULE_BIN_BASE +QT.quickwidgets.depends = core gui qml quick widgets +QT.quickwidgets.uses = +QT.quickwidgets.module_config = v2 +QT.quickwidgets.DEFINES = QT_QUICKWIDGETS_LIB +QT.quickwidgets.enabled_features = +QT.quickwidgets.disabled_features = +QT_CONFIG += +QT_MODULES += quickwidgets diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickwidgets_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickwidgets_private.pri new file mode 100644 index 000000000..28f52bb70 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_quickwidgets_private.pri @@ -0,0 +1,11 @@ +QT.quickwidgets_private.VERSION = 5.9.4 +QT.quickwidgets_private.name = QtQuickWidgets +QT.quickwidgets_private.module = +QT.quickwidgets_private.libs = $$QT_MODULE_LIB_BASE +QT.quickwidgets_private.includes = $$QT_MODULE_INCLUDE_BASE/QtQuickWidgets/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtQuickWidgets/5.9.4/QtQuickWidgets +QT.quickwidgets_private.frameworks = +QT.quickwidgets_private.depends = core_private gui_private qml_private quick_private widgets_private quickwidgets +QT.quickwidgets_private.uses = +QT.quickwidgets_private.module_config = v2 internal_module +QT.quickwidgets_private.enabled_features = +QT.quickwidgets_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_scxml.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_scxml.pri new file mode 100644 index 000000000..44bd85f9e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_scxml.pri @@ -0,0 +1,16 @@ +QT.scxml.VERSION = 5.9.4 +QT.scxml.name = QtScxml +QT.scxml.module = Qt5Scxml +QT.scxml.libs = $$QT_MODULE_LIB_BASE +QT.scxml.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtScxml +QT.scxml.frameworks = +QT.scxml.bins = $$QT_MODULE_BIN_BASE +QT.scxml.depends = core qml +QT.scxml.uses = +QT.scxml.module_config = v2 +QT.scxml.CONFIG = c++11 qscxmlc +QT.scxml.DEFINES = QT_SCXML_LIB +QT.scxml.enabled_features = +QT.scxml.disabled_features = +QT_CONFIG += +QT_MODULES += scxml diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_scxml_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_scxml_private.pri new file mode 100644 index 000000000..30b0043e4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_scxml_private.pri @@ -0,0 +1,11 @@ +QT.scxml_private.VERSION = 5.9.4 +QT.scxml_private.name = QtScxml +QT.scxml_private.module = +QT.scxml_private.libs = $$QT_MODULE_LIB_BASE +QT.scxml_private.includes = $$QT_MODULE_INCLUDE_BASE/QtScxml/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtScxml/5.9.4/QtScxml +QT.scxml_private.frameworks = +QT.scxml_private.depends = core_private qml_private scxml +QT.scxml_private.uses = +QT.scxml_private.module_config = v2 internal_module +QT.scxml_private.enabled_features = +QT.scxml_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sensors.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sensors.pri new file mode 100644 index 000000000..16c7b82d2 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sensors.pri @@ -0,0 +1,16 @@ +QT.sensors.VERSION = 5.9.4 +QT.sensors.name = QtSensors +QT.sensors.module = Qt5Sensors +QT.sensors.libs = $$QT_MODULE_LIB_BASE +QT.sensors.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtSensors +QT.sensors.frameworks = +QT.sensors.bins = $$QT_MODULE_BIN_BASE +QT.sensors.plugin_types = sensors sensorgestures +QT.sensors.depends = core +QT.sensors.uses = +QT.sensors.module_config = v2 +QT.sensors.DEFINES = QT_SENSORS_LIB +QT.sensors.enabled_features = +QT.sensors.disabled_features = +QT_CONFIG += +QT_MODULES += sensors diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sensors_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sensors_private.pri new file mode 100644 index 000000000..99a7de04f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sensors_private.pri @@ -0,0 +1,11 @@ +QT.sensors_private.VERSION = 5.9.4 +QT.sensors_private.name = QtSensors +QT.sensors_private.module = +QT.sensors_private.libs = $$QT_MODULE_LIB_BASE +QT.sensors_private.includes = $$QT_MODULE_INCLUDE_BASE/QtSensors/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtSensors/5.9.4/QtSensors +QT.sensors_private.frameworks = +QT.sensors_private.depends = core_private sensors +QT.sensors_private.uses = +QT.sensors_private.module_config = v2 internal_module +QT.sensors_private.enabled_features = +QT.sensors_private.disabled_features = sensorfw diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialbus.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialbus.pri new file mode 100644 index 000000000..d48410e50 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialbus.pri @@ -0,0 +1,17 @@ +QT.serialbus.VERSION = 5.9.4 +QT.serialbus.name = QtSerialBus +QT.serialbus.module = Qt5SerialBus +QT.serialbus.libs = $$QT_MODULE_LIB_BASE +QT.serialbus.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtSerialBus +QT.serialbus.frameworks = +QT.serialbus.bins = $$QT_MODULE_BIN_BASE +QT.serialbus.plugin_types = canbus +QT.serialbus.depends = core +QT.serialbus.run_depends = network serialport +QT.serialbus.uses = +QT.serialbus.module_config = v2 +QT.serialbus.DEFINES = QT_SERIALBUS_LIB +QT.serialbus.enabled_features = +QT.serialbus.disabled_features = +QT_CONFIG += +QT_MODULES += serialbus diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialbus_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialbus_private.pri new file mode 100644 index 000000000..c4fd2bd01 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialbus_private.pri @@ -0,0 +1,11 @@ +QT.serialbus_private.VERSION = 5.9.4 +QT.serialbus_private.name = QtSerialBus +QT.serialbus_private.module = +QT.serialbus_private.libs = $$QT_MODULE_LIB_BASE +QT.serialbus_private.includes = $$QT_MODULE_INCLUDE_BASE/QtSerialBus/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtSerialBus/5.9.4/QtSerialBus +QT.serialbus_private.frameworks = +QT.serialbus_private.depends = core_private serialbus network serialport +QT.serialbus_private.uses = +QT.serialbus_private.module_config = v2 internal_module +QT.serialbus_private.enabled_features = +QT.serialbus_private.disabled_features = socketcan socketcan_fd diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialport.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialport.pri new file mode 100644 index 000000000..43f1ffefe --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialport.pri @@ -0,0 +1,15 @@ +QT.serialport.VERSION = 5.9.4 +QT.serialport.name = QtSerialPort +QT.serialport.module = Qt5SerialPort +QT.serialport.libs = $$QT_MODULE_LIB_BASE +QT.serialport.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtSerialPort +QT.serialport.frameworks = +QT.serialport.bins = $$QT_MODULE_BIN_BASE +QT.serialport.depends = core +QT.serialport.uses = +QT.serialport.module_config = v2 +QT.serialport.DEFINES = QT_SERIALPORT_LIB +QT.serialport.enabled_features = +QT.serialport.disabled_features = +QT_CONFIG += +QT_MODULES += serialport diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialport_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialport_private.pri new file mode 100644 index 000000000..e34cbe7f1 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_serialport_private.pri @@ -0,0 +1,11 @@ +QT.serialport_private.VERSION = 5.9.4 +QT.serialport_private.name = QtSerialPort +QT.serialport_private.module = +QT.serialport_private.libs = $$QT_MODULE_LIB_BASE +QT.serialport_private.includes = $$QT_MODULE_INCLUDE_BASE/QtSerialPort/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtSerialPort/5.9.4/QtSerialPort +QT.serialport_private.frameworks = +QT.serialport_private.depends = core_private serialport +QT.serialport_private.uses = +QT.serialport_private.module_config = v2 internal_module +QT.serialport_private.enabled_features = +QT.serialport_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sql.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sql.pri new file mode 100644 index 000000000..44453e70f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sql.pri @@ -0,0 +1,16 @@ +QT.sql.VERSION = 5.9.4 +QT.sql.name = QtSql +QT.sql.module = Qt5Sql +QT.sql.libs = $$QT_MODULE_LIB_BASE +QT.sql.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtSql +QT.sql.frameworks = +QT.sql.bins = $$QT_MODULE_BIN_BASE +QT.sql.plugin_types = sqldrivers +QT.sql.depends = core +QT.sql.uses = +QT.sql.module_config = v2 +QT.sql.DEFINES = QT_SQL_LIB +QT.sql.enabled_features = +QT.sql.disabled_features = +QT_CONFIG += +QT_MODULES += sql diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sql_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sql_private.pri new file mode 100644 index 000000000..4de515012 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_sql_private.pri @@ -0,0 +1,11 @@ +QT.sql_private.VERSION = 5.9.4 +QT.sql_private.name = QtSql +QT.sql_private.module = +QT.sql_private.libs = $$QT_MODULE_LIB_BASE +QT.sql_private.includes = $$QT_MODULE_INCLUDE_BASE/QtSql/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtSql/5.9.4/QtSql +QT.sql_private.frameworks = +QT.sql_private.depends = core_private sql +QT.sql_private.uses = +QT.sql_private.module_config = v2 internal_module +QT.sql_private.enabled_features = +QT.sql_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_svg.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_svg.pri new file mode 100644 index 000000000..06ff8a504 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_svg.pri @@ -0,0 +1,16 @@ +QT.svg.VERSION = 5.9.4 +QT.svg.name = QtSvg +QT.svg.module = Qt5Svg +QT.svg.libs = $$QT_MODULE_LIB_BASE +QT.svg.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtSvg +QT.svg.frameworks = +QT.svg.bins = $$QT_MODULE_BIN_BASE +QT.svg.depends = core gui widgets +QT.svg.run_depends = zlib_private +QT.svg.uses = +QT.svg.module_config = v2 +QT.svg.DEFINES = QT_SVG_LIB +QT.svg.enabled_features = +QT.svg.disabled_features = +QT_CONFIG += +QT_MODULES += svg diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_svg_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_svg_private.pri new file mode 100644 index 000000000..57bb959ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_svg_private.pri @@ -0,0 +1,11 @@ +QT.svg_private.VERSION = 5.9.4 +QT.svg_private.name = QtSvg +QT.svg_private.module = +QT.svg_private.libs = $$QT_MODULE_LIB_BASE +QT.svg_private.includes = $$QT_MODULE_INCLUDE_BASE/QtSvg/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtSvg/5.9.4/QtSvg +QT.svg_private.frameworks = +QT.svg_private.depends = core_private gui_private widgets_private svg +QT.svg_private.uses = +QT.svg_private.module_config = v2 internal_module +QT.svg_private.enabled_features = +QT.svg_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_testlib.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_testlib.pri new file mode 100644 index 000000000..cf171b515 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_testlib.pri @@ -0,0 +1,16 @@ +QT.testlib.VERSION = 5.9.4 +QT.testlib.name = QtTest +QT.testlib.module = Qt5Test +QT.testlib.libs = $$QT_MODULE_LIB_BASE +QT.testlib.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtTest +QT.testlib.frameworks = +QT.testlib.bins = $$QT_MODULE_BIN_BASE +QT.testlib.depends = core +QT.testlib.uses = +QT.testlib.module_config = v2 +QT.testlib.CONFIG = console testlib_defines +QT.testlib.DEFINES = QT_TESTLIB_LIB +QT.testlib.enabled_features = +QT.testlib.disabled_features = +QT_CONFIG += +QT_MODULES += testlib diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_testlib_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_testlib_private.pri new file mode 100644 index 000000000..0b3e7c395 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_testlib_private.pri @@ -0,0 +1,11 @@ +QT.testlib_private.VERSION = 5.9.4 +QT.testlib_private.name = QtTest +QT.testlib_private.module = +QT.testlib_private.libs = $$QT_MODULE_LIB_BASE +QT.testlib_private.includes = $$QT_MODULE_INCLUDE_BASE/QtTest/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtTest/5.9.4/QtTest +QT.testlib_private.frameworks = +QT.testlib_private.depends = core_private testlib +QT.testlib_private.uses = +QT.testlib_private.module_config = v2 internal_module +QT.testlib_private.enabled_features = +QT.testlib_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_theme_support_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_theme_support_private.pri new file mode 100644 index 000000000..a0ba93c6e --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_theme_support_private.pri @@ -0,0 +1,15 @@ +QT.theme_support_private.VERSION = 5.9.4 +QT.theme_support_private.name = QtThemeSupport +QT.theme_support_private.module = Qt5ThemeSupport +QT.theme_support_private.libs = $$QT_MODULE_LIB_BASE +QT.theme_support_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtThemeSupport $$QT_MODULE_INCLUDE_BASE/QtThemeSupport/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtThemeSupport/5.9.4/QtThemeSupport +QT.theme_support_private.frameworks = +QT.theme_support_private.bins = $$QT_MODULE_BIN_BASE +QT.theme_support_private.depends = core_private gui_private +QT.theme_support_private.uses = +QT.theme_support_private.module_config = v2 staticlib internal_module +QT.theme_support_private.DEFINES = QT_THEME_SUPPORT_LIB +QT.theme_support_private.enabled_features = +QT.theme_support_private.disabled_features = +QT_CONFIG += +QT_MODULES += theme_support diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_uiplugin.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_uiplugin.pri new file mode 100644 index 000000000..b45375527 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_uiplugin.pri @@ -0,0 +1,16 @@ +QT.uiplugin.VERSION = 5.9.4 +QT.uiplugin.name = QtUiPlugin +QT.uiplugin.module = +QT.uiplugin.libs = $$QT_MODULE_LIB_BASE +QT.uiplugin.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtUiPlugin +QT.uiplugin.frameworks = +QT.uiplugin.bins = $$QT_MODULE_BIN_BASE +QT.uiplugin.depends = core gui widgets +QT.uiplugin.uses = +QT.uiplugin.module_config = v2 +QT.uiplugin.CONFIG = designer_defines +QT.uiplugin.DEFINES = QT_UIPLUGIN_LIB +QT.uiplugin.enabled_features = +QT.uiplugin.disabled_features = +QT_CONFIG += +QT_MODULES += uiplugin diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_uitools.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_uitools.pri new file mode 100644 index 000000000..bb2ec8005 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_uitools.pri @@ -0,0 +1,16 @@ +QT.uitools.VERSION = 5.9.4 +QT.uitools.name = QtUiTools +QT.uitools.module = Qt5UiTools +QT.uitools.libs = $$QT_MODULE_LIB_BASE +QT.uitools.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtUiTools +QT.uitools.frameworks = +QT.uitools.bins = $$QT_MODULE_BIN_BASE +QT.uitools.depends = core gui widgets +QT.uitools.run_depends = uiplugin +QT.uitools.uses = +QT.uitools.module_config = v2 staticlib +QT.uitools.DEFINES = QT_UITOOLS_LIB +QT.uitools.enabled_features = +QT.uitools.disabled_features = +QT_CONFIG += +QT_MODULES += uitools diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_uitools_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_uitools_private.pri new file mode 100644 index 000000000..b03578726 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_uitools_private.pri @@ -0,0 +1,11 @@ +QT.uitools_private.VERSION = 5.9.4 +QT.uitools_private.name = QtUiTools +QT.uitools_private.module = +QT.uitools_private.libs = $$QT_MODULE_LIB_BASE +QT.uitools_private.includes = $$QT_MODULE_INCLUDE_BASE/QtUiTools/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtUiTools/5.9.4/QtUiTools +QT.uitools_private.frameworks = +QT.uitools_private.depends = uitools +QT.uitools_private.uses = +QT.uitools_private.module_config = v2 staticlib internal_module +QT.uitools_private.enabled_features = +QT.uitools_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webchannel.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webchannel.pri new file mode 100644 index 000000000..f5355c888 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webchannel.pri @@ -0,0 +1,15 @@ +QT.webchannel.VERSION = 5.9.4 +QT.webchannel.name = QtWebChannel +QT.webchannel.module = Qt5WebChannel +QT.webchannel.libs = $$QT_MODULE_LIB_BASE +QT.webchannel.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtWebChannel +QT.webchannel.frameworks = +QT.webchannel.bins = $$QT_MODULE_BIN_BASE +QT.webchannel.depends = core qml +QT.webchannel.uses = +QT.webchannel.module_config = v2 +QT.webchannel.DEFINES = QT_WEBCHANNEL_LIB +QT.webchannel.enabled_features = +QT.webchannel.disabled_features = +QT_CONFIG += +QT_MODULES += webchannel diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webchannel_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webchannel_private.pri new file mode 100644 index 000000000..54e186967 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webchannel_private.pri @@ -0,0 +1,11 @@ +QT.webchannel_private.VERSION = 5.9.4 +QT.webchannel_private.name = QtWebChannel +QT.webchannel_private.module = +QT.webchannel_private.libs = $$QT_MODULE_LIB_BASE +QT.webchannel_private.includes = $$QT_MODULE_INCLUDE_BASE/QtWebChannel/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtWebChannel/5.9.4/QtWebChannel +QT.webchannel_private.frameworks = +QT.webchannel_private.depends = core_private webchannel +QT.webchannel_private.uses = +QT.webchannel_private.module_config = v2 internal_module +QT.webchannel_private.enabled_features = +QT.webchannel_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_websockets.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_websockets.pri new file mode 100644 index 000000000..ae0b67e15 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_websockets.pri @@ -0,0 +1,15 @@ +QT.websockets.VERSION = 5.9.4 +QT.websockets.name = QtWebSockets +QT.websockets.module = Qt5WebSockets +QT.websockets.libs = $$QT_MODULE_LIB_BASE +QT.websockets.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtWebSockets +QT.websockets.frameworks = +QT.websockets.bins = $$QT_MODULE_BIN_BASE +QT.websockets.depends = core network +QT.websockets.uses = +QT.websockets.module_config = v2 +QT.websockets.DEFINES = QT_WEBSOCKETS_LIB +QT.websockets.enabled_features = +QT.websockets.disabled_features = +QT_CONFIG += +QT_MODULES += websockets diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_websockets_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_websockets_private.pri new file mode 100644 index 000000000..68aec718b --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_websockets_private.pri @@ -0,0 +1,11 @@ +QT.websockets_private.VERSION = 5.9.4 +QT.websockets_private.name = QtWebSockets +QT.websockets_private.module = +QT.websockets_private.libs = $$QT_MODULE_LIB_BASE +QT.websockets_private.includes = $$QT_MODULE_INCLUDE_BASE/QtWebSockets/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtWebSockets/5.9.4/QtWebSockets +QT.websockets_private.frameworks = +QT.websockets_private.depends = core_private websockets +QT.websockets_private.uses = +QT.websockets_private.module_config = v2 internal_module +QT.websockets_private.enabled_features = +QT.websockets_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webview.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webview.pri new file mode 100644 index 000000000..5a76d16ed --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webview.pri @@ -0,0 +1,16 @@ +QT.webview.VERSION = 5.9.4 +QT.webview.name = QtWebView +QT.webview.module = Qt5WebView +QT.webview.libs = $$QT_MODULE_LIB_BASE +QT.webview.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtWebView +QT.webview.frameworks = +QT.webview.bins = $$QT_MODULE_BIN_BASE +QT.webview.depends = +QT.webview.run_depends = webengine_private quick_private core_private gui_private +QT.webview.uses = +QT.webview.module_config = v2 +QT.webview.DEFINES = QT_WEBVIEW_LIB +QT.webview.enabled_features = +QT.webview.disabled_features = +QT_CONFIG += +QT_MODULES += webview diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webview_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webview_private.pri new file mode 100644 index 000000000..27e496dec --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_webview_private.pri @@ -0,0 +1,11 @@ +QT.webview_private.VERSION = 5.9.4 +QT.webview_private.name = QtWebView +QT.webview_private.module = +QT.webview_private.libs = $$QT_MODULE_LIB_BASE +QT.webview_private.includes = $$QT_MODULE_INCLUDE_BASE/QtWebView/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtWebView/5.9.4/QtWebView +QT.webview_private.frameworks = +QT.webview_private.depends = webview quick_private core_private gui_private +QT.webview_private.uses = +QT.webview_private.module_config = v2 internal_module +QT.webview_private.enabled_features = +QT.webview_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_widgets.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_widgets.pri new file mode 100644 index 000000000..d7da71d9a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_widgets.pri @@ -0,0 +1,17 @@ +QT.widgets.VERSION = 5.9.4 +QT.widgets.name = QtWidgets +QT.widgets.module = Qt5Widgets +QT.widgets.libs = $$QT_MODULE_LIB_BASE +QT.widgets.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtWidgets +QT.widgets.frameworks = +QT.widgets.bins = $$QT_MODULE_BIN_BASE +QT.widgets.plugin_types = styles +QT.widgets.depends = core gui +QT.widgets.uses = +QT.widgets.module_config = v2 +QT.widgets.CONFIG = uic +QT.widgets.DEFINES = QT_WIDGETS_LIB +QT.widgets.enabled_features = abstractbutton abstractslider groupbox buttongroup label pushbutton menu lineedit spinbox slider scrollbar scrollarea itemviews tableview toolbutton calendarwidget checkbox dialog dialogbuttonbox colordialog listview columnview combobox commandlinkbutton completer contextmenu datawidgetmapper datetimeedit dial filesystemmodel dirmodel resizehandler mainwindow dockwidget textedit errormessage splitter stackedwidget treeview filedialog fontcombobox fontdialog formlayout fscompleter graphicsview graphicseffect inputdialog keysequenceedit lcdnumber listwidget mdiarea menubar messagebox paint_debug progressbar progressdialog radiobutton rubberband scroller sizegrip splashscreen statusbar statustip style-stylesheet syntaxhighlighter tabbar tablewidget tabwidget textbrowser toolbar toolbox tooltip treewidget undocommand undostack undogroup undoview wizard +QT.widgets.disabled_features = +QT_CONFIG += groupbox buttongroup menu lineedit spinbox slider scrollbar scrollarea itemviews tableview toolbutton calendarwidget colordialog listview columnview combobox completer contextmenu datawidgetmapper datetimeedit dial filesystemmodel dirmodel resizehandler mainwindow dockwidget textedit errormessage splitter stackedwidget treeview filedialog fontcombobox fontdialog fscompleter graphicsview graphicseffect inputdialog keysequenceedit lcdnumber listwidget mdiarea menubar messagebox paint_debug progressbar progressdialog rubberband sizegrip splashscreen statusbar statustip style-stylesheet syntaxhighlighter tabbar tablewidget tabwidget textbrowser toolbar toolbox tooltip treewidget undocommand undostack undogroup undoview wizard +QT_MODULES += widgets diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_widgets_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_widgets_private.pri new file mode 100644 index 000000000..554711f8f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_widgets_private.pri @@ -0,0 +1,11 @@ +QT.widgets_private.VERSION = 5.9.4 +QT.widgets_private.name = QtWidgets +QT.widgets_private.module = +QT.widgets_private.libs = $$QT_MODULE_LIB_BASE +QT.widgets_private.includes = $$QT_MODULE_INCLUDE_BASE/QtWidgets/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtWidgets/5.9.4/QtWidgets +QT.widgets_private.frameworks = +QT.widgets_private.depends = core_private gui_private widgets +QT.widgets_private.uses = +QT.widgets_private.module_config = v2 internal_module +QT.widgets_private.enabled_features = widgettextcontrol effects style-fusion style-windows style-windowsxp style-windowsvista +QT.widgets_private.disabled_features = gtk3 style-android style-mac diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_winextras.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_winextras.pri new file mode 100644 index 000000000..6d5c872fb --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_winextras.pri @@ -0,0 +1,15 @@ +QT.winextras.VERSION = 5.9.4 +QT.winextras.name = QtWinExtras +QT.winextras.module = Qt5WinExtras +QT.winextras.libs = $$QT_MODULE_LIB_BASE +QT.winextras.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtWinExtras +QT.winextras.frameworks = +QT.winextras.bins = $$QT_MODULE_BIN_BASE +QT.winextras.depends = core gui +QT.winextras.uses = +QT.winextras.module_config = v2 +QT.winextras.DEFINES = QT_WINEXTRAS_LIB +QT.winextras.enabled_features = +QT.winextras.disabled_features = +QT_CONFIG += +QT_MODULES += winextras diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_winextras_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_winextras_private.pri new file mode 100644 index 000000000..6d5829fb5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_winextras_private.pri @@ -0,0 +1,11 @@ +QT.winextras_private.VERSION = 5.9.4 +QT.winextras_private.name = QtWinExtras +QT.winextras_private.module = +QT.winextras_private.libs = $$QT_MODULE_LIB_BASE +QT.winextras_private.includes = $$QT_MODULE_INCLUDE_BASE/QtWinExtras/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtWinExtras/5.9.4/QtWinExtras +QT.winextras_private.frameworks = +QT.winextras_private.depends = gui_private core_private winextras +QT.winextras_private.uses = +QT.winextras_private.module_config = v2 internal_module +QT.winextras_private.enabled_features = +QT.winextras_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xml.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xml.pri new file mode 100644 index 000000000..4ed724534 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xml.pri @@ -0,0 +1,15 @@ +QT.xml.VERSION = 5.9.4 +QT.xml.name = QtXml +QT.xml.module = Qt5Xml +QT.xml.libs = $$QT_MODULE_LIB_BASE +QT.xml.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtXml +QT.xml.frameworks = +QT.xml.bins = $$QT_MODULE_BIN_BASE +QT.xml.depends = core +QT.xml.uses = +QT.xml.module_config = v2 +QT.xml.DEFINES = QT_XML_LIB +QT.xml.enabled_features = dom +QT.xml.disabled_features = +QT_CONFIG += dom +QT_MODULES += xml diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xml_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xml_private.pri new file mode 100644 index 000000000..028d4fdce --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xml_private.pri @@ -0,0 +1,11 @@ +QT.xml_private.VERSION = 5.9.4 +QT.xml_private.name = QtXml +QT.xml_private.module = +QT.xml_private.libs = $$QT_MODULE_LIB_BASE +QT.xml_private.includes = $$QT_MODULE_INCLUDE_BASE/QtXml/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtXml/5.9.4/QtXml +QT.xml_private.frameworks = +QT.xml_private.depends = core_private xml +QT.xml_private.uses = +QT.xml_private.module_config = v2 internal_module +QT.xml_private.enabled_features = +QT.xml_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xmlpatterns.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xmlpatterns.pri new file mode 100644 index 000000000..c9cdc8438 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xmlpatterns.pri @@ -0,0 +1,15 @@ +QT.xmlpatterns.VERSION = 5.9.4 +QT.xmlpatterns.name = QtXmlPatterns +QT.xmlpatterns.module = Qt5XmlPatterns +QT.xmlpatterns.libs = $$QT_MODULE_LIB_BASE +QT.xmlpatterns.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtXmlPatterns +QT.xmlpatterns.frameworks = +QT.xmlpatterns.bins = $$QT_MODULE_BIN_BASE +QT.xmlpatterns.depends = core network +QT.xmlpatterns.uses = +QT.xmlpatterns.module_config = v2 +QT.xmlpatterns.DEFINES = QT_XMLPATTERNS_LIB +QT.xmlpatterns.enabled_features = xml-schema +QT.xmlpatterns.disabled_features = +QT_CONFIG += +QT_MODULES += xmlpatterns diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xmlpatterns_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xmlpatterns_private.pri new file mode 100644 index 000000000..fe1d42fb4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_xmlpatterns_private.pri @@ -0,0 +1,11 @@ +QT.xmlpatterns_private.VERSION = 5.9.4 +QT.xmlpatterns_private.name = QtXmlPatterns +QT.xmlpatterns_private.module = +QT.xmlpatterns_private.libs = $$QT_MODULE_LIB_BASE +QT.xmlpatterns_private.includes = $$QT_MODULE_INCLUDE_BASE/QtXmlPatterns/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtXmlPatterns/5.9.4/QtXmlPatterns +QT.xmlpatterns_private.frameworks = +QT.xmlpatterns_private.depends = core_private xmlpatterns +QT.xmlpatterns_private.uses = +QT.xmlpatterns_private.module_config = v2 internal_module +QT.xmlpatterns_private.enabled_features = +QT.xmlpatterns_private.disabled_features = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_zlib_private.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_zlib_private.pri new file mode 100644 index 000000000..733c943ee --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/modules/qt_lib_zlib_private.pri @@ -0,0 +1,15 @@ +QT.zlib_private.VERSION = 5.9.4 +QT.zlib_private.name = QtZlib +QT.zlib_private.module = +QT.zlib_private.libs = $$QT_MODULE_LIB_BASE +QT.zlib_private.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtZlib $$QT_MODULE_INCLUDE_BASE/QtZlib/5.9.4 $$QT_MODULE_INCLUDE_BASE/QtZlib/5.9.4/QtZlib +QT.zlib_private.frameworks = +QT.zlib_private.bins = $$QT_MODULE_BIN_BASE +QT.zlib_private.depends = +QT.zlib_private.uses = +QT.zlib_private.module_config = v2 internal_module +QT.zlib_private.DEFINES = QT_ZLIB_LIB +QT.zlib_private.enabled_features = +QT.zlib_private.disabled_features = +QT_CONFIG += +QT_MODULES += zlib diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/qconfig.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/qconfig.pri new file mode 100644 index 000000000..04e4b9457 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/qconfig.pri @@ -0,0 +1,16 @@ +QT_ARCH = x86_64 +QT_BUILDABI = x86_64-little_endian-lp64 +QT.global.enabled_features = shared debug_and_release build_all c++11 concurrent +QT.global.disabled_features = cross_compile framework rpath appstore-compliant c++14 c++1z pkg-config force_asserts separate_debug_info simulator_and_device static +QT_CONFIG += shared debug_and_release debug release build_all c++11 concurrent dbus no-pkg-config stl +CONFIG += shared release no_plugin_manifest +QT_VERSION = 5.9.4 +QT_MAJOR_VERSION = 5 +QT_MINOR_VERSION = 9 +QT_PATCH_VERSION = 4 +QT_MSVC_MAJOR_VERSION = 19 +QT_MSVC_MINOR_VERSION = 0 +QT_MSVC_PATCH_VERSION = 24215 +QT_EDITION = OpenSource +QT_LICHECK = licheck.exe +QT_RELEASE_DATE = 2018-01-18 diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/qdevice.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/qdevice.pri new file mode 100644 index 000000000..1784eeda5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/qdevice.pri @@ -0,0 +1 @@ +GCC_MACHINE_DUMP = diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/qmodule.pri b/qrenderdoc/3rdparty/qt/x64/mkspecs/qmodule.pri new file mode 100644 index 000000000..f43bca6c8 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/qmodule.pri @@ -0,0 +1,9 @@ +EXTRA_INCLUDEPATH += C:\\utils\\my_sql\\my_sql\\include C:\\utils\\postgresql\\pgsql\\include +EXTRA_LIBDIR += C:\\utils\\my_sql\\my_sql\\lib C:\\utils\\postgresql\\pgsql\\lib +QT_CPU_FEATURES.x86_64 = sse sse2 +QT.global_private.enabled_features = alloca_malloc_h alloca sse2 dbus gui network qml-debug sql testlib widgets xml +QT.global_private.disabled_features = alloca_h android-style-assets private_tests dbus-linked libudev posix_fallocate reduce_exports reduce_relocations release_tools stack-protector-strong system-zlib +QT_COORD_TYPE = double +CONFIG += sse2 sse3 ssse3 sse4_1 sse4_2 avx avx2 compile_examples f16c force_debug_info largefile precompile_header +QT_BUILD_PARTS += libs tools +QT_HOST_CFLAGS_DBUS += diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-host-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-host-g++/qmake.conf new file mode 100644 index 000000000..7853ade8c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-host-g++/qmake.conf @@ -0,0 +1,115 @@ +# +# QMake configuration for Scratchbox's host-gcc compiler. +# +# 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 +# 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 +# for QMake variables (I.e. "QMAKE_foo = bar" is broken). + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = linux +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../common/unix.conf) + +# +# qmake configuration for common gcc +# + +QMAKE_COMPILER = gcc + +QMAKE_CC = host-gcc +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 += -fPIC +QMAKE_CFLAGS_STATIC_LIB += -fPIC +QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden +QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE} + +QMAKE_CXX = host-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_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB +QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden +QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_LINK = host-g++ +QMAKE_LINK_SHLIB = host-g++ +QMAKE_LINK_C = host-gcc +QMAKE_LINK_C_SHLIB = host-gcc +QMAKE_LFLAGS += +QMAKE_LFLAGS_RELEASE += -Wl,-O1 +QMAKE_LFLAGS_DEBUG += +QMAKE_LFLAGS_APP += +QMAKE_LFLAGS_SHLIB += -shared +QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME += -Wl,-soname, +QMAKE_LFLAGS_THREAD += +QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined +QMAKE_LFLAGS_RPATH = -Wl,-rpath, + +QMAKE_PCH_OUTPUT_EXT = .gch + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions +QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list, +QMAKE_LFLAGS_VERSION_SCRIPT = -Wl,--version-script, + +# +# qmake configuration for common linux +# + +QMAKE_CFLAGS_THREAD += -D_REENTRANT +QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = +QMAKE_LIBDIR_X11 = +QMAKE_INCDIR_OPENGL = +QMAKE_LIBDIR_OPENGL = +QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL +QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL +QMAKE_INCDIR_EGL = +QMAKE_LIBDIR_EGL = +QMAKE_INCDIR_OPENVG = +QMAKE_LIBDIR_OPENVG = + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = -ldl +QMAKE_LIBS_X11 = -lXext -lX11 -lm +QMAKE_LIBS_EGL = -lEGL +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 +QMAKE_LIBS_OPENVG = -lOpenVG +QMAKE_LIBS_THREAD = -lpthread + +QMAKE_AR = host-ar cqs +QMAKE_OBJCOPY = host-objcopy +QMAKE_NM = host-nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = host-strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-host-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-host-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-host-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf new file mode 100644 index 000000000..63f516895 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf @@ -0,0 +1,34 @@ +# +# qmake configuration derived from linux-g++ +# +# This mkspec is intended for use with scratchbox 2 (sb2) and assumes the +# default sb2 target is set appropriately, or you will have to append the +# appropriate -t $target argument to sb2 + +# If you want to use pkg-config you have to explicitly force it by passing +# -force-pkg-config to configure. You will probably want to export your +# PKG_CONFIG_PATH shell variable in order for the host pkg-config to +# correctly query and utilize your targets .pc files (normally stored in +# $staging/usr/lib/pkgconfig) + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../../common/linux.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +# modifications to g++.conf +QMAKE_CC = sb2 gcc +QMAKE_CXX = sb2 g++ +QMAKE_LINK = sb2 g++ +QMAKE_LINK_SHLIB = sb2 g++ + +# modifications to linux.conf +QMAKE_AR = sb2 ar cqs +QMAKE_OBJCOPY = sb2 objcopy +QMAKE_NM = sb2 nm -P +QMAKE_STRIP = sb2 strip + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h new file mode 100644 index 000000000..6a35ed45d --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../linux-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl-g++/qmake.conf new file mode 100644 index 000000000..581422fcf --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl-g++/qmake.conf @@ -0,0 +1,13 @@ +# +# qmake configuration for building with nacl-g++ +# + +include(../../common/linux.conf) +include(../../common/qws.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) +include(../../common/nacl/nacl-base.conf) +include(../../common/nacl/g++-nacl32.conf) + + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl-g++/qplatformdefs.h new file mode 100644 index 000000000..fbdb8712a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl-g++/qplatformdefs.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#include "../../common/nacl/qplatformdefs.h" +#include "../../common/posix/qplatformdefs.h" + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl64-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl64-g++/qmake.conf new file mode 100644 index 000000000..fcef45fae --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl64-g++/qmake.conf @@ -0,0 +1,13 @@ +# +# qmake configuration for building with nacl-g++ +# + +include(../../common/linux.conf) +include(../../common/qws.conf) +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) +include(../../common/nacl/nacl64-base.conf) +include(../../common/nacl/g++-nacl64.conf) + + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl64-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl64-g++/qplatformdefs.h new file mode 100644 index 000000000..fbdb8712a --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/nacl64-g++/qplatformdefs.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#include "../../common/nacl/qplatformdefs.h" +#include "../../common/posix/qplatformdefs.h" + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/qnx-X11-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/qnx-X11-g++/qmake.conf new file mode 100644 index 000000000..79a5609db --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/qnx-X11-g++/qmake.conf @@ -0,0 +1,39 @@ +# +# qmake configuration for qnx-x11-g++ +# +# Written for QNX RTOS v6 with X11 +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = qnx + +include(../common/unix.conf) +include(../common/gcc-base-unix.conf) +include(../common/g++-unix.conf) + +QMAKE_CFLAGS_THREAD = -D_REENTRANT +QMAKE_CXXFLAGS_THREAD = $$QMAKE_CLFAGS_THREAD +QMAKE_COMPILER_DEFINES += __QNXNTO__ + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = /opt/X11R6/include +QMAKE_LIBDIR_X11 = /opt/X11R6/lib +QMAKE_INCDIR_OPENGL = /opt/X11R6/include +QMAKE_LIBDIR_OPENGL = /opt/X11R6/lib + +#QMAKE_LIBS = -lunix +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_X11 = -lXext -lX11 -lm -lsocket +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = +QMAKE_LIBS_NETWORK = -lsocket + +QMAKE_AR = ar cqs +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/qnx-X11-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/qnx-X11-g++/qplatformdefs.h new file mode 100644 index 000000000..de4a2cc2c --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/qnx-X11-g++/qplatformdefs.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#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> + +#include <sys/types.h> +#include <sys/ioctl.h> +#include <sys/ipc.h> +#include <sys/time.h> +// QNX doesn't have the System V <sys/shm.h> header. This is not a standard +// POSIX header, it's only documented in the Single UNIX Specification. +// The preferred POSIX compliant way to share memory is to use the functions +// in <sys/mman.h> that comply with the POSIX Real Time Interface (1003.1b). +#include <sys/mman.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 + +// for htonl +#include <arpa/inet.h> + +#define QT_USE_XOPEN_LFS_EXTENSIONS +#include "../../common/posix/qplatformdefs.h" + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +// QNX6 doesn't have getpagesize() +inline int getpagesize() +{ + return ::sysconf(_SC_PAGESIZE); +} + +#include <stdlib.h> + +// QNX6 doesn't have strtof - use strtod instead +inline float strtof(const char *b, char **e) +{ + return float(strtod(b, e)); +} + +#define QT_QWS_TEMP_DIR QString::fromLatin1(qgetenv("TMP")) + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf new file mode 100644 index 000000000..2fa514854 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf @@ -0,0 +1,93 @@ +# +# qmake configuration for vxworks-ppc-dcc +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = vxworks +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../common/unix.conf) + +VXWORKS_ARCH = ppc +VXWORKS_CPU = PPC32 +VXWORKS_DIAB_SPEC = -tPPC7400FV:vxworks66 +VXWORKS_ARCH_MUNCH = ppc + +QMAKE_COMPILER = wr_dcc + +QMAKE_CC = dcc +QMAKE_CFLAGS += $$VXWORKS_DIAB_SPEC -Xkeywords=0x0 -Xcode-absolute-far -Xansi -Xforce-declarations -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip -DCPU=$$upper($$VXWORKS_ARCH) -DVX_CPU_FAMILY=$$VXWORKS_ARCH -DTOOL_FAMILY=diab -DTOOL=diab -D_WRS_KERNEL -DVXWORKS -D_VSB_CONFIG_FILE=\'<../lib/h/config/vsbConfig.h>\' +QMAKE_CFLAGS_DEPS += +QMAKE_CFLAGS_WARN_ON += +QMAKE_CFLAGS_WARN_OFF += -Xsuppress-warnings +QMAKE_CFLAGS_RELEASE += +QMAKE_CFLAGS_DEBUG += -g +QMAKE_CFLAGS_SHLIB += +QMAKE_CFLAGS_STATIC_LIB += +QMAKE_CFLAGS_YACC += +QMAKE_CFLAGS_HIDESYMS += +QMAKE_CFLAGS_PRECOMPILE += +QMAKE_CFLAGS_USE_PRECOMPILE += + +QMAKE_CXX = dcc +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_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS +QMAKE_CXXFLAGS_PRECOMPILE += +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_LINK = dld +QMAKE_LINK_SHLIB = dld +QMAKE_LFLAGS += $$VXWORKS_DIAB_SPEC +QMAKE_LFLAGS_RELEASE += +QMAKE_LFLAGS_DEBUG += +QMAKE_LFLAGS_APP += -r5 +QMAKE_LFLAGS_SHLIB += +QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME += +QMAKE_LFLAGS_THREAD += +QMAKE_LFLAGS_NOUNDEF += +QMAKE_LFLAGS_RPATH = + +QMAKE_PCH_OUTPUT_EXT = .gch + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = +QMAKE_LFLAGS_DYNAMIC_LIST = + +QMAKE_CFLAGS_THREAD += -D_REENTRANT +QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = $(WIND_HOME)/GSS/include +QMAKE_LIBDIR_X11 = $(WIND_HOME)/GSS/lib +QMAKE_INCDIR_OPENGL = $$QMAKE_INCDIR_X11 +QMAKE_LIBDIR_OPENGL = $$QMAKE_LIBDIR_X11 + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_X11 = -lXext -lX11 +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = +QMAKE_LIBS_NETWORK = # -lnetwrap # only needed if kernel is missing gethostbyname and friends + + +QMAKE_AR = ar cqs +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded + +load(qt_config) + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h new file mode 100644 index 000000000..4161c37a7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../vxworks-simpentium-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf new file mode 100644 index 000000000..49cacdba4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf @@ -0,0 +1,38 @@ +# +# qmake configuration for vxworks-simpentium-g++ +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = vxworks +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib +DEFINES += VXWORKS + +include(../../common/linux.conf) + +VXWORKS_ARCH = ppc +VXWORKS_CPU = PPC32 +VXWORKS_ARCH_MUNCH = ppc + +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +QMAKE_CC = cc$$VXWORKS_ARCH_MUNCH +QMAKE_CFLAGS = -fno-builtin -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip -DCPU=$$upper($$VXWORKS_ARCH) -DVX_CPU_FAMILY=$$VXWORKS_ARCH -DTOOL_FAMILY=gnu -DTOOL=gnu -D_WRS_KERNEL -D_VSB_CONFIG_FILE=\'<../lib/h/config/vsbConfig.h>\' +QMAKE_CFLAGS_SHLIB = # remove -fPIC +QMAKE_CFLAGS_STATIC_LIB = # remove -fPIC +QMAKE_CXX = c++$$VXWORKS_ARCH_MUNCH +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +QMAKE_CXXFLAGS_SHLIB = # remove -fPIC +QMAKE_CXXFLAGS_STATIC_LIB = # remove -fPIC +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX +QMAKE_LFLAGS_SHLIB = -Wl,-Ur -L $(WIND_BASE)/target/lib/$$VXWORKS_ARCH/$$VXWORKS_CPU/common # remove -shared +QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_APP += -Wl,-Ur -L $(WIND_BASE)/target/lib/$$VXWORKS_ARCH/$$VXWORKS_CPU/common +# QMAKE_LIBS_NETWORK = # -lnetwrap # only needed if kernel is missing gethostbyname() and friends +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_THREAD = + +load(qt_config) + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h new file mode 100644 index 000000000..4161c37a7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../vxworks-simpentium-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf new file mode 100644 index 000000000..5aa96dff7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf @@ -0,0 +1,92 @@ +# +# qmake configuration for vxworks-simpentium-dcc +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = vxworks +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib + +include(../common/unix.conf) + +VXWORKS_ARCH = simlinux +VXWORKS_CPU = SIMLINUX +VXWORKS_DIAB_SPEC = -tX86LH:vxworks66 +VXWORKS_ARCH_MUNCH = pentium + +QMAKE_COMPILER = wr_dcc + +QMAKE_CC = dcc +QMAKE_CFLAGS += $$VXWORKS_DIAB_SPEC -Xkeywords=0x0 -Xcode-absolute-far -Xansi -Xforce-declarations -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip -DCPU=$$upper($$VXWORKS_ARCH) -DVX_CPU_FAMILY=$$VXWORKS_ARCH -DTOOL_FAMILY=diab -DTOOL=diab -D_WRS_KERNEL -DVXWORKS -D_VSB_CONFIG_FILE=\'<../lib/h/config/vsbConfig.h>\' +QMAKE_CFLAGS_DEPS += +QMAKE_CFLAGS_WARN_ON += +QMAKE_CFLAGS_WARN_OFF += -Xsuppress-warnings +QMAKE_CFLAGS_RELEASE += +QMAKE_CFLAGS_DEBUG += -g +QMAKE_CFLAGS_SHLIB += +QMAKE_CFLAGS_STATIC_LIB += +QMAKE_CFLAGS_YACC += +QMAKE_CFLAGS_HIDESYMS += +QMAKE_CFLAGS_PRECOMPILE += +QMAKE_CFLAGS_USE_PRECOMPILE += + +QMAKE_CXX = dcc +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_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS +QMAKE_CXXFLAGS_PRECOMPILE += +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_LINK = dld +QMAKE_LINK_SHLIB = dld +QMAKE_LFLAGS += $$VXWORKS_DIAB_SPEC -L $(WIND_BASE)/target/lib/$$VXWORKS_ARCH/$$VXWORKS_CPU/common +QMAKE_LFLAGS_RELEASE += +QMAKE_LFLAGS_DEBUG += +QMAKE_LFLAGS_APP += -r5 +QMAKE_LFLAGS_SHLIB += +QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME += +QMAKE_LFLAGS_THREAD += +QMAKE_LFLAGS_NOUNDEF += +QMAKE_LFLAGS_RPATH = + +QMAKE_PCH_OUTPUT_EXT = .gch + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = +QMAKE_LFLAGS_DYNAMIC_LIST = + +QMAKE_CFLAGS_THREAD += -D_REENTRANT +QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = $(WIND_HOME)/GSS/include +QMAKE_LIBDIR_X11 = $(WIND_HOME)/GSS/lib +QMAKE_INCDIR_OPENGL = $$QMAKE_INCDIR_X11 +QMAKE_LIBDIR_OPENGL = $$QMAKE_LIBDIR_X11 + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_X11 = -lXext -lX11 +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_THREAD = +QMAKE_LIBS_NETWORK = # -lnet # only needed if kernel is missing gethostbyname and friends + +QMAKE_AR = ar cqs +QMAKE_OBJCOPY = objcopy +QMAKE_NM = nm -P +QMAKE_RANLIB = + +QMAKE_STRIP = strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded + +load(qt_config) + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h new file mode 100644 index 000000000..4161c37a7 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../vxworks-simpentium-g++/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf new file mode 100644 index 000000000..4d5cc97fa --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf @@ -0,0 +1,38 @@ +# +# qmake configuration for vxworks-simpentium-g++ +# + +MAKEFILE_GENERATOR = UNIX +QMAKE_PLATFORM = vxworks +CONFIG += incremental +QMAKE_INCREMENTAL_STYLE = sublib +DEFINES += VXWORKS + +include(../../common/linux.conf) + +VXWORKS_ARCH = simlinux +VXWORKS_CPU = SIMLINUX +VXWORKS_ARCH_MUNCH = pentium + +include(../../common/gcc-base-unix.conf) +include(../../common/g++-unix.conf) + +QMAKE_CC = cc$$VXWORKS_ARCH_MUNCH +QMAKE_CFLAGS = -fno-builtin -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip -DCPU=$$upper($$VXWORKS_ARCH) -DVX_CPU_FAMILY=$$VXWORKS_ARCH -DTOOL_FAMILY=gnu -DTOOL=gnu -D_WRS_KERNEL -D_VSB_CONFIG_FILE=\'<../lib/h/config/vsbConfig.h>\' +QMAKE_CFLAGS_SHLIB = # remove -fPIC +QMAKE_CFLAGS_STATIC_LIB = # remove -fPIC +QMAKE_CXX = c++$$VXWORKS_ARCH_MUNCH +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS +QMAKE_CXXFLAGS_SHLIB = # remove -fPIC +QMAKE_CXXFLAGS_STATIC_LIB = # remove -fPIC +QMAKE_LINK = $$QMAKE_CXX +QMAKE_LINK_SHLIB = $$QMAKE_CXX +QMAKE_LFLAGS_SHLIB = -Wl,-Ur -L $(WIND_BASE)/target/lib/$$VXWORKS_ARCH/$$VXWORKS_CPU/common # remove -shared +QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_APP += -Wl,-Ur -L $(WIND_BASE)/target/lib/$$VXWORKS_ARCH/$$VXWORKS_CPU/common +QMAKE_LIBS_NETWORK = # -lnetwrap # only needed if kernel is missing gethostbyname() and friends +QMAKE_LIBS_DYNLOAD = +QMAKE_LIBS_THREAD = + +load(qt_config) + diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h new file mode 100644 index 000000000..7365e53d5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +// Get Qt defines/settings + +#include "qglobal.h" +#include "qfunctions_vxworks.h" + +#define QT_USE_XOPEN_LFS_EXTENSIONS +#include "../../common/posix/qplatformdefs.h" + +#undef QT_LSTAT +#undef QT_MKDIR +#undef QT_READ +#undef QT_WRITE +#undef QT_SOCKLEN_T +#undef QT_SOCKET_CONNECT + +#define QT_LSTAT QT_STAT +#define QT_MKDIR(dir, perm) ::mkdir(dir) + +#define QT_READ(fd, buf, len) ::read(fd, (char*) buf, len) +#define QT_WRITE(fd, buf, len) ::write(fd, (char*) buf, len) + +// there IS a socklen_t in sys/socket.h (unsigned int), +// but sockLib.h uses int in all function declaration... +#define QT_SOCKLEN_T int +#define QT_SOCKET_CONNECT(sd, to, tolen) \ + ::connect(sd, (struct sockaddr *) to, tolen) + +#define QT_SNPRINTF ::snprintf +#define QT_VSNPRINTF ::vsnprintf + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-clang-msvc/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-clang-msvc/qmake.conf new file mode 100644 index 000000000..0041788ef --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-clang-msvc/qmake.conf @@ -0,0 +1,20 @@ +# +# qmake configuration for win32-clang-msvc +# +# Notice: this uses the clang-cl wrapper +# + +include(../common/msvc-desktop.conf) + +QMAKE_COMPILER += clang_cl llvm + +QMAKE_CC = clang-cl +QMAKE_CXX = $$QMAKE_CC + +QMAKE_CFLAGS += -Wno-microsoft-enum-value +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + +# Precompiled headers are not supported yet by clang +CONFIG -= precompile_header + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-clang-msvc/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-clang-msvc/qplatformdefs.h new file mode 100644 index 000000000..8a3afa763 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-clang-msvc/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../win32-msvc/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-g++/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-g++/qmake.conf new file mode 100644 index 000000000..a4955e99f --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-g++/qmake.conf @@ -0,0 +1,84 @@ +# +# qmake configuration for win32-g++ +# +# Written for MinGW-w64 / gcc 5.3 or higher +# +# Cross compile example for i686-w64-mingw32-g++: +# configure -xplatform win32-g++ -device-option CROSS_COMPILE=i686-w64-mingw32- +# + +load(device_config) +include(../common/gcc-base.conf) +include(../common/g++-base.conf) + +# modifications to gcc-base.conf and g++-base.conf + +MAKEFILE_GENERATOR = MINGW +QMAKE_PLATFORM = win32 mingw +CONFIG += debug_and_release debug_and_release_target precompile_header +DEFINES += UNICODE _UNICODE +QMAKE_COMPILER_DEFINES += __GNUC__ WIN32 + +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = bison -y +QMAKE_YACCFLAGS = -d +QMAKE_CFLAGS += -fno-keep-inline-dllexport +QMAKE_CFLAGS_WARN_ON += -Wextra + +QMAKE_CFLAGS_SSE2 += -mstackrealign + +QMAKE_CXX = $${CROSS_COMPILE}g++ +QMAKE_CXXFLAGS_RTTI_ON = -frtti +QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti +QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads + +QMAKE_INCDIR = + +QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src +QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< +QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src +QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +QMAKE_LINK = $${CROSS_COMPILE}g++ +QMAKE_LINK_C = $${CROSS_COMPILE}gcc +QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads +QMAKE_LFLAGS_RELEASE = -Wl,-s +QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console +QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows +QMAKE_LFLAGS_DLL = -shared +QMAKE_LFLAGS_GCSECTIONS = -Wl,--gc-sections +equals(QMAKE_HOST.os, Windows) { + QMAKE_LINK_OBJECT_MAX = 10 + QMAKE_LINK_OBJECT_SCRIPT = object_script +} +QMAKE_EXT_OBJ = .o +QMAKE_EXT_RES = _res.o +QMAKE_PREFIX_SHLIB = +QMAKE_EXTENSION_SHLIB = dll +QMAKE_PREFIX_STATICLIB = lib +QMAKE_EXTENSION_STATICLIB = a +QMAKE_LIB_EXTENSIONS = a dll.a + +QMAKE_LIBS = +QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -luser32 -ladvapi32 +QMAKE_LIBS_NETWORK = -lws2_32 +QMAKE_LIBS_OPENGL = -lglu32 -lopengl32 -lgdi32 -luser32 +QMAKE_LIBS_OPENGL_ES2 = -lgdi32 -luser32 +QMAKE_LIBS_OPENGL_ES2_DEBUG = -lgdi32 -luser32 +QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32 +QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain + +QMAKE_IDL = midl +QMAKE_LIB = $${CROSS_COMPILE}ar -rc +QMAKE_RC = $${CROSS_COMPILE}windres + +QMAKE_STRIP = $${CROSS_COMPILE}strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded +QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy +QMAKE_NM = $${CROSS_COMPILE}nm -P + +include(../common/angle.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-g++/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-g++/qplatformdefs.h new file mode 100644 index 000000000..c5a70b144 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-g++/qplatformdefs.h @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#ifdef UNICODE +#ifndef _UNICODE +#define _UNICODE +#endif +#endif + +// Get Qt defines/settings + +#include "qglobal.h" + +#include <tchar.h> +#include <io.h> +#include <direct.h> +#include <stdio.h> +#include <fcntl.h> +#include <errno.h> +#include <sys/stat.h> +#include <stdlib.h> +#include <limits.h> + +#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 +} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT; +#endif + +#ifdef QT_LARGEFILE_SUPPORT +#define QT_STATBUF struct _stati64 // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs +#define QT_STAT ::_stati64 +#define QT_FSTAT ::_fstati64 +#else +#define QT_STATBUF struct _stat // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stat // non-ANSI defs +#define QT_STAT ::_stat +#define QT_FSTAT ::_fstat +#endif +#define QT_STAT_REG _S_IFREG +#define QT_STAT_DIR _S_IFDIR +#define QT_STAT_MASK _S_IFMT +#if defined(_S_IFLNK) +# define QT_STAT_LNK _S_IFLNK +#endif +#define QT_FILENO _fileno +#define QT_OPEN ::_open +#define QT_CLOSE ::_close +#ifdef QT_LARGEFILE_SUPPORT +#define QT_LSEEK ::_lseeki64 +#ifndef UNICODE +#define QT_TSTAT ::_stati64 +#else +#define QT_TSTAT ::_wstati64 +#endif +#else +#define QT_LSEEK ::_lseek +#ifndef UNICODE +#define QT_TSTAT ::_stat +#else +#define QT_TSTAT ::_wstat +#endif +#endif +#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 0 +#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 +#if defined(O_TEXT) +# define QT_OPEN_TEXT _O_TEXT +# define QT_OPEN_BINARY _O_BINARY +#endif + +#include "../common/c89/qplatformdefs.h" + +#ifdef QT_LARGEFILE_SUPPORT +#undef QT_FSEEK +#undef QT_FTELL +#undef QT_OFF_T + +#define QT_FSEEK ::fseeko64 +#define QT_FTELL ::ftello64 +#define QT_OFF_T off64_t +#endif + +#define QT_SIGNAL_ARGS int + +#define QT_VSNPRINTF ::_vsnprintf +#define QT_SNPRINTF ::_snprintf + +# define F_OK 0 +# define X_OK 1 +# define W_OK 2 +# define R_OK 4 + + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-icc/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-icc/qmake.conf new file mode 100644 index 000000000..4d18b1cc5 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-icc/qmake.conf @@ -0,0 +1,58 @@ +# +# qmake configuration for win32-icc +# +# Written for Intel C++ Compiler on Windows / icl 16.0 or higher +# + +# Use the Microsoft (R) C/C++ Optimizing Compiler configuration, +# since ICC on Windows pretends to be MSVC + +include(../common/msvc-desktop.conf) + +# modifications to msvc-desktop.conf + +QMAKE_COMPILER += intel_icl + +QMAKE_CC = icl +QMAKE_CFLAGS = -nologo -Zm200 /Qprec /Qwd1744,1738,809,3373 +QMAKE_CFLAGS_WARN_ON = -W3 /Qwd673 +QMAKE_CFLAGS_WARN_OFF = -W0 /Qwd673 +QMAKE_CFLAGS_DEBUG = -Od -Zi -MDd +QMAKE_CFLAGS_LTCG = -Qipo +QMAKE_CFLAGS_DISABLE_LTCG = -Qno-ipo + +QMAKE_CFLAGS_SSE2 = -QxSSE2 +QMAKE_CFLAGS_SSE3 = -QxSSE3 +QMAKE_CFLAGS_SSSE3 = -QxSSSE3 +QMAKE_CFLAGS_SSE4_1 = -QxSSE4.1 +QMAKE_CFLAGS_SSE4_2 = -QxSSE4.2 +QMAKE_CFLAGS_AVX = -QxAVX +QMAKE_CFLAGS_AVX2 = -QxCORE-AVX2 +QMAKE_CFLAGS_AVX512F += -QxCOMMON-AVX512 +QMAKE_CFLAGS_AVX512CD += -QxCOMMON-AVX512 +QMAKE_CFLAGS_AVX512ER += -QxMIC-AVX512 +QMAKE_CFLAGS_AVX512PF += -QxMIC-AVX512 +QMAKE_CFLAGS_AVX512DQ += -QxCORE-AVX512 +QMAKE_CFLAGS_AVX512BW += -QxCORE-AVX512 +QMAKE_CFLAGS_AVX512VL += -QxCORE-AVX512 +QMAKE_CFLAGS_F16C = $$QMAKE_CFLAGS_AVX2 + +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_CXX11 = -Qstd=c++11 +# ICC supports the following but Qt won't compile +#QMAKE_CXXFLAGS_CXX14 = -Qstd=c++14 +#QMAKE_CXXFLAGS_CXX1Z = -Qstd=c++1z +QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG +QMAKE_CXXFLAGS_DISABLE_LTCG = $$QMAKE_CFLAGS_DISABLE_LTCG + +QMAKE_LINK = xilink +QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG + +QMAKE_LIB = xilib /NOLOGO + +include(../common/angle.conf) + +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-icc/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-icc/qplatformdefs.h new file mode 100644 index 000000000..8a3afa763 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-icc/qplatformdefs.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../win32-msvc/qplatformdefs.h" diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-msvc/qmake.conf b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-msvc/qmake.conf new file mode 100644 index 000000000..5c38330ad --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-msvc/qmake.conf @@ -0,0 +1,8 @@ +# +# qmake configuration for win32-msvc +# +# Written for Microsoft C/C++ Optimizing Compiler (all desktop versions) +# + +include(../common/msvc-desktop.conf) +load(qt_config) diff --git a/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-msvc/qplatformdefs.h b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-msvc/qplatformdefs.h new file mode 100644 index 000000000..9573d18a4 --- /dev/null +++ b/qrenderdoc/3rdparty/qt/x64/mkspecs/win32-msvc/qplatformdefs.h @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#ifdef UNICODE +#ifndef _UNICODE +#define _UNICODE +#endif +#endif + +// Get Qt defines/settings + +#include "qglobal.h" + +#define _POSIX_ +#include <limits.h> +#undef _POSIX_ + +#include <tchar.h> +#include <io.h> +#include <direct.h> +#include <stdio.h> +#include <fcntl.h> +#include <errno.h> +#include <sys/stat.h> +#include <stdlib.h> + +#ifdef QT_LARGEFILE_SUPPORT +#define QT_STATBUF struct _stati64 // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs +#define QT_STAT ::_stati64 +#define QT_FSTAT ::_fstati64 +#else +#define QT_STATBUF struct _stat // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stat // non-ANSI defs +#define QT_STAT ::_stat +#define QT_FSTAT ::_fstat +#endif +#define QT_STAT_REG _S_IFREG +#define QT_STAT_DIR _S_IFDIR +#define QT_STAT_MASK _S_IFMT +#if defined(_S_IFLNK) +# define QT_STAT_LNK _S_IFLNK +#else +# define QT_STAT_LNK 0120000 +#endif +#define QT_FILENO _fileno +#define QT_OPEN ::_open +#define QT_CLOSE ::_close +#ifdef QT_LARGEFILE_SUPPORT +#define QT_LSEEK ::_lseeki64 +#define QT_TSTAT ::_tstati64 +#else +#define QT_LSEEK ::_lseek +#define QT_TSTAT ::_tstat +#endif +#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 0 +#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 +#if defined(O_TEXT) +# define QT_OPEN_TEXT _O_TEXT +# define QT_OPEN_BINARY _O_BINARY +#endif + +#include "../common/c89/qplatformdefs.h" + +#ifdef QT_LARGEFILE_SUPPORT +#undef QT_FSEEK +#undef QT_FTELL +#undef QT_OFF_T + +#define QT_FSEEK ::_fseeki64 +#define QT_FTELL ::_ftelli64 +#define QT_OFF_T __int64 +#endif + +#define QT_SIGNAL_ARGS int + +#define QT_VSNPRINTF(buffer, count, format, arg) \ + vsnprintf_s(buffer, count, count-1, format, arg) + +#define QT_SNPRINTF ::_snprintf + +# define F_OK 0 +# define X_OK 1 +# define W_OK 2 +# define R_OK 4 + +typedef int mode_t; + +#endif // QPLATFORMDEFS_H diff --git a/qrenderdoc/3rdparty/qt/x64/plugins/imageformats/qsvg.dll b/qrenderdoc/3rdparty/qt/x64/plugins/imageformats/qsvg.dll new file mode 100644 index 000000000..dd9f15563 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/plugins/imageformats/qsvg.dll differ diff --git a/qrenderdoc/3rdparty/qt/x64/plugins/platforms/qwindows.dll b/qrenderdoc/3rdparty/qt/x64/plugins/platforms/qwindows.dll new file mode 100644 index 000000000..b5797fb59 Binary files /dev/null and b/qrenderdoc/3rdparty/qt/x64/plugins/platforms/qwindows.dll differ diff --git a/qrenderdoc/3rdparty/swig/COPYRIGHT b/qrenderdoc/3rdparty/swig/COPYRIGHT new file mode 100644 index 000000000..c3fbbdebd --- /dev/null +++ b/qrenderdoc/3rdparty/swig/COPYRIGHT @@ -0,0 +1,111 @@ +SWIG Copyright and Authors +-------------------------- + +Copyright (c) 1995-2011 The SWIG Developers +Copyright (c) 2005-2006 Arizona Board of Regents (University of Arizona). +Copyright (c) 1998-2005 University of Chicago. +Copyright (c) 1995-1998 The University of Utah and the Regents of the University of California + +Portions also copyrighted by: + Network Applied Communication Laboratory, Inc + Information-technology Promotion Agency, Japan + +Active SWIG Developers: + William Fulton (wsf@fultondesigns.co.uk) (SWIG core, Java, C#, Windows, Cygwin) + Olly Betts (olly@survex.com) (PHP) + Joseph Wang (joequant@gmail.com) (R) + Xavier Delacour (xavier.delacour@gmail.com) (Octave) + David Nadlinger (code@klickverbot.at) (D) + Oliver Buchtala (oliver.buchtala@gmail.com) (Javascript) + Neha Narang (narangneha03@gmail.com) (Javascript) + Simon Marchetto (simon.marchetto@scilab-enterprises.com) (Scilab) + +Past SWIG developers and major contributors include: + Dave Beazley (dave-swig@dabeaz.com) (SWIG core, Python, Tcl, Perl) + Henning Thielemann (swig@henning-thielemann.de) (Modula3) + Matthias Köppe (mkoeppe@mail.math.uni-magdeburg.de) (Guile, MzScheme) + Luigi Ballabio (luigi.ballabio@fastwebnet.it) (STL wrapping) + Mikel Bancroft (mikel@franz.com) (Allegro CL) + Surendra Singhi (efuzzyone@netscape.net) (CLISP, CFFI) + Marcelo Matus (mmatus@acms.arizona.edu) (SWIG core, Python, UTL[python,perl,tcl,ruby]) + Art Yerkes (ayerkes@speakeasy.net) (Ocaml) + Lyle Johnson (lyle@users.sourceforge.net) (Ruby) + Charlie Savage (cfis@interserv.com) (Ruby) + Thien-Thi Nguyen (ttn@glug.org) (build/test/misc) + Richard Palmer (richard@magicality.org) (PHP) + Sam Liddicott - Ananova Ltd (saml@liddicott.com) (PHP) + Tim Hockin - Sun Microsystems (thockin@sun.com) (PHP) + Kevin Ruland (PHP) + Shibukawa Yoshiki (Japanese Translation) + Jason Stewart (jason@openinformatics.com) (Perl5) + Loic Dachary (Perl5) + David Fletcher (Perl5) + Gary Holt (Perl5) + Masaki Fukushima (Ruby) + Scott Michel (scottm@cs.ucla.edu) (Java directors) + Tiger Feng (songyanf@cs.uchicago.edu) (SWIG core) + Mark Rose (mrose@stm.lbl.gov) (Directors) + Jonah Beckford (beckford@usermail.com) (CHICKEN) + Ahmon Dancy (dancy@franz.com) (Allegro CL) + Dirk Gerrits (Allegro CL) + Neil Cawse (C#) + Harco de Hilster (Java) + Alexey Dyachenko (dyachenko@fromru.com) (Tcl) + Bob Techentin (Tcl) + Martin Froehlich <MartinFroehlich@ACM.org> (Guile) + Marcio Luis Teixeira <marciot@holly.colostate.edu> (Guile) + Duncan Temple Lang (R) + Miklos Vajna <vmiklos@frugalware.org> (PHP directors) + Mark Gossage (mark@gossage.cjb.net) (Lua) + Raman Gopalan (ramangopalan@gmail.com) (eLua) + Gonzalo Garramuno (ggarra@advancedsl.com.ar) (Ruby, Ruby's UTL) + John Lenz (Guile, MzScheme updates, Chicken module, runtime system) + Baozeng Ding <sploving1@163.com> (Scilab) + Ian Lance Taylor (Go) + Vadim Zeitlin (PCRE, Python) + Stefan Zager (szager@gmail.com) (Python) + Vincent Couvert (Scilab) + Sylvestre Ledru (Scilab) + Wolfgang Frisch (Scilab) + +Past contributors include: + James Michael DuPont, Clark McGrew, Dustin Mitchell, Ian Cooke, Catalin Dumitrescu, Baran + Kovuk, Oleg Tolmatcev, Tal Shalif, Lluis Padro, Chris Seatory, Igor Bely, Robin Dunn, + Edward Zimmermann, David Ascher, Dominique Dumont, Pier Giorgio Esposito, Hasan Baran Kovuk, + Klaus Wiederänders, Richard Beare, Hans Oesterholt. + (See CHANGES and CHANGES.current and the bug tracker for a more complete list). + +Past students: + Songyan Feng (Chicago). + Xinghua Shi (Chicago). + Jing Cao (Chicago). + Aquinas Hobor (Chicago). + +Historically, the following people contributed to early versions of SWIG. +Peter Lomdahl, Brad Holian, Shujia Zhou, Niels Jensen, and Tim Germann +at Los Alamos National Laboratory were the first users. Patrick +Tullmann at the University of Utah suggested the idea of automatic +documentation generation. John Schmidt and Kurtis Bleeker at the +University of Utah tested out the early versions. Chris Johnson +supported SWIG's developed at the University of Utah. John Buckman, +Larry Virden, and Tom Schwaller provided valuable input on the first +releases and improving the portability of SWIG. David Fletcher and +Gary Holt have provided a great deal of input on improving SWIG's +Perl5 implementation. Kevin Butler contributed the first Windows NT +port. + +Early bug reports and patches: +Adam Hupp, Arthur Smyles, Brad Clements, Brett Williams, Buck Hodges, +Burkhard Kloss, Chia-Liang Kao, Craig Files, Dennis Marsa, Dieter Baron, +Drake Diedrich, Fleur Diana Dragan, Gary Pennington, Geoffrey Hort, Gerald Williams, +Greg Anderson, Greg Kochanski, Greg Troxel, Henry Rowley, Irina Kotlova, +Israel Taller, James Bailey, Jim Fulton, Joel Reed, Jon Travis, +Junio Hamano, Justin Heyes-Jones, Karl Forner, Keith Davidson, +Krzysztof Kozminski, Larry Virden, Luke J Crook, Magnus Ljung, Marc Zonzon, +Mark Howson, Micahel Scharf, Michel Sanner, Mike Romberg, Mike Simons, +Mike Weiblen, Paul Brannan, Ram Bhamidipaty, Reinhard Fobbe, Rich Wales, +Richard Salz, Roy Lecates, Rudy Albachten, Scott Drummonds +Scott Michel, Shaun Lowry, Steve Galser, Tarn Weisner Burton, +Thomas Weidner, Tony Seward, Uwe Steinmann, Vadim Chugunov, Wyss Clemens, +Zhong Ren. + diff --git a/qrenderdoc/3rdparty/swig/LICENSE b/qrenderdoc/3rdparty/swig/LICENSE new file mode 100644 index 000000000..d7a422fda --- /dev/null +++ b/qrenderdoc/3rdparty/swig/LICENSE @@ -0,0 +1,22 @@ +SWIG is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. See the LICENSE-GPL file for +the full terms of the GNU General Public license version 3. + +Portions of SWIG are also licensed under the terms of the licenses +in the file LICENSE-UNIVERSITIES. You must observe the terms of +these licenses, as well as the terms of the GNU General Public License, +when you distribute SWIG. + +The SWIG library and examples, under the Lib and Examples top level +directories, are distributed under the following terms: + + You may copy, modify, distribute, and make derivative works based on + this software, in source code or object code form, without + restriction. If you distribute the software to others, you may do + so according to the terms of your choice. This software is offered as + is, without warranty of any kind. + +See the COPYRIGHT file for a list of contributors to SWIG and their +copyright notices. diff --git a/qrenderdoc/3rdparty/swig/Lib/allkw.swg b/qrenderdoc/3rdparty/swig/Lib/allkw.swg new file mode 100644 index 000000000..b9413191f --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/allkw.swg @@ -0,0 +1,36 @@ +#ifndef __Lib_allkw_swg__ +#define __Lib_allkw_swg__ + + +/* + Include all the known keyword warnings. Very useful for adding test + files to the test-suite, or checking if your own library is ok for all + the swig supported languages. + + Use as + + swig -Wallkw ... + + If you add a new language, remember to create a separate languagekw.swg + file, and add it here. + +*/ + +%include <chicken/chickenkw.swg> +%include <csharp/csharpkw.swg> +%include <d/dkw.swg> +%include <go/gokw.swg> +%include <java/javakw.swg> +%include <lua/luakw.swg> +%include <ocaml/ocamlkw.swg> +%include <perl5/perlkw.swg> +%include <php5/phpkw.swg> +%include <php/phpkw.swg> +%include <pike/pikekw.swg> +%include <python/pythonkw.swg> +%include <r/rkw.swg> +%include <ruby/rubykw.swg> +%include <tcl/tclkw.swg> + + +#endif //__Lib_allkw_swg__ diff --git a/qrenderdoc/3rdparty/swig/Lib/attribute.i b/qrenderdoc/3rdparty/swig/Lib/attribute.i new file mode 100644 index 000000000..d580dbfe9 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/attribute.i @@ -0,0 +1,21 @@ +/* ----------------------------------------------------------------------------- + * attribute.i + * + * SWIG library file for implementing attributes. + * ----------------------------------------------------------------------------- */ + +/* we use a simple exception warning here */ +%{ +#include <stdio.h> +%} +#define %attribute_exception(code,msg) printf("%s\n",msg) + +#ifndef %arg +#define %arg(x...) x +#endif + +#ifndef %mangle +#define %mangle(Type...) #@Type +#endif + +%include <typemaps/attribute.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/carrays.i b/qrenderdoc/3rdparty/swig/Lib/carrays.i new file mode 100644 index 000000000..3a9c3cfee --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/carrays.i @@ -0,0 +1,116 @@ +/* ----------------------------------------------------------------------------- + * carrays.i + * + * SWIG library file containing macros that can be used to manipulate simple + * pointers as arrays. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * %array_functions(TYPE,NAME) + * + * Generates functions for creating and accessing elements of a C array + * (as pointers). Creates the following functions: + * + * TYPE *new_NAME(int nelements) + * void delete_NAME(TYPE *); + * TYPE NAME_getitem(TYPE *, int index); + * void NAME_setitem(TYPE *, int index, TYPE value); + * + * ----------------------------------------------------------------------------- */ + +%define %array_functions(TYPE,NAME) +%{ +static TYPE *new_##NAME(int nelements) { %} +#ifdef __cplusplus +%{ return new TYPE[nelements](); %} +#else +%{ return (TYPE *) calloc(nelements,sizeof(TYPE)); %} +#endif +%{} + +static void delete_##NAME(TYPE *ary) { %} +#ifdef __cplusplus +%{ delete [] ary; %} +#else +%{ free(ary); %} +#endif +%{} + +static TYPE NAME##_getitem(TYPE *ary, int index) { + return ary[index]; +} +static void NAME##_setitem(TYPE *ary, int index, TYPE value) { + ary[index] = value; +} +%} + +TYPE *new_##NAME(int nelements); +void delete_##NAME(TYPE *ary); +TYPE NAME##_getitem(TYPE *ary, int index); +void NAME##_setitem(TYPE *ary, int index, TYPE value); + +%enddef + + +/* ----------------------------------------------------------------------------- + * %array_class(TYPE,NAME) + * + * Generates a class wrapper around a C array. The class has the following + * interface: + * + * struct NAME { + * NAME(int nelements); + * ~NAME(); + * TYPE getitem(int index); + * void setitem(int index, TYPE value); + * TYPE * cast(); + * static NAME *frompointer(TYPE *t); + * } + * + * ----------------------------------------------------------------------------- */ + +%define %array_class(TYPE,NAME) +%{ +typedef TYPE NAME; +%} +typedef struct { + /* Put language specific enhancements here */ +} NAME; + +%extend NAME { + +#ifdef __cplusplus +NAME(int nelements) { + return new TYPE[nelements](); +} +~NAME() { + delete [] self; +} +#else +NAME(int nelements) { + return (TYPE *) calloc(nelements,sizeof(TYPE)); +} +~NAME() { + free(self); +} +#endif + +TYPE getitem(int index) { + return self[index]; +} +void setitem(int index, TYPE value) { + self[index] = value; +} +TYPE * cast() { + return self; +} +static NAME *frompointer(TYPE *t) { + return (NAME *) t; +} + +}; + +%types(NAME = TYPE); + +%enddef + diff --git a/qrenderdoc/3rdparty/swig/Lib/cdata.i b/qrenderdoc/3rdparty/swig/Lib/cdata.i new file mode 100644 index 000000000..3ac693cfc --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/cdata.i @@ -0,0 +1,119 @@ +/* ----------------------------------------------------------------------------- + * cdata.i + * + * SWIG library file containing macros for manipulating raw C data as strings. + * ----------------------------------------------------------------------------- */ + +%{ +typedef struct SWIGCDATA { + char *data; + int len; +} SWIGCDATA; +%} + +/* ----------------------------------------------------------------------------- + * Typemaps for returning binary data + * ----------------------------------------------------------------------------- */ + +#if SWIGGUILE +%typemap(out) SWIGCDATA { + $result = scm_from_locale_stringn($1.data,$1.len); +} +%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH); + +#elif SWIGCHICKEN + +%typemap(out) SWIGCDATA { + C_word *string_space = C_alloc(C_SIZEOF_STRING($1.len)); + $result = C_string(&string_space, $1.len, $1.data); +} +%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH); + +#elif SWIGPHP5 + +%typemap(out) SWIGCDATA { + ZVAL_STRINGL($result, $1.data, $1.len, 1); +} +%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH); + +#elif SWIGPHP7 + +%typemap(out) SWIGCDATA { + ZVAL_STRINGL($result, $1.data, $1.len); +} +%typemap(in) (const void *indata, int inlen) = (char *STRING, int LENGTH); + +#elif SWIGJAVA + +%apply (char *STRING, int LENGTH) { (const void *indata, int inlen) } +%typemap(jni) SWIGCDATA "jbyteArray" +%typemap(jtype) SWIGCDATA "byte[]" +%typemap(jstype) SWIGCDATA "byte[]" +%fragment("SWIG_JavaArrayOutCDATA", "header") { +static jbyteArray SWIG_JavaArrayOutCDATA(JNIEnv *jenv, char *result, jsize sz) { + jbyte *arr; + int i; + jbyteArray jresult = JCALL1(NewByteArray, jenv, sz); + if (!jresult) + return NULL; + arr = JCALL2(GetByteArrayElements, jenv, jresult, 0); + if (!arr) + return NULL; + for (i=0; i<sz; i++) + arr[i] = (jbyte)result[i]; + JCALL3(ReleaseByteArrayElements, jenv, jresult, arr, 0); + return jresult; +} +} +%typemap(out, fragment="SWIG_JavaArrayOutCDATA") SWIGCDATA +%{$result = SWIG_JavaArrayOutCDATA(jenv, (char *)$1.data, $1.len); %} +%typemap(javaout) SWIGCDATA { + return $jnicall; + } + +#endif + + +/* ----------------------------------------------------------------------------- + * %cdata(TYPE [, NAME]) + * + * Convert raw C data to a binary string. + * ----------------------------------------------------------------------------- */ + +%define %cdata(TYPE,NAME...) + +%insert("header") { +#if #NAME == "" +static SWIGCDATA cdata_##TYPE(TYPE *ptr, int nelements) { +#else +static SWIGCDATA cdata_##NAME(TYPE *ptr, int nelements) { +#endif + SWIGCDATA d; + d.data = (char *) ptr; +#if #TYPE != "void" + d.len = nelements*sizeof(TYPE); +#else + d.len = nelements; +#endif + return d; +} +} + +%typemap(default) int nelements "$1 = 1;" + +#if #NAME == "" +SWIGCDATA cdata_##TYPE(TYPE *ptr, int nelements); +#else +SWIGCDATA cdata_##NAME(TYPE *ptr, int nelements); +#endif +%enddef + +%typemap(default) int nelements; + +%rename(cdata) ::cdata_void(void *ptr, int nelements); + +%cdata(void); + +/* Memory move function. Due to multi-argument typemaps this appears to be wrapped as +void memmove(void *data, const char *s); */ +void memmove(void *data, const void *indata, int inlen); diff --git a/qrenderdoc/3rdparty/swig/Lib/cmalloc.i b/qrenderdoc/3rdparty/swig/Lib/cmalloc.i new file mode 100644 index 000000000..9f58bc03c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/cmalloc.i @@ -0,0 +1,110 @@ +/* ----------------------------------------------------------------------------- + * cmalloc.i + * + * SWIG library file containing macros that can be used to create objects using + * the C malloc function. + * ----------------------------------------------------------------------------- */ + +%{ +#include <stdlib.h> +%} + +/* %malloc(TYPE [, NAME = TYPE]) + %calloc(TYPE [, NAME = TYPE]) + %realloc(TYPE [, NAME = TYPE]) + %free(TYPE [, NAME = TYPE]) + %allocators(TYPE [,NAME = TYPE]) + + Creates functions for allocating/reallocating memory. + + TYPE *malloc_NAME(int nbytes = sizeof(TYPE); + TYPE *calloc_NAME(int nobj=1, int size=sizeof(TYPE)); + TYPE *realloc_NAME(TYPE *ptr, int nbytes); + void free_NAME(TYPE *ptr); + +*/ + +%define %malloc(TYPE,NAME...) +#if #NAME != "" +%rename(malloc_##NAME) ::malloc(int nbytes); +#else +%rename(malloc_##TYPE) ::malloc(int nbytes); +#endif + +#if #TYPE != "void" +%typemap(default) int nbytes "$1 = (int) sizeof(TYPE);" +#endif +TYPE *malloc(int nbytes); +%typemap(default) int nbytes; +%enddef + +%define %calloc(TYPE,NAME...) +#if #NAME != "" +%rename(calloc_##NAME) ::calloc(int nobj, int sz); +#else +%rename(calloc_##TYPE) ::calloc(int nobj, int sz); +#endif +#if #TYPE != "void" +%typemap(default) int sz "$1 = (int) sizeof(TYPE);" +#else +%typemap(default) int sz "$1 = 1;" +#endif +%typemap(default) int nobj "$1 = 1;" +TYPE *calloc(int nobj, int sz); +%typemap(default) int sz; +%typemap(default) int nobj; +%enddef + +%define %realloc(TYPE,NAME...) +%insert("header") { +#if #NAME != "" +TYPE *realloc_##NAME(TYPE *ptr, int nitems) +#else +TYPE *realloc_##TYPE(TYPE *ptr, int nitems) +#endif +{ +#if #TYPE != "void" +return (TYPE *) realloc(ptr, nitems*sizeof(TYPE)); +#else +return (TYPE *) realloc(ptr, nitems); +#endif +} +} +#if #NAME != "" +TYPE *realloc_##NAME(TYPE *ptr, int nitems); +#else +TYPE *realloc_##TYPE(TYPE *ptr, int nitems); +#endif +%enddef + +%define %free(TYPE,NAME...) +#if #NAME != "" +%rename(free_##NAME) ::free(TYPE *ptr); +#else +%rename(free_##TYPE) ::free(TYPE *ptr); +#endif +void free(TYPE *ptr); +%enddef + +%define %sizeof(TYPE,NAME...) +#if #NAME != "" +%constant int sizeof_##NAME = sizeof(TYPE); +#else +%constant int sizeof_##TYPE = sizeof(TYPE); +#endif +%enddef + +%define %allocators(TYPE,NAME...) +%malloc(TYPE,NAME) +%calloc(TYPE,NAME) +%realloc(TYPE,NAME) +%free(TYPE,NAME) +#if #TYPE != "void" +%sizeof(TYPE,NAME) +#endif +%enddef + + + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/constraints.i b/qrenderdoc/3rdparty/swig/Lib/constraints.i new file mode 100644 index 000000000..8bc7f9159 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/constraints.i @@ -0,0 +1,224 @@ +/* ----------------------------------------------------------------------------- + * constraints.i + * + * SWIG constraints library. + * + * SWIG library file containing typemaps for implementing various kinds of + * constraints. Depends upon the SWIG exception library for generating + * errors in a language-independent manner. + * ----------------------------------------------------------------------------- */ + +#ifdef AUTODOC +%text %{ +%include <constraints.i> + +This library provides support for applying constraints to function +arguments. Using a constraint, you can restrict arguments to be +positive numbers, non-NULL pointers, and so on. The following +constraints are available : + + Number POSITIVE - Positive number (not zero) + Number NEGATIVE - Negative number (not zero) + Number NONZERO - Nonzero number + Number NONNEGATIVE - Positive number (including zero) + Number NONPOSITIVE - Negative number (including zero) + Pointer NONNULL - Non-NULL pointer + Pointer ALIGN8 - 8-byte aligned pointer + Pointer ALIGN4 - 4-byte aligned pointer + Pointer ALIGN2 - 2-byte aligned pointer + +To use the constraints, you need to "apply" them to specific +function arguments in your code. This is done using the %apply +directive. For example : + + %apply Number NONNEGATIVE { double nonneg }; + double sqrt(double nonneg); // Name of argument must match + + %apply Pointer NONNULL { void *ptr }; + void *malloc(int POSITIVE); // May return a NULL pointer + void free(void *ptr); // May not accept a NULL pointer + +Any function argument of the type you specify with the %apply directive +will be checked with the appropriate constraint. Multiple types may +be specified as follows : + + %apply Pointer NONNULL { void *, Vector *, List *, double *}; + +In this case, all of the types listed would be checked for non-NULL +pointers. + +The common datatypes of int, short, long, unsigned int, unsigned long, +unsigned short, unsigned char, signed char, float, and double can be +checked without using the %apply directive by simply using the +constraint name as the parameter name. For example : + + double sqrt(double NONNEGATIVE); + double log(double POSITIVE); + +If you have used typedef to change type-names, you can also do this : + + %apply double { Real }; // Make everything defined for doubles + // work for Reals. + Real sqrt(Real NONNEGATIVE); + Real log(Real POSITIVE); + +%} +#endif + +%include <exception.i> + +#ifdef SWIGCSHARP +// Required attribute for C# exception handling +#define SWIGCSHARPCANTHROW , canthrow=1 +#else +#define SWIGCSHARPCANTHROW +#endif + + +// Positive numbers + +%typemap(check SWIGCSHARPCANTHROW) + int POSITIVE, + short POSITIVE, + long POSITIVE, + unsigned int POSITIVE, + unsigned short POSITIVE, + unsigned long POSITIVE, + signed char POSITIVE, + unsigned char POSITIVE, + float POSITIVE, + double POSITIVE, + Number POSITIVE +{ + if ($1 <= 0) { + SWIG_exception(SWIG_ValueError,"Expected a positive value."); + } +} + +// Negative numbers + +%typemap(check SWIGCSHARPCANTHROW) + int NEGATIVE, + short NEGATIVE, + long NEGATIVE, + unsigned int NEGATIVE, + unsigned short NEGATIVE, + unsigned long NEGATIVE, + signed char NEGATIVE, + unsigned char NEGATIVE, + float NEGATIVE, + double NEGATIVE, + Number NEGATIVE +{ + if ($1 >= 0) { + SWIG_exception(SWIG_ValueError,"Expected a negative value."); + } +} + +// Nonzero numbers + +%typemap(check SWIGCSHARPCANTHROW) + int NONZERO, + short NONZERO, + long NONZERO, + unsigned int NONZERO, + unsigned short NONZERO, + unsigned long NONZERO, + signed char NONZERO, + unsigned char NONZERO, + float NONZERO, + double NONZERO, + Number NONZERO +{ + if ($1 == 0) { + SWIG_exception(SWIG_ValueError,"Expected a nonzero value."); + } +} + +// Nonnegative numbers + +%typemap(check SWIGCSHARPCANTHROW) + int NONNEGATIVE, + short NONNEGATIVE, + long NONNEGATIVE, + unsigned int NONNEGATIVE, + unsigned short NONNEGATIVE, + unsigned long NONNEGATIVE, + signed char NONNEGATIVE, + unsigned char NONNEGATIVE, + float NONNEGATIVE, + double NONNEGATIVE, + Number NONNEGATIVE +{ + if ($1 < 0) { + SWIG_exception(SWIG_ValueError,"Expected a non-negative value."); + } +} + +// Nonpositive numbers + +%typemap(check SWIGCSHARPCANTHROW) + int NONPOSITIVE, + short NONPOSITIVE, + long NONPOSITIVE, + unsigned int NONPOSITIVE, + unsigned short NONPOSITIVE, + unsigned long NONPOSITIVE, + signed char NONPOSITIVE, + unsigned char NONPOSITIVE, + float NONPOSITIVE, + double NONPOSITIVE, + Number NONPOSITIVE +{ + if ($1 > 0) { + SWIG_exception(SWIG_ValueError,"Expected a non-positive value."); + } +} + +// Non-NULL pointer + +%typemap(check SWIGCSHARPCANTHROW) + void * NONNULL, + Pointer NONNULL +{ + if (!$1) { + SWIG_exception(SWIG_ValueError,"Received a NULL pointer."); + } +} + +// Aligned pointers + +%typemap(check SWIGCSHARPCANTHROW) + void * ALIGN8, + Pointer ALIGN8 +{ + unsigned long long tmp; + tmp = (unsigned long long) $1; + if (tmp & 7) { + SWIG_exception(SWIG_ValueError,"Pointer must be 8-byte aligned."); + } +} + +%typemap(check SWIGCSHARPCANTHROW) + void * ALIGN4, + Pointer ALIGN4 +{ + unsigned long long tmp; + tmp = (unsigned long long) $1; + if (tmp & 3) { + SWIG_exception(SWIG_ValueError,"Pointer must be 4-byte aligned."); + } +} + +%typemap(check SWIGCSHARPCANTHROW) + void * ALIGN2, + Pointer ALIGN2 +{ + unsigned long long tmp; + tmp = (unsigned long long) $1; + if (tmp & 1) { + SWIG_exception(SWIG_ValueError,"Pointer must be 2-byte aligned."); + } +} + + diff --git a/qrenderdoc/3rdparty/swig/Lib/cpointer.i b/qrenderdoc/3rdparty/swig/Lib/cpointer.i new file mode 100644 index 000000000..881c511fc --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/cpointer.i @@ -0,0 +1,180 @@ +/* ----------------------------------------------------------------------------- + * cpointer.i + * + * SWIG library file containing macros that can be used to manipulate simple + * pointer objects. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * %pointer_class(type,name) + * + * Places a simple proxy around a simple type like 'int', 'float', or whatever. + * The proxy provides this interface: + * + * class type { + * public: + * type(); + * ~type(); + * type value(); + * void assign(type value); + * }; + * + * Example: + * + * %pointer_class(int, intp); + * + * int add(int *x, int *y) { return *x + *y; } + * + * In python (with proxies) + * + * >>> a = intp() + * >>> a.assign(10) + * >>> a.value() + * 10 + * >>> b = intp() + * >>> b.assign(20) + * >>> print add(a,b) + * 30 + * + * As a general rule, this macro should not be used on class/structures that + * are already defined in the interface. + * ----------------------------------------------------------------------------- */ + + +%define %pointer_class(TYPE, NAME) +%{ +typedef TYPE NAME; +%} + +typedef struct { +} NAME; + +%extend NAME { +#ifdef __cplusplus +NAME() { + return new TYPE(); +} +~NAME() { + if ($self) delete $self; +} +#else +NAME() { + return (TYPE *) calloc(1,sizeof(TYPE)); +} +~NAME() { + if ($self) free($self); +} +#endif +} + +%extend NAME { + +void assign(TYPE value) { + *$self = value; +} +TYPE value() { + return *$self; +} +TYPE * cast() { + return $self; +} +static NAME * frompointer(TYPE *t) { + return (NAME *) t; +} + +} + +%types(NAME = TYPE); + +%enddef + +/* ----------------------------------------------------------------------------- + * %pointer_functions(type,name) + * + * Create functions for allocating/deallocating pointers. This can be used + * if you don't want to create a proxy class or if the pointer is complex. + * + * %pointer_functions(int, intp) + * + * int add(int *x, int *y) { return *x + *y; } + * + * In python (with proxies) + * + * >>> a = copy_intp(10) + * >>> intp_value(a) + * 10 + * >>> b = new_intp() + * >>> intp_assign(b,20) + * >>> print add(a,b) + * 30 + * >>> delete_intp(a) + * >>> delete_intp(b) + * + * ----------------------------------------------------------------------------- */ + +%define %pointer_functions(TYPE,NAME) +%{ +static TYPE *new_##NAME() { %} +#ifdef __cplusplus +%{ return new TYPE(); %} +#else +%{ return (TYPE *) calloc(1,sizeof(TYPE)); %} +#endif +%{} + +static TYPE *copy_##NAME(TYPE value) { %} +#ifdef __cplusplus +%{ return new TYPE(value); %} +#else +%{ TYPE *obj = (TYPE *) calloc(1,sizeof(TYPE)); + *obj = value; + return obj; %} +#endif +%{} + +static void delete_##NAME(TYPE *obj) { %} +#ifdef __cplusplus +%{ if (obj) delete obj; %} +#else +%{ if (obj) free(obj); %} +#endif +%{} + +static void NAME ##_assign(TYPE *obj, TYPE value) { + *obj = value; +} + +static TYPE NAME ##_value(TYPE *obj) { + return *obj; +} +%} + +TYPE *new_##NAME(); +TYPE *copy_##NAME(TYPE value); +void delete_##NAME(TYPE *obj); +void NAME##_assign(TYPE *obj, TYPE value); +TYPE NAME##_value(TYPE *obj); + +%enddef + +/* ----------------------------------------------------------------------------- + * %pointer_cast(type1,type2,name) + * + * Generates a pointer casting function. + * ----------------------------------------------------------------------------- */ + +%define %pointer_cast(TYPE1,TYPE2,NAME) +%inline %{ +TYPE2 NAME(TYPE1 x) { + return (TYPE2) x; +} +%} +%enddef + + + + + + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/cstring.i b/qrenderdoc/3rdparty/swig/Lib/cstring.i new file mode 100644 index 000000000..6829f7597 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/cstring.i @@ -0,0 +1,12 @@ +/* ----------------------------------------------------------------------------- + * cstring.i + * ----------------------------------------------------------------------------- */ + +%echo "cstring.i not implemented for this target" +#define SWIG_CSTRING_UNIMPL + +/* old name keep for compatibility */ +#define _CSTRING_UNIMPL + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/cwstring.i b/qrenderdoc/3rdparty/swig/Lib/cwstring.i new file mode 100644 index 000000000..f0631d328 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/cwstring.i @@ -0,0 +1,11 @@ +/* ----------------------------------------------------------------------------- + * cwstring.i + * ----------------------------------------------------------------------------- */ + +%echo "cwstring.i not implemented for this target" +#define SWIG_CWSTRING_UNIMPL + + + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/director_common.swg b/qrenderdoc/3rdparty/swig/Lib/director_common.swg new file mode 100644 index 000000000..9ce93c7e7 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/director_common.swg @@ -0,0 +1,15 @@ +/* ----------------------------------------------------------------------------- + * director_common.swg + * + * This file contains support for director classes which is common between + * languages. + * ----------------------------------------------------------------------------- */ + +/* + Use -DSWIG_DIRECTOR_STATIC if you prefer to avoid the use of the + 'Swig' namespace. This could be useful for multi-modules projects. +*/ +#ifdef SWIG_DIRECTOR_STATIC +/* Force anonymous (static) namespace */ +#define Swig +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/exception.i b/qrenderdoc/3rdparty/swig/Lib/exception.i new file mode 100644 index 000000000..da0d56cdd --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/exception.i @@ -0,0 +1,314 @@ +/* ----------------------------------------------------------------------------- + * exception.i + * + * SWIG library file providing language independent exception handling + * ----------------------------------------------------------------------------- */ + +#if defined(SWIGUTL) +#error "This version of exception.i should not be used" +#endif + + +%insert("runtime") "swigerrors.swg" + + +#ifdef SWIGPHP5 +%{ +#include "zend_exceptions.h" +#define SWIG_exception(code, msg) do { zend_throw_exception(NULL, (char*)msg, code TSRMLS_CC); goto thrown; } while (0) +%} +#endif + +#ifdef SWIGPHP7 +%{ +#include "zend_exceptions.h" +#define SWIG_exception(code, msg) do { zend_throw_exception(NULL, (char*)msg, code); goto thrown; } while (0) +%} +#endif + +#ifdef SWIGGUILE +%{ + SWIGINTERN void SWIG_exception_ (int code, const char *msg, + const char *subr) { +#define ERROR(scmerr) \ + scm_error(scm_from_locale_string((char *) (scmerr)), \ + (char *) subr, (char *) msg, \ + SCM_EOL, SCM_BOOL_F) +#define MAP(swigerr, scmerr) \ + case swigerr: \ + ERROR(scmerr); \ + break + switch (code) { + MAP(SWIG_MemoryError, "swig-memory-error"); + MAP(SWIG_IOError, "swig-io-error"); + MAP(SWIG_RuntimeError, "swig-runtime-error"); + MAP(SWIG_IndexError, "swig-index-error"); + MAP(SWIG_TypeError, "swig-type-error"); + MAP(SWIG_DivisionByZero, "swig-division-by-zero"); + MAP(SWIG_OverflowError, "swig-overflow-error"); + MAP(SWIG_SyntaxError, "swig-syntax-error"); + MAP(SWIG_ValueError, "swig-value-error"); + MAP(SWIG_SystemError, "swig-system-error"); + default: + ERROR("swig-error"); + } +#undef ERROR +#undef MAP + } + +#define SWIG_exception(a,b) SWIG_exception_(a, b, FUNC_NAME) +%} +#endif + +#ifdef SWIGMZSCHEME + +%{ +SWIGINTERN void SWIG_exception_ (int code, const char *msg) { +#define ERROR(errname) \ + scheme_signal_error(errname " (%s)", msg); +#define MAP(swigerr, errname) \ + case swigerr: \ + ERROR(errname); \ + break + switch (code) { + MAP(SWIG_MemoryError, "swig-memory-error"); + MAP(SWIG_IOError, "swig-io-error"); + MAP(SWIG_RuntimeError, "swig-runtime-error"); + MAP(SWIG_IndexError, "swig-index-error"); + MAP(SWIG_TypeError, "swig-type-error"); + MAP(SWIG_DivisionByZero, "swig-division-by-zero"); + MAP(SWIG_OverflowError, "swig-overflow-error"); + MAP(SWIG_SyntaxError, "swig-syntax-error"); + MAP(SWIG_ValueError, "swig-value-error"); + MAP(SWIG_SystemError, "swig-system-error"); + default: + ERROR("swig-error"); + } +#undef ERROR +#undef MAP + } + +#define SWIG_exception(a,b) SWIG_exception_(a, b) +%} +#endif + +#ifdef SWIGJAVA +%{ +SWIGINTERN void SWIG_JavaException(JNIEnv *jenv, int code, const char *msg) { + SWIG_JavaExceptionCodes exception_code = SWIG_JavaUnknownError; + switch(code) { + case SWIG_MemoryError: + exception_code = SWIG_JavaOutOfMemoryError; + break; + case SWIG_IOError: + exception_code = SWIG_JavaIOException; + break; + case SWIG_SystemError: + case SWIG_RuntimeError: + exception_code = SWIG_JavaRuntimeException; + break; + case SWIG_OverflowError: + case SWIG_IndexError: + exception_code = SWIG_JavaIndexOutOfBoundsException; + break; + case SWIG_DivisionByZero: + exception_code = SWIG_JavaArithmeticException; + break; + case SWIG_SyntaxError: + case SWIG_ValueError: + case SWIG_TypeError: + exception_code = SWIG_JavaIllegalArgumentException; + break; + case SWIG_UnknownError: + default: + exception_code = SWIG_JavaUnknownError; + break; + } + SWIG_JavaThrowException(jenv, exception_code, msg); +} +%} + +#define SWIG_exception(code, msg)\ +{ SWIG_JavaException(jenv, code, msg); return $null; } +#endif // SWIGJAVA + +#ifdef SWIGOCAML +%{ +#define OCAML_MSG_BUF_LEN 1024 +SWIGINTERN void SWIG_exception_(int code, const char *msg) { + char msg_buf[OCAML_MSG_BUF_LEN]; + sprintf( msg_buf, "Exception(%d): %s\n", code, msg ); + failwith( msg_buf ); +} +#define SWIG_exception(a,b) SWIG_exception_((a),(b)) +%} +#endif + + +#ifdef SWIGCHICKEN +%{ +SWIGINTERN void SWIG_exception_(int code, const char *msg) { + C_word *a; + C_word scmmsg; + C_word list; + + a = C_alloc (C_SIZEOF_STRING (strlen (msg)) + C_SIZEOF_LIST(2)); + scmmsg = C_string2 (&a, (char *) msg); + list = C_list(&a, 2, C_fix(code), scmmsg); + SWIG_ThrowException(list); +} +#define SWIG_exception(a,b) SWIG_exception_((a),(b)) +%} +#endif + +#ifdef SWIGCSHARP +%{ +SWIGINTERN void SWIG_CSharpException(int code, const char *msg) { + if (code == SWIG_ValueError) { + SWIG_CSharpExceptionArgumentCodes exception_code = SWIG_CSharpArgumentOutOfRangeException; + SWIG_CSharpSetPendingExceptionArgument(exception_code, msg, 0); + } else { + SWIG_CSharpExceptionCodes exception_code = SWIG_CSharpApplicationException; + switch(code) { + case SWIG_MemoryError: + exception_code = SWIG_CSharpOutOfMemoryException; + break; + case SWIG_IndexError: + exception_code = SWIG_CSharpIndexOutOfRangeException; + break; + case SWIG_DivisionByZero: + exception_code = SWIG_CSharpDivideByZeroException; + break; + case SWIG_IOError: + exception_code = SWIG_CSharpIOException; + break; + case SWIG_OverflowError: + exception_code = SWIG_CSharpOverflowException; + break; + case SWIG_RuntimeError: + case SWIG_TypeError: + case SWIG_SyntaxError: + case SWIG_SystemError: + case SWIG_UnknownError: + default: + exception_code = SWIG_CSharpApplicationException; + break; + } + SWIG_CSharpSetPendingException(exception_code, msg); + } +} +%} + +#define SWIG_exception(code, msg)\ +{ SWIG_CSharpException(code, msg); return $null; } +#endif // SWIGCSHARP + +#ifdef SWIGLUA + +%{ +#define SWIG_exception(a,b)\ +{ lua_pushfstring(L,"%s:%s",#a,b);SWIG_fail; } +%} + +#endif // SWIGLUA + +#ifdef SWIGD +%{ +SWIGINTERN void SWIG_DThrowException(int code, const char *msg) { + SWIG_DExceptionCodes exception_code; + switch(code) { + case SWIG_IndexError: + exception_code = SWIG_DNoSuchElementException; + break; + case SWIG_IOError: + exception_code = SWIG_DIOException; + break; + case SWIG_ValueError: + exception_code = SWIG_DIllegalArgumentException; + break; + case SWIG_DivisionByZero: + case SWIG_MemoryError: + case SWIG_OverflowError: + case SWIG_RuntimeError: + case SWIG_TypeError: + case SWIG_SyntaxError: + case SWIG_SystemError: + case SWIG_UnknownError: + default: + exception_code = SWIG_DException; + break; + } + SWIG_DSetPendingException(exception_code, msg); +} +%} + +#define SWIG_exception(code, msg)\ +{ SWIG_DThrowException(code, msg); return $null; } +#endif // SWIGD + +#ifdef __cplusplus +/* + You can use the SWIG_CATCH_STDEXCEPT macro with the %exception + directive as follows: + + %exception { + try { + $action + } + catch (my_except& e) { + ... + } + SWIG_CATCH_STDEXCEPT // catch std::exception + catch (...) { + SWIG_exception(SWIG_UnknownError, "Unknown exception"); + } + } +*/ +%{ +#include <typeinfo> +#include <stdexcept> +%} +%define SWIG_CATCH_STDEXCEPT + /* catching std::exception */ + catch (std::invalid_argument& e) { + SWIG_exception(SWIG_ValueError, e.what() ); + } catch (std::domain_error& e) { + SWIG_exception(SWIG_ValueError, e.what() ); + } catch (std::overflow_error& e) { + SWIG_exception(SWIG_OverflowError, e.what() ); + } catch (std::out_of_range& e) { + SWIG_exception(SWIG_IndexError, e.what() ); + } catch (std::length_error& e) { + SWIG_exception(SWIG_IndexError, e.what() ); + } catch (std::runtime_error& e) { + SWIG_exception(SWIG_RuntimeError, e.what() ); + } catch (std::bad_cast& e) { + SWIG_exception(SWIG_TypeError, e.what() ); + } catch (std::exception& e) { + SWIG_exception(SWIG_SystemError, e.what() ); + } +%enddef +%define SWIG_CATCH_UNKNOWN + catch (std::exception& e) { + SWIG_exception(SWIG_SystemError, e.what() ); + } + catch (...) { + SWIG_exception(SWIG_UnknownError, "unknown exception"); + } +%enddef + +/* rethrow the unknown exception */ + +#if defined(SWIGCSHARP) || defined(SWIGD) +%typemap(throws,noblock=1, canthrow=1) (...) { + SWIG_exception(SWIG_RuntimeError,"unknown exception"); +} +#else +%typemap(throws,noblock=1) (...) { + SWIG_exception(SWIG_RuntimeError,"unknown exception"); +} +#endif + +#endif /* __cplusplus */ + +/* exception.i ends here */ diff --git a/qrenderdoc/3rdparty/swig/Lib/intrusive_ptr.i b/qrenderdoc/3rdparty/swig/Lib/intrusive_ptr.i new file mode 100644 index 000000000..ceaeaf0bb --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/intrusive_ptr.i @@ -0,0 +1,82 @@ +// Allow for different namespaces for shared_ptr / intrusive_ptr - they could be boost or std or std::tr1 +// For example for std::tr1, use: +// #define SWIG_SHARED_PTR_NAMESPACE std +// #define SWIG_SHARED_PTR_SUBNAMESPACE tr1 +// #define SWIG_INTRUSIVE_PTR_NAMESPACE boost +// #define SWIG_INTRUSIVE_PTR_SUBNAMESPACE + +#if !defined(SWIG_INTRUSIVE_PTR_NAMESPACE) +# define SWIG_INTRUSIVE_PTR_NAMESPACE boost +#endif + +#if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) +# define SWIG_INTRUSIVE_PTR_QNAMESPACE SWIG_INTRUSIVE_PTR_NAMESPACE::SWIG_INTRUSIVE_PTR_SUBNAMESPACE +#else +# define SWIG_INTRUSIVE_PTR_QNAMESPACE SWIG_INTRUSIVE_PTR_NAMESPACE +#endif + +namespace SWIG_INTRUSIVE_PTR_NAMESPACE { +#if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) + namespace SWIG_INTRUSIVE_PTR_SUBNAMESPACE { +#endif + template <class T> class intrusive_ptr { + }; +#if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) + } +#endif +} + +%fragment("SWIG_intrusive_deleter", "header") { +template<class T> struct SWIG_intrusive_deleter { + void operator()(T *p) { + if (p) + intrusive_ptr_release(p); + } +}; +} + +%fragment("SWIG_null_deleter", "header") { +struct SWIG_null_deleter { + void operator() (void const *) const { + } +}; +%#define SWIG_NO_NULL_DELETER_0 , SWIG_null_deleter() +%#define SWIG_NO_NULL_DELETER_1 +} + +// Workaround empty first macro argument bug +#define SWIGEMPTYHACK +// Main user macro for defining intrusive_ptr typemaps for both const and non-const pointer types +%define %intrusive_ptr(TYPE...) +%feature("smartptr", noblock=1) TYPE { SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > } +SWIG_INTRUSIVE_PTR_TYPEMAPS(SWIGEMPTYHACK, TYPE) +SWIG_INTRUSIVE_PTR_TYPEMAPS(const, TYPE) +%enddef + +%define %intrusive_ptr_no_wrap(TYPE...) +%feature("smartptr", noblock=1) TYPE { SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > } +SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(SWIGEMPTYHACK, TYPE) +SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(const, TYPE) +%enddef + +// Legacy macros +%define SWIG_INTRUSIVE_PTR(PROXYCLASS, TYPE...) +#warning "SWIG_INTRUSIVE_PTR(PROXYCLASS, TYPE) is deprecated. Please use %intrusive_ptr(TYPE) instead." +%intrusive_ptr(TYPE) +%enddef + +%define SWIG_INTRUSIVE_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE...) +#warning "SWIG_INTRUSIVE_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE) is deprecated. Please use %intrusive_ptr(TYPE) instead." +%intrusive_ptr(TYPE) +%enddef + +%define SWIG_INTRUSIVE_PTR_NO_WRAP(PROXYCLASS, TYPE...) +#warning "SWIG_INTRUSIVE_PTR_NO_WRAP(PROXYCLASS, TYPE) is deprecated. Please use %intrusive_ptr_no_wrap(TYPE) instead." +%intrusive_ptr_no_wrap(TYPE) +%enddef + +%define SWIG_INTRUSIVE_PTR_DERIVED_NO_WRAP(PROXYCLASS, BASECLASSTYPE, TYPE...) +#warning "SWIG_INTRUSIVE_PTR_DERIVED_NO_WRAP(PROXYCLASS, BASECLASSTYPE, TYPE) is deprecated. Please use %intrusive_ptr_no_wrap(TYPE) instead." +%intrusive_ptr_no_wrap(TYPE) +%enddef + diff --git a/qrenderdoc/3rdparty/swig/Lib/inttypes.i b/qrenderdoc/3rdparty/swig/Lib/inttypes.i new file mode 100644 index 000000000..85bd5adaf --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/inttypes.i @@ -0,0 +1,85 @@ +/* ----------------------------------------------------------------------------- + * inttypes.i + * + * SWIG library file for ISO C99 types: 7.8 Format conversion of integer types <inttypes.h> + * ----------------------------------------------------------------------------- */ + +%{ +#include <inttypes.h> +%} + +%include <stdint.i> +%include <wchar.i> + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef SWIGWORDSIZE64 + + /* We have to define the `uintmax_t' type using `ldiv_t'. */ + typedef struct + { + long int quot; /* Quotient. */ + long int rem; /* Remainder. */ + } imaxdiv_t; + +#else + + /* We have to define the `uintmax_t' type using `lldiv_t'. */ + typedef struct + { + long long int quot; /* Quotient. */ + long long int rem; /* Remainder. */ + } imaxdiv_t; + +#endif + + /* Compute absolute value of N. */ + extern intmax_t imaxabs (intmax_t n); + + /* Return the `imaxdiv_t' representation of the value of NUMER over DENOM. */ + extern imaxdiv_t imaxdiv (intmax_t numer, intmax_t denom); + +#ifdef SWIG_WCHAR + /* Like `wcstol' but convert to `intmax_t'. */ + extern intmax_t wcstoimax (const wchar_t *nptr, wchar_t **endptr, int base); + + /* Like `wcstoul' but convert to `uintmax_t'. */ + extern uintmax_t wcstoumax (const wchar_t *nptr, wchar_t ** endptr, int base); +#endif + +#ifdef SWIGWORDSIZE64 + + /* Like `strtol' but convert to `intmax_t'. */ + extern intmax_t strtoimax (const char *nptr, char **endptr, int base); + + /* Like `strtoul' but convert to `uintmax_t'. */ + extern uintmax_t strtoumax (const char *nptr, char **endptr,int base); + +#ifdef SWIG_WCHAR + /* Like `wcstol' but convert to `intmax_t'. */ + extern intmax_t wcstoimax (const wchar_t *nptr, wchar_t **endptr, int base); + + /* Like `wcstoul' but convert to `uintmax_t'. */ + extern uintmax_t wcstoumax (const wchar_t *nptr, wchar_t **endptr, int base); +#endif + +#else /* SWIGWORDSIZE32 */ + + /* Like `strtol' but convert to `intmax_t'. */ + extern intmax_t strtoimax (const char *nptr, char **endptr, int base); + + /* Like `strtoul' but convert to `uintmax_t'. */ + extern uintmax_t strtoumax (const char *nptr, char **endptr, int base); + +#ifdef SWIG_WCHAR + /* Like `wcstol' but convert to `intmax_t'. */ + extern uintmax_t wcstoumax (const wchar_t *nptr, wchar_t **endptr, int base); +#endif + +#endif /* SWIGWORDSIZE64 */ + +#ifdef __cplusplus +} +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/linkruntime.c b/qrenderdoc/3rdparty/swig/Lib/linkruntime.c new file mode 100644 index 000000000..ddc781207 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/linkruntime.c @@ -0,0 +1,22 @@ +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +static void *ptr = 0; +SWIGEXPORT void * +SWIG_ReturnGlobalTypeList(void *t) { + if (!ptr && !t) ptr = t; + return ptr; +} diff --git a/qrenderdoc/3rdparty/swig/Lib/math.i b/qrenderdoc/3rdparty/swig/Lib/math.i new file mode 100644 index 000000000..a37c92d19 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/math.i @@ -0,0 +1,82 @@ +/* ----------------------------------------------------------------------------- + * math.i + * + * SWIG library file for floating point operations. + * ----------------------------------------------------------------------------- */ + +%module math +%{ +#include <math.h> +%} + +extern double cos(double x); +/* Cosine of x */ + +extern double sin(double x); +/* Sine of x */ + +extern double tan(double x); +/* Tangent of x */ + +extern double acos(double x); +/* Inverse cosine in range [-PI/2,PI/2], x in [-1,1]. */ + +extern double asin(double x); +/* Inverse sine in range [0,PI], x in [-1,1]. */ + +extern double atan(double x); +/* Inverse tangent in range [-PI/2,PI/2]. */ + +extern double atan2(double y, double x); +/* Inverse tangent of y/x in range [-PI,PI]. */ + +extern double cosh(double x); +/* Hyperbolic cosine of x */ + +extern double sinh(double x); +/* Hyperbolic sine of x */ + +extern double tanh(double x); +/* Hyperbolic tangent of x */ + +extern double exp(double x); +/* Natural exponential function e^x */ + +extern double log(double x); +/* Natural logarithm ln(x), x > 0 */ + +extern double log10(double x); +/* Base 10 logarithm, x > 0 */ + +extern double pow(double x, double y); +/* Power function x^y. */ + +extern double sqrt(double x); +/* Square root. x >= 0 */ + +extern double fabs(double x); +/* Absolute value of x */ + +extern double ceil(double x); +/* Smallest integer not less than x, as a double */ + +extern double floor(double x); +/* Largest integer not greater than x, as a double */ + +extern double fmod(double x, double y); +/* Floating-point remainder of x/y, with the same sign as x. */ + +#define M_E 2.7182818284590452354 +#define M_LOG2E 1.4426950408889634074 +#define M_LOG10E 0.43429448190325182765 +#define M_LN2 0.69314718055994530942 +#define M_LN10 2.30258509299404568402 +#define M_PI 3.14159265358979323846 +#define M_PI_2 1.57079632679489661923 +#define M_PI_4 0.78539816339744830962 +#define M_1_PI 0.31830988618379067154 +#define M_2_PI 0.63661977236758134308 +#define M_2_SQRTPI 1.12837916709551257390 +#define M_SQRT2 1.41421356237309504880 +#define M_SQRT1_2 0.70710678118654752440 + diff --git a/qrenderdoc/3rdparty/swig/Lib/pointer.i b/qrenderdoc/3rdparty/swig/Lib/pointer.i new file mode 100644 index 000000000..ea8e535ab --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/pointer.i @@ -0,0 +1,11 @@ +/* ----------------------------------------------------------------------------- + * pointer.i + * ----------------------------------------------------------------------------- */ + + +%echo "pointer.i is deprecated. Use cpointer.i instead." +%echo "See http://www.swig.org/Doc3.0/Library.html" + + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/Makefile.in b/qrenderdoc/3rdparty/swig/Lib/python/Makefile.in new file mode 100644 index 000000000..27c384449 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/Makefile.in @@ -0,0 +1,119 @@ +# --------------------------------------------------------------- +# SWIG Python Makefile +# +# This file can be used to build various Python extensions with SWIG. +# By default this file is set up for dynamic loading, but it can +# be easily customized for static extensions by modifying various +# portions of the file. +# +# SRCS = C source files +# CXXSRCS = C++ source files +# OBJCSRCS = Objective-C source files +# OBJS = Additional .o files (compiled previously) +# INTERFACE = SWIG interface file +# TARGET = Name of target module or executable +# +# Many portions of this file were created by the SWIG configure +# script and should already reflect your machine. +#---------------------------------------------------------------- + +SRCS = +CXXSRCS = +OBJCSRCS = +OBJS = +INTERFACE = +WRAPFILE = $(INTERFACE:.i=_wrap.c) +WRAPOBJ = $(INTERFACE:.i=_wrap.o) +TARGET = module@SO@ # Use this kind of target for dynamic loading +#TARGET = mypython # Use this target for static linking + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +CC = @CC@ +CXX = @CXX@ +OBJC = @CC@ -Wno-import # -Wno-import needed for gcc +CFLAGS = +INCLUDES = +LIBS = + +# SWIG Options +# SWIG = location of the SWIG executable +# SWIGOPT = SWIG compiler options +# SWIGCC = Compiler used to compile the wrapper file + +SWIG = $(exec_prefix)/bin/swig +SWIGOPT = -python +SWIGCC = $(CC) + +# SWIG Library files. Uncomment if rebuilding the Python interpreter +#SWIGLIBS = -lembed.i + +# Rules for creating .o files from source. + +COBJS = $(SRCS:.c=.o) +CXXOBJS = $(CXXSRCS:.cxx=.o) +OBJCOBJS = $(OBJCSRCS:.m=.o) +ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) + +# Command that will be used to build the final extension. +BUILD = $(SWIGCC) + +# Uncomment the following if you are using dynamic loading +CCSHARED = @CCSHARED@ +BUILD = @LDSHARED@ + +# Uncomment the following if you are using dynamic loading with C++ and +# need to provide additional link libraries (this is not always required). + +#DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ + -L/usr/local/lib -lg++ -lstdc++ -lgcc + +# Python installation + +PY_INCLUDE = -DHAVE_CONFIG_H @PYINCLUDE@ +PY_LIB = @PYLIB@ + +# Build libraries (needed for static builds) + +LIBM = @LIBM@ +LIBC = @LIBC@ +SYSLIBS = $(LIBM) $(LIBC) @LIBS@ + +# Build options + +BUILD_LIBS = $(LIBS) # Dynamic loading + +# Compilation rules for non-SWIG components + +.SUFFIXES: .c .cxx .m + +.c.o: + $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< + +.cxx.o: + $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDES) -c $< + +.m.o: + $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDES) -c $< + + +# ---------------------------------------------------------------------- +# Rules for building the extension +# ---------------------------------------------------------------------- + +all: $(TARGET) + +# Convert the wrapper file into an object file + +$(WRAPOBJ) : $(WRAPFILE) + $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(WRAPFILE) $(INCLUDES) $(PY_INCLUDE) + +$(WRAPFILE) : $(INTERFACE) + $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIBS) $(INTERFACE) + +$(TARGET): $(WRAPOBJ) $(ALLOBJS) + $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) + +clean: + rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) diff --git a/qrenderdoc/3rdparty/swig/Lib/python/README b/qrenderdoc/3rdparty/swig/Lib/python/README new file mode 100644 index 000000000..fa8ef61e7 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/README @@ -0,0 +1,104 @@ +/* ----------------------------------------------------------------------------- + * + * User interfaces: include these ones as needed + * + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * Special types and user helpers + * ----------------------------------------------------------------------------- */ + +argcargv.i Handler for (int argc, char **argv) +attribute.i Convert a pair of set/get methods into a "native" python attribute +ccomplex.i C99 complex type +complex.i C99 or C++ complex type +cstring.i Various forms of C character string handling +cwstring.i Various forms of C wchar_t string handling +embed.i embedding the Python interpreter in something else +file.i FILE C type +implicit.i Allow the use of implicit C++ constructors +wchar.i wchar_t C type + +/* ----------------------------------------------------------------------------- + * C++ STD + STL + * ----------------------------------------------------------------------------- */ + +std_alloc.i allocator +std_basic_string.i basic string +std_char_traits.i char traits +std_complex.i complex +std_deque.i deque +std_except.i exceptions +std_ios.i ios +std_iostream.i istream/ostream +std_list.i list +std_map.i map +std_multimap.i multimap +std_multiset.i multiset +std_pair.i pair +std_set.i set +std_sstream.i string stream +std_streambuf.i streambuf +std_string.i string +std_vector.i vector +std_wios.i wios +std_wiostream.i wistream/wostream +std_wsstream.i wstring stream +std_wstreambuf.i wstreambuf +std_wstring.i wstring + + + +/* ----------------------------------------------------------------------------- +/* + * Implementation files: don't look at them unless you are really drunk + * + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * Basic files + * ----------------------------------------------------------------------------- */ + +python.swg Main language file, it just includes what is needed. +pyuserdir.swg User visible directives (%pythonnondynamic, etc) +pymacros.swg Internal macros used for typemaps +pyfragments.swg Allow the user to overload the default fragments +pyopers.swg Python operations (+=, *=, etc) +pythonkw.swg Python keywords and special names +pyinit.swg Python Init method + +/* ----------------------------------------------------------------------------- + * The runtime part + * ----------------------------------------------------------------------------- */ + +pyruntime.swg Main runtime file definition +pyapi.swg SWIG/Python API declarations +pyrun.swg Python run-time code + +/* ----------------------------------------------------------------------------- + * Internal typemap specializations + * ----------------------------------------------------------------------------- */ + +pyswigtype.swg SWIGTYPE +pystrings.swg Char strings (char *) +pywstrings.swg Wchar Strings (wchar_t *) +pyprimtypes.swg Primitive types (shot,int,double,etc) +pycomplex.swg PyComplex and helper for C/C++ complex types +pydocs.swg Typemaps documentation + +/* ----------------------------------------------------------------------------- + * C++ STD + STL + * ----------------------------------------------------------------------------- */ + +pycontainer.swg python container iterators +std_common.i general common code for the STD/STL implementation +std_container.i general common code for the STD/STL containers + + +/*----------------------------------------------------------------------------- + * Backward compatibility and deprecated + * ----------------------------------------------------------------------------- */ + +std_vectora.i vector + allocator (allocators are now supported in STD/STL) +typemaps.i old in/out typemaps (doesn't need to be included) +defarg.swg for processing default arguments with shadow classes diff --git a/qrenderdoc/3rdparty/swig/Lib/python/argcargv.i b/qrenderdoc/3rdparty/swig/Lib/python/argcargv.i new file mode 100644 index 000000000..717fe7334 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/argcargv.i @@ -0,0 +1,92 @@ +/* ------------------------------------------------------------ + * --- Argc & Argv --- + * ------------------------------------------------------------ */ + +%fragment("SWIG_AsArgcArgv","header",fragment="SWIG_AsCharPtrAndSize") { +SWIGINTERN int +SWIG_AsArgcArgv(PyObject *input, + swig_type_info *ppchar_info, + size_t *argc, char ***argv, int *owner) +{ + void *vptr; + int res = SWIG_ConvertPtr(input, &vptr, ppchar_info, 0); + if (!SWIG_IsOK(res)) { + int list = 0; + PyErr_Clear(); + list = PyList_Check(input); + if (list || PyTuple_Check(input)) { + size_t i = 0; + size_t size = list ? PyList_Size(input) : PyTuple_Size(input); + if (argc) *argc = size; + if (argv) { + *argv = %new_array(size + 1, char*); + for (; i < size; ++i) { + PyObject *obj = list ? PyList_GetItem(input,i) : PyTuple_GetItem(input,i); + char *cptr = 0; size_t sz = 0; int alloc = 0; + res = SWIG_AsCharPtrAndSize(obj, &cptr, &sz, &alloc); + if (SWIG_IsOK(res)) { + if (cptr && sz) { + (*argv)[i] = (alloc == SWIG_NEWOBJ) ? cptr : %new_copy_array(cptr, sz, char); + } else { + (*argv)[i] = 0; + } + } else { + return SWIG_TypeError; + } + } + (*argv)[i] = 0; + if (owner) *owner = 1; + } else { + for (; i < size; ++i) { + PyObject *obj = list ? PyList_GetItem(input,i) : PyTuple_GetItem(input,i); + res = SWIG_AsCharPtrAndSize(obj, 0, 0, 0); + if (!SWIG_IsOK(res)) return SWIG_TypeError; + } + if (owner) *owner = 0; + } + return SWIG_OK; + } else { + return SWIG_TypeError; + } + } else { + /* seems dangerous, but the user asked for it... */ + size_t i = 0; + if (argv) { while (*argv[i] != 0) ++i;} + if (argc) *argc = i; + if (owner) *owner = 0; + return SWIG_OK; + } +} +} + +/* + This typemap works with either a char **, a python list or a python + tuple + */ + +%typemap(in,noblock=0,fragment="SWIG_AsArgcArgv") (int ARGC, char **ARGV) (int res,char **argv = 0, size_t argc = 0, int owner= 0) { + res = SWIG_AsArgcArgv($input, $descriptor(char**), &argc, &argv, &owner); + if (!SWIG_IsOK(res)) { + $1 = 0; $2 = 0; + %argument_fail(SWIG_TypeError, "int ARGC, char **ARGV", $symname, $argnum); + } else { + $1 = %static_cast(argc,$1_ltype); + $2 = %static_cast(argv, $2_ltype); + } +} + +%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) { + int res = SWIG_AsArgcArgv($input, $descriptor(char**), 0, 0, 0); + $1 = SWIG_IsOK(res); +} + +%typemap(freearg,noblock=1) (int ARGC, char **ARGV) { + if (owner$argnum) { + size_t i = argc$argnum; + while (i) { + %delete_array(argv$argnum[--i]); + } + %delete_array(argv$argnum); + } +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/attribute.i b/qrenderdoc/3rdparty/swig/Lib/python/attribute.i new file mode 100644 index 000000000..779716cd2 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/attribute.i @@ -0,0 +1 @@ +%include <typemaps/attribute.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/boost_shared_ptr.i b/qrenderdoc/3rdparty/swig/Lib/python/boost_shared_ptr.i new file mode 100644 index 000000000..40a1ae1ef --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/boost_shared_ptr.i @@ -0,0 +1,324 @@ +%include <shared_ptr.i> + +// Set SHARED_PTR_DISOWN to $disown if required, for example +// #define SHARED_PTR_DISOWN $disown +#if !defined(SHARED_PTR_DISOWN) +#define SHARED_PTR_DISOWN 0 +#endif + +%fragment("SWIG_null_deleter_python", "header", fragment="SWIG_null_deleter") { +%#define SWIG_NO_NULL_DELETER_SWIG_BUILTIN_INIT +} + +// Language specific macro implementing all the customisations for handling the smart pointer +%define SWIG_SHARED_PTR_TYPEMAPS(CONST, TYPE...) + +// %naturalvar is as documented for member variables +%naturalvar TYPE; +%naturalvar SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + +// destructor wrapper customisation +%feature("unref") TYPE +//"if (debug_shared) { cout << \"deleting use_count: \" << (*smartarg1).use_count() << \" [\" << (boost::get_deleter<SWIG_null_deleter>(*smartarg1) ? std::string(\"CANNOT BE DETERMINED SAFELY\") : ( (*smartarg1).get() ? (*smartarg1)->getValue() : std::string(\"NULL PTR\") )) << \"]\" << endl << flush; }\n" + "(void)arg1; delete smartarg1;" + +// Typemap customisations... + +// plain value +%typemap(in) CONST TYPE (void *argp, int res = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { + %argument_nullref("$type", $symname, $argnum); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(out) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } else { + $1 = *(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get()); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + } +} +%typemap(varout) CONST TYPE { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(new $1_ltype(($1_ltype &)$1)); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +// plain pointer +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) CONST TYPE * (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} + +%typemap(out, fragment="SWIG_null_deleter_python") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), $owner | SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE * { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0; + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + smartarg = %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast((smartarg ? smartarg->get() : 0), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter_python") CONST TYPE * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_0) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +// plain reference +%typemap(in) CONST TYPE & (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = %const_cast(tempshared.get(), $1_ltype); + } else { + $1 = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(out, fragment="SWIG_null_deleter_python") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1 SWIG_NO_NULL_DELETER_$owner); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) CONST TYPE & { + void *argp = 0; + int newmem = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared; + if (!argp) { + %variable_nullref("$type", "$name"); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + $1 = *%const_cast(tempshared.get(), $1_ltype); + } else { + $1 = *%const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $1_ltype); + } +} +%typemap(varout, fragment="SWIG_null_deleter_python") CONST TYPE & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(&$1 SWIG_NO_NULL_DELETER_0); + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +// plain pointer by reference +// Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance +%typemap(in) TYPE *CONST& (void *argp = 0, int res = 0, $*1_ltype temp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + tempshared = *%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + delete %reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *); + temp = %const_cast(tempshared.get(), $*1_ltype); + } else { + temp = %const_cast(%reinterpret_cast(argp, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *)->get(), $*1_ltype); + } + $1 = &temp; +} +%typemap(out, fragment="SWIG_null_deleter_python") TYPE *CONST& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1 SWIG_NO_NULL_DELETER_$owner); + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) TYPE *CONST& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) TYPE *CONST& %{ +#error "varout typemap not implemented" +%} + +// shared_ptr by value +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *argp, int res = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) $1 = *(%reinterpret_cast(argp, $<ype)); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + int newmem = 0; + void *argp = 0; + int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = argp ? *(%reinterpret_cast(argp, $<ype)) : SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE >(); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $<ype); +} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >($1) : 0; + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +// shared_ptr by reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (void *argp, int res = 0, $*1_ltype tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & %{ +#error "varout typemap not implemented" +%} + +// shared_ptr by pointer +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (void *argp, int res = 0, $*1_ltype tempshared) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (newmem & SWIG_CAST_NEW_MEMORY) { + if (argp) tempshared = *%reinterpret_cast(argp, $ltype); + delete %reinterpret_cast(argp, $ltype); + $1 = &tempshared; + } else { + $1 = (argp) ? %reinterpret_cast(argp, $ltype) : &tempshared; + } +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = $1 && *$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(*$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); + if ($owner) delete $1; +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * %{ +#error "varout typemap not implemented" +%} + +// shared_ptr by pointer reference +%typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (void *argp, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, $*1_ltype temp = 0) { + int newmem = 0; + res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (argp) tempshared = *%reinterpret_cast(argp, $*ltype); + if (newmem & SWIG_CAST_NEW_MEMORY) delete %reinterpret_cast(argp, $*ltype); + temp = &tempshared; + $1 = &temp; +} +%typemap(out) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartresult = *$1 && **$1 ? new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >(**$1) : 0; + %set_output(SWIG_NewPointerObj(%as_voidptr(smartresult), $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SWIG_POINTER_OWN)); +} + +%typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varin typemap not implemented" +%} +%typemap(varout) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& %{ +#error "varout typemap not implemented" +%} + +// Typecheck typemaps +// Note: SWIG_ConvertPtr with void ** parameter set to 0 instead of using SWIG_ConvertPtrAndOwn, so that the casting +// function is not called thereby avoiding a possible smart pointer copy constructor call when casting up the inheritance chain. +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& { + int res = SWIG_ConvertPtr($input, 0, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), 0); + $1 = SWIG_CheckState(res); +} + + +// various missing typemaps - If ever used (unlikely) ensure compilation error rather than runtime bug +%typemap(in) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} +%typemap(out) CONST TYPE[], CONST TYPE[ANY], CONST TYPE (CLASS::*) %{ +#error "typemaps for $1_type not available" +%} + + +%template() SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >; + + +%enddef + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/builtin.swg b/qrenderdoc/3rdparty/swig/Lib/python/builtin.swg new file mode 100644 index 000000000..9597653b7 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/builtin.swg @@ -0,0 +1,728 @@ +#ifdef __cplusplus +extern "C" { +#endif + +SWIGINTERN Py_hash_t +SwigPyObject_hash(PyObject *obj) { + SwigPyObject *sobj = (SwigPyObject *)obj; + void *ptr = sobj->ptr; + return (Py_hash_t)ptr; +} + +SWIGINTERN Py_hash_t +SWIG_PyNumber_AsPyHash(PyObject *obj) { + Py_hash_t result = -1; +#if PY_VERSION_HEX < 0x03020000 +#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(obj)) + result = PyInt_AsLong(obj); + else +#endif + if (PyLong_Check(obj)) + result = PyLong_AsLong(obj); +#else + if (PyNumber_Check(obj)) + result = PyNumber_AsSsize_t(obj, NULL); +#endif + else + PyErr_Format(PyExc_TypeError, "Wrong type for hash function"); + return PyErr_Occurred() ? -1 : result; +} + +SWIGINTERN int +SwigPyBuiltin_BadInit(PyObject *self, PyObject *SWIGUNUSEDPARM(args), PyObject *SWIGUNUSEDPARM(kwds)) { + PyErr_Format(PyExc_TypeError, "Cannot create new instances of type '%.300s'", self->ob_type->tp_name); + return -1; +} + +SWIGINTERN void +SwigPyBuiltin_BadDealloc(PyObject *obj) { + SwigPyObject *sobj = (SwigPyObject *)obj; + if (sobj->own) { + PyErr_Format(PyExc_TypeError, "Swig detected a memory leak in type '%.300s': no callable destructor found.", obj->ob_type->tp_name); + } +} + +typedef struct { + PyCFunction get; + PyCFunction set; +} SwigPyGetSet; + +SWIGINTERN PyObject * +SwigPyBuiltin_GetterClosure (PyObject *obj, void *closure) { + SwigPyGetSet *getset; + PyObject *tuple, *result; + if (!closure) + return SWIG_Py_Void(); + getset = (SwigPyGetSet *)closure; + if (!getset->get) + return SWIG_Py_Void(); + tuple = PyTuple_New(0); + assert(tuple); + result = (*getset->get)(obj, tuple); + Py_DECREF(tuple); + return result; +} + +SWIGINTERN PyObject * +SwigPyBuiltin_FunpackGetterClosure (PyObject *obj, void *closure) { + SwigPyGetSet *getset; + PyObject *result; + if (!closure) + return SWIG_Py_Void(); + getset = (SwigPyGetSet *)closure; + if (!getset->get) + return SWIG_Py_Void(); + result = (*getset->get)(obj, NULL); + return result; +} + +SWIGINTERN int +SwigPyBuiltin_SetterClosure (PyObject *obj, PyObject *val, void *closure) { + SwigPyGetSet *getset; + PyObject *tuple, *result; + if (!closure) { + PyErr_Format(PyExc_TypeError, "Missing getset closure"); + return -1; + } + getset = (SwigPyGetSet *)closure; + if (!getset->set) { + PyErr_Format(PyExc_TypeError, "Illegal member variable assignment in type '%.300s'", obj->ob_type->tp_name); + return -1; + } + tuple = PyTuple_New(1); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, val); + Py_XINCREF(val); + result = (*getset->set)(obj, tuple); + Py_DECREF(tuple); + Py_XDECREF(result); + return result ? 0 : -1; +} + +SWIGINTERN int +SwigPyBuiltin_FunpackSetterClosure (PyObject *obj, PyObject *val, void *closure) { + SwigPyGetSet *getset; + PyObject *result; + if (!closure) { + PyErr_Format(PyExc_TypeError, "Missing getset closure"); + return -1; + } + getset = (SwigPyGetSet *)closure; + if (!getset->set) { + PyErr_Format(PyExc_TypeError, "Illegal member variable assignment in type '%.300s'", obj->ob_type->tp_name); + return -1; + } + result = (*getset->set)(obj, val); + Py_XDECREF(result); + return result ? 0 : -1; +} + +SWIGINTERN void +SwigPyStaticVar_dealloc(PyDescrObject *descr) { + _PyObject_GC_UNTRACK(descr); + Py_XDECREF(PyDescr_TYPE(descr)); + Py_XDECREF(PyDescr_NAME(descr)); + PyObject_GC_Del(descr); +} + +SWIGINTERN PyObject * +SwigPyStaticVar_repr(PyGetSetDescrObject *descr) { +#if PY_VERSION_HEX >= 0x03000000 + + return PyUnicode_FromFormat("<class attribute '%S' of type '%s'>", PyDescr_NAME(descr), PyDescr_TYPE(descr)->tp_name); +#else + return PyString_FromFormat("<class attribute '%s' of type '%s'>", PyString_AsString(PyDescr_NAME(descr)), PyDescr_TYPE(descr)->tp_name); +#endif +} + +SWIGINTERN int +SwigPyStaticVar_traverse(PyObject *self, visitproc visit, void *arg) { + PyDescrObject *descr; + descr = (PyDescrObject *)self; + Py_VISIT((PyObject*) PyDescr_TYPE(descr)); + return 0; +} + +SWIGINTERN PyObject * +SwigPyStaticVar_get(PyGetSetDescrObject *descr, PyObject *obj, PyObject *SWIGUNUSEDPARM(type)) { + if (descr->d_getset->get != NULL) + return descr->d_getset->get(obj, descr->d_getset->closure); +#if PY_VERSION_HEX >= 0x03000000 + PyErr_Format(PyExc_AttributeError, "attribute '%.300S' of '%.100s' objects is not readable", PyDescr_NAME(descr), PyDescr_TYPE(descr)->tp_name); +#else + PyErr_Format(PyExc_AttributeError, "attribute '%.300s' of '%.100s' objects is not readable", PyString_AsString(PyDescr_NAME(descr)), PyDescr_TYPE(descr)->tp_name); +#endif + return NULL; +} + +SWIGINTERN int +SwigPyStaticVar_set(PyGetSetDescrObject *descr, PyObject *obj, PyObject *value) { + if (descr->d_getset->set != NULL) + return descr->d_getset->set(obj, value, descr->d_getset->closure); +#if PY_VERSION_HEX >= 0x03000000 + PyErr_Format(PyExc_AttributeError, "attribute '%.300S' of '%.100s' objects is not writable", PyDescr_NAME(descr), PyDescr_TYPE(descr)->tp_name); +#else + PyErr_Format(PyExc_AttributeError, "attribute '%.300s' of '%.100s' objects is not writable", PyString_AsString(PyDescr_NAME(descr)), PyDescr_TYPE(descr)->tp_name); +#endif + return -1; +} + +SWIGINTERN int +SwigPyObjectType_setattro(PyObject *typeobject, PyObject *name, PyObject *value) { + PyObject *attribute; + PyTypeObject *type; + descrsetfunc local_set; + + assert(PyType_Check(typeobject)); + type = (PyTypeObject *)typeobject; + attribute = _PyType_Lookup(type, name); + if (attribute != NULL) { + /* Implement descriptor functionality, if any */ + local_set = attribute->ob_type->tp_descr_set; + if (local_set != NULL) + return local_set(attribute, (PyObject *)type, value); +#if PY_VERSION_HEX >= 0x03000000 + PyErr_Format(PyExc_AttributeError, "cannot modify read-only attribute '%.50s.%.400S'", type->tp_name, name); +#else + PyErr_Format(PyExc_AttributeError, "cannot modify read-only attribute '%.50s.%.400s'", type->tp_name, PyString_AS_STRING(name)); +#endif + } else { +#if PY_VERSION_HEX >= 0x03000000 + PyErr_Format(PyExc_AttributeError, "type '%.50s' has no attribute '%.400S'", type->tp_name, name); +#else + PyErr_Format(PyExc_AttributeError, "type '%.50s' has no attribute '%.400s'", type->tp_name, PyString_AS_STRING(name)); +#endif + } + + return -1; +} + +SWIGINTERN PyTypeObject* +SwigPyStaticVar_Type(void) { + static PyTypeObject staticvar_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(&PyType_Type, 0) +#else + PyObject_HEAD_INIT(&PyType_Type) + 0, /* ob_size */ +#endif + "swig_static_var_getset_descriptor", /* tp_name */ + sizeof(PyGetSetDescrObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyStaticVar_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + (reprfunc)SwigPyStaticVar_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_CLASS, /* tp_flags */ + 0, /* tp_doc */ + SwigPyStaticVar_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + (descrgetfunc)SwigPyStaticVar_get, /* tp_descr_get */ + (descrsetfunc)SwigPyStaticVar_set, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#if PY_VERSION_HEX >= 0x02060000 + 0, /* tp_version_tag */ +#endif +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ +#if PY_VERSION_HEX >= 0x02050000 + 0, /* tp_prev */ +#endif + 0 /* tp_next */ +#endif + }; + staticvar_type = tmp; + type_init = 1; +#if PY_VERSION_HEX < 0x02020000 + staticvar_type.ob_type = &PyType_Type; +#else + if (PyType_Ready(&staticvar_type) < 0) + return NULL; +#endif + } + return &staticvar_type; +} + +SWIGINTERN PyTypeObject* +SwigPyObjectType(void) { + static char swigpyobjecttype_doc[] = "Metaclass for SWIG wrapped types"; + static PyTypeObject swigpyobjecttype_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(&PyType_Type, 0) +#else + PyObject_HEAD_INIT(&PyType_Type) + 0, /* ob_size */ +#endif + "SwigPyObjectType", /* tp_name */ + PyType_Type.tp_basicsize, /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + SwigPyObjectType_setattro, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_CLASS, /* tp_flags */ + swigpyobjecttype_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#if PY_VERSION_HEX >= 0x02060000 + 0, /* tp_version_tag */ +#endif +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ +#if PY_VERSION_HEX >= 0x02050000 + 0, /* tp_prev */ +#endif + 0 /* tp_next */ +#endif + }; + swigpyobjecttype_type = tmp; + type_init = 1; + swigpyobjecttype_type.tp_base = &PyType_Type; +#if PY_VERSION_HEX < 0x02020000 + swigpyobjecttype_type.ob_type = &PyType_Type; +#else + if (PyType_Ready(&swigpyobjecttype_type) < 0) + return NULL; +#endif + } + return &swigpyobjecttype_type; +} + +SWIGINTERN PyGetSetDescrObject * +SwigPyStaticVar_new_getset(PyTypeObject *type, PyGetSetDef *getset) { + + PyGetSetDescrObject *descr; + descr = (PyGetSetDescrObject *)PyType_GenericAlloc(SwigPyStaticVar_Type(), 0); + assert(descr); + Py_XINCREF(type); + PyDescr_TYPE(descr) = type; + PyDescr_NAME(descr) = PyString_InternFromString(getset->name); + descr->d_getset = getset; + if (PyDescr_NAME(descr) == NULL) { + Py_DECREF(descr); + descr = NULL; + } + return descr; +} + +SWIGINTERN void +SwigPyBuiltin_InitBases (PyTypeObject *type, PyTypeObject **bases) { + int base_count = 0; + PyTypeObject **b; + PyObject *tuple; + int i; + + if (!bases[0]) { + bases[0] = SwigPyObject_type(); + bases[1] = NULL; + } + type->tp_base = bases[0]; + Py_INCREF((PyObject *)bases[0]); + for (b = bases; *b != NULL; ++b) + ++base_count; + tuple = PyTuple_New(base_count); + for (i = 0; i < base_count; ++i) { + PyTuple_SET_ITEM(tuple, i, (PyObject *)bases[i]); + Py_INCREF((PyObject *)bases[i]); + } + type->tp_bases = tuple; +} + +SWIGINTERN PyObject * +SwigPyBuiltin_ThisClosure (PyObject *self, void *SWIGUNUSEDPARM(closure)) { + PyObject *result; + result = (PyObject *)SWIG_Python_GetSwigThis(self); + Py_XINCREF(result); + return result; +} + +SWIGINTERN void +SwigPyBuiltin_SetMetaType (PyTypeObject *type, PyTypeObject *metatype) +{ +#if PY_VERSION_HEX >= 0x03000000 + type->ob_base.ob_base.ob_type = metatype; +#else + type->ob_type = metatype; +#endif +} + + +/* Start of callback function macros for use in PyTypeObject */ + +typedef PyObject *(*SwigPyWrapperFunction)(PyObject *, PyObject *); + +#define SWIGPY_UNARYFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_unaryfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_unaryfunc_closure(wrapper, a); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_unaryfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + return wrapper(a, NULL); +} + +#define SWIGPY_DESTRUCTOR_CLOSURE(wrapper) \ +SWIGINTERN void \ +wrapper##_destructor_closure(PyObject *a) { \ + SwigPyBuiltin_destructor_closure(wrapper, #wrapper, a); \ +} +SWIGINTERN void +SwigPyBuiltin_destructor_closure(SwigPyWrapperFunction wrapper, const char *wrappername, PyObject *a) { + SwigPyObject *sobj; + sobj = (SwigPyObject *)a; + Py_XDECREF(sobj->dict); + Py_XDECREF(sobj->parent); + if (sobj->own) { + PyObject *o; + PyObject *val = 0, *type = 0, *tb = 0; + PyErr_Fetch(&val, &type, &tb); + o = wrapper(a, NULL); + if (!o) { + PyObject *deallocname = PyString_FromString(wrappername); + PyErr_WriteUnraisable(deallocname); + Py_DECREF(deallocname); + } + PyErr_Restore(val, type, tb); + Py_XDECREF(o); + } + if (PyType_IS_GC(a->ob_type)) { + PyObject_GC_Del(a); + } else { + PyObject_Del(a); + } +} + +#define SWIGPY_INQUIRY_CLOSURE(wrapper) \ +SWIGINTERN int \ +wrapper##_inquiry_closure(PyObject *a) { \ + return SwigPyBuiltin_inquiry_closure(wrapper, a); \ +} +SWIGINTERN int +SwigPyBuiltin_inquiry_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + PyObject *pyresult; + int result; + pyresult = wrapper(a, NULL); + result = pyresult && PyObject_IsTrue(pyresult) ? 1 : 0; + Py_XDECREF(pyresult); + return result; +} + +#define SWIGPY_GETITERFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_getiterfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_getiterfunc_closure(wrapper, a); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_getiterfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + return wrapper(a, NULL); +} + +#define SWIGPY_BINARYFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_binaryfunc_closure(PyObject *a, PyObject *b) { \ + return SwigPyBuiltin_binaryfunc_closure(wrapper, a, b); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_binaryfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, PyObject *b) { + PyObject *tuple, *result; + tuple = PyTuple_New(1); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, b); + Py_XINCREF(b); + result = wrapper(a, tuple); + Py_DECREF(tuple); + return result; +} + +typedef ternaryfunc ternarycallfunc; + +#define SWIGPY_TERNARYFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_ternaryfunc_closure(PyObject *a, PyObject *b, PyObject *c) { \ + return SwigPyBuiltin_ternaryfunc_closure(wrapper, a, b, c); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_ternaryfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, PyObject *b, PyObject *c) { + PyObject *tuple, *result; + tuple = PyTuple_New(2); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, b); + PyTuple_SET_ITEM(tuple, 1, c); + Py_XINCREF(b); + Py_XINCREF(c); + result = wrapper(a, tuple); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_TERNARYCALLFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_ternarycallfunc_closure(PyObject *a, PyObject *b, PyObject *c) { \ + return SwigPyBuiltin_ternarycallfunc_closure(wrapper, a, b, c); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_ternarycallfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, PyObject *b, PyObject *c) { + (void) c; + return wrapper(a, b); +} + +#define SWIGPY_LENFUNC_CLOSURE(wrapper) \ +SWIGINTERN Py_ssize_t \ +wrapper##_lenfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_lenfunc_closure(wrapper, a); \ +} +SWIGINTERN Py_ssize_t +SwigPyBuiltin_lenfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + PyObject *resultobj; + Py_ssize_t result; + resultobj = wrapper(a, NULL); + result = PyNumber_AsSsize_t(resultobj, NULL); + Py_DECREF(resultobj); + return result; +} + +#define SWIGPY_SSIZESSIZEARGFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_ssizessizeargfunc_closure(PyObject *a, Py_ssize_t b, Py_ssize_t c) { \ + return SwigPyBuiltin_ssizessizeargfunc_closure(wrapper, a, b, c); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_ssizessizeargfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, Py_ssize_t b, Py_ssize_t c) { + PyObject *tuple, *result; + tuple = PyTuple_New(2); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, _PyLong_FromSsize_t(b)); + PyTuple_SET_ITEM(tuple, 1, _PyLong_FromSsize_t(c)); + result = wrapper(a, tuple); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_SSIZESSIZEOBJARGPROC_CLOSURE(wrapper) \ +SWIGINTERN int \ +wrapper##_ssizessizeobjargproc_closure(PyObject *a, Py_ssize_t b, Py_ssize_t c, PyObject *d) { \ + return SwigPyBuiltin_ssizessizeobjargproc_closure(wrapper, a, b, c, d); \ +} +SWIGINTERN int +SwigPyBuiltin_ssizessizeobjargproc_closure(SwigPyWrapperFunction wrapper, PyObject *a, Py_ssize_t b, Py_ssize_t c, PyObject *d) { + PyObject *tuple, *resultobj; + int result; + tuple = PyTuple_New(d ? 3 : 2); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, _PyLong_FromSsize_t(b)); + PyTuple_SET_ITEM(tuple, 1, _PyLong_FromSsize_t(c)); + if (d) { + PyTuple_SET_ITEM(tuple, 2, d); + Py_INCREF(d); + } + resultobj = wrapper(a, tuple); + result = resultobj ? 0 : -1; + Py_DECREF(tuple); + Py_XDECREF(resultobj); + return result; +} + +#define SWIGPY_SSIZEARGFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_ssizeargfunc_closure(PyObject *a, Py_ssize_t b) { \ + return SwigPyBuiltin_funpack_ssizeargfunc_closure(wrapper, a, b); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_funpack_ssizeargfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, Py_ssize_t b) { + PyObject *tuple, *result; + tuple = PyTuple_New(1); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, _PyLong_FromSsize_t(b)); + result = wrapper(a, tuple); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_FUNPACK_SSIZEARGFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_ssizeargfunc_closure(PyObject *a, Py_ssize_t b) { \ + return SwigPyBuiltin_ssizeargfunc_closure(wrapper, a, b); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_ssizeargfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a, Py_ssize_t b) { + PyObject *arg, *result; + arg = _PyLong_FromSsize_t(b); + result = wrapper(a, arg); + Py_DECREF(arg); + return result; +} + +#define SWIGPY_SSIZEOBJARGPROC_CLOSURE(wrapper) \ +SWIGINTERN int \ +wrapper##_ssizeobjargproc_closure(PyObject *a, Py_ssize_t b, PyObject *c) { \ + return SwigPyBuiltin_ssizeobjargproc_closure(wrapper, a, b, c); \ +} +SWIGINTERN int +SwigPyBuiltin_ssizeobjargproc_closure(SwigPyWrapperFunction wrapper, PyObject *a, Py_ssize_t b, PyObject *c) { + PyObject *tuple, *resultobj; + int result; + tuple = PyTuple_New(2); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, _PyLong_FromSsize_t(b)); + PyTuple_SET_ITEM(tuple, 1, c); + Py_XINCREF(c); + resultobj = wrapper(a, tuple); + result = resultobj ? 0 : -1; + Py_XDECREF(resultobj); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_OBJOBJARGPROC_CLOSURE(wrapper) \ +SWIGINTERN int \ +wrapper##_objobjargproc_closure(PyObject *a, PyObject *b, PyObject *c) { \ + return SwigPyBuiltin_objobjargproc_closure(wrapper, a, b, c); \ +} +SWIGINTERN int +SwigPyBuiltin_objobjargproc_closure(SwigPyWrapperFunction wrapper, PyObject *a, PyObject *b, PyObject *c) { + PyObject *tuple, *resultobj; + int result; + tuple = PyTuple_New(c ? 2 : 1); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, b); + Py_XINCREF(b); + if (c) { + PyTuple_SET_ITEM(tuple, 1, c); + Py_XINCREF(c); + } + resultobj = wrapper(a, tuple); + result = resultobj ? 0 : -1; + Py_XDECREF(resultobj); + Py_DECREF(tuple); + return result; +} + +#define SWIGPY_REPRFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_reprfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_reprfunc_closure(wrapper, a); \ +} +SWIGINTERN PyObject * +SwigPyBuiltin_reprfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + return wrapper(a, NULL); +} + +#define SWIGPY_HASHFUNC_CLOSURE(wrapper) \ +SWIGINTERN Py_hash_t \ +wrapper##_hashfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_hashfunc_closure(wrapper, a); \ +} +SWIGINTERN Py_hash_t +SwigPyBuiltin_hashfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + PyObject *pyresult; + Py_hash_t result; + pyresult = wrapper(a, NULL); + if (!pyresult) + return -1; + result = SWIG_PyNumber_AsPyHash(pyresult); + Py_DECREF(pyresult); + return result; +} + +#define SWIGPY_ITERNEXTFUNC_CLOSURE(wrapper) \ +SWIGINTERN PyObject * \ +wrapper##_iternextfunc_closure(PyObject *a) { \ + return SwigPyBuiltin_iternextfunc_closure(wrapper, a);\ +} +SWIGINTERN PyObject * +SwigPyBuiltin_iternextfunc_closure(SwigPyWrapperFunction wrapper, PyObject *a) { + return wrapper(a, NULL); +} + +/* End of callback function macros for use in PyTypeObject */ + +#ifdef __cplusplus +} +#endif + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/carrays.i b/qrenderdoc/3rdparty/swig/Lib/python/carrays.i new file mode 100644 index 000000000..74b2be9c4 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/carrays.i @@ -0,0 +1,13 @@ +%define %array_class(TYPE,NAME) +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "sq_item", functype="ssizeargfunc") NAME::__getitem__; + %feature("python:slot", "sq_ass_item", functype="ssizeobjargproc") NAME::__setitem__; +#endif +%array_class_wrap(TYPE,NAME,__getitem__,__setitem__) +%enddef + +%include <typemaps/carrays.swg> + + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/ccomplex.i b/qrenderdoc/3rdparty/swig/Lib/python/ccomplex.i new file mode 100644 index 000000000..28872b985 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/ccomplex.i @@ -0,0 +1,26 @@ +/* ----------------------------------------------------------------------------- + * ccomplex.i + * + * C complex typemaps + * ISO C99: 7.3 Complex arithmetic <complex.h> + * ----------------------------------------------------------------------------- */ + + +%include <pycomplex.swg> + +%{ +#include <complex.h> +%} + + +/* C complex constructor */ +#define CCplxConst(r, i) ((r) + I*(i)) + +%swig_cplxflt_convn(float complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(double complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(complex, CCplxConst, creal, cimag); + +/* declaring the typemaps */ +%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, complex); diff --git a/qrenderdoc/3rdparty/swig/Lib/python/cdata.i b/qrenderdoc/3rdparty/swig/Lib/python/cdata.i new file mode 100644 index 000000000..367965990 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/cdata.i @@ -0,0 +1 @@ +%include <typemaps/cdata.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/cmalloc.i b/qrenderdoc/3rdparty/swig/Lib/python/cmalloc.i new file mode 100644 index 000000000..248f06b96 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/cmalloc.i @@ -0,0 +1 @@ +%include <typemaps/cmalloc.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/cni.i b/qrenderdoc/3rdparty/swig/Lib/python/cni.i new file mode 100644 index 000000000..10a1403a2 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/cni.i @@ -0,0 +1,2 @@ +%include <gcj/cni.i> +%include <jstring.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/complex.i b/qrenderdoc/3rdparty/swig/Lib/python/complex.i new file mode 100644 index 000000000..4c3b3c5e2 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/complex.i @@ -0,0 +1,6 @@ +#ifdef __cplusplus +%include <std_complex.i> +#else +%include <ccomplex.i> +#endif + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/cpointer.i b/qrenderdoc/3rdparty/swig/Lib/python/cpointer.i new file mode 100644 index 000000000..d824792fa --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/cpointer.i @@ -0,0 +1 @@ +%include <typemaps/cpointer.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/cstring.i b/qrenderdoc/3rdparty/swig/Lib/python/cstring.i new file mode 100644 index 000000000..ede9c596a --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/cstring.i @@ -0,0 +1 @@ +%include <typemaps/cstring.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/cwstring.i b/qrenderdoc/3rdparty/swig/Lib/python/cwstring.i new file mode 100644 index 000000000..2824d9c7b --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/cwstring.i @@ -0,0 +1,3 @@ +%include <pywstrings.swg> +%include <typemaps/cwstring.swg> + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/defarg.swg b/qrenderdoc/3rdparty/swig/Lib/python/defarg.swg new file mode 100644 index 000000000..10c991615 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/defarg.swg @@ -0,0 +1,37 @@ +/* This file defines an internal function for processing default arguments + with proxy classes. + + There seems to be no straightforward way to write proxy functions + involving default arguments. For example : + + def foo(arg1,arg2,*args): + proxyc.foo(arg1,arg2,args) + + This fails because args is now a tuple and SWIG doesn't know what to + do with it. + + This file allows a different approach : + + def foo(arg1,arg2,*args): + proxyc.__call_defarg(proxyc.foo,(arg1,arg2,)+args) + + Basically, we form a new tuple from the object, call this special + __call_defarg method and it passes control to the real wrapper function. + An ugly hack, but it works. +*/ + +SWIGINTERN PyObject *swig_call_defargs(PyObject *self, PyObject *args) { + PyObject *func; + PyObject *parms; + + if (!PyArg_ParseTuple(args,"OO",&func,&parms)) + return NULL; + + if (!PyCallable_Check(func)) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_TypeError, "__call_defarg : Need a callable object!"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + return PyEval_CallObject(func,parms); +} diff --git a/qrenderdoc/3rdparty/swig/Lib/python/director.swg b/qrenderdoc/3rdparty/swig/Lib/python/director.swg new file mode 100644 index 000000000..4bdc94dc2 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/director.swg @@ -0,0 +1,429 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that Python proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#ifndef SWIG_DIRECTOR_PYTHON_HEADER_ +#define SWIG_DIRECTOR_PYTHON_HEADER_ + +#include <string> +#include <iostream> +#include <exception> +#include <vector> +#include <map> + + +/* + Use -DSWIG_PYTHON_DIRECTOR_NO_VTABLE if you don't want to generate a 'virtual + table', and avoid multiple GetAttr calls to retrieve the python + methods. +*/ + +#ifndef SWIG_PYTHON_DIRECTOR_NO_VTABLE +#ifndef SWIG_PYTHON_DIRECTOR_VTABLE +#define SWIG_PYTHON_DIRECTOR_VTABLE +#endif +#endif + + + +/* + Use -DSWIG_DIRECTOR_NO_UEH if you prefer to avoid the use of the + Undefined Exception Handler provided by swig. +*/ +#ifndef SWIG_DIRECTOR_NO_UEH +#ifndef SWIG_DIRECTOR_UEH +#define SWIG_DIRECTOR_UEH +#endif +#endif + + +/* + Use -DSWIG_DIRECTOR_NORTTI if you prefer to avoid the use of the + native C++ RTTI and dynamic_cast<>. But be aware that directors + could stop working when using this option. +*/ +#ifdef SWIG_DIRECTOR_NORTTI +/* + When we don't use the native C++ RTTI, we implement a minimal one + only for Directors. +*/ +# ifndef SWIG_DIRECTOR_RTDIR +# define SWIG_DIRECTOR_RTDIR + +namespace Swig { + class Director; + SWIGINTERN std::map<void *, Director *>& get_rtdir_map() { + static std::map<void *, Director *> rtdir_map; + return rtdir_map; + } + + SWIGINTERNINLINE void set_rtdir(void *vptr, Director *rtdir) { + get_rtdir_map()[vptr] = rtdir; + } + + SWIGINTERNINLINE Director *get_rtdir(void *vptr) { + std::map<void *, Director *>::const_iterator pos = get_rtdir_map().find(vptr); + Director *rtdir = (pos != get_rtdir_map().end()) ? pos->second : 0; + return rtdir; + } +} +# endif /* SWIG_DIRECTOR_RTDIR */ + +# define SWIG_DIRECTOR_CAST(ARG) Swig::get_rtdir(static_cast<void *>(ARG)) +# define SWIG_DIRECTOR_RGTR(ARG1, ARG2) Swig::set_rtdir(static_cast<void *>(ARG1), ARG2) + +#else + +# define SWIG_DIRECTOR_CAST(ARG) dynamic_cast<Swig::Director *>(ARG) +# define SWIG_DIRECTOR_RGTR(ARG1, ARG2) + +#endif /* SWIG_DIRECTOR_NORTTI */ + +extern "C" { + struct swig_type_info; +} + +namespace Swig { + + /* memory handler */ + struct GCItem { + virtual ~GCItem() {} + + virtual int get_own() const { + return 0; + } + }; + + struct GCItem_var { + GCItem_var(GCItem *item = 0) : _item(item) { + } + + GCItem_var& operator=(GCItem *item) { + GCItem *tmp = _item; + _item = item; + delete tmp; + return *this; + } + + ~GCItem_var() { + delete _item; + } + + GCItem * operator->() const { + return _item; + } + + private: + GCItem *_item; + }; + + struct GCItem_Object : GCItem { + GCItem_Object(int own) : _own(own) { + } + + virtual ~GCItem_Object() { + } + + int get_own() const { + return _own; + } + + private: + int _own; + }; + + template <typename Type> + struct GCItem_T : GCItem { + GCItem_T(Type *ptr) : _ptr(ptr) { + } + + virtual ~GCItem_T() { + delete _ptr; + } + + private: + Type *_ptr; + }; + + template <typename Type> + struct GCArray_T : GCItem { + GCArray_T(Type *ptr) : _ptr(ptr) { + } + + virtual ~GCArray_T() { + delete[] _ptr; + } + + private: + Type *_ptr; + }; + + /* base class for director exceptions */ + class DirectorException : public std::exception { + protected: + std::string swig_msg; + public: + DirectorException(PyObject *error, const char *hdr ="", const char *msg ="") : swig_msg(hdr) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (msg[0]) { + swig_msg += " "; + swig_msg += msg; + } + if (!PyErr_Occurred()) { + PyErr_SetString(error, what()); + } + SWIG_PYTHON_THREAD_END_BLOCK; + } + + virtual ~DirectorException() throw() { + } + + /* Deprecated, use what() instead */ + const char *getMessage() const { + return what(); + } + + const char *what() const throw() { + return swig_msg.c_str(); + } + + static void raise(PyObject *error, const char *msg) { + throw DirectorException(error, msg); + } + + static void raise(const char *msg) { + raise(PyExc_RuntimeError, msg); + } + }; + + /* unknown exception handler */ + class UnknownExceptionHandler { +#ifdef SWIG_DIRECTOR_UEH + static void handler() { + try { + throw; + } catch (DirectorException& e) { + std::cerr << "SWIG Director exception caught:" << std::endl + << e.what() << std::endl; + } catch (std::exception& e) { + std::cerr << "std::exception caught: "<< e.what() << std::endl; + } catch (...) { + std::cerr << "Unknown exception caught." << std::endl; + } + + std::cerr << std::endl + << "Python interpreter traceback:" << std::endl; + PyErr_Print(); + std::cerr << std::endl; + + std::cerr << "This exception was caught by the SWIG unexpected exception handler." << std::endl + << "Try using %feature(\"director:except\") to avoid reaching this point." << std::endl + << std::endl + << "Exception is being re-thrown, program will likely abort/terminate." << std::endl; + throw; + } + + public: + + std::unexpected_handler old; + UnknownExceptionHandler(std::unexpected_handler nh = handler) { + old = std::set_unexpected(nh); + } + + ~UnknownExceptionHandler() { + std::set_unexpected(old); + } +#endif + }; + + /* type mismatch in the return value from a python method call */ + class DirectorTypeMismatchException : public DirectorException { + public: + DirectorTypeMismatchException(PyObject *error, const char *msg="") + : DirectorException(error, "SWIG director type mismatch", msg) { + } + + DirectorTypeMismatchException(const char *msg="") + : DirectorException(PyExc_TypeError, "SWIG director type mismatch", msg) { + } + + static void raise(PyObject *error, const char *msg) { + throw DirectorTypeMismatchException(error, msg); + } + + static void raise(const char *msg) { + throw DirectorTypeMismatchException(msg); + } + }; + + /* any python exception that occurs during a director method call */ + class DirectorMethodException : public DirectorException { + public: + DirectorMethodException(const char *msg = "") + : DirectorException(PyExc_RuntimeError, "SWIG director method error.", msg) { + } + + static void raise(const char *msg) { + throw DirectorMethodException(msg); + } + }; + + /* attempt to call a pure virtual method via a director method */ + class DirectorPureVirtualException : public DirectorException { + public: + DirectorPureVirtualException(const char *msg = "") + : DirectorException(PyExc_RuntimeError, "SWIG director pure virtual method called", msg) { + } + + static void raise(const char *msg) { + throw DirectorPureVirtualException(msg); + } + }; + + +#if defined(SWIG_PYTHON_THREADS) +/* __THREAD__ is the old macro to activate some thread support */ +# if !defined(__THREAD__) +# define __THREAD__ 1 +# endif +#endif + +#ifdef __THREAD__ +# include "pythread.h" + class Guard { + PyThread_type_lock &mutex_; + + public: + Guard(PyThread_type_lock & mutex) : mutex_(mutex) { + PyThread_acquire_lock(mutex_, WAIT_LOCK); + } + + ~Guard() { + PyThread_release_lock(mutex_); + } + }; +# define SWIG_GUARD(mutex) Guard _guard(mutex) +#else +# define SWIG_GUARD(mutex) +#endif + + /* director base class */ + class Director { + private: + /* pointer to the wrapped python object */ + PyObject *swig_self; + /* flag indicating whether the object is owned by python or c++ */ + mutable bool swig_disown_flag; + + /* decrement the reference count of the wrapped python object */ + void swig_decref() const { + if (swig_disown_flag) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_DECREF(swig_self); + SWIG_PYTHON_THREAD_END_BLOCK; + } + } + + public: + /* wrap a python object. */ + Director(PyObject *self) : swig_self(self), swig_disown_flag(false) { + } + + /* discard our reference at destruction */ + virtual ~Director() { + swig_decref(); + } + + /* return a pointer to the wrapped python object */ + PyObject *swig_get_self() const { + return swig_self; + } + + /* acquire ownership of the wrapped python object (the sense of "disown" is from python) */ + void swig_disown() const { + if (!swig_disown_flag) { + swig_disown_flag=true; + swig_incref(); + } + } + + /* increase the reference count of the wrapped python object */ + void swig_incref() const { + if (swig_disown_flag) { + Py_INCREF(swig_self); + } + } + + /* methods to implement pseudo protected director members */ + virtual bool swig_get_inner(const char * /* swig_protected_method_name */) const { + return true; + } + + virtual void swig_set_inner(const char * /* swig_protected_method_name */, bool /* swig_val */) const { + } + + /* ownership management */ + private: + typedef std::map<void *, GCItem_var> swig_ownership_map; + mutable swig_ownership_map swig_owner; +#ifdef __THREAD__ + static PyThread_type_lock swig_mutex_own; +#endif + + public: + template <typename Type> + void swig_acquire_ownership_array(Type *vptr) const { + if (vptr) { + SWIG_GUARD(swig_mutex_own); + swig_owner[vptr] = new GCArray_T<Type>(vptr); + } + } + + template <typename Type> + void swig_acquire_ownership(Type *vptr) const { + if (vptr) { + SWIG_GUARD(swig_mutex_own); + swig_owner[vptr] = new GCItem_T<Type>(vptr); + } + } + + void swig_acquire_ownership_obj(void *vptr, int own) const { + if (vptr && own) { + SWIG_GUARD(swig_mutex_own); + swig_owner[vptr] = new GCItem_Object(own); + } + } + + int swig_release_ownership(void *vptr) const { + int own = 0; + if (vptr) { + SWIG_GUARD(swig_mutex_own); + swig_ownership_map::iterator iter = swig_owner.find(vptr); + if (iter != swig_owner.end()) { + own = iter->second->get_own(); + swig_owner.erase(iter); + } + } + return own; + } + + template <typename Type> + static PyObject *swig_pyobj_disown(PyObject *pyobj, PyObject *SWIGUNUSEDPARM(args)) { + SwigPyObject *sobj = (SwigPyObject *)pyobj; + sobj->own = 0; + Director *d = SWIG_DIRECTOR_CAST(reinterpret_cast<Type *>(sobj->ptr)); + if (d) + d->swig_disown(); + return PyWeakref_NewProxy(pyobj, NULL); + } + }; + +#ifdef __THREAD__ + PyThread_type_lock Director::swig_mutex_own = PyThread_allocate_lock(); +#endif +} + +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/python/embed.i b/qrenderdoc/3rdparty/swig/Lib/python/embed.i new file mode 100644 index 000000000..efd048789 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/embed.i @@ -0,0 +1,106 @@ +// +// embed.i +// SWIG file embedding the Python interpreter in something else. +// This file is deprecated and no longer actively maintained, but it still +// seems to work with Python 2.7. Status with Python 3 is unknown. +// +// This file makes it possible to extend Python and all of its +// built-in functions without having to hack its setup script. +// + + +#ifdef AUTODOC +%subsection "embed.i" +%text %{ +This module provides support for building a new version of the +Python executable. This will be necessary on systems that do +not support shared libraries and may be necessary with C++ +extensions. This file contains everything you need to build +a new version of Python from include files and libraries normally +installed with the Python language. + +This module will automatically grab all of the Python modules +present in your current Python executable (including any special +purpose modules you have enabled such as Tkinter). Thus, you +may need to provide additional link libraries when compiling. + +As far as I know, this module is C++ safe. +%} +#endif + +%wrapper %{ + +#include <Python.h> + +#ifdef __cplusplus +extern "C" +#endif +void SWIG_init(); /* Forward reference */ + +#define _PyImport_Inittab swig_inittab + +/* Grab Python's inittab[] structure */ + +#ifdef __cplusplus +extern "C" { +#endif +#include <config.c> + +#undef _PyImport_Inittab + +/* Now define our own version of it. + Hopefully someone does not have more than 1000 built-in modules */ + +struct _inittab SWIG_Import_Inittab[1000]; + +static int swig_num_modules = 0; + +/* Function for adding modules to Python */ + +static void swig_add_module(char *name, void (*initfunc)()) { + SWIG_Import_Inittab[swig_num_modules].name = name; + SWIG_Import_Inittab[swig_num_modules].initfunc = initfunc; + swig_num_modules++; + SWIG_Import_Inittab[swig_num_modules].name = (char *) 0; + SWIG_Import_Inittab[swig_num_modules].initfunc = 0; +} + +/* Function to add all of Python's built-in modules to our interpreter */ + +static void swig_add_builtin() { + int i = 0; + while (swig_inittab[i].name) { + swig_add_module(swig_inittab[i].name, swig_inittab[i].initfunc); + i++; + } +#ifdef SWIGMODINIT + SWIGMODINIT +#endif + /* Add SWIG builtin function */ + swig_add_module(SWIG_name, SWIG_init); +} + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern int Py_Main(int, char **); + +#ifdef __cplusplus +} +#endif + +extern struct _inittab *PyImport_Inittab; + +int +main(int argc, char **argv) { + swig_add_builtin(); + PyImport_Inittab = SWIG_Import_Inittab; + return Py_Main(argc,argv); +} + +%} diff --git a/qrenderdoc/3rdparty/swig/Lib/python/enums.swg b/qrenderdoc/3rdparty/swig/Lib/python/enums.swg new file mode 100644 index 000000000..c3a453dec --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/enums.swg @@ -0,0 +1,29 @@ +/* ----------------------------------------------------------------------------- + * enums.swg + * + * Include this file in order for C/C++ enums to be wrapped by Python classes. + * ----------------------------------------------------------------------------- */ + +// when returning a typed enum, check if there's a tp_dict. If there is, we +// failed to create a true Enum (e.g. running on < 3.4 where it's not available) +// and we just return the int value. +// If there's no tp_dict though, we can use the tp_base that points to the +// python Enum class type object, instead of registering our actual type. +%typemap(out) enum SWIGTYPE { + SwigPyClientData *cd = NULL; + PyObject *enum_constructor = NULL; + PyObject *numerical = SWIG_From_int(static_cast< int >(result)); + + cd = (SwigPyClientData*)$&1_descriptor->clientdata; + if (cd->pytype->tp_dict) { + $result = numerical; + } else { + enum_constructor = (PyObject *)cd->pytype->tp_base; + resultobj = PyObject_CallFunctionObjArgs(enum_constructor, numerical, NULL); + Py_DECREF(numerical); + } +} + +#define %pythonenumstrong %feature("python:enum:strong") +#define %pythonenumscoped %feature("python:enum:scoped") +#define %pythonenumclass %feature("python:enum",strong=1,scoped=1) diff --git a/qrenderdoc/3rdparty/swig/Lib/python/exception.i b/qrenderdoc/3rdparty/swig/Lib/python/exception.i new file mode 100644 index 000000000..bb0b15c9d --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/exception.i @@ -0,0 +1,6 @@ +%include <typemaps/exception.swg> + + +%insert("runtime") { + %define_as(SWIG_exception(code, msg), %block(%error(code, msg); SWIG_fail; )) +} diff --git a/qrenderdoc/3rdparty/swig/Lib/python/factory.i b/qrenderdoc/3rdparty/swig/Lib/python/factory.i new file mode 100644 index 000000000..46a0a8733 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/factory.i @@ -0,0 +1 @@ +%include <typemaps/factory.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/file.i b/qrenderdoc/3rdparty/swig/Lib/python/file.i new file mode 100644 index 000000000..359c34d2c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/file.i @@ -0,0 +1,41 @@ +/* ----------------------------------------------------------------------------- + * file.i + * + * Typemaps for FILE* + * ----------------------------------------------------------------------------- */ + +%types(FILE *); + +/* defining basic methods */ +%fragment("SWIG_AsValFilePtr","header") { +SWIGINTERN int +SWIG_AsValFilePtr(PyObject *obj, FILE **val) { + static swig_type_info* desc = 0; + void *vptr = 0; + if (!desc) desc = SWIG_TypeQuery("FILE *"); + if ((SWIG_ConvertPtr(obj, &vptr, desc, 0)) == SWIG_OK) { + if (val) *val = (FILE *)vptr; + return SWIG_OK; + } +%#if PY_VERSION_HEX < 0x03000000 + if (PyFile_Check(obj)) { + if (val) *val = PyFile_AsFile(obj); + return SWIG_OK; + } +%#endif + return SWIG_TypeError; +} +} + + +%fragment("SWIG_AsFilePtr","header",fragment="SWIG_AsValFilePtr") { +SWIGINTERNINLINE FILE* +SWIG_AsFilePtr(PyObject *obj) { + FILE *val = 0; + SWIG_AsValFilePtr(obj, &val); + return val; +} +} + +/* defining the typemaps */ +%typemaps_asval(%checkcode(POINTER), SWIG_AsValFilePtr, "SWIG_AsValFilePtr", FILE*); diff --git a/qrenderdoc/3rdparty/swig/Lib/python/implicit.i b/qrenderdoc/3rdparty/swig/Lib/python/implicit.i new file mode 100644 index 000000000..152c2b056 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/implicit.i @@ -0,0 +1,7 @@ +%include <std_common.i> +%include <typemaps/implicit.swg> + +#warning "This file provides the %implicit directive, which is an old and fragile" +#warning "way to implement the C++ implicit conversion mechanism." +#warning "Try using the more robust '%implicitconv Type;' directive instead." + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/jstring.i b/qrenderdoc/3rdparty/swig/Lib/python/jstring.i new file mode 100644 index 000000000..bda95237b --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/jstring.i @@ -0,0 +1,72 @@ +%include <typemaps/valtypes.swg> + +%fragment(SWIG_AsVal_frag(jstring),"header") { +SWIGINTERN int +SWIG_AsVal(jstring)(PyObject *obj, jstring *val) +{ + if (obj == Py_None) { + if (val) *val = 0; + return SWIG_OK; + } + + PyObject *tmp = 0; + int isunicode = PyUnicode_Check(obj); + if (!isunicode && PyString_Check(obj)) { + if (val) { + obj = tmp = PyUnicode_FromObject(obj); + } + isunicode = 1; + } + if (isunicode) { + if (val) { + if (sizeof(Py_UNICODE) == sizeof(jchar)) { + *val = JvNewString((const jchar *) PyUnicode_AS_UNICODE(obj),PyUnicode_GET_SIZE(obj)); + return SWIG_NEWOBJ; + } else { + int len = PyUnicode_GET_SIZE(obj); + Py_UNICODE *pchars = PyUnicode_AS_UNICODE(obj); + *val = JvAllocString (len); + jchar *jchars = JvGetStringChars (*val); + for (int i = 0; i < len; ++i) { + jchars[i] = pchars[i]; + } + return SWIG_NEWOBJ; + } + } + Py_XDECREF(tmp); + return SWIG_OK; + } + return SWIG_TypeError; +} +} + +%fragment(SWIG_From_frag(jstring),"header") { +SWIGINTERNINLINE PyObject * +SWIG_From(jstring)(jstring val) +{ + if (!val) { + return SWIG_Py_Void(); + } + if (sizeof(Py_UNICODE) == sizeof(jchar)) { + return PyUnicode_FromUnicode((const Py_UNICODE *) JvGetStringChars(val), + JvGetStringUTFLength(val)); + } else { + int len = JvGetStringUTFLength(val); + Py_UNICODE pchars[len]; + jchar *jchars = JvGetStringChars(val); + + for (int i = 0; i < len; i++) { + pchars[i] = jchars[i]; + } + return PyUnicode_FromUnicode((const Py_UNICODE *) pchars, len); + } +} +} + +%typemaps_asvalfrom(%checkcode(STRING), + %arg(SWIG_AsVal(jstring)), + %arg(SWIG_From(jstring)), + %arg(SWIG_AsVal_frag(jstring)), + %arg(SWIG_From_frag(jstring)), + java::lang::String *); + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyabc.i b/qrenderdoc/3rdparty/swig/Lib/python/pyabc.i new file mode 100644 index 000000000..12ce65985 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyabc.i @@ -0,0 +1,10 @@ +%define %pythonabc(Type, Abc) + %feature("python:abc", #Abc) Type; +%enddef +%pythoncode %{import collections%} +%pythonabc(std::vector, collections.MutableSequence); +%pythonabc(std::list, collections.MutableSequence); +%pythonabc(std::map, collections.MutableMapping); +%pythonabc(std::multimap, collections.MutableMapping); +%pythonabc(std::set, collections.MutableSet); +%pythonabc(std::multiset, collections.MutableSet); diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyapi.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyapi.swg new file mode 100644 index 000000000..2da05f9e9 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyapi.swg @@ -0,0 +1,47 @@ +/* ----------------------------------------------------------------------------- + * Python API portion that goes into the runtime + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* ----------------------------------------------------------------------------- + * Constant declarations + * ----------------------------------------------------------------------------- */ + +/* Constant Types */ +#define SWIG_PY_POINTER 4 +#define SWIG_PY_BINARY 5 + +/* Constant information structure */ +typedef struct swig_const_info { + int type; + char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_const_info; + + +/* ----------------------------------------------------------------------------- + * Wrapper of PyInstanceMethod_New() used in Python 3 + * It is exported to the generated module, used for -fastproxy + * ----------------------------------------------------------------------------- */ +#if PY_VERSION_HEX >= 0x03000000 +SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) +{ + return PyInstanceMethod_New(func); +} +#else +SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *SWIGUNUSEDPARM(func)) +{ + return NULL; +} +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pybackward.swg b/qrenderdoc/3rdparty/swig/Lib/python/pybackward.swg new file mode 100644 index 000000000..8305fc78b --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pybackward.swg @@ -0,0 +1,45 @@ +/* + adding backward compatibility macros +*/ + +#define SWIG_arg(x...) %arg(x) +#define SWIG_Mangle(x...) %mangle(x) + +#define SWIG_As_frag(Type...) %fragment_name(As, Type) +#define SWIG_As_name(Type...) %symbol_name(As, Type) +#define SWIG_As(Type...) SWIG_As_name(Type) SWIG_AS_CALL_ARGS + +#define SWIG_Check_frag(Type...) %fragment_name(Check, Type) +#define SWIG_Check_name(Type...) %symbol_name(Check, Type) +#define SWIG_Check(Type...) SWIG_Check_name(Type) SWIG_AS_CALL_ARGS + +%define %ascheck_methods(Code, Type...) +%fragment(SWIG_As_frag(Type),"header", fragment=SWIG_AsVal_frag(Type)) { +SWIGINTERNINLINE Type +SWIG_As(Type)(PyObject* obj) +{ + Type v; + int res = SWIG_AsVal(Type)(obj, &v); + if (!SWIG_IsOK(res)) { + /* + this is needed to make valgrind/purify happier. + */ + memset((void*)&v, 0, sizeof(Type)); + SWIG_Error(res, ""); + } + return v; +} +} + +%fragment(SWIG_Check_frag(Type),"header",fragment=SWIG_AsVal_frag(Type)) { +SWIGINTERNINLINE int +SWIG_Check(Type)(PyObject* obj) +{ + int res = SWIG_AsVal(Type)(obj, (Type*)0); + return SWIG_IsOK(res); +} +} +%enddef + +%apply_checkctypes(%ascheck_methods) + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pybuffer.i b/qrenderdoc/3rdparty/swig/Lib/python/pybuffer.i new file mode 100644 index 000000000..121cd709f --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pybuffer.i @@ -0,0 +1,107 @@ +/* Implementing buffer protocol typemaps */ + +/* %pybuffer_mutable_binary(TYPEMAP, SIZE) + * + * Macro for functions accept mutable buffer pointer with a size. + * This can be used for both input and output. For example: + * + * %pybuffer_mutable_binary(char *buff, int size); + * void foo(char *buff, int size) { + * for(int i=0; i<size; ++i) + * buff[i]++; + * } + */ + +%define %pybuffer_mutable_binary(TYPEMAP, SIZE) +%typemap(in) (TYPEMAP, SIZE) + (int res, Py_ssize_t size = 0, void *buf = 0) { + res = PyObject_AsWriteBuffer($input, &buf, &size); + if (res<0) { + PyErr_Clear(); + %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); + } + $1 = ($1_ltype) buf; + $2 = ($2_ltype) (size/sizeof($*1_type)); +} +%enddef + +/* %pybuffer_mutable_string(TYPEMAP, SIZE) + * + * Macro for functions accept mutable zero terminated string pointer. + * This can be used for both input and output. For example: + * + * %pybuffer_mutable_string(char *str); + * void foo(char *str) { + * while(*str) { + * *str = toupper(*str); + * str++; + * } + */ + +%define %pybuffer_mutable_string(TYPEMAP) +%typemap(in) (TYPEMAP) + (int res, Py_ssize_t size = 0, void *buf = 0) { + res = PyObject_AsWriteBuffer($input, &buf, &size); + if (res<0) { + PyErr_Clear(); + %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); + } + $1 = ($1_ltype) buf; +} +%enddef + +/* pybuffer_binary(TYPEMAP, SIZE) + * + * Macro for functions accept read only buffer pointer with a size. + * This must be used for input. For example: + * + * %pybuffer_binary(char *buff, int size); + * int foo(char *buff, int size) { + * int count = 0; + * for(int i=0; i<size; ++i) + * if (0==buff[i]) count++; + * return count; + * } + */ + +%define %pybuffer_binary(TYPEMAP, SIZE) +%typemap(in) (TYPEMAP, SIZE) + (int res, Py_ssize_t size = 0, const void *buf = 0) { + res = PyObject_AsReadBuffer($input, &buf, &size); + if (res<0) { + PyErr_Clear(); + %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); + } + $1 = ($1_ltype) buf; + $2 = ($2_ltype) (size / sizeof($*1_type)); +} +%enddef + +/* %pybuffer_string(TYPEMAP, SIZE) + * + * Macro for functions accept read only zero terminated string pointer. + * This can be used for input. For example: + * + * %pybuffer_string(char *str); + * int foo(char *str) { + * int count = 0; + * while(*str) { + * if (isalnum(*str)) + * count++; + * str++; + * } + */ + +%define %pybuffer_string(TYPEMAP) +%typemap(in) (TYPEMAP) + (int res, Py_ssize_t size = 0, const void *buf = 0) { + res = PyObject_AsReadBuffer($input, &buf, &size); + if (res<0) { + %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); + } + $1 = ($1_ltype) buf; +} +%enddef + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyclasses.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyclasses.swg new file mode 100644 index 000000000..9d6299ff1 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyclasses.swg @@ -0,0 +1,157 @@ +#ifdef __cplusplus + +/* + SwigPtr_PyObject is used as a replacement of PyObject *, where + the INCREF/DECREF are applied as needed. + + You can use SwigPtr_PyObject in a container, such as + + std::vector<SwigPtr_PyObject>; + + or as a member variable: + + struct A { + SwigPtr_PyObject obj; + A(PyObject *o) : _obj(o) { + } + }; + + or as a input/output value + + SwigPtr_PyObject func(SwigPtr_PyObject obj) { + SwigPtr_PyObject out = PyString_FromFormat("hello %s", PyObject_AsString(obj)); + Py_DECREF(out); + return out; + } + + just remember to pair the object creation with the proper DECREF, + the same as with plain PyObject *ptr, since SwigPtr_PyObject always add + one reference at construction. + + SwigPtr_PyObject is 'visible' at the wrapped side, so you can do: + + + %template(pyvector) std::vector<swig::SwigPtr_PyObject>; + + and all the proper typemaps will be used. + +*/ + +namespace swig { + %ignore SwigPtr_PyObject; + struct SwigPtr_PyObject {}; + %apply PyObject * {SwigPtr_PyObject}; + %apply PyObject * const& {SwigPtr_PyObject const&}; + + %typemap(typecheck,precedence=SWIG_TYPECHECK_SWIGOBJECT,noblock=1) SwigPtr_PyObject const& "$1 = ($input != 0);"; + + + /* For output */ + %typemap(out,noblock=1) SwigPtr_PyObject { + $result = (PyObject *)$1; + Py_INCREF($result); + } + + %typemap(out,noblock=1) SwigPtr_PyObject const & { + $result = (PyObject *)*$1; + Py_INCREF($result); + } + +} + +%{ +namespace swig { + class SwigPtr_PyObject { + protected: + PyObject *_obj; + + public: + SwigPtr_PyObject() :_obj(0) + { + } + + SwigPtr_PyObject(const SwigPtr_PyObject& item) : _obj(item._obj) + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XINCREF(_obj); + SWIG_PYTHON_THREAD_END_BLOCK; + } + + SwigPtr_PyObject(PyObject *obj, bool initial_ref = true) :_obj(obj) + { + if (initial_ref) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XINCREF(_obj); + SWIG_PYTHON_THREAD_END_BLOCK; + } + } + + SwigPtr_PyObject & operator=(const SwigPtr_PyObject& item) + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XINCREF(item._obj); + Py_XDECREF(_obj); + _obj = item._obj; + SWIG_PYTHON_THREAD_END_BLOCK; + return *this; + } + + ~SwigPtr_PyObject() + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XDECREF(_obj); + SWIG_PYTHON_THREAD_END_BLOCK; + } + + operator PyObject *() const + { + return _obj; + } + + PyObject *operator->() const + { + return _obj; + } + }; +} +%} + +/* + SwigVar_PyObject is used to manage 'in the scope' PyObject * variables, + as in + + int func () { + SwigVar_PyObject obj = PyString_FromString("hello"); + } + + ie, 'obj' is created and destructed in the same scope from + a python object that carries at least one reference value. + + SwigVar_PyObject just take care of applying the proper Py_DECREF. + + Hence, this class is purely internal and not visible at the wrapped side. + */ +namespace swig { + %ignore SwigVar_PyObject; + struct SwigVar_PyObject {}; + %apply PyObject * {SwigVar_PyObject}; + %apply PyObject * const& {SwigVar_PyObject const&}; +} + +%{ +namespace swig { + struct SwigVar_PyObject : SwigPtr_PyObject { + SwigVar_PyObject(PyObject* obj = 0) : SwigPtr_PyObject(obj, false) { } + + SwigVar_PyObject & operator = (PyObject* obj) + { + Py_XDECREF(_obj); + _obj = obj; + return *this; + } + }; +} +%} + + +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pycomplex.swg b/qrenderdoc/3rdparty/swig/Lib/python/pycomplex.swg new file mode 100644 index 000000000..087c50f90 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pycomplex.swg @@ -0,0 +1,86 @@ +/* + Defines the As/From converters for double/float complex, you need to + provide complex Type, the Name you want to use in the converters, + the complex Constructor method, and the Real and Imag complex + accessor methods. + + See the std_complex.i and ccomplex.i for concrete examples. +*/ + +/* the common from converter */ +%define %swig_fromcplx_conv(Type, Real, Imag) +%fragment(SWIG_From_frag(Type),"header") +{ +SWIGINTERNINLINE PyObject* +SWIG_From(Type)(%ifcplusplus(const Type&, Type) c) +{ + return PyComplex_FromDoubles(Real(c), Imag(c)); +} +} +%enddef + +/* the double case */ +%define %swig_cplxdbl_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(double)) +{ +SWIGINTERN int +SWIG_AsVal(Type) (PyObject *o, Type* val) +{ + if (PyComplex_Check(o)) { + if (val) *val = Constructor(PyComplex_RealAsDouble(o), PyComplex_ImagAsDouble(o)); + return SWIG_OK; + } else { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(o, &d)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(d, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +/* the float case */ +%define %swig_cplxflt_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(float)) { +SWIGINTERN int +SWIG_AsVal(Type)(PyObject *o, Type *val) +{ + if (PyComplex_Check(o)) { + double re = PyComplex_RealAsDouble(o); + double im = PyComplex_ImagAsDouble(o); + if ((-FLT_MAX <= re && re <= FLT_MAX) && (-FLT_MAX <= im && im <= FLT_MAX)) { + if (val) *val = Constructor(%numeric_cast(re, float), + %numeric_cast(im, float)); + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else { + float re; + int res = SWIG_AddCast(SWIG_AsVal(float)(o, &re)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(re, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} + +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +#define %swig_cplxflt_convn(Type, Constructor, Real, Imag) \ +%swig_cplxflt_conv(Type, Constructor, Real, Imag) + + +#define %swig_cplxdbl_convn(Type, Constructor, Real, Imag) \ +%swig_cplxdbl_conv(Type, Constructor, Real, Imag) + + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pycontainer.swg b/qrenderdoc/3rdparty/swig/Lib/python/pycontainer.swg new file mode 100644 index 000000000..d40b0baa8 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pycontainer.swg @@ -0,0 +1,1033 @@ +/* ----------------------------------------------------------------------------- + * pycontainer.swg + * + * Python sequence <-> C++ container wrapper + * + * This wrapper, and its iterator, allows a general use (and reuse) of + * the mapping between C++ and Python, thanks to the C++ templates. + * + * Of course, it needs the C++ compiler to support templates, but + * since we will use this wrapper with the STL containers, that should + * be the case. + * ----------------------------------------------------------------------------- */ + +%{ +#include <iostream> + +#if PY_VERSION_HEX >= 0x03020000 +# define SWIGPY_SLICE_ARG(obj) ((PyObject*) (obj)) +#else +# define SWIGPY_SLICE_ARG(obj) ((PySliceObject*) (obj)) +#endif +%} + + +#if !defined(SWIG_NO_EXPORT_ITERATOR_METHODS) +# if !defined(SWIG_EXPORT_ITERATOR_METHODS) +# define SWIG_EXPORT_ITERATOR_METHODS SWIG_EXPORT_ITERATOR_METHODS +# endif +#endif + +%include <pyiterators.swg> + +/**** The PySequence C++ Wrap ***/ + +%fragment("<stdexcept>"); + +%include <std_except.i> + +%fragment(SWIG_Traits_frag(swig::SwigPtr_PyObject),"header",fragment="StdTraits") { +namespace swig { + template <> struct traits<SwigPtr_PyObject > { + typedef value_category category; + static const char* type_name() { return "SwigPtr_PyObject"; } + }; + + template <> struct traits_from<SwigPtr_PyObject> { + typedef SwigPtr_PyObject value_type; + static PyObject *from(const value_type& val) { + PyObject *obj = static_cast<PyObject *>(val); + Py_XINCREF(obj); + return obj; + } + }; + + template <> + struct traits_check<SwigPtr_PyObject, value_category> { + static bool check(SwigPtr_PyObject) { + return true; + } + }; + + template <> struct traits_asval<SwigPtr_PyObject > { + typedef SwigPtr_PyObject value_type; + static int asval(PyObject *obj, value_type *val) { + if (val) *val = obj; + return SWIG_OK; + } + }; +} +} + +%fragment(SWIG_Traits_frag(swig::SwigVar_PyObject),"header",fragment="StdTraits") { +namespace swig { + template <> struct traits<SwigVar_PyObject > { + typedef value_category category; + static const char* type_name() { return "SwigVar_PyObject"; } + }; + + template <> struct traits_from<SwigVar_PyObject> { + typedef SwigVar_PyObject value_type; + static PyObject *from(const value_type& val) { + PyObject *obj = static_cast<PyObject *>(val); + Py_XINCREF(obj); + return obj; + } + }; + + template <> + struct traits_check<SwigVar_PyObject, value_category> { + static bool check(SwigVar_PyObject) { + return true; + } + }; + + template <> struct traits_asval<SwigVar_PyObject > { + typedef SwigVar_PyObject value_type; + static int asval(PyObject *obj, value_type *val) { + if (val) *val = obj; + return SWIG_OK; + } + }; +} +} + +%fragment("SwigPySequence_Base","header",fragment="<stddef.h>") +{ +%#include <functional> + +namespace std { + template <> + struct less <PyObject *> + { + bool + operator()(PyObject * v, PyObject *w) const + { + bool res; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + res = PyObject_RichCompareBool(v, w, Py_LT) ? true : false; + /* This may fall into a case of inconsistent + eg. ObjA > ObjX > ObjB + but ObjA < ObjB + */ + if( PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_TypeError) ) + { + /* Objects can't be compared, this mostly occurred in Python 3.0 */ + /* Compare their ptr directly for a workaround */ + res = (v < w); + PyErr_Clear(); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return res; + } + }; + + template <> + struct less <swig::SwigPtr_PyObject> + { + bool + operator()(const swig::SwigPtr_PyObject& v, const swig::SwigPtr_PyObject& w) const + { + return std::less<PyObject *>()(v, w); + } + }; + + template <> + struct less <swig::SwigVar_PyObject> + { + bool + operator()(const swig::SwigVar_PyObject& v, const swig::SwigVar_PyObject& w) const + { + return std::less<PyObject *>()(v, w); + } + }; + +} + +namespace swig { + template <> struct traits<PyObject *> { + typedef value_category category; + static const char* type_name() { return "PyObject *"; } + }; + + template <> struct traits_asval<PyObject * > { + typedef PyObject * value_type; + static int asval(PyObject *obj, value_type *val) { + if (val) *val = obj; + return SWIG_OK; + } + }; + + template <> + struct traits_check<PyObject *, value_category> { + static bool check(PyObject *) { + return true; + } + }; + + template <> struct traits_from<PyObject *> { + typedef PyObject * value_type; + static PyObject *from(const value_type& val) { + Py_XINCREF(val); + return val; + } + }; + +} + +namespace swig { + template <class Difference> + inline size_t + check_index(Difference i, size_t size, bool insert = false) { + if ( i < 0 ) { + if ((size_t) (-i) <= size) + return (size_t) (i + size); + } else if ( (size_t) i < size ) { + return (size_t) i; + } else if (insert && ((size_t) i == size)) { + return size; + } + throw std::out_of_range("index out of range"); + } + + template <class Difference> + void + slice_adjust(Difference i, Difference j, Py_ssize_t step, size_t size, Difference &ii, Difference &jj, bool insert = false) { + if (step == 0) { + throw std::invalid_argument("slice step cannot be zero"); + } else if (step > 0) { + // Required range: 0 <= i < size, 0 <= j < size, i <= j + if (i < 0) { + ii = 0; + } else if (i < (Difference)size) { + ii = i; + } else if (insert && (i >= (Difference)size)) { + ii = (Difference)size; + } + if (j < 0) { + jj = 0; + } else { + jj = (j < (Difference)size) ? j : (Difference)size; + } + if (jj < ii) + jj = ii; + } else { + // Required range: -1 <= i < size-1, -1 <= j < size-1, i >= j + if (i < -1) { + ii = -1; + } else if (i < (Difference) size) { + ii = i; + } else if (i >= (Difference)(size-1)) { + ii = (Difference)(size-1); + } + if (j < -1) { + jj = -1; + } else { + jj = (j < (Difference)size ) ? j : (Difference)(size-1); + } + if (ii < jj) + ii = jj; + } + } + + template <class Sequence, class Difference> + inline typename Sequence::iterator + getpos(Sequence* self, Difference i) { + typename Sequence::iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template <class Sequence, class Difference> + inline typename Sequence::const_iterator + cgetpos(const Sequence* self, Difference i) { + typename Sequence::const_iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template <class Sequence> + inline void + erase(Sequence* seq, const typename Sequence::iterator& position) { + seq->erase(position); + } + + template <class Sequence> + struct traits_reserve { + static void reserve(Sequence & /*seq*/, typename Sequence::size_type /*n*/) { + // This should be specialized for types that support reserve + } + }; + + template <class Sequence, class Difference> + inline Sequence* + getslice(const Sequence* self, Difference i, Difference j, Py_ssize_t step) { + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj); + + if (step > 0) { + typename Sequence::const_iterator sb = self->begin(); + typename Sequence::const_iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + if (step == 1) { + return new Sequence(sb, se); + } else { + Sequence *sequence = new Sequence(); + swig::traits_reserve<Sequence>::reserve(*sequence, (jj - ii + step - 1) / step); + typename Sequence::const_iterator it = sb; + while (it!=se) { + sequence->push_back(*it); + for (Py_ssize_t c=0; c<step && it!=se; ++c) + it++; + } + return sequence; + } + } else { + Sequence *sequence = new Sequence(); + swig::traits_reserve<Sequence>::reserve(*sequence, (ii - jj - step - 1) / -step); + typename Sequence::const_reverse_iterator sb = self->rbegin(); + typename Sequence::const_reverse_iterator se = self->rbegin(); + std::advance(sb,size-ii-1); + std::advance(se,size-jj-1); + typename Sequence::const_reverse_iterator it = sb; + while (it!=se) { + sequence->push_back(*it); + for (Py_ssize_t c=0; c<-step && it!=se; ++c) + it++; + } + return sequence; + } + } + + template <class Sequence, class Difference, class InputSeq> + inline void + setslice(Sequence* self, Difference i, Difference j, Py_ssize_t step, const InputSeq& is = InputSeq()) { + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj, true); + if (step > 0) { + if (step == 1) { + size_t ssize = jj - ii; + if (ssize <= is.size()) { + // expanding/staying the same size + swig::traits_reserve<Sequence>::reserve(*self, self->size() - ssize + is.size()); + typename Sequence::iterator sb = self->begin(); + typename InputSeq::const_iterator isit = is.begin(); + std::advance(sb,ii); + std::advance(isit, jj - ii); + self->insert(std::copy(is.begin(), isit, sb), isit, is.end()); + } else { + // shrinking + typename Sequence::iterator sb = self->begin(); + typename Sequence::iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + self->erase(sb,se); + sb = self->begin(); + std::advance(sb,ii); + self->insert(sb, is.begin(), is.end()); + } + } else { + size_t replacecount = (jj - ii + step - 1) / step; + if (is.size() != replacecount) { + char msg[1024]; + sprintf(msg, "attempt to assign sequence of size %lu to extended slice of size %lu", (unsigned long)is.size(), (unsigned long)replacecount); + throw std::invalid_argument(msg); + } + typename Sequence::const_iterator isit = is.begin(); + typename Sequence::iterator it = self->begin(); + std::advance(it,ii); + for (size_t rc=0; rc<replacecount; ++rc) { + *it++ = *isit++; + for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c) + it++; + } + } + } else { + size_t replacecount = (ii - jj - step - 1) / -step; + if (is.size() != replacecount) { + char msg[1024]; + sprintf(msg, "attempt to assign sequence of size %lu to extended slice of size %lu", (unsigned long)is.size(), (unsigned long)replacecount); + throw std::invalid_argument(msg); + } + typename Sequence::const_iterator isit = is.begin(); + typename Sequence::reverse_iterator it = self->rbegin(); + std::advance(it,size-ii-1); + for (size_t rc=0; rc<replacecount; ++rc) { + *it++ = *isit++; + for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c) + it++; + } + } + } + + template <class Sequence, class Difference> + inline void + delslice(Sequence* self, Difference i, Difference j, Py_ssize_t step) { + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj, true); + if (step > 0) { + typename Sequence::iterator sb = self->begin(); + std::advance(sb,ii); + if (step == 1) { + typename Sequence::iterator se = self->begin(); + std::advance(se,jj); + self->erase(sb,se); + } else { + typename Sequence::iterator it = sb; + size_t delcount = (jj - ii + step - 1) / step; + while (delcount) { + it = self->erase(it); + for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c) + it++; + delcount--; + } + } + } else { + typename Sequence::reverse_iterator sb = self->rbegin(); + std::advance(sb,size-ii-1); + typename Sequence::reverse_iterator it = sb; + size_t delcount = (ii - jj - step - 1) / -step; + while (delcount) { + it = typename Sequence::reverse_iterator(self->erase((++it).base())); + for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c) + it++; + delcount--; + } + } + } +} +} + +%fragment("SwigPySequence_Cont","header", + fragment="StdTraits", + fragment="SwigPySequence_Base", + fragment="SwigPyIterator_T") +{ +namespace swig +{ + template <class T> + struct SwigPySequence_Ref + { + SwigPySequence_Ref(PyObject* seq, Py_ssize_t index) + : _seq(seq), _index(index) + { + } + + operator T () const + { + swig::SwigVar_PyObject item = PySequence_GetItem(_seq, _index); + try { + return swig::as<T>(item, true); + } catch (std::exception& e) { + char msg[1024]; + sprintf(msg, "in sequence element %d ", (int)_index); + if (!PyErr_Occurred()) { + ::%type_error(swig::type_name<T>()); + } + SWIG_Python_AddErrorMsg(msg); + SWIG_Python_AddErrorMsg(e.what()); + throw; + } + } + + SwigPySequence_Ref& operator=(const T& v) + { + PySequence_SetItem(_seq, _index, swig::from<T>(v)); + return *this; + } + + private: + PyObject* _seq; + Py_ssize_t _index; + }; + + template <class T> + struct SwigPySequence_ArrowProxy + { + SwigPySequence_ArrowProxy(const T& x): m_value(x) {} + const T* operator->() const { return &m_value; } + operator const T*() const { return &m_value; } + T m_value; + }; + + template <class T, class Reference > + struct SwigPySequence_InputIterator + { + typedef SwigPySequence_InputIterator<T, Reference > self; + + typedef std::random_access_iterator_tag iterator_category; + typedef Reference reference; + typedef T value_type; + typedef T* pointer; + typedef Py_ssize_t difference_type; + + SwigPySequence_InputIterator() + { + } + + SwigPySequence_InputIterator(PyObject* seq, Py_ssize_t index) + : _seq(seq), _index(index) + { + } + + reference operator*() const + { + return reference(_seq, _index); + } + + SwigPySequence_ArrowProxy<T> + operator->() const { + return SwigPySequence_ArrowProxy<T>(operator*()); + } + + bool operator==(const self& ri) const + { + return (_index == ri._index) && (_seq == ri._seq); + } + + bool operator!=(const self& ri) const + { + return !(operator==(ri)); + } + + self& operator ++ () + { + ++_index; + return *this; + } + + self& operator -- () + { + --_index; + return *this; + } + + self& operator += (difference_type n) + { + _index += n; + return *this; + } + + self operator +(difference_type n) const + { + return self(_seq, _index + n); + } + + self& operator -= (difference_type n) + { + _index -= n; + return *this; + } + + self operator -(difference_type n) const + { + return self(_seq, _index - n); + } + + difference_type operator - (const self& ri) const + { + return _index - ri._index; + } + + bool operator < (const self& ri) const + { + return _index < ri._index; + } + + reference + operator[](difference_type n) const + { + return reference(_seq, _index + n); + } + + private: + PyObject* _seq; + difference_type _index; + }; + + // STL container wrapper around a Python sequence + template <class T> + struct SwigPySequence_Cont + { + typedef SwigPySequence_Ref<T> reference; + typedef const SwigPySequence_Ref<T> const_reference; + typedef T value_type; + typedef T* pointer; + typedef Py_ssize_t difference_type; + typedef size_t size_type; + typedef const pointer const_pointer; + typedef SwigPySequence_InputIterator<T, reference> iterator; + typedef SwigPySequence_InputIterator<T, const_reference> const_iterator; + + SwigPySequence_Cont(PyObject* seq) : _seq(0) + { + if (!PySequence_Check(seq)) { + throw std::invalid_argument("a sequence is expected"); + } + _seq = seq; + Py_INCREF(_seq); + } + + ~SwigPySequence_Cont() + { + Py_XDECREF(_seq); + } + + size_type size() const + { + return static_cast<size_type>(PySequence_Size(_seq)); + } + + bool empty() const + { + return size() == 0; + } + + iterator begin() + { + return iterator(_seq, 0); + } + + const_iterator begin() const + { + return const_iterator(_seq, 0); + } + + iterator end() + { + return iterator(_seq, size()); + } + + const_iterator end() const + { + return const_iterator(_seq, size()); + } + + reference operator[](difference_type n) + { + return reference(_seq, n); + } + + const_reference operator[](difference_type n) const + { + return const_reference(_seq, n); + } + + bool check(bool set_err = true) const + { + Py_ssize_t s = size(); + for (Py_ssize_t i = 0; i < s; ++i) { + swig::SwigVar_PyObject item = PySequence_GetItem(_seq, i); + if (!swig::check<value_type>(item)) { + if (set_err) { + char msg[1024]; + sprintf(msg, "in sequence element %d", (int)i); + SWIG_Error(SWIG_RuntimeError, msg); + } + return false; + } + } + return true; + } + + private: + PyObject* _seq; + }; + +} +} + +%define %swig_sequence_iterator(Sequence...) +#if defined(SWIG_EXPORT_ITERATOR_METHODS) + class iterator; + class reverse_iterator; + class const_iterator; + class const_reverse_iterator; + + %typemap(out,noblock=1,fragment="SwigPySequence_Cont") + iterator, reverse_iterator, const_iterator, const_reverse_iterator { + $result = SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &)), + swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); + } + %typemap(out,noblock=1,fragment="SwigPySequence_Cont") + std::pair<iterator, iterator>, std::pair<const_iterator, const_iterator> { + $result = PyTuple_New(2); + PyTuple_SetItem($result,0,SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &).first), + swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN)); + PyTuple_SetItem($result,1,SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &).second), + swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN)); + } + + %fragment("SwigPyPairBoolOutputIterator","header",fragment=SWIG_From_frag(bool),fragment="SwigPySequence_Cont") {} + + %typemap(out,noblock=1,fragment="SwigPyPairBoolOutputIterator") + std::pair<iterator, bool>, std::pair<const_iterator, bool> { + $result = PyTuple_New(2); + PyTuple_SetItem($result,0,SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &).first), + swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN)); + PyTuple_SetItem($result,1,SWIG_From(bool)(%static_cast($1,const $type &).second)); + } + + %typemap(in,noblock=1,fragment="SwigPySequence_Cont") + iterator(swig::SwigPyIterator *iter = 0, int res), + reverse_iterator(swig::SwigPyIterator *iter = 0, int res), + const_iterator(swig::SwigPyIterator *iter = 0, int res), + const_reverse_iterator(swig::SwigPyIterator *iter = 0, int res) { + res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); + if (!SWIG_IsOK(res) || !iter) { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } else { + swig::SwigPyIterator_T<$type > *iter_t = dynamic_cast<swig::SwigPyIterator_T<$type > *>(iter); + if (iter_t) { + $1 = iter_t->get_current(); + } else { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } + } + } + + %typecheck(%checkcode(ITERATOR),noblock=1,fragment="SwigPySequence_Cont") + iterator, reverse_iterator, const_iterator, const_reverse_iterator { + swig::SwigPyIterator *iter = 0; + int res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); + $1 = (SWIG_IsOK(res) && iter && (dynamic_cast<swig::SwigPyIterator_T<$type > *>(iter) != 0)); + } + + %fragment("SwigPySequence_Cont"); + + %newobject iterator(PyObject **PYTHON_SELF); + %extend { + swig::SwigPyIterator* iterator(PyObject **PYTHON_SELF) { + return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "tp_iter", functype="getiterfunc") iterator; +#else + %pythoncode %{def __iter__(self): + return self.iterator()%} +#endif + } + +#endif //SWIG_EXPORT_ITERATOR_METHODS +%enddef + + +/**** The python container methods ****/ + +%define %swig_container_methods(Container...) + +/* deprecated in Python 2 */ +#if 1 + %newobject __getslice__; +#endif + %newobject __getitem__(PySliceObject *slice); + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "nb_nonzero", functype="inquiry") __nonzero__; + %feature("python:slot", "sq_length", functype="lenfunc") __len__; +#endif // SWIGPYTHON_BUILTIN + + %extend { + bool __nonzero__() const { + return !(self->empty()); + } + + /* Alias for Python 3 compatibility */ + bool __bool__() const { + return !(self->empty()); + } + + size_type __len__() const { + return self->size(); + } + } +%enddef + + + +%define %swig_sequence_methods_common(Sequence...) + %swig_sequence_iterator(%arg(Sequence)) + %swig_container_methods(%arg(Sequence)) + + %fragment("SwigPySequence_Base"); + +#if defined(SWIGPYTHON_BUILTIN) + //%feature("python:slot", "sq_item", functype="ssizeargfunc") __getitem__; + //%feature("python:slot", "sq_slice", functype="ssizessizeargfunc") __getslice__; + //%feature("python:slot", "sq_ass_item", functype="ssizeobjargproc") __setitem__; + //%feature("python:slot", "sq_ass_slice", functype="ssizessizeobjargproc") __setslice__; + %feature("python:slot", "mp_subscript", functype="binaryfunc") __getitem__; + %feature("python:slot", "mp_ass_subscript", functype="objobjargproc") __setitem__; +#endif // SWIGPYTHON_BUILTIN + + %extend { + /* typemap for slice object support */ + %typemap(in) PySliceObject* { + if (!PySlice_Check($input)) { + %argument_fail(SWIG_TypeError, "$type", $symname, $argnum); + } + $1 = (PySliceObject *) $input; + } + %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) PySliceObject* { + $1 = PySlice_Check($input); + } + +/* deprecated in Python 2 */ +#if 1 + Sequence* __getslice__(difference_type i, difference_type j) throw (std::out_of_range, std::invalid_argument) { + return swig::getslice(self, i, j, 1); + } + + void __setslice__(difference_type i, difference_type j) throw (std::out_of_range, std::invalid_argument) { + swig::setslice(self, i, j, 1, Sequence()); + } + + void __setslice__(difference_type i, difference_type j, const Sequence& v) throw (std::out_of_range, std::invalid_argument) { + swig::setslice(self, i, j, 1, v); + } + + void __delslice__(difference_type i, difference_type j) throw (std::out_of_range, std::invalid_argument) { + swig::delslice(self, i, j, 1); + } +#endif + + void __delitem__(difference_type i) throw (std::out_of_range, std::invalid_argument) { + swig::erase(self, swig::getpos(self, i)); + } + + /* Overloaded methods for Python 3 compatibility + * (Also useful in Python 2.x) + */ + Sequence* __getitem__(PySliceObject *slice) throw (std::out_of_range, std::invalid_argument) { + Py_ssize_t i, j, step; + if( !PySlice_Check(slice) ) { + SWIG_Error(SWIG_TypeError, "Slice object expected."); + return NULL; + } + PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); + Sequence::difference_type id = i; + Sequence::difference_type jd = j; + return swig::getslice(self, id, jd, step); + } + + void __setitem__(PySliceObject *slice, const Sequence& v) throw (std::out_of_range, std::invalid_argument) { + Py_ssize_t i, j, step; + if( !PySlice_Check(slice) ) { + SWIG_Error(SWIG_TypeError, "Slice object expected."); + return; + } + PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); + Sequence::difference_type id = i; + Sequence::difference_type jd = j; + swig::setslice(self, id, jd, step, v); + } + + void __setitem__(PySliceObject *slice) throw (std::out_of_range, std::invalid_argument) { + Py_ssize_t i, j, step; + if( !PySlice_Check(slice) ) { + SWIG_Error(SWIG_TypeError, "Slice object expected."); + return; + } + PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); + Sequence::difference_type id = i; + Sequence::difference_type jd = j; + swig::delslice(self, id, jd, step); + } + + void __delitem__(PySliceObject *slice) throw (std::out_of_range, std::invalid_argument) { + Py_ssize_t i, j, step; + if( !PySlice_Check(slice) ) { + SWIG_Error(SWIG_TypeError, "Slice object expected."); + return; + } + PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); + Sequence::difference_type id = i; + Sequence::difference_type jd = j; + swig::delslice(self, id, jd, step); + } + + } +%enddef + +%define %swig_sequence_methods_non_resizable(Sequence...) + %swig_sequence_methods_common(%arg(Sequence)) + %extend { + const value_type& __getitem__(difference_type i) const throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + void __setitem__(difference_type i, const value_type& x) throw (std::out_of_range) { + *(swig::getpos(self,i)) = x; + } + +#if defined(SWIGPYTHON_BUILTIN) + // This will be called through the mp_ass_subscript slot to delete an entry. + void __setitem__(difference_type i) throw (std::out_of_range, std::invalid_argument) { + swig::erase(self, swig::getpos(self, i)); + } +#endif + + } +%enddef + +%define %swig_sequence_methods(Sequence...) + %swig_sequence_methods_non_resizable(%arg(Sequence)) + %extend { + value_type pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty container"); + Sequence::value_type x = self->back(); + self->pop_back(); + return x; + } + + void append(const value_type& x) { + self->push_back(x); + } + } +%enddef + +%define %swig_sequence_methods_non_resizable_val(Sequence...) + %swig_sequence_methods_common(%arg(Sequence)) + %extend { + value_type __getitem__(difference_type i) throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + void __setitem__(difference_type i, value_type x) throw (std::out_of_range) { + *(swig::getpos(self,i)) = x; + } + +#if defined(SWIGPYTHON_BUILTIN) + // This will be called through the mp_ass_subscript slot to delete an entry. + void __setitem__(difference_type i) throw (std::out_of_range, std::invalid_argument) { + swig::erase(self, swig::getpos(self, i)); + } +#endif + } +%enddef + +%define %swig_sequence_methods_val(Sequence...) + %swig_sequence_methods_non_resizable_val(%arg(Sequence)) + %extend { + value_type pop() throw (std::out_of_range) { + if (self->size() == 0) + throw std::out_of_range("pop from empty container"); + Sequence::value_type x = self->back(); + self->pop_back(); + return x; + } + + void append(value_type x) { + self->push_back(x); + } + } +%enddef + + + +// +// Common fragments +// + +%fragment("StdSequenceTraits","header", + fragment="StdTraits", + fragment="SwigPySequence_Cont") +{ +namespace swig { + template <class SwigPySeq, class Seq> + inline void + assign(const SwigPySeq& swigpyseq, Seq* seq) { + // seq->assign(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template <class Seq, class T = typename Seq::value_type > + struct traits_asptr_stdseq { + typedef Seq sequence; + typedef T value_type; + + static int asptr(PyObject *obj, sequence **seq) { + if (obj == Py_None || SWIG_Python_GetSwigThis(obj)) { + sequence *p; + swig_type_info *descriptor = swig::type_info<sequence>(); + if (descriptor && SWIG_IsOK(::SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0))) { + if (seq) *seq = p; + return SWIG_OLDOBJ; + } + } else if (PySequence_Check(obj)) { + try { + SwigPySequence_Cont<value_type> swigpyseq(obj); + if (seq) { + sequence *pseq = new sequence(); + assign(swigpyseq, pseq); + *seq = pseq; + return SWIG_NEWOBJ; + } else { + return swigpyseq.check() ? SWIG_OK : SWIG_ERROR; + } + } catch (std::exception& e) { + if (seq) { + if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, e.what()); + } + } + return SWIG_ERROR; + } + } + return SWIG_ERROR; + } + }; + + template <class Seq, class T = typename Seq::value_type > + struct traits_from_stdseq { + typedef Seq sequence; + typedef T value_type; + typedef typename Seq::size_type size_type; + typedef typename sequence::const_iterator const_iterator; + + static PyObject *from(const sequence& seq) { +%#ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS + swig_type_info *desc = swig::type_info<sequence>(); + if (desc && desc->clientdata) { + return SWIG_InternalNewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN); + } +%#endif + size_type size = seq.size(); + if (size <= (size_type)INT_MAX) { + PyObject *obj = PyTuple_New((Py_ssize_t)size); + Py_ssize_t i = 0; + for (const_iterator it = seq.begin(); it != seq.end(); ++it, ++i) { + PyTuple_SetItem(obj,i,swig::from<value_type>(*it)); + } + return obj; + } else { + PyErr_SetString(PyExc_OverflowError,"sequence size not valid in python"); + return NULL; + } + } + }; +} +} diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pydocs.swg b/qrenderdoc/3rdparty/swig/Lib/python/pydocs.swg new file mode 100644 index 000000000..969af92aa --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pydocs.swg @@ -0,0 +1,24 @@ + +// Documentation for use with the autodoc feature. + +#ifdef SWIG_DOC_DOXYGEN_STYLE +%typemap(doc) SWIGTYPE "@param $1_name $1_type"; +%typemap(doc) SWIGTYPE * "@param $1_name $1_type"; +%typemap(doc) const SWIGTYPE & "@param $1_name $1_type"; +%typemap(doc) const SWIGTYPE && "@param $1_name $1_type"; +%typemap(doc) enum SWIGTYPE "@param $1_name enum $1_type"; + +%typemap(doc) SWIGTYPE *INOUT, SWIGTYPE &INOUT "@param $1_name $1_type (input/output)"; +%typemap(doc) SWIGTYPE *INPUT, SWIGTYPE &INPUT "@param $1_name $1_type (input)"; +%typemap(doc) SWIGTYPE *OUTPUT, SWIGTYPE &OUTPUT "@param $1_name $1_type (output)"; +#else +%typemap(doc) SWIGTYPE "$1_name: $1_type"; +%typemap(doc) SWIGTYPE * "$1_name: $1_type"; +%typemap(doc) const SWIGTYPE & "$1_name: $1_type"; +%typemap(doc) const SWIGTYPE && "$1_name: $1_type"; +%typemap(doc) enum SWIGTYPE "$1_name: enum $1_type"; + +%typemap(doc) SWIGTYPE *INOUT, SWIGTYPE &INOUT "$1_name: $1_type (input/output)"; +%typemap(doc) SWIGTYPE *INPUT, SWIGTYPE &INPUT "$1_name: $1_type (input)"; +%typemap(doc) SWIGTYPE *OUTPUT, SWIGTYPE &OUTPUT "$1_name: $1_type (output)"; +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyerrors.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyerrors.swg new file mode 100644 index 000000000..fe7313554 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyerrors.swg @@ -0,0 +1,70 @@ +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + +SWIGRUNTIME PyObject* +SWIG_Python_ErrorType(int code) { + PyObject* type = 0; + switch(code) { + case SWIG_MemoryError: + type = PyExc_MemoryError; + break; + case SWIG_IOError: + type = PyExc_IOError; + break; + case SWIG_RuntimeError: + type = PyExc_RuntimeError; + break; + case SWIG_IndexError: + type = PyExc_IndexError; + break; + case SWIG_TypeError: + type = PyExc_TypeError; + break; + case SWIG_DivisionByZero: + type = PyExc_ZeroDivisionError; + break; + case SWIG_OverflowError: + type = PyExc_OverflowError; + break; + case SWIG_SyntaxError: + type = PyExc_SyntaxError; + break; + case SWIG_ValueError: + type = PyExc_ValueError; + break; + case SWIG_SystemError: + type = PyExc_SystemError; + break; + case SWIG_AttributeError: + type = PyExc_AttributeError; + break; + default: + type = PyExc_RuntimeError; + } + return type; +} + + +SWIGRUNTIME void +SWIG_Python_AddErrorMsg(const char* mesg) +{ + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + + if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback); + if (value) { + char *tmp; + PyObject *old_str = PyObject_Str(value); + PyErr_Clear(); + Py_XINCREF(type); + + PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(old_str); + Py_DECREF(value); + } else { + PyErr_SetString(PyExc_RuntimeError, mesg); + } +} diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyfragments.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyfragments.swg new file mode 100644 index 000000000..535a45bdf --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyfragments.swg @@ -0,0 +1,23 @@ +/* + + Create a file with this name, 'pyfragments.swg', in your working + directory and add all the %fragments you want to take precedence + over the default ones defined by swig. + + For example, if you add: + + %fragment(SWIG_AsVal_frag(int),"header") { + SWIGINTERNINLINE int + SWIG_AsVal(int)(PyObject *obj, int *val) + { + <your code here>; + } + } + + this will replace the code used to retrieve an integer value for all + the typemaps that need it, including: + + int, std::vector<int>, std::list<std::pair<int,int> >, etc. + + +*/ diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyhead.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyhead.swg new file mode 100644 index 000000000..55eb95a6d --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyhead.swg @@ -0,0 +1,215 @@ +/* Compatibility macros for Python 3 */ +#if PY_VERSION_HEX >= 0x03000000 + +#define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type) +#define PyInt_Check(x) PyLong_Check(x) +#define PyInt_AsLong(x) PyLong_AsLong(x) +#define PyInt_FromLong(x) PyLong_FromLong(x) +#define PyInt_FromSize_t(x) PyLong_FromSize_t(x) +#define PyString_Check(name) PyBytes_Check(name) +#define PyString_FromString(x) PyUnicode_FromString(x) +#define PyString_Format(fmt, args) PyUnicode_Format(fmt, args) +#define PyString_AsString(str) PyBytes_AsString(str) +#define PyString_Size(str) PyBytes_Size(str) +#define PyString_InternFromString(key) PyUnicode_InternFromString(key) +#define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE +#define PyString_AS_STRING(x) PyUnicode_AS_STRING(x) +#define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x) + +#endif + +#ifndef Py_TYPE +# define Py_TYPE(op) ((op)->ob_type) +#endif + +/* SWIG APIs for compatibility of both Python 2 & 3 */ + +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_Python_str_FromFormat PyUnicode_FromFormat +#else +# define SWIG_Python_str_FromFormat PyString_FromFormat +#endif + + +/* Warning: This function will allocate a new string in Python 3, + * so please call SWIG_Python_str_DelForPy3(x) to free the space. + */ +SWIGINTERN char* +SWIG_Python_str_AsChar(PyObject *str) +{ +#if PY_VERSION_HEX >= 0x03000000 + char *cstr; + char *newstr; + Py_ssize_t len; + str = PyUnicode_AsUTF8String(str); + PyBytes_AsStringAndSize(str, &cstr, &len); + newstr = (char *) malloc(len+1); + memcpy(newstr, cstr, len+1); + Py_XDECREF(str); + return newstr; +#else + return PyString_AsString(str); +#endif +} + +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_Python_str_DelForPy3(x) free( (void*) (x) ) +#else +# define SWIG_Python_str_DelForPy3(x) +#endif + + +SWIGINTERN PyObject* +SWIG_Python_str_FromChar(const char *c) +{ +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_FromString(c); +#else + return PyString_FromString(c); +#endif +} + +/* Add PyOS_snprintf for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 +# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM) +# define PyOS_snprintf _snprintf +# else +# define PyOS_snprintf snprintf +# endif +#endif + +/* A crude PyString_FromFormat implementation for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 + +#ifndef SWIG_PYBUFFER_SIZE +# define SWIG_PYBUFFER_SIZE 1024 +#endif + +static PyObject * +PyString_FromFormat(const char *fmt, ...) { + va_list ap; + char buf[SWIG_PYBUFFER_SIZE * 2]; + int res; + va_start(ap, fmt); + res = vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf); +} +#endif + +#ifndef PyObject_DEL +# define PyObject_DEL PyObject_Del +#endif + +/* A crude PyExc_StopIteration exception for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 +# ifndef PyExc_StopIteration +# define PyExc_StopIteration PyExc_RuntimeError +# endif +# ifndef PyObject_GenericGetAttr +# define PyObject_GenericGetAttr 0 +# endif +#endif + +/* Py_NotImplemented is defined in 2.1 and up. */ +#if PY_VERSION_HEX < 0x02010000 +# ifndef Py_NotImplemented +# define Py_NotImplemented PyExc_RuntimeError +# endif +#endif + +/* A crude PyString_AsStringAndSize implementation for old Pythons */ +#if PY_VERSION_HEX < 0x02010000 +# ifndef PyString_AsStringAndSize +# define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;} +# endif +#endif + +/* PySequence_Size for old Pythons */ +#if PY_VERSION_HEX < 0x02000000 +# ifndef PySequence_Size +# define PySequence_Size PySequence_Length +# endif +#endif + +/* PyBool_FromLong for old Pythons */ +#if PY_VERSION_HEX < 0x02030000 +static +PyObject *PyBool_FromLong(long ok) +{ + PyObject *result = ok ? Py_True : Py_False; + Py_INCREF(result); + return result; +} +#endif + +/* Py_ssize_t for old Pythons */ +/* This code is as recommended by: */ +/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */ +#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) +typedef int Py_ssize_t; +# define PY_SSIZE_T_MAX INT_MAX +# define PY_SSIZE_T_MIN INT_MIN +typedef inquiry lenfunc; +typedef intargfunc ssizeargfunc; +typedef intintargfunc ssizessizeargfunc; +typedef intobjargproc ssizeobjargproc; +typedef intintobjargproc ssizessizeobjargproc; +typedef getreadbufferproc readbufferproc; +typedef getwritebufferproc writebufferproc; +typedef getsegcountproc segcountproc; +typedef getcharbufferproc charbufferproc; +static long PyNumber_AsSsize_t (PyObject *x, void *SWIGUNUSEDPARM(exc)) +{ + long result = 0; + PyObject *i = PyNumber_Int(x); + if (i) { + result = PyInt_AsLong(i); + Py_DECREF(i); + } + return result; +} +#endif + +#if PY_VERSION_HEX < 0x02050000 +#define PyInt_FromSize_t(x) PyInt_FromLong((long)x) +#endif + +#if PY_VERSION_HEX < 0x02040000 +#define Py_VISIT(op) \ + do { \ + if (op) { \ + int vret = visit((op), arg); \ + if (vret) \ + return vret; \ + } \ + } while (0) +#endif + +#if PY_VERSION_HEX < 0x02030000 +typedef struct { + PyTypeObject type; + PyNumberMethods as_number; + PyMappingMethods as_mapping; + PySequenceMethods as_sequence; + PyBufferProcs as_buffer; + PyObject *name, *slots; +} PyHeapTypeObject; +#endif + +#if PY_VERSION_HEX < 0x02030000 +typedef destructor freefunc; +#endif + +#if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \ + (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0) || \ + (PY_MAJOR_VERSION > 3)) +# define SWIGPY_USE_CAPSULE +# define SWIGPY_CAPSULE_NAME ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME) +#endif + +#if PY_VERSION_HEX < 0x03020000 +#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) +#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name) +#define Py_hash_t long +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyinit.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyinit.swg new file mode 100644 index 000000000..f9843252c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyinit.swg @@ -0,0 +1,472 @@ +/* ------------------------------------------------------------ + * The start of the Python initialization function + * ------------------------------------------------------------ */ + +%insert(init) "swiginit.swg" + +#if defined(SWIGPYTHON_BUILTIN) +%fragment("<stddef.h>"); // For offsetof +#endif + +%init %{ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Python-specific SWIG API */ +#define SWIG_newvarlink() SWIG_Python_newvarlink() +#define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr) +#define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants) + +/* ----------------------------------------------------------------------------- + * global variable support code. + * ----------------------------------------------------------------------------- */ + +typedef struct swig_globalvar { + char *name; /* Name of global variable */ + PyObject *(*get_attr)(void); /* Return the current value */ + int (*set_attr)(PyObject *); /* Set the value */ + struct swig_globalvar *next; +} swig_globalvar; + +typedef struct swig_varlinkobject { + PyObject_HEAD + swig_globalvar *vars; +} swig_varlinkobject; + +SWIGINTERN PyObject * +swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_InternFromString("<Swig global variables>"); +#else + return PyString_FromString("<Swig global variables>"); +#endif +} + +SWIGINTERN PyObject * +swig_varlink_str(swig_varlinkobject *v) { +#if PY_VERSION_HEX >= 0x03000000 + PyObject *str = PyUnicode_InternFromString("("); + PyObject *tail; + PyObject *joined; + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + tail = PyUnicode_FromString(var->name); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; + if (var->next) { + tail = PyUnicode_InternFromString(", "); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; + } + } + tail = PyUnicode_InternFromString(")"); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; +#else + PyObject *str = PyString_FromString("("); + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + PyString_ConcatAndDel(&str,PyString_FromString(var->name)); + if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", ")); + } + PyString_ConcatAndDel(&str,PyString_FromString(")")); +#endif + return str; +} + +SWIGINTERN int +swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { + char *tmp; + PyObject *str = swig_varlink_str(v); + fprintf(fp,"Swig global variables "); + fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str)); + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(str); + return 0; +} + +SWIGINTERN void +swig_varlink_dealloc(swig_varlinkobject *v) { + swig_globalvar *var = v->vars; + while (var) { + swig_globalvar *n = var->next; + free(var->name); + free(var); + var = n; + } +} + +SWIGINTERN PyObject * +swig_varlink_getattr(swig_varlinkobject *v, char *n) { + PyObject *res = NULL; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->get_attr)(); + break; + } + var = var->next; + } + if (res == NULL && !PyErr_Occurred()) { + PyErr_Format(PyExc_AttributeError, "Unknown C global variable '%s'", n); + } + return res; +} + +SWIGINTERN int +swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { + int res = 1; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->set_attr)(p); + break; + } + var = var->next; + } + if (res == 1 && !PyErr_Occurred()) { + PyErr_Format(PyExc_AttributeError, "Unknown C global variable '%s'", n); + } + return res; +} + +SWIGINTERN PyTypeObject* +swig_varlink_type(void) { + static char varlink__doc__[] = "Swig var link object"; + static PyTypeObject varlink_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + (char *)"swigvarlink", /* tp_name */ + sizeof(swig_varlinkobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor) swig_varlink_dealloc, /* tp_dealloc */ + (printfunc) swig_varlink_print, /* tp_print */ + (getattrfunc) swig_varlink_getattr, /* tp_getattr */ + (setattrfunc) swig_varlink_setattr, /* tp_setattr */ + 0, /* tp_compare */ + (reprfunc) swig_varlink_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + (reprfunc) swig_varlink_str, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + 0, /* tp_flags */ + varlink__doc__, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#if PY_VERSION_HEX >= 0x02060000 + 0, /* tp_version_tag */ +#endif +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ +#if PY_VERSION_HEX >= 0x02050000 + 0, /* tp_prev */ +#endif + 0 /* tp_next */ +#endif + }; + varlink_type = tmp; + type_init = 1; +#if PY_VERSION_HEX < 0x02020000 + varlink_type.ob_type = &PyType_Type; +#else + if (PyType_Ready(&varlink_type) < 0) + return NULL; +#endif + } + return &varlink_type; +} + +/* Create a variable linking object for use later */ +SWIGINTERN PyObject * +SWIG_Python_newvarlink(void) { + swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type()); + if (result) { + result->vars = 0; + } + return ((PyObject*) result); +} + +SWIGINTERN void +SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) { + swig_varlinkobject *v = (swig_varlinkobject *) p; + swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar)); + if (gv) { + size_t size = strlen(name)+1; + gv->name = (char *)malloc(size); + if (gv->name) { + strncpy(gv->name,name,size); + gv->get_attr = get_attr; + gv->set_attr = set_attr; + gv->next = v->vars; + } + } + v->vars = gv; +} + +SWIGINTERN PyObject * +SWIG_globals(void) { + static PyObject *_SWIG_globals = 0; + if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink(); + return _SWIG_globals; +} + +/* ----------------------------------------------------------------------------- + * constants/methods manipulation + * ----------------------------------------------------------------------------- */ + +/* Install Constants */ +SWIGINTERN void +SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) { + PyObject *obj = 0; + size_t i; + for (i = 0; constants[i].type; ++i) { + switch(constants[i].type) { + case SWIG_PY_POINTER: + obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); + break; + case SWIG_PY_BINARY: + obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); + break; + default: + obj = 0; + break; + } + if (obj) { + PyDict_SetItemString(d, constants[i].name, obj); + Py_DECREF(obj); + } + } +} + +/* -----------------------------------------------------------------------------*/ +/* Fix SwigMethods to carry the callback ptrs when needed */ +/* -----------------------------------------------------------------------------*/ + +SWIGINTERN void +SWIG_Python_FixMethods(PyMethodDef *methods, + swig_const_info *const_table, + swig_type_info **types, + swig_type_info **types_initial) { + size_t i; + for (i = 0; methods[i].ml_name; ++i) { + const char *c = methods[i].ml_doc; + if (!c) continue; + c = strstr(c, "swig_ptr: "); + if (c) { + int j; + swig_const_info *ci = 0; + const char *name = c + 10; + for (j = 0; const_table[j].type; ++j) { + if (strncmp(const_table[j].name, name, + strlen(const_table[j].name)) == 0) { + ci = &(const_table[j]); + break; + } + } + if (ci) { + void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0; + if (ptr) { + size_t shift = (ci->ptype) - types; + swig_type_info *ty = types_initial[shift]; + size_t ldoc = (c - methods[i].ml_doc); + size_t lptr = strlen(ty->name)+2*sizeof(void*)+2; + char *ndoc = (char*)malloc(ldoc + lptr + 10); + if (ndoc) { + char *buff = ndoc; + strncpy(buff, methods[i].ml_doc, ldoc); + buff += ldoc; + strncpy(buff, "swig_ptr: ", 10); + buff += 10; + SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); + methods[i].ml_doc = ndoc; + } + } + } + } + } +} + +#ifdef __cplusplus +} +#endif + +/* -----------------------------------------------------------------------------* + * Partial Init method + * -----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +extern "C" +#endif + +SWIGEXPORT +#if PY_VERSION_HEX >= 0x03000000 + PyObject* +#else + void +#endif +SWIG_init(void) { + PyObject *m, *d, *md; +#if PY_VERSION_HEX >= 0x03000000 + static struct PyModuleDef SWIG_module = { +# if PY_VERSION_HEX >= 0x03020000 + PyModuleDef_HEAD_INIT, +# else + { + PyObject_HEAD_INIT(NULL) + NULL, /* m_init */ + 0, /* m_index */ + NULL, /* m_copy */ + }, +# endif + (char *) SWIG_name, + NULL, + -1, + SwigMethods, + NULL, + NULL, + NULL, + NULL + }; +#endif + +#if defined(SWIGPYTHON_BUILTIN) + static SwigPyClientData SwigPyObject_clientdata = {0, 0, 0, 0, 0, 0, 0}; + static PyGetSetDef this_getset_def = { + (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL + }; + static SwigPyGetSet thisown_getset_closure = { + (PyCFunction) SwigPyObject_own, + (PyCFunction) SwigPyObject_own + }; + static PyGetSetDef thisown_getset_def = { + (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure + }; + PyTypeObject *builtin_pytype; + int builtin_base_count; + swig_type_info *builtin_basetype; + PyObject *tuple; + PyGetSetDescrObject *static_getset; + PyTypeObject *metatype; + PyTypeObject *swigpyobject; + SwigPyClientData *cd; + PyObject *public_interface, *public_symbol; + PyObject *this_descr; + PyObject *thisown_descr; + PyObject *self = 0; + int i; + PyObject *enum_module; + PyObject *Enum_class; + PyObject *Flag_class; + + (void)builtin_pytype; + (void)builtin_base_count; + (void)builtin_basetype; + (void)tuple; + (void)static_getset; + (void)self; + + /* Metaclass is used to implement static member variables */ + metatype = SwigPyObjectType(); + assert(metatype); +#endif + + /* Fix SwigMethods to carry the callback ptrs when needed */ + SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial); + +#if PY_VERSION_HEX >= 0x03000000 + m = PyModule_Create(&SWIG_module); +#else + m = Py_InitModule((char *) SWIG_name, SwigMethods); +#endif + + /* Try to find strong enum module */ + Enum_class = NULL; + Flag_class = NULL; +#if PY_VERSION_HEX >= 0x03000000 + enum_module = PyImport_ImportModule("enum"); + + if (enum_module) { + Enum_class = PyObject_GetAttrString(enum_module, "IntEnum"); + Flag_class = PyObject_GetAttrString(enum_module, "IntFlag"); + } +#endif + + md = d = PyModule_GetDict(m); + (void)md; + + SWIG_InitializeModule(0); + +#ifdef SWIGPYTHON_BUILTIN + swigpyobject = SwigPyObject_TypeOnce(); + + SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject"); + assert(SwigPyObject_stype); + cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; + if (!cd) { + SwigPyObject_stype->clientdata = &SwigPyObject_clientdata; + SwigPyObject_clientdata.pytype = swigpyobject; + } else if (swigpyobject->tp_basicsize != cd->pytype->tp_basicsize) { + PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules."); +# if PY_VERSION_HEX >= 0x03000000 + return NULL; +# else + return; +# endif + } + + /* All objects have a 'this' attribute */ + this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def); + (void)this_descr; + + /* All objects have a 'thisown' attribute */ + thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def); + (void)thisown_descr; + + public_interface = PyList_New(0); + public_symbol = 0; + (void)public_symbol; + + PyDict_SetItemString(md, "__all__", public_interface); + Py_DECREF(public_interface); + for (i = 0; SwigMethods[i].ml_name != NULL; ++i) + SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name); + for (i = 0; swig_const_table[i].name != 0; ++i) + SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name); +#endif + + SWIG_InstallConstants(d,swig_const_table); +%} + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyiterators.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyiterators.swg new file mode 100644 index 000000000..8fbb31226 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyiterators.swg @@ -0,0 +1,405 @@ +/* ----------------------------------------------------------------------------- + * pyiterators.swg + * + * Implement a python 'output' iterator for Python 2.2 or higher. + * + * Users can derive form the SwigPyIterator to implement their + * own iterators. As an example (real one since we use it for STL/STD + * containers), the template SwigPyIterator_T does the + * implementation for generic C++ iterators. + * ----------------------------------------------------------------------------- */ + +%include <std_common.i> + +%fragment("SwigPyIterator","header",fragment="<stddef.h>") { +namespace swig { + struct stop_iteration { + }; + + struct SwigPyIterator { + private: + SwigPtr_PyObject _seq; + + protected: + SwigPyIterator(PyObject *seq) : _seq(seq) + { + } + + public: + virtual ~SwigPyIterator() {} + + // Access iterator method, required by Python + virtual PyObject *value() const = 0; + + // Forward iterator method, required by Python + virtual SwigPyIterator *incr(size_t n = 1) = 0; + + // Backward iterator method, very common in C++, but not required in Python + virtual SwigPyIterator *decr(size_t /*n*/ = 1) + { + throw stop_iteration(); + } + + // Random access iterator methods, but not required in Python + virtual ptrdiff_t distance(const SwigPyIterator &/*x*/) const + { + throw std::invalid_argument("operation not supported"); + } + + virtual bool equal (const SwigPyIterator &/*x*/) const + { + throw std::invalid_argument("operation not supported"); + } + + // C++ common/needed methods + virtual SwigPyIterator *copy() const = 0; + + PyObject *next() + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads + PyObject *obj = value(); + incr(); + SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads + return obj; + } + + /* Make an alias for Python 3.x */ + PyObject *__next__() + { + return next(); + } + + PyObject *previous() + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads + decr(); + PyObject *obj = value(); + SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads + return obj; + } + + SwigPyIterator *advance(ptrdiff_t n) + { + return (n > 0) ? incr(n) : decr(-n); + } + + bool operator == (const SwigPyIterator& x) const + { + return equal(x); + } + + bool operator != (const SwigPyIterator& x) const + { + return ! operator==(x); + } + + SwigPyIterator& operator += (ptrdiff_t n) + { + return *advance(n); + } + + SwigPyIterator& operator -= (ptrdiff_t n) + { + return *advance(-n); + } + + SwigPyIterator* operator + (ptrdiff_t n) const + { + return copy()->advance(n); + } + + SwigPyIterator* operator - (ptrdiff_t n) const + { + return copy()->advance(-n); + } + + ptrdiff_t operator - (const SwigPyIterator& x) const + { + return x.distance(*this); + } + + static swig_type_info* descriptor() { + static int init = 0; + static swig_type_info* desc = 0; + if (!init) { + desc = SWIG_TypeQuery("swig::SwigPyIterator *"); + init = 1; + } + return desc; + } + }; + +%#if defined(SWIGPYTHON_BUILTIN) + inline PyObject* make_output_iterator_builtin (PyObject *pyself) + { + Py_INCREF(pyself); + return pyself; + } +%#endif +} +} + +%fragment("SwigPyIterator_T","header",fragment="<stddef.h>",fragment="SwigPyIterator",fragment="StdTraits",fragment="StdIteratorTraits") { +namespace swig { + template<typename OutIterator> + class SwigPyIterator_T : public SwigPyIterator + { + public: + typedef OutIterator out_iterator; + typedef typename std::iterator_traits<out_iterator>::value_type value_type; + typedef SwigPyIterator_T<out_iterator> self_type; + + SwigPyIterator_T(out_iterator curr, PyObject *seq) + : SwigPyIterator(seq), current(curr) + { + } + + const out_iterator& get_current() const + { + return current; + } + + + bool equal (const SwigPyIterator &iter) const + { + const self_type *iters = dynamic_cast<const self_type *>(&iter); + if (iters) { + return (current == iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + ptrdiff_t distance(const SwigPyIterator &iter) const + { + const self_type *iters = dynamic_cast<const self_type *>(&iter); + if (iters) { + return std::distance(current, iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + protected: + out_iterator current; + }; + + template <class ValueType> + struct from_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v); + } + }; + + template<typename OutIterator, + typename ValueType = typename std::iterator_traits<OutIterator>::value_type, + typename FromOper = from_oper<ValueType> > + class SwigPyIteratorOpen_T : public SwigPyIterator_T<OutIterator> + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigPyIterator_T<out_iterator> base; + typedef SwigPyIteratorOpen_T<OutIterator, ValueType, FromOper> self_type; + + SwigPyIteratorOpen_T(out_iterator curr, PyObject *seq) + : SwigPyIterator_T<OutIterator>(curr, seq) + { + } + + PyObject *value() const { + return from(static_cast<const value_type&>(*(base::current))); + } + + SwigPyIterator *copy() const + { + return new self_type(*this); + } + + SwigPyIterator *incr(size_t n = 1) + { + while (n--) { + ++base::current; + } + return this; + } + + SwigPyIterator *decr(size_t n = 1) + { + while (n--) { + --base::current; + } + return this; + } + }; + + template<typename OutIterator, + typename ValueType = typename std::iterator_traits<OutIterator>::value_type, + typename FromOper = from_oper<ValueType> > + class SwigPyIteratorClosed_T : public SwigPyIterator_T<OutIterator> + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigPyIterator_T<out_iterator> base; + typedef SwigPyIteratorClosed_T<OutIterator, ValueType, FromOper> self_type; + + SwigPyIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, PyObject *seq) + : SwigPyIterator_T<OutIterator>(curr, seq), begin(first), end(last) + { + } + + PyObject *value() const { + if (base::current == end) { + throw stop_iteration(); + } else { + return from(static_cast<const value_type&>(*(base::current))); + } + } + + SwigPyIterator *copy() const + { + return new self_type(*this); + } + + SwigPyIterator *incr(size_t n = 1) + { + while (n--) { + if (base::current == end) { + throw stop_iteration(); + } else { + ++base::current; + } + } + return this; + } + + SwigPyIterator *decr(size_t n = 1) + { + while (n--) { + if (base::current == begin) { + throw stop_iteration(); + } else { + --base::current; + } + } + return this; + } + + private: + out_iterator begin; + out_iterator end; + }; + + template<typename OutIter> + inline SwigPyIterator* + make_output_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, PyObject *seq = 0) + { + return new SwigPyIteratorClosed_T<OutIter>(current, begin, end, seq); + } + + template<typename OutIter> + inline SwigPyIterator* + make_output_iterator(const OutIter& current, PyObject *seq = 0) + { + return new SwigPyIteratorOpen_T<OutIter>(current, seq); + } + +} +} + + +%fragment("SwigPyIterator"); +namespace swig +{ + /* + Throw a StopIteration exception + */ + %ignore stop_iteration; + struct stop_iteration {}; + + %typemap(throws) stop_iteration { + (void)$1; + SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); + SWIG_fail; + } + + /* + Mark methods that return new objects + */ + %newobject SwigPyIterator::copy; + %newobject SwigPyIterator::operator + (ptrdiff_t n) const; + %newobject SwigPyIterator::operator - (ptrdiff_t n) const; + + %nodirector SwigPyIterator; + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:tp_iter") SwigPyIterator "&swig::make_output_iterator_builtin"; + %feature("python:slot", "tp_iternext", functype="iternextfunc") SwigPyIterator::__next__; +#else + %extend SwigPyIterator { + %pythoncode %{def __iter__(self): + return self%} + } +#endif + + %catches(swig::stop_iteration) SwigPyIterator::value() const; + %catches(swig::stop_iteration) SwigPyIterator::incr(size_t n = 1); + %catches(swig::stop_iteration) SwigPyIterator::decr(size_t n = 1); + %catches(std::invalid_argument) SwigPyIterator::distance(const SwigPyIterator &x) const; + %catches(std::invalid_argument) SwigPyIterator::equal (const SwigPyIterator &x) const; + %catches(swig::stop_iteration) SwigPyIterator::__next__(); + %catches(swig::stop_iteration) SwigPyIterator::next(); + %catches(swig::stop_iteration) SwigPyIterator::previous(); + %catches(swig::stop_iteration) SwigPyIterator::advance(ptrdiff_t n); + %catches(swig::stop_iteration) SwigPyIterator::operator += (ptrdiff_t n); + %catches(swig::stop_iteration) SwigPyIterator::operator -= (ptrdiff_t n); + %catches(swig::stop_iteration) SwigPyIterator::operator + (ptrdiff_t n) const; + %catches(swig::stop_iteration) SwigPyIterator::operator - (ptrdiff_t n) const; + + struct SwigPyIterator + { + protected: + SwigPyIterator(PyObject *seq); + + public: + virtual ~SwigPyIterator(); + + // Access iterator method, required by Python + virtual PyObject *value() const = 0; + + // Forward iterator method, required by Python + virtual SwigPyIterator *incr(size_t n = 1) = 0; + + // Backward iterator method, very common in C++, but not required in Python + virtual SwigPyIterator *decr(size_t n = 1); + + // Random access iterator methods, but not required in Python + virtual ptrdiff_t distance(const SwigPyIterator &x) const; + + virtual bool equal (const SwigPyIterator &x) const; + + // C++ common/needed methods + virtual SwigPyIterator *copy() const = 0; + + PyObject *next(); + PyObject *__next__(); + PyObject *previous(); + SwigPyIterator *advance(ptrdiff_t n); + + bool operator == (const SwigPyIterator& x) const; + bool operator != (const SwigPyIterator& x) const; + SwigPyIterator& operator += (ptrdiff_t n); + SwigPyIterator& operator -= (ptrdiff_t n); + SwigPyIterator* operator + (ptrdiff_t n) const; + SwigPyIterator* operator - (ptrdiff_t n) const; + ptrdiff_t operator - (const SwigPyIterator& x) const; + }; +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pymacros.swg b/qrenderdoc/3rdparty/swig/Lib/python/pymacros.swg new file mode 100644 index 000000000..ab7bace5b --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pymacros.swg @@ -0,0 +1,4 @@ +%include <typemaps/swigmacros.swg> + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyname_compat.i b/qrenderdoc/3rdparty/swig/Lib/python/pyname_compat.i new file mode 100644 index 000000000..96af343ca --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyname_compat.i @@ -0,0 +1,86 @@ +/* +* From SWIG 1.3.37 we deprecated all SWIG symbols that start with Py, +* since they are inappropriate and discouraged in Python documentation +* (from http://www.python.org/doc/2.5.2/api/includes.html): +* +* "All user visible names defined by Python.h (except those defined by the included +* standard headers) have one of the prefixes "Py" or "_Py". Names beginning with +* "_Py" are for internal use by the Python implementation and should not be used +* by extension writers. Structure member names do not have a reserved prefix. +* +* Important: user code should never define names that begin with "Py" or "_Py". +* This confuses the reader, and jeopardizes the portability of the user code to +* future Python versions, which may define additional names beginning with one +* of these prefixes." +* +* This file defined macros to provide backward compatibility for these deprecated +* symbols. In the case you have these symbols in your interface file, you can simply +* include this file at beginning of it. +* +* However, this file may be removed in future release of SWIG, so using this file to +* keep these inappropriate names in your SWIG interface file is also not recommended. +* Instead, we provide a simple tool for converting your interface files to +* the new naming convention. You can get the tool from the SWIG distribution: +* Tools/pyname_patch.py +*/ + +%fragment("PySequence_Base", "header", fragment="SwigPySequence_Base") {} +%fragment("PySequence_Cont", "header", fragment="SwigPySequence_Cont") {} +%fragment("PySwigIterator_T", "header", fragment="SwigPyIterator_T") {} +%fragment("PyPairBoolOutputIterator", "header", fragment="SwigPyPairBoolOutputIterator") {} +%fragment("PySwigIterator", "header", fragment="SwigPyIterator") {} +%fragment("PySwigIterator_T", "header", fragment="SwigPyIterator_T") {} + +%inline %{ +#define PyMapIterator_T SwigPyMapIterator_T +#define PyMapKeyIterator_T SwigPyMapKeyIterator_T +#define PyMapValueIterator_T SwigPyMapValueITerator_T +#define PyObject_ptr SwigPtr_PyObject +#define PyObject_var SwigVar_PyObject +#define PyOper SwigPyOper +#define PySeq SwigPySeq +#define PySequence_ArrowProxy SwigPySequence_ArrowProxy +#define PySequence_Cont SwigPySequence_Cont +#define PySequence_InputIterator SwigPySequence_InputIterator +#define PySequence_Ref SwigPySequence_Ref +#define PySwigClientData SwigPyClientData +#define PySwigClientData_Del SwigPyClientData_Del +#define PySwigClientData_New SwigPyClientData_New +#define PySwigIterator SwigPyIterator +#define PySwigIteratorClosed_T SwigPyIteratorClosed_T +#define PySwigIteratorOpen_T SwigPyIteratorOpen_T +#define PySwigIterator_T SwigPyIterator_T +#define PySwigObject SwigPyObject +#define PySwigObject_Check SwigPyObject_Check +#define PySwigObject_GetDesc SwigPyObject_GetDesc +#define PySwigObject_New SwigPyObject_New +#define PySwigObject_acquire SwigPyObject_acquire +#define PySwigObject_append SwigPyObject_append +#define PySwigObject_as_number SwigPyObject_as_number +#define PySwigObject_compare SwigPyObject_compare +#define PySwigObject_dealloc SwigPyObject_dealloc +#define PySwigObject_disown SwigPyObject_disown +#define PySwigObject_format SwigPyObject_format +#define PySwigObject_getattr SwigPyObject_getattr +#define PySwigObject_hex SwigPyObject_hex +#define PySwigObject_long SwigPyObject_long +#define PySwigObject_next SwigPyObject_next +#define PySwigObject_oct SwigPyObject_oct +#define PySwigObject_own SwigPyObject_own +#define PySwigObject_repr SwigPyObject_repr +#define PySwigObject_richcompare SwigPyObject_richcompare +#define PySwigObject_type SwigPyObject_type +#define PySwigPacked SwigPyPacked +#define PySwigPacked_Check SwigPyPacked_Check +#define PySwigPacked_New SwigPyPacked_New +#define PySwigPacked_UnpackData SwigPyPacked_UnpackData +#define PySwigPacked_compare SwigPyPacked_compare +#define PySwigPacked_dealloc SwigPyPacked_dealloc +#define PySwigPacked_print SwigPyPacked_print +#define PySwigPacked_repr SwigPyPacked_repr +#define PySwigPacked_str SwigPyPacked_str +#define PySwigPacked_type SwigPyPacked_type +#define pyseq swigpyseq +#define pyswigobject_type swigpyobject_type +#define pyswigpacked_type swigpypacked_type +%} diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyopers.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyopers.swg new file mode 100644 index 000000000..fd2fcc581 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyopers.swg @@ -0,0 +1,264 @@ +/* ------------------------------------------------------------ + * Overloaded operator support + + The directives in this file apply whether or not you use the + -builtin option to SWIG, but operator overloads are particularly + attractive when using -builtin, because they are much faster + than named methods. + + If you're using the -builtin option to SWIG, and you want to define + python operator overloads beyond the defaults defined in this file, + here's what you need to know: + + There are two ways to define a python slot function: dispatch to a + statically defined function; or dispatch to a method defined on the + operand. + + To dispatch to a statically defined function, use %feature("python:<slot>"), + where <slot> is the name of a field in a PyTypeObject, PyNumberMethods, + PyMappingMethods, PySequenceMethods, or PyBufferProcs. For example: + + %feature("python:tp_hash") MyClass "myHashFunc"; + + class MyClass { + public: + ... + }; + + %{ + // Note: Py_hash_t was introduced in Python 3.2 + static Py_hash_t myHashFunc(PyObject *pyobj) { + MyClass *cobj; + // Convert pyobj to cobj + return (cobj->field1 * (cobj->field2 << 7)); + } + %} + + NOTE: It is the responsibility of the programmer (that's you) to ensure + that a statically defined slot function has the correct signature. + + If, instead, you want to dispatch to an instance method, you can + use %feature("python:slot"). For example: + + %feature("python:slot", "tp_hash", functype="hashfunc") MyClass::myHashFunc; + + class MyClass { + public: + Py_hash_t myHashFunc () const; + ... + }; + + NOTE: Some python slots use a method signature which does not + match the signature of SWIG-wrapped methods. For those slots, + SWIG will automatically generate a "closure" function to re-marshall + the arguments before dispatching to the wrapped method. Setting + the "functype" attribute of the feature enables SWIG to generate + a correct closure function. + + -------------------------------------------------------------- + + The tp_richcompare slot is a special case: SWIG automatically generates + a rich compare function for all wrapped types. If a type defines C++ + operator overloads for comparison (operator==, operator<, etc.), they + will be called from the generated rich compare function. If you + want to explicitly choose a method to handle a certain comparison + operation, you may use a different feature, %feature("python:compare") + like this: + + %feature("python:compare", "Py_LT") MyClass::lessThan; + + class MyClass { + public: + bool lessThan(const MyClass& other) const; + ... + }; + + ... where "Py_LT" is one of the rich comparison opcodes defined in the + python header file object.h. + + If there's no method defined to handle a particular comparison operation, + the default behavior is to compare pointer values of the wrapped + C++ objects. + + -------------------------------------------------------------- + + + For more information about python slots, including their names and + signatures, you may refer to the python documentation : + + http://docs.python.org/c-api/typeobj.html + + * ------------------------------------------------------------ */ + + +#ifdef __cplusplus + +#if defined(SWIGPYTHON_BUILTIN) +#define %pybinoperator(pyname,oper,functp,slt) %rename(pyname) oper; %pythonmaybecall oper; %feature("python:slot", #slt, functype=#functp) oper; %feature("python:slot", #slt, functype=#functp) pyname; +#define %pycompare(pyname,oper,comptype) %rename(pyname) oper; %pythonmaybecall oper; %feature("python:compare", #comptype) oper; %feature("python:compare", #comptype) pyname; +#else +#define %pybinoperator(pyname,oper,functp,slt) %rename(pyname) oper; %pythonmaybecall oper +#define %pycompare(pyname,oper,comptype) %pybinoperator(pyname,oper,,comptype) +#endif + +%pybinoperator(__add__, *::operator+, binaryfunc, nb_add); +%pybinoperator(__pos__, *::operator+(), unaryfunc, nb_positive); +%pybinoperator(__pos__, *::operator+() const, unaryfunc, nb_positive); +%pybinoperator(__sub__, *::operator-, binaryfunc, nb_subtract); +%pybinoperator(__neg__, *::operator-(), unaryfunc, nb_negative); +%pybinoperator(__neg__, *::operator-() const, unaryfunc, nb_negative); +%pybinoperator(__mul__, *::operator*, binaryfunc, nb_multiply); +%pybinoperator(__mod__, *::operator%, binaryfunc, nb_remainder); +%pybinoperator(__lshift__, *::operator<<, binaryfunc, nb_lshift); +%pybinoperator(__rshift__, *::operator>>, binaryfunc, nb_rshift); +%pybinoperator(__and__, *::operator&, binaryfunc, nb_and); +%pybinoperator(__or__, *::operator|, binaryfunc, nb_or); +%pybinoperator(__xor__, *::operator^, binaryfunc, nb_xor); +%pycompare(__lt__, *::operator<, Py_LT); +%pycompare(__le__, *::operator<=, Py_LE); +%pycompare(__gt__, *::operator>, Py_GT); +%pycompare(__ge__, *::operator>=, Py_GE); +%pycompare(__eq__, *::operator==, Py_EQ); +%pycompare(__ne__, *::operator!=, Py_NE); + +/* Special cases */ +%rename(__invert__) *::operator~; +%feature("python:slot", "nb_invert", functype="unaryfunc") *::operator~; +%rename(__call__) *::operator(); +%feature("python:slot", "tp_call", functype="ternarycallfunc") *::operator(); + +#if defined(SWIGPYTHON_BUILTIN) +%pybinoperator(__nonzero__, *::operator bool, inquiry, nb_nonzero); +%pybinoperator(__truediv__, *::operator/ , binaryfunc, nb_divide); +#else +%feature("shadow") *::operator bool %{ +def __nonzero__(self): + return $action(self) +__bool__ = __nonzero__ +%}; +%rename(__nonzero__) *::operator bool; +%feature("shadow") *::operator/ %{ +def __truediv__(self, *args): + return $action(self, *args) +__div__ = __truediv__ +%}; +%rename(__truediv__) *::operator/; +%pythonmaybecall *::operator/; +#endif + +/* Ignored operators */ +%ignoreoperator(LNOT) operator!; +%ignoreoperator(LAND) operator&&; +%ignoreoperator(LOR) operator||; +%ignoreoperator(EQ) *::operator=; +%ignoreoperator(PLUSPLUS) *::operator++; +%ignoreoperator(MINUSMINUS) *::operator--; +%ignoreoperator(ARROWSTAR) *::operator->*; +%ignoreoperator(INDEX) *::operator[]; + +/* + Inplace operator declarations. + + They translate the inplace C++ operators (+=, -=, ...) into the + corresponding python equivalents(__iadd__,__isub__), etc, + disabling the ownership of the input 'this' pointer, and assigning + it to the returning object: + + %feature("del") *::Operator; // disables ownership by generating SWIG_POINTER_DISOWN + %feature("new") *::Operator; // claims ownership by generating SWIG_POINTER_OWN + + This makes the most common case safe, ie: + + A& A::operator+=(int i) { ...; return *this; } + ^^^^ ^^^^^^ + + will work fine, even when the resulting python object shares the + 'this' pointer with the input one. The input object is usually + deleted after the operation, including the shared 'this' pointer, + producing 'strange' seg faults, as reported by Lucriz + (lucriz@sitilandia.it). + + If you have an interface that already takes care of that, ie, you + already are using inplace operators and you are not getting + seg. faults, with the new scheme you could end with 'free' elements + that never get deleted (maybe, not sure, it depends). But if that is + the case, you could recover the old behaviour using + + %feature("del","0") A::operator+=; + %feature("new","0") A::operator+=; + + which recovers the old behaviour for the class 'A', or if you are + 100% sure your entire system works fine in the old way, use: + + %feature("del","") *::operator+=; + %feature("new","") *::operator+=; + + The default behaviour assumes that the 'this' pointer's memory is + already owned by the SWIG object; it relinquishes ownership then + takes it back. This may not be the case though as the SWIG object + might be owned by memory managed elsewhere, eg after calling a + function that returns a C++ reference. In such case you will need + to use the features above to recover the old behaviour too. +*/ + +#if defined(SWIGPYTHON_BUILTIN) +#define %pyinplaceoper(SwigPyOper, Oper, functp, slt) %delobject Oper; %newobject Oper; %feature("python:slot", #slt, functype=#functp) Oper; %rename(SwigPyOper) Oper +#else +#define %pyinplaceoper(SwigPyOper, Oper, functp, slt) %delobject Oper; %newobject Oper; %rename(SwigPyOper) Oper +#endif + +%pyinplaceoper(__iadd__ , *::operator +=, binaryfunc, nb_inplace_add); +%pyinplaceoper(__isub__ , *::operator -=, binaryfunc, nb_inplace_subtract); +%pyinplaceoper(__imul__ , *::operator *=, binaryfunc, nb_inplace_multiply); +%pyinplaceoper(__imod__ , *::operator %=, binaryfunc, nb_inplace_remainder); +%pyinplaceoper(__iand__ , *::operator &=, binaryfunc, nb_inplace_and); +%pyinplaceoper(__ior__ , *::operator |=, binaryfunc, nb_inplace_or); +%pyinplaceoper(__ixor__ , *::operator ^=, binaryfunc, nb_inplace_xor); +%pyinplaceoper(__ilshift__, *::operator <<=, binaryfunc, nb_inplace_lshift); +%pyinplaceoper(__irshift__, *::operator >>=, binaryfunc, nb_inplace_rshift); + +/* Special cases */ +#if defined(SWIGPYTHON_BUILTIN) +%pyinplaceoper(__itruediv__ , *::operator /=, binaryfunc, nb_inplace_divide); +#else +%delobject *::operator /=; +%newobject *::operator /=; +%feature("shadow") *::operator /= %{ +def __itruediv__(self, *args): + return $action(self, *args) +__idiv__ = __itruediv__ +%}; +%rename(__itruediv__) *::operator /=; +#endif + +/* Finally, in python we need to mark the binary operations to fail as + 'maybecall' methods */ + +#define %pybinopermaybecall(oper) %pythonmaybecall __ ## oper ## __; %pythonmaybecall __r ## oper ## __ + +%pybinopermaybecall(add); +%pybinopermaybecall(pos); +%pybinopermaybecall(pos); +%pybinopermaybecall(sub); +%pybinopermaybecall(neg); +%pybinopermaybecall(neg); +%pybinopermaybecall(mul); +%pybinopermaybecall(div); +%pybinopermaybecall(truediv); +%pybinopermaybecall(mod); +%pybinopermaybecall(lshift); +%pybinopermaybecall(rshift); +%pybinopermaybecall(and); +%pybinopermaybecall(or); +%pybinopermaybecall(xor); +%pybinopermaybecall(lt); +%pybinopermaybecall(le); +%pybinopermaybecall(gt); +%pybinopermaybecall(ge); +%pybinopermaybecall(eq); +%pybinopermaybecall(ne); + +#endif + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyprimtypes.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyprimtypes.swg new file mode 100644 index 000000000..6a01af17c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyprimtypes.swg @@ -0,0 +1,353 @@ +/* ------------------------------------------------------------ + * Primitive Types + * ------------------------------------------------------------ */ + +/* boolean */ + +%fragment(SWIG_From_frag(bool),"header") { +SWIGINTERNINLINE PyObject* + SWIG_From_dec(bool)(bool value) +{ + return PyBool_FromLong(value ? 1 : 0); +} +} + +#ifdef SWIG_PYTHON_LEGACY_BOOL +// Default prior to SWIG 3.0.0 +%fragment(SWIG_AsVal_frag(bool),"header", + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(bool)(PyObject *obj, bool *val) +{ + int r = PyObject_IsTrue(obj); + if (r == -1) + return SWIG_ERROR; + if (val) *val = r ? true : false; + return SWIG_OK; +} +} +#else +%fragment(SWIG_AsVal_frag(bool),"header", + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(bool)(PyObject *obj, bool *val) +{ + int r; + if (!PyBool_Check(obj)) + return SWIG_ERROR; + r = PyObject_IsTrue(obj); + if (r == -1) + return SWIG_ERROR; + if (val) *val = r ? true : false; + return SWIG_OK; +} +} +#endif + +/* int */ + +%fragment(SWIG_From_frag(int),"header") { +SWIGINTERNINLINE PyObject* + SWIG_From_dec(int)(int value) +{ + return PyInt_FromLong((long) value); +} +} + +/* unsigned int */ + +%fragment(SWIG_From_frag(unsigned int),"header") { +SWIGINTERNINLINE PyObject* + SWIG_From_dec(unsigned int)(unsigned int value) +{ + return PyInt_FromSize_t((size_t) value); +} +} + +/* long */ + +%fragment(SWIG_From_frag(long),"header") { + %define_as(SWIG_From_dec(long), PyInt_FromLong) +} + +%fragment(SWIG_AsVal_frag(long),"header", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN int +SWIG_AsVal_dec(long)(PyObject *obj, long* val) +{ +%#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(obj)) { + if (val) *val = PyInt_AsLong(obj); + return SWIG_OK; + } else +%#endif + if (PyLong_Check(obj)) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + return SWIG_OverflowError; + } + } +%#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + long v = PyInt_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { + if (val) *val = (long)(d); + return res; + } + } + } +%#endif + return SWIG_TypeError; +} +} + +/* unsigned long */ + +%fragment(SWIG_From_frag(unsigned long),"header", + fragment=SWIG_From_frag(long)) { +SWIGINTERNINLINE PyObject* +SWIG_From_dec(unsigned long)(unsigned long value) +{ + return (value > LONG_MAX) ? + PyLong_FromUnsignedLong(value) : PyInt_FromLong(%numeric_cast(value,long)); +} +} + +%fragment(SWIG_AsVal_frag(unsigned long),"header", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN int +SWIG_AsVal_dec(unsigned long)(PyObject *obj, unsigned long *val) +{ +%#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(obj)) { + long v = PyInt_AsLong(obj); + if (v >= 0) { + if (val) *val = v; + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else +%#endif + if (PyLong_Check(obj)) { + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + return SWIG_OverflowError; + } + } +%#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { + if (val) *val = (unsigned long)(d); + return res; + } + } + } +%#endif + return SWIG_TypeError; +} +} + +/* long long */ + +%fragment(SWIG_From_frag(long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE PyObject* +SWIG_From_dec(long long)(long long value) +{ + return ((value < LONG_MIN) || (value > LONG_MAX)) ? + PyLong_FromLongLong(value) : PyInt_FromLong(%numeric_cast(value,long)); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(long long),"header", + fragment=SWIG_AsVal_frag(long), + fragment="SWIG_CanCastAsInteger", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN int +SWIG_AsVal_dec(long long)(PyObject *obj, long long *val) +{ + int res = SWIG_TypeError; + if (PyLong_Check(obj)) { + long long v = PyLong_AsLongLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + res = SWIG_OverflowError; + } + } else { + long v; + res = SWIG_AsVal(long)(obj,&v); + if (SWIG_IsOK(res)) { + if (val) *val = v; + return res; + } + } +%#ifdef SWIG_PYTHON_CAST_MODE + { + const double mant_max = 1LL << DBL_MANT_DIG; + const double mant_min = -mant_max; + double d; + res = SWIG_AsVal(double)(obj,&d); + if (SWIG_IsOK(res) && !SWIG_CanCastAsInteger(&d, mant_min, mant_max)) + return SWIG_OverflowError; + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) { + if (val) *val = (long long)(d); + return SWIG_AddCast(res); + } + res = SWIG_TypeError; + } +%#endif + return res; +} +%#endif +} + +/* unsigned long long */ + +%fragment(SWIG_From_frag(unsigned long long),"header", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE PyObject* +SWIG_From_dec(unsigned long long)(unsigned long long value) +{ + return (value > LONG_MAX) ? + PyLong_FromUnsignedLongLong(value) : PyInt_FromLong(%numeric_cast(value,long)); +} +%#endif +} + +%fragment(SWIG_AsVal_frag(unsigned long long),"header", + fragment=SWIG_AsVal_frag(unsigned long), + fragment="SWIG_CanCastAsInteger", + fragment="SWIG_LongLongAvailable") { +%#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERN int +SWIG_AsVal_dec(unsigned long long)(PyObject *obj, unsigned long long *val) +{ + int res = SWIG_TypeError; + if (PyLong_Check(obj)) { + unsigned long long v = PyLong_AsUnsignedLongLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + res = SWIG_OverflowError; + } + } else { + unsigned long v; + res = SWIG_AsVal(unsigned long)(obj,&v); + if (SWIG_IsOK(res)) { + if (val) *val = v; + return res; + } + } +%#ifdef SWIG_PYTHON_CAST_MODE + { + const double mant_max = 1LL << DBL_MANT_DIG; + double d; + res = SWIG_AsVal(double)(obj,&d); + if (SWIG_IsOK(res) && !SWIG_CanCastAsInteger(&d, 0, mant_max)) + return SWIG_OverflowError; + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) { + if (val) *val = (unsigned long long)(d); + return SWIG_AddCast(res); + } + res = SWIG_TypeError; + } +%#endif + return res; +} +%#endif +} + +/* double */ + +%fragment(SWIG_From_frag(double),"header") { + %define_as(SWIG_From_dec(double), PyFloat_FromDouble) +} + +%fragment(SWIG_AsVal_frag(double),"header") { +SWIGINTERN int +SWIG_AsVal_dec(double)(PyObject *obj, double *val) +{ + int res = SWIG_TypeError; + if (PyFloat_Check(obj)) { + if (val) *val = PyFloat_AsDouble(obj); + return SWIG_OK; +%#if PY_VERSION_HEX < 0x03000000 + } else if (PyInt_Check(obj)) { + if (val) *val = (double) PyInt_AsLong(obj); + return SWIG_OK; +%#endif + } else if (PyLong_Check(obj)) { + double v = PyLong_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +%#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + double d = PyFloat_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = d; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_AddCast(SWIG_OK)); + } else { + PyErr_Clear(); + } + } + } +%#endif + return res; +} +} + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyrun.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyrun.swg new file mode 100644 index 000000000..d8a6db612 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyrun.swg @@ -0,0 +1,1830 @@ +/* ----------------------------------------------------------------------------- + * pyrun.swg + * + * This file contains the runtime support for Python modules + * and includes code for managing global variables and pointer + * type checking. + * + * ----------------------------------------------------------------------------- */ + +/* Common SWIG API */ + +/* for raw pointers */ +#define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0) +#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags) +#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own) + +#ifdef SWIGPYTHON_BUILTIN +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(self, ptr, type, flags) +#else +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) +#endif + +#define SWIG_InternalNewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) + +#define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty) +#define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src) +#define swig_owntype int + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(NULL, ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Python_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) +#define SWIG_NewClientData(obj) SwigPyClientData_New(obj) + +#define SWIG_SetErrorObj SWIG_Python_SetErrorObj +#define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg +#define SWIG_ErrorType(code) SWIG_Python_ErrorType(code) +#define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) +#define SWIG_fail goto fail + + +/* Runtime API implementation */ + +/* Error manipulation */ + +SWIGINTERN void +SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetObject(errtype, obj); + Py_DECREF(obj); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +SWIGINTERN void +SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(errtype, msg); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +#define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj) + +/* Set a constant value */ + +#if defined(SWIGPYTHON_BUILTIN) + +SWIGINTERN void +SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) { + PyObject *s = PyString_InternFromString(key); + PyList_Append(seq, s); + Py_DECREF(s); +} + +SWIGINTERN void +SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) { +#if PY_VERSION_HEX < 0x02030000 + PyDict_SetItemString(d, (char *)name, obj); +#else + PyDict_SetItemString(d, name, obj); +#endif + Py_DECREF(obj); + if (public_interface) + SwigPyBuiltin_AddPublicSymbol(public_interface, name); +} + +#else + +SWIGINTERN void +SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { +#if PY_VERSION_HEX < 0x02030000 + PyDict_SetItemString(d, (char *)name, obj); +#else + PyDict_SetItemString(d, name, obj); +#endif + Py_DECREF(obj); +} + +#endif + +/* Append a value to the result obj */ + +SWIGINTERN PyObject* +SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) { +#if !defined(SWIG_PYTHON_OUTPUT_TUPLE) + if (!result) { + result = obj; + } else if (result == Py_None) { + Py_DECREF(result); + result = obj; + } else { + if (!PyList_Check(result)) { + PyObject *o2 = result; + result = PyList_New(1); + PyList_SetItem(result, 0, o2); + } + PyList_Append(result,obj); + Py_DECREF(obj); + } + return result; +#else + PyObject* o2; + PyObject* o3; + if (!result) { + result = obj; + } else if (result == Py_None) { + Py_DECREF(result); + result = obj; + } else { + if (!PyTuple_Check(result)) { + o2 = result; + result = PyTuple_New(1); + PyTuple_SET_ITEM(result, 0, o2); + } + o3 = PyTuple_New(1); + PyTuple_SET_ITEM(o3, 0, obj); + o2 = result; + result = PySequence_Concat(o2, o3); + Py_DECREF(o2); + Py_DECREF(o3); + } + return result; +#endif +} + +/* Unpack the argument tuple */ + +SWIGINTERN Py_ssize_t +SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) +{ + if (!args) { + if (!min && !max) { + return 1; + } else { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", + name, (min == max ? "" : "at least "), (int)min); + return 0; + } + } + if (!PyTuple_Check(args)) { + if (min <= 1 && max >= 1) { + Py_ssize_t i; + objs[0] = args; + for (i = 1; i < max; ++i) { + objs[i] = 0; + } + return 2; + } + PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); + return 0; + } else { + Py_ssize_t l = PyTuple_GET_SIZE(args); + if (l < min) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at least "), (int)min, (int)l); + return 0; + } else if (l > max) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at most "), (int)max, (int)l); + return 0; + } else { + Py_ssize_t i; + for (i = 0; i < l; ++i) { + objs[i] = PyTuple_GET_ITEM(args, i); + } + for (; l < max; ++l) { + objs[l] = 0; + } + return i + 1; + } + } +} + +/* A functor is a function object with one single object argument */ +#if PY_VERSION_HEX >= 0x02020000 +#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); +#else +#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunction(functor, "O", obj); +#endif + +/* + Helper for static pointer initialization for both C and C++ code, for example + static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...); +*/ +#ifdef __cplusplus +#define SWIG_STATIC_POINTER(var) var +#else +#define SWIG_STATIC_POINTER(var) var = 0; if (!var) var +#endif + +/* ----------------------------------------------------------------------------- + * Pointer declarations + * ----------------------------------------------------------------------------- */ + +/* Flags for new pointer objects */ +#define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1) +#define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN) + +#define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1) + +#define SWIG_BUILTIN_TP_INIT (SWIG_POINTER_OWN << 2) +#define SWIG_BUILTIN_INIT (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN) + +#ifdef __cplusplus +extern "C" { +#endif + +/* How to access Py_None */ +#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# ifndef SWIG_PYTHON_NO_BUILD_NONE +# ifndef SWIG_PYTHON_BUILD_NONE +# define SWIG_PYTHON_BUILD_NONE +# endif +# endif +#endif + +#ifdef SWIG_PYTHON_BUILD_NONE +# ifdef Py_None +# undef Py_None +# define Py_None SWIG_Py_None() +# endif +SWIGRUNTIMEINLINE PyObject * +_SWIG_Py_None(void) +{ + PyObject *none = Py_BuildValue((char*)""); + Py_DECREF(none); + return none; +} +SWIGRUNTIME PyObject * +SWIG_Py_None(void) +{ + static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None(); + return none; +} +#endif + +/* The python void return value */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Py_Void(void) +{ + PyObject *none = Py_None; + Py_INCREF(none); + return none; +} + +/* SwigPyClientData */ + +typedef struct { + PyObject *klass; + PyObject *newraw; + PyObject *newargs; + PyObject *destroy; + int delargs; + int implicitconv; + PyTypeObject *pytype; +} SwigPyClientData; + +SWIGRUNTIMEINLINE int +SWIG_Python_CheckImplicit(swig_type_info *ty) +{ + SwigPyClientData *data = (SwigPyClientData *)ty->clientdata; + return data ? data->implicitconv : 0; +} + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_ExceptionType(swig_type_info *desc) { + SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0; + PyObject *klass = data ? data->klass : 0; + return (klass ? klass : PyExc_RuntimeError); +} + + +SWIGRUNTIME SwigPyClientData * +SwigPyClientData_New(PyObject* obj) +{ + if (!obj) { + return 0; + } else { + SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData)); + /* the klass element */ + data->klass = obj; + Py_INCREF(data->klass); + /* the newraw method and newargs arguments used to create a new raw instance */ + if (PyClass_Check(obj)) { + data->newraw = 0; + data->newargs = obj; + Py_INCREF(obj); + } else { +#if (PY_VERSION_HEX < 0x02020000) + data->newraw = 0; +#else + data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__"); +#endif + if (data->newraw) { + Py_INCREF(data->newraw); + data->newargs = PyTuple_New(1); + PyTuple_SetItem(data->newargs, 0, obj); + } else { + data->newargs = obj; + } + Py_INCREF(data->newargs); + } + /* the destroy method, aka as the C++ delete method */ + data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__"); + if (PyErr_Occurred()) { + PyErr_Clear(); + data->destroy = 0; + } + if (data->destroy) { + int flags; + Py_INCREF(data->destroy); + flags = PyCFunction_GET_FLAGS(data->destroy); +#ifdef METH_O + data->delargs = !(flags & (METH_O)); +#else + data->delargs = 0; +#endif + } else { + data->delargs = 0; + } + data->implicitconv = 0; + data->pytype = 0; + return data; + } +} + +SWIGRUNTIME void +SwigPyClientData_Del(SwigPyClientData *data) { + Py_XDECREF(data->newraw); + Py_XDECREF(data->newargs); + Py_XDECREF(data->destroy); +} + +/* =============== SwigPyObject =====================*/ + +typedef struct { + PyObject_HEAD + void *ptr; + swig_type_info *ty; + int own; + PyObject *parent; + PyObject *next; +#ifdef SWIGPYTHON_BUILTIN + PyObject *dict; +#endif +} SwigPyObject; + + +#ifdef SWIGPYTHON_BUILTIN + +SWIGRUNTIME PyObject * +SwigPyObject_get___dict__(PyObject *v, PyObject *SWIGUNUSEDPARM(args)) +{ + SwigPyObject *sobj = (SwigPyObject *)v; + + if (!sobj->dict) + sobj->dict = PyDict_New(); + + Py_INCREF(sobj->dict); + return sobj->dict; +} + +#endif + +SWIGRUNTIME PyObject * +SwigPyObject_long(SwigPyObject *v) +{ + return PyLong_FromVoidPtr(v->ptr); +} + +SWIGRUNTIME PyObject * +SwigPyObject_format(const char* fmt, SwigPyObject *v) +{ + PyObject *res = NULL; + PyObject *args = PyTuple_New(1); + if (args) { + if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) { + PyObject *ofmt = SWIG_Python_str_FromChar(fmt); + if (ofmt) { +#if PY_VERSION_HEX >= 0x03000000 + res = PyUnicode_Format(ofmt,args); +#else + res = PyString_Format(ofmt,args); +#endif + Py_DECREF(ofmt); + } + Py_DECREF(args); + } + } + return res; +} + +SWIGRUNTIME PyObject * +SwigPyObject_oct(SwigPyObject *v) +{ + return SwigPyObject_format("%o",v); +} + +SWIGRUNTIME PyObject * +SwigPyObject_hex(SwigPyObject *v) +{ + return SwigPyObject_format("%x",v); +} + +SWIGRUNTIME PyObject * +#ifdef METH_NOARGS +SwigPyObject_repr(SwigPyObject *v) +#else +SwigPyObject_repr(SwigPyObject *v, PyObject *args) +#endif +{ + const char *name = SWIG_TypePrettyName(v->ty); + PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", (name ? name : "unknown"), (void *)v); + if (v->next) { +# ifdef METH_NOARGS + PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); +# else + PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args); +# endif +# if PY_VERSION_HEX >= 0x03000000 + PyObject *joined = PyUnicode_Concat(repr, nrep); + Py_DecRef(repr); + Py_DecRef(nrep); + repr = joined; +# else + PyString_ConcatAndDel(&repr,nrep); +# endif + } + return repr; +} + +SWIGRUNTIME int +SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) +{ + void *i = v->ptr; + void *j = w->ptr; + return (i < j) ? -1 : ((i > j) ? 1 : 0); +} + +/* Added for Python 3.x, would it also be useful for Python 2.x? */ +SWIGRUNTIME PyObject* +SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op) +{ + PyObject* res; + if( op != Py_EQ && op != Py_NE ) { + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } + res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0); + return res; +} + + +SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void); + +#ifdef SWIGPYTHON_BUILTIN +static swig_type_info *SwigPyObject_stype = 0; +SWIGRUNTIME PyTypeObject* +SwigPyObject_type(void) { + SwigPyClientData *cd; + assert(SwigPyObject_stype); + cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; + assert(cd); + assert(cd->pytype); + return cd->pytype; +} +#else +SWIGRUNTIME PyTypeObject* +SwigPyObject_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce(); + return type; +} +#endif + +SWIGRUNTIMEINLINE int +SwigPyObject_Check(PyObject *op) { +#ifdef SWIGPYTHON_BUILTIN + PyTypeObject *target_tp = SwigPyObject_type(); + if (PyType_IsSubtype(op->ob_type, target_tp)) + return 1; + return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0); +#else + return (Py_TYPE(op) == SwigPyObject_type()) + || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0); +#endif +} + +SWIGRUNTIME PyObject * +SwigPyObject_New(void *ptr, swig_type_info *ty, int own); + +SWIGRUNTIME void +SwigPyObject_dealloc(PyObject *v) +{ + SwigPyObject *sobj = (SwigPyObject *) v; + PyObject *next = sobj->next; + if (sobj->own == SWIG_POINTER_OWN) { + swig_type_info *ty = sobj->ty; + SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; + PyObject *destroy = data ? data->destroy : 0; + if (destroy) { + /* destroy is always a VARARGS method */ + PyObject *res; + + /* PyObject_CallFunction() has the potential to silently drop + the active active exception. In cases of unnamed temporary + variable or where we just finished iterating over a generator + StopIteration will be active right now, and this needs to + remain true upon return from SwigPyObject_dealloc. So save + and restore. */ + + PyObject *val = NULL, *type = NULL, *tb = NULL; + PyErr_Fetch(&val, &type, &tb); + + if (data->delargs) { + /* we need to create a temporary object to carry the destroy operation */ + PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0); + res = SWIG_Python_CallFunctor(destroy, tmp); + Py_DECREF(tmp); + } else { + PyCFunction meth = PyCFunction_GET_FUNCTION(destroy); + PyObject *mself = PyCFunction_GET_SELF(destroy); + res = ((*meth)(mself, v)); + } + if (!res) + PyErr_WriteUnraisable(destroy); + + PyErr_Restore(val, type, tb); + + Py_XDECREF(res); + } +#if !defined(SWIG_PYTHON_SILENT_MEMLEAK) + else { + const char *name = SWIG_TypePrettyName(ty); + printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown")); + } +#endif + } + Py_XDECREF(next); + PyObject_DEL(v); +} + +SWIGRUNTIME PyObject* +SwigPyObject_append(PyObject* v, PyObject* next) +{ + SwigPyObject *sobj = (SwigPyObject *) v; +#ifndef METH_O + PyObject *tmp = 0; + if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL; + next = tmp; +#endif + if (!SwigPyObject_Check(next)) { + PyErr_SetString(PyExc_TypeError, "Attempt to append a non SwigPyObject"); + return NULL; + } + sobj->next = next; + Py_INCREF(next); + return SWIG_Py_Void(); +} + +SWIGRUNTIME PyObject* +#ifdef METH_NOARGS +SwigPyObject_next(PyObject* v) +#else +SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + SwigPyObject *sobj = (SwigPyObject *) v; + if (sobj->next) { + Py_INCREF(sobj->next); + return sobj->next; + } else { + return SWIG_Py_Void(); + } +} + +SWIGINTERN PyObject* +#ifdef METH_NOARGS +SwigPyObject_disown(PyObject *v) +#else +SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + SwigPyObject *sobj = (SwigPyObject *)v; + sobj->own = 0; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +#ifdef METH_NOARGS +SwigPyObject_acquire(PyObject *v) +#else +SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + SwigPyObject *sobj = (SwigPyObject *)v; + sobj->own = SWIG_POINTER_OWN; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +SwigPyObject_own(PyObject *v, PyObject *args) +{ + PyObject *val = 0; +#if (PY_VERSION_HEX < 0x02020000) + if (!PyArg_ParseTuple(args,(char *)"|O:own",&val)) +#elif (PY_VERSION_HEX < 0x02050000) + if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) +#else + if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) +#endif + { + return NULL; + } + else + { + SwigPyObject *sobj = (SwigPyObject *)v; + PyObject *obj = PyBool_FromLong(sobj->own); + if (val) { +#ifdef METH_NOARGS + if (PyObject_IsTrue(val)) { + SwigPyObject_acquire(v); + } else { + SwigPyObject_disown(v); + } +#else + if (PyObject_IsTrue(val)) { + SwigPyObject_acquire(v,args); + } else { + SwigPyObject_disown(v,args); + } +#endif + } + return obj; + } +} + +#ifdef METH_O +static PyMethodDef +swigobject_methods[] = { + {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"}, + {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS, (char *)"acquires ownership of the pointer"}, + {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, + {(char *)"append", (PyCFunction)SwigPyObject_append, METH_O, (char *)"appends another 'this' object"}, + {(char *)"next", (PyCFunction)SwigPyObject_next, METH_NOARGS, (char *)"returns the next 'this' object"}, + {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_NOARGS, (char *)"returns object representation"}, + {0, 0, 0, 0} +}; +#else +static PyMethodDef +swigobject_methods[] = { + {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_VARARGS, (char *)"releases ownership of the pointer"}, + {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_VARARGS, (char *)"acquires ownership of the pointer"}, + {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, + {(char *)"append", (PyCFunction)SwigPyObject_append, METH_VARARGS, (char *)"appends another 'this' object"}, + {(char *)"next", (PyCFunction)SwigPyObject_next, METH_VARARGS, (char *)"returns the next 'this' object"}, + {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, + {0, 0, 0, 0} +}; +#endif + +#if PY_VERSION_HEX < 0x02020000 +SWIGINTERN PyObject * +SwigPyObject_getattr(SwigPyObject *sobj,char *name) +{ + return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name); +} +#endif + +SWIGRUNTIME PyTypeObject* +SwigPyObject_TypeOnce(void) { + static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; + + static PyNumberMethods SwigPyObject_as_number = { + (binaryfunc)0, /*nb_add*/ + (binaryfunc)0, /*nb_subtract*/ + (binaryfunc)0, /*nb_multiply*/ + /* nb_divide removed in Python 3 */ +#if PY_VERSION_HEX < 0x03000000 + (binaryfunc)0, /*nb_divide*/ +#endif + (binaryfunc)0, /*nb_remainder*/ + (binaryfunc)0, /*nb_divmod*/ + (ternaryfunc)0,/*nb_power*/ + (unaryfunc)0, /*nb_negative*/ + (unaryfunc)0, /*nb_positive*/ + (unaryfunc)0, /*nb_absolute*/ + (inquiry)0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ +#if PY_VERSION_HEX < 0x03000000 + 0, /*nb_coerce*/ +#endif + (unaryfunc)SwigPyObject_long, /*nb_int*/ +#if PY_VERSION_HEX < 0x03000000 + (unaryfunc)SwigPyObject_long, /*nb_long*/ +#else + 0, /*nb_reserved*/ +#endif + (unaryfunc)0, /*nb_float*/ +#if PY_VERSION_HEX < 0x03000000 + (unaryfunc)SwigPyObject_oct, /*nb_oct*/ + (unaryfunc)SwigPyObject_hex, /*nb_hex*/ +#endif +#if PY_VERSION_HEX >= 0x03050000 /* 3.5 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_matrix_multiply */ +#elif PY_VERSION_HEX >= 0x03000000 /* 3.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */ +#elif PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ +#elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ +#elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */ + 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ +#endif + }; + + static PyTypeObject swigpyobject_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + (char *)"SwigPyObject", /* tp_name */ + sizeof(SwigPyObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyObject_dealloc, /* tp_dealloc */ + 0, /* tp_print */ +#if PY_VERSION_HEX < 0x02020000 + (getattrfunc)SwigPyObject_getattr, /* tp_getattr */ +#else + (getattrfunc)0, /* tp_getattr */ +#endif + (setattrfunc)0, /* tp_setattr */ +#if PY_VERSION_HEX >= 0x03000000 + 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */ +#else + (cmpfunc)SwigPyObject_compare, /* tp_compare */ +#endif + (reprfunc)SwigPyObject_repr, /* tp_repr */ + &SwigPyObject_as_number, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigobject_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0, /* tp_iter */ + 0, /* tp_iternext */ + swigobject_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#if PY_VERSION_HEX >= 0x02060000 + 0, /* tp_version_tag */ +#endif +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ +#if PY_VERSION_HEX >= 0x02050000 + 0, /* tp_prev */ +#endif + 0 /* tp_next */ +#endif + }; + swigpyobject_type = tmp; + type_init = 1; +#if PY_VERSION_HEX < 0x02020000 + swigpyobject_type.ob_type = &PyType_Type; +#else + if (PyType_Ready(&swigpyobject_type) < 0) + return NULL; +#endif + } + return &swigpyobject_type; +} + +SWIGRUNTIME PyObject * +SwigPyObject_New(void *ptr, swig_type_info *ty, int own) +{ + SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type()); + if (sobj) { + sobj->ptr = ptr; + sobj->ty = ty; + sobj->own = own; + sobj->next = 0; + } + return (PyObject *)sobj; +} + +/* ----------------------------------------------------------------------------- + * Implements a simple Swig Packed type, and use it instead of string + * ----------------------------------------------------------------------------- */ + +typedef struct { + PyObject_HEAD + void *pack; + swig_type_info *ty; + size_t size; +} SwigPyPacked; + +SWIGRUNTIME int +SwigPyPacked_print(SwigPyPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags)) +{ + char result[SWIG_BUFFER_SIZE]; + fputs("<Swig Packed ", fp); + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { + fputs("at ", fp); + fputs(result, fp); + } + fputs(v->ty->name,fp); + fputs(">", fp); + return 0; +} + +SWIGRUNTIME PyObject * +SwigPyPacked_repr(SwigPyPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { + return SWIG_Python_str_FromFormat("<Swig Packed at %s%s>", result, v->ty->name); + } else { + return SWIG_Python_str_FromFormat("<Swig Packed %s>", v->ty->name); + } +} + +SWIGRUNTIME PyObject * +SwigPyPacked_str(SwigPyPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ + return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name); + } else { + return SWIG_Python_str_FromChar(v->ty->name); + } +} + +SWIGRUNTIME int +SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w) +{ + size_t i = v->size; + size_t j = w->size; + int s = (i < j) ? -1 : ((i > j) ? 1 : 0); + return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size); +} + +SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void); + +SWIGRUNTIME PyTypeObject* +SwigPyPacked_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce(); + return type; +} + +SWIGRUNTIMEINLINE int +SwigPyPacked_Check(PyObject *op) { + return ((op)->ob_type == SwigPyPacked_TypeOnce()) + || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0); +} + +SWIGRUNTIME void +SwigPyPacked_dealloc(PyObject *v) +{ + if (SwigPyPacked_Check(v)) { + SwigPyPacked *sobj = (SwigPyPacked *) v; + free(sobj->pack); + } + PyObject_DEL(v); +} + +SWIGRUNTIME PyTypeObject* +SwigPyPacked_TypeOnce(void) { + static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; + static PyTypeObject swigpypacked_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX>=0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + (char *)"SwigPyPacked", /* tp_name */ + sizeof(SwigPyPacked), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyPacked_dealloc, /* tp_dealloc */ + (printfunc)SwigPyPacked_print, /* tp_print */ + (getattrfunc)0, /* tp_getattr */ + (setattrfunc)0, /* tp_setattr */ +#if PY_VERSION_HEX>=0x03000000 + 0, /* tp_reserved in 3.0.1 */ +#else + (cmpfunc)SwigPyPacked_compare, /* tp_compare */ +#endif + (reprfunc)SwigPyPacked_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + (reprfunc)SwigPyPacked_str, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigpacked_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#if PY_VERSION_HEX >= 0x02060000 + 0, /* tp_version_tag */ +#endif +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ +#if PY_VERSION_HEX >= 0x02050000 + 0, /* tp_prev */ +#endif + 0 /* tp_next */ +#endif + }; + swigpypacked_type = tmp; + type_init = 1; +#if PY_VERSION_HEX < 0x02020000 + swigpypacked_type.ob_type = &PyType_Type; +#else + if (PyType_Ready(&swigpypacked_type) < 0) + return NULL; +#endif + } + return &swigpypacked_type; +} + +SWIGRUNTIME PyObject * +SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty) +{ + SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type()); + if (sobj) { + void *pack = malloc(size); + if (pack) { + memcpy(pack, ptr, size); + sobj->pack = pack; + sobj->ty = ty; + sobj->size = size; + } else { + PyObject_DEL((PyObject *) sobj); + sobj = 0; + } + } + return (PyObject *) sobj; +} + +SWIGRUNTIME swig_type_info * +SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size) +{ + if (SwigPyPacked_Check(obj)) { + SwigPyPacked *sobj = (SwigPyPacked *)obj; + if (sobj->size != size) return 0; + memcpy(ptr, sobj->pack, size); + return sobj->ty; + } else { + return 0; + } +} + +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +SWIGRUNTIMEINLINE PyObject * +_SWIG_This(void) +{ + return SWIG_Python_str_FromChar("this"); +} + +static PyObject *swig_this = NULL; + +SWIGRUNTIME PyObject * +SWIG_This(void) +{ + if (swig_this == NULL) + swig_this = _SWIG_This(); + return swig_this; +} + +/* #define SWIG_PYTHON_SLOW_GETSET_THIS */ + +/* TODO: I don't know how to implement the fast getset in Python 3 right now */ +#if PY_VERSION_HEX>=0x03000000 +#define SWIG_PYTHON_SLOW_GETSET_THIS +#endif + +SWIGRUNTIME SwigPyObject * +SWIG_Python_GetSwigThis(PyObject *pyobj) +{ + PyObject *obj; + + if (SwigPyObject_Check(pyobj)) + return (SwigPyObject *) pyobj; + +#ifdef SWIGPYTHON_BUILTIN + (void)obj; +# ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { + pyobj = PyWeakref_GET_OBJECT(pyobj); + if (pyobj && SwigPyObject_Check(pyobj)) + return (SwigPyObject*) pyobj; + } +# endif + return NULL; +#else + + obj = 0; + +#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000)) + if (PyInstance_Check(pyobj)) { + obj = _PyInstance_Lookup(pyobj, SWIG_This()); + } else { + PyObject **dictptr = _PyObject_GetDictPtr(pyobj); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0; + } else { +#ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { + PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); + return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; + } +#endif + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } + } + } +#else + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } +#endif + if (obj && !SwigPyObject_Check(obj)) { + /* a PyObject is called 'this', try to get the 'real this' + SwigPyObject from it */ + return SWIG_Python_GetSwigThis(obj); + } + return (SwigPyObject *)obj; +#endif +} + +/* Acquire a pointer value */ + +SWIGRUNTIME int +SWIG_Python_AcquirePtr(PyObject *obj, int own) { + if (own == SWIG_POINTER_OWN) { + SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj); + if (sobj) { + int oldown = sobj->own; + sobj->own = own; + return oldown; + } + } + return 0; +} + +/* Convert a pointer value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) { + int res; + SwigPyObject *sobj; + int implicit_conv = (flags & SWIG_POINTER_IMPLICIT_CONV) != 0; + + if (!obj) + return SWIG_ERROR; + if (obj == Py_None && !implicit_conv) { + if (ptr) + *ptr = 0; + return SWIG_OK; + } + + res = SWIG_ERROR; + + sobj = SWIG_Python_GetSwigThis(obj); + if (own) + *own = 0; + while (sobj) { + void *vptr = sobj->ptr; + if (ty) { + swig_type_info *to = sobj->ty; + if (to == ty) { + /* no type cast needed */ + if (ptr) *ptr = vptr; + break; + } else { + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) { + sobj = (SwigPyObject *)sobj->next; + } else { + if (ptr) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + if (newmemory == SWIG_CAST_NEW_MEMORY) { + assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ + if (own) + *own = *own | SWIG_CAST_NEW_MEMORY; + } + } + break; + } + } + } else { + if (ptr) *ptr = vptr; + break; + } + } + if (sobj) { + if (own) + *own = *own | sobj->own; + if (flags & SWIG_POINTER_DISOWN) { + sobj->own = 0; + } + res = SWIG_OK; + } else { + if (implicit_conv) { + SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; + if (data && !data->implicitconv) { + PyObject *klass = data->klass; + if (klass) { + PyObject *impconv; + data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/ + impconv = SWIG_Python_CallFunctor(klass, obj); + data->implicitconv = 0; + if (PyErr_Occurred()) { + PyErr_Clear(); + impconv = 0; + } + if (impconv) { + SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv); + if (iobj) { + void *vptr; + res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0); + if (SWIG_IsOK(res)) { + if (ptr) { + *ptr = vptr; + /* transfer the ownership to 'ptr' */ + iobj->own = 0; + res = SWIG_AddCast(res); + res = SWIG_AddNewMask(res); + } else { + res = SWIG_AddCast(res); + } + } + } + Py_DECREF(impconv); + } + } + } + } + if (!SWIG_IsOK(res) && obj == Py_None) { + if (ptr) + *ptr = 0; + if (PyErr_Occurred()) + PyErr_Clear(); + res = SWIG_OK; + } + } + return res; +} + +/* Convert a function ptr value */ + +SWIGRUNTIME int +SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { + if (!PyCFunction_Check(obj)) { + return SWIG_ConvertPtr(obj, ptr, ty, 0); + } else { + void *vptr = 0; + + /* here we get the method pointer for callbacks */ + const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); + const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; + if (desc) + desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; + if (!desc) + return SWIG_ERROR; + if (ty) { + swig_cast_info *tc = SWIG_TypeCheck(desc,ty); + if (tc) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } else { + return SWIG_ERROR; + } + } else { + *ptr = vptr; + } + return SWIG_OK; + } +} + +/* Convert a packed value value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) { + swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz); + if (!to) return SWIG_ERROR; + if (ty) { + if (to != ty) { + /* check type cast? */ + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) return SWIG_ERROR; + } + } + return SWIG_OK; +} + +/* ----------------------------------------------------------------------------- + * Create a new pointer object + * ----------------------------------------------------------------------------- */ + +/* + Create a new instance object, without calling __init__, and set the + 'this' attribute. +*/ + +SWIGRUNTIME PyObject* +SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this) +{ +#if (PY_VERSION_HEX >= 0x02020000) + PyObject *inst = 0; + PyObject *newraw = data->newraw; + if (newraw) { + inst = PyObject_Call(newraw, data->newargs, NULL); + if (inst) { +#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + PyDict_SetItem(dict, SWIG_This(), swig_this); + } + } +#else + PyObject *key = SWIG_This(); + PyObject_SetAttr(inst, key, swig_this); +#endif + } + } else { +#if PY_VERSION_HEX >= 0x03000000 + inst = ((PyTypeObject*) data->newargs)->tp_new((PyTypeObject*) data->newargs, Py_None, Py_None); + if (inst) { + PyObject_SetAttr(inst, SWIG_This(), swig_this); + Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG; + } +#else + PyObject *dict = PyDict_New(); + if (dict) { + PyDict_SetItem(dict, SWIG_This(), swig_this); + inst = PyInstance_NewRaw(data->newargs, dict); + Py_DECREF(dict); + } +#endif + } + return inst; +#else +#if (PY_VERSION_HEX >= 0x02010000) + PyObject *inst = 0; + PyObject *dict = PyDict_New(); + if (dict) { + PyDict_SetItem(dict, SWIG_This(), swig_this); + inst = PyInstance_NewRaw(data->newargs, dict); + Py_DECREF(dict); + } + return (PyObject *) inst; +#else + PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type); + if (inst == NULL) { + return NULL; + } + inst->in_class = (PyClassObject *)data->newargs; + Py_INCREF(inst->in_class); + inst->in_dict = PyDict_New(); + if (inst->in_dict == NULL) { + Py_DECREF(inst); + return NULL; + } +#ifdef Py_TPFLAGS_HAVE_WEAKREFS + inst->in_weakreflist = NULL; +#endif +#ifdef Py_TPFLAGS_GC + PyObject_GC_Init(inst); +#endif + PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this); + return (PyObject *) inst; +#endif +#endif +} + +SWIGRUNTIME void +SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) +{ + PyObject *dict; +#if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + } + PyDict_SetItem(dict, SWIG_This(), swig_this); + return; + } +#endif + dict = PyObject_GetAttrString(inst, (char*)"__dict__"); + PyDict_SetItem(dict, SWIG_This(), swig_this); + Py_DECREF(dict); +} + + +SWIGINTERN PyObject * +SWIG_Python_InitShadowInstance(PyObject *args) { + PyObject *obj[2]; + if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) { + return NULL; + } else { + SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]); + if (sthis) { + SwigPyObject_append((PyObject*) sthis, obj[1]); + } else { + SWIG_Python_SetSwigThis(obj[0], obj[1]); + } + return SWIG_Py_Void(); + } +} + +/* Create a new pointer object */ + +SWIGRUNTIME PyObject * +SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) { + SwigPyClientData *clientdata; + PyObject * robj; + int own; + + if (!ptr) + return SWIG_Py_Void(); + + clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0; + own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; + if (clientdata && clientdata->pytype) { + SwigPyObject *newobj; + if (flags & SWIG_BUILTIN_TP_INIT) { + newobj = (SwigPyObject*) self; + if (newobj->ptr) { + PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0); + while (newobj->next) + newobj = (SwigPyObject *) newobj->next; + newobj->next = next_self; + newobj = (SwigPyObject *)next_self; + newobj->parent = 0; +#ifdef SWIGPYTHON_BUILTIN + newobj->dict = 0; +#endif + } + } else { + newobj = PyObject_New(SwigPyObject, clientdata->pytype); + newobj->parent = 0; +#ifdef SWIGPYTHON_BUILTIN + newobj->dict = 0; +#endif + } + if (newobj) { + newobj->ptr = ptr; + newobj->ty = type; + newobj->own = own; + newobj->next = 0; + return (PyObject*) newobj; + } + return SWIG_Py_Void(); + } + + assert(!(flags & SWIG_BUILTIN_TP_INIT)); + + robj = SwigPyObject_New(ptr, type, own); + if (robj && clientdata && !(flags & SWIG_POINTER_NOSHADOW)) { + PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj); + Py_DECREF(robj); + robj = inst; + } + return robj; +} + +/* Create a new packed object */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { + return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void(); +} + +/* -----------------------------------------------------------------------------* + * Get type list + * -----------------------------------------------------------------------------*/ + +#ifdef SWIG_LINK_RUNTIME +void *SWIG_ReturnGlobalTypeList(void *); +#endif + +SWIGRUNTIME swig_module_info * +SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { + static void *type_pointer = (void *)0; + /* first check if module already created */ + if (!type_pointer) { +#ifdef SWIG_LINK_RUNTIME + type_pointer = SWIG_ReturnGlobalTypeList((void *)0); +#else +# ifdef SWIGPY_USE_CAPSULE + type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); +# else + type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, + (char*)"type_pointer" SWIG_TYPE_TABLE_NAME); +# endif + if (PyErr_Occurred()) { + PyErr_Clear(); + type_pointer = (void *)0; + } +#endif + } + return (swig_module_info *) type_pointer; +} + +#if PY_MAJOR_VERSION < 2 +/* PyModule_AddObject function was introduced in Python 2.0. The following function + is copied out of Python/modsupport.c in python version 2.3.4 */ +SWIGINTERN int +PyModule_AddObject(PyObject *m, char *name, PyObject *o) +{ + PyObject *dict; + if (!PyModule_Check(m)) { + PyErr_SetString(PyExc_TypeError, "PyModule_AddObject() needs module as first arg"); + return SWIG_ERROR; + } + if (!o) { + PyErr_SetString(PyExc_TypeError, "PyModule_AddObject() needs non-NULL value"); + return SWIG_ERROR; + } + + dict = PyModule_GetDict(m); + if (dict == NULL) { + /* Internal error -- modules must have a dict! */ + PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__", + PyModule_GetName(m)); + return SWIG_ERROR; + } + if (PyDict_SetItemString(dict, name, o)) + return SWIG_ERROR; + Py_DECREF(o); + return SWIG_OK; +} +#endif + +SWIGRUNTIME void +#ifdef SWIGPY_USE_CAPSULE +SWIG_Python_DestroyModule(PyObject *obj) +#else +SWIG_Python_DestroyModule(void *vptr) +#endif +{ +#ifdef SWIGPY_USE_CAPSULE + swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME); +#else + swig_module_info *swig_module = (swig_module_info *) vptr; +#endif + swig_type_info **types = swig_module->types; + size_t i; + for (i =0; i < swig_module->size; ++i) { + swig_type_info *ty = types[i]; + if (ty->owndata) { + SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; + if (data) SwigPyClientData_Del(data); + } + } + Py_DECREF(SWIG_This()); + swig_this = NULL; +} + +SWIGRUNTIME void +SWIG_Python_SetModule(swig_module_info *swig_module) { +#if PY_VERSION_HEX >= 0x03000000 + /* Add a dummy module object into sys.modules */ + PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION); +#else + static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ + PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table); +#endif +#ifdef SWIGPY_USE_CAPSULE + PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule); + if (pointer && module) { + PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer); + } else { + Py_XDECREF(pointer); + } +#else + PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule); + if (pointer && module) { + PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer); + } else { + Py_XDECREF(pointer); + } +#endif +} + +/* The python cached type query */ +SWIGRUNTIME PyObject * +SWIG_Python_TypeCache(void) { + static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New(); + return cache; +} + +SWIGRUNTIME swig_type_info * +SWIG_Python_TypeQuery(const char *type) +{ + PyObject *cache = SWIG_Python_TypeCache(); + PyObject *key = SWIG_Python_str_FromChar(type); + PyObject *obj = PyDict_GetItem(cache, key); + swig_type_info *descriptor; + if (obj) { +#ifdef SWIGPY_USE_CAPSULE + descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL); +#else + descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj); +#endif + } else { + swig_module_info *swig_module = SWIG_GetModule(0); + descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type); + if (descriptor) { +#ifdef SWIGPY_USE_CAPSULE + obj = PyCapsule_New((void*) descriptor, NULL, NULL); +#else + obj = PyCObject_FromVoidPtr(descriptor, NULL); +#endif + PyDict_SetItem(cache, key, obj); + Py_DECREF(obj); + } + } + Py_DECREF(key); + return descriptor; +} + +/* + For backward compatibility only +*/ +#define SWIG_POINTER_EXCEPTION 0 +#define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) +#define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) + +SWIGRUNTIME int +SWIG_Python_AddErrMesg(const char* mesg, int infront) +{ + if (PyErr_Occurred()) { + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + PyErr_Fetch(&type, &value, &traceback); + if (value) { + char *tmp; + PyObject *old_str = PyObject_Str(value); + Py_XINCREF(type); + PyErr_Clear(); + if (infront) { + PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str)); + } else { + PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); + } + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(old_str); + } + return 1; + } else { + return 0; + } +} + +SWIGRUNTIME int +SWIG_Python_ArgFail(int argnum) +{ + if (PyErr_Occurred()) { + /* add information about failing argument */ + char mesg[256]; + PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); + return SWIG_Python_AddErrMesg(mesg, 1); + } else { + return 0; + } +} + +SWIGRUNTIMEINLINE const char * +SwigPyObject_GetDesc(PyObject *self) +{ + SwigPyObject *v = (SwigPyObject *)self; + swig_type_info *ty = v ? v->ty : 0; + return ty ? ty->str : ""; +} + +SWIGRUNTIME void +SWIG_Python_TypeError(const char *type, PyObject *obj) +{ + if (type) { +#if defined(SWIG_COBJECT_TYPES) + if (obj && SwigPyObject_Check(obj)) { + const char *otype = (const char *) SwigPyObject_GetDesc(obj); + if (otype) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received", + type, otype); + return; + } + } else +#endif + { + const char *otype = (obj ? obj->ob_type->tp_name : 0); + if (otype) { + PyObject *str = PyObject_Str(obj); + const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0; + if (cstr) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", + type, otype, cstr); + SWIG_Python_str_DelForPy3(cstr); + } else { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", + type, otype); + } + Py_XDECREF(str); + return; + } + } + PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); + } else { + PyErr_Format(PyExc_TypeError, "unexpected type is received"); + } +} + + +/* Convert a pointer value, signal an exception on a type mismatch */ +SWIGRUNTIME void * +SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) { + void *result; + if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { + PyErr_Clear(); +#if SWIG_POINTER_EXCEPTION + if (flags) { + SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); + SWIG_Python_ArgFail(argnum); + } +#endif + } + return result; +} + +#ifdef SWIGPYTHON_BUILTIN +SWIGRUNTIME int +SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) { + PyTypeObject *tp = obj->ob_type; + PyObject *descr; + PyObject *encoded_name; + descrsetfunc f; + int res = -1; + +# ifdef Py_USING_UNICODE + if (PyString_Check(name)) { + name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL); + if (!name) + return -1; + } else if (!PyUnicode_Check(name)) +# else + if (!PyString_Check(name)) +# endif + { + PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name); + return -1; + } else { + Py_INCREF(name); + } + + if (!tp->tp_dict) { + if (PyType_Ready(tp) < 0) + goto done; + } + + descr = _PyType_Lookup(tp, name); + f = NULL; + if (descr != NULL) + f = descr->ob_type->tp_descr_set; + if (!f) { + if (PyString_Check(name)) { + encoded_name = name; + Py_INCREF(name); + } else { + encoded_name = PyUnicode_AsUTF8String(name); + } + PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name)); + Py_DECREF(encoded_name); + } else { + res = f(descr, obj, value); + } + + done: + Py_DECREF(name); + return res; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyruntime.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyruntime.swg new file mode 100644 index 000000000..fad97be9f --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyruntime.swg @@ -0,0 +1,22 @@ +%insert(runtime) %{ +#if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) +/* Use debug wrappers with the Python release dll */ +# undef _DEBUG +# include <Python.h> +# define _DEBUG +#else +# include <Python.h> +#endif +%} + +%insert(runtime) "swigrun.swg"; /* SWIG API */ +%insert(runtime) "swigerrors.swg"; /* SWIG errors */ +%insert(runtime) "pyhead.swg"; /* Python includes and fixes */ +%insert(runtime) "pyerrors.swg"; /* Python errors */ +%insert(runtime) "pythreads.swg"; /* Python thread code */ +%insert(runtime) "pyapi.swg"; /* Python API */ +%insert(runtime) "pyrun.swg"; /* Python run-time code */ + +#if defined(SWIGPYTHON_BUILTIN) +%insert(runtime) "builtin.swg"; /* Specialization for classes with single inheritance */ +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pystdcommon.swg b/qrenderdoc/3rdparty/swig/Lib/python/pystdcommon.swg new file mode 100644 index 000000000..8372426a0 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pystdcommon.swg @@ -0,0 +1,261 @@ +%fragment("StdTraits","header",fragment="StdTraitsCommon") +{ +namespace swig { + /* + Traits that provides the from method + */ + template <class Type> struct traits_from_ptr { + static PyObject *from(Type *val, int owner = 0) { + return SWIG_InternalNewPointerObj(val, type_info<Type>(), owner); + } + }; + + template <class Type> struct traits_from { + static PyObject *from(const Type& val) { + return traits_from_ptr<Type>::from(new Type(val), 1); + } + }; + + template <class Type> struct traits_from<Type *> { + static PyObject *from(Type* val) { + return traits_from_ptr<Type>::from(val, 0); + } + }; + + template <class Type> struct traits_from<const Type *> { + static PyObject *from(const Type* val) { + return traits_from_ptr<Type>::from(const_cast<Type*>(val), 0); + } + }; + + + template <class Type> + inline PyObject *from(const Type& val) { + return traits_from<Type>::from(val); + } + + template <class Type> + inline PyObject *from_ptr(Type* val, int owner) { + return traits_from_ptr<Type>::from(val, owner); + } + + /* + Traits that provides the asval/as/check method + */ + template <class Type> + struct traits_asptr { + static int asptr(PyObject *obj, Type **val) { + Type *p; + swig_type_info *descriptor = type_info<Type>(); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template <class Type> + inline int asptr(PyObject *obj, Type **vptr) { + return traits_asptr<Type>::asptr(obj, vptr); + } + + template <class Type> + struct traits_asval { + static int asval(PyObject *obj, Type *val) { + if (val) { + Type *p = 0; + int res = traits_asptr<Type>::asptr(obj, &p); + if (!SWIG_IsOK(res)) return res; + if (p) { + typedef typename noconst_traits<Type>::noconst_type noconst_type; + *(const_cast<noconst_type*>(val)) = *p; + if (SWIG_IsNewObj(res)){ + %delete(p); + res = SWIG_DelNewMask(res); + } + return res; + } else { + return SWIG_ERROR; + } + } else { + return traits_asptr<Type>::asptr(obj, (Type **)(0)); + } + } + }; + + template <class Type> struct traits_asval<Type*> { + static int asval(PyObject *obj, Type **val) { + if (val) { + typedef typename noconst_traits<Type>::noconst_type noconst_type; + noconst_type *p = 0; + int res = traits_asptr<noconst_type>::asptr(obj, &p); + if (SWIG_IsOK(res)) { + *(const_cast<noconst_type**>(val)) = p; + } + return res; + } else { + return traits_asptr<Type>::asptr(obj, (Type **)(0)); + } + } + }; + + template <class Type> + inline int asval(PyObject *obj, Type *val) { + return traits_asval<Type>::asval(obj, val); + } + + template <class Type> + struct traits_as<Type, value_category> { + static Type as(PyObject *obj, bool throw_error) { + Type v; + int res = asval(obj, &v); + if (!obj || !SWIG_IsOK(res)) { + if (!PyErr_Occurred()) { + ::%type_error(swig::type_name<Type>()); + } + if (throw_error) throw std::invalid_argument("bad type"); + } + return v; + } + }; + + template <class Type> + struct traits_as<Type, pointer_category> { + static Type as(PyObject *obj, bool throw_error) { + Type *v = 0; + int res = (obj ? traits_asptr<Type>::asptr(obj, &v) : SWIG_ERROR); + if (SWIG_IsOK(res) && v) { + if (SWIG_IsNewObj(res)) { + Type r(*v); + %delete(v); + return r; + } else { + return *v; + } + } else { + // Uninitialized return value, no Type() constructor required. + static Type *v_def = (Type*) malloc(sizeof(Type)); + if (!PyErr_Occurred()) { + %type_error(swig::type_name<Type>()); + } + if (throw_error) throw std::invalid_argument("bad type"); + memset(v_def,0,sizeof(Type)); + return *v_def; + } + } + }; + + template <class Type> + struct traits_as<Type*, pointer_category> { + static Type* as(PyObject *obj, bool throw_error) { + Type *v = 0; + int res = (obj ? traits_asptr<Type>::asptr(obj, &v) : SWIG_ERROR); + if (SWIG_IsOK(res)) { + return v; + } else { + if (!PyErr_Occurred()) { + %type_error(swig::type_name<Type>()); + } + if (throw_error) throw std::invalid_argument("bad type"); + return 0; + } + } + }; + + template <class Type> + inline Type as(PyObject *obj, bool te = false) { + return traits_as<Type, typename traits<Type>::category>::as(obj, te); + } + + template <class Type> + struct traits_check<Type, value_category> { + static bool check(PyObject *obj) { + int res = obj ? asval(obj, (Type *)(0)) : SWIG_ERROR; + return SWIG_IsOK(res) ? true : false; + } + }; + + template <class Type> + struct traits_check<Type, pointer_category> { + static bool check(PyObject *obj) { + int res = obj ? asptr(obj, (Type **)(0)) : SWIG_ERROR; + return SWIG_IsOK(res) ? true : false; + } + }; + + template <class Type> + inline bool check(PyObject *obj) { + return traits_check<Type, typename traits<Type>::category>::check(obj); + } +} +} + +// +// Backward compatibility +// + +#ifdef SWIG_PYTHON_BACKWARD_COMP +%fragment("<string>"); +%{ +PyObject* SwigInt_FromBool(bool b) { + return PyInt_FromLong(b ? 1L : 0L); +} +double SwigNumber_Check(PyObject* o) { + return PyFloat_Check(o) || PyInt_Check(o) || PyLong_Check(o); +} +double SwigNumber_AsDouble(PyObject* o) { + return PyFloat_Check(o) ? PyFloat_AsDouble(o) + : (PyInt_Check(o) ? double(PyInt_AsLong(o)) + : double(PyLong_AsLong(o))); +} +PyObject* SwigString_FromString(const std::string& s) { + return PyString_FromStringAndSize(s.data(),s.size()); +} +std::string SwigString_AsString(PyObject* o) { + return std::string(PyString_AsString(o)); +} +%} + +#endif + + +%define %specialize_std_container(Type,Check,As,From) +%{ +namespace swig { + template <> struct traits_asval<Type > { + typedef Type value_type; + static int asval(PyObject *obj, value_type *val) { + if (Check(obj)) { + if (val) *val = As(obj); + return SWIG_OK; + } + return SWIG_ERROR; + } + }; + template <> struct traits_from<Type > { + typedef Type value_type; + static PyObject *from(const value_type& val) { + return From(val); + } + }; + + template <> + struct traits_check<Type, value_category> { + static int check(PyObject *obj) { + int res = Check(obj); + return obj && res ? res : 0; + } + }; +} +%} +%enddef + + +#define specialize_std_vector(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_list(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_deque(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_set(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_multiset(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_unordered_set(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) +#define specialize_std_unordered_multiset(Type,Check,As,From) %specialize_std_container(%arg(Type),Check,As,From) diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pystrings.swg b/qrenderdoc/3rdparty/swig/Lib/python/pystrings.swg new file mode 100644 index 000000000..fd37855eb --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pystrings.swg @@ -0,0 +1,147 @@ +/* ------------------------------------------------------------ + * utility methods for char strings + * ------------------------------------------------------------ */ +%fragment("SWIG_AsCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERN int +SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) +{ +%#if PY_VERSION_HEX>=0x03000000 +%#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + if (PyBytes_Check(obj)) +%#else + if (PyUnicode_Check(obj)) +%#endif +%#else + if (PyString_Check(obj)) +%#endif + { + char *cstr; Py_ssize_t len; +%#if PY_VERSION_HEX>=0x03000000 +%#if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + if (!alloc && cptr) { + /* We can't allow converting without allocation, since the internal + representation of string in Python 3 is UCS-2/UCS-4 but we require + a UTF-8 representation. + TODO(bhy) More detailed explanation */ + return SWIG_RuntimeError; + } + obj = PyUnicode_AsUTF8String(obj); + if(alloc) *alloc = SWIG_NEWOBJ; +%#endif + PyBytes_AsStringAndSize(obj, &cstr, &len); +%#else + PyString_AsStringAndSize(obj, &cstr, &len); +%#endif + if (cptr) { + if (alloc) { + /* + In python the user should not be able to modify the inner + string representation. To warranty that, if you define + SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string + buffer is always returned. + + The default behavior is just to return the pointer value, + so, be careful. + */ +%#if defined(SWIG_PYTHON_SAFE_CSTRINGS) + if (*alloc != SWIG_OLDOBJ) +%#else + if (*alloc == SWIG_NEWOBJ) +%#endif + { + *cptr = %new_copy_array(cstr, len + 1, char); + *alloc = SWIG_NEWOBJ; + } else { + *cptr = cstr; + *alloc = SWIG_OLDOBJ; + } + } else { +%#if PY_VERSION_HEX>=0x03000000 +%#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + *cptr = PyBytes_AsString(obj); +%#else + assert(0); /* Should never reach here with Unicode strings in Python 3 */ +%#endif +%#else + *cptr = SWIG_Python_str_AsChar(obj); +%#endif + } + } + if (psize) *psize = len + 1; +%#if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + Py_XDECREF(obj); +%#endif + return SWIG_OK; + } else { +%#if defined(SWIG_PYTHON_2_UNICODE) +%#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) +%#error "Cannot use both SWIG_PYTHON_2_UNICODE and SWIG_PYTHON_STRICT_BYTE_CHAR at once" +%#endif +%#if PY_VERSION_HEX<0x03000000 + if (PyUnicode_Check(obj)) { + char *cstr; Py_ssize_t len; + if (!alloc && cptr) { + return SWIG_RuntimeError; + } + obj = PyUnicode_AsUTF8String(obj); + if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) { + if (cptr) { + if (alloc) *alloc = SWIG_NEWOBJ; + *cptr = %new_copy_array(cstr, len + 1, char); + } + if (psize) *psize = len + 1; + + Py_XDECREF(obj); + return SWIG_OK; + } else { + Py_XDECREF(obj); + } + } +%#endif +%#endif + + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + void* vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (char *) vptr; + if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} +} + +%fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERNINLINE PyObject * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + return pchar_descriptor ? + SWIG_InternalNewPointerObj(%const_cast(carray,char *), pchar_descriptor, 0) : SWIG_Py_Void(); + } else { +%#if PY_VERSION_HEX >= 0x03000000 +%#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + return PyBytes_FromStringAndSize(carray, %numeric_cast(size, Py_ssize_t)); +%#else +%#if PY_VERSION_HEX >= 0x03010000 + return PyUnicode_DecodeUTF8(carray, %numeric_cast(size, Py_ssize_t), "surrogateescape"); +%#else + return PyUnicode_FromStringAndSize(carray, %numeric_cast(size, Py_ssize_t)); +%#endif +%#endif +%#else + return PyString_FromStringAndSize(carray, %numeric_cast(size, Py_ssize_t)); +%#endif + } + } else { + return SWIG_Py_Void(); + } +} +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/python.swg b/qrenderdoc/3rdparty/swig/Lib/python/python.swg new file mode 100644 index 000000000..769d9e104 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/python.swg @@ -0,0 +1,59 @@ +/* ------------------------------------------------------------ + * python.swg + * + * Python configuration module. + * ------------------------------------------------------------ */ + +/* ------------------------------------------------------------ + * Inner macros + * ------------------------------------------------------------ */ +%include <pymacros.swg> + + +/* ------------------------------------------------------------ + * The runtime part + * ------------------------------------------------------------ */ +%include <pyruntime.swg> + +/* ------------------------------------------------------------ + * Special user directives + * ------------------------------------------------------------ */ +%include <pyuserdir.swg> + +/* ------------------------------------------------------------ + * Typemap specializations + * ------------------------------------------------------------ */ +%include <pytypemaps.swg> + +/* ------------------------------------------------------------ + * Overloaded operator support + * ------------------------------------------------------------ */ +%include <pyopers.swg> + +/* ------------------------------------------------------------ + * Warnings for Python keywords + * ------------------------------------------------------------ */ +%include <pythonkw.swg> + +/* ------------------------------------------------------------ + * The Python autodoc support + * ------------------------------------------------------------ */ +%include <pydocs.swg> + +/* ------------------------------------------------------------ + * The Python classes, for C++ + * ------------------------------------------------------------ */ +%include <pyclasses.swg> + +/* ------------------------------------------------------------ + * The Python initialization function + * ------------------------------------------------------------ */ +%include <pyinit.swg> + + +/* ------------------------------------------------------------ + * For backward compatibility + * ------------------------------------------------------------ */ +%include <pybackward.swg> + + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pythonkw.swg b/qrenderdoc/3rdparty/swig/Lib/python/pythonkw.swg new file mode 100644 index 000000000..1a4329d20 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pythonkw.swg @@ -0,0 +1,138 @@ +/* + Warnings for Python keywords, built-in names and bad names. +*/ + +#define PYTHONKW(x) %keywordwarn("'" `x` "' is a python keyword, renaming to '_" `x` "'", rename="_%s") `x` +#define PYTHONBN(x) %builtinwarn("'" `x` "' conflicts with a built-in name in python") `x` + + +/* + Warnings for Python keywords + https://docs.python.org/2/reference/lexical_analysis.html#keywords +*/ + +PYTHONKW(and); +PYTHONKW(as); +PYTHONKW(assert); +PYTHONKW(break); +PYTHONKW(class); +PYTHONKW(continue); +PYTHONKW(def); +PYTHONKW(del); +PYTHONKW(elif); +PYTHONKW(else); +PYTHONKW(except); +PYTHONKW(exec); +PYTHONKW(finally); +PYTHONKW(for); +PYTHONKW(from); +PYTHONKW(global); +PYTHONKW(if); +PYTHONKW(import); +PYTHONKW(in); +PYTHONKW(is); +PYTHONKW(lambda); +PYTHONKW(not); +PYTHONKW(or); +PYTHONKW(pass); +PYTHONKW(print); +PYTHONKW(raise); +PYTHONKW(return); +PYTHONKW(try); +PYTHONKW(while); +PYTHONKW(with); +PYTHONKW(yield); + +/* + built-in functions + https://docs.python.org/2/library/functions.html + */ + +PYTHONBN(abs); +PYTHONBN(apply); +PYTHONBN(bool); +PYTHONBN(buffer); +PYTHONBN(callable); +PYTHONBN(chr); +PYTHONBN(classmethod); +PYTHONBN(cmp); +PYTHONBN(coerce); +PYTHONBN(compile); +PYTHONBN(complex); +PYTHONBN(delattr); +PYTHONBN(dict); +PYTHONBN(dir); +PYTHONBN(divmod); +PYTHONBN(enumerate); +PYTHONBN(eval); +PYTHONBN(execfile); +PYTHONBN(file); +PYTHONBN(filter); +PYTHONBN(float); +PYTHONBN(frozenset); +PYTHONBN(getattr); +PYTHONBN(globals); +PYTHONBN(hasattr); +PYTHONBN(hash); +PYTHONBN(hex); +PYTHONBN(id); +PYTHONBN(input); +PYTHONBN(int); +PYTHONBN(intern); +PYTHONBN(isinstance); +PYTHONBN(issubclass); +PYTHONBN(iter); +PYTHONBN(len); +PYTHONBN(list); +PYTHONBN(locals); +PYTHONBN(long); +PYTHONBN(map); +PYTHONBN(max); +PYTHONBN(min); +PYTHONBN(object); +PYTHONBN(oct); +PYTHONBN(open); +PYTHONBN(ord); +PYTHONBN(pow); +PYTHONBN(property); +PYTHONBN(range); +PYTHONBN(raw_input); +PYTHONBN(reduce); +PYTHONBN(reload); +PYTHONBN(repr); +PYTHONBN(reversed); +PYTHONBN(round); +PYTHONBN(set); +PYTHONBN(setattr); +PYTHONBN(slice); +PYTHONBN(sorted); +PYTHONBN(staticmethod); +PYTHONBN(str); +PYTHONBN(sum); +PYTHONBN(super); +PYTHONBN(tuple); +PYTHONBN(type); +PYTHONBN(unichr); +PYTHONBN(unicode); +PYTHONBN(vars); +PYTHONBN(xrange); +PYTHONBN(zip); + + +/* + built-in names + boolean type and None +*/ +PYTHONBN(True); +PYTHONBN(False); + +PYTHONKW(None); + + +/* + 'self' is also a bad Name +*/ +PYTHONKW(self); + +#undef PYTHONBN +#undef PYTHONKW diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pythreads.swg b/qrenderdoc/3rdparty/swig/Lib/python/pythreads.swg new file mode 100644 index 000000000..a7552f1fe --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pythreads.swg @@ -0,0 +1,66 @@ +#if defined(SWIG_PYTHON_NO_THREADS) +# if defined(SWIG_PYTHON_THREADS) +# undef SWIG_PYTHON_THREADS +# endif +#endif +#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */ +# if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL) +# if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */ +# define SWIG_PYTHON_USE_GIL +# endif +# endif +# if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */ +# ifndef SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() +# endif +# ifdef __cplusplus /* C++ code */ + class SWIG_Python_Thread_Block { + bool status; + PyGILState_STATE state; + public: + void end() { if (status) { PyGILState_Release(state); status = false;} } + SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {} + ~SWIG_Python_Thread_Block() { end(); } + }; + class SWIG_Python_Thread_Allow { + bool status; + PyThreadState *save; + public: + void end() { if (status) { PyEval_RestoreThread(save); status = false; }} + SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {} + ~SWIG_Python_Thread_Allow() { end(); } + }; +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block +# define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end() +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow +# define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end() +# else /* C code */ +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure() +# define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread() +# define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow) +# endif +# else /* Old thread way, not implemented, user must provide it */ +# if !defined(SWIG_PYTHON_INITIALIZE_THREADS) +# define SWIG_PYTHON_INITIALIZE_THREADS +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_END_BLOCK) +# define SWIG_PYTHON_THREAD_END_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# endif +# if !defined(SWIG_PYTHON_THREAD_END_ALLOW) +# define SWIG_PYTHON_THREAD_END_ALLOW +# endif +# endif +#else /* No thread support */ +# define SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# define SWIG_PYTHON_THREAD_END_BLOCK +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# define SWIG_PYTHON_THREAD_END_ALLOW +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pytuplehlp.swg b/qrenderdoc/3rdparty/swig/Lib/python/pytuplehlp.swg new file mode 100644 index 000000000..32e158035 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pytuplehlp.swg @@ -0,0 +1,8 @@ +/* + Helper function to return output types, now we need to use a list + instead of a tuple since all the other types + (std::pair,std::vector,std::list,etc) return tuples. +*/ + +#warning "Deprecated file: Don't use t_output_helper anymore," +#warning "use SWIG_Python_AppendOutput or %append_output instead." diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pytypemaps.swg b/qrenderdoc/3rdparty/swig/Lib/python/pytypemaps.swg new file mode 100644 index 000000000..48b0bcdc8 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pytypemaps.swg @@ -0,0 +1,105 @@ +/* ------------------------------------------------------------ + * Typemap specializations for Python + * ------------------------------------------------------------ */ + +/* ------------------------------------------------------------ + * Fragment section + * ------------------------------------------------------------ */ +#ifdef SWIG_PYTHON_LEGACY_BOOL +// Default prior to SWIG 3.0.0 +#undef SWIG_TYPECHECK_BOOL +%define SWIG_TYPECHECK_BOOL 10000 %enddef +#endif + +/* Include fundamental fragment definitions */ +%include <typemaps/fragments.swg> + +/* Look for user fragments file. */ +%include <pyfragments.swg> + +/* Python fragments for fundamental types */ +%include <pyprimtypes.swg> + +/* Python fragments for char* strings */ +%include <pystrings.swg> + +/* Backward compatibility output helper */ +%fragment("t_output_helper","header") %{ +#define t_output_helper SWIG_Python_AppendOutput +%} + + +/* ------------------------------------------------------------ + * Unified typemap section + * ------------------------------------------------------------ */ + +/* directors are supported in Python */ +#ifndef SWIG_DIRECTOR_TYPEMAPS +#define SWIG_DIRECTOR_TYPEMAPS +#endif + + +/* Python types */ +#define SWIG_Object PyObject * +#define VOID_Object SWIG_Py_Void() + +/* Python allows implicit conversion */ +#define %implicitconv_flag $implicitconv + + +/* Overload of the output/constant/exception/dirout handling */ + +/* append output */ +#define SWIG_AppendOutput(result, obj) SWIG_Python_AppendOutput(result, obj) + +/* set constant */ +#if defined(SWIGPYTHON_BUILTIN) +#define SWIG_SetConstant(name, obj) SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, name,obj) +#else +#define SWIG_SetConstant(name, obj) SWIG_Python_SetConstant(d, name,obj) +#endif + +/* raise */ +#define SWIG_Raise(obj, type, desc) SWIG_Python_Raise(obj, type, desc) + +/* Include the unified typemap library */ +%include <typemaps/swigtypemaps.swg> + + +/* ------------------------------------------------------------ + * Python extra typemaps / typemap overrides + * ------------------------------------------------------------ */ + +/* Get the address of the 'python self' object */ + +%typemap(in,numinputs=0,noblock=1) PyObject **PYTHON_SELF { + $1 = &$self; +} + + +/* Consttab, needed for callbacks, it should be removed later */ + +%typemap(consttab) SWIGTYPE ((*)(ANY)) +{ SWIG_PY_POINTER, (char*)"$symname", 0, 0, (void *)($value), &$descriptor } +%typemap(consttab) SWIGTYPE ((* const)(ANY)) = SWIGTYPE ((*)(ANY)); + +%typemap(constcode) SWIGTYPE ((*)(ANY)) ""; +%typemap(constcode) SWIGTYPE ((* const)(ANY)) = SWIGTYPE ((*)(ANY)); + + +/* Smart Pointers */ +%typemap(out,noblock=1) const SWIGTYPE & SMARTPOINTER { + $result = SWIG_NewPointerObj(%new_copy(*$1, $*ltype), $descriptor, SWIG_POINTER_OWN | %newpointer_flags); +} + +%typemap(ret,noblock=1) const SWIGTYPE & SMARTPOINTER, SWIGTYPE SMARTPOINTER { + if ($result) { + PyObject *robj = PyObject_CallMethod($result, (char *)"__deref__", NULL); + if (robj && !PyErr_Occurred()) { + SwigPyObject_append((PyObject *) SWIG_Python_GetSwigThis($result), + (PyObject *) SWIG_Python_GetSwigThis(robj)); + Py_DECREF(robj); + } + } +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pyuserdir.swg b/qrenderdoc/3rdparty/swig/Lib/python/pyuserdir.swg new file mode 100644 index 000000000..00aec07d5 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pyuserdir.swg @@ -0,0 +1,245 @@ +/* ------------------------------------------------------------------------- + * Special user directives + * ------------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------------- */ + +/* shadow code */ +#define %shadow %insert("shadow") +#define %pythoncode %insert("python") +#define %pythonbegin %insert("pythonbegin") + + +/* ------------------------------------------------------------------------- */ +/* +Use the "nondynamic" feature to make a wrapped class behave as a "nondynamic" +one, ie, a python class that doesn't dynamically add new attributes. + +For example, for the class + +%pythonnondynamic A; +struct A +{ + int a; + int b; +}; + +you will get: + + aa = A() + aa.a = 1 # Ok + aa.b = 1 # Ok + aa.c = 3 # error + +Since nondynamic is a feature, if you use it like + + %pythonnondynamic; + +it will make all the wrapped classes nondynamic ones. + +The implementation is based on this recipe: + + http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252158 + +and works for modern (-modern) and plain python. We do not use __slots__, +so, it works with old python versions. + +*/ + +#define %pythonnondynamic %feature("python:nondynamic", "1") +#define %nopythonnondynamic %feature("python:nondynamic", "0") +#define %clearpythonnondynamic %feature("python:nondynamic", "") +#define %pythondynamic %nopythonnondynamic + + +/* ------------------------------------------------------------------------- */ +/* + +Use %pythonmaybecall to flag a method like __add__ or __radd__. These +don't produce an error when called, they just return NotImplemented. + +These methods "may be called" if needed. + +*/ + +#define %pythonmaybecall %feature("python:maybecall", "1") +#define %nopythonmaybecall %feature("python:maybecall", "0") +#define %clearpythonmaybecall %feature("python:maybecall", "") + +/* ------------------------------------------------------------------------- */ +/* + The %pythoncallback feature produce a more natural callback wrapper + than the %callback mechanism, ie, it uses the original name for + the callback and callable objects. + + Just use it as + + %pythoncallback(1) foo; + int foo(int a); + + %pythoncallback(1) A::foo; + struct A { + static int foo(int a); + }; + + int bar(int, int (*pf)(int)); + + then, you can use it as: + + a = foo(1) + b = bar(2, foo) + + c = A.foo(3) + d = bar(4, A.foo) + + + If you use it with a member method + %pythoncallback(1) A::foom; + struct A { + int foom(int a); + }; + + then you can use it as + + r = a.foom(3) # eval the method + mptr = A.foom_cb_ptr # returns the callback pointer + + where the '_cb_ptr' suffix is added for the callback pointer. + +*/ + +#define %pythoncallback %feature("python:callback") +#define %nopythoncallback %feature("python:callback","0") +#define %clearpythoncallback %feature("python:callback","") + +/* ------------------------------------------------------------------------- */ +/* + Support for the old %callback directive name +*/ +#ifdef %callback +#undef %callback +#endif + +#ifdef %nocallback +#undef %nocallback +#endif + +#ifdef %clearcallback +#undef %clearcallback +#endif + +#define %callback(x) %feature("python:callback",`x`) +#define %nocallback %nopythoncallback +#define %clearcallback %clearpythoncallback + +/* ------------------------------------------------------------------------- */ +/* + Thread support - Advance control + +*/ + +#define %nothread %feature("nothread") +#define %thread %feature("nothread","0") +#define %clearnothread %feature("nothread","") + +#define %nothreadblock %feature("nothreadblock") +#define %threadblock %feature("nothreadblock","0") +#define %clearnothreadblock %feature("nothreadblock","") + +#define %nothreadallow %feature("nothreadallow") +#define %threadallow %feature("nothreadallow","0") +#define %clearnothreadallow %feature("nothreadallow","") + + +/* ------------------------------------------------------------------------- */ +/* + Implicit Conversion using the C++ constructor mechanism +*/ + +#define %implicitconv %feature("implicitconv") +#define %noimplicitconv %feature("implicitconv", "0") +#define %clearimplicitconv %feature("implicitconv", "") + + +/* ------------------------------------------------------------------------- */ +/* + Enable keywords paramaters +*/ + +#define %kwargs %feature("kwargs") +#define %nokwargs %feature("kwargs", "0") +#define %clearkwargs %feature("kwargs", "") + +/* ------------------------------------------------------------------------- */ +/* + Add python code to the proxy/shadow code + + %pythonprepend - Add code before the C++ function is called + %pythonappend - Add code after the C++ function is called +*/ + +#define %pythonprepend %feature("pythonprepend") +#define %clearpythonprepend %feature("pythonprepend","") + +#define %pythonappend %feature("pythonappend") +#define %clearpythonappend %feature("pythonappend","") + + +/* ------------------------------------------------------------------------- */ +/* + %extend_smart_pointer extend the smart pointer support. + + For example, if you have a smart pointer as: + + template <class Type> class RCPtr { + public: + ... + RCPtr(Type *p); + Type * operator->() const; + ... + }; + + you use the %extend_smart_pointer directive as: + + %extend_smart_pointer(RCPtr<A>); + %template(RCPtr_A) RCPtr<A>; + + then, if you have something like: + + RCPtr<A> make_ptr(); + int foo(A *); + + you can do the following: + + a = make_ptr(); + b = foo(a); + + ie, swig will accept a RCPtr<A> object where a 'A *' is + expected. + + Also, when using vectors + + %extend_smart_pointer(RCPtr<A>); + %template(RCPtr_A) RCPtr<A>; + %template(vector_A) std::vector<RCPtr<A> >; + + you can type + + a = A(); + v = vector_A(2) + v[0] = a + + ie, an 'A *' object is accepted, via implicit conversion, + where a RCPtr<A> object is expected. Additionally + + x = v[0] + + returns (and sets 'x' as) a copy of v[0], making reference + counting possible and consistent. +*/ + +%define %extend_smart_pointer(Type...) +%implicitconv Type; +%apply const SWIGTYPE& SMARTPOINTER { const Type& }; +%apply SWIGTYPE SMARTPOINTER { Type }; +%enddef diff --git a/qrenderdoc/3rdparty/swig/Lib/python/pywstrings.swg b/qrenderdoc/3rdparty/swig/Lib/python/pywstrings.swg new file mode 100644 index 000000000..e64618762 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/pywstrings.swg @@ -0,0 +1,69 @@ +/* ------------------------------------------------------------ + * utility methods for wchar_t strings + * ------------------------------------------------------------ */ + +%{ +#if PY_VERSION_HEX >= 0x03020000 +# define SWIGPY_UNICODE_ARG(obj) ((PyObject*) (obj)) +#else +# define SWIGPY_UNICODE_ARG(obj) ((PyUnicodeObject*) (obj)) +#endif +%} + +%fragment("SWIG_AsWCharPtrAndSize","header",fragment="<wchar.h>",fragment="SWIG_pwchar_descriptor") { +SWIGINTERN int +SWIG_AsWCharPtrAndSize(PyObject *obj, wchar_t **cptr, size_t *psize, int *alloc) +{ + PyObject *tmp = 0; + int isunicode = PyUnicode_Check(obj); +%#if PY_VERSION_HEX < 0x03000000 && !defined(SWIG_PYTHON_STRICT_UNICODE_WCHAR) + if (!isunicode && PyString_Check(obj)) { + obj = tmp = PyUnicode_FromObject(obj); + isunicode = 1; + } +%#endif + if (isunicode) { + Py_ssize_t len = PyUnicode_GetSize(obj); + if (cptr) { + *cptr = %new_array(len + 1, wchar_t); + PyUnicode_AsWideChar(SWIGPY_UNICODE_ARG(obj), *cptr, len); + (*cptr)[len] = 0; + } + if (psize) *psize = (size_t) len + 1; + if (alloc) *alloc = cptr ? SWIG_NEWOBJ : 0; + Py_XDECREF(tmp); + return SWIG_OK; + } else { + swig_type_info* pwchar_descriptor = SWIG_pwchar_descriptor(); + if (pwchar_descriptor) { + void * vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pwchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (wchar_t *)vptr; + if (psize) *psize = vptr ? (wcslen((wchar_t *)vptr) + 1) : 0; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} +} + +%fragment("SWIG_FromWCharPtrAndSize","header",fragment="<wchar.h>",fragment="SWIG_pwchar_descriptor") { +SWIGINTERNINLINE PyObject * +SWIG_FromWCharPtrAndSize(const wchar_t * carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + swig_type_info* pwchar_descriptor = SWIG_pwchar_descriptor(); + return pwchar_descriptor ? + SWIG_InternalNewPointerObj(%const_cast(carray,wchar_t *), pwchar_descriptor, 0) : SWIG_Py_Void(); + } else { + return PyUnicode_FromWideChar(carray, %numeric_cast(size, Py_ssize_t)); + } + } else { + return SWIG_Py_Void(); + } +} +} + + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_alloc.i b/qrenderdoc/3rdparty/swig/Lib/python/std_alloc.i new file mode 100644 index 000000000..35dc051be --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_alloc.i @@ -0,0 +1 @@ +%include <std/std_alloc.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_array.i b/qrenderdoc/3rdparty/swig/Lib/python/std_array.i new file mode 100644 index 000000000..a3de3125b --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_array.i @@ -0,0 +1,91 @@ +/* + std::array +*/ + +%fragment("StdArrayTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class T, size_t N> + struct traits_asptr<std::array<T, N> > { + static int asptr(PyObject *obj, std::array<T, N> **vec) { + return traits_asptr_stdseq<std::array<T, N> >::asptr(obj, vec); + } + }; + + template <class T, size_t N> + struct traits_from<std::array<T, N> > { + static PyObject *from(const std::array<T, N>& vec) { + return traits_from_stdseq<std::array<T, N> >::from(vec); + } + }; + + template <class SwigPySeq, class T, size_t N> + inline void + assign(const SwigPySeq& swigpyseq, std::array<T, N>* seq) { + if (swigpyseq.size() < seq->size()) + throw std::invalid_argument("std::array cannot be expanded in size"); + else if (swigpyseq.size() > seq->size()) + throw std::invalid_argument("std::array cannot be reduced in size"); + std::copy(swigpyseq.begin(), swigpyseq.end(), seq->begin()); + } + + template <class T, size_t N> + inline void + erase(std::array<T, N>* SWIGUNUSEDPARM(seq), const typename std::array<T, N>::iterator& SWIGUNUSEDPARM(position)) { + throw std::invalid_argument("std::array object does not support item deletion"); + } + + // Only limited slicing is supported as std::array is fixed in size + template <class T, size_t N, class Difference> + inline std::array<T, N>* + getslice(const std::array<T, N>* self, Difference i, Difference j, Py_ssize_t step) { + typedef std::array<T, N> Sequence; + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj); + + if (step == 1 && ii == 0 && static_cast<typename Sequence::size_type>(jj) == size) { + Sequence *sequence = new Sequence(); + std::copy(self->begin(), self->end(), sequence->begin()); + return sequence; + } else if (step == -1 && static_cast<typename Sequence::size_type>(ii) == (size - 1) && jj == -1) { + Sequence *sequence = new Sequence(); + std::copy(self->rbegin(), self->rend(), sequence->begin()); + return sequence; + } else { + throw std::invalid_argument("std::array object only supports getting a slice that is the size of the array"); + } + } + + template <class T, size_t N, class Difference, class InputSeq> + inline void + setslice(std::array<T, N>* self, Difference i, Difference j, Py_ssize_t step, const InputSeq& is = InputSeq()) { + typedef std::array<T, N> Sequence; + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj, true); + + if (step == 1 && ii == 0 && static_cast<typename Sequence::size_type>(jj) == size) { + std::copy(is.begin(), is.end(), self->begin()); + } else if (step == -1 && static_cast<typename Sequence::size_type>(ii) == (size - 1) && jj == -1) { + std::copy(is.rbegin(), is.rend(), self->begin()); + } else { + throw std::invalid_argument("std::array object only supports setting a slice that is the size of the array"); + } + } + + template <class T, size_t N, class Difference> + inline void + delslice(std::array<T, N>* SWIGUNUSEDPARM(self), Difference SWIGUNUSEDPARM(i), Difference SWIGUNUSEDPARM(j), Py_ssize_t SWIGUNUSEDPARM(step)) { + throw std::invalid_argument("std::array object does not support item deletion"); + } + } +%} + +#define %swig_array_methods(Type...) %swig_sequence_methods_non_resizable(Type) +#define %swig_array_methods_val(Type...) %swig_sequence_methods_non_resizable_val(Type); + +%include <std/std_array.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_auto_ptr.i b/qrenderdoc/3rdparty/swig/Lib/python/std_auto_ptr.i new file mode 100644 index 000000000..e310e00c8 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_auto_ptr.i @@ -0,0 +1,17 @@ +/* + The typemaps here allow to handle functions returning std::auto_ptr<>, + which is the most common use of this type. If you have functions taking it + as parameter, these typemaps can't be used for them and you need to do + something else (e.g. use shared_ptr<> which SWIG supports fully). + */ + +%define %auto_ptr(TYPE) +%typemap (out) std::auto_ptr<TYPE > %{ + %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags)); +%} +%template() std::auto_ptr<TYPE >; +%enddef + +namespace std { + template <class T> class auto_ptr {}; +} diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_basic_string.i b/qrenderdoc/3rdparty/swig/Lib/python/std_basic_string.i new file mode 100644 index 000000000..7d3366db5 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_basic_string.i @@ -0,0 +1,103 @@ +#if !defined(SWIG_STD_STRING) +#define SWIG_STD_BASIC_STRING + +%include <pycontainer.swg> + +#define %swig_basic_string(Type...) %swig_sequence_methods_val(Type) + + +%fragment(SWIG_AsPtr_frag(std::basic_string<char>),"header", + fragment="SWIG_AsCharPtrAndSize") { +SWIGINTERN int +SWIG_AsPtr(std::basic_string<char>)(PyObject* obj, std::string **val) +{ + static swig_type_info* string_info = + SWIG_TypeQuery("std::basic_string<char> *"); + std::string *vptr; + if (SWIG_ConvertPtr(obj, (void**)&vptr, string_info, 0) == SWIG_OK) { + if (val) *val = vptr; + return SWIG_OLDOBJ; + } else { + PyErr_Clear(); + char* buf = 0 ; size_t size = 0; int alloc = 0; + if (SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc) == SWIG_OK) { + if (buf) { + if (val) *val = new std::string(buf, size - 1); + if (alloc == SWIG_NEWOBJ) %delete_array(buf); + return SWIG_NEWOBJ; + } + } else { + PyErr_Clear(); + } + if (val) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_TypeError,"a string is expected"); + SWIG_PYTHON_THREAD_END_BLOCK; + } + return 0; + } +} +} + +%fragment(SWIG_From_frag(std::basic_string<char>),"header", + fragment="SWIG_FromCharPtrAndSize") { +SWIGINTERNINLINE PyObject* + SWIG_From(std::basic_string<char>)(const std::string& s) + { + return SWIG_FromCharPtrAndSize(s.data(), s.size()); + } +} + +%include <std/std_basic_string.i> +%typemaps_asptrfromn(%checkcode(STRING), std::basic_string<char>); + +#endif + + +#if !defined(SWIG_STD_WSTRING) + +%fragment(SWIG_AsPtr_frag(std::basic_string<wchar_t>),"header", + fragment="SWIG_AsWCharPtrAndSize") { +SWIGINTERN int + SWIG_AsPtr(std::basic_string<wchar_t>)(PyObject* obj, std::wstring **val) + { + static swig_type_info* string_info = + SWIG_TypeQuery("std::basic_string<wchar_t> *"); + std::wstring *vptr; + if (SWIG_ConvertPtr(obj, (void**)&vptr, string_info, 0) == SWIG_OK) { + if (val) *val = vptr; + return SWIG_OLDOBJ; + } else { + PyErr_Clear(); + wchar_t *buf = 0 ; size_t size = 0; int alloc = 0; + if (SWIG_AsWCharPtrAndSize(obj, &buf, &size, &alloc) == SWIG_OK) { + if (buf) { + if (val) *val = new std::wstring(buf, size - 1); + if (alloc == SWIG_NEWOBJ) %delete_array(buf); + return SWIG_NEWOBJ; + } + } else { + PyErr_Clear(); + } + if (val) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_TypeError,"a wstring is expected"); + SWIG_PYTHON_THREAD_END_BLOCK; + } + return 0; + } + } +} + +%fragment(SWIG_From_frag(std::basic_string<wchar_t>),"header", + fragment="SWIG_FromWCharPtrAndSize") { +SWIGINTERNINLINE PyObject* + SWIG_From(std::basic_string<wchar_t>)(const std::wstring& s) + { + return SWIG_FromWCharPtrAndSize(s.data(), s.size()); + } +} + +%typemaps_asptrfromn(%checkcode(UNISTRING), std::basic_string<wchar_t>); + +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_carray.i b/qrenderdoc/3rdparty/swig/Lib/python/std_carray.i new file mode 100644 index 000000000..680d67115 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_carray.i @@ -0,0 +1,54 @@ +%include <pycontainer.swg> + + +%fragment("StdCarrayTraits","header",fragment="StdSequenceTraits") +{ +namespace swig { + template <class T, size_t S> + struct traits_asptr<std::carray<T, S> > { + static int asptr(PyObject *obj, std::carray<T, S> **array) { + return traits_asptr_stdseq<std::carray<T, S> >::asptr(obj, array); + } + }; +} +} + +%warnfilter(SWIGWARN_IGNORE_OPERATOR_INDEX) std::carray::operator[]; + +%extend std::carray { + %fragment(SWIG_Traits_frag(std::carray<_Type, _Size >), "header", + fragment="SwigPyIterator_T", + fragment=SWIG_Traits_frag(_Type), + fragment="StdCarrayTraits") { + namespace swig { + template <> struct traits<std::carray<_Type, _Size > > { + typedef pointer_category category; + static const char* type_name() { + return "std::carray<" #_Type "," #_Size " >"; + } + }; + } + } + + %typemaps_asptr(SWIG_TYPECHECK_VECTOR, swig::asptr, + SWIG_Traits_frag(std::carray<_Type, _Size >), + std::carray<_Type, _Size >); + + %typemap(out,noblock=1) iterator, const_iterator { + $result = SWIG_NewPointerObj(swig::make_output_iterator((const $type &)$1), + swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); + } + + inline size_t __len__() const { return self->size(); } + + inline const _Type& __getitem__(size_t i) const { return (*self)[i]; } + + inline void __setitem__(size_t i, const _Type& v) { (*self)[i] = v; } + + + swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF) { + return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } +} + +%include <std/std_carray.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_char_traits.i b/qrenderdoc/3rdparty/swig/Lib/python/std_char_traits.i new file mode 100644 index 000000000..bf4e6c47d --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_char_traits.i @@ -0,0 +1 @@ +%include <std/std_char_traits.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_common.i b/qrenderdoc/3rdparty/swig/Lib/python/std_common.i new file mode 100644 index 000000000..605766238 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_common.i @@ -0,0 +1,74 @@ +%include <std/std_except.i> +%include <pystdcommon.swg> + + +/* + Generate the traits for a 'primitive' type, such as 'double', + for which the SWIG_AsVal and SWIG_From methods are already defined. +*/ + +%define %traits_ptypen(Type...) + %fragment(SWIG_Traits_frag(Type),"header", + fragment=SWIG_AsVal_frag(Type), + fragment=SWIG_From_frag(Type), + fragment="StdTraits") { +namespace swig { + template <> struct traits< Type > { + typedef value_category category; + static const char* type_name() { return #Type; } + }; + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(PyObject *obj, value_type *val) { + return SWIG_AsVal(Type)(obj, val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static PyObject *from(const value_type& val) { + return SWIG_From(Type)(val); + } + }; +} +} +%enddef + +/* Traits for enums. This is bit of a sneaky trick needed because a generic template specialization of enums + is not possible (unless using template meta-programming which SWIG doesn't support because of the explicit + instantiations required using %template). The STL containers define the 'front' method and the typemap + below is used whenever the front method is wrapped returning an enum. This typemap simply picks up the + standard enum typemap, but additionally drags in a fragment containing the traits_asval and traits_from + required in the generated code for enums. */ + +%define %traits_enum(Type...) + %fragment("SWIG_Traits_enum_"{Type},"header", + fragment=SWIG_AsVal_frag(int), + fragment=SWIG_From_frag(int), + fragment="StdTraits") { +namespace swig { + template <> struct traits_asval< Type > { + typedef Type value_type; + static int asval(PyObject *obj, value_type *val) { + return SWIG_AsVal(int)(obj, (int *)val); + } + }; + template <> struct traits_from< Type > { + typedef Type value_type; + static PyObject *from(const value_type& val) { + return SWIG_From(int)((int)val); + } + }; +} +} +%typemap(out, fragment="SWIG_Traits_enum_"{Type}) const enum SWIGTYPE& front %{$typemap(out, const enum SWIGTYPE&)%} +%enddef + + +%include <std/std_common.i> + +// +// Generates the traits for all the known primitive +// C++ types (int, double, ...) +// +%apply_cpptypes(%traits_ptypen); + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_complex.i b/qrenderdoc/3rdparty/swig/Lib/python/std_complex.i new file mode 100644 index 000000000..4e8fed305 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_complex.i @@ -0,0 +1,22 @@ +/* + * STD C++ complex typemaps + */ + +%include <pycomplex.swg> + +%{ +#include <complex> +%} + +/* defining the complex as/from converters */ + +%swig_cplxdbl_convn(std::complex<double>, std::complex<double>, std::real, std::imag) +%swig_cplxflt_convn(std::complex<float>, std::complex<float>, std::real, std::imag) + +/* defining the typemaps */ + +%typemaps_primitive(%checkcode(CPLXDBL), std::complex<double>); +%typemaps_primitive(%checkcode(CPLXFLT), std::complex<float>); + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_container.i b/qrenderdoc/3rdparty/swig/Lib/python/std_container.i new file mode 100644 index 000000000..d24c1570f --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_container.i @@ -0,0 +1,2 @@ +%include <pycontainer.swg> +%include <std/std_container.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_deque.i b/qrenderdoc/3rdparty/swig/Lib/python/std_deque.i new file mode 100644 index 000000000..b19375633 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_deque.i @@ -0,0 +1,27 @@ +/* + Deques +*/ + +%fragment("StdDequeTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class T> + struct traits_asptr<std::deque<T> > { + static int asptr(PyObject *obj, std::deque<T> **vec) { + return traits_asptr_stdseq<std::deque<T> >::asptr(obj, vec); + } + }; + + template <class T> + struct traits_from<std::deque<T> > { + static PyObject *from(const std::deque<T> & vec) { + return traits_from_stdseq<std::deque<T> >::from(vec); + } + }; + } +%} + +#define %swig_deque_methods(Type...) %swig_sequence_methods(Type) +#define %swig_deque_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include <std/std_deque.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_except.i b/qrenderdoc/3rdparty/swig/Lib/python/std_except.i new file mode 100644 index 000000000..af98428f6 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_except.i @@ -0,0 +1 @@ +%include <typemaps/std_except.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_ios.i b/qrenderdoc/3rdparty/swig/Lib/python/std_ios.i new file mode 100644 index 000000000..aa6f0994d --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_ios.i @@ -0,0 +1,3 @@ +%rename(ios_base_in) std::ios_base::in; + +%include <std/std_ios.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_iostream.i b/qrenderdoc/3rdparty/swig/Lib/python/std_iostream.i new file mode 100644 index 000000000..43d6b0c24 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_iostream.i @@ -0,0 +1,8 @@ +namespace std +{ +%callback(1) endl; +%callback(1) ends; +%callback(1) flush; +} + +%include <std/std_iostream.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_list.i b/qrenderdoc/3rdparty/swig/Lib/python/std_list.i new file mode 100644 index 000000000..baf66d914 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_list.i @@ -0,0 +1,28 @@ +/* + Lists +*/ + +%fragment("StdListTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class T > + struct traits_asptr<std::list<T> > { + static int asptr(PyObject *obj, std::list<T> **lis) { + return traits_asptr_stdseq<std::list<T> >::asptr(obj, lis); + } + }; + + template <class T> + struct traits_from<std::list<T> > { + static PyObject *from(const std::list<T> & vec) { + return traits_from_stdseq<std::list<T> >::from(vec); + } + }; + } +%} + +#define %swig_list_methods(Type...) %swig_sequence_methods(Type) +#define %swig_list_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include <std/std_list.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_map.i b/qrenderdoc/3rdparty/swig/Lib/python/std_map.i new file mode 100644 index 000000000..f61f79c44 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_map.i @@ -0,0 +1,310 @@ +/* + Maps +*/ + +%fragment("StdMapCommonTraits","header",fragment="StdSequenceTraits") +{ + namespace swig { + template <class ValueType> + struct from_key_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.first); + } + }; + + template <class ValueType> + struct from_value_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.second); + } + }; + + template<class OutIterator, class FromOper, class ValueType = typename OutIterator::value_type> + struct SwigPyMapIterator_T : SwigPyIteratorClosed_T<OutIterator, ValueType, FromOper> + { + SwigPyMapIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyIteratorClosed_T<OutIterator,ValueType,FromOper>(curr, first, last, seq) + { + } + }; + + + template<class OutIterator, + class FromOper = from_key_oper<typename OutIterator::value_type> > + struct SwigPyMapKeyIterator_T : SwigPyMapIterator_T<OutIterator, FromOper> + { + SwigPyMapKeyIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyMapIterator_T<OutIterator, FromOper>(curr, first, last, seq) + { + } + }; + + template<typename OutIter> + inline SwigPyIterator* + make_output_key_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, PyObject *seq = 0) + { + return new SwigPyMapKeyIterator_T<OutIter>(current, begin, end, seq); + } + + template<class OutIterator, + class FromOper = from_value_oper<typename OutIterator::value_type> > + struct SwigPyMapValueITerator_T : SwigPyMapIterator_T<OutIterator, FromOper> + { + SwigPyMapValueITerator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyMapIterator_T<OutIterator, FromOper>(curr, first, last, seq) + { + } + }; + + + template<typename OutIter> + inline SwigPyIterator* + make_output_value_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, PyObject *seq = 0) + { + return new SwigPyMapValueITerator_T<OutIter>(current, begin, end, seq); + } + } +} + +%fragment("StdMapTraits","header",fragment="StdMapCommonTraits") +{ + namespace swig { + template <class SwigPySeq, class K, class T, class Compare, class Alloc > + inline void + assign(const SwigPySeq& swigpyseq, std::map<K,T,Compare,Alloc > *map) { + typedef typename std::map<K,T,Compare,Alloc >::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + map->insert(value_type(it->first, it->second)); + } + } + + template <class K, class T, class Compare, class Alloc> + struct traits_asptr<std::map<K,T,Compare,Alloc > > { + typedef std::map<K,T,Compare,Alloc > map_type; + static int asptr(PyObject *obj, map_type **val) { + int res = SWIG_ERROR; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); +%#if PY_VERSION_HEX >= 0x03000000 + /* In Python 3.x the ".items()" method returns a dict_items object */ + items = PySequence_Fast(items, ".items() didn't return a sequence!"); +%#endif + res = traits_asptr_stdseq<map_type, std::pair<K, T> >::asptr(items, val); + } else { + map_type *p; + swig_type_info *descriptor = swig::type_info<map_type>(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + SWIG_PYTHON_THREAD_END_BLOCK; + return res; + } + }; + + template <class K, class T, class Compare, class Alloc > + struct traits_from<std::map<K,T,Compare,Alloc > > { + typedef std::map<K,T,Compare,Alloc > map_type; + typedef typename map_type::const_iterator const_iterator; + typedef typename map_type::size_type size_type; + + static PyObject *asdict(const map_type& map) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + size_type size = map.size(); + Py_ssize_t pysize = (size <= (size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= map.begin(); i!= map.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return obj; + } + + static PyObject *from(const map_type& map) { + swig_type_info *desc = swig::type_info<map_type>(); + if (desc && desc->clientdata) { + return SWIG_InternalNewPointerObj(new map_type(map), desc, SWIG_POINTER_OWN); + } else { + return asdict(map); + } + } + }; + } +} + +%define %swig_map_common(Map...) + %swig_sequence_iterator(Map); + %swig_container_methods(Map) + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "mp_length", functype="lenfunc") __len__; + %feature("python:slot", "mp_subscript", functype="binaryfunc") __getitem__; + %feature("python:slot", "tp_iter", functype="getiterfunc") key_iterator; + + %extend { + %newobject iterkeys(PyObject **PYTHON_SELF); + swig::SwigPyIterator* iterkeys(PyObject **PYTHON_SELF) { + return swig::make_output_key_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject itervalues(PyObject **PYTHON_SELF); + swig::SwigPyIterator* itervalues(PyObject **PYTHON_SELF) { + return swig::make_output_value_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject iteritems(PyObject **PYTHON_SELF); + swig::SwigPyIterator* iteritems(PyObject **PYTHON_SELF) { + return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + } + +#else + %extend { + %pythoncode %{def __iter__(self): + return self.key_iterator()%} + %pythoncode %{def iterkeys(self): + return self.key_iterator()%} + %pythoncode %{def itervalues(self): + return self.value_iterator()%} + %pythoncode %{def iteritems(self): + return self.iterator()%} + } +#endif + + %extend { + mapped_type const & __getitem__(const key_type& key) throw (std::out_of_range) { + Map::const_iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + + void __delitem__(const key_type& key) throw (std::out_of_range) { + Map::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + + bool has_key(const key_type& key) const { + Map::const_iterator i = self->find(key); + return i != self->end(); + } + + PyObject* keys() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* keyList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(keyList, j, swig::from(i->first)); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return keyList; + } + + PyObject* values() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* valList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(valList, j, swig::from(i->second)); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return valList; + } + + PyObject* items() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + if (pysize < 0) { + PyErr_SetString(PyExc_OverflowError, "map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* itemList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(itemList, j, swig::from(*i)); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return itemList; + } + + // Python 2.2 methods + bool __contains__(const key_type& key) { + return self->find(key) != self->end(); + } + + %newobject key_iterator(PyObject **PYTHON_SELF); + swig::SwigPyIterator* key_iterator(PyObject **PYTHON_SELF) { + return swig::make_output_key_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject value_iterator(PyObject **PYTHON_SELF); + swig::SwigPyIterator* value_iterator(PyObject **PYTHON_SELF) { + return swig::make_output_value_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + } + +%enddef + +%define %swig_map_methods(Map...) + %swig_map_common(Map) + +#if defined(SWIGPYTHON_BUILTIN) + %feature("python:slot", "mp_ass_subscript", functype="objobjargproc") __setitem__; +#endif + + %extend { + // This will be called through the mp_ass_subscript slot to delete an entry. + void __setitem__(const key_type& key) { + self->erase(key); + } + + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + (*self)[key] = x; + } + + PyObject* asdict() { + return swig::traits_from< Map >::asdict(*self); + } + } + + +%enddef + + +%include <std/std_map.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_multimap.i b/qrenderdoc/3rdparty/swig/Lib/python/std_multimap.i new file mode 100644 index 000000000..3209fb0f8 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_multimap.i @@ -0,0 +1,79 @@ +/* + Multimaps +*/ +%include <std_map.i> + +%fragment("StdMultimapTraits","header",fragment="StdMapCommonTraits") +{ + namespace swig { + template <class SwigPySeq, class K, class T > + inline void + assign(const SwigPySeq& swigpyseq, std::multimap<K,T > *multimap) { + typedef typename std::multimap<K,T>::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + multimap->insert(value_type(it->first, it->second)); + } + } + + template <class K, class T> + struct traits_asptr<std::multimap<K,T> > { + typedef std::multimap<K,T> multimap_type; + static int asptr(PyObject *obj, std::multimap<K,T> **val) { + int res = SWIG_ERROR; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); + return traits_asptr_stdseq<std::multimap<K,T>, std::pair<K, T> >::asptr(items, val); + } else { + multimap_type *p; + swig_type_info *descriptor = swig::type_info<multimap_type>(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template <class K, class T > + struct traits_from<std::multimap<K,T> > { + typedef std::multimap<K,T> multimap_type; + typedef typename multimap_type::const_iterator const_iterator; + typedef typename multimap_type::size_type size_type; + + static PyObject *from(const multimap_type& multimap) { + swig_type_info *desc = swig::type_info<multimap_type>(); + if (desc && desc->clientdata) { + return SWIG_InternalNewPointerObj(new multimap_type(multimap), desc, SWIG_POINTER_OWN); + } else { + size_type size = multimap.size(); + Py_ssize_t pysize = (size <= (size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, "multimap size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= multimap.begin(); i!= multimap.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + return obj; + } + } + }; + } +} + +%define %swig_multimap_methods(Type...) + %swig_map_common(Type); + %extend { + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + self->insert(Type::value_type(key,x)); + } + } +%enddef + +%include <std/std_multimap.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_multiset.i b/qrenderdoc/3rdparty/swig/Lib/python/std_multiset.i new file mode 100644 index 000000000..ac430334c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_multiset.i @@ -0,0 +1,41 @@ +/* + Multisets +*/ + +%include <std_set.i> + +%fragment("StdMultisetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class SwigPySeq, class T> + inline void + assign(const SwigPySeq& swigpyseq, std::multiset<T>* seq) { + // seq->insert(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template <class T> + struct traits_asptr<std::multiset<T> > { + static int asptr(PyObject *obj, std::multiset<T> **m) { + return traits_asptr_stdseq<std::multiset<T> >::asptr(obj, m); + } + }; + + template <class T> + struct traits_from<std::multiset<T> > { + static PyObject *from(const std::multiset<T>& vec) { + return traits_from_stdseq<std::multiset<T> >::from(vec); + } + }; + } +%} + +#define %swig_multiset_methods(Set...) %swig_set_methods(Set) + + + +%include <std/std_multiset.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_pair.i b/qrenderdoc/3rdparty/swig/Lib/python/std_pair.i new file mode 100644 index 000000000..172572bff --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_pair.i @@ -0,0 +1,206 @@ +/* + Pairs +*/ +%include <pystdcommon.swg> + +//#define SWIG_STD_PAIR_ASVAL + +%fragment("StdPairTraits","header",fragment="StdTraits") { + namespace swig { +#ifdef SWIG_STD_PAIR_ASVAL + template <class T, class U > + struct traits_asval<std::pair<T,U> > { + typedef std::pair<T,U> value_type; + + static int get_pair(PyObject* first, PyObject* second, + std::pair<T,U> *val) + { + if (val) { + T *pfirst = &(val->first); + int res1 = swig::asval((PyObject*)first, pfirst); + if (!SWIG_IsOK(res1)) return res1; + U *psecond = &(val->second); + int res2 = swig::asval((PyObject*)second, psecond); + if (!SWIG_IsOK(res2)) return res2; + return res1 > res2 ? res1 : res2; + } else { + T *pfirst = 0; + int res1 = swig::asval((PyObject*)first, 0); + if (!SWIG_IsOK(res1)) return res1; + U *psecond = 0; + int res2 = swig::asval((PyObject*)second, psecond); + if (!SWIG_IsOK(res2)) return res2; + return res1 > res2 ? res1 : res2; + } + } + + static int asval(PyObject *obj, std::pair<T,U> *val) { + int res = SWIG_ERROR; + if (PyTuple_Check(obj)) { + if (PyTuple_GET_SIZE(obj) == 2) { + res = get_pair(PyTuple_GET_ITEM(obj,0),PyTuple_GET_ITEM(obj,1), val); + } + } else if (PySequence_Check(obj)) { + if (PySequence_Size(obj) == 2) { + swig::SwigVar_PyObject first = PySequence_GetItem(obj,0); + swig::SwigVar_PyObject second = PySequence_GetItem(obj,1); + res = get_pair(first, second, val); + } + } else { + value_type *p; + swig_type_info *descriptor = swig::type_info<value_type>(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = *p; + } + return res; + } + }; + +#else + template <class T, class U > + struct traits_asptr<std::pair<T,U> > { + typedef std::pair<T,U> value_type; + + static int get_pair(PyObject* first, PyObject* second, + std::pair<T,U> **val) + { + if (val) { + value_type *vp = %new_instance(std::pair<T,U>); + T *pfirst = &(vp->first); + int res1 = swig::asval((PyObject*)first, pfirst); + if (!SWIG_IsOK(res1)) { + %delete(vp); + return res1; + } + U *psecond = &(vp->second); + int res2 = swig::asval((PyObject*)second, psecond); + if (!SWIG_IsOK(res2)) { + %delete(vp); + return res2; + } + *val = vp; + return SWIG_AddNewMask(res1 > res2 ? res1 : res2); + } else { + T *pfirst = 0; + int res1 = swig::asval((PyObject*)first, pfirst); + if (!SWIG_IsOK(res1)) return res1; + U *psecond = 0; + int res2 = swig::asval((PyObject*)second, psecond); + if (!SWIG_IsOK(res2)) return res2; + return res1 > res2 ? res1 : res2; + } + } + + static int asptr(PyObject *obj, std::pair<T,U> **val) { + int res = SWIG_ERROR; + if (PyTuple_Check(obj)) { + if (PyTuple_GET_SIZE(obj) == 2) { + res = get_pair(PyTuple_GET_ITEM(obj,0),PyTuple_GET_ITEM(obj,1), val); + } + } else if (PySequence_Check(obj)) { + if (PySequence_Size(obj) == 2) { + swig::SwigVar_PyObject first = PySequence_GetItem(obj,0); + swig::SwigVar_PyObject second = PySequence_GetItem(obj,1); + res = get_pair(first, second, val); + } + } else { + value_type *p; + swig_type_info *descriptor = swig::type_info<value_type>(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + +#endif + template <class T, class U > + struct traits_from<std::pair<T,U> > { + static PyObject *from(const std::pair<T,U>& val) { + PyObject* obj = PyTuple_New(2); + PyTuple_SetItem(obj,0,swig::from(val.first)); + PyTuple_SetItem(obj,1,swig::from(val.second)); + return obj; + } + }; + } + +#if defined(SWIGPYTHON_BUILTIN) +SWIGINTERN Py_ssize_t +SwigPython_std_pair_len (PyObject *a) +{ + return 2; +} + +SWIGINTERN PyObject* +SwigPython_std_pair_repr (PyObject *o) +{ + PyObject *tuple = PyTuple_New(2); + assert(tuple); + PyTuple_SET_ITEM(tuple, 0, PyObject_GetAttrString(o, (char*) "first")); + PyTuple_SET_ITEM(tuple, 1, PyObject_GetAttrString(o, (char*) "second")); + PyObject *result = PyObject_Repr(tuple); + Py_DECREF(tuple); + return result; +} + +SWIGINTERN PyObject* +SwigPython_std_pair_getitem (PyObject *a, Py_ssize_t b) +{ + PyObject *result = PyObject_GetAttrString(a, b % 2 ? (char*) "second" : (char*) "first"); + return result; +} + +SWIGINTERN int +SwigPython_std_pair_setitem (PyObject *a, Py_ssize_t b, PyObject *c) +{ + int result = PyObject_SetAttrString(a, b % 2 ? (char*) "second" : (char*) "first", c); + return result; +} +#endif + +} + +%feature("python:sq_length") std::pair "SwigPython_std_pair_len"; +%feature("python:sq_length") std::pair<T*,U> "SwigPython_std_pair_len"; +%feature("python:sq_length") std::pair<T,U*> "SwigPython_std_pair_len"; +%feature("python:sq_length") std::pair<T*,U*> "SwigPython_std_pair_len"; + +%feature("python:tp_repr") std::pair "SwigPython_std_pair_repr"; +%feature("python:tp_repr") std::pair<T*,U> "SwigPython_std_pair_repr"; +%feature("python:tp_repr") std::pair<T,U*> "SwigPython_std_pair_repr"; +%feature("python:tp_repr") std::pair<T*,U*> "SwigPython_std_pair_repr"; + +%feature("python:sq_item") std::pair "SwigPython_std_pair_getitem"; +%feature("python:sq_item") std::pair<T*,U> "SwigPython_std_pair_getitem"; +%feature("python:sq_item") std::pair<T,U*> "SwigPython_std_pair_getitem"; +%feature("python:sq_item") std::pair<T*,U*> "SwigPython_std_pair_getitem"; + +%feature("python:sq_ass_item") std::pair "SwigPython_std_pair_setitem"; +%feature("python:sq_ass_item") std::pair<T*,U> "SwigPython_std_pair_setitem"; +%feature("python:sq_ass_item") std::pair<T,U*> "SwigPython_std_pair_setitem"; +%feature("python:sq_ass_item") std::pair<T*,U*> "SwigPython_std_pair_setitem"; + +%define %swig_pair_methods(pair...) +#if !defined(SWIGPYTHON_BUILTIN) +%extend { +%pythoncode %{def __len__(self): + return 2 +def __repr__(self): + return str((self.first, self.second)) +def __getitem__(self, index): + if not (index % 2): + return self.first + else: + return self.second +def __setitem__(self, index, val): + if not (index % 2): + self.first = val + else: + self.second = val%} +} +#endif +%enddef + +%include <std/std_pair.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_set.i b/qrenderdoc/3rdparty/swig/Lib/python/std_set.i new file mode 100644 index 000000000..53f97e475 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_set.i @@ -0,0 +1,63 @@ +/* + Sets +*/ + +%fragment("StdSetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class SwigPySeq, class T> + inline void + assign(const SwigPySeq& swigpyseq, std::set<T>* seq) { + // seq->insert(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template <class T> + struct traits_asptr<std::set<T> > { + static int asptr(PyObject *obj, std::set<T> **s) { + return traits_asptr_stdseq<std::set<T> >::asptr(obj, s); + } + }; + + template <class T> + struct traits_from<std::set<T> > { + static PyObject *from(const std::set<T>& vec) { + return traits_from_stdseq<std::set<T> >::from(vec); + } + }; + } +%} + +%define %swig_set_methods(set...) + %swig_sequence_iterator(set); + %swig_container_methods(set); + + %extend { + void append(value_type x) { + self->insert(x); + } + + bool __contains__(value_type x) { + return self->find(x) != self->end(); + } + + value_type __getitem__(difference_type i) const throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + void add(value_type x) { + self->insert(x); + } + + void discard(value_type x) { + self->erase(x); + } + + }; +%enddef + +%include <std/std_set.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_shared_ptr.i b/qrenderdoc/3rdparty/swig/Lib/python/std_shared_ptr.i new file mode 100644 index 000000000..df873679c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_shared_ptr.i @@ -0,0 +1,2 @@ +#define SWIG_SHARED_PTR_NAMESPACE std +%include <boost_shared_ptr.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_sstream.i b/qrenderdoc/3rdparty/swig/Lib/python/std_sstream.i new file mode 100644 index 000000000..6647df8cd --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_sstream.i @@ -0,0 +1 @@ +%include <std/std_sstream.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_streambuf.i b/qrenderdoc/3rdparty/swig/Lib/python/std_streambuf.i new file mode 100644 index 000000000..44b9bb4d7 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_streambuf.i @@ -0,0 +1 @@ +%include <std/std_streambuf.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_string.i b/qrenderdoc/3rdparty/swig/Lib/python/std_string.i new file mode 100644 index 000000000..dc1378ae6 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_string.i @@ -0,0 +1 @@ +%include <typemaps/std_string.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_map.i b/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_map.i new file mode 100644 index 000000000..894840c6c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_map.i @@ -0,0 +1,259 @@ +/* + Unordered Maps +*/ + +%fragment("StdMapTraits","header",fragment="StdSequenceTraits") +{ + namespace swig { + template <class SwigPySeq, class K, class T > + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_map<K,T > *unordered_map) { + typedef typename std::unordered_map<K,T>::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + unordered_map->insert(value_type(it->first, it->second)); + } + } + + template <class K, class T> + struct traits_reserve<std::unordered_map<K,T> > { + static void reserve(std::unordered_map<K,T> &seq, typename std::unordered_map<K,T>::size_type n) { + seq.reserve(n); + } + }; + + template <class K, class T> + struct traits_asptr<std::unordered_map<K,T> > { + typedef std::unordered_map<K,T> unordered_map_type; + static int asptr(PyObject *obj, unordered_map_type **val) { + int res = SWIG_ERROR; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); +%#if PY_VERSION_HEX >= 0x03000000 + /* In Python 3.x the ".items()" method return a dict_items object */ + items = PySequence_Fast(items, ".items() havn't returned a sequence!"); +%#endif + res = traits_asptr_stdseq<std::unordered_map<K,T>, std::pair<K, T> >::asptr(items, val); + } else { + unordered_map_type *p; + swig_type_info *descriptor = swig::type_info<unordered_map_type>(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template <class K, class T > + struct traits_from<std::unordered_map<K,T> > { + typedef std::unordered_map<K,T> unordered_map_type; + typedef typename unordered_map_type::const_iterator const_iterator; + typedef typename unordered_map_type::size_type size_type; + + static PyObject *from(const unordered_map_type& unordered_map) { + swig_type_info *desc = swig::type_info<unordered_map_type>(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new unordered_map_type(unordered_map), desc, SWIG_POINTER_OWN); + } else { + size_type size = unordered_map.size(); + Py_ssize_t pysize = (size <= (size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= unordered_map.begin(); i!= unordered_map.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + return obj; + } + } + }; + + template <class ValueType> + struct from_key_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.first); + } + }; + + template <class ValueType> + struct from_value_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.second); + } + }; + + template<class OutIterator, class FromOper, class ValueType = typename OutIterator::value_type> + struct SwigPyMapIterator_T : SwigPyIteratorClosed_T<OutIterator, ValueType, FromOper> + { + SwigPyMapIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyIteratorClosed_T<OutIterator,ValueType,FromOper>(curr, first, last, seq) + { + } + }; + + + template<class OutIterator, + class FromOper = from_key_oper<typename OutIterator::value_type> > + struct SwigPyMapKeyIterator_T : SwigPyMapIterator_T<OutIterator, FromOper> + { + SwigPyMapKeyIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyMapIterator_T<OutIterator, FromOper>(curr, first, last, seq) + { + } + }; + + template<typename OutIter> + inline SwigPyIterator* + make_output_key_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, PyObject *seq = 0) + { + return new SwigPyMapKeyIterator_T<OutIter>(current, begin, end, seq); + } + + template<class OutIterator, + class FromOper = from_value_oper<typename OutIterator::value_type> > + struct SwigPyMapValueITerator_T : SwigPyMapIterator_T<OutIterator, FromOper> + { + SwigPyMapValueITerator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyMapIterator_T<OutIterator, FromOper>(curr, first, last, seq) + { + } + }; + + + template<typename OutIter> + inline SwigPyIterator* + make_output_value_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, PyObject *seq = 0) + { + return new SwigPyMapValueITerator_T<OutIter>(current, begin, end, seq); + } + } +} + +%define %swig_unordered_map_common(Map...) + %swig_sequence_iterator(Map); + %swig_container_methods(Map) + + %extend { + mapped_type __getitem__(const key_type& key) const throw (std::out_of_range) { + Map::const_iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + + void __delitem__(const key_type& key) throw (std::out_of_range) { + Map::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + + bool has_key(const key_type& key) const { + Map::const_iterator i = self->find(key); + return i != self->end(); + } + + PyObject* keys() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* keyList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(keyList, j, swig::from(i->first)); + } + return keyList; + } + + PyObject* values() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* valList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(valList, j, swig::from(i->second)); + } + return valList; + } + + PyObject* items() { + Map::size_type size = self->size(); + Py_ssize_t pysize = (size <= (Map::size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* itemList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (Py_ssize_t j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(itemList, j, swig::from(*i)); + } + return itemList; + } + + // Python 2.2 methods + bool __contains__(const key_type& key) { + return self->find(key) != self->end(); + } + + %newobject key_iterator(PyObject **PYTHON_SELF); + swig::SwigPyIterator* key_iterator(PyObject **PYTHON_SELF) { + return swig::make_output_key_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject value_iterator(PyObject **PYTHON_SELF); + swig::SwigPyIterator* value_iterator(PyObject **PYTHON_SELF) { + return swig::make_output_value_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %pythoncode %{def __iter__(self): + return self.key_iterator()%} + %pythoncode %{def iterkeys(self): + return self.key_iterator()%} + %pythoncode %{def itervalues(self): + return self.value_iterator()%} + %pythoncode %{def iteritems(self): + return self.iterator()%} + } +%enddef + +%define %swig_unordered_map_methods(Map...) + %swig_unordered_map_common(Map) + %extend { + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + (*self)[key] = x; + } + } +%enddef + + +%include <std/std_unordered_map.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_multimap.i b/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_multimap.i new file mode 100644 index 000000000..2410aa52b --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_multimap.i @@ -0,0 +1,86 @@ +/* + Unordered Multimaps +*/ +%include <std_unordered_map.i> + +%fragment("StdUnorderedMultimapTraits","header",fragment="StdSequenceTraits") +{ + namespace swig { + template <class SwigPySeq, class K, class T > + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_multimap<K,T > *unordered_multimap) { + typedef typename std::unordered_multimap<K,T>::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + unordered_multimap->insert(value_type(it->first, it->second)); + } + } + + template <class K, class T> + struct traits_reserve<std::unordered_multimap<K,T> > { + static void reserve(std::unordered_multimap<K,T> &seq, typename std::unordered_multimap<K,T>::size_type n) { + seq.reserve(n); + } + }; + + template <class K, class T> + struct traits_asptr<std::unordered_multimap<K,T> > { + typedef std::unordered_multimap<K,T> unordered_multimap_type; + static int asptr(PyObject *obj, std::unordered_multimap<K,T> **val) { + int res = SWIG_ERROR; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); + return traits_asptr_stdseq<std::unordered_multimap<K,T>, std::pair<K, T> >::asptr(items, val); + } else { + unordered_multimap_type *p; + swig_type_info *descriptor = swig::type_info<unordered_multimap_type>(); + res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template <class K, class T > + struct traits_from<std::unordered_multimap<K,T> > { + typedef std::unordered_multimap<K,T> unordered_multimap_type; + typedef typename unordered_multimap_type::const_iterator const_iterator; + typedef typename unordered_multimap_type::size_type size_type; + + static PyObject *from(const unordered_multimap_type& unordered_multimap) { + swig_type_info *desc = swig::type_info<unordered_multimap_type>(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new unordered_multimap_type(unordered_multimap), desc, SWIG_POINTER_OWN); + } else { + size_type size = unordered_multimap.size(); + Py_ssize_t pysize = (size <= (size_type) INT_MAX) ? (Py_ssize_t) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, "unordered_multimap size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= unordered_multimap.begin(); i!= unordered_multimap.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + return obj; + } + } + }; + } +} + +%define %swig_unordered_multimap_methods(Type...) + %swig_map_common(Type); + %extend { + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + self->insert(Type::value_type(key,x)); + } + } +%enddef + +%include <std/std_unordered_multimap.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_multiset.i b/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_multiset.i new file mode 100644 index 000000000..0d9f3d9c6 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_multiset.i @@ -0,0 +1,48 @@ +/* + Unordered Multisets +*/ + +%include <std_unordered_set.i> + +%fragment("StdUnorderedMultisetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class SwigPySeq, class T> + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_multiset<T>* seq) { + // seq->insert(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template <class T> + struct traits_reserve<std::unordered_multiset<T> > { + static void reserve(std::unordered_multiset<T> &seq, typename std::unordered_multiset<T>::size_type n) { + seq.reserve(n); + } + }; + + template <class T> + struct traits_asptr<std::unordered_multiset<T> > { + static int asptr(PyObject *obj, std::unordered_multiset<T> **m) { + return traits_asptr_stdseq<std::unordered_multiset<T> >::asptr(obj, m); + } + }; + + template <class T> + struct traits_from<std::unordered_multiset<T> > { + static PyObject *from(const std::unordered_multiset<T>& vec) { + return traits_from_stdseq<std::unordered_multiset<T> >::from(vec); + } + }; + } +%} + +#define %swig_unordered_multiset_methods(Set...) %swig_set_methods(Set) + + + +%include <std/std_unordered_multiset.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_set.i b/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_set.i new file mode 100644 index 000000000..855a28da5 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_unordered_set.i @@ -0,0 +1,62 @@ +/* + Unordered Sets +*/ + +%fragment("StdUnorderedSetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class SwigPySeq, class T> + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_set<T>* seq) { + // seq->insert(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template <class T> + struct traits_reserve<std::unordered_set<T> > { + static void reserve(std::unordered_set<T> &seq, typename std::unordered_set<T>::size_type n) { + seq.reserve(n); + } + }; + + template <class T> + struct traits_asptr<std::unordered_set<T> > { + static int asptr(PyObject *obj, std::unordered_set<T> **s) { + return traits_asptr_stdseq<std::unordered_set<T> >::asptr(obj, s); + } + }; + + template <class T> + struct traits_from<std::unordered_set<T> > { + static PyObject *from(const std::unordered_set<T>& vec) { + return traits_from_stdseq<std::unordered_set<T> >::from(vec); + } + }; + } +%} + +%define %swig_unordered_set_methods(unordered_set...) + %swig_sequence_iterator(unordered_set); + %swig_container_methods(unordered_set); + + %extend { + void append(value_type x) { + self->insert(x); + } + + bool __contains__(value_type x) { + return self->find(x) != self->end(); + } + + value_type __getitem__(difference_type i) const throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + }; +%enddef + +%include <std/std_unordered_set.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_vector.i b/qrenderdoc/3rdparty/swig/Lib/python/std_vector.i new file mode 100644 index 000000000..2ac41a54d --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_vector.i @@ -0,0 +1,34 @@ +/* + Vectors +*/ + +%fragment("StdVectorTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class T> + struct traits_reserve<std::vector<T> > { + static void reserve(std::vector<T> &seq, typename std::vector<T>::size_type n) { + seq.reserve(n); + } + }; + + template <class T> + struct traits_asptr<std::vector<T> > { + static int asptr(PyObject *obj, std::vector<T> **vec) { + return traits_asptr_stdseq<std::vector<T> >::asptr(obj, vec); + } + }; + + template <class T> + struct traits_from<std::vector<T> > { + static PyObject *from(const std::vector<T>& vec) { + return traits_from_stdseq<std::vector<T> >::from(vec); + } + }; + } +%} + +#define %swig_vector_methods(Type...) %swig_sequence_methods(Type) +#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include <std/std_vector.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_vectora.i b/qrenderdoc/3rdparty/swig/Lib/python/std_vectora.i new file mode 100644 index 000000000..3f084bd7d --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_vectora.i @@ -0,0 +1,31 @@ +/* + Vectors + allocators +*/ + +%fragment("StdVectorATraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class T, class A> + struct traits_asptr<std::vector<T,A> > { + typedef std::vector<T,A> vector_type; + typedef T value_type; + static int asptr(PyObject *obj, vector_type **vec) { + return traits_asptr_stdseq<vector_type>::asptr(obj, vec); + } + }; + + template <class T, class A> + struct traits_from<std::vector<T,A> > { + typedef std::vector<T,A> vector_type; + static PyObject *from(const vector_type& vec) { + return traits_from_stdseq<vector_type>::from(vec); + } + }; + } +%} + + +#define %swig_vector_methods(Type...) %swig_sequence_methods(Type) +#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include <std/std_vectora.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_wios.i b/qrenderdoc/3rdparty/swig/Lib/python/std_wios.i new file mode 100644 index 000000000..930a57dd0 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_wios.i @@ -0,0 +1 @@ +%include <std/std_wios.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_wiostream.i b/qrenderdoc/3rdparty/swig/Lib/python/std_wiostream.i new file mode 100644 index 000000000..d3a5ee785 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_wiostream.i @@ -0,0 +1,10 @@ +namespace std +{ +%callback(1) wendl; +%callback(1) wends; +%callback(1) wflush; +} + +%include <std_basic_string.i> +%include <std_wstring.i> +%include <std/std_wiostream.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_wsstream.i b/qrenderdoc/3rdparty/swig/Lib/python/std_wsstream.i new file mode 100644 index 000000000..8843f56d8 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_wsstream.i @@ -0,0 +1 @@ +%include <std/std_wsstream.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_wstreambuf.i b/qrenderdoc/3rdparty/swig/Lib/python/std_wstreambuf.i new file mode 100644 index 000000000..c0f09201c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_wstreambuf.i @@ -0,0 +1 @@ +%include <std/std_wstreambuf.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/std_wstring.i b/qrenderdoc/3rdparty/swig/Lib/python/std_wstring.i new file mode 100644 index 000000000..ef8628137 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/std_wstring.i @@ -0,0 +1,3 @@ +%include <pywstrings.swg> +%include <typemaps/std_wstring.swg> + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/stl.i b/qrenderdoc/3rdparty/swig/Lib/python/stl.i new file mode 100644 index 000000000..a3566db5c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/stl.i @@ -0,0 +1,7 @@ +/* initial STL definition. extended as needed in each language */ +%include <std_common.i> +%include <std_string.i> +%include <std_vector.i> +%include <std_map.i> +%include <std_pair.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/python/typemaps.i b/qrenderdoc/3rdparty/swig/Lib/python/typemaps.i new file mode 100644 index 000000000..5d438ecab --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/typemaps.i @@ -0,0 +1,148 @@ +/* ----------------------------------------------------------------------------- + * typemaps.i + * + * Pointer handling + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointers. + * ----------------------------------------------------------------------------- */ + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + + int *INPUT + short *INPUT + long *INPUT + long long *INPUT + unsigned int *INPUT + unsigned short *INPUT + unsigned long *INPUT + unsigned long long *INPUT + unsigned char *INPUT + bool *INPUT + float *INPUT + double *INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include <typemaps.i> + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include <typemaps.i> + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a list element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, they are returned in the form of a Python tuple. + + int *OUTPUT + short *OUTPUT + long *OUTPUT + long long *OUTPUT + unsigned int *OUTPUT + unsigned short *OUTPUT + unsigned long *OUTPUT + unsigned long long *OUTPUT + unsigned char *OUTPUT + bool *OUTPUT + float *OUTPUT + double *OUTPUT + +For example, suppose you were trying to wrap the modf() function in the +C math library which splits x into integral and fractional parts (and +returns the integer part in one of its parameters).K: + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include <typemaps.i> + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include <typemaps.i> + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Python output of the function would be a tuple containing both +output values. + +*/ + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a Python tuple. + + int *INOUT + short *INOUT + long *INOUT + long long *INOUT + unsigned int *INOUT + unsigned short *INOUT + unsigned long *INOUT + unsigned long long *INOUT + unsigned char *INOUT + bool *INOUT + float *INOUT + double *INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include <typemaps.i> + void neg(double *INOUT); + +or you can use the %apply directive : + + %include <typemaps.i> + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value (since +this makes no sense in Python). Rather, the modified input value shows +up as the return value of the function. Thus, to apply this function +to a Python variable you might do this : + + x = neg(x) + +Note : previous versions of SWIG used the symbol 'BOTH' to mark +input/output arguments. This is still supported, but will be slowly +phased out in future releases. + +*/ + +%include <typemaps/typemaps.swg> diff --git a/qrenderdoc/3rdparty/swig/Lib/python/wchar.i b/qrenderdoc/3rdparty/swig/Lib/python/wchar.i new file mode 100644 index 000000000..308139a3a --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/python/wchar.i @@ -0,0 +1,21 @@ +#ifdef __cplusplus + +%{ +#include <cwchar> +%} + +#else + +%{ +#include <wchar.h> +%} + +#endif + +%types(wchar_t *); +%include <pywstrings.swg> + +/* + Enable swig wchar support. +*/ +#define SWIG_WCHAR diff --git a/qrenderdoc/3rdparty/swig/Lib/runtime.swg b/qrenderdoc/3rdparty/swig/Lib/runtime.swg new file mode 100644 index 000000000..1528a5222 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/runtime.swg @@ -0,0 +1,38 @@ +/* -----------------------------------------------------------------------------* + Standard SWIG API for use inside user code. + + Don't include this file directly, run the command + swig -python -external-runtime + Also, read the Modules chapter of the SWIG Manual. + + * -----------------------------------------------------------------------------*/ + +#ifdef SWIG_MODULE_CLIENTDATA_TYPE + +SWIGRUNTIMEINLINE swig_type_info * +SWIG_TypeQuery(SWIG_MODULE_CLIENTDATA_TYPE clientdata, const char *name) { + swig_module_info *module = SWIG_GetModule(clientdata); + return SWIG_TypeQueryModule(module, module, name); +} + +SWIGRUNTIMEINLINE swig_type_info * +SWIG_MangledTypeQuery(SWIG_MODULE_CLIENTDATA_TYPE clientdata, const char *name) { + swig_module_info *module = SWIG_GetModule(clientdata); + return SWIG_MangledTypeQueryModule(module, module, name); +} + +#else + +SWIGRUNTIMEINLINE swig_type_info * +SWIG_TypeQuery(const char *name) { + swig_module_info *module = SWIG_GetModule(NULL); + return SWIG_TypeQueryModule(module, module, name); +} + +SWIGRUNTIMEINLINE swig_type_info * +SWIG_MangledTypeQuery(const char *name) { + swig_module_info *module = SWIG_GetModule(NULL); + return SWIG_MangledTypeQueryModule(module, module, name); +} + +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/shared_ptr.i b/qrenderdoc/3rdparty/swig/Lib/shared_ptr.i new file mode 100644 index 000000000..2975b0628 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/shared_ptr.i @@ -0,0 +1,71 @@ +// This is a helper file for shared_ptr and should not be included directly. + +// The main implementation detail in using this smart pointer of a type is to customise the code generated +// to use a pointer to the smart pointer of the type, rather than the usual pointer to the underlying type. +// So for some type T, shared_ptr<T> * is used rather than T *. + +// Another key part of the implementation is the smartptr feature: +// %feature("smartptr") T { shared_ptr<T> } +// This feature marks the class T as having a smartptr to it (the shared_ptr<T> type). This is then used to +// support smart pointers and inheritance. Say class D derives from base B, then shared_ptr<D> is marked +// with a fake inheritance from shared_ptr<B> in the type system if the "smartptr" feature is used on both +// B and D. This is to emulate the conversion of shared_ptr<D> to shared_ptr<B> in the target language. + +// shared_ptr namespaces could be boost or std or std::tr1 +// For example for std::tr1, use: +// #define SWIG_SHARED_PTR_NAMESPACE std +// #define SWIG_SHARED_PTR_SUBNAMESPACE tr1 + +#if !defined(SWIG_SHARED_PTR_NAMESPACE) +# define SWIG_SHARED_PTR_NAMESPACE boost +#endif + +#if defined(SWIG_SHARED_PTR_SUBNAMESPACE) +# define SWIG_SHARED_PTR_QNAMESPACE SWIG_SHARED_PTR_NAMESPACE::SWIG_SHARED_PTR_SUBNAMESPACE +#else +# define SWIG_SHARED_PTR_QNAMESPACE SWIG_SHARED_PTR_NAMESPACE +#endif + +namespace SWIG_SHARED_PTR_NAMESPACE { +#if defined(SWIG_SHARED_PTR_SUBNAMESPACE) + namespace SWIG_SHARED_PTR_SUBNAMESPACE { +#endif + template <class T> class shared_ptr { + }; +#if defined(SWIG_SHARED_PTR_SUBNAMESPACE) + } +#endif +} + +%fragment("SWIG_null_deleter", "header") { +struct SWIG_null_deleter { + void operator() (void const *) const { + } +}; +%#define SWIG_NO_NULL_DELETER_0 , SWIG_null_deleter() +%#define SWIG_NO_NULL_DELETER_1 +%#define SWIG_NO_NULL_DELETER_SWIG_POINTER_NEW +%#define SWIG_NO_NULL_DELETER_SWIG_POINTER_OWN +} + + +// Workaround empty first macro argument bug +#define SWIGEMPTYHACK +// Main user macro for defining shared_ptr typemaps for both const and non-const pointer types +%define %shared_ptr(TYPE...) +%feature("smartptr", noblock=1) TYPE { SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > } +SWIG_SHARED_PTR_TYPEMAPS(SWIGEMPTYHACK, TYPE) +SWIG_SHARED_PTR_TYPEMAPS(const, TYPE) +%enddef + +// Legacy macros +%define SWIG_SHARED_PTR(PROXYCLASS, TYPE...) +#warning "SWIG_SHARED_PTR(PROXYCLASS, TYPE) is deprecated. Please use %shared_ptr(TYPE) instead." +%shared_ptr(TYPE) +%enddef + +%define SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE...) +#warning "SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE) is deprecated. Please use %shared_ptr(TYPE) instead." +%shared_ptr(TYPE) +%enddef + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/README b/qrenderdoc/3rdparty/swig/Lib/std/README new file mode 100644 index 000000000..5cd759dda --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/README @@ -0,0 +1,22 @@ +/* ----------------------------------------------------------------------------- + * C++ STD + STL + * ----------------------------------------------------------------------------- */ + +std_common.i general common code +std_container.i general container code +std_basic_string.i basic string +std_char_traits.i char traits +std_complex.i complex +std_deque.i deque +std_except.i exceptions +std_ios.i ios +std_iostream.i istream/ostream +std_list.i list +std_map.i map +std_multimap.i multimap +std_multiset.i multiset +std_pair.i pair +std_set.i set +std_streambuf.i streambuf +std_vector.i vector +std_vectora.i vector + allocator diff --git a/qrenderdoc/3rdparty/swig/Lib/std/_std_deque.i b/qrenderdoc/3rdparty/swig/Lib/std/_std_deque.i new file mode 100644 index 000000000..af9db27f4 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/_std_deque.i @@ -0,0 +1,139 @@ +/* ----------------------------------------------------------------------------- + * _std_deque.i + * + * This file contains a generic definition of std::deque along with + * some helper functions. Specific language modules should include + * this file to generate wrappers. + * ----------------------------------------------------------------------------- */ + +%include <std_except.i> + +%{ +#include <deque> +#include <stdexcept> +%} + + +/* This macro defines all of the standard methods for a deque. This + is defined as a macro to simplify the task of specialization. For + example, + + template<> class deque<int> { + public: + %std_deque_methods(int); + }; +*/ + +%define %std_deque_methods_noempty(T...) + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + deque(); + deque(unsigned int size, const T& value=T()); + deque(const deque< T > &); + ~deque(); + + void assign(unsigned int n, const T& value); + void swap(deque< T > &x); + unsigned int size() const; + unsigned int max_size() const; + void resize(unsigned int n, T c = T()); + const_reference front(); + const_reference back(); + void push_front(const T& x); + void push_back(const T& x); + void pop_front(); + void pop_back(); + void clear(); + + /* Some useful extensions */ + %extend { + const_reference getitem(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i<0) i += size; + if (i>=0 && i<size) + return (*self)[i]; + else + throw std::out_of_range("deque index out of range"); + } + void setitem(int i, const T& x) throw (std::out_of_range) { + int size = int(self->size()); + if (i<0) i+= size; + if (i>=0 && i<size) + (*self)[i] = x; + else + throw std::out_of_range("deque index out of range"); + } + void delitem(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i<0) i+= size; + if (i>=0 && i<size) { + self->erase(self->begin()+i); + } else { + throw std::out_of_range("deque index out of range"); + } + } + std::deque< T > getslice(int i, int j) { + int size = int(self->size()); + if (i<0) i = size+i; + if (j<0) j = size+j; + if (i<0) i = 0; + if (j>size) j = size; + std::deque< T > tmp(j-i); + std::copy(self->begin()+i,self->begin()+j,tmp.begin()); + return tmp; + } + void setslice(int i, int j, const std::deque< T >& v) { + int size = int(self->size()); + if (i<0) i = size+i; + if (j<0) j = size+j; + if (i<0) i = 0; + if (j>size) j = size; + if (int(v.size()) == j-i) { + std::copy(v.begin(),v.end(),self->begin()+i); + } else { + self->erase(self->begin()+i,self->begin()+j); + if (i+1 <= size) + self->insert(self->begin()+i+1,v.begin(),v.end()); + else + self->insert(self->end(),v.begin(),v.end()); + } + } + void delslice(int i, int j) { + int size = int(self->size()); + if (i<0) i = size+i; + if (j<0) j = size+j; + if (i<0) i = 0; + if (j>size) j = size; + self->erase(self->begin()+i,self->begin()+j); + } + }; +%enddef + +#ifdef SWIGPHP +%define %std_deque_methods(T...) + %extend { + bool is_empty() const { + return self->empty(); + } + }; + %std_deque_methods_noempty(T) +%enddef +#else +%define %std_deque_methods(T...) + bool empty() const; + %std_deque_methods_noempty(T) +%enddef +#endif + +namespace std { + template<class T> class deque { + public: + %std_deque_methods(T); + }; +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_alloc.i b/qrenderdoc/3rdparty/swig/Lib/std/std_alloc.i new file mode 100644 index 000000000..44dc8dc3e --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_alloc.i @@ -0,0 +1,77 @@ +namespace std +{ + /** + * @brief The "standard" allocator, as per [20.4]. + * + * The private _Alloc is "SGI" style. (See comments at the top + * of stl_alloc.h.) + * + * The underlying allocator behaves as follows. + * - __default_alloc_template is used via two typedefs + * - "__single_client_alloc" typedef does no locking for threads + * - "__alloc" typedef is threadsafe via the locks + * - __new_alloc is used for memory requests + * + * (See @link Allocators allocators info @endlink for more.) + */ + template<typename _Tp> + class allocator + { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* pointer; + typedef const _Tp* const_pointer; + typedef _Tp& reference; + typedef const _Tp& const_reference; + typedef _Tp value_type; + + template<typename _Tp1> + struct rebind; + + allocator() throw(); + + allocator(const allocator&) throw(); + template<typename _Tp1> + allocator(const allocator<_Tp1>&) throw(); + ~allocator() throw(); + + + pointer + address(reference __x) const; + + + const_pointer + address(const_reference __x) const; + + + // NB: __n is permitted to be 0. The C++ standard says nothing + // about what the return value is when __n == 0. + _Tp* + allocate(size_type __n, const void* = 0); + + // __p is not permitted to be a null pointer. + void + deallocate(pointer __p, size_type __n); + + size_type + max_size() const throw(); + + void construct(pointer __p, const _Tp& __val); + void destroy(pointer __p); + }; + + template<> + class allocator<void> + { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef void* pointer; + typedef const void* const_pointer; + typedef void value_type; + + template<typename _Tp1> + struct rebind; + }; +} // namespace std diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_array.i b/qrenderdoc/3rdparty/swig/Lib/std/std_array.i new file mode 100644 index 000000000..aadc3b80c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_array.i @@ -0,0 +1,85 @@ +// +// std::array +// + +%include <std_container.i> + +%define %std_array_methods(array...) + %std_sequence_methods_non_resizable(array) + void fill(const value_type& u); +%enddef + + +%define %std_array_methods_val(array...) + %std_sequence_methods_non_resizable_val(array) + void fill(const value_type& u); +%enddef + +// ------------------------------------------------------------------------ +// std::array +// +// The aim of all that follows would be to integrate std::array with +// as much as possible, namely, to allow the user to pass and +// be returned tuples or lists. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::array<T, N>), f(const std::array<T, N>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::array<T, N> can be passed. +// -- f(std::array<T, N>&), f(std::array<T, N>*): +// the parameter may be modified; therefore, only a wrapped std::array +// can be passed. +// -- std::array<T, N> f(), const std::array<T, N>& f(): +// the array is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::array<T, N>& f(), std::array<T, N>* f(): +// the array is returned by reference; therefore, a wrapped std::array +// is returned +// -- const std::array<T, N>* f(), f(const std::array<T, N>*): +// for consistency, they expect and return a plain array pointer. +// ------------------------------------------------------------------------ + + +// exported classes + +namespace std { + + template<class _Tp, size_t _Nm > + class array { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef _Tp& reference; + typedef const _Tp& const_reference; + + %traits_swigtype(_Tp); + %traits_enum(_Tp); + + %fragment(SWIG_Traits_frag(std::array< _Tp, _Nm >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdArrayTraits") { + namespace swig { + template <> struct traits<std::array< _Tp, _Nm > > { + typedef pointer_category category; + static const char* type_name() { + return "std::array<" #_Tp "," #_Nm " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_STDARRAY, std::array< _Tp, _Nm >); + +#ifdef %swig_array_methods + // Add swig/language extra methods + %swig_array_methods(std::array< _Tp, _Nm >); +#endif + + %std_array_methods(array); + }; +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_basic_string.i b/qrenderdoc/3rdparty/swig/Lib/std/std_basic_string.i new file mode 100644 index 000000000..fb7afc1e6 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_basic_string.i @@ -0,0 +1,267 @@ +%include <exception.i> +%include <std_container.i> +%include <std_alloc.i> +%include <std_char_traits.i> + +%fragment("<string>"); + +namespace std +{ + %naturalvar basic_string; +} + + +namespace std { + + template <class _CharT, class _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > + class basic_string + { +#if !defined(SWIG_STD_MODERN_STL) || defined(SWIG_STD_NOMODERN_STL) + %ignore push_back; + %ignore clear; + %ignore compare; + %ignore append; +#endif + + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _CharT value_type; + typedef value_type reference; + typedef value_type const_reference; + typedef _Alloc allocator_type; + + static const size_type npos; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + class iterator; + class reverse_iterator; + class const_iterator; + class const_reverse_iterator; +#endif + + + %traits_swigtype(_CharT); + %fragment(SWIG_Traits_frag(_CharT)); + + + basic_string(const _CharT* __s, size_type __n); + + // Capacity: + + size_type length() const; + + size_type max_size() const; + + size_type capacity() const; + + void reserve(size_type __res_arg = 0); + + + // Modifiers: + + basic_string& + append(const basic_string& __str); + + basic_string& + append(const basic_string& __str, size_type __pos, size_type __n); + + basic_string& + append(const _CharT* __s, size_type __n); + + basic_string& + append(size_type __n, _CharT __c); + + basic_string& + assign(const basic_string& __str); + + basic_string& + assign(const basic_string& __str, size_type __pos, size_type __n); + + basic_string& + assign(const _CharT* __s, size_type __n); + + basic_string& + insert(size_type __pos1, const basic_string& __str); + + basic_string& + insert(size_type __pos1, const basic_string& __str, + size_type __pos2, size_type __n); + + basic_string& + insert(size_type __pos, const _CharT* __s, size_type __n); + + basic_string& + insert(size_type __pos, size_type __n, _CharT __c); + + basic_string& + erase(size_type __pos = 0, size_type __n = npos); + + basic_string& + replace(size_type __pos, size_type __n, const basic_string& __str); + + basic_string& + replace(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2); + + basic_string& + replace(size_type __pos, size_type __n1, const _CharT* __s, + size_type __n2); + + basic_string& + replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c); + + + size_type + copy(_CharT* __s, size_type __n, size_type __pos = 0) const; + + // String operations: + const _CharT* c_str() const; + + size_type + find(const _CharT* __s, size_type __pos, size_type __n) const; + + size_type + find(const basic_string& __str, size_type __pos = 0) const; + + size_type + find(_CharT __c, size_type __pos = 0) const; + + size_type + rfind(const basic_string& __str, size_type __pos = npos) const; + + size_type + rfind(const _CharT* __s, size_type __pos, size_type __n) const; + + size_type + rfind(_CharT __c, size_type __pos = npos) const; + + size_type + find_first_of(const basic_string& __str, size_type __pos = 0) const; + + size_type + find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; + + size_type + find_first_of(_CharT __c, size_type __pos = 0) const; + + size_type + find_last_of(const basic_string& __str, size_type __pos = npos) const; + + size_type + find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; + + size_type + find_last_of(_CharT __c, size_type __pos = npos) const; + + size_type + find_first_not_of(const basic_string& __str, size_type __pos = 0) const; + + size_type + find_first_not_of(const _CharT* __s, size_type __pos, + size_type __n) const; + + size_type + find_first_not_of(_CharT __c, size_type __pos = 0) const; + + size_type + find_last_not_of(const basic_string& __str, size_type __pos = npos) const; + + size_type + find_last_not_of(const _CharT* __s, size_type __pos, + size_type __n) const; + + size_type + find_last_not_of(_CharT __c, size_type __pos = npos) const; + + basic_string + substr(size_type __pos = 0, size_type __n = npos) const; + + int + compare(const basic_string& __str) const; + + int + compare(size_type __pos, size_type __n, const basic_string& __str) const; + + int + compare(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2) const; + + + %ignore pop_back(); + %ignore front() const; + %ignore back() const; + %ignore basic_string(size_type n); + %std_sequence_methods_val(basic_string); + + + %ignore pop(); + + +#ifdef %swig_basic_string + // Add swig/language extra methods + %swig_basic_string(std::basic_string< _CharT, _Traits, _Alloc >); +#endif + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + + + class iterator; + class reverse_iterator; + class const_iterator; + class const_reverse_iterator; + + + void + insert(iterator __p, size_type __n, _CharT __c); + + basic_string& + replace(iterator __i1, iterator __i2, const basic_string& __str); + + basic_string& + replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n); + + basic_string& + replace(iterator __i1, iterator __i2, size_type __n, _CharT __c); + + + basic_string& + replace(iterator __i1, iterator __i2, const _CharT* __k1, const _CharT* __k2); + + basic_string& + replace(iterator __i1, iterator __i2, const_iterator __k1, const_iterator __k2); +#endif + + basic_string& operator +=(const basic_string& v); + + %newobject __add__; + %newobject __radd__; + %extend { + + std::basic_string< _CharT,_Traits,_Alloc >* __add__(const basic_string& v) { + std::basic_string< _CharT,_Traits,_Alloc >* res = new std::basic_string< _CharT,_Traits,_Alloc >(*self); + *res += v; + return res; + } + + std::basic_string< _CharT,_Traits,_Alloc >* __radd__(const basic_string& v) { + std::basic_string< _CharT,_Traits,_Alloc >* res = new std::basic_string< _CharT,_Traits,_Alloc >(v); + *res += *self; + return res; + } + + std::basic_string< _CharT,_Traits,_Alloc > __str__() { + return *self; + } + + std::basic_ostream<_CharT, std::char_traits<_CharT> >& + __rlshift__(std::basic_ostream<_CharT, std::char_traits<_CharT> >& out) { + out << *self; + return out; + } + } + + }; +} + + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_carray.swg b/qrenderdoc/3rdparty/swig/Lib/std/std_carray.swg new file mode 100644 index 000000000..ebb20ce6a --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_carray.swg @@ -0,0 +1,64 @@ +%{ +#include <algorithm> +%} + +// +// std::carray - is really an extension to the 'std' namespace. +// +// A simple fix C array wrapper, more or less as presented in +// +// "The C++ Standarf Library", by Nicolai M. Josuttis +// +// which is also derived from the example in +// +// "The C++ Programming Language", by Bjarne Stroustup. +// + +%inline %{ +namespace std { + template <class _Type, size_t _Size> + class carray + { + public: + typedef _Type value_type; + typedef size_t size_type; + + typedef _Type * iterator; + typedef const _Type * const_iterator; + + carray() { } + + carray(const carray& c) { + std::copy(c.v, c.v + size(), v); + } + + template <class _Iterator> + carray(_Iterator first, _Iterator last) { + assign(first, last); + } + + iterator begin() { return v; } + iterator end() { return v + _Size; } + + const_iterator begin() const { return v; } + const_iterator end() const { return v + _Size; } + + _Type& operator[](size_t i) { return v[i]; } + const _Type& operator[](size_t i) const { return v[i]; } + + static size_t size() { return _Size; } + + template <class _Iterator> + void assign(_Iterator first, _Iterator last) { + if (std::distance(first,last) == size()) { + std::copy(first, last, v); + } else { + throw std::length_error("bad range length"); + } + } + + private: + _Type v[_Size]; + }; +} +%} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_char_traits.i b/qrenderdoc/3rdparty/swig/Lib/std/std_char_traits.i new file mode 100644 index 000000000..b9b4def32 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_char_traits.i @@ -0,0 +1,140 @@ +%include <std_common.i> +#if defined(SWIG_WCHAR) +%include <wchar.i> +#endif + +namespace std +{ + + /// 21.1.2 Basis for explicit _Traits specialization + /// NB: That for any given actual character type this definition is + /// probably wrong. + template<class _CharT> + struct char_traits + { + }; + + + /// 21.1.4 char_traits specializations + template<> + struct char_traits<char> { + typedef char char_type; + typedef int int_type; + typedef streampos pos_type; + typedef streamoff off_type; + typedef mbstate_t state_type; + + static void + assign(char_type& __c1, const char_type& __c2); + + static bool + eq(const char_type& __c1, const char_type& __c2); + + static bool + lt(const char_type& __c1, const char_type& __c2); + + static int + compare(const char_type* __s1, const char_type* __s2, size_t __n); + + static size_t + length(const char_type* __s); + + static const char_type* + find(const char_type* __s, size_t __n, const char_type& __a); + + static char_type* + move(char_type* __s1, const char_type* __s2, size_t __n); + + static char_type* + copy(char_type* __s1, const char_type* __s2, size_t __n); + + static char_type* + assign(char_type* __s, size_t __n, char_type __a); + + static char_type + to_char_type(const int_type& __c); + + // To keep both the byte 0xff and the eof symbol 0xffffffff + // from ending up as 0xffffffff. + static int_type + to_int_type(const char_type& __c); + + static bool + eq_int_type(const int_type& __c1, const int_type& __c2); + + static int_type + eof() ; + + static int_type + not_eof(const int_type& __c); + }; + + +#if defined(SWIG_WCHAR) + template<> + struct char_traits<wchar_t> + { + typedef wchar_t char_type; + typedef wint_t int_type; + typedef streamoff off_type; + typedef wstreampos pos_type; + typedef mbstate_t state_type; + + static void + assign(char_type& __c1, const char_type& __c2); + + static bool + eq(const char_type& __c1, const char_type& __c2); + + static bool + lt(const char_type& __c1, const char_type& __c2); + + static int + compare(const char_type* __s1, const char_type* __s2, size_t __n); + + static size_t + length(const char_type* __s); + + static const char_type* + find(const char_type* __s, size_t __n, const char_type& __a); + + static char_type* + move(char_type* __s1, const char_type* __s2, int_type __n); + + static char_type* + copy(char_type* __s1, const char_type* __s2, size_t __n); + + static char_type* + assign(char_type* __s, size_t __n, char_type __a); + + static char_type + to_char_type(const int_type& __c) ; + + static int_type + to_int_type(const char_type& __c) ; + + static bool + eq_int_type(const int_type& __c1, const int_type& __c2); + + static int_type + eof() ; + + static int_type + not_eof(const int_type& __c); + }; +#endif +} + +namespace std { +#ifndef SWIG_STL_WRAP_TRAITS +%template() char_traits<char>; +#if defined(SWIG_WCHAR) +%template() char_traits<wchar_t>; +#endif +#else +%template(char_traits_c) char_traits<char>; +#if defined(SWIG_WCHAR) +%template(char_traits_w) char_traits<wchar_t>; +#endif +#endif +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_common.i b/qrenderdoc/3rdparty/swig/Lib/std/std_common.i new file mode 100644 index 000000000..05bc4325a --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_common.i @@ -0,0 +1,250 @@ +%include <std/std_except.i> + +// +// Use the following macro with modern STL implementations +// +//#define SWIG_STD_MODERN_STL +// +// Use this to deactive the previous definition, when using gcc-2.95 +// or similar old compilers. +// +//#define SWIG_STD_NOMODERN_STL + +// Here, we identify compilers we know have problems with STL. +%{ +#if defined(__GNUC__) +# if __GNUC__ == 2 && __GNUC_MINOR <= 96 +# define SWIG_STD_NOMODERN_STL +# endif +#endif +%} + +// +// Common code for supporting the C++ std namespace +// + +%fragment("<string>"); +%fragment("<stdexcept>"); +%fragment("<stddef.h>"); + + +%fragment("StdIteratorTraits","header",fragment="<stddef.h>") %{ +#if defined(__SUNPRO_CC) && defined(_RWSTD_VER) +# if !defined(SWIG_NO_STD_NOITERATOR_TRAITS_STL) +# define SWIG_STD_NOITERATOR_TRAITS_STL +# endif +#endif + +#if !defined(SWIG_STD_NOITERATOR_TRAITS_STL) +#include <iterator> +#else +namespace std { + template <class Iterator> + struct iterator_traits { + typedef ptrdiff_t difference_type; + typedef typename Iterator::value_type value_type; + }; + + template <class Iterator, class Category,class T, class Reference, class Pointer, class Distance> + struct iterator_traits<__reverse_bi_iterator<Iterator,Category,T,Reference,Pointer,Distance> > { + typedef Distance difference_type; + typedef T value_type; + }; + + template <class T> + struct iterator_traits<T*> { + typedef T value_type; + typedef ptrdiff_t difference_type; + }; + + template<typename _InputIterator> + inline typename iterator_traits<_InputIterator>::difference_type + distance(_InputIterator __first, _InputIterator __last) + { + typename iterator_traits<_InputIterator>::difference_type __n = 0; + while (__first != __last) { + ++__first; ++__n; + } + return __n; + } +} +#endif +%} + +%fragment("StdTraitsCommon","header",fragment="<string>") %{ +namespace swig { + template <class Type> + struct noconst_traits { + typedef Type noconst_type; + }; + + template <class Type> + struct noconst_traits<const Type> { + typedef Type noconst_type; + }; + + /* + type categories + */ + struct pointer_category { }; + struct value_category { }; + + /* + General traits that provides type_name and type_info + */ + template <class Type> struct traits { }; + + template <class Type> + inline const char* type_name() { + return traits<typename noconst_traits<Type >::noconst_type >::type_name(); + } + + template <class Type> struct traits_info { + static swig_type_info *type_query(std::string name) { + name += " *"; + return SWIG_TypeQuery(name.c_str()); + } + static swig_type_info *type_info() { + static swig_type_info *info = type_query(type_name<Type>()); + return info; + } + }; + + /* + Partial specialization for pointers (traits_info) + */ + template <class Type> struct traits_info<Type *> { + static swig_type_info *type_query(std::string name) { + name += " *"; + return SWIG_TypeQuery(name.c_str()); + } + static swig_type_info *type_info() { + static swig_type_info *info = type_query(type_name<Type>()); + return info; + } + }; + + template <class Type> + inline swig_type_info *type_info() { + return traits_info<Type>::type_info(); + } + + /* + Partial specialization for pointers (traits) + */ + template <class Type> struct traits <Type *> { + typedef pointer_category category; + static std::string make_ptr_name(const char* name) { + std::string ptrname = name; + ptrname += " *"; + return ptrname; + } + static const char* type_name() { + static std::string name = make_ptr_name(swig::type_name<Type>()); + return name.c_str(); + } + }; + + template <class Type, class Category> + struct traits_as { }; + + template <class Type, class Category> + struct traits_check { }; + +} +%} + +/* + Generate the traits for a swigtype +*/ + +%define %traits_swigtype(Type...) +%fragment(SWIG_Traits_frag(Type),"header",fragment="StdTraits") { + namespace swig { + template <> struct traits< Type > { + typedef pointer_category category; + static const char* type_name() { return #Type; } + }; + } +} +%enddef + + + +/* + Generate the typemaps for a class that has 'value' traits +*/ + +%define %typemap_traits(Code,Type...) + %typemaps_asvalfrom(%arg(Code), + %arg(swig::asval< Type >), + %arg(swig::from), + %arg(SWIG_Traits_frag(Type)), + %arg(SWIG_Traits_frag(Type)), + Type); +%enddef + +/* + Generate the typemaps for a class that behaves more like a 'pointer' or + plain wrapped Swigtype. +*/ + +%define %typemap_traits_ptr(Code,Type...) + %typemaps_asptrfrom(%arg(Code), + %arg(swig::asptr), + %arg(swig::from), + %arg(SWIG_Traits_frag(Type)), + %arg(SWIG_Traits_frag(Type)), + Type); +%enddef + + +/* + Equality methods +*/ +%define %std_equal_methods(Type...) +%extend Type { + bool operator == (const Type& v) { + return *self == v; + } + + bool operator != (const Type& v) { + return *self != v; + } +} + +%enddef + +/* + Order methods +*/ + +%define %std_order_methods(Type...) +%extend Type { + bool operator > (const Type& v) { + return *self > v; + } + + bool operator < (const Type& v) { + return *self < v; + } + + bool operator >= (const Type& v) { + return *self >= v; + } + + bool operator <= (const Type& v) { + return *self <= v; + } +} +%enddef + +/* + Comparison methods +*/ + +%define %std_comp_methods(Type...) +%std_equal_methods(Type ) +%std_order_methods(Type ) +%enddef + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_container.i b/qrenderdoc/3rdparty/swig/Lib/std/std_container.i new file mode 100644 index 000000000..000163f1e --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_container.i @@ -0,0 +1,169 @@ +%include <std_common.i> +%include <exception.i> +%include <std_alloc.i> + +%{ +#include <algorithm> +%} + +// Common non-resizable container methods + +%define %std_container_methods_non_resizable(container...) + + container(); + container(const container&); + + bool empty() const; + size_type size() const; + void swap(container& v); + +%enddef + +%define %std_container_methods_forward_iterators(container...) + + #ifdef SWIG_EXPORT_ITERATOR_METHODS + class iterator; + class const_iterator; + iterator begin(); + iterator end(); + #endif + +%enddef + +%define %std_container_methods_reverse_iterators(container...) + + #ifdef SWIG_EXPORT_ITERATOR_METHODS + class reverse_iterator; + class const_reverse_iterator; + reverse_iterator rbegin(); + reverse_iterator rend(); + #endif + +%enddef + +// Common container methods + +%define %std_container_methods(container...) + + %std_container_methods_non_resizable(%arg(container)) + %std_container_methods_forward_iterators(%arg(container)) + %std_container_methods_reverse_iterators(%arg(container)) + + void clear(); + allocator_type get_allocator() const; + +%enddef + +%define %std_container_methods_without_reverse_iterators(container...) + + %std_container_methods_non_resizable(%arg(container)) + %std_container_methods_forward_iterators(%arg(container)) + + void clear(); + allocator_type get_allocator() const; + +%enddef + +// Common sequence + +%define %std_sequence_methods_common(sequence) + + %std_container_methods(%arg(sequence)); + + sequence(size_type size); + void pop_back(); + + void resize(size_type new_size); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + iterator erase(iterator pos) { return $self->erase(pos); } + iterator erase(iterator first, iterator last) { return $self->erase(first, last); } +} + #endif + +%enddef + +%define %std_sequence_methods_non_resizable(sequence) + + %std_container_methods_non_resizable(%arg(sequence)) + %std_container_methods_forward_iterators(%arg(container)) + %std_container_methods_reverse_iterators(%arg(container)) + + const value_type& front() const; + const value_type& back() const; + +%enddef + +%define %std_sequence_methods(sequence) + + %std_sequence_methods_common(%arg(sequence)); + + sequence(size_type size, const value_type& value); + void push_back(const value_type& x); + + const value_type& front() const; + const value_type& back() const; + + void assign(size_type n, const value_type& x); + void resize(size_type new_size, const value_type& x); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + iterator insert(iterator pos, const value_type& x) { return $self->insert(pos, x); } + void insert(iterator pos, size_type n, const value_type& x) { $self->insert(pos, n, x); } +} + #endif + +%enddef + +%define %std_sequence_methods_non_resizable_val(sequence...) + + %std_container_methods_non_resizable(%arg(sequence)) + %std_container_methods_forward_iterators(%arg(container)) + %std_container_methods_reverse_iterators(%arg(container)) + + value_type front() const; + value_type back() const; + +#endif + +%enddef + +%define %std_sequence_methods_val(sequence...) + + %std_sequence_methods_common(%arg(sequence)); + + sequence(size_type size, value_type value); + void push_back(value_type x); + + value_type front() const; + value_type back() const; + + void assign(size_type n, value_type x); + void resize(size_type new_size, value_type x); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + iterator insert(iterator pos, value_type x) { return $self->insert(pos, x); } + void insert(iterator pos, size_type n, value_type x) { $self->insert(pos, n, x); } +} + #endif + +%enddef + + +// +// Ignore member methods for Type with no default constructor +// +%define %std_nodefconst_type(Type...) +%feature("ignore") std::vector< Type >::vector(size_type size); +%feature("ignore") std::vector< Type >::resize(size_type size); +%feature("ignore") std::deque< Type >::deque(size_type size); +%feature("ignore") std::deque< Type >::resize(size_type size); +%feature("ignore") std::list< Type >::list(size_type size); +%feature("ignore") std::list< Type >::resize(size_type size); +%enddef diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_deque.i b/qrenderdoc/3rdparty/swig/Lib/std/std_deque.i new file mode 100644 index 000000000..aa5536bf6 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_deque.i @@ -0,0 +1,127 @@ +// +// std::deque + +%include <std_container.i> + +// Deque + +%define %std_deque_methods(deque...) + %std_sequence_methods(deque) + + void pop_front(); + void push_front(const value_type& x); +%enddef + +%define %std_deque_methods_val(deque...) + %std_sequence_methods_val(deque) + + void pop_front(); + void push_front(value_type x); +%enddef + +// ------------------------------------------------------------------------ +// std::deque +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::deque<T>), f(const std::deque<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::deque<T> can be passed. +// -- f(std::deque<T>&), f(std::deque<T>*): +// the parameter may be modified; therefore, only a wrapped std::deque +// can be passed. +// -- std::deque<T> f(), const std::deque<T>& f(): +// the deque is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::deque<T>& f(), std::deque<T>* f(): +// the deque is returned by reference; therefore, a wrapped std::deque +// is returned +// -- const std::deque<T>* f(), f(const std::deque<T>*): +// for consistency, they expect and return a plain deque pointer. +// ------------------------------------------------------------------------ + +%{ +#include <deque> +%} + +// exported classes + +namespace std { + + template<class _Tp, class _Alloc = allocator< _Tp > > + class deque { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::deque< _Tp, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdDequeTraits") { + namespace swig { + template <> struct traits<std::deque< _Tp, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::deque<" #_Tp " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_DEQUE, std::deque< _Tp, _Alloc >); + +#ifdef %swig_deque_methods + // Add swig/language extra methods + %swig_deque_methods(std::deque< _Tp, _Alloc >); +#endif + + %std_deque_methods(deque); + }; + + template<class _Tp, class _Alloc > + class deque< _Tp*, _Alloc > { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type reference; + typedef value_type const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::deque< _Tp*, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdDequeTraits") { + namespace swig { + template <> struct traits<std::deque< _Tp*, _Alloc > > { + typedef value_category category; + static const char* type_name() { + return "std::deque<" #_Tp " * >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_DEQUE, std::deque< _Tp*, _Alloc >); + +#ifdef %swig_deque_methods_val + // Add swig/language extra methods + %swig_deque_methods_val(std::deque< _Tp*, _Alloc >); +#endif + + %std_deque_methods_val(deque); + }; + +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_except.i b/qrenderdoc/3rdparty/swig/Lib/std/std_except.i new file mode 100644 index 000000000..728b9c8b5 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_except.i @@ -0,0 +1,73 @@ +#if defined(SWIGJAVA) || defined(SWIGCSHARP) +#error "do not use this version of std_except.i" +#endif + +%{ +#include <typeinfo> +#include <stdexcept> +%} + +#if defined(SWIG_STD_EXCEPTIONS_AS_CLASSES) + +namespace std { + struct exception + { + virtual ~exception() throw(); + virtual const char* what() const throw(); + }; + + struct bad_cast : exception + { + }; + + struct bad_exception : exception + { + }; + + struct logic_error : exception + { + logic_error(const string& msg); + }; + + struct domain_error : logic_error + { + domain_error(const string& msg); + }; + + struct invalid_argument : logic_error + { + invalid_argument(const string& msg); + }; + + struct length_error : logic_error + { + length_error(const string& msg); + }; + + struct out_of_range : logic_error + { + out_of_range(const string& msg); + }; + + struct runtime_error : exception + { + runtime_error(const string& msg); + }; + + struct range_error : runtime_error + { + range_error(const string& msg); + }; + + struct overflow_error : runtime_error + { + overflow_error(const string& msg); + }; + + struct underflow_error : runtime_error + { + underflow_error(const string& msg); + }; +} + +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_ios.i b/qrenderdoc/3rdparty/swig/Lib/std/std_ios.i new file mode 100644 index 000000000..db83c7abf --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_ios.i @@ -0,0 +1,262 @@ +%include <std_char_traits.i> +%include <std_basic_string.i> +%include <std_except.i> +%{ +#ifndef SWIG_STD_NOMODERN_STL +# include <ios> +#else +# include <streambuf.h> +#endif +%} + +namespace std { + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_streambuf; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_istream; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_ostream; + + // 27.4.2 Class ios_base + typedef size_t streamsize; + + class locale; + + + class ios_base + { + public: + +#ifdef SWIG_NESTED_CLASSES + // 27.4.2.1.1 Class ios_base::failure + class failure : public exception + { + public: + explicit failure(const string& __str) throw(); + }; +#endif + + // 27.4.2.1.2 Type ios_base::fmtflags + typedef int fmtflags; + // 27.4.2.1.2 Type fmtflags + static const fmtflags boolalpha ; + static const fmtflags dec ; + static const fmtflags fixed ; + static const fmtflags hex ; + static const fmtflags internal ; + static const fmtflags left ; + static const fmtflags oct ; + static const fmtflags right ; + static const fmtflags scientific ; + static const fmtflags showbase ; + static const fmtflags showpoint ; + static const fmtflags showpos ; + static const fmtflags skipws ; + static const fmtflags unitbuf ; + static const fmtflags uppercase ; + static const fmtflags adjustfield ; + static const fmtflags basefield ; + static const fmtflags floatfield ; + + // 27.4.2.1.3 Type ios_base::iostate + typedef int iostate; + static const iostate badbit ; + static const iostate eofbit ; + static const iostate failbit ; + static const iostate goodbit ; + + // 27.4.2.1.4 Type openmode + typedef int openmode; + static const openmode app ; + static const openmode ate ; + static const openmode binary ; + static const openmode in ; + static const openmode out ; + static const openmode trunc ; + + // 27.4.2.1.5 Type seekdir + typedef int seekdir; + static const seekdir beg ; + static const seekdir cur ; + static const seekdir end ; + + + // Callbacks; + enum event + { + erase_event, + imbue_event, + copyfmt_event + }; + + typedef void (*event_callback) (event, ios_base&, int); + + void + register_callback(event_callback __fn, int __index); + + // Fmtflags state: + inline fmtflags + flags() const ; + + inline fmtflags + flags(fmtflags __fmtfl); + + inline fmtflags + setf(fmtflags __fmtfl); + + inline fmtflags + setf(fmtflags __fmtfl, fmtflags __mask); + + inline void + unsetf(fmtflags __mask) ; + + inline streamsize + precision() const ; + + inline streamsize + precision(streamsize __prec); + + inline streamsize + width() const ; + + inline streamsize + width(streamsize __wide); + + static bool + sync_with_stdio(bool __sync = true); + + // Locales: + locale + imbue(const locale& __loc); + + inline locale + getloc() const { return _M_ios_locale; } + + // Storage: + static int + xalloc() throw(); + + inline long& + iword(int __ix); + + inline void*& + pword(int __ix); + + // Destructor + ~ios_base(); + + protected: + ios_base(); + + //50. Copy constructor and assignment operator of ios_base + private: + ios_base(const ios_base&); + + ios_base& + operator=(const ios_base&); + }; + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_ios : public ios_base + { + public: + // Types: + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + public: + + iostate + rdstate() const; + + void + clear(iostate __state = goodbit); + + void + setstate(iostate __state); + + bool + good() const; + + bool + eof() const; + + bool + fail() const; + + bool + bad() const; + + iostate + exceptions() const; + + void + exceptions(iostate __except); + + // Constructor/destructor: + explicit + basic_ios(basic_streambuf<_CharT, _Traits>* __sb) : ios_base(); + + virtual + ~basic_ios() ; + + // Members: + basic_ostream<_CharT, _Traits>* + tie() const; + + basic_ostream<_CharT, _Traits>* + tie(basic_ostream<_CharT, _Traits>* __tiestr); + + basic_streambuf<_CharT, _Traits>* + rdbuf() const; + + basic_streambuf<_CharT, _Traits>* + rdbuf(basic_streambuf<_CharT, _Traits>* __sb); + + basic_ios& + copyfmt(const basic_ios& __rhs); + + char_type + fill() const; + + char_type + fill(char_type __ch); + + // Locales: + locale + imbue(const locale& __loc); + + char + narrow(char_type __c, char __dfault) const; + + char_type + widen(char __c) const; + + protected: + // 27.4.5.1 basic_ios constructors + basic_ios(); + private: + basic_ios(const basic_ios&); + + basic_ios& + operator=(const basic_ios&); + }; + +} + +namespace std { + typedef basic_ios<char> ios; + %template(ios) basic_ios<char>; +#if defined(SWIG_WCHAR) + typedef basic_ios<wchar_t> wios; + %template(wios) basic_ios<wchar_t>; +#endif +} + + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_iostream.i b/qrenderdoc/3rdparty/swig/Lib/std/std_iostream.i new file mode 100644 index 000000000..7a33afe39 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_iostream.i @@ -0,0 +1,339 @@ +/* + For wchar support, you need to include the wchar.i file + before this file, ie: + + %include <wchar.i> + %include <std_iostream.i> + + or equivalently, just include + + %include <std_wiostream.i> +*/ + +%include <std_ios.i> +%include <std_basic_string.i> +%include <std_string.i> +#if defined(SWIG_WCHAR) +%include <std_wstring.i> +#endif + +%{ +#include <iostream> +%} + + +namespace std +{ + // 27.6.2.1 Template class basic_ostream + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_ostream : virtual public basic_ios<_CharT, _Traits> + { + public: + // Types (inherited from basic_ios (27.4.4)): + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + // 27.6.2.2 Constructor/destructor: + explicit + basic_ostream(basic_streambuf<_CharT, _Traits>* __sb); + + virtual + ~basic_ostream(); + + // 27.6.2.5 Formatted output: + // 27.6.2.5.3 basic_ostream::operator<< + basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& (*__pf)(basic_ostream<_CharT, _Traits>&)); + + + basic_ostream<_CharT, _Traits>& + operator<<(basic_ios<_CharT, _Traits>& (*__pf)(basic_ios<_CharT, _Traits>&)); + + + basic_ostream<_CharT, _Traits>& + operator<<(ios_base& (*__pf) (ios_base&)); + + // 27.6.2.5.2 Arithmetic Inserters + + basic_ostream<_CharT, _Traits>& + operator<<(long __n); + + basic_ostream<_CharT, _Traits>& + operator<<(unsigned long __n); + + basic_ostream<_CharT, _Traits>& + operator<<(bool __n); + + basic_ostream<_CharT, _Traits>& + operator<<(short __n); + + basic_ostream<_CharT, _Traits>& + operator<<(unsigned short __n); + + basic_ostream<_CharT, _Traits>& + operator<<(int __n); + + basic_ostream<_CharT, _Traits>& + operator<<(unsigned int __n); + + basic_ostream<_CharT, _Traits>& + operator<<(long long __n); + + basic_ostream<_CharT, _Traits>& + operator<<(unsigned long long __n); + + basic_ostream<_CharT, _Traits>& + operator<<(double __f); + + basic_ostream<_CharT, _Traits>& + operator<<(float __f); + + basic_ostream<_CharT, _Traits>& + operator<<(long double __f); + + basic_ostream<_CharT, _Traits>& + operator<<(const void* __p); + + basic_ostream<_CharT, _Traits>& + operator<<(basic_streambuf<_CharT, _Traits>* __sb); + + %extend { + std::basic_ostream<_CharT, _Traits >& + operator<<(const std::basic_string<_CharT,_Traits, std::allocator<_CharT> >& s) + { + *self << s; + return *self; + } + } + + // Unformatted output: + basic_ostream<_CharT, _Traits>& + put(char_type __c); + + basic_ostream<_CharT, _Traits>& + write(const char_type* __s, streamsize __n); + + basic_ostream<_CharT, _Traits>& + flush(); + + // Seeks: + pos_type + tellp(); + + basic_ostream<_CharT, _Traits>& + seekp(pos_type); + + basic_ostream<_CharT, _Traits>& + seekp(off_type, ios_base::seekdir); + + }; + + // 27.6.1.1 Template class basic_istream + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_istream : virtual public basic_ios<_CharT, _Traits> + { + public: + // Types (inherited from basic_ios (27.4.4)): + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + + public: + // 27.6.1.1.1 Constructor/destructor: + explicit + basic_istream(basic_streambuf<_CharT, _Traits>* __sb); + + virtual + ~basic_istream(); + + // 27.6.1.2.3 basic_istream::operator>> + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& (*__pf)(basic_istream<_CharT, _Traits>&)); + + basic_istream<_CharT, _Traits>& + operator>>(basic_ios<_CharT, _Traits>& (*__pf)(basic_ios<_CharT, _Traits>&)); + + basic_istream<_CharT, _Traits>& + operator>>(ios_base& (*__pf)(ios_base&)); + + // 27.6.1.2.2 Arithmetic Extractors + basic_istream<_CharT, _Traits>& + operator>>(bool& __n); + + basic_istream<_CharT, _Traits>& + operator>>(short& __n); + + basic_istream<_CharT, _Traits>& + operator>>(unsigned short& __n); + + basic_istream<_CharT, _Traits>& + operator>>(int& __n); + + basic_istream<_CharT, _Traits>& + operator>>(unsigned int& __n); + + basic_istream<_CharT, _Traits>& + operator>>(long& __n); + + basic_istream<_CharT, _Traits>& + operator>>(unsigned long& __n); + + basic_istream<_CharT, _Traits>& + operator>>(long long& __n); + + basic_istream<_CharT, _Traits>& + operator>>(unsigned long long& __n); + + basic_istream<_CharT, _Traits>& + operator>>(float& __f); + + basic_istream<_CharT, _Traits>& + operator>>(double& __f); + + basic_istream<_CharT, _Traits>& + operator>>(long double& __f); + + basic_istream<_CharT, _Traits>& + operator>>(void*& __p); + + basic_istream<_CharT, _Traits>& + operator>>(basic_streambuf<_CharT, _Traits>* __sb); + + // 27.6.1.3 Unformatted input: + inline streamsize + gcount(void) const; + + int_type + get(void); + + basic_istream<_CharT, _Traits>& + get(char_type& __c); + + basic_istream<_CharT, _Traits>& + get(char_type* __s, streamsize __n, char_type __delim); + + inline basic_istream<_CharT, _Traits>& + get(char_type* __s, streamsize __n); + + basic_istream<_CharT, _Traits>& + get(basic_streambuf<_CharT, _Traits>& __sb, char_type __delim); + + inline basic_istream<_CharT, _Traits>& + get(basic_streambuf<_CharT, _Traits>& __sb); + + basic_istream<_CharT, _Traits>& + getline(char_type* __s, streamsize __n, char_type __delim); + + inline basic_istream<_CharT, _Traits>& + getline(char_type* __s, streamsize __n); + + basic_istream<_CharT, _Traits>& + ignore(streamsize __n = 1, int_type __delim = _Traits::eof()); + + int_type + peek(void); + + basic_istream<_CharT, _Traits>& + read(char_type* __s, streamsize __n); + + streamsize + readsome(char_type* __s, streamsize __n); + + basic_istream<_CharT, _Traits>& + putback(char_type __c); + + basic_istream<_CharT, _Traits>& + unget(void); + + int + sync(void); + + pos_type + tellg(void); + + basic_istream<_CharT, _Traits>& + seekg(pos_type); + + basic_istream<_CharT, _Traits>& + seekg(off_type, ios_base::seekdir); + }; + + // 27.6.1.5 Template class basic_iostream + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_iostream + : public basic_istream<_CharT, _Traits>, + public basic_ostream<_CharT, _Traits> + { + public: + typedef _CharT char_type; + typedef typename _Traits::int_type int_type; + typedef typename _Traits::pos_type pos_type; + typedef typename _Traits::off_type off_type; + typedef _Traits traits_type; + + explicit + basic_iostream(basic_streambuf<_CharT, _Traits>* __sb); + + virtual + ~basic_iostream(); + }; + + typedef basic_ostream<char> ostream ; + typedef basic_istream<char> istream; + typedef basic_iostream<char> iostream; + + extern istream cin; + extern ostream cout; + extern ostream cerr; + extern ostream clog; + +#if defined(SWIG_WCHAR) + typedef basic_ostream<wchar_t> wostream; + typedef basic_istream<wchar_t> wistream; + typedef basic_iostream<wchar_t> wiostream; + + extern wistream wcin; + extern wostream wcout; + extern wostream wcerr; + extern wostream wclog; +#endif + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + std::basic_ostream<_CharT, _Traits>& + endl(std::basic_ostream<_CharT, _Traits>&); + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + std::basic_ostream<_CharT, _Traits>& + ends(std::basic_ostream<_CharT, _Traits>&); + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + std::basic_ostream<_CharT, _Traits>& + flush(std::basic_ostream<_CharT, _Traits>&); +} + +namespace std { + %template(ostream) basic_ostream<char>; + %template(istream) basic_istream<char>; + %template(iostream) basic_iostream<char>; + + %template(endl) endl<char, std::char_traits<char> >; + %template(ends) ends<char, std::char_traits<char> >; + %template(flush) flush<char, std::char_traits<char> >; + +#if defined(SWIG_WCHAR) + %template(wostream) basic_ostream<wchar_t>; + %template(wistream) basic_istream<wchar_t>; + %template(wiostream) basic_iostream<wchar_t>; + + %template(wendl) endl<wchar_t, std::char_traits<wchar_t> >; + %template(wends) ends<wchar_t, std::char_traits<wchar_t> >; + %template(wflush) flush<wchar_t, std::char_traits<wchar_t> >; +#endif +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_list.i b/qrenderdoc/3rdparty/swig/Lib/std/std_list.i new file mode 100644 index 000000000..ebbafa22b --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_list.i @@ -0,0 +1,148 @@ +// +// std::list +// + +%include <std_container.i> + +// List + +%define %std_list_methods(list...) + %std_sequence_methods(list) + + void pop_front(); + void push_front(const value_type& x); + + void reverse(); + +%enddef + + +%define %std_list_methods_val(list...) + %std_sequence_methods_val(list) + + void pop_front(); + void push_front(value_type x); + + void remove(value_type x); + void unique(); + void reverse(); + void sort(); + + void merge(list& x); +%enddef + +// ------------------------------------------------------------------------ +// std::list +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::list<T>), f(const std::list<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::list<T> can be passed. +// -- f(std::list<T>&), f(std::list<T>*): +// the parameter may be modified; therefore, only a wrapped std::list +// can be passed. +// -- std::list<T> f(), const std::list<T>& f(): +// the list is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::list<T>& f(), std::list<T>* f(): +// the list is returned by reference; therefore, a wrapped std::list +// is returned +// -- const std::list<T>* f(), f(const std::list<T>*): +// for consistency, they expect and return a plain list pointer. +// ------------------------------------------------------------------------ + +%{ +#include <list> +%} + +// exported classes + +namespace std { + + template<class _Tp, class _Alloc = allocator< _Tp > > + class list { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::list< _Tp, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdListTraits") { + namespace swig { + template <> struct traits<std::list< _Tp, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::list<" #_Tp ", " #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_LIST, std::list< _Tp, _Alloc >); + +#ifdef %swig_list_methods + // Add swig/language extra methods + %swig_list_methods(std::list< _Tp, _Alloc >); +#endif + + %std_list_methods(list); + }; + + template<class _Tp, class _Alloc > + class list< _Tp*, _Alloc> { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type reference; + typedef value_type const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::list< _Tp*, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdListTraits") { + namespace swig { + template <> struct traits<std::list< _Tp*, _Alloc > > { + typedef value_category category; + static const char* type_name() { + return "std::list<" #_Tp " *," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_LIST, std::list< _Tp*, _Alloc >); + +#ifdef %swig_list_methods_val + // Add swig/language extra methods + %swig_list_methods_val(std::list< _Tp*, _Alloc >); +#endif + + %std_list_methods_val(list); + }; + +} + +%define %std_extequal_list(...) +%extend std::list< __VA_ARGS__ > { + void remove(const value_type& x) { self->remove(x); } + void merge(std::list< __VA_ARGS__ >& x){ self->merge(x); } + void unique() { self->unique(); } + void sort() { self->sort(); } +} +%enddef + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_map.i b/qrenderdoc/3rdparty/swig/Lib/std/std_map.i new file mode 100644 index 000000000..8043f924c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_map.i @@ -0,0 +1,126 @@ +// +// std::map +// + +%include <std_pair.i> +%include <std_container.i> + +%define %std_map_methods_common(map...) + %std_container_methods(map); + + size_type erase(const key_type& x); + size_type count(const key_type& x) const; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + void erase(iterator position) { $self->erase(position); } + void erase(iterator first, iterator last) { $self->erase(first, last); } +} + + iterator find(const key_type& x); + iterator lower_bound(const key_type& x); + iterator upper_bound(const key_type& x); +#endif +%enddef + +%define %std_map_methods(map...) + %std_map_methods_common(map); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +// iterator insert(const value_type& x); + #endif +%enddef + + +// ------------------------------------------------------------------------ +// std::map +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::map<T>), f(const std::map<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::map<T> can be passed. +// -- f(std::map<T>&), f(std::map<T>*): +// the parameter may be modified; therefore, only a wrapped std::map +// can be passed. +// -- std::map<T> f(), const std::map<T>& f(): +// the map is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::map<T>& f(), std::map<T>* f(): +// the map is returned by reference; therefore, a wrapped std::map +// is returned +// -- const std::map<T>* f(), f(const std::map<T>*): +// for consistency, they expect and return a plain map pointer. +// ------------------------------------------------------------------------ + +%{ +#include <map> +%} +%fragment("<algorithm>"); +%fragment("<stdexcept>"); + +// exported class + +namespace std { + + template<class _Key, class _Tp, class _Compare = std::less<_Key >, + class _Alloc = allocator<std::pair< const _Key, _Tp > > > + class map { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair< const _Key, _Tp > value_type; + + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::pair< _Key, _Tp >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment=SWIG_Traits_frag(_Tp), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits<std::pair< _Key, _Tp > > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #_Key "," #_Tp " >"; + } + }; + } + } + + %fragment(SWIG_Traits_frag(std::map< _Key, _Tp, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(std::pair< _Key, _Tp >), + fragment="StdMapTraits") { + namespace swig { + template <> struct traits<std::map< _Key, _Tp, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::map<" #_Key "," #_Tp "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MAP, std::map< _Key, _Tp, _Compare, _Alloc >); + + map( const _Compare& ); + +#ifdef %swig_map_methods + // Add swig/language extra methods + %swig_map_methods(std::map< _Key, _Tp, _Compare, _Alloc >); +#endif + + %std_map_methods(map); + }; + +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_multimap.i b/qrenderdoc/3rdparty/swig/Lib/std/std_multimap.i new file mode 100644 index 000000000..7aa949907 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_multimap.i @@ -0,0 +1,101 @@ +// +// std::multimap +// + +%include <std_map.i> + + +%define %std_multimap_methods(mmap...) + %std_map_methods_common(mmap); + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + std::pair<iterator,iterator> equal_range(const key_type& x); + std::pair<const_iterator,const_iterator> equal_range(const key_type& x) const; +#endif +%enddef + +// ------------------------------------------------------------------------ +// std::multimap +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::multimap<T>), f(const std::multimap<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::multimap<T> can be passed. +// -- f(std::multimap<T>&), f(std::multimap<T>*): +// the parameter may be modified; therefore, only a wrapped std::multimap +// can be passed. +// -- std::multimap<T> f(), const std::multimap<T>& f(): +// the map is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::multimap<T>& f(), std::multimap<T>* f(): +// the map is returned by reference; therefore, a wrapped std::multimap +// is returned +// -- const std::multimap<T>* f(), f(const std::multimap<T>*): +// for consistency, they expect and return a plain map pointer. +// ------------------------------------------------------------------------ + + +// exported class + + +namespace std { + template<class _Key, class _Tp, class _Compare = std::less< _Key >, + class _Alloc = allocator<std::pair< const _Key, _Tp > > > + class multimap { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair< const _Key, _Tp > value_type; + + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::pair< _Key, _Tp >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment=SWIG_Traits_frag(_Tp), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits<std::pair< _Key, _Tp > > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #_Key "," #_Tp " >"; + } + }; + } + } + + %fragment(SWIG_Traits_frag(std::multimap< _Key, _Tp, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(std::pair< _Key, _Tp >), + fragment="StdMultimapTraits") { + namespace swig { + template <> struct traits<std::multimap< _Key, _Tp, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::multimap<" #_Key "," #_Tp "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MULTIMAP, std::multimap< _Key, _Tp, _Compare, _Alloc >); + + multimap( const _Compare& ); + +#ifdef %swig_multimap_methods + // Add swig/language extra methods + %swig_multimap_methods(std::multimap< _Key, _Tp, _Compare, _Alloc >); +#endif + + %std_multimap_methods(multimap); + }; +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_multiset.i b/qrenderdoc/3rdparty/swig/Lib/std/std_multiset.i new file mode 100644 index 000000000..1aa7ccce8 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_multiset.i @@ -0,0 +1,83 @@ +// +// std::multiset +// + +%include <std_set.i> + +// Multiset + +%define %std_multiset_methods(multiset...) + %std_set_methods_common(multiset); +%enddef + + +// ------------------------------------------------------------------------ +// std::multiset +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::multiset<T>), f(const std::multiset<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::multiset<T> can be passed. +// -- f(std::multiset<T>&), f(std::multiset<T>*): +// the parameter may be modified; therefore, only a wrapped std::multiset +// can be passed. +// -- std::multiset<T> f(), const std::multiset<T>& f(): +// the set is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::multiset<T>& f(), std::multiset<T>* f(): +// the set is returned by reference; therefore, a wrapped std::multiset +// is returned +// -- const std::multiset<T>* f(), f(const std::multiset<T>*): +// for consistency, they expect and return a plain set pointer. +// ------------------------------------------------------------------------ + + +// exported classes + +namespace std { + + //multiset + + template <class _Key, class _Compare = std::less< _Key >, + class _Alloc = allocator< _Key > > + class multiset { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key value_type; + typedef _Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + + %fragment(SWIG_Traits_frag(std::multiset< _Key, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment="StdMultisetTraits") { + namespace swig { + template <> struct traits<std::multiset< _Key, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::multiset<" #_Key "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MULTISET, std::multiset< _Key, _Compare, _Alloc >); + + multiset( const _Compare& ); + +#ifdef %swig_multiset_methods + // Add swig/language extra methods + %swig_multiset_methods(std::multiset< _Key, _Compare, _Alloc >); +#endif + + %std_multiset_methods(multiset); + }; +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_pair.i b/qrenderdoc/3rdparty/swig/Lib/std/std_pair.i new file mode 100644 index 000000000..001cd6738 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_pair.i @@ -0,0 +1,163 @@ +%include <std_common.i> + +%{ +#include <utility> +%} + + +namespace std { + template <class T, class U > struct pair { + typedef T first_type; + typedef U second_type; + + %traits_swigtype(T); + %traits_swigtype(U); + + %fragment(SWIG_Traits_frag(std::pair< T, U >), "header", + fragment=SWIG_Traits_frag(T), + fragment=SWIG_Traits_frag(U), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits<std::pair< T, U > > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #T "," #U " >"; + } + }; + } + } + +#ifndef SWIG_STD_PAIR_ASVAL + %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair< T, U >); +#else + %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair< T, U >); +#endif + + pair(); + pair(T first, U second); + pair(const pair& p); + + template <class U1, class U2> pair(const pair< U1, U2 > &p); + + T first; + U second; + +#ifdef %swig_pair_methods + // Add swig/language extra methods + %swig_pair_methods(std::pair< T, U >) +#endif + }; + + // *** + // The following specializations should disappear or get + // simplified when a 'const SWIGTYPE*&' can be defined + // *** + template <class T, class U > struct pair< T, U* > { + typedef T first_type; + typedef U* second_type; + + %traits_swigtype(T); + %traits_swigtype(U); + + %fragment(SWIG_Traits_frag(std::pair< T, U* >), "header", + fragment=SWIG_Traits_frag(T), + fragment=SWIG_Traits_frag(U), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits<std::pair< T, U* > > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #T "," #U " * >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair< T, U* >); + + pair(); + pair(T __a, U* __b); + pair(const pair& __p); + + T first; + U* second; + +#ifdef %swig_pair_methods + // Add swig/language extra methods + %swig_pair_methods(std::pair< T, U* >) +#endif + }; + + template <class T, class U > struct pair< T*, U > { + typedef T* first_type; + typedef U second_type; + + %traits_swigtype(T); + %traits_swigtype(U); + + %fragment(SWIG_Traits_frag(std::pair< T*, U >), "header", + fragment=SWIG_Traits_frag(T), + fragment=SWIG_Traits_frag(U), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits<std::pair< T*, U > > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #T " *," #U " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair< T*, U >); + + pair(); + pair(T* __a, U __b); + pair(const pair& __p); + + T* first; + U second; + +#ifdef %swig_pair_methods + // Add swig/language extra methods + %swig_pair_methods(std::pair< T*, U >) +#endif + }; + + template <class T, class U > struct pair< T*, U* > { + typedef T* first_type; + typedef U* second_type; + + %traits_swigtype(T); + %traits_swigtype(U); + + %fragment(SWIG_Traits_frag(std::pair< T*, U* >), "header", + fragment=SWIG_Traits_frag(T), + fragment=SWIG_Traits_frag(U), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits<std::pair< T*, U* > > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #T " *," #U " * >"; + } + }; + } + } + + %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair< T*, U* >); + + pair(); + pair(T* __a, U* __b); + pair(const pair& __p); + + T* first; + U* second; + +#ifdef %swig_pair_methods + // Add swig/language extra methods + %swig_pair_methods(std::pair< T*, U* >) +#endif + }; + +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_queue.i b/qrenderdoc/3rdparty/swig/Lib/std/std_queue.i new file mode 100644 index 000000000..b2c8d8d33 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_queue.i @@ -0,0 +1,129 @@ +/** + * @file std_queue.i + * @date Sun May 6 01:48:07 2007 + * + * @brief A wrapping of std::queue for Ruby. + * + * + */ + +%include <std_container.i> + +// Queue + +%define %std_queue_methods(queue...) + queue(); + queue( const _Sequence& ); + + bool empty() const; + size_type size() const; + const value_type& front() const; + const value_type& back() const; + void pop(); + void push( const value_type& ); +%enddef + +%define %std_queue_methods_val(queue...) + %std_queue_methods(queue) +%enddef + +// ------------------------------------------------------------------------ +// std::queue +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::queue<T>), f(const std::queue<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::queue<T> can be passed. +// -- f(std::queue<T>&), f(std::queue<T>*): +// the parameter may be modified; therefore, only a wrapped std::queue +// can be passed. +// -- std::queue<T> f(), const std::queue<T>& f(): +// the queue is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::queue<T>& f(), std::queue<T>* f(): +// the queue is returned by reference; therefore, a wrapped std::queue +// is returned +// -- const std::queue<T>* f(), f(const std::queue<T>*): +// for consistency, they expect and return a plain queue pointer. +// ------------------------------------------------------------------------ + +%{ +#include <queue> +%} + +// exported classes + +namespace std { + + template<class _Tp, class _Sequence = std::deque< _Tp > > + class queue { + public: + typedef size_t size_type; + typedef _Tp value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Sequence container_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::queue< _Tp, _Sequence >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdQueueTraits") { + namespace swig { + template <> struct traits<std::queue< _Tp, _Sequence > > { + typedef pointer_category category; + static const char* type_name() { + return "std::queue<" #_Tp "," #_Sequence " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_QUEUE, std::queue< _Tp, _Sequence >); + +#ifdef %swig_queue_methods + // Add swig/language extra methods + %swig_queue_methods(std::queue< _Tp, _Sequence >); +#endif + + %std_queue_methods(queue); + }; + + template<class _Tp, class _Sequence > + class queue< _Tp*, _Sequence > { + public: + typedef size_t size_type; + typedef _Tp value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Sequence container_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::queue< _Tp*, _Sequence >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdQueueTraits") { + namespace swig { + template <> struct traits<std::queue< _Tp*, _Sequence > > { + typedef value_category category; + static const char* type_name() { + return "std::queue<" #_Tp "," #_Sequence " * >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_QUEUE, std::queue< _Tp*, _Sequence >); + +#ifdef %swig_queue_methods_val + // Add swig/language extra methods + %swig_queue_methods_val(std::queue< _Tp*, _Sequence >); +#endif + + %std_queue_methods_val(queue); + }; + +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_set.i b/qrenderdoc/3rdparty/swig/Lib/std/std_set.i new file mode 100644 index 000000000..107a23c71 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_set.i @@ -0,0 +1,122 @@ +// +// std::set +// + +%include <std_container.i> +%include <std_pair.i> + +// Set +%define %std_set_methods_common(set...) + set(); + set( const set& ); + + bool empty() const; + size_type size() const; + void clear(); + + void swap(set& v); + + + size_type erase(const key_type& x); + size_type count(const key_type& x) const; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + class iterator; + class reverse_iterator; + + iterator begin(); + iterator end(); + reverse_iterator rbegin(); + reverse_iterator rend(); + +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + void erase(iterator pos) { $self->erase(pos); } + void erase(iterator first, iterator last) { $self->erase(first, last); } +} + + iterator find(const key_type& x); + iterator lower_bound(const key_type& x); + iterator upper_bound(const key_type& x); + std::pair<iterator,iterator> equal_range(const key_type& x); +#endif +%enddef + +%define %std_set_methods(set...) + %std_set_methods_common(set); +#ifdef SWIG_EXPORT_ITERATOR_METHODS + std::pair<iterator,bool> insert(const value_type& __x); +#endif +%enddef + +// ------------------------------------------------------------------------ +// std::set +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::set<T>), f(const std::set<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::set<T> can be passed. +// -- f(std::set<T>&), f(std::set<T>*): +// the parameter may be modified; therefore, only a wrapped std::set +// can be passed. +// -- std::set<T> f(), const std::set<T>& f(): +// the set is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::set<T>& f(), std::set<T>* f(): +// the set is returned by reference; therefore, a wrapped std::set +// is returned +// -- const std::set<T>* f(), f(const std::set<T>*): +// for consistency, they expect and return a plain set pointer. +// ------------------------------------------------------------------------ + +%{ +#include <set> +%} + +// exported classes + +namespace std { + + template <class _Key, class _Compare = std::less< _Key >, + class _Alloc = allocator< _Key > > + class set { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key value_type; + typedef _Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + + %fragment(SWIG_Traits_frag(std::set< _Key, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment="StdSetTraits") { + namespace swig { + template <> struct traits<std::set< _Key, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::set<" #_Key "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_SET, std::set< _Key, _Compare, _Alloc >); + + set( const _Compare& ); + +#ifdef %swig_set_methods + // Add swig/language extra methods + %swig_set_methods(std::set< _Key, _Compare, _Alloc >); +#endif + + %std_set_methods(set); + }; +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_sstream.i b/qrenderdoc/3rdparty/swig/Lib/std/std_sstream.i new file mode 100644 index 000000000..12bccef2e --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_sstream.i @@ -0,0 +1,195 @@ +/* + For wchar support, you need to include the wchar.i file + before this file, ie: + + %include <wchar.i> + %include <std_sstream.i> + + or equivalently, just include + + %include <std_wsstream.i> +*/ + +%include <std_alloc.i> +%include <std_basic_string.i> +%include <std_string.i> +%include <std_ios.i> +#if defined(SWIG_WCHAR) +%include <std_wstring.i> +#endif +%include <std_streambuf.i> +%include <std_iostream.i> + +%{ +#include <sstream> +%} + + +namespace std +{ + template<typename _CharT, typename _Traits = char_traits<_CharT>, + typename _Alloc = allocator<_CharT> > + class basic_stringbuf : public basic_streambuf<_CharT, _Traits> + { + public: + // Types: + typedef _CharT char_type; + typedef _Traits traits_type; +// 251. basic_stringbuf missing allocator_type + typedef _Alloc allocator_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + public: + // Constructors: + explicit + basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out); + + explicit + basic_stringbuf(const basic_string<_CharT, _Traits, _Alloc>& __str, + ios_base::openmode __mode = ios_base::in | ios_base::out); + + // Get and set: + basic_string<_CharT, _Traits, _Alloc> + str() const; + + void + str(const basic_string<_CharT, _Traits, _Alloc>& __s); + + }; + + + // 27.7.2 Template class basic_istringstream + template<typename _CharT, typename _Traits = char_traits<_CharT>, + typename _Alloc = allocator<_CharT> > + class basic_istringstream : public basic_istream<_CharT, _Traits> + { + public: + // Types: + typedef _CharT char_type; + typedef _Traits traits_type; +// 251. basic_stringbuf missing allocator_type + typedef _Alloc allocator_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + + public: + // Constructors: + explicit + basic_istringstream(ios_base::openmode __mode = ios_base::in); + + explicit + basic_istringstream(const basic_string<_CharT, _Traits, _Alloc>& __str, + ios_base::openmode __mode = ios_base::in); + + ~basic_istringstream(); + + // Members: + basic_stringbuf<_CharT, _Traits, _Alloc>* + rdbuf() const; + + basic_string<_CharT, _Traits, _Alloc> + str() const; + + void + str(const basic_string<_CharT, _Traits, _Alloc>& __s); + }; + + + // 27.7.3 Template class basic_ostringstream + template<typename _CharT, typename _Traits = char_traits<_CharT>, + typename _Alloc = allocator<_CharT> > + class basic_ostringstream : public basic_ostream<_CharT, _Traits> + { + public: + // Types: + typedef _CharT char_type; + typedef _Traits traits_type; +// 251. basic_stringbuf missing allocator_type + typedef _Alloc allocator_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + + public: + // Constructors/destructor: + explicit + basic_ostringstream(ios_base::openmode __mode = ios_base::out); + + explicit + basic_ostringstream(const basic_string<_CharT, _Traits, _Alloc>& __str, + ios_base::openmode __mode = ios_base::out); + + ~basic_ostringstream(); + + // Members: + basic_stringbuf<_CharT, _Traits, _Alloc>* + rdbuf() const; + + basic_string<_CharT, _Traits, _Alloc> + str() const; + +#if 0 + void + str(const basic_string<_CharT, _Traits, _Alloc>& __s); +#endif + }; + + + // 27.7.4 Template class basic_stringstream + template<typename _CharT, typename _Traits = char_traits<_CharT>, + typename _Alloc = allocator<_CharT> > + class basic_stringstream : public basic_iostream<_CharT, _Traits> + { + public: + // Types: + typedef _CharT char_type; + typedef _Traits traits_type; +// 251. basic_stringbuf missing allocator_type + typedef _Alloc allocator_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + public: + // Constructors/destructors + explicit + basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in); + + explicit + basic_stringstream(const basic_string<_CharT, _Traits, _Alloc>& __str, + ios_base::openmode __m = ios_base::out | ios_base::in); + + ~basic_stringstream(); + + // Members: + basic_stringbuf<_CharT, _Traits, _Alloc>* + rdbuf() const; + + basic_string<_CharT, _Traits, _Alloc> + str() const; + + void + str(const basic_string<_CharT, _Traits, _Alloc>& __s); + }; + + +} // namespace std + + +namespace std { + %template(istringstream) basic_istringstream<char>; + %template(ostringstream) basic_ostringstream<char>; + %template(stringstream) basic_stringstream<char>; + + +#if defined(SWIG_WCHAR) + %template(wistringstream) basic_istringstream<wchar_t>; + %template(wostringstream) basic_ostringstream<wchar_t>; + %template(wstringstream) basic_stringstream<wchar_t>; +#endif +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_stack.i b/qrenderdoc/3rdparty/swig/Lib/std/std_stack.i new file mode 100644 index 000000000..5b624b571 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_stack.i @@ -0,0 +1,128 @@ +/** + * @file std_stack.i + * @date Sun May 6 01:48:07 2007 + * + * @brief A wrapping of std::stack for Ruby. + * + * + */ + +%include <std_container.i> + +// Stack + +%define %std_stack_methods(stack...) + stack(); + stack( const _Sequence& ); + + bool empty() const; + size_type size() const; + const value_type& top() const; + void pop(); + void push( const value_type& ); +%enddef + +%define %std_stack_methods_val(stack...) + %std_stack_methods(stack) +%enddef + +// ------------------------------------------------------------------------ +// std::stack +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::stack<T>), f(const std::stack<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::stack<T> can be passed. +// -- f(std::stack<T>&), f(std::stack<T>*): +// the parameter may be modified; therefore, only a wrapped std::stack +// can be passed. +// -- std::stack<T> f(), const std::stack<T>& f(): +// the stack is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::stack<T>& f(), std::stack<T>* f(): +// the stack is returned by reference; therefore, a wrapped std::stack +// is returned +// -- const std::stack<T>* f(), f(const std::stack<T>*): +// for consistency, they expect and return a plain stack pointer. +// ------------------------------------------------------------------------ + +%{ +#include <stack> +%} + +// exported classes + +namespace std { + + template<class _Tp, class _Sequence = std::deque< _Tp > > + class stack { + public: + typedef size_t size_type; + typedef _Tp value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Sequence container_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::stack< _Tp, _Sequence >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdStackTraits") { + namespace swig { + template <> struct traits<std::stack< _Tp, _Sequence > > { + typedef pointer_category category; + static const char* type_name() { + return "std::stack<" #_Tp "," #_Sequence " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_STACK, std::stack< _Tp, _Sequence >); + +#ifdef %swig_stack_methods + // Add swig/language extra methods + %swig_stack_methods(std::stack< _Tp, _Sequence >); +#endif + + %std_stack_methods(stack); + }; + + template<class _Tp, class _Sequence > + class stack< _Tp*, _Sequence > { + public: + typedef size_t size_type; + typedef _Sequence::value_type value_type; + typedef value_type reference; + typedef value_type const_reference; + typedef _Sequence container_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::stack< _Tp*, _Sequence >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdStackTraits") { + namespace swig { + template <> struct traits<std::stack< _Tp*, _Sequence > > { + typedef value_category category; + static const char* type_name() { + return "std::stack<" #_Tp "," #_Sequence " * >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_STACK, std::stack< _Tp*, _Sequence >); + +#ifdef %swig_stack_methods_val + // Add swig/language extra methods + %swig_stack_methods_val(std::stack< _Tp*, _Sequence >); +#endif + + %std_stack_methods_val(stack); + }; + +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_streambuf.i b/qrenderdoc/3rdparty/swig/Lib/std/std_streambuf.i new file mode 100644 index 000000000..7efb19c6c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_streambuf.i @@ -0,0 +1,94 @@ +%include <std_ios.i> +%{ +#ifndef SWIG_STD_NOMODERN_STL +#include <streambuf> +#else +#include <streambuf.h> +#endif +%} + +namespace std { + + template<typename _CharT, typename _Traits = char_traits<_CharT> > + class basic_streambuf + { + public: + // Types: + typedef _CharT char_type; + typedef _Traits traits_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + + public: + virtual + ~basic_streambuf(); + + // Locales: + locale + pubimbue(const locale &__loc); + + locale + getloc() const; + + // Buffer and positioning: + basic_streambuf<_CharT, _Traits>* + pubsetbuf(char_type* __s, streamsize __n); + + pos_type + pubseekoff(off_type __off, ios_base::seekdir __way, + ios_base::openmode __mode = std::ios_base::in | std::ios_base::out); + + pos_type + pubseekpos(pos_type __sp, + ios_base::openmode __mode = std::ios_base::in | std::ios_base::out); + + int + pubsync() ; + + // Get and put areas: + // Get area: + streamsize + in_avail(); + + int_type + snextc(); + + int_type + sbumpc(); + + int_type + sgetc(); + + streamsize + sgetn(char_type* __s, streamsize __n); + + // Putback: + int_type + sputbackc(char_type __c); + + int_type + sungetc(); + + // Put area: + int_type + sputc(char_type __c); + + streamsize + sputn(const char_type* __s, streamsize __n); + + protected: + basic_streambuf(); + + private: + basic_streambuf(const basic_streambuf&); + + }; +} + +namespace std { + %template(streambuf) basic_streambuf<char>; +#if defined(SWIG_WCHAR) + %template(wstreambuf) basic_streambuf<wchar_t>; +#endif +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_string.i b/qrenderdoc/3rdparty/swig/Lib/std/std_string.i new file mode 100644 index 000000000..35fcdd16c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_string.i @@ -0,0 +1,13 @@ +%include <std/std_basic_string.i> + +/* plain strings */ + +namespace std +{ + %std_comp_methods(basic_string<char>); + %naturalvar string; + typedef basic_string<char> string; +} + + +%template(string) std::basic_string<char>; diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_map.i b/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_map.i new file mode 100644 index 000000000..1cb714821 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_map.i @@ -0,0 +1,129 @@ +// +// std::unordered_map +// Work in progress - the code is not compilable yet: +// operator--() and constructor(compare function) not available for unordered_ +// types +// + +%include <std_pair.i> +%include <std_container.i> + +%define %std_unordered_map_methods_common(unordered_map...) + %std_container_methods(unordered_map); + + size_type erase(const key_type& x); + size_type count(const key_type& x) const; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + void erase(iterator position) { $self->erase(position); } + void erase(iterator first, iterator last) { $self->erase(first, last); } +} + + iterator find(const key_type& x); + iterator lower_bound(const key_type& x); + iterator upper_bound(const key_type& x); +#endif +%enddef + +%define %std_unordered_map_methods(unordered_map...) + %std_unordered_map_methods_common(unordered_map); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +// iterator insert(const value_type& x); + #endif +%enddef + + +// ------------------------------------------------------------------------ +// std::unordered_map +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_map<T>), f(const std::unordered_map<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_map<T> can be passed. +// -- f(std::unordered_map<T>&), f(std::unordered_map<T>*): +// the parameter may be modified; therefore, only a wrapped std::unordered_map +// can be passed. +// -- std::unordered_map<T> f(), const std::unordered_map<T>& f(): +// the unordered_map is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::unordered_map<T>& f(), std::unordered_map<T>* f(): +// the unordered_map is returned by reference; therefore, a wrapped std::unordered_map +// is returned +// -- const std::unordered_map<T>* f(), f(const std::unordered_map<T>*): +// for consistency, they expect and return a plain unordered_map pointer. +// ------------------------------------------------------------------------ + +%{ +#include <unordered_map> +%} +%fragment("<algorithm>"); +%fragment("<stdexcept>"); + +// exported class + +namespace std { + + template<class _Key, class _Tp, class _Compare = std::less< _Key >, + class _Alloc = allocator<std::pair< const _Key, _Tp > > > + class unordered_map { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair< const _Key, _Tp > value_type; + + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::pair< _Key, _Tp >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment=SWIG_Traits_frag(_Tp), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits<std::pair< _Key, _Tp > > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #_Key "," #_Tp " >"; + } + }; + } + } + + %fragment(SWIG_Traits_frag(std::unordered_map< _Key, _Tp, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(std::pair< _Key, _Tp >), + fragment="StdMapTraits") { + namespace swig { + template <> struct traits<std::unordered_map< _Key, _Tp, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_map<" #_Key "," #_Tp "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MAP, std::unordered_map< _Key, _Tp, _Compare, _Alloc >); + + unordered_map( const _Compare& ); + +#ifdef %swig_unordered_map_methods + // Add swig/language extra methods + %swig_unordered_map_methods(std::unordered_map< _Key, _Tp, _Compare, _Alloc >); +#endif + + %std_unordered_map_methods(unordered_map); + }; + +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_multimap.i b/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_multimap.i new file mode 100644 index 000000000..46b56d88a --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_multimap.i @@ -0,0 +1,90 @@ +// +// std::unordered_multimap +// Work in progress - the code is not compilable yet: +// operator--() and constructor(compare function) not available for unordered_ +// types +// + +%include <std_unordered_map.i> + + +%define %std_unordered_multimap_methods(mmap...) + %std_map_methods_common(mmap); + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + std::pair<iterator,iterator> equal_range(const key_type& x); + std::pair<const_iterator,const_iterator> equal_range(const key_type& x) const; +#endif +%enddef + +// ------------------------------------------------------------------------ +// std::unordered_multimap +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_multimap<T>), f(const std::unordered_multimap<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_multimap<T> can be passed. +// -- f(std::unordered_multimap<T>&), f(std::unordered_multimap<T>*): +// the parameter may be modified; therefore, only a wrapped std::unordered_multimap +// can be passed. +// -- std::unordered_multimap<T> f(), const std::unordered_multimap<T>& f(): +// the map is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::unordered_multimap<T>& f(), std::unordered_multimap<T>* f(): +// the map is returned by reference; therefore, a wrapped std::unordered_multimap +// is returned +// -- const std::unordered_multimap<T>* f(), f(const std::unordered_multimap<T>*): +// for consistency, they expect and return a plain map pointer. +// ------------------------------------------------------------------------ + + +// exported class + + +namespace std { + template<class _Key, class _Tp, class _Compare = std::less< _Key >, + class _Alloc = allocator<std::pair< const _Key, _Tp > > > + class unordered_multimap { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair< const _Key, _Tp > value_type; + + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::unordered_multimap< _Key, _Tp, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(std::pair< _Key, _Tp >), + fragment="StdMultimapTraits") { + namespace swig { + template <> struct traits<std::unordered_multimap< _Key, _Tp, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_multimap<" #_Key "," #_Tp "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MULTIMAP, std::unordered_multimap< _Key, _Tp, _Compare, _Alloc >); + + unordered_multimap( const _Compare& ); + +#ifdef %swig_unordered_multimap_methods + // Add swig/language extra methods + %swig_unordered_multimap_methods(std::unordered_multimap< _Key, _Tp, _Compare, _Alloc >); +#endif + + %std_unordered_multimap_methods(unordered_multimap); + }; +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_multiset.i b/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_multiset.i new file mode 100644 index 000000000..725ca2fe7 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_multiset.i @@ -0,0 +1,86 @@ +// +// std::unordered_multiset +// Work in progress - the code is not compilable yet: +// operator--() and constructor(compare function) not available for unordered_ +// types +// + +%include <std_unordered_set.i> + +// Unordered Multiset + +%define %std_unordered_multiset_methods(unordered_multiset...) + %std_unordered_set_methods_common(unordered_multiset); +%enddef + + +// ------------------------------------------------------------------------ +// std::unordered_multiset +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_multiset<T>), f(const std::unordered_multiset<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_multiset<T> can be passed. +// -- f(std::unordered_multiset<T>&), f(std::unordered_multiset<T>*): +// the parameter may be modified; therefore, only a wrapped std::unordered_multiset +// can be passed. +// -- std::unordered_multiset<T> f(), const std::unordered_multiset<T>& f(): +// the set is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::unordered_multiset<T>& f(), std::unordered_multiset<T>* f(): +// the set is returned by reference; therefore, a wrapped std::unordered_multiset +// is returned +// -- const std::unordered_multiset<T>* f(), f(const std::unordered_multiset<T>*): +// for consistency, they expect and return a plain set pointer. +// ------------------------------------------------------------------------ + + +// exported classes + +namespace std { + + //unordered_multiset + + template <class _Key, class _Compare = std::less< _Key >, + class _Alloc = allocator< _Key > > + class unordered_multiset { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key value_type; + typedef _Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + + %fragment(SWIG_Traits_frag(std::unordered_multiset< _Key, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment="StdMultisetTraits") { + namespace swig { + template <> struct traits<std::unordered_multiset< _Key, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_multiset<" #_Key "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MULTISET, std::unordered_multiset< _Key, _Compare, _Alloc >); + + unordered_multiset( const _Compare& ); + +#ifdef %swig_unordered_multiset_methods + // Add swig/language extra methods + %swig_unordered_multiset_methods(std::unordered_multiset< _Key, _Compare, _Alloc >); +#endif + + %std_unordered_multiset_methods(unordered_multiset); + }; +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_set.i b/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_set.i new file mode 100644 index 000000000..98e792040 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_unordered_set.i @@ -0,0 +1,122 @@ +// +// std::unordered_set +// Work in progress - the code is not compilable yet: +// operator--() and constructor(compare function) not available for unordered_ +// types +// + +%include <std_container.i> +%include <std_pair.i> + +// Unordered Set +%define %std_unordered_set_methods_common(unordered_set...) + unordered_set(); + unordered_set( const unordered_set& ); + + bool empty() const; + size_type size() const; + void clear(); + + void swap(unordered_set& v); + + + size_type erase(const key_type& x); + size_type count(const key_type& x) const; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + class iterator; + + iterator begin(); + iterator end(); + +%extend { + // %extend wrapper used for differing definitions of these methods introduced in C++11 + void erase(iterator pos) { $self->erase(pos); } + void erase(iterator first, iterator last) { $self->erase(first, last); } +} + + iterator find(const key_type& x); + std::pair<iterator,iterator> equal_range(const key_type& x); +#endif +%enddef + +%define %std_unordered_set_methods(unordered_set...) + %std_unordered_set_methods_common(unordered_set); +#ifdef SWIG_EXPORT_ITERATOR_METHODS + std::pair<iterator,bool> insert(const value_type& __x); +#endif +%enddef + +// ------------------------------------------------------------------------ +// std::unordered_set +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_set<T>), f(const std::unordered_set<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_set<T> can be passed. +// -- f(std::unordered_set<T>&), f(std::unordered_set<T>*): +// the parameter may be modified; therefore, only a wrapped std::unordered_set +// can be passed. +// -- std::unordered_set<T> f(), const std::unordered_set<T>& f(): +// the unordered_set is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::unordered_set<T>& f(), std::unordered_set<T>* f(): +// the unordered_set is returned by reference; therefore, a wrapped std::unordered_set +// is returned +// -- const std::unordered_set<T>* f(), f(const std::unordered_set<T>*): +// for consistency, they expect and return a plain unordered_set pointer. +// ------------------------------------------------------------------------ + +%{ +#include <unordered_set> +%} + +// exported classes + +namespace std { + + template <class _Key, class _Hash = std::hash< _Key >, + class _Compare = std::equal_to< _Key >, + class _Alloc = allocator< _Key > > + class unordered_set { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Hash hasher; + typedef _Key value_type; + typedef _Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + + %fragment(SWIG_Traits_frag(std::unordered_set< _Key, _Hash, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment="StdUnorderedSetTraits") { + namespace swig { + template <> struct traits<std::unordered_set< _Key, _Hash, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_set<" #_Key "," #_Hash "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_SET, std::unordered_set< _Key, _Hash, _Compare, _Alloc >); + + unordered_set( const _Compare& ); + +#ifdef %swig_unordered_set_methods + // Add swig/language extra methods + %swig_unordered_set_methods(std::unordered_set< _Key, _Hash, _Compare, _Alloc >); +#endif + + %std_unordered_set_methods(unordered_set); + }; +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_vector.i b/qrenderdoc/3rdparty/swig/Lib/std/std_vector.i new file mode 100644 index 000000000..fae759a36 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_vector.i @@ -0,0 +1,225 @@ +// +// std::vector +// + +%include <std_container.i> + +// Vector + +%define %std_vector_methods(vector...) + %std_sequence_methods(vector) + + void reserve(size_type n); + size_type capacity() const; +%enddef + + +%define %std_vector_methods_val(vector...) + %std_sequence_methods_val(vector) + + void reserve(size_type n); + size_type capacity() const; +%enddef + + +// ------------------------------------------------------------------------ +// std::vector +// +// The aim of all that follows would be to integrate std::vector with +// as much as possible, namely, to allow the user to pass and +// be returned tuples or lists. +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::vector<T>), f(const std::vector<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::vector<T> can be passed. +// -- f(std::vector<T>&), f(std::vector<T>*): +// the parameter may be modified; therefore, only a wrapped std::vector +// can be passed. +// -- std::vector<T> f(), const std::vector<T>& f(): +// the vector is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::vector<T>& f(), std::vector<T>* f(): +// the vector is returned by reference; therefore, a wrapped std::vector +// is returned +// -- const std::vector<T>* f(), f(const std::vector<T>*): +// for consistency, they expect and return a plain vector pointer. +// ------------------------------------------------------------------------ + +%{ +#include <vector> +%} + +// exported classes + + +namespace std { + + template<class _Tp, class _Alloc = allocator< _Tp > > + class vector { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef _Tp& reference; + typedef const _Tp& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + %traits_enum(_Tp); + + %fragment(SWIG_Traits_frag(std::vector< _Tp, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdVectorTraits") { + namespace swig { + template <> struct traits<std::vector< _Tp, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::vector<" #_Tp "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector< _Tp, _Alloc >); + +#ifdef %swig_vector_methods + // Add swig/language extra methods + %swig_vector_methods(std::vector< _Tp, _Alloc >); +#endif + + %std_vector_methods(vector); + }; + + // *** + // This specialization should disappear or get simplified when + // a 'const SWIGTYPE*&' can be defined + // *** + template<class _Tp, class _Alloc > + class vector< _Tp*, _Alloc > { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type reference; + typedef value_type const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::vector< _Tp*, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdVectorTraits") { + namespace swig { + template <> struct traits<std::vector< _Tp*, _Alloc > > { + typedef value_category category; + static const char* type_name() { + return "std::vector<" #_Tp " *," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector< _Tp*, _Alloc >); + +#ifdef %swig_vector_methods_val + // Add swig/language extra methods + %swig_vector_methods_val(std::vector< _Tp*, _Alloc >); +#endif + + %std_vector_methods_val(vector); + }; + + // *** + // const pointer specialization + // *** + template<class _Tp, class _Alloc > + class vector< _Tp const *, _Alloc > { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp const * value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type reference; + typedef value_type const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::vector< _Tp const*, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Tp), + fragment="StdVectorTraits") { + namespace swig { + template <> struct traits<std::vector< _Tp const*, _Alloc > > { + typedef value_category category; + static const char* type_name() { + return "std::vector<" #_Tp " const*," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector< _Tp const*, _Alloc >); + +#ifdef %swig_vector_methods_val + // Add swig/language extra methods + %swig_vector_methods_val(std::vector< _Tp const*, _Alloc >); +#endif + + %std_vector_methods_val(vector); + }; + + // *** + // bool specialization + // *** + + template<class _Alloc > + class vector<bool,_Alloc > { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef bool value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type reference; + typedef value_type const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(bool); + + %fragment(SWIG_Traits_frag(std::vector<bool, _Alloc >), "header", + fragment=SWIG_Traits_frag(bool), + fragment="StdVectorTraits") { + namespace swig { + template <> struct traits<std::vector<bool, _Alloc > > { + typedef value_category category; + static const char* type_name() { + return "std::vector<bool, _Alloc >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<bool, _Alloc >); + + +#ifdef %swig_vector_methods_val + // Add swig/language extra methods + %swig_vector_methods_val(std::vector<bool, _Alloc >); +#endif + + %std_vector_methods_val(vector); + +#if defined(SWIG_STD_MODERN_STL) && !defined(SWIG_STD_NOMODERN_STL) + void flip(); +#endif + + }; + +} diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_vectora.i b/qrenderdoc/3rdparty/swig/Lib/std/std_vectora.i new file mode 100644 index 000000000..0e83dc9b1 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_vectora.i @@ -0,0 +1,7 @@ +// +// We keep this file only for backward compatibility, since std_vector.i +// now uses the std::allocator parameter. +// + +%include <std_vector.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_wios.i b/qrenderdoc/3rdparty/swig/Lib/std/std_wios.i new file mode 100644 index 000000000..e9c5dd4d6 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_wios.i @@ -0,0 +1,7 @@ +/* + Provide 'std_ios.i' with wchar support. +*/ + +%include <wchar.i> +%include <std_ios.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_wiostream.i b/qrenderdoc/3rdparty/swig/Lib/std/std_wiostream.i new file mode 100644 index 000000000..b9bef9037 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_wiostream.i @@ -0,0 +1,7 @@ +/* + Provide 'std_iostream.i' with wchar support. +*/ + +%include <wchar.i> +%include <std_iostream.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_wsstream.i b/qrenderdoc/3rdparty/swig/Lib/std/std_wsstream.i new file mode 100644 index 000000000..4c663fc45 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_wsstream.i @@ -0,0 +1,7 @@ +/* + Provide 'std_sstream.i' with wchar support. +*/ + +%include <wchar.i> +%include <std_sstream.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_wstreambuf.i b/qrenderdoc/3rdparty/swig/Lib/std/std_wstreambuf.i new file mode 100644 index 000000000..86ac6af6d --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_wstreambuf.i @@ -0,0 +1,7 @@ +/* + Provide 'std_streambuf.i' with wchar support. +*/ + +%include <wchar.i> +%include <std_streambuf.i> + diff --git a/qrenderdoc/3rdparty/swig/Lib/std/std_wstring.i b/qrenderdoc/3rdparty/swig/Lib/std/std_wstring.i new file mode 100644 index 000000000..e54d21200 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std/std_wstring.i @@ -0,0 +1,14 @@ +%include <wchar.i> +%include <std/std_basic_string.i> + +/* wide strings */ + +namespace std +{ + %std_comp_methods(basic_string<wchar_t>); + %naturalvar wstring; + typedef basic_string<wchar_t> wstring; +} + +%template(wstring) std::basic_string<wchar_t>; + diff --git a/qrenderdoc/3rdparty/swig/Lib/std_except.i b/qrenderdoc/3rdparty/swig/Lib/std_except.i new file mode 100644 index 000000000..50b5a88a2 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/std_except.i @@ -0,0 +1,57 @@ +/* ----------------------------------------------------------------------------- + * std_except.i + * + * SWIG library file with typemaps to handle and throw STD exceptions in a + * language and STL independent way, i.e., the target language doesn't + * require to support STL but only the 'exception.i' mechanism. + * + * These typemaps are used when methods are declared with an STD + * exception specification, such as + * + * size_t at() const throw (std::out_of_range); + * + * The typemaps here are based on the language independent + * 'exception.i' library. If that is working in your target language, + * this file will work. + * + * If the target language doesn't implement a robust 'exception.i' + * mechanism, or you prefer other ways to map the STD exceptions, write + * a new std_except.i file in the target library directory. + * ----------------------------------------------------------------------------- */ + +#if defined(SWIGJAVA) || defined(SWIGCSHARP) || defined(SWIGGUILE) || defined(SWIGUTL) || defined(SWIGD) +#error "This version of std_except.i should not be used" +#endif + +%{ +#include <typeinfo> +#include <stdexcept> +%} + +%include <exception.i> + + +%define %std_exception_map(Exception, Code) + %typemap(throws,noblock=1) Exception { + SWIG_exception(Code, $1.what()); + } + %ignore Exception; + struct Exception { + }; +%enddef + +namespace std { + %std_exception_map(bad_cast, SWIG_TypeError); + %std_exception_map(bad_exception, SWIG_SystemError); + %std_exception_map(domain_error, SWIG_ValueError); + %std_exception_map(exception, SWIG_SystemError); + %std_exception_map(invalid_argument, SWIG_ValueError); + %std_exception_map(length_error, SWIG_IndexError); + %std_exception_map(logic_error, SWIG_RuntimeError); + %std_exception_map(out_of_range, SWIG_IndexError); + %std_exception_map(overflow_error, SWIG_OverflowError); + %std_exception_map(range_error, SWIG_OverflowError); + %std_exception_map(runtime_error, SWIG_RuntimeError); + %std_exception_map(underflow_error, SWIG_OverflowError); +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/stdint.i b/qrenderdoc/3rdparty/swig/Lib/stdint.i new file mode 100644 index 000000000..14fe6195e --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/stdint.i @@ -0,0 +1,106 @@ +/* ----------------------------------------------------------------------------- + * stdint.i + * + * SWIG library file for ISO C99 types: 7.18 Integer types <stdint.h> + * ----------------------------------------------------------------------------- */ + +%{ +#include <stdint.h> // Use the C99 official header +%} + +%include <swigarch.i> + +/* Exact integral types. */ + +/* Signed. */ + +typedef signed char int8_t; +typedef short int int16_t; +typedef int int32_t; +#if defined(SWIGWORDSIZE64) +typedef long int int64_t; +#else +typedef long long int int64_t; +#endif + +/* Unsigned. */ +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; +typedef unsigned int uint32_t; +#if defined(SWIGWORDSIZE64) +typedef unsigned long int uint64_t; +#else +typedef unsigned long long int uint64_t; +#endif + + +/* Small types. */ + +/* Signed. */ +typedef signed char int_least8_t; +typedef short int int_least16_t; +typedef int int_least32_t; +#if defined(SWIGWORDSIZE64) +typedef long int int_least64_t; +#else +typedef long long int int_least64_t; +#endif + +/* Unsigned. */ +typedef unsigned char uint_least8_t; +typedef unsigned short int uint_least16_t; +typedef unsigned int uint_least32_t; +#if defined(SWIGWORDSIZE64) +typedef unsigned long int uint_least64_t; +#else +typedef unsigned long long int uint_least64_t; +#endif + + +/* Fast types. */ + +/* Signed. */ +typedef signed char int_fast8_t; +#if defined(SWIGWORDSIZE64) +typedef long int int_fast16_t; +typedef long int int_fast32_t; +typedef long int int_fast64_t; +#else +typedef int int_fast16_t; +typedef int int_fast32_t; +typedef long long int int_fast64_t; +#endif + +/* Unsigned. */ +typedef unsigned char uint_fast8_t; +#if defined(SWIGWORDSIZE64) +typedef unsigned long int uint_fast16_t; +typedef unsigned long int uint_fast32_t; +typedef unsigned long int uint_fast64_t; +#else +typedef unsigned int uint_fast16_t; +typedef unsigned int uint_fast32_t; +typedef unsigned long long int uint_fast64_t; +#endif + + +/* Types for `void *' pointers. */ +#if defined(SWIGWORDSIZE64) +typedef long int intptr_t; +typedef unsigned long int uintptr_t; +#else +typedef int intptr_t; +typedef unsigned int uintptr_t; +#endif + + +/* Largest integral types. */ +#if defined(SWIGWORDSIZE64) +typedef long int intmax_t; +typedef unsigned long int uintmax_t; +#else +typedef long long int intmax_t; +typedef unsigned long long int uintmax_t; +#endif + + diff --git a/qrenderdoc/3rdparty/swig/Lib/stl.i b/qrenderdoc/3rdparty/swig/Lib/stl.i new file mode 100644 index 000000000..0b236afda --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/stl.i @@ -0,0 +1,7 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +#warning "stl.i not implemented for this target" +#define SWIG_STL_UNIMPL + diff --git a/qrenderdoc/3rdparty/swig/Lib/swig.swg b/qrenderdoc/3rdparty/swig/Lib/swig.swg new file mode 100644 index 000000000..6f48f0d20 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/swig.swg @@ -0,0 +1,699 @@ +/* ----------------------------------------------------------------------------- + * swig.swg + * + * Common macro definitions for various SWIG directives. This file is always + * included at the top of each input file. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * User Directives + * ----------------------------------------------------------------------------- */ + +/* Deprecated SWIG-1.1 directives */ + +#define %disabledoc %warn "104:%disabledoc is deprecated" +#define %enabledoc %warn "105:%enabledoc is deprecated" +#define %doconly %warn "106:%doconly is deprecated" +#define %style %warn "107:%style is deprecated" /##/ +#define %localstyle %warn "108:%localstyle is deprecated" /##/ +#define %title %warn "109:%title is deprecated" /##/ +#define %section %warn "110:%section is deprecated" /##/ +#define %subsection %warn "111:%subsection is deprecated" /##/ +#define %subsubsection %warn "112:%subsubsection is deprecated" /##/ +#define %new %warn "117:%new is deprecated. Use %newobject" +#define %text %insert("null") + +/* Code insertion directives such as %wrapper %{ ... %} */ + +#define %begin %insert("begin") +#define %runtime %insert("runtime") +#define %header %insert("header") +#define %wrapper %insert("wrapper") +#define %init %insert("init") + +/* Class extension */ + +#define %addmethods %warn "113:%addmethods is now %extend" %extend + +/* %ignore directive */ + +#define %ignore %rename($ignore) +#define %ignorewarn(x) %rename("$ignore:" x) + +/* Access control directives */ + +#define %readonly %warn "114:%readonly is deprecated. Use %immutable; " %feature("immutable"); +#define %readwrite %warn "115:%readwrite is deprecated. Use %mutable; " %feature("immutable",""); + +#define %immutable %feature("immutable") +#define %noimmutable %feature("immutable","0") +#define %clearimmutable %feature("immutable","") +#define %mutable %clearimmutable + +/* Generation of default constructors/destructors (old form, don't use) */ +#define %nodefault %feature("nodefault","1") +#define %default %feature("nodefault","0") +#define %clearnodefault %feature("nodefault","") +#define %makedefault %clearnodefault + +/* Disable the generation of implicit default constructor */ +#define %nodefaultctor %feature("nodefaultctor","1") +#define %defaultctor %feature("nodefaultctor","0") +#define %clearnodefaultctor %feature("nodefaultctor","") + +/* Disable the generation of implicit default destructor (dangerous) */ +#define %nodefaultdtor %feature("nodefaultdtor","1") +#define %defaultdtor %feature("nodefaultdtor","0") +#define %clearnodefaultdtor %feature("nodefaultdtor","") + +/* Enable the generation of copy constructor */ +#define %copyctor %feature("copyctor","1") +#define %nocopyctor %feature("copyctor","0") +#define %clearcopyctor %feature("copyctor","") + +/* Force the old nodefault behavior, ie disable both constructor and destructor */ +#define %oldnodefault %feature("oldnodefault","1") +#define %nooldnodefault %feature("oldnodefault","0") +#define %clearoldnodefault %feature("oldnodefault","") + +/* the %exception directive */ +#if defined(SWIGCSHARP) || defined(SWIGD) +#define %exception %feature("except", canthrow=1) +#else +#define %exception %feature("except") +#endif +#define %noexception %feature("except","0") +#define %clearexception %feature("except","") + +/* the %allowexception directive allows the %exception feature to + be applied to set/get variable methods */ +#define %allowexception %feature("allowexcept") +#define %noallowexception %feature("allowexcept","0") +#define %clearallowexception %feature("allowexcept","") + +/* the %exceptionvar directive, as %exception but it is only applied + to set/get variable methods. You don't need to use the + %allowexception directive when using %exceptionvar. +*/ +#if defined(SWIGCSHARP) || defined(SWIGD) +#define %exceptionvar %feature("exceptvar", canthrow=1) +#else +#define %exceptionvar %feature("exceptvar") +#endif +#define %noexceptionvar %feature("exceptvar","0") +#define %clearexceptionvar %feature("exceptvar","") + +/* the %catches directive */ +#define %catches(tlist...) %feature("catches","("`tlist`")") +#define %clearcatches %feature("catches","") + +/* the %exceptionclass directive */ +#define %exceptionclass %feature("exceptionclass") +#define %noexceptionclass %feature("exceptionclass","0") +#define %clearexceptionclass %feature("exceptionclass","") + +/* the %newobject directive */ +#define %newobject %feature("new") +#define %nonewobject %feature("new","0") +#define %clearnewobject %feature("new","") + +/* the %delobject directive */ +#define %delobject %feature("del") +#define %nodelobject %feature("del","0") +#define %cleardelobject %feature("del","") + +/* the %refobject/%unrefobject directives */ +#define %refobject %feature("ref") +#define %norefobject %feature("ref","0") +#define %clearrefobject %feature("ref","") + +#define %unrefobject %feature("unref") +#define %nounrefobject %feature("unref","0") +#define %clearunrefobject %feature("unref","") + +/* Directives for callback functions (experimental) */ +#define %callback(x) %feature("callback",`x`) +#define %nocallback %feature("callback","0") +#define %clearcallback %feature("callback","") + +/* the %nestedworkaround directive (deprecated) */ +#define %nestedworkaround %feature("nestedworkaround") +#define %nonestedworkaround %feature("nestedworkaround","0") +#define %clearnestedworkaround %feature("nestedworkaround","") + +/* the %flatnested directive */ +#define %flatnested %feature("flatnested") +#define %noflatnested %feature("flatnested","0") +#define %clearflatnested %feature("flatnested","") + +/* the %fastdispatch directive */ +#define %fastdispatch %feature("fastdispatch") +#define %nofastdispatch %feature("fastdispatch","0") +#define %clearfastdispatch %feature("fastdispatch","") + +/* directors directives */ +#define %director %feature("director") +#define %nodirector %feature("director","0") +#define %cleardirector %feature("director","") + +/* naturalvar directives */ +#define %naturalvar %feature("naturalvar") +#define %nonaturalvar %feature("naturalvar","0") +#define %clearnaturalvar %feature("naturalvar","") + +/* nspace directives */ +#define %nspace %feature("nspace") +#define %nonspace %feature("nspace","0") +#define %clearnspace %feature("nspace","") + +/* valuewrapper directives */ +#define %valuewrapper %feature("valuewrapper") +#define %clearvaluewrapper %feature("valuewrapper","") +#define %novaluewrapper %feature("novaluewrapper") +#define %clearnovaluewrapper %feature("novaluewrapper","") + +/* Contract support - Experimental and undocumented */ +#define %contract %feature("contract") +#define %nocontract %feature("contract","0") +#define %clearcontract %feature("contract","") + +/* Macro for setting a dynamic cast function */ +%define DYNAMIC_CAST(mangle,func) +%init %{ + mangle->dcast = (swig_dycast_func) func; +%} +%enddef + +/* aggregation support */ +/* + This macro performs constant aggregation. Basically the idea of + constant aggregation is that you can group a collection of constants + together. For example, suppose you have some code like this: + + #define UP 1 + #define DOWN 2 + #define LEFT 3 + #define RIGHT 4 + + Now, suppose you had a function like this: + + int move(int direction) + + In this case, you might want to restrict the direction argument to + one of the supplied constant names. To do this, you could write some + typemap code by hand. Alternatively, you can use the + %aggregate_check macro defined here to create a simple check + function for you. Here is an example: + + %aggregate_check(int, check_direction, UP, DOWN, LEFT, RIGHT); + + Now, using a typemap + + %typemap(check) int direction { + if (!check_direction($1)) SWIG_exception(SWIG_ValueError,"Bad direction."); + } + + or a contract (better) + + %contract move(int x) { + require: + check_direction(x); + } + +*/ + +%define %aggregate_check(TYPE, NAME, FIRST, ...) +%wrapper %{ +static int NAME(TYPE x) { + static TYPE values[] = { FIRST, ##__VA_ARGS__ }; + static int size = sizeof(values); + int i,j; + for (i = 0, j = 0; i < size; i+=sizeof(TYPE),j++) { + if (x == values[j]) return 1; + } + return 0; +} +%} +%enddef + + +/* ----------------------------------------------------------------------------- + * %rename predicates + * ----------------------------------------------------------------------------- */ +/* + Predicates to be used with %rename, for example: + + - to rename all the functions: + + %rename("%(utitle)s", %$isfunction) ""; + + - to rename only the member methods: + + %rename("m_%(utitle)s", %$isfunction, %$ismember) ""; + + - to rename only the global functions: + + %rename("m_%(utitle)s", %$isfunction, %$not %$ismember) ""; + + or + + %rename("g_%(utitle)s", %$isfunction, %$isglobal) ""; + + - to ignore the enumitems in a given class: + + %rename("$ignore", %$isenumitem, %$classname="MyClass") ""; + + we use the prefix '%$' to avoid clashes with other swig + macros/directives. + +*/ + +%define %$not "not" %enddef +%define %$isenum "match"="enum" %enddef +%define %$isenumitem "match"="enumitem" %enddef +%define %$isaccess "match"="access" %enddef +%define %$isclass "match"="class","notmatch$template$templatetype"="class" %enddef +%define %$isextend "match"="extend" %enddef +%define %$isconstructor "match"="constructor" %enddef +%define %$isdestructor "match"="destructor" %enddef +%define %$isnamespace "match"="namespace" %enddef +%define %$istemplate "match"="template" %enddef +%define %$isconstant "match"="constant" %enddef /* %constant definition */ + +%define %$isunion "match$kind"="union" %enddef +%define %$isfunction "match$kind"="function" %enddef +%define %$isvariable "match$kind"="variable" %enddef +%define %$isimmutable "match$feature:immutable"="1" %enddef +%define %$hasconsttype "match$hasconsttype"="1" %enddef +%define %$hasvalue "match$hasvalue"="1" %enddef +%define %$isextension "match$isextension"="1" %enddef + +%define %$isstatic "match$storage"="static" %enddef +%define %$isfriend "match$storage"="friend" %enddef +%define %$istypedef "match$storage"="typedef" %enddef +%define %$isvirtual "match$storage"="virtual" %enddef +%define %$isexplicit "match$storage"="explicit" %enddef +%define %$isextern "match$storage"="extern" %enddef + +%define %$ismember "match$ismember"="1" %enddef +%define %$isglobal %$not %$ismember %enddef +%define %$isextendmember "match$isextendmember"="1" %enddef +%define %$innamespace "match$parentNode$nodeType"="namespace" %enddef + +%define %$ispublic "match$access"="public" %enddef +%define %$isprotected "match$access"="protected" %enddef +%define %$isprivate "match$access"="private" %enddef + +%define %$ismemberget "match$memberget"="1" %enddef +%define %$ismemberset "match$memberset"="1" %enddef + +%define %$classname %$ismember,"match$parentNode$name" %enddef +%define %$isnested "match$nested"="1" %enddef +/* ----------------------------------------------------------------------------- + * Include all the warnings labels and macros + * ----------------------------------------------------------------------------- */ + +%include <swigwarnings.swg> + +/* ----------------------------------------------------------------------------- + * Overloading support + * ----------------------------------------------------------------------------- */ + +/* + * Function/method overloading support. This is done through typemaps, + * but also involves a precedence level. + */ + +/* Macro for overload resolution */ + +%define %typecheck(_x...) %typemap(typecheck, precedence=_x) %enddef + +/* Macros for precedence levels */ + +%define SWIG_TYPECHECK_POINTER 0 %enddef +%define SWIG_TYPECHECK_ITERATOR 5 %enddef +%define SWIG_TYPECHECK_VOIDPTR 10 %enddef +%define SWIG_TYPECHECK_BOOL 15 %enddef +%define SWIG_TYPECHECK_UINT8 20 %enddef +%define SWIG_TYPECHECK_INT8 25 %enddef +%define SWIG_TYPECHECK_UINT16 30 %enddef +%define SWIG_TYPECHECK_INT16 35 %enddef +%define SWIG_TYPECHECK_UINT32 40 %enddef +%define SWIG_TYPECHECK_INT32 45 %enddef +%define SWIG_TYPECHECK_SIZE 47 %enddef +%define SWIG_TYPECHECK_PTRDIFF 48 %enddef +%define SWIG_TYPECHECK_UINT64 50 %enddef +%define SWIG_TYPECHECK_INT64 55 %enddef +%define SWIG_TYPECHECK_UINT128 60 %enddef +%define SWIG_TYPECHECK_INT128 65 %enddef +%define SWIG_TYPECHECK_INTEGER 70 %enddef +%define SWIG_TYPECHECK_FLOAT 80 %enddef +%define SWIG_TYPECHECK_DOUBLE 90 %enddef +%define SWIG_TYPECHECK_CPLXFLT 95 %enddef +%define SWIG_TYPECHECK_CPLXDBL 100 %enddef +%define SWIG_TYPECHECK_COMPLEX 105 %enddef +%define SWIG_TYPECHECK_UNICHAR 110 %enddef +%define SWIG_TYPECHECK_STDUNISTRING 115 %enddef +%define SWIG_TYPECHECK_UNISTRING 120 %enddef +%define SWIG_TYPECHECK_CHAR 130 %enddef +%define SWIG_TYPECHECK_STDSTRING 135 %enddef +%define SWIG_TYPECHECK_STRING 140 %enddef +%define SWIG_TYPECHECK_PAIR 150 %enddef +%define SWIG_TYPECHECK_STDARRAY 155 %enddef +%define SWIG_TYPECHECK_VECTOR 160 %enddef +%define SWIG_TYPECHECK_DEQUE 170 %enddef +%define SWIG_TYPECHECK_LIST 180 %enddef +%define SWIG_TYPECHECK_SET 190 %enddef +%define SWIG_TYPECHECK_MULTISET 200 %enddef +%define SWIG_TYPECHECK_MAP 210 %enddef +%define SWIG_TYPECHECK_MULTIMAP 220 %enddef +%define SWIG_TYPECHECK_STACK 230 %enddef +%define SWIG_TYPECHECK_QUEUE 240 %enddef + +%define SWIG_TYPECHECK_BOOL_ARRAY 1015 %enddef +%define SWIG_TYPECHECK_INT8_ARRAY 1025 %enddef +%define SWIG_TYPECHECK_INT16_ARRAY 1035 %enddef +%define SWIG_TYPECHECK_INT32_ARRAY 1045 %enddef +%define SWIG_TYPECHECK_INT64_ARRAY 1055 %enddef +%define SWIG_TYPECHECK_INT128_ARRAY 1065 %enddef +%define SWIG_TYPECHECK_FLOAT_ARRAY 1080 %enddef +%define SWIG_TYPECHECK_DOUBLE_ARRAY 1090 %enddef +%define SWIG_TYPECHECK_CHAR_ARRAY 1130 %enddef +%define SWIG_TYPECHECK_STRING_ARRAY 1140 %enddef +%define SWIG_TYPECHECK_OBJECT_ARRAY 1150 %enddef + +%define SWIG_TYPECHECK_BOOL_PTR 2015 %enddef +%define SWIG_TYPECHECK_UINT8_PTR 2020 %enddef +%define SWIG_TYPECHECK_INT8_PTR 2025 %enddef +%define SWIG_TYPECHECK_UINT16_PTR 2030 %enddef +%define SWIG_TYPECHECK_INT16_PTR 2035 %enddef +%define SWIG_TYPECHECK_UINT32_PTR 2040 %enddef +%define SWIG_TYPECHECK_INT32_PTR 2045 %enddef +%define SWIG_TYPECHECK_UINT64_PTR 2050 %enddef +%define SWIG_TYPECHECK_INT64_PTR 2055 %enddef +%define SWIG_TYPECHECK_FLOAT_PTR 2080 %enddef +%define SWIG_TYPECHECK_DOUBLE_PTR 2090 %enddef +%define SWIG_TYPECHECK_CHAR_PTR 2130 %enddef + +%define SWIG_TYPECHECK_SWIGOBJECT 5000 %enddef + + +/* ----------------------------------------------------------------------------- + * Default handling of certain overloaded operators + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +%ignoreoperator(NEW) operator new; +%ignoreoperator(DELETE) operator delete; +%ignoreoperator(NEWARR) operator new[]; +%ignoreoperator(DELARR) operator delete[]; + +/* add C++ operator aliases */ +%rename("operator &&") operator and; // `and' `&&' +%rename("operator ||") operator or; // `or' `||' +%rename("operator !") operator not; // `not' `!' +%rename("operator &=") operator and_eq; // `and_eq' `&=' +%rename("operator &") operator bitand; // `bitand' `&' +%rename("operator |") operator bitor; // `bitor' `|' +%rename("operator ~") operator compl; // `compl' `~' +%rename("operator !=") operator not_eq; // `not_eq' `!=' +%rename("operator |=") operator or_eq; // `or_eq' `|=' +%rename("operator ^") operator xor; // `xor' `^' +%rename("operator ^=") operator xor_eq; // `xor_eq' `^=' + +/* Smart pointer handling */ + +%rename(__deref__) *::operator->; +%rename(__ref__) *::operator*(); +%rename(__ref__) *::operator*() const; + +/* Define std namespace */ +namespace std { + /* Warn about std::initializer_list usage. The constructor/method where used should probably be ignored. See docs. */ + template<typename T> class initializer_list {}; + %typemap(in, warning=SWIGWARN_TYPEMAP_INITIALIZER_LIST_MSG) initializer_list<T> "" + %typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) initializer_list<T> "" +} +#endif + +/* ----------------------------------------------------------------------------- + * Default char * and C array typemaps + * ----------------------------------------------------------------------------- */ + +/* Set up the typemap for handling new return strings */ + +#ifdef __cplusplus +%typemap(newfree) char * "delete [] $1;"; +#else +%typemap(newfree) char * "free($1);"; +#endif + +/* Default typemap for handling char * members */ + +#ifdef __cplusplus +%typemap(memberin) char * { + delete [] $1; + if ($input) { + $1 = ($1_type) (new char[strlen((const char *)$input)+1]); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(memberin,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const char * { + if ($input) { + $1 = ($1_type) (new char[strlen((const char *)$input)+1]); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(globalin) char * { + delete [] $1; + if ($input) { + $1 = ($1_type) (new char[strlen((const char *)$input)+1]); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(globalin,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const char * { + if ($input) { + $1 = ($1_type) (new char[strlen((const char *)$input)+1]); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +#else +%typemap(memberin) char * { + free($1); + if ($input) { + $1 = ($1_type) malloc(strlen((const char *)$input)+1); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(memberin,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const char * { + if ($input) { + $1 = ($1_type) malloc(strlen((const char *)$input)+1); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(globalin) char * { + free($1); + if ($input) { + $1 = ($1_type) malloc(strlen((const char *)$input)+1); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} +%typemap(globalin,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const char * { + if ($input) { + $1 = ($1_type) malloc(strlen((const char *)$input)+1); + strcpy((char *)$1, (const char *)$input); + } else { + $1 = 0; + } +} + +#endif + +/* Character array handling */ + +%typemap(memberin) char [ANY] { + if($input) { + strncpy((char*)$1, (const char *)$input, $1_dim0-1); + $1[$1_dim0-1] = 0; + } else { + $1[0] = 0; + } +} + +%typemap(globalin) char [ANY] { + if($input) { + strncpy((char*)$1, (const char *)$input, $1_dim0-1); + $1[$1_dim0-1] = 0; + } else { + $1[0] = 0; + } +} + +%typemap(memberin) char [] { + if ($input) strcpy((char *)$1, (const char *)$input); + else $1[0] = 0; +} + +%typemap(globalin) char [] { + if ($input) strcpy((char *)$1, (const char *)$input); + else $1[0] = 0; +} + +/* memberin/globalin typemap for arrays. */ + +%typemap(memberin) SWIGTYPE [ANY] { + size_t ii; + $1_basetype *b = ($1_basetype *) $1; + for (ii = 0; ii < (size_t)$1_size; ii++) b[ii] = *(($1_basetype *) $input + ii); +} + +%typemap(globalin) SWIGTYPE [ANY] { + size_t ii; + $1_basetype *b = ($1_basetype *) $1; + for (ii = 0; ii < (size_t)$1_size; ii++) b[ii] = *(($1_basetype *) $input + ii); +} + +/* memberin/globalin typemap for double arrays. */ + +%typemap(memberin) SWIGTYPE [ANY][ANY] { + $basetype (*inp)[$1_dim1] = ($basetype (*)[$1_dim1])($input); + $basetype (*dest)[$1_dim1] = ($basetype (*)[$1_dim1])($1); + size_t ii = 0; + for (; ii < $1_dim0; ++ii) { + $basetype *ip = inp[ii]; + $basetype *dp = dest[ii]; + size_t jj = 0; + for (; jj < $1_dim1; ++jj) dp[jj] = ip[jj]; + } +} + +%typemap(globalin) SWIGTYPE [ANY][ANY] { + $basetype (*inp)[$1_dim1] = ($basetype (*)[$1_dim1])($input); + $basetype (*dest)[$1_dim1] = ($basetype (*)[$1_dim1])($1); + size_t ii = 0; + for (; ii < $1_dim0; ++ii) { + $basetype *ip = inp[ii]; + $basetype *dp = dest[ii]; + size_t jj = 0; + for (; jj < $1_dim1; ++jj) dp[jj] = ip[jj]; + } +} + +/* ----------------------------------------------------------------------------- + * Runtime code + * ----------------------------------------------------------------------------- */ + +/* The SwigValueWrapper class */ + +/* + * This template wrapper is used to handle C++ objects that are passed or + * returned by value. This is necessary to handle objects that define + * no default-constructor (making it difficult for SWIG to properly declare + * local variables). + * + * The wrapper is used as follows. First consider a function like this: + * + * Vector cross_product(Vector a, Vector b) + * + * Now, if Vector is defined as a C++ class with no default constructor, + * code is generated as follows: + * + * Vector *wrap_cross_product(Vector *inarg1, Vector *inarg2) { + * SwigValueWrapper<Vector> arg1; + * SwigValueWrapper<Vector> arg2; + * SwigValueWrapper<Vector> result; + * + * arg1 = *inarg1; + * arg2 = *inarg2; + * ... + * result = cross_product(arg1,arg2); + * ... + * return new Vector(result); + * } + * + * In the wrappers, the template SwigValueWrapper simply provides a thin + * layer around a Vector *. However, it does this in a way that allows + * the object to be bound after the variable declaration (which is not possible + * with the bare object when it lacks a default constructor). + * + * An observant reader will notice that the code after the variable declarations + * is *identical* to the code used for classes that do define default constructors. + * Thus, this neat trick allows us to fix this special case without having to + * make massive changes to typemaps and other parts of the SWIG code generator. + * + * Note: this code is not included when SWIG runs in C-mode, when classes + * define default constructors, or when pointers and references are used. + * SWIG tries to avoid doing this except in very special circumstances. + * + * Note: This solution suffers from making a large number of copies + * of the underlying object. However, this is needed in the interest of + * safety and in order to cover all of the possible ways in which a value + * might be assigned. For example: + * + * arg1 = *inarg1; // Assignment from a pointer + * arg1 = Vector(1,2,3); // Assignment from a value + * + * The class offers a strong guarantee of exception safety. + * With regards to the implementation, the private SwigMovePointer nested class is + * a simple smart pointer with move semantics, much like std::auto_ptr. + * + * This wrapping technique was suggested by William Fulton and is henceforth + * known as the "Fulton Transform" :-). + */ + +#ifdef __cplusplus +%insert("runtime") %{ +#ifdef __cplusplus +/* SwigValueWrapper is described in swig.swg */ +template<typename T> class SwigValueWrapper { + struct SwigMovePointer { + T *ptr; + SwigMovePointer(T *p) : ptr(p) { } + ~SwigMovePointer() { delete ptr; } + SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } + } pointer; + SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs); + SwigValueWrapper(const SwigValueWrapper<T>& rhs); +public: + SwigValueWrapper() : pointer(0) { } + SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } + operator T&() const { return *pointer.ptr; } + T *operator&() { return pointer.ptr; } +};%} + +/* + * SwigValueInit() is a generic initialisation solution as the following approach: + * + * T c_result = T(); + * + * doesn't compile for all types for example: + * + * unsigned int c_result = unsigned int(); + */ +%insert("runtime") %{ +template <typename T> T SwigValueInit() { + return T(); +} +#endif +%} +#endif + +/* The swiglabels */ + +%insert("runtime") "swiglabels.swg" + + diff --git a/qrenderdoc/3rdparty/swig/Lib/swigarch.i b/qrenderdoc/3rdparty/swig/Lib/swigarch.i new file mode 100644 index 000000000..bf4ee8ef8 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/swigarch.i @@ -0,0 +1,62 @@ +/* ----------------------------------------------------------------------------- + * swigarch.i + * + * SWIG library file for 32bit/64bit code specialization and checking. + * + * Use only in extreme cases, when no arch. independent code can be + * generated + * + * To activate architecture specific code, use + * + * swig -DSWIGWORDSIZE32 + * + * or + * + * swig -DSWIGWORDSIZE64 + * + * Note that extra checking code will be added to the wrapped code, + * which will prevent the compilation in a different architecture. + * + * If you don't specify the SWIGWORDSIZE (the default case), swig will + * generate architecture independent and/or 32bits code, with no extra + * checking code added. + * ----------------------------------------------------------------------------- */ + +#if !defined(SWIGWORDSIZE32) && !defined(SWIGWORDSIZE64) +# if (__WORDSIZE == 32) +# define SWIGWORDSIZE32 +# endif +#endif + +#if !defined(SWIGWORDSIZE64) && !defined(SWIGWORDSIZE32) +# if defined(__x86_64) || defined(__x86_64__) || (__WORDSIZE == 64) +# define SWIGWORDSIZE64 +# endif +#endif + + +#ifdef SWIGWORDSIZE32 +%{ +#define SWIGWORDSIZE32 +#ifndef LONG_MAX +#include <limits.h> +#endif +#if (__WORDSIZE == 64) || (LONG_MAX != INT_MAX) +# error "SWIG wrapped code invalid in 64 bit architecture, regenerate code using -DSWIGWORDSIZE64" +#endif +%} +#endif + +#ifdef SWIGWORDSIZE64 +%{ +#define SWIGWORDSIZE64 +#ifndef LONG_MAX +#include <limits.h> +#endif +#if (__WORDSIZE == 32) || (LONG_MAX == INT_MAX) +# error "SWIG wrapped code invalid in 32 bit architecture, regenerate code using -DSWIGWORDSIZE32" +#endif +%} +#endif + + diff --git a/qrenderdoc/3rdparty/swig/Lib/swigerrors.swg b/qrenderdoc/3rdparty/swig/Lib/swigerrors.swg new file mode 100644 index 000000000..1a6d20366 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/swigerrors.swg @@ -0,0 +1,16 @@ +/* Errors in SWIG */ +#define SWIG_UnknownError -1 +#define SWIG_IOError -2 +#define SWIG_RuntimeError -3 +#define SWIG_IndexError -4 +#define SWIG_TypeError -5 +#define SWIG_DivisionByZero -6 +#define SWIG_OverflowError -7 +#define SWIG_SyntaxError -8 +#define SWIG_ValueError -9 +#define SWIG_SystemError -10 +#define SWIG_AttributeError -11 +#define SWIG_MemoryError -12 +#define SWIG_NullReferenceError -13 + + diff --git a/qrenderdoc/3rdparty/swig/Lib/swiginit.swg b/qrenderdoc/3rdparty/swig/Lib/swiginit.swg new file mode 100644 index 000000000..cb72c36eb --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/swiginit.swg @@ -0,0 +1,230 @@ +/* ----------------------------------------------------------------------------- + * Type initialization: + * This problem is tough by the requirement that no dynamic + * memory is used. Also, since swig_type_info structures store pointers to + * swig_cast_info structures and swig_cast_info structures store pointers back + * to swig_type_info structures, we need some lookup code at initialization. + * The idea is that swig generates all the structures that are needed. + * The runtime then collects these partially filled structures. + * The SWIG_InitializeModule function takes these initial arrays out of + * swig_module, and does all the lookup, filling in the swig_module.types + * array with the correct data and linking the correct swig_cast_info + * structures together. + * + * The generated swig_type_info structures are assigned statically to an initial + * array. We just loop through that array, and handle each type individually. + * First we lookup if this type has been already loaded, and if so, use the + * loaded structure instead of the generated one. Then we have to fill in the + * cast linked list. The cast data is initially stored in something like a + * two-dimensional array. Each row corresponds to a type (there are the same + * number of rows as there are in the swig_type_initial array). Each entry in + * a column is one of the swig_cast_info structures for that type. + * The cast_initial array is actually an array of arrays, because each row has + * a variable number of columns. So to actually build the cast linked list, + * we find the array of casts associated with the type, and loop through it + * adding the casts to the list. The one last trick we need to do is making + * sure the type pointer in the swig_cast_info struct is correct. + * + * First off, we lookup the cast->type name to see if it is already loaded. + * There are three cases to handle: + * 1) If the cast->type has already been loaded AND the type we are adding + * casting info to has not been loaded (it is in this module), THEN we + * replace the cast->type pointer with the type pointer that has already + * been loaded. + * 2) If BOTH types (the one we are adding casting info to, and the + * cast->type) are loaded, THEN the cast info has already been loaded by + * the previous module so we just ignore it. + * 3) Finally, if cast->type has not already been loaded, then we add that + * swig_cast_info to the linked list (because the cast->type) pointer will + * be correct. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* c-mode */ +#endif +#endif + +#if 0 +#define SWIGRUNTIME_DEBUG +#endif + + +SWIGRUNTIME void +SWIG_InitializeModule(void *clientdata) { + size_t i; + swig_module_info *module_head, *iter; + int init; + + /* check to see if the circular list has been setup, if not, set it up */ + if (swig_module.next==0) { + /* Initialize the swig_module */ + swig_module.type_initial = swig_type_initial; + swig_module.cast_initial = swig_cast_initial; + swig_module.next = &swig_module; + init = 1; + } else { + init = 0; + } + + /* Try and load any already created modules */ + module_head = SWIG_GetModule(clientdata); + if (!module_head) { + /* This is the first module loaded for this interpreter */ + /* so set the swig module into the interpreter */ + SWIG_SetModule(clientdata, &swig_module); + } else { + /* the interpreter has loaded a SWIG module, but has it loaded this one? */ + iter=module_head; + do { + if (iter==&swig_module) { + /* Our module is already in the list, so there's nothing more to do. */ + return; + } + iter=iter->next; + } while (iter!= module_head); + + /* otherwise we must add our module into the list */ + swig_module.next = module_head->next; + module_head->next = &swig_module; + } + + /* When multiple interpreters are used, a module could have already been initialized in + a different interpreter, but not yet have a pointer in this interpreter. + In this case, we do not want to continue adding types... everything should be + set up already */ + if (init == 0) return; + + /* Now work on filling in swig_module.types */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: size %d\n", swig_module.size); +#endif + for (i = 0; i < swig_module.size; ++i) { + swig_type_info *type = 0; + swig_type_info *ret; + swig_cast_info *cast; + +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); +#endif + + /* if there is another module already loaded */ + if (swig_module.next != &swig_module) { + type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); + } + if (type) { + /* Overwrite clientdata field */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found type %s\n", type->name); +#endif + if (swig_module.type_initial[i]->clientdata) { + type->clientdata = swig_module.type_initial[i]->clientdata; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); +#endif + } + } else { + type = swig_module.type_initial[i]; + } + + /* Insert casting types */ + cast = swig_module.cast_initial[i]; + while (cast->type) { + + /* Don't need to add information already in the list */ + ret = 0; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); +#endif + if (swig_module.next != &swig_module) { + ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); +#ifdef SWIGRUNTIME_DEBUG + if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); +#endif + } + if (ret) { + if (type == swig_module.type_initial[i]) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: skip old type %s\n", ret->name); +#endif + cast->type = ret; + ret = 0; + } else { + /* Check for casting already in the list */ + swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); +#ifdef SWIGRUNTIME_DEBUG + if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); +#endif + if (!ocast) ret = 0; + } + } + + if (!ret) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); +#endif + if (type->cast) { + type->cast->prev = cast; + cast->next = type->cast; + } + type->cast = cast; + } + cast++; + } + /* Set entry in modules->types array equal to the type */ + swig_module.types[i] = type; + } + swig_module.types[i] = 0; + +#ifdef SWIGRUNTIME_DEBUG + printf("**** SWIG_InitializeModule: Cast List ******\n"); + for (i = 0; i < swig_module.size; ++i) { + int j = 0; + swig_cast_info *cast = swig_module.cast_initial[i]; + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); + while (cast->type) { + printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); + cast++; + ++j; + } + printf("---- Total casts: %d\n",j); + } + printf("**** SWIG_InitializeModule: Cast List ******\n"); +#endif +} + +/* This function will propagate the clientdata field of type to +* any new swig_type_info structures that have been added into the list +* of equivalent types. It is like calling +* SWIG_TypeClientData(type, clientdata) a second time. +*/ +SWIGRUNTIME void +SWIG_PropagateClientData(void) { + size_t i; + swig_cast_info *equiv; + static int init_run = 0; + + if (init_run) return; + init_run = 1; + + for (i = 0; i < swig_module.size; i++) { + if (swig_module.types[i]->clientdata) { + equiv = swig_module.types[i]->cast; + while (equiv) { + if (!equiv->converter) { + if (equiv->type && !equiv->type->clientdata) + SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); + } + equiv = equiv->next; + } + } + } +} + +#ifdef __cplusplus +#if 0 +{ /* c-mode */ +#endif +} +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/swiglabels.swg b/qrenderdoc/3rdparty/swig/Lib/swiglabels.swg new file mode 100644 index 000000000..b3855665e --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/swiglabels.swg @@ -0,0 +1,123 @@ +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIG_MSC_UNSUPPRESS_4505 +# if defined(_MSC_VER) +# pragma warning(disable : 4505) /* unreferenced local function has been removed */ +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if defined(__GNUC__) +# if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +#endif + +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + +/* Deal with Apple's deprecated 'AssertMacros.h' from Carbon-framework */ +#if defined(__APPLE__) && !defined(__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES) +# define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0 +#endif + +/* Intel's compiler complains if a variable which was never initialised is + * cast to void, which is a common idiom which we use to indicate that we + * are aware a variable isn't used. So we just silence that warning. + * See: https://github.com/swig/swig/issues/192 for more discussion. + */ +#ifdef __INTEL_COMPILER +# pragma warning disable 592 +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/swigrun.i b/qrenderdoc/3rdparty/swig/Lib/swigrun.i new file mode 100644 index 000000000..6026a9151 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/swigrun.i @@ -0,0 +1,8 @@ +/* ----------------------------------------------------------------------------- + * swigrun.i + * + * Empty module (for now). Placeholder for runtime libs + * ----------------------------------------------------------------------------- */ + +%module swigrun + diff --git a/qrenderdoc/3rdparty/swig/Lib/swigrun.swg b/qrenderdoc/3rdparty/swig/Lib/swigrun.swg new file mode 100644 index 000000000..1ef676187 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/swigrun.swg @@ -0,0 +1,572 @@ +/* ----------------------------------------------------------------------------- + * swigrun.swg + * + * This file contains generic C API SWIG runtime support for pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +/* This should only be incremented when either the layout of swig_type_info changes, + or for whatever reason, the runtime changes incompatibly */ +#define SWIG_RUNTIME_VERSION "4" + +/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ +#ifdef SWIG_TYPE_TABLE +# define SWIG_QUOTE_STRING(x) #x +# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) +# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) +#else +# define SWIG_TYPE_TABLE_NAME +#endif + +/* + You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for + creating a static or dynamic library from the SWIG runtime code. + In 99.9% of the cases, SWIG just needs to declare them as 'static'. + + But only do this if strictly necessary, ie, if you have problems + with your compiler or suchlike. +*/ + +#ifndef SWIGRUNTIME +# define SWIGRUNTIME SWIGINTERN +#endif + +#ifndef SWIGRUNTIMEINLINE +# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE +#endif + +/* Generic buffer size */ +#ifndef SWIG_BUFFER_SIZE +# define SWIG_BUFFER_SIZE 1024 +#endif + +/* Flags for pointer conversions */ +#define SWIG_POINTER_DISOWN 0x1 +#define SWIG_CAST_NEW_MEMORY 0x2 + +/* Flags for new pointer objects */ +#define SWIG_POINTER_OWN 0x1 + + +/* + Flags/methods for returning states. + + The SWIG conversion methods, as ConvertPtr, return an integer + that tells if the conversion was successful or not. And if not, + an error code can be returned (see swigerrors.swg for the codes). + + Use the following macros/flags to set or process the returning + states. + + In old versions of SWIG, code such as the following was usually written: + + if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { + // success code + } else { + //fail code + } + + Now you can be more explicit: + + int res = SWIG_ConvertPtr(obj,vptr,ty.flags); + if (SWIG_IsOK(res)) { + // success code + } else { + // fail code + } + + which is the same really, but now you can also do + + Type *ptr; + int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); + if (SWIG_IsOK(res)) { + // success code + if (SWIG_IsNewObj(res) { + ... + delete *ptr; + } else { + ... + } + } else { + // fail code + } + + I.e., now SWIG_ConvertPtr can return new objects and you can + identify the case and take care of the deallocation. Of course that + also requires SWIG_ConvertPtr to return new result values, such as + + int SWIG_ConvertPtr(obj, ptr,...) { + if (<obj is ok>) { + if (<need new object>) { + *ptr = <ptr to new allocated object>; + return SWIG_NEWOBJ; + } else { + *ptr = <ptr to old object>; + return SWIG_OLDOBJ; + } + } else { + return SWIG_BADOBJ; + } + } + + Of course, returning the plain '0(success)/-1(fail)' still works, but you can be + more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the + SWIG errors code. + + Finally, if the SWIG_CASTRANK_MODE is enabled, the result code + allows to return the 'cast rank', for example, if you have this + + int food(double) + int fooi(int); + + and you call + + food(1) // cast rank '1' (1 -> 1.0) + fooi(1) // cast rank '0' + + just use the SWIG_AddCast()/SWIG_CheckState() +*/ + +#define SWIG_OK (0) +#define SWIG_ERROR (-1) +#define SWIG_IsOK(r) (r >= 0) +#define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) + +/* The CastRankLimit says how many bits are used for the cast rank */ +#define SWIG_CASTRANKLIMIT (1 << 8) +/* The NewMask denotes the object was created (using new/malloc) */ +#define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) +/* The TmpMask is for in/out typemaps that use temporal objects */ +#define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) +/* Simple returning values */ +#define SWIG_BADOBJ (SWIG_ERROR) +#define SWIG_OLDOBJ (SWIG_OK) +#define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) +#define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) +/* Check, add and del mask methods */ +#define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) +#define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) +#define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) +#define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) +#define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) +#define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) + +/* Cast-Rank Mode */ +#if defined(SWIG_CASTRANK_MODE) +# ifndef SWIG_TypeRank +# define SWIG_TypeRank unsigned long +# endif +# ifndef SWIG_MAXCASTRANK /* Default cast allowed */ +# define SWIG_MAXCASTRANK (2) +# endif +# define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) +# define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) +SWIGINTERNINLINE int SWIG_AddCast(int r) { + return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; +} +SWIGINTERNINLINE int SWIG_CheckState(int r) { + return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; +} +#else /* no cast-rank mode */ +# define SWIG_AddCast(r) (r) +# define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) +#endif + + +#include <string.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void *(*swig_converter_func)(void *, int *); +typedef struct swig_type_info *(*swig_dycast_func)(void **); + +/* Structure to store information on one type */ +typedef struct swig_type_info { + const char *name; /* mangled name of this type */ + const char *str; /* human readable name of this type */ + swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ + struct swig_cast_info *cast; /* linked list of types that can cast into this type */ + void *clientdata; /* language specific type data */ + int owndata; /* flag if the structure owns the clientdata */ +} swig_type_info; + +/* Structure to store a type and conversion function used for casting */ +typedef struct swig_cast_info { + swig_type_info *type; /* pointer to type that is equivalent to this type */ + swig_converter_func converter; /* function to cast the void pointers */ + struct swig_cast_info *next; /* pointer to next cast in linked list */ + struct swig_cast_info *prev; /* pointer to the previous cast */ +} swig_cast_info; + +/* Structure used to store module information + * Each module generates one structure like this, and the runtime collects + * all of these structures and stores them in a circularly linked list.*/ +typedef struct swig_module_info { + swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ + size_t size; /* Number of types in this module */ + struct swig_module_info *next; /* Pointer to next element in circularly linked list */ + swig_type_info **type_initial; /* Array of initially generated type structures */ + swig_cast_info **cast_initial; /* Array of initially generated casting structures */ + void *clientdata; /* Language specific module data */ +} swig_module_info; + +/* + Compare two type names skipping the space characters, therefore + "char*" == "char *" and "Class<int>" == "Class<int >", etc. + + Return 0 when the two name types are equivalent, as in + strncmp, but skipping ' '. +*/ +SWIGRUNTIME int +SWIG_TypeNameComp(const char *f1, const char *l1, + const char *f2, const char *l2) { + for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { + while ((*f1 == ' ') && (f1 != l1)) ++f1; + while ((*f2 == ' ') && (f2 != l2)) ++f2; + if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; + } + return (int)((l1 - f1) - (l2 - f2)); +} + +/* + Check type equivalence in a name list like <name1>|<name2>|... + Return 0 if equal, -1 if nb < tb, 1 if nb > tb +*/ +SWIGRUNTIME int +SWIG_TypeCmp(const char *nb, const char *tb) { + int equiv = 1; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (equiv != 0 && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = SWIG_TypeNameComp(nb, ne, tb, te); + if (*ne) ++ne; + } + return equiv; +} + +/* + Check type equivalence in a name list like <name1>|<name2>|... + Return 0 if not equal, 1 if equal +*/ +SWIGRUNTIME int +SWIG_TypeEquiv(const char *nb, const char *tb) { + return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0; +} + +/* + Check the typename +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheck(const char *c, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (strcmp(iter->type->name, c) == 0) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* + Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (iter->type == from) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* + Cast a pointer up an inheritance hierarchy +*/ +SWIGRUNTIMEINLINE void * +SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { + return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); +} + +/* + Dynamic pointer casting. Down an inheritance hierarchy +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { + swig_type_info *lastty = ty; + if (!ty || !ty->dcast) return ty; + while (ty && (ty->dcast)) { + ty = (*ty->dcast)(ptr); + if (ty) lastty = ty; + } + return lastty; +} + +/* + Return the name associated with this type +*/ +SWIGRUNTIMEINLINE const char * +SWIG_TypeName(const swig_type_info *ty) { + return ty->name; +} + +/* + Return the pretty name associated with this type, + that is an unmangled type name in a form presentable to the user. +*/ +SWIGRUNTIME const char * +SWIG_TypePrettyName(const swig_type_info *type) { + /* The "str" field contains the equivalent pretty names of the + type, separated by vertical-bar characters. We choose + to print the last name, as it is often (?) the most + specific. */ + if (!type) return NULL; + if (type->str != NULL) { + const char *last_name = type->str; + const char *s; + for (s = type->str; *s; s++) + if (*s == '|') last_name = s+1; + return last_name; + } + else + return type->name; +} + +/* + Set the clientdata field for a type +*/ +SWIGRUNTIME void +SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { + swig_cast_info *cast = ti->cast; + /* if (ti->clientdata == clientdata) return; */ + ti->clientdata = clientdata; + + while (cast) { + if (!cast->converter) { + swig_type_info *tc = cast->type; + if (!tc->clientdata) { + SWIG_TypeClientData(tc, clientdata); + } + } + cast = cast->next; + } +} +SWIGRUNTIME void +SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { + SWIG_TypeClientData(ti, clientdata); + ti->owndata = 1; +} + +/* + Search for a swig_type_info structure only by mangled name + Search is a O(log #types) + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_MangledTypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + swig_module_info *iter = start; + do { + if (iter->size) { + size_t l = 0; + size_t r = iter->size - 1; + do { + /* since l+r >= 0, we can (>> 1) instead (/ 2) */ + size_t i = (l + r) >> 1; + const char *iname = iter->types[i]->name; + if (iname) { + int compare = strcmp(name, iname); + if (compare == 0) { + return iter->types[i]; + } else if (compare < 0) { + if (i) { + r = i - 1; + } else { + break; + } + } else if (compare > 0) { + l = i + 1; + } + } else { + break; /* should never happen */ + } + } while (l <= r); + } + iter = iter->next; + } while (iter != end); + return 0; +} + +/* + Search for a swig_type_info structure for either a mangled name or a human readable name. + It first searches the mangled names of the types, which is a O(log #types) + If a type is not found it then searches the human readable names, which is O(#types). + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + /* STEP 1: Search the name field using binary search */ + swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); + if (ret) { + return ret; + } else { + /* STEP 2: If the type hasn't been found, do a complete search + of the str field (the human readable name) */ + swig_module_info *iter = start; + do { + size_t i = 0; + for (; i < iter->size; ++i) { + if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) + return iter->types[i]; + } + iter = iter->next; + } while (iter != end); + } + + /* neither found a match */ + return 0; +} + +/* + Pack binary data into a string +*/ +SWIGRUNTIME char * +SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + const unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} + +/* + Unpack binary data from a string +*/ +SWIGRUNTIME const char * +SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + char d = *(c++); + unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = (unsigned char)((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = (unsigned char)((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (unsigned char)(d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (unsigned char)(d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} + +/* + Pack 'void *' into a string buffer. +*/ +SWIGRUNTIME char * +SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { + char *r = buff; + if ((2*sizeof(void *) + 2) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,&ptr,sizeof(void *)); + if (strlen(name) + 1 > (bsz - (r - buff))) return 0; + strcpy(r,name); + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + *ptr = (void *) 0; + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sizeof(void *)); +} + +SWIGRUNTIME char * +SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { + char *r = buff; + size_t lname = (name ? strlen(name) : 0); + if ((2*sz + 2 + lname) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + if (lname) { + strncpy(r,name,lname+1); + } else { + *r = 0; + } + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + memset(ptr,0,sz); + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sz); +} + +#ifdef __cplusplus +} +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/swigwarn.swg b/qrenderdoc/3rdparty/swig/Lib/swigwarn.swg new file mode 100644 index 000000000..30cf8d566 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/swigwarn.swg @@ -0,0 +1,290 @@ +/* SWIG warning codes */ + + +%define SWIGWARN_NONE 0 %enddef + +/* -- Deprecated features -- */ + +%define SWIGWARN_DEPRECATED_EXTERN 101 %enddef +%define SWIGWARN_DEPRECATED_VAL 102 %enddef +%define SWIGWARN_DEPRECATED_OUT 103 %enddef +%define SWIGWARN_DEPRECATED_DISABLEDOC 104 %enddef +%define SWIGWARN_DEPRECATED_ENABLEDOC 105 %enddef +%define SWIGWARN_DEPRECATED_DOCONLY 106 %enddef +%define SWIGWARN_DEPRECATED_STYLE 107 %enddef +%define SWIGWARN_DEPRECATED_LOCALSTYLE 108 %enddef +%define SWIGWARN_DEPRECATED_TITLE 109 %enddef +%define SWIGWARN_DEPRECATED_SECTION 110 %enddef +%define SWIGWARN_DEPRECATED_SUBSECTION 111 %enddef +%define SWIGWARN_DEPRECATED_SUBSUBSECTION 112 %enddef +%define SWIGWARN_DEPRECATED_ADDMETHODS 113 %enddef +%define SWIGWARN_DEPRECATED_READONLY 114 %enddef +%define SWIGWARN_DEPRECATED_READWRITE 115 %enddef +%define SWIGWARN_DEPRECATED_EXCEPT 116 %enddef +%define SWIGWARN_DEPRECATED_NEW 117 %enddef +%define SWIGWARN_DEPRECATED_EXCEPT_TM 118 %enddef +%define SWIGWARN_DEPRECATED_IGNORE_TM 119 %enddef +%define SWIGWARN_DEPRECATED_OPTC 120 %enddef +%define SWIGWARN_DEPRECATED_NAME 121 %enddef +%define SWIGWARN_DEPRECATED_NOEXTERN 122 %enddef +%define SWIGWARN_DEPRECATED_NODEFAULT 123 %enddef +%define SWIGWARN_DEPRECATED_TYPEMAP_LANG 124 %enddef +%define SWIGWARN_DEPRECATED_INPUT_FILE 125 %enddef +%define SWIGWARN_DEPRECATED_NESTED_WORKAROUND 126 %enddef + +/* -- Preprocessor -- */ + +%define SWIGWARN_PP_MISSING_FILE 201 %enddef +%define SWIGWARN_PP_EVALUATION 202 %enddef +%define SWIGWARN_PP_INCLUDEALL_IMPORTALL 203 %enddef +%define SWIGWARN_PP_CPP_WARNING 204 %enddef +%define SWIGWARN_PP_CPP_ERROR 205 %enddef +%define SWIGWARN_PP_UNEXPECTED_TOKENS 206 %enddef + +/* -- C/C++ Parser -- */ + +%define SWIGWARN_PARSE_CLASS_KEYWORD 301 %enddef +%define SWIGWARN_PARSE_REDEFINED 302 %enddef +%define SWIGWARN_PARSE_EXTEND_UNDEF 303 %enddef +%define SWIGWARN_PARSE_UNSUPPORTED_VALUE 304 %enddef +%define SWIGWARN_PARSE_BAD_VALUE 305 %enddef +%define SWIGWARN_PARSE_PRIVATE 306 %enddef +%define SWIGWARN_PARSE_BAD_DEFAULT 307 %enddef +%define SWIGWARN_PARSE_NAMESPACE_ALIAS 308 %enddef +%define SWIGWARN_PARSE_PRIVATE_INHERIT 309 %enddef +%define SWIGWARN_PARSE_TEMPLATE_REPEAT 310 %enddef +%define SWIGWARN_PARSE_TEMPLATE_PARTIAL 311 %enddef +%define SWIGWARN_PARSE_UNNAMED_NESTED_CLASS 312 %enddef +%define SWIGWARN_PARSE_UNDEFINED_EXTERN 313 %enddef +%define SWIGWARN_PARSE_KEYWORD 314 %enddef +%define SWIGWARN_PARSE_USING_UNDEF 315 %enddef +%define SWIGWARN_PARSE_MODULE_REPEAT 316 %enddef +%define SWIGWARN_PARSE_TEMPLATE_SP_UNDEF 317 %enddef +%define SWIGWARN_PARSE_TEMPLATE_AMBIG 318 %enddef +%define SWIGWARN_PARSE_NO_ACCESS 319 %enddef +%define SWIGWARN_PARSE_EXPLICIT_TEMPLATE 320 %enddef +%define SWIGWARN_PARSE_BUILTIN_NAME 321 %enddef +%define SWIGWARN_PARSE_REDUNDANT 322 %enddef +%define SWIGWARN_PARSE_REC_INHERITANCE 323 %enddef +%define SWIGWARN_PARSE_NESTED_TEMPLATE 324 %enddef +%define SWIGWARN_PARSE_NAMED_NESTED_CLASS 325 %enddef +%define SWIGWARN_PARSE_EXTEND_NAME 326 %enddef + +%define SWIGWARN_CPP11_LAMBDA 340 %enddef +%define SWIGWARN_CPP11_ALIAS_DECLARATION 341 %enddef /* redundant now */ +%define SWIGWARN_CPP11_ALIAS_TEMPLATE 342 %enddef /* redundant now */ +%define SWIGWARN_CPP11_VARIADIC_TEMPLATE 343 %enddef + +%define SWIGWARN_IGNORE_OPERATOR_NEW 350 %enddef /* new */ +%define SWIGWARN_IGNORE_OPERATOR_DELETE 351 %enddef /* delete */ +%define SWIGWARN_IGNORE_OPERATOR_PLUS 352 %enddef /* + */ +%define SWIGWARN_IGNORE_OPERATOR_MINUS 353 %enddef /* - */ +%define SWIGWARN_IGNORE_OPERATOR_MUL 354 %enddef /* * */ +%define SWIGWARN_IGNORE_OPERATOR_DIV 355 %enddef /* / */ +%define SWIGWARN_IGNORE_OPERATOR_MOD 356 %enddef /* % */ +%define SWIGWARN_IGNORE_OPERATOR_XOR 357 %enddef /* ^ */ +%define SWIGWARN_IGNORE_OPERATOR_AND 358 %enddef /* & */ +%define SWIGWARN_IGNORE_OPERATOR_OR 359 %enddef /* | */ +%define SWIGWARN_IGNORE_OPERATOR_NOT 360 %enddef /* ~ */ +%define SWIGWARN_IGNORE_OPERATOR_LNOT 361 %enddef /* ! */ +%define SWIGWARN_IGNORE_OPERATOR_EQ 362 %enddef /* = */ +%define SWIGWARN_IGNORE_OPERATOR_LT 363 %enddef /* < */ +%define SWIGWARN_IGNORE_OPERATOR_GT 364 %enddef /* > */ +%define SWIGWARN_IGNORE_OPERATOR_PLUSEQ 365 %enddef /* += */ +%define SWIGWARN_IGNORE_OPERATOR_MINUSEQ 366 %enddef /* -= */ +%define SWIGWARN_IGNORE_OPERATOR_MULEQ 367 %enddef /* *= */ +%define SWIGWARN_IGNORE_OPERATOR_DIVEQ 368 %enddef /* /= */ +%define SWIGWARN_IGNORE_OPERATOR_MODEQ 369 %enddef /* %= */ +%define SWIGWARN_IGNORE_OPERATOR_XOREQ 370 %enddef /* ^= */ +%define SWIGWARN_IGNORE_OPERATOR_ANDEQ 371 %enddef /* &= */ +%define SWIGWARN_IGNORE_OPERATOR_OREQ 372 %enddef /* |= */ +%define SWIGWARN_IGNORE_OPERATOR_LSHIFT 373 %enddef /* << */ +%define SWIGWARN_IGNORE_OPERATOR_RSHIFT 374 %enddef /* >> */ +%define SWIGWARN_IGNORE_OPERATOR_LSHIFTEQ 375 %enddef /* <<= */ +%define SWIGWARN_IGNORE_OPERATOR_RSHIFTEQ 376 %enddef /* >>= */ +%define SWIGWARN_IGNORE_OPERATOR_EQUALTO 377 %enddef /* == */ +%define SWIGWARN_IGNORE_OPERATOR_NOTEQUAL 378 %enddef /* != */ +%define SWIGWARN_IGNORE_OPERATOR_LTEQUAL 379 %enddef /* <= */ +%define SWIGWARN_IGNORE_OPERATOR_GTEQUAL 380 %enddef /* >= */ +%define SWIGWARN_IGNORE_OPERATOR_LAND 381 %enddef /* && */ +%define SWIGWARN_IGNORE_OPERATOR_LOR 382 %enddef /* || */ +%define SWIGWARN_IGNORE_OPERATOR_PLUSPLUS 383 %enddef /* ++ */ +%define SWIGWARN_IGNORE_OPERATOR_MINUSMINUS 384 %enddef /* -- */ +%define SWIGWARN_IGNORE_OPERATOR_COMMA 385 %enddef /* , */ +%define SWIGWARN_IGNORE_OPERATOR_ARROWSTAR 386 %enddef /* ->* */ +%define SWIGWARN_IGNORE_OPERATOR_ARROW 387 %enddef /* -> */ +%define SWIGWARN_IGNORE_OPERATOR_CALL 388 %enddef /* () */ +%define SWIGWARN_IGNORE_OPERATOR_INDEX 389 %enddef /* [] */ +%define SWIGWARN_IGNORE_OPERATOR_UPLUS 390 %enddef /* + */ +%define SWIGWARN_IGNORE_OPERATOR_UMINUS 391 %enddef /* - */ +%define SWIGWARN_IGNORE_OPERATOR_UMUL 392 %enddef /* * */ +%define SWIGWARN_IGNORE_OPERATOR_UAND 393 %enddef /* & */ +%define SWIGWARN_IGNORE_OPERATOR_NEWARR 394 %enddef /* new [] */ +%define SWIGWARN_IGNORE_OPERATOR_DELARR 395 %enddef /* delete [] */ +%define SWIGWARN_IGNORE_OPERATOR_REF 396 %enddef /* operator *() */ + +/* 394-399 are reserved */ + +/* -- Type system and typemaps -- */ + +%define SWIGWARN_TYPE_UNDEFINED_CLASS 401 %enddef +%define SWIGWARN_TYPE_INCOMPLETE 402 %enddef +%define SWIGWARN_TYPE_ABSTRACT 403 %enddef +%define SWIGWARN_TYPE_REDEFINED 404 %enddef + +%define SWIGWARN_TYPEMAP_SOURCETARGET 450 %enddef +%define SWIGWARN_TYPEMAP_CHARLEAK 451 %enddef +%define SWIGWARN_TYPEMAP_SWIGTYPE 452 %enddef +%define SWIGWARN_TYPEMAP_APPLY_UNDEF 453 %enddef +%define SWIGWARN_TYPEMAP_SWIGTYPELEAK 454 %enddef + +%define SWIGWARN_TYPEMAP_IN_UNDEF 460 %enddef +%define SWIGWARN_TYPEMAP_OUT_UNDEF 461 %enddef +%define SWIGWARN_TYPEMAP_VARIN_UNDEF 462 %enddef +%define SWIGWARN_TYPEMAP_VAROUT_UNDEF 463 %enddef +%define SWIGWARN_TYPEMAP_CONST_UNDEF 464 %enddef +%define SWIGWARN_TYPEMAP_UNDEF 465 %enddef +%define SWIGWARN_TYPEMAP_VAR_UNDEF 466 %enddef +%define SWIGWARN_TYPEMAP_TYPECHECK 467 %enddef +%define SWIGWARN_TYPEMAP_THROW 468 %enddef +%define SWIGWARN_TYPEMAP_DIRECTORIN_UNDEF 469 %enddef +%define SWIGWARN_TYPEMAP_THREAD_UNSAFE 470 %enddef /* mostly used in directorout typemaps */ +%define SWIGWARN_TYPEMAP_DIRECTOROUT_UNDEF 471 %enddef +%define SWIGWARN_TYPEMAP_TYPECHECK_UNDEF 472 %enddef +%define SWIGWARN_TYPEMAP_DIRECTOROUT_PTR 473 %enddef +%define SWIGWARN_TYPEMAP_OUT_OPTIMAL_IGNORED 474 %enddef +%define SWIGWARN_TYPEMAP_OUT_OPTIMAL_MULTIPLE 475 %enddef +%define SWIGWARN_TYPEMAP_INITIALIZER_LIST 476 %enddef +%define SWIGWARN_TYPEMAP_DIRECTORTHROWS_UNDEF 477 %enddef + +/* -- Fragments -- */ +%define SWIGWARN_FRAGMENT_NOT_FOUND 490 %enddef + +/* -- General code generation -- */ + +%define SWIGWARN_LANG_OVERLOAD_DECL 501 %enddef +%define SWIGWARN_LANG_OVERLOAD_CONSTRUCT 502 %enddef +%define SWIGWARN_LANG_IDENTIFIER 503 %enddef +%define SWIGWARN_LANG_RETURN_TYPE 504 %enddef +%define SWIGWARN_LANG_VARARGS 505 %enddef +%define SWIGWARN_LANG_VARARGS_KEYWORD 506 %enddef +%define SWIGWARN_LANG_NATIVE_UNIMPL 507 %enddef +%define SWIGWARN_LANG_DEREF_SHADOW 508 %enddef +%define SWIGWARN_LANG_OVERLOAD_SHADOW 509 %enddef +%define SWIGWARN_LANG_FRIEND_IGNORE 510 %enddef +%define SWIGWARN_LANG_OVERLOAD_KEYWORD 511 %enddef +%define SWIGWARN_LANG_OVERLOAD_CONST 512 %enddef +%define SWIGWARN_LANG_CLASS_UNNAMED 513 %enddef +%define SWIGWARN_LANG_DIRECTOR_VDESTRUCT 514 %enddef +%define SWIGWARN_LANG_DISCARD_CONST 515 %enddef +%define SWIGWARN_LANG_OVERLOAD_IGNORED 516 %enddef +%define SWIGWARN_LANG_DIRECTOR_ABSTRACT 517 %enddef +%define SWIGWARN_LANG_PORTABILITY_FILENAME 518 %enddef +%define SWIGWARN_LANG_TEMPLATE_METHOD_IGNORE 519 %enddef +%define SWIGWARN_LANG_SMARTPTR_MISSING 520 %enddef +%define SWIGWARN_LANG_ILLEGAL_DESTRUCTOR 521 %enddef +%define SWIGWARN_LANG_EXTEND_CONSTRUCTOR 522 %enddef +%define SWIGWARN_LANG_EXTEND_DESTRUCTOR 523 %enddef +%define SWIGWARN_LANG_NESTED_NAMED_ENUM 524 %enddef + +/* -- Reserved (600-799) -- */ + +/* -- Language module specific warnings (700 - 899) -- */ + + +%define SWIGWARN_D_TYPEMAP_CTYPE_UNDEF 700 %enddef +%define SWIGWARN_D_TYPEMAP_IMTYPE_UNDEF 701 %enddef +%define SWIGWARN_D_TYPEMAP_DTYPE_UNDEF 702 %enddef +%define SWIGWARN_D_MULTIPLE_INHERITANCE 703 %enddef +%define SWIGWARN_D_TYPEMAP_CLASSMOD_UNDEF 704 %enddef +%define SWIGWARN_D_TYPEMAP_DBODY_UNDEF 705 %enddef +%define SWIGWARN_D_TYPEMAP_DOUT_UNDEF 706 %enddef +%define SWIGWARN_D_TYPEMAP_DIN_UNDEF 707 %enddef +%define SWIGWARN_D_TYPEMAP_DDIRECTORIN_UNDEF 708 %enddef +%define SWIGWARN_D_TYPEMAP_DCONSTRUCTOR_UNDEF 709 %enddef +%define SWIGWARN_D_EXCODE_MISSING 710 %enddef +%define SWIGWARN_D_CANTHROW_MISSING 711 %enddef +%define SWIGWARN_D_NO_DIRECTORCONNECT_ATTR 712 %enddef +%define SWIGWARN_D_NAME_COLLISION 713 %enddef + +/* please leave 700-719 free for D */ + +%define SWIGWARN_SCILAB_TRUNCATED_NAME 720 %enddef + +/* please leave 720-739 free for Scilab */ + +%define SWIGWARN_PYTHON_INDENT_MISMATCH 740 %enddef + +/* please leave 740-759 free for Python */ + +%define SWIGWARN_RUBY_WRONG_NAME 801 %enddef +%define SWIGWARN_RUBY_MULTIPLE_INHERITANCE 802 %enddef + +/* please leave 800-809 free for Ruby */ + +%define SWIGWARN_JAVA_TYPEMAP_JNI_UNDEF 810 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JTYPE_UNDEF 811 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JSTYPE_UNDEF 812 %enddef +%define SWIGWARN_JAVA_MULTIPLE_INHERITANCE 813 %enddef +%define SWIGWARN_JAVA_TYPEMAP_GETCPTR_UNDEF 814 %enddef +%define SWIGWARN_JAVA_TYPEMAP_CLASSMOD_UNDEF 815 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVABODY_UNDEF 816 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVAOUT_UNDEF 817 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVAIN_UNDEF 818 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVADIRECTORIN_UNDEF 819 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVADIRECTOROUT_UNDEF 820 %enddef +%define SWIGWARN_JAVA_TYPEMAP_INTERFACECODE_UNDEF 821 %enddef +%define SWIGWARN_JAVA_COVARIANT_RET 822 %enddef +%define SWIGWARN_JAVA_TYPEMAP_JAVACONSTRUCT_UNDEF 823 %enddef +%define SWIGWARN_JAVA_TYPEMAP_DIRECTORIN_NODESC 824 %enddef +%define SWIGWARN_JAVA_NO_DIRECTORCONNECT_ATTR 825 %enddef +%define SWIGWARN_JAVA_NSPACE_WITHOUT_PACKAGE 826 %enddef + +/* please leave 810-829 free for Java */ + +%define SWIGWARN_CSHARP_TYPEMAP_CTYPE_UNDEF 830 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSTYPE_UNDEF 831 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSWTYPE_UNDEF 832 %enddef +%define SWIGWARN_CSHARP_MULTIPLE_INHERITANCE 833 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_GETCPTR_UNDEF 834 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CLASSMOD_UNDEF 835 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSBODY_UNDEF 836 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSOUT_UNDEF 837 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSIN_UNDEF 838 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSDIRECTORIN_UNDEF 839 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSDIRECTOROUT_UNDEF 840 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_INTERFACECODE_UNDEF 841 %enddef +%define SWIGWARN_CSHARP_COVARIANT_RET 842 %enddef +%define SWIGWARN_CSHARP_TYPEMAP_CSCONSTRUCT_UNDEF 843 %enddef +%define SWIGWARN_CSHARP_EXCODE 844 %enddef +%define SWIGWARN_CSHARP_CANTHROW 845 %enddef +%define SWIGWARN_CSHARP_NO_DIRECTORCONNECT_ATTR 846 %enddef + +/* please leave 830-849 free for C# */ + +%define SWIGWARN_MODULA3_TYPEMAP_TYPE_UNDEF 850 %enddef +%define SWIGWARN_MODULA3_TYPEMAP_GETCPTR_UNDEF 851 %enddef +%define SWIGWARN_MODULA3_TYPEMAP_CLASSMOD_UNDEF 852 %enddef +%define SWIGWARN_MODULA3_TYPEMAP_PTRCONSTMOD_UNDEF 853 %enddef +%define SWIGWARN_MODULA3_TYPEMAP_MULTIPLE_RETURN 854 %enddef +%define SWIGWARN_MODULA3_MULTIPLE_INHERITANCE 855 %enddef +%define SWIGWARN_MODULA3_TYPECONSTRUCTOR_UNKNOWN 856 %enddef +%define SWIGWARN_MODULA3_UNKNOWN_PRAGMA 857 %enddef +%define SWIGWARN_MODULA3_BAD_ENUMERATION 858 %enddef +%define SWIGWARN_MODULA3_DOUBLE_ID 859 %enddef +%define SWIGWARN_MODULA3_BAD_IMPORT 860 %enddef + +/* please leave 850-869 free for Modula 3 */ + +%define SWIGWARN_PHP_MULTIPLE_INHERITANCE 870 %enddef +%define SWIGWARN_PHP_UNKNOWN_PRAGMA 871 %enddef +%define SWIGWARN_PHP_PUBLIC_BASE 872 %enddef + +/* please leave 870-889 free for PHP */ + +%define SWIGWARN_GO_NAME_CONFLICT 890 %enddef + +/* please leave 890-899 free for Go */ + +/* -- User defined warnings (900 - 999) -- */ + diff --git a/qrenderdoc/3rdparty/swig/Lib/swigwarnings.swg b/qrenderdoc/3rdparty/swig/Lib/swigwarnings.swg new file mode 100644 index 000000000..34c98fbda --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/swigwarnings.swg @@ -0,0 +1,129 @@ +/* + Include the internal swig macro codes. These macros correspond to + the one found in Source/Include/swigwarn.h plus the 'SWIG' prefix. + + For example, in the include file 'swigwarn.h' you will find + + #define WARN_TYPEMAP_CHARLEAK ... + + and in the 'swigwarn.swg' interface, you will see + + %define SWIGWARN_TYPEMAP_CHARLEAK ... + + This code can be used in warning filters as follows: + + %warnfilter(SWIGWARN_TYPEMAP_CHARLEAK); + + Warnings messages used in typemaps. Message names will be the same + as those in Lib/swigwarn.swg but with the suffix _MSG. + + For example, for the code SWIGWARN_TYPEMAP_CHARLEAK, once you use + + %typemapmsg(CHARLEAK,<msg>); + + you use the message in your typemap as + + %typemap(varin,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) char * + + while you suppress the warning using + + %warnfilter(SWIGWARN_TYPEMAP_CHARLEAK); + + as described above. +*/ + +/* ----------------------------------------------------------------------------- + * SWIG warning codes + * ----------------------------------------------------------------------------- */ + +%include <swigwarn.swg> + +/* ----------------------------------------------------------------------------- + * Auxiliary macros + * ----------------------------------------------------------------------------- */ + +/* Macro to define warning messages */ +#define %_warningmsg(Val, Msg...) `Val`":"Msg +#define %warningmsg(Val, Msg...) %_warningmsg(Val, Msg) + +/* ----------------------------------------------------------------------------- + * Typemap related warning messages + * ----------------------------------------------------------------------------- */ + +%define SWIGWARN_TYPEMAP_CHARLEAK_MSG "451:Setting a const char * variable may leak memory." %enddef +%define SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG "454:Setting a pointer/reference variable may leak memory." %enddef +%define SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG "470:Thread/reentrant unsafe wrapping, consider returning by value instead." %enddef +%define SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG "473:Returning a pointer or reference in a director method is not recommended." %enddef +%define SWIGWARN_TYPEMAP_INITIALIZER_LIST_MSG "476:Initialization using std::initializer_list." %enddef + +/* ----------------------------------------------------------------------------- + * Operator related warning messages + * ----------------------------------------------------------------------------- */ + +%define SWIGWARN_IGNORE_OPERATOR_NEW_MSG "350:operator new ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_DELETE_MSG "351:operator delete ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_PLUS_MSG "352:operator+ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MINUS_MSG "353:operator- ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MUL_MSG "354:operator* ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_DIV_MSG "355:operator/ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MOD_MSG "356:operator% ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_XOR_MSG "357:operator^ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_AND_MSG "358:operator& ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_OR_MSG "359:operator| ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_NOT_MSG "360:operator~ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LNOT_MSG "361:operator! ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_EQ_MSG "362:operator= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LT_MSG "363:operator< ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_GT_MSG "364:operator> ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_PLUSEQ_MSG "365:operator+= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MINUSEQ_MSG "366:operator-= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MULEQ_MSG "367:operator*= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_DIVEQ_MSG "368:operator/= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MODEQ_MSG "369:operator%= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_XOREQ_MSG "370:operator^= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_ANDEQ_MSG "371:operator&= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_OREQ_MSG "372:operator|= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LSHIFT_MSG "373:operator<< ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_RSHIFT_MSG "374:operator>> ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LSHIFTEQ_MSG "375:operator<<= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_RSHIFTEQ_MSG "376:operator>>= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_EQUALTO_MSG "377:operator== ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_NOTEQUAL_MSG "378:operator!= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LTEQUAL_MSG "379:operator<= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_GTEQUAL_MSG "380:operator>= ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LAND_MSG "381:operator&& ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_LOR_MSG "382:operator|| ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_PLUSPLUS_MSG "383:operator++ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_MINUSMINUS_MSG "384:operator-- ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_COMMA_MSG "385:operator-- ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_ARROWSTAR_MSG "386:operator->* ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_ARROW_MSG "387:operator-> ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_CALL_MSG "388:operator() ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_INDEX_MSG "389:operator[] ignored (consider using %%extend)" %enddef +%define SWIGWARN_IGNORE_OPERATOR_UPLUS_MSG "390:operator+ ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_UMINUS_MSG "391:operator- ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_UMUL_MSG "392:operator* ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_UAND_MSG "393:operator& ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_NEWARR_MSG "394:operator new[] ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_DELARR_MSG "395:operator delete[] ignored" %enddef +%define SWIGWARN_IGNORE_OPERATOR_REF_MSG "396:operator*() ignored" %enddef + +#define %ignoreoperator(Oper) %ignorewarn(SWIGWARN_IGNORE_OPERATOR_##Oper##_MSG) + +/* ----------------------------------------------------------------------------- + * Macros for keyword and built-in names + * ----------------------------------------------------------------------------- */ + +#define %keywordwarn(msg...) %namewarn(%warningmsg(SWIGWARN_PARSE_KEYWORD, msg)) +#define %builtinwarn(msg...) %namewarn(%warningmsg(SWIGWARN_PARSE_BUILTIN_NAME, msg), %$isfunction) + + +/* ----------------------------------------------------------------------------- + * Warning filter feature + * ----------------------------------------------------------------------------- */ + +#define %_warnfilter(filter...) %feature("warnfilter",`filter`) +#define %warnfilter(filter...) %_warnfilter(filter) + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/README b/qrenderdoc/3rdparty/swig/Lib/typemaps/README new file mode 100644 index 000000000..65134578d --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/README @@ -0,0 +1,54 @@ +Still in development, but if you are interested into looking around, +start with + + + swigtypemaps.swg + +which is the head file. Also read the docs for %fragments in + + fragments.swg + +and follow the definitions in one of the supported languages: + + python, perl, ruby, tcl + + + + +/* ----------------------------------------------------------------------------- + * Internal typemap specializations + * ----------------------------------------------------------------------------- */ + + +carrays.swg Implement the carrays.i library +cdata.swg Implement the cdata.i library +cmalloc.swg Implement the cmalloc.i library +cpointer.swg Implement the cpointer.i library +cstring.swg Implement the cstring.i library typemaps for char * +cwstring.swg Implement the cstring.i library typemaps for wchar_t * +exception.swg Implement the exception.i library +implicit.swg Allow the use of implicit C++ constructors + +string.swg Typemaps for char * string +wstring.swg Typemaps for wchar_t * string +std_string.swg Typemaps for std::string +std_wstring.swg Typemaps for std::wstring +swigtype.swg Typemaps for the SWIGTYPE type +void.swg Typemaps for the 'void' type +enumint.swg Typemaps for enums treated as 'int' +swigobject.swg Typemaps for the SWIG_Object as in PyObject, Tcl_Obj, etc. +misctypes.swg Typemaps for miscellaneos types (size_t, ptrdiff_t, etc) +ptrtypes.swg Typemaps for types with a 'ptr' behavior +valtypes.swg Typemaps for 'by value' types +inoutlist.swg IN/OUTPUT/INOUT typemaps, where the OUTPUT values are returned in a list +primtypes.swg Common macros to manage primitive types (short,int,double,etc) + +cstrings.swg Common macros to implemented the cstring/cwstring libraries +std_strings.swg Common macros to implemented the std::string/std::wstring typemaps +strings.swg Common macros and typemaps for string and wstring (char *, wchar_t *) + +swigmacros.swg Basic macros +fragments.swg Macros for fragment manipulations + + +typemaps.swg The old typemaps.i library, not needed anymore diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/attribute.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/attribute.swg new file mode 100644 index 000000000..988113991 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/attribute.swg @@ -0,0 +1,286 @@ +/* ----------------------------------------------------------------------------- + * attribute.swg + * + * Attribute implementation + * ----------------------------------------------------------------------------- */ + +/* + The following macros convert a pair of set/get methods + into a "native" attribute. + + Use %attribute when you have a pair of get/set methods to a primitive type + like in: + + %attribute(A, int, a, get_a, set_a); + + struct A + { + int get_a() const; + void set_a(int aa); + }; + + If you don't provide a 'set' method, a 'read-only' attribute + is generated, ie, like in: + + %attribute(A, int, c, get_c); + + Use %attributeref when you have const/non-const reference access methods + for primitive types or class/structs, like in: + + %attributeref(A, int, b); + + struct A + { + const int& b() const; + int& b(); + }; + + %attributeref(B, int, c); + + struct B + { + int& c(); + }; + + You can also use + + %attributeref(Class, AttributeType, AttributeName, AccessorMethod) + + if the internal C++ reference methods have a different name from the + attribute you want, so + + %attributeref(B, int, d, c); + + is the same as the last example, but instead of the attribute 'c' being + called 'c', it is called 'd'. + + Now you can use the attributes like so: + + x = A() + x.a = 3 # calls A::set_a + print x.a # calls A::get_a + + x.b = 3 # calls A::b() + print x.b # calls A::b() const + + Use %attribute2 instead of %attribute to indicate that reference-pointer + translation is required. You use %attribute2 instead of %attribute in + cases like this: + + %attribute2(MyClass, MyFoo, Foo, GetFoo, SetFoo); + %inline %{ + struct MyFoo { + int x; + }; + class MyClass { + MyFoo foo; + public: + MyFoo& GetFoo() { return foo; } + void SetFoo(const MyFoo& other) { foo = other; } + }; + %} + + Here, the data type of the property is a wrapped type (MyFoo) and on the + C++ side it is passed by reference. The problem is that the SWIG wrapper will + pass around a pointer (MyFoo *) which is not compatible with the reference + type of the accessors (MyFoo &). Therefore, if you use %attribute, you'll get + an error from your C/C++ compiler. %attribute2 translates between a pointer + and a reference to eliminate the error. In case you're confused, let's make it + simple: just use %attribute at first, but if the C/C++ compiler gives an error + while compiling the wrapper, try %attribute2 instead. + + NOTE: remember that if the type contains commas, such as 'std::pair<int,int>', + you need to use the macro like: + + %attributeref(A, %arg(std::pair<int,int>), pval); + + where %arg() 'normalizes' the type to be understood as a single + argument, otherwise the macro will get confused by the comma. + + The %attributeval is the same as %attribute, but should be used when the type + is a class/struct (ie a non-primitive type) and when the get and set methods + return/pass by value. The following is very similar to the above example, but + note that the access is by value rather than reference. + + %attributeval(MyClassVal, MyFoo, ReadWriteFoo, GetFoo, SetFoo); + %attributeval(MyClassVal, MyFoo, ReadOnlyFoo, GetFoo); + %inline %{ + class MyClassVal { + MyFoo foo; + public: + MyFoo GetFoo() { return foo; } + void SetFoo(MyFoo other) { foo = other; } + }; + %} + + The %attributestring is the same as %attributeval, but should be used for string + class types, which are unusual as they are a class on the C++ side, but normally an + immutable/primitive type in the target language. Example usage for std::string: + + %include <std_string.i> + %attributestring(MyStringyClass, std::string, ReadWriteString, GetString, SetString); + %attributestring(MyStringyClass, std::string, ReadOnlyString, GetString); + %inline %{ + class MyStringyClass { + std::string str; + public: + MyStringyClass(const std::string &val) : str(val) {} + std::string GetString() { return str; } + void SetString(std::string other) { str = other; } + }; + %} + + The %attributestring also works for class types that have %naturalvar turned + on and so is also useful for shared_ptr which has %naturalvar turned on in %shared_ptr. + +*/ + +// +// Define SWIG_ATTRIBUTE_TEMPLATE if you want to use templates instead of macros for the C++ get and set wrapper methods +// Does not always generate compilable code, use at your peril! +// +//#define SWIG_ATTRIBUTE_TEMPLATE + +%define %attribute_custom(Class, AttributeType, AttributeName, GetMethod, SetMethod, GetMethodCall, SetMethodCall) + %ignore Class::GetMethod(); + %ignore Class::GetMethod() const; + #if #SetMethod != #AttributeName + %ignore Class::SetMethod; + #endif + %extend Class { + AttributeType AttributeName; + } +#if defined(__cplusplus) && defined(SWIG_ATTRIBUTE_TEMPLATE) + %{ + template < class C > inline AttributeType %mangle(Class) ##_## AttributeName ## _get(const C* self_) { + return GetMethodCall; + } + template < class C > inline AttributeType %mangle(Class) ##_## AttributeName ## _get(C* self_) { + return GetMethodCall; + } + template < class C > inline void %mangle(Class) ##_## AttributeName ## _set(C* self_, AttributeType val_) { + SetMethodCall; + } + %} +#else + %{ + #define %mangle(Class) ##_## AttributeName ## _get(self_) GetMethodCall + #define %mangle(Class) ##_## AttributeName ## _set(self_, val_) SetMethodCall + %} +#endif +%enddef + +%define %attribute_readonly(Class, AttributeType, AttributeName, GetMethod, GetMethodCall) + %ignore Class::GetMethod(); + %ignore Class::GetMethod() const; + %immutable Class::AttributeName; + %extend Class { + AttributeType AttributeName; + } +#if defined(__cplusplus) && defined(SWIG_ATTRIBUTE_TEMPLATE) + %{ + template < class C > inline AttributeType %mangle(Class) ##_## AttributeName ## _get(const C* self_) { + return GetMethodCall; + } + template < class C > inline AttributeType %mangle(Class) ##_## AttributeName ## _get(C* self_) { + return GetMethodCall; + } + %} +#else + %{ + #define %mangle(Class) ##_## AttributeName ## _get(self_) GetMethodCall + %} +#endif +%enddef + + +// User macros + +%define %attribute(Class, AttributeType, AttributeName, GetMethod, SetMethod...) + #if #SetMethod != "" + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, GetMethod, SetMethod, self_->GetMethod(), self_->SetMethod(val_)) + #else + %attribute_readonly(%arg(Class), %arg(AttributeType), AttributeName, GetMethod, self_->GetMethod()) + #endif +%enddef + +%define %attribute2(Class, AttributeType, AttributeName, GetMethod, SetMethod...) + #if #SetMethod != "" + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, GetMethod, SetMethod, &self_->GetMethod(), self_->SetMethod(*val_)) + #else + %attribute_readonly(%arg(Class), %arg(AttributeType), AttributeName, GetMethod, &self_->GetMethod()) + #endif +%enddef + +%define %attributeref(Class, AttributeType, AttributeName, AccessorMethod...) + #if #AccessorMethod != "" + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, AccessorMethod, AccessorMethod, self_->AccessorMethod(), self_->AccessorMethod() = val_) + #else + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, AttributeName, AttributeName, self_->AttributeName(), self_->AttributeName() = val_) + #endif +%enddef + +%define %attribute2ref(Class, AttributeType, AttributeName, AccessorMethod...) + #if #AccessorMethod != "" + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, AccessorMethod, AccessorMethod, &self_->AccessorMethod(), self_->AccessorMethod() = *val_) + #else + %attribute_custom(%arg(Class), %arg(AttributeType), AccessorName, AccessorName, AccessorName, &self_->AccessorName(), self_->AccessorName() = *val_) + #endif +%enddef + +// deprecated (same as %attributeref, but there is an argument order inconsistency) +%define %attribute_ref(Class, AttributeType, AccessorMethod, AttributeName...) + #if #AttributeName != "" + %attribute_custom(%arg(Class), %arg(AttributeType), AttributeName, AccessorMethod, AccessorMethod, self_->AccessorMethod(), self_->AccessorMethod() = val_) + #else + %attribute_custom(%arg(Class), %arg(AttributeType), AccessorMethod, AccessorMethod, AccessorMethod, self_->AccessorMethod(), self_->AccessorMethod() = val_) + #endif +%enddef + + +%define %attributeval(Class, AttributeType, AttributeName, GetMethod, SetMethod...) + %{ + #define %mangle(Class) ##_## AttributeName ## _get(self_) new AttributeType(self_->GetMethod()) + %} + #if #SetMethod != "" + %{ + #define %mangle(Class) ##_## AttributeName ## _set(self_, val_) self_->SetMethod(*val_) + %} + #if #SetMethod != #AttributeName + %ignore Class::SetMethod; + #endif + #else + %immutable Class::AttributeName; + #endif + %ignore Class::GetMethod(); + %ignore Class::GetMethod() const; + %newobject Class::AttributeName; + %extend Class { + AttributeType AttributeName; + } +%enddef + + +%define %attributestring(Class, AttributeType, AttributeName, GetMethod, SetMethod...) + %{ + #define %mangle(Class) ##_## AttributeName ## _get(self_) *new AttributeType(self_->GetMethod()) + %} + #if #SetMethod != "" + %{ + #define %mangle(Class) ##_## AttributeName ## _set(self_, val_) self_->SetMethod(val_) + %} + #if #SetMethod != #AttributeName + %ignore Class::SetMethod; + #endif + #else + %immutable Class::AttributeName; + #endif + %ignore Class::GetMethod(); + %ignore Class::GetMethod() const; + %newobject Class::AttributeName; + %typemap(newfree) const AttributeType &AttributeName "delete $1;" + %extend Class { + AttributeType AttributeName; + } +%enddef + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/carrays.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/carrays.swg new file mode 100644 index 000000000..462d60bc2 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/carrays.swg @@ -0,0 +1,114 @@ +/* ----------------------------------------------------------------------------- + * carrays.swg + * + * This library file contains macros that can be used to manipulate simple + * pointers as arrays. + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * %array_functions(TYPE,NAME) + * + * Generates functions for creating and accessing elements of a C array + * (as pointers). Creates the following functions: + * + * TYPE *new_NAME(int nelements) + * void delete_NAME(TYPE *); + * TYPE NAME_getitem(TYPE *, int index); + * void NAME_setitem(TYPE *, int index, TYPE value); + * + * ----------------------------------------------------------------------------- */ + +%define %array_functions(TYPE,NAME) +%{ + static TYPE *new_##NAME(size_t nelements) { + return %new_array(nelements, TYPE); + } + + static void delete_##NAME(TYPE *ary) { + %delete_array(ary); + } + + static TYPE NAME##_getitem(TYPE *ary, size_t index) { + return ary[index]; + } + static void NAME##_setitem(TYPE *ary, size_t index, TYPE value) { + ary[index] = value; + } +%} + +TYPE *new_##NAME(size_t nelements); +void delete_##NAME(TYPE *ary); +TYPE NAME##_getitem(TYPE *ary, size_t index); +void NAME##_setitem(TYPE *ary, size_t index, TYPE value); + +%enddef + + +/* ----------------------------------------------------------------------------- + * %array_class(TYPE,NAME) + * + * Generates a class wrapper around a C array. The class has the following + * interface: + * + * struct NAME { + * NAME(int nelements); + * ~NAME(); + * TYPE getitem(int index); + * void setitem(int index, TYPE value); + * TYPE * cast(); + * static NAME *frompointer(TYPE *t); + * } + * + * Use + * + * %array_class_wrap(TYPE,NAME,GET,SET) + * + * if you want different names for the get/set methods. + * ----------------------------------------------------------------------------- */ + +%define %array_class_wrap(TYPE,NAME,getitem,setitem) +%{ +typedef TYPE NAME; +%} + + +typedef struct { +} NAME; + +%extend NAME { + + NAME(size_t nelements) { + return %new_array(nelements, TYPE); + } + + ~NAME() { + %delete_array(self); + } + + TYPE getitem(size_t index) { + return self[index]; + } + + void setitem(size_t index, TYPE value) { + self[index] = value; + } + + TYPE * cast() { + return self; + } + + static NAME *frompointer(TYPE *t) { + return %static_cast(t, NAME *); + } +}; + +%types(NAME = TYPE); + +%enddef + + +#ifndef %array_class +%define %array_class(TYPE,NAME) + %array_class_wrap(TYPE,NAME,getitem,setitem) +%enddef +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/cdata.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/cdata.swg new file mode 100644 index 000000000..8597b7b0c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/cdata.swg @@ -0,0 +1,76 @@ +/* ----------------------------------------------------------------------------- + * cdata.swg + * + * This library file contains macros for manipulating raw C data as strings. + * ----------------------------------------------------------------------------- */ + +%{ +typedef struct SWIGCDATA { + char *data; + size_t len; +} SWIGCDATA; +%} + +/* ----------------------------------------------------------------------------- + * Typemaps for returning binary data + * ----------------------------------------------------------------------------- */ + +%typemap(out,noblock=1,fragment="SWIG_FromCharPtrAndSize") SWIGCDATA { + %set_output(SWIG_FromCharPtrAndSize($1.data,$1.len)); +} +%typemap(in) (const void *indata, size_t inlen) = (char *STRING, size_t SIZE); + + +/* ----------------------------------------------------------------------------- + * %cdata(TYPE [, NAME]) + * + * Convert raw C data to a binary string. + * ----------------------------------------------------------------------------- */ + +%define %cdata(TYPE,NAME...) + +%insert("header") { +#ifdef __cplusplus +extern "C" { +#endif +#if #NAME == "" +static SWIGCDATA cdata_##TYPE(TYPE *ptr, size_t nelements) +#else +static SWIGCDATA cdata_##NAME(TYPE *ptr, size_t nelements) +#endif +{ + SWIGCDATA d; + d.data = (char *) ptr; +#if #TYPE != "void" + d.len = nelements*sizeof(TYPE); +#else + d.len = nelements; +#endif + return d; +} +#ifdef __cplusplus +} +#endif +} + +#ifdef __cplusplus +extern "C" +#endif +#if #NAME == "" +SWIGCDATA cdata_##TYPE(TYPE *ptr, size_t nelements = 1); +#else +SWIGCDATA cdata_##NAME(TYPE *ptr, size_t nelements = 1); +#endif +%enddef + +%rename(cdata) ::cdata_void(void *ptr, size_t nelements = 1); + +%cdata(void); + +/* Memory move function. Due to multi-argument typemaps this appears to be wrapped as +void memmove(void *data, const char *s); */ +void memmove(void *data, const void *indata, size_t inlen); + + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/cmalloc.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/cmalloc.swg new file mode 100644 index 000000000..45a6ab990 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/cmalloc.swg @@ -0,0 +1,110 @@ +/* ----------------------------------------------------------------------------- + * cmalloc.swg + * + * This library file contains macros that can be used to create objects using + * the C malloc function. + * ----------------------------------------------------------------------------- */ + +%{ +#include <stdlib.h> +%} + +/* %malloc(TYPE [, NAME = TYPE]) + %calloc(TYPE [, NAME = TYPE]) + %realloc(TYPE [, NAME = TYPE]) + %free(TYPE [, NAME = TYPE]) + %allocators(TYPE [,NAME = TYPE]) + + Creates functions for allocating/reallocating memory. + + TYPE *malloc_NAME(size_t nbytes = sizeof(TYPE); + TYPE *calloc_NAME(size_t nobj=1, size_t size=sizeof(TYPE)); + TYPE *realloc_NAME(TYPE *ptr, size_t nbytes); + void free_NAME(TYPE *ptr); + +*/ + +%define %malloc(TYPE,NAME...) +#if #NAME != "" +%rename(malloc_##NAME) ::malloc(size_t nbytes); +#else +%rename(malloc_##TYPE) ::malloc(size_t nbytes); +#endif + +#if #TYPE != "void" +%typemap(default) size_t nbytes "$1 = (size_t) sizeof(TYPE);" +#endif +TYPE *malloc(size_t nbytes); +%typemap(default) size_t nbytes; +%enddef + +%define %calloc(TYPE,NAME...) +#if #NAME != "" +%rename(calloc_##NAME) ::calloc(size_t nobj, size_t sz); +#else +%rename(calloc_##TYPE) ::calloc(size_t nobj, size_t sz); +#endif +#if #TYPE != "void" +%typemap(default) size_t sz "$1 = (size_t) sizeof(TYPE);" +#else +%typemap(default) size_t sz "$1 = 1;" +#endif +%typemap(default) size_t nobj "$1 = 1;" +TYPE *calloc(size_t nobj, size_t sz); +%typemap(default) size_t sz; +%typemap(default) size_t nobj; +%enddef + +%define %realloc(TYPE,NAME...) +%insert("header") { +#if #NAME != "" +TYPE *realloc_##NAME(TYPE *ptr, size_t nitems) +#else +TYPE *realloc_##TYPE(TYPE *ptr, size_t nitems) +#endif +{ +#if #TYPE != "void" +return (TYPE *) realloc(ptr, nitems*sizeof(TYPE)); +#else +return (TYPE *) realloc(ptr, nitems); +#endif +} +} +#if #NAME != "" +TYPE *realloc_##NAME(TYPE *ptr, size_t nitems); +#else +TYPE *realloc_##TYPE(TYPE *ptr, size_t nitems); +#endif +%enddef + +%define %free(TYPE,NAME...) +#if #NAME != "" +%rename(free_##NAME) ::free(TYPE *ptr); +#else +%rename(free_##TYPE) ::free(TYPE *ptr); +#endif +void free(TYPE *ptr); +%enddef + +%define %sizeof(TYPE,NAME...) +#if #NAME != "" +%constant size_t sizeof_##NAME = sizeof(TYPE); +#else +%constant size_t sizeof_##TYPE = sizeof(TYPE); +#endif +%enddef + +%define %allocators(TYPE,NAME...) +%malloc(TYPE,NAME) +%calloc(TYPE,NAME) +%realloc(TYPE,NAME) +%free(TYPE,NAME) +#if #TYPE != "void" +%sizeof(TYPE,NAME) +#endif +%enddef + + + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/cpointer.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/cpointer.swg new file mode 100644 index 000000000..94bbbd6bc --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/cpointer.swg @@ -0,0 +1,157 @@ +/* ----------------------------------------------------------------------------- + * cpointer.swg + * + * This library file contains macros that can be used to manipulate simple + * pointer objects. + * + * ----------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- + * %pointer_class(type,name) + * + * Places a simple proxy around a simple type like 'int', 'float', or whatever. + * The proxy provides this interface: + * + * class type { + * public: + * type(); + * ~type(); + * type value(); + * void assign(type value); + * }; + * + * Example: + * + * %pointer_class(int, intp); + * + * int add(int *x, int *y) { return *x + *y; } + * + * In python (with proxies) + * + * >>> a = intp() + * >>> a.assign(10) + * >>> a.value() + * 10 + * >>> b = intp() + * >>> b.assign(20) + * >>> print add(a,b) + * 30 + * + * As a general rule, this macro should not be used on class/structures that + * are already defined in the interface. + * ----------------------------------------------------------------------------- */ + + +%define %pointer_class(TYPE, NAME) +%{ +typedef TYPE NAME; +%} + +typedef struct { +} NAME; + +%extend NAME { + NAME() { + return %new_instance(TYPE); + } + ~NAME() { + if ($self) %delete($self); + } +} + +%extend NAME { + + void assign(TYPE value) { + *$self = value; + } + TYPE value() { + return *$self; + } + TYPE * cast() { + return $self; + } + static NAME * frompointer(TYPE *t) { + return (NAME *) t; + } +} + +%types(NAME = TYPE); + +%enddef + +/* ----------------------------------------------------------------------------- + * %pointer_functions(type,name) + * + * Create functions for allocating/deallocating pointers. This can be used + * if you don't want to create a proxy class or if the pointer is complex. + * + * %pointer_functions(int, intp) + * + * int add(int *x, int *y) { return *x + *y; } + * + * In python (with proxies) + * + * >>> a = copy_intp(10) + * >>> intp_value(a) + * 10 + * >>> b = new_intp() + * >>> intp_assign(b,20) + * >>> print add(a,b) + * 30 + * >>> delete_intp(a) + * >>> delete_intp(b) + * + * ----------------------------------------------------------------------------- */ + +%define %pointer_functions(TYPE,NAME) +%{ + static TYPE *new_##NAME() { + return %new_instance(TYPE); + } + + static TYPE *copy_##NAME(TYPE value) { + return %new_copy(value, TYPE); + } + + static void delete_##NAME(TYPE *obj) { + if (obj) %delete(obj); + } + + static void NAME ##_assign(TYPE *obj, TYPE value) { + *obj = value; + } + + static TYPE NAME ##_value(TYPE *obj) { + return *obj; + } +%} + +TYPE *new_##NAME(); +TYPE *copy_##NAME(TYPE value); +void delete_##NAME(TYPE *obj); +void NAME##_assign(TYPE *obj, TYPE value); +TYPE NAME##_value(TYPE *obj); + +%enddef + +/* ----------------------------------------------------------------------------- + * %pointer_cast(type1,type2,name) + * + * Generates a pointer casting function. + * ----------------------------------------------------------------------------- */ + +%define %pointer_cast(TYPE1,TYPE2,NAME) +%inline %{ +TYPE2 NAME(TYPE1 x) { + return %static_cast(x, TYPE2); +} +%} +%enddef + + + + + + + + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/cstring.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/cstring.swg new file mode 100644 index 000000000..e774c4312 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/cstring.swg @@ -0,0 +1,9 @@ +%include <typemaps/cstrings.swg> + +%typemaps_cstring(%cstring, + char, + SWIG_AsCharPtr, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtr, + SWIG_FromCharPtrAndSize); + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/cstrings.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/cstrings.swg new file mode 100644 index 000000000..0aca61101 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/cstrings.swg @@ -0,0 +1,288 @@ +/* ----------------------------------------------------------------------------- + * cstrings.swg + * + * This file provides typemaps and macros for dealing with various forms + * of C character string handling. The primary use of this module + * is in returning character data that has been allocated or changed in + * some way. + * ----------------------------------------------------------------------------- */ + +%define %typemaps_cstring(Name, Char, + SWIG_AsCharPtr, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtr, + SWIG_FromCharPtrAndSize) + + +/* %cstring_input_binary(TYPEMAP, SIZE) + * + * Macro makes a function accept binary string data along with + * a size. For example: + * + * %cstring_input_binary(Char *buff, int size); + * void foo(Char *buff, int size) { + * } + * + */ + +%define Name ## _input_binary(TYPEMAP, SIZE) +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) (TYPEMAP, SIZE) + (int res, Char *buf = 0, size_t size = 0, int alloc = 0) { + res = SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); + } + $1 = ($1_ltype) buf; + $2 = ($2_ltype) size - 1; +} +%typemap(freearg,noblock=1,match="in") (TYPEMAP, SIZE) { + if (alloc$argnum == SWIG_NEWOBJ) %delete_array(buf$argnum); +} +%enddef + + + +/* + * %cstring_bounded_output(TYPEMAP, MAX) + * + * This macro is used to return a NULL-terminated output string of + * some maximum length. For example: + * + * %cstring_bounded_output(Char *outx, 512); + * void foo(Char *outx) { + * sprintf(outx,"blah blah\n"); + * } + * + */ + +%define Name ## _bounded_output(TYPEMAP,MAX) +%typemap(in,noblock=1,numinputs=0) TYPEMAP (Char temp[MAX+1]) { + $1 = ($1_ltype) temp; +} +%typemap(freearg,match="in") TYPEMAP ""; +%typemap(argout,noblock=1,fragment= #SWIG_FromCharPtr ) TYPEMAP { + $1[MAX] = 0; + %append_output(SWIG_FromCharPtr($1)); +} +%enddef + + + +/* + * %cstring_chunk_output(TYPEMAP, SIZE) + * + * This macro is used to return a chunk of binary string data. + * Embedded NULLs are okay. For example: + * + * %cstring_chunk_output(Char *outx, 512); + * void foo(Char *outx) { + * memmove(outx, somedata, 512); + * } + * + */ + +%define Name ## _chunk_output(TYPEMAP,SIZE) +%typemap(in,noblock=1,numinputs=0) TYPEMAP(Char temp[SIZE]) { + $1 = ($1_ltype) temp; +} +%typemap(freearg,match="in") TYPEMAP ""; +%typemap(argout,noblock=1,fragment= #SWIG_FromCharPtrAndSize) TYPEMAP { + %append_output(SWIG_FromCharPtrAndSize($1,SIZE)); +} +%enddef + + + +/* + * %cstring_bounded_mutable(TYPEMAP, SIZE) + * + * This macro is used to wrap a string that's going to mutate. + * + * %cstring_bounded_mutable(Char *in, 512); + * void foo(in *x) { + * while (*x) { + * *x = toupper(*x); + * x++; + * } + * } + * + */ + + +%define Name ## _bounded_mutable(TYPEMAP,MAX) +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) TYPEMAP + (int res,Char temp[MAX+1], Char *t = 0, size_t n = 0, int alloc = 0) { + res = SWIG_AsCharPtrAndSize($input, &t, &n, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "TYPEMAP", $symname, $argnum); + } + if ( n > (size_t) MAX ) n = (size_t) MAX; + memcpy(temp, t, sizeof(Char)*n); + if (alloc == SWIG_NEWOBJ) %delete_array(t); + temp[n - 1] = 0; + $1 = ($1_ltype) temp; +} +%typemap(freearg,match="in") TYPEMAP ""; +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtr) TYPEMAP { + $1[MAX] = 0; + %append_output(SWIG_FromCharPtr($1)); +} +%enddef + + +/* + * %cstring_mutable(TYPEMAP [, expansion]) + * + * This macro is used to wrap a string that will mutate in place. + * It may change size up to a user-defined expansion. + * + * %cstring_mutable(Char *in); + * void foo(in *x) { + * while (*x) { + * *x = toupper(*x); + * x++; + * } + * } + * + */ + +%define Name ## _mutable(TYPEMAP,EXP...) +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) TYPEMAP (int res, Char *t = 0, size_t n = 0, int alloc = 0, size_t expansion = 0) { +#if #EXP != "" + expansion += EXP; +#endif + res = SWIG_AsCharPtrAndSize($input, &t, &n, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "TYPEMAP", $symname, $argnum); + } + $1 = %new_array(n+expansion, $*1_ltype); + memcpy($1,t,sizeof(Char)*n); + if (alloc == SWIG_NEWOBJ) %delete_array(t); + $1[n-1] = 0; +} +%typemap(freearg,match="in") TYPEMAP ""; +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtr) TYPEMAP { + %append_output(SWIG_FromCharPtr($1)); + %delete_array($1); +} +%enddef + + +/* + * %cstring_output_maxsize(TYPEMAP, SIZE) + * + * This macro returns data in a string of some user-defined size. + * + * %cstring_output_maxsize(Char *outx, int max) { + * void foo(Char *outx, int max) { + * sprintf(outx,"blah blah\n"); + * } + */ + +%define Name ## _output_maxsize(TYPEMAP, SIZE) +%typemap(in,noblock=1,fragment=SWIG_AsVal_frag(size_t)) (TYPEMAP, SIZE) (int res, size_t size, Char *buff = 0) { + res = SWIG_AsVal(size_t)($input, &size); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); + } + buff= %new_array(size+1, Char); + $2 = %numeric_cast(size, $2_ltype); + $1 = %static_cast(buff, $1_ltype); +} +%typemap(freearg,noblock=1,match="in") (TYPEMAP,SIZE) { + if (buff$argnum) %delete_array(buff$argnum); +} +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtr) (TYPEMAP,SIZE) { + %append_output(SWIG_FromCharPtr($1)); +} +%enddef + +/* + * %cstring_output_withsize(TYPEMAP, SIZE) + * + * This macro is used to return Character data along with a size + * parameter. + * + * %cstring_output_withsize(Char *outx, int *max) { + * void foo(Char *outx, int *max) { + * sprintf(outx,"blah blah\n"); + * *max = strlen(outx); + * } + */ + +%define Name ## _output_withsize(TYPEMAP, SIZE) +%typemap(in,noblock=1,fragment=SWIG_AsVal_frag(size_t)) (TYPEMAP, SIZE) (int res, size_t n, Char *buff = 0, $*2_ltype size) { + res = SWIG_AsVal(size_t)($input, &n); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); + } + buff= %new_array(n+1, Char); + $1 = %static_cast(buff, $1_ltype); + size = %numeric_cast(n,$*2_ltype); + $2 = &size; +} +%typemap(freearg,noblock=1,match="in")(TYPEMAP,SIZE) { + if (buff$argnum) %delete_array(buff$argnum); +} +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtrAndSize) (TYPEMAP,SIZE) { + %append_output(SWIG_FromCharPtrAndSize($1,*$2)); +} +%enddef + + +/* + * %cstring_output_allocate(TYPEMAP, RELEASE) + * + * This macro is used to return Character data that was + * allocated with new or malloc. + * + * %cstring_output_allocate(Char **outx, free($1)); + * void foo(Char **outx) { + * *outx = (Char *) malloc(512); + * sprintf(outx,"blah blah\n"); + * } + */ + +%define Name ## _output_allocate(TYPEMAP, RELEASE) +%typemap(in,noblock=1,numinputs=0) TYPEMAP($*1_ltype temp = 0) { + $1 = &temp; +} +%typemap(freearg,match="in") TYPEMAP ""; +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtr) TYPEMAP { + if (*$1) { + %append_output(SWIG_FromCharPtr(*$1)); + RELEASE; + } +} +%enddef + + +/* + * %cstring_output_allocate_size(TYPEMAP, SIZE, RELEASE) + * + * This macro is used to return Character data that was + * allocated with new or malloc. + * + * %cstring_output_allocate_size(Char **outx, int *sz, free($1)); + * void foo(Char **outx, int *sz) { + * *outx = (Char *) malloc(512); + * sprintf(outx,"blah blah\n"); + * *sz = strlen(outx); + * } + */ + +%define Name ## _output_allocate_size(TYPEMAP, SIZE, RELEASE) +%typemap(in,noblock=1,numinputs=0) (TYPEMAP, SIZE) ($*1_ltype temp = 0, $*2_ltype tempn) { + $1 = &temp; $2 = &tempn; +} +%typemap(freearg,match="in") (TYPEMAP,SIZE) ""; +%typemap(argout,noblock=1,fragment=#SWIG_FromCharPtrAndSize)(TYPEMAP,SIZE) { + if (*$1) { + %append_output(SWIG_FromCharPtrAndSize(*$1,*$2)); + RELEASE; + } +} +%enddef + +%enddef + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/cwstring.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/cwstring.swg new file mode 100644 index 000000000..933f9a3a6 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/cwstring.swg @@ -0,0 +1,10 @@ +%include <typemaps/cstrings.swg> +%include <typemaps/wstring.swg> + +%typemaps_cstring(%cwstring, + wchar_t, + SWIG_AsWCharPtr, + SWIG_AsWCharPtrAndSize, + SWIG_FromWCharPtr, + SWIG_FromWCharPtrAndSize); + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/enumint.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/enumint.swg new file mode 100644 index 000000000..d048bb6bf --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/enumint.swg @@ -0,0 +1,39 @@ +/* ------------------------------------------------------------ + * Enums mapped as integer values + * ------------------------------------------------------------ */ + +%apply int { enum SWIGTYPE }; +%apply const int& { const enum SWIGTYPE & }; +%apply const int& { const enum SWIGTYPE && }; + +%typemap(in,fragment=SWIG_AsVal_frag(int),noblock=1) const enum SWIGTYPE & (int val, int ecode, $basetype temp) { + ecode = SWIG_AsVal(int)($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$type", $symname, $argnum); + } else { + temp = %static_cast(val,$basetype); + $1 = &temp; + } +} + +%typemap(in,fragment=SWIG_AsVal_frag(int),noblock=1) const enum SWIGTYPE && (int val, int ecode, $basetype temp) { + ecode = SWIG_AsVal(int)($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$type", $symname, $argnum); + } else { + temp = %static_cast(val,$basetype); + $1 = &temp; + } +} + +%typemap(varin,fragment=SWIG_AsVal_frag(int),noblock=1) enum SWIGTYPE { + if (sizeof(int) != sizeof($1)) { + %variable_fail(SWIG_AttributeError,"$type", "arch, read-only $name"); + } else { + int ecode = SWIG_AsVal(int)($input, %reinterpret_cast(&$1,int*)); + if (!SWIG_IsOK(ecode)) { + %variable_fail(ecode, "$type", "$name"); + } + } +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/exception.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/exception.swg new file mode 100644 index 000000000..b60a32996 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/exception.swg @@ -0,0 +1,86 @@ +/* ----------------------------------------------------------------------------- + * exceptions.swg + * + * This SWIG library file provides language independent exception handling + * ----------------------------------------------------------------------------- */ + +%include <typemaps/swigmacros.swg> + + +/* macros for error manipulation */ +#define %nullref_fmt() "invalid null reference " +#define %varfail_fmt(_type,_name) "in variable '"`_name`"' of type '"`_type`"'" +#ifndef %argfail_fmt +#define %argfail_fmt(_type,_name,_argn) "in method '" `_name` "', argument " `_argn`" of type '" `_type`"'" +#endif +#define %outfail_fmt(_type) "in output value of type '"_type"'" +#ifndef %argnullref_fmt +#define %argnullref_fmt(_type,_name,_argn) %nullref_fmt() %argfail_fmt(_type, _name, _argn) +#endif +#define %varnullref_fmt(_type,_name) %nullref_fmt() %varfail_fmt(_type, _name) +#define %outnullref_fmt(_type) %nullref_fmt() %outfail_fmt(_type) + +/* setting an error */ +#define %error(code,msg...) SWIG_Error(code, msg) +#define %type_error(msg...) SWIG_Error(SWIG_TypeError, msg) + + + +%insert("runtime") { + +%define_as(SWIG_exception_fail(code, msg), %block(%error(code, msg); SWIG_fail)) + +%define_as(SWIG_contract_assert(expr, msg), if (!(expr)) { %error(SWIG_RuntimeError, msg); SWIG_fail; } else) + +} + +#ifdef __cplusplus +/* + You can use the SWIG_CATCH_STDEXCEPT macro with the %exception + directive as follows: + + %exception { + try { + $action + } + catch (my_except& e) { + ... + } + SWIG_CATCH_STDEXCEPT // catch std::exception + catch (...) { + SWIG_exception_fail(SWIG_UnknownError, "Unknown exception"); + } + } +*/ + +%fragment("<stdexcept>"); + +%define SWIG_CATCH_STDEXCEPT + /* catching std::exception */ + catch (std::invalid_argument& e) { + SWIG_exception_fail(SWIG_ValueError, e.what() ); + } catch (std::domain_error& e) { + SWIG_exception_fail(SWIG_ValueError, e.what() ); + } catch (std::overflow_error& e) { + SWIG_exception_fail(SWIG_OverflowError, e.what() ); + } catch (std::out_of_range& e) { + SWIG_exception_fail(SWIG_IndexError, e.what() ); + } catch (std::length_error& e) { + SWIG_exception_fail(SWIG_IndexError, e.what() ); + } catch (std::runtime_error& e) { + SWIG_exception_fail(SWIG_RuntimeError, e.what() ); + } catch (std::exception& e) { + SWIG_exception_fail(SWIG_SystemError, e.what() ); + } +%enddef +%define SWIG_CATCH_UNKNOWN + catch (std::exception& e) { + SWIG_exception_fail(SWIG_SystemError, e.what() ); + } + catch (...) { + SWIG_exception_fail(SWIG_UnknownError, "unknown exception"); + } +%enddef + + +#endif /* __cplusplus */ diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/factory.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/factory.swg new file mode 100644 index 000000000..bccceb1d7 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/factory.swg @@ -0,0 +1,88 @@ +/* + Implement a more natural wrap for factory methods, for example, if + you have: + + ---- geometry.h -------- + struct Geometry { + enum GeomType{ + POINT, + CIRCLE + }; + + virtual ~Geometry() {} + virtual int draw() = 0; + + // + // Factory method for all the Geometry objects + // + static Geometry *create(GeomType i); + }; + + struct Point : Geometry { + int draw() { return 1; } + double width() { return 1.0; } + }; + + struct Circle : Geometry { + int draw() { return 2; } + double radius() { return 1.5; } + }; + + // + // Factory method for all the Geometry objects + // + Geometry *Geometry::create(GeomType type) { + switch (type) { + case POINT: return new Point(); + case CIRCLE: return new Circle(); + default: return 0; + } + } + ---- geometry.h -------- + + + You can use the %factory with the Geometry::create method as follows: + + %newobject Geometry::create; + %factory(Geometry *Geometry::create, Point, Circle); + %include "geometry.h" + + and Geometry::create will return a 'Point' or 'Circle' instance + instead of the plain 'Geometry' type. For example, in python: + + circle = Geometry.create(Geometry.CIRCLE) + r = circle.radius() + + where circle is a Circle proxy instance. + + NOTES: remember to fully qualify all the type names and don't + use %factory inside a namespace declaration, ie, instead of + + namespace Foo { + %factory(Geometry *Geometry::create, Point, Circle); + } + + use + + %factory(Foo::Geometry *Foo::Geometry::create, Foo::Point, Foo::Circle); + + +*/ + +%define %_factory_dispatch(Type) +if (!dcast) { + Type *dobj = dynamic_cast<Type *>($1); + if (dobj) { + dcast = 1; + %set_output(SWIG_NewPointerObj(%as_voidptr(dobj),$descriptor(Type *), $owner | %newpointer_flags)); + } +}%enddef + +%define %factory(Method,Types...) +%typemap(out) Method { + int dcast = 0; + %formacro(%_factory_dispatch, Types) + if (!dcast) { + %set_output(SWIG_NewPointerObj(%as_voidptr($1),$descriptor, $owner | %newpointer_flags)); + } +}%enddef diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/fragments.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/fragments.swg new file mode 100644 index 000000000..3f33ca98d --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/fragments.swg @@ -0,0 +1,298 @@ +/* + Fragments + ========= + See the "Typemap fragments" section in the documentation for understanding + fragments. Below is some info on how fragments and automatic type + specialization is used. + + Macros that make the automatic generation of typemaps easier are provided. + + Consider the following code: + + %fragment(SWIG_From_frag(bool), "header") { + static PyObject* + SWIG_From_dec(bool)(bool value) + { + PyObject *obj = value ? Py_True : Py_False; + Py_INCREF(obj); + return obj; + } + } + + %typemap(out, fragment=SWIG_From_frag(bool)) bool { + $result = SWIG_From(bool)($1)); + } + + Here the macros + + SWIG_From_frag => fragment + SWIG_From_dec => declaration + SWIG_From => call + + allow you to define/include a fragment, and declare and call the + 'from-bool' method as needed. In the simpler case, these macros + just return something like + + SWIG_From_frag(bool) => "SWIG_From_bool" + SWIG_From_dec(bool) => SWIG_From_bool + SWIG_From(bool) => SWIG_From_bool + + But they are specialized for the different languages requirements, + such as perl or tcl that requires passing the interpreter pointer, + and also they can manage C++ ugly types, for example: + + SWIG_From_frag(std::complex<double>) => "SWIG_From_std_complex_Sl_double_Sg_" + SWIG_From_dec(std::complex<double>) => SWIG_From_std_complex_Sl_double_Sg_ + SWIG_From(std::complex<double>) => SWIG_From_std_complex_Sl_double_Sg_ + + + Hence, to declare methods to use with typemaps, always use the + SWIG_From* macros. In the same way, the SWIG_AsVal* and SWIG_AsPtr* + set of macros are provided. + +*/ + + +/* ----------------------------------------------------------------------------- + * Define the basic macros to 'normalize' the type fragments + * ----------------------------------------------------------------------------- */ + +#ifndef SWIG_AS_DECL_ARGS +#define SWIG_AS_DECL_ARGS +#endif + +#ifndef SWIG_FROM_DECL_ARGS +#define SWIG_FROM_DECL_ARGS +#endif + +#ifndef SWIG_AS_CALL_ARGS +#define SWIG_AS_CALL_ARGS +#endif + +#ifndef SWIG_FROM_CALL_ARGS +#define SWIG_FROM_CALL_ARGS +#endif + +#define %fragment_name(Name, Type...) %string_name(Name) "_" {Type} + +#define SWIG_Traits_frag(Type...) %fragment_name(Traits, Type) +#define SWIG_AsPtr_frag(Type...) %fragment_name(AsPtr, Type) +#define SWIG_AsVal_frag(Type...) %fragment_name(AsVal, Type) +#define SWIG_From_frag(Type...) %fragment_name(From, Type) + +#define SWIG_AsVal_name(Type...) %symbol_name(AsVal, Type) +#define SWIG_AsPtr_name(Type...) %symbol_name(AsPtr, Type) +#define SWIG_From_name(Type...) %symbol_name(From, Type) + +#define SWIG_AsVal_dec(Type...) SWIG_AsVal_name(Type) SWIG_AS_DECL_ARGS +#define SWIG_AsPtr_dec(Type...) SWIG_AsPtr_name(Type) SWIG_AS_DECL_ARGS +#define SWIG_From_dec(Type...) SWIG_From_name(Type) SWIG_FROM_DECL_ARGS + +#define SWIG_AsVal(Type...) SWIG_AsVal_name(Type) SWIG_AS_CALL_ARGS +#define SWIG_AsPtr(Type...) SWIG_AsPtr_name(Type) SWIG_AS_CALL_ARGS +#define SWIG_From(Type...) SWIG_From_name(Type) SWIG_FROM_CALL_ARGS + +/* ------------------------------------------------------------ + * common fragments + * ------------------------------------------------------------ */ + +/* Default compiler options for gcc allow long_long but not LLONG_MAX. + * Define SWIG_NO_LLONG_MAX if this added limits support is not wanted. */ +%fragment("<limits.h>","header") %{ +#include <limits.h> +#if !defined(SWIG_NO_LLONG_MAX) +# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) +# define LLONG_MAX __LONG_LONG_MAX__ +# define LLONG_MIN (-LLONG_MAX - 1LL) +# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) +# endif +#endif +%} + +%fragment("<math.h>","header") %{ +#include <math.h> +%} + +%fragment("<wchar.h>","header") %{ +#include <wchar.h> +#include <limits.h> +#ifndef WCHAR_MIN +# define WCHAR_MIN 0 +#endif +#ifndef WCHAR_MAX +# define WCHAR_MAX 65535 +#endif +%} + +%fragment("<float.h>","header") %{ +#include <float.h> +%} + +%fragment("<stdio.h>","header") %{ +#include <stdio.h> +#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM) +# ifndef snprintf +# define snprintf _snprintf +# endif +#endif +%} + +%fragment("<stdlib.h>","header") %{ +#include <stdlib.h> +#ifdef _MSC_VER +# ifndef strtoull +# define strtoull _strtoui64 +# endif +# ifndef strtoll +# define strtoll _strtoi64 +# endif +#endif +%} + +%fragment("<stddef.h>", "header") %{ +#include <stddef.h> +%} + +%fragment("<string>", "header") %{ +#include <string> +%} + +%fragment("<stdexcept>", "header") %{ +#include <stdexcept> +%} + +%fragment("<algorithm>", "header") %{ +#include <algorithm> +%} + +%fragment("SWIG_isfinite","header",fragment="<math.h>,<float.h>") %{ +/* Getting isfinite working pre C99 across multiple platforms is non-trivial. Users can provide SWIG_isfinite on older platforms. */ +#ifndef SWIG_isfinite +/* isfinite() is a macro for C99 */ +# if defined(isfinite) +# define SWIG_isfinite(X) (isfinite(X)) +# elif defined __cplusplus && __cplusplus >= 201103L +/* Use a template so that this works whether isfinite() is std::isfinite() or + * in the global namespace. The reality seems to vary between compiler + * versions. + * + * Make sure namespace std exists to avoid compiler warnings. + * + * extern "C++" is required as this fragment can end up inside an extern "C" { } block + */ +namespace std { } +extern "C++" template<typename T> +inline int SWIG_isfinite_func(T x) { + using namespace std; + return isfinite(x); +} +# define SWIG_isfinite(X) (SWIG_isfinite_func(X)) +# elif defined(_MSC_VER) +# define SWIG_isfinite(X) (_finite(X)) +# elif defined(__sun) && defined(__SVR4) +# include <ieeefp.h> +# define SWIG_isfinite(X) (finite(X)) +# endif +#endif +%} + +%fragment("SWIG_Float_Overflow_Check","header",fragment="<float.h>,SWIG_isfinite") %{ +/* Accept infinite as a valid float value unless we are unable to check if a value is finite */ +#ifdef SWIG_isfinite +# define SWIG_Float_Overflow_Check(X) ((X < -FLT_MAX || X > FLT_MAX) && SWIG_isfinite(X)) +#else +# define SWIG_Float_Overflow_Check(X) ((X < -FLT_MAX || X > FLT_MAX)) +#endif +%} + +/* ----------------------------------------------------------------------------- + * special macros for fragments + * ----------------------------------------------------------------------------- */ + +/* Macros to derive numeric types */ + +%define %numeric_type_from(Type, Base) +%fragment(SWIG_From_frag(Type),"header", + fragment=SWIG_From_frag(Base)) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(Type)(Type value) +{ + return SWIG_From(Base)(value); +} +} +%enddef + +%define %numeric_type_asval(Type, Base, Frag, OverflowCond) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=Frag, + fragment=SWIG_AsVal_frag(Base)) { +SWIGINTERN int +SWIG_AsVal_dec(Type)(SWIG_Object obj, Type *val) +{ + Base v; + int res = SWIG_AsVal(Base)(obj, &v); + if (SWIG_IsOK(res)) { + if (OverflowCond) { + return SWIG_OverflowError; + } else { + if (val) *val = %numeric_cast(v, Type); + } + } + return res; +} +} +%enddef + +#define %numeric_signed_type_asval(Type, Base, Frag, Min, Max) \ +%numeric_type_asval(Type, Base, Frag, (v < Min || v > Max)) + +#define %numeric_unsigned_type_asval(Type, Base, Frag, Max) \ +%numeric_type_asval(Type, Base, Frag, (v > Max)) + + +/* Macro for 'signed long' derived types */ + +%define %numeric_slong(Type, Frag, Min, Max) +%numeric_type_from(Type, long) +%numeric_signed_type_asval(Type, long, Frag , Min, Max) +%enddef + +/* Macro for 'unsigned long' derived types */ + +%define %numeric_ulong(Type, Frag, Max) +%numeric_type_from(Type, unsigned long) +%numeric_unsigned_type_asval(Type, unsigned long, Frag, Max) +%enddef + + +/* Macro for floating point derived types (original macro) */ + +%define %numeric_double(Type, Frag, Min, Max) +%numeric_type_from(Type, double) +%numeric_signed_type_asval(Type, double, Frag , Min, Max) +%enddef + +/* Macro for floating point derived types */ + +%define %numeric_float(Type, Frag, OverflowCond) +%numeric_type_from(Type, double) +%numeric_type_asval(Type, double, Frag, OverflowCond) +%enddef + + +/* Macros for missing fragments */ + +%define %ensure_fragment(Fragment) +%fragment(`Fragment`,"header") { +%#error "SWIG language implementation must provide the Fragment fragment" +} +%enddef + +%define %ensure_type_fragments(Type) +%fragment(SWIG_From_frag(Type),"header") { +%#error "SWIG language implementation must provide a SWIG_From_frag(Type) fragment" +} +%fragment(SWIG_AsVal_frag(Type),"header") { +%#error "SWIG language implementation must provide a SWIG_AsVal_frag(Type) fragment" +} +%enddef diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/implicit.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/implicit.swg new file mode 100644 index 000000000..2fc3108e7 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/implicit.swg @@ -0,0 +1,208 @@ +/* + The %implicit macro allows a SwigType (Class) to be accepted + as an input parameter and use its implicit constructors when needed. + + For example: + + + %implicit(A, int, double, B); + + %inline + { + struct B { }; + struct A + { + int ii; + A(int i) { ii = 1; } + A(double d) { ii = 2; } + A(const B& b) { ii = 3; } + }; + + int get(A a) { return a.ii; } + } + + Here, you can call 'get' as + + get(1) ==> get(A(1)) + get(2.0) ==> get(A(2.0)) + get(B()) ==> get(A(B())) + + and swig will construct an 'A' temporal variable using the + corresponding implicit constructor. + + + The plain implicit macro takes care of simple type list. If it doesn't + work because you are passing template types with commas, then use + the %implicit_{1,2,3} versions and/or the %arg macro. + +*/ + +%define %implicit_type(Type...) +%traits_swigtype(Type); +%enddef + +%define %implicit_frag(Type...) ,fragment=SWIG_Traits_frag(Type) %enddef + +%define %implicit_code(Type...) +{ + Type _v; + int res = swig::asval<Type >(obj, &_v); + if (SWIG_IsOK(res)) { + if (val) *val = new value_type(static_cast<const Type& >(_v)); + return SWIG_AddNewMask(res); + } +} +%enddef + +/* implicit */ + +%define %implicit(Type, ...) + +%formacro_1(%implicit_type,__VA_ARGS__); + +%fragment(SWIG_Traits_frag(Type),"header", + fragment="StdTraits" + %formacro_1(%implicit_frag,__VA_ARGS__)) %{ +namespace swig { + template <> struct traits<Type > { + typedef pointer_category category; + static const char* type_name() { return "Type"; } + }; + + template <> struct traits_asptr< Type > { + typedef Type value_type; + static int asptr(SWIG_Object obj, value_type **val) { + Type *vptr; + static swig_type_info* descriptor = SWIG_TypeQuery("Type *"); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&vptr, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = vptr; + return res; + } else { + %formacro_1(%implicit_code,__VA_ARGS__) + } + return SWIG_TypeError; + } + }; +} +%} + +%typemap_traits_ptr(%checkcode(POINTER),Type); +%enddef + +/* implicit_1 */ + + +%define %implicit_1(Type, Imp1) +%traits_swigtype(Imp1); + +%fragment(SWIG_Traits_frag(Type),"header", + fragment="StdTraits", + fragment=SWIG_Traits_frag(Imp1)) %{ +namespace swig { + template <> struct traits< Type > { + typedef pointer_category category; + static const char* type_name() { return "Type"; } + }; + + template <> struct traits_asptr< Type > { + typedef Type value_type; + static int asptr(SWIG_Object obj, value_type **val) { + Type *vptr; + static swig_type_info* descriptor = SWIG_TypeQuery("Type *"); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&vptr, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = vptr; + return res; + } else { + %implicit_code(Imp1); + } + return SWIG_TypeError; + } + }; +} +%} + +%typemap_traits_ptr(%checkcode(POINTER),Type); + +%enddef + +/* implicit_2 */ + +%define %implicit_2(Type, Imp1, Imp2) +%traits_swigtype(Imp1); +%traits_swigtype(Imp2); + +%fragment(SWIG_Traits_frag(Type),"header", + fragment="StdTraits", + fragment=SWIG_Traits_frag(Imp1), + fragment=SWIG_Traits_frag(Imp2)) %{ +namespace swig { + template <> struct traits< Type > { + typedef pointer_category category; + static const char* type_name() { return "Type"; } + }; + + template <> struct traits_asptr< Type > { + typedef Type value_type; + static int asptr(SWIG_Object obj, value_type **val) { + Type *vptr; + static swig_type_info* descriptor = SWIG_TypeQuery("Type *"); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&vptr, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = vptr; + return SWIG_OLDOBJ; + } else { + %implicit_code(Imp1); + %implicit_code(Imp2); + } + return SWIG_TypeError; + } + }; +} +%} + +%typemap_traits_ptr(%checkcode(POINTER),Type); +%enddef + + +/* implicit_3 */ + +%define %implicit_3(Type, Imp1, Imp2, Imp3) +%traits_swigtype(Imp1); +%traits_swigtype(Imp2); +%traits_swigtype(Imp3); + +%fragment(SWIG_Traits_frag(Type),"header", + fragment="StdTraits", + fragment=SWIG_Traits_frag(Imp1), + fragment=SWIG_Traits_frag(Imp2), + fragment=SWIG_Traits_frag(Imp3)) %{ +namespace swig { + template <> struct traits< Type > { + typedef pointer_category category; + static const char* type_name() { return "Type"; } + }; + + template <> struct traits_asptr< Type > { + typedef Type value_type; + static int asptr(SWIG_Object obj, value_type **val) { + Type *vptr; + static swig_type_info* descriptor = SWIG_TypeQuery("Type *"); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&vptr, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = vptr; + return res; + } else { + %implicit_code(Imp1); + %implicit_code(Imp2); + %implicit_code(Imp3); + } + return SWIG_TypeError; + } + }; +} +%} + +%typemap_traits_ptr(%checkcode(POINTER),Type); +%enddef diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/inoutlist.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/inoutlist.swg new file mode 100644 index 000000000..23fda85f3 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/inoutlist.swg @@ -0,0 +1,296 @@ +/* ------------------------------------------------------------ + * + * Define the IN/OUTPUT typemaps assuming the output parameters are + * returned in a list, i.e., they are not directly modified. + * + * The user should provide the %append_output(result, obj) method, + * via a macro, which append a particular object to the result. + * + * + * In Tcl, for example, the file is used as: + * + * #define %append_output(obj) Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),obj); + * %include <typemaps/inoutlist.swg> + * + * while in Python it is used as: + * + * #define %append_output(obj) $result = SWIG_Python_AppendResult($result, obj) + * %include <typemaps/inoutlist.swg> + * + * where the method SWIG_Python_AppendResult is defined inside the + * %append_output fragment. + * + * If you forget to define %append_output, this file will generate + * an error. + * + * ------------------------------------------------------------ */ + + +// +// Uncomment the following definition if you don't want the in/out +// typemaps by default, ie, you prefer to use typemaps.i. +// +//#define SWIG_INOUT_NODEF + +// +// Use the following definition to enable the INPUT parameters to +// accept both 'by value' and 'pointer' objects. +// +#define SWIG_INPUT_ACCEPT_PTRS + +// ------------------------------------------------------------------------ +// Pointer handling +// +// These mappings provide support for input/output arguments and common +// uses for C/C++ pointers. +// ------------------------------------------------------------------------ + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ +#if defined(SWIG_INPUT_ACCEPT_PTRS) +#define %check_input_ptr(input,arg,desc,disown) (SWIG_IsOK((res = SWIG_ConvertPtr(input,%as_voidptrptr(arg),desc,disown)))) +#else +#define %check_input_ptr(input,arg,desc,disown) (SWIG_IsOK((res = SWIG_ERROR))) +#endif + +%define %_value_input_typemap(code, asval_meth, asval_frag, Type) + %typemap(in,noblock=1,fragment=asval_frag) Type *INPUT ($*ltype temp, int res = 0) { + if (!%check_input_ptr($input,&$1,$descriptor,$disown)) { + Type val; + int ecode = asval_meth($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$*ltype",$symname, $argnum); + } + temp = %static_cast(val, $*ltype); + $1 = &temp; + res = SWIG_AddTmpMask(ecode); + } + } + %typemap(in,noblock=1,fragment=asval_frag) Type &INPUT($*ltype temp, int res = 0) { + if (!%check_input_ptr($input,&$1,$descriptor,$disown)) { + Type val; + int ecode = asval_meth($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$*ltype",$symname, $argnum); + } + temp = %static_cast(val, $*ltype); + $1 = &temp; + res = SWIG_AddTmpMask(ecode); + } + } + %typemap(freearg,noblock=1,match="in") Type *INPUT, Type &INPUT { + if (SWIG_IsNewObj(res$argnum)) %delete($1); + } + %typemap(typecheck,noblock=1,precedence=code,fragment=asval_frag) Type *INPUT, Type &INPUT { + void *ptr = 0; + int res = asval_meth($input, 0); + $1 = SWIG_CheckState(res); + if (!$1) { + $1 = %check_input_ptr($input,&ptr,$1_descriptor,0); + } + } +%enddef + +%define %_ptr_input_typemap(code,asptr_meth,asptr_frag,Type) + %typemap(in,noblock=1,fragment=asptr_frag) Type *INPUT(int res = 0) { + res = asptr_meth($input, &$1); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + res = SWIG_AddTmpMask(res); + } + %typemap(in,noblock=1,fragment=asptr_frag) Type &INPUT(int res = 0) { + res = asptr_meth($input, &$1); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + if (!$1) { + %argument_nullref("$type",$symname, $argnum); + } + res = SWIG_AddTmpMask(res); + } + %typemap(freearg,noblock=1,match="in") Type *INPUT, Type &INPUT { + if (SWIG_IsNewObj(res$argnum)) %delete($1); + } + %typemap(typecheck,noblock=1,precedence=code,fragment=asptr_frag) Type *INPUT, Type &INPUT { + int res = asptr_meth($input, (Type**)0); + $1 = SWIG_CheckState(res); + } +%enddef + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a list element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, they are returned in the form of a list. + + +For example, suppose you were trying to wrap the modf() function in the +C math library which splits x into integral and fractional parts (and +returns the integer part in one of its parameters): + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The output of the function would be a list containing both output +values. + +*/ + +%define %_value_output_typemap(from_meth, from_frag, Type) + %typemap(in,numinputs=0,noblock=1) + Type *OUTPUT ($*1_ltype temp, int res = SWIG_TMPOBJ), + Type &OUTPUT ($*1_ltype temp, int res = SWIG_TMPOBJ) { + $1 = &temp; + } + %typemap(argout,noblock=1,fragment=from_frag) Type *OUTPUT, Type &OUTPUT { + if (SWIG_IsTmpObj(res$argnum)) { + %append_output(from_meth((*$1))); + } else { + int new_flags = SWIG_IsNewObj(res$argnum) ? (SWIG_POINTER_OWN | %newpointer_flags) : %newpointer_flags; + %append_output(SWIG_NewPointerObj((void*)($1), $1_descriptor, new_flags)); + } + } +%enddef + + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a list. + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + void neg(double *INOUT); + +or you can use the %apply directive : + + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value. +Rather, the modified input value shows up as the return value of the +function. Thus, to apply this function to a variable you might do +this : + + x = neg(x) + +Note : previous versions of SWIG used the symbol 'BOTH' to mark +input/output arguments. This is still supported, but will be slowly +phased out in future releases. + +*/ + +%define %_value_inout_typemap(Type) + %typemap(in) Type *INOUT = Type *INPUT; + %typemap(in) Type &INOUT = Type &INPUT; + %typemap(typecheck) Type *INOUT = Type *INPUT; + %typemap(typecheck) Type &INOUT = Type &INPUT; + %typemap(argout) Type *INOUT = Type *OUTPUT; + %typemap(argout) Type &INOUT = Type &OUTPUT; +%enddef + + +%define %_ptr_inout_typemap(Type) + %_value_inout_typemap(%arg(Type)) + %typemap(typecheck) Type *INOUT = Type *INPUT; + %typemap(typecheck) Type &INOUT = Type &INPUT; + %typemap(freearg) Type *INOUT = Type *INPUT; + %typemap(freearg) Type &INOUT = Type &INPUT; +%enddef + +#ifndef SWIG_INOUT_NODEF + +%define %value_input_typemap(code,asval_meth, asval_frag, Type...) + %_value_input_typemap(%arg(code),%arg(asval_meth),%arg(asval_frag),%arg(Type)) +%enddef + +%define %ptr_input_typemap(code,asval_meth,asval_frag,Type...) + %_ptr_input_typemap(%arg(code),%arg(asval_meth),%arg(asval_frag),%arg(Type)) +%enddef + +%define %value_output_typemap(from_meth,from_frag,Type...) + %_value_output_typemap(%arg(from_meth),%arg(from_frag),%arg(Type)) +%enddef + +#define %value_inout_typemap(Type...) %_value_inout_typemap(%arg(Type)) +#define %ptr_inout_typemap(Type...) %_ptr_inout_typemap(%arg(Type)) + +#else /* You need to include typemaps.i */ + + +#define %value_output_typemap(Type...) +#define %value_input_typemap(Type...) +#define %value_inout_typemap(Type...) +#define %ptr_input_typemap(Type...) +#define %ptr_inout_typemap(Type...) + +#endif /* SWIG_INOUT_DEFAULT */ + +/*---------------------------------------------------------------------- + Front ends. + + use the following macros to define your own IN/OUTPUT/INOUT typemaps + + ------------------------------------------------------------------------*/ +%define %typemaps_inout(Code, AsValMeth, FromMeth, AsValFrag, FromFrag, Type...) + %_value_input_typemap(%arg(Code), %arg(AsValMeth), + %arg(AsValFrag), %arg(Type)); + %_value_output_typemap(%arg(FromMeth), %arg(FromFrag), %arg(Type)); + %_value_inout_typemap(%arg(Type)); +%enddef + +%define %typemaps_inoutn(Code,Type...) + %typemaps_inout(%arg(Code), + %arg(SWIG_AsVal(Type)), + %arg(SWIG_From(Type)), + %arg(SWIG_AsVal_frag(Type)), + %arg(SWIG_From_frag(Type)), + %arg(Type)); +%enddef diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/misctypes.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/misctypes.swg new file mode 100644 index 000000000..09c81d743 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/misctypes.swg @@ -0,0 +1,21 @@ + +/* ------------------------------------------------------------ + * --- ANSI/Posix C/C++ types --- + * ------------------------------------------------------------ */ + + +#ifdef __cplusplus + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; + +%apply ptrdiff_t { std::ptrdiff_t }; +%apply const ptrdiff_t& { const std::ptrdiff_t& }; + +#ifndef SWIG_INOUT_NODEF +%apply size_t& { std::size_t& }; +%apply ptrdiff_t& { std::ptrdiff_t& }; +#endif + +#endif + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/primtypes.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/primtypes.swg new file mode 100644 index 000000000..221283230 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/primtypes.swg @@ -0,0 +1,367 @@ +/* ------------------------------------------------------------ + * Primitive type fragments and macros + * ------------------------------------------------------------ */ + +/* + This file provide fragments and macros for the C/C++ primitive types. + + The file defines default fragments for the following types: + + bool + signed char + unsigned char + signed wchar_t // in C++ + unsigned wchar_t // in C++ + short + unsigned short + int + unsigned int + float + size_t + ptrdiff_t + + which can always be redefined in the swig target language if needed. + + The fragments for the following types, however, always need to be + defined in the target language: + + long + unsigned long + long long + unsigned long long + double + + If they are not provided, an #error directive will appear in the + wrapped code. + + -------------------------------------------------------------------- + + This file provides the macro + + %typemaps_primitive(CheckCode, Type) + + which generates the typemaps for a primitive type with a given + checkcode. It is assumed that the primitive type is 'normalized' and + the corresponding SWIG_AsVal(Type) and SWIG_From(Type) methods are + provided via fragments. + + + The following auxiliary macros (explained with bash pseudo code) are + also defined: + + %apply_ctypes(Macro) + for i in C Type + do + Macro($i) + done + + %apply_cpptypes(Macro) + for i in C++ Type + do + Macro($i) + done + + %apply_ctypes_2(Macro2) + for i in C Type + do + for j in C Type + do + Macro_2($i, $j) + done + done + + %apply_cpptypes_2(Macro2) + for i in C++ Type + do + for j in C++ Type + do + Macro_2($i, $j) + done + done + + %apply_checkctypes(Macro2) + for i in Check Type + do + Macro2(%checkcode($i), $i) + done + +*/ + + +/* ------------------------------------------------------------ + * Primitive type fragments + * ------------------------------------------------------------ */ +/* boolean */ + +%fragment(SWIG_From_frag(bool),"header",fragment=SWIG_From_frag(long)) { +SWIGINTERN SWIG_Object +SWIG_From_dec(bool)(bool value) +{ + return SWIG_From(long)(value ? 1 : 0); +} +} + +%fragment(SWIG_AsVal_frag(bool),"header",fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(bool)(SWIG_Object obj, bool *val) +{ + long v = 0; + int res = SWIG_AsVal(long)(obj, val ? &v : 0); + if (SWIG_IsOK(res)) { + if (val) *val = v ? true : false; + return res; + } + return SWIG_TypeError; +} +} + +/* signed/unsigned char */ + +%numeric_slong(signed char, "<limits.h>", SCHAR_MIN, SCHAR_MAX) +%numeric_ulong(unsigned char, "<limits.h>", UCHAR_MAX) + +/* short/unsigned short */ + +%numeric_slong(short, "<limits.h>", SHRT_MIN, SHRT_MAX) +%numeric_ulong(unsigned short, "<limits.h>", USHRT_MAX) + +/* int/unsigned int */ + +%numeric_slong(int, "<limits.h>", INT_MIN, INT_MAX) +%numeric_ulong(unsigned int, "<limits.h>", UINT_MAX) + +/* signed/unsigned wchar_t */ + +#ifdef __cplusplus +%numeric_slong(signed wchar_t, "<wchar.h>", WCHAR_MIN, WCHAR_MAX) +%numeric_ulong(unsigned wchar_t, "<wchar.h>", UWCHAR_MAX) +#endif + +/* float */ + +%numeric_float(float, "SWIG_Float_Overflow_Check", SWIG_Float_Overflow_Check(v)) + +/* long/unsigned long */ + +%ensure_type_fragments(long) +%ensure_type_fragments(unsigned long) + +/* long long/unsigned long long */ + +%fragment("SWIG_LongLongAvailable","header", fragment="<limits.h>") %{ +#if defined(LLONG_MAX) && !defined(SWIG_LONG_LONG_AVAILABLE) +# define SWIG_LONG_LONG_AVAILABLE +#endif +%} + +%ensure_type_fragments(long long) +%ensure_type_fragments(unsigned long long) + +/* double */ + +%ensure_type_fragments(double) + +/* size_t */ + +%fragment(SWIG_From_frag(size_t),"header",fragment=SWIG_From_frag(unsigned long),fragment=SWIG_From_frag(unsigned long long)) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(size_t)(size_t value) +{ +%#ifdef SWIG_LONG_LONG_AVAILABLE + if (sizeof(size_t) <= sizeof(unsigned long)) { +%#endif + return SWIG_From(unsigned long)(%numeric_cast(value, unsigned long)); +%#ifdef SWIG_LONG_LONG_AVAILABLE + } else { + /* assume sizeof(size_t) <= sizeof(unsigned long long) */ + return SWIG_From(unsigned long long)(%numeric_cast(value, unsigned long long)); + } +%#endif +} +} + +%fragment(SWIG_AsVal_frag(size_t),"header",fragment=SWIG_AsVal_frag(unsigned long),fragment=SWIG_AsVal_frag(unsigned long long)) { +SWIGINTERNINLINE int +SWIG_AsVal_dec(size_t)(SWIG_Object obj, size_t *val) +{ + int res = SWIG_TypeError; +%#ifdef SWIG_LONG_LONG_AVAILABLE + if (sizeof(size_t) <= sizeof(unsigned long)) { +%#endif + unsigned long v = 0; + res = SWIG_AsVal(unsigned long)(obj, val ? &v : 0); + if (SWIG_IsOK(res) && val) *val = %numeric_cast(v, size_t); +%#ifdef SWIG_LONG_LONG_AVAILABLE + } else if (sizeof(size_t) <= sizeof(unsigned long long)) { + unsigned long long v = 0; + res = SWIG_AsVal(unsigned long long)(obj, val ? &v : 0); + if (SWIG_IsOK(res) && val) *val = %numeric_cast(v, size_t); + } +%#endif + return res; +} +} + +/* ptrdiff_t */ + +%fragment(SWIG_From_frag(ptrdiff_t),"header",fragment=SWIG_From_frag(long),fragment=SWIG_From_frag(long long)) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(ptrdiff_t)(ptrdiff_t value) +{ +%#ifdef SWIG_LONG_LONG_AVAILABLE + if (sizeof(ptrdiff_t) <= sizeof(long)) { +%#endif + return SWIG_From(long)(%numeric_cast(value, long)); +%#ifdef SWIG_LONG_LONG_AVAILABLE + } else { + /* assume sizeof(ptrdiff_t) <= sizeof(long long) */ + return SWIG_From(long long)(%numeric_cast(value, long long)); + } +%#endif +} +} + +%fragment(SWIG_AsVal_frag(ptrdiff_t),"header",fragment=SWIG_AsVal_frag(long),fragment=SWIG_AsVal_frag(long long)) { +SWIGINTERNINLINE int +SWIG_AsVal_dec(ptrdiff_t)(SWIG_Object obj, ptrdiff_t *val) +{ + int res = SWIG_TypeError; +%#ifdef SWIG_LONG_LONG_AVAILABLE + if (sizeof(ptrdiff_t) <= sizeof(long)) { +%#endif + long v = 0; + res = SWIG_AsVal(long)(obj, val ? &v : 0); + if (SWIG_IsOK(res) && val) *val = %numeric_cast(v, ptrdiff_t); +%#ifdef SWIG_LONG_LONG_AVAILABLE + } else if (sizeof(ptrdiff_t) <= sizeof(long long)) { + long long v = 0; + res = SWIG_AsVal(long long)(obj, val ? &v : 0); + if (SWIG_IsOK(res) && val) *val = %numeric_cast(v, ptrdiff_t); + } +%#endif + return res; +} +} + + +%fragment("SWIG_CanCastAsInteger","header", + fragment=SWIG_AsVal_frag(double), + fragment="<float.h>", + fragment="<math.h>") { +SWIGINTERNINLINE int +SWIG_CanCastAsInteger(double *d, double min, double max) { + double x = *d; + if ((min <= x && x <= max)) { + double fx = floor(x); + double cx = ceil(x); + double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ + if ((errno == EDOM) || (errno == ERANGE)) { + errno = 0; + } else { + double summ, reps, diff; + if (rd < x) { + diff = x - rd; + } else if (rd > x) { + diff = rd - x; + } else { + return 1; + } + summ = rd + x; + reps = diff/summ; + if (reps < 8*DBL_EPSILON) { + *d = rd; + return 1; + } + } + } + return 0; +} +} + +/* ------------------------------------------------------------ + * Generate the typemaps for primitive type + * ------------------------------------------------------------ */ + +#define %typemaps_primitive(Code, Type) %typemaps_asvalfromn(%arg(Code), Type) + +/* ------------------------------------------------------------ + * Primitive Type Macros + * ------------------------------------------------------------ */ + +/* useful macros to derive typemap declarations from primitive types */ + +%define _apply_macro(macro, arg2, arg1...) +#if #arg1 != "" +macro(%arg(arg1),arg2); +#else +macro(arg2); +#endif +%enddef + +/* Apply macro to the C-types */ +%define %apply_ctypes(Macro, Arg2...) +_apply_macro(Macro, bool , Arg2); +_apply_macro(Macro, signed char , Arg2); +_apply_macro(Macro, unsigned char , Arg2); +_apply_macro(Macro, short , Arg2); +_apply_macro(Macro, unsigned short , Arg2); +_apply_macro(Macro, int , Arg2); +_apply_macro(Macro, unsigned int , Arg2); +_apply_macro(Macro, long , Arg2); +_apply_macro(Macro, unsigned long , Arg2); +_apply_macro(Macro, long long , Arg2); +_apply_macro(Macro, unsigned long long , Arg2); +_apply_macro(Macro, float , Arg2); +_apply_macro(Macro, double , Arg2); +_apply_macro(Macro, char , Arg2); +_apply_macro(Macro, wchar_t , Arg2); +_apply_macro(Macro, size_t , Arg2); +_apply_macro(Macro, ptrdiff_t , Arg2); +%enddef + +/* apply the Macro2(Type1, Type2) to all C types */ +#define %apply_ctypes_2(Macro2) %apply_ctypes(%apply_ctypes, Macro2) + + +/* apply the Macro(Type) to all C++ types */ +%define %apply_cpptypes(Macro, Arg2...) +%apply_ctypes(Macro, Arg2) +_apply_macro(Macro, std::size_t, Arg2); +_apply_macro(Macro, std::ptrdiff_t, Arg2); +_apply_macro(Macro, std::string, Arg2); +_apply_macro(Macro, std::wstring, Arg2); +_apply_macro(Macro, std::complex<float>, Arg2); +_apply_macro(Macro, std::complex<double>, Arg2); +%enddef + +/* apply the Macro2(Type1, Type2) to all C++ types */ +#define %apply_cpptypes_2(Macro2) %apply_cpptypes(%apply_cpptypes, Macro2) + +/* apply the Macro2(CheckCode,Type) to all Checked Types */ +%define %apply_checkctypes(Macro2) +Macro2(%checkcode(BOOL), bool); +Macro2(%checkcode(INT8), signed char); +Macro2(%checkcode(UINT8), unsigned char); +Macro2(%checkcode(INT16), short); +Macro2(%checkcode(UINT16), unsigned short); +Macro2(%checkcode(INT32), int); +Macro2(%checkcode(UINT32), unsigned int); +Macro2(%checkcode(INT64), long); +Macro2(%checkcode(UINT64), unsigned long); +Macro2(%checkcode(INT128), long long); +Macro2(%checkcode(UINT128), unsigned long long); +Macro2(%checkcode(FLOAT), float); +Macro2(%checkcode(DOUBLE), double); +Macro2(%checkcode(CHAR), char); +Macro2(%checkcode(UNICHAR), wchar_t); +Macro2(%checkcode(SIZE), size_t); +Macro2(%checkcode(PTRDIFF), ptrdiff_t); +%enddef + + +/* ------------------------------------------------------------ + * Generate the typemaps for all the primitive types with checkcode + * ------------------------------------------------------------ */ + +%apply_checkctypes(%typemaps_primitive); + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/ptrtypes.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/ptrtypes.swg new file mode 100644 index 000000000..e8439e6dc --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/ptrtypes.swg @@ -0,0 +1,208 @@ +/* ----------------------------------------------------------------------------- + * ptrtypes.swg + * + * Value typemaps (Type, const Type&) for "Ptr" types, such as swig + * wrapped classes, that define the AsPtr/From methods + * + * To apply them, just use one of the following macros: + * + * %typemaps_asptr(CheckCode, AsPtrMeth, AsPtrFrag, Type) + * %typemaps_asptrfrom(CheckCode, AsPtrMeth, FromMeth, AsPtrFrag, FromFrag, Type) + * + * or the simpler and normalize form: + * + * %typemaps_asptrfromn(CheckCode, Type) + * + * Also, you can use the individual typemap definitions: + * + * %ptr_in_typemap(asptr_meth,frag,Type) + * %ptr_varin_typemap(asptr_meth,frag,Type) + * %ptr_typecheck_typemap(check,asptr_meth,frag,Type) + * %ptr_directorout_typemap(asptr_meth,frag,Type) + * ----------------------------------------------------------------------------- */ + +%include <typemaps/valtypes.swg> + +/* in */ + +%define %ptr_in_typemap(asptr_meth,frag,Type...) + %typemap(in,fragment=frag) Type { + Type *ptr = (Type *)0; + int res = asptr_meth($input, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + %argument_fail((ptr ? res : SWIG_TypeError), "$type", $symname, $argnum); + } + $1 = *ptr; + if (SWIG_IsNewObj(res)) %delete(ptr); + } + %typemap(freearg) Type ""; + %typemap(in,fragment=frag) const Type & (int res = SWIG_OLDOBJ) { + Type *ptr = (Type *)0; + res = asptr_meth($input, &ptr); + if (!SWIG_IsOK(res)) { %argument_fail(res,"$type",$symname, $argnum); } + if (!ptr) { %argument_nullref("$type",$symname, $argnum); } + $1 = ptr; + } + %typemap(freearg,noblock=1) const Type & { + if (SWIG_IsNewObj(res$argnum)) %delete($1); + } +%enddef + +/* varin */ + +%define %ptr_varin_typemap(asptr_meth,frag,Type...) + %typemap(varin,fragment=frag) Type { + Type *ptr = (Type *)0; + int res = asptr_meth($input, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + %variable_fail((ptr ? res : SWIG_TypeError), "$type", "$name"); + } + $1 = *ptr; + if (SWIG_IsNewObj(res)) %delete(ptr); + } +%enddef + +#if defined(SWIG_DIRECTOR_TYPEMAPS) +/* directorout */ + +%define %ptr_directorout_typemap(asptr_meth,frag,Type...) + %typemap(directorargout,noblock=1,fragment=frag) Type *DIRECTOROUT ($*ltype temp, int swig_ores) { + Type *swig_optr = 0; + swig_ores = $result ? asptr_meth($result, &swig_optr) : 0; + if (!SWIG_IsOK(swig_ores) || !swig_optr) { + %dirout_fail((swig_optr ? swig_ores : SWIG_TypeError),"$type"); + } + temp = *swig_optr; + $1 = &temp; + if (SWIG_IsNewObj(swig_ores)) %delete(swig_optr); + } + + %typemap(directorout,noblock=1,fragment=frag) Type { + Type *swig_optr = 0; + int swig_ores = asptr_meth($input, &swig_optr); + if (!SWIG_IsOK(swig_ores) || !swig_optr) { + %dirout_fail((swig_optr ? swig_ores : SWIG_TypeError),"$type"); + } + $result = *swig_optr; + if (SWIG_IsNewObj(swig_ores)) %delete(swig_optr); + } + + %typemap(directorout,noblock=1,fragment=frag,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) Type* { + Type *swig_optr = 0; + int swig_ores = asptr_meth($input, &swig_optr); + if (!SWIG_IsOK(swig_ores)) { + %dirout_fail(swig_ores,"$type"); + } + $result = swig_optr; + if (SWIG_IsNewObj(swig_ores)) { + swig_acquire_ownership(swig_optr); + } + } + %typemap(directorfree,noblock=1) Type* + { + if (director) { + director->swig_release_ownership(%as_voidptr($input)); + } + } + + %typemap(directorout,noblock=1,fragment=frag,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) Type& { + Type *swig_optr = 0; + int swig_ores = asptr_meth($input, &swig_optr); + if (!SWIG_IsOK(swig_ores)) { + %dirout_fail(swig_ores,"$type"); + } else { + if (!swig_optr) { + %dirout_nullref("$type"); + } + } + $result = swig_optr; + if (SWIG_IsNewObj(swig_ores)) { + swig_acquire_ownership(swig_optr); + } + } + %typemap(directorfree,noblock=1) Type& + { + if (director) { + director->swig_release_ownership(%as_voidptr($input)); + } + } + + + %typemap(directorout,fragment=frag) Type &DIRECTOROUT = Type + +%enddef + +#else + +#define %ptr_directorout_typemap(asptr_meth,frag,Type...) + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + +/* typecheck */ + +%define %ptr_typecheck_typemap(check,asptr_meth,frag,Type...) +%typemap(typecheck,noblock=1,precedence=check,fragment=frag) Type * { + int res = asptr_meth($input, (Type**)(0)); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,noblock=1,precedence=check,fragment=frag) Type, const Type& { + int res = asptr_meth($input, (Type**)(0)); + $1 = SWIG_CheckState(res); +} +%enddef + + +/*--------------------------------------------------------------------- + * typemap definition for types with asptr method + *---------------------------------------------------------------------*/ + +%define %typemaps_asptr(CheckCode, AsPtrMeth, AsPtrFrag, Type...) + %fragment(SWIG_AsVal_frag(Type),"header",fragment=SWIG_AsPtr_frag(Type)) { + SWIGINTERNINLINE int + SWIG_AsVal(Type)(SWIG_Object obj, Type *val) + { + Type *v = (Type *)0; + int res = SWIG_AsPtr(Type)(obj, &v); + if (!SWIG_IsOK(res)) return res; + if (v) { + if (val) *val = *v; + if (SWIG_IsNewObj(res)) { + %delete(v); + res = SWIG_DelNewMask(res); + } + return res; + } + return SWIG_ERROR; + } + } + %ptr_in_typemap(%arg(AsPtrMeth), %arg(AsPtrFrag), Type); + %ptr_varin_typemap(%arg(AsPtrMeth), %arg(AsPtrFrag), Type); + %ptr_directorout_typemap(%arg(AsPtrMeth), %arg(AsPtrFrag), Type); + %ptr_typecheck_typemap(%arg(CheckCode), %arg(AsPtrMeth),%arg(AsPtrFrag), Type); + %ptr_input_typemap(%arg(CheckCode),%arg(AsPtrMeth),%arg(AsPtrFrag),Type); +%enddef + +/*--------------------------------------------------------------------- + * typemap definition for types with asptr/from methods + *---------------------------------------------------------------------*/ + +%define %typemaps_asptrfrom(CheckCode, AsPtrMeth, FromMeth, AsPtrFrag, FromFrag, Type...) + %typemaps_asptr(%arg(CheckCode), %arg(AsPtrMeth), %arg(AsPtrFrag), Type) + %typemaps_from(%arg(FromMeth), %arg(FromFrag), Type); + %value_output_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %ptr_inout_typemap(Type); +%enddef + +/*--------------------------------------------------------------------- + * typemap definition for types with for 'normalized' asptr/from methods + *---------------------------------------------------------------------*/ + +%define %typemaps_asptrfromn(CheckCode, Type...) +%typemaps_asptrfrom(%arg(CheckCode), + %arg(SWIG_AsPtr(Type)), + %arg(SWIG_From(Type)), + %arg(SWIG_AsPtr_frag(Type)), + %arg(SWIG_From_frag(Type)), + Type); +%enddef diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/std_except.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/std_except.swg new file mode 100644 index 000000000..75d066490 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/std_except.swg @@ -0,0 +1,37 @@ +%include <typemaps/exception.swg> + +/* + Mark all of std exception classes as "exception classes" via + the "exceptionclass" feature. + + If needed, you can disable it by using %noexceptionclass. +*/ + +%define %std_exception_map(Exception, Code) + %exceptionclass Exception; +#if !defined(SWIG_STD_EXCEPTIONS_AS_CLASSES) + %typemap(throws,noblock=1) Exception { + SWIG_exception_fail(Code, $1.what()); + } + %ignore Exception; + struct Exception { + }; +#endif +%enddef + +namespace std { + %std_exception_map(bad_cast, SWIG_TypeError); + %std_exception_map(bad_exception, SWIG_SystemError); + %std_exception_map(domain_error, SWIG_ValueError); + %std_exception_map(exception, SWIG_SystemError); + %std_exception_map(invalid_argument, SWIG_ValueError); + %std_exception_map(length_error, SWIG_IndexError); + %std_exception_map(logic_error, SWIG_RuntimeError); + %std_exception_map(out_of_range, SWIG_IndexError); + %std_exception_map(overflow_error, SWIG_OverflowError); + %std_exception_map(range_error, SWIG_OverflowError); + %std_exception_map(runtime_error, SWIG_RuntimeError); + %std_exception_map(underflow_error, SWIG_OverflowError); +} + +%include <std/std_except.i> diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/std_string.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/std_string.swg new file mode 100644 index 000000000..5b57beab5 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/std_string.swg @@ -0,0 +1,25 @@ +// +// String +// + + +#ifndef SWIG_STD_BASIC_STRING +#define SWIG_STD_STRING + +%include <typemaps/std_strings.swg> + +%fragment("<string>"); + +namespace std +{ + %naturalvar string; + class string; +} + +%typemaps_std_string(std::string, char, SWIG_AsCharPtrAndSize, SWIG_FromCharPtrAndSize, %checkcode(STDSTRING)); + +#else + +%include <std/std_string.i> + +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/std_strings.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/std_strings.swg new file mode 100644 index 000000000..e9c23ba91 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/std_strings.swg @@ -0,0 +1,78 @@ + +/* defining the String asptr/from methods */ + +%define %std_string_asptr(String, Char, SWIG_AsCharPtrAndSize, Frag) +%fragment(SWIG_AsPtr_frag(String),"header",fragment=Frag) { +SWIGINTERN int +SWIG_AsPtr_dec(String)(SWIG_Object obj, String **val) +{ + Char* buf = 0 ; size_t size = 0; int alloc = SWIG_OLDOBJ; + if (SWIG_IsOK((SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc)))) { + if (buf) { + if (val) *val = new String(buf, size - 1); + if (alloc == SWIG_NEWOBJ) %delete_array(buf); + return SWIG_NEWOBJ; + } else { + if (val) *val = 0; + return SWIG_OLDOBJ; + } + } else { + static int init = 0; + static swig_type_info* descriptor = 0; + if (!init) { + descriptor = SWIG_TypeQuery(#String " *"); + init = 1; + } + if (descriptor) { + String *vptr; + int res = SWIG_ConvertPtr(obj, (void**)&vptr, descriptor, 0); + if (SWIG_IsOK(res) && val) *val = vptr; + return res; + } + } + return SWIG_ERROR; +} +} +%enddef + +%define %std_string_from(String, SWIG_FromCharPtrAndSize, Frag) +%fragment(SWIG_From_frag(String),"header",fragment=Frag) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(String)(const String& s) +{ + return SWIG_FromCharPtrAndSize(s.data(), s.size()); +} +} +%enddef + +%define %std_string_asval(String) +%fragment(SWIG_AsVal_frag(String),"header", fragment=SWIG_AsPtr_frag(String)) { +SWIGINTERN int +SWIG_AsVal_dec(String)(SWIG_Object obj, String *val) +{ + String* v = (String *) 0; + int res = SWIG_AsPtr(String)(obj, &v); + if (!SWIG_IsOK(res)) return res; + if (v) { + if (val) *val = *v; + if (SWIG_IsNewObj(res)) { + %delete(v); + res = SWIG_DelNewMask(res); + } + return res; + } + return SWIG_ERROR; +} +} +%enddef + + +%define %typemaps_std_string(String, Char, AsPtrMethod, FromMethod, CheckCode) + +%std_string_asptr(String, Char, AsPtrMethod, #AsPtrMethod) +%std_string_asval(String) +%std_string_from(String, FromMethod, #FromMethod) + +%typemaps_asptrfromn(%arg(CheckCode), String); + +%enddef diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/std_wstring.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/std_wstring.swg new file mode 100644 index 000000000..4a2830bb9 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/std_wstring.swg @@ -0,0 +1,26 @@ +%include <typemaps/wstring.swg> + +#ifndef SWIG_STD_BASIC_STRING +#define SWIG_STD_WSTRING + +%include <typemaps/std_strings.swg> + +%{ +#include <cwchar> +%} +%fragment("<string>"); + +namespace std +{ + %naturalvar wstring; + class wstring; +} + +%typemaps_std_string(std::wstring, wchar_t, SWIG_AsWCharPtrAndSize, SWIG_FromWCharPtrAndSize, %checkcode(STDUNISTRING)); + + +#else + +%include <std/std_wstring.i> + +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/string.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/string.swg new file mode 100644 index 000000000..4b7072365 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/string.swg @@ -0,0 +1,35 @@ +%ensure_fragment(SWIG_AsCharPtrAndSize) +%ensure_fragment(SWIG_FromCharPtrAndSize) + +%types(char *); + +%fragment("SWIG_pchar_descriptor","header") { +SWIGINTERN swig_type_info* +SWIG_pchar_descriptor(void) +{ + static int init = 0; + static swig_type_info* info = 0; + if (!init) { + info = SWIG_TypeQuery("_p_char"); + init = 1; + } + return info; +} +} + +%fragment("SWIG_strnlen","header",fragment="SWIG_FromCharPtrAndSize") { +SWIGINTERN size_t +SWIG_strnlen(const char* s, size_t maxlen) +{ + const char *p; + for (p = s; maxlen-- && *p; p++) + ; + return p - s; +} +} + +%include <typemaps/strings.swg> +%typemaps_string(%checkcode(STRING), %checkcode(CHAR), + char, Char, SWIG_AsCharPtrAndSize, SWIG_FromCharPtrAndSize, + strlen, SWIG_strnlen, + "<limits.h>", CHAR_MIN, CHAR_MAX) diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/strings.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/strings.swg new file mode 100644 index 000000000..87e97dd74 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/strings.swg @@ -0,0 +1,651 @@ +// +// Use the macro SWIG_PRESERVE_CARRAY_SIZE if you prefer to preserve +// the size of char arrays, ie +// ------------------------------------------ +// C Side => Language Side +// ------------------------------------------ +// char name[5] = "hola" => 'hola\0' +// +// the default behaviour is +// +// char name[5] = "hola" => 'hola' +// +// +//#define SWIG_PRESERVE_CARRAY_SIZE + +/* ------------------------------------------------------------ + * String typemaps for type Char (char or wchar_t) + * ------------------------------------------------------------ */ + +%define %_typemap_string(StringCode, + Char, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + SWIG_AsCharPtr, + SWIG_FromCharPtr, + SWIG_AsCharArray, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray) + +/* in */ + +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtr) + Char * (int res, Char *buf = 0, int alloc = 0), + const Char * (int res, Char *buf = 0, int alloc = 0) { + res = SWIG_AsCharPtr($input, &buf, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = %reinterpret_cast(buf, $1_ltype); +} +%typemap(freearg,noblock=1,match="in") Char *, const Char * { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} + +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtr) Char const*& (int res, Char *buf = 0, int alloc = 0) { + res = SWIG_AsCharPtr($input, &buf, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = &buf; +} +%typemap(freearg, noblock=1,match="in") Char const*& { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} + +/* out */ + +%typemap(out,noblock=1,fragment=#SWIG_FromCharPtr) Char *, const Char * { + %set_output(SWIG_FromCharPtr((const Char *)$1)); +} + + +%typemap(out,noblock=1,fragment=#SWIG_FromCharPtr) Char const*& { + %set_output(SWIG_FromCharPtr(*$1)); +} + +%typemap(newfree,noblock=1) Char * { + SWIG_DeleteCharArray($1); +} + +/* varin */ + +%typemap(varin,fragment=#SWIG_AsCharPtrAndSize) Char * { + Char *cptr = 0; size_t csize = 0; int alloc = SWIG_NEWOBJ; + int res = SWIG_AsCharPtrAndSize($input, &cptr, &csize, &alloc); + if (!SWIG_IsOK(res)) { + %variable_fail(res,"$type","$name"); + } + if ($1) SWIG_DeleteCharArray($1); + if (alloc == SWIG_NEWOBJ) { + $1 = cptr; + } else { + $1 = csize ? ($1_type)SWIG_NewCopyCharArray(cptr, csize, Char) : 0; + } +} + +%typemap(varin,fragment=#SWIG_AsCharPtrAndSize,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const Char * { + Char *cptr = 0; size_t csize = 0; int alloc = SWIG_NEWOBJ; + int res = SWIG_AsCharPtrAndSize($input, &cptr, &csize, &alloc); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (alloc == SWIG_NEWOBJ) { + $1 = cptr; + } else { + $1 = csize ? ($1_type)SWIG_NewCopyCharArray(cptr, csize, Char) : 0; + } +} + +/* varout */ + +%typemap(varout,noblock=1,fragment=#SWIG_FromCharPtr) Char *, const Char * { + %set_varoutput(SWIG_FromCharPtr($1)); +} + +/* memberin */ + +%typemap(memberin,noblock=1) Char * { + if ($1) SWIG_DeleteCharArray($1); + if ($input) { + size_t size = SWIG_CharPtrLen(%reinterpret_cast($input, const Char *)) + 1; + $1 = ($1_type)SWIG_NewCopyCharArray(%reinterpret_cast($input, const Char *), size, Char); + } else { + $1 = 0; + } +} + +%typemap(memberin,noblock=1,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const Char * { + if ($input) { + size_t size = SWIG_CharPtrLen(%reinterpret_cast(%reinterpret_cast($input, const Char *), const Char *)) + 1; + $1 = ($1_type)SWIG_NewCopyCharArray($input, size, Char); + } else { + $1 = 0; + } +} + +/* globalin */ + +%typemap(globalin,noblock=1) Char * { + if ($1) SWIG_DeleteCharArray($1); + if ($input) { + size_t size = SWIG_CharPtrLen(%reinterpret_cast(%reinterpret_cast($input, const Char *), const Char *)) + 1; + $1 = ($1_type)SWIG_NewCopyCharArray($input, size, Char); + } else { + $1 = 0; + } +} + +%typemap(globalin,noblock=1,warning=SWIGWARN_TYPEMAP_CHARLEAK_MSG) const Char * { + if ($input) { + size_t size = SWIG_CharPtrLen($input) + 1; + $1 = ($1_type)SWIG_NewCopyCharArray($input, size, Char); + } else { + $1 = 0; + } +} + +/* constant */ + +%typemap(constcode,noblock=1,fragment=#SWIG_FromCharPtr) + Char *, Char const*, Char * const, Char const* const { + %set_constant("$symname", SWIG_FromCharPtr($value)); +} + + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%typemap(directorin,noblock=1,fragment=#SWIG_FromCharPtr) + Char *, Char const*, Char *const, Char const *const, + Char const *&, Char *const &, Char const *const & { + $input = SWIG_FromCharPtr((const Char *)$1); +} + + +/* directorout */ + +%typemap(directorout,noblock=1,fragment=#SWIG_AsCharPtr,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) Char * (int res, Char *buf = 0, int alloc = SWIG_NEWOBJ) { + res = SWIG_AsCharPtr($input, &buf, &alloc); + if (!SWIG_IsOK(res)) { + %dirout_fail(res, "$type"); + } + if (alloc == SWIG_NEWOBJ) { + swig_acquire_ownership_array(buf); + } + $result = %reinterpret_cast(buf, $1_ltype); +} +%typemap(directorfree,noblock=1) Char * +{ + if (director) { + director->swig_release_ownership(%as_voidptr($input)); + } +} + + +%typemap(directorout,noblock=1,fragment=#SWIG_AsCharPtr,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) Char *const& (int res, Char *buf = 0, int alloc = SWIG_NEWOBJ), Char const*const& (int res, Char *buf = 0, int alloc = SWIG_NEWOBJ) { + res = SWIG_AsCharPtr($input, &buf, &alloc); + if (!SWIG_IsOK(res)) { + %dirout_fail(res, "$type"); + } + static $*1_ltype tmp = buf; + $result = &tmp; + if (alloc == SWIG_NEWOBJ) { + swig_acquire_ownership_array(buf); + } +} +%typemap(directorfree,noblock=1) + Char * const&, Char const* const& { + if (director) { + director->swig_release_ownership(%as_voidptr(*$input)); + } +} + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + +/* typecheck */ + +%typemap(typecheck,noblock=1,precedence=StringCode, + fragment=#SWIG_AsCharPtr) Char *, const Char *, Char const*& { + int res = SWIG_AsCharPtr($input, 0, 0); + $1 = SWIG_CheckState(res); +} + + +/* throws */ + +%typemap(throws,noblock=1,fragment=#SWIG_FromCharPtr) Char * { + %raise(SWIG_FromCharPtr($1), "$type", 0); +} + + +/* ------------------------------------------------------------ + * Unknown size const Character array Char[ANY] handling + * ------------------------------------------------------------ */ + +%apply Char * { Char [] }; +%apply const Char * { const Char [] }; + +%typemap(varin,noblock=1,warning="462:Unable to set variable of type Char []") Char [] +{ + %variable_fail(SWIG_AttributeError, "$type", "read-only $name"); +} + + +/* ------------------------------------------------------------ + * Fixed size Character array Char[ANY] handling + * ------------------------------------------------------------ */ + +/* memberin and globalin typemaps */ + +%typemap(memberin,noblock=1) Char [ANY] +{ + if ($input) memcpy($1,$input,$1_dim0*sizeof(Char)); + else memset($1,0,$1_dim0*sizeof(Char)); +} + +%typemap(globalin,noblock=1) Char [ANY] +{ + if ($input) memcpy($1,$input,$1_dim0*sizeof(Char)); + else memset($1,0,$1_dim0*sizeof(Char)); +} + +/* in */ + +%typemap(in,noblock=1,fragment=#SWIG_AsCharArray) + Char [ANY] (Char temp[$1_dim0], int res), + const Char [ANY](Char temp[$1_dim0], int res) +{ + res = SWIG_AsCharArray($input, temp, $1_dim0); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = %reinterpret_cast(temp, $1_ltype); +} +%typemap(freearg) Char [ANY], const Char [ANY] ""; + +%typemap(in,noblock=1,fragment=#SWIG_AsCharArray) const Char (&)[ANY] (Char temp[$1_dim0], int res) +{ + res = SWIG_AsCharArray($input, temp, $1_dim0); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = &temp; +} +%typemap(freearg) const Char (&)[ANY] ""; + +%typemap(out,fragment=#SWIG_FromCharPtrAndSize,fragment=#SWIG_CharBufLen) + Char [ANY], const Char[ANY] +{ +%#ifndef SWIG_PRESERVE_CARRAY_SIZE + size_t size = SWIG_CharBufLen($1, $1_dim0); +%#else + size_t size = $1_dim0; +%#endif + %set_output(SWIG_FromCharPtrAndSize($1, size)); +} + +/* varin */ + +%typemap(varin,fragment=#SWIG_AsCharArray) Char [ANY] +{ + int res = SWIG_AsCharArray($input, $1, $1_dim0); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } +} + +/* varout */ + +%typemap(varout,fragment=#SWIG_CharBufLen) + Char [ANY], const Char [ANY] { +%#ifndef SWIG_PRESERVE_CARRAY_SIZE + size_t size = SWIG_CharBufLen($1, $1_dim0); +%#else + size_t size = $1_dim0; +%#endif + %set_varoutput(SWIG_FromCharPtrAndSize($1, size)); +} + +/* constant */ + +%typemap(constcode,fragment=#SWIG_CharBufLen) + Char [ANY], const Char [ANY] +{ +%#ifndef SWIG_PRESERVE_CARRAY_SIZE + size_t size = SWIG_CharBufLen($1, $1_dim0); +%#else + size_t size = $value_dim0; +%#endif + %set_constant("$symname", SWIG_FromCharPtrAndSize($value,size)); +} + + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ +%typemap(directorin,fragment=#SWIG_CharBufLen) + Char [ANY], const Char [ANY] +{ +%#ifndef SWIG_PRESERVE_CARRAY_SIZE + size_t size = SWIG_CharBufLen($1, $1_dim0); +%#else + size_t size = $1_dim0; +%#endif + $input = SWIG_FromCharPtrAndSize($1, size); +} + +/* directorout */ + +%typemap(directorout,noblock=1,fragment=#SWIG_AsCharArray) + Char [ANY] (Char temp[$result_dim0]), + const Char [ANY] (Char temp[$result_dim0], int res) +{ + res = SWIG_AsCharArray($input, temp, $result_dim0); + if (!SWIG_IsOK(res)) { + %dirout_fail(res, "$type"); + } + $result = temp; +} + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + +/* typecheck */ + +%typemap(typecheck,noblock=1,precedence=StringCode, + fragment=#SWIG_AsCharArray) + Char [ANY], const Char[ANY] { + int res = SWIG_AsCharArray($input, (Char *)0, $1_dim0); + $1 = SWIG_CheckState(res); +} + + +/* throws */ + +%typemap(throws,fragment=#SWIG_CharBufLen) + Char [ANY], const Char[ANY] +{ +%#ifndef SWIG_PRESERVE_CARRAY_SIZE + size_t size = SWIG_CharBufLen($1, $1_dim0); +%#else + size_t size = $1_dim0; +%#endif + %raise(SWIG_FromCharPtrAndSize($1, size), "$type", 0); +} + +/* ------------------------------------------------------------------- + * --- Really fix size Char arrays, including '\0'chars at the end --- + * ------------------------------------------------------------------- */ + +%typemap(varout,noblock=1,fragment=#SWIG_FromCharPtrAndSize) + Char FIXSIZE[ANY], const Char FIXSIZE[ANY] +{ + %set_varoutput(SWIG_FromCharPtrAndSize($1, $1_dim0)); +} + +%typemap(out,noblock=1,fragment=#SWIG_FromCharPtrAndSize) + Char FIXSIZE[ANY], const Char FIXSIZE[ANY] +{ + %set_output(SWIG_FromCharPtrAndSize($1, $1_dim0)); +} + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +%typemap(directorin,noblock=1,fragment=#SWIG_FromCharPtrAndSize) + Char FIXSIZE[ANY], const Char FIXSIZE[ANY] +{ + $input = SWIG_FromCharPtrAndSize($1, $1_dim0); +} + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + +%typemap(throws,noblock=1,fragment=#SWIG_FromCharPtrAndSize) + Char FIXSIZE[ANY], const Char FIXSIZE[ANY] { + %raise(SWIG_FromCharPtrAndSize($1, $1_dim0), "$type", 0); +} + +/* ------------------------------------------------------------ + * --- String & length --- + * ------------------------------------------------------------ */ + +/* Here len doesn't include the '0' terminator */ +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) + (Char *STRING, size_t LENGTH) (int res, Char *buf = 0, size_t size = 0, int alloc = 0), + (const Char *STRING, size_t LENGTH) (int res, Char *buf = 0, size_t size = 0, int alloc = 0) +{ + res = SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = %reinterpret_cast(buf, $1_ltype); + $2 = %numeric_cast(size - 1, $2_ltype); +} +%typemap(freearg,noblock=1,match="in") (Char *STRING, size_t LENGTH) { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} +/* old 'int' form */ +%typemap(in) (Char *STRING, int LENGTH) = (Char *STRING, size_t LENGTH); +%typemap(freearg) (Char *STRING, int LENGTH) = (Char *STRING, size_t LENGTH); + + +/* Here size includes the '0' terminator */ +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) + (Char *STRING, size_t SIZE) (int res, Char *buf = 0, size_t size = 0, int alloc = 0), + (const Char *STRING, size_t SIZE) (int res, Char *buf = 0, size_t size = 0, int alloc = 0) +{ + res = SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $1 = %reinterpret_cast(buf, $1_ltype); + $2 = %numeric_cast(size, $2_ltype); +} +%typemap(freearg,noblock=1,match="in") (Char *STRING, size_t SIZE) { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} +/* old 'int' form */ +%typemap(in) (Char *STRING, int SIZE) = (Char *STRING, size_t SIZE); +%typemap(freearg) (Char *STRING, int SIZE) = (Char *STRING, size_t SIZE); + + +/* reverse order versions */ + +/* Here len doesn't include the '0' terminator */ +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) + (size_t LENGTH, Char *STRING) (int res, Char *buf = 0, size_t size = 0, int alloc = 0), + (size_t LENGTH, const Char *STRING) (int res, Char *buf = 0, size_t size = 0, int alloc = 0) +{ + res = SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } + $2 = %reinterpret_cast(buf, $2_ltype) ; + $1 = %numeric_cast(size - 1, $1_ltype) ; +} +%typemap(freearg, noblock=1, match="in") (size_t LENGTH, Char *STRING) { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} +/* old 'int' form */ +%typemap(in) (int LENGTH, Char *STRING) = (size_t LENGTH, Char *STRING); +%typemap(freearg) (int LENGTH, Char *STRING) = (size_t LENGTH, Char *STRING); + +/* Here size includes the '0' terminator */ +%typemap(in,noblock=1,fragment=#SWIG_AsCharPtrAndSize) + (size_t SIZE, Char *STRING) (int res, Char *buf = 0, size_t size = 0, int alloc = 0), + (size_t SIZE, const Char *STRING) (int res, Char *buf = 0, size_t size = 0, int alloc = 0) +{ + res = SWIG_AsCharPtrAndSize($input, &buf, &size, &alloc); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type",$symname, $argnum); + } + $2 = %reinterpret_cast(buf, $2_ltype) ; + $1 = %numeric_cast(size, $1_ltype) ; +} +%typemap(freearg, noblock=1, match="in") (size_t SIZE, Char *STRING) { + if (alloc$argnum == SWIG_NEWOBJ) SWIG_DeleteCharArray(buf$argnum); +} +/* old 'int' form */ +%typemap(in) (int SIZE, Char *STRING) = (size_t SIZE, Char *STRING); +%typemap(freearg) (int SIZE, Char *STRING) = (size_t SIZE, Char *STRING); + + +%enddef + + +/* ------------------------------------------------------------ + * --- String fragment methods --- + * ------------------------------------------------------------ */ + +#ifndef %_typemap2_string +%define %_typemap2_string(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray, + FragLimits, CHAR_MIN, CHAR_MAX) + +%fragment("SWIG_From"#CharName"Ptr","header",fragment=#SWIG_FromCharPtrAndSize) { +SWIGINTERNINLINE SWIG_Object +SWIG_From##CharName##Ptr(const Char *cptr) +{ + return SWIG_FromCharPtrAndSize(cptr, (cptr ? SWIG_CharPtrLen(cptr) : 0)); +} +} + +%fragment("SWIG_From"#CharName"Array","header",fragment=#SWIG_FromCharPtrAndSize) { +SWIGINTERNINLINE SWIG_Object +SWIG_From##CharName##Array(const Char *cptr, size_t size) +{ + return SWIG_FromCharPtrAndSize(cptr, size); +} +} + +%fragment("SWIG_As" #CharName "Ptr","header",fragment=#SWIG_AsCharPtrAndSize) { +%define_as(SWIG_As##CharName##Ptr(obj, val, alloc), SWIG_AsCharPtrAndSize(obj, val, NULL, alloc)) +} + +%fragment("SWIG_As" #CharName "Array","header",fragment=#SWIG_AsCharPtrAndSize) { +SWIGINTERN int +SWIG_As##CharName##Array(SWIG_Object obj, Char *val, size_t size) +{ + Char* cptr = 0; size_t csize = 0; int alloc = SWIG_OLDOBJ; + int res = SWIG_AsCharPtrAndSize(obj, &cptr, &csize, &alloc); + if (SWIG_IsOK(res)) { + /* special case of single char conversion when we don't need space for NUL */ + if (size == 1 && csize == 2 && cptr && !cptr[1]) --csize; + if (csize <= size) { + if (val) { + if (csize) memcpy(val, cptr, csize*sizeof(Char)); + if (csize < size) memset(val + csize, 0, (size - csize)*sizeof(Char)); + } + if (alloc == SWIG_NEWOBJ) { + SWIG_DeleteCharArray(cptr); + res = SWIG_DelNewMask(res); + } + return res; + } + if (alloc == SWIG_NEWOBJ) SWIG_DeleteCharArray(cptr); + } + return SWIG_TypeError; +} +} + +/* Char */ + +%fragment(SWIG_From_frag(Char),"header",fragment=#SWIG_FromCharPtrAndSize) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(Char)(Char c) +{ + return SWIG_FromCharPtrAndSize(&c,1); +} +} + +%fragment(SWIG_AsVal_frag(Char),"header", + fragment="SWIG_As"#CharName"Array", + fragment=FragLimits, + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(Char)(SWIG_Object obj, Char *val) +{ + int res = SWIG_As##CharName##Array(obj, val, 1); + if (!SWIG_IsOK(res)) { + long v; + res = SWIG_AddCast(SWIG_AsVal(long)(obj, &v)); + if (SWIG_IsOK(res)) { + if ((CHAR_MIN <= v) && (v <= CHAR_MAX)) { + if (val) *val = %numeric_cast(v, Char); + } else { + res = SWIG_OverflowError; + } + } + } + return res; +} +} + +%_typemap_string(StringCode, + Char, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + SWIG_As##CharName##Ptr, + SWIG_From##CharName##Ptr, + SWIG_As##CharName##Array, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray) + +%enddef +#endif + +/* ------------------------------------------------------------ + * String typemaps and fragments, with default allocators + * ------------------------------------------------------------ */ + +%define %typemaps_string(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + FragLimits, CHAR_MIN, CHAR_MAX) +%_typemap2_string(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + %new_copy_array, + %delete_array, + FragLimits, CHAR_MIN, CHAR_MAX) +%enddef + +/* ------------------------------------------------------------ + * String typemaps and fragments, with custom allocators + * ------------------------------------------------------------ */ + +%define %typemaps_string_alloc(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray, + FragLimits, CHAR_MIN, CHAR_MAX) +%_typemap2_string(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_CharBufLen, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray, + FragLimits, CHAR_MIN, CHAR_MAX) +%enddef diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/swigmacros.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/swigmacros.swg new file mode 100644 index 000000000..3a63a256c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/swigmacros.swg @@ -0,0 +1,245 @@ +/* ----------------------------------------------------------------------------- + * SWIG API. Portion only visible from SWIG + * ----------------------------------------------------------------------------- */ +/* + This file implements the internal macros of the 'SWIG API', which + are useful to implement all the SWIG target languages. + + Basic preprocessor macros: + -------------------------- + + %arg(Arg) Safe argument wrap + %str(Arg) Stringify the argument + %begin_block Begin an execution block + %end_block End an execution block + %block(Block) Execute Block as an execution block + %define_as(Def, Val) Define 'Def' as 'Val', expanding Def and Val first + %ifcplusplus(V1, V2) if C++ Mode; then V1; else V2; fi + + + Casting Operations: + ------------------- + + SWIG provides the following casting macros, which implement the + corresponding C++ casting operations: + + %const_cast(a, Type) const_cast<Type >(a) + %static_cast(a, Type) static_cast<Type >(a) + %reinterpret_cast(a, Type) reinterpret_cast<Type >(a) + %numeric_cast(a, Type) static_cast<Type >(a) + %as_voidptr(a) const_cast<void *>(static_cast<const void *>(a)) + %as_voidptrptr(a) reinterpret_cast<void **>(a) + + or their C unsafe versions. In C++ we use the safe version unless + SWIG_NO_CPLUSPLUS_CAST is defined (usually via the -nocppcast swig flag). + + + Memory allocation: + ------------------ + + These allocation/freeing macros are safe to use in C or C++ and + dispatch the proper new/delete/delete[] or free/malloc calls as + needed. + + %new_instance(Type) Allocate a new instance of given Type + %new_copy(value,Type) Allocate and initialize a new instance with 'value' + %new_array(size,Type) Allocate a new array with given size and Type and zero initialize + %new_copy_array(cptr,size,Type) Allocate and initialize a new array from 'cptr' + %delete(cptr) Delete an instance + %delete_array(cptr) Delete an array + + + Auxiliary loop macros: + ---------------------- + + %formacro(Macro, Args...) or %formacro_1(Macro, Args...) + for i in Args + do + Macro($i) + done + + %formacro_2(Macro2, Args...) + for i,j in Args + do + Macro2($i, $j) + done + + + Flags and conditional macros: + ----------------------------- + + %mark_flag(flag) + flag := True + + %evalif(flag,expr) + if flag; then + expr + fi + + %evalif_2(flag1 flag2,expr) + if flag1 and flag2; then + expr + fi + + +*/ +/* ----------------------------------------------------------------------------- + * Basic preprocessor macros + * ----------------------------------------------------------------------------- */ + +#define %arg(Arg...) Arg +#define %str(Arg) `Arg` +#ifndef %begin_block +# define %begin_block do { +#endif +#ifndef %end_block +# define %end_block } while(0) +#endif +#define %block(Block...) %begin_block Block; %end_block + +/* define a new macro */ +%define %define_as(Def, Val...)%#define Def Val %enddef + +/* include C++ or else value */ +%define %ifcplusplus(cppval, nocppval) +#ifdef __cplusplus +cppval +#else +nocppval +#endif +%enddef + +/* insert the SWIGVERSION in the interface and the wrapper code */ +#if SWIG_VERSION +%insert("header") { +%define_as(SWIGVERSION, SWIG_VERSION) +%#define SWIG_VERSION SWIGVERSION +} +#endif + + + +/* ----------------------------------------------------------------------------- + * Casting operators + * ----------------------------------------------------------------------------- */ + +#if defined(SWIG_NO_CPLUSPLUS_CAST) +/* Disable 'modern' cplusplus casting operators */ +# if defined(SWIG_CPLUSPLUS_CAST) +# undef SWIG_CPLUSPLUS_CAST +# endif +#endif + +#if defined(__cplusplus) && defined(SWIG_CPLUSPLUS_CAST) +# define %const_cast(a,Type...) const_cast< Type >(a) +# define %static_cast(a,Type...) static_cast< Type >(a) +# define %reinterpret_cast(a,Type...) reinterpret_cast< Type >(a) +# define %numeric_cast(a,Type...) static_cast< Type >(a) +#else /* C case */ +# define %const_cast(a,Type...) (Type)(a) +# define %static_cast(a,Type...) (Type)(a) +# define %reinterpret_cast(a,Type...) (Type)(a) +# define %numeric_cast(a,Type...) (Type)(a) +#endif /* __cplusplus */ + + +#define %as_voidptr(a) SWIG_as_voidptr(a) +#define %as_voidptrptr(a) SWIG_as_voidptrptr(a) + +%insert("header") { +%define_as(SWIG_as_voidptr(a), %const_cast(%static_cast(a,const void *), void *)) +%define_as(SWIG_as_voidptrptr(a), ((void)%as_voidptr(*a),%reinterpret_cast(a, void**))) +} + + +/* ----------------------------------------------------------------------------- + * Allocating/freeing elements + * ----------------------------------------------------------------------------- */ + +#if defined(__cplusplus) +# define %new_instance(Type...) (new Type()) +# define %new_copy(val,Type...) (new Type(%static_cast(val, const Type&))) +# define %new_array(size,Type...) (new Type[size]()) +# define %new_copy_array(ptr,size,Type...) %reinterpret_cast(memcpy(new Type[size], ptr, sizeof(Type)*(size)), Type*) +# define %delete(cptr) delete cptr +# define %delete_array(cptr) delete[] cptr +#else /* C case */ +# define %new_instance(Type...) (Type *)calloc(1,sizeof(Type)) +# define %new_copy(val,Type...) (Type *)memcpy(%new_instance(Type),&val,sizeof(Type)) +# define %new_array(size,Type...) (Type *)calloc(size, sizeof(Type)) +# define %new_copy_array(ptr,size,Type...) (Type *)memcpy(malloc((size)*sizeof(Type)), ptr, sizeof(Type)*(size)) +# define %delete(cptr) free((char*)cptr) +# define %delete_array(cptr) free((char*)cptr) +#endif /* __cplusplus */ + +/* ----------------------------------------------------------------------------- + * SWIG names and mangling + * ----------------------------------------------------------------------------- */ + +#define %mangle(Type...) #@Type +#define %descriptor(Type...) SWIGTYPE_ ## #@Type +#define %string_name(Name) "SWIG_" %str(Name) +#define %symbol_name(Name, Type...) SWIG_ ## Name ## _ #@Type +#define %checkcode(Code) SWIG_TYPECHECK_ ## Code + + +/* ----------------------------------------------------------------------------- + * Auxiliary loop macros + * ----------------------------------------------------------------------------- */ + + +/* for loop for macro with one argument */ +%define %_formacro_1(macro, arg1,...)macro(arg1) +#if #__VA_ARGS__ != "__fordone__" +%_formacro_1(macro, __VA_ARGS__) +#endif +%enddef + +/* for loop for macro with one argument */ +%define %formacro_1(macro,...)%_formacro_1(macro,__VA_ARGS__,__fordone__)%enddef +%define %formacro(macro,...)%_formacro_1(macro,__VA_ARGS__,__fordone__)%enddef + +/* for loop for macro with two arguments */ +%define %_formacro_2(macro, arg1, arg2, ...)macro(arg1, arg2) +#if #__VA_ARGS__ != "__fordone__" +%_formacro_2(macro, __VA_ARGS__) +#endif +%enddef + +/* for loop for macro with two arguments */ +%define %formacro_2(macro,...)%_formacro_2(macro, __VA_ARGS__, __fordone__)%enddef + +/* ----------------------------------------------------------------------------- + * SWIG flags + * ----------------------------------------------------------------------------- */ + +/* + mark a flag, ie, define a macro name but ignore it in + the interface. + + the flag can be later used with %evalif +*/ + +%define %mark_flag(x) %define x 1 %enddef %enddef + + +/* + %evalif and %evalif_2 are use to evaluate or process + an expression if the given predicate is 'true' (1). +*/ +%define %_evalif(_x,_expr) +#if _x == 1 +_expr +#endif +%enddef + +%define %_evalif_2(_x,_y,_expr) +#if _x == 1 && _y == 1 +_expr +#endif +%enddef + +%define %evalif(_x,_expr...) %_evalif(%arg(_x),%arg(_expr)) %enddef + +%define %evalif_2(_x,_y,_expr...) %_evalif_2(%arg(_x),%arg(_y),%arg(_expr)) %enddef + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/swigobject.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/swigobject.swg new file mode 100644 index 000000000..b1e6dc9d8 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/swigobject.swg @@ -0,0 +1,37 @@ +/* ------------------------------------------------------------ + * Language Object * - Just pass straight through unmodified + * ------------------------------------------------------------ */ + +%typemap(in) SWIG_Object "$1 = $input;"; + +%typemap(in,noblock=1) SWIG_Object const & ($*ltype temp) +{ + temp = %static_cast($input, $*ltype); + $1 = &temp; +} + +%typemap(out,noblock=1) SWIG_Object { + %set_output($1); +} + +%typemap(out,noblock=1) SWIG_Object const & { + %set_output(*$1); +} + +%typecheck(SWIG_TYPECHECK_SWIGOBJECT) SWIG_Object "$1 = ($input != 0);"; + +%typemap(throws,noblock=1) SWIG_Object { + %raise($1, "$type", 0); +} + +%typemap(constcode,noblock=1) SWIG_Object { + %set_constant("$symname", $value); +} + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +%typemap(directorin) SWIG_Object "$input = $1;"; +%typemap(directorout) SWIG_Object "$result = $input;"; + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/swigtype.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/swigtype.swg new file mode 100644 index 000000000..d3633eb49 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/swigtype.swg @@ -0,0 +1,699 @@ +/* ----------------------------------------------------------------------------- + * --- Input arguments --- + * ----------------------------------------------------------------------------- */ +/* Pointers and arrays */ +%typemap(in, noblock=1) SWIGTYPE *(void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp,$descriptor, $disown | %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg) SWIGTYPE * ""; + +%typemap(in, noblock=1) SWIGTYPE [] (void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp,$descriptor, $disown | %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg) SWIGTYPE [] ""; + + +%typemap(in, noblock=1) SWIGTYPE *const& (void *argp = 0, int res = 0, $*1_ltype temp) { + res = SWIG_ConvertPtr($input, &argp, $*descriptor, $disown | %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$*ltype", $symname, $argnum); + } + temp = %reinterpret_cast(argp, $*ltype); + $1 = %reinterpret_cast(&temp, $1_ltype); +} +%typemap(freearg) SWIGTYPE *const& ""; + + +/* Reference */ +%typemap(in, noblock=1) SWIGTYPE & (void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg) SWIGTYPE & ""; + +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(in,noblock=1,implicitconv=1) const SWIGTYPE & (void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags | %implicitconv_flag); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg,noblock=1,match="in",implicitconv=1) const SWIGTYPE & +{ + if (SWIG_IsNewObj(res$argnum)) %delete($1); +} +#else +%typemap(in,noblock=1) const SWIGTYPE & (void *argp, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +#endif + +/* Rvalue reference */ +%typemap(in, noblock=1) SWIGTYPE && (void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg) SWIGTYPE && ""; + +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(in,noblock=1,implicitconv=1) const SWIGTYPE && (void *argp = 0, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags | %implicitconv_flag); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +%typemap(freearg,noblock=1,match="in",implicitconv=1) const SWIGTYPE && +{ + if (SWIG_IsNewObj(res$argnum)) %delete($1); +} +#else +%typemap(in,noblock=1) const SWIGTYPE && (void *argp, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { %argument_nullref("$type", $symname, $argnum); } + $1 = %reinterpret_cast(argp, $ltype); +} +#endif + +/* By value */ +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(in,implicitconv=1) SWIGTYPE (void *argp, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $&descriptor, %convertptr_flags | %implicitconv_flag); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { + %argument_nullref("$type", $symname, $argnum); + } else { + $<ype temp = %reinterpret_cast(argp, $<ype); + $1 = *temp; + if (SWIG_IsNewObj(res)) %delete(temp); + } +} +#else +%typemap(in) SWIGTYPE (void *argp, int res = 0) { + res = SWIG_ConvertPtr($input, &argp, $&descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } + if (!argp) { + %argument_nullref("$type", $symname, $argnum); + } else { + $1 = *(%reinterpret_cast(argp, $<ype)); + } +} +#endif + + +/* ----------------------------------------------------------------------------- + * --- Output arguments --- + * ----------------------------------------------------------------------------- */ + +/* Pointers, references */ +%typemap(out,noblock=1) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE[] { + %set_output(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, $owner | %newpointer_flags)); +} + +%typemap(out, noblock=1) SWIGTYPE *const& { + %set_output(SWIG_NewPointerObj(%as_voidptr(*$1), $*descriptor, $owner | %newpointer_flags)); +} + +/* Return by value */ +%typemap(out, noblock=1) SWIGTYPE { + %set_output(SWIG_NewPointerObj(%new_copy($1, $ltype), $&descriptor, SWIG_POINTER_OWN | %newpointer_flags)); +} + +/* ----------------------------------------------------------------------------- + * --- Variable input --- + * ----------------------------------------------------------------------------- */ + +/* memberin/globalin/varin, for fix arrays. */ + +%typemap(memberin) SWIGTYPE [ANY] { + if ($input) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) *($1_basetype *)&$1[ii] = *(($1_basetype *)$input + ii); + } else { + %variable_nullref("$type","$name"); + } +} + +%typemap(globalin) SWIGTYPE [ANY] { + if ($input) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) *($1_basetype *)&$1[ii] = *(($1_basetype *)$input + ii); + } else { + %variable_nullref("$type","$name"); + } +} + +%typemap(varin) SWIGTYPE [ANY] { + $basetype *inp = 0; + int res = SWIG_ConvertPtr($input, %as_voidptrptr(&inp), $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } else if (inp) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) *($1_basetype *)&$1[ii] = *(($1_basetype *)inp + ii); + } else { + %variable_nullref("$type", "$name"); + } +} + + +/* memberin/globalin/varin, for fix double arrays. */ + +%typemap(memberin) SWIGTYPE [ANY][ANY] { + if ($input) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) { + if ($input[ii]) { + size_t jj = 0; + for (; jj < (size_t)$1_dim1; ++jj) $1[ii][jj] = $input[ii][jj]; + } else { + %variable_nullref("$type","$name"); + } + } + } else { + %variable_nullref("$type","$name"); + } +} + +%typemap(globalin) SWIGTYPE [ANY][ANY] { + if ($input) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) { + if ($input[ii]) { + size_t jj = 0; + for (; jj < (size_t)$1_dim1; ++jj) $1[ii][jj] = $input[ii][jj]; + } else { + %variable_nullref("$type","$name"); + } + } + } else { + %variable_nullref("$type","$name"); + } +} + +%typemap(varin) SWIGTYPE [ANY][ANY] { + $basetype (*inp)[$1_dim1] = 0; + int res = SWIG_ConvertPtr($input, %as_voidptrptr(&inp), $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } else if (inp) { + size_t ii = 0; + for (; ii < (size_t)$1_dim0; ++ii) { + if (inp[ii]) { + size_t jj = 0; + for (; jj < (size_t)$1_dim1; ++jj) $1[ii][jj] = inp[ii][jj]; + } else { + %variable_nullref("$type", "$name"); + } + } + } else { + %variable_nullref("$type", "$name"); + } +} + +/* Pointers, references, and variable size arrays */ + +%typemap(varin,warning=SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) SWIGTYPE * { + void *argp = 0; + int res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = %reinterpret_cast(argp, $ltype); +} + +%typemap(varin,noblock=1,warning="462:Unable to set dimensionless array variable") SWIGTYPE [] +{ + %variable_fail(SWIG_AttributeError, "$type", "read-only $name"); +} + +%typemap(varin,warning=SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) SWIGTYPE & { + void *argp = 0; + int res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } + $1 = *(%reinterpret_cast(argp, $ltype)); +} + +%typemap(varin,warning=SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) SWIGTYPE && { + void *argp = 0; + int res = SWIG_ConvertPtr($input, &argp, $descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } + $1 = *(%reinterpret_cast(argp, $ltype)); +} + +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(varin,implicitconv=1) SWIGTYPE { + void *argp = 0; + int res = SWIG_ConvertPtr($input, &argp, $&descriptor, %convertptr_flags | %implicitconv_flag); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } else { + $&type temp; + temp = %reinterpret_cast(argp, $&type); + $1 = *temp; + if (SWIG_IsNewObj(res)) %delete(temp); + } +} +#else +%typemap(varin) SWIGTYPE { + void *argp = 0; + int res = SWIG_ConvertPtr($input, &argp, $&descriptor, %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + if (!argp) { + %variable_nullref("$type", "$name"); + } else { + $1 = *(%reinterpret_cast(argp, $&type)); + } +} +#endif + +/* ----------------------------------------------------------------------------- + * --- Variable output --- + * ----------------------------------------------------------------------------- */ + +/* Pointers and arrays */ +%typemap(varout, noblock=1) SWIGTYPE * { + %set_varoutput(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, %newpointer_flags)); +} + +%typemap(varout, noblock=1) SWIGTYPE [] { + %set_varoutput(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, %newpointer_flags)); +} + +/* References */ +%typemap(varout, noblock=1) SWIGTYPE & { + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(&$1), $descriptor, %newpointer_flags)); +} + +%typemap(varout, noblock=1) SWIGTYPE && { + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(&$1), $descriptor, %newpointer_flags)); +} + +/* Value */ +%typemap(varout, noblock=1) SWIGTYPE { + %set_varoutput(SWIG_NewPointerObj(%as_voidptr(&$1), $&descriptor, %newpointer_flags)); +} + +/* ------------------------------------------------------------ + * --- Typechecking rules --- + * ------------------------------------------------------------ */ + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE * { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $descriptor, 0); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE *const& { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $*descriptor, 0); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE & { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $descriptor, 0); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE && { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $descriptor, 0); + $1 = SWIG_CheckState(res); +} + +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1,implicitconv=1) const SWIGTYPE & { + int res = SWIG_ConvertPtr($input, 0, $descriptor, %implicitconv_flag); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1,implicitconv=1) const SWIGTYPE && { + int res = SWIG_ConvertPtr($input, 0, $descriptor, %implicitconv_flag); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1,implicitconv=1) SWIGTYPE { + int res = SWIG_ConvertPtr($input, 0, $&descriptor, %implicitconv_flag); + $1 = SWIG_CheckState(res); +} +#else +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) const SWIGTYPE & { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $descriptor, 0); + $1 = SWIG_CheckState(res); +} +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) const SWIGTYPE && { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $descriptor, 0); + $1 = SWIG_CheckState(res); +} + +%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE { + void *vptr = 0; + int res = SWIG_ConvertPtr($input, &vptr, $&descriptor, 0); + $1 = SWIG_CheckState(res); +} +#endif + +/* ----------------------------------------------------------------------------- + * --- Director typemaps --- * + * ----------------------------------------------------------------------------- */ + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%typemap(directorin,noblock=1) SWIGTYPE *, SWIGTYPE *const& { + $input = SWIG_NewPointerObj(%as_voidptr($1), $descriptor, %newpointer_flags); +} + +%typemap(directorin,noblock=1) SWIGTYPE { + $input = SWIG_NewPointerObj(%as_voidptr(new $1_ltype((const $1_ltype &)$1)), $&descriptor, SWIG_POINTER_OWN | %newpointer_flags); +} + +%typemap(directorin,noblock=1) SWIGTYPE & { + $input = SWIG_NewPointerObj(%as_voidptr(&$1), $descriptor, %newpointer_flags); +} + +%typemap(directorin,noblock=1) SWIGTYPE && { + $input = SWIG_NewPointerObj(%as_voidptr(&$1_name), $descriptor, %newpointer_flags); +} + +/* directorout */ +#if defined(__cplusplus) && defined(%implicitconv_flag) +%typemap(directorout,noblock=1,implicitconv=1) SWIGTYPE (void * swig_argp, int swig_res = 0) { + swig_res = SWIG_ConvertPtr($input,&swig_argp,$&descriptor, %convertptr_flags | %implicitconv_flag); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + $result = *(%reinterpret_cast(swig_argp, $<ype)); + if (SWIG_IsNewObj(swig_res)) %delete(%reinterpret_cast(swig_argp, $<ype)); +} +#else +%typemap(directorout,noblock=1) SWIGTYPE (void * swig_argp, int swig_res = 0) { + swig_res = SWIG_ConvertPtr($input,&swig_argp,$&descriptor, %convertptr_flags); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + $result = *(%reinterpret_cast(swig_argp, $<ype)); +} +#endif + +%typemap(directorout,noblock=1,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) + SWIGTYPE *(void *swig_argp, int swig_res, swig_owntype own) { + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor, %convertptr_flags | SWIG_POINTER_DISOWN, &own); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + $result = %reinterpret_cast(swig_argp, $ltype); + swig_acquire_ownership_obj(%as_voidptr($result), own /* & TODO: SWIG_POINTER_OWN */); +} +%typemap(directorfree,noblock=1,match="directorout") SWIGTYPE * { + if (director) { + SWIG_AcquirePtr($result, director->swig_release_ownership(%as_voidptr($input))); + } +} + +%typemap(directorout,noblock=1,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) + SWIGTYPE &(void *swig_argp, int swig_res, swig_owntype own) { + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor, %convertptr_flags | SWIG_POINTER_DISOWN, &own); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + if (!swig_argp) { %dirout_nullref("$type"); } + $result = %reinterpret_cast(swig_argp, $ltype); + swig_acquire_ownership_obj(%as_voidptr($result), own /* & TODO: SWIG_POINTER_OWN */); +} +%typemap(directorfree,noblock=1,match="directorout") SWIGTYPE & { + if (director) { + SWIG_AcquirePtr($result, director->swig_release_ownership(%as_voidptr($input))); + } +} + +%typemap(directorout,noblock=1,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) + SWIGTYPE &&(void *swig_argp, int swig_res, swig_owntype own) { + swig_res = SWIG_ConvertPtrAndOwn($input, &swig_argp, $descriptor, %convertptr_flags | SWIG_POINTER_DISOWN, &own); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } + if (!swig_argp) { %dirout_nullref("$type"); } + $result = %reinterpret_cast(swig_argp, $ltype); + swig_acquire_ownership_obj(%as_voidptr($result), own /* & TODO: SWIG_POINTER_OWN */); +} +%typemap(directorfree,noblock=1,match="directorout") SWIGTYPE && { + if (director) { + SWIG_AcquirePtr($result, director->swig_release_ownership(%as_voidptr($input))); + } +} + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + + +/* ------------------------------------------------------------ + * --- Constants --- + * ------------------------------------------------------------ */ + +%typemap(constcode,noblock=1) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] { + %set_constant("$symname", SWIG_NewPointerObj(%as_voidptr($value),$descriptor,%newpointer_flags)); +} + +%typemap(constcode,noblock=1) SWIGTYPE { + %set_constant("$symname", SWIG_NewPointerObj(%as_voidptr(&$value),$&descriptor,%newpointer_flags)); +} + +/* ------------------------------------------------------------ + * --- Exception handling --- + * ------------------------------------------------------------ */ + +%typemap(throws,noblock=1) SWIGTYPE { + %raise(SWIG_NewPointerObj(%new_copy($1, $ltype),$&descriptor,SWIG_POINTER_OWN), "$type", $&descriptor); +} + +%typemap(throws,noblock=1) SWIGTYPE * { + %raise(SWIG_NewPointerObj(%as_voidptr($1),$descriptor,0), "$type", $descriptor); +} + +%typemap(throws,noblock=1) SWIGTYPE [ANY] { + %raise(SWIG_NewPointerObj(%as_voidptr($1),$descriptor,0), "$type", $descriptor); +} + +%typemap(throws,noblock=1) SWIGTYPE & { + %raise(SWIG_NewPointerObj(%as_voidptr(&$1),$descriptor,0), "$type", $descriptor); +} + +%typemap(throws,noblock=1) SWIGTYPE && { + %raise(SWIG_NewPointerObj(%as_voidptr(&$1),$descriptor,0), "$type", $descriptor); +} + +%typemap(throws,noblock=1) (...) { + SWIG_exception_fail(SWIG_RuntimeError,"unknown exception"); +} + +/* ------------------------------------------------------------ + * --- CLASS::* typemaps --- + * ------------------------------------------------------------ */ + +%typemap(in) SWIGTYPE (CLASS::*) { + int res = SWIG_ConvertMember($input, %as_voidptr(&$1), sizeof($type),$descriptor); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } +} + +%typemap(out,noblock=1) SWIGTYPE (CLASS::*) { + %set_output(SWIG_NewMemberObj(%as_voidptr(&$1), sizeof($type), $descriptor)); +} + +%typemap(varin) SWIGTYPE (CLASS::*) { + int res = SWIG_ConvertMember($input,%as_voidptr(&$1), sizeof($type), $descriptor); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } +} + +%typemap(varout,noblock=1) SWIGTYPE (CLASS::*) { + %set_varoutput(SWIG_NewMemberObj(%as_voidptr(&$1), sizeof($type), $descriptor)); +} + +%typemap(constcode,noblock=1) SWIGTYPE (CLASS::*) { + %set_constant("$symname", SWIG_NewMemberObj(%as_voidptr(&$value), sizeof($type), $descriptor)); +} + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%typemap(directorin,noblock=1) SWIGTYPE (CLASS::*) { + $input = SWIG_NewMemberObj(%as_voidptr(&$1), sizeof($type), $descriptor); +} + +/* directorout */ + +%typemap(directorout) SWIGTYPE (CLASS::*) { + int swig_res = SWIG_ConvertMember($input,%as_voidptr(&$result), sizeof($type), $descriptor); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } +} +#endif + +/* ------------------------------------------------------------ + * --- function ptr typemaps --- + * ------------------------------------------------------------ */ + +/* + ISO C++ doesn't allow direct casting of a function ptr to a object + ptr. So, maybe the ptr sizes are not the same, and we need to take + some providences. + */ +%typemap(in) SWIGTYPE ((*)(ANY)) { + int res = SWIG_ConvertFunctionPtr($input, (void**)(&$1), $descriptor); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type",$symname, $argnum); + } +} + +%typecheck(SWIG_TYPECHECK_POINTER,noblock=1) SWIGTYPE ((*)(ANY)) { + void *ptr = 0; + int res = SWIG_ConvertFunctionPtr($input, &ptr, $descriptor); + $1 = SWIG_CheckState(res); +} + + +%typemap(out, noblock=1) SWIGTYPE ((*)(ANY)) { + %set_output(SWIG_NewFunctionPtrObj((void *)($1), $descriptor)); +} + +%typemap(varin) SWIGTYPE ((*)(ANY)) { + int res = SWIG_ConvertFunctionPtr($input, (void**)(&$1), $descriptor); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } +} + +%typemap(varout,noblock=1) SWIGTYPE ((*)(ANY)) { + %set_varoutput(SWIG_NewFunctionPtrObj((void *)($1), $descriptor)); +} + +%typemap(constcode, noblock=1) SWIGTYPE ((*)(ANY)){ + %set_constant("$symname", SWIG_NewFunctionPtrObj((void *)$value, $descriptor)); +} +%typemap(constcode) SWIGTYPE ((* const)(ANY)) = SWIGTYPE ((*)(ANY)); + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%typemap(directorin,noblock=1) SWIGTYPE ((*)(ANY)) { + $input = SWIG_NewFunctionPtrObj((void*)($1), $descriptor); +} + +/* directorout */ + +%typemap(directorout) SWIGTYPE ((*)(ANY)) { + int swig_res = SWIG_ConvertFunctionPtr($input,(void**)(&$result),$descriptor); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res,"$type"); + } +} +#endif + +%apply SWIGTYPE * { SWIGTYPE *const } + +/* ------------------------------------------------------------ + * --- Special typemaps --- + * ------------------------------------------------------------ */ + +/* DISOWN typemap */ + +%typemap(in, noblock=1) SWIGTYPE *DISOWN (int res = 0) { + res = SWIG_ConvertPtr($input, %as_voidptrptr(&$1), $descriptor, SWIG_POINTER_DISOWN | %convertptr_flags); + if (!SWIG_IsOK(res)) { + %argument_fail(res,"$type", $symname, $argnum); + } +} + +%typemap(varin) SWIGTYPE *DISOWN { + void *temp = 0; + int res = SWIG_ConvertPtr($input, &temp, $descriptor, SWIG_POINTER_DISOWN | %convertptr_flags); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = ($ltype) temp; +} + +/* DYNAMIC typemap */ + +%typemap(out,noblock=1) SWIGTYPE *DYNAMIC, SWIGTYPE &DYNAMIC { + %set_output(SWIG_NewPointerObj(%as_voidptr($1), SWIG_TypeDynamicCast($descriptor, %as_voidptrptr(&$1)), $owner | %newpointer_flags)); +} + +/* INSTANCE typemap */ + +%typemap(out,noblock=1) SWIGTYPE INSTANCE { + %set_output(SWIG_NewInstanceObj(%new_copy($1, $1_ltype), $&1_descriptor, SWIG_POINTER_OWN | %newinstance_flags)); +} + +%typemap(out,noblock=1) SWIGTYPE *INSTANCE, SWIGTYPE &INSTANCE, SWIGTYPE INSTANCE[] { + %set_output(SWIG_NewInstanceObj(%as_voidptr($1), $1_descriptor, $owner | %newinstance_flags)); +} + +%typemap(varout,noblock=1) SWIGTYPE *INSTANCE, SWIGTYPE INSTANCE[] { + %set_varoutput(SWIG_NewInstanceObj(%as_voidptr($1), $1_descriptor, %newinstance_flags)); +} + +%typemap(varout,noblock=1) SWIGTYPE &INSTANCE { + %set_varoutput(SWIG_NewInstanceObj(%as_voidptr($1), $1_descriptor, %newinstance_flags)); +} + +%typemap(varout,noblock=1) SWIGTYPE INSTANCE { + %set_varoutput(SWIG_NewInstanceObj(%as_voidptr(&$1), $&1_descriptor, %newinstance_flags)); +} + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/swigtypemaps.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/swigtypemaps.swg new file mode 100644 index 000000000..4e5bb2b04 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/swigtypemaps.swg @@ -0,0 +1,167 @@ +/* ----------------------------------------------------------------------------- + * swigtypemaps.swg + * + * Unified Typemap Library frontend + * ----------------------------------------------------------------------------- */ + +/* + This file provides the frontend to the Unified Typemap Library. + + When using this library in a SWIG target language, you need to + define a minimum set of fragments, specialize a couple of macros, + and then include this file. + + Typically you will create a 'mytypemaps.swg' file in each target + language, where you will have the following sections: + + === mytypemaps.swg === + + // Fragment section + %include <typemaps/fragments.swg> + <include target language fragments> + + // Unified typemap section + <specialized the typemap library macros> + %include <typemaps/swigtypemaps.swg> + + // Local typemap section + <add/replace extra target language typemaps> + + === mytypemaps.swg === + + While we add more docs, please take a look at the following cases + to see how you specialized the unified typemap library for a new + target language: + + Lib/python/pytypemaps.swg + Lib/tcl/tcltypemaps.swg + Lib/ruby/rubytypemaps.swg + Lib/perl5/perltypemaps.swg + +*/ + +#define SWIGUTL SWIGUTL + +/* ----------------------------------------------------------------------------- + * Language specialization section. + * + * Tune these macros for each language as needed. + * ----------------------------------------------------------------------------- */ + +/* + The SWIG target language object must be provided. + For example in python you define: + + #define SWIG_Object PyObject * +*/ + +#if !defined(SWIG_Object) +#error "SWIG_Object must be defined as the SWIG target language object" +#endif + +/*==== flags for new/convert methods ====*/ + + +#ifndef %convertptr_flags +%define %convertptr_flags 0 %enddef +#endif + +#ifndef %newpointer_flags +%define %newpointer_flags 0 %enddef +#endif + +#ifndef %newinstance_flags +%define %newinstance_flags 0 %enddef +#endif + +/*==== set output ====*/ + +#ifndef %set_output +/* simple set output operation */ +#define %set_output(obj) $result = obj +#endif + +/*==== set variable output ====*/ + +#ifndef %set_varoutput +/* simple set varoutput operation */ +#define %set_varoutput(obj) $result = obj +#endif + +/*==== append output ====*/ + +#ifndef %append_output +#if defined(SWIG_AppendOutput) +/* simple append operation */ +#define %append_output(obj) $result = SWIG_AppendOutput($result,obj) +#else +#error "Language must define SWIG_AppendOutput or %append_output" +#endif +#endif + +/*==== set constant ====*/ + +#ifndef %set_constant +#if defined(SWIG_SetConstant) +/* simple set constant operation */ +#define %set_constant(name,value) SWIG_SetConstant(name,value) +#else +#error "Language must define SWIG_SetConstant or %set_constant" +#endif +#endif + +/*==== raise an exception ====*/ + +#ifndef %raise +#if defined(SWIG_Raise) +/* simple raise operation */ +#define %raise(obj, type, desc) SWIG_Raise(obj, type, desc); SWIG_fail +#else +#error "Language must define SWIG_Raise or %raise" +#endif +#endif + +/*==== director output exception ====*/ + +#if defined(SWIG_DIRECTOR_TYPEMAPS) +#ifndef SWIG_DirOutFail +#define SWIG_DirOutFail(code, msg) Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(code), msg) +#endif +#endif + + +/* ----------------------------------------------------------------------------- + * Language independent definitions + * ----------------------------------------------------------------------------- */ + +#define %error_block(Block...) %block(Block) +#define %default_code(code) SWIG_ArgError(code) +#define %argument_fail(code, type, name, argn) SWIG_exception_fail(%default_code(code), %argfail_fmt(type, name, argn)) +#define %argument_nullref(type, name, argn) SWIG_exception_fail(SWIG_ValueError, %argnullref_fmt(type, name, argn)) +#define %variable_fail(code, type, name) SWIG_exception_fail(%default_code(code), %varfail_fmt(type, name)) +#define %variable_nullref(type, name) SWIG_exception_fail(SWIG_ValueError, %varnullref_fmt(type, name)) + +#if defined(SWIG_DIRECTOR_TYPEMAPS) +#define %dirout_fail(code, type) SWIG_DirOutFail(%default_code(code), %outfail_fmt(type)) +#define %dirout_nullref(type) SWIG_DirOutFail(SWIG_ValueError, %outnullref_fmt(type)) +#endif + +/* ----------------------------------------------------------------------------- + * All the typemaps + * ----------------------------------------------------------------------------- */ + + +%include <typemaps/fragments.swg> +%include <typemaps/exception.swg> +%include <typemaps/swigtype.swg> +%include <typemaps/void.swg> +%include <typemaps/swigobject.swg> +%include <typemaps/valtypes.swg> +%include <typemaps/ptrtypes.swg> +%include <typemaps/inoutlist.swg> +%include <typemaps/primtypes.swg> +%include <typemaps/string.swg> +%include <typemaps/misctypes.swg> +%include <typemaps/enumint.swg> + + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/typemaps.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/typemaps.swg new file mode 100644 index 000000000..4629e8dfa --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/typemaps.swg @@ -0,0 +1,157 @@ +/* ----------------------------------------------------------------------------- + * typemaps.swg + * + * Tcl Pointer handling + * + * These mappings provide support for input/output arguments and common + * uses for C/C++ pointers. + * ----------------------------------------------------------------------------- */ + +// INPUT typemaps. +// These remap a C pointer to be an "INPUT" value which is passed by value +// instead of reference. + +/* +The following methods can be applied to turn a pointer into a simple +"input" value. That is, instead of passing a pointer to an object, +you would use a real value instead. + + int *INPUT + short *INPUT + long *INPUT + long long *INPUT + unsigned int *INPUT + unsigned short *INPUT + unsigned long *INPUT + unsigned long long *INPUT + unsigned char *INPUT + bool *INPUT + float *INPUT + double *INPUT + +To use these, suppose you had a C function like this : + + double fadd(double *a, double *b) { + return *a+*b; + } + +You could wrap it with SWIG as follows : + + %include <typemaps.i> + double fadd(double *INPUT, double *INPUT); + +or you can use the %apply directive : + + %include <typemaps.i> + %apply double *INPUT { double *a, double *b }; + double fadd(double *a, double *b); + +*/ + +// OUTPUT typemaps. These typemaps are used for parameters that +// are output only. The output value is appended to the result as +// a list element. + +/* +The following methods can be applied to turn a pointer into an "output" +value. When calling a function, no input value would be given for +a parameter, but an output value would be returned. In the case of +multiple output values, they are returned in the form of a Tcl tuple. + + int *OUTPUT + short *OUTPUT + long *OUTPUT + long long *OUTPUT + unsigned int *OUTPUT + unsigned short *OUTPUT + unsigned long *OUTPUT + unsigned long long *OUTPUT + unsigned char *OUTPUT + bool *OUTPUT + float *OUTPUT + double *OUTPUT + +For example, suppose you were trying to wrap the modf() function in the +C math library which splits x into integral and fractional parts (and +returns the integer part in one of its parameters).K: + + double modf(double x, double *ip); + +You could wrap it with SWIG as follows : + + %include <typemaps.i> + double modf(double x, double *OUTPUT); + +or you can use the %apply directive : + + %include <typemaps.i> + %apply double *OUTPUT { double *ip }; + double modf(double x, double *ip); + +The Tcl output of the function would be a tuple containing both +output values. + +*/ + +// INOUT +// Mappings for an argument that is both an input and output +// parameter + +/* +The following methods can be applied to make a function parameter both +an input and output value. This combines the behavior of both the +"INPUT" and "OUTPUT" methods described earlier. Output values are +returned in the form of a Tcl tuple. + + int *INOUT + short *INOUT + long *INOUT + long long *INOUT + unsigned int *INOUT + unsigned short *INOUT + unsigned long *INOUT + unsigned long long *INOUT + unsigned char *INOUT + bool *INOUT + float *INOUT + double *INOUT + +For example, suppose you were trying to wrap the following function : + + void neg(double *x) { + *x = -(*x); + } + +You could wrap it with SWIG as follows : + + %include <typemaps.i> + void neg(double *INOUT); + +or you can use the %apply directive : + + %include <typemaps.i> + %apply double *INOUT { double *x }; + void neg(double *x); + +Unlike C, this mapping does not directly modify the input value (since +this makes no sense in Tcl). Rather, the modified input value shows +up as the return value of the function. Thus, to apply this function +to a Tcl variable you might do this : + + x = neg(x) + +Note : previous versions of SWIG used the symbol 'BOTH' to mark +input/output arguments. This is still supported, but will be slowly +phased out in future releases. + +*/ + + +#if defined(SWIG_INOUT_NODEF) + +%apply_checkctypes(%typemaps_inoutn) + +%apply size_t& { std::size_t& }; +%apply ptrdiff_t& { std::ptrdiff_t& }; + +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/valtypes.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/valtypes.swg new file mode 100644 index 000000000..11eac5985 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/valtypes.swg @@ -0,0 +1,215 @@ +/*--------------------------------------------------------------------- + * Value typemaps (Type, const Type&) for value types, such as + * fundamental types (int, double), that define the AsVal/From + * methods. + * + * To apply them, just use one of the following macros: + * + * %typemaps_from(FromMeth, FromFrag, Type) + * %typemaps_asval(CheckCode, AsValMeth, AsValFrag, Type) + * %typemaps_asvalfrom(CheckCode, AsValMeth, FromMeth, AsValFrag, FromFrag, Type) + * + * or the simpler and normalize form: + * + * %typemaps_asvalfromn(CheckCode, Type) + * + * Also, you can use the individual typemap definitions: + * + * %value_in_typemap(asval_meth,frag,Type) + * %value_varin_typemap(asval_meth,frag,Type) + * %value_typecheck_typemap(checkcode,asval_meth,frag,Type) + * %value_directorout_typemap(asval_meth,frag,Type) + * + * %value_out_typemap(from_meth,frag,Type) + * %value_varout_typemap(from_meth,frag,Type) + * %value_constcode_typemap(from_meth,frag,Type) + * %value_directorin_typemap(from_meth,frag,Type) + * %value_throws_typemap(from_meth,frag,Type) + * + *---------------------------------------------------------------------*/ + +/* in */ + +%define %value_in_typemap(asval_meth,frag,Type...) + %typemap(in,noblock=1,fragment=frag) Type (Type val, int ecode = 0) { + ecode = asval_meth($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$ltype", $symname, $argnum); + } + $1 = %static_cast(val,$ltype); + } + %typemap(freearg) Type ""; + %typemap(in,noblock=1,fragment=frag) const Type & ($*ltype temp, Type val, int ecode = 0) { + ecode = asval_meth($input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$*ltype", $symname, $argnum); + } + temp = %static_cast(val, $*ltype); + $1 = &temp; + } + %typemap(freearg) const Type& ""; +%enddef + +/* out */ + +%define %value_out_typemap(from_meth,frag,Type...) + %typemap(out,noblock=1,fragment=frag) Type, const Type { + %set_output(from_meth(%static_cast($1,Type))); + } + %typemap(out,noblock=1,fragment=frag) const Type& { + %set_output(from_meth(%static_cast(*$1,Type))); + } +%enddef + +/* varin */ + +%define %value_varin_typemap(asval_meth,frag,Type...) + %typemap(varin,fragment=frag) Type { + Type val; + int res = asval_meth($input, &val); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = %static_cast(val,$ltype); + } +%enddef + +/* varout */ + +%define %value_varout_typemap(from_meth,frag,Type...) + %typemap(varout,noblock=1,fragment=frag) Type, const Type& { + %set_varoutput(from_meth(%static_cast($1,Type))); + } +%enddef + +/* constant installation code */ + +%define %value_constcode_typemap(from_meth,frag,Type...) + %typemap(constcode,noblock=1,fragment=frag) Type { + %set_constant("$symname", from_meth(%static_cast($value,Type))); + } +%enddef + + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%define %value_directorin_typemap(from_meth,frag,Type...) + %typemap(directorin,noblock=1,fragment=frag) Type *DIRECTORIN { + $input = from_meth(%static_cast(*$1,Type)); + } + %typemap(directorin,noblock=1,fragment=frag) Type, const Type& { + $input = from_meth(%static_cast($1,Type)); + } +%enddef + +/* directorout */ + +%define %value_directorout_typemap(asval_meth,frag,Type...) + %typemap(directorargout,noblock=1,fragment=frag) Type *DIRECTOROUT(Type swig_val, int swig_res) { + swig_res = asval_meth($result, &swig_val); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + *$1 = swig_val; + } + %typemap(directorout,noblock=1,fragment=frag) Type { + Type swig_val; + int swig_res = asval_meth($input, &swig_val); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + $result = %static_cast(swig_val,$type); + } + %typemap(directorout,noblock=1,fragment=frag,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) const Type& { + Type swig_val; + int swig_res = asval_meth($input, &swig_val); + if (!SWIG_IsOK(swig_res)) { + %dirout_fail(swig_res, "$type"); + } + $basetype *temp = new $basetype(($basetype)swig_val); + swig_acquire_ownership(temp); + $result = temp; + } + %typemap(directorfree,noblock=1) const Type & { + if (director) { + director->swig_release_ownership(%as_voidptr($input)); + } + } + %typemap(directorout,fragment=frag) Type &DIRECTOROUT = Type +%enddef + +#else + +#define %value_directorin_typemap(from_meth,frag,Type...) +#define %value_directorout_typemap(asval_meth,frag,Type...) + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + + +/* throws */ + +%define %value_throws_typemap(from_meth,frag,Type...) + %typemap(throws,noblock=1,fragment=frag) Type { + %raise(from_meth(%static_cast($1,Type)), "$type", 0); + } +%enddef + +/* typecheck */ + +%define %value_typecheck_typemap(check,asval_meth,frag,Type...) + %typemap(typecheck,precedence=check,fragment=frag) Type, const Type& { + int res = asval_meth($input, NULL); + $1 = SWIG_CheckState(res); + } +%enddef + +/*--------------------------------------------------------------------- + * typemap definition for types with AsVal methods + *---------------------------------------------------------------------*/ +%define %typemaps_asval(CheckCode, AsValMeth, AsValFrag, Type...) + %value_in_typemap(%arg(AsValMeth), %arg(AsValFrag), Type); + %value_varin_typemap(%arg(AsValMeth), %arg(AsValFrag), Type); + %value_directorout_typemap(%arg(AsValMeth), %arg(AsValFrag), Type); + %value_typecheck_typemap(%arg(CheckCode), %arg(AsValMeth), %arg(AsValFrag), Type); + %value_input_typemap(%arg(CheckCode), %arg(AsValMeth), %arg(AsValFrag), Type); +%enddef + + +/*--------------------------------------------------------------------- + * typemap definition for types with from method + *---------------------------------------------------------------------*/ +%define %typemaps_from(FromMeth, FromFrag, Type...) + %value_out_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %value_varout_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %value_constcode_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %value_directorin_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %value_throws_typemap(%arg(FromMeth), %arg(FromFrag), Type); + %value_output_typemap(%arg(FromMeth), %arg(FromFrag), Type); +%enddef + + +/*--------------------------------------------------------------------- + * typemap definition for types with alval/from method + *---------------------------------------------------------------------*/ + +%define %typemaps_asvalfrom(CheckCode, AsValMeth, FromMeth, + AsValFrag, FromFrag, Type...) + %typemaps_asval(%arg(CheckCode), %arg(AsValMeth), %arg(AsValFrag), Type); + %typemaps_from(%arg(FromMeth), %arg(FromFrag), Type); + %value_inout_typemap(Type); +%enddef + + +/*--------------------------------------------------------------------- + * typemap definition for types with for 'normalized' asval/from methods + *---------------------------------------------------------------------*/ +%define %typemaps_asvalfromn(CheckCode, Type...) + %typemaps_asvalfrom(%arg(CheckCode), + SWIG_AsVal(Type), + SWIG_From(Type), + %arg(SWIG_AsVal_frag(Type)), + %arg(SWIG_From_frag(Type)), + Type); +%enddef diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/void.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/void.swg new file mode 100644 index 000000000..bbd68ed87 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/void.swg @@ -0,0 +1,84 @@ +/* ------------------------------------------------------------ + * Void * - Accepts any kind of pointer + * ------------------------------------------------------------ */ + +/* in */ + +%typemap(in,noblock=1) void * (int res) { + res = SWIG_ConvertPtr($input,%as_voidptrptr(&$1), 0, $disown); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "$type", $symname, $argnum); + } +} +%typemap(freearg) void * ""; + +%typemap(in,noblock=1) void * const& ($*ltype temp = 0, int res) { + res = SWIG_ConvertPtr($input, %as_voidptrptr(&temp), 0, $disown); + if (!SWIG_IsOK(res)) { + %argument_fail(res, "Stype", $symname, $argnum); + } + $1 = &temp; +} +%typemap(freearg) void * const& ""; + + +/* out */ + +#if defined(VOID_Object) +%typemap(out,noblock=1) void { $result = VOID_Object; } +#else +%typemap(out,noblock=1) void {} +#endif + +/* varin */ + +%typemap(varin) void * { + void *temp = 0; + int res = SWIG_ConvertPtr($input, &temp, 0, SWIG_POINTER_DISOWN); + if (!SWIG_IsOK(res)) { + %variable_fail(res, "$type", "$name"); + } + $1 = ($1_ltype) temp; +} + +/* typecheck */ + +%typecheck(SWIG_TYPECHECK_VOIDPTR, noblock=1) void * +{ + void *ptr = 0; + int res = SWIG_ConvertPtr($input, &ptr, 0, 0); + $1 = SWIG_CheckState(res); +} + +#if defined(SWIG_DIRECTOR_TYPEMAPS) + +/* directorin */ + +%typemap(directorin,noblock=1) void *, void const*, void *const, void const *const, + void const *&, void *const &, void const *const & { + $input = SWIG_NewPointerObj(%as_voidptr($1), $descriptor, %newpointer_flags); +} + +/* directorout */ + +%typemap(directorout,noblock=1) void * (void *argp, int res) { + res = SWIG_ConvertPtr($input, &argp, 0, 0); + if (!SWIG_IsOK(res)) { + %dirout_fail(res,"$type"); + } + $result = %reinterpret_cast(argp, $ltype); +} + +%typemap(directorout,noblock=1,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) void * const& (void *argp, int res) { + res = SWIG_ConvertPtr($input, &argp, 0, $disown); + if (!SWIG_IsOK(res)) { + %dirout_fail(res,"$type"); + } + static $*ltype temp = %reinterpret_cast(argp, $*ltype); + $result = &temp; +} + + + +#endif /* SWIG_DIRECTOR_TYPEMAPS */ + diff --git a/qrenderdoc/3rdparty/swig/Lib/typemaps/wstring.swg b/qrenderdoc/3rdparty/swig/Lib/typemaps/wstring.swg new file mode 100644 index 000000000..cd409d1ce --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/typemaps/wstring.swg @@ -0,0 +1,37 @@ +%ensure_fragment(SWIG_AsWCharPtrAndSize) +%ensure_fragment(SWIG_FromWCharPtrAndSize) + + +%types(wchar_t *); + +%fragment("SWIG_pwchar_descriptor","header") { +SWIGINTERN swig_type_info* +SWIG_pwchar_descriptor() +{ + static int init = 0; + static swig_type_info* info = 0; + if (!init) { + info = SWIG_TypeQuery("_p_wchar_t"); + init = 1; + } + return info; +} +} + +%fragment("SWIG_wcsnlen","header",fragment="SWIG_FromWCharPtrAndSize") { +SWIGINTERN size_t +SWIG_wcsnlen(const wchar_t* s, size_t maxlen) +{ + const wchar_t *p; + for (p = s; maxlen-- && *p; p++) + ; + return p - s; +} +} + +%include <typemaps/strings.swg> +%typemaps_string(%checkcode(UNISTRING), %checkcode(UNICHAR), + wchar_t, WChar, SWIG_AsWCharPtrAndSize, SWIG_FromWCharPtrAndSize, + wcslen, SWIG_wcsnlen, + "<wchar.h>", WCHAR_MIN, WCHAR_MAX) + diff --git a/qrenderdoc/3rdparty/swig/Lib/wchar.i b/qrenderdoc/3rdparty/swig/Lib/wchar.i new file mode 100644 index 000000000..14de34634 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/wchar.i @@ -0,0 +1,11 @@ +/* ----------------------------------------------------------------------------- + * wchar.i + * ----------------------------------------------------------------------------- */ + +/* + wchar_t not supported, unless otherwise specified in the target language. +*/ + +#if defined(SWIG_WCHAR) +#undef SWIG_WCHAR +#endif diff --git a/qrenderdoc/3rdparty/swig/Lib/windows.i b/qrenderdoc/3rdparty/swig/Lib/windows.i new file mode 100644 index 000000000..2c093dacc --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/windows.i @@ -0,0 +1,149 @@ +/* ----------------------------------------------------------------------------- + * windows.i + * + * SWIG library file to support types found in windows.h as well as Microsoft + * integral type extensions. The types are set for 32 bit Windows. + * ----------------------------------------------------------------------------- */ + +// Support for non ISO (Windows) integral types +%apply unsigned char { unsigned __int8 }; +%apply const unsigned char& { const unsigned __int8& }; + +%apply signed char { __int8 }; +%apply const signed char& { const __int8& }; + +%apply unsigned short { unsigned __int16 }; +%apply const unsigned short& { const unsigned __int16& }; + +%apply short { __int16 }; +%apply const short& { const __int16& }; + +%apply unsigned int { unsigned __int32 }; +%apply const unsigned int& { const unsigned __int32& }; + +%apply int { __int32 }; +%apply const int& { const __int32& }; + +%apply unsigned long long { unsigned __int64 }; +%apply const unsigned long long& { const unsigned __int64& }; + +%apply long long { __int64 }; +%apply const long long& { const __int64& }; + + +// Workaround Microsoft calling conventions +#define __cdecl +#define __fastcall +#define __far +#define __forceinline +#define __fortran +#define __inline +#define __pascal +#define __stdcall +#define __syscall +#define _cdecl +#define _fastcall +#define _inline +#define _pascal +#define _stdcall +#define WINAPI +#define __declspec(WINDOWS_EXTENDED_ATTRIBUTE) + +#define __w64 + +// Types from windef.h +typedef unsigned long ULONG; +typedef ULONG *PULONG; +typedef unsigned short USHORT; +typedef USHORT *PUSHORT; +typedef unsigned char UCHAR; +typedef UCHAR *PUCHAR; +typedef char *PSZ; +typedef unsigned long DWORD; +typedef int BOOL; +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef float FLOAT; +typedef FLOAT *PFLOAT; +typedef BOOL *PBOOL; +typedef BOOL *LPBOOL; +typedef BYTE *PBYTE; +typedef BYTE *LPBYTE; +typedef int *PINT; +typedef int *LPINT; +typedef WORD *PWORD; +typedef WORD *LPWORD; +typedef long *LPLONG; +typedef DWORD *PDWORD; +typedef DWORD *LPDWORD; +typedef void *LPVOID; +typedef const void *LPCVOID; +typedef int INT; +typedef unsigned int UINT; +typedef unsigned int *PUINT; + +// Types from basetsd.h +typedef signed char INT8, *PINT8; +typedef signed short INT16, *PINT16; +typedef signed int INT32, *PINT32; +typedef signed __int64 INT64, *PINT64; +typedef unsigned char UINT8, *PUINT8; +typedef unsigned short UINT16, *PUINT16; +typedef unsigned int UINT32, *PUINT32; +typedef unsigned __int64 UINT64, *PUINT64; +typedef signed int LONG32, *PLONG32; +typedef unsigned int ULONG32, *PULONG32; +typedef unsigned int DWORD32, *PDWORD32; +typedef __w64 int INT_PTR, *PINT_PTR; +typedef __w64 unsigned int UINT_PTR, *PUINT_PTR; +typedef __w64 long LONG_PTR, *PLONG_PTR; +typedef __w64 unsigned long ULONG_PTR, *PULONG_PTR; +typedef unsigned short UHALF_PTR, *PUHALF_PTR; +typedef short HALF_PTR, *PHALF_PTR; +typedef __w64 long SHANDLE_PTR; +typedef __w64 unsigned long HANDLE_PTR; +typedef ULONG_PTR SIZE_T, *PSIZE_T; +typedef LONG_PTR SSIZE_T, *PSSIZE_T; +typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; +typedef __int64 LONG64, *PLONG64; +typedef unsigned __int64 ULONG64, *PULONG64; +typedef unsigned __int64 DWORD64, *PDWORD64; + +// Types from winnt.h +typedef void *PVOID; +typedef void *PVOID64; +typedef char CHAR; +typedef short SHORT; +typedef long LONG; +typedef CHAR *PCHAR; +typedef CHAR *LPCH, *PCH; +typedef const CHAR *LPCCH, *PCCH; +typedef CHAR *NPSTR; +typedef CHAR *LPSTR, *PSTR; +typedef const CHAR *LPCSTR, *PCSTR; +typedef char TCHAR, *PTCHAR; +typedef unsigned char TBYTE , *PTBYTE ; +typedef LPSTR LPTCH, PTCH; +typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR; +typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR; +typedef SHORT *PSHORT; +typedef LONG *PLONG; +typedef void *HANDLE; +typedef HANDLE *PHANDLE; +typedef BYTE FCHAR; +typedef WORD FSHORT; +typedef DWORD FLONG; +typedef LONG HRESULT; +typedef char CCHAR; +typedef DWORD LCID; +typedef PDWORD PLCID; +typedef WORD LANGID; +typedef __int64 LONGLONG; +typedef unsigned __int64 ULONGLONG; +typedef LONGLONG *PLONGLONG; +typedef ULONGLONG *PULONGLONG; +typedef ULONGLONG DWORDLONG; +typedef DWORDLONG *PDWORDLONG; +typedef BYTE BOOLEAN; +typedef BOOLEAN *PBOOLEAN; + diff --git a/qrenderdoc/3rdparty/swig/Lib/xml/typemaps.i b/qrenderdoc/3rdparty/swig/Lib/xml/typemaps.i new file mode 100644 index 000000000..297361355 --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/xml/typemaps.i @@ -0,0 +1,3 @@ +// -------------------------------------------------------------------- +// Empty file for %include to work +// -------------------------------------------------------------------- diff --git a/qrenderdoc/3rdparty/swig/Lib/xml/xml.swg b/qrenderdoc/3rdparty/swig/Lib/xml/xml.swg new file mode 100644 index 000000000..c7bdbad0c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/Lib/xml/xml.swg @@ -0,0 +1 @@ +/* nothing special */ \ No newline at end of file diff --git a/qrenderdoc/3rdparty/swig/README.md b/qrenderdoc/3rdparty/swig/README.md new file mode 100644 index 000000000..4ffd7715e --- /dev/null +++ b/qrenderdoc/3rdparty/swig/README.md @@ -0,0 +1,158 @@ +RenderDoc Note +============== + +This distribution of swig is built from +https://github.com/baldurk/swig at branch renderdoc-3.0.12 @ commit +8470a7594ce15c67450fa61ef701f8ba630f4220. + +The source modifications can be seen above and the swig.exe here can +be regenerated by recompiling on that branch. + +The Lib/ folder is distributed under a more permissive license as +seen in LICENSE, it is unmodified except to remove unused languages. + + + +SWIG (Simplified Wrapper and Interface Generator) + +Version: 3.0.12 (27 Jan 2017) + +Tagline: SWIG is a compiler that integrates C and C++ with languages + including Perl, Python, Tcl, Ruby, PHP, Java, C#, D, Go, Lua, + Octave, R, Scheme (Guile, MzScheme/Racket, CHICKEN), Scilab, + Ocaml, Modula-3, Common Lisp (CLISP, Allegro CL, CFFI, UFFI) + and Pike. SWIG can also export its parse tree into XML and + Lisp s-expressions. + +SWIG reads annotated C/C++ header files and creates wrapper code (glue +code) in order to make the corresponding C/C++ libraries available to +the listed languages, or to extend C/C++ programs with a scripting +language. + +Up-to-date SWIG related information can be found at + + http://www.swig.org + +A SWIG FAQ and other hints can be found on the SWIG Wiki: + + https://github.com/swig/swig/wiki + +License +======= +Please see the LICENSE file for details of the SWIG license. For +further insight into the license including the license of SWIG's +output code, please visit + + http://www.swig.org/legal.html + +Release Notes +============= +Please see the CHANGES.current file for a detailed list of bug fixes and +new features for the current release. The CHANGES file contains bug fixes +and new features for older versions. A summary of changes in each release +can be found in the RELEASENOTES file. + +Documentation +============= +The Doc/Manual directory contains the most recent set of updated +documentation for this release. The documentation is available in +three different formats, each of which contains identical content. +These format are, pdf (Doc/Manual/SWIGDocumentation.pdf), single +page html (Doc/Manual/SWIGDocumentation.html) or multiple page html +(other files in Doc/Manual). Please select your chosen format and +copy/install to wherever takes your fancy. + +There is some technical developer documentation available in the +Doc/Devel subdirectory. This is not necessarily up-to-date, but it +has some information on SWIG internals. + +Documentation is also online at http://www.swig.org/doc.html. + +Backwards Compatibility +======================= +The developers strive their best to preserve backwards compatibility +between releases, but this is not always possible as the overriding +aim is to provide the best wrapping experience. Where backwards +compatibility is known to be broken, it is clearly marked as an +incompatibility in the CHANGES and CHANGES.current files. + +See the documentation for details of the SWIG_VERSION preprocessor +symbol if you have backward compatibility issues and need to use more +than one version of SWIG. + +Installation +============ +Please read the Doc/Manual/Preface.html#Preface_installation for +full installation instructions for Windows, Unix and Mac OS X +using the release tarball/zip file. The INSTALL file has generic +build and installation instructions for Unix users. +Users wishing to build and install code from Github should +visit http://swig.org/svn.html to obtain the more detailed +instructions required for building code obtained from Github - extra +steps are required compared to building from the release tarball. + +Testing +======= +The typical 'make -k check' can be performed on Unix operating systems. +Please read Doc/Manual/Preface.html#Preface_testing for details. + +Examples +======== +The Examples directory contains a variety of examples of using SWIG +and it has some browsable documentation. Simply point your browser to +the file "Example/index.html". + +The Examples directory also includes Visual C++ project 6 (.dsp) files for +building some of the examples on Windows. Later versions of Visual Studio +will convert these old style project files into a current solution file. + +Known Issues +============ +There are minor known bugs, details of which are in the bug tracker, see +http://www.swig.org/bugs.html. + +Troubleshooting +=============== +In order to operate correctly, SWIG relies upon a set of library +files. If after building SWIG, you get error messages like this, + + $ swig foo.i + :1. Unable to find 'swig.swg' + :3. Unable to find 'tcl8.swg' + +it means that SWIG has either been incorrectly configured or +installed. To fix this: + + 1. Make sure you remembered to do a 'make install' and that + the installation actually worked. Make sure you have + write permission on the install directory. + + 2. If that doesn't work, type 'swig -swiglib' to find out + where SWIG thinks its library is located. + + 3. If the location is not where you expect, perhaps + you supplied a bad option to configure. Use + ./configure --prefix=pathname to set the SWIG install + location. Also, make sure you don't include a shell + escape character such as ~ when you specify the path. + + 4. The SWIG library can be changed by setting the SWIG_LIB + environment variable. However, you really shouldn't + have to do this. + +If you are having other troubles, you might look at the SWIG Wiki at +https://github.com/swig/swig/wiki. + +Participate! +============ +Please report any errors and submit patches (if possible)! We only +have access to a limited variety of hardware (Linux, Solaris, OS-X, +and Windows). All contributions help. + +If you would like to join the SWIG development team or contribute a +language module to the distribution, please contact the swig-devel +mailing list, details at http://www.swig.org/mail.html. + + + -- The SWIG Maintainers + diff --git a/qrenderdoc/3rdparty/swig/RELEASENOTES b/qrenderdoc/3rdparty/swig/RELEASENOTES new file mode 100644 index 000000000..5f6560c3c --- /dev/null +++ b/qrenderdoc/3rdparty/swig/RELEASENOTES @@ -0,0 +1,419 @@ +This file contains a brief overview of the changes made in each release. +A detailed description of changes are available in the CHANGES.current +and CHANGES files. + +Release Notes +============= +Detailed release notes are available with the release and are also +published on the SWIG web site at http://swig.org/release.html. + +SWIG-3.0.12 summary: +- Add support for Octave-4.2. +- Enhance %extend to support template functions. +- Language specific enhancements and fixes for C#, D, Guile, Java, PHP7. + +SWIG-3.0.11 summary: +- PHP 7 support added. +- C++11 alias templates and type aliasing support added. +- Minor fixes and enhancements for C# Go Guile Java Javascript Octave + PHP Python R Ruby Scilab XML. + +SWIG-3.0.10 summary: +- Regression fixes for smart pointers and importing Python modules. + +SWIG-3.0.9 summary: +- Add support for Python's implicit namespace packages. +- Fixes to support Go 1.6. +- C++11 std::array support added for Java. +- Improved C++ multiple inheritance support for Java/C# wrappers. +- Various other minor fixes and improvements for C#, D, Go, Java, + Javascript, Lua, Python, R, Ruby, Scilab. + +SWIG-3.0.8 summary: +- pdf documentation enhancements. +- Various Python 3.5 issues fixed. +- std::array support added for Ruby and Python. +- shared_ptr support added for Ruby. +- Minor improvements for CFFI, Go, Java, Perl, Python, Ruby. + +SWIG-3.0.7 summary: +- Add support for Octave-4.0.0. +- Remove potential Android security exploit in generated Java classes. +- Minor new features and bug fixes. + +SWIG-3.0.6 summary: +- Stability and regression fixes. +- Fixed parsing of C++ corner cases. +- Language improvements and bug fixes for C#, Go, Java, Lua, Python, R. + +SWIG-3.0.5 summary: +- Added support for Scilab. +- Important Python regression fix when wrapping C++ default arguments. +- Minor improvements for C#, Go, Octave, PHP and Python. + +SWIG-3.0.4 summary: +- Python regression fix when wrapping C++ default arguments. +- Improved error messages. + +SWIG-3.0.3 summary: +- Add support for C++11 strongly typed enumerations. +- Numerous bug fixes and minor enhancements for C#, D, Go, Java, + Javascript, PHP, Perl and Python wrappers. + +SWIG-3.0.2 summary: +- Bug fix during install and a couple of other minor changes. + +SWIG-3.0.1 summary: +- Javascript module added. This supports JavascriptCore (Safari/Webkit), + v8 (Chromium) and node.js currently. +- A few notable regressions introduced in 3.0.0 have been fixed - in + Lua, nested classes and parsing of operator <<. +- The usual round of bug fixes and minor improvements for: + C#, GCJ, Go, Java, Lua, PHP and Python. + +SWIG-3.0.0 summary: +- This is a major new release focusing primarily on C++ improvements. +- C++11 support added. Please see documentation for details of supported + features: http://www.swig.org/Doc3.0/CPlusPlus11.html +- Nested class support added. This has been taken full advantage of in + Java and C#. Other languages can use the nested classes, but require + further work for a more natural integration into the target language. + We urge folk knowledgeable in the other target languages to step + forward and help with this effort. +- Lua: improved metatables and support for %nspace. +- Go 1.3 support added. +- Python import improvements including relative imports. +- Python 3.3 support completed. +- Perl director support added. +- C# .NET 2 support is now the minimum. Generated using statements are + replaced by fully qualified names. +- Bug fixes and improvements to the following languages: + C#, Go, Guile, Java, Lua, Perl, PHP, Python, Octave, R, Ruby, Tcl +- Various other bug fixes and improvements affecting all languages. +- Note that this release contains some backwards incompatible changes + in some languages. +- Full detailed release notes are in the changes file. + +SWIG-2.0.12 summary: +- This is a maintenance release backporting some fixes from the pending + 3.0.0 release. +- Octave 3.8 support added. +- C++11 support for new versions of erase/insert in the STL containers. +- Compilation fixes on some systems for the generated Lua, PHP, Python + and R wrappers. + +SWIG-2.0.11 summary: +- Minor bug fixes and enhancements mostly in Python, but also + C#, Lua, Ocaml, Octave, Perl, PHP, Python, R, Ruby, Tcl. + +SWIG-2.0.10 summary: +- Ruby 1.9 support is now complete. +- Add support for Guile 2.0 and Guile 1.6 support (GH interface) has + been dropped. +- Various small language neutral improvements and fixes. +- Various bug fixes and minor improvements specific to C#, CFFI, D, + Java, Octave, PHP, Python, +- Minor bug fix in ccache-swig. +- Development has moved to Github with Travis continuous integration + testing - patches using https://github.com/swig/swig are welcome. + +SWIG-2.0.9 summary: +- Improved typemap matching. +- Ruby 1.9 support is much improved. +- Various bug fixes and minor improvements in C#, CFFI, Go, Java, + Modula3, Octave, Perl, Python, R, Ruby, Tcl and in ccache-swig. + +SWIG-2.0.8 summary: +- Fix a couple of regressions introduced in 2.0.5 and 2.0.7. +- Improved using declarations and using directives support. +- Minor fixes/enhancements for C#, Java, Octave, Perl and Python. + +SWIG-2.0.7 summary: +- Important regression fixes since 2.0.5 for typemaps in general and + in Python. +- Fixes and enhancements for Go, Java, Octave and PHP. + +SWIG-2.0.6 summary: +- Regression fix for Python STL wrappers on some systems. + +SWIG-2.0.5 summary: +- Official Android support added including documentation and examples. +- Improvements involving templates: + 1) Various fixes with templates and typedef types. + 2) Some template lookup problems fixed. + 3) Templated type fixes to use correct typemaps. +- Autodoc documentation generation improvements. +- Python STL container wrappers improvements including addition of + stepped slicing. +- Approximately 70 fixes and minor enhancements for the following + target languages: AllegroCL, C#, D, Go, Java, Lua, Ocaml, Octave, + Perl, PHP, Python, R, Ruby, Tcl, Xml. + +SWIG-2.0.4 summary: +- This is mainly a Python oriented release including support for Python + built-in types for superior performance with the new -builtin option. + The -builtin option is especially suitable for performance-critical + libraries and applications that call wrapped methods repeatedly. + See the python-specific chapter of the SWIG manual for more info. +- Python 3.2 support has also been added and various Python bugs have + been fixed. +- Octave 3.4 support has also been added. +- There are also the usual minor generic improvements, as well as bug + fixes and enhancements for D, Guile, Lua, Octave, Perl and Tcl. + +SWIG-2.0.3 summary: +- A bug fix release including a couple of fixes for regressions in the + 2.0 series. + +SWIG-2.0.2 summary: +- Support for the D language has been added. +- Various bug fixes and minor enhancements. +- Bug fixes particular to the Clisp, C#, Go, MzScheme, Ocaml, PHP, R, + Ruby target languages. + +SWIG-2.0.1 summary: +- Support for the Go language has been added. +- New regular expression (regex) encoder for renaming symbols based on + the Perl Compatible Regular Expressions (PCRE) library. +- Numerous fixes in reporting file and line numbers in error and warning + messages. +- Various bug fixes and improvements in the C#, Lua, Perl, PHP, Ruby + and Python language modules. + +SWIG-2.0.0 summary: +- License changes, see LICENSE file and http://www.swig.org/legal.html. +- Much better nested class/struct support. +- Much improved template partial specialization and explicit + specialization handling. +- Namespace support improved with the 'nspace' feature where namespaces + can be automatically translated into Java packages or C# namespaces. +- Improved typemap and symbol table debugging. +- Numerous subtle typemap matching rule changes when using the default + (SWIGTYPE) type. These now work much like C++ class template partial + specialization matching. +- Other small enhancements for typemaps. Typemap fragments are also now + official and documented. +- Warning and error display refinements. +- Wrapping of shared_ptr is improved and documented now. +- Numerous C++ unary scope operator (::) fixes. +- Better support for boolean expressions. +- Various bug fixes and improvements in the Allegrocl, C#, Java, Lua, + Octave, PHP, Python, R, Ruby and XML modules. + +SWIG-1.3.40 summary: +- SWIG now supports directors for PHP. +- PHP support improved in general. +- Octave 3.2 support added. +- Various bug fixes/enhancements for Allegrocl, C#, Java, Octave, Perl, + Python, Ruby and Tcl. +- Other generic fixes and minor new features. + +SWIG-1.3.39 summary: +- Some new small feature enhancements. +- Improved C# std::vector wrappers. +- Bug fixes: mainly Python, but also Perl, MzScheme, CFFI, Allegrocl + and Ruby + +SWIG-1.3.38 summary: +- Output directory regression fix and other minor bug fixes + +SWIG-1.3.37 summary: +- Python 3 support added +- SWIG now ships with a version of ccache that can be used with SWIG. + This enables the files generated by SWIG to be cached so that repeated + use of SWIG on unchanged input files speeds up builds quite considerably. +- PHP 4 support removed and PHP support improved in general +- Improved C# array support +- Numerous Allegro CL improvements +- Bug fixes/enhancements for Python, PHP, Java, C#, Chicken, Allegro CL, + CFFI, Ruby, Tcl, Perl, R, Lua. +- Other minor generic bug fixes and enhancements + +SWIG-1.3.36 summary: +- Enhancement to directors to wrap all protected members +- Optimisation feature for objects returned by value +- A few bugs fixes in the PHP, Java, Ruby, R, C#, Python, Lua and + Perl modules +- Other minor generic bug fixes + +SWIG-1.3.35 summary: +- Octave language module added +- Bug fixes in Python, Lua, Java, C#, Perl modules +- A few other generic bugs and runtime assertions fixed + +SWIG-1.3.34 summary: +- shared_ptr support for Python +- Support for latest R - version 2.6 +- Various minor improvements/bug fixes for R, Lua, Python, Java, C# +- A few other generic bug fixes, mainly for templates and using statements + +SWIG-1.3.33 summary: +- Fix regression for Perl where C++ wrappers would not compile +- Fix regression parsing macros + +SWIG-1.3.32 summary: +- shared_ptr support for Java and C# +- Enhanced STL support for Ruby +- Windows support for R +- Fixed long-standing memory leak in PHP Module +- Numerous fixes and minor enhancements for Allegrocl, C#, cffi, Chicken, Guile, + Java, Lua, Ocaml, Perl, PHP, Python, Ruby, Tcl. +- Improved warning support + +SWIG-1.3.31 summary: +- Python modern classes regression fix + +SWIG-1.3.30 summary: +- Python-2.5 support +- New language module: R +- Director support added for C# +- Numerous director fixes and improvements +- Improved mingw/msys support +- Better constants support in Guile and chicken modules +- Support for generating PHP5 class wrappers +- Important Java premature garbage collection fix +- Minor improvements/fixes in cffi, php, allegrocl, perl, chicken, lua, ruby, + ocaml, python, java, c# and guile language modules +- Many many other bug fixes + +SWIG-1.3.29 summary: +- Numerous important bug fixes +- Few minor new features +- Some performance improvements in generated code for Python + +SWIG-1.3.28 summary: +- More powerful renaming (%rename) capability. +- More user friendly warning handling. +- Add finer control for default constructors and destructors. We discourage + the use of the 'nodefault' option, which disables both constructors and + destructors, leading to possible memory leaks. Use instead 'nodefaultctor' + and/or 'nodefaultdtor'. +- Automatic copy constructor wrapper generation via the 'copyctor' option/feature. +- Better handling of Windows extensions and types. +- Better runtime error reporting. +- Add the %catches directive to catch and dispatch exceptions. +- Add the %naturalvar directive for more 'natural' variable wrapping. +- Better default handling of std::string variables using the %naturalvar directive. +- Add the %allowexcept and %exceptionvar directives to handle exceptions when + accessing a variable. +- Add the %delobject directive to mark methods that act like destructors. +- Add the -fastdispatch option to enable smaller and faster overload dispatch + mechanism. +- Template support for %rename, %feature and %typemap improved. +- Add/doc more debug options, such as -dump_module, -debug_typemaps, etc. +- Unified typemap library (UTL) potentially providing core typemaps for all + scripting languages based on the recently evolving Python typemaps. +- New language module: Common Lisp with CFFI. +- Python, Ruby, Perl and Tcl use the new UTL, many old reported and hidden + errors with typemaps are now fixed. +- Initial Java support for languages using the UTL via GCJ, you can now use + Java libraries in your favorite script language using gcj + swig. +- Tcl support for std::wstring. +- PHP4 module update, many error fixes and actively maintained again. +- Allegrocl support for C++, also enhanced C support. +- Ruby support for bang methods. +- Ruby support for user classes as native exceptions. +- Perl improved dispatching in overloaded functions via the new cast and rank + mechanism. +- Perl improved backward compatibility, 5.004 and later tested and working. +- Python improved backward compatibility, 1.5.2 and later tested and working. +- Python can use the same cast/rank mechanism via the -castmode option. +- Python implicit conversion mechanism similar to C++, via the %implicitconv + directive (replaces and improves the implicit.i library). +- Python threading support added. +- Python STL support improved, iterators are supported and STL containers can + use now the native PyObject type. +- Python many performance options and improvements, try the -O option to test + all of them. Python runtime benchmarks show up to 20 times better performance + compared to 1.3.27 and older versions. +- Python support for 'multi-inheritance' on the python side. +- Python simplified proxy classes, now swig doesn't need to generate the + additional 'ClassPtr' classes. +- Python extended support for smart pointers. +- Python better support for static member variables. +- Python backward compatibility improved, many projects that used to work + only with swig-1.3.21 to swig-1.3.24 are working again with swig-1.3.28 +- Python test-suite is now 'valgrinded' before release, and swig also + reports memory leaks due to missing destructors. +- Minor bug fixes and improvements to the Lua, Ruby, Java, C#, Python, Guile, + Chicken, Tcl and Perl modules. + +SWIG-1.3.27 summary: +- Fix bug in anonymous typedef structures which was leading to strange behaviour + +SWIG-1.3.26 summary: +- New language modules: Lua, CLISP and Common Lisp with UFFI. +- Big overhaul to the PHP module. +- Change to the way 'extern' is handled. +- Minor bug fixes specific to C#, Java, Modula3, Ocaml, Allegro CL, + XML, Lisp s-expressions, Tcl, Ruby and Python modules. +- Other minor improvements and bug fixes. + +SWIG-1.3.25 summary: +- Improved runtime type system. Speed of module loading improved in + modules with lots of types. SWIG_RUNTIME_VERSION has been increased + from 1 to 2, but the API is exactly the same; only internal changes + were made. +- The languages that use the runtime type system now support external + access to the runtime type system. +- Various improvements with typemaps and template handling. +- Fewer warnings in generated code. +- Improved colour documentation. +- Many C# module improvements (exception handling, prevention of early + garbage collection, C# attributes support added, more flexible type + marshalling/asymmetric types.) +- Minor improvements and bug fixes specific to the C#, Java, TCL, Guile, + Chicken, MzScheme, Perl, Php, Python, Ruby and Ocaml modules). +- Various other bug fixes and memory leak fixes. + +SWIG-1.3.24 summary: +- Improved enum handling +- More runtime library options +- More bugs fixes for templates and template default arguments, directors + and other areas. +- Better smart pointer support, including data members, static members + and %extend. + +SWIG-1.3.23 summary: +- Improved support for callbacks +- Python docstring support and better error handling +- C++ default argument support for Java and C# added. +- Improved c++ default argument support for the scripting languages plus + option to use original (compact) default arguments. +- %feature and %ignore/%rename bug fixes and mods - they might need default + arguments specified to maintain compatible behaviour when using the new + default arguments wrapping. +- Runtime library changes: Runtime code can now exist in more than one module + and so need not be compiled into just one module +- Further improved support for templates and namespaces +- Overloaded templated function support added +- More powerful default typemaps (mixed default typemaps) +- Some important %extend and director code bug fixes +- Guile now defaults to using SCM API. The old interface can be obtained by + the -gh option. +- Various minor improvements and bug fixes for C#, Chicken, Guile, Java, + MzScheme, Perl, Python and Ruby +- Improved dependencies generation for constructing Makefiles. + +SWIG-1.3.22 summary: +- Improved exception handling and translation of C errors or C++ + exceptions into target language exceptions. +- Improved enum support, mapping to built-in Java 1.5 enums and C# + enums or the typesafe enum pattern for these two languages. +- Python - much better STL support and support for std::wstring, + wchar_t and FILE *. +- Initial support for Modula3 and Allegro CL. +- 64 bit TCL support. +- Java and C#'s proxy classes are now nearly 100% generated from + typemaps and/or features for finer control on the generated code. +- SWIG runtime library support deprecation. +- Improved documentation. SWIG now additionally provides documentation + in the form of a single HTML page as well as a pdf document. +- Enhanced C++ friend declaration support. +- Better support for reference counted classes. +- Various %fragment improvements. +- RPM fixes. +- Various minor improvements and bug fixes for C#, Chicken, Guile, Java, + MzScheme, Perl, Php, Python, Ruby and XML. + + diff --git a/qrenderdoc/3rdparty/swig/swig.exe b/qrenderdoc/3rdparty/swig/swig.exe new file mode 100644 index 000000000..f2cb7ab28 Binary files /dev/null and b/qrenderdoc/3rdparty/swig/swig.exe differ